diff --git a/.github/workflows/auto-deploy.yml b/.github/workflows/auto-deploy.yml
deleted file mode 100644
index e7bf8c2d92..0000000000
--- a/.github/workflows/auto-deploy.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-# 构建 VitePress 站点并将其部署到 GitHub Pages 的示例工作流程
-#
-name: 🎈 部署文档
-
-on:
-  # 在针对 `main` 分支的推送上运行。如果你
-  # 使用 `master` 分支作为默认分支，请将其更改为 `master`
-  push:
-    branches: [main]
-
-  # 允许你从 Actions 选项卡手动运行此工作流程
-  workflow_dispatch:
-
-# 设置 GITHUB_TOKEN 的权限，以允许部署到 GitHub Pages
-permissions:
-  contents: read
-  pages: write
-  id-token: write
-
-# 只允许同时进行一次部署，跳过正在运行和最新队列之间的运行队列
-# 但是，不要取消正在进行的运行，因为我们希望允许这些生产部署完成
-concurrency:
-  group: pages
-  cancel-in-progress: false
-
-jobs:
-  # 构建工作
-  build:
-    runs-on: ubuntu-latest
-    steps:
-      - name: 🎆 Checkout
-        uses: actions/checkout@v4
-        with:
-          fetch-depth: 0 # 如果未启用 lastUpdated，则不需要
-      - uses: pnpm/action-setup@v3 # 如果使用 pnpm，请取消注释
-        with:
-          version: 8
-      # - uses: oven-sh/setup-bun@v1 # 如果使用 Bun，请取消注释
-      - name: 设置 Node
-        uses: actions/setup-node@v4
-        with:
-          node-version: 20
-          cache: pnpm # 或 npm / yarn
-      - name: Setup Pages
-        uses: actions/configure-pages@v4
-      - name: Install dependencies
-        run: pnpm install # 或 npm ci / yarn install / bun install
-      - name: Build with VitePress
-        run: pnpm docs:build # npm run docs:build  / yarn docs:build / bun run docs:build
-      - name: Upload artifact
-        uses: actions/upload-pages-artifact@v3
-        with:
-          path: docs/.vitepress/dist
-      - name: 🎉 Deploy to GitHub Pages
-        id: deployment
-        uses: JamesIves/github-pages-deploy-action@v4
-        with:
-          # 这是文档部署到的分支名称
-          branch: gh-pages
-          folder: docs/.vitepress/dist
-          token: ${{ secrets.TOKEN }}
-          repository-name: cunyu1943/cunyu1943.github.io
-
-  # 部署工作
-  # deploy:
-  #   environment:
-  #     name: github-pages
-  #     url: ${{ steps.deployment.outputs.page_url }}
-  #   needs: build
-  #   runs-on: ubuntu-latest
-    
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
new file mode 100644
index 0000000000..a2370a7816
--- /dev/null
+++ b/.github/workflows/deploy-docs.yml
@@ -0,0 +1,86 @@
+
+name: 部署文档
+
+on:
+  push:
+    branches:
+      # 确保这是你正在使用的分支名称
+      - main
+
+permissions:
+  contents: write
+
+jobs:
+  deploy-gh-pages:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v3
+        with:
+          fetch-depth: 0
+          # 如果你文档需要 Git 子模块，取消注释下一行
+          # submodules: true
+
+      - name: 安装 pnpm
+        uses: pnpm/action-setup@v2
+        with:
+          run_install: true
+          version: 8
+
+
+      - name: 设置 Node.js
+        uses: actions/setup-node@v3
+        with:
+          node-version: 20
+          cache: npm
+
+
+      - name: 构建文档
+        env:
+          NODE_OPTIONS: --max_old_space_size=8192
+        run: |-
+          pnpm run docs:build
+          > src/.vuepress/dist/.nojekyll
+
+      - name: 部署文档
+        uses: JamesIves/github-pages-deploy-action@v4
+        with:
+          # 这是文档部署到的分支名称
+          branch: gh-pages
+          folder: src/.vuepress/dist
+          token: ${{ secrets.TOKEN }}
+          repository-name: cunyu1943/cunyu1943.github.io
+      
+      - name: 同步 Gitee
+        uses: wearerequired/git-mirror-action@master
+        env:
+          # 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
+          SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
+        with:
+          # 注意替换为你的 GitHub 源仓库地址
+          source-repo: git@github.com:cunyu1943/JavaPark.git
+          # 注意替换为你的 Gitee 目标仓库地址
+          destination-repo: git@gitee.com:cunyu1943/JavaPark.git
+
+      - name: 同步部署仓库
+        uses: wearerequired/git-mirror-action@master
+        env:
+          # 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
+          SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
+        with:
+          # 注意替换为你的 GitHub 源仓库地址
+          source-repo: git@github.com:cunyu1943/cunyu1943.github.io.git
+          # 注意替换为你的 Gitee 目标仓库地址
+          destination-repo: git@gitee.com:cunyu1943/cunyu1943.git
+
+      - name: 同步 Gitee Pages
+        uses: yanglbme/gitee-pages-action@main
+        with:
+          # 注意替换为你的 Gitee 用户名
+          gitee-username: cunyu1943
+          # 注意在 Settings->Secrets 配置 GITEE_PASSWORD
+          gitee-password: ${{ secrets.GITEE_PASSWORD }}
+          # 注意替换为你的 Gitee 仓库，仓库名严格区分大小写，请准确填写，否则会出错
+          gitee-repo: cunyu1943/cunyu1943
+          # 要部署的分支，默认是 master，若是其他分支，则需要指定（指定的分支必须存在）
+          branch: gh-pages
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 6cbdbc2cb4..6c58dad678 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
-**/node_modules/*
-**/dist/*
-**/cache/*
-**/.DS_Store
-**/.gitattributes
\ No newline at end of file
+.idea
+node_modules/
+src/.vuepress/.cache/
+src/.vuepress/.temp/
+src/.vuepress/dist/
+.DS_Store
\ No newline at end of file
diff --git a/README.md b/README.md
index 1978573091..4e2fa50abb 100644
--- a/README.md
+++ b/README.md
@@ -1,347 +1,358 @@
 # 📖 JavaPark | Java 自学指南
 
-> 不要哀求，学会争取。若是如此，终有所获。
+## 项目简介
 
-## 🎈 号外
+- 👉 推荐 [语雀](https://yuque.com/cunyu1943) ｜ [Github 在线阅读](https://cunyu1943.github.io/) | [Gitee 在线阅读](https://cunyu1943.gitee.io/)，`Github` 访问较慢，所以部分资源可能会加载较慢。
 
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以 **扫码或者后台添加小编微信备注入群**。进群后 **优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="docs/src/public/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## 📑 项目简介
-
-- 👉 推荐 [语雀](https://yuque.com/cunyu1943) ｜ [Github 在线阅读](https://cunyu1943.github.io/)，`Github` 访问较慢，所以部分资源可能会加载较慢，建议访问语雀，速度更快，移动端也更方便。
-
-- 👉 项目同步维护：[语雀](https://yuque.com/cunyu1943/JavaPark)｜[Github](https://github.com/cunyu1943/JavaPark)
+- 👉 项目同步维护：[语雀](https://yuque.com/cunyu1943/JavaPark)｜[Github](https://github.com/cunyu1943/JavaPark) | [Gitee](https://gitee.com/cunyu1943/JavaPark)
 
 - 👉 这里有 `Java` 学习保姆级教程、求职面试、计算机基础、编程语言、效率工具等诸多内容。
 
 - 👉 [『资源下载』](https://github.com/cunyu1943/ebooks)
 
-- 👉 [『好物周刊』](https://github.com/cunyu1943/weekly)
-
 ![](https://img.shields.io/github/followers/cunyu1943?label=Followers&logo=Github&color=red)![](https://img.shields.io/github/stars/cunyu1943/JavaPark?logo=Github&label=Stars&color=yellow)
 ![](https://img.shields.io/github/forks/cunyu1943/JavaPark?logo=Github&label=Forks)
 ![](https://img.shields.io/github/watchers/cunyu1943/JavaPark?label=Watchers&logo=Github&color=green)
 
-
 ## 一、Java
 
-<details>
-
-<summary>点击展开查看详情</summary>
-
 ### Java 基础
 
-1.  [Java 基础：简介](docs/src/java-tutorial/javase/20220701-intro-to-java.md)
-2.  [Java 基础：开发环境搭建及入门程序](docs/src/java-tutorial/javase/20220702-jdk-install-and-hello-world.md)
-3.  [Java 基础：利用 IDEA 进行 Java 开发](docs/src/java-tutorial/javase/20220703-learn-java-with-idea.md)
-4.  [Java 基础：变量与数据类型](docs/src/java-tutorial/javase/20220704-variable-and-datatype.md)
-5.  [Java 基础：常用进制转换](docs/src/java-tutorial/javase/20220705-binary-convert.md)
-6.  [Java 基础：操作符](docs/src/java-tutorial/javase/20220706-operator.md)
-7.  [Java 基础：控制流程](docs/src/java-tutorial/javase/20220707-control-process.md)
-8.  [Java 基础：流程控制知识大闯关](docs/src/java-tutorial/javase/20221127-loop-in-action.md)
-9.  [Java 基础：数组操作的奇技淫巧](docs/src/java-tutorial/javase/20220708-how-to-operate-array.md)
-10. [Java 基础：面向对象的 3、5 知识点](docs/src/java-tutorial/javase/20220709-oop-1.md)
-11. [Java 基础：类的相关知识](docs/src/java-tutorial/javase/20220710-oop-2.md)
-12. [Java 基础：包和 jar 文件的创建](docs/src/java-tutorial/javase/20220711-oop-3.md)
-13. [Java 基础：成员变量、实例变量、静态变量、局部变量？](docs/src/java-tutorial/javase/20220712-all-kinds-of-variable.md)
-14. [Java 基础：String 详解](docs/src/java-tutorial/javase/20220713-string.md)
-15. [Java 基础：ArrayList 详解](docs/src/java-tutorial/javase/20220714-arraylist.md)
-16. [Java 基础：输入输出流](docs/src/java-tutorial/javase/20220715-in-out-stream.md)
-17. [Java 基础：反射机制详解](docs/src/java-tutorial/javase/20220716-reflection.md)
-18. [Java 基础：深入浅出 Java 注解](docs/src/java-tutorial/javase/20220721-annotations.md)
-19. [Java 基础：JDBC 入门指南](docs/src/java-tutorial/javase/20220717-jdbc-introduction.md)
-20. [Java 基础：是时候拥抱 Junit 单元测试了！](docs/src/java-tutorial/javase/20220718-test-with-junit.md)
-21. [Java 基础：Lombok 安装及使用指南](docs/src/java-tutorial/javase/20220719-lombok-install-and-usage.md)
-22. [Java 基础：Fastjson V2 简单使用手册](docs/src/java-tutorial/javase/20220720-fastjson2-quickstart.md)
-23. [Java 基础：static 和 final 小课堂](docs/src/java-tutorial/javase/20221203-oop-advance.md)
-24. [Java 基础：抽象、接口和内部类](docs/src/java-tutorial/javase/20221211-abstract.md)
-25. [Java 基础：Mockito + JUnit 单元测试实例](docs/src/java-tutorial/javase/20220722-mockito.md)
+1.  [Java 基础：简介](src/java-tutorial/javase/20220701-intro-to-java.md)
+2.  [Java 基础：开发环境搭建及入门程序](src/java-tutorial/javase/20220702-jdk-install-and-hello-world.md)
+3.  [Java 基础：利用 IDEA 进行 Java 开发](src/java-tutorial/javase/20220703-learn-java-with-idea.md)
+4.  [Java 基础：变量与数据类型](src/java-tutorial/javase/20220704-variable-and-datatype.md)
+5.  [Java 基础：常用进制转换](src/java-tutorial/javase/20220705-binary-convert.md)
+6.  [Java 基础：操作符](src/java-tutorial/javase/20220706-operator.md)
+7.  [Java 基础：控制流程](src/java-tutorial/javase/20220707-control-process.md)
+8.  [Java 基础：流程控制知识大闯关](src/java-tutorial/javase/20221127-loop-in-action.md)
+9.  [Java 基础：数组操作的奇技淫巧](src/java-tutorial/javase/20220708-how-to-operate-array.md)
+10. [Java 基础：面向对象的 3、5 知识点](src/java-tutorial/javase/20220709-oop-1.md)
+11. [Java 基础：类的相关知识](src/java-tutorial/javase/20220710-oop-2.md)
+12. [Java 基础：包和 jar 文件的创建](src/java-tutorial/javase/20220711-oop-3.md)
+13. [Java 基础：成员变量、实例变量、静态变量、局部变量？](src/java-tutorial/javase/20220712-all-kinds-of-variable.md)
+14. [Java 基础：String 详解](src/java-tutorial/javase/20220713-string.md)
+15. [Java 基础：ArrayList 详解](src/java-tutorial/javase/20220714-arraylist.md)
+16. [Java 基础：输入输出流](src/java-tutorial/javase/20220715-in-out-stream.md)
+17. [Java 基础：反射机制详解](src/java-tutorial/javase/20220716-reflection.md)
+18. [Java 基础：深入浅出 Java 注解](src/java-tutorial/javase/20220721-annotations.md)
+19. [Java 基础：JDBC 入门指南](src/java-tutorial/javase/20220717-jdbc-introduction.md)
+20. [Java 基础：是时候拥抱 Junit 单元测试了！](src/java-tutorial/javase/20220718-test-with-junit.md)
+21. [Java 基础：Lombok 安装及使用指南](src/java-tutorial/javase/20220719-lombok-install-and-usage.md)
+22. [Java 基础：Fastjson V2 简单使用手册](src/java-tutorial/javase/20220720-fastjson2-quickstart.md)
+23. [Java 基础：static 和 final 小课堂](src/java-tutorial/javase/20221203-oop-advance.md)
+24. [Java 基础：抽象、接口和内部类](src/java-tutorial/javase/20221211-abstract.md)
+25. [Java 基础：Mockito + JUnit 单元测试实例](src/java-tutorial/javase/20220722-mockito.md)
 
 ### 实战训练
 
 #### 项目实践
 
-1. [项目实践：MySQL + MyBatis 版学生管理系统](docs/src/java-tutorial/in-action/project/20220307-mysql-mybatis-stu-manag-sys.md)
-2. [项目实践：学生管理系统](docs/src/java-tutorial/in-action/project/20210405-stu-manage-sys.md)
-3. [项目实践：记账本](docs/src/java-tutorial/in-action/project/20210801-tally-book.md)
-4. [项目实践：点菜系统](docs/src/java-tutorial/in-action/project/20210731-order-system.md)
+1. [项目实践：MySQL + MyBatis 版学生管理系统](src/java-tutorial/in-action/project/20220307-mysql-mybatis-stu-manag-sys.md)
+2. [项目实践：学生管理系统](src/java-tutorial/in-action/project/20210405-stu-manage-sys.md)
+3. [项目实践：记账本](src/java-tutorial/in-action/project/20210801-tally-book.md)
+4. [项目实践：点菜系统](src/java-tutorial/in-action/project/20210731-order-system.md)
 
 #### Java 入门
 
-1. [入门练习：1 - 5](docs/src/java-tutorial/in-action/se/20220625-1-5.md)
-2. [入门练习：6 - 10](docs/src/java-tutorial/in-action/se/20220626-6-10.md)
-3. [入门练习：11 - 15](docs/src/java-tutorial/in-action/se/20220627-11-15.md)
-4. [入门练习：16 - 20](docs/src/java-tutorial/in-action/se/20220628-16-20.md)
-5. [入门练习：21 - 25](docs/src/java-tutorial/in-action/se/20220629-21-25.md)
-6. [入门练习：26 - 30](docs/src/java-tutorial/in-action/se/20220630-26-30.md)
-7. [入门练习：31 - 35](docs/src/java-tutorial/in-action/se/20220701-31-35.md)
-8. [入门练习：36 - 40](docs/src/java-tutorial/in-action/se/20220702-36-40.md)
+1. [入门练习：1 - 5](src/java-tutorial/in-action/se/20220625-1-5.md)
+2. [入门练习：6 - 10](src/java-tutorial/in-action/se/20220626-6-10.md)
+3. [入门练习：11 - 15](src/java-tutorial/in-action/se/20220627-11-15.md)
+4. [入门练习：16 - 20](src/java-tutorial/in-action/se/20220628-16-20.md)
+5. [入门练习：21 - 25](src/java-tutorial/in-action/se/20220629-21-25.md)
+6. [入门练习：26 - 30](src/java-tutorial/in-action/se/20220630-26-30.md)
+7. [入门练习：31 - 35](src/java-tutorial/in-action/se/20220701-31-35.md)
+8. [入门练习：36 - 40](src/java-tutorial/in-action/se/20220702-36-40.md)
 
 ### MySQL 教程
-1. [MySQL 教程：《SQL 必知必会》全解析](docs/src/java-tutorial/mysql/20220726-sql-in-10min.md)
+1. [MySQL 教程：《SQL 必知必会》全解析](src/java-tutorial/mysql/20220726-sql-in-10min.md)
 
 ### Web 前端
-
 <!-- 1. [前端：开发环境搭建](front-end/20230829-environment.md)
-
 2. [前端：HTML 大揭秘](front-end/20230829-html.md)
 3. [前端：CSS 教程](front-end/20230903-css.md) -->
-1. [前端：Axios 简单使用指南](docs/src/java-tutorial/front-end/20230926-axios.md)
+1. [前端：Axios 简单使用指南](src/java-tutorial/front-end/20230926-axios.md)
 
 #### JavaScript
 
-1. [JavaScript：简介](docs/src/java-tutorial/front-end/javascript/20220416-intro.md)
-2. [JavaScript：注释、输入输出、变量](docs/src/java-tutorial/front-end/javascript/20220417-var.md)
-3. [JavaScript：数据类型](docs/src/java-tutorial/front-end/javascript/20220418-datatype.md)
-4. [JavaScript：操作符](docs/src/java-tutorial/front-end/javascript/20220419-operator.md)
-5. [JavaScript：流程控制](docs/src/java-tutorial/front-end/javascript/20220420-flow.md)
-6. [JavaScript：数组](docs/src/java-tutorial/front-end/javascript/20220421-array.md)
-7. [JavaScript：函数](docs/src/java-tutorial/front-end/javascript/20220422-function.md)
-8. [JavaScript：面向对象](docs/src/java-tutorial/front-end/javascript/20220423-oop.md)
-9. [JavaScript：DOM 元素获取、属性修改](docs/src/java-tutorial/front-end/javascript/20220424-dom-attr.md)
-10. [JavaScript：DOM 事件](docs/src/java-tutorial/front-end/javascript/20220425-dom.md)
-11. [JavaScript：Chrome 中执行 JavaScript 代码](docs/src/java-tutorial/front-end/javascript/20220301-chrome-js.md)
+1. [JavaScript：简介](src/java-tutorial/front-end/javascript/20220416-intro.md)
+2. [JavaScript：注释、输入输出、变量](src/java-tutorial/front-end/javascript/20220417-var.md)
+3. [JavaScript：数据类型](src/java-tutorial/front-end/javascript/20220418-datatype.md)
+4. [JavaScript：操作符](src/java-tutorial/front-end/javascript/20220419-operator.md)
+5. [JavaScript：流程控制](src/java-tutorial/front-end/javascript/20220420-flow.md)
+6. [JavaScript：数组](src/java-tutorial/front-end/javascript/20220421-array.md)
+7. [JavaScript：函数](src/java-tutorial/front-end/javascript/20220422-function.md)
+8. [JavaScript：面向对象](src/java-tutorial/front-end/javascript/20220423-oop.md)
+9. [JavaScript：DOM 元素获取、属性修改](src/java-tutorial/front-end/javascript/20220424-dom-attr.md)
+10. [JavaScript：DOM 事件](src/java-tutorial/front-end/javascript/20220425-dom.md)
+11. [JavaScript：Chrome 中执行 JavaScript 代码](src/java-tutorial/front-end/javascript/20220301-chrome-js.md)
 
 #### Vue 3
 
-1. [Vue 3 系列：简介](docs/src/java-tutorial/front-end/vue3/20220605-intro.md)
-2. [Vue 3 系列：搭建 Vue + Vite 入门项目](docs/src/java-tutorial/front-end/vue3/20220606-vite-quickstart.md)
-3. [Vue 3 系列：常用指令](docs/src/java-tutorial/front-end/vue3/20221012-common-command.md)
-
-</details>
+1. [Vue 3 系列：简介](src/java-tutorial/front-end/vue3/20220605-intro.md)
+2. [Vue 3 系列：搭建 Vue + Vite 入门项目](src/java-tutorial/front-end/vue3/20220606-vite-quickstart.md)
+3. [Vue 3 系列：常用指令](src/java-tutorial/front-end/vue3/20221012-common-command.md)
 
 ## 二、求职面试
 
-<details>
-
-<summary>点击展开查看详情</summary>
-
 ### 知识点
 
-1. [知识点：Java 基础面试知识点](docs/src/interview/knowledge/20240201-java-basic.md)
-2. [知识点：Java 进阶面试知识点](docs/src/interview/knowledge/20240203-java-advanced.md)
-3. [知识点：MySQL 面试知识点](docs/src/interview/knowledge/20240203-mysql.md)
-4. [知识点：MyBatis 面试知识点](docs/src/interview/knowledge/20210822-mybatis.md)
-5. [知识点：Spring 面试知识点](docs/src/interview/knowledge/20210103-spring.md)
-6. [知识点：多线程面试知识点](docs/src/interview/knowledge/20210629-thread.md)
-7. [知识点：异常面试知识点](docs/src/interview/knowledge/20210528-exception.md)
-8. [知识点：计算机网络面试知识点](docs/src/interview/knowledge/20201231-network.md)
-
-</details>
+1. [知识点：Java 基础面试知识点](src/interview/knowledge/20240201-java-basic.md)
+2. [知识点：Java 进阶面试知识点](src/interview/knowledge/20240203-java-advanced.md)
+3. [知识点：MySQL 面试知识点](src/interview/knowledge/20240203-mysql.md)
+4. [知识点：MyBatis 面试知识点](src/interview/knowledge/20210822-mybatis.md)
+5. [知识点：Spring 面试知识点](src/interview/knowledge/20210103-spring.md)
+6. [知识点：多线程面试知识点](src/interview/knowledge/20210629-thread.md)
+7. [知识点：异常面试知识点](src/interview/knowledge/20210528-exception.md)
+8. [知识点：计算机网络面试知识点](src/interview/knowledge/20201231-network.md)
 
 ## 三、框架｜中间件
 
-<details>
-
-<summary>点击展开查看详情</summary>
-
 ### Spring
-1. [Spring 系列：简介](docs/src/framework/spring/20200720-intro.md)
-2. [Spring 系列：依赖注入](docs/src/framework/spring/20200724-di.md)
-3. [Spring 系列：注解详解](docs/src/framework/spring/20210521-annotation.md)
-4. [Spring 系列：IoC 大揭秘](docs/src/framework/spring/20200723-ioc.md)
-5. [Spring 系列：IoC 简介及入门实例（XML 版）](docs/src/framework/spring/20220428-ioc-xml.md)
-6. [Spring 系列：Bean 详解](docs/src/framework/spring/20220429-bean.md)
+1. [Spring 系列：简介](src/framework/spring/20200720-intro.md)
+2. [Spring 系列：依赖注入](src/framework/spring/20200724-di.md)
+3. [Spring 系列：注解详解](src/framework/spring/20210521-annotation.md)
+4. [Spring 系列：IoC 大揭秘](src/framework/spring/20200723-ioc.md)
+5. [Spring 系列：IoC 简介及入门实例（XML 版）](src/framework/spring/20220428-ioc-xml.md)
+6. [Spring 系列：Bean 详解](src/framework/spring/20220429-bean.md)
 
 ### MyBatis
-1. [MyBatis 系列：简介](docs/src/framework/mybatis/20200719-intro.md)
-2. [MyBatis 系列：入门实例](docs/src/framework/mybatis/20200720-quick-start.md)
-3. [MyBatis 系列：注解开发](docs/src/framework/mybatis/20200721-annotation.md)
-4. [MyBatis 系列：一二级缓存](docs/src/framework/mybatis/20200722-pri-sec-cache.md)
-5. [MyBatis 系列：代码生成器](docs/src/framework/mybatis/20211214-generator.md)
+1. [MyBatis 系列：简介](src/framework/mybatis/20200719-intro.md)
+2. [MyBatis 系列：入门实例](src/framework/mybatis/20200720-quick-start.md)
+3. [MyBatis 系列：注解开发](src/framework/mybatis/20200721-annotation.md)
+4. [MyBatis 系列：一二级缓存](src/framework/mybatis/20200722-pri-sec-cache.md)
+5. [MyBatis 系列：代码生成器](src/framework/mybatis/20211214-generator.md)
 
 ### MyBatis Plus
 
-1. [MyBatis Plus 系列：简介及入门实例](docs/src/framework/mybatis-plus/20210807-intro.md)
-2. [MyBatis Plus 系列：日志配置及常用 CRUD](docs/src/framework/mybatis-plus/20210808-log-crud.md)
+1. [MyBatis Plus 系列：简介及入门实例](src/framework/mybatis-plus/20210807-intro.md)
+2. [MyBatis Plus 系列：日志配置及常用 CRUD](src/framework/mybatis-plus/20210808-log-crud.md)
 
 ### Spring Boot 2.7.x
 
-1. [Spring Boot 2.7.x：简介](docs/src/framework/springboot/2.7.x/20200520-intro.md)
-2. [Spring Boot 2.7.x：配置详解](docs/src/framework/springboot/2.7.x/20211003-config.md)
-3. [Spring Boot 2.7.x：创建项目的几种方式](docs/src/framework/springboot/2.7.x/20210811-create-ways.md)
-4. [Spring Boot 2.7.x：整合 JDBC Template 实例](docs/src/framework/springboot/2.7.x/20200730-jdbc.md)
-5. [Spring Boot 2.7.x：XML 方式整合 MyBatis 实例](docs/src/framework/springboot/2.7.x/20200726-xml-mybatis.md)
-6. [Spring Boot 2.7.x：注解方式整合 MyBatis 实例](docs/src/framework/springboot/2.7.x/20200727-annotation-mybatis.md)
-7. [Spring Boot 2.7.x：注解方式整合 Mybatis + PageHelper 分页实例](docs/src/framework/springboot/2.7.x/20200728-annotation-mybatis-pagehelper.md)
-8. [Spring Boot 2.7.x：整合 FreeMarker 实例](docs/src/framework/springboot/2.7.x/20211130-freemaker.md)
-9. [Spring Boot 2.7.x：整合 Thymeleaf 实例](docs/src/framework/springboot/2.7.x/20200729-thymeleaf.md)
-10. [Spring Boot 2.7.x：集成 Swagger2](docs/src/framework/springboot/2.7.x/20220106-swagger2.md)
-11. [Spring Boot 2.7.x：集成 Swagger3](docs/src/framework/springboot/2.7.x/20220110-swagger3.md)
-12. [Spring Boot 2.7.x：集成 Knife4j](docs/src/framework/springboot/2.7.x/20220430-knife4j.md)
-13. [Spring Boot 2.7.x：集成 Security 入门小实例](docs/src/framework/springboot/2.7.x/20220604-security.md)
+1. [Spring Boot 2.7.x：简介](src/framework/springboot/2.7.x/20200520-intro.md)
+2. [Spring Boot 2.7.x：配置详解](src/framework/springboot/2.7.x/20211003-config.md)
+3. [Spring Boot 2.7.x：创建项目的几种方式](src/framework/springboot/2.7.x/20210811-create-ways.md)
+4. [Spring Boot 2.7.x：整合 JDBC Template 实例](src/framework/springboot/2.7.x/20200730-jdbc.md)
+5. [Spring Boot 2.7.x：XML 方式整合 MyBatis 实例](src/framework/springboot/2.7.x/20200726-xml-mybatis.md)
+6. [Spring Boot 2.7.x：注解方式整合 MyBatis 实例](src/framework/springboot/2.7.x/20200727-annotation-mybatis.md)
+7. [Spring Boot 2.7.x：注解方式整合 Mybatis + PageHelper 分页实例](src/framework/springboot/2.7.x/20200728-annotation-mybatis-pagehelper.md)
+8. [Spring Boot 2.7.x：整合 FreeMarker 实例](src/framework/springboot/2.7.x/20211130-freemaker.md)
+9. [Spring Boot 2.7.x：整合 Thymeleaf 实例](src/framework/springboot/2.7.x/20200729-thymeleaf.md)
+10. [Spring Boot 2.7.x：集成 Swagger2](src/framework/springboot/2.7.x/20220106-swagger2.md)
+11. [Spring Boot 2.7.x：集成 Swagger3](src/framework/springboot/2.7.x/20220110-swagger3.md)
+12. [Spring Boot 2.7.x：集成 Knife4j](src/framework/springboot/2.7.x/20220430-knife4j.md)
+13. [Spring Boot 2.7.x：集成 Security 入门小实例](src/framework/springboot/2.7.x/20220604-security.md)
 
 ### Redis
 
-1. [Redis：简介](docs/src/framework/redis/20210821-intro.md)
-2. [Redis：持久化](docs/src/framework/redis/20221016-persistence.md)
+1. [Redis：简介](src/framework/redis/20210821-intro.md)
+2. [Redis：持久化](src/framework/redis/20221016-persistence.md)
 
 ### Nginx
 
-1. [Nginx：简介与环境搭建](docs/src/framework/nginx/20221016-intro-install.md)
-
-</details>
+1. [Nginx：简介与环境搭建](src/framework/nginx/20221016-intro-install.md)
 
 ## 四、计算机知识
 
-<details>
-
-<summary>点击展开查看详情</summary>
-
 ### 数据结构与算法
 
-1. [数据结构与算法：数据结构简介](docs/src/cs-wiki/algo/20220503-datastructure-intro.md)
-2. [数据结构与算法：算法简介](docs/src/cs-wiki/algo/20220511-algo-intro.md)
-3. [数据结构与算法：时间 & 空间复杂度](docs/src/cs-wiki/algo/20220512-time-space.md)
-4. [数据结构与算法：数组简介](docs/src/cs-wiki/algo/20220516-array.md)
-5. [数据结构与算法：数组的增删改查](docs/src/cs-wiki/algo/20200510-arr-crud.md)
-6. [数据结构与算法：有序数组去重](docs/src/cs-wiki/algo/20220513-sorted-arr-duplication.md)
-7. [数据结构与算法：链表详解](docs/src/cs-wiki/algo/20220515-linkedlist.md)
-8. [数据结构与算法：二叉树的遍历](docs/src/cs-wiki/algo/202205170-binary-tree-traverse.md)
-
-</details>
+1. [数据结构与算法：数据结构简介](src/cs-wiki/algo/20220503-datastructure-intro.md)
+2. [数据结构与算法：算法简介](src/cs-wiki/algo/20220511-algo-intro.md)
+3. [数据结构与算法：时间 & 空间复杂度](src/cs-wiki/algo/20220512-time-space.md)
+4. [数据结构与算法：数组简介](src/cs-wiki/algo/20220516-array.md)
+5. [数据结构与算法：数组的增删改查](src/cs-wiki/algo/20200510-arr-crud.md)
+6. [数据结构与算法：有序数组去重](src/cs-wiki/algo/20220513-sorted-arr-duplication.md)
+7. [数据结构与算法：链表详解](src/cs-wiki/algo/20220515-linkedlist.md)
+8. [数据结构与算法：二叉树的遍历](src/cs-wiki/algo/202205170-binary-tree-traverse.md)
 
 ## 五、基础教程
 
-<details>
-
-<summary>点击展开查看详情</summary>
-
 ### 博客搭建
-1. [博客搭建：Vuepress + GitHub Actions 实现博客自动部署](docs/src/tutorial/blog/20210826-vuepress.md)
-2. [博客搭建：Hexo + Github Pages 博客搭建教程](docs/src/tutorial/blog/20220401-hexo.md)
-3. [博客搭建：dumi 博客搭建](docs/src/tutorial/blog/20220610-dumi.md)
-4. [博客搭建：Hugo + Github Pages 博客搭建教程](docs/src/tutorial/blog/20220611-hugo.md)
-5. [博客搭建：Halo 博客搭建教程](docs/src/tutorial/blog/20201228-halo.md)
-6. [博客搭建：docsify 文档型博客搭建](docs/src/tutorial/blog/20220612-docsify.md)
+1. [博客搭建：Vuepress + GitHub Actions 实现博客自动部署](src/tutorial/blog/20210826-vuepress.md)
+2. [博客搭建：Hexo + Github Pages 博客搭建教程](src/tutorial/blog/20220401-hexo.md)
+3. [博客搭建：dumi 博客搭建](src/tutorial/blog/20220610-dumi.md)
+4. [博客搭建：Hugo + Github Pages 博客搭建教程](src/tutorial/blog/20220611-hugo.md)
+5. [博客搭建：Halo 博客搭建教程](src/tutorial/blog/20201228-halo.md)
+6. [博客搭建：docsify 文档型博客搭建](src/tutorial/blog/20220612-docsify.md)
 
 
 ### IDEA 教程
 
-1. [IDEA 教程：创建 Java 入门应用](docs/src/tutorial/idea/20210914-java-app.md)
-2. [IDEA 教程：实用小技巧](docs/src/tutorial/idea/20211010-tips.md)
-3. [IDEA 教程：集成并使用 Git 图文教程](docs/src/tutorial/idea/20220105-git.md)
-4. [IDEA 教程：最新版 IntelliJ IDEA 使用手册](docs/src/tutorial/idea/20220202-idea-guide.md)
-5. [IDEA 教程：原来大厂都是这么提交代码的](docs/src/tutorial/idea/20230525-code-commit.md)
+1. [IDEA 教程：创建 Java 入门应用](src/tutorial/idea/20210914-java-app.md)
+2. [IDEA 教程：实用小技巧](src/tutorial/idea/20211010-tips.md)
+3. [IDEA 教程：集成并使用 Git 图文教程](src/tutorial/idea/20220105-git.md)
+4. [IDEA 教程：最新版 IntelliJ IDEA 使用手册](src/tutorial/idea/20220202-idea-guide.md)
+5. [IDEA 教程：原来大厂都是这么提交代码的](src/tutorial/idea/20230525-code-commit.md)
 
 ### 效率工具
 
-1. [效率工具：如何用 Markdown 写出好看的文章](docs/src/tutorial/efficiency/20230425-markdown-tutorial.md)
-2. [效率工具：10 个神奇的网站，助力带薪摸鱼](docs/src/tutorial/efficiency/20220729-10-amazing-website.md)
-3. [效率工具：网站访问太慢，不妨试试这些 CDN](docs/src/tutorial/efficiency/20220729-cdn.md)
-4. [效率工具：计算机专业涨薪必备的几个网站](docs/src/tutorial/efficiency/20220731-exercise-websites.md)
-5. [效率工具：黑客大神也常用的一些 CMD 命令](docs/src/tutorial/efficiency/20221127-cmd.md)
-6. [效率工具：如何在浏览器中安装插件](docs/src/tutorial/efficiency/20230710-browser-plugin-install.md)
-7. [效率工具：Emoji 表情大作战](docs/src/tutorial/efficiency/20220729-emoji.md)
-8. [效率工具：macOS 安装 Node.js](docs/src/tutorial/efficiency/20221114-macos-install-node.md)
-9. [效率工具：iTerm2 + Fish 高效终端](docs/src/tutorial/efficiency/20220426-iterm2-fish.md)
-10. [效率工具：iTerm2 + Oh My Zsh 终端神器](docs/src/tutorial/efficiency/20220811-iterm2-zsh.md)
-11. [效率工具：PPT 模板免费下载](docs/src/tutorial/efficiency/20220623-ppt-template.md)
-12. [效率工具：Windows 安装 Node.js](docs/src/tutorial/efficiency/20200511-windows-install-node.md)
-13. [效率工具：Ubuntu 默认 root 密码修改](docs/src/tutorial/efficiency/20200517-ubuntu-root-pwd.md)
-14. [效率工具：VMware 安装 Ubuntu](docs/src/tutorial/efficiency/20200518-vmware-ubuntu.md)
-15. [效率工具：XShell 连接 Ubuntu](docs/src/tutorial/efficiency/20200519-xshell-ubuntu.md)
-16. [效率工具：手把手配置 Ubuntu](docs/src/tutorial/efficiency/20200520-ubuntu.md)
-17. [效率工具：玩转 Manjora](docs/src/tutorial/efficiency/20200521-manjora.md)
-18. [效率工具：如何给视频添加字幕](docs/src/tutorial/efficiency/20201010-video-subtitle.md)
-19. [效率工具：U 盘启动盘制作](docs/src/tutorial/efficiency/20201229-u-disk-sys-booter.md)
-20. [效率工具：优雅地使用 Windows 10](docs/src/tutorial/efficiency/20201230-windows-tips.md)
-21. [效率工具：Windows 系统安装教程](docs/src/tutorial/efficiency/20201231-windows-sys.md)
-22. [效率工具：如何制作电子签名](docs/src/tutorial/efficiency/20210422-signature.md)
-23. [效率工具：技术写作中的神兵利器](docs/src/tutorial/efficiency/20210504-write-tools.md)
-24. [效率工具：PPT 模板免费下载](docs/src/tutorial/efficiency/20220623-ppt-template.md)
+1. [效率工具：如何用 Markdown 写出好看的文章](src/tutorial/efficiency/20230425-markdown-tutorial.md)
+2. [效率工具：10 个神奇的网站，助力带薪摸鱼](src/tutorial/efficiency/20220729-10-amazing-website.md)
+3. [效率工具：网站访问太慢，不妨试试这些 CDN](src/tutorial/efficiency/20220729-cdn.md)
+4. [效率工具：计算机专业涨薪必备的几个网站](src/tutorial/efficiency/20220731-exercise-websites.md)
+5. [效率工具：黑客大神也常用的一些 CMD 命令](src/tutorial/efficiency/20221127-cmd.md)
+6. [效率工具：如何在浏览器中安装插件](src/tutorial/efficiency/20230710-browser-plugin-install.md)
+7. [效率工具：Emoji 表情大作战](src/tutorial/efficiency/20220729-emoji.md)
+8. [效率工具：macOS 安装 Node.js](src/tutorial/efficiency/20221114-macos-install-node.md)
+9. [效率工具：iTerm2 + Fish 高效终端](src/tutorial/efficiency/20220426-iterm2-fish.md)
+10. [效率工具：iTerm2 + Oh My Zsh 终端神器](src/tutorial/efficiency/20220811-iterm2-zsh.md)
+11. [效率工具：PPT 模板免费下载](src/tutorial/efficiency/20220623-ppt-template.md)
+12. [效率工具：Windows 安装 Node.js](src/tutorial/efficiency/20200511-windows-install-node.md)
+13. [效率工具：Ubuntu 默认 root 密码修改](src/tutorial/efficiency/20200517-ubuntu-root-pwd.md)
+14. [效率工具：VMware 安装 Ubuntu](src/tutorial/efficiency/20200518-vmware-ubuntu.md)
+15. [效率工具：XShell 连接 Ubuntu](src/tutorial/efficiency/20200519-xshell-ubuntu.md)
+16. [效率工具：手把手配置 Ubuntu](src/tutorial/efficiency/20200520-ubuntu.md)
+17. [效率工具：玩转 Manjora](src/tutorial/efficiency/20200521-manjora.md)
+18. [效率工具：如何给视频添加字幕](src/tutorial/efficiency/20201010-video-subtitle.md)
+19. [效率工具：U 盘启动盘制作](src/tutorial/efficiency/20201229-u-disk-sys-booter.md)
+20. [效率工具：优雅地使用 Windows 10](src/tutorial/efficiency/20201230-windows-tips.md)
+21. [效率工具：Windows 系统安装教程](src/tutorial/efficiency/20201231-windows-sys.md)
+22. [效率工具：如何制作电子签名](src/tutorial/efficiency/20210422-signature.md)
+23. [效率工具：技术写作中的神兵利器](src/tutorial/efficiency/20210504-write-tools.md)
+24. [效率工具：PPT 模板免费下载](src/tutorial/efficiency/20220623-ppt-template.md)
 
 ### 软件设计师
 
-1. [软设：计算机系统](docs/src/tutorial/software-designer/20221024-computer-system.md)
-
-</details>
+1. [软设：计算机系统](src/tutorial/software-designer/20221024-computer-system.md)
 
 ## 六、编程语言
 
-<details>
-
-<summary>点击展开查看详情</summary>
-
 ### C 语言
 
-1. [C 语言：内存管理函数](docs/src/program-language/c/20180308-memory-manage.md)
-2. [C 语言：知识点总结](docs/src/program-language/c/20180720-summary.md)
+1. [C 语言：内存管理函数](src/program-language/c/20180308-memory-manage.md)
+2. [C 语言：知识点总结](src/program-language/c/20180720-summary.md)
 
 ### C++
 
-1. [C++ 系列：知识点总结](docs/src/program-language/cpp/20180720-summary.md)
+1. [C++ 系列：知识点总结](src/program-language/cpp/20180720-summary.md)
 
 ### Python
 
 #### 教程
 
-1. [Python 教程：简介](docs/src/program-language/python/tutorial/20210331-intro.md)
-2. [Python 教程：玩转 Pycharm](docs/src/program-language/python/tutorial//20210401-pycharm.md)
-3. [Python 教程：语言元素](docs/src/program-language/python/tutorial/20210402-language-element.md)
-4. [Python 教程：条件判断、循环以及循环的终止](docs/src/program-language/python/tutorial/20210403-condition.md)
-5. [Python 教程：购物车](docs/src/program-language/python/tutorial/20220420-shopping.md)
-6. [Python 教程：turtle 库使用](docs/src/program-language/python/tutorial/20180429-turtle.md)
-7. [Python 教程：数码管绘制](docs/src/program-language/python/tutorial/20180501-digital-time.md)
-8. [Python 教程：Python 3.7 安装 polyglot 失败](docs/src/program-language/python/tutorial/20220421-polyglot-install.md)
+1. [Python 教程：简介](src/program-language/python/tutorial/20210331-intro.md)
+2. [Python 教程：玩转 Pycharm](src/program-language/python/tutorial//20210401-pycharm.md)
+3. [Python 教程：语言元素](src/program-language/python/tutorial/20210402-language-element.md)
+4. [Python 教程：条件判断、循环以及循环的终止](src/program-language/python/tutorial/20210403-condition.md)
+5. [Python 教程：购物车](src/program-language/python/tutorial/20220420-shopping.md)
+6. [Python 教程：turtle 库使用](src/program-language/python/tutorial/20180429-turtle.md)
+7. [Python 教程：数码管绘制](src/program-language/python/tutorial/20180501-digital-time.md)
+8. [Python 教程：Python 3.7 安装 polyglot 失败](src/program-language/python/tutorial/20220421-polyglot-install.md)
 
 #### 编程实例
-1. [编程实例（1 - 5）](docs/src/program-language/python/instance/20181003-1-5.md)
-2. [编程实例（6 - 10）](docs/src/program-language/python/instance/20181004-6-10.md)
-3. [编程实例（11 - 15）](docs/src/program-language/python/instance/20181005-11-15.md)
-4. [编程实例（16 - 20）](docs/src/program-language/python/instance/20181006-16-20.md)
-5. [编程实例（21 - 25）](docs/src/program-language/python/instance/20181007-21-25.md)
-6. [编程实例（26 - 30）](docs/src/program-language/python/instance/20181008-26-30.md)
-7. [编程实例（31 - 35）](docs/src/program-language/python/instance/20181009-31-35.md)
-8. [编程实例（36 - 40）](docs/src/program-language/python/instance/20181010-36-40.md)
-9. [编程实例（41 - 45）](docs/src/program-language/python/instance/20181011-41-45.md)
-10. [编程实例（46 - 50）](docs/src/program-language/python/instance/20181012-46-50.md)
-11. [编程实例（51 - 55）](docs/src/program-language/python/instance/20181013-51-55.md)
-
-</details>
+1. [编程实例（1 - 5）](src/program-language/python/instance/20181003-1-5.md)
+2. [编程实例（6 - 10）](src/program-language/python/instance/20181004-6-10.md)
+3. [编程实例（11 - 15）](src/program-language/python/instance/20181005-11-15.md)
+4. [编程实例（16 - 20）](src/program-language/python/instance/20181006-16-20.md)
+5. [编程实例（21 - 25）](src/program-language/python/instance/20181007-21-25.md)
+6. [编程实例（26 - 30）](src/program-language/python/instance/20181008-26-30.md)
+7. [编程实例（31 - 35）](src/program-language/python/instance/20181009-31-35.md)
+8. [编程实例（36 - 40）](src/program-language/python/instance/20181010-36-40.md)
+9. [编程实例（41 - 45）](src/program-language/python/instance/20181011-41-45.md)
+10. [编程实例（46 - 50）](src/program-language/python/instance/20181012-46-50.md)
+11. [编程实例（51 - 55）](src/program-language/python/instance/20181013-51-55.md)
 
 ## 七、你问我答
 
+1. [你问我答：想学好 Java 基础，应该去哪儿刷题](src/QA/20230402-where-exercise-java-basics.md)
+
+## 八、好物周刊
+
+### 2024 年刊
+1. [好物周刊#38：在线图片处理](src/weekly/2024/0101-0105.md)
+2. [好物周刊#39：IT 人必备神器](src/weekly/2024/0106-0112.md)
+3. [好物周刊#40：多功能文件管理器](src/weekly/2024/0113-0119.md)
+4. [好物周刊#41：新一代截图神器](src/weekly/2024/0120-0126.md)
+5. [好物周刊#42：国产项目管理软件](src/weekly/2024/0127-0202.md)
+6. [好物周刊#43：设计素材下载](src/weekly/2024/0203-0209.md)
+7. [好物周刊#44：现代终端工具](src/weekly/2024/0210-0216.md)
+8. [好物周刊#45：系统激活工具](src/weekly/2024/0217-0223.md)
+9. [好物周刊#46：在线工具箱](src/weekly/2024/0224-0301.md)
+10. [好物周刊#47：快捷启动器](src/weekly/2024/0302-0308.md)
+11. [好物周刊#48：Golang 学习资料](src/weekly/2024/0309-0315.md)
+12. [好物周刊#49：字幕交流网站](src/weekly/2024/0316-0322.md)
+
+### 2023 年刊
 <details>
+<summary>2023 年刊列表</summary>
+1. [好物周刊#1：提示工程师养成指南](src/weekly/2023/0415-0421.md)
+2. [好物周刊#2：AI 写作助手](src/weekly/2023/0422-0428.md)
+3. [好物周刊#3：Java 学习+面试指南](src/weekly/2023/0429-0505.md)
+4. [好物周刊#4：每天一条 JS 小技巧](src/weekly/2023/0506-0512.md)
+5. [好物周刊#5：前端开发必备资源站](src/weekly/2023/0513-0519.md)
+6. [好物周刊#6：系统下载最优解](src/weekly/2023/0520-0526.md)
+7. [好物周刊#7：标签页也可以这么酷](src/weekly/2023/0527-0602.md)
+8. [好物周刊#8：开源镜像站](src/weekly/2023/0603-0609.md)
+9. [好物周刊#9：AI 学习必备资料](src/weekly/2023/0610-0616.md)
+10. [好物周刊#10：算法学习必备](src/weekly/2023/0617-0623.md)
+11. [好物周刊#11：远程桌面软件对对碰](src/weekly/2023/0624-0630.md)
+12. [好物周刊#12：计算机考研资料](src/weekly/2023/0701-0707.md)
+13. [好物周刊#13：免费下载软件](src/weekly/2023/0708-0714.md)
+14. [好物周刊#14：壁纸下载网站](src/weekly/2023/0715-0721.md)
+15. [好物周刊#15：别样清晰的远程控制软件](src/weekly/2023/0722-0728.md)
+16. [好物周刊#16：别致的二维码](src/weekly/2023/0729-0804.md)
+17. [好物周刊#17：美图合集 App](src/weekly/2023/0805-0811.md)
+18. [好物周刊#18：灵感收集器](src/weekly/2023/0812-0818.md)
+19. [好物周刊#19：开源指北](src/weekly/2023/0819-0825.md)
+20. [好物周刊#20：写作辅助助手](src/weekly/2023/0826-0901.md)
+21. [好物周刊#21：前端学习资料](src/weekly/2023/0902-0908.md)
+22. [好物周刊#22：代码阅读辅助工具](src/weekly/2023/0909-0915.md)
+23. [好物周刊#23：Win 12 来了！](src/weekly/2023/0916-0922.md)
+24. [好物周刊#24：动手学深度学习](src/weekly/2023/0923-0929.md)
+25. [好物周刊#25：PPT 超级市场](src/weekly/2023/0930-1006.md)
+26. [好物周刊#26：程序员英语词汇宝典](src/weekly/2023/1007-1013.md)
+27. [好物周刊#27：音乐助手](src/weekly/2023/1014-1020.md)
+28. [好物周刊#28：免费离线图片 OCR](src/weekly/2023/1021-1027.md)
+29. [好物周刊#29：项目管理软件](src/weekly/2023/1028-1103.md)
+30. [好物周刊#30：我在 Github 上名校](src/weekly/2023/1104-1110.md)
+31. [好物周刊#31：在线格式转换](src/weekly/2023/1111-1117.md)
+32. [好物周刊#32：Go 学习指南](src/weekly/2023/1118-1124.md)
+33. [好物周刊#33：手写公式识别](src/weekly/2023/1125-1201.md)
+34. [好物周刊#34：超级复制神器](src/weekly/2023/1202-1208.md)
+35. [好物周刊#35：图标资源获取](src/weekly/2023/1209-1215.md)
+36. [好物周刊#36：程序员简历](src/weekly/2023/1216-1222.md)
+37. [好物周刊#37：元气桌面](src/weekly/2023/1223-1229.md)
+</details>
 
-<summary>点击展开查看详情</summary>
+## 九、关于
 
-1. [你问我答：想学好 Java 基础，应该去哪儿刷题](docs/src/faq/20230402-where-exercise-java-basics.md)
+## 快速联系
 
-</details>
+### 👨‍💻 加群交流
 
-## ☎️ 交流
-
-欢迎关注[公众号](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIyNTg2MjkzNw==&action=getalbum&album_id=2501145320567963650&scene=173&from_msgid=2247497779&from_itemidx=1&count=3&nolastread=1#wechat_redirect)|[博客](https://cunyu1943.github.io/weekly)一起交流（每周在公众号首发）：
+建群的目的是希望给大家提供一个良好的技术学习交流平台，由于微信群人满 `100` 之后无法加入，请扫描下方二维码先添加作者 “村雨遥” 微信(`cunyu1943`)，备注：**加群**。
 
 <center>
-<img src="docs/src/public/contact/contact.png" width="250" />
+<img src="./src/.vuepress/public/contact/contact.png" width="200px" />
+
 </center>
 
-## ✨ Star 趋势图
+### 🧩 公众号
 
-> 🎈 [JavaPark](https://github.com/cunyu1943/JavaPark)
+[「公众号」](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIyNTg2MjkzNw==&action=getalbum&album_id=2501145320567963650&scene=173&from_msgid=2247496866&from_itemidx=1&count=3&nolastread=1#wechat_redirect) 佛系更新，不过文章会优先发布在这里，除此之外，公众号上还会不定时有福利干货哦，但是这些内容不一定会同步到在线阅读网站！
 
-如果您觉得本项目对您有所帮助，那就去 Github **Star** 收藏一下吧！
+微信搜索 `JavaPark` 或者扫描下方二维码即可关注。防止错过最新消息推送，建议关注后加星标哦！
 
-<img src="https://api.star-history.com/svg?repos=cunyu1943/JavaPark&type=Date" width="80%"/>
+<center>
+<img src="./src/.vuepress/public/contact/wechatpublic.png" width="150px" />
+</center>
 
-## 🧧 赞助
 
-开源不易，如果你觉得本仓库对你有帮助，或许可以请我喝杯咖啡 ☕️
 
-<center>
+## ✨ Star 趋势图
 
-|                            支付宝                            |                             赞赏                             |                             微信                             |
-| :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: |
-| <img src="./docs/src/public/award/alipay.png" width="150px" /> | <img src="./docs/src/public/award/donate.jpg" width="150px" /> | <img src="./docs/src/public/award/wechatpay.png" width="150px" /> |
+> 🎈 [Github](https://github.com/cunyu1943/JavaPark) | [Gitee](https://gitee.com/cunyu1943/JavaPark)
 
+如果您觉得本项目对您有所帮助，那就去 Github **Star** 收藏一下吧！
 
-</center>
+<img src="https://api.star-history.com/svg?repos=cunyu1943/JavaPark&type=Date" width="50%"/>
+
+## 赞助
+
+开源不易，如果你觉得本仓库对你有帮助，或许可以请我喝杯咖啡，不靠它生存，但仍希望得到你的鼓励。
+
+<img src="src/.vuepress/public/award/donate.svg" width="150px"/>
 
 ## 🧑‍🤝‍🧑 参与贡献
 
diff --git a/docs/.vitepress/config.mjs b/docs/.vitepress/config.mjs
deleted file mode 100644
index 70538fac5e..0000000000
--- a/docs/.vitepress/config.mjs
+++ /dev/null
@@ -1,183 +0,0 @@
-import { defineConfig } from 'vitepress'
-import { chineseSearchOptimize, pagefindPlugin } from 'vitepress-plugin-pagefind'
-import timeline from "vitepress-markdown-timeline";
-import { AnnouncementPlugin } from 'vitepress-plugin-announcement'
-import { GitChangelog, GitChangelogMarkdownSection } from '@nolebase/vitepress-plugin-git-changelog/vite'
-// import { head } from './configs/head'
-import { La51Plugin } from 'vitepress-plugin-51la'
-import { nav } from './configs/nav'
-import { sidebar } from './configs/sidebar'
-import { RssPlugin } from 'vitepress-plugin-rss'
-
-const baseUrl = 'https://cunyu1943.github.io'
-
-export default defineConfig({
-  sitemap: {
-    hostname: 'https://cunyu1943.github.io',
-  },
-  // 语言
-  lang: 'zh-CN',
-  // 网站标题
-  title: "JavaPark",
-  // 网站描述
-  description: "Java 学习保姆级教程、计算机基础、数据库、实战实践、效率工具、资源分享、程序人生 ~",
-  // 仓库名
-  // base: "/weekly/",
-  // 源目录
-  srcDir: "src",
-
-  // 忽略死链
-  ignoreDeadLinks: true,
-
-  // head,
-  // 公式
-  markdown: {
-    math: true,
-    lineNumbers: true,
-    image: {
-      lazyLoading: true
-    },
-
-    // 时间线
-    config: (md) => {
-      md.use(timeline)
-    }
-
-  },
-
-  vite: {
-    plugins: [
-      RssPlugin({
-        title: 'JavaPark',
-        baseUrl,
-        copyright: 'Copyright © 村雨遥',
-      }),
-      // 51La 统计
-      La51Plugin({
-        id: 'KibDLhcbnUfZXiUS',
-        ck: 'KibDLhcbnUfZXiUS'
-      }),
-      // 搜索
-      pagefindPlugin({
-        customSearchQuery: chineseSearchOptimize,
-        btnPlaceholder: '搜索',
-        placeholder: '搜索文档',
-        emptyText: '空空如也',
-        heading: '共: {{searchResult}} 条结果',
-      }),
-      GitChangelog({
-        // 填写在此处填写您的仓库链接
-        repoURL: () => 'https://github.com/cunyu1943/JavaPark',
-      }),
-      GitChangelogMarkdownSection(),
-
-      AnnouncementPlugin({
-        title: '公告',
-        body: [
-          { type: 'text', content: '👇 微信 👇 <--> 👇 赞赏 👇' },
-          {
-            type: 'image',
-            src: 'contact/wechat.jpg',
-            style: 'display: inline-block;width:46%;padding-right:6px'
-          },
-          {
-            type: 'image',
-            src: 'award/donate.jpg',
-            style: 'display: inline-block;width:46%;padding-left:6px'
-          }
-        ],
-        // footer: [
-        //   // {
-        //   //   type: 'text',
-        //   //   content: 'footer content'
-        //   // },
-        //   {
-        //     type: 'button',
-        //     content: '已添加',
-        // link: 
-        //   },
-        //   {
-        //     type: 'button',
-        //     content: '已关注',
-        //     // link: 
-        //     props: {
-        //       type: 'success'
-        //     }
-        //   },
-        // ],
-      })
-    ],
-  },
-
-  themeConfig: {
-    logo: 'logo.png',
-
-    // 大纲标题级别
-    outline: {
-      level: [2, 3],
-      label: '页面导航'
-    },
-
-    docFooter: {
-      prev: '上一页',
-      next: '下一页'
-    },
-
-    // 搜索
-    // search: {
-    //   provider: 'local',
-    //   options: {
-
-    //     locales: {
-    //       zh: {
-    //         translations: {
-    //           button: {
-    //             buttonText: '搜索文档',
-    //             buttonAriaLabel: '搜索文档'
-    //           },
-    //           modal: {
-    //             noResultsText: '无法找到相关结果',
-    //             resetButtonTitle: '清除查询条件',
-    //             footer: {
-    //               selectText: '选择',
-    //               navigateText: '切换'
-    //             },
-    //           },
-    //         },
-    //       },
-    //     },
-    //   },
-    // },
-
-    // 编辑链接
-    editLink: {
-      pattern: 'https://github.com/cunyu1943/JavaPark/edit/main/docs/:path',
-      text: '在 GitHub 上编辑此页面'
-    },
-
-    // 上次更新
-    lastUpdated: {
-      text: '最后更新于',
-      formatOptions: {
-        dateStyle: 'full',
-        timeStyle: 'medium'
-      }
-    },
-
-    // 页脚
-    footer: {
-      message: 'Released under the Apache License.',
-      copyright: 'Copyright © 村雨遥'
-    },
-
-    // 导航栏
-    nav,
-
-    // 侧边栏
-    sidebar,
-
-    socialLinks: [
-      { icon: 'github', link: 'https://github.com/cunyu1943' }
-    ]
-  }
-})
diff --git a/docs/.vitepress/configs/head.ts b/docs/.vitepress/configs/head.ts
deleted file mode 100644
index b5850c581c..0000000000
--- a/docs/.vitepress/configs/head.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-// import type { HeadConfig } from 'vitepress'
-
-// export const head: HeadConfig[] = [
-//     ['meta', { name: 'theme-color', content: '#3eaf7c' }],
-//     ['link', { rel: 'icon', href: 'logo.png' }]
-// ]
diff --git a/docs/.vitepress/configs/nav.ts b/docs/.vitepress/configs/nav.ts
deleted file mode 100644
index 5883bebc7e..0000000000
--- a/docs/.vitepress/configs/nav.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import type { DefaultTheme } from 'vitepress'
-
-export const nav: DefaultTheme.Config['nav'] = [
-    { text: '🏠 主页', link: '/' },
-    {
-        text: '☕️ Java 图鉴',
-        items: [
-            { text: '🪛 Java 基础', link: '/java-tutorial/javase/20220701-intro-to-java' },
-            { text: '💾 MySQL', link: '/java-tutorial/mysql/20210623-quick-start' },
-            { text: '🪩 Java Web', link: '/java-tutorial/javaweb/' },
-            { text: '🕹️ 实战训练', link: '/java-tutorial/in-action/20220625-1-5' },
-        ]
-    },
-
-    {
-        text: '🧑🏻‍💻 求职面试',
-        items: [
-            { text: '🔋 知识点', link: '/interview/knowledge/20240201-java-basic' },
-            { text: '🪫 面试技巧', link: '/interview/' },
-        ]
-    },
-
-    {
-        text: '⛩️ 框架|中间件',
-        items: [
-            { text: '🔖 Maven', link: '/framework/maven/20200707-intro' },
-            { text: '🍃 Spring', link: '/framework/spring/20200720-intro' },
-            { text: '🍀 Spring MVC', link: '/framework/springmvc/' },
-            { text: '🏮 MyBatis', link: '/framework/mybatis/20200719-intro' },
-            { text: '🎈 MyBatis-Plus', link: '/framework/mybatis-plus/20210807-intro' },
-            { text: '☘️ Spring Boot', link: '/framework/springboot/20200520-intro' },
-            { text: '🌿 Spring Cloud', link: '/framework/springcloud/' },
-            { text: '🎐 Nginx', link: '/framework/nginx/20221016-intro-install' },
-            { text: '📮 Redis', link: '/framework/redis/20210821-intro' },
-        ]
-    },
-
-    {
-        text: '💻 计算机知识',
-        items: [
-            { text: '🧷 组成原理', link: '/cs-wiki/composition/' },
-            { text: '🔗 操作系统', link: '/cs-wiki/system/' },
-            { text: '📎 计算机网络', link: '/cs-wiki/network/' },
-            { text: '🖇️ 数据结构与算法', link: '/cs-wiki/algo/20220503-datastructure-intro' },
-        ]
-    },
-
-    {
-        text: '🚀 基础教程',
-        items: [
-            { text: '✈️ IDEA 教程', link: '/tutorial/idea/20220202-idea-guide' },
-            { text: '🚧 博客搭建', link: '/tutorial/blog/20220401-hexo' },
-            { text: '🛠️ 效率工具', link: '/tutorial/efficiency/20200511-windows-install-node' },
-            { text: '🖥️ 软件设计师', link: '/tutorial/software-designer/20221024-computer-system' }
-        ]
-    },
-
-    {
-        text: '🐲 编程语言',
-        items: [
-            { text: '🦚 前端三剑客', link: '/program-language/front-end/20230829-environment' },
-            { text: '🐸 Vue', link: '/program-language/vue/20220605-intro' },
-            { text: '🐍 Python', link: '/program-language/python/20210331-intro' },
-            { text: '🦎 C 语言', link: '/program-language/c/20180720-summary' },
-            { text: '🐢 C++', link: '/program-language/cpp/20180720-summary' },
-        ]
-    },
-
-    { text: '❓ 你问我答', link: '/faq/20230402-where-exercise-java-basics' },
-
-    {
-        text: '😎 关于',
-        items: [
-            { text: '🧑🏻‍💻 关于自己', link: '/about/me/' },
-            { text: '📖 关于学习', link: '/about/study/' },
-            { text: '💼 关于工作', link: '/about/job/' }
-        ]
-    },
-    
-    {
-        text: '🪄 更多',
-        items: [
-            { text: '🧧 薅羊毛', link: '/ads' },
-            { text: '💰 打赏', link: '/reward' },
-            { text: '💳 超大流量卡', link: 'https://ym.ksjhaoka.com/?s=Ltxbbs9W330131' }
-        ]
-    }
-]
\ No newline at end of file
diff --git a/docs/.vitepress/configs/sidebar.ts b/docs/.vitepress/configs/sidebar.ts
deleted file mode 100644
index 02ebc1dccf..0000000000
--- a/docs/.vitepress/configs/sidebar.ts
+++ /dev/null
@@ -1,402 +0,0 @@
-import type { DefaultTheme } from 'vitepress'
-
-export const sidebar: DefaultTheme.Config['sidebar'] = {
-
-    '/about/': [
-        {
-            text: '关于自己',
-            collapsed: true,
-            items: [
-                { text: '关于自己', link: '/about/me/' },
-            ]
-        },
-        {
-            text: '关于学习',
-            collapsed: true,
-            items: [
-                { text: '关于学习', link: '/about/study/' },
-            ]
-        },
-        {
-            text: '关于工作',
-            collapsed: true,
-            items: [
-                { text: '关于工作', link: '/about/job/' },
-            ]
-        }
-    ],
-
-    '/java-tutorial/': [
-        {
-            text: 'Java 基础',
-            collapsed: true,
-            items: [
-                { text: '简介', link: '/java-tutorial/javase/20220701-intro-to-java' },
-                { text: '开发环境搭建及入门程序', link: '/java-tutorial/javase/20220702-jdk-install-and-hello-world' },
-                { text: '利用 IDEA 进行 Java 开发', link: '/java-tutorial/javase/20220703-learn-java-with-idea' },
-                { text: '变量与数据类型', link: '/java-tutorial/javase/20220704-variable-and-datatype' },
-                { text: '常用进制转换', link: '/java-tutorial/javase/20220705-binary-convert' },
-                { text: '操作符', link: '/java-tutorial/javase/20220706-operator' },
-                { text: '控制流程', link: '/java-tutorial/javase/20220707-control-process' },
-                { text: '流程控制知识大闯关', link: '/java-tutorial/javase/20221127-loop-in-action' },
-                { text: '数组操作的奇技淫巧', link: '/java-tutorial/javase/20220708-how-to-operate-array' },
-                { text: '面向对象的 3、5 知识点', link: '/java-tutorial/javase/20220709-oop-1' },
-                { text: '类的相关知识', link: '/java-tutorial/javase/20220710-oop-2' },
-                { text: '包和 jar 文件的创建', link: '/java-tutorial/javase/20220711-oop-3' },
-                { text: '成员变量、实例变量、静态变量、局部变量', link: '/java-tutorial/javase/20220712-all-kinds-of-variable' },
-                { text: 'String 详解', link: '/java-tutorial/javase/20220713-string' },
-                { text: 'ArrayList 详解', link: '/java-tutorial/javase/20220714-arraylist' },
-                { text: '输入输出流', link: '/java-tutorial/javase/20220715-in-out-stream' },
-                { text: '反射机制详解', link: '/java-tutorial/javase/20220716-reflection' },
-                { text: '深入浅出 Java 注解', link: '/java-tutorial/javase/20220721-annotations' },
-                { text: 'JDBC 入门指南', link: '/java-tutorial/javase/20220717-jdbc-introduction' },
-                { text: '是时候拥抱 Junit 单元测试了', link: '/java-tutorial/javase/20220718-test-with-junit' },
-                { text: 'Lombok 安装及使用指南', link: '/java-tutorial/javase/20220719-lombok-install-and-usage' },
-                { text: 'Fastjson V2 简单使用手册', link: '/java-tutorial/javase/20220720-fastjson2-quickstart' },
-                { text: 'static 和 final 小课堂', link: '/java-tutorial/javase/20221203-oop-advance' },
-                { text: '抽象、接口和内部类', link: '/java-tutorial/javase/20221211-abstract' },
-                { text: 'Mockito + JUnit 单元测试实例', link: '/java-tutorial/javase/20220722-mockito' },
-            ]
-        },
-
-        {
-            text: 'MySQL',
-            collapsed: true,
-            items: [
-                { text: 'MySQL 快速入门', link: '/java-tutorial/mysql/20210623-quick-start' },
-                { text: '开发环境搭建', link: '/java-tutorial/mysql/20240314-environment' },
-                { text: '《SQL 必知必会》全解析', link: '/java-tutorial/mysql/20220726-sql-in-10min' },
-            ]
-        },
-
-        // {
-        //     text: 'Java Web',
-        //     collapsed: true,
-        // },
-
-        {
-            text: '实战训练',
-            collapsed: true,
-            items: [
-                { text: '入门练习：1 - 5', link: '/java-tutorial/in-action/20220625-1-5' },
-                { text: '入门练习：6 - 10', link: '/java-tutorial/in-action/20220626-6-10' },
-                { text: '入门练习：11 - 15', link: '/java-tutorial/in-action/20220627-11-15' },
-                { text: '入门练习：16 - 20', link: '/java-tutorial/in-action/20220628-16-20' },
-                { text: '入门练习：21 - 25', link: '/java-tutorial/in-action/20220629-21-25' },
-                { text: '入门练习：26 - 30', link: '/java-tutorial/in-action/20220630-26-30' },
-                { text: '入门练习：31 - 35', link: '/java-tutorial/in-action/20220701-31-35' },
-                { text: '入门练习：36 - 40', link: '/java-tutorial/in-action/20220702-36-40' },
-                { text: '学生成绩管理系统', link: '/java-tutorial/in-action/20210405-stu-manage-sys' },
-                { text: '饭馆点菜系统', link: '/java-tutorial/in-action/20210731-order-system' },
-                { text: '记账本', link: '/java-tutorial/in-action/20210801-tally-book' },
-                { text: 'MySQL + MyBatis 版学生管理系统', link: '/java-tutorial/in-action/20220307-mysql-mybatis-stu-manag-sys' },
-            ]
-        }
-    ],
-
-    '/faq/': [
-        { text: '学习Java基础，应该去哪儿刷题', link: '/faq/20230402-where-exercise-java-basics' },
-    ],
-
-    '/interview/': [
-        {
-            text: '知识点',
-            collapsed: true,
-            items: [
-                { text: 'Java 基础面试知识点', link: '/interview/knowledge/20240201-java-basic' },
-                { text: 'Java 进阶面试知识点', link: '/interview/knowledge/20240203-java-advanced' },
-                { text: 'MySQL 面试知识点', link: '/interview/knowledge/20240203-mysql' },
-                { text: 'MyBatis 面试知识点', link: '/interview/knowledge/20210822-mybatis' },
-                { text: 'Spring 面试知识点', link: '/interview/knowledge/20210103-spring' },
-                { text: '多线程面试知识点', link: '/interview/knowledge/20210629-thread' },
-                { text: '异常面试知识点', link: '/interview/knowledge/20210528-exception' },
-                { text: '计算机网络面试知识点', link: '/interview/knowledge/20201231-network' },
-            ]
-        },
-
-        {
-            text: '面试技巧',
-            collapsed: true,
-        }
-    ],
-
-    '/cs-wiki/': [
-        {
-            text: '组成原理',
-            collapsed: true,
-        },
-        {
-            text: '操作系统',
-            collapsed: true,
-        },
-        {
-            text: '计算机网络',
-            collapsed: true,
-        },
-        {
-            text: '数据结构与算法',
-            collapsed: true,
-            items: [
-                { text: '数据结构简介', link: '/cs-wiki/algo/20220503-datastructure-intro' },
-                { text: '算法简介', link: '/cs-wiki/algo/20220511-algo-intro' },
-                { text: '时间 & 空间复杂度', link: '/cs-wiki/algo/20220512-time-space' },
-                { text: '数组简介', link: '/cs-wiki/algo/20220516-array' },
-                { text: '数组增删改查', link: '/cs-wiki/algo/20200510-arr-crud' },
-                { text: '有序数组去重', link: '/cs-wiki/algo/20220513-sorted-arr-duplication' },
-                { text: '链表详解', link: '/cs-wiki/algo/20220515-linkedlist' },
-                { text: '二叉树的遍历', link: '/cs-wiki/algo/202205170-binary-tree-traverse' }
-            ]
-        }
-    ],
-
-    '/framework/': [
-        {
-            text: 'Maven',
-            collapsed: true,
-            items: [
-                { text: '简介', link: '/framework/maven/20200707-intro' },
-                { text: '常用命令', link: '/framework/maven/20200708-command' },
-                { text: '仓库、坐标及依赖管理', link: '/framework/maven/20200709-pom' },
-                { text: 'IDEA 创建 Maven 项目', link: '/framework/maven/20200710-idea-maven' },
-            ]
-        },
-
-        {
-            text: 'Spring',
-            collapsed: true,
-            items: [
-                { text: '简介', link: '/framework/spring/20200720-intro' },
-                { text: 'IoC 大揭秘', link: '/framework/spring/20200723-ioc' },
-                { text: '依赖注入知多少', link: '/framework/spring/20200724-di' },
-                { text: 'Spring Bean 注解详解', link: '/framework/spring/20210521-annotation' },
-                { text: 'IoC 简介及入门实例（XML 版）', link: '/framework/spring/20220428-ioc-xml' },
-                { text: 'Bean 详解', link: '/framework/spring/20220429-bean' },
-            ]
-        },
-
-        {
-            text: 'Spring MVC',
-            collapsed: true,
-            items: [
-                // { text: '', link: '/framework/spring/20200720-intro' },
-            ]
-        },
-
-        {
-            text: 'MyBatis',
-            collapsed: true,
-            items: [
-                { text: '简介', link: '/framework/mybatis/20200719-intro' },
-                { text: '入门实例', link: '/framework/mybatis/20200720-quick-start' },
-                { text: '注解开发', link: '/framework/mybatis/20200721-annotation' },
-                { text: '一二级缓存', link: '/framework/mybatis/20200722-pri-sec-cache' },
-                { text: '代码自动生成器', link: '/framework/mybatis/20211214-generator' },
-            ]
-        },
-
-        {
-            text: 'MyBatis-Plus',
-            collapsed: true,
-            items: [
-                { text: '简介及入门实例', link: '/framework/mybatis-plus/20210807-intro' },
-                { text: '日志配置及常用 CRUD', link: '/framework/mybatis-plus/20210808-log-crud' },
-
-            ]
-        },
-
-        {
-            text: 'Spring MVC',
-            collapsed: true,
-            items: [
-                // { text: '', link: '/framework/spring/20200720-intro' },
-            ]
-        },
-
-        {
-            text: 'Spring Boot',
-            collapsed: true,
-            items: [
-                { text: '简介', link: '/framework/springboot/20200520-intro' },
-                { text: '注解方式整合 MyBatis 实例', link: '/framework/springboot/20200727-annotation-mybatis' },
-                { text: 'XML 方式整合 MyBatis 实例', link: '/framework/springboot/20200726-xml-mybatis' },
-                { text: '注解方式整合 Mybatis + PageHelper 分页实例', link: '/framework/springboot/20200728-annotation-mybatis-pagehelper' },
-                { text: '整合 Thymeleaf 实例', link: '/framework/springboot/20200729-thymeleaf' },
-                { text: '整合 JDBC Template 实例', link: '/framework/springboot/20200730-jdbc' },
-                { text: '创建项目的几种方式', link: '/framework/springboot/20210811-create-ways' },
-                { text: '配置详解', link: '/framework/springboot/20211003-config' },
-                { text: '整合 FreeMarker 实例', link: '/framework/springboot/20211130-freemaker' },
-                { text: 'Swagger2 构建强大的 API 文档', link: '/framework/springboot/20220106-swagger2' },
-                { text: 'Swagger3 生成 API 接口文档', link: '/framework/springboot/20220110-swagger3' },
-                { text: '集成 Knife4j', link: '/framework/springboot/20220430-knife4j' },
-                { text: '集成 Security 入门小实例', link: '/framework/springboot/20220604-security' },
-            ]
-        },
-
-        {
-            text: 'Spring Cloud',
-            collapsed: true,
-            items: [
-                // { text: '', link: '/framework/spring/20200720-intro' },
-            ]
-        },
-
-        {
-            text: 'Nginx',
-            collapsed: true,
-            items: [
-                { text: '简介与环境搭建', link: '/framework/nginx/20221016-intro-install' },
-            ]
-        },
-
-        {
-            text: 'Redis',
-            collapsed: true,
-            items: [
-                { text: '简介', link: '/framework/redis/20210821-intro' },
-                { text: 'Redis 持久化', link: '/framework/redis/20221016-persistence' },
-            ]
-        },
-    ],
-
-    '/tutorial/': [
-        {
-            text: 'IDEA 教程',
-            collapsed: true,
-            items: [
-                { text: '创建 Java 入门应用', link: '/tutorial/idea/20210914-java-app' },
-                { text: '实用小技巧', link: '/tutorial/idea/20211010-tips' },
-                { text: '集成并使用 Git 图文教程', link: '/tutorial/idea/20220105-git' },
-                { text: '最新版 IntelliJ IDEA 使用手册', link: '/tutorial/idea/20220202-idea-guide' },
-                { text: '原来大厂都是这么提交代码的', link: '/tutorial/idea/20230525-code-commit' },
-            ]
-        },
-        {
-            text: '博客搭建',
-            collapsed: true,
-            items: [
-                { text: 'Vuepress + GitHub Actions 博客自动部署', link: '/tutorial/blog/' },
-                { text: 'Hexo + Github Pages 博客搭建教程', link: '/tutorial/blog/20220401-hexo' },
-                { text: 'dumi 博客搭建', link: '/tutorial/blog/20220610-dumi' },
-                { text: 'Hugo + Github Pages 博客搭建教程', link: '/tutorial/blog/20220611-hugo' },
-                { text: 'Halo 博客搭建教程', link: '/tutorial/blog/20201228-halo' },
-                { text: 'docsify 文档型博客搭建', link: '/tutorial/blog/20220612-docsify' },
-            ]
-        },
-        {
-            text: '效率工具',
-            collapsed: true,
-            items: [
-                { text: '如何用 Markdown 写出好看的文章', link: '/tutorial/efficiency/20230425-markdown-tutorial' },
-                { text: '10 个神奇的网站，助力带薪摸鱼', link: '/tutorial/efficiency/20220729-10-amazing-website' },
-                { text: '网站访问太慢，不妨试试这些 CDN', link: '/tutorial/efficiency/20220729-cdn' },
-                { text: '计算机专业涨薪必备的几个网站', link: '/tutorial/efficiency/20220731-exercise-websites' },
-                { text: '黑客大神也常用的一些 CMD 命令', link: '/tutorial/efficiency/20221127-cmd' },
-                { text: '如何在浏览器中安装插件', link: '/tutorial/efficiency/20230710-browser-plugin-install' },
-                { text: 'Emoji 表情大作战', link: '/tutorial/efficiency/20220729-emoji' },
-                { text: 'macOS 安装 Node.js', link: '/tutorial/efficiency/20221114-macos-install-node' },
-                { text: 'iTerm2 + Fish 高效终端', link: '/tutorial/efficiency/20220426-iterm2-fish' },
-                { text: 'iTerm2 + Oh My Zsh 终端神器', link: '/tutorial/efficiency/20220811-iterm2-zsh' },
-                { text: 'PPT 模板免费下载', link: '/tutorial/efficiency/20220623-ppt-template' },
-                { text: 'Windows 安装 Node.js', link: '/tutorial/efficiency/20200511-windows-install-node' },
-                { text: 'Ubuntu 默认 root 密码修改', link: '/tutorial/efficiency/20200517-ubuntu-root-pwd' },
-                { text: 'VMware 安装 Ubuntu', link: '/tutorial/efficiency/20200518-vmware-ubuntu' },
-                { text: 'XShell 连接 Ubuntu', link: '/tutorial/efficiency/20200519-xshell-ubuntu' },
-                { text: '手把手配置 Ubuntu', link: '/tutorial/efficiency/20200520-ubuntu' },
-                { text: '玩转 Manjora', link: '/tutorial/efficiency20200521-manjora' },
-                { text: '如何给视频添加字幕', link: '/tutorial/efficiency/20201010-video-subtitle' },
-                { text: 'U 盘启动盘制作', link: '/tutorial/efficiency/20201229-u-disk-sys-booter' },
-                { text: '优雅地使用 Windows 10', link: '/tutorial/efficiency/20201230-windows-tips' },
-                { text: 'Windows 系统安装教程', link: '/tutorial/efficiency/20201231-windows-sys' },
-                { text: '如何制作电子签名', link: '/tutorial/efficiency/20210422-signature' },
-                { text: '技术写作中的神兵利器', link: '/tutorial/efficiency/20210504-write-tools' },
-            ]
-        },
-        {
-            text: '软件设计师',
-            collapsed: true,
-            items: [
-                { text: '计算机系统', link: '/tutorial/software-designer/20221024-computer-system' },
-            ]
-        }
-    ],
-
-    '/program-language/': [
-        {
-            text: '前端三剑客',
-            collapsed: true,
-            items: [
-                { text: '开发环境搭建', link: '/program-language/front-end/20230829-environment' },
-                { text: 'HTML 大揭秘', link: '/program-language/front-end/20230829-html' },
-                { text: 'CSS 教程', link: '/program-language/front-end/20230903-css' },
-                { text: 'Axios 简单使用指南', link: '/program-language/front-end/20230926-axios' },
-                { text: 'Chrome 中执行 JavaScript 代码', link: '/program-language/front-end/javascript/20220301-chrome-js' },
-                { text: '简介', link: '/program-language/front-end/javascript/20220416-intro' },
-                { text: '注释、输入输出、变量', link: '/program-language/front-end/javascript/20220417-var' },
-                { text: '数据类型', link: '/program-language/front-end/javascript/20220418-datatype' },
-                { text: '操作符', link: '/program-language/front-end/javascript/20220419-operator' },
-                { text: '流程控制', link: '/program-language/front-end/javascript/20220420-flow' },
-                { text: '数组', link: '/program-language/front-end/javascript/20220421-array' },
-                { text: '函数', link: '/program-language/front-end/javascript/20220422-function' },
-                { text: '面向对象', link: '/program-language/front-end/javascript/20220423-oop' },
-                { text: 'DOM 元素获取、属性修改', link: '/program-language/front-end/javascript/20220424-dom-attr' },
-                { text: 'DOM 事件', link: '/program-language/front-end/javascript/20220425-dom' },
-
-            ]
-        },
-
-
-
-        {
-            text: 'Vue',
-            collapsed: true,
-            items: [
-                { text: 'Vue 3 简介及入门实例', link: '/program-language/vue/20220605-intro' },
-                { text: '搭建 Vue + Vite 入门项目', link: '/program-language/vue/20220606-vite-quickstart' },
-                { text: 'Vue3 常用指令', link: '/program-language/vue/20221012-common-command' },
-            ]
-        },
-
-        {
-            text: 'Python',
-            collapsed: true,
-            items: [
-                { text: '简介', link: '/program-language/python/20210331-intro' },
-                { text: '玩转 Pycharm', link: '/program-language/python/20210401-pycharm' },
-                { text: '语言元素', link: '/program-language/python/20210402-language-element' },
-                { text: '条件判断、循环以及循环的终止', link: '/program-language/python/20210403-condition' },
-                { text: '购物车', link: '/program-language/python/20220420-shopping' },
-                { text: 'turtle 库使用', link: '/program-language/python/20180429-turtle' },
-                { text: '数码管绘制', link: '/program-language/python/20180501-digital-time' },
-                { text: 'Python 3.7 安装 polyglot 失败', link: '/program-language/python/20220421-polyglot-install' },
-                { text: '编程实例（1 - 5）', link: '/program-language/python/20181003-1-5' },
-                { text: '编程实例（6 - 10）', link: '/program-language/python20181004-6-10' },
-                { text: '编程实例（11 - 15）', link: '/program-language/python/20181005-11-15' },
-                { text: '编程实例（16 - 20）', link: '/program-language/python/20181006-16-20' },
-                { text: '编程实例（21 - 25）', link: '/program-language/python/20181007-21-25' },
-                { text: '编程实例（26 - 30）', link: '/program-language/python/20181008-26-30' },
-                { text: '编程实例（31 - 35）', link: '/program-language/python/20181009-31-35' },
-                { text: '编程实例（36 - 40）', link: '/program-language/python/20181010-36-40' },
-                { text: '编程实例（41 - 45）', link: '/program-language/python/20181011-41-45' },
-                { text: '编程实例（46 - 50）', link: '/program-language/python/20181012-46-50' },
-                { text: '编程实例（51 - 55）', link: '/program-language/python/20181013-51-55' },
-            ]
-        },
-
-        {
-            text: 'C 语言',
-            collapsed: true,
-            items: [
-                { text: '内存管理函数', link: '/program-language/c/20180308-memory-manage' },
-                { text: '知识点总结', link: '/program-language/c/20180720-summary' },
-            ]
-        },
-
-        {
-            text: 'C++',
-            collapsed: true,
-            items: [
-                { text: '内存管理函数', link: '/program-language/cpp/20180720-summary' }
-            ]
-        }
-    ]
-}
\ No newline at end of file
diff --git a/docs/.vitepress/data/AsideData.js b/docs/.vitepress/data/AsideData.js
deleted file mode 100644
index 0623e02aeb..0000000000
--- a/docs/.vitepress/data/AsideData.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// import type { AsideItem } from '@theojs/lumen'
-
-export const Aside_Data = [
-    {
-        link: 'https://xn--mesr8b36x.cc/#/register?code=KhWkEeC9',
-        image: 'https://cunyu1943.github.io/weekly/icon/gratewall.svg',
-        info1: '稳定机场，已使用多年',
-        promo: '✈️',
-        // info2: '年付 64折 优惠码  2461880'
-    },
-    {
-        link: 'https://ym.ksjhaoka.com/?s=Ltxbbs9W330131',
-        image: 'https://cunyu1943.github.io/weekly/icon/sim.svg',
-        info1: '办理超低资费超大流量卡',
-        promo: '官方正规卡号',
-        // info2: '年付 64折 优惠码  2461880'
-    },
-    {
-        link: 'https://yuque.com/cunyu1943',
-        image: 'https://cunyu1943.github.io/weekly/icon/yuque.svg',
-        info1: '填写邀请码即送30天会员',
-        promo: '邀请码 VUFNKN',
-        // info2: '年付 64折 优惠码  2461880'
-    },
-    {
-        link: 'https://login.123pan.com/centerlogin?register=invite&ref=QOFavd',
-        image: 'https://cunyu1943.github.io/weekly/icon/123.svg',
-        info1: '2T超大云盘容量！免费领',
-        promo: '☁️',
-        // info2: '年付 64折 优惠码  2461880'
-    }
-
-    // {
-    //     link: 'https://xx.theojs.cn/',
-    //     icon: 'https://i.theojs.cn/avatar.png',
-    //     name: '玄学宝典',
-    //     hide1: '传世经典著作',
-    //     hide2: '山医命相卜'
-    // },
-    // {
-    //     link: 'https://github.com/sponsors/cunyu1943',
-    //     icon: 'https://doc.theojs.cn/爱心.png',
-    //     name: '为我赞助'
-    // }
-]
\ No newline at end of file
diff --git a/docs/.vitepress/theme/components/notice.vue b/docs/.vitepress/theme/components/notice.vue
deleted file mode 100644
index 15e1141cf6..0000000000
--- a/docs/.vitepress/theme/components/notice.vue
+++ /dev/null
@@ -1,129 +0,0 @@
-<script setup lang="ts">
-import { ref } from "vue";
-const visible = ref(true);
-
-function closetz() {
-  visible.value = false;
-}
-
-setTimeout(function () {
-  visible.value = false;
-}, 10000);
-</script>
-
-<template>
-  <div v-if="visible" class="notice-background" style="display: block"></div>
-  <div v-if="visible" class="notice">
-    <h3 class="notice-title">网站公告</h3>
-    <div class="notice-describe">
-      <p><strong>一、资源分享</strong></p>
-      <p class="notice-domain">
-        <strong>
-          资源八百库：<a
-            href="https://www.kdocs.cn/l/csij2u9ePmM6"
-            target="_blank"
-            >详情点击</a
-          >
-        </strong>
-      </p>
-      <p><strong>二、微信资源群</strong></p>
-      <img
-        class="notice-img"
-        src="https://cunyu1943.github.io/weekly/contact/wxgroup.jpg"
-      />
-    </div>
-    <div class="notice-footer">
-      <div class="notice-btn" @click="closetz">朕知道了</div>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-.notice-img {
-  z-index: 9999;
-}
-
-/* 全屏遮罩层 */
-.notice-background {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background-color: rgba(0, 0, 0, 0.5);
-  display: none;
-  z-index: 99;
-  pointer-events: none;
-}
-
-/* 通知 */
-.notice {
-  z-index: 999;
-  padding: 25px;
-  background: #fff;
-  width: 350px;
-  position: fixed;
-  top: 50%;
-  left: 50%;
-  transform: translateX(-50%) translateY(-50%);
-  border-radius: 18px;
-  box-sizing: border-box;
-  box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.05),
-    0 1.5rem 2.2rem rgba(0, 0, 0, 0.1);
-}
-
-@media (max-width: 640px) {
-  .notice {
-    width: 82%;
-    padding: 25px;
-  }
-}
-
-.notice-title {
-  text-align: center;
-  color: #3c3c3c;
-  font-size: 20px;
-  font-weight: 900;
-}
-
-.notice-describe p {
-  color: #3c3c3c;
-  padding: 10px 0;
-  font-size: 15px;
-}
-
-.notice-describe p strong {
-  color: #3c3c3c;
-}
-
-.notice-describe p a {
-  color: #eb0e0e;
-}
-
-.notice-domain {
-  background: #f3f5f7;
-  text-align: center;
-  border-radius: 10px;
-}
-
-/* 通知底部 */
-.notice-footer {
-  padding: 20px 0 0;
-  text-align: center;
-}
-
-.notice-btn {
-  text-align: center;
-  cursor: pointer;
-  border-radius: 50px;
-  font-weight: 700;
-  padding: 0 30px;
-  color: #fff;
-  background: linear-gradient(to right, #1e69f5 0%, #093ce5 100%);
-  box-shadow: 0 10px 12px -4px rgb(0 0 0 / 40%);
-  line-height: 40px;
-  font-size: 14px;
-  display: inline-block;
-  text-wrap: nowrap;
-}
-</style>
\ No newline at end of file
diff --git a/docs/.vitepress/theme/index.js b/docs/.vitepress/theme/index.js
deleted file mode 100644
index 58d9d9a4d9..0000000000
--- a/docs/.vitepress/theme/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// https://vitepress.dev/guide/custom-theme
-import { h } from 'vue'
-import DefaultTheme from 'vitepress/theme'
-import { Aside_Data } from '../data/AsideData'
-import './style/index.css'
-// 组件
-import notice from "./components/notice.vue";
-import "vitepress-markdown-timeline/dist/theme/index.css";
-// theme/index.ts
-import '@theojs/lumen/style'
-import { Notice, Underline, Aside } from '@theojs/lumen'
-import { NolebaseGitChangelogPlugin } from '@nolebase/vitepress-plugin-git-changelog/client'
-import '@nolebase/vitepress-plugin-git-changelog/client/style.css'
-
-/** @type {import('vitepress').Theme} */
-export default {
-  extends: DefaultTheme,
-  Layout: () => {
-    return h(DefaultTheme.Layout, null, {
-      'home-hero-info-before': () => h(Notice),
-      'aside-outline-before': () => h(Aside, { Aside_Data }),
-      // 指定组件使用layout-top插槽
-      'layout-top': () => h(notice),
-    })
-  },
-  enhanceApp: ({ app }) => {
-    app.component('Home', Underline)
-    app.use(NolebaseGitChangelogPlugin)
-    // app.component('Box', DocBox)
-    // app.component('Links', DocLinks)
-    // app.component('BoxCube', DocBoxCube)
-  }
-}
diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css
deleted file mode 100644
index d63aee82dc..0000000000
--- a/docs/.vitepress/theme/style.css
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * Customize default theme styling by overriding CSS variables:
- * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
- */
-
-/**
- * Colors
- *
- * Each colors have exact same color scale system with 3 levels of solid
- * colors with different brightness, and 1 soft color.
- * 
- * - `XXX-1`: The most solid color used mainly for colored text. It must
- *   satisfy the contrast ratio against when used on top of `XXX-soft`.
- *
- * - `XXX-2`: The color used mainly for hover state of the button.
- *
- * - `XXX-3`: The color for solid background, such as bg color of the button.
- *   It must satisfy the contrast ratio with pure white (#ffffff) text on
- *   top of it.
- *
- * - `XXX-soft`: The color used for subtle background such as custom container
- *   or badges. It must satisfy the contrast ratio when putting `XXX-1` colors
- *   on top of it.
- *
- *   The soft color must be semi transparent alpha channel. This is crucial
- *   because it allows adding multiple "soft" colors on top of each other
- *   to create a accent, such as when having inline code block inside
- *   custom containers.
- *
- * - `default`: The color used purely for subtle indication without any
- *   special meanings attched to it such as bg color for menu hover state.
- *
- * - `brand`: Used for primary brand colors, such as link text, button with
- *   brand theme, etc.
- *
- * - `tip`: Used to indicate useful information. The default theme uses the
- *   brand color for this by default.
- *
- * - `warning`: Used to indicate warning to the users. Used in custom
- *   container, badges, etc.
- *
- * - `danger`: Used to show error, or dangerous message to the users. Used
- *   in custom container, badges, etc.
- * -------------------------------------------------------------------------- */
-
- :root {
-  --vp-c-default-1: var(--vp-c-gray-1);
-  --vp-c-default-2: var(--vp-c-gray-2);
-  --vp-c-default-3: var(--vp-c-gray-3);
-  --vp-c-default-soft: var(--vp-c-gray-soft);
-
-  --vp-c-brand-1: var(--vp-c-indigo-1);
-  --vp-c-brand-2: var(--vp-c-indigo-2);
-  --vp-c-brand-3: var(--vp-c-indigo-3);
-  --vp-c-brand-soft: var(--vp-c-indigo-soft);
-
-  --vp-c-tip-1: var(--vp-c-brand-1);
-  --vp-c-tip-2: var(--vp-c-brand-2);
-  --vp-c-tip-3: var(--vp-c-brand-3);
-  --vp-c-tip-soft: var(--vp-c-brand-soft);
-
-  --vp-c-warning-1: var(--vp-c-yellow-1);
-  --vp-c-warning-2: var(--vp-c-yellow-2);
-  --vp-c-warning-3: var(--vp-c-yellow-3);
-  --vp-c-warning-soft: var(--vp-c-yellow-soft);
-
-  --vp-c-danger-1: var(--vp-c-red-1);
-  --vp-c-danger-2: var(--vp-c-red-2);
-  --vp-c-danger-3: var(--vp-c-red-3);
-  --vp-c-danger-soft: var(--vp-c-red-soft);
-}
-
-/**
- * Component: Button
- * -------------------------------------------------------------------------- */
-
-:root {
-  --vp-button-brand-border: transparent;
-  --vp-button-brand-text: var(--vp-c-white);
-  --vp-button-brand-bg: var(--vp-c-brand-3);
-  --vp-button-brand-hover-border: transparent;
-  --vp-button-brand-hover-text: var(--vp-c-white);
-  --vp-button-brand-hover-bg: var(--vp-c-brand-2);
-  --vp-button-brand-active-border: transparent;
-  --vp-button-brand-active-text: var(--vp-c-white);
-  --vp-button-brand-active-bg: var(--vp-c-brand-1);
-}
-
-/**
- * Component: Home
- * -------------------------------------------------------------------------- */
-
-:root {
-  --vp-home-hero-name-color: transparent;
-  --vp-home-hero-name-background: -webkit-linear-gradient(
-    120deg,
-    #bd34fe 30%,
-    #41d1ff
-  );
-
-  --vp-home-hero-image-background-image: linear-gradient(
-    -45deg,
-    #bd34fe 50%,
-    #47caff 50%
-  );
-  --vp-home-hero-image-filter: blur(44px);
-}
-
-@media (min-width: 640px) {
-  :root {
-    --vp-home-hero-image-filter: blur(56px);
-  }
-}
-
-@media (min-width: 960px) {
-  :root {
-    --vp-home-hero-image-filter: blur(68px);
-  }
-}
-
-/**
- * Component: Custom Block
- * -------------------------------------------------------------------------- */
-
-:root {
-  --vp-custom-block-tip-border: transparent;
-  --vp-custom-block-tip-text: var(--vp-c-text-1);
-  --vp-custom-block-tip-bg: var(--vp-c-brand-soft);
-  --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
-}
-
-/**
- * Component: Algolia
- * -------------------------------------------------------------------------- */
-
-.DocSearch {
-  --docsearch-primary-color: var(--vp-c-brand-1) !important;
-}
-
diff --git a/docs/.vitepress/theme/style/blur.css b/docs/.vitepress/theme/style/blur.css
deleted file mode 100644
index e606f9784f..0000000000
--- a/docs/.vitepress/theme/style/blur.css
+++ /dev/null
@@ -1,44 +0,0 @@
-/* .vitepress\theme\style\blur.css */
-:root {
-
-    /* 首页下滑后导航透明 */
-    .VPNavBar:not(.has-sidebar):not(.home.top) {
-        background-color: rgba(255, 255, 255, 0);
-        backdrop-filter: blur(10px);
-    }
-
-    /* 搜索框透明 */
-    .DocSearch-Button {
-        background-color: rgba(255, 255, 255, 0);
-        backdrop-filter: blur(10px);
-    }
-
-    /* Feature透明 */
-    .VPFeature {
-        border: 1px solid transparent;
-        box-shadow: 0 10px 30px 0 rgb(0 0 0 / 15%);
-        background-color: transparent;
-    }
-
-    /* 文档页侧边栏顶部透明 */
-    .curtain {
-        background-color: rgba(255, 255, 255, 0);
-        backdrop-filter: blur(10px);
-    }
-
-    @media (min-width: 960px) {
-
-        /* 文档页导航中间透明 */
-        .VPNavBar:not(.home.top) .content-body {
-            background-color: rgba(255, 255, 255, 0);
-            backdrop-filter: blur(10px);
-        }
-    }
-
-    /* 移动端大纲栏透明 */
-    .VPLocalNav {
-        background-color: rgba(255, 255, 255, 0);
-        backdrop-filter: blur(10px);
-    }
-
-}
\ No newline at end of file
diff --git a/docs/.vitepress/theme/style/index.css b/docs/.vitepress/theme/style/index.css
deleted file mode 100644
index 04f7059bd5..0000000000
--- a/docs/.vitepress/theme/style/index.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/* index.css */
-@import './var.css';
-@import './blur.css';
-@import './vp-code.css';
-@import './sidebarIcon.css';
-@import './vp-code-title.css';
-@import './vp-code-group.css';
\ No newline at end of file
diff --git a/docs/.vitepress/theme/style/sidebarIcon.css b/docs/.vitepress/theme/style/sidebarIcon.css
deleted file mode 100644
index 1fe6247e54..0000000000
--- a/docs/.vitepress/theme/style/sidebarIcon.css
+++ /dev/null
@@ -1,63 +0,0 @@
-/* .vitepress/theme/style/sidebarIcon.css */
-
-/* 侧边栏缩放 */
-.group:has([role='button']) .VPSidebarItem.level-0 .items {
-  padding-left: 15px !important;
-  border-left: 1px solid var(--vp-c-divider);
-  border-radius: 2px;
-  transition: background-color 0.25s;
-}
-
-/* 侧边栏图标 */
-/* 选中所有 .VPSidebarItem 元素，排除带有 .is-link 类的 */
-#VPSidebarNav .VPSidebarItem:not(.is-link).collapsed >.item {
-    display: inline-flex;
-    align-items: center;  /* 垂直居中对齐图标和文本 */
-}
-
-/* 为所有不带 .is-link 的 .VPSidebarItem 折叠状态添加图标 */
-#VPSidebarNav .VPSidebarItem:not(.is-link).collapsed >.item::before {
-    content: '';
-    background-image: url('/icon/folder-close.svg'); /* 设置图标路径 */
-    width: 16px;
-    height: 16px;
-    display: inline-block;
-    vertical-align: middle;  /* 确保图标与文本垂直居中 */
-    background-size: cover;
-    margin-right: 4px;  /* 给图标和文本之间增加间距 */
-}
-
-#VPSidebarNav .VPSidebarItem:not(.is-link) >.item {
-    display: inline-flex;
-    align-items: center;  /* 垂直居中对齐图标和文本 */
-}
-
-/* 为所有不带 .is-link 的 .VPSidebarItem 非折叠状态添加图标 */
-#VPSidebarNav .VPSidebarItem:not(.is-link) >.item::before {
-    content: '';
-    background-image: url('/icon/folder-open.svg'); /* 设置图标路径 */
-    width: 16px;
-    height: 16px;
-    display: inline-block;
-    vertical-align: middle;  /* 确保图标与文本垂直居中 */
-    background-size: cover;
-    margin-right: 4px;  /* 给图标和文本之间增加间距 */
-}
-
-/* 选中带有 .is-link 的 .VPSidebarItem 的直接子元素 .item */
-#VPSidebarNav .VPSidebarItem.is-link > .item {
-    display: inline-flex;
-    align-items: center;  /* 垂直居中图标和文字 */
-}
-
-/* 为选中的 .item 添加图标 */
-#VPSidebarNav .VPSidebarItem.is-link > .item::before {
-    content: '';
-    background-image: url('/icon/file.svg'); /* 图标路径 */
-    width: 16px;
-    height: 16px;
-    display: inline-block;
-    vertical-align: middle;
-    background-size: cover;
-    margin-right: 4px;  /* 图标与文字间距 */
-}
\ No newline at end of file
diff --git a/docs/.vitepress/theme/style/var.css b/docs/.vitepress/theme/style/var.css
deleted file mode 100644
index d1c6382325..0000000000
--- a/docs/.vitepress/theme/style/var.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/* var.css */
-:root {
-  --vp-c-brand-1: #18794e;
-  --vp-c-brand-2: #299764;
-  --vp-c-brand-3: #30a46c;
-}
-
-.dark {
-  --vp-c-brand-1: #3dd68c;
-  --vp-c-brand-2: #30a46c;
-  --vp-c-brand-3: #298459;
-}
-/* 以前的vp-c-brand已弃用 */
-
-:root {
-  /* hero标题渐变色 */
-  --vp-home-hero-name-color: transparent;
-  --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe, #41d1ff);
-
-  /*hero logo背景渐变色 */
-  --vp-home-hero-image-background-image: linear-gradient(-45deg, #bd34fe 50%, #47caff 50%);
-  --vp-home-hero-image-filter: blur(40px);
-}
-
-/* 也可自行单独修改brand按钮 */
-/* :root {
-  --vp-button-brand-border: #F6CEEC;
-  --vp-button-brand-text: #F6CEEC;
-  --vp-button-brand-bg: #D939CD;
-
-  --vp-button-brand-hover-border: #F6CEEC;
-  --vp-button-brand-hover-text: #fff;
-  --vp-button-brand-hover-bg: #D939CD;
-
-  --vp-button-brand-active-border: #F6CEEC;
-} */
\ No newline at end of file
diff --git a/docs/.vitepress/theme/style/vp-code-group.css b/docs/.vitepress/theme/style/vp-code-group.css
deleted file mode 100644
index 4198147307..0000000000
--- a/docs/.vitepress/theme/style/vp-code-group.css
+++ /dev/null
@@ -1,64 +0,0 @@
-/* .vitepress/theme/style/vp-code-group.css */
-
-/* 代码组：tab间距 */
-.vp-code-group .tabs {
-  padding-top: 20px;
-}
-
-/* 代码组：添加样式及阴影 */
-.vp-code-group {
-  color: var(--vp-c-black-soft);
-  border-radius: 8px;
-  box-shadow: 0 10px 30px 0 rgb(0 0 0 / 40%);
-}
-
-/* 代码组：添加macOS风格的小圆点 */
-.vp-code-group .tabs::before {
-  content: ' ';
-  position: absolute;
-  top: 12px;
-  left: 12px;
-  height: 12px;
-  width: 12px;
-  background: #fc625d;
-  border-radius: 50%;
-  box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b;
-}
-
-
-/* 代码组：修正倒角、阴影、边距 */
-.vp-code-group div[class*="language-"] {
-  border-radius: 8px;
-  box-shadow: none;
-  padding-top: 0px;
-}
-
-/* 代码组：隐藏小圆点 */
-.vp-code-group div[class*="language-"]::before {
-  display: none;
-}
-
-/* 代码组：修正行号位置 */
-.vp-code-group .line-numbers-mode .line-numbers-wrapper {
-  padding-top: 20px;
-}
-
-/* 代码组：修正行号右侧竖线位置 */
-.vp-code-group .line-numbers-mode .line-numbers-wrapper::after {
-  top: 24px;
-  height: calc(100% - 45px);
-}
-
-
-
-/* 代码组（无行号）：修正倒角、阴影、边距 */
-.vp-code-group div[class*="language-"].vp-adaptive-theme {
-  border-radius: 8px;
-  box-shadow: none;
-  padding-top: 0px;
-}
-
-/* 代码组（无行号）：隐藏小圆点 */
-.vp-code-group div[class*="language-"].vp-adaptive-theme::before {
-  display: none;
-}
\ No newline at end of file
diff --git a/docs/.vitepress/theme/style/vp-code-title.css b/docs/.vitepress/theme/style/vp-code-title.css
deleted file mode 100644
index e00ac39c73..0000000000
--- a/docs/.vitepress/theme/style/vp-code-title.css
+++ /dev/null
@@ -1,68 +0,0 @@
-/* .vitepress/theme/style/vp-code-title.css */
-
-/* 整体容器样式（带阴影和圆角） */
-.vp-code-block-title {
-  background-color: var(--vp-code-block-bg);
-  margin-bottom: 20px;
-  border-radius: 8px;
-  box-shadow: 0 10px 30px 0 rgba(0, 0, 0, 0.4); /* 添加阴影 */
-  overflow: hidden;
-  position: relative; /* 确保小圆点定位 */
-}
-
-/* Mac 风格的小圆点，放在容器顶部 */
-.vp-code-block-title::before {
-  content: '';
-  position: absolute;
-  top: 12px; /* 圆点距离容器顶部的距离 */
-  left: 12px;
-  width: 12px;
-  height: 12px;
-  background-color: #fc625d; /* 红色圆点 */
-  border-radius: 50%;
-  box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b; /* 黄色和绿色圆点 */
-  z-index: 1;
-}
-
-/* 标题栏样式 */
-.vp-code-block-title .vp-code-block-title-bar {
-  color: var(--vp-c-text-1);
-  font-size: 14px;
-  font-weight: bold;
-}
-
-/* 代码块标题：修正倒角、阴影、边距 */
-.vp-code-block-title div[class*="language-"].vp-adaptive-theme.line-numbers-mode {
-  border-radius: 8px;
-  box-shadow: none;
-  padding-top: 0px;
-  margin-bottom: 0px;
-}
-
-/* 代码块标题：隐藏小圆点 */
-.vp-code-block-title div[class*="language-"].vp-adaptive-theme.line-numbers-mode::before {
-  display: none;
-}
-
-/* 代码块标题：修正行号位置 */
-.vp-code-block-title .line-numbers-mode .line-numbers-wrapper {
-  padding-top: 20px;
-}
-
-/* 代码块标题：修正行号右侧竖线位置 */
-.vp-code-block-title .line-numbers-mode .line-numbers-wrapper::after {
-  top: 20px;
-  height: calc(100% - 40px);
-}
-
-/* 代码块标题（无行号）：修正倒角、阴影、边距 */
-.vp-code-block-title div[class*="language-"].vp-adaptive-theme {
-  border-radius: 8px;
-  box-shadow: none;
-  padding-top: 0px;
-}
-
-/* 代码块标题（无行号）：隐藏小圆点 */
-.vp-code-block-title div[class*="language-"].vp-adaptive-theme::before {
-  display: none;
-}
\ No newline at end of file
diff --git a/docs/.vitepress/theme/style/vp-code.css b/docs/.vitepress/theme/style/vp-code.css
deleted file mode 100644
index 4a22c00c2e..0000000000
--- a/docs/.vitepress/theme/style/vp-code.css
+++ /dev/null
@@ -1,42 +0,0 @@
-/* .vitepress/theme/style/vp-code.css */
-
-/* 代码块：增加留空边距 增加阴影 */
-.vp-doc div[class*=language-] {
-    box-shadow: 0 10px 30px 0 rgb(0 0 0 / 40%);
-    padding-top: 20px;
-}
-
-/* 代码块：添加macOS风格的小圆点 */
-.vp-doc div[class*=language-]::before {
-    content: "";
-    display: block;
-    position: absolute;
-    top: 12px;
-    left: 12px;
-    width: 12px;
-    height: 12px;
-    background-color: #ff5f56;
-    border-radius: 50%;
-    box-shadow: 20px 0 0 #ffbd2e, 40px 0 0 #27c93f;
-    z-index: 1;
-}
-
-/* 代码块：下移行号 隐藏右侧竖线 */
-.vp-doc .line-numbers-wrapper {
-    padding-top: 40px;
-    border-right: none;
-}
-
-/* 代码块：重建行号右侧竖线 */
-.vp-doc .line-numbers-wrapper::after {
-    content: "";
-    position: absolute;
-    top: 40px;
-    right: 0;
-    border-right: 1px solid var(--vp-code-block-divider-color);
-    height: calc(100% - 60px);
-}
-
-.vp-doc div[class*='language-'].line-numbers-mode {
-    margin-bottom: 20px;
-}
\ No newline at end of file
diff --git a/docs/src/ads.md b/docs/src/ads.md
deleted file mode 100644
index 256b8ca3b6..0000000000
--- a/docs/src/ads.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-icon: fa-solid fa-lightbulb
-publish: true
-isOriginal: true
----
-# 薅羊毛
-
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## 一、超大流量卡
-
-四大运营商官方产品，超低资费，超大流量。一张流量卡，一张电话卡，再也不用担心流量没了被扣超多话费。
-
->   🗼 办理地址：https://ym.ksjhaoka.com/?s=Ltxbbs9W330131
-
-## 二、外卖红包
-
-1.   **饿了么**
-
-微信扫码即可领取随机红包，点外卖之前不妨扫一扫，能省不少哦~
-
-<center>
-<img src="/ads/ele.jpg" width="50%"/>
-</center>
-
-2.   **美团**
-
-微信/美团扫码下单更优惠哦~
-
-<center>
-<img src="/ads/meituan.png" width="300"/>
-</center>
\ No newline at end of file
diff --git a/docs/src/guide.md b/docs/src/guide.md
deleted file mode 100644
index e6b124982f..0000000000
--- a/docs/src/guide.md
+++ /dev/null
@@ -1,125 +0,0 @@
----
-icon: fa-solid fa-lightbulb
-index: false
-publish: false
-isOriginal: true
----
-# JavaPark 编程知识公园
-
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以 **扫码或者后台添加小编微信备注入群**。进群后 **优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## 一、Java 图鉴
-
-### Java 基础
-
-1.  [Java 基础：简介](java-tutorial/javase/20220701-intro-to-java.md)
-2.  [Java 基础：开发环境搭建及入门程序](java-tutorial/javase/20220702-jdk-install-and-hello-world.md)
-3.  [Java 基础：利用 IDEA 进行 Java 开发](java-tutorial/javase/20220703-learn-java-with-idea.md)
-4.  [Java 基础：变量与数据类型](java-tutorial/javase/20220704-variable-and-datatype.md)
-5.  [Java 基础：常用进制转换](java-tutorial/javase/20220705-binary-convert.md)
-6.  [Java 基础：操作符](java-tutorial/javase/20220706-operator.md)
-7.  [Java 基础：控制流程](java-tutorial/javase/20220707-control-process.md)
-8.  [Java 基础：流程控制知识大闯关](java-tutorial/javase/20221127-loop-in-action.md)
-9.  [Java 基础：数组操作的奇技淫巧](java-tutorial/javase/20220708-how-to-operate-array.md)
-10. [Java 基础：面向对象的 3、5 知识点](java-tutorial/javase/20220709-oop-1.md)
-11. [Java 基础：类的相关知识](java-tutorial/javase/20220710-oop-2.md)
-12. [Java 基础：包和 jar 文件的创建](java-tutorial/javase/20220711-oop-3.md)
-13. [Java 基础：成员变量、实例变量、静态变量、局部变量？](java-tutorial/javase/20220712-all-kinds-of-variable.md)
-14. [Java 基础：String 详解](java-tutorial/javase/20220713-string.md)
-15. [Java 基础：ArrayList 详解](java-tutorial/javase/20220714-arraylist.md)
-16. [Java 基础：输入输出流](java-tutorial/javase/20220715-in-out-stream.md)
-17. [Java 基础：反射机制详解](java-tutorial/javase/20220716-reflection.md)
-18. [Java 基础：深入浅出 Java 注解](java-tutorial/javase/20220721-annotations.md)
-19. [Java 基础：JDBC 入门指南](java-tutorial/javase/20220717-jdbc-introduction.md)
-20. [Java 基础：是时候拥抱 Junit 单元测试了！](java-tutorial/javase/20220718-test-with-junit.md)
-21. [Java 基础：Lombok 安装及使用指南](java-tutorial/javase/20220719-lombok-install-and-usage.md)
-22. [Java 基础：Fastjson V2 简单使用手册](java-tutorial/javase/20220720-fastjson2-quickstart.md)
-23. [Java 基础：static 和 final 小课堂](java-tutorial/javase/20221203-oop-advance.md)
-24. [Java 基础：抽象、接口和内部类](java-tutorial/javase/20221211-abstract.md)
-25. [Java 基础：Mockito + JUnit 单元测试实例](java-tutorial/javase/20220722-mockito.md)
-
-### MySQL
-
-### Java Web
-
-### 实战训练
-
-## 二、求职面试
-
-### 知识点
-
-### 面试技巧
-
-## 三、框架｜中间件
-
-### Maven
-
-### Spring
-
-### Spring MVC
-
-### MyBatis
-
-### MyBatis-Plus
-
-### Spring Boot
-
-### Spring Cloud
-
-### Nginx
-
-### Redis
-
-## 四、计算机知识
-
-### 组成原理
-
-### 操作系统
-
-### 计算机网络
-
-### 数据结构与算法
-
-## 五、基础教程
-
-### IDEA 教程
-
-### 博客搭建
-
-### 效率工具
-
-### 软件设计师
-
-## 六、编程语言
-
-### 前端三剑客
-
-### Vue
-
-### Python
-
-### C 语言
-
-### C++
-
-## 七、你问我答
-
-## 八、关于
-
-### 关于自己
-
-### 关于学习
-
-### 关于工作
\ No newline at end of file
diff --git a/docs/src/index.md b/docs/src/index.md
deleted file mode 100644
index 8fa7e2d432..0000000000
--- a/docs/src/index.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-# https://vitepress.dev/reference/default-theme-home-page
-publish: true
-layout: home
-
-hero:
-  name: "村雨遥"
-  text: "JavaPark"
-  tagline: 汇聚 Java 学习保姆级教程、求职面试、计算机基础、编程语言、效率工具等诸多内容～
-  image:
-    # src: contact/contact.png # 
-    src: logo.png
-  actions:
-    - theme: brand
-      text: 本站导航
-      link: /guide
-    # - theme: alt
-    #   text: 创刊寄语
-    #   link: /guide
-    - theme: alt
-      text: Github
-      link: https://github.com/cunyu1943/JavaPark
-
-features:
-  - title: weekly 
-    details: 好物周刊
-    icon: 
-      src: /icon/weekly.svg
-    theme: brand
-    link: https://github.com/cunyu1943/weekly
-    linkText: 前往 Star
-  - title: ebooks
-    details: 编程学习电子书
-    icon: 
-      src: /icon/book.svg
-    link: https://github.com/cunyu1943/ebooks
-    linkText: 获取下载链接
-  - title: 语雀
-    details: 我的数字花园，移动端内容合辑
-    icon: 
-      src: /icon/yuque.svg
-    link: https://yuque.com/cunyu1943
-    linkText: 逛逛
----
-
-<Home />
-
diff --git a/docs/src/java-tutorial/javase/20230920-cs-hard-soft.md b/docs/src/java-tutorial/javase/20230920-cs-hard-soft.md
deleted file mode 100644
index 91c7d9023d..0000000000
--- a/docs/src/java-tutorial/javase/20230920-cs-hard-soft.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-isOriginal: true
-index: false
-category: Java 基础系列
-tag:
-    - Java
-    - 计算机
-date: 2023-09-25
----
-
-# 计算机软硬件
-
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## 一、计算机组成
-
-
-
-
-## ⏳ 联系
-
-想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
-
-扫一扫，探索另一个全新的世界。
-
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
diff --git a/docs/src/public/ads/ele.jpg b/docs/src/public/ads/ele.jpg
deleted file mode 100644
index 9931a3a8f2..0000000000
Binary files a/docs/src/public/ads/ele.jpg and /dev/null differ
diff --git a/docs/src/public/ads/meituan.png b/docs/src/public/ads/meituan.png
deleted file mode 100644
index 9bbaefba84..0000000000
Binary files a/docs/src/public/ads/meituan.png and /dev/null differ
diff --git a/docs/src/public/award/aliRed.jpg b/docs/src/public/award/aliRed.jpg
deleted file mode 100644
index f42d78d578..0000000000
Binary files a/docs/src/public/award/aliRed.jpg and /dev/null differ
diff --git a/docs/src/public/award/donate.jpg b/docs/src/public/award/donate.jpg
deleted file mode 100644
index c65276e3d6..0000000000
Binary files a/docs/src/public/award/donate.jpg and /dev/null differ
diff --git a/docs/src/public/contact/contact.png b/docs/src/public/contact/contact.png
deleted file mode 100644
index c509d2e56d..0000000000
Binary files a/docs/src/public/contact/contact.png and /dev/null differ
diff --git a/docs/src/public/contact/wechat.jpg b/docs/src/public/contact/wechat.jpg
deleted file mode 100644
index ece2468c1b..0000000000
Binary files a/docs/src/public/contact/wechat.jpg and /dev/null differ
diff --git a/docs/src/public/contact/wechatpublic.jpg b/docs/src/public/contact/wechatpublic.jpg
deleted file mode 100644
index 86be97701d..0000000000
Binary files a/docs/src/public/contact/wechatpublic.jpg and /dev/null differ
diff --git a/docs/src/public/contact/wxgroup.jpg b/docs/src/public/contact/wxgroup.jpg
deleted file mode 100644
index 82b3857ca9..0000000000
Binary files a/docs/src/public/contact/wxgroup.jpg and /dev/null differ
diff --git a/docs/src/public/icon/book.svg b/docs/src/public/icon/book.svg
deleted file mode 100644
index 69d8e4a584..0000000000
--- a/docs/src/public/icon/book.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1739283300867" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4261" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M16 192h992.001v704h-992z" fill="#FDBF5E" p-id="4262"></path><path d="M1008 913.6H16c-9.6 0-16-6.4-16-16V192c0-9.6 6.4-16 16-16h992.001c9.601 0 16.001 6.4 16.001 16v704c-0.002 9.6-6.402 17.6-16.003 17.6zM32 881.6h960v-673.6H32v673.6z" fill="#193651" p-id="4263"></path><path d="M584 126.4c-40 0-71.999 48-71.999 88v681.601c0-40 32-88 72-88H931.2V126.4H584z" fill="#FFFFFF" p-id="4264"></path><path d="M511.999 913.6c-9.601 0-16-6.4-16-16V216c0-48.001 38.399-104 88-104h347.199c9.6 0 16 6.4 16 16v681.601c0 9.601-6.4 16.001-16 16.001H584c-30.4 0-56.001 40-56.001 72 0 7.998-6.4 15.999-16.001 15.999z m72.002-771.2c-30.4 0-56.001 40-56.001 71.999v604.799C542.4 803.199 563.2 792 584 792h331.201V142.4h-331.2z" fill="#193651" p-id="4265"></path><path d="M576 200c0-4.799 3.201-8 8-8h283.2v553.6H576V200z" fill="#E1E6E9" p-id="4266"></path><path d="M440 126.4c40 0 71.999 48 71.999 88v681.601c0-40-32-88-72-88H92.8V126.4H440z" fill="#FFFFFF" p-id="4267"></path><path d="M511.999 913.6c-9.601 0-16-6.4-16-16 0-32-27.201-72-56.002-72H92.8c-9.6 0-16-6.4-16-16V126.4c0-9.6 6.4-16 16-16H440c49.598 0 88 56 88 103.999v681.6c0 9.601-6.4 17.602-16.001 17.602zM108.801 792h331.2c20.8 0 41.6 11.2 56.001 27.2V216c0-32-27.2-72-56-72H108.8v648z" fill="#193651" p-id="4268"></path><path d="M448 745.6H156.8V190.4H440c4.799 0 8 3.2 8 8v547.2z" fill="#E1E6E9" p-id="4269"></path><path d="M448 377.6V200c0-4.799-3.201-8-8-8H156.8v185.6H448z" fill="#2EA2DB" p-id="4270"></path><path d="M270.4 241.6v84.8l65.6-41.6z" fill="#FFFFFF" p-id="4271"></path><path d="M209.6 633.6h32v32h-32z m76.8 0h32v32h-32z m78.4 0h32v32h-32z m262.4-374.4h188.799v32h-188.8z m0 92.8h188.799v32h-188.8z m0 94.4h188.799v31.999h-188.8z m0 92.8h188.799v31.999h-188.8z m0 94.4h188.799v32h-188.8zM207.999 446.4h188.8v31.999h-188.8z m0 92.8h188.8v31.999h-188.8z" fill="#193651" p-id="4272"></path></svg>
\ No newline at end of file
diff --git a/docs/src/public/icon/file.svg b/docs/src/public/icon/file.svg
deleted file mode 100644
index 7b7a46c752..0000000000
--- a/docs/src/public/icon/file.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1750830245392" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17793" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><path d="M623.104 76.8v159.232c0 30.72 25.088 55.808 55.808 55.808h169.472l-225.28-215.04z" fill="#297AFF" p-id="17794"></path><path d="M848.384 317.44h-189.952c-34.304 0-62.464-28.16-62.464-62.464V76.8h-358.4c-34.304 0-62.464 28.16-62.464 62.464v745.472c0 34.304 28.16 62.464 62.464 62.464h548.864c34.304 0 62.464-28.16 62.464-62.464L848.384 317.44z m-578.56 101.376h271.872c18.432 0 33.792 15.36 33.792 33.792s-15.36 33.792-33.792 33.792H269.824c-18.432 0-33.792-15.36-33.792-33.792s15.36-33.792 33.792-33.792z m422.4 382.464H269.824c-18.432 0-33.792-15.36-33.792-33.792 0-18.432 15.36-33.792 33.792-33.792h422.4c18.432 0 33.792 15.36 33.792 33.792 0 18.944-14.848 33.792-33.792 33.792z m16.384-157.184H269.824c-18.432 0-33.792-15.36-33.792-33.792s15.36-33.792 33.792-33.792h438.784c18.432 0 33.792 15.36 33.792 33.792s-14.848 33.792-33.792 33.792z" fill="#297AFF" p-id="17795"></path></svg>
\ No newline at end of file
diff --git a/docs/src/public/icon/folder-close.svg b/docs/src/public/icon/folder-close.svg
deleted file mode 100644
index dade3195ff..0000000000
--- a/docs/src/public/icon/folder-close.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1750828079285" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5188" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><path d="M848.8576 199.1936H415.7568c0-26.5728-21.5424-48.128-48.128-48.128H175.1424c-26.5728 0-48.128 21.5424-48.128 48.128V343.5648c0 26.5984 21.5424 48.1408 48.128 48.1408h673.728c26.5728 0 48.128-21.5424 48.128-48.1408v-96.2432c-0.0128-26.5856-21.5552-48.128-48.1408-48.128z" fill="#CCA352" p-id="5189"></path><path d="M800.7424 247.3088H223.2576c-26.5728 0-48.128 21.5424-48.128 48.128v48.128c0 26.5984 21.5424 48.1408 48.128 48.1408h577.472c26.5728 0 48.128-21.5424 48.128-48.1408v-48.128c0-26.5728-21.5424-48.128-48.1152-48.128z" fill="#FFFFFF" p-id="5190"></path><path d="M848.8576 295.4368H175.1424c-26.5728 0-48.128 21.5424-48.128 48.128v481.2544c0 26.5472 21.5424 48.128 48.128 48.128h673.728c26.5728 0 48.128-21.568 48.128-48.128V343.552c-0.0128-26.5728-21.5552-48.1152-48.1408-48.1152z" fill="#FFCC66" p-id="5191"></path></svg>
\ No newline at end of file
diff --git a/docs/src/public/icon/folder-open.svg b/docs/src/public/icon/folder-open.svg
deleted file mode 100644
index 85fa191ff5..0000000000
--- a/docs/src/public/icon/folder-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1750839900379" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8884" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><path d="M830.5664 410.0096H326.3488c-43.1104 0-80.9984 28.3648-93.184 69.7344l-71.4752 242.8928c-2.6624 8.9088-3.9936 18.1248-3.9936 27.4432 0 27.9552 11.8784 53.248 30.8224 70.9632-44.4416-8.9088-77.824-48.2304-77.824-95.232 0-9.4208 1.3312-18.7392 3.9936-27.7504l78.7456-264.4992c12.288-41.1648 50.176-69.4272 93.0816-69.4272h548.864c-6.7584-47.0016-47.2064-83.2512-96.1536-83.2512H498.4832s-28.0576-33.4848-84.1728-100.352H205.7216c-53.6576 0-97.1776 43.52-97.1776 97.1776v448c0 47.9232 34.7136 87.7568 80.384 95.744 17.3056 15.9744 40.448 25.7024 65.8432 25.7024h491.008c41.3696 0 78.1312-26.112 91.7504-65.1264l84.7872-242.8928c3.584-10.24 5.4272-21.0944 5.4272-32.0512 0-53.5552-43.52-97.0752-97.1776-97.0752z" fill="#F2B224" p-id="8885"></path></svg>
\ No newline at end of file
diff --git a/docs/src/public/icon/gratewall.svg b/docs/src/public/icon/gratewall.svg
deleted file mode 100644
index 007faf5421..0000000000
--- a/docs/src/public/icon/gratewall.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1753619217997" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1624" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M988.69 344.276H723.862l-194.206 105.932H105.932l-77.178 30.87a17.66 17.66 0 0 0-11.098 16.392v199.91h988.69V361.932a17.656 17.656 0 0 0-17.656-17.656z" fill="#E6C8A0" p-id="1625"></path><path d="M529.978 485.518H102.31l-84.654 36.28v38.414l91.898-39.384h419.076a88.272 88.272 0 0 0 42.27-10.778l174.446-95.152h260.998v-35.31H737.69l-182.35 99.464a52.98 52.98 0 0 1-25.362 6.466z" fill="#D2B48C" p-id="1626"></path><path d="M105.932 397.242h211.862v282.482H105.932z" fill="#FFE1B3" p-id="1627"></path><path d="M105.932 397.242h211.862v52.966H105.932zM105.932 538.482h211.862v52.966H105.932z" fill="#E6C8A0" p-id="1628"></path><path d="M317.794 414.896H105.932a17.658 17.658 0 0 1-17.656-17.656v-17.656a17.658 17.658 0 0 1 17.656-17.656h211.862a17.658 17.658 0 0 1 17.656 17.656v17.656a17.658 17.658 0 0 1-17.656 17.656zM317.794 556.138H105.932a17.658 17.658 0 0 1 0-35.312h211.862a17.656 17.656 0 0 1 0 35.312z" fill="#FFEBBE" p-id="1629"></path><path d="M211.862 503.172a17.646 17.646 0 0 1-17.656-17.656v-17.656a17.646 17.646 0 0 1 17.656-17.656 17.646 17.646 0 0 1 17.656 17.656v17.656a17.646 17.646 0 0 1-17.656 17.656zM264.828 503.172a17.646 17.646 0 0 1-17.656-17.656v-17.656a17.646 17.646 0 0 1 17.656-17.656 17.646 17.646 0 0 1 17.656 17.656v17.656a17.648 17.648 0 0 1-17.656 17.656zM158.896 503.172a17.646 17.646 0 0 1-17.656-17.656v-17.656a17.646 17.646 0 0 1 17.656-17.656 17.646 17.646 0 0 1 17.656 17.656v17.656a17.644 17.644 0 0 1-17.656 17.656z" fill="#E6C8A0" p-id="1630"></path><path d="M723.862 291.31h211.862v282.482H723.862z" fill="#FFE1B3" p-id="1631"></path><path d="M723.862 291.31h211.862v52.966H723.862zM723.862 432.552h211.862v52.966H723.862z" fill="#E6C8A0" p-id="1632"></path><path d="M935.724 308.966H723.862a17.658 17.658 0 0 1-17.656-17.656v-17.656a17.658 17.658 0 0 1 17.656-17.656h211.862a17.658 17.658 0 0 1 17.656 17.656v17.656a17.656 17.656 0 0 1-17.656 17.656z" fill="#FFEBBE" p-id="1633"></path><path d="M829.794 397.242a17.646 17.646 0 0 1-17.656-17.656v-17.656a17.646 17.646 0 0 1 17.656-17.656 17.646 17.646 0 0 1 17.656 17.656v17.656a17.648 17.648 0 0 1-17.656 17.656zM882.758 397.242a17.646 17.646 0 0 1-17.656-17.656v-17.656a17.646 17.646 0 0 1 17.656-17.656 17.646 17.646 0 0 1 17.656 17.656v17.656a17.644 17.644 0 0 1-17.656 17.656zM776.828 397.242a17.646 17.646 0 0 1-17.656-17.656v-17.656c0-9.758 7.896-17.656 17.656-17.656s17.656 7.896 17.656 17.656v17.656a17.648 17.648 0 0 1-17.656 17.656z" fill="#E6C8A0" p-id="1634"></path><path d="M935.724 450.206H723.862a17.658 17.658 0 0 1 0-35.312h211.862a17.658 17.658 0 0 1 17.656 17.656 17.654 17.654 0 0 1-17.656 17.656z" fill="#FFEBBE" p-id="1635"></path><path d="M1006.344 467.862h-123.586l-317.792 105.932H317.794L17.656 679.724v52.966h988.688z" fill="#8CE16E" p-id="1636"></path><path d="M406.068 732.69h70.622l-103.846-158.896h-39.482z" fill="#9BF57D" p-id="1637"></path><path d="M1006.344 732.69H980.94a17.652 17.652 0 0 1-17.128-13.374l-62.862-251.454h-18.192l-16.79 5.596 18.548 74.232-146.07 178.524a17.652 17.652 0 0 1-13.666 6.474h-98.286a17.656 17.656 0 0 1-16.852-12.39l-45.782-146.506h-34.206v141.242a17.658 17.658 0 0 1-17.656 17.656h-167.182a17.652 17.652 0 0 1-17.128-13.374l-34.234-136.934-189.096 66.738-23.832 71.496a17.654 17.654 0 0 1-16.748 12.072H17.656A17.646 17.646 0 0 0 0 750.344 17.644 17.644 0 0 0 17.656 768h988.69a17.646 17.646 0 0 0 17.656-17.656 17.648 17.648 0 0 0-17.658-17.654z" fill="#7DC86E" p-id="1638"></path><path d="M900.95 467.862h34.774l70.62 176.552v88.276H980.94a17.652 17.652 0 0 1-17.128-13.374l-62.862-251.454z" fill="#9BF57D" p-id="1639"></path></svg>
\ No newline at end of file
diff --git a/docs/src/public/icon/java.svg b/docs/src/public/icon/java.svg
deleted file mode 100644
index 0baa2cbfc4..0000000000
--- a/docs/src/public/icon/java.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1739283267399" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1492" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M725.952 170.048c-29.248 20.096-56.704 38.4-87.808 62.208-23.744 18.24-65.792 45.696-67.648 78.592-3.648 53.056 78.656 102.4 34.752 170.048-16.448 25.6-43.904 36.608-78.592 53.056-3.712-7.296 9.088-14.656 14.592-21.952 54.848-78.656-56.704-104.256-42.048-201.152 14.656-96.896 124.352-128 226.752-140.8z" fill="#FF1515" p-id="1493"></path><path d="M563.2 0c16.448 16.448 29.248 47.552 29.248 78.656 0 96.896-102.4 151.744-151.744 215.744-11.008 14.656-25.6 36.544-25.6 60.352 0 52.992 54.848 111.552 74.944 153.6C457.152 486.4 415.104 455.296 384 420.48 354.752 384 323.648 327.296 351.104 276.096c40.192-74.944 162.688-120.64 206.592-201.152 11.008-20.096 20.096-51.2 5.504-74.944z" fill="#FF1515" p-id="1494"></path><path d="M353.6 500.544c9.728-2.752 19.072-5.376 26.752-8.64a124.544 124.544 0 0 0-28.288 0.832c-4.672 0.512-8.768 0.96-11.968 0.96l-10.048 0.768c-50.56 3.84-150.72 11.328-149.056 52.288 0 36.544 93.312 45.696 133.504 49.344 120.704 7.36 296.256-3.648 352.896-45.696 9.152-5.504 25.6-16.448 21.952-23.744-89.6 16.448-219.392 25.6-325.44 20.096-25.6 0-53.056 0-71.36-14.656 12.8-17.92 38.208-25.088 61.056-31.552zM327.04 609.856c3.328-3.072 5.888-5.504 0.256-6.4-21.952 5.44-71.296 18.24-69.504 45.696 1.856 21.952 49.408 36.544 76.8 42.048 107.904 21.952 254.208 5.504 329.152-29.248-10.368-1.728-19.52-9.216-28.8-16.832-10.368-8.384-20.864-16.96-33.344-17.92-7.296-1.216-15.36 1.6-24.32 4.736a162.56 162.56 0 0 1-14.08 4.416c-65.856 12.8-199.296 25.6-241.408-16.448-1.728-3.584 2.112-7.104 5.248-10.048zM360.192 711.68c2.112-2.24 4.48-4.736 0-5.824l-10.752 2.816c-29.568 7.552-58.112 14.912-53.248 55.68 78.656 60.352 270.656 40.192 351.104-7.296-10.624-2.496-18.688-10.048-27.008-17.92-10.24-9.6-20.8-19.52-36.992-20.48-7.808-1.28-15.68 2.048-23.488 5.376-3.2 1.344-6.272 2.688-9.408 3.712-56.704 12.8-170.048 27.456-192-12.8-0.704-0.64 0.512-1.92 1.792-3.328z" fill="#2365C4" p-id="1495"></path><path d="M264.064 783.36c9.728-0.576 18.56-1.088 24.832-2.56-42.048-36.544-177.344-20.096-179.2 36.544-1.792 32.96 40.256 56.704 75.008 67.712 107.84 36.544 279.744 38.4 418.752 23.744 64-7.296 221.248-34.752 213.888-104.256-3.648-18.24-20.096-31.04-38.4-32.896 14.656 64-102.4 84.096-164.544 91.456-135.296 14.592-298.048 10.944-378.496-20.16-14.656-5.44-36.608-20.096-34.752-32.896 2.688-22.848 36.032-24.96 62.912-26.624z" fill="#2365C4" p-id="1496"></path><path d="M499.2 987.456c-93.248-11.008-182.848-23.808-257.856-56.704 197.504 47.552 486.4 43.904 625.408-56.704 1.984-1.472 4.032-3.392 6.016-5.376 5.44-5.12 11.136-10.56 17.728-9.216-30.912 92.8-140.224 108.8-245.184 124.032-12.8 1.92-25.6 3.776-38.208 5.76 0-1.792-107.904-1.792-107.904-1.792zM852.096 565.056c-1.792-75.008-89.6-91.456-140.8-47.552 40.256-9.152 75.008 9.152 82.304 36.544 11.968 58.304-42.048 101.952-79.168 131.904-8.32 6.72-15.744 12.672-21.376 18.048 69.44-3.648 162.688-53.056 159.04-138.944z" fill="#2365C4" p-id="1497"></path></svg>
\ No newline at end of file
diff --git a/docs/src/public/icon/sim.svg b/docs/src/public/icon/sim.svg
deleted file mode 100644
index dbdb626189..0000000000
--- a/docs/src/public/icon/sim.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1736295624931" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8080" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M819.32913 786.401009L799.959647 769.614124c9.039092-10.330391 16.786885-20.660782 24.534678-30.991173l20.660782 15.495586c-7.747793 10.330391-16.786885 21.952081-25.825977 32.282472zM864.52459 725.709962l-21.952081-12.912988c7.747793-11.62169 14.204288-24.534678 19.369483-37.447668l23.24338 10.330391c-6.456494 14.204288-12.912989 27.117276-20.660782 40.030265zM896.807062 658.562421l-24.534679-9.039092c5.165195-11.62169 9.039092-24.534678 12.912989-37.447667l24.534678 6.456494c-3.873897 12.912989-7.747793 27.117276-12.912988 40.030265zM916.176545 591.41488l-25.825978-5.165195c24.534678-121.382093-6.456494-244.055485-86.517023-338.320303l19.369482-16.786885c86.517024 100.721311 120.090794 232.433796 92.973519 360.272383zM208.544767 262.13367L187.883985 245.346784c10.330391-12.912989 21.952081-27.117276 33.57377-38.738966l18.078184 18.078185c-10.330391 11.62169-20.660782 24.534678-30.991172 37.447667zM168.514502 324.116015l-23.24338-11.62169c6.456494-14.204288 15.495586-27.117276 23.24338-40.030264l21.952081 14.204287c-7.747793 11.62169-15.495586 24.534678-21.952081 37.447667zM142.688525 386.098361l-24.534679-7.747794c3.873897-12.912989 9.039092-27.117276 14.204288-40.030264l24.534678 10.330391c-5.165195 12.912989-10.330391 25.825977-14.204287 37.447667zM187.883985 765.740227c-80.06053-102.01261-107.177806-233.725095-76.186633-360.272383l24.534678 6.456494c-29.699874 118.799496-2.582598 241.472888 71.021438 337.029004l-19.369483 16.786885z" fill="#BCC0C4" p-id="8081"></path><path d="M505.543506 517.810845m-303.455234 0a303.455233 303.455233 0 1 0 606.910467 0 303.455233 303.455233 0 1 0-606.910467 0Z" fill="#E9EAEB" p-id="8082"></path><path d="M820.620429 690.844893l-21.952081-12.912989c59.399748-100.721311 59.399748-225.977301 2.582598-326.698613l21.95208-12.912988c61.982346 108.469105 60.691047 244.055485-2.582597 352.52459zM194.340479 659.85372c-41.321564-90.390921-42.612863-194.986129-3.873896-286.668348l23.243379 10.330391c-36.156368 85.225725-34.865069 182.07314 3.873897 266.007566l-23.24338 10.330391z" fill="#BCC0C4" p-id="8083"></path><path d="M279.566204 329.281211v480.363177c0 14.204288 11.62169 25.825977 25.825978 25.825978h413.215636c14.204288 0 25.825977-11.62169 25.825978-25.825978v-593.997478c0-14.204288-11.62169-25.825977-25.825978-25.825977H419.026482c-6.456494 0-12.912989 2.582598-18.078184 7.747793l-113.634301 113.6343c-5.165195 3.873897-7.747793 10.330391-7.747793 18.078185z" fill="#A3D4FF" p-id="8084"></path><path d="M718.607818 847.092055h-413.215636c-21.952081 0-38.738966-16.786885-38.738966-38.738965V329.281211c0-10.330391 3.873897-20.660782 11.621689-27.117277l113.634301-113.6343c7.747793-7.747793 16.786885-11.62169 27.117276-11.621689h299.581336c21.952081 0 38.738966 16.786885 38.738966 38.738965v593.997478c0 20.660782-16.786885 37.447667-38.738966 37.447667z m-299.581336-645.649432c-3.873897 0-6.456494 1.291299-9.039092 3.873897L296.35309 320.242119c-2.582598 2.582598-3.873897 5.165195-3.873897 9.039092v480.363177c0 7.747793 5.165195 12.912989 12.912989 12.912989h413.215636c7.747793 0 12.912989-5.165195 12.912989-12.912989v-593.997478c0-7.747793-5.165195-12.912989-12.912989-12.912988H419.026482z" fill="#2A5082" p-id="8085"></path><path d="M628.216898 730.875158h-232.433796c-14.204288 0-25.825977-11.62169-25.825977-25.825978v-335.737705c0-14.204288 11.62169-25.825977 25.825977-25.825977h232.433796c14.204288 0 25.825977 11.62169 25.825977 25.825977v335.737705c0 14.204288-11.62169 25.825977-25.825977 25.825978z" fill="#FFFFFF" p-id="8086"></path><path d="M628.216898 743.788146h-232.433796c-21.952081 0-38.738966-16.786885-38.738966-38.738966v-335.737705c0-21.952081 16.786885-38.738966 38.738966-38.738966h232.433796c21.952081 0 38.738966 16.786885 38.738966 38.738966v335.737705c0 21.952081-16.786885 38.738966-38.738966 38.738966z m-232.433796-387.389659c-7.747793 0-12.912989 5.165195-12.912989 12.912988v335.737705c0 7.747793 5.165195 12.912989 12.912989 12.912989h232.433796c7.747793 0 12.912989-5.165195 12.912989-12.912989v-335.737705c0-7.747793-5.165195-12.912989-12.912989-12.912988h-232.433796z" fill="#2A5082" p-id="8087"></path><path d="M447.435057 343.485498h25.825977v129.129887h-25.825977zM537.825977 343.485498h25.825978v129.129887h-25.825978zM537.825977 601.745271h25.825978v129.129887h-25.825978z" fill="#2A5082" p-id="8088"></path><path d="M369.957125 459.702396h284.08575v25.825977h-284.08575zM473.261034 730.875158h-25.825977v-142.042876h206.607818v25.825978h-180.781841z" fill="#2A5082" p-id="8089"></path></svg>
\ No newline at end of file
diff --git a/docs/src/public/icon/weekly.svg b/docs/src/public/icon/weekly.svg
deleted file mode 100644
index a423988b10..0000000000
--- a/docs/src/public/icon/weekly.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1741617299940" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9531" width="256" height="256" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M275.3536 334.518044v581.586489l83.740444-50.926933 83.740445 50.926933 83.740444-50.926933 83.729067 50.926933 83.751822-50.926933 83.729067 50.926933 83.729067-50.926933 83.751822 50.926933V202.683733c0-47.320178-38.286222-85.686044-85.538134-85.686044H189.838222" fill="#E6E6E6" p-id="9532"></path><path d="M104.311467 549.137067h171.042133v-354.076445c0-43.1104-34.872889-78.051556-77.903644-78.051555h-15.246223c-43.019378 0-77.903644 34.941156-77.903644 78.051555v354.076445h0.011378z" fill="#CCCCCC" p-id="9533"></path><path d="M382.327467 266.023822h185.252977v250.538667H382.327467z" fill="#47A7DD" p-id="9534"></path><path d="M642.093511 579.185778H856.291556v125.257955H642.093511z" fill="#FFCA6C" p-id="9535"></path><path d="M945.288533 635.8016a15.587556 15.587556 0 0 0 15.5648-15.598933V202.683733c0-55.853511-45.340444-101.284978-101.080177-101.284977H189.838222c-55.739733 0-101.091556 45.442844-101.091555 101.284977v248.570311a15.587556 15.587556 0 0 0 15.5648 15.598934 15.587556 15.587556 0 0 0 15.5648-15.598934V202.683733c0-38.650311 31.379911-70.087111 69.950577-70.087111s69.950578 31.448178 69.950578 70.087111V533.526756H119.887644v-25.201778a15.587556 15.587556 0 0 0-15.5648-15.598934A15.610311 15.610311 0 0 0 88.746667 508.336356v40.800711a15.587556 15.587556 0 0 0 15.5648 15.598933h155.477333v351.368533a15.587556 15.587556 0 0 0 23.643022 13.334756l75.662222-46.011733 75.662223 46.011733c4.960711 3.015111 11.184356 3.015111 16.156444 0l75.662222-46.011733 75.662223 46.011733c4.960711 3.015111 11.184356 3.015111 16.156444 0l75.662222-46.011733 75.662222 46.011733c4.960711 3.015111 11.172978 3.015111 16.156445 0l75.662222-46.011733 75.650845 46.011733a15.496533 15.496533 0 0 0 15.724088 0.250311 15.587556 15.587556 0 0 0 7.918934-13.585067v-238.819555c0-8.612978-6.9632-15.598933-15.5648-15.598934s-15.5648 6.985956-15.5648 15.598934v211.114666L869.603556 851.854222a15.507911 15.507911 0 0 0-16.156445 0l-75.650844 46.011734-75.662223-46.011734a15.507911 15.507911 0 0 0-16.156444 0l-75.662222 46.011734-75.650845-46.011734a15.507911 15.507911 0 0 0-16.156444 0l-75.6736 46.011734-75.662222-46.011734a15.485156 15.485156 0 0 0-16.145067 0l-60.097422 36.545422V202.683733c0-27.181511-10.763378-51.882667-28.216889-70.087111h597.071644c38.570667 0 69.9392 31.448178 69.9392 70.087111V620.202667a15.587556 15.587556 0 0 0 15.5648 15.598933z" fill="" p-id="9536"></path><path d="M583.133867 266.023822a15.587556 15.587556 0 0 0-15.576178-15.598933H382.316089a15.587556 15.587556 0 0 0-15.5648 15.598933V516.551111a15.587556 15.587556 0 0 0 15.5648 15.610311h185.2416a15.587556 15.587556 0 0 0 15.576178-15.610311V266.023822z m-31.1296 234.928356H397.880889V281.611378h154.112v219.3408zM856.291556 563.586844H642.093511a15.587556 15.587556 0 0 0-15.576178 15.587556v125.269333a15.587556 15.587556 0 0 0 15.576178 15.598934h214.186667c8.6016 0 15.5648-6.974578 15.5648-15.598934v-125.269333c0-8.6016-6.9632-15.587556-15.553422-15.587556z m-15.576178 125.257956H657.658311v-94.071467h183.057067v94.071467zM856.291556 250.424889H642.093511a15.587556 15.587556 0 0 0 0 31.197867h214.186667a15.587556 15.587556 0 0 0 15.5648-15.598934 15.587556 15.587556 0 0 0-15.553422-15.598933zM856.291556 500.952178H642.093511a15.598933 15.598933 0 1 0 0 31.209244h214.186667a15.587556 15.587556 0 0 0 15.5648-15.610311 15.587556 15.587556 0 0 0-15.553422-15.598933zM856.291556 438.317511h-79.758223a15.587556 15.587556 0 0 0 0 31.197867h79.758223c8.6016 0 15.553422-6.985956 15.553422-15.598934a15.587556 15.587556 0 0 0-15.553422-15.598933zM642.093511 469.515378h77.471289a15.587556 15.587556 0 0 0 0-31.197867h-77.471289a15.587556 15.587556 0 0 0 0 31.197867zM856.291556 375.694222H642.093511a15.587556 15.587556 0 0 0 0 31.197867h214.186667a15.587556 15.587556 0 0 0 15.5648-15.598933c0-8.624356-6.9632-15.598933-15.553422-15.598934zM382.316089 732.376178h185.2416a15.587556 15.587556 0 0 0 0-31.186489H382.316089a15.587556 15.587556 0 0 0 0 31.186489zM567.557689 638.555022h-66.753422c-8.6016 0-15.5648 6.974578-15.5648 15.598934a15.587556 15.587556 0 0 0 15.5648 15.598933h66.753422a15.587556 15.587556 0 0 0 0-31.197867zM382.316089 669.752889h61.531022a15.587556 15.587556 0 0 0 15.5648-15.598933 15.587556 15.587556 0 0 0-15.5648-15.598934h-61.531022a15.587556 15.587556 0 0 0-15.5648 15.598934 15.576178 15.576178 0 0 0 15.5648 15.598933zM567.557689 575.920356H382.316089a15.587556 15.587556 0 0 0 0 31.186488h185.2416a15.587556 15.587556 0 0 0 0-31.186488zM856.291556 313.059556h-13.676089a15.587556 15.587556 0 0 0-15.5648 15.598933 15.587556 15.587556 0 0 0 15.5648 15.598933h13.676089c8.6016 0 15.553422-6.985956 15.553422-15.598933 0-8.624356-6.9632-15.598933-15.553422-15.598933zM642.093511 344.246044h143.553422a15.587556 15.587556 0 0 0 15.5648-15.598933 15.587556 15.587556 0 0 0-15.5648-15.598933H642.093511a15.587556 15.587556 0 0 0 0 31.197866z" fill="" p-id="9537"></path></svg>
\ No newline at end of file
diff --git a/docs/src/public/icon/yuque.svg b/docs/src/public/icon/yuque.svg
deleted file mode 100644
index 2c22e787a8..0000000000
--- a/docs/src/public/icon/yuque.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1723474378952" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4243" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M228.7 643.9c-0.1 0.1-0.2 0.3-0.3 0.4 3.9-4.4 8-9 12-13.5-7.5 8.4-11.7 13.1-11.7 13.1z" fill="#1590E9" p-id="4244"></path><path d="M894 298.1l25.6-15.1c10.4-6.1 9.1-21.5-2.1-25.9l-12.3-4.8c-18-7.1-34.2-18.2-46.7-33-15.7-18.5-44.7-45.1-90.9-60.8-52.7-18-142.9-14.4-193.2-10.5-15.9 1.2-25 18.4-17.4 32.5 42.6 78.6 16.7 114.3-5.7 140.7-34.3 40.4-97.4 112.2-160.7 183.6 21.9-24.5 41.8-46.8 58.1-65.1 36.4-40.8 91.3-61.5 145.1-51.7 171.5 31.3 191 253.4-9.2 385.6 26.1-1.4 52.6-3.3 79.2-6 252.6-26 272.6-232.1 218-333.9-19.4-36.1-22.2-60.5-20.1-83.9 2-21.5 13.8-40.8 32.3-51.7z" fill="#99C236" p-id="4245"></path><path d="M212.8 704.5C241.1 672.9 316 589 390.7 504.7c-54.6 61.2-121.8 136.7-177.9 199.8z" fill="#1590E9" p-id="4246"></path><path d="M216.3 758.6c-19.5-2.5-28.2-25.6-15.5-40.6-51.7 58.3-91.7 103.5-99.1 112.6-24.1 29.5 247.7 97.9 482.6-56.8 0.1-0.1 0.3-0.2 0.4-0.3-156.5 8.2-298.5-5.9-368.4-14.9z" fill="#CAC134" p-id="4247"></path><path d="M593.9 387.9c-53.8-9.8-108.7 10.9-145.1 51.7-16.3 18.2-36.2 40.5-58.1 65.1C316 589 241.1 672.9 212.8 704.5c-4.1 4.6-8.1 9.1-12 13.5-12.7 14.9-4 38 15.5 40.6 69.9 9 211.9 23.1 368.3 15 200.2-132.3 180.8-354.4 9.3-385.7z" fill="#029F40" p-id="4248"></path></svg>
\ No newline at end of file
diff --git a/docs/src/reward.md b/docs/src/reward.md
deleted file mode 100644
index 114f583a66..0000000000
--- a/docs/src/reward.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-publish: false
----
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## 支付宝
-
-支付宝官方推出的红包码，每天可以扫一次，你消费用掉红包我会得到同等红包数额的打款。
-
-你既能消费抵扣，同时也能免费赞助我一把，岂不美哉~
-
-<center>
-
-<img src="/award/aliRed.jpg" width=40% />
-
-</center>
-
-## 公众号
-
-如果你关注了我的公众号，在日常浏览我推文的同时，点一点推文中间和底部的广告，也能免费让我加餐小鸡腿~
-
-<center>
-<img src="/contact/wechatpublic.jpg" width="150" />
-</center>
-
-## 有钱任性
-
-当然了，如果你真的觉得我的文章对你有用，想要赞助我一把。
-
-那就来吧，直接打钱 😂！
-
-<center>
-<img src="/award/donate.jpg" width="150" />
-</center>
\ No newline at end of file
diff --git a/docs/src/tutorial/efficiency/20240408-windows-telnet.md b/docs/src/tutorial/efficiency/20240408-windows-telnet.md
deleted file mode 100644
index 2489348a15..0000000000
--- a/docs/src/tutorial/efficiency/20240408-windows-telnet.md
+++ /dev/null
@@ -1,9 +0,0 @@
-![](assets/20240408-windows-telnet/explorer_1712557467.webp)
-
-![](assets/20240408-windows-telnet/explorer_1712557605.webp)
-
-![](assets/20240408-windows-telnet/OptionalFeatures_1712557689.webp)
-
-![](assets/20240408-windows-telnet/OptionalFeatures_1712557722.webp)
-
-![](assets/20240408-windows-telnet/WindowsTerminal_1712557850.webp)
\ No newline at end of file
diff --git a/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/OptionalFeatures_1712557689.webp b/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/OptionalFeatures_1712557689.webp
deleted file mode 100644
index 43f47ff03c..0000000000
Binary files a/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/OptionalFeatures_1712557689.webp and /dev/null differ
diff --git a/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/OptionalFeatures_1712557722.webp b/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/OptionalFeatures_1712557722.webp
deleted file mode 100644
index 869c9f199b..0000000000
Binary files a/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/OptionalFeatures_1712557722.webp and /dev/null differ
diff --git a/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/WindowsTerminal_1712557850.webp b/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/WindowsTerminal_1712557850.webp
deleted file mode 100644
index 6786d31d75..0000000000
Binary files a/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/WindowsTerminal_1712557850.webp and /dev/null differ
diff --git a/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/explorer_1712557467.webp b/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/explorer_1712557467.webp
deleted file mode 100644
index 57ad8d0e4c..0000000000
Binary files a/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/explorer_1712557467.webp and /dev/null differ
diff --git a/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/explorer_1712557605.webp b/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/explorer_1712557605.webp
deleted file mode 100644
index c898715c26..0000000000
Binary files a/docs/src/tutorial/efficiency/assets/20240408-windows-telnet/explorer_1712557605.webp and /dev/null differ
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000000..5587df60f4
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,9421 @@
+{
+  "name": "java-park",
+  "version": "2.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "java-park",
+      "version": "2.0.0",
+      "license": "MIT",
+      "devDependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "vue": "^3.4.0",
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-plugin-readmore-popular-next": "^2.0.0-rc.0.2",
+        "vuepress-plugin-search-pro": "2.0.0-rc.7",
+        "vuepress-theme-hope": "2.0.0-rc.7"
+      }
+    },
+    "node_modules/@ampproject/remapping": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+      "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@apideck/better-ajv-errors": {
+      "version": "0.3.6",
+      "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz",
+      "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==",
+      "dev": true,
+      "dependencies": {
+        "json-schema": "^0.4.0",
+        "jsonpointer": "^5.0.0",
+        "leven": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "ajv": ">=8"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.23.5",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+      "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/highlight": "^7.23.4",
+        "chalk": "^2.4.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/code-frame/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/code-frame/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/code-frame/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/@babel/code-frame/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.23.5",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
+      "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/core": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz",
+      "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==",
+      "dev": true,
+      "dependencies": {
+        "@ampproject/remapping": "^2.2.0",
+        "@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/helpers": "^7.23.6",
+        "@babel/parser": "^7.23.6",
+        "@babel/template": "^7.22.15",
+        "@babel/traverse": "^7.23.6",
+        "@babel/types": "^7.23.6",
+        "convert-source-map": "^2.0.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.2.3",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/babel"
+      }
+    },
+    "node_modules/@babel/core/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
+      "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.23.6",
+        "@jridgewell/gen-mapping": "^0.3.2",
+        "@jridgewell/trace-mapping": "^0.3.17",
+        "jsesc": "^2.5.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-annotate-as-pure": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+      "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz",
+      "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.15"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+      "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+      "dev": true,
+      "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"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+      "dev": true
+    },
+    "node_modules/@babel/helper-create-class-features-plugin": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz",
+      "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==",
+      "dev": true,
+      "dependencies": {
+        "@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/helper-skip-transparent-expression-wrappers": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.6",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/helper-create-regexp-features-plugin": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz",
+      "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "regexpu-core": "^5.3.1",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/helper-define-polyfill-provider": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz",
+      "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-compilation-targets": "^7.22.6",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "debug": "^4.1.1",
+        "lodash.debounce": "^4.0.8",
+        "resolve": "^1.14.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+      }
+    },
+    "node_modules/@babel/helper-environment-visitor": {
+      "version": "7.22.20",
+      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+      "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-function-name": {
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+      "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/template": "^7.22.15",
+        "@babel/types": "^7.23.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-hoist-variables": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+      "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-member-expression-to-functions": {
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
+      "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.23.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+      "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.15"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+      "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+      "dev": true,
+      "dependencies": {
+        "@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"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-optimise-call-expression": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+      "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-plugin-utils": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+      "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-remap-async-to-generator": {
+      "version": "7.22.20",
+      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz",
+      "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-environment-visitor": "^7.22.20",
+        "@babel/helper-wrap-function": "^7.22.20"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-replace-supers": {
+      "version": "7.22.20",
+      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
+      "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.22.20",
+        "@babel/helper-member-expression-to-functions": "^7.22.15",
+        "@babel/helper-optimise-call-expression": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-simple-access": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+      "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+      "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-split-export-declaration": {
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+      "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+      "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.22.20",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-option": {
+      "version": "7.23.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+      "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-wrap-function": {
+      "version": "7.22.20",
+      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz",
+      "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-function-name": "^7.22.5",
+        "@babel/template": "^7.22.15",
+        "@babel/types": "^7.22.19"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz",
+      "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/template": "^7.22.15",
+        "@babel/traverse": "^7.23.6",
+        "@babel/types": "^7.23.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+      "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.22.20",
+        "chalk": "^2.4.2",
+        "js-tokens": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
+      "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
+      "dev": true,
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz",
+      "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz",
+      "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+        "@babel/plugin-transform-optional-chaining": "^7.23.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.13.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz",
+      "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.22.20",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.21.0-placeholder-for-preset-env.2",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+      "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-static-block": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+      "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-dynamic-import": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+      "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+      "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-assertions": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz",
+      "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-attributes": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz",
+      "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-meta": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+      "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+      "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+      "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+      "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+      "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+      "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+      "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+      "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+      "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-arrow-functions": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz",
+      "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-async-generator-functions": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz",
+      "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.22.20",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-remap-async-to-generator": "^7.22.20",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-async-to-generator": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz",
+      "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.22.15",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-remap-async-to-generator": "^7.22.20"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz",
+      "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoping": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz",
+      "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-class-properties": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz",
+      "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.22.15",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-class-static-block": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz",
+      "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.22.15",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.12.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-classes": {
+      "version": "7.23.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz",
+      "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-compilation-targets": "^7.22.15",
+        "@babel/helper-environment-visitor": "^7.22.20",
+        "@babel/helper-function-name": "^7.23.0",
+        "@babel/helper-optimise-call-expression": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-replace-supers": "^7.22.20",
+        "@babel/helper-split-export-declaration": "^7.22.6",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-computed-properties": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz",
+      "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/template": "^7.22.15"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-destructuring": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz",
+      "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-dotall-regex": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz",
+      "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-duplicate-keys": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz",
+      "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-dynamic-import": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz",
+      "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz",
+      "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-export-namespace-from": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz",
+      "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-for-of": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz",
+      "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-function-name": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz",
+      "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-compilation-targets": "^7.22.15",
+        "@babel/helper-function-name": "^7.23.0",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-json-strings": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz",
+      "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-literals": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz",
+      "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz",
+      "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-member-expression-literals": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz",
+      "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-amd": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz",
+      "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.23.3",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-commonjs": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz",
+      "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.23.3",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-simple-access": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-systemjs": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz",
+      "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-hoist-variables": "^7.22.5",
+        "@babel/helper-module-transforms": "^7.23.3",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-validator-identifier": "^7.22.20"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-umd": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz",
+      "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.23.3",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
+      "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-new-target": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz",
+      "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz",
+      "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-numeric-separator": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz",
+      "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-object-rest-spread": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz",
+      "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.23.3",
+        "@babel/helper-compilation-targets": "^7.22.15",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.23.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-object-super": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz",
+      "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-replace-supers": "^7.22.20"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-optional-catch-binding": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz",
+      "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-optional-chaining": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz",
+      "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-parameters": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz",
+      "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-private-methods": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz",
+      "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.22.15",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-private-property-in-object": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz",
+      "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-create-class-features-plugin": "^7.22.15",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-property-literals": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz",
+      "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-regenerator": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz",
+      "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "regenerator-transform": "^0.15.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-reserved-words": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz",
+      "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-shorthand-properties": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz",
+      "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-spread": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz",
+      "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-sticky-regex": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz",
+      "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-template-literals": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz",
+      "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-typeof-symbol": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz",
+      "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-escapes": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz",
+      "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-property-regex": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz",
+      "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-regex": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz",
+      "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz",
+      "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/preset-env": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz",
+      "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.23.5",
+        "@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/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3",
+        "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3",
+        "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.13",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-import-assertions": "^7.23.3",
+        "@babel/plugin-syntax-import-attributes": "^7.23.3",
+        "@babel/plugin-syntax-import-meta": "^7.10.4",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+        "@babel/plugin-syntax-top-level-await": "^7.14.5",
+        "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+        "@babel/plugin-transform-arrow-functions": "^7.23.3",
+        "@babel/plugin-transform-async-generator-functions": "^7.23.4",
+        "@babel/plugin-transform-async-to-generator": "^7.23.3",
+        "@babel/plugin-transform-block-scoped-functions": "^7.23.3",
+        "@babel/plugin-transform-block-scoping": "^7.23.4",
+        "@babel/plugin-transform-class-properties": "^7.23.3",
+        "@babel/plugin-transform-class-static-block": "^7.23.4",
+        "@babel/plugin-transform-classes": "^7.23.5",
+        "@babel/plugin-transform-computed-properties": "^7.23.3",
+        "@babel/plugin-transform-destructuring": "^7.23.3",
+        "@babel/plugin-transform-dotall-regex": "^7.23.3",
+        "@babel/plugin-transform-duplicate-keys": "^7.23.3",
+        "@babel/plugin-transform-dynamic-import": "^7.23.4",
+        "@babel/plugin-transform-exponentiation-operator": "^7.23.3",
+        "@babel/plugin-transform-export-namespace-from": "^7.23.4",
+        "@babel/plugin-transform-for-of": "^7.23.6",
+        "@babel/plugin-transform-function-name": "^7.23.3",
+        "@babel/plugin-transform-json-strings": "^7.23.4",
+        "@babel/plugin-transform-literals": "^7.23.3",
+        "@babel/plugin-transform-logical-assignment-operators": "^7.23.4",
+        "@babel/plugin-transform-member-expression-literals": "^7.23.3",
+        "@babel/plugin-transform-modules-amd": "^7.23.3",
+        "@babel/plugin-transform-modules-commonjs": "^7.23.3",
+        "@babel/plugin-transform-modules-systemjs": "^7.23.3",
+        "@babel/plugin-transform-modules-umd": "^7.23.3",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+        "@babel/plugin-transform-new-target": "^7.23.3",
+        "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4",
+        "@babel/plugin-transform-numeric-separator": "^7.23.4",
+        "@babel/plugin-transform-object-rest-spread": "^7.23.4",
+        "@babel/plugin-transform-object-super": "^7.23.3",
+        "@babel/plugin-transform-optional-catch-binding": "^7.23.4",
+        "@babel/plugin-transform-optional-chaining": "^7.23.4",
+        "@babel/plugin-transform-parameters": "^7.23.3",
+        "@babel/plugin-transform-private-methods": "^7.23.3",
+        "@babel/plugin-transform-private-property-in-object": "^7.23.4",
+        "@babel/plugin-transform-property-literals": "^7.23.3",
+        "@babel/plugin-transform-regenerator": "^7.23.3",
+        "@babel/plugin-transform-reserved-words": "^7.23.3",
+        "@babel/plugin-transform-shorthand-properties": "^7.23.3",
+        "@babel/plugin-transform-spread": "^7.23.3",
+        "@babel/plugin-transform-sticky-regex": "^7.23.3",
+        "@babel/plugin-transform-template-literals": "^7.23.3",
+        "@babel/plugin-transform-typeof-symbol": "^7.23.3",
+        "@babel/plugin-transform-unicode-escapes": "^7.23.3",
+        "@babel/plugin-transform-unicode-property-regex": "^7.23.3",
+        "@babel/plugin-transform-unicode-regex": "^7.23.3",
+        "@babel/plugin-transform-unicode-sets-regex": "^7.23.3",
+        "@babel/preset-modules": "0.1.6-no-external-plugins",
+        "babel-plugin-polyfill-corejs2": "^0.4.6",
+        "babel-plugin-polyfill-corejs3": "^0.8.5",
+        "babel-plugin-polyfill-regenerator": "^0.5.3",
+        "core-js-compat": "^3.31.0",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-env/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/preset-modules": {
+      "version": "0.1.6-no-external-plugins",
+      "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+      "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/types": "^7.4.4",
+        "esutils": "^2.0.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+      }
+    },
+    "node_modules/@babel/regjsgen": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+      "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+      "dev": true
+    },
+    "node_modules/@babel/runtime": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz",
+      "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==",
+      "dev": true,
+      "dependencies": {
+        "regenerator-runtime": "^0.14.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/template": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+      "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.22.13",
+        "@babel/parser": "^7.22.15",
+        "@babel/types": "^7.22.15"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz",
+      "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==",
+      "dev": true,
+      "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.1",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
+      "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.23.4",
+        "@babel/helper-validator-identifier": "^7.22.20",
+        "to-fast-properties": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@esbuild/aix-ppc64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz",
+      "integrity": "sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "aix"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-arm": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz",
+      "integrity": "sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-arm64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz",
+      "integrity": "sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-x64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz",
+      "integrity": "sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/darwin-arm64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz",
+      "integrity": "sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/darwin-x64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz",
+      "integrity": "sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/freebsd-arm64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz",
+      "integrity": "sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/freebsd-x64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz",
+      "integrity": "sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-arm": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz",
+      "integrity": "sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-arm64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz",
+      "integrity": "sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-ia32": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz",
+      "integrity": "sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-loong64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz",
+      "integrity": "sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==",
+      "cpu": [
+        "loong64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-mips64el": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz",
+      "integrity": "sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==",
+      "cpu": [
+        "mips64el"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-ppc64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz",
+      "integrity": "sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-riscv64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz",
+      "integrity": "sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-s390x": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz",
+      "integrity": "sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-x64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz",
+      "integrity": "sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/netbsd-x64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz",
+      "integrity": "sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/openbsd-x64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz",
+      "integrity": "sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/sunos-x64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz",
+      "integrity": "sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "sunos"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-arm64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz",
+      "integrity": "sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-ia32": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz",
+      "integrity": "sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-x64": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz",
+      "integrity": "sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+      "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+      "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/set-array": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/source-map": {
+      "version": "0.3.5",
+      "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
+      "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+      "dev": true
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.20",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
+      "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/resolve-uri": "^3.1.0",
+        "@jridgewell/sourcemap-codec": "^1.4.14"
+      }
+    },
+    "node_modules/@lit-labs/ssr-dom-shim": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.2.tgz",
+      "integrity": "sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==",
+      "dev": true
+    },
+    "node_modules/@lit/reactive-element": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.2.tgz",
+      "integrity": "sha512-SVOwLAWUQg3Ji1egtOt1UiFe4zdDpnWHyc5qctSceJ5XIu0Uc76YmGpIjZgx9YJ0XtdW0Jm507sDvjOu+HnB8w==",
+      "dev": true,
+      "dependencies": {
+        "@lit-labs/ssr-dom-shim": "^1.1.2"
+      }
+    },
+    "node_modules/@mdit-vue/plugin-component": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-component/-/plugin-component-1.0.0.tgz",
+      "integrity": "sha512-ZXsJwxkG5yyTHARIYbR74cT4AZ0SfMokFFjiHYCbypHIeYWgJhso4+CZ8+3V9EWFG3EHlGoKNGqKp9chHnqntQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.1",
+        "markdown-it": "^13.0.1"
+      }
+    },
+    "node_modules/@mdit-vue/plugin-frontmatter": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-frontmatter/-/plugin-frontmatter-1.0.0.tgz",
+      "integrity": "sha512-MMA7Ny+YPZA7eDOY1t4E+rKuEWO39mzDdP/M68fKdXJU6VfcGkPr7gnpnJfW2QBJ5qIvMrK/3lDAA2JBy5TfpA==",
+      "dev": true,
+      "dependencies": {
+        "@mdit-vue/types": "1.0.0",
+        "@types/markdown-it": "^13.0.1",
+        "gray-matter": "^4.0.3",
+        "markdown-it": "^13.0.1"
+      }
+    },
+    "node_modules/@mdit-vue/plugin-headers": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-headers/-/plugin-headers-1.0.0.tgz",
+      "integrity": "sha512-0rK/iKy6x13d/Pp5XxdLBshTD0+YjZvtHIaIV+JO+/H2WnOv7oaRgs48G5d44z3XJVUE2u6fNnTlI169fef0/A==",
+      "dev": true,
+      "dependencies": {
+        "@mdit-vue/shared": "1.0.0",
+        "@mdit-vue/types": "1.0.0",
+        "@types/markdown-it": "^13.0.1",
+        "markdown-it": "^13.0.1"
+      }
+    },
+    "node_modules/@mdit-vue/plugin-sfc": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-sfc/-/plugin-sfc-1.0.0.tgz",
+      "integrity": "sha512-agMUe0fY4YHxsZivSvplBwRwrFvsIf/JNUJCAYq1+2Sg9+2hviTBZwjZDxYqHDHOVLtiNr+wuo68tE24mAx3AQ==",
+      "dev": true,
+      "dependencies": {
+        "@mdit-vue/types": "1.0.0",
+        "@types/markdown-it": "^13.0.1",
+        "markdown-it": "^13.0.1"
+      }
+    },
+    "node_modules/@mdit-vue/plugin-title": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-title/-/plugin-title-1.0.0.tgz",
+      "integrity": "sha512-8yC60fCZ95xcJ/cvJH4Lv43Rs4k+33UGyKrRWj5J8TNyMwUyGcwur0XyPM+ffJH4/Bzq4myZLsj/TTFSkXRxvw==",
+      "dev": true,
+      "dependencies": {
+        "@mdit-vue/shared": "1.0.0",
+        "@mdit-vue/types": "1.0.0",
+        "@types/markdown-it": "^13.0.1",
+        "markdown-it": "^13.0.1"
+      }
+    },
+    "node_modules/@mdit-vue/plugin-toc": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-toc/-/plugin-toc-1.0.0.tgz",
+      "integrity": "sha512-WN8blfX0X/5Nolic0ClDWP7eVo9IB+U4g0jbycX3lolIZX5Bai1UpsD3QYZr5VVsPbQJMKMGvTrCEtCNTGvyWQ==",
+      "dev": true,
+      "dependencies": {
+        "@mdit-vue/shared": "1.0.0",
+        "@mdit-vue/types": "1.0.0",
+        "@types/markdown-it": "^13.0.1",
+        "markdown-it": "^13.0.1"
+      }
+    },
+    "node_modules/@mdit-vue/shared": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@mdit-vue/shared/-/shared-1.0.0.tgz",
+      "integrity": "sha512-nbYBfmEi+pR2Lm0Z6TMVX2/iBjfr/kGEsHW8CC0rQw+3+sG5dY6VG094HuFAkiAmmvZx9DZZb+7ZMWp9vkwCRw==",
+      "dev": true,
+      "dependencies": {
+        "@mdit-vue/types": "1.0.0",
+        "@types/markdown-it": "^13.0.1",
+        "markdown-it": "^13.0.1"
+      }
+    },
+    "node_modules/@mdit-vue/types": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@mdit-vue/types/-/types-1.0.0.tgz",
+      "integrity": "sha512-xeF5+sHLzRNF7plbksywKCph4qli20l72of2fMlZQQ7RECvXYrRkE9+bjRFQCyULC7B8ydUYbpbkux5xJlVWyw==",
+      "dev": true
+    },
+    "node_modules/@mdit/plugin-alert": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-alert/-/plugin-alert-0.7.6.tgz",
+      "integrity": "sha512-Z+/bHBDniCz/Q+TMa3M6f47KG4tUKvJI8FHXhDwgbKLzDLn045ZBHcOTeqvuWrrjCIKBEo4fVAlYszYcehxmfg==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-align": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-align/-/plugin-align-0.7.6.tgz",
+      "integrity": "sha512-NYGrsnX1c84dtY1tugDVX71zxxfcGSIjWANzQ0/od4B0+N31eXkq3SXdAjCXOWUUHSa6phfvtok+x4V9ExQwHA==",
+      "dev": true,
+      "dependencies": {
+        "@mdit/plugin-container": "0.7.6",
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-attrs": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-attrs/-/plugin-attrs-0.7.6.tgz",
+      "integrity": "sha512-vTSsqZUXglZRQ4cLNou6N2cTLudHS01Tir+HPtrWkN+VB4VAIRlCKV3hf0vzKRM+HR3DSe+vQMrWzfnQdD0o4A==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-container": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-container/-/plugin-container-0.7.6.tgz",
+      "integrity": "sha512-egEYoJLkar4hxrBfFf6tO3IfoLzeUHYChGRI3FA2fxiMwwyclPvBMMQTtG2rY3sjPy497Z86QiqYwjRM0qA8Mw==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-demo": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-demo/-/plugin-demo-0.7.6.tgz",
+      "integrity": "sha512-pybxLVpIKYlxt7fgjHK4Zd6f/IMCjACB6eZmIIlow0eOnijRnikHdRDVkoyDOxcFuQvP0yvT6LWcQlhHF+CGwQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-figure": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-figure/-/plugin-figure-0.7.6.tgz",
+      "integrity": "sha512-ysH5O3WWuDrfxLWQO4wYXYGdo8oi+EbMQFgbaSTxhoPKTFf3HTovCn3RANn7qATBqmGP26zf0hY55mX9BFUu5A==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-footnote": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-footnote/-/plugin-footnote-0.7.6.tgz",
+      "integrity": "sha512-fQvbi3+/Hm+k4GJptXCc5i0n9/+ZpQx4yqpjOTGGSUz1k22XU07YaK3wpL9w+nPAfcBfzD06D72Y+eDIG5wi8w==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      }
+    },
+    "node_modules/@mdit/plugin-img-lazyload": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-img-lazyload/-/plugin-img-lazyload-0.7.6.tgz",
+      "integrity": "sha512-BBgxlXCOO7+9TMHJXtUyvi48jlH4ZYQtC9lNfgu1rvmq56iblZ7etOzg61/CmXmLgMHNvCbb/Kx7gRLkOBhv6A==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-img-mark": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-img-mark/-/plugin-img-mark-0.7.6.tgz",
+      "integrity": "sha512-IhbkmTLbxr+c04ZQcSV2IFq8n1GeRFO08qQagkONUijI1O2G/RE2y6QvCVBUy0gB1Hc8c1i9vEyK1F0e4GpheQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-img-size": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-img-size/-/plugin-img-size-0.7.6.tgz",
+      "integrity": "sha512-GZGEbuR0l4+ENXDG1Y2HsrNO2JuEmjI6PPe7pgsolk5yveWOiqzcEV4ushrWnpvwNal3Acuj+dpFDmZFOtm42g==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-include": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-include/-/plugin-include-0.7.6.tgz",
+      "integrity": "sha512-4Pu0SdD2IOONLor/3GtQOYOBDv1xZ1LWByXLhht0kqEioX5D+aDZ5KD5MZ0AxH0xoNUGMynMEn/ak4/D9LLI7Q==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7",
+        "upath": "^2.0.1"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-katex": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-katex/-/plugin-katex-0.7.6.tgz",
+      "integrity": "sha512-ZbPIks1SlgzS5R6YOL5s0J5vk20ROl5hF+Yj9o6CiEljodK2ln0ewpX36qM6POVrS/cu6E4Lx4X0fc5JTI6nAQ==",
+      "dev": true,
+      "dependencies": {
+        "@mdit/plugin-tex": "0.7.6",
+        "@types/katex": "^0.16.7",
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "katex": "^0.16.9",
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "katex": {
+          "optional": true
+        },
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-mark": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-mark/-/plugin-mark-0.7.6.tgz",
+      "integrity": "sha512-D9gv+ebVORa4r69t0JeJg3NW9gCR/NOGYa1DKYDEQOJoZ1WwjZVuhdxd3wCpLKtqDLnyHTFWd3cnV/HHrmca3w==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-mathjax": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-mathjax/-/plugin-mathjax-0.7.6.tgz",
+      "integrity": "sha512-Sn3nYbkPftAF5tgemIJ1aClxgU4NnElHPV5PIgkMxwusaSsN4RB+GZ1NmTKrPUqVoIZi0pO1oYxy08TlIHcrPg==",
+      "dev": true,
+      "dependencies": {
+        "@mdit/plugin-tex": "0.7.6",
+        "@types/markdown-it": "^13.0.7",
+        "upath": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2",
+        "mathjax-full": "^3.2.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        },
+        "mathjax-full": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-stylize": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-stylize/-/plugin-stylize-0.7.6.tgz",
+      "integrity": "sha512-dhhYxo4KdnB66g1080qeuz8X/80q3h4Cpmwnwi2rCbQfl29Nv26H5tz5pp15NKQfdfVgrZnXXLsDskJeg5IcaQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-sub": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-sub/-/plugin-sub-0.7.6.tgz",
+      "integrity": "sha512-jo60gUC2KwnG4SqtyrbyI16hOcxb+Y1LwUKxXKfZRbZbcPcOfrzjE8q7XEq4MhmU51mfqY6EvCoB0yo49Zh2QA==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-sup": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-sup/-/plugin-sup-0.7.6.tgz",
+      "integrity": "sha512-bCR1DxNuPAyYOaTtl3VkrRc7dMsJjrqt9HnM9T1ZiprW08uciaT37fLXF7DeUHWhGpcklI9dFtaU5cQkjUosTg==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-tab": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-tab/-/plugin-tab-0.7.6.tgz",
+      "integrity": "sha512-kWwWmhv+PeeA9aC5InGyY4eJeIsCDDMhi1tbzyKW/wJ1eeFp+rpWpSfWwUe6QyTy/ZOhQ1nGXz0/uXI4xWz4Xw==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-tasklist": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-tasklist/-/plugin-tasklist-0.7.6.tgz",
+      "integrity": "sha512-ZsPHqQv/Cd9TUG3JfmrPOMRFR/SOG3/menWTz2kwE1HtJ1CUfBmoCRtfq2Sm7Rlqg/P6ZfWAd1t9bOwGkxD/5w==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-tex": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-tex/-/plugin-tex-0.7.6.tgz",
+      "integrity": "sha512-TZfIJp98n7NI0TxDSxPs4Il1fqyJ/1GE3v8UZHA1DbfAdiVMxno/Dun9381ZxoJYibl+dnX3Kz7Ej3BDOceGGA==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mdit/plugin-uml": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/@mdit/plugin-uml/-/plugin-uml-0.7.6.tgz",
+      "integrity": "sha512-P/aRntMnMfvtAEcLCkg6vhzNFEidj6jIno7VXr3HZNLitonr9ihnksM6jgrqG1rrMo4okBWUGFFGqsR8hHJk6g==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.7"
+      },
+      "engines": {
+        "node": ">= 18"
+      },
+      "peerDependencies": {
+        "markdown-it": "^13.0.2"
+      },
+      "peerDependenciesMeta": {
+        "markdown-it": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@rollup/rollup-android-arm-eabi": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz",
+      "integrity": "sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ]
+    },
+    "node_modules/@rollup/rollup-android-arm64": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz",
+      "integrity": "sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ]
+    },
+    "node_modules/@rollup/rollup-darwin-arm64": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz",
+      "integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@rollup/rollup-darwin-x64": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz",
+      "integrity": "sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz",
+      "integrity": "sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm64-gnu": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz",
+      "integrity": "sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm64-musl": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz",
+      "integrity": "sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz",
+      "integrity": "sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-x64-gnu": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz",
+      "integrity": "sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-x64-musl": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz",
+      "integrity": "sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-arm64-msvc": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz",
+      "integrity": "sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-ia32-msvc": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz",
+      "integrity": "sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-x64-msvc": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz",
+      "integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@sindresorhus/merge-streams": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz",
+      "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==",
+      "dev": true,
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@stackblitz/sdk": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@stackblitz/sdk/-/sdk-1.9.0.tgz",
+      "integrity": "sha512-3m6C7f8pnR5KXys/Hqx2x6ylnpqOak6HtnZI6T5keEO0yT+E4Spkw37VEbdwuC+2oxmjdgq6YZEgiKX7hM1GmQ==",
+      "dev": true
+    },
+    "node_modules/@surma/rollup-plugin-off-main-thread": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz",
+      "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==",
+      "dev": true,
+      "dependencies": {
+        "ejs": "^3.1.6",
+        "json5": "^2.2.0",
+        "magic-string": "^0.25.0",
+        "string.prototype.matchall": "^4.0.6"
+      }
+    },
+    "node_modules/@surma/rollup-plugin-off-main-thread/node_modules/magic-string": {
+      "version": "0.25.9",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+      "dev": true,
+      "dependencies": {
+        "sourcemap-codec": "^1.4.8"
+      }
+    },
+    "node_modules/@types/debug": {
+      "version": "4.1.12",
+      "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
+      "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/ms": "*"
+      }
+    },
+    "node_modules/@types/estree": {
+      "version": "0.0.39",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
+      "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+      "dev": true
+    },
+    "node_modules/@types/fs-extra": {
+      "version": "11.0.4",
+      "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz",
+      "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/jsonfile": "*",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/hash-sum": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@types/hash-sum/-/hash-sum-1.0.2.tgz",
+      "integrity": "sha512-UP28RddqY8xcU0SCEp9YKutQICXpaAq9N8U2klqF5hegGha7KzTOL8EdhIIV3bOSGBzjEpN9bU/d+nNZBdJYVw==",
+      "dev": true
+    },
+    "node_modules/@types/jsonfile": {
+      "version": "6.1.4",
+      "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz",
+      "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/katex": {
+      "version": "0.16.7",
+      "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz",
+      "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==",
+      "dev": true
+    },
+    "node_modules/@types/linkify-it": {
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz",
+      "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==",
+      "dev": true
+    },
+    "node_modules/@types/markdown-it": {
+      "version": "13.0.7",
+      "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz",
+      "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==",
+      "dev": true,
+      "dependencies": {
+        "@types/linkify-it": "*",
+        "@types/mdurl": "*"
+      }
+    },
+    "node_modules/@types/markdown-it-emoji": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/@types/markdown-it-emoji/-/markdown-it-emoji-2.0.4.tgz",
+      "integrity": "sha512-H6ulk/ZmbDxOayPwI/leJzrmoW1YKX1Z+MVSCHXuYhvqckV4I/c+hPTf6UiqJyn2avWugfj30XroheEb6/Ekqg==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "*"
+      }
+    },
+    "node_modules/@types/mdurl": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz",
+      "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==",
+      "dev": true
+    },
+    "node_modules/@types/ms": {
+      "version": "0.7.34",
+      "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
+      "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==",
+      "dev": true
+    },
+    "node_modules/@types/node": {
+      "version": "20.10.5",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz",
+      "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==",
+      "dev": true,
+      "dependencies": {
+        "undici-types": "~5.26.4"
+      }
+    },
+    "node_modules/@types/resolve": {
+      "version": "1.17.1",
+      "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
+      "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/sax": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz",
+      "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/trusted-types": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+      "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+      "dev": true
+    },
+    "node_modules/@types/web-bluetooth": {
+      "version": "0.0.20",
+      "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz",
+      "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==",
+      "dev": true
+    },
+    "node_modules/@vitejs/plugin-vue": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.0.tgz",
+      "integrity": "sha512-XHuyFdAikWRmHuAd89FOyUGIjrBU5KlxJtyi2hVeR9ySGFxQwE0bl5xAQju/ArMq5azdBivY4d+D2yPKwoYWUg==",
+      "dev": true,
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "vite": "^4.0.0 || ^5.0.0",
+        "vue": "^3.2.25"
+      }
+    },
+    "node_modules/@vue/compiler-core": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.0.tgz",
+      "integrity": "sha512-cw4S15PkNGTKkP9OFFl4wnQoJJk+HqaYBafgrpDnSukiQGpcYJeRpzmqnCVCIkl6V6Eqsv58E0OAdl6b592vuA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.23.6",
+        "@vue/shared": "3.4.0",
+        "entities": "^4.5.0",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/compiler-dom": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.0.tgz",
+      "integrity": "sha512-E957uOhpoE48YjZGWeAoLmNYd3UeU4oIP8kJi8Rcsb9l2tV8Z48Jn07Zgq1aW0v3vuhlmydEKkKKbhLpADHXEA==",
+      "dev": true,
+      "dependencies": {
+        "@vue/compiler-core": "3.4.0",
+        "@vue/shared": "3.4.0"
+      }
+    },
+    "node_modules/@vue/compiler-sfc": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.0.tgz",
+      "integrity": "sha512-PWE0mE2yW7bJS7PmaCrVDEG6KPaDJo0pb4AKnCxJ5lRRDO4IwL/fswBGhCpov+v/c+N/e+hQHpXNwvqU9BtUXg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.23.6",
+        "@vue/compiler-core": "3.4.0",
+        "@vue/compiler-dom": "3.4.0",
+        "@vue/compiler-ssr": "3.4.0",
+        "@vue/shared": "3.4.0",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.5",
+        "postcss": "^8.4.32",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/compiler-ssr": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.0.tgz",
+      "integrity": "sha512-+oXKy105g9DIYQKDi3Gwung0xqQX5gJHr0GR+Vf7yK/WkNDM6q61ummcKmKAB85EIst8y3vj2PA9z9YU5Oc4DQ==",
+      "dev": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.4.0",
+        "@vue/shared": "3.4.0"
+      }
+    },
+    "node_modules/@vue/devtools-api": {
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
+      "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==",
+      "dev": true
+    },
+    "node_modules/@vue/reactivity": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.0.tgz",
+      "integrity": "sha512-X6BvQjNcgKKHWPQzlRJjZvIu72Kkn8xJSv6VNptqWh8dToMknD0Hch1l4N7llKgVt6Diq4lMeUnErbZFvuGlAA==",
+      "dev": true,
+      "dependencies": {
+        "@vue/shared": "3.4.0"
+      }
+    },
+    "node_modules/@vue/reactivity-transform": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz",
+      "integrity": "sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.23.0",
+        "@vue/compiler-core": "3.3.8",
+        "@vue/shared": "3.3.8",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.5"
+      }
+    },
+    "node_modules/@vue/reactivity-transform/node_modules/@vue/compiler-core": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.8.tgz",
+      "integrity": "sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.23.0",
+        "@vue/shared": "3.3.8",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/reactivity-transform/node_modules/@vue/shared": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.8.tgz",
+      "integrity": "sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==",
+      "dev": true
+    },
+    "node_modules/@vue/runtime-core": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.0.tgz",
+      "integrity": "sha512-NYrj/JgMMqnSWcIud8lLzDQrBLu+EVEeQ56QE9DYJeKG2eFrnQy8o/h57R9nCprafHs0uImKL3xsdXjHseYVxw==",
+      "dev": true,
+      "dependencies": {
+        "@vue/reactivity": "3.4.0",
+        "@vue/shared": "3.4.0"
+      }
+    },
+    "node_modules/@vue/runtime-dom": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.0.tgz",
+      "integrity": "sha512-1ZoHEsA5l77qbx2F+SWo/hQdBksPuOmww1t/jznidDG+xMB/iidafEFvo2ZTtZii0JfTIrlDhjshfYUvQC17wQ==",
+      "dev": true,
+      "dependencies": {
+        "@vue/runtime-core": "3.4.0",
+        "@vue/shared": "3.4.0",
+        "csstype": "^3.1.3"
+      }
+    },
+    "node_modules/@vue/server-renderer": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.0.tgz",
+      "integrity": "sha512-GuOVCyLDlWPu8nKo5AUxb8B+iB/Ik4I1WwqAlBqf5+y48z6D6rvKshp7KR3cJea+pte1tdTsb0+Ja82KizMZOw==",
+      "dev": true,
+      "dependencies": {
+        "@vue/compiler-ssr": "3.4.0",
+        "@vue/shared": "3.4.0"
+      },
+      "peerDependencies": {
+        "vue": "3.4.0"
+      }
+    },
+    "node_modules/@vue/shared": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.0.tgz",
+      "integrity": "sha512-Nhh3ed3G1R6HDAWiG6YYFt0Zmq/To6u5vjzwa9TIquGheCXPY6nEdIAO8ZdlwXsWqC2yNLj700FOvShpYt5CEA==",
+      "dev": true
+    },
+    "node_modules/@vuepress/bundler-vite": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/bundler-vite/-/bundler-vite-2.0.0-rc.0.tgz",
+      "integrity": "sha512-rX8S8IYpqqlJfNPstS/joorpxXx/4WuE7+gDM31i2HUrxOKGZVzq8ZsRRRU2UdoTwHZSd3LpUS4sMtxE5xLK1A==",
+      "dev": true,
+      "dependencies": {
+        "@vitejs/plugin-vue": "^4.5.0",
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "autoprefixer": "^10.4.16",
+        "connect-history-api-fallback": "^2.0.0",
+        "postcss": "^8.4.31",
+        "postcss-load-config": "^4.0.1",
+        "rollup": "^4.4.1",
+        "vite": "~5.0.0",
+        "vue": "^3.3.8",
+        "vue-router": "^4.2.5"
+      }
+    },
+    "node_modules/@vuepress/cli": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/cli/-/cli-2.0.0-rc.0.tgz",
+      "integrity": "sha512-XWSIFO9iOR7N4O2lXIwS5vZuLjU9WU/aGAtmhMWEMxrdMx7TQaJbgrfpTUEbHMf+cPI1DXBbUbtmkqIvtfOV0w==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "cac": "^6.7.14",
+        "chokidar": "^3.5.3",
+        "envinfo": "^7.11.0",
+        "esbuild": "~0.19.5"
+      },
+      "bin": {
+        "vuepress-cli": "bin/vuepress.js"
+      }
+    },
+    "node_modules/@vuepress/client": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/client/-/client-2.0.0-rc.0.tgz",
+      "integrity": "sha512-TwQx8hJgYONYxX+QltZ2aw9O5Ym6SKelfiUduuIRb555B1gece/jSVap3H/ZwyBhpgJMtG4+/Mrmf8nlDSHjvw==",
+      "dev": true,
+      "dependencies": {
+        "@vue/devtools-api": "^6.5.1",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vueuse/core": "^10.6.1",
+        "vue": "^3.3.8",
+        "vue-router": "^4.2.5"
+      }
+    },
+    "node_modules/@vuepress/core": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/core/-/core-2.0.0-rc.0.tgz",
+      "integrity": "sha512-uoOaZP1MdxZYJIAJcRcmYKKeCIVnxZeOuLMOOB9CPuAKSalT1RvJ1lztw6RX3q9SPnlqtSZPQXDncPAZivw4pA==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/markdown": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "vue": "^3.3.8"
+      }
+    },
+    "node_modules/@vuepress/markdown": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-2.0.0-rc.0.tgz",
+      "integrity": "sha512-USmqdKKMT6ZFHYRztTjKUlO8qgGfnEygMAAq4AzC/uYXiEfrbMBLAWJhteyGS56P3rGLj0OPAhksE681bX/wOg==",
+      "dev": true,
+      "dependencies": {
+        "@mdit-vue/plugin-component": "^1.0.0",
+        "@mdit-vue/plugin-frontmatter": "^1.0.0",
+        "@mdit-vue/plugin-headers": "^1.0.0",
+        "@mdit-vue/plugin-sfc": "^1.0.0",
+        "@mdit-vue/plugin-title": "^1.0.0",
+        "@mdit-vue/plugin-toc": "^1.0.0",
+        "@mdit-vue/shared": "^1.0.0",
+        "@mdit-vue/types": "^1.0.0",
+        "@types/markdown-it": "^13.0.6",
+        "@types/markdown-it-emoji": "^2.0.4",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "markdown-it": "^13.0.2",
+        "markdown-it-anchor": "^8.6.7",
+        "markdown-it-emoji": "^2.0.2",
+        "mdurl": "^1.0.1"
+      }
+    },
+    "node_modules/@vuepress/plugin-active-header-links": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/plugin-active-header-links/-/plugin-active-header-links-2.0.0-rc.0.tgz",
+      "integrity": "sha512-UJdXLYNGL5Wjy5YGY8M2QgqT75bZ95EHebbqGi8twBdIJE9O+bM+dPJyYtAk2PIVqFORiw3Hj+PchsNSxdn9+g==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "ts-debounce": "^4.0.0",
+        "vue": "^3.3.8",
+        "vue-router": "^4.2.5"
+      }
+    },
+    "node_modules/@vuepress/plugin-back-to-top": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/plugin-back-to-top/-/plugin-back-to-top-2.0.0-rc.0.tgz",
+      "integrity": "sha512-6GPfuzV5lkAnR00BxRUhqMXwMWt741alkq2R6bln4N8BneSOwEpX/7vi19MGf232aKdS/Va4pF5p0/nJ8Sed/g==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "ts-debounce": "^4.0.0",
+        "vue": "^3.3.8"
+      }
+    },
+    "node_modules/@vuepress/plugin-container": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/plugin-container/-/plugin-container-2.0.0-rc.0.tgz",
+      "integrity": "sha512-b7vrLN11YE7qiUDPfA3N9P7Z8fupe9Wbcr9KAE/bmfZ9VT4d6kzpVyoU7XHi99XngitsmnkaXP4aBvBF1c2AnA==",
+      "dev": true,
+      "dependencies": {
+        "@types/markdown-it": "^13.0.6",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/markdown": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "markdown-it": "^13.0.2",
+        "markdown-it-container": "^3.0.0"
+      }
+    },
+    "node_modules/@vuepress/plugin-external-link-icon": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/plugin-external-link-icon/-/plugin-external-link-icon-2.0.0-rc.0.tgz",
+      "integrity": "sha512-o8bk0oIlj/BkKc02mq91XLDloq1VOz/8iNcRwKAeqBE6svXzdYiyoTGet0J/4iPuAetsCn75S57W6RioDJHMnQ==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/markdown": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "vue": "^3.3.8"
+      }
+    },
+    "node_modules/@vuepress/plugin-git": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/plugin-git/-/plugin-git-2.0.0-rc.0.tgz",
+      "integrity": "sha512-r7UF77vZxaYeJQLygzodKv+15z3/dTLuGp4VcYO21W6BlJZvd4u9zqgiV7A//bZQvK4+3Hprylr0G3KgXqMewA==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "execa": "^8.0.1"
+      }
+    },
+    "node_modules/@vuepress/plugin-medium-zoom": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-2.0.0-rc.0.tgz",
+      "integrity": "sha512-peU1lYKsmKikIe/0pkJuHzD/k6xW2TuqdvKVhV4I//aOE1WxsREKJ4ACcldmoIsnysoDydAUqKT6xDPGyDsH2g==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "medium-zoom": "^1.1.0",
+        "vue": "^3.3.8"
+      }
+    },
+    "node_modules/@vuepress/plugin-nprogress": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/plugin-nprogress/-/plugin-nprogress-2.0.0-rc.0.tgz",
+      "integrity": "sha512-rI+eK0Pg1KiZE+7hGmDUeSbgdWCid8Vnw0hFKNmjinDzGVmx4m03M6qfvclsI0SryH+lR7itZGLaR4gbTlrz/w==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "vue": "^3.3.8",
+        "vue-router": "^4.2.5"
+      }
+    },
+    "node_modules/@vuepress/plugin-palette": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/plugin-palette/-/plugin-palette-2.0.0-rc.0.tgz",
+      "integrity": "sha512-wW70SCp3/K7s1lln5YQsBGTog2WXaQv5piva5zhXcQ47YGf4aAJpThDa5C/ot4HhkPOKn8Iz5s0ckxXZzW8DIg==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "chokidar": "^3.5.3"
+      }
+    },
+    "node_modules/@vuepress/plugin-prismjs": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/plugin-prismjs/-/plugin-prismjs-2.0.0-rc.0.tgz",
+      "integrity": "sha512-c5WRI7+FhVjdbymOKQ8F2KY/Bnv7aQtWScVk8vCMUimNi7v7Wff/A/i3KSFNz/tge3LxiAeH/Dc2WS/OnQXwCg==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/core": "2.0.0-rc.0",
+        "prismjs": "^1.29.0"
+      }
+    },
+    "node_modules/@vuepress/plugin-theme-data": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/plugin-theme-data/-/plugin-theme-data-2.0.0-rc.0.tgz",
+      "integrity": "sha512-FXY3/Ml+rM6gNKvwdBF6vKAcwnSvtXCzKgQwJAw3ppQTKUkLcbOxqM+h4d8bzHWAAvdnEvQFug5uEZgWllBQbA==",
+      "dev": true,
+      "dependencies": {
+        "@vue/devtools-api": "^6.5.1",
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "vue": "^3.3.8"
+      }
+    },
+    "node_modules/@vuepress/shared": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/shared/-/shared-2.0.0-rc.0.tgz",
+      "integrity": "sha512-ikdSfjRv5LGM1iv4HHwF9P6gqTjaFCXKPK+hzlkHFHNZO1GLqk7/BPc4F51tAG1s8TcLhUZc+54LrfgS7PkXXA==",
+      "dev": true,
+      "dependencies": {
+        "@mdit-vue/types": "^1.0.0",
+        "@vue/shared": "^3.3.8"
+      }
+    },
+    "node_modules/@vuepress/theme-default": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/theme-default/-/theme-default-2.0.0-rc.0.tgz",
+      "integrity": "sha512-I8Y08evDmMuD1jh3NftPpFFSlCWOizQDJLjN7EQwcg7jiAP4A7c2REo6nBN2EmP24Mi7UrRM+RnytHR5V+pElA==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/plugin-active-header-links": "2.0.0-rc.0",
+        "@vuepress/plugin-back-to-top": "2.0.0-rc.0",
+        "@vuepress/plugin-container": "2.0.0-rc.0",
+        "@vuepress/plugin-external-link-icon": "2.0.0-rc.0",
+        "@vuepress/plugin-git": "2.0.0-rc.0",
+        "@vuepress/plugin-medium-zoom": "2.0.0-rc.0",
+        "@vuepress/plugin-nprogress": "2.0.0-rc.0",
+        "@vuepress/plugin-palette": "2.0.0-rc.0",
+        "@vuepress/plugin-prismjs": "2.0.0-rc.0",
+        "@vuepress/plugin-theme-data": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "@vueuse/core": "^10.6.1",
+        "sass": "^1.69.5",
+        "vue": "^3.3.8",
+        "vue-router": "^4.2.5"
+      },
+      "peerDependencies": {
+        "sass-loader": "^13.3.2"
+      },
+      "peerDependenciesMeta": {
+        "sass-loader": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vuepress/utils": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/@vuepress/utils/-/utils-2.0.0-rc.0.tgz",
+      "integrity": "sha512-Q1ay/woClDHcW0Qe91KsnHoupdNN0tp/vhjvVLuAYxlv/1Obii7hz9WFcajyyGEhmsYxdvG2sGmcxFA02tuKkw==",
+      "dev": true,
+      "dependencies": {
+        "@types/debug": "^4.1.12",
+        "@types/fs-extra": "^11.0.4",
+        "@types/hash-sum": "^1.0.2",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "debug": "^4.3.4",
+        "fs-extra": "^11.1.1",
+        "globby": "^14.0.0",
+        "hash-sum": "^2.0.0",
+        "ora": "^7.0.1",
+        "picocolors": "^1.0.0",
+        "upath": "^2.0.1"
+      }
+    },
+    "node_modules/@vueuse/core": {
+      "version": "10.7.1",
+      "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.1.tgz",
+      "integrity": "sha512-74mWHlaesJSWGp1ihg76vAnfVq9NTv1YT0SYhAQ6zwFNdBkkP+CKKJmVOEHcdSnLXCXYiL5e7MaewblfiYLP7g==",
+      "dev": true,
+      "dependencies": {
+        "@types/web-bluetooth": "^0.0.20",
+        "@vueuse/metadata": "10.7.1",
+        "@vueuse/shared": "10.7.1",
+        "vue-demi": ">=0.14.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/core/node_modules/vue-demi": {
+      "version": "0.14.6",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+      "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vueuse/metadata": {
+      "version": "10.7.1",
+      "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.1.tgz",
+      "integrity": "sha512-jX8MbX5UX067DYVsbtrmKn6eG6KMcXxLRLlurGkZku5ZYT3vxgBjui2zajvUZ18QLIjrgBkFRsu7CqTAg18QFw==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/shared": {
+      "version": "10.7.1",
+      "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.1.tgz",
+      "integrity": "sha512-v0jbRR31LSgRY/C5i5X279A/WQjD6/JsMzGa+eqt658oJ75IvQXAeONmwvEMrvJQKnRElq/frzBR7fhmWY5uLw==",
+      "dev": true,
+      "dependencies": {
+        "vue-demi": ">=0.14.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/shared/node_modules/vue-demi": {
+      "version": "0.14.6",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+      "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/acorn": {
+      "version": "8.11.2",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
+      "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "8.12.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+      "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+      "dev": true,
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "json-schema-traverse": "^1.0.0",
+        "require-from-string": "^2.0.2",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "dev": true,
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/arg": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+      "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+      "dev": true
+    },
+    "node_modules/argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "dependencies": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "node_modules/array-buffer-byte-length": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+      "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "is-array-buffer": "^3.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/arraybuffer.prototype.slice": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz",
+      "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==",
+      "dev": true,
+      "dependencies": {
+        "array-buffer-byte-length": "^1.0.0",
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1",
+        "get-intrinsic": "^1.2.1",
+        "is-array-buffer": "^3.0.2",
+        "is-shared-array-buffer": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/async": {
+      "version": "3.2.5",
+      "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
+      "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
+      "dev": true
+    },
+    "node_modules/at-least-node": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+      "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/autoprefixer": {
+      "version": "10.4.16",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz",
+      "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "browserslist": "^4.21.10",
+        "caniuse-lite": "^1.0.30001538",
+        "fraction.js": "^4.3.6",
+        "normalize-range": "^0.1.2",
+        "picocolors": "^1.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "bin": {
+        "autoprefixer": "bin/autoprefixer"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/available-typed-arrays": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs2": {
+      "version": "0.4.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz",
+      "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.22.6",
+        "@babel/helper-define-polyfill-provider": "^0.4.4",
+        "semver": "^6.3.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs3": {
+      "version": "0.8.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz",
+      "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.4.4",
+        "core-js-compat": "^3.33.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-regenerator": {
+      "version": "0.5.4",
+      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz",
+      "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.4.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "node_modules/balloon-css": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/balloon-css/-/balloon-css-1.2.0.tgz",
+      "integrity": "sha512-urXwkHgwp6GsXVF+it01485Z2Cj4pnW02ICnM0TemOlkKmCNnDLmyy+ZZiRXBpwldUXO+aRNr7Hdia4CBvXJ5A==",
+      "dev": true
+    },
+    "node_modules/base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/bcrypt-ts": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/bcrypt-ts/-/bcrypt-ts-5.0.0.tgz",
+      "integrity": "sha512-0+VFzpOk0oIw8W8DfcCl0+xYbM04ib1u9IqkJCQQr+Vx8Pie4wzXmow+4zEnU0SP72QgPACDn0ARybH7q95Cbw==",
+      "dev": true,
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/bl": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
+      "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
+      "dev": true,
+      "dependencies": {
+        "buffer": "^6.0.3",
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.4.0"
+      }
+    },
+    "node_modules/boolbase": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+      "dev": true
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dev": true,
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.22.2",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
+      "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001565",
+        "electron-to-chromium": "^1.4.601",
+        "node-releases": "^2.0.14",
+        "update-browserslist-db": "^1.0.13"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      }
+    },
+    "node_modules/buffer": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+      "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "dependencies": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.2.1"
+      }
+    },
+    "node_modules/buffer-from": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+      "dev": true
+    },
+    "node_modules/builtin-modules": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+      "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/cac": {
+      "version": "6.7.14",
+      "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
+      "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
+      "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.1",
+        "set-function-length": "^1.1.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001572",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001572.tgz",
+      "integrity": "sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ]
+    },
+    "node_modules/chalk": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
+      "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+      "dev": true,
+      "engines": {
+        "node": "^12.17.0 || ^14.13 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/cheerio": {
+      "version": "1.0.0-rc.12",
+      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
+      "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
+      "dev": true,
+      "dependencies": {
+        "cheerio-select": "^2.1.0",
+        "dom-serializer": "^2.0.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.0.1",
+        "htmlparser2": "^8.0.1",
+        "parse5": "^7.0.0",
+        "parse5-htmlparser2-tree-adapter": "^7.0.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+      }
+    },
+    "node_modules/cheerio-select": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
+      "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+      "dev": true,
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-select": "^5.1.0",
+        "css-what": "^6.1.0",
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "3.5.3",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://paulmillr.com/funding/"
+        }
+      ],
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/cli-cursor": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz",
+      "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==",
+      "dev": true,
+      "dependencies": {
+        "restore-cursor": "^4.0.0"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/cli-spinners": {
+      "version": "2.9.2",
+      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+      "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      }
+    },
+    "node_modules/cliui/node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cliui/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
+    "node_modules/cliui/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cliui/node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/commander": {
+      "version": "2.20.3",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+      "dev": true
+    },
+    "node_modules/common-tags": {
+      "version": "1.8.2",
+      "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
+      "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true
+    },
+    "node_modules/connect-history-api-fallback": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
+      "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/convert-source-map": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+      "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+      "dev": true
+    },
+    "node_modules/core-js-compat": {
+      "version": "3.35.0",
+      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.0.tgz",
+      "integrity": "sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==",
+      "dev": true,
+      "dependencies": {
+        "browserslist": "^4.22.2"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/core-js"
+      }
+    },
+    "node_modules/create-codepen": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/create-codepen/-/create-codepen-1.0.1.tgz",
+      "integrity": "sha512-XzSWwGCFNeOnNGp3KdCDGaKq4Cp1SvjzpPGQqO0tj1HT3BhksLdl/xQ2ZEY4+0MQ3m1I/K1Fvpm4GGMthtamyA==",
+      "dev": true
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/crypto-random-string": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+      "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/css-select": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+      "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+      "dev": true,
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-what": "^6.1.0",
+        "domhandler": "^5.0.2",
+        "domutils": "^3.0.1",
+        "nth-check": "^2.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/css-what": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+      "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/csstype": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+      "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+      "dev": true
+    },
+    "node_modules/dayjs": {
+      "version": "1.11.10",
+      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
+      "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==",
+      "dev": true
+    },
+    "node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/deepmerge": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+      "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/define-data-property": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+      "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.2.1",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/define-properties": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+      "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+      "dev": true,
+      "dependencies": {
+        "define-data-property": "^1.0.1",
+        "has-property-descriptors": "^1.0.0",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/dijkstrajs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==",
+      "dev": true
+    },
+    "node_modules/dom-serializer": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+      "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+      "dev": true,
+      "dependencies": {
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.2",
+        "entities": "^4.2.0"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+      }
+    },
+    "node_modules/domelementtype": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ]
+    },
+    "node_modules/domhandler": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+      "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+      "dev": true,
+      "dependencies": {
+        "domelementtype": "^2.3.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domhandler?sponsor=1"
+      }
+    },
+    "node_modules/domutils": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+      "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+      "dev": true,
+      "dependencies": {
+        "dom-serializer": "^2.0.0",
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domutils?sponsor=1"
+      }
+    },
+    "node_modules/eastasianwidth": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+      "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+      "dev": true
+    },
+    "node_modules/ejs": {
+      "version": "3.1.9",
+      "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
+      "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
+      "dev": true,
+      "dependencies": {
+        "jake": "^10.8.5"
+      },
+      "bin": {
+        "ejs": "bin/cli.js"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.4.616",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz",
+      "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==",
+      "dev": true
+    },
+    "node_modules/emoji-regex": {
+      "version": "10.3.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz",
+      "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==",
+      "dev": true
+    },
+    "node_modules/encode-utf8": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz",
+      "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==",
+      "dev": true
+    },
+    "node_modules/entities": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+      "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/envinfo": {
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz",
+      "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==",
+      "dev": true,
+      "bin": {
+        "envinfo": "dist/cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/es-abstract": {
+      "version": "1.22.3",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz",
+      "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==",
+      "dev": true,
+      "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.1",
+        "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.0",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3",
+        "hasown": "^2.0.0",
+        "internal-slot": "^1.0.5",
+        "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.4",
+        "regexp.prototype.flags": "^1.5.1",
+        "safe-array-concat": "^1.0.1",
+        "safe-regex-test": "^1.0.0",
+        "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"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/es-set-tostringtag": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz",
+      "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.2.2",
+        "has-tostringtag": "^1.0.0",
+        "hasown": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-to-primitive": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+      "dev": true,
+      "dependencies": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/esbuild": {
+      "version": "0.19.10",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz",
+      "integrity": "sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "optionalDependencies": {
+        "@esbuild/aix-ppc64": "0.19.10",
+        "@esbuild/android-arm": "0.19.10",
+        "@esbuild/android-arm64": "0.19.10",
+        "@esbuild/android-x64": "0.19.10",
+        "@esbuild/darwin-arm64": "0.19.10",
+        "@esbuild/darwin-x64": "0.19.10",
+        "@esbuild/freebsd-arm64": "0.19.10",
+        "@esbuild/freebsd-x64": "0.19.10",
+        "@esbuild/linux-arm": "0.19.10",
+        "@esbuild/linux-arm64": "0.19.10",
+        "@esbuild/linux-ia32": "0.19.10",
+        "@esbuild/linux-loong64": "0.19.10",
+        "@esbuild/linux-mips64el": "0.19.10",
+        "@esbuild/linux-ppc64": "0.19.10",
+        "@esbuild/linux-riscv64": "0.19.10",
+        "@esbuild/linux-s390x": "0.19.10",
+        "@esbuild/linux-x64": "0.19.10",
+        "@esbuild/netbsd-x64": "0.19.10",
+        "@esbuild/openbsd-x64": "0.19.10",
+        "@esbuild/sunos-x64": "0.19.10",
+        "@esbuild/win32-arm64": "0.19.10",
+        "@esbuild/win32-ia32": "0.19.10",
+        "@esbuild/win32-x64": "0.19.10"
+      }
+    },
+    "node_modules/escalade": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true,
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "dev": true
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/execa": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
+      "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^8.0.1",
+        "human-signals": "^5.0.0",
+        "is-stream": "^3.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^5.1.0",
+        "onetime": "^6.0.0",
+        "signal-exit": "^4.1.0",
+        "strip-final-newline": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=16.17"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/execa?sponsor=1"
+      }
+    },
+    "node_modules/execa/node_modules/mimic-fn": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+      "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/execa/node_modules/onetime": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+      "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/execa/node_modules/signal-exit": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+      "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+      "dev": true,
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+      "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true
+    },
+    "node_modules/fast-glob": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+      "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      },
+      "engines": {
+        "node": ">=8.6.0"
+      }
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true
+    },
+    "node_modules/fastq": {
+      "version": "1.16.0",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz",
+      "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==",
+      "dev": true,
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/fflate": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.1.tgz",
+      "integrity": "sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==",
+      "dev": true
+    },
+    "node_modules/filelist": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
+      "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
+      "dev": true,
+      "dependencies": {
+        "minimatch": "^5.0.1"
+      }
+    },
+    "node_modules/filelist/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/filelist/node_modules/minimatch": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dev": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/for-each": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+      "dev": true,
+      "dependencies": {
+        "is-callable": "^1.1.3"
+      }
+    },
+    "node_modules/fraction.js": {
+      "version": "4.3.7",
+      "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+      "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "type": "patreon",
+        "url": "https://github.com/sponsors/rawify"
+      }
+    },
+    "node_modules/fs-extra": {
+      "version": "11.2.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
+      "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=14.14"
+      }
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "dev": true
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/function.prototype.name": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+      "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1",
+        "functions-have-names": "^1.2.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/functions-have-names": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "dev": true,
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+      "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.2",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3",
+        "hasown": "^2.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-own-enumerable-property-symbols": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
+      "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
+      "dev": true
+    },
+    "node_modules/get-stream": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
+      "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
+      "dev": true,
+      "engines": {
+        "node": ">=16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/get-symbol-description": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+      "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/giscus": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/giscus/-/giscus-1.4.0.tgz",
+      "integrity": "sha512-Pll+pcclTx47NcFDw8nuka2Ja85Gc4XWpzSgL0rszOQaMQRQIV8UMR+zP4a+/N3tV2TXc1SZ537kWlsN6EsAaw==",
+      "dev": true,
+      "dependencies": {
+        "lit": "^3.1.0"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "dev": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/globalthis": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+      "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+      "dev": true,
+      "dependencies": {
+        "define-properties": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/globby": {
+      "version": "14.0.0",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.0.tgz",
+      "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==",
+      "dev": true,
+      "dependencies": {
+        "@sindresorhus/merge-streams": "^1.0.0",
+        "fast-glob": "^3.3.2",
+        "ignore": "^5.2.4",
+        "path-type": "^5.0.0",
+        "slash": "^5.1.0",
+        "unicorn-magic": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/gopd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.2.11",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+      "dev": true
+    },
+    "node_modules/gray-matter": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
+      "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
+      "dev": true,
+      "dependencies": {
+        "js-yaml": "^3.13.1",
+        "kind-of": "^6.0.2",
+        "section-matter": "^1.0.0",
+        "strip-bom-string": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/has-bigints": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/has-property-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+      "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.2.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-proto": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-tostringtag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+      "dev": true,
+      "dependencies": {
+        "has-symbols": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/hash-sum": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
+      "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
+      "dev": true
+    },
+    "node_modules/hasown": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+      "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/htmlparser2": {
+      "version": "8.0.2",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
+      "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
+      "dev": true,
+      "funding": [
+        "https://github.com/fb55/htmlparser2?sponsor=1",
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "dependencies": {
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.0.1",
+        "entities": "^4.4.0"
+      }
+    },
+    "node_modules/human-signals": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
+      "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=16.17.0"
+      }
+    },
+    "node_modules/idb": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz",
+      "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==",
+      "dev": true
+    },
+    "node_modules/ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/ignore": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
+      "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/immutable": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz",
+      "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==",
+      "dev": true
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "node_modules/internal-slot": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",
+      "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.2.2",
+        "hasown": "^2.0.0",
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/is-array-buffer": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+      "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.2.0",
+        "is-typed-array": "^1.1.10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-bigint": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+      "dev": true,
+      "dependencies": {
+        "has-bigints": "^1.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-boolean-object": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-callable": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-core-module": {
+      "version": "2.13.1",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+      "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+      "dev": true,
+      "dependencies": {
+        "hasown": "^2.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-date-object": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+      "dev": true,
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-extendable": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+      "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-interactive": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
+      "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-module": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+      "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
+      "dev": true
+    },
+    "node_modules/is-negative-zero": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+      "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/is-number-object": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+      "dev": true,
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+      "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-regex": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-regexp": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+      "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-shared-array-buffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-stream": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+      "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+      "dev": true,
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-string": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+      "dev": true,
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-symbol": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+      "dev": true,
+      "dependencies": {
+        "has-symbols": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-typed-array": {
+      "version": "1.1.12",
+      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
+      "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+      "dev": true,
+      "dependencies": {
+        "which-typed-array": "^1.1.11"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-unicode-supported": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+      "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-weakref": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/isarray": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+      "dev": true
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true
+    },
+    "node_modules/jake": {
+      "version": "10.8.7",
+      "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
+      "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==",
+      "dev": true,
+      "dependencies": {
+        "async": "^3.2.3",
+        "chalk": "^4.0.2",
+        "filelist": "^1.0.4",
+        "minimatch": "^3.1.2"
+      },
+      "bin": {
+        "jake": "bin/cli.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jake/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/jake/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jake/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-worker": {
+      "version": "26.6.2",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
+      "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^7.0.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      }
+    },
+    "node_modules/jest-worker/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-worker/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true
+    },
+    "node_modules/js-yaml": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+      "dev": true,
+      "bin": {
+        "jsesc": "bin/jsesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/json-schema": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+      "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
+      "dev": true
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+      "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+      "dev": true
+    },
+    "node_modules/json5": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+      "dev": true,
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/jsonfile": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+      "dev": true,
+      "dependencies": {
+        "universalify": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "node_modules/jsonpointer": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
+      "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/leven": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/lilconfig": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",
+      "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",
+      "dev": true,
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/linkify-it": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz",
+      "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==",
+      "dev": true,
+      "dependencies": {
+        "uc.micro": "^1.0.1"
+      }
+    },
+    "node_modules/lit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz",
+      "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==",
+      "dev": true,
+      "dependencies": {
+        "@lit/reactive-element": "^2.0.0",
+        "lit-element": "^4.0.0",
+        "lit-html": "^3.1.0"
+      }
+    },
+    "node_modules/lit-element": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.2.tgz",
+      "integrity": "sha512-/W6WQZUa5VEXwC7H9tbtDMdSs9aWil3Ou8hU6z2cOKWbsm/tXPAcsoaHVEtrDo0zcOIE5GF6QgU55tlGL2Nihg==",
+      "dev": true,
+      "dependencies": {
+        "@lit-labs/ssr-dom-shim": "^1.1.2",
+        "@lit/reactive-element": "^2.0.0",
+        "lit-html": "^3.1.0"
+      }
+    },
+    "node_modules/lit-html": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.0.tgz",
+      "integrity": "sha512-FwAjq3iNsaO6SOZXEIpeROlJLUlrbyMkn4iuv4f4u1H40Jw8wkeR/OUXZUHUoiYabGk8Y4Y0F/rgq+R4MrOLmA==",
+      "dev": true,
+      "dependencies": {
+        "@types/trusted-types": "^2.0.2"
+      }
+    },
+    "node_modules/locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+      "dev": true
+    },
+    "node_modules/lodash.debounce": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+      "dev": true
+    },
+    "node_modules/lodash.sortby": {
+      "version": "4.7.0",
+      "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+      "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+      "dev": true
+    },
+    "node_modules/log-symbols": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz",
+      "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^5.0.0",
+        "is-unicode-supported": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/magic-string": {
+      "version": "0.30.5",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
+      "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.4.15"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/markdown-it": {
+      "version": "13.0.2",
+      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz",
+      "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^2.0.1",
+        "entities": "~3.0.1",
+        "linkify-it": "^4.0.1",
+        "mdurl": "^1.0.1",
+        "uc.micro": "^1.0.5"
+      },
+      "bin": {
+        "markdown-it": "bin/markdown-it.js"
+      }
+    },
+    "node_modules/markdown-it-anchor": {
+      "version": "8.6.7",
+      "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz",
+      "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==",
+      "dev": true,
+      "peerDependencies": {
+        "@types/markdown-it": "*",
+        "markdown-it": "*"
+      }
+    },
+    "node_modules/markdown-it-container": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-3.0.0.tgz",
+      "integrity": "sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==",
+      "dev": true
+    },
+    "node_modules/markdown-it-emoji": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz",
+      "integrity": "sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ==",
+      "dev": true
+    },
+    "node_modules/markdown-it/node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true
+    },
+    "node_modules/markdown-it/node_modules/entities": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
+      "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/mdurl": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+      "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
+      "dev": true
+    },
+    "node_modules/medium-zoom": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.1.0.tgz",
+      "integrity": "sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==",
+      "dev": true
+    },
+    "node_modules/merge-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+      "dev": true
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "dependencies": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/mitt": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+      "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+      "dev": true
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.7",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+      "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/node-match-path": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/node-match-path/-/node-match-path-0.6.3.tgz",
+      "integrity": "sha512-fB1reOHKLRZCJMAka28hIxCwQLxGmd7WewOCBDYKpyA1KXi68A7vaGgdZAPhY2E6SXoYt3KqYCCvXLJ+O0Fu/Q==",
+      "dev": true
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.14",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+      "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+      "dev": true
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/normalize-range": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+      "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npm-run-path": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz",
+      "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^4.0.0"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/npm-run-path/node_modules/path-key": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+      "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/nth-check": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+      "dev": true,
+      "dependencies": {
+        "boolbase": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/nth-check?sponsor=1"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.13.1",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+      "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object.assign": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+      "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.5",
+        "define-properties": "^1.2.1",
+        "has-symbols": "^1.0.3",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dev": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/ora": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/ora/-/ora-7.0.1.tgz",
+      "integrity": "sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^5.3.0",
+        "cli-cursor": "^4.0.0",
+        "cli-spinners": "^2.9.0",
+        "is-interactive": "^2.0.0",
+        "is-unicode-supported": "^1.3.0",
+        "log-symbols": "^5.1.0",
+        "stdin-discarder": "^0.1.0",
+        "string-width": "^6.1.0",
+        "strip-ansi": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse5": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+      "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+      "dev": true,
+      "dependencies": {
+        "entities": "^4.4.0"
+      },
+      "funding": {
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
+      }
+    },
+    "node_modules/parse5-htmlparser2-tree-adapter": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
+      "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+      "dev": true,
+      "dependencies": {
+        "domhandler": "^5.0.2",
+        "parse5": "^7.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "dev": true
+    },
+    "node_modules/path-type": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz",
+      "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/photoswipe": {
+      "version": "5.4.3",
+      "resolved": "https://registry.npmjs.org/photoswipe/-/photoswipe-5.4.3.tgz",
+      "integrity": "sha512-9UC6oJBK4oXFZ5HcdlcvGkfEHsVrmE4csUdCQhEjHYb3PvPLO3PG7UhnPuOgjxwmhq5s17Un5NUdum01LgBDng==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "dev": true
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/pngjs": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
+      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "8.4.32",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
+      "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "nanoid": "^3.3.7",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/postcss-load-config": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+      "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "lilconfig": "^3.0.0",
+        "yaml": "^2.3.4"
+      },
+      "engines": {
+        "node": ">= 14"
+      },
+      "peerDependencies": {
+        "postcss": ">=8.0.9",
+        "ts-node": ">=9.0.0"
+      },
+      "peerDependenciesMeta": {
+        "postcss": {
+          "optional": true
+        },
+        "ts-node": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/postcss-value-parser": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+      "dev": true
+    },
+    "node_modules/pretty-bytes": {
+      "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
+      "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/prismjs": {
+      "version": "1.29.0",
+      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+      "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/punycode": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/qrcode": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz",
+      "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
+      "dev": true,
+      "dependencies": {
+        "dijkstrajs": "^1.0.1",
+        "encode-utf8": "^1.0.3",
+        "pngjs": "^5.0.0",
+        "yargs": "^15.3.1"
+      },
+      "bin": {
+        "qrcode": "bin/qrcode"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/randombytes": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/readable-stream": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dev": true,
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/regenerate": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+      "dev": true
+    },
+    "node_modules/regenerate-unicode-properties": {
+      "version": "10.1.1",
+      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
+      "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
+      "dev": true,
+      "dependencies": {
+        "regenerate": "^1.4.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.14.1",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+      "dev": true
+    },
+    "node_modules/regenerator-transform": {
+      "version": "0.15.2",
+      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+      "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/runtime": "^7.8.4"
+      }
+    },
+    "node_modules/regexp.prototype.flags": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
+      "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "set-function-name": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/regexpu-core": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
+      "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/regjsgen": "^0.8.0",
+        "regenerate": "^1.4.2",
+        "regenerate-unicode-properties": "^10.1.0",
+        "regjsparser": "^0.9.1",
+        "unicode-match-property-ecmascript": "^2.0.0",
+        "unicode-match-property-value-ecmascript": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/register-service-worker": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.2.tgz",
+      "integrity": "sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A==",
+      "dev": true
+    },
+    "node_modules/regjsparser": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
+      "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+      "dev": true,
+      "dependencies": {
+        "jsesc": "~0.5.0"
+      },
+      "bin": {
+        "regjsparser": "bin/parser"
+      }
+    },
+    "node_modules/regjsparser/node_modules/jsesc": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+      "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+      "dev": true,
+      "bin": {
+        "jsesc": "bin/jsesc"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-from-string": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+      "dev": true
+    },
+    "node_modules/resolve": {
+      "version": "1.22.8",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+      "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+      "dev": true,
+      "dependencies": {
+        "is-core-module": "^2.13.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/restore-cursor": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz",
+      "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==",
+      "dev": true,
+      "dependencies": {
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true,
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rollup": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz",
+      "integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==",
+      "dev": true,
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=18.0.0",
+        "npm": ">=8.0.0"
+      },
+      "optionalDependencies": {
+        "@rollup/rollup-android-arm-eabi": "4.9.1",
+        "@rollup/rollup-android-arm64": "4.9.1",
+        "@rollup/rollup-darwin-arm64": "4.9.1",
+        "@rollup/rollup-darwin-x64": "4.9.1",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.9.1",
+        "@rollup/rollup-linux-arm64-gnu": "4.9.1",
+        "@rollup/rollup-linux-arm64-musl": "4.9.1",
+        "@rollup/rollup-linux-riscv64-gnu": "4.9.1",
+        "@rollup/rollup-linux-x64-gnu": "4.9.1",
+        "@rollup/rollup-linux-x64-musl": "4.9.1",
+        "@rollup/rollup-win32-arm64-msvc": "4.9.1",
+        "@rollup/rollup-win32-ia32-msvc": "4.9.1",
+        "@rollup/rollup-win32-x64-msvc": "4.9.1",
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "node_modules/safe-array-concat": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz",
+      "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.2.1",
+        "has-symbols": "^1.0.3",
+        "isarray": "^2.0.5"
+      },
+      "engines": {
+        "node": ">=0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/safe-regex-test": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
+      "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.3",
+        "is-regex": "^1.1.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/sass": {
+      "version": "1.69.6",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.6.tgz",
+      "integrity": "sha512-qbRr3k9JGHWXCvZU77SD2OTwUlC+gNT+61JOLcmLm+XqH4h/5D+p4IIsxvpkB89S9AwJOyb5+rWNpIucaFxSFQ==",
+      "dev": true,
+      "dependencies": {
+        "chokidar": ">=3.0.0 <4.0.0",
+        "immutable": "^4.0.0",
+        "source-map-js": ">=0.6.2 <2.0.0"
+      },
+      "bin": {
+        "sass": "sass.js"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
+    "node_modules/sax": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
+      "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==",
+      "dev": true
+    },
+    "node_modules/section-matter": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
+      "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
+      "dev": true,
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/semver": {
+      "version": "7.5.4",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+      "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/serialize-javascript": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+      "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+      "dev": true,
+      "dependencies": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "node_modules/set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+      "dev": true
+    },
+    "node_modules/set-function-length": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
+      "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+      "dev": true,
+      "dependencies": {
+        "define-data-property": "^1.1.1",
+        "get-intrinsic": "^1.2.1",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/set-function-name": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
+      "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
+      "dev": true,
+      "dependencies": {
+        "define-data-property": "^1.0.1",
+        "functions-have-names": "^1.2.3",
+        "has-property-descriptors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/side-channel": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "dev": true
+    },
+    "node_modules/sitemap": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz",
+      "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "^17.0.5",
+        "@types/sax": "^1.2.1",
+        "arg": "^5.0.0",
+        "sax": "^1.2.4"
+      },
+      "bin": {
+        "sitemap": "dist/cli.js"
+      },
+      "engines": {
+        "node": ">=12.0.0",
+        "npm": ">=5.6.0"
+      }
+    },
+    "node_modules/sitemap/node_modules/@types/node": {
+      "version": "17.0.45",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
+      "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==",
+      "dev": true
+    },
+    "node_modules/slash": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+      "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
+      "dev": true,
+      "engines": {
+        "node": ">=14.16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/slimsearch": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/slimsearch/-/slimsearch-2.0.0.tgz",
+      "integrity": "sha512-+G9FHWeVkwOTbEyhFIWvCz1T2fQusbn9756KhttfLygAcdjDOy1hpcPtWjnH4V9lp4qRElbvRqefOnlf/R0OAg==",
+      "dev": true,
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/source-map": {
+      "version": "0.8.0-beta.0",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
+      "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
+      "dev": true,
+      "dependencies": {
+        "whatwg-url": "^7.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-support": {
+      "version": "0.5.21",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+      "dev": true,
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/source-map-support/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+      "deprecated": "Please use @jridgewell/sourcemap-codec instead",
+      "dev": true
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+      "dev": true
+    },
+    "node_modules/stdin-discarder": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz",
+      "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==",
+      "dev": true,
+      "dependencies": {
+        "bl": "^5.0.0"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/string_decoder": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "~5.2.0"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz",
+      "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==",
+      "dev": true,
+      "dependencies": {
+        "eastasianwidth": "^0.2.0",
+        "emoji-regex": "^10.2.1",
+        "strip-ansi": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/string.prototype.matchall": {
+      "version": "4.0.10",
+      "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz",
+      "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1",
+        "get-intrinsic": "^1.2.1",
+        "has-symbols": "^1.0.3",
+        "internal-slot": "^1.0.5",
+        "regexp.prototype.flags": "^1.5.0",
+        "set-function-name": "^2.0.0",
+        "side-channel": "^1.0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trim": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
+      "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trimend": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz",
+      "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trimstart": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz",
+      "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/stringify-object": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
+      "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
+      "dev": true,
+      "dependencies": {
+        "get-own-enumerable-property-symbols": "^3.0.0",
+        "is-obj": "^1.0.1",
+        "is-regexp": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+      }
+    },
+    "node_modules/strip-bom-string": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+      "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-comments": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz",
+      "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/strip-final-newline": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+      "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/striptags": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz",
+      "integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==",
+      "dev": true
+    },
+    "node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/temp-dir": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
+      "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/tempy": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz",
+      "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==",
+      "dev": true,
+      "dependencies": {
+        "is-stream": "^2.0.0",
+        "temp-dir": "^2.0.0",
+        "type-fest": "^0.16.0",
+        "unique-string": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/tempy/node_modules/is-stream": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/terser": {
+      "version": "5.26.0",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz",
+      "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/source-map": "^0.3.3",
+        "acorn": "^8.8.2",
+        "commander": "^2.20.0",
+        "source-map-support": "~0.5.20"
+      },
+      "bin": {
+        "terser": "bin/terser"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/tr46": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+      "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+      "dev": true,
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/ts-debounce": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/ts-debounce/-/ts-debounce-4.0.0.tgz",
+      "integrity": "sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg==",
+      "dev": true
+    },
+    "node_modules/type-fest": {
+      "version": "0.16.0",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
+      "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/typed-array-buffer": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
+      "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.2.1",
+        "is-typed-array": "^1.1.10"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/typed-array-byte-length": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
+      "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "for-each": "^0.3.3",
+        "has-proto": "^1.0.1",
+        "is-typed-array": "^1.1.10"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/typed-array-byte-offset": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
+      "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
+      "dev": true,
+      "dependencies": {
+        "available-typed-arrays": "^1.0.5",
+        "call-bind": "^1.0.2",
+        "for-each": "^0.3.3",
+        "has-proto": "^1.0.1",
+        "is-typed-array": "^1.1.10"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/typed-array-length": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+      "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "for-each": "^0.3.3",
+        "is-typed-array": "^1.1.9"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/uc.micro": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+      "dev": true
+    },
+    "node_modules/unbox-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-bigints": "^1.0.2",
+        "has-symbols": "^1.0.3",
+        "which-boxed-primitive": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/undici-types": {
+      "version": "5.26.5",
+      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+      "dev": true
+    },
+    "node_modules/unicode-canonical-property-names-ecmascript": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-ecmascript": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+      "dev": true,
+      "dependencies": {
+        "unicode-canonical-property-names-ecmascript": "^2.0.0",
+        "unicode-property-aliases-ecmascript": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-value-ecmascript": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+      "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-property-aliases-ecmascript": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+      "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicorn-magic": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
+      "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/unique-string": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+      "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+      "dev": true,
+      "dependencies": {
+        "crypto-random-string": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/universalify": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+      "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "node_modules/upath": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
+      "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==",
+      "dev": true,
+      "engines": {
+        "node": ">=4",
+        "yarn": "*"
+      }
+    },
+    "node_modules/update-browserslist-db": {
+      "version": "1.0.13",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+      "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "escalade": "^3.1.1",
+        "picocolors": "^1.0.0"
+      },
+      "bin": {
+        "update-browserslist-db": "cli.js"
+      },
+      "peerDependencies": {
+        "browserslist": ">= 4.21.0"
+      }
+    },
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+      "dev": true
+    },
+    "node_modules/vite": {
+      "version": "5.0.12",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz",
+      "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==",
+      "dev": true,
+      "dependencies": {
+        "esbuild": "^0.19.3",
+        "postcss": "^8.4.32",
+        "rollup": "^4.2.0"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": "^18.0.0 || >=20.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/vitejs/vite?sponsor=1"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.3"
+      },
+      "peerDependencies": {
+        "@types/node": "^18.0.0 || >=20.0.0",
+        "less": "*",
+        "lightningcss": "^1.21.0",
+        "sass": "*",
+        "stylus": "*",
+        "sugarss": "*",
+        "terser": "^5.4.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "lightningcss": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "terser": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.0.tgz",
+      "integrity": "sha512-iTE9Ve/7DO/H39+gXHrNkRdnh1jDwPe/fap4brbPKkp1APMkS03OiZ+UY0dwpqtRX0iPWQTkh8Fu3hKgLtaxfA==",
+      "dev": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.4.0",
+        "@vue/compiler-sfc": "3.4.0",
+        "@vue/runtime-dom": "3.4.0",
+        "@vue/server-renderer": "3.4.0",
+        "@vue/shared": "3.4.0"
+      },
+      "peerDependencies": {
+        "typescript": "*"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue-router": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
+      "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+      "dev": true,
+      "dependencies": {
+        "@vue/devtools-api": "^6.5.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/posva"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/vuepress": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/vuepress/-/vuepress-2.0.0-rc.0.tgz",
+      "integrity": "sha512-sydt/B7+pIw926G5PntYmptLkC5o2buXKh+WR1+P2KnsvkXU+UGnQrJJ0FBvu/4RNuY99tkUZd59nyPhEmRrCg==",
+      "dev": true,
+      "dependencies": {
+        "vuepress-vite": "2.0.0-rc.0"
+      },
+      "bin": {
+        "vuepress": "bin/vuepress.js"
+      },
+      "engines": {
+        "node": ">=18.16.0"
+      }
+    },
+    "node_modules/vuepress-plugin-auto-catalog": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-auto-catalog/-/vuepress-plugin-auto-catalog-2.0.0-rc.7.tgz",
+      "integrity": "sha512-MM4Y7uf3txqc9TQYZtpaynvGSROtuw2GyHA5l3n5NB8D55tjvq+xpg0KfOfKmApL/yhu37EcUNMRkLlBgmwDJQ==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "vue": "^3.3.13",
+        "vue-router": "^4.2.5",
+        "vuepress-plugin-components": "2.0.0-rc.7",
+        "vuepress-plugin-sass-palette": "2.0.0-rc.7",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "sass-loader": "^13.3.2",
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "sass-loader": {
+          "optional": true
+        },
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-blog2": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-blog2/-/vuepress-plugin-blog2-2.0.0-rc.7.tgz",
+      "integrity": "sha512-fS2EsvzpzxNfI6G8cYHvXqkoo6+1GDFjzL28Kna8EbRrJjd+A+8ciLMkV/JNArj8D6E4DQiHoECwXUMkqnLD4w==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "chokidar": "^3.5.3",
+        "vue": "^3.3.13",
+        "vue-router": "^4.2.5",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-comment2": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-comment2/-/vuepress-plugin-comment2-2.0.0-rc.7.tgz",
+      "integrity": "sha512-bZ5BhJ/dQdc24GDc1T95nRCnkjZZo05wpSSU2pI7sRZSeX6MjbpJLMNJPKH3BIMQQQaQUZUIzKLl4U0ja9B07A==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "giscus": "^1.4.0",
+        "vue": "^3.3.13",
+        "vue-router": "^4.2.5",
+        "vuepress-plugin-sass-palette": "2.0.0-rc.7",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "@waline/client": "^2.15.8 || ^3.0.0-alpha.8",
+        "artalk": "^2.7.2",
+        "sass-loader": "^13.3.2",
+        "twikoo": "^1.5.0",
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "@waline/client": {
+          "optional": true
+        },
+        "artalk": {
+          "optional": true
+        },
+        "sass-loader": {
+          "optional": true
+        },
+        "twikoo": {
+          "optional": true
+        },
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-components": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-components/-/vuepress-plugin-components-2.0.0-rc.7.tgz",
+      "integrity": "sha512-P5X+UXwHFp6G/SXKRcaKpYrXvcPsp5lC1E+bbhrL026IhzUI59sVHrCcoZDwnyOve24BGPZbiACMSzX/Bu2T+g==",
+      "dev": true,
+      "dependencies": {
+        "@stackblitz/sdk": "^1.9.0",
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "@vueuse/core": "^10.7.0",
+        "balloon-css": "^1.2.0",
+        "create-codepen": "1.0.1",
+        "qrcode": "^1.5.3",
+        "vue": "^3.3.13",
+        "vue-router": "^4.2.5",
+        "vuepress-plugin-reading-time2": "2.0.0-rc.7",
+        "vuepress-plugin-sass-palette": "2.0.0-rc.7",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "artplayer": "^5.0.0",
+        "dashjs-pure": "^1.0.0",
+        "hls.js": "^1.4.12",
+        "mpegts.js": "^1.7.3",
+        "plyr": "^3.7.8",
+        "sass-loader": "^13.3.2",
+        "vidstack": "^1.9.0",
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "artplayer": {
+          "optional": true
+        },
+        "dashjs-pure": {
+          "optional": true
+        },
+        "hls.js": {
+          "optional": true
+        },
+        "mpegts.js": {
+          "optional": true
+        },
+        "plyr": {
+          "optional": true
+        },
+        "sass-loader": {
+          "optional": true
+        },
+        "vidstack": {
+          "optional": true
+        },
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-copy-code2": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-copy-code2/-/vuepress-plugin-copy-code2-2.0.0-rc.7.tgz",
+      "integrity": "sha512-V67QQHGjwOpRscxIyduF1rdAy139g2FwgwbhMcPblwpthd9w7fwDKuBc1VPJPICBasrVLFfOSgD1vtMsHiBx1g==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "@vueuse/core": "^10.7.0",
+        "balloon-css": "^1.2.0",
+        "vue": "^3.3.13",
+        "vue-router": "^4.2.5",
+        "vuepress-plugin-sass-palette": "2.0.0-rc.7",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "sass-loader": "^13.3.2",
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "sass-loader": {
+          "optional": true
+        },
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-copyright2": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-copyright2/-/vuepress-plugin-copyright2-2.0.0-rc.7.tgz",
+      "integrity": "sha512-GiOcz91UBAF4vSvphWphkJeE6kyP9n45DAnvNKBBzeqSJc/pWoOJEMCWMarMR+LmW1YTu/oy5hY2NPZMm9affw==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "@vueuse/core": "^10.7.0",
+        "vue": "^3.3.13",
+        "vue-router": "^4.2.5",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-feed2": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-feed2/-/vuepress-plugin-feed2-2.0.0-rc.7.tgz",
+      "integrity": "sha512-UJuu6u075VlW7bJeQBB8ZulcVsmp9ysifAiTCwVSSQ7MxUwnAGzzN5mG0TVNgObqTz2YnYSS9J9Pdu6Ms9uCpw==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "cheerio": "1.0.0-rc.12",
+        "vuepress-shared": "2.0.0-rc.7",
+        "xml-js": "^1.6.11"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-md-enhance": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-md-enhance/-/vuepress-plugin-md-enhance-2.0.0-rc.7.tgz",
+      "integrity": "sha512-UHcsPNbbg9itmIndTKn5nObjy/eVzbNo+6A9P1JaOPfNukkC6H7LaHHgwMlPXNsmaeYZmR18ZA+NCSTGcRDTvQ==",
+      "dev": true,
+      "dependencies": {
+        "@mdit/plugin-alert": "0.7.6",
+        "@mdit/plugin-align": "0.7.6",
+        "@mdit/plugin-attrs": "0.7.6",
+        "@mdit/plugin-container": "0.7.6",
+        "@mdit/plugin-demo": "0.7.6",
+        "@mdit/plugin-figure": "0.7.6",
+        "@mdit/plugin-footnote": "0.7.6",
+        "@mdit/plugin-img-lazyload": "0.7.6",
+        "@mdit/plugin-img-mark": "0.7.6",
+        "@mdit/plugin-img-size": "0.7.6",
+        "@mdit/plugin-include": "0.7.6",
+        "@mdit/plugin-katex": "0.7.6",
+        "@mdit/plugin-mark": "0.7.6",
+        "@mdit/plugin-mathjax": "0.7.6",
+        "@mdit/plugin-stylize": "0.7.6",
+        "@mdit/plugin-sub": "0.7.6",
+        "@mdit/plugin-sup": "0.7.6",
+        "@mdit/plugin-tab": "0.7.6",
+        "@mdit/plugin-tasklist": "0.7.6",
+        "@mdit/plugin-tex": "0.7.6",
+        "@mdit/plugin-uml": "0.7.6",
+        "@types/markdown-it": "^13.0.7",
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "@vueuse/core": "^10.7.0",
+        "balloon-css": "^1.2.0",
+        "js-yaml": "^4.1.0",
+        "vue": "^3.3.13",
+        "vue-router": "^4.2.5",
+        "vuepress-plugin-sass-palette": "2.0.0-rc.7",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "@types/reveal.js": "^4.4.5",
+        "@vue/repl": "^3.0.0",
+        "chart.js": "^4.0.0",
+        "echarts": "^5.0.0",
+        "flowchart.ts": "^2.0.0 || ^3.0.0",
+        "katex": "^0.16.0",
+        "kotlin-playground": "^1.23.0",
+        "markmap-lib": "^0.15.5",
+        "markmap-toolbar": "^0.15.5",
+        "markmap-view": "^0.15.5",
+        "mathjax-full": "^3.2.2",
+        "mermaid": "^10.6.0",
+        "reveal.js": "^5.0.0",
+        "sass-loader": "^13.3.2",
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/reveal.js": {
+          "optional": true
+        },
+        "@vue/repl": {
+          "optional": true
+        },
+        "chart.js": {
+          "optional": true
+        },
+        "echarts": {
+          "optional": true
+        },
+        "flowchart.ts": {
+          "optional": true
+        },
+        "katex": {
+          "optional": true
+        },
+        "kotlin-playground": {
+          "optional": true
+        },
+        "markmap-lib": {
+          "optional": true
+        },
+        "markmap-toolbar": {
+          "optional": true
+        },
+        "markmap-view": {
+          "optional": true
+        },
+        "mathjax-full": {
+          "optional": true
+        },
+        "mermaid": {
+          "optional": true
+        },
+        "reveal.js": {
+          "optional": true
+        },
+        "sass-loader": {
+          "optional": true
+        },
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-md-enhance/node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true
+    },
+    "node_modules/vuepress-plugin-md-enhance/node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/vuepress-plugin-photo-swipe": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-photo-swipe/-/vuepress-plugin-photo-swipe-2.0.0-rc.7.tgz",
+      "integrity": "sha512-kdEVkWddwgWwTMrAOWOMilaUi56t+NcPXZrEyPvNemFykEzkuPHpVREH3X9TsIANDxrgWrigtcnAEGtkBugTtQ==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "@vueuse/core": "^10.7.0",
+        "photoswipe": "^5.4.3",
+        "vue": "^3.3.13",
+        "vue-router": "^4.2.5",
+        "vuepress-plugin-sass-palette": "2.0.0-rc.7",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "sass-loader": "^13.3.2",
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "sass-loader": {
+          "optional": true
+        },
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-pwa2": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-pwa2/-/vuepress-plugin-pwa2-2.0.0-rc.7.tgz",
+      "integrity": "sha512-SydLb8UtA9Am24+cMmQIohaeSUh3zlZlB8qFL/rP+H8C5j8x78FCaQd1UrGNBLy7I+y/yCOgJzikNLlm4lMdiw==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "@vueuse/core": "^10.7.0",
+        "mitt": "^3.0.1",
+        "register-service-worker": "^1.7.2",
+        "vue": "^3.3.13",
+        "vue-router": "^4.2.5",
+        "vuepress-plugin-sass-palette": "2.0.0-rc.7",
+        "vuepress-shared": "2.0.0-rc.7",
+        "workbox-build": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "sass-loader": "^13.3.2",
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "sass-loader": {
+          "optional": true
+        },
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-reading-time2": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-reading-time2/-/vuepress-plugin-reading-time2-2.0.0-rc.7.tgz",
+      "integrity": "sha512-OBFxXNZQGOyhzIx2ZfJ/nPBiFJYRGOCT+1GrZRjeW0cfrdvgYZo6x2jDBDtmrrzT3TlhZRpQDZB6QMbiORQhPQ==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "vue": "^3.3.13",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next": {
+      "version": "2.0.0-rc.0.2",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-readmore-popular-next/-/vuepress-plugin-readmore-popular-next-2.0.0-rc.0.2.tgz",
+      "integrity": "sha512-v7W1+ugpXZoHUitlxXf/b3j5gZepJ9zAO0SrLIKk9282EF+0JaRlFO7Am763W4z+NTV91jh+BH4w52ofs6QO0Q==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "chalk": "4.1.2",
+        "node-match-path": "0.6.3",
+        "vue": "3.3.8",
+        "vue-router": "4.2.5"
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/@vue/compiler-core": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.8.tgz",
+      "integrity": "sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.23.0",
+        "@vue/shared": "3.3.8",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/@vue/compiler-dom": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz",
+      "integrity": "sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==",
+      "dev": true,
+      "dependencies": {
+        "@vue/compiler-core": "3.3.8",
+        "@vue/shared": "3.3.8"
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/@vue/compiler-sfc": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz",
+      "integrity": "sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.23.0",
+        "@vue/compiler-core": "3.3.8",
+        "@vue/compiler-dom": "3.3.8",
+        "@vue/compiler-ssr": "3.3.8",
+        "@vue/reactivity-transform": "3.3.8",
+        "@vue/shared": "3.3.8",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.5",
+        "postcss": "^8.4.31",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/@vue/compiler-ssr": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz",
+      "integrity": "sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==",
+      "dev": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.8",
+        "@vue/shared": "3.3.8"
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/@vue/reactivity": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.8.tgz",
+      "integrity": "sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==",
+      "dev": true,
+      "dependencies": {
+        "@vue/shared": "3.3.8"
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/@vue/runtime-core": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.8.tgz",
+      "integrity": "sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==",
+      "dev": true,
+      "dependencies": {
+        "@vue/reactivity": "3.3.8",
+        "@vue/shared": "3.3.8"
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/@vue/runtime-dom": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz",
+      "integrity": "sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==",
+      "dev": true,
+      "dependencies": {
+        "@vue/runtime-core": "3.3.8",
+        "@vue/shared": "3.3.8",
+        "csstype": "^3.1.2"
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/@vue/server-renderer": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.8.tgz",
+      "integrity": "sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==",
+      "dev": true,
+      "dependencies": {
+        "@vue/compiler-ssr": "3.3.8",
+        "@vue/shared": "3.3.8"
+      },
+      "peerDependencies": {
+        "vue": "3.3.8"
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/@vue/shared": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.8.tgz",
+      "integrity": "sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==",
+      "dev": true
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/vuepress-plugin-readmore-popular-next/node_modules/vue": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.8.tgz",
+      "integrity": "sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==",
+      "dev": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.8",
+        "@vue/compiler-sfc": "3.3.8",
+        "@vue/runtime-dom": "3.3.8",
+        "@vue/server-renderer": "3.3.8",
+        "@vue/shared": "3.3.8"
+      },
+      "peerDependencies": {
+        "typescript": "*"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-rtl": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-rtl/-/vuepress-plugin-rtl-2.0.0-rc.7.tgz",
+      "integrity": "sha512-R9VdO8DJE2kPxWYUDV/6erq4wbPC/I98E2fNJuBC8bHEj1IS1DReEP0g8PyBMYT/nozkMWfa6aIZPjkXlaNIiA==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "vue": "^3.3.13",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-sass-palette": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-sass-palette/-/vuepress-plugin-sass-palette-2.0.0-rc.7.tgz",
+      "integrity": "sha512-xi8UDaPGS67MVzUDoaQN67dZoTjkW30KpHQJH8R/6DybOz9hC0oVqvkZM9waPPCCdcPytxVUfVDdincARZ4eHw==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "chokidar": "^3.5.3",
+        "sass": "^1.69.5",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "sass-loader": "^13.3.2",
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "sass-loader": {
+          "optional": true
+        },
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-search-pro": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-search-pro/-/vuepress-plugin-search-pro-2.0.0-rc.7.tgz",
+      "integrity": "sha512-MtzVQG7y2Kq8IMNAIFxARPrIS1snKve7sAe7no5KzrE+zL6LNZYZCy0r9YUsrUy27QDg8qo7hYrL/8SEv4c/BQ==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "@vueuse/core": "^10.7.0",
+        "cheerio": "1.0.0-rc.12",
+        "chokidar": "^3.5.3",
+        "slimsearch": "^2.0.0",
+        "vue": "^3.3.13",
+        "vue-router": "^4.2.5",
+        "vuepress-plugin-sass-palette": "2.0.0-rc.7",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "sass-loader": "^13.3.2",
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "sass-loader": {
+          "optional": true
+        },
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-seo2": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-seo2/-/vuepress-plugin-seo2-2.0.0-rc.7.tgz",
+      "integrity": "sha512-WHn4s1N2cHPQZQh+rZyiH9mDtGYFh9E2F5ZUV3LT2IddGuHluzuwVScIxix9q76AvbdCl4rhg7vr97oc8oPoUA==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-plugin-sitemap2": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-plugin-sitemap2/-/vuepress-plugin-sitemap2-2.0.0-rc.7.tgz",
+      "integrity": "sha512-Vc13ucmamsXu0PD9Gu1lRm0NKOAwV/h3hZA+h2jAnavsiAqkAUF1WmvjNLPMWCVz77lez3knQNpWDoHZVBoxLQ==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "sitemap": "^7.1.1",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-shared": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-shared/-/vuepress-shared-2.0.0-rc.7.tgz",
+      "integrity": "sha512-1EUgbOe8/VK0yuzau2mtL22Av2547zVJP/q2niCoCyBTzMrn0agaWSRIDhhQx+e4xPlE5Mi3FsCHDXTfkWSuIw==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "@vueuse/core": "^10.7.0",
+        "cheerio": "1.0.0-rc.12",
+        "dayjs": "^1.11.10",
+        "execa": "^8.0.1",
+        "fflate": "^0.8.1",
+        "gray-matter": "^4.0.3",
+        "semver": "^7.5.4",
+        "striptags": "^3.2.0",
+        "vue": "^3.3.13",
+        "vue-router": "^4.2.5"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-theme-hope": {
+      "version": "2.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/vuepress-theme-hope/-/vuepress-theme-hope-2.0.0-rc.7.tgz",
+      "integrity": "sha512-dD8UOspS52Jn7IF4kRmWYFLBSV9iILEyat2rFMflu7TrmJ46xwtfkYtqnPce8OKYvN4uqXnzMNmKTrp+Skcqdw==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/cli": "2.0.0-rc.0",
+        "@vuepress/client": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/plugin-active-header-links": "2.0.0-rc.0",
+        "@vuepress/plugin-container": "2.0.0-rc.0",
+        "@vuepress/plugin-external-link-icon": "2.0.0-rc.0",
+        "@vuepress/plugin-git": "2.0.0-rc.0",
+        "@vuepress/plugin-nprogress": "2.0.0-rc.0",
+        "@vuepress/plugin-prismjs": "2.0.0-rc.0",
+        "@vuepress/plugin-theme-data": "2.0.0-rc.0",
+        "@vuepress/shared": "2.0.0-rc.0",
+        "@vuepress/utils": "2.0.0-rc.0",
+        "@vueuse/core": "^10.7.0",
+        "balloon-css": "^1.2.0",
+        "bcrypt-ts": "^5.0.0",
+        "cheerio": "1.0.0-rc.12",
+        "chokidar": "^3.5.3",
+        "gray-matter": "^4.0.3",
+        "vue": "^3.3.13",
+        "vue-router": "^4.2.5",
+        "vuepress-plugin-auto-catalog": "2.0.0-rc.7",
+        "vuepress-plugin-blog2": "2.0.0-rc.7",
+        "vuepress-plugin-comment2": "2.0.0-rc.7",
+        "vuepress-plugin-components": "2.0.0-rc.7",
+        "vuepress-plugin-copy-code2": "2.0.0-rc.7",
+        "vuepress-plugin-copyright2": "2.0.0-rc.7",
+        "vuepress-plugin-feed2": "2.0.0-rc.7",
+        "vuepress-plugin-md-enhance": "2.0.0-rc.7",
+        "vuepress-plugin-photo-swipe": "2.0.0-rc.7",
+        "vuepress-plugin-pwa2": "2.0.0-rc.7",
+        "vuepress-plugin-reading-time2": "2.0.0-rc.7",
+        "vuepress-plugin-rtl": "2.0.0-rc.7",
+        "vuepress-plugin-sass-palette": "2.0.0-rc.7",
+        "vuepress-plugin-seo2": "2.0.0-rc.7",
+        "vuepress-plugin-sitemap2": "2.0.0-rc.7",
+        "vuepress-shared": "2.0.0-rc.7"
+      },
+      "engines": {
+        "node": ">=18.16.0",
+        "npm": ">=8",
+        "pnpm": ">=7",
+        "yarn": ">=2"
+      },
+      "peerDependencies": {
+        "sass-loader": "^13.3.2",
+        "vuepress": "2.0.0-rc.0",
+        "vuepress-vite": "2.0.0-rc.0",
+        "vuepress-webpack": "2.0.0-rc.0"
+      },
+      "peerDependenciesMeta": {
+        "sass-loader": {
+          "optional": true
+        },
+        "vuepress": {
+          "optional": true
+        },
+        "vuepress-vite": {
+          "optional": true
+        },
+        "vuepress-webpack": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vuepress-vite": {
+      "version": "2.0.0-rc.0",
+      "resolved": "https://registry.npmjs.org/vuepress-vite/-/vuepress-vite-2.0.0-rc.0.tgz",
+      "integrity": "sha512-+2XBejeiskPyr2raBeA2o4uDFDsjtadpUVmtio3qqFtQpOhidz/ORuiTLr2UfLtFn1ASIHP6Vy2YjQ0e/TeUVw==",
+      "dev": true,
+      "dependencies": {
+        "@vuepress/bundler-vite": "2.0.0-rc.0",
+        "@vuepress/cli": "2.0.0-rc.0",
+        "@vuepress/core": "2.0.0-rc.0",
+        "@vuepress/theme-default": "2.0.0-rc.0",
+        "vue": "^3.3.8"
+      },
+      "bin": {
+        "vuepress": "bin/vuepress.js",
+        "vuepress-vite": "bin/vuepress.js"
+      },
+      "engines": {
+        "node": ">=18.16.0"
+      },
+      "peerDependencies": {
+        "@vuepress/client": "2.0.0-rc.0",
+        "vue": "^3.3.4"
+      }
+    },
+    "node_modules/webidl-conversions": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+      "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+      "dev": true
+    },
+    "node_modules/whatwg-url": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+      "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+      "dev": true,
+      "dependencies": {
+        "lodash.sortby": "^4.7.0",
+        "tr46": "^1.0.1",
+        "webidl-conversions": "^4.0.2"
+      }
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/which-boxed-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+      "dev": true,
+      "dependencies": {
+        "is-bigint": "^1.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "is-symbol": "^1.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/which-module": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
+      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
+      "dev": true
+    },
+    "node_modules/which-typed-array": {
+      "version": "1.1.13",
+      "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
+      "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
+      "dev": true,
+      "dependencies": {
+        "available-typed-arrays": "^1.0.5",
+        "call-bind": "^1.0.4",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/workbox-background-sync": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.0.0.tgz",
+      "integrity": "sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==",
+      "dev": true,
+      "dependencies": {
+        "idb": "^7.0.1",
+        "workbox-core": "7.0.0"
+      }
+    },
+    "node_modules/workbox-broadcast-update": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.0.0.tgz",
+      "integrity": "sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==",
+      "dev": true,
+      "dependencies": {
+        "workbox-core": "7.0.0"
+      }
+    },
+    "node_modules/workbox-build": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.0.0.tgz",
+      "integrity": "sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==",
+      "dev": true,
+      "dependencies": {
+        "@apideck/better-ajv-errors": "^0.3.1",
+        "@babel/core": "^7.11.1",
+        "@babel/preset-env": "^7.11.0",
+        "@babel/runtime": "^7.11.2",
+        "@rollup/plugin-babel": "^5.2.0",
+        "@rollup/plugin-node-resolve": "^11.2.1",
+        "@rollup/plugin-replace": "^2.4.1",
+        "@surma/rollup-plugin-off-main-thread": "^2.2.3",
+        "ajv": "^8.6.0",
+        "common-tags": "^1.8.0",
+        "fast-json-stable-stringify": "^2.1.0",
+        "fs-extra": "^9.0.1",
+        "glob": "^7.1.6",
+        "lodash": "^4.17.20",
+        "pretty-bytes": "^5.3.0",
+        "rollup": "^2.43.1",
+        "rollup-plugin-terser": "^7.0.0",
+        "source-map": "^0.8.0-beta.0",
+        "stringify-object": "^3.3.0",
+        "strip-comments": "^2.0.1",
+        "tempy": "^0.6.0",
+        "upath": "^1.2.0",
+        "workbox-background-sync": "7.0.0",
+        "workbox-broadcast-update": "7.0.0",
+        "workbox-cacheable-response": "7.0.0",
+        "workbox-core": "7.0.0",
+        "workbox-expiration": "7.0.0",
+        "workbox-google-analytics": "7.0.0",
+        "workbox-navigation-preload": "7.0.0",
+        "workbox-precaching": "7.0.0",
+        "workbox-range-requests": "7.0.0",
+        "workbox-recipes": "7.0.0",
+        "workbox-routing": "7.0.0",
+        "workbox-strategies": "7.0.0",
+        "workbox-streams": "7.0.0",
+        "workbox-sw": "7.0.0",
+        "workbox-window": "7.0.0"
+      },
+      "engines": {
+        "node": ">=16.0.0"
+      }
+    },
+    "node_modules/workbox-build/node_modules/@rollup/plugin-babel": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
+      "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.10.4",
+        "@rollup/pluginutils": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0",
+        "@types/babel__core": "^7.1.9",
+        "rollup": "^1.20.0||^2.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/babel__core": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/workbox-build/node_modules/@rollup/plugin-node-resolve": {
+      "version": "11.2.1",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz",
+      "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==",
+      "dev": true,
+      "dependencies": {
+        "@rollup/pluginutils": "^3.1.0",
+        "@types/resolve": "1.17.1",
+        "builtin-modules": "^3.1.0",
+        "deepmerge": "^4.2.2",
+        "is-module": "^1.0.0",
+        "resolve": "^1.19.0"
+      },
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "peerDependencies": {
+        "rollup": "^1.20.0||^2.0.0"
+      }
+    },
+    "node_modules/workbox-build/node_modules/@rollup/plugin-replace": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz",
+      "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==",
+      "dev": true,
+      "dependencies": {
+        "@rollup/pluginutils": "^3.1.0",
+        "magic-string": "^0.25.7"
+      },
+      "peerDependencies": {
+        "rollup": "^1.20.0 || ^2.0.0"
+      }
+    },
+    "node_modules/workbox-build/node_modules/@rollup/pluginutils": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
+      "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+      "dev": true,
+      "dependencies": {
+        "@types/estree": "0.0.39",
+        "estree-walker": "^1.0.1",
+        "picomatch": "^2.2.2"
+      },
+      "engines": {
+        "node": ">= 8.0.0"
+      },
+      "peerDependencies": {
+        "rollup": "^1.20.0||^2.0.0"
+      }
+    },
+    "node_modules/workbox-build/node_modules/estree-walker": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
+      "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
+      "dev": true
+    },
+    "node_modules/workbox-build/node_modules/fs-extra": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+      "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+      "dev": true,
+      "dependencies": {
+        "at-least-node": "^1.0.0",
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/workbox-build/node_modules/magic-string": {
+      "version": "0.25.9",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+      "dev": true,
+      "dependencies": {
+        "sourcemap-codec": "^1.4.8"
+      }
+    },
+    "node_modules/workbox-build/node_modules/rollup": {
+      "version": "2.79.1",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
+      "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+      "dev": true,
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/workbox-build/node_modules/rollup-plugin-terser": {
+      "version": "7.0.2",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
+      "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
+      "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.10.4",
+        "jest-worker": "^26.2.1",
+        "serialize-javascript": "^4.0.0",
+        "terser": "^5.0.0"
+      },
+      "peerDependencies": {
+        "rollup": "^2.0.0"
+      }
+    },
+    "node_modules/workbox-build/node_modules/upath": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+      "dev": true,
+      "engines": {
+        "node": ">=4",
+        "yarn": "*"
+      }
+    },
+    "node_modules/workbox-cacheable-response": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.0.0.tgz",
+      "integrity": "sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==",
+      "dev": true,
+      "dependencies": {
+        "workbox-core": "7.0.0"
+      }
+    },
+    "node_modules/workbox-core": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.0.0.tgz",
+      "integrity": "sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==",
+      "dev": true
+    },
+    "node_modules/workbox-expiration": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.0.0.tgz",
+      "integrity": "sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==",
+      "dev": true,
+      "dependencies": {
+        "idb": "^7.0.1",
+        "workbox-core": "7.0.0"
+      }
+    },
+    "node_modules/workbox-google-analytics": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.0.0.tgz",
+      "integrity": "sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==",
+      "dev": true,
+      "dependencies": {
+        "workbox-background-sync": "7.0.0",
+        "workbox-core": "7.0.0",
+        "workbox-routing": "7.0.0",
+        "workbox-strategies": "7.0.0"
+      }
+    },
+    "node_modules/workbox-navigation-preload": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.0.0.tgz",
+      "integrity": "sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==",
+      "dev": true,
+      "dependencies": {
+        "workbox-core": "7.0.0"
+      }
+    },
+    "node_modules/workbox-precaching": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.0.0.tgz",
+      "integrity": "sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==",
+      "dev": true,
+      "dependencies": {
+        "workbox-core": "7.0.0",
+        "workbox-routing": "7.0.0",
+        "workbox-strategies": "7.0.0"
+      }
+    },
+    "node_modules/workbox-range-requests": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.0.0.tgz",
+      "integrity": "sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==",
+      "dev": true,
+      "dependencies": {
+        "workbox-core": "7.0.0"
+      }
+    },
+    "node_modules/workbox-recipes": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.0.0.tgz",
+      "integrity": "sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==",
+      "dev": true,
+      "dependencies": {
+        "workbox-cacheable-response": "7.0.0",
+        "workbox-core": "7.0.0",
+        "workbox-expiration": "7.0.0",
+        "workbox-precaching": "7.0.0",
+        "workbox-routing": "7.0.0",
+        "workbox-strategies": "7.0.0"
+      }
+    },
+    "node_modules/workbox-routing": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.0.0.tgz",
+      "integrity": "sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==",
+      "dev": true,
+      "dependencies": {
+        "workbox-core": "7.0.0"
+      }
+    },
+    "node_modules/workbox-strategies": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.0.0.tgz",
+      "integrity": "sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==",
+      "dev": true,
+      "dependencies": {
+        "workbox-core": "7.0.0"
+      }
+    },
+    "node_modules/workbox-streams": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.0.0.tgz",
+      "integrity": "sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==",
+      "dev": true,
+      "dependencies": {
+        "workbox-core": "7.0.0",
+        "workbox-routing": "7.0.0"
+      }
+    },
+    "node_modules/workbox-sw": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.0.0.tgz",
+      "integrity": "sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==",
+      "dev": true
+    },
+    "node_modules/workbox-window": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.0.0.tgz",
+      "integrity": "sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==",
+      "dev": true,
+      "dependencies": {
+        "@types/trusted-types": "^2.0.2",
+        "workbox-core": "7.0.0"
+      }
+    },
+    "node_modules/wrap-ansi": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
+    "node_modules/wrap-ansi/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "dev": true
+    },
+    "node_modules/xml-js": {
+      "version": "1.6.11",
+      "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
+      "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==",
+      "dev": true,
+      "dependencies": {
+        "sax": "^1.2.4"
+      },
+      "bin": {
+        "xml-js": "bin/cli.js"
+      }
+    },
+    "node_modules/y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+      "dev": true
+    },
+    "node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    },
+    "node_modules/yaml": {
+      "version": "2.3.4",
+      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
+      "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/yargs": {
+      "version": "15.4.1",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+      "dev": true,
+      "dependencies": {
+        "cliui": "^6.0.0",
+        "decamelize": "^1.2.0",
+        "find-up": "^4.1.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^4.2.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^18.1.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "18.1.3",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/yargs/node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
+    "node_modules/yargs/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs/node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    }
+  }
+}
diff --git a/package.json b/package.json
index 472ca05f10..e777ad1b37 100644
--- a/package.json
+++ b/package.json
@@ -1,22 +1,23 @@
 {
-  "devDependencies": {
-    "@nolebase/vitepress-plugin-git-changelog": "^2.18.1",
-    "markdown-it-mathjax3": "^4.3.2",
-    "vitepress": "^1.6.3",
-    "vitepress-markdown-timeline": "^1.2.2"
-  },
+  "name": "java-park",
+  "version": "2.0.0",
+  "description": "The way to be a full stack javaer!",
+  "license": "MIT",
+  "type": "module",
   "scripts": {
-    "docs:dev": "vitepress dev docs",
-    "docs:build": "vitepress build docs",
-    "docs:preview": "vitepress preview docs"
+    "docs:build": "vuepress build src",
+    "docs:clean-dev": "vuepress dev src --clean-cache",
+    "docs:dev": "vuepress dev src",
+    "docs:update-package": "pnpm dlx vp-update"
   },
-  "dependencies": {
-    "@theojs/lumen": "^6.4.1",
-    "pagefind": "^1.3.0",
-    "pnpm": "^9.15.9",
-    "vitepress-plugin-51la": "^0.1.0",
-    "vitepress-plugin-announcement": "^0.1.5",
-    "vitepress-plugin-pagefind": "^0.4.14",
-    "vitepress-plugin-rss": "^0.3.1"
+  "devDependencies": {
+    "@vuepress/client": "2.0.0-rc.0",
+    "katex": "^0.16.9",
+    "mermaid": "^10.8.0",
+    "vue": "^3.4.0",
+    "vuepress": "2.0.0-rc.0",
+    "vuepress-plugin-readmore-popular-next": "^2.0.0-rc.0.2",
+    "vuepress-plugin-search-pro": "2.0.0-rc.7",
+    "vuepress-theme-hope": "2.0.0-rc.7"
   }
-}
\ No newline at end of file
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 26ba7b2e4b..c94ccb9637 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4,2325 +4,6770 @@ settings:
   autoInstallPeers: true
   excludeLinksFromLockfile: false
 
-dependencies:
-  '@theojs/lumen':
-    specifier: ^6.4.1
-    version: 6.4.1(vue@3.5.18)
-  pagefind:
-    specifier: ^1.3.0
-    version: 1.3.0
-  pnpm:
-    specifier: ^9.15.9
-    version: 9.15.9
-  vitepress-plugin-51la:
-    specifier: ^0.1.0
-    version: 0.1.0(vitepress@1.6.3)
-  vitepress-plugin-announcement:
-    specifier: ^0.1.5
-    version: 0.1.5(vitepress@1.6.3)
-  vitepress-plugin-pagefind:
-    specifier: ^0.4.14
-    version: 0.4.14(pagefind@1.3.0)
-  vitepress-plugin-rss:
-    specifier: ^0.3.1
-    version: 0.3.1(vitepress@1.6.3)
-
 devDependencies:
-  '@nolebase/vitepress-plugin-git-changelog':
-    specifier: ^2.18.1
-    version: 2.18.1(vitepress@1.6.3)(vue@3.5.18)
-  markdown-it-mathjax3:
-    specifier: ^4.3.2
-    version: 4.3.2
-  vitepress:
-    specifier: ^1.6.3
-    version: 1.6.3(@algolia/client-search@5.35.0)(markdown-it-mathjax3@4.3.2)(search-insights@2.17.3)
-  vitepress-markdown-timeline:
-    specifier: ^1.2.2
-    version: 1.2.2
+  '@vuepress/client':
+    specifier: 2.0.0-rc.0
+    version: 2.0.0-rc.0
+  katex:
+    specifier: ^0.16.9
+    version: 0.16.9
+  mermaid:
+    specifier: ^10.8.0
+    version: 10.8.0
+  vue:
+    specifier: ^3.4.0
+    version: 3.4.19
+  vuepress:
+    specifier: 2.0.0-rc.0
+    version: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+  vuepress-plugin-readmore-popular-next:
+    specifier: ^2.0.0-rc.0.2
+    version: 2.0.0-rc.2.1
+  vuepress-plugin-search-pro:
+    specifier: 2.0.0-rc.7
+    version: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+  vuepress-theme-hope:
+    specifier: 2.0.0-rc.7
+    version: 2.0.0-rc.7(katex@0.16.9)(markdown-it@13.0.2)(mermaid@10.8.0)(vuepress@2.0.0-rc.0)
 
 packages:
 
-  /@algolia/abtesting@1.1.0:
-    resolution: {integrity: sha512-sEyWjw28a/9iluA37KLGu8vjxEIlb60uxznfTUmXImy7H5NvbpSO6yYgmgH5KiD7j+zTUUihiST0jEP12IoXow==}
-    engines: {node: '>= 14.0.0'}
+  /@ampproject/remapping@2.2.1:
+    resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
+    engines: {node: '>=6.0.0'}
     dependencies:
-      '@algolia/client-common': 5.35.0
-      '@algolia/requester-browser-xhr': 5.35.0
-      '@algolia/requester-fetch': 5.35.0
-      '@algolia/requester-node-http': 5.35.0
+      '@jridgewell/gen-mapping': 0.3.3
+      '@jridgewell/trace-mapping': 0.3.22
+    dev: true
 
-  /@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3):
-    resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==}
+  /@apideck/better-ajv-errors@0.3.6(ajv@8.12.0):
+    resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==}
+    engines: {node: '>=10'}
+    peerDependencies:
+      ajv: '>=8'
     dependencies:
-      '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3)
-      '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)
-    transitivePeerDependencies:
-      - '@algolia/client-search'
-      - algoliasearch
-      - search-insights
+      ajv: 8.12.0
+      json-schema: 0.4.0
+      jsonpointer: 5.0.1
+      leven: 3.1.0
+    dev: true
 
-  /@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3):
-    resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==}
-    peerDependencies:
-      search-insights: '>= 1 < 3'
+  /@babel/code-frame@7.23.5:
+    resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
+    engines: {node: '>=6.9.0'}
     dependencies:
-      '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)
-      search-insights: 2.17.3
-    transitivePeerDependencies:
-      - '@algolia/client-search'
-      - algoliasearch
+      '@babel/highlight': 7.23.4
+      chalk: 2.4.2
+    dev: true
 
-  /@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0):
-    resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==}
-    peerDependencies:
-      '@algolia/client-search': '>= 4.9.1 < 6'
-      algoliasearch: '>= 4.9.1 < 6'
-    dependencies:
-      '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)
-      '@algolia/client-search': 5.35.0
-      algoliasearch: 5.35.0
+  /@babel/compat-data@7.23.5:
+    resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==}
+    engines: {node: '>=6.9.0'}
+    dev: true
 
-  /@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0):
-    resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==}
-    peerDependencies:
-      '@algolia/client-search': '>= 4.9.1 < 6'
-      algoliasearch: '>= 4.9.1 < 6'
+  /@babel/core@7.23.9:
+    resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==}
+    engines: {node: '>=6.9.0'}
     dependencies:
-      '@algolia/client-search': 5.35.0
-      algoliasearch: 5.35.0
+      '@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.9)
+      '@babel/helpers': 7.23.9
+      '@babel/parser': 7.23.9
+      '@babel/template': 7.23.9
+      '@babel/traverse': 7.23.9
+      '@babel/types': 7.23.9
+      convert-source-map: 2.0.0
+      debug: 4.3.4
+      gensync: 1.0.0-beta.2
+      json5: 2.2.3
+      semver: 6.3.1
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
 
-  /@algolia/client-abtesting@5.35.0:
-    resolution: {integrity: sha512-uUdHxbfHdoppDVflCHMxRlj49/IllPwwQ2cQ8DLC4LXr3kY96AHBpW0dMyi6ygkn2MtFCc6BxXCzr668ZRhLBQ==}
-    engines: {node: '>= 14.0.0'}
+  /@babel/generator@7.23.6:
+    resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==}
+    engines: {node: '>=6.9.0'}
     dependencies:
-      '@algolia/client-common': 5.35.0
-      '@algolia/requester-browser-xhr': 5.35.0
-      '@algolia/requester-fetch': 5.35.0
-      '@algolia/requester-node-http': 5.35.0
+      '@babel/types': 7.23.9
+      '@jridgewell/gen-mapping': 0.3.3
+      '@jridgewell/trace-mapping': 0.3.22
+      jsesc: 2.5.2
+    dev: true
 
-  /@algolia/client-analytics@5.35.0:
-    resolution: {integrity: sha512-SunAgwa9CamLcRCPnPHx1V2uxdQwJGqb1crYrRWktWUdld0+B2KyakNEeVn5lln4VyeNtW17Ia7V7qBWyM/Skw==}
-    engines: {node: '>= 14.0.0'}
+  /@babel/helper-annotate-as-pure@7.22.5:
+    resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
+    engines: {node: '>=6.9.0'}
     dependencies:
-      '@algolia/client-common': 5.35.0
-      '@algolia/requester-browser-xhr': 5.35.0
-      '@algolia/requester-fetch': 5.35.0
-      '@algolia/requester-node-http': 5.35.0
-
-  /@algolia/client-common@5.35.0:
-    resolution: {integrity: sha512-ipE0IuvHu/bg7TjT2s+187kz/E3h5ssfTtjpg1LbWMgxlgiaZIgTTbyynM7NfpSJSKsgQvCQxWjGUO51WSCu7w==}
-    engines: {node: '>= 14.0.0'}
+      '@babel/types': 7.23.9
+    dev: true
 
-  /@algolia/client-insights@5.35.0:
-    resolution: {integrity: sha512-UNbCXcBpqtzUucxExwTSfAe8gknAJ485NfPN6o1ziHm6nnxx97piIbcBQ3edw823Tej2Wxu1C0xBY06KgeZ7gA==}
-    engines: {node: '>= 14.0.0'}
+  /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15:
+    resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==}
+    engines: {node: '>=6.9.0'}
     dependencies:
-      '@algolia/client-common': 5.35.0
-      '@algolia/requester-browser-xhr': 5.35.0
-      '@algolia/requester-fetch': 5.35.0
-      '@algolia/requester-node-http': 5.35.0
+      '@babel/types': 7.23.9
+    dev: true
 
-  /@algolia/client-personalization@5.35.0:
-    resolution: {integrity: sha512-/KWjttZ6UCStt4QnWoDAJ12cKlQ+fkpMtyPmBgSS2WThJQdSV/4UWcqCUqGH7YLbwlj3JjNirCu3Y7uRTClxvA==}
-    engines: {node: '>= 14.0.0'}
+  /@babel/helper-compilation-targets@7.23.6:
+    resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
+    engines: {node: '>=6.9.0'}
     dependencies:
-      '@algolia/client-common': 5.35.0
-      '@algolia/requester-browser-xhr': 5.35.0
-      '@algolia/requester-fetch': 5.35.0
-      '@algolia/requester-node-http': 5.35.0
+      '@babel/compat-data': 7.23.5
+      '@babel/helper-validator-option': 7.23.5
+      browserslist: 4.23.0
+      lru-cache: 5.1.1
+      semver: 6.3.1
+    dev: true
 
-  /@algolia/client-query-suggestions@5.35.0:
-    resolution: {integrity: sha512-8oCuJCFf/71IYyvQQC+iu4kgViTODbXDk3m7yMctEncRSRV+u2RtDVlpGGfPlJQOrAY7OONwJlSHkmbbm2Kp/w==}
-    engines: {node: '>= 14.0.0'}
-    dependencies:
-      '@algolia/client-common': 5.35.0
-      '@algolia/requester-browser-xhr': 5.35.0
-      '@algolia/requester-fetch': 5.35.0
-      '@algolia/requester-node-http': 5.35.0
+  /@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.23.9):
+    resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@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.9)
+      '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+      '@babel/helper-split-export-declaration': 7.22.6
+      semver: 6.3.1
+    dev: true
 
-  /@algolia/client-search@5.35.0:
-    resolution: {integrity: sha512-FfmdHTrXhIduWyyuko1YTcGLuicVbhUyRjO3HbXE4aP655yKZgdTIfMhZ/V5VY9bHuxv/fGEh3Od1Lvv2ODNTg==}
-    engines: {node: '>= 14.0.0'}
+  /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.9):
+    resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
     dependencies:
-      '@algolia/client-common': 5.35.0
-      '@algolia/requester-browser-xhr': 5.35.0
-      '@algolia/requester-fetch': 5.35.0
-      '@algolia/requester-node-http': 5.35.0
+      '@babel/core': 7.23.9
+      '@babel/helper-annotate-as-pure': 7.22.5
+      regexpu-core: 5.3.2
+      semver: 6.3.1
+    dev: true
 
-  /@algolia/ingestion@1.35.0:
-    resolution: {integrity: sha512-gPzACem9IL1Co8mM1LKMhzn1aSJmp+Vp434An4C0OBY4uEJRcqsLN3uLBlY+bYvFg8C8ImwM9YRiKczJXRk0XA==}
-    engines: {node: '>= 14.0.0'}
-    dependencies:
-      '@algolia/client-common': 5.35.0
-      '@algolia/requester-browser-xhr': 5.35.0
-      '@algolia/requester-fetch': 5.35.0
-      '@algolia/requester-node-http': 5.35.0
+  /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.9):
+    resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==}
+    peerDependencies:
+      '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-compilation-targets': 7.23.6
+      '@babel/helper-plugin-utils': 7.22.5
+      debug: 4.3.4
+      lodash.debounce: 4.0.8
+      resolve: 1.22.8
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
 
-  /@algolia/monitoring@1.35.0:
-    resolution: {integrity: sha512-w9MGFLB6ashI8BGcQoVt7iLgDIJNCn4OIu0Q0giE3M2ItNrssvb8C0xuwJQyTy1OFZnemG0EB1OvXhIHOvQwWw==}
-    engines: {node: '>= 14.0.0'}
-    dependencies:
-      '@algolia/client-common': 5.35.0
-      '@algolia/requester-browser-xhr': 5.35.0
-      '@algolia/requester-fetch': 5.35.0
-      '@algolia/requester-node-http': 5.35.0
+  /@babel/helper-environment-visitor@7.22.20:
+    resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
+    engines: {node: '>=6.9.0'}
+    dev: true
 
-  /@algolia/recommend@5.35.0:
-    resolution: {integrity: sha512-AhrVgaaXAb8Ue0u2nuRWwugt0dL5UmRgS9LXe0Hhz493a8KFeZVUE56RGIV3hAa6tHzmAV7eIoqcWTQvxzlJeQ==}
-    engines: {node: '>= 14.0.0'}
+  /@babel/helper-function-name@7.23.0:
+    resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
+    engines: {node: '>=6.9.0'}
     dependencies:
-      '@algolia/client-common': 5.35.0
-      '@algolia/requester-browser-xhr': 5.35.0
-      '@algolia/requester-fetch': 5.35.0
-      '@algolia/requester-node-http': 5.35.0
+      '@babel/template': 7.23.9
+      '@babel/types': 7.23.9
+    dev: true
 
-  /@algolia/requester-browser-xhr@5.35.0:
-    resolution: {integrity: sha512-diY415KLJZ6x1Kbwl9u96Jsz0OstE3asjXtJ9pmk1d+5gPuQ5jQyEsgC+WmEXzlec3iuVszm8AzNYYaqw6B+Zw==}
-    engines: {node: '>= 14.0.0'}
+  /@babel/helper-hoist-variables@7.22.5:
+    resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+    engines: {node: '>=6.9.0'}
     dependencies:
-      '@algolia/client-common': 5.35.0
+      '@babel/types': 7.23.9
+    dev: true
 
-  /@algolia/requester-fetch@5.35.0:
-    resolution: {integrity: sha512-uydqnSmpAjrgo8bqhE9N1wgcB98psTRRQXcjc4izwMB7yRl9C8uuAQ/5YqRj04U0mMQ+fdu2fcNF6m9+Z1BzDQ==}
-    engines: {node: '>= 14.0.0'}
+  /@babel/helper-member-expression-to-functions@7.23.0:
+    resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==}
+    engines: {node: '>=6.9.0'}
     dependencies:
-      '@algolia/client-common': 5.35.0
+      '@babel/types': 7.23.9
+    dev: true
 
-  /@algolia/requester-node-http@5.35.0:
-    resolution: {integrity: sha512-RgLX78ojYOrThJHrIiPzT4HW3yfQa0D7K+MQ81rhxqaNyNBu4F1r+72LNHYH/Z+y9I1Mrjrd/c/Ue5zfDgAEjQ==}
-    engines: {node: '>= 14.0.0'}
+  /@babel/helper-module-imports@7.22.15:
+    resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
+    engines: {node: '>=6.9.0'}
     dependencies:
-      '@algolia/client-common': 5.35.0
+      '@babel/types': 7.23.9
+    dev: true
 
-  /@babel/helper-string-parser@7.27.1:
-    resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+  /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@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
+    dev: true
 
-  /@babel/helper-validator-identifier@7.27.1:
-    resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
+  /@babel/helper-optimise-call-expression@7.22.5:
+    resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
     engines: {node: '>=6.9.0'}
-
-  /@babel/parser@7.28.0:
-    resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==}
-    engines: {node: '>=6.0.0'}
-    hasBin: true
     dependencies:
-      '@babel/types': 7.28.2
+      '@babel/types': 7.23.9
+    dev: true
 
-  /@babel/types@7.28.2:
-    resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
+  /@babel/helper-plugin-utils@7.22.5:
+    resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
     engines: {node: '>=6.9.0'}
-    dependencies:
-      '@babel/helper-string-parser': 7.27.1
-      '@babel/helper-validator-identifier': 7.27.1
-
-  /@docsearch/css@3.8.2:
-    resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==}
+    dev: true
 
-  /@docsearch/js@3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3):
-    resolution: {integrity: sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==}
-    dependencies:
-      '@docsearch/react': 3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3)
-      preact: 10.27.0
-    transitivePeerDependencies:
-      - '@algolia/client-search'
-      - '@types/react'
-      - react
-      - react-dom
-      - search-insights
-
-  /@docsearch/react@3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3):
-    resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==}
-    peerDependencies:
-      '@types/react': '>= 16.8.0 < 19.0.0'
-      react: '>= 16.8.0 < 19.0.0'
-      react-dom: '>= 16.8.0 < 19.0.0'
-      search-insights: '>= 1 < 3'
-    peerDependenciesMeta:
-      '@types/react':
-        optional: true
-      react:
-        optional: true
-      react-dom:
-        optional: true
-      search-insights:
-        optional: true
+  /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.9):
+    resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
     dependencies:
-      '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3)
-      '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)
-      '@docsearch/css': 3.8.2
-      algoliasearch: 5.35.0
-      search-insights: 2.17.3
-    transitivePeerDependencies:
-      - '@algolia/client-search'
-
-  /@esbuild/aix-ppc64@0.21.5:
-    resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
-    engines: {node: '>=12'}
-    cpu: [ppc64]
-    os: [aix]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/android-arm64@0.21.5:
-    resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [android]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/android-arm@0.21.5:
-    resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
-    engines: {node: '>=12'}
-    cpu: [arm]
-    os: [android]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/android-x64@0.21.5:
-    resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [android]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/darwin-arm64@0.21.5:
-    resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [darwin]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/darwin-x64@0.21.5:
-    resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [darwin]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/freebsd-arm64@0.21.5:
-    resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [freebsd]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/freebsd-x64@0.21.5:
-    resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [freebsd]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/linux-arm64@0.21.5:
-    resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [linux]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/linux-arm@0.21.5:
-    resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
-    engines: {node: '>=12'}
-    cpu: [arm]
-    os: [linux]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/linux-ia32@0.21.5:
-    resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
-    engines: {node: '>=12'}
-    cpu: [ia32]
-    os: [linux]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/linux-loong64@0.21.5:
-    resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
-    engines: {node: '>=12'}
-    cpu: [loong64]
-    os: [linux]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/linux-mips64el@0.21.5:
-    resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
-    engines: {node: '>=12'}
-    cpu: [mips64el]
-    os: [linux]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/linux-ppc64@0.21.5:
-    resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
-    engines: {node: '>=12'}
-    cpu: [ppc64]
-    os: [linux]
-    requiresBuild: true
-    optional: true
-
-  /@esbuild/linux-riscv64@0.21.5:
-    resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
-    engines: {node: '>=12'}
-    cpu: [riscv64]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+      '@babel/core': 7.23.9
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-wrap-function': 7.22.20
+    dev: true
 
-  /@esbuild/linux-s390x@0.21.5:
-    resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
-    engines: {node: '>=12'}
-    cpu: [s390x]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+  /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9):
+    resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@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
 
-  /@esbuild/linux-x64@0.21.5:
-    resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [linux]
-    requiresBuild: true
-    optional: 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.9
+    dev: true
 
-  /@esbuild/netbsd-x64@0.21.5:
-    resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [netbsd]
-    requiresBuild: true
-    optional: true
+  /@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.9
+    dev: true
 
-  /@esbuild/openbsd-x64@0.21.5:
-    resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [openbsd]
-    requiresBuild: true
-    optional: 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.9
+    dev: true
 
-  /@esbuild/sunos-x64@0.21.5:
-    resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [sunos]
-    requiresBuild: true
-    optional: true
+  /@babel/helper-string-parser@7.23.4:
+    resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
+    engines: {node: '>=6.9.0'}
+    dev: true
 
-  /@esbuild/win32-arm64@0.21.5:
-    resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [win32]
-    requiresBuild: true
-    optional: true
+  /@babel/helper-validator-identifier@7.22.20:
+    resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+    engines: {node: '>=6.9.0'}
+    dev: true
 
-  /@esbuild/win32-ia32@0.21.5:
-    resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
-    engines: {node: '>=12'}
-    cpu: [ia32]
-    os: [win32]
-    requiresBuild: true
-    optional: true
+  /@babel/helper-validator-option@7.23.5:
+    resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
+    engines: {node: '>=6.9.0'}
+    dev: true
 
-  /@esbuild/win32-x64@0.21.5:
-    resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [win32]
-    requiresBuild: true
-    optional: true
+  /@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.23.9
+      '@babel/types': 7.23.9
+    dev: true
 
-  /@iconify-json/octicon@1.2.10:
-    resolution: {integrity: sha512-dAwgLd35EPeEu6VHnERJ+sSJ9VKe0qFX4EXHjmWb4o7OyUfB1/F98JEjUxVa9eEHJ307z4q0AuGSVz8L3LWz5g==}
+  /@babel/helpers@7.23.9:
+    resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==}
+    engines: {node: '>=6.9.0'}
     dependencies:
-      '@iconify/types': 2.0.0
+      '@babel/template': 7.23.9
+      '@babel/traverse': 7.23.9
+      '@babel/types': 7.23.9
+    transitivePeerDependencies:
+      - supports-color
     dev: true
 
-  /@iconify-json/simple-icons@1.2.45:
-    resolution: {integrity: sha512-POOz+NjYQDy2fy1u+sIZi05N6r6oSooIGBaBcZLh7w8QOmLgJAZ6mBt+7Messp7ku9ucRua61if33BPoOZCwRQ==}
+  /@babel/highlight@7.23.4:
+    resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
+    engines: {node: '>=6.9.0'}
     dependencies:
-      '@iconify/types': 2.0.0
+      '@babel/helper-validator-identifier': 7.22.20
+      chalk: 2.4.2
+      js-tokens: 4.0.0
+    dev: true
 
-  /@iconify/types@2.0.0:
-    resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
+  /@babel/parser@7.23.9:
+    resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==}
+    engines: {node: '>=6.0.0'}
+    hasBin: true
+    dependencies:
+      '@babel/types': 7.23.9
+    dev: true
 
-  /@iconify/vue@5.0.0(vue@3.5.18):
-    resolution: {integrity: sha512-C+KuEWIF5nSBrobFJhT//JS87OZ++QDORB6f2q2Wm6fl2mueSTpFBeBsveK0KW9hWiZ4mNiPjsh6Zs4jjdROSg==}
+  /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==}
+    engines: {node: '>=6.9.0'}
     peerDependencies:
-      vue: '>=3'
+      '@babel/core': ^7.0.0
     dependencies:
-      '@iconify/types': 2.0.0
-      vue: 3.5.18(typescript@5.9.2)
-    dev: false
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
 
-  /@jridgewell/sourcemap-codec@1.5.4:
-    resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==}
+  /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.13.0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@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.9)
+    dev: true
 
-  /@nodelib/fs.scandir@2.1.5:
-    resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
-    engines: {node: '>= 8'}
+  /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.9):
+    resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
     dependencies:
-      '@nodelib/fs.stat': 2.0.5
-      run-parallel: 1.2.0
+      '@babel/core': 7.23.9
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-plugin-utils': 7.22.5
     dev: true
 
-  /@nodelib/fs.stat@2.0.5:
-    resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
-    engines: {node: '>= 8'}
+  /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9):
+    resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
     dev: true
 
-  /@nodelib/fs.walk@1.2.8:
-    resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
-    engines: {node: '>= 8'}
+  /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9):
+    resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@nodelib/fs.scandir': 2.1.5
-      fastq: 1.19.1
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
     dev: true
 
-  /@nolebase/ui@2.18.1(vitepress@1.6.3)(vue@3.5.18):
-    resolution: {integrity: sha512-h5o/ZoFv+07pMqVz8dtbu6CYhm+gnvn2NIQLRzWgeX0DOuzqEG56YYEALa1Mv2xYDZ8fXKuZe8xmNdJsVAKrEw==}
+  /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9):
+    resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
     peerDependencies:
-      vitepress: ^1.5.0 || ^2.0.0-alpha.1
-      vue: '>= 3'
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@iconify-json/octicon': 1.2.10
-      less: 4.4.0
-      vitepress: 1.6.3(@algolia/client-search@5.35.0)(markdown-it-mathjax3@4.3.2)(search-insights@2.17.3)
-      vue: 3.5.18(typescript@5.9.2)
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
     dev: true
 
-  /@nolebase/vitepress-plugin-git-changelog@2.18.1(vitepress@1.6.3)(vue@3.5.18):
-    resolution: {integrity: sha512-7T+BmEcayt4BrFDFj8dZcP1tF0Rmxulc8QGcy6+bY6W2AWv3TkUa5S1XocEmjCYFtzQo4ZnccwGyE973sWCA6Q==}
+  /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.9):
+    resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==}
+    engines: {node: '>=6.9.0'}
     peerDependencies:
-      vitepress: ^1.5.0 || ^2.0.0-alpha.1
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@iconify-json/octicon': 1.2.10
-      '@nolebase/ui': 2.18.1(vitepress@1.6.3)(vue@3.5.18)
-      colorette: 2.0.20
-      date-fns: 4.1.0
-      defu: 6.1.4
-      es-toolkit: 1.39.8
-      execa: 9.6.0
-      globby: 14.1.0
-      gray-matter: 4.0.3
-      less: 4.4.0
-      uncrypto: 0.1.3
-      vitepress: 1.6.3(@algolia/client-search@5.35.0)(markdown-it-mathjax3@4.3.2)(search-insights@2.17.3)
-    transitivePeerDependencies:
-      - vue
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
     dev: true
 
-  /@pagefind/darwin-arm64@1.3.0:
-    resolution: {integrity: sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A==}
-    cpu: [arm64]
+  /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9):
+    resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9):
+    resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9):
+    resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.9):
+    resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9):
+    resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.9):
+    resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.23.9):
+    resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@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.9)
+      '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9)
+    dev: true
+
+  /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.9):
+    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.9
+      '@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.9)
+    dev: true
+
+  /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9)
+    dev: true
+
+  /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.9):
+    resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@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.9)
+      '@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.9):
+    resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/template': 7.23.9
+    dev: true
+
+  /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.9):
+    resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9)
+    dev: true
+
+  /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@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.9):
+    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.9
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9)
+    dev: true
+
+  /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.9):
+    resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@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.9):
+    resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@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.9):
+    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.9
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9)
+    dev: true
+
+  /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9)
+    dev: true
+
+  /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-simple-access': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.23.9):
+    resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-hoist-variables': 7.22.5
+      '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9)
+      '@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.9):
+    resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.9):
+    resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.9):
+    resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9)
+    dev: true
+
+  /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.9):
+    resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9)
+    dev: true
+
+  /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.9):
+    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.9
+      '@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.9)
+      '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9)
+    dev: true
+
+  /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9)
+    dev: true
+
+  /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.9):
+    resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9)
+    dev: true
+
+  /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.9):
+    resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@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.9)
+    dev: true
+
+  /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.9):
+    resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9)
+    dev: true
+
+  /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@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.9):
+    resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@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.9):
+    resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.9):
+    resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/preset-env@7.23.9(@babel/core@7.23.9):
+    resolution: {integrity: sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/compat-data': 7.23.5
+      '@babel/core': 7.23.9
+      '@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.9)
+      '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.9)
+      '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9)
+      '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9)
+      '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9)
+      '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9)
+      '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9)
+      '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9)
+      '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9)
+      '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9)
+      '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9)
+      '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9)
+      '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9)
+      '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9)
+      '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9)
+      '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9)
+      '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9)
+      '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9)
+      '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9)
+      '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.23.9)
+      '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9)
+      '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.9)
+      '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9)
+      '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.9)
+      '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.9)
+      '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.9)
+      '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.9)
+      '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.9)
+      '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.23.9)
+      '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9)
+      '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.9)
+      '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.9)
+      '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.9)
+      '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.9)
+      '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9)
+      '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9)
+      '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9)
+      '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.9)
+      '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9)
+      babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9)
+      babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9)
+      babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9)
+      core-js-compat: 3.36.0
+      semver: 6.3.1
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/types': 7.23.9
+      esutils: 2.0.3
+    dev: true
+
+  /@babel/regjsgen@0.8.0:
+    resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==}
+    dev: true
+
+  /@babel/runtime@7.23.9:
+    resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      regenerator-runtime: 0.14.1
+    dev: true
+
+  /@babel/template@7.23.9:
+    resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/code-frame': 7.23.5
+      '@babel/parser': 7.23.9
+      '@babel/types': 7.23.9
+    dev: true
+
+  /@babel/traverse@7.23.9:
+    resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==}
+    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.9
+      '@babel/types': 7.23.9
+      debug: 4.3.4
+      globals: 11.12.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /@babel/types@7.23.9:
+    resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==}
+    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
+    dev: true
+
+  /@braintree/sanitize-url@6.0.4:
+    resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==}
+    dev: true
+
+  /@esbuild/aix-ppc64@0.19.12:
+    resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
+    engines: {node: '>=12'}
+    cpu: [ppc64]
+    os: [aix]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/android-arm64@0.19.12:
+    resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/android-arm@0.19.12:
+    resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
+    engines: {node: '>=12'}
+    cpu: [arm]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/android-x64@0.19.12:
+    resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/darwin-arm64@0.19.12:
+    resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/darwin-x64@0.19.12:
+    resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/freebsd-arm64@0.19.12:
+    resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/freebsd-x64@0.19.12:
+    resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-arm64@0.19.12:
+    resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-arm@0.19.12:
+    resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
+    engines: {node: '>=12'}
+    cpu: [arm]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-ia32@0.19.12:
+    resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
+    engines: {node: '>=12'}
+    cpu: [ia32]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-loong64@0.19.12:
+    resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
+    engines: {node: '>=12'}
+    cpu: [loong64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-mips64el@0.19.12:
+    resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
+    engines: {node: '>=12'}
+    cpu: [mips64el]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-ppc64@0.19.12:
+    resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
+    engines: {node: '>=12'}
+    cpu: [ppc64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-riscv64@0.19.12:
+    resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
+    engines: {node: '>=12'}
+    cpu: [riscv64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-s390x@0.19.12:
+    resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
+    engines: {node: '>=12'}
+    cpu: [s390x]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-x64@0.19.12:
+    resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/netbsd-x64@0.19.12:
+    resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [netbsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/openbsd-x64@0.19.12:
+    resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [openbsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/sunos-x64@0.19.12:
+    resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [sunos]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/win32-arm64@0.19.12:
+    resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/win32-ia32@0.19.12:
+    resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
+    engines: {node: '>=12'}
+    cpu: [ia32]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/win32-x64@0.19.12:
+    resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: 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
+    dev: true
+
+  /@jridgewell/resolve-uri@3.1.2:
+    resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+    engines: {node: '>=6.0.0'}
+    dev: true
+
+  /@jridgewell/set-array@1.1.2:
+    resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
+    engines: {node: '>=6.0.0'}
+    dev: true
+
+  /@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
+    dev: true
+
+  /@jridgewell/sourcemap-codec@1.4.15:
+    resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+    dev: true
+
+  /@jridgewell/trace-mapping@0.3.22:
+    resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==}
+    dependencies:
+      '@jridgewell/resolve-uri': 3.1.2
+      '@jridgewell/sourcemap-codec': 1.4.15
+    dev: true
+
+  /@lit-labs/ssr-dom-shim@1.2.0:
+    resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==}
+    dev: true
+
+  /@lit/reactive-element@2.0.4:
+    resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==}
+    dependencies:
+      '@lit-labs/ssr-dom-shim': 1.2.0
+    dev: true
+
+  /@mdit-vue/plugin-component@1.0.0:
+    resolution: {integrity: sha512-ZXsJwxkG5yyTHARIYbR74cT4AZ0SfMokFFjiHYCbypHIeYWgJhso4+CZ8+3V9EWFG3EHlGoKNGqKp9chHnqntQ==}
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit-vue/plugin-component@2.0.0:
+    resolution: {integrity: sha512-cTRxlocav/+mfgDcp0P2z/gWuWBez+iNuN4D+b74LpX4AR6UAx2ZvWtCrUZ8VXrO4eCt1/G0YC/Af7mpIb3aoQ==}
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 14.0.0
+    dev: true
+
+  /@mdit-vue/plugin-frontmatter@1.0.0:
+    resolution: {integrity: sha512-MMA7Ny+YPZA7eDOY1t4E+rKuEWO39mzDdP/M68fKdXJU6VfcGkPr7gnpnJfW2QBJ5qIvMrK/3lDAA2JBy5TfpA==}
+    dependencies:
+      '@mdit-vue/types': 1.0.0
+      '@types/markdown-it': 13.0.7
+      gray-matter: 4.0.3
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit-vue/plugin-frontmatter@2.0.0:
+    resolution: {integrity: sha512-/LrT6E60QI4XV4mqx3J87hqYXlR7ZyMvndmftR2RGz7cRAwa/xL+kyFLlgrMxkBIKitOShKa3LS/9Ov9b0fU+g==}
+    dependencies:
+      '@mdit-vue/types': 2.0.0
+      '@types/markdown-it': 13.0.7
+      gray-matter: 4.0.3
+      markdown-it: 14.0.0
+    dev: true
+
+  /@mdit-vue/plugin-headers@1.0.0:
+    resolution: {integrity: sha512-0rK/iKy6x13d/Pp5XxdLBshTD0+YjZvtHIaIV+JO+/H2WnOv7oaRgs48G5d44z3XJVUE2u6fNnTlI169fef0/A==}
+    dependencies:
+      '@mdit-vue/shared': 1.0.0
+      '@mdit-vue/types': 1.0.0
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit-vue/plugin-headers@2.0.0:
+    resolution: {integrity: sha512-ITMMPCnLEYHHgj3XEUL2l75jsNn8guxNqr26YrMSi1f5zcgq4XVy1LIvfwvJ1puqM6Cc5v4BHk3oAyorAi7l1A==}
+    dependencies:
+      '@mdit-vue/shared': 2.0.0
+      '@mdit-vue/types': 2.0.0
+      '@types/markdown-it': 13.0.7
+      markdown-it: 14.0.0
+    dev: true
+
+  /@mdit-vue/plugin-sfc@1.0.0:
+    resolution: {integrity: sha512-agMUe0fY4YHxsZivSvplBwRwrFvsIf/JNUJCAYq1+2Sg9+2hviTBZwjZDxYqHDHOVLtiNr+wuo68tE24mAx3AQ==}
+    dependencies:
+      '@mdit-vue/types': 1.0.0
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit-vue/plugin-sfc@2.0.0:
+    resolution: {integrity: sha512-OXrMXOyk0iwdIou2jRoIHIbjskwghkO14C9/OjgVHXSSX+iM/WQ4l4yi1aWmNlbQNjtP8IXcVAyJB9K0DFYmLg==}
+    dependencies:
+      '@mdit-vue/types': 2.0.0
+      '@types/markdown-it': 13.0.7
+      markdown-it: 14.0.0
+    dev: true
+
+  /@mdit-vue/plugin-title@1.0.0:
+    resolution: {integrity: sha512-8yC60fCZ95xcJ/cvJH4Lv43Rs4k+33UGyKrRWj5J8TNyMwUyGcwur0XyPM+ffJH4/Bzq4myZLsj/TTFSkXRxvw==}
+    dependencies:
+      '@mdit-vue/shared': 1.0.0
+      '@mdit-vue/types': 1.0.0
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit-vue/plugin-title@2.0.0:
+    resolution: {integrity: sha512-eqBoETPVkMXNLvwFshz/A2+Cz81VB5HEkXDm0tt6RBW/rTvnoWmGJ1Z+mvcjR5ck5W4nYdIyT68oHxX2JI2M4g==}
+    dependencies:
+      '@mdit-vue/shared': 2.0.0
+      '@mdit-vue/types': 2.0.0
+      '@types/markdown-it': 13.0.7
+      markdown-it: 14.0.0
+    dev: true
+
+  /@mdit-vue/plugin-toc@1.0.0:
+    resolution: {integrity: sha512-WN8blfX0X/5Nolic0ClDWP7eVo9IB+U4g0jbycX3lolIZX5Bai1UpsD3QYZr5VVsPbQJMKMGvTrCEtCNTGvyWQ==}
+    dependencies:
+      '@mdit-vue/shared': 1.0.0
+      '@mdit-vue/types': 1.0.0
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit-vue/plugin-toc@2.0.0:
+    resolution: {integrity: sha512-PKQ8sZna3D5chTnt2lxL+ddpyXd++6Nyc0l8VXCeDgStlySQwiP9jaLeeC88oqY4BtRu4cAmILmxDrvuX0Rrdg==}
+    dependencies:
+      '@mdit-vue/shared': 2.0.0
+      '@mdit-vue/types': 2.0.0
+      '@types/markdown-it': 13.0.7
+      markdown-it: 14.0.0
+    dev: true
+
+  /@mdit-vue/shared@1.0.0:
+    resolution: {integrity: sha512-nbYBfmEi+pR2Lm0Z6TMVX2/iBjfr/kGEsHW8CC0rQw+3+sG5dY6VG094HuFAkiAmmvZx9DZZb+7ZMWp9vkwCRw==}
+    dependencies:
+      '@mdit-vue/types': 1.0.0
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit-vue/shared@2.0.0:
+    resolution: {integrity: sha512-PdxpQpbyTazeo2JT87qms6RPZIzyJd+gwuB+1jSwLDI7+0u5g79y2XgTAbZromSVgY2f3UU5HWdwaLbV9w4uOw==}
+    dependencies:
+      '@mdit-vue/types': 2.0.0
+      '@types/markdown-it': 13.0.7
+      markdown-it: 14.0.0
+    dev: true
+
+  /@mdit-vue/types@1.0.0:
+    resolution: {integrity: sha512-xeF5+sHLzRNF7plbksywKCph4qli20l72of2fMlZQQ7RECvXYrRkE9+bjRFQCyULC7B8ydUYbpbkux5xJlVWyw==}
+    dev: true
+
+  /@mdit-vue/types@2.0.0:
+    resolution: {integrity: sha512-1BeEB+DbtmDMUAfvbNUj5Hso8cSl2sBVK2iTyOMAqhfDVLdh+/9+D0JmQHaCeUk/vuJoMhOwbweZvh55wHxm4w==}
+    dev: true
+
+  /@mdit/plugin-alert@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-Z+/bHBDniCz/Q+TMa3M6f47KG4tUKvJI8FHXhDwgbKLzDLn045ZBHcOTeqvuWrrjCIKBEo4fVAlYszYcehxmfg==}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-align@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-NYGrsnX1c84dtY1tugDVX71zxxfcGSIjWANzQ0/od4B0+N31eXkq3SXdAjCXOWUUHSa6phfvtok+x4V9ExQwHA==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@mdit/plugin-container': 0.7.6(markdown-it@13.0.2)
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-attrs@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-vTSsqZUXglZRQ4cLNou6N2cTLudHS01Tir+HPtrWkN+VB4VAIRlCKV3hf0vzKRM+HR3DSe+vQMrWzfnQdD0o4A==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-container@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-egEYoJLkar4hxrBfFf6tO3IfoLzeUHYChGRI3FA2fxiMwwyclPvBMMQTtG2rY3sjPy497Z86QiqYwjRM0qA8Mw==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-demo@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-pybxLVpIKYlxt7fgjHK4Zd6f/IMCjACB6eZmIIlow0eOnijRnikHdRDVkoyDOxcFuQvP0yvT6LWcQlhHF+CGwQ==}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-figure@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-ysH5O3WWuDrfxLWQO4wYXYGdo8oi+EbMQFgbaSTxhoPKTFf3HTovCn3RANn7qATBqmGP26zf0hY55mX9BFUu5A==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-footnote@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-fQvbi3+/Hm+k4GJptXCc5i0n9/+ZpQx4yqpjOTGGSUz1k22XU07YaK3wpL9w+nPAfcBfzD06D72Y+eDIG5wi8w==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-img-lazyload@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-BBgxlXCOO7+9TMHJXtUyvi48jlH4ZYQtC9lNfgu1rvmq56iblZ7etOzg61/CmXmLgMHNvCbb/Kx7gRLkOBhv6A==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-img-mark@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-IhbkmTLbxr+c04ZQcSV2IFq8n1GeRFO08qQagkONUijI1O2G/RE2y6QvCVBUy0gB1Hc8c1i9vEyK1F0e4GpheQ==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-img-size@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-GZGEbuR0l4+ENXDG1Y2HsrNO2JuEmjI6PPe7pgsolk5yveWOiqzcEV4ushrWnpvwNal3Acuj+dpFDmZFOtm42g==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-include@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-4Pu0SdD2IOONLor/3GtQOYOBDv1xZ1LWByXLhht0kqEioX5D+aDZ5KD5MZ0AxH0xoNUGMynMEn/ak4/D9LLI7Q==}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+      upath: 2.0.1
+    dev: true
+
+  /@mdit/plugin-katex@0.7.6(katex@0.16.9)(markdown-it@13.0.2):
+    resolution: {integrity: sha512-ZbPIks1SlgzS5R6YOL5s0J5vk20ROl5hF+Yj9o6CiEljodK2ln0ewpX36qM6POVrS/cu6E4Lx4X0fc5JTI6nAQ==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      katex: ^0.16.9
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      katex:
+        optional: true
+      markdown-it:
+        optional: true
+    dependencies:
+      '@mdit/plugin-tex': 0.7.6(markdown-it@13.0.2)
+      '@types/katex': 0.16.7
+      '@types/markdown-it': 13.0.7
+      katex: 0.16.9
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-mark@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-D9gv+ebVORa4r69t0JeJg3NW9gCR/NOGYa1DKYDEQOJoZ1WwjZVuhdxd3wCpLKtqDLnyHTFWd3cnV/HHrmca3w==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-mathjax@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-Sn3nYbkPftAF5tgemIJ1aClxgU4NnElHPV5PIgkMxwusaSsN4RB+GZ1NmTKrPUqVoIZi0pO1oYxy08TlIHcrPg==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+      mathjax-full: ^3.2.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+      mathjax-full:
+        optional: true
+    dependencies:
+      '@mdit/plugin-tex': 0.7.6(markdown-it@13.0.2)
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+      upath: 2.0.1
+    dev: true
+
+  /@mdit/plugin-stylize@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-dhhYxo4KdnB66g1080qeuz8X/80q3h4Cpmwnwi2rCbQfl29Nv26H5tz5pp15NKQfdfVgrZnXXLsDskJeg5IcaQ==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-sub@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-jo60gUC2KwnG4SqtyrbyI16hOcxb+Y1LwUKxXKfZRbZbcPcOfrzjE8q7XEq4MhmU51mfqY6EvCoB0yo49Zh2QA==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-sup@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-bCR1DxNuPAyYOaTtl3VkrRc7dMsJjrqt9HnM9T1ZiprW08uciaT37fLXF7DeUHWhGpcklI9dFtaU5cQkjUosTg==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-tab@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-kWwWmhv+PeeA9aC5InGyY4eJeIsCDDMhi1tbzyKW/wJ1eeFp+rpWpSfWwUe6QyTy/ZOhQ1nGXz0/uXI4xWz4Xw==}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-tasklist@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-ZsPHqQv/Cd9TUG3JfmrPOMRFR/SOG3/menWTz2kwE1HtJ1CUfBmoCRtfq2Sm7Rlqg/P6ZfWAd1t9bOwGkxD/5w==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-tex@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-TZfIJp98n7NI0TxDSxPs4Il1fqyJ/1GE3v8UZHA1DbfAdiVMxno/Dun9381ZxoJYibl+dnX3Kz7Ej3BDOceGGA==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
+
+  /@mdit/plugin-uml@0.7.6(markdown-it@13.0.2):
+    resolution: {integrity: sha512-P/aRntMnMfvtAEcLCkg6vhzNFEidj6jIno7VXr3HZNLitonr9ihnksM6jgrqG1rrMo4okBWUGFFGqsR8hHJk6g==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      markdown-it: ^13.0.2
+    peerDependenciesMeta:
+      markdown-it:
+        optional: true
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    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.17.1
+    dev: true
+
+  /@rollup/plugin-babel@5.3.1(@babel/core@7.23.9)(rollup@2.79.1):
+    resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==}
+    engines: {node: '>= 10.0.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+      '@types/babel__core': ^7.1.9
+      rollup: ^1.20.0||^2.0.0
+    peerDependenciesMeta:
+      '@types/babel__core':
+        optional: true
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-module-imports': 7.22.15
+      '@rollup/pluginutils': 3.1.0(rollup@2.79.1)
+      rollup: 2.79.1
+    dev: true
+
+  /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1):
+    resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==}
+    engines: {node: '>= 10.0.0'}
+    peerDependencies:
+      rollup: ^1.20.0||^2.0.0
+    dependencies:
+      '@rollup/pluginutils': 3.1.0(rollup@2.79.1)
+      '@types/resolve': 1.17.1
+      builtin-modules: 3.3.0
+      deepmerge: 4.3.1
+      is-module: 1.0.0
+      resolve: 1.22.8
+      rollup: 2.79.1
+    dev: true
+
+  /@rollup/plugin-replace@2.4.2(rollup@2.79.1):
+    resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==}
+    peerDependencies:
+      rollup: ^1.20.0 || ^2.0.0
+    dependencies:
+      '@rollup/pluginutils': 3.1.0(rollup@2.79.1)
+      magic-string: 0.25.9
+      rollup: 2.79.1
+    dev: true
+
+  /@rollup/pluginutils@3.1.0(rollup@2.79.1):
+    resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
+    engines: {node: '>= 8.0.0'}
+    peerDependencies:
+      rollup: ^1.20.0||^2.0.0
+    dependencies:
+      '@types/estree': 0.0.39
+      estree-walker: 1.0.1
+      picomatch: 2.3.1
+      rollup: 2.79.1
+    dev: true
+
+  /@rollup/rollup-android-arm-eabi@4.11.0:
+    resolution: {integrity: sha512-BV+u2QSfK3i1o6FucqJh5IK9cjAU6icjFFhvknzFgu472jzl0bBojfDAkJLBEsHFMo+YZg6rthBvBBt8z12IBQ==}
+    cpu: [arm]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-android-arm64@4.11.0:
+    resolution: {integrity: sha512-0ij3iw7sT5jbcdXofWO2NqDNjSVVsf6itcAkV2I6Xsq4+6wjW1A8rViVB67TfBEan7PV2kbLzT8rhOVWLI2YXw==}
+    cpu: [arm64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-darwin-arm64@4.11.0:
+    resolution: {integrity: sha512-yPLs6RbbBMupArf6qv1UDk6dzZvlH66z6NLYEwqTU0VHtss1wkI4UYeeMS7TVj5QRVvaNAWYKP0TD/MOeZ76Zg==}
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-darwin-x64@4.11.0:
+    resolution: {integrity: sha512-OvqIgwaGAwnASzXaZEeoJY3RltOFg+WUbdkdfoluh2iqatd090UeOG3A/h0wNZmE93dDew9tAtXgm3/+U/B6bw==}
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-linux-arm-gnueabihf@4.11.0:
+    resolution: {integrity: sha512-X17s4hZK3QbRmdAuLd2EE+qwwxL8JxyVupEqAkxKPa/IgX49ZO+vf0ka69gIKsaYeo6c1CuwY3k8trfDtZ9dFg==}
+    cpu: [arm]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-linux-arm64-gnu@4.11.0:
+    resolution: {integrity: sha512-673Lu9EJwxVB9NfYeA4AdNu0FOHz7g9t6N1DmT7bZPn1u6bTF+oZjj+fuxUcrfxWXE0r2jxl5QYMa9cUOj9NFg==}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-linux-arm64-musl@4.11.0:
+    resolution: {integrity: sha512-yFW2msTAQNpPJaMmh2NpRalr1KXI7ZUjlN6dY/FhWlOclMrZezm5GIhy3cP4Ts2rIAC+IPLAjNibjp1BsxCVGg==}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-linux-riscv64-gnu@4.11.0:
+    resolution: {integrity: sha512-kKT9XIuhbvYgiA3cPAGntvrBgzhWkGpBMzuk1V12Xuoqg7CI41chye4HU0vLJnGf9MiZzfNh4I7StPeOzOWJfA==}
+    cpu: [riscv64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-linux-x64-gnu@4.11.0:
+    resolution: {integrity: sha512-6q4ESWlyTO+erp1PSCmASac+ixaDv11dBk1fqyIuvIUc/CmRAX2Zk+2qK1FGo5q7kyDcjHCFVwgGFCGIZGVwCA==}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-linux-x64-musl@4.11.0:
+    resolution: {integrity: sha512-vIAQUmXeMLmaDN78HSE4Kh6xqof2e3TJUKr+LPqXWU4NYNON0MDN9h2+t4KHrPAQNmU3w1GxBQ/n01PaWFwa5w==}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-win32-arm64-msvc@4.11.0:
+    resolution: {integrity: sha512-LVXo9dDTGPr0nezMdqa1hK4JeoMZ02nstUxGYY/sMIDtTYlli1ZxTXBYAz3vzuuvKO4X6NBETciIh7N9+abT1g==}
+    cpu: [arm64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-win32-ia32-msvc@4.11.0:
+    resolution: {integrity: sha512-xZVt6K70Gr3I7nUhug2dN6VRR1ibot3rXqXS3wo+8JP64t7djc3lBFyqO4GiVrhNaAIhUCJtwQ/20dr0h0thmQ==}
+    cpu: [ia32]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-win32-x64-msvc@4.11.0:
+    resolution: {integrity: sha512-f3I7h9oTg79UitEco9/2bzwdciYkWr8pITs3meSDSlr1TdvQ7IxkQaaYN2YqZXX5uZhiYL+VuYDmHwNzhx+HOg==}
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@sindresorhus/merge-streams@2.2.1:
+    resolution: {integrity: sha512-255V7MMIKw6aQ43Wbqp9HZ+VHn6acddERTLiiLnlcPLU9PdTq9Aijl12oklAgUEblLWye+vHLzmqBx6f2TGcZw==}
+    engines: {node: '>=18'}
+    dev: true
+
+  /@stackblitz/sdk@1.9.0:
+    resolution: {integrity: sha512-3m6C7f8pnR5KXys/Hqx2x6ylnpqOak6HtnZI6T5keEO0yT+E4Spkw37VEbdwuC+2oxmjdgq6YZEgiKX7hM1GmQ==}
+    dev: true
+
+  /@surma/rollup-plugin-off-main-thread@2.2.3:
+    resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==}
+    dependencies:
+      ejs: 3.1.9
+      json5: 2.2.3
+      magic-string: 0.25.9
+      string.prototype.matchall: 4.0.10
+    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-time@3.0.3:
+    resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==}
+    dev: true
+
+  /@types/debug@4.1.12:
+    resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+    dependencies:
+      '@types/ms': 0.7.34
+    dev: true
+
+  /@types/estree@0.0.39:
+    resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
+    dev: true
+
+  /@types/estree@1.0.5:
+    resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+    dev: true
+
+  /@types/fs-extra@11.0.4:
+    resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==}
+    dependencies:
+      '@types/jsonfile': 6.1.4
+      '@types/node': 20.11.19
+    dev: true
+
+  /@types/hash-sum@1.0.2:
+    resolution: {integrity: sha512-UP28RddqY8xcU0SCEp9YKutQICXpaAq9N8U2klqF5hegGha7KzTOL8EdhIIV3bOSGBzjEpN9bU/d+nNZBdJYVw==}
+    dev: true
+
+  /@types/jsonfile@6.1.4:
+    resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==}
+    dependencies:
+      '@types/node': 20.11.19
+    dev: true
+
+  /@types/katex@0.16.7:
+    resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
+    dev: true
+
+  /@types/linkify-it@3.0.5:
+    resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==}
+    dev: true
+
+  /@types/markdown-it-emoji@2.0.4:
+    resolution: {integrity: sha512-H6ulk/ZmbDxOayPwI/leJzrmoW1YKX1Z+MVSCHXuYhvqckV4I/c+hPTf6UiqJyn2avWugfj30XroheEb6/Ekqg==}
+    dependencies:
+      '@types/markdown-it': 13.0.7
+    dev: true
+
+  /@types/markdown-it@13.0.7:
+    resolution: {integrity: sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==}
+    dependencies:
+      '@types/linkify-it': 3.0.5
+      '@types/mdurl': 1.0.5
+    dev: true
+
+  /@types/mdast@3.0.15:
+    resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==}
+    dependencies:
+      '@types/unist': 2.0.10
+    dev: true
+
+  /@types/mdurl@1.0.5:
+    resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==}
+    dev: true
+
+  /@types/ms@0.7.34:
+    resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+    dev: true
+
+  /@types/node@17.0.45:
+    resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
+    dev: true
+
+  /@types/node@20.11.19:
+    resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==}
+    dependencies:
+      undici-types: 5.26.5
+    dev: true
+
+  /@types/resolve@1.17.1:
+    resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
+    dependencies:
+      '@types/node': 20.11.19
+    dev: true
+
+  /@types/sax@1.2.7:
+    resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==}
+    dependencies:
+      '@types/node': 17.0.45
+    dev: true
+
+  /@types/trusted-types@2.0.7:
+    resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+    dev: true
+
+  /@types/unist@2.0.10:
+    resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
+    dev: true
+
+  /@types/web-bluetooth@0.0.20:
+    resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
+    dev: true
+
+  /@vitejs/plugin-vue@4.6.2(vite@5.0.12)(vue@3.4.19):
+    resolution: {integrity: sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==}
+    engines: {node: ^14.18.0 || >=16.0.0}
+    peerDependencies:
+      vite: ^4.0.0 || ^5.0.0
+      vue: ^3.2.25
+    dependencies:
+      vite: 5.0.12
+      vue: 3.4.19
+    dev: true
+
+  /@vue/compiler-core@3.3.8:
+    resolution: {integrity: sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==}
+    dependencies:
+      '@babel/parser': 7.23.9
+      '@vue/shared': 3.3.8
+      estree-walker: 2.0.2
+      source-map-js: 1.0.2
+    dev: true
+
+  /@vue/compiler-core@3.4.19:
+    resolution: {integrity: sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==}
+    dependencies:
+      '@babel/parser': 7.23.9
+      '@vue/shared': 3.4.19
+      entities: 4.5.0
+      estree-walker: 2.0.2
+      source-map-js: 1.0.2
+    dev: true
+
+  /@vue/compiler-dom@3.3.8:
+    resolution: {integrity: sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==}
+    dependencies:
+      '@vue/compiler-core': 3.3.8
+      '@vue/shared': 3.3.8
+    dev: true
+
+  /@vue/compiler-dom@3.4.19:
+    resolution: {integrity: sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==}
+    dependencies:
+      '@vue/compiler-core': 3.4.19
+      '@vue/shared': 3.4.19
+    dev: true
+
+  /@vue/compiler-sfc@3.3.8:
+    resolution: {integrity: sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==}
+    dependencies:
+      '@babel/parser': 7.23.9
+      '@vue/compiler-core': 3.3.8
+      '@vue/compiler-dom': 3.3.8
+      '@vue/compiler-ssr': 3.3.8
+      '@vue/reactivity-transform': 3.3.8
+      '@vue/shared': 3.3.8
+      estree-walker: 2.0.2
+      magic-string: 0.30.7
+      postcss: 8.4.35
+      source-map-js: 1.0.2
+    dev: true
+
+  /@vue/compiler-sfc@3.4.19:
+    resolution: {integrity: sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==}
+    dependencies:
+      '@babel/parser': 7.23.9
+      '@vue/compiler-core': 3.4.19
+      '@vue/compiler-dom': 3.4.19
+      '@vue/compiler-ssr': 3.4.19
+      '@vue/shared': 3.4.19
+      estree-walker: 2.0.2
+      magic-string: 0.30.7
+      postcss: 8.4.35
+      source-map-js: 1.0.2
+    dev: true
+
+  /@vue/compiler-ssr@3.3.8:
+    resolution: {integrity: sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==}
+    dependencies:
+      '@vue/compiler-dom': 3.3.8
+      '@vue/shared': 3.3.8
+    dev: true
+
+  /@vue/compiler-ssr@3.4.19:
+    resolution: {integrity: sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw==}
+    dependencies:
+      '@vue/compiler-dom': 3.4.19
+      '@vue/shared': 3.4.19
+    dev: true
+
+  /@vue/devtools-api@6.6.1:
+    resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==}
+    dev: true
+
+  /@vue/reactivity-transform@3.3.8:
+    resolution: {integrity: sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==}
+    dependencies:
+      '@babel/parser': 7.23.9
+      '@vue/compiler-core': 3.3.8
+      '@vue/shared': 3.3.8
+      estree-walker: 2.0.2
+      magic-string: 0.30.7
+    dev: true
+
+  /@vue/reactivity@3.3.8:
+    resolution: {integrity: sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==}
+    dependencies:
+      '@vue/shared': 3.3.8
+    dev: true
+
+  /@vue/reactivity@3.4.19:
+    resolution: {integrity: sha512-+VcwrQvLZgEclGZRHx4O2XhyEEcKaBi50WbxdVItEezUf4fqRh838Ix6amWTdX0CNb/b6t3Gkz3eOebfcSt+UA==}
+    dependencies:
+      '@vue/shared': 3.4.19
+    dev: true
+
+  /@vue/runtime-core@3.3.8:
+    resolution: {integrity: sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==}
+    dependencies:
+      '@vue/reactivity': 3.3.8
+      '@vue/shared': 3.3.8
+    dev: true
+
+  /@vue/runtime-core@3.4.19:
+    resolution: {integrity: sha512-/Z3tFwOrerJB/oyutmJGoYbuoadphDcJAd5jOuJE86THNZji9pYjZroQ2NFsZkTxOq0GJbb+s2kxTYToDiyZzw==}
+    dependencies:
+      '@vue/reactivity': 3.4.19
+      '@vue/shared': 3.4.19
+    dev: true
+
+  /@vue/runtime-dom@3.3.8:
+    resolution: {integrity: sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==}
+    dependencies:
+      '@vue/runtime-core': 3.3.8
+      '@vue/shared': 3.3.8
+      csstype: 3.1.3
+    dev: true
+
+  /@vue/runtime-dom@3.4.19:
+    resolution: {integrity: sha512-IyZzIDqfNCF0OyZOauL+F4yzjMPN2rPd8nhqPP2N1lBn3kYqJpPHHru+83Rkvo2lHz5mW+rEeIMEF9qY3PB94g==}
+    dependencies:
+      '@vue/runtime-core': 3.4.19
+      '@vue/shared': 3.4.19
+      csstype: 3.1.3
+    dev: true
+
+  /@vue/server-renderer@3.3.8(vue@3.3.8):
+    resolution: {integrity: sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==}
+    peerDependencies:
+      vue: 3.3.8
+    dependencies:
+      '@vue/compiler-ssr': 3.3.8
+      '@vue/shared': 3.3.8
+      vue: 3.3.8
+    dev: true
+
+  /@vue/server-renderer@3.4.19(vue@3.4.19):
+    resolution: {integrity: sha512-eAj2p0c429RZyyhtMRnttjcSToch+kTWxFPHlzGMkR28ZbF1PDlTcmGmlDxccBuqNd9iOQ7xPRPAGgPVj+YpQw==}
+    peerDependencies:
+      vue: 3.4.19
+    dependencies:
+      '@vue/compiler-ssr': 3.4.19
+      '@vue/shared': 3.4.19
+      vue: 3.4.19
+    dev: true
+
+  /@vue/shared@3.3.8:
+    resolution: {integrity: sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==}
+    dev: true
+
+  /@vue/shared@3.4.19:
+    resolution: {integrity: sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==}
+    dev: true
+
+  /@vuepress/bundler-vite@2.0.0-rc.0:
+    resolution: {integrity: sha512-rX8S8IYpqqlJfNPstS/joorpxXx/4WuE7+gDM31i2HUrxOKGZVzq8ZsRRRU2UdoTwHZSd3LpUS4sMtxE5xLK1A==}
+    dependencies:
+      '@vitejs/plugin-vue': 4.6.2(vite@5.0.12)(vue@3.4.19)
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      autoprefixer: 10.4.17(postcss@8.4.35)
+      connect-history-api-fallback: 2.0.0
+      postcss: 8.4.35
+      postcss-load-config: 4.0.2(postcss@8.4.35)
+      rollup: 4.11.0
+      vite: 5.0.12
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+    transitivePeerDependencies:
+      - '@types/node'
+      - '@vue/composition-api'
+      - less
+      - lightningcss
+      - sass
+      - stylus
+      - sugarss
+      - supports-color
+      - terser
+      - ts-node
+      - typescript
+    dev: true
+
+  /@vuepress/cli@2.0.0-rc.0:
+    resolution: {integrity: sha512-XWSIFO9iOR7N4O2lXIwS5vZuLjU9WU/aGAtmhMWEMxrdMx7TQaJbgrfpTUEbHMf+cPI1DXBbUbtmkqIvtfOV0w==}
+    hasBin: true
+    dependencies:
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      cac: 6.7.14
+      chokidar: 3.6.0
+      envinfo: 7.11.1
+      esbuild: 0.19.12
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/client@2.0.0-rc.0:
+    resolution: {integrity: sha512-TwQx8hJgYONYxX+QltZ2aw9O5Ym6SKelfiUduuIRb555B1gece/jSVap3H/ZwyBhpgJMtG4+/Mrmf8nlDSHjvw==}
+    dependencies:
+      '@vue/devtools-api': 6.6.1
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vueuse/core': 10.7.2(vue@3.4.19)
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - typescript
+    dev: true
+
+  /@vuepress/client@2.0.0-rc.2:
+    resolution: {integrity: sha512-gQ4CfBhzWYOCW4OcAUd6S8Jr9m/8UkZZuN/70t12GltbX/cdm6zrGnf89GiVjgvoK8+OYoc7luoBuWbyc/X5sg==}
+    dependencies:
+      '@vue/devtools-api': 6.6.1
+      '@vuepress/shared': 2.0.0-rc.2
+      '@vueuse/core': 10.7.2(vue@3.4.19)
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - typescript
+    dev: true
+
+  /@vuepress/core@2.0.0-rc.0:
+    resolution: {integrity: sha512-uoOaZP1MdxZYJIAJcRcmYKKeCIVnxZeOuLMOOB9CPuAKSalT1RvJ1lztw6RX3q9SPnlqtSZPQXDncPAZivw4pA==}
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/markdown': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      vue: 3.4.19
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/core@2.0.0-rc.2:
+    resolution: {integrity: sha512-C/bHG0y+v5oeCrfaesy2yFa0dyCah05g1w7vArZk8ABsVECjZKAC5/ev39UFQm2dCdNzsj2E3KgLIxYWqpcKeg==}
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.2
+      '@vuepress/markdown': 2.0.0-rc.2
+      '@vuepress/shared': 2.0.0-rc.2
+      '@vuepress/utils': 2.0.0-rc.2
+      vue: 3.4.19
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/markdown@2.0.0-rc.0:
+    resolution: {integrity: sha512-USmqdKKMT6ZFHYRztTjKUlO8qgGfnEygMAAq4AzC/uYXiEfrbMBLAWJhteyGS56P3rGLj0OPAhksE681bX/wOg==}
+    dependencies:
+      '@mdit-vue/plugin-component': 1.0.0
+      '@mdit-vue/plugin-frontmatter': 1.0.0
+      '@mdit-vue/plugin-headers': 1.0.0
+      '@mdit-vue/plugin-sfc': 1.0.0
+      '@mdit-vue/plugin-title': 1.0.0
+      '@mdit-vue/plugin-toc': 1.0.0
+      '@mdit-vue/shared': 1.0.0
+      '@mdit-vue/types': 1.0.0
+      '@types/markdown-it': 13.0.7
+      '@types/markdown-it-emoji': 2.0.4
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      markdown-it: 13.0.2
+      markdown-it-anchor: 8.6.7(@types/markdown-it@13.0.7)(markdown-it@13.0.2)
+      markdown-it-emoji: 2.0.2
+      mdurl: 1.0.1
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /@vuepress/markdown@2.0.0-rc.2:
+    resolution: {integrity: sha512-5/RmJnap+MGKxDhSO+Mv6zB8PoPHhhBujnNKKO3PnyfPrj0LyL0AuTm8m3Ea271wMp9956WINjw8jlpn+Z1sBg==}
+    dependencies:
+      '@mdit-vue/plugin-component': 2.0.0
+      '@mdit-vue/plugin-frontmatter': 2.0.0
+      '@mdit-vue/plugin-headers': 2.0.0
+      '@mdit-vue/plugin-sfc': 2.0.0
+      '@mdit-vue/plugin-title': 2.0.0
+      '@mdit-vue/plugin-toc': 2.0.0
+      '@mdit-vue/shared': 2.0.0
+      '@mdit-vue/types': 2.0.0
+      '@types/markdown-it': 13.0.7
+      '@types/markdown-it-emoji': 2.0.4
+      '@vuepress/shared': 2.0.0-rc.2
+      '@vuepress/utils': 2.0.0-rc.2
+      markdown-it: 14.0.0
+      markdown-it-anchor: 8.6.7(@types/markdown-it@13.0.7)(markdown-it@14.0.0)
+      markdown-it-emoji: 3.0.0
+      mdurl: 2.0.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /@vuepress/plugin-active-header-links@2.0.0-rc.0:
+    resolution: {integrity: sha512-UJdXLYNGL5Wjy5YGY8M2QgqT75bZ95EHebbqGi8twBdIJE9O+bM+dPJyYtAk2PIVqFORiw3Hj+PchsNSxdn9+g==}
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      ts-debounce: 4.0.0
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/plugin-back-to-top@2.0.0-rc.0:
+    resolution: {integrity: sha512-6GPfuzV5lkAnR00BxRUhqMXwMWt741alkq2R6bln4N8BneSOwEpX/7vi19MGf232aKdS/Va4pF5p0/nJ8Sed/g==}
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      ts-debounce: 4.0.0
+      vue: 3.4.19
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/plugin-container@2.0.0-rc.0:
+    resolution: {integrity: sha512-b7vrLN11YE7qiUDPfA3N9P7Z8fupe9Wbcr9KAE/bmfZ9VT4d6kzpVyoU7XHi99XngitsmnkaXP4aBvBF1c2AnA==}
+    dependencies:
+      '@types/markdown-it': 13.0.7
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/markdown': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      markdown-it: 13.0.2
+      markdown-it-container: 3.0.0
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/plugin-external-link-icon@2.0.0-rc.0:
+    resolution: {integrity: sha512-o8bk0oIlj/BkKc02mq91XLDloq1VOz/8iNcRwKAeqBE6svXzdYiyoTGet0J/4iPuAetsCn75S57W6RioDJHMnQ==}
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/markdown': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      vue: 3.4.19
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/plugin-git@2.0.0-rc.0:
+    resolution: {integrity: sha512-r7UF77vZxaYeJQLygzodKv+15z3/dTLuGp4VcYO21W6BlJZvd4u9zqgiV7A//bZQvK4+3Hprylr0G3KgXqMewA==}
+    dependencies:
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      execa: 8.0.1
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/plugin-medium-zoom@2.0.0-rc.0:
+    resolution: {integrity: sha512-peU1lYKsmKikIe/0pkJuHzD/k6xW2TuqdvKVhV4I//aOE1WxsREKJ4ACcldmoIsnysoDydAUqKT6xDPGyDsH2g==}
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      medium-zoom: 1.1.0
+      vue: 3.4.19
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/plugin-nprogress@2.0.0-rc.0:
+    resolution: {integrity: sha512-rI+eK0Pg1KiZE+7hGmDUeSbgdWCid8Vnw0hFKNmjinDzGVmx4m03M6qfvclsI0SryH+lR7itZGLaR4gbTlrz/w==}
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/plugin-palette@2.0.0-rc.0:
+    resolution: {integrity: sha512-wW70SCp3/K7s1lln5YQsBGTog2WXaQv5piva5zhXcQ47YGf4aAJpThDa5C/ot4HhkPOKn8Iz5s0ckxXZzW8DIg==}
+    dependencies:
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      chokidar: 3.6.0
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/plugin-prismjs@2.0.0-rc.0:
+    resolution: {integrity: sha512-c5WRI7+FhVjdbymOKQ8F2KY/Bnv7aQtWScVk8vCMUimNi7v7Wff/A/i3KSFNz/tge3LxiAeH/Dc2WS/OnQXwCg==}
+    dependencies:
+      '@vuepress/core': 2.0.0-rc.0
+      prismjs: 1.29.0
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/plugin-theme-data@2.0.0-rc.0:
+    resolution: {integrity: sha512-FXY3/Ml+rM6gNKvwdBF6vKAcwnSvtXCzKgQwJAw3ppQTKUkLcbOxqM+h4d8bzHWAAvdnEvQFug5uEZgWllBQbA==}
+    dependencies:
+      '@vue/devtools-api': 6.6.1
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      vue: 3.4.19
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/shared@2.0.0-rc.0:
+    resolution: {integrity: sha512-ikdSfjRv5LGM1iv4HHwF9P6gqTjaFCXKPK+hzlkHFHNZO1GLqk7/BPc4F51tAG1s8TcLhUZc+54LrfgS7PkXXA==}
+    dependencies:
+      '@mdit-vue/types': 1.0.0
+      '@vue/shared': 3.4.19
+    dev: true
+
+  /@vuepress/shared@2.0.0-rc.2:
+    resolution: {integrity: sha512-2kmm0rw+WalRWrSC5pW0TXRz8Wyuh57XmOZEUOhPOflw4o8Dno+PcaWbdOZ/TLkTgTt3X1n7r1/c1ALtaLta8g==}
+    dependencies:
+      '@mdit-vue/types': 2.0.0
+    dev: true
+
+  /@vuepress/theme-default@2.0.0-rc.0:
+    resolution: {integrity: sha512-I8Y08evDmMuD1jh3NftPpFFSlCWOizQDJLjN7EQwcg7jiAP4A7c2REo6nBN2EmP24Mi7UrRM+RnytHR5V+pElA==}
+    peerDependencies:
+      sass-loader: ^13.3.2
+    peerDependenciesMeta:
+      sass-loader:
+        optional: true
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/plugin-active-header-links': 2.0.0-rc.0
+      '@vuepress/plugin-back-to-top': 2.0.0-rc.0
+      '@vuepress/plugin-container': 2.0.0-rc.0
+      '@vuepress/plugin-external-link-icon': 2.0.0-rc.0
+      '@vuepress/plugin-git': 2.0.0-rc.0
+      '@vuepress/plugin-medium-zoom': 2.0.0-rc.0
+      '@vuepress/plugin-nprogress': 2.0.0-rc.0
+      '@vuepress/plugin-palette': 2.0.0-rc.0
+      '@vuepress/plugin-prismjs': 2.0.0-rc.0
+      '@vuepress/plugin-theme-data': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      '@vueuse/core': 10.7.2(vue@3.4.19)
+      sass: 1.71.0
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /@vuepress/utils@2.0.0-rc.0:
+    resolution: {integrity: sha512-Q1ay/woClDHcW0Qe91KsnHoupdNN0tp/vhjvVLuAYxlv/1Obii7hz9WFcajyyGEhmsYxdvG2sGmcxFA02tuKkw==}
+    dependencies:
+      '@types/debug': 4.1.12
+      '@types/fs-extra': 11.0.4
+      '@types/hash-sum': 1.0.2
+      '@vuepress/shared': 2.0.0-rc.0
+      debug: 4.3.4
+      fs-extra: 11.2.0
+      globby: 14.0.1
+      hash-sum: 2.0.0
+      ora: 7.0.1
+      picocolors: 1.0.0
+      upath: 2.0.1
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /@vuepress/utils@2.0.0-rc.2:
+    resolution: {integrity: sha512-g93yFJKtztpdXm4XyOIQ9QcUrKuvuWizvH3qWDQ5/WKlxa6VqE7nVNPlkudgGUIc7Bl4AGrlHcmgvkwaNoMcfA==}
+    dependencies:
+      '@types/debug': 4.1.12
+      '@types/fs-extra': 11.0.4
+      '@types/hash-sum': 1.0.2
+      '@vuepress/shared': 2.0.0-rc.2
+      debug: 4.3.4
+      fs-extra: 11.2.0
+      globby: 14.0.1
+      hash-sum: 2.0.0
+      ora: 8.0.1
+      picocolors: 1.0.0
+      upath: 2.0.1
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /@vueuse/core@10.7.2(vue@3.4.19):
+    resolution: {integrity: sha512-AOyAL2rK0By62Hm+iqQn6Rbu8bfmbgaIMXcE3TSr7BdQ42wnSFlwIdPjInO62onYsEMK/yDMU8C6oGfDAtZ2qQ==}
+    dependencies:
+      '@types/web-bluetooth': 0.0.20
+      '@vueuse/metadata': 10.7.2
+      '@vueuse/shared': 10.7.2(vue@3.4.19)
+      vue-demi: 0.14.7(vue@3.4.19)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - vue
+    dev: true
+
+  /@vueuse/metadata@10.7.2:
+    resolution: {integrity: sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==}
+    dev: true
+
+  /@vueuse/shared@10.7.2(vue@3.4.19):
+    resolution: {integrity: sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==}
+    dependencies:
+      vue-demi: 0.14.7(vue@3.4.19)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - vue
+    dev: true
+
+  /acorn@8.11.3:
+    resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
+    engines: {node: '>=0.4.0'}
+    hasBin: true
+    dev: true
+
+  /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-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
+    dev: true
+
+  /ansi-styles@4.3.0:
+    resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+    engines: {node: '>=8'}
+    dependencies:
+      color-convert: 2.0.1
+    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
+
+  /arg@5.0.2:
+    resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+    dev: true
+
+  /argparse@1.0.10:
+    resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+    dependencies:
+      sprintf-js: 1.0.3
+    dev: true
+
+  /argparse@2.0.1:
+    resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+    dev: true
+
+  /array-buffer-byte-length@1.0.1:
+    resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      call-bind: 1.0.7
+      is-array-buffer: 3.0.4
+    dev: true
+
+  /arraybuffer.prototype.slice@1.0.3:
+    resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      array-buffer-byte-length: 1.0.1
+      call-bind: 1.0.7
+      define-properties: 1.2.1
+      es-abstract: 1.22.4
+      es-errors: 1.3.0
+      get-intrinsic: 1.2.4
+      is-array-buffer: 3.0.4
+      is-shared-array-buffer: 1.0.2
+    dev: true
+
+  /async@3.2.5:
+    resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==}
+    dev: true
+
+  /at-least-node@1.0.0:
+    resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
+    engines: {node: '>= 4.0.0'}
+    dev: true
+
+  /autoprefixer@10.4.17(postcss@8.4.35):
+    resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==}
+    engines: {node: ^10 || ^12 || >=14}
+    hasBin: true
+    peerDependencies:
+      postcss: ^8.1.0
+    dependencies:
+      browserslist: 4.23.0
+      caniuse-lite: 1.0.30001587
+      fraction.js: 4.3.7
+      normalize-range: 0.1.2
+      picocolors: 1.0.0
+      postcss: 8.4.35
+      postcss-value-parser: 4.2.0
+    dev: true
+
+  /available-typed-arrays@1.0.6:
+    resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==}
+    engines: {node: '>= 0.4'}
+    dev: true
+
+  /babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9)
+      semver: 6.3.1
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.23.9):
+    resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==}
+    peerDependencies:
+      '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+    dependencies:
+      '@babel/core': 7.23.9
+      '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9)
+      core-js-compat: 3.36.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.23.9):
+    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.9
+      '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9)
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /balanced-match@1.0.2:
+    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+    dev: true
+
+  /balloon-css@1.2.0:
+    resolution: {integrity: sha512-urXwkHgwp6GsXVF+it01485Z2Cj4pnW02ICnM0TemOlkKmCNnDLmyy+ZZiRXBpwldUXO+aRNr7Hdia4CBvXJ5A==}
+    dev: true
+
+  /base64-js@1.5.1:
+    resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+    dev: true
+
+  /bcrypt-ts@5.0.1:
+    resolution: {integrity: sha512-+Q6wjkT+PO0Da56BIyaYyueMeqAV/zOXqfFIssRgCbQLGwU+YkBJfBpP2Q9Q8hGbpDyDNCrG36npSdE+S9HWUA==}
+    engines: {node: '>=18'}
+    dev: true
+
+  /binary-extensions@2.2.0:
+    resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /bl@5.1.0:
+    resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==}
+    dependencies:
+      buffer: 6.0.3
+      inherits: 2.0.4
+      readable-stream: 3.6.2
+    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
+
+  /browserslist@4.23.0:
+    resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
+    engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+    hasBin: true
+    dependencies:
+      caniuse-lite: 1.0.30001587
+      electron-to-chromium: 1.4.672
+      node-releases: 2.0.14
+      update-browserslist-db: 1.0.13(browserslist@4.23.0)
+    dev: true
+
+  /buffer-from@1.1.2:
+    resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+    dev: true
+
+  /buffer@6.0.3:
+    resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+    dependencies:
+      base64-js: 1.5.1
+      ieee754: 1.2.1
+    dev: true
+
+  /builtin-modules@3.3.0:
+    resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /cac@6.7.14:
+    resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /call-bind@1.0.7:
+    resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      es-define-property: 1.0.0
+      es-errors: 1.3.0
+      function-bind: 1.1.2
+      get-intrinsic: 1.2.4
+      set-function-length: 1.2.1
+    dev: true
+
+  /camelcase@5.3.1:
+    resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /caniuse-lite@1.0.30001587:
+    resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==}
+    dev: true
+
+  /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
+    dev: true
+
+  /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.3.0:
+    resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
+    engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+    dev: true
+
+  /character-entities@2.0.2:
+    resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+    dev: true
+
+  /cheerio-select@2.1.0:
+    resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==}
+    dependencies:
+      boolbase: 1.0.0
+      css-select: 5.1.0
+      css-what: 6.1.0
+      domelementtype: 2.3.0
+      domhandler: 5.0.3
+      domutils: 3.1.0
+    dev: true
+
+  /cheerio@1.0.0-rc.12:
+    resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==}
+    engines: {node: '>= 6'}
+    dependencies:
+      cheerio-select: 2.1.0
+      dom-serializer: 2.0.0
+      domhandler: 5.0.3
+      domutils: 3.1.0
+      htmlparser2: 8.0.2
+      parse5: 7.1.2
+      parse5-htmlparser2-tree-adapter: 7.0.0
+    dev: true
+
+  /chokidar@3.6.0:
+    resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+    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
+
+  /cli-cursor@4.0.0:
+    resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
+    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+    dependencies:
+      restore-cursor: 4.0.0
+    dev: true
+
+  /cli-spinners@2.9.2:
+    resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /cliui@6.0.0:
+    resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
+    dependencies:
+      string-width: 4.2.3
+      strip-ansi: 6.0.1
+      wrap-ansi: 6.2.0
+    dev: true
+
+  /color-convert@1.9.3:
+    resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+    dependencies:
+      color-name: 1.1.3
+    dev: true
+
+  /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==}
+    dev: true
+
+  /color-name@1.1.4:
+    resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+    dev: true
+
+  /commander@2.20.3:
+    resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+    dev: true
+
+  /commander@7.2.0:
+    resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+    engines: {node: '>= 10'}
+    dev: true
+
+  /commander@8.3.0:
+    resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
+    engines: {node: '>= 12'}
+    dev: true
+
+  /common-tags@1.8.2:
+    resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
+    engines: {node: '>=4.0.0'}
+    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
+
+  /convert-source-map@2.0.0:
+    resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+    dev: true
+
+  /core-js-compat@3.36.0:
+    resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==}
+    dependencies:
+      browserslist: 4.23.0
+    dev: true
+
+  /cose-base@1.0.3:
+    resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==}
+    dependencies:
+      layout-base: 1.0.2
+    dev: true
+
+  /create-codepen@1.0.1:
+    resolution: {integrity: sha512-XzSWwGCFNeOnNGp3KdCDGaKq4Cp1SvjzpPGQqO0tj1HT3BhksLdl/xQ2ZEY4+0MQ3m1I/K1Fvpm4GGMthtamyA==}
+    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-random-string@2.0.0:
+    resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==}
+    engines: {node: '>=8'}
+    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-what@6.1.0:
+    resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
+    engines: {node: '>= 6'}
+    dev: true
+
+  /csstype@3.1.3:
+    resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+    dev: true
+
+  /cytoscape-cose-bilkent@4.1.0(cytoscape@3.28.1):
+    resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==}
+    peerDependencies:
+      cytoscape: ^3.2.0
+    dependencies:
+      cose-base: 1.0.3
+      cytoscape: 3.28.1
+    dev: true
+
+  /cytoscape@3.28.1:
+    resolution: {integrity: sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==}
+    engines: {node: '>=0.10'}
+    dependencies:
+      heap: 0.2.7
+      lodash: 4.17.21
+    dev: true
+
+  /d3-array@2.12.1:
+    resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==}
+    dependencies:
+      internmap: 1.0.1
+    dev: true
+
+  /d3-array@3.2.4:
+    resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==}
+    engines: {node: '>=12'}
+    dependencies:
+      internmap: 2.0.3
+    dev: true
+
+  /d3-axis@3.0.0:
+    resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /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: true
+
+  /d3-chord@3.0.1:
+    resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==}
+    engines: {node: '>=12'}
+    dependencies:
+      d3-path: 3.1.0
+    dev: true
+
+  /d3-color@3.1.0:
+    resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /d3-contour@4.0.2:
+    resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==}
+    engines: {node: '>=12'}
+    dependencies:
+      d3-array: 3.2.4
+    dev: true
+
+  /d3-delaunay@6.0.4:
+    resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==}
+    engines: {node: '>=12'}
+    dependencies:
+      delaunator: 5.0.1
+    dev: true
+
+  /d3-dispatch@3.0.1:
+    resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /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: true
+
+  /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: true
+
+  /d3-ease@3.0.1:
+    resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /d3-fetch@3.0.1:
+    resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==}
+    engines: {node: '>=12'}
+    dependencies:
+      d3-dsv: 3.0.1
+    dev: true
+
+  /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: true
+
+  /d3-format@3.1.0:
+    resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /d3-geo@3.1.0:
+    resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==}
+    engines: {node: '>=12'}
+    dependencies:
+      d3-array: 3.2.4
+    dev: true
+
+  /d3-hierarchy@3.1.2:
+    resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /d3-interpolate@3.0.1:
+    resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
+    engines: {node: '>=12'}
+    dependencies:
+      d3-color: 3.1.0
+    dev: true
+
+  /d3-path@1.0.9:
+    resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==}
+    dev: true
+
+  /d3-path@3.1.0:
+    resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /d3-polygon@3.0.1:
+    resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /d3-quadtree@3.0.1:
+    resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /d3-random@3.0.1:
+    resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /d3-sankey@0.12.3:
+    resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==}
+    dependencies:
+      d3-array: 2.12.1
+      d3-shape: 1.3.7
+    dev: true
+
+  /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: true
+
+  /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: true
+
+  /d3-selection@3.0.0:
+    resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /d3-shape@1.3.7:
+    resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==}
+    dependencies:
+      d3-path: 1.0.9
+    dev: true
+
+  /d3-shape@3.2.0:
+    resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==}
+    engines: {node: '>=12'}
+    dependencies:
+      d3-path: 3.1.0
+    dev: true
+
+  /d3-time-format@4.1.0:
+    resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==}
+    engines: {node: '>=12'}
+    dependencies:
+      d3-time: 3.1.0
+    dev: true
+
+  /d3-time@3.1.0:
+    resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==}
+    engines: {node: '>=12'}
+    dependencies:
+      d3-array: 3.2.4
+    dev: true
+
+  /d3-timer@3.0.1:
+    resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /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: true
+
+  /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: true
+
+  /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: true
+
+  /dagre-d3-es@7.0.10:
+    resolution: {integrity: sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==}
+    dependencies:
+      d3: 7.8.5
+      lodash-es: 4.17.21
+    dev: true
+
+  /dayjs@1.11.10:
+    resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==}
+    dev: true
+
+  /debug@4.3.4:
+    resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+    engines: {node: '>=6.0'}
+    peerDependencies:
+      supports-color: '*'
+    peerDependenciesMeta:
+      supports-color:
+        optional: true
+    dependencies:
+      ms: 2.1.2
+    dev: true
+
+  /decamelize@1.2.0:
+    resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /decode-named-character-reference@1.0.2:
+    resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
+    dependencies:
+      character-entities: 2.0.2
+    dev: true
+
+  /deepmerge@4.3.1:
+    resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /define-data-property@1.1.4:
+    resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      es-define-property: 1.0.0
+      es-errors: 1.3.0
+      gopd: 1.0.1
+    dev: true
+
+  /define-properties@1.2.1:
+    resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      define-data-property: 1.1.4
+      has-property-descriptors: 1.0.2
+      object-keys: 1.1.1
+    dev: true
+
+  /delaunator@5.0.1:
+    resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==}
+    dependencies:
+      robust-predicates: 3.0.2
+    dev: true
+
+  /dequal@2.0.3:
+    resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /diff@5.2.0:
+    resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
+    engines: {node: '>=0.3.1'}
+    dev: true
+
+  /dijkstrajs@1.0.3:
+    resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==}
+    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
+
+  /domelementtype@2.3.0:
+    resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
+    dev: true
+
+  /domhandler@5.0.3:
+    resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
+    engines: {node: '>= 4'}
+    dependencies:
+      domelementtype: 2.3.0
+    dev: true
+
+  /dompurify@3.0.8:
+    resolution: {integrity: sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ==}
+    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
+
+  /eastasianwidth@0.2.0:
+    resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+    dev: true
+
+  /ejs@3.1.9:
+    resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==}
+    engines: {node: '>=0.10.0'}
+    hasBin: true
+    dependencies:
+      jake: 10.8.7
+    dev: true
+
+  /electron-to-chromium@1.4.672:
+    resolution: {integrity: sha512-YYCy+goe3UqZqa3MOQCI5Mx/6HdBLzXL/mkbGCEWL3sP3Z1BP9zqAzeD3YEmLZlespYGFtyM8tRp5i2vfaUGCA==}
+    dev: true
+
+  /elkjs@0.9.1:
+    resolution: {integrity: sha512-JWKDyqAdltuUcyxaECtYG6H4sqysXSLeoXuGUBfRNESMTkj+w+qdb0jya8Z/WI0jVd03WQtCGhS6FOFtlhD5FQ==}
+    dev: true
+
+  /emoji-regex@10.3.0:
+    resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
+    dev: true
+
+  /emoji-regex@8.0.0:
+    resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+    dev: true
+
+  /encode-utf8@1.0.3:
+    resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==}
+    dev: true
+
+  /entities@3.0.1:
+    resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==}
+    engines: {node: '>=0.12'}
+    dev: true
+
+  /entities@4.5.0:
+    resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+    engines: {node: '>=0.12'}
+    dev: true
+
+  /envinfo@7.11.1:
+    resolution: {integrity: sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==}
+    engines: {node: '>=4'}
+    hasBin: true
+    dev: true
+
+  /es-abstract@1.22.4:
+    resolution: {integrity: sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      array-buffer-byte-length: 1.0.1
+      arraybuffer.prototype.slice: 1.0.3
+      available-typed-arrays: 1.0.6
+      call-bind: 1.0.7
+      es-define-property: 1.0.0
+      es-errors: 1.3.0
+      es-set-tostringtag: 2.0.2
+      es-to-primitive: 1.2.1
+      function.prototype.name: 1.1.6
+      get-intrinsic: 1.2.4
+      get-symbol-description: 1.0.2
+      globalthis: 1.0.3
+      gopd: 1.0.1
+      has-property-descriptors: 1.0.2
+      has-proto: 1.0.1
+      has-symbols: 1.0.3
+      hasown: 2.0.1
+      internal-slot: 1.0.7
+      is-array-buffer: 3.0.4
+      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.13
+      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.2
+      safe-array-concat: 1.1.0
+      safe-regex-test: 1.0.3
+      string.prototype.trim: 1.2.8
+      string.prototype.trimend: 1.0.7
+      string.prototype.trimstart: 1.0.7
+      typed-array-buffer: 1.0.1
+      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.14
+    dev: true
+
+  /es-define-property@1.0.0:
+    resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      get-intrinsic: 1.2.4
+    dev: true
+
+  /es-errors@1.3.0:
+    resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+    engines: {node: '>= 0.4'}
+    dev: true
+
+  /es-set-tostringtag@2.0.2:
+    resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      get-intrinsic: 1.2.4
+      has-tostringtag: 1.0.2
+      hasown: 2.0.1
+    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.19.12:
+    resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
+    engines: {node: '>=12'}
+    hasBin: true
+    requiresBuild: true
+    optionalDependencies:
+      '@esbuild/aix-ppc64': 0.19.12
+      '@esbuild/android-arm': 0.19.12
+      '@esbuild/android-arm64': 0.19.12
+      '@esbuild/android-x64': 0.19.12
+      '@esbuild/darwin-arm64': 0.19.12
+      '@esbuild/darwin-x64': 0.19.12
+      '@esbuild/freebsd-arm64': 0.19.12
+      '@esbuild/freebsd-x64': 0.19.12
+      '@esbuild/linux-arm': 0.19.12
+      '@esbuild/linux-arm64': 0.19.12
+      '@esbuild/linux-ia32': 0.19.12
+      '@esbuild/linux-loong64': 0.19.12
+      '@esbuild/linux-mips64el': 0.19.12
+      '@esbuild/linux-ppc64': 0.19.12
+      '@esbuild/linux-riscv64': 0.19.12
+      '@esbuild/linux-s390x': 0.19.12
+      '@esbuild/linux-x64': 0.19.12
+      '@esbuild/netbsd-x64': 0.19.12
+      '@esbuild/openbsd-x64': 0.19.12
+      '@esbuild/sunos-x64': 0.19.12
+      '@esbuild/win32-arm64': 0.19.12
+      '@esbuild/win32-ia32': 0.19.12
+      '@esbuild/win32-x64': 0.19.12
+    dev: true
+
+  /escalade@3.1.2:
+    resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /escape-string-regexp@1.0.5:
+    resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+    engines: {node: '>=0.8.0'}
+    dev: true
+
+  /esprima@4.0.1:
+    resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+    engines: {node: '>=4'}
+    hasBin: true
+    dev: true
+
+  /estree-walker@1.0.1:
+    resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==}
+    dev: true
+
+  /estree-walker@2.0.2:
+    resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+    dev: true
+
+  /esutils@2.0.3:
+    resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /execa@8.0.1:
+    resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
+    engines: {node: '>=16.17'}
+    dependencies:
+      cross-spawn: 7.0.3
+      get-stream: 8.0.1
+      human-signals: 5.0.0
+      is-stream: 3.0.0
+      merge-stream: 2.0.0
+      npm-run-path: 5.2.0
+      onetime: 6.0.0
+      signal-exit: 4.1.0
+      strip-final-newline: 3.0.0
+    dev: true
+
+  /extend-shallow@2.0.1:
+    resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      is-extendable: 0.1.1
+    dev: true
+
+  /fast-deep-equal@3.1.3:
+    resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+    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==}
+    dev: true
+
+  /fastq@1.17.1:
+    resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+    dependencies:
+      reusify: 1.0.4
+    dev: true
+
+  /fflate@0.8.2:
+    resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==}
+    dev: true
+
+  /filelist@1.0.4:
+    resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
+    dependencies:
+      minimatch: 5.1.6
+    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-up@4.1.0:
+    resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+    engines: {node: '>=8'}
+    dependencies:
+      locate-path: 5.0.0
+      path-exists: 4.0.0
+    dev: true
+
+  /for-each@0.3.3:
+    resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
+    dependencies:
+      is-callable: 1.2.7
+    dev: true
+
+  /fraction.js@4.3.7:
+    resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+    dev: true
+
+  /fs-extra@11.2.0:
+    resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
+    engines: {node: '>=14.14'}
+    dependencies:
+      graceful-fs: 4.2.11
+      jsonfile: 6.1.0
+      universalify: 2.0.1
+    dev: true
+
+  /fs-extra@9.1.0:
+    resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
+    engines: {node: '>=10'}
+    dependencies:
+      at-least-node: 1.0.0
+      graceful-fs: 4.2.11
+      jsonfile: 6.1.0
+      universalify: 2.0.1
+    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: false
+    dev: true
     optional: true
 
-  /@pagefind/darwin-x64@1.3.0:
-    resolution: {integrity: sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow==}
-    cpu: [x64]
-    os: [darwin]
-    requiresBuild: true
-    dev: false
-    optional: true
+  /function-bind@1.1.2:
+    resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+    dev: true
+
+  /function.prototype.name@1.1.6:
+    resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      call-bind: 1.0.7
+      define-properties: 1.2.1
+      es-abstract: 1.22.4
+      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'}
+    dev: true
+
+  /get-caller-file@2.0.5:
+    resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+    engines: {node: 6.* || 8.* || >= 10.*}
+    dev: true
+
+  /get-east-asian-width@1.2.0:
+    resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
+    engines: {node: '>=18'}
+    dev: true
+
+  /get-intrinsic@1.2.4:
+    resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      es-errors: 1.3.0
+      function-bind: 1.1.2
+      has-proto: 1.0.1
+      has-symbols: 1.0.3
+      hasown: 2.0.1
+    dev: true
+
+  /get-own-enumerable-property-symbols@3.0.2:
+    resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
+    dev: true
+
+  /get-stream@8.0.1:
+    resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
+    engines: {node: '>=16'}
+    dev: true
+
+  /get-symbol-description@1.0.2:
+    resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      call-bind: 1.0.7
+      es-errors: 1.3.0
+      get-intrinsic: 1.2.4
+    dev: true
+
+  /giscus@1.4.0:
+    resolution: {integrity: sha512-Pll+pcclTx47NcFDw8nuka2Ja85Gc4XWpzSgL0rszOQaMQRQIV8UMR+zP4a+/N3tV2TXc1SZ537kWlsN6EsAaw==}
+    dependencies:
+      lit: 3.1.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@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
+
+  /globals@11.12.0:
+    resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+    engines: {node: '>=4'}
+    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@14.0.1:
+    resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==}
+    engines: {node: '>=18'}
+    dependencies:
+      '@sindresorhus/merge-streams': 2.2.1
+      fast-glob: 3.3.2
+      ignore: 5.3.1
+      path-type: 5.0.0
+      slash: 5.1.0
+      unicorn-magic: 0.1.0
+    dev: true
+
+  /gopd@1.0.1:
+    resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+    dependencies:
+      get-intrinsic: 1.2.4
+    dev: true
+
+  /graceful-fs@4.2.11:
+    resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+    dev: true
+
+  /gray-matter@4.0.3:
+    resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
+    engines: {node: '>=6.0'}
+    dependencies:
+      js-yaml: 3.14.1
+      kind-of: 6.0.3
+      section-matter: 1.0.0
+      strip-bom-string: 1.0.0
+    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'}
+    dev: true
+
+  /has-flag@4.0.0:
+    resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /has-property-descriptors@1.0.2:
+    resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+    dependencies:
+      es-define-property: 1.0.0
+    dev: true
+
+  /has-proto@1.0.1:
+    resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
+    engines: {node: '>= 0.4'}
+    dev: true
+
+  /has-symbols@1.0.3:
+    resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+    engines: {node: '>= 0.4'}
+    dev: true
+
+  /has-tostringtag@1.0.2:
+    resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      has-symbols: 1.0.3
+    dev: true
+
+  /hash-sum@2.0.0:
+    resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==}
+    dev: true
+
+  /hasown@2.0.1:
+    resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      function-bind: 1.1.2
+    dev: true
+
+  /heap@0.2.7:
+    resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==}
+    dev: true
+
+  /htmlparser2@8.0.2:
+    resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
+    dependencies:
+      domelementtype: 2.3.0
+      domhandler: 5.0.3
+      domutils: 3.1.0
+      entities: 4.5.0
+    dev: true
+
+  /human-signals@5.0.0:
+    resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
+    engines: {node: '>=16.17.0'}
+    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: true
+
+  /idb@7.1.1:
+    resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==}
+    dev: true
+
+  /ieee754@1.2.1:
+    resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+    dev: true
+
+  /ignore@5.3.1:
+    resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
+    engines: {node: '>= 4'}
+    dev: true
+
+  /immutable@4.3.5:
+    resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==}
+    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.4:
+    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+    dev: true
+
+  /internal-slot@1.0.7:
+    resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      es-errors: 1.3.0
+      hasown: 2.0.1
+      side-channel: 1.0.5
+    dev: true
+
+  /internmap@1.0.1:
+    resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==}
+    dev: true
+
+  /internmap@2.0.3:
+    resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /is-array-buffer@3.0.4:
+    resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      call-bind: 1.0.7
+      get-intrinsic: 1.2.4
+    dev: true
+
+  /is-bigint@1.0.4:
+    resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+    dependencies:
+      has-bigints: 1.0.2
+    dev: true
 
-  /@pagefind/linux-arm64@1.3.0:
-    resolution: {integrity: sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ==}
-    cpu: [arm64]
-    os: [linux]
-    requiresBuild: true
-    dev: false
-    optional: true
+  /is-binary-path@2.1.0:
+    resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+    engines: {node: '>=8'}
+    dependencies:
+      binary-extensions: 2.2.0
+    dev: true
 
-  /@pagefind/linux-x64@1.3.0:
-    resolution: {integrity: sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ==}
-    cpu: [x64]
-    os: [linux]
-    requiresBuild: true
-    dev: false
-    optional: true
+  /is-boolean-object@1.1.2:
+    resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      call-bind: 1.0.7
+      has-tostringtag: 1.0.2
+    dev: true
 
-  /@pagefind/windows-x64@1.3.0:
-    resolution: {integrity: sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ==}
-    cpu: [x64]
-    os: [win32]
-    requiresBuild: true
-    dev: false
-    optional: true
+  /is-callable@1.2.7:
+    resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  /@rollup/rollup-android-arm-eabi@4.46.2:
-    resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==}
-    cpu: [arm]
-    os: [android]
-    requiresBuild: true
-    optional: true
+  /is-core-module@2.13.1:
+    resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
+    dependencies:
+      hasown: 2.0.1
+    dev: true
 
-  /@rollup/rollup-android-arm64@4.46.2:
-    resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==}
-    cpu: [arm64]
-    os: [android]
-    requiresBuild: true
-    optional: true
+  /is-date-object@1.0.5:
+    resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      has-tostringtag: 1.0.2
+    dev: true
 
-  /@rollup/rollup-darwin-arm64@4.46.2:
-    resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==}
-    cpu: [arm64]
-    os: [darwin]
-    requiresBuild: true
-    optional: true
+  /is-extendable@0.1.1:
+    resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  /@rollup/rollup-darwin-x64@4.46.2:
-    resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==}
-    cpu: [x64]
-    os: [darwin]
-    requiresBuild: true
-    optional: true
+  /is-extglob@2.1.1:
+    resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  /@rollup/rollup-freebsd-arm64@4.46.2:
-    resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==}
-    cpu: [arm64]
-    os: [freebsd]
-    requiresBuild: true
-    optional: true
+  /is-fullwidth-code-point@3.0.0:
+    resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+    engines: {node: '>=8'}
+    dev: true
 
-  /@rollup/rollup-freebsd-x64@4.46.2:
-    resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==}
-    cpu: [x64]
-    os: [freebsd]
-    requiresBuild: true
-    optional: true
+  /is-glob@4.0.3:
+    resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      is-extglob: 2.1.1
+    dev: true
 
-  /@rollup/rollup-linux-arm-gnueabihf@4.46.2:
-    resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==}
-    cpu: [arm]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+  /is-interactive@2.0.0:
+    resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==}
+    engines: {node: '>=12'}
+    dev: true
 
-  /@rollup/rollup-linux-arm-musleabihf@4.46.2:
-    resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==}
-    cpu: [arm]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+  /is-module@1.0.0:
+    resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
+    dev: true
 
-  /@rollup/rollup-linux-arm64-gnu@4.46.2:
-    resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==}
-    cpu: [arm64]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+  /is-negative-zero@2.0.2:
+    resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  /@rollup/rollup-linux-arm64-musl@4.46.2:
-    resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==}
-    cpu: [arm64]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+  /is-number-object@1.0.7:
+    resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      has-tostringtag: 1.0.2
+    dev: true
 
-  /@rollup/rollup-linux-loongarch64-gnu@4.46.2:
-    resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==}
-    cpu: [loong64]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+  /is-number@7.0.0:
+    resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+    engines: {node: '>=0.12.0'}
+    dev: true
 
-  /@rollup/rollup-linux-ppc64-gnu@4.46.2:
-    resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==}
-    cpu: [ppc64]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+  /is-obj@1.0.1:
+    resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  /@rollup/rollup-linux-riscv64-gnu@4.46.2:
-    resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==}
-    cpu: [riscv64]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+  /is-regex@1.1.4:
+    resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      call-bind: 1.0.7
+      has-tostringtag: 1.0.2
+    dev: true
 
-  /@rollup/rollup-linux-riscv64-musl@4.46.2:
-    resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==}
-    cpu: [riscv64]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+  /is-regexp@1.0.0:
+    resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  /@rollup/rollup-linux-s390x-gnu@4.46.2:
-    resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==}
-    cpu: [s390x]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+  /is-shared-array-buffer@1.0.2:
+    resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
+    dependencies:
+      call-bind: 1.0.7
+    dev: true
 
-  /@rollup/rollup-linux-x64-gnu@4.46.2:
-    resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==}
-    cpu: [x64]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+  /is-stream@2.0.1:
+    resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+    engines: {node: '>=8'}
+    dev: true
 
-  /@rollup/rollup-linux-x64-musl@4.46.2:
-    resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==}
-    cpu: [x64]
-    os: [linux]
-    requiresBuild: true
-    optional: true
+  /is-stream@3.0.0:
+    resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+    dev: true
 
-  /@rollup/rollup-win32-arm64-msvc@4.46.2:
-    resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==}
-    cpu: [arm64]
-    os: [win32]
-    requiresBuild: true
-    optional: true
+  /is-string@1.0.7:
+    resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      has-tostringtag: 1.0.2
+    dev: true
 
-  /@rollup/rollup-win32-ia32-msvc@4.46.2:
-    resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==}
-    cpu: [ia32]
-    os: [win32]
-    requiresBuild: true
-    optional: 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.13:
+    resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      which-typed-array: 1.1.14
+    dev: true
+
+  /is-unicode-supported@1.3.0:
+    resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /is-unicode-supported@2.0.0:
+    resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==}
+    engines: {node: '>=18'}
+    dev: true
+
+  /is-weakref@1.0.2:
+    resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+    dependencies:
+      call-bind: 1.0.7
+    dev: true
+
+  /isarray@2.0.5:
+    resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+    dev: true
+
+  /isexe@2.0.0:
+    resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+    dev: true
+
+  /jake@10.8.7:
+    resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==}
+    engines: {node: '>=10'}
+    hasBin: true
+    dependencies:
+      async: 3.2.5
+      chalk: 4.1.2
+      filelist: 1.0.4
+      minimatch: 3.1.2
+    dev: true
+
+  /jest-worker@26.6.2:
+    resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==}
+    engines: {node: '>= 10.13.0'}
+    dependencies:
+      '@types/node': 20.11.19
+      merge-stream: 2.0.0
+      supports-color: 7.2.0
+    dev: true
+
+  /js-tokens@4.0.0:
+    resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+    dev: true
+
+  /js-yaml@3.14.1:
+    resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+    hasBin: true
+    dependencies:
+      argparse: 1.0.10
+      esprima: 4.0.1
+    dev: true
+
+  /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
+    dev: true
+
+  /json-schema-traverse@1.0.0:
+    resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+    dev: true
+
+  /json-schema@0.4.0:
+    resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
+    dev: true
+
+  /json5@2.2.3:
+    resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+    engines: {node: '>=6'}
+    hasBin: true
+    dev: true
+
+  /jsonfile@6.1.0:
+    resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+    dependencies:
+      universalify: 2.0.1
+    optionalDependencies:
+      graceful-fs: 4.2.11
+    dev: true
+
+  /jsonpointer@5.0.1:
+    resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /katex@0.16.9:
+    resolution: {integrity: sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==}
+    hasBin: true
+    dependencies:
+      commander: 8.3.0
+    dev: true
+
+  /khroma@2.1.0:
+    resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==}
+    dev: true
+
+  /kind-of@6.0.3:
+    resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /kleur@4.1.5:
+    resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /layout-base@1.0.2:
+    resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==}
+    dev: true
+
+  /leven@3.1.0:
+    resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /lilconfig@3.1.0:
+    resolution: {integrity: sha512-p3cz0JV5vw/XeouBU3Ldnp+ZkBjE+n8ydJ4mcwBrOiXXPqNlrzGBqWs9X4MWF7f+iKUBu794Y8Hh8yawiJbCjw==}
+    engines: {node: '>=14'}
+    dev: true
+
+  /linkify-it@4.0.1:
+    resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==}
+    dependencies:
+      uc.micro: 1.0.6
+    dev: true
+
+  /linkify-it@5.0.0:
+    resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
+    dependencies:
+      uc.micro: 2.0.0
+    dev: true
+
+  /lit-element@4.0.4:
+    resolution: {integrity: sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==}
+    dependencies:
+      '@lit-labs/ssr-dom-shim': 1.2.0
+      '@lit/reactive-element': 2.0.4
+      lit-html: 3.1.2
+    dev: true
+
+  /lit-html@3.1.2:
+    resolution: {integrity: sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==}
+    dependencies:
+      '@types/trusted-types': 2.0.7
+    dev: true
+
+  /lit@3.1.2:
+    resolution: {integrity: sha512-VZx5iAyMtX7CV4K8iTLdCkMaYZ7ipjJZ0JcSdJ0zIdGxxyurjIn7yuuSxNBD7QmjvcNJwr0JS4cAdAtsy7gZ6w==}
+    dependencies:
+      '@lit/reactive-element': 2.0.4
+      lit-element: 4.0.4
+      lit-html: 3.1.2
+    dev: true
+
+  /locate-path@5.0.0:
+    resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+    engines: {node: '>=8'}
+    dependencies:
+      p-locate: 4.1.0
+    dev: true
+
+  /lodash-es@4.17.21:
+    resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
+    dev: true
+
+  /lodash.debounce@4.0.8:
+    resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
+    dev: true
+
+  /lodash.sortby@4.7.0:
+    resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
+    dev: true
 
-  /@rollup/rollup-win32-x64-msvc@4.46.2:
-    resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==}
-    cpu: [x64]
-    os: [win32]
-    requiresBuild: true
-    optional: true
+  /lodash@4.17.21:
+    resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+    dev: true
 
-  /@sec-ant/readable-stream@0.4.1:
-    resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
+  /log-symbols@5.1.0:
+    resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==}
+    engines: {node: '>=12'}
+    dependencies:
+      chalk: 5.3.0
+      is-unicode-supported: 1.3.0
     dev: true
 
-  /@shikijs/core@2.5.0:
-    resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==}
+  /log-symbols@6.0.0:
+    resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==}
+    engines: {node: '>=18'}
     dependencies:
-      '@shikijs/engine-javascript': 2.5.0
-      '@shikijs/engine-oniguruma': 2.5.0
-      '@shikijs/types': 2.5.0
-      '@shikijs/vscode-textmate': 10.0.2
-      '@types/hast': 3.0.4
-      hast-util-to-html: 9.0.5
+      chalk: 5.3.0
+      is-unicode-supported: 1.3.0
+    dev: true
 
-  /@shikijs/engine-javascript@2.5.0:
-    resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==}
+  /lru-cache@5.1.1:
+    resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
     dependencies:
-      '@shikijs/types': 2.5.0
-      '@shikijs/vscode-textmate': 10.0.2
-      oniguruma-to-es: 3.1.1
+      yallist: 3.1.1
+    dev: true
 
-  /@shikijs/engine-oniguruma@2.5.0:
-    resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==}
+  /lru-cache@6.0.0:
+    resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+    engines: {node: '>=10'}
     dependencies:
-      '@shikijs/types': 2.5.0
-      '@shikijs/vscode-textmate': 10.0.2
+      yallist: 4.0.0
+    dev: true
 
-  /@shikijs/langs@2.5.0:
-    resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==}
+  /magic-string@0.25.9:
+    resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
     dependencies:
-      '@shikijs/types': 2.5.0
+      sourcemap-codec: 1.4.8
+    dev: true
 
-  /@shikijs/themes@2.5.0:
-    resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==}
+  /magic-string@0.30.7:
+    resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==}
+    engines: {node: '>=12'}
     dependencies:
-      '@shikijs/types': 2.5.0
+      '@jridgewell/sourcemap-codec': 1.4.15
+    dev: true
 
-  /@shikijs/transformers@2.5.0:
-    resolution: {integrity: sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==}
+  /markdown-it-anchor@8.6.7(@types/markdown-it@13.0.7)(markdown-it@13.0.2):
+    resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==}
+    peerDependencies:
+      '@types/markdown-it': '*'
+      markdown-it: '*'
     dependencies:
-      '@shikijs/core': 2.5.0
-      '@shikijs/types': 2.5.0
+      '@types/markdown-it': 13.0.7
+      markdown-it: 13.0.2
+    dev: true
 
-  /@shikijs/types@2.5.0:
-    resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==}
+  /markdown-it-anchor@8.6.7(@types/markdown-it@13.0.7)(markdown-it@14.0.0):
+    resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==}
+    peerDependencies:
+      '@types/markdown-it': '*'
+      markdown-it: '*'
     dependencies:
-      '@shikijs/vscode-textmate': 10.0.2
-      '@types/hast': 3.0.4
+      '@types/markdown-it': 13.0.7
+      markdown-it: 14.0.0
+    dev: true
 
-  /@shikijs/vscode-textmate@10.0.2:
-    resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
+  /markdown-it-container@3.0.0:
+    resolution: {integrity: sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==}
+    dev: true
 
-  /@sindresorhus/merge-streams@2.3.0:
-    resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
-    engines: {node: '>=18'}
+  /markdown-it-emoji@2.0.2:
+    resolution: {integrity: sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ==}
     dev: true
 
-  /@sindresorhus/merge-streams@4.0.0:
-    resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
-    engines: {node: '>=18'}
+  /markdown-it-emoji@3.0.0:
+    resolution: {integrity: sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg==}
     dev: true
 
-  /@sugarat/theme-shared@0.0.4:
-    resolution: {integrity: sha512-pz58/c8hKTlKqi+pGZEmizGJ6GGPY/If/HKzOkLDg9WYPcBXQ8mP86aN/zIIqe+X0AXmmNOsiFswH7DDtu3Zsg==}
+  /markdown-it@13.0.2:
+    resolution: {integrity: sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==}
+    hasBin: true
     dependencies:
-      cross-spawn: 7.0.6
-      gray-matter: 4.0.3
-    dev: false
+      argparse: 2.0.1
+      entities: 3.0.1
+      linkify-it: 4.0.1
+      mdurl: 1.0.1
+      uc.micro: 1.0.6
+    dev: true
 
-  /@sugarat/theme-shared@0.0.5:
-    resolution: {integrity: sha512-dqOhVZ5Hub9cGABh4vD4bC0QY3SaWhb8pZ1KxJk7at+W4gyXL0q4OOhp0b5LnQwM/ACUqf/ZAplhaTRU1qbt4Q==}
+  /markdown-it@14.0.0:
+    resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==}
+    hasBin: true
     dependencies:
-      cross-spawn: 7.0.6
-      gray-matter: 4.0.3
-    dev: false
+      argparse: 2.0.1
+      entities: 4.5.0
+      linkify-it: 5.0.0
+      mdurl: 2.0.0
+      punycode.js: 2.3.1
+      uc.micro: 2.0.0
+    dev: true
 
-  /@theojs/lumen@6.4.1(vue@3.5.18):
-    resolution: {integrity: sha512-/2QmCM1T8L31a+VmM1jtVsgUJIDpzJUiEIYyC+ZKH/NKFhYlWNRhJXE+RwF8hXNQZbiSzbkt4baJxBCP9xYJcQ==}
-    dependencies:
-      '@iconify/vue': 5.0.0(vue@3.5.18)
-      '@waline/client': 3.6.0(typescript@5.9.2)
-      iconify-icon: 3.0.0
-      typescript: 5.9.2
+  /mdast-util-from-markdown@1.3.1:
+    resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==}
+    dependencies:
+      '@types/mdast': 3.0.15
+      '@types/unist': 2.0.10
+      decode-named-character-reference: 1.0.2
+      mdast-util-to-string: 3.2.0
+      micromark: 3.2.0
+      micromark-util-decode-numeric-character-reference: 1.1.0
+      micromark-util-decode-string: 1.1.0
+      micromark-util-normalize-identifier: 1.1.0
+      micromark-util-symbol: 1.1.0
+      micromark-util-types: 1.1.0
+      unist-util-stringify-position: 3.0.3
+      uvu: 0.5.6
     transitivePeerDependencies:
-      - vue
-    dev: false
-
-  /@types/estree@1.0.8:
-    resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+      - supports-color
+    dev: true
 
-  /@types/hast@3.0.4:
-    resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+  /mdast-util-to-string@3.2.0:
+    resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==}
     dependencies:
-      '@types/unist': 3.0.3
-
-  /@types/linkify-it@5.0.0:
-    resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
+      '@types/mdast': 3.0.15
+    dev: true
 
-  /@types/markdown-it@14.1.2:
-    resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
-    dependencies:
-      '@types/linkify-it': 5.0.0
-      '@types/mdurl': 2.0.0
+  /mdurl@1.0.1:
+    resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
+    dev: true
 
-  /@types/mdast@4.0.4:
-    resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
-    dependencies:
-      '@types/unist': 3.0.3
+  /mdurl@2.0.0:
+    resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
+    dev: true
 
-  /@types/mdurl@2.0.0:
-    resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
+  /medium-zoom@1.1.0:
+    resolution: {integrity: sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==}
+    dev: true
 
-  /@types/unist@3.0.3:
-    resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+  /merge-stream@2.0.0:
+    resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+    dev: true
 
-  /@types/web-bluetooth@0.0.16:
-    resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
-    dev: false
+  /merge2@1.4.1:
+    resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+    engines: {node: '>= 8'}
+    dev: true
 
-  /@types/web-bluetooth@0.0.21:
-    resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==}
+  /mermaid@10.8.0:
+    resolution: {integrity: sha512-9CzfSreRjdDJxX796+jW4zjEq0DVw5xVF0nWsqff8OTbrt+ml0TZ5PyYUjjUZJa2NYxYJZZXewEquxGiM8qZEA==}
+    dependencies:
+      '@braintree/sanitize-url': 6.0.4
+      '@types/d3-scale': 4.0.8
+      '@types/d3-scale-chromatic': 3.0.3
+      cytoscape: 3.28.1
+      cytoscape-cose-bilkent: 4.1.0(cytoscape@3.28.1)
+      d3: 7.8.5
+      d3-sankey: 0.12.3
+      dagre-d3-es: 7.0.10
+      dayjs: 1.11.10
+      dompurify: 3.0.8
+      elkjs: 0.9.1
+      khroma: 2.1.0
+      lodash-es: 4.17.21
+      mdast-util-from-markdown: 1.3.1
+      non-layered-tidy-tree-layout: 2.0.2
+      stylis: 4.3.1
+      ts-dedent: 2.2.0
+      uuid: 9.0.1
+      web-worker: 1.3.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
 
-  /@ungap/structured-clone@1.3.0:
-    resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+  /micromark-core-commonmark@1.1.0:
+    resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==}
+    dependencies:
+      decode-named-character-reference: 1.0.2
+      micromark-factory-destination: 1.1.0
+      micromark-factory-label: 1.1.0
+      micromark-factory-space: 1.1.0
+      micromark-factory-title: 1.1.0
+      micromark-factory-whitespace: 1.1.0
+      micromark-util-character: 1.2.0
+      micromark-util-chunked: 1.1.0
+      micromark-util-classify-character: 1.1.0
+      micromark-util-html-tag-name: 1.2.0
+      micromark-util-normalize-identifier: 1.1.0
+      micromark-util-resolve-all: 1.1.0
+      micromark-util-subtokenize: 1.1.0
+      micromark-util-symbol: 1.1.0
+      micromark-util-types: 1.1.0
+      uvu: 0.5.6
+    dev: true
 
-  /@vitejs/plugin-vue@5.2.4(vite@5.4.19)(vue@3.5.18):
-    resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==}
-    engines: {node: ^18.0.0 || >=20.0.0}
-    peerDependencies:
-      vite: ^5.0.0 || ^6.0.0
-      vue: ^3.2.25
+  /micromark-factory-destination@1.1.0:
+    resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==}
     dependencies:
-      vite: 5.4.19
-      vue: 3.5.18(typescript@5.9.2)
+      micromark-util-character: 1.2.0
+      micromark-util-symbol: 1.1.0
+      micromark-util-types: 1.1.0
+    dev: true
 
-  /@vue/compiler-core@3.5.18:
-    resolution: {integrity: sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==}
+  /micromark-factory-label@1.1.0:
+    resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==}
     dependencies:
-      '@babel/parser': 7.28.0
-      '@vue/shared': 3.5.18
-      entities: 4.5.0
-      estree-walker: 2.0.2
-      source-map-js: 1.2.1
+      micromark-util-character: 1.2.0
+      micromark-util-symbol: 1.1.0
+      micromark-util-types: 1.1.0
+      uvu: 0.5.6
+    dev: true
 
-  /@vue/compiler-dom@3.5.18:
-    resolution: {integrity: sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==}
+  /micromark-factory-space@1.1.0:
+    resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==}
     dependencies:
-      '@vue/compiler-core': 3.5.18
-      '@vue/shared': 3.5.18
+      micromark-util-character: 1.2.0
+      micromark-util-types: 1.1.0
+    dev: true
 
-  /@vue/compiler-sfc@3.5.18:
-    resolution: {integrity: sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==}
+  /micromark-factory-title@1.1.0:
+    resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==}
     dependencies:
-      '@babel/parser': 7.28.0
-      '@vue/compiler-core': 3.5.18
-      '@vue/compiler-dom': 3.5.18
-      '@vue/compiler-ssr': 3.5.18
-      '@vue/shared': 3.5.18
-      estree-walker: 2.0.2
-      magic-string: 0.30.17
-      postcss: 8.5.6
-      source-map-js: 1.2.1
+      micromark-factory-space: 1.1.0
+      micromark-util-character: 1.2.0
+      micromark-util-symbol: 1.1.0
+      micromark-util-types: 1.1.0
+    dev: true
 
-  /@vue/compiler-ssr@3.5.18:
-    resolution: {integrity: sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==}
+  /micromark-factory-whitespace@1.1.0:
+    resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==}
     dependencies:
-      '@vue/compiler-dom': 3.5.18
-      '@vue/shared': 3.5.18
+      micromark-factory-space: 1.1.0
+      micromark-util-character: 1.2.0
+      micromark-util-symbol: 1.1.0
+      micromark-util-types: 1.1.0
+    dev: true
 
-  /@vue/devtools-api@7.7.7:
-    resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==}
+  /micromark-util-character@1.2.0:
+    resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==}
     dependencies:
-      '@vue/devtools-kit': 7.7.7
+      micromark-util-symbol: 1.1.0
+      micromark-util-types: 1.1.0
+    dev: true
 
-  /@vue/devtools-kit@7.7.7:
-    resolution: {integrity: sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==}
+  /micromark-util-chunked@1.1.0:
+    resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==}
     dependencies:
-      '@vue/devtools-shared': 7.7.7
-      birpc: 2.5.0
-      hookable: 5.5.3
-      mitt: 3.0.1
-      perfect-debounce: 1.0.0
-      speakingurl: 14.0.1
-      superjson: 2.2.2
+      micromark-util-symbol: 1.1.0
+    dev: true
 
-  /@vue/devtools-shared@7.7.7:
-    resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==}
+  /micromark-util-classify-character@1.1.0:
+    resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==}
     dependencies:
-      rfdc: 1.4.1
+      micromark-util-character: 1.2.0
+      micromark-util-symbol: 1.1.0
+      micromark-util-types: 1.1.0
+    dev: true
 
-  /@vue/reactivity@3.5.18:
-    resolution: {integrity: sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==}
+  /micromark-util-combine-extensions@1.1.0:
+    resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==}
     dependencies:
-      '@vue/shared': 3.5.18
+      micromark-util-chunked: 1.1.0
+      micromark-util-types: 1.1.0
+    dev: true
 
-  /@vue/runtime-core@3.5.18:
-    resolution: {integrity: sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==}
+  /micromark-util-decode-numeric-character-reference@1.1.0:
+    resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==}
     dependencies:
-      '@vue/reactivity': 3.5.18
-      '@vue/shared': 3.5.18
+      micromark-util-symbol: 1.1.0
+    dev: true
 
-  /@vue/runtime-dom@3.5.18:
-    resolution: {integrity: sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==}
+  /micromark-util-decode-string@1.1.0:
+    resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==}
     dependencies:
-      '@vue/reactivity': 3.5.18
-      '@vue/runtime-core': 3.5.18
-      '@vue/shared': 3.5.18
-      csstype: 3.1.3
+      decode-named-character-reference: 1.0.2
+      micromark-util-character: 1.2.0
+      micromark-util-decode-numeric-character-reference: 1.1.0
+      micromark-util-symbol: 1.1.0
+    dev: true
 
-  /@vue/server-renderer@3.5.18(vue@3.5.18):
-    resolution: {integrity: sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==}
-    peerDependencies:
-      vue: 3.5.18
-    dependencies:
-      '@vue/compiler-ssr': 3.5.18
-      '@vue/shared': 3.5.18
-      vue: 3.5.18(typescript@5.9.2)
+  /micromark-util-encode@1.1.0:
+    resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==}
+    dev: true
 
-  /@vue/shared@3.5.18:
-    resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==}
+  /micromark-util-html-tag-name@1.2.0:
+    resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==}
+    dev: true
 
-  /@vueuse/core@12.8.2:
-    resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==}
+  /micromark-util-normalize-identifier@1.1.0:
+    resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==}
     dependencies:
-      '@types/web-bluetooth': 0.0.21
-      '@vueuse/metadata': 12.8.2
-      '@vueuse/shared': 12.8.2
-      vue: 3.5.18(typescript@5.9.2)
-    transitivePeerDependencies:
-      - typescript
+      micromark-util-symbol: 1.1.0
+    dev: true
 
-  /@vueuse/core@13.6.0(vue@3.5.18):
-    resolution: {integrity: sha512-DJbD5fV86muVmBgS9QQPddVX7d9hWYswzlf4bIyUD2dj8GC46R1uNClZhVAmsdVts4xb2jwp1PbpuiA50Qee1A==}
-    peerDependencies:
-      vue: ^3.5.0
+  /micromark-util-resolve-all@1.1.0:
+    resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==}
     dependencies:
-      '@types/web-bluetooth': 0.0.21
-      '@vueuse/metadata': 13.6.0
-      '@vueuse/shared': 13.6.0(vue@3.5.18)
-      vue: 3.5.18(typescript@5.9.2)
-    dev: false
+      micromark-util-types: 1.1.0
+    dev: true
 
-  /@vueuse/core@9.13.0(vue@3.5.18):
-    resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==}
-    dependencies:
-      '@types/web-bluetooth': 0.0.16
-      '@vueuse/metadata': 9.13.0
-      '@vueuse/shared': 9.13.0(vue@3.5.18)
-      vue-demi: 0.14.10(vue@3.5.18)
-    transitivePeerDependencies:
-      - '@vue/composition-api'
-      - vue
-    dev: false
-
-  /@vueuse/integrations@12.8.2(focus-trap@7.6.5):
-    resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==}
-    peerDependencies:
-      async-validator: ^4
-      axios: ^1
-      change-case: ^5
-      drauu: ^0.4
-      focus-trap: ^7
-      fuse.js: ^7
-      idb-keyval: ^6
-      jwt-decode: ^4
-      nprogress: ^0.2
-      qrcode: ^1.5
-      sortablejs: ^1
-      universal-cookie: ^7
-    peerDependenciesMeta:
-      async-validator:
-        optional: true
-      axios:
-        optional: true
-      change-case:
-        optional: true
-      drauu:
-        optional: true
-      focus-trap:
-        optional: true
-      fuse.js:
-        optional: true
-      idb-keyval:
-        optional: true
-      jwt-decode:
-        optional: true
-      nprogress:
-        optional: true
-      qrcode:
-        optional: true
-      sortablejs:
-        optional: true
-      universal-cookie:
-        optional: true
+  /micromark-util-sanitize-uri@1.2.0:
+    resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==}
     dependencies:
-      '@vueuse/core': 12.8.2
-      '@vueuse/shared': 12.8.2
-      focus-trap: 7.6.5
-      vue: 3.5.18(typescript@5.9.2)
-    transitivePeerDependencies:
-      - typescript
+      micromark-util-character: 1.2.0
+      micromark-util-encode: 1.1.0
+      micromark-util-symbol: 1.1.0
+    dev: true
 
-  /@vueuse/metadata@12.8.2:
-    resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==}
+  /micromark-util-subtokenize@1.1.0:
+    resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==}
+    dependencies:
+      micromark-util-chunked: 1.1.0
+      micromark-util-symbol: 1.1.0
+      micromark-util-types: 1.1.0
+      uvu: 0.5.6
+    dev: true
 
-  /@vueuse/metadata@13.6.0:
-    resolution: {integrity: sha512-rnIH7JvU7NjrpexTsl2Iwv0V0yAx9cw7+clymjKuLSXG0QMcLD0LDgdNmXic+qL0SGvgSVPEpM9IDO/wqo1vkQ==}
-    dev: false
+  /micromark-util-symbol@1.1.0:
+    resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==}
+    dev: true
 
-  /@vueuse/metadata@9.13.0:
-    resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
-    dev: false
+  /micromark-util-types@1.1.0:
+    resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==}
+    dev: true
 
-  /@vueuse/shared@12.8.2:
-    resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==}
-    dependencies:
-      vue: 3.5.18(typescript@5.9.2)
+  /micromark@3.2.0:
+    resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==}
+    dependencies:
+      '@types/debug': 4.1.12
+      debug: 4.3.4
+      decode-named-character-reference: 1.0.2
+      micromark-core-commonmark: 1.1.0
+      micromark-factory-space: 1.1.0
+      micromark-util-character: 1.2.0
+      micromark-util-chunked: 1.1.0
+      micromark-util-combine-extensions: 1.1.0
+      micromark-util-decode-numeric-character-reference: 1.1.0
+      micromark-util-encode: 1.1.0
+      micromark-util-normalize-identifier: 1.1.0
+      micromark-util-resolve-all: 1.1.0
+      micromark-util-sanitize-uri: 1.2.0
+      micromark-util-subtokenize: 1.1.0
+      micromark-util-symbol: 1.1.0
+      micromark-util-types: 1.1.0
+      uvu: 0.5.6
     transitivePeerDependencies:
-      - typescript
+      - supports-color
+    dev: true
 
-  /@vueuse/shared@13.6.0(vue@3.5.18):
-    resolution: {integrity: sha512-pDykCSoS2T3fsQrYqf9SyF0QXWHmcGPQ+qiOVjlYSzlWd9dgppB2bFSM1GgKKkt7uzn0BBMV3IbJsUfHG2+BCg==}
-    peerDependencies:
-      vue: ^3.5.0
+  /micromatch@4.0.5:
+    resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+    engines: {node: '>=8.6'}
     dependencies:
-      vue: 3.5.18(typescript@5.9.2)
-    dev: false
+      braces: 3.0.2
+      picomatch: 2.3.1
+    dev: true
 
-  /@vueuse/shared@9.13.0(vue@3.5.18):
-    resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
-    dependencies:
-      vue-demi: 0.14.10(vue@3.5.18)
-    transitivePeerDependencies:
-      - '@vue/composition-api'
-      - vue
-    dev: false
+  /mimic-fn@2.1.0:
+    resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+    engines: {node: '>=6'}
+    dev: true
 
-  /@waline/api@1.0.0:
-    resolution: {integrity: sha512-o0lWjt+/oZH1/4q3DJxTf5kdkgNbSmoLRXIiGznW225A6hq9/9IkOO1DiAijIsxGYJS6psFC+58+IzkD1EerBA==}
-    engines: {node: '>=18'}
-    dev: false
+  /mimic-fn@4.0.0:
+    resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+    engines: {node: '>=12'}
+    dev: true
 
-  /@waline/client@3.6.0(typescript@5.9.2):
-    resolution: {integrity: sha512-GzRHOpyveRlJamS/QOQ6OItYzvU6px4wtb9enGiwtWcODHSgU+21GZd++czjLwwiyiEgMNOCe8Wqll4ianI38w==}
-    engines: {node: '>=18'}
+  /minimatch@3.1.2:
+    resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
     dependencies:
-      '@vueuse/core': 13.6.0(vue@3.5.18)
-      '@waline/api': 1.0.0
-      autosize: 6.0.1
-      marked: 16.1.1
-      marked-highlight: 2.2.2(marked@16.1.1)
-      recaptcha-v3: 1.11.3
-      vue: 3.5.18(typescript@5.9.2)
-    transitivePeerDependencies:
-      - typescript
-    dev: false
-
-  /@xmldom/xmldom@0.9.8:
-    resolution: {integrity: sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==}
-    engines: {node: '>=14.6'}
-
-  /algoliasearch@5.35.0:
-    resolution: {integrity: sha512-Y+moNhsqgLmvJdgTsO4GZNgsaDWv8AOGAaPeIeHKlDn/XunoAqYbA+XNpBd1dW8GOXAUDyxC9Rxc7AV4kpFcIg==}
-    engines: {node: '>= 14.0.0'}
-    dependencies:
-      '@algolia/abtesting': 1.1.0
-      '@algolia/client-abtesting': 5.35.0
-      '@algolia/client-analytics': 5.35.0
-      '@algolia/client-common': 5.35.0
-      '@algolia/client-insights': 5.35.0
-      '@algolia/client-personalization': 5.35.0
-      '@algolia/client-query-suggestions': 5.35.0
-      '@algolia/client-search': 5.35.0
-      '@algolia/ingestion': 1.35.0
-      '@algolia/monitoring': 1.35.0
-      '@algolia/recommend': 5.35.0
-      '@algolia/requester-browser-xhr': 5.35.0
-      '@algolia/requester-fetch': 5.35.0
-      '@algolia/requester-node-http': 5.35.0
-
-  /ansi-colors@4.1.3:
-    resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
-    engines: {node: '>=6'}
+      brace-expansion: 1.1.11
+    dev: true
 
-  /argparse@1.0.10:
-    resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+  /minimatch@5.1.6:
+    resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+    engines: {node: '>=10'}
     dependencies:
-      sprintf-js: 1.0.3
+      brace-expansion: 2.0.1
+    dev: true
+
+  /mitt@3.0.1:
+    resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
+    dev: true
 
-  /autosize@6.0.1:
-    resolution: {integrity: sha512-f86EjiUKE6Xvczc4ioP1JBlWG7FKrE13qe/DxBCpe8GCipCq2nFw73aO8QEBKHfSbYGDN5eB9jXWKen7tspDqQ==}
-    dev: false
+  /mri@1.2.0:
+    resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+    engines: {node: '>=4'}
+    dev: true
 
-  /birpc@2.5.0:
-    resolution: {integrity: sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==}
+  /ms@2.1.2:
+    resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+    dev: true
 
-  /boolbase@1.0.0:
-    resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+  /nanoid@3.3.7:
+    resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+    hasBin: true
+    dev: true
 
-  /braces@3.0.3:
-    resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
-    engines: {node: '>=8'}
-    dependencies:
-      fill-range: 7.1.1
+  /node-match-path@0.6.3:
+    resolution: {integrity: sha512-fB1reOHKLRZCJMAka28hIxCwQLxGmd7WewOCBDYKpyA1KXi68A7vaGgdZAPhY2E6SXoYt3KqYCCvXLJ+O0Fu/Q==}
+    dev: true
+
+  /node-releases@2.0.14:
+    resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
     dev: true
 
-  /ccount@2.0.1:
-    resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+  /non-layered-tidy-tree-layout@2.0.2:
+    resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==}
+    dev: true
 
-  /character-entities-html4@2.1.0:
-    resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+  /normalize-path@3.0.0:
+    resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  /character-entities-legacy@3.0.0:
-    resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+  /normalize-range@0.1.2:
+    resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  /cheerio-select@1.6.0:
-    resolution: {integrity: sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==}
+  /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:
-      css-select: 4.3.0
-      css-what: 6.2.2
-      domelementtype: 2.3.0
-      domhandler: 4.3.1
-      domutils: 2.8.0
+      path-key: 4.0.0
+    dev: true
 
-  /cheerio@1.0.0-rc.10:
-    resolution: {integrity: sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==}
-    engines: {node: '>= 6'}
+  /nth-check@2.1.1:
+    resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
     dependencies:
-      cheerio-select: 1.6.0
-      dom-serializer: 1.4.1
-      domhandler: 4.3.1
-      htmlparser2: 6.1.0
-      parse5: 6.0.1
-      parse5-htmlparser2-tree-adapter: 6.0.1
-      tslib: 2.8.1
-
-  /colorette@2.0.20:
-    resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+      boolbase: 1.0.0
     dev: true
 
-  /comma-separated-tokens@2.0.3:
-    resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
-
-  /commander@13.1.0:
-    resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==}
-    engines: {node: '>=18'}
+  /object-inspect@1.13.1:
+    resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
+    dev: true
 
-  /commander@6.2.1:
-    resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
-    engines: {node: '>= 6'}
+  /object-keys@1.1.1:
+    resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  /copy-anything@2.0.6:
-    resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
+  /object.assign@4.1.5:
+    resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
-      is-what: 3.14.1
+      call-bind: 1.0.7
+      define-properties: 1.2.1
+      has-symbols: 1.0.3
+      object-keys: 1.1.1
     dev: true
 
-  /copy-anything@3.0.5:
-    resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
-    engines: {node: '>=12.13'}
+  /once@1.4.0:
+    resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
     dependencies:
-      is-what: 4.1.16
+      wrappy: 1.0.2
+    dev: true
 
-  /cross-spawn@7.0.6:
-    resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
-    engines: {node: '>= 8'}
+  /onetime@5.1.2:
+    resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+    engines: {node: '>=6'}
     dependencies:
-      path-key: 3.1.1
-      shebang-command: 2.0.0
-      which: 2.0.2
+      mimic-fn: 2.1.0
+    dev: true
 
-  /css-select@4.3.0:
-    resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
+  /onetime@6.0.0:
+    resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+    engines: {node: '>=12'}
     dependencies:
-      boolbase: 1.0.0
-      css-what: 6.2.2
-      domhandler: 4.3.1
-      domutils: 2.8.0
-      nth-check: 2.1.1
-
-  /css-what@6.2.2:
-    resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
-    engines: {node: '>= 6'}
+      mimic-fn: 4.0.0
+    dev: true
 
-  /csstype@3.1.3:
-    resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+  /ora@7.0.1:
+    resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==}
+    engines: {node: '>=16'}
+    dependencies:
+      chalk: 5.3.0
+      cli-cursor: 4.0.0
+      cli-spinners: 2.9.2
+      is-interactive: 2.0.0
+      is-unicode-supported: 1.3.0
+      log-symbols: 5.1.0
+      stdin-discarder: 0.1.0
+      string-width: 6.1.0
+      strip-ansi: 7.1.0
+    dev: true
 
-  /date-fns@4.1.0:
-    resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==}
+  /ora@8.0.1:
+    resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==}
+    engines: {node: '>=18'}
+    dependencies:
+      chalk: 5.3.0
+      cli-cursor: 4.0.0
+      cli-spinners: 2.9.2
+      is-interactive: 2.0.0
+      is-unicode-supported: 2.0.0
+      log-symbols: 6.0.0
+      stdin-discarder: 0.2.2
+      string-width: 7.1.0
+      strip-ansi: 7.1.0
     dev: true
 
-  /dayjs@1.11.13:
-    resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
+  /p-limit@2.3.0:
+    resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+    engines: {node: '>=6'}
+    dependencies:
+      p-try: 2.2.0
     dev: true
 
-  /defu@6.1.4:
-    resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
+  /p-locate@4.1.0:
+    resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+    engines: {node: '>=8'}
+    dependencies:
+      p-limit: 2.3.0
     dev: true
 
-  /dequal@2.0.3:
-    resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+  /p-try@2.2.0:
+    resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
     engines: {node: '>=6'}
+    dev: true
 
-  /devlop@1.1.0:
-    resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
+  /parse5-htmlparser2-tree-adapter@7.0.0:
+    resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==}
     dependencies:
-      dequal: 2.0.3
+      domhandler: 5.0.3
+      parse5: 7.1.2
+    dev: true
 
-  /dom-serializer@1.4.1:
-    resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
+  /parse5@7.1.2:
+    resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
     dependencies:
-      domelementtype: 2.3.0
-      domhandler: 4.3.1
-      entities: 2.2.0
+      entities: 4.5.0
+    dev: true
 
-  /domelementtype@2.3.0:
-    resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
+  /path-exists@4.0.0:
+    resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+    engines: {node: '>=8'}
+    dev: true
 
-  /domhandler@3.3.0:
-    resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==}
-    engines: {node: '>= 4'}
-    dependencies:
-      domelementtype: 2.3.0
+  /path-is-absolute@1.0.1:
+    resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  /domhandler@4.3.1:
-    resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
-    engines: {node: '>= 4'}
-    dependencies:
-      domelementtype: 2.3.0
+  /path-key@3.1.1:
+    resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+    engines: {node: '>=8'}
+    dev: true
 
-  /domutils@2.8.0:
-    resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
-    dependencies:
-      dom-serializer: 1.4.1
-      domelementtype: 2.3.0
-      domhandler: 4.3.1
+  /path-key@4.0.0:
+    resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+    engines: {node: '>=12'}
+    dev: true
 
-  /emoji-regex-xs@1.0.0:
-    resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==}
+  /path-parse@1.0.7:
+    resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+    dev: true
 
-  /entities@2.2.0:
-    resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
+  /path-type@5.0.0:
+    resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==}
+    engines: {node: '>=12'}
+    dev: true
 
-  /entities@4.5.0:
-    resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
-    engines: {node: '>=0.12'}
+  /photoswipe@5.4.3:
+    resolution: {integrity: sha512-9UC6oJBK4oXFZ5HcdlcvGkfEHsVrmE4csUdCQhEjHYb3PvPLO3PG7UhnPuOgjxwmhq5s17Un5NUdum01LgBDng==}
+    engines: {node: '>= 0.12.0'}
+    dev: true
 
-  /errno@0.1.8:
-    resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
-    hasBin: true
-    requiresBuild: true
+  /picocolors@1.0.0:
+    resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+    dev: true
+
+  /picomatch@2.3.1:
+    resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+    engines: {node: '>=8.6'}
+    dev: true
+
+  /pngjs@5.0.0:
+    resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
+    engines: {node: '>=10.13.0'}
+    dev: true
+
+  /postcss-load-config@4.0.2(postcss@8.4.35):
+    resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
+    engines: {node: '>= 14'}
+    peerDependencies:
+      postcss: '>=8.0.9'
+      ts-node: '>=9.0.0'
+    peerDependenciesMeta:
+      postcss:
+        optional: true
+      ts-node:
+        optional: true
     dependencies:
-      prr: 1.0.1
+      lilconfig: 3.1.0
+      postcss: 8.4.35
+      yaml: 2.3.4
     dev: true
-    optional: true
 
-  /es-toolkit@1.39.8:
-    resolution: {integrity: sha512-A8QO9TfF+rltS8BXpdu8OS+rpGgEdnRhqIVxO/ZmNvnXBYgOdSsxukT55ELyP94gZIntWJ+Li9QRrT2u1Kitpg==}
+  /postcss-value-parser@4.2.0:
+    resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
     dev: true
 
-  /esbuild@0.21.5:
-    resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
-    engines: {node: '>=12'}
-    hasBin: true
-    requiresBuild: true
-    optionalDependencies:
-      '@esbuild/aix-ppc64': 0.21.5
-      '@esbuild/android-arm': 0.21.5
-      '@esbuild/android-arm64': 0.21.5
-      '@esbuild/android-x64': 0.21.5
-      '@esbuild/darwin-arm64': 0.21.5
-      '@esbuild/darwin-x64': 0.21.5
-      '@esbuild/freebsd-arm64': 0.21.5
-      '@esbuild/freebsd-x64': 0.21.5
-      '@esbuild/linux-arm': 0.21.5
-      '@esbuild/linux-arm64': 0.21.5
-      '@esbuild/linux-ia32': 0.21.5
-      '@esbuild/linux-loong64': 0.21.5
-      '@esbuild/linux-mips64el': 0.21.5
-      '@esbuild/linux-ppc64': 0.21.5
-      '@esbuild/linux-riscv64': 0.21.5
-      '@esbuild/linux-s390x': 0.21.5
-      '@esbuild/linux-x64': 0.21.5
-      '@esbuild/netbsd-x64': 0.21.5
-      '@esbuild/openbsd-x64': 0.21.5
-      '@esbuild/sunos-x64': 0.21.5
-      '@esbuild/win32-arm64': 0.21.5
-      '@esbuild/win32-ia32': 0.21.5
-      '@esbuild/win32-x64': 0.21.5
-
-  /escape-goat@3.0.0:
-    resolution: {integrity: sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==}
-    engines: {node: '>=10'}
+  /postcss@8.4.35:
+    resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==}
+    engines: {node: ^10 || ^12 || >=14}
+    dependencies:
+      nanoid: 3.3.7
+      picocolors: 1.0.0
+      source-map-js: 1.0.2
+    dev: true
 
-  /esm@3.2.25:
-    resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==}
+  /pretty-bytes@5.6.0:
+    resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==}
     engines: {node: '>=6'}
+    dev: true
 
-  /esprima@4.0.1:
-    resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
-    engines: {node: '>=4'}
-    hasBin: true
-
-  /estree-walker@2.0.2:
-    resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+  /prismjs@1.29.0:
+    resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==}
+    engines: {node: '>=6'}
+    dev: true
 
-  /execa@9.6.0:
-    resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==}
-    engines: {node: ^18.19.0 || >=20.5.0}
-    dependencies:
-      '@sindresorhus/merge-streams': 4.0.0
-      cross-spawn: 7.0.6
-      figures: 6.1.0
-      get-stream: 9.0.1
-      human-signals: 8.0.1
-      is-plain-obj: 4.1.0
-      is-stream: 4.0.1
-      npm-run-path: 6.0.0
-      pretty-ms: 9.2.0
-      signal-exit: 4.1.0
-      strip-final-newline: 4.0.0
-      yoctocolors: 2.1.1
+  /punycode.js@2.3.1:
+    resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
+    engines: {node: '>=6'}
     dev: true
 
-  /extend-shallow@2.0.1:
-    resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
-    engines: {node: '>=0.10.0'}
-    dependencies:
-      is-extendable: 0.1.1
+  /punycode@2.3.1:
+    resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+    engines: {node: '>=6'}
+    dev: true
 
-  /fast-glob@3.3.3:
-    resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
-    engines: {node: '>=8.6.0'}
+  /qrcode@1.5.3:
+    resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==}
+    engines: {node: '>=10.13.0'}
+    hasBin: true
     dependencies:
-      '@nodelib/fs.stat': 2.0.5
-      '@nodelib/fs.walk': 1.2.8
-      glob-parent: 5.1.2
-      merge2: 1.4.1
-      micromatch: 4.0.8
+      dijkstrajs: 1.0.3
+      encode-utf8: 1.0.3
+      pngjs: 5.0.0
+      yargs: 15.4.1
     dev: true
 
-  /fastq@1.19.1:
-    resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
-    dependencies:
-      reusify: 1.1.0
+  /queue-microtask@1.2.3:
+    resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
     dev: true
 
-  /feed@4.2.2:
-    resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==}
-    engines: {node: '>=0.4.0'}
+  /randombytes@2.1.0:
+    resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
     dependencies:
-      xml-js: 1.6.11
-    dev: false
+      safe-buffer: 5.2.1
+    dev: true
 
-  /figures@6.1.0:
-    resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
-    engines: {node: '>=18'}
+  /readable-stream@3.6.2:
+    resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+    engines: {node: '>= 6'}
     dependencies:
-      is-unicode-supported: 2.1.0
+      inherits: 2.0.4
+      string_decoder: 1.3.0
+      util-deprecate: 1.0.2
     dev: true
 
-  /fill-range@7.1.1:
-    resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
-    engines: {node: '>=8'}
+  /readdirp@3.6.0:
+    resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+    engines: {node: '>=8.10.0'}
     dependencies:
-      to-regex-range: 5.0.1
+      picomatch: 2.3.1
     dev: true
 
-  /focus-trap@7.6.5:
-    resolution: {integrity: sha512-7Ke1jyybbbPZyZXFxEftUtxFGLMpE2n6A+z//m4CRDlj0hW+o3iYSmh8nFlYMurOiJVDmJRilUQtJr08KfIxlg==}
+  /regenerate-unicode-properties@10.1.1:
+    resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==}
+    engines: {node: '>=4'}
     dependencies:
-      tabbable: 6.2.0
+      regenerate: 1.4.2
+    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
-    optional: true
+  /regenerate@1.4.2:
+    resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
+    dev: true
 
-  /fuse.js@6.6.2:
-    resolution: {integrity: sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==}
-    engines: {node: '>=10'}
-    dev: false
+  /regenerator-runtime@0.14.1:
+    resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+    dev: true
 
-  /get-stream@9.0.1:
-    resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
-    engines: {node: '>=18'}
+  /regenerator-transform@0.15.2:
+    resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
     dependencies:
-      '@sec-ant/readable-stream': 0.4.1
-      is-stream: 4.0.1
+      '@babel/runtime': 7.23.9
     dev: true
 
-  /glob-parent@5.1.2:
-    resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
-    engines: {node: '>= 6'}
+  /regexp.prototype.flags@1.5.2:
+    resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
+    engines: {node: '>= 0.4'}
     dependencies:
-      is-glob: 4.0.3
+      call-bind: 1.0.7
+      define-properties: 1.2.1
+      es-errors: 1.3.0
+      set-function-name: 2.0.1
     dev: true
 
-  /globby@14.1.0:
-    resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==}
-    engines: {node: '>=18'}
+  /regexpu-core@5.3.2:
+    resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==}
+    engines: {node: '>=4'}
     dependencies:
-      '@sindresorhus/merge-streams': 2.3.0
-      fast-glob: 3.3.3
-      ignore: 7.0.5
-      path-type: 6.0.0
-      slash: 5.1.0
-      unicorn-magic: 0.3.0
+      '@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
 
-  /graceful-fs@4.2.11:
-    resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
-    requiresBuild: true
+  /register-service-worker@1.7.2:
+    resolution: {integrity: sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A==}
     dev: true
-    optional: true
-
-  /gray-matter@4.0.3:
-    resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
-    engines: {node: '>=6.0'}
-    dependencies:
-      js-yaml: 3.14.1
-      kind-of: 6.0.3
-      section-matter: 1.0.0
-      strip-bom-string: 1.0.0
 
-  /hast-util-to-html@9.0.5:
-    resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
+  /regjsparser@0.9.1:
+    resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==}
+    hasBin: true
     dependencies:
-      '@types/hast': 3.0.4
-      '@types/unist': 3.0.3
-      ccount: 2.0.1
-      comma-separated-tokens: 2.0.3
-      hast-util-whitespace: 3.0.0
-      html-void-elements: 3.0.0
-      mdast-util-to-hast: 13.2.0
-      property-information: 7.1.0
-      space-separated-tokens: 2.0.2
-      stringify-entities: 4.0.4
-      zwitch: 2.0.4
+      jsesc: 0.5.0
+    dev: true
 
-  /hast-util-whitespace@3.0.0:
-    resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
-    dependencies:
-      '@types/hast': 3.0.4
+  /require-directory@2.1.1:
+    resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  /hookable@5.5.3:
-    resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
+  /require-from-string@2.0.2:
+    resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  /html-void-elements@3.0.0:
-    resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
+  /require-main-filename@2.0.0:
+    resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
+    dev: true
 
-  /htmlparser2@5.0.1:
-    resolution: {integrity: sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==}
+  /resolve@1.22.8:
+    resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+    hasBin: true
     dependencies:
-      domelementtype: 2.3.0
-      domhandler: 3.3.0
-      domutils: 2.8.0
-      entities: 2.2.0
+      is-core-module: 2.13.1
+      path-parse: 1.0.7
+      supports-preserve-symlinks-flag: 1.0.0
+    dev: true
 
-  /htmlparser2@6.1.0:
-    resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==}
+  /restore-cursor@4.0.0:
+    resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
+    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
     dependencies:
-      domelementtype: 2.3.0
-      domhandler: 4.3.1
-      domutils: 2.8.0
-      entities: 2.2.0
+      onetime: 5.1.2
+      signal-exit: 3.0.7
+    dev: true
 
-  /human-signals@8.0.1:
-    resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==}
-    engines: {node: '>=18.18.0'}
+  /reusify@1.0.4:
+    resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+    engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
     dev: true
 
-  /iconify-icon@3.0.0:
-    resolution: {integrity: sha512-yPcnpkn8HUEUckrxxJBOer3jbGv3bqozHsLMLBRxhk3As1X76BgV2mS2a1HTNOIagR8nUs30H3qAd9GLe8Mnlg==}
-    dependencies:
-      '@iconify/types': 2.0.0
-    dev: false
+  /robust-predicates@3.0.2:
+    resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
+    dev: true
 
-  /iconv-lite@0.6.3:
-    resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
-    engines: {node: '>=0.10.0'}
-    requiresBuild: true
+  /rollup-plugin-terser@7.0.2(rollup@2.79.1):
+    resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==}
+    deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser
+    peerDependencies:
+      rollup: ^2.0.0
     dependencies:
-      safer-buffer: 2.1.2
+      '@babel/code-frame': 7.23.5
+      jest-worker: 26.6.2
+      rollup: 2.79.1
+      serialize-javascript: 4.0.0
+      terser: 5.27.1
     dev: true
-    optional: true
 
-  /ignore@7.0.5:
-    resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
-    engines: {node: '>= 4'}
+  /rollup@2.79.1:
+    resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
+    engines: {node: '>=10.0.0'}
+    hasBin: true
+    optionalDependencies:
+      fsevents: 2.3.3
     dev: true
 
-  /image-size@0.5.5:
-    resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
-    engines: {node: '>=0.10.0'}
+  /rollup@4.11.0:
+    resolution: {integrity: sha512-2xIbaXDXjf3u2tajvA5xROpib7eegJ9Y/uPlSFhXLNpK9ampCczXAhLEb5yLzJyG3LAdI1NWtNjDXiLyniNdjQ==}
+    engines: {node: '>=18.0.0', npm: '>=8.0.0'}
     hasBin: true
-    requiresBuild: true
+    dependencies:
+      '@types/estree': 1.0.5
+    optionalDependencies:
+      '@rollup/rollup-android-arm-eabi': 4.11.0
+      '@rollup/rollup-android-arm64': 4.11.0
+      '@rollup/rollup-darwin-arm64': 4.11.0
+      '@rollup/rollup-darwin-x64': 4.11.0
+      '@rollup/rollup-linux-arm-gnueabihf': 4.11.0
+      '@rollup/rollup-linux-arm64-gnu': 4.11.0
+      '@rollup/rollup-linux-arm64-musl': 4.11.0
+      '@rollup/rollup-linux-riscv64-gnu': 4.11.0
+      '@rollup/rollup-linux-x64-gnu': 4.11.0
+      '@rollup/rollup-linux-x64-musl': 4.11.0
+      '@rollup/rollup-win32-arm64-msvc': 4.11.0
+      '@rollup/rollup-win32-ia32-msvc': 4.11.0
+      '@rollup/rollup-win32-x64-msvc': 4.11.0
+      fsevents: 2.3.3
     dev: true
-    optional: true
 
-  /is-extendable@0.1.1:
-    resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
-    engines: {node: '>=0.10.0'}
+  /run-parallel@1.2.0:
+    resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+    dependencies:
+      queue-microtask: 1.2.3
+    dev: true
 
-  /is-extglob@2.1.1:
-    resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
-    engines: {node: '>=0.10.0'}
+  /rw@1.3.3:
+    resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==}
     dev: true
 
-  /is-glob@4.0.3:
-    resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
-    engines: {node: '>=0.10.0'}
+  /sade@1.8.1:
+    resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
+    engines: {node: '>=6'}
     dependencies:
-      is-extglob: 2.1.1
+      mri: 1.2.0
     dev: true
 
-  /is-number@7.0.0:
-    resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
-    engines: {node: '>=0.12.0'}
+  /safe-array-concat@1.1.0:
+    resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==}
+    engines: {node: '>=0.4'}
+    dependencies:
+      call-bind: 1.0.7
+      get-intrinsic: 1.2.4
+      has-symbols: 1.0.3
+      isarray: 2.0.5
     dev: true
 
-  /is-plain-obj@4.1.0:
-    resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
-    engines: {node: '>=12'}
+  /safe-buffer@5.2.1:
+    resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
     dev: true
 
-  /is-stream@4.0.1:
-    resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
-    engines: {node: '>=18'}
+  /safe-regex-test@1.0.3:
+    resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      call-bind: 1.0.7
+      es-errors: 1.3.0
+      is-regex: 1.1.4
     dev: true
 
-  /is-unicode-supported@2.1.0:
-    resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
-    engines: {node: '>=18'}
+  /safer-buffer@2.1.2:
+    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
     dev: true
 
-  /is-what@3.14.1:
-    resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
+  /sass@1.71.0:
+    resolution: {integrity: sha512-HKKIKf49Vkxlrav3F/w6qRuPcmImGVbIXJ2I3Kg0VMA+3Bav+8yE9G5XmP5lMj6nl4OlqbPftGAscNaNu28b8w==}
+    engines: {node: '>=14.0.0'}
+    hasBin: true
+    dependencies:
+      chokidar: 3.6.0
+      immutable: 4.3.5
+      source-map-js: 1.0.2
     dev: true
 
-  /is-what@4.1.16:
-    resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
-    engines: {node: '>=12.13'}
+  /sax@1.3.0:
+    resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
+    dev: true
 
-  /isexe@2.0.0:
-    resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+  /section-matter@1.0.0:
+    resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
+    engines: {node: '>=4'}
+    dependencies:
+      extend-shallow: 2.0.1
+      kind-of: 6.0.3
+    dev: true
 
-  /javascript-stringify@2.1.0:
-    resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==}
-    dev: false
+  /semver@6.3.1:
+    resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+    hasBin: true
+    dev: true
 
-  /js-yaml@3.14.1:
-    resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+  /semver@7.6.0:
+    resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
+    engines: {node: '>=10'}
     hasBin: true
     dependencies:
-      argparse: 1.0.10
-      esprima: 4.0.1
+      lru-cache: 6.0.0
+    dev: true
 
-  /juice@8.1.0:
-    resolution: {integrity: sha512-FLzurJrx5Iv1e7CfBSZH68dC04EEvXvvVvPYB7Vx1WAuhCp1ZPIMtqxc+WTWxVkpTIC2Ach/GAv0rQbtGf6YMA==}
-    engines: {node: '>=10.0.0'}
-    hasBin: true
+  /serialize-javascript@4.0.0:
+    resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==}
     dependencies:
-      cheerio: 1.0.0-rc.10
-      commander: 6.2.1
-      mensch: 0.3.4
-      slick: 1.12.2
-      web-resource-inliner: 6.0.1
-    transitivePeerDependencies:
-      - encoding
+      randombytes: 2.1.0
+    dev: true
 
-  /kind-of@6.0.3:
-    resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
-    engines: {node: '>=0.10.0'}
+  /set-blocking@2.0.0:
+    resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+    dev: true
 
-  /less@4.4.0:
-    resolution: {integrity: sha512-kdTwsyRuncDfjEs0DlRILWNvxhDG/Zij4YLO4TMJgDLW+8OzpfkdPnRgrsRuY1o+oaxJGWsps5f/RVBgGmmN0w==}
-    engines: {node: '>=14'}
-    hasBin: true
+  /set-function-length@1.2.1:
+    resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==}
+    engines: {node: '>= 0.4'}
     dependencies:
-      copy-anything: 2.0.6
-      parse-node-version: 1.0.1
-      tslib: 2.8.1
-    optionalDependencies:
-      errno: 0.1.8
-      graceful-fs: 4.2.11
-      image-size: 0.5.5
-      make-dir: 2.1.0
-      mime: 1.6.0
-      needle: 3.3.1
-      source-map: 0.6.1
+      define-data-property: 1.1.4
+      es-errors: 1.3.0
+      function-bind: 1.1.2
+      get-intrinsic: 1.2.4
+      gopd: 1.0.1
+      has-property-descriptors: 1.0.2
     dev: true
 
-  /magic-string@0.30.17:
-    resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+  /set-function-name@2.0.1:
+    resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
+    engines: {node: '>= 0.4'}
     dependencies:
-      '@jridgewell/sourcemap-codec': 1.5.4
+      define-data-property: 1.1.4
+      functions-have-names: 1.2.3
+      has-property-descriptors: 1.0.2
+    dev: true
 
-  /make-dir@2.1.0:
-    resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
-    engines: {node: '>=6'}
-    requiresBuild: true
+  /shebang-command@2.0.0:
+    resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+    engines: {node: '>=8'}
     dependencies:
-      pify: 4.0.1
-      semver: 5.7.2
+      shebang-regex: 3.0.0
     dev: true
-    optional: true
-
-  /mark.js@8.11.1:
-    resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==}
 
-  /markdown-it-mathjax3@4.3.2:
-    resolution: {integrity: sha512-TX3GW5NjmupgFtMJGRauioMbbkGsOXAAt1DZ/rzzYmTHqzkO1rNAdiMD4NiruurToPApn2kYy76x02QN26qr2w==}
-    dependencies:
-      juice: 8.1.0
-      mathjax-full: 3.2.2
-    transitivePeerDependencies:
-      - encoding
+  /shebang-regex@3.0.0:
+    resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+    engines: {node: '>=8'}
+    dev: true
 
-  /marked-highlight@2.2.2(marked@16.1.1):
-    resolution: {integrity: sha512-KlHOP31DatbtPPXPaI8nx1KTrG3EW0Z5zewCwpUj65swbtKOTStteK3sNAjBqV75Pgo3fNEVNHeptg18mDuWgw==}
-    peerDependencies:
-      marked: '>=4 <17'
+  /side-channel@1.0.5:
+    resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
-      marked: 16.1.1
-    dev: false
+      call-bind: 1.0.7
+      es-errors: 1.3.0
+      get-intrinsic: 1.2.4
+      object-inspect: 1.13.1
+    dev: true
 
-  /marked@16.1.1:
-    resolution: {integrity: sha512-ij/2lXfCRT71L6u0M29tJPhP0bM5shLL3u5BePhFwPELj2blMJ6GDtD7PfJhRLhJ/c2UwrK17ySVcDzy2YHjHQ==}
-    engines: {node: '>= 20'}
-    hasBin: true
-    dev: false
+  /signal-exit@3.0.7:
+    resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+    dev: true
 
-  /mathjax-full@3.2.2:
-    resolution: {integrity: sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==}
-    dependencies:
-      esm: 3.2.25
-      mhchemparser: 4.2.1
-      mj-context-menu: 0.6.1
-      speech-rule-engine: 4.1.2
+  /signal-exit@4.1.0:
+    resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+    engines: {node: '>=14'}
+    dev: true
 
-  /mdast-util-to-hast@13.2.0:
-    resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
+  /sitemap@7.1.1:
+    resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==}
+    engines: {node: '>=12.0.0', npm: '>=5.6.0'}
+    hasBin: true
     dependencies:
-      '@types/hast': 3.0.4
-      '@types/mdast': 4.0.4
-      '@ungap/structured-clone': 1.3.0
-      devlop: 1.1.0
-      micromark-util-sanitize-uri: 2.0.1
-      trim-lines: 3.0.1
-      unist-util-position: 5.0.0
-      unist-util-visit: 5.0.0
-      vfile: 6.0.3
+      '@types/node': 17.0.45
+      '@types/sax': 1.2.7
+      arg: 5.0.2
+      sax: 1.3.0
+    dev: true
 
-  /mensch@0.3.4:
-    resolution: {integrity: sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==}
+  /slash@5.1.0:
+    resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
+    engines: {node: '>=14.16'}
+    dev: true
 
-  /merge2@1.4.1:
-    resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
-    engines: {node: '>= 8'}
+  /slimsearch@2.0.0:
+    resolution: {integrity: sha512-+G9FHWeVkwOTbEyhFIWvCz1T2fQusbn9756KhttfLygAcdjDOy1hpcPtWjnH4V9lp4qRElbvRqefOnlf/R0OAg==}
+    engines: {node: '>=18'}
     dev: true
 
-  /mhchemparser@4.2.1:
-    resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==}
+  /source-map-js@1.0.2:
+    resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  /micromark-util-character@2.1.1:
-    resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
+  /source-map-support@0.5.21:
+    resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
     dependencies:
-      micromark-util-symbol: 2.0.1
-      micromark-util-types: 2.0.2
+      buffer-from: 1.1.2
+      source-map: 0.6.1
+    dev: true
 
-  /micromark-util-encode@2.0.1:
-    resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
+  /source-map@0.6.1:
+    resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  /micromark-util-sanitize-uri@2.0.1:
-    resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
+  /source-map@0.8.0-beta.0:
+    resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
+    engines: {node: '>= 8'}
     dependencies:
-      micromark-util-character: 2.1.1
-      micromark-util-encode: 2.0.1
-      micromark-util-symbol: 2.0.1
+      whatwg-url: 7.1.0
+    dev: true
 
-  /micromark-util-symbol@2.0.1:
-    resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
+  /sourcemap-codec@1.4.8:
+    resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+    deprecated: Please use @jridgewell/sourcemap-codec instead
+    dev: true
 
-  /micromark-util-types@2.0.2:
-    resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
+  /sprintf-js@1.0.3:
+    resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+    dev: true
 
-  /micromatch@4.0.8:
-    resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
-    engines: {node: '>=8.6'}
+  /stdin-discarder@0.1.0:
+    resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==}
+    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
     dependencies:
-      braces: 3.0.3
-      picomatch: 2.3.1
+      bl: 5.1.0
     dev: true
 
-  /mime@1.6.0:
-    resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
-    engines: {node: '>=4'}
-    hasBin: true
-    requiresBuild: true
+  /stdin-discarder@0.2.2:
+    resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==}
+    engines: {node: '>=18'}
     dev: true
-    optional: true
 
-  /mime@2.6.0:
-    resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
-    engines: {node: '>=4.0.0'}
-    hasBin: 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
 
-  /minisearch@7.1.2:
-    resolution: {integrity: sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==}
+  /string-width@6.1.0:
+    resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==}
+    engines: {node: '>=16'}
+    dependencies:
+      eastasianwidth: 0.2.0
+      emoji-regex: 10.3.0
+      strip-ansi: 7.1.0
+    dev: true
 
-  /mitt@3.0.1:
-    resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
+  /string-width@7.1.0:
+    resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==}
+    engines: {node: '>=18'}
+    dependencies:
+      emoji-regex: 10.3.0
+      get-east-asian-width: 1.2.0
+      strip-ansi: 7.1.0
+    dev: true
 
-  /mj-context-menu@0.6.1:
-    resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==}
+  /string.prototype.matchall@4.0.10:
+    resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==}
+    dependencies:
+      call-bind: 1.0.7
+      define-properties: 1.2.1
+      es-abstract: 1.22.4
+      get-intrinsic: 1.2.4
+      has-symbols: 1.0.3
+      internal-slot: 1.0.7
+      regexp.prototype.flags: 1.5.2
+      set-function-name: 2.0.1
+      side-channel: 1.0.5
+    dev: true
 
-  /nanoid@3.3.11:
-    resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
-    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
-    hasBin: true
+  /string.prototype.trim@1.2.8:
+    resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      call-bind: 1.0.7
+      define-properties: 1.2.1
+      es-abstract: 1.22.4
+    dev: true
 
-  /nanoid@4.0.2:
-    resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==}
-    engines: {node: ^14 || ^16 || >=18}
-    hasBin: true
-    dev: false
+  /string.prototype.trimend@1.0.7:
+    resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
+    dependencies:
+      call-bind: 1.0.7
+      define-properties: 1.2.1
+      es-abstract: 1.22.4
+    dev: true
 
-  /needle@3.3.1:
-    resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==}
-    engines: {node: '>= 4.4.x'}
-    hasBin: true
-    requiresBuild: true
+  /string.prototype.trimstart@1.0.7:
+    resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
     dependencies:
-      iconv-lite: 0.6.3
-      sax: 1.4.1
+      call-bind: 1.0.7
+      define-properties: 1.2.1
+      es-abstract: 1.22.4
     dev: true
-    optional: true
 
-  /node-fetch@2.7.0:
-    resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
-    engines: {node: 4.x || >=6.0.0}
-    peerDependencies:
-      encoding: ^0.1.0
-    peerDependenciesMeta:
-      encoding:
-        optional: true
+  /string_decoder@1.3.0:
+    resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
     dependencies:
-      whatwg-url: 5.0.0
+      safe-buffer: 5.2.1
+    dev: true
 
-  /npm-run-path@6.0.0:
-    resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
-    engines: {node: '>=18'}
+  /stringify-object@3.3.0:
+    resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
+    engines: {node: '>=4'}
     dependencies:
-      path-key: 4.0.0
-      unicorn-magic: 0.3.0
+      get-own-enumerable-property-symbols: 3.0.2
+      is-obj: 1.0.1
+      is-regexp: 1.0.0
     dev: true
 
-  /nth-check@2.1.1:
-    resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
+  /strip-ansi@6.0.1:
+    resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+    engines: {node: '>=8'}
     dependencies:
-      boolbase: 1.0.0
+      ansi-regex: 5.0.1
+    dev: true
 
-  /oniguruma-to-es@3.1.1:
-    resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==}
+  /strip-ansi@7.1.0:
+    resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+    engines: {node: '>=12'}
     dependencies:
-      emoji-regex-xs: 1.0.0
-      regex: 6.0.1
-      regex-recursion: 6.0.2
+      ansi-regex: 6.0.1
+    dev: true
+
+  /strip-bom-string@1.0.0:
+    resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /strip-comments@2.0.1:
+    resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==}
+    engines: {node: '>=10'}
+    dev: true
+
+  /strip-final-newline@3.0.0:
+    resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+    engines: {node: '>=12'}
+    dev: true
 
-  /pagefind@1.3.0:
-    resolution: {integrity: sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==}
-    hasBin: true
-    optionalDependencies:
-      '@pagefind/darwin-arm64': 1.3.0
-      '@pagefind/darwin-x64': 1.3.0
-      '@pagefind/linux-arm64': 1.3.0
-      '@pagefind/linux-x64': 1.3.0
-      '@pagefind/windows-x64': 1.3.0
-    dev: false
-
-  /parse-ms@4.0.0:
-    resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
-    engines: {node: '>=18'}
+  /striptags@3.2.0:
+    resolution: {integrity: sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==}
     dev: true
 
-  /parse-node-version@1.0.1:
-    resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
-    engines: {node: '>= 0.10'}
+  /stylis@4.3.1:
+    resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==}
     dev: true
 
-  /parse5-htmlparser2-tree-adapter@6.0.1:
-    resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==}
+  /supports-color@5.5.0:
+    resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+    engines: {node: '>=4'}
     dependencies:
-      parse5: 6.0.1
-
-  /parse5@6.0.1:
-    resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
+      has-flag: 3.0.0
+    dev: true
 
-  /path-key@3.1.1:
-    resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+  /supports-color@7.2.0:
+    resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
     engines: {node: '>=8'}
-
-  /path-key@4.0.0:
-    resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
-    engines: {node: '>=12'}
+    dependencies:
+      has-flag: 4.0.0
     dev: true
 
-  /path-type@6.0.0:
-    resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==}
-    engines: {node: '>=18'}
+  /supports-preserve-symlinks-flag@1.0.0:
+    resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+    engines: {node: '>= 0.4'}
     dev: true
 
-  /perfect-debounce@1.0.0:
-    resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
-
-  /picocolors@1.1.1:
-    resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
-  /picomatch@2.3.1:
-    resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
-    engines: {node: '>=8.6'}
+  /temp-dir@2.0.0:
+    resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
+    engines: {node: '>=8'}
     dev: true
 
-  /pify@4.0.1:
-    resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
-    engines: {node: '>=6'}
-    requiresBuild: true
+  /tempy@0.6.0:
+    resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==}
+    engines: {node: '>=10'}
+    dependencies:
+      is-stream: 2.0.1
+      temp-dir: 2.0.0
+      type-fest: 0.16.0
+      unique-string: 2.0.0
     dev: true
-    optional: true
 
-  /pnpm@9.15.9:
-    resolution: {integrity: sha512-aARhQYk8ZvrQHAeSMRKOmvuJ74fiaR1p5NQO7iKJiClf1GghgbrlW1hBjDolO95lpQXsfF+UA+zlzDzTfc8lMQ==}
-    engines: {node: '>=18.12'}
+  /terser@5.27.1:
+    resolution: {integrity: sha512-29wAr6UU/oQpnTw5HoadwjUZnFQXGdOfj0LjZ4sVxzqwHh/QVkvr7m8y9WoR4iN3FRitVduTc6KdjcW38Npsug==}
+    engines: {node: '>=10'}
     hasBin: true
-    dev: false
-
-  /postcss@8.5.6:
-    resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
-    engines: {node: ^10 || ^12 || >=14}
     dependencies:
-      nanoid: 3.3.11
-      picocolors: 1.1.1
-      source-map-js: 1.2.1
+      '@jridgewell/source-map': 0.3.5
+      acorn: 8.11.3
+      commander: 2.20.3
+      source-map-support: 0.5.21
+    dev: true
 
-  /preact@10.27.0:
-    resolution: {integrity: sha512-/DTYoB6mwwgPytiqQTh/7SFRL98ZdiD8Sk8zIUVOxtwq4oWcwrcd1uno9fE/zZmUaUrFNYzbH14CPebOz9tZQw==}
+  /to-fast-properties@2.0.0:
+    resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+    engines: {node: '>=4'}
+    dev: true
 
-  /pretty-ms@9.2.0:
-    resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==}
-    engines: {node: '>=18'}
+  /to-regex-range@5.0.1:
+    resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+    engines: {node: '>=8.0'}
     dependencies:
-      parse-ms: 4.0.0
+      is-number: 7.0.0
     dev: true
 
-  /property-information@7.1.0:
-    resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
+  /tr46@1.0.1:
+    resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
+    dependencies:
+      punycode: 2.3.1
+    dev: true
 
-  /prr@1.0.1:
-    resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
-    requiresBuild: true
+  /ts-debounce@4.0.0:
+    resolution: {integrity: sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg==}
     dev: true
-    optional: true
 
-  /queue-microtask@1.2.3:
-    resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+  /ts-dedent@2.2.0:
+    resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
+    engines: {node: '>=6.10'}
     dev: true
 
-  /recaptcha-v3@1.11.3:
-    resolution: {integrity: sha512-sEE6J0RzUkS+sKEBpgCD/AqCU0ffrAVOADGjvAx9vcttN+VLK42SWMkj/J/I6vHu3Kew+xcfbBqDVb65N0QGDw==}
-    dev: false
+  /type-fest@0.16.0:
+    resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==}
+    engines: {node: '>=10'}
+    dev: true
 
-  /regex-recursion@6.0.2:
-    resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
+  /typed-array-buffer@1.0.1:
+    resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
-      regex-utilities: 2.3.0
+      call-bind: 1.0.7
+      es-errors: 1.3.0
+      is-typed-array: 1.1.13
+    dev: true
 
-  /regex-utilities@2.3.0:
-    resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
+  /typed-array-byte-length@1.0.0:
+    resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      call-bind: 1.0.7
+      for-each: 0.3.3
+      has-proto: 1.0.1
+      is-typed-array: 1.1.13
+    dev: true
 
-  /regex@6.0.1:
-    resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==}
+  /typed-array-byte-offset@1.0.0:
+    resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
+    engines: {node: '>= 0.4'}
     dependencies:
-      regex-utilities: 2.3.0
+      available-typed-arrays: 1.0.6
+      call-bind: 1.0.7
+      for-each: 0.3.3
+      has-proto: 1.0.1
+      is-typed-array: 1.1.13
+    dev: true
 
-  /reusify@1.1.0:
-    resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
-    engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+  /typed-array-length@1.0.4:
+    resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
+    dependencies:
+      call-bind: 1.0.7
+      for-each: 0.3.3
+      is-typed-array: 1.1.13
     dev: true
 
-  /rfdc@1.4.1:
-    resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
+  /uc.micro@1.0.6:
+    resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
+    dev: true
 
-  /rollup@4.46.2:
-    resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==}
-    engines: {node: '>=18.0.0', npm: '>=8.0.0'}
-    hasBin: true
-    dependencies:
-      '@types/estree': 1.0.8
-    optionalDependencies:
-      '@rollup/rollup-android-arm-eabi': 4.46.2
-      '@rollup/rollup-android-arm64': 4.46.2
-      '@rollup/rollup-darwin-arm64': 4.46.2
-      '@rollup/rollup-darwin-x64': 4.46.2
-      '@rollup/rollup-freebsd-arm64': 4.46.2
-      '@rollup/rollup-freebsd-x64': 4.46.2
-      '@rollup/rollup-linux-arm-gnueabihf': 4.46.2
-      '@rollup/rollup-linux-arm-musleabihf': 4.46.2
-      '@rollup/rollup-linux-arm64-gnu': 4.46.2
-      '@rollup/rollup-linux-arm64-musl': 4.46.2
-      '@rollup/rollup-linux-loongarch64-gnu': 4.46.2
-      '@rollup/rollup-linux-ppc64-gnu': 4.46.2
-      '@rollup/rollup-linux-riscv64-gnu': 4.46.2
-      '@rollup/rollup-linux-riscv64-musl': 4.46.2
-      '@rollup/rollup-linux-s390x-gnu': 4.46.2
-      '@rollup/rollup-linux-x64-gnu': 4.46.2
-      '@rollup/rollup-linux-x64-musl': 4.46.2
-      '@rollup/rollup-win32-arm64-msvc': 4.46.2
-      '@rollup/rollup-win32-ia32-msvc': 4.46.2
-      '@rollup/rollup-win32-x64-msvc': 4.46.2
-      fsevents: 2.3.3
+  /uc.micro@2.0.0:
+    resolution: {integrity: sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==}
+    dev: true
 
-  /run-parallel@1.2.0:
-    resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+  /unbox-primitive@1.0.2:
+    resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
     dependencies:
-      queue-microtask: 1.2.3
+      call-bind: 1.0.7
+      has-bigints: 1.0.2
+      has-symbols: 1.0.3
+      which-boxed-primitive: 1.0.2
     dev: true
 
-  /safer-buffer@2.1.2:
-    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
-    requiresBuild: true
+  /undici-types@5.26.5:
+    resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
     dev: true
-    optional: true
-
-  /sax@1.4.1:
-    resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
-    requiresBuild: true
 
-  /search-insights@2.17.3:
-    resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==}
+  /unicode-canonical-property-names-ecmascript@2.0.0:
+    resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
+    engines: {node: '>=4'}
+    dev: true
 
-  /section-matter@1.0.0:
-    resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
+  /unicode-match-property-ecmascript@2.0.0:
+    resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==}
     engines: {node: '>=4'}
     dependencies:
-      extend-shallow: 2.0.1
-      kind-of: 6.0.3
+      unicode-canonical-property-names-ecmascript: 2.0.0
+      unicode-property-aliases-ecmascript: 2.1.0
+    dev: true
 
-  /semver@5.7.2:
-    resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
-    hasBin: true
-    requiresBuild: true
+  /unicode-match-property-value-ecmascript@2.1.0:
+    resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==}
+    engines: {node: '>=4'}
     dev: true
-    optional: true
 
-  /shebang-command@2.0.0:
-    resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
-    engines: {node: '>=8'}
-    dependencies:
-      shebang-regex: 3.0.0
+  /unicode-property-aliases-ecmascript@2.1.0:
+    resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==}
+    engines: {node: '>=4'}
+    dev: true
 
-  /shebang-regex@3.0.0:
-    resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+  /unicorn-magic@0.1.0:
+    resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
+    engines: {node: '>=18'}
+    dev: true
+
+  /unique-string@2.0.0:
+    resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==}
     engines: {node: '>=8'}
+    dependencies:
+      crypto-random-string: 2.0.0
+    dev: true
 
-  /shiki@2.5.0:
-    resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==}
+  /unist-util-stringify-position@3.0.3:
+    resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==}
     dependencies:
-      '@shikijs/core': 2.5.0
-      '@shikijs/engine-javascript': 2.5.0
-      '@shikijs/engine-oniguruma': 2.5.0
-      '@shikijs/langs': 2.5.0
-      '@shikijs/themes': 2.5.0
-      '@shikijs/types': 2.5.0
-      '@shikijs/vscode-textmate': 10.0.2
-      '@types/hast': 3.0.4
+      '@types/unist': 2.0.10
+    dev: true
 
-  /signal-exit@4.1.0:
-    resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
-    engines: {node: '>=14'}
+  /universalify@2.0.1:
+    resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+    engines: {node: '>= 10.0.0'}
     dev: true
 
-  /slash@5.1.0:
-    resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
-    engines: {node: '>=14.16'}
+  /upath@1.2.0:
+    resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==}
+    engines: {node: '>=4'}
     dev: true
 
-  /slick@1.12.2:
-    resolution: {integrity: sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==}
+  /upath@2.0.1:
+    resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==}
+    engines: {node: '>=4'}
+    dev: true
 
-  /source-map-js@1.2.1:
-    resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
-    engines: {node: '>=0.10.0'}
+  /update-browserslist-db@1.0.13(browserslist@4.23.0):
+    resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
+    hasBin: true
+    peerDependencies:
+      browserslist: '>= 4.21.0'
+    dependencies:
+      browserslist: 4.23.0
+      escalade: 3.1.2
+      picocolors: 1.0.0
+    dev: true
 
-  /source-map@0.6.1:
-    resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
-    engines: {node: '>=0.10.0'}
-    requiresBuild: true
+  /uri-js@4.4.1:
+    resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+    dependencies:
+      punycode: 2.3.1
     dev: true
-    optional: true
 
-  /space-separated-tokens@2.0.2:
-    resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+  /util-deprecate@1.0.2:
+    resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+    dev: true
 
-  /speakingurl@14.0.1:
-    resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==}
-    engines: {node: '>=0.10.0'}
+  /uuid@9.0.1:
+    resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
+    hasBin: true
+    dev: true
 
-  /speech-rule-engine@4.1.2:
-    resolution: {integrity: sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==}
+  /uvu@0.5.6:
+    resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==}
+    engines: {node: '>=8'}
     hasBin: true
     dependencies:
-      '@xmldom/xmldom': 0.9.8
-      commander: 13.1.0
-      wicked-good-xpath: 1.3.0
-
-  /sprintf-js@1.0.3:
-    resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+      dequal: 2.0.3
+      diff: 5.2.0
+      kleur: 4.1.5
+      sade: 1.8.1
+    dev: true
 
-  /stringify-entities@4.0.4:
-    resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
+  /vite@5.0.12:
+    resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==}
+    engines: {node: ^18.0.0 || >=20.0.0}
+    hasBin: true
+    peerDependencies:
+      '@types/node': ^18.0.0 || >=20.0.0
+      less: '*'
+      lightningcss: ^1.21.0
+      sass: '*'
+      stylus: '*'
+      sugarss: '*'
+      terser: ^5.4.0
+    peerDependenciesMeta:
+      '@types/node':
+        optional: true
+      less:
+        optional: true
+      lightningcss:
+        optional: true
+      sass:
+        optional: true
+      stylus:
+        optional: true
+      sugarss:
+        optional: true
+      terser:
+        optional: true
     dependencies:
-      character-entities-html4: 2.1.0
-      character-entities-legacy: 3.0.0
-
-  /strip-bom-string@1.0.0:
-    resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==}
-    engines: {node: '>=0.10.0'}
+      esbuild: 0.19.12
+      postcss: 8.4.35
+      rollup: 4.11.0
+    optionalDependencies:
+      fsevents: 2.3.3
+    dev: true
 
-  /strip-final-newline@4.0.0:
-    resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
-    engines: {node: '>=18'}
+  /vue-demi@0.14.7(vue@3.4.19):
+    resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
+    engines: {node: '>=12'}
+    hasBin: true
+    requiresBuild: true
+    peerDependencies:
+      '@vue/composition-api': ^1.0.0-rc.1
+      vue: ^3.0.0-0 || ^2.6.0
+    peerDependenciesMeta:
+      '@vue/composition-api':
+        optional: true
+    dependencies:
+      vue: 3.4.19
     dev: true
 
-  /superjson@2.2.2:
-    resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==}
-    engines: {node: '>=16'}
+  /vue-router@4.2.5(vue@3.3.8):
+    resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==}
+    peerDependencies:
+      vue: ^3.2.0
     dependencies:
-      copy-anything: 3.0.5
+      '@vue/devtools-api': 6.6.1
+      vue: 3.3.8
+    dev: true
 
-  /tabbable@6.2.0:
-    resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
+  /vue-router@4.2.5(vue@3.4.19):
+    resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==}
+    peerDependencies:
+      vue: ^3.2.0
+    dependencies:
+      '@vue/devtools-api': 6.6.1
+      vue: 3.4.19
+    dev: true
 
-  /to-regex-range@5.0.1:
-    resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
-    engines: {node: '>=8.0'}
+  /vue@3.3.8:
+    resolution: {integrity: sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==}
+    peerDependencies:
+      typescript: '*'
+    peerDependenciesMeta:
+      typescript:
+        optional: true
     dependencies:
-      is-number: 7.0.0
+      '@vue/compiler-dom': 3.3.8
+      '@vue/compiler-sfc': 3.3.8
+      '@vue/runtime-dom': 3.3.8
+      '@vue/server-renderer': 3.3.8(vue@3.3.8)
+      '@vue/shared': 3.3.8
     dev: true
 
-  /tr46@0.0.3:
-    resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+  /vue@3.4.19:
+    resolution: {integrity: sha512-W/7Fc9KUkajFU8dBeDluM4sRGc/aa4YJnOYck8dkjgZoXtVsn3OeTGni66FV1l3+nvPA7VBFYtPioaGKUmEADw==}
+    peerDependencies:
+      typescript: '*'
+    peerDependenciesMeta:
+      typescript:
+        optional: true
+    dependencies:
+      '@vue/compiler-dom': 3.4.19
+      '@vue/compiler-sfc': 3.4.19
+      '@vue/runtime-dom': 3.4.19
+      '@vue/server-renderer': 3.4.19(vue@3.4.19)
+      '@vue/shared': 3.4.19
+    dev: true
 
-  /trim-lines@3.0.1:
-    resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+  /vuepress-plugin-auto-catalog@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-MM4Y7uf3txqc9TQYZtpaynvGSROtuw2GyHA5l3n5NB8D55tjvq+xpg0KfOfKmApL/yhu37EcUNMRkLlBgmwDJQ==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    deprecated: Please use @vuepress/plugin-catalog@next intead
+    peerDependencies:
+      sass-loader: ^13.3.2
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      sass-loader:
+        optional: true
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-plugin-components: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-sass-palette: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - artplayer
+      - dashjs-pure
+      - hls.js
+      - mpegts.js
+      - plyr
+      - supports-color
+      - typescript
+      - vidstack
+    dev: true
 
-  /tslib@2.8.1:
-    resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+  /vuepress-plugin-blog2@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-fS2EsvzpzxNfI6G8cYHvXqkoo6+1GDFjzL28Kna8EbRrJjd+A+8ciLMkV/JNArj8D6E4DQiHoECwXUMkqnLD4w==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    peerDependencies:
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      chokidar: 3.6.0
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
 
-  /typescript@5.9.2:
-    resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
-    engines: {node: '>=14.17'}
-    hasBin: true
+  /vuepress-plugin-comment2@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-bZ5BhJ/dQdc24GDc1T95nRCnkjZZo05wpSSU2pI7sRZSeX6MjbpJLMNJPKH3BIMQQQaQUZUIzKLl4U0ja9B07A==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    peerDependencies:
+      '@waline/client': ^2.15.8 || ^3.0.0-alpha.8
+      artalk: ^2.7.2
+      sass-loader: ^13.3.2
+      twikoo: ^1.5.0
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      '@waline/client':
+        optional: true
+      artalk:
+        optional: true
+      sass-loader:
+        optional: true
+      twikoo:
+        optional: true
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      giscus: 1.4.0
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-plugin-sass-palette: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
 
-  /uncrypto@0.1.3:
-    resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
+  /vuepress-plugin-components@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-P5X+UXwHFp6G/SXKRcaKpYrXvcPsp5lC1E+bbhrL026IhzUI59sVHrCcoZDwnyOve24BGPZbiACMSzX/Bu2T+g==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    peerDependencies:
+      artplayer: ^5.0.0
+      dashjs-pure: ^1.0.0
+      hls.js: ^1.4.12
+      mpegts.js: ^1.7.3
+      plyr: ^3.7.8
+      sass-loader: ^13.3.2
+      vidstack: ^1.9.0
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      artplayer:
+        optional: true
+      dashjs-pure:
+        optional: true
+      hls.js:
+        optional: true
+      mpegts.js:
+        optional: true
+      plyr:
+        optional: true
+      sass-loader:
+        optional: true
+      vidstack:
+        optional: true
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
+    dependencies:
+      '@stackblitz/sdk': 1.9.0
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      '@vueuse/core': 10.7.2(vue@3.4.19)
+      balloon-css: 1.2.0
+      create-codepen: 1.0.1
+      qrcode: 1.5.3
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-plugin-reading-time2: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-sass-palette: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
     dev: true
 
-  /unicorn-magic@0.3.0:
-    resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
-    engines: {node: '>=18'}
+  /vuepress-plugin-copy-code2@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-V67QQHGjwOpRscxIyduF1rdAy139g2FwgwbhMcPblwpthd9w7fwDKuBc1VPJPICBasrVLFfOSgD1vtMsHiBx1g==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    deprecated: Please use @vuepress/plugin-copy-code@v2 instead
+    peerDependencies:
+      sass-loader: ^13.3.2
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      sass-loader:
+        optional: true
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      '@vueuse/core': 10.7.2(vue@3.4.19)
+      balloon-css: 1.2.0
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-plugin-sass-palette: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
     dev: true
 
-  /unist-util-is@6.0.0:
-    resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
+  /vuepress-plugin-copyright2@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-GiOcz91UBAF4vSvphWphkJeE6kyP9n45DAnvNKBBzeqSJc/pWoOJEMCWMarMR+LmW1YTu/oy5hY2NPZMm9affw==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    deprecated: Please use @vuepress/plugin-copyright@v2 instead
+    peerDependencies:
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
     dependencies:
-      '@types/unist': 3.0.3
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      '@vueuse/core': 10.7.2(vue@3.4.19)
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
 
-  /unist-util-position@5.0.0:
-    resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
+  /vuepress-plugin-feed2@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-UJuu6u075VlW7bJeQBB8ZulcVsmp9ysifAiTCwVSSQ7MxUwnAGzzN5mG0TVNgObqTz2YnYSS9J9Pdu6Ms9uCpw==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    deprecated: Please use @vuepress/plugin-feed@v2 instead
+    peerDependencies:
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
     dependencies:
-      '@types/unist': 3.0.3
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      cheerio: 1.0.0-rc.12
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      xml-js: 1.6.11
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
 
-  /unist-util-stringify-position@4.0.0:
-    resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
+  /vuepress-plugin-md-enhance@2.0.0-rc.7(katex@0.16.9)(markdown-it@13.0.2)(mermaid@10.8.0)(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-UHcsPNbbg9itmIndTKn5nObjy/eVzbNo+6A9P1JaOPfNukkC6H7LaHHgwMlPXNsmaeYZmR18ZA+NCSTGcRDTvQ==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    peerDependencies:
+      '@types/reveal.js': ^4.4.5
+      '@vue/repl': ^3.0.0
+      chart.js: ^4.0.0
+      echarts: ^5.0.0
+      flowchart.ts: ^2.0.0 || ^3.0.0
+      katex: ^0.16.0
+      kotlin-playground: ^1.23.0
+      markmap-lib: ^0.15.5
+      markmap-toolbar: ^0.15.5
+      markmap-view: ^0.15.5
+      mathjax-full: ^3.2.2
+      mermaid: ^10.6.0
+      reveal.js: ^5.0.0
+      sass-loader: ^13.3.2
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      '@types/reveal.js':
+        optional: true
+      '@vue/repl':
+        optional: true
+      chart.js:
+        optional: true
+      echarts:
+        optional: true
+      flowchart.ts:
+        optional: true
+      katex:
+        optional: true
+      kotlin-playground:
+        optional: true
+      markmap-lib:
+        optional: true
+      markmap-toolbar:
+        optional: true
+      markmap-view:
+        optional: true
+      mathjax-full:
+        optional: true
+      mermaid:
+        optional: true
+      reveal.js:
+        optional: true
+      sass-loader:
+        optional: true
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
     dependencies:
-      '@types/unist': 3.0.3
+      '@mdit/plugin-alert': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-align': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-attrs': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-container': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-demo': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-figure': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-footnote': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-img-lazyload': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-img-mark': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-img-size': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-include': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-katex': 0.7.6(katex@0.16.9)(markdown-it@13.0.2)
+      '@mdit/plugin-mark': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-mathjax': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-stylize': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-sub': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-sup': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-tab': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-tasklist': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-tex': 0.7.6(markdown-it@13.0.2)
+      '@mdit/plugin-uml': 0.7.6(markdown-it@13.0.2)
+      '@types/markdown-it': 13.0.7
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      '@vueuse/core': 10.7.2(vue@3.4.19)
+      balloon-css: 1.2.0
+      js-yaml: 4.1.0
+      katex: 0.16.9
+      mermaid: 10.8.0
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-plugin-sass-palette: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - markdown-it
+      - supports-color
+      - typescript
+    dev: true
 
-  /unist-util-visit-parents@6.0.1:
-    resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
+  /vuepress-plugin-photo-swipe@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-kdEVkWddwgWwTMrAOWOMilaUi56t+NcPXZrEyPvNemFykEzkuPHpVREH3X9TsIANDxrgWrigtcnAEGtkBugTtQ==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    peerDependencies:
+      sass-loader: ^13.3.2
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      sass-loader:
+        optional: true
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
     dependencies:
-      '@types/unist': 3.0.3
-      unist-util-is: 6.0.0
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      '@vueuse/core': 10.7.2(vue@3.4.19)
+      photoswipe: 5.4.3
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-plugin-sass-palette: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
 
-  /unist-util-visit@5.0.0:
-    resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+  /vuepress-plugin-pwa2@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-SydLb8UtA9Am24+cMmQIohaeSUh3zlZlB8qFL/rP+H8C5j8x78FCaQd1UrGNBLy7I+y/yCOgJzikNLlm4lMdiw==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    peerDependencies:
+      sass-loader: ^13.3.2
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      sass-loader:
+        optional: true
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
     dependencies:
-      '@types/unist': 3.0.3
-      unist-util-is: 6.0.0
-      unist-util-visit-parents: 6.0.1
-
-  /valid-data-url@3.0.1:
-    resolution: {integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==}
-    engines: {node: '>=10'}
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      '@vueuse/core': 10.7.2(vue@3.4.19)
+      mitt: 3.0.1
+      register-service-worker: 1.7.2
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-plugin-sass-palette: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      workbox-build: 7.0.0
+    transitivePeerDependencies:
+      - '@types/babel__core'
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
 
-  /vfile-message@4.0.3:
-    resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
+  /vuepress-plugin-reading-time2@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-OBFxXNZQGOyhzIx2ZfJ/nPBiFJYRGOCT+1GrZRjeW0cfrdvgYZo6x2jDBDtmrrzT3TlhZRpQDZB6QMbiORQhPQ==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    deprecated: Please use @vuepress/plugin-reading-time@v2 instead
+    peerDependencies:
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
     dependencies:
-      '@types/unist': 3.0.3
-      unist-util-stringify-position: 4.0.0
+      '@vuepress/client': 2.0.0-rc.0
+      vue: 3.4.19
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
 
-  /vfile@6.0.3:
-    resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+  /vuepress-plugin-readmore-popular-next@2.0.0-rc.2.1:
+    resolution: {integrity: sha512-CBDI/Pm1fg2K78EWHUV1rMOoDGIhfHvm+IjqgSMGIjPgEZz5ocxvWB/04UjBBxF2teCk/W+kFor+zr86pg2GZA==}
     dependencies:
-      '@types/unist': 3.0.3
-      vfile-message: 4.0.3
+      '@vuepress/client': 2.0.0-rc.2
+      '@vuepress/core': 2.0.0-rc.2
+      '@vuepress/utils': 2.0.0-rc.2
+      chalk: 4.1.2
+      node-match-path: 0.6.3
+      vue: 3.3.8
+      vue-router: 4.2.5(vue@3.3.8)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
 
-  /vite@5.4.19:
-    resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==}
-    engines: {node: ^18.0.0 || >=20.0.0}
-    hasBin: true
+  /vuepress-plugin-rtl@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-R9VdO8DJE2kPxWYUDV/6erq4wbPC/I98E2fNJuBC8bHEj1IS1DReEP0g8PyBMYT/nozkMWfa6aIZPjkXlaNIiA==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
     peerDependencies:
-      '@types/node': ^18.0.0 || >=20.0.0
-      less: '*'
-      lightningcss: ^1.21.0
-      sass: '*'
-      sass-embedded: '*'
-      stylus: '*'
-      sugarss: '*'
-      terser: ^5.4.0
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
     peerDependenciesMeta:
-      '@types/node':
+      vuepress:
         optional: true
-      less:
-        optional: true
-      lightningcss:
+      vuepress-vite:
         optional: true
-      sass:
+      vuepress-webpack:
         optional: true
-      sass-embedded:
+    dependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      vue: 3.4.19
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
+
+  /vuepress-plugin-sass-palette@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-xi8UDaPGS67MVzUDoaQN67dZoTjkW30KpHQJH8R/6DybOz9hC0oVqvkZM9waPPCCdcPytxVUfVDdincARZ4eHw==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    peerDependencies:
+      sass-loader: ^13.3.2
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      sass-loader:
         optional: true
-      stylus:
+      vuepress:
         optional: true
-      sugarss:
+      vuepress-vite:
         optional: true
-      terser:
+      vuepress-webpack:
         optional: true
     dependencies:
-      esbuild: 0.21.5
-      postcss: 8.5.6
-      rollup: 4.46.2
-    optionalDependencies:
-      fsevents: 2.3.3
-
-  /vitepress-markdown-timeline@1.2.2:
-    resolution: {integrity: sha512-eDFcvudmTW33pI7XdT+ZeUPvpc4CPXI0LZbsZZ54j36G56AN6qYEBiwZpDHl77E4QvqAIJMc8phXXvm7P/Lc+Q==}
-    dependencies:
-      dayjs: 1.11.13
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      chokidar: 3.6.0
+      sass: 1.71.0
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
     dev: true
 
-  /vitepress-plugin-51la@0.1.0(vitepress@1.6.3):
-    resolution: {integrity: sha512-jV5w7sgqGFuum70wpIY9hggFio4H1C3+MayeeP/b55Cf+lRiFVNMrQQvWjw7UjT0bO1eiJYq4DiLsxzXt7r+QA==}
+  /vuepress-plugin-search-pro@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-MtzVQG7y2Kq8IMNAIFxARPrIS1snKve7sAe7no5KzrE+zL6LNZYZCy0r9YUsrUy27QDg8qo7hYrL/8SEv4c/BQ==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
     peerDependencies:
-      vitepress: ^1
+      sass-loader: ^13.3.2
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      sass-loader:
+        optional: true
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
     dependencies:
-      vitepress: 1.6.3(@algolia/client-search@5.35.0)(markdown-it-mathjax3@4.3.2)(search-insights@2.17.3)
-    dev: false
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      '@vueuse/core': 10.7.2(vue@3.4.19)
+      cheerio: 1.0.0-rc.12
+      chokidar: 3.6.0
+      slimsearch: 2.0.0
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-plugin-sass-palette: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
 
-  /vitepress-plugin-announcement@0.1.5(vitepress@1.6.3):
-    resolution: {integrity: sha512-Jpfhs4/McL+IMFbjnNeuoVJKG7TCKZ8wunl+Z6uluH1FkYXx99Q/HcqXYdKQ0chfA78kGo6BkpT7M5NUqXjYIA==}
+  /vuepress-plugin-seo2@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-WHn4s1N2cHPQZQh+rZyiH9mDtGYFh9E2F5ZUV3LT2IddGuHluzuwVScIxix9q76AvbdCl4rhg7vr97oc8oPoUA==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    deprecated: Please use @vuepress/plugin-seo@v2 instead
     peerDependencies:
-      vitepress: ^1
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
     dependencies:
-      javascript-stringify: 2.1.0
-      vitepress: 1.6.3(@algolia/client-search@5.35.0)(markdown-it-mathjax3@4.3.2)(search-insights@2.17.3)
-    dev: false
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
 
-  /vitepress-plugin-pagefind@0.4.14(pagefind@1.3.0):
-    resolution: {integrity: sha512-rtB3RITPPt77vJnolo9D8YrKzVSe2B9Jajl5Yxd3ZiqmSEud5BhS8j2JRsEEGxb/YNcBAWru52Qb2HNX5RUojw==}
+  /vuepress-plugin-sitemap2@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-Vc13ucmamsXu0PD9Gu1lRm0NKOAwV/h3hZA+h2jAnavsiAqkAUF1WmvjNLPMWCVz77lez3knQNpWDoHZVBoxLQ==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
+    deprecated: Please use @vuepress/plugin-sitemap@v2 instead
     peerDependencies:
-      pagefind: ^1.1.0
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
     dependencies:
-      '@sugarat/theme-shared': 0.0.5
-      '@vueuse/core': 9.13.0(vue@3.5.18)
-      javascript-stringify: 2.1.0
-      pagefind: 1.3.0
-      vue: 3.5.18(typescript@5.9.2)
-      vue-command-palette: 0.1.4
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      sitemap: 7.1.1
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
     transitivePeerDependencies:
       - '@vue/composition-api'
+      - supports-color
       - typescript
-    dev: false
+    dev: true
 
-  /vitepress-plugin-rss@0.3.1(vitepress@1.6.3):
-    resolution: {integrity: sha512-Q0tJ/j6D0c0WXG/VEF1FNyR8Kv72GPwytUipwKEx+3zL4/AllCgYkY/Hom38zY7t7bcDk5qXeudbhoIWT+1Q+A==}
+  /vuepress-shared@2.0.0-rc.7(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-1EUgbOe8/VK0yuzau2mtL22Av2547zVJP/q2niCoCyBTzMrn0agaWSRIDhhQx+e4xPlE5Mi3FsCHDXTfkWSuIw==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
     peerDependencies:
-      vitepress: ^1
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
+    peerDependenciesMeta:
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
+        optional: true
     dependencies:
-      '@sugarat/theme-shared': 0.0.4
-      feed: 4.2.2
-      vitepress: 1.6.3(@algolia/client-search@5.35.0)(markdown-it-mathjax3@4.3.2)(search-insights@2.17.3)
-    dev: false
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      '@vueuse/core': 10.7.2(vue@3.4.19)
+      cheerio: 1.0.0-rc.12
+      dayjs: 1.11.10
+      execa: 8.0.1
+      fflate: 0.8.2
+      gray-matter: 4.0.3
+      semver: 7.6.0
+      striptags: 3.2.0
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - supports-color
+      - typescript
+    dev: true
 
-  /vitepress@1.6.3(@algolia/client-search@5.35.0)(markdown-it-mathjax3@4.3.2)(search-insights@2.17.3):
-    resolution: {integrity: sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==}
-    hasBin: true
+  /vuepress-theme-hope@2.0.0-rc.7(katex@0.16.9)(markdown-it@13.0.2)(mermaid@10.8.0)(vuepress@2.0.0-rc.0):
+    resolution: {integrity: sha512-dD8UOspS52Jn7IF4kRmWYFLBSV9iILEyat2rFMflu7TrmJ46xwtfkYtqnPce8OKYvN4uqXnzMNmKTrp+Skcqdw==}
+    engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
     peerDependencies:
-      markdown-it-mathjax3: ^4
-      postcss: ^8
+      sass-loader: ^13.3.2
+      vuepress: 2.0.0-rc.0
+      vuepress-vite: 2.0.0-rc.0
+      vuepress-webpack: 2.0.0-rc.0
     peerDependenciesMeta:
-      markdown-it-mathjax3:
+      sass-loader:
         optional: true
-      postcss:
+      vuepress:
+        optional: true
+      vuepress-vite:
+        optional: true
+      vuepress-webpack:
         optional: true
     dependencies:
-      '@docsearch/css': 3.8.2
-      '@docsearch/js': 3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3)
-      '@iconify-json/simple-icons': 1.2.45
-      '@shikijs/core': 2.5.0
-      '@shikijs/transformers': 2.5.0
-      '@shikijs/types': 2.5.0
-      '@types/markdown-it': 14.1.2
-      '@vitejs/plugin-vue': 5.2.4(vite@5.4.19)(vue@3.5.18)
-      '@vue/devtools-api': 7.7.7
-      '@vue/shared': 3.5.18
-      '@vueuse/core': 12.8.2
-      '@vueuse/integrations': 12.8.2(focus-trap@7.6.5)
-      focus-trap: 7.6.5
-      mark.js: 8.11.1
-      markdown-it-mathjax3: 4.3.2
-      minisearch: 7.1.2
-      shiki: 2.5.0
-      vite: 5.4.19
-      vue: 3.5.18(typescript@5.9.2)
+      '@vuepress/cli': 2.0.0-rc.0
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/plugin-active-header-links': 2.0.0-rc.0
+      '@vuepress/plugin-container': 2.0.0-rc.0
+      '@vuepress/plugin-external-link-icon': 2.0.0-rc.0
+      '@vuepress/plugin-git': 2.0.0-rc.0
+      '@vuepress/plugin-nprogress': 2.0.0-rc.0
+      '@vuepress/plugin-prismjs': 2.0.0-rc.0
+      '@vuepress/plugin-theme-data': 2.0.0-rc.0
+      '@vuepress/shared': 2.0.0-rc.0
+      '@vuepress/utils': 2.0.0-rc.0
+      '@vueuse/core': 10.7.2(vue@3.4.19)
+      balloon-css: 1.2.0
+      bcrypt-ts: 5.0.1
+      cheerio: 1.0.0-rc.12
+      chokidar: 3.6.0
+      gray-matter: 4.0.3
+      vue: 3.4.19
+      vue-router: 4.2.5(vue@3.4.19)
+      vuepress: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+      vuepress-plugin-auto-catalog: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-blog2: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-comment2: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-components: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-copy-code2: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-copyright2: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-feed2: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-md-enhance: 2.0.0-rc.7(katex@0.16.9)(markdown-it@13.0.2)(mermaid@10.8.0)(vuepress@2.0.0-rc.0)
+      vuepress-plugin-photo-swipe: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-pwa2: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-reading-time2: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-rtl: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-sass-palette: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-seo2: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-plugin-sitemap2: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+      vuepress-shared: 2.0.0-rc.7(vuepress@2.0.0-rc.0)
+    transitivePeerDependencies:
+      - '@types/babel__core'
+      - '@types/reveal.js'
+      - '@vue/composition-api'
+      - '@vue/repl'
+      - '@waline/client'
+      - artalk
+      - artplayer
+      - chart.js
+      - dashjs-pure
+      - echarts
+      - flowchart.ts
+      - hls.js
+      - katex
+      - kotlin-playground
+      - markdown-it
+      - markmap-lib
+      - markmap-toolbar
+      - markmap-view
+      - mathjax-full
+      - mermaid
+      - mpegts.js
+      - plyr
+      - reveal.js
+      - supports-color
+      - twikoo
+      - typescript
+      - vidstack
+    dev: true
+
+  /vuepress-vite@2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19):
+    resolution: {integrity: sha512-+2XBejeiskPyr2raBeA2o4uDFDsjtadpUVmtio3qqFtQpOhidz/ORuiTLr2UfLtFn1ASIHP6Vy2YjQ0e/TeUVw==}
+    engines: {node: '>=18.16.0'}
+    hasBin: true
+    peerDependencies:
+      '@vuepress/client': 2.0.0-rc.0
+      vue: ^3.3.4
+    dependencies:
+      '@vuepress/bundler-vite': 2.0.0-rc.0
+      '@vuepress/cli': 2.0.0-rc.0
+      '@vuepress/client': 2.0.0-rc.0
+      '@vuepress/core': 2.0.0-rc.0
+      '@vuepress/theme-default': 2.0.0-rc.0
+      vue: 3.4.19
     transitivePeerDependencies:
-      - '@algolia/client-search'
       - '@types/node'
-      - '@types/react'
-      - async-validator
-      - axios
-      - change-case
-      - drauu
-      - fuse.js
-      - idb-keyval
-      - jwt-decode
+      - '@vue/composition-api'
       - less
       - lightningcss
-      - nprogress
-      - qrcode
-      - react
-      - react-dom
       - sass
-      - sass-embedded
-      - search-insights
-      - sortablejs
+      - sass-loader
       - stylus
       - sugarss
+      - supports-color
       - terser
+      - ts-node
       - typescript
-      - universal-cookie
-
-  /vue-command-palette@0.1.4:
-    resolution: {integrity: sha512-v9wGV5RG/Qe/GLLP3dJGYEvBOHQAH1kTdfzv7/uDj4v51g9uB0J3dQSaREgsrAvAT7tSj/cSbVrGpaalr8z7tg==}
-    dependencies:
-      fuse.js: 6.6.2
-      mitt: 3.0.1
-      nanoid: 4.0.2
-    dev: false
+    dev: true
 
-  /vue-demi@0.14.10(vue@3.5.18):
-    resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
-    engines: {node: '>=12'}
+  /vuepress@2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19):
+    resolution: {integrity: sha512-sydt/B7+pIw926G5PntYmptLkC5o2buXKh+WR1+P2KnsvkXU+UGnQrJJ0FBvu/4RNuY99tkUZd59nyPhEmRrCg==}
+    engines: {node: '>=18.16.0'}
     hasBin: true
-    requiresBuild: true
-    peerDependencies:
-      '@vue/composition-api': ^1.0.0-rc.1
-      vue: ^3.0.0-0 || ^2.6.0
-    peerDependenciesMeta:
-      '@vue/composition-api':
-        optional: true
     dependencies:
-      vue: 3.5.18(typescript@5.9.2)
-    dev: false
+      vuepress-vite: 2.0.0-rc.0(@vuepress/client@2.0.0-rc.0)(vue@3.4.19)
+    transitivePeerDependencies:
+      - '@types/node'
+      - '@vue/composition-api'
+      - '@vuepress/client'
+      - less
+      - lightningcss
+      - sass
+      - sass-loader
+      - stylus
+      - sugarss
+      - supports-color
+      - terser
+      - ts-node
+      - typescript
+      - vue
+    dev: true
 
-  /vue@3.5.18(typescript@5.9.2):
-    resolution: {integrity: sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==}
-    peerDependencies:
-      typescript: '*'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
+  /web-worker@1.3.0:
+    resolution: {integrity: sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==}
+    dev: true
+
+  /webidl-conversions@4.0.2:
+    resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
+    dev: true
+
+  /whatwg-url@7.1.0:
+    resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
     dependencies:
-      '@vue/compiler-dom': 3.5.18
-      '@vue/compiler-sfc': 3.5.18
-      '@vue/runtime-dom': 3.5.18
-      '@vue/server-renderer': 3.5.18(vue@3.5.18)
-      '@vue/shared': 3.5.18
-      typescript: 5.9.2
+      lodash.sortby: 4.7.0
+      tr46: 1.0.1
+      webidl-conversions: 4.0.2
+    dev: true
 
-  /web-resource-inliner@6.0.1:
-    resolution: {integrity: sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==}
-    engines: {node: '>=10.0.0'}
+  /which-boxed-primitive@1.0.2:
+    resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
     dependencies:
-      ansi-colors: 4.1.3
-      escape-goat: 3.0.0
-      htmlparser2: 5.0.1
-      mime: 2.6.0
-      node-fetch: 2.7.0
-      valid-data-url: 3.0.1
-    transitivePeerDependencies:
-      - encoding
+      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
 
-  /webidl-conversions@3.0.1:
-    resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+  /which-module@2.0.1:
+    resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
+    dev: true
 
-  /whatwg-url@5.0.0:
-    resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+  /which-typed-array@1.1.14:
+    resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==}
+    engines: {node: '>= 0.4'}
     dependencies:
-      tr46: 0.0.3
-      webidl-conversions: 3.0.1
+      available-typed-arrays: 1.0.6
+      call-bind: 1.0.7
+      for-each: 0.3.3
+      gopd: 1.0.1
+      has-tostringtag: 1.0.2
+    dev: true
 
   /which@2.0.2:
     resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
@@ -2330,21 +6775,213 @@ packages:
     hasBin: true
     dependencies:
       isexe: 2.0.0
+    dev: true
+
+  /workbox-background-sync@7.0.0:
+    resolution: {integrity: sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==}
+    dependencies:
+      idb: 7.1.1
+      workbox-core: 7.0.0
+    dev: true
+
+  /workbox-broadcast-update@7.0.0:
+    resolution: {integrity: sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==}
+    dependencies:
+      workbox-core: 7.0.0
+    dev: true
+
+  /workbox-build@7.0.0:
+    resolution: {integrity: sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==}
+    engines: {node: '>=16.0.0'}
+    dependencies:
+      '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0)
+      '@babel/core': 7.23.9
+      '@babel/preset-env': 7.23.9(@babel/core@7.23.9)
+      '@babel/runtime': 7.23.9
+      '@rollup/plugin-babel': 5.3.1(@babel/core@7.23.9)(rollup@2.79.1)
+      '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1)
+      '@rollup/plugin-replace': 2.4.2(rollup@2.79.1)
+      '@surma/rollup-plugin-off-main-thread': 2.2.3
+      ajv: 8.12.0
+      common-tags: 1.8.2
+      fast-json-stable-stringify: 2.1.0
+      fs-extra: 9.1.0
+      glob: 7.2.3
+      lodash: 4.17.21
+      pretty-bytes: 5.6.0
+      rollup: 2.79.1
+      rollup-plugin-terser: 7.0.2(rollup@2.79.1)
+      source-map: 0.8.0-beta.0
+      stringify-object: 3.3.0
+      strip-comments: 2.0.1
+      tempy: 0.6.0
+      upath: 1.2.0
+      workbox-background-sync: 7.0.0
+      workbox-broadcast-update: 7.0.0
+      workbox-cacheable-response: 7.0.0
+      workbox-core: 7.0.0
+      workbox-expiration: 7.0.0
+      workbox-google-analytics: 7.0.0
+      workbox-navigation-preload: 7.0.0
+      workbox-precaching: 7.0.0
+      workbox-range-requests: 7.0.0
+      workbox-recipes: 7.0.0
+      workbox-routing: 7.0.0
+      workbox-strategies: 7.0.0
+      workbox-streams: 7.0.0
+      workbox-sw: 7.0.0
+      workbox-window: 7.0.0
+    transitivePeerDependencies:
+      - '@types/babel__core'
+      - supports-color
+    dev: true
+
+  /workbox-cacheable-response@7.0.0:
+    resolution: {integrity: sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==}
+    dependencies:
+      workbox-core: 7.0.0
+    dev: true
+
+  /workbox-core@7.0.0:
+    resolution: {integrity: sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==}
+    dev: true
+
+  /workbox-expiration@7.0.0:
+    resolution: {integrity: sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==}
+    dependencies:
+      idb: 7.1.1
+      workbox-core: 7.0.0
+    dev: true
+
+  /workbox-google-analytics@7.0.0:
+    resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==}
+    deprecated: It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained
+    dependencies:
+      workbox-background-sync: 7.0.0
+      workbox-core: 7.0.0
+      workbox-routing: 7.0.0
+      workbox-strategies: 7.0.0
+    dev: true
+
+  /workbox-navigation-preload@7.0.0:
+    resolution: {integrity: sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==}
+    dependencies:
+      workbox-core: 7.0.0
+    dev: true
+
+  /workbox-precaching@7.0.0:
+    resolution: {integrity: sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==}
+    dependencies:
+      workbox-core: 7.0.0
+      workbox-routing: 7.0.0
+      workbox-strategies: 7.0.0
+    dev: true
+
+  /workbox-range-requests@7.0.0:
+    resolution: {integrity: sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==}
+    dependencies:
+      workbox-core: 7.0.0
+    dev: true
+
+  /workbox-recipes@7.0.0:
+    resolution: {integrity: sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==}
+    dependencies:
+      workbox-cacheable-response: 7.0.0
+      workbox-core: 7.0.0
+      workbox-expiration: 7.0.0
+      workbox-precaching: 7.0.0
+      workbox-routing: 7.0.0
+      workbox-strategies: 7.0.0
+    dev: true
+
+  /workbox-routing@7.0.0:
+    resolution: {integrity: sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==}
+    dependencies:
+      workbox-core: 7.0.0
+    dev: true
+
+  /workbox-strategies@7.0.0:
+    resolution: {integrity: sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==}
+    dependencies:
+      workbox-core: 7.0.0
+    dev: true
+
+  /workbox-streams@7.0.0:
+    resolution: {integrity: sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==}
+    dependencies:
+      workbox-core: 7.0.0
+      workbox-routing: 7.0.0
+    dev: true
+
+  /workbox-sw@7.0.0:
+    resolution: {integrity: sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==}
+    dev: true
+
+  /workbox-window@7.0.0:
+    resolution: {integrity: sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==}
+    dependencies:
+      '@types/trusted-types': 2.0.7
+      workbox-core: 7.0.0
+    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
 
-  /wicked-good-xpath@1.3.0:
-    resolution: {integrity: sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==}
+  /wrappy@1.0.2:
+    resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+    dev: true
 
   /xml-js@1.6.11:
     resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
     hasBin: true
     dependencies:
-      sax: 1.4.1
-    dev: false
+      sax: 1.3.0
+    dev: true
 
-  /yoctocolors@2.1.1:
-    resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
-    engines: {node: '>=18'}
+  /y18n@4.0.3:
+    resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
+    dev: true
+
+  /yallist@3.1.1:
+    resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+    dev: true
+
+  /yallist@4.0.0:
+    resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+    dev: true
+
+  /yaml@2.3.4:
+    resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
+    engines: {node: '>= 14'}
+    dev: true
+
+  /yargs-parser@18.1.3:
+    resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
+    engines: {node: '>=6'}
+    dependencies:
+      camelcase: 5.3.1
+      decamelize: 1.2.0
     dev: true
 
-  /zwitch@2.0.4:
-    resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+  /yargs@15.4.1:
+    resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
+    engines: {node: '>=8'}
+    dependencies:
+      cliui: 6.0.0
+      decamelize: 1.2.0
+      find-up: 4.1.0
+      get-caller-file: 2.0.5
+      require-directory: 2.1.1
+      require-main-filename: 2.0.0
+      set-blocking: 2.0.0
+      string-width: 4.2.3
+      which-module: 2.0.1
+      y18n: 4.0.3
+      yargs-parser: 18.1.3
+    dev: true
diff --git a/src/.vuepress/config.ts b/src/.vuepress/config.ts
new file mode 100644
index 0000000000..dc4d1c5095
--- /dev/null
+++ b/src/.vuepress/config.ts
@@ -0,0 +1,65 @@
+import { defineUserConfig } from "vuepress";
+import theme from "./theme.js";
+import { searchProPlugin } from "vuepress-plugin-search-pro";
+import { readmorePlugin } from 'vuepress-plugin-readmore-popular-next'
+
+export default defineUserConfig({
+  base: "/",
+
+  lang: "zh-CN",
+  title: "JavaPark",
+  description: "分享编程学习（侧重 Java）、面试求职、计算机基础、效率工具等方面内容。",
+
+  theme,
+
+  // Enable it with pwa
+  // shouldPrefetch: false,
+  // 搜索
+  plugins: [
+    searchProPlugin({
+      // 索引全部内容
+      indexContent: true,
+      // 为分类和标签添加索引
+      customFields: [
+        {
+          getter: (page) => page.frontmatter.category,
+          formatter: "分类：$content",
+        },
+        {
+          getter: (page) => page.frontmatter.tag,
+          formatter: "标签：$content",
+        },
+      ],
+    }),
+    readmorePlugin({
+      // 已申请的博客 ID
+      blogId: '19397-0379198090489-062',
+      // 已申请的微信公众号名称
+      name: '村雨遥',
+      // 已申请的微信公众号回复关键词
+      keyword: '解锁',
+      // 已申请的微信公众号二维码链接
+      qrcode: 'https://cunyu1943.gitee.io/contact/wechatpublic.png',
+      // 文章内容的 JS 选择器，若使用的不是官方默认主题，则需要根据第三方的主题来设置
+      selector: 'div.theme-hope-content',
+      // 自定义的 JS 资源链接，可用于 CDN 加速
+      // libUrl: 'https://qiniu.techgrow.cn/readmore/dist/readmore.js',
+      // 自定义的 CSS 资源链接，可用于适配不同风格的博客
+      // cssUrl: 'https://qiniu.techgrow.cn/readmore/dist/vuepress2.css',
+      // 文章排除添加引流工具的 URL 规则，支持使用路径、通配符、正则表达式的匹配规则
+      // excludes: { strExp: [], regExp: [] },
+      // 是否反转 URL 排除规则的配置，即只有符合排除规则的文章才会添加引流工具
+      reverse: false,
+      // 是否添加微信公众号引流工具到移动端页面
+      allowMobile: true,
+      // 文章内容的预览高度(例如 300)
+      height: 'auto',
+      // 文章解锁后凭证的有效天数
+      expires: 50,
+      // 定时校验凭证有效性的时间间隔（秒）
+      interval: 60,
+      // 每篇文章随机添加引流工具的概率，有效范围在 0.1 ~ 1 之间，1 则表示所有文章默认都自动添加引流工具
+      random: 1
+    })
+  ],
+});
diff --git a/src/.vuepress/navbar.ts b/src/.vuepress/navbar.ts
new file mode 100644
index 0000000000..fdd9f4cb8b
--- /dev/null
+++ b/src/.vuepress/navbar.ts
@@ -0,0 +1,166 @@
+import { navbar } from "vuepress-theme-hope";
+
+export default navbar([
+  {
+    text: "导读",
+    icon: "iconfont icon-guide",
+    link: "/guide/"
+  },
+
+  {
+    text: "Java",
+    icon: "fa-brands fa-java",
+    link: "/java-tutorial/",
+    // children: [
+    //   {
+    //     text: "Java 基础",
+    //     icon: "iconfont icon-java",
+    //     link: "/java-tutorial/javase/20220701-intro-to-java/"
+    //   },
+    //   {
+    //     text: "MySQL",
+    //     icon: "iconfont icon-mysql",
+    //     link: "/java-tutorial/mysql/20220726-sql-in-10min/"
+    //   },
+    // ]
+  },
+
+  {
+    text: "求职面试",
+    icon: "iconfont icon-interview",
+    link: "/interview/"
+  },
+
+  {
+    text: "框架|中间件",
+    icon: "iconfont icon-framework",
+    link: "/framework/"
+  },
+
+  {
+    text: "计算机知识",
+    icon: "iconfont icon-computer",
+    link: "/cs-wiki/"
+  },
+
+  {
+    text: "基础教程",
+    icon: "iconfont icon-tools",
+    link: "/tutorial/",
+    // children: [
+    //   {
+    //     text: "IDEA 教程",
+    //     icon: "iconfont icon-intellijidea",
+    //     link: "/tutorial/idea/20220202-idea-guide/"
+    //   },
+    //   {
+    //     text: "博客搭建",
+    //     icon: "iconfont icon-blog",
+    //     link: "/tutorial/blog/20220401-hexo/"
+    //   },
+    //   {
+    //     text: "效率工具",
+    //     icon: "iconfont icon-rocket",
+    //     link: "/tutorial/efficiency/20220729-10-amazing-website/"
+    //   },
+    // ]
+  },
+
+  {
+    text: "编程语言",
+    icon: "iconfont icon-order",
+    link: "/program-language/",
+    // children: [
+    //   {
+    //     text: "C 语言",
+    //     icon: "iconfont icon-c",
+    //     link: "/program-language/c/20180308-memory-manage/"
+    //   },
+    //   {
+    //     text: "C++",
+    //     icon: "iconfont icon-CPP",
+    //     link: "/program-language/cpp/20180720-summary/"
+    //   },
+    //   {
+    //     text: "Python",
+    //     icon: "iconfont icon-Python",
+    //     link: "/program-language/python/tutorial/20210331-intro/"
+    //   },
+    // ]
+  },
+
+  {
+    text: "你问我答",
+    icon: "fa-solid fa-circle-question",
+    link: "/QA/20230402-where-exercise-java-basics/"
+  },
+
+  {
+    text: "好物周刊",
+    icon: "fa-solid fa-newspaper",
+    children: [
+      {
+        text: "共建周刊",
+        icon: "fa-solid fa-pen-to-square",
+        link: "https://www.yuque.com/forms/share/38e342f3-3847-455e-8e26-49ea1f1ffd44"
+      },
+      {
+        text: "2024 年刊",
+        icon: "iconfont icon-calendar",
+        link: "/weekly/2024/0101-0105/"
+      },
+      {
+        text: "2023 年刊",
+        icon: "iconfont icon-calendar",
+        link: "/weekly/2023/0415-0421/"
+      },
+    ]
+  },
+
+  {
+    text: "关于",
+    icon: "fa-solid fa-circle-info",
+    link: "/about/"
+  },
+
+  {
+    text: "源码",
+    icon: "iconfont icon-test",
+    children: [
+      { text: "开源项目 - Github", icon: "fa-brands fa-github", link: "https://github.com/cunyu1943" },
+    ],
+  },
+
+  {
+    text: "联系我",
+    icon: "fa-solid fa-address-card",
+    children: [
+      {
+        text: "语雀",
+        icon: "fa-solid fa-crow",
+        link: "https://yuque.com/cunyu1943"
+      },
+      {
+        text: "CSDN",
+        icon: "iconfont icon-csdn",
+        link: "https://cunyu1943.blog.csdn.net"
+      },
+      {
+        text: "掘金",
+        icon: "iconfont icon-juejin",
+        link: "https://juejin.cn/user/747323637904519"
+      },
+      {
+        text: "牛客",
+        icon: "iconfont icon-nowcoder",
+        link: "https://www.nowcoder.com/users/806383223"
+      },
+      {
+        text: "知乎",
+        icon: "iconfont icon-zhihu",
+        link: "https://www.zhihu.com/people/cunyu1943"
+      }
+    ],
+  },
+
+]);
diff --git a/docs/src/public/award/alipay.png b/src/.vuepress/public/award/alipay.png
similarity index 100%
rename from docs/src/public/award/alipay.png
rename to src/.vuepress/public/award/alipay.png
diff --git a/src/.vuepress/public/award/donate.svg b/src/.vuepress/public/award/donate.svg
new file mode 100644
index 0000000000..380514673b
--- /dev/null
+++ b/src/.vuepress/public/award/donate.svg
@@ -0,0 +1,9 @@
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 514 514" width="514" height="514">
+	<title>91692978610_</title>
+	<defs>
+		<image  width="1152" height="1152" id="img1" href="data:image/png;base64,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84MVleyRuixFfa60Nl/VUjHd06AdbNMONI80lrSkROT52Dsf2mmy5aNz694y37oh/rxho5/nQHzMACtuKJklzcseq62a6WrleLsd3/l5tJfzuGSI0mru1v2kVliAkRcM7j+8YKguUBTh84JC0DsRMzrcAbRLAD9BF2BYyf7+/vfffx+zNRABBl/hILxCeDKJQIgvD9RKJpP5+/vDaPn444+j7zG6Iv/xj3+E0fLtt9/et28fhtNAn0bUVBgFnkgpNLLR+6COtqARL/klt/G3go4RYAwYrBgYAcaAwQOE+1WAEVPSosn1pfIDJ+AxaRgeAc7U3NwcHBx85cqVzz///L333nvppZfghjz22GPE42j16tUP6WMqkvVg8Fdzc/NbUUP4lczMzK1btwJ7I76L77zzTmJiIjIwEk8f63xnrV4aCh/Xmy1q9TKBFu8VAaalpYYDcdvV1VVXV1dfXy8SiUjQEbLQCO0hpC1wi0ZHR5uamlLYLMsrV9JjImflQmpWSY31U1O9s+Lykc6U7jyv7izXitCriaZfc02+6Qo26fA35pze4b5jncWG1523/yPh5PZi86M9gcaDURZNXmfjDT8LOPiO77drOZc2V3kYdIZf6Im50hdzZTD2mohlKk6xlmS6KktCp5pS1V2F0z3l1HD37GCzvK2styytJM4/2OLctf1bj29469qm9932fcG5dKrO3XEwOlTKjpewEwWseHlW+mhRAdXZzi/Os/3h+wsH95SlJk7LRfeKAFt+WSO6xWIi9aU1+SXAmPUkpA29JmTtH9YBfqKoqAjGNOjCq1atwu4MO/AVDkLHxx5EBhAi27ClZmZm27Zte/311//+97+vWbMGejSMEklJST09PfBSodyCHbpdC34XShvXg0z3kBAjeJ9nafg9azAdI8AYMFgxMAKMAYMHCPerACPOh6TOwIGInw89g5BuYQYaF+JjFGz8CnRKqVTW1taCGDt37tymTZteeOEFIGrol4giCj0VYR9uWnl5+a0IIoiECxcu4Fz7o48+ikIOPj/88MOOjg74LSBn/4nTEWkLKYE4XpLj5FYQz72luCcEGKWbm9XM6LTQCi2l00gEg9XlJfnZGSUFufyhgYnxUXx8aEjR6ii1Zm5GvUCj57Rzs2rBAC81iePl5JAeG9VWmkeNi6lxgaqnRNzA7SsJ7S/078p0qYk2KvU7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AAAAfFwIMAAAAAAAgApBgAEAAAAAAFQIAgwAAAAAAKBCEGAAAAAAAAAVggADAAAAAACoEAQYAAAAAABAhSDAAAAAAAAAKgQBBgAAAAAAUCEIMAAAAAAAgApBgAEAAAAAAFQIAgwAAAAAAKBCEGAAAAAAAAAVggADAAAAAACoEAQYAAAAAABAhSDAAAAAAAAAKgQBBgAAAAAAUCEIMAAAAAAAgApBgAEAAAAAAFQIAgwAAAAAAKBCEGAAAAAAAAAVggADAAAAAACoEAQYAAAAAABAhSDAAAAAAAAAKgQBBgAAAAAAUCEIMAAAAAAAgApBgAEAAAAAAFQIAgwAAAAAAKBCEGAAAAAAAAAVggADAAAAAACoEAQYAAAAAABAhSDAAAAAAAAAKgQBBgAAAAAAUCEIMAAAAAAAgApBgAEAAAAAAFQIAgwAAAAAAKBCEGAAAAAAAAAVggADAAAAAACoEAQYAAAAAABAhSDAAAAAAAAAKgQBBgAAAAAAUCEIMAAAAAAAgApBgAEAAAAAAFQIAgwAAAAAAKBCEGAAAAAAAAAVggADAAAAAACoEAQYAAAAAABAhSDAAAAAAAAAKgQBBgAAAAAAUCH/HxoMVamWINdgAAAAAElFTkSuQmCC"/>
+	</defs>
+	<style>
+	</style>
+	<use id="Background" href="#img1" x="-319" y="-184"/>
+</svg>
\ No newline at end of file
diff --git a/docs/src/public/award/wechatpay.png b/src/.vuepress/public/award/wechatpay.png
similarity index 100%
rename from docs/src/public/award/wechatpay.png
rename to src/.vuepress/public/award/wechatpay.png
diff --git a/src/.vuepress/public/contact/contact.png b/src/.vuepress/public/contact/contact.png
new file mode 100644
index 0000000000..e5ec18b71f
Binary files /dev/null and b/src/.vuepress/public/contact/contact.png differ
diff --git a/src/.vuepress/public/contact/wechat.png b/src/.vuepress/public/contact/wechat.png
new file mode 100644
index 0000000000..57c26c32cd
Binary files /dev/null and b/src/.vuepress/public/contact/wechat.png differ
diff --git a/src/.vuepress/public/contact/wechatpublic.png b/src/.vuepress/public/contact/wechatpublic.png
new file mode 100644
index 0000000000..f40f9e923d
Binary files /dev/null and b/src/.vuepress/public/contact/wechatpublic.png differ
diff --git a/docs/src/public/logo.png b/src/.vuepress/public/favicon.ico
similarity index 100%
rename from docs/src/public/logo.png
rename to src/.vuepress/public/favicon.ico
diff --git a/src/.vuepress/public/logo.png b/src/.vuepress/public/logo.png
new file mode 100644
index 0000000000..a793b383e4
Binary files /dev/null and b/src/.vuepress/public/logo.png differ
diff --git a/src/.vuepress/public/logo.svg b/src/.vuepress/public/logo.svg
new file mode 100644
index 0000000000..cf9157903d
--- /dev/null
+++ b/src/.vuepress/public/logo.svg
@@ -0,0 +1,143 @@
+<?xml version='1.0' encoding='utf-8'?><!-- Generator: DarwingMaster 1.1.7, SVG Export Plug-In . SVG Version: 6.00 Build 0)--><svg version="1.1" x="0" y="0" viewBox="0 0 1119.60911 699" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <style type="text/css">.st2{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#f2f2f2;fill-opacity:1;fill-rule:nonZero;}
+.st3{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st4{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#42b983;fill-opacity:1;fill-rule:nonZero;}
+.st5{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#42b983;fill-opacity:1;fill-rule:nonZero;}
+.st6{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st7{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#a8a8a8;fill-opacity:1;fill-rule:nonZero;}
+.st8{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#000000;fill-opacity:0.2;fill-rule:nonZero;}
+.st9{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#3f3d56;fill-opacity:1;fill-rule:nonZero;}
+.st10{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#000000;fill-opacity:0.1;fill-rule:nonZero;}
+.st11{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#3f3d56;fill-opacity:1;fill-rule:nonZero;}
+.st12{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#3f3d56;fill-opacity:1;fill-rule:nonZero;}
+.st13{stroke:#2f2e41;stroke-opacity:1;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;fill:none;}
+.st14{stroke:#2f2e41;stroke-opacity:1;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;fill:none;}
+.st15{stroke:#2f2e41;stroke-opacity:1;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;fill:none;}
+.st16{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st17{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#000000;fill-opacity:0.1;fill-rule:nonZero;}
+.st18{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st19{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#3f3d56;fill-opacity:1;fill-rule:nonZero;}
+.st20{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#f2f2f2;fill-opacity:1;fill-rule:nonZero;}
+.st21{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st22{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st23{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st24{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#000000;fill-opacity:0.1;fill-rule:nonZero;}
+.st25{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#f2f2f2;fill-opacity:1;fill-rule:nonZero;}
+.st26{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#f2f2f2;fill-opacity:1;fill-rule:nonZero;}
+.st27{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#000000;fill-opacity:0.1;fill-rule:nonZero;}
+.st28{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st29{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#3f3d56;fill-opacity:1;fill-rule:nonZero;}
+.st30{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#3f3d56;fill-opacity:1;fill-rule:nonZero;}
+.st31{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#3f3d56;fill-opacity:1;fill-rule:nonZero;}
+.st32{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#42b983;fill-opacity:0.4;fill-rule:nonZero;}
+.st33{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#42b983;fill-opacity:0.8;fill-rule:nonZero;}
+.st34{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#42b983;fill-opacity:1;fill-rule:nonZero;}
+.st35{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#42b983;fill-opacity:0.4;fill-rule:nonZero;}
+.st36{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#42b983;fill-opacity:0.8;fill-rule:nonZero;}
+.st37{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#42b983;fill-opacity:1;fill-rule:nonZero;}
+.st38{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#42b983;fill-opacity:0.4;fill-rule:nonZero;}
+.st39{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#42b983;fill-opacity:0.8;fill-rule:nonZero;}
+.st40{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#42b983;fill-opacity:1;fill-rule:nonZero;}
+.st41{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st42{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st43{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st44{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st45{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st46{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#ffffff;fill-opacity:1;fill-rule:nonZero;}
+.st47{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#3f3d56;fill-opacity:1;fill-rule:nonZero;}
+.st48{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#42b983;fill-opacity:1;fill-rule:nonZero;}
+.st49{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st50{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#2f2e41;fill-opacity:1;fill-rule:nonZero;}
+.st51{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#db380e;fill-opacity:1;fill-rule:nonZero;}
+.st52{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#db380e;fill-opacity:1;fill-rule:nonZero;}
+.st53{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#40be73;fill-opacity:1;fill-rule:nonzero;}
+.st54{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#40be73;fill-opacity:1;fill-rule:nonZero;}
+.st55{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#40be73;fill-opacity:1;fill-rule:nonZero;}
+.st56{stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;fill:#ffffff;fill-opacity:1;fill-rule:nonZero;}</style>
+  <defs/>
+  <path class="st2" id="圆13" d="M 292.60911 0 C 410.2447499999999 0 505.60911 95.36436 505.60911 213 C 505.60911 330.63563999999997 410.2447499999999 426 292.60911 426 C 174.97347 426 79.60910999999999 330.63563999999997 79.60910999999999 213 C 79.60910999999999 95.36436 174.97347 0 292.60911 0  Z "/>
+  <path class="st3" id="路径93" d="M 0.04088999999999743 51.14237 C 0.04088999999999743 128.64026 48.65899 191.35055999999997 108.74161999999998 191.35055999999997 "/>
+  <path class="st4" id="路径94" d="M 108.74162 191.35055999999997 C 108.74162 112.98190999999996 162.99662 49.56699999999998 230.04534000000004 49.56699999999998 "/>
+  <path class="st5" id="路径95" d="M 39.42521 58.16767999999999 C 39.42521 131.78244 70.42805999999999 191.35055999999997 108.74162 191.35055999999997 "/>
+  <path class="st6" id="路径96" d="M 108.74162 191.35055999999997 C 108.74162 91.21283999999996 171.45192 10.182679999999976 248.94981 10.182679999999976 "/>
+  <path class="st7" id="路径97" d="M 85.87378999999999 192.33905 C 85.87378999999999 192.33905 101.28934 191.86426 105.9352 188.55604999999997 C 110.58106 185.2478399999999 129.6482 181.29754999999992 130.80073000000002 186.60326999999995 C 131.95326000000003 191.90898999999996 153.96744 212.99147999999997 136.56336000000002 213.1318699999999 C 119.15928000000002 213.2722599999999 96.12401000000004 210.42086999999992 91.48709000000002 207.59637999999995 C 86.85017000000002 204.77189 85.87378999999999 192.33905 85.87378999999999 192.33905  Z "/>
+  <path class="st8" id="路径98" d="M 136.874 211.28489 C 119.46992 211.42531 96.43466999999998 208.57395 91.79774 205.74941 C 88.26648 203.59841 86.85931 195.87996 86.38847999999999 192.31898 C 86.06241 192.33298 85.87385 192.33898 85.87385 192.33898 C 85.87385 192.33898 86.85023000000001 204.77173999999997 91.48716 207.59628 C 96.12409 210.42082 119.15933 213.27216999999996 136.56342 213.13174999999995 C 141.58728000000002 213.0912299999999 143.32262 211.30381999999997 143.22733 208.65648999999996 C 142.52935 210.25599999999997 140.61329 211.25474000000003 136.874 211.28489  Z "/>
+  <path class="st9" id="椭圆14" d="M 198.60911 399.06007 C 301.88547 399.06007 385.60911 410.4500354596 385.60911 424.5 C 385.60911 438.5499645404 301.88547 449.93993 198.60911 449.93993 C 95.33275 449.93993 11.609109999999989 438.5499645404 11.609109999999989 424.5 C 11.609109999999989 410.4500354596 95.33275 399.06007 198.60911 399.06007  Z "/>
+  <path class="st10" id="椭圆15" d="M 198.60911 403.14134 C 285.31707 403.14134 355.60911 412.7040392552 355.60911 424.5 C 355.60911 436.2959607448 285.31707 445.85866 198.60911 445.85866 C 111.90115 445.85866 41.60910999999999 436.2959607448 41.60910999999999 424.5 C 41.60910999999999 412.7040392552 111.90115 403.14134 198.60911 403.14134  Z "/>
+  <path class="st11" id="椭圆16" d="M 836.60911 622 C 992.90435 622 1119.60911 639.23722 1119.60911 660.5 C 1119.60911 681.76278 992.90435 699 836.60911 699 C 680.31387 699 553.60911 681.76278 553.60911 660.5 C 553.60911 639.23722 680.31387 622 836.60911 622  Z "/>
+  <path class="st12" id="椭圆17" d="M 310.60911 622.37279 C 404.49671 622.37279 480.60911 632.7273044612 480.60911 645.5 C 480.60911 658.2726955388 404.49671 668.62721 310.60911 668.62721 C 216.72151 668.62721 140.60911 658.2726955388 140.60911 645.5 C 140.60911 632.7273044612 216.72151 622.37279 310.60911 622.37279  Z "/>
+  <path class="st13" id="路径99" d="M 462.65 626 C 552.65 649 725.65 596 744.65 536 "/>
+  <path class="st14" id="路径100" d="M 309.65 259 C 309.65 259 439.65 223 447.65 339 C 455.65 455 340.65 488 430.65 511 "/>
+  <path class="st15" id="路径101" d="M 184.05233 537.28332 C 184.05233 537.28332 223.12463 526.46332 225.52908 561.32781 C 227.93353 596.1923 193.36957 606.11068 220.41962 613.02347 "/>
+  <path class="st16" id="路径102" d="M 778.74554 563.23988 C 778.74554 563.23988 770.8679999999999 613.53505 770.8679999999999 613.53505 C 770.8679999999999 613.53505 732.0861799999999 634.13789 759.35465 634.7438599999999 C 786.6231200000001 635.3498299999999 915.08789 634.7438599999999 915.08789 634.7438599999999 C 915.08789 634.7438599999999 939.9325 634.7438599999999 900.54471 612.9290799999999 C 900.54471 612.9290799999999 892.66715 560.2100799999998 892.66715 560.2100799999998 C 892.66715 560.2100799999998 778.74554 563.23988 778.74554 563.23988  Z "/>
+  <path class="st17" id="路径103" d="M 753.86906 634.19812 C 760.06206 628.68773 770.86796 622.9461200000001 770.86796 622.9461200000001 C 770.86796 622.9461200000001 778.74552 572.65092 778.74552 572.65092 C 778.74552 572.65092 892.6671200000001 572.75809 892.6671200000001 572.75809 C 892.6671200000001 572.75809 900.5446800000001 622.34009 900.5446800000001 622.34009 C 909.72968 627.4272000000001 915.41958 631.32709 918.7483 634.31827 C 923.80712 633.16405 929.33546 628.87474 900.5446800000001 612.9290599999999 C 900.5446800000001 612.9290599999999 892.6671200000001 560.2100599999999 892.6671200000001 560.2100599999999 C 892.6671200000001 560.2100599999999 778.74552 563.2398899999998 778.74552 563.2398899999998 C 778.74552 563.2398899999998 770.8679999999999 613.53506 770.8679999999999 613.53506 C 770.8679999999999 613.53506 738.27985 630.84968 753.86906 634.19812  Z "/>
+  <path class="st18" id="矩形26" d="M 596.4785899999999 212.68859 C 596.4785899999999 212.68859 1073.64037 212.68859 1073.64037 212.68859 C 1083.6066381504002 212.68859 1091.68605 220.7680018496 1091.68605 230.73427 C 1091.68605 230.73427 1091.68605 552.1628000000001 1091.68605 552.1628000000001 C 1091.68605 562.1290681504 1083.6066381504002 570.20848 1073.64037 570.20848 C 1073.64037 570.20848 596.4785899999999 570.20848 596.4785899999999 570.20848 C 586.5123218496 570.20848 578.43291 562.1290681504 578.43291 552.1628000000001 C 578.43291 552.1628000000001 578.43291 230.73427 578.43291 230.73427 C 578.43291 220.7680018496 586.5123218496 212.68859 596.4785899999999 212.68859  Z "/>
+  <path class="st19" id="矩形27" d="M 595.7029400000002 231.77652 C 595.7029400000002 231.77652 1074.4160200000003 231.77652 1074.4160200000003 231.77652 C 1074.4160200000003 231.77652 1074.4160200000003 499.61346000000026 1074.4160200000003 499.61346000000026 C 1074.4160200000003 499.61346000000026 595.7029400000002 499.61346000000026 595.7029400000002 499.61346000000026 C 595.7029400000002 499.61346000000026 595.7029400000002 231.77652 595.7029400000002 231.77652  Z "/>
+  <path class="st20" id="圆14" d="M 835.05948 220.26316 C 836.7327945124 220.26316 838.08931 221.6196754876 838.08931 223.29299 C 838.08931 224.9663045124 836.7327945124 226.32282 835.05948 226.32282 C 833.3861654876 226.32282 832.0296500000001 224.9663045124 832.0296500000001 223.29299 C 832.0296500000001 221.6196754876 833.3861654876 220.26316 835.05948 220.26316  Z "/>
+  <path class="st21" id="路径104" d="M 1091.72694 520.82226 C 1091.72694 520.82226 1091.72694 552.1628 1091.72694 552.1628 C 1091.7273455899824 555.3864854353108 1090.9216855623483 558.394258702344 1089.3099599170978 561.1861198010998 C 1087.6982342718472 563.9779808998558 1085.4964408998435 566.1797742718577 1082.704579801086 567.7914999171056 C 1079.912718702329 569.4032255623537 1076.9049454352976 570.2088855899851 1073.681259999992 570.2084799999999 C 1073.681259999992 570.2084799999999 596.51949 570.2084799999999 596.51949 570.2084799999999 C 593.2958033738576 570.2088873767618 590.2880286979196 569.4032284605095 587.4961659721861 567.7915032512428 C 584.7043032464526 566.1797780419761 582.5025085053984 563.9779845210442 580.8907817490237 561.1861226884472 C 579.2790549926491 558.3942608558502 578.4733944096412 555.3864866263677 578.4738000000001 552.1628 C 578.4738000000001 552.1628 578.4738000000001 520.82226 578.4738000000001 520.82226 C 578.4738000000001 520.82226 1091.72694 520.82226 1091.72694 520.82226  Z "/>
+  <path class="st22" id="多边形47" d="M 968.978 667.466 C 968.978 667.466 968.978 673.526 968.978 673.526 C 968.978 673.526 642.968 673.526 642.968 673.526 C 642.968 673.526 642.968 668.678 642.968 668.678 C 642.968 668.678 643.417 667.466 643.417 667.466 C 643.417 667.466 651.452 645.651 651.452 645.651 C 651.452 645.651 962.312 645.651 962.312 645.651 C 962.312 645.651 968.978 667.466 968.978 667.466 C 968.978 667.466 968.978 667.466 968.978 667.466  Z "/>
+  <path class="st23" id="路径105" d="M 1094.478 661.53359 C 1093.88417 664.07259 1091.64209 666.75102 1086.57622 669.28391 C 1068.39722 678.3734 1031.43332 666.86005 1031.43332 666.86005 C 1031.43332 666.86005 1002.95292 662.01232 1002.95292 649.28705 C 1003.7534220160436 648.738892552521 1004.585615349377 648.2440292191876 1005.4495 647.80246 C 1013.09244 643.75895 1038.4339900000002 633.78124 1083.3672 648.22494 C 1086.742556702317 649.2844328787229 1089.589576702317 651.1501495453896 1091.9082600000002 653.82209 C 1093.72908 655.95353 1095.15669 658.65715 1094.478 661.53359  Z "/>
+  <path class="st24" id="路径106" d="M 1094.478 661.53359 C 1072.227 670.05959 1052.3937 670.69579 1032.0392900000002 656.55859 C 1021.77422 649.43242 1012.4484 647.66904 1005.4495 647.80241 C 1013.09244 643.7589 1038.4339900000002 633.78119 1083.3672 648.22489 C 1086.742556702317 649.2843828787229 1089.589576702317 651.1500995453896 1091.9082600000002 653.82204 C 1093.72908 655.95353 1095.15669 658.65715 1094.478 661.53359  Z "/>
+  <path class="st25" id="椭圆18" d="M 1066.53846 651.71091 C 1070.8890788368 651.71091 1074.41602 652.7961205992 1074.41602 654.13477 C 1074.41602 655.4734194008 1070.8890788368 656.55863 1066.53846 656.55863 C 1062.1878411632 656.55863 1058.6609 655.4734194008 1058.6609 654.13477 C 1058.6609 652.7961205992 1062.1878411632 651.71091 1066.53846 651.71091  Z "/>
+  <path class="st26" id="圆15" d="M 835.05948 534.1535100000001 C 841.418072938 534.1535100000001 846.57283 539.308267062 846.57283 545.66686 C 846.57283 552.0254529380001 841.418072938 557.18021 835.05948 557.18021 C 828.700887062 557.18021 823.5461300000001 552.0254529380001 823.5461300000001 545.66686 C 823.5461300000001 539.308267062 828.700887062 534.1535100000001 835.05948 534.1535100000001  Z "/>
+  <path class="st27" id="多边形48" d="M 968.978 667.466 C 968.978 667.466 968.978 673.526 968.978 673.526 C 968.978 673.526 642.968 673.526 642.968 673.526 C 642.968 673.526 642.968 668.678 642.968 668.678 C 642.968 668.678 643.417 667.466 643.417 667.466 C 643.417 667.466 968.978 667.466 968.978 667.466 C 968.978 667.466 968.978 667.466 968.978 667.466  Z "/>
+  <path class="st28" id="矩形28" d="M 108.60911 159 C 108.60911 159 316.60911 159 316.60911 159 C 316.60911 159 316.60911 401 316.60911 401 C 316.60911 401 108.60911 401 108.60911 401 C 108.60911 401 108.60911 159 108.60911 159  Z "/>
+  <path class="st29" id="矩形29" d="M 87.60911 135 C 87.60911 135 337.60911 135 337.60911 135 C 337.60911 135 337.60911 221 337.60911 221 C 337.60911 221 87.60911 221 87.60911 221 C 87.60911 221 87.60911 135 87.60911 135  Z "/>
+  <path class="st30" id="矩形30" d="M 87.60911 237 C 87.60911 237 337.60911 237 337.60911 237 C 337.60911 237 337.60911 323 337.60911 323 C 337.60911 323 87.60911 323 87.60911 323 C 87.60911 323 87.60911 237 87.60911 237  Z "/>
+  <path class="st31" id="矩形31" d="M 87.60911 339 C 87.60911 339 337.60911 339 337.60911 339 C 337.60911 339 337.60911 425 337.60911 425 C 337.60911 425 87.60911 425 87.60911 425 C 87.60911 425 87.60911 339 87.60911 339  Z "/>
+  <path class="st32" id="矩形32" d="M 271.60911 150 C 271.60911 150 287.60911 150 287.60911 150 C 287.60911 150 287.60911 166 287.60911 166 C 287.60911 166 271.60911 166 271.60911 166 C 271.60911 166 271.60911 150 271.60911 150  Z "/>
+  <path class="st33" id="矩形33" d="M 294.60911 150 C 294.60911 150 310.60911 150 310.60911 150 C 310.60911 150 310.60911 166 310.60911 166 C 310.60911 166 294.60911 166 294.60911 166 C 294.60911 166 294.60911 150 294.60911 150  Z "/>
+  <path class="st34" id="矩形34" d="M 317.60911 150 C 317.60911 150 333.60911 150 333.60911 150 C 333.60911 150 333.60911 166 333.60911 166 C 333.60911 166 317.60911 166 317.60911 166 C 317.60911 166 317.60911 150 317.60911 150  Z "/>
+  <path class="st35" id="矩形35" d="M 271.60911 251 C 271.60911 251 287.60911 251 287.60911 251 C 287.60911 251 287.60911 267 287.60911 267 C 287.60911 267 271.60911 267 271.60911 267 C 271.60911 267 271.60911 251 271.60911 251  Z "/>
+  <path class="st36" id="矩形36" d="M 294.60911 251 C 294.60911 251 310.60911 251 310.60911 251 C 310.60911 251 310.60911 267 310.60911 267 C 310.60911 267 294.60911 267 294.60911 267 C 294.60911 267 294.60911 251 294.60911 251  Z "/>
+  <path class="st37" id="矩形37" d="M 317.60911 251 C 317.60911 251 333.60911 251 333.60911 251 C 333.60911 251 333.60911 267 333.60911 267 C 333.60911 267 317.60911 267 317.60911 267 C 317.60911 267 317.60911 251 317.60911 251  Z "/>
+  <path class="st38" id="矩形38" d="M 271.60911 352 C 271.60911 352 287.60911 352 287.60911 352 C 287.60911 352 287.60911 368 287.60911 368 C 287.60911 368 271.60911 368 271.60911 368 C 271.60911 368 271.60911 352 271.60911 352  Z "/>
+  <path class="st39" id="矩形39" d="M 294.60911 352 C 294.60911 352 310.60911 352 310.60911 352 C 310.60911 352 310.60911 368 310.60911 368 C 310.60911 368 294.60911 368 294.60911 368 C 294.60911 368 294.60911 352 294.60911 352  Z "/>
+  <path class="st40" id="矩形40" d="M 317.60911 352 C 317.60911 352 333.60911 352 333.60911 352 C 333.60911 352 333.60911 368 333.60911 368 C 333.60911 368 317.60911 368 317.60911 368 C 317.60911 368 317.60911 352 317.60911 352  Z "/>
+  <path class="st41" id="圆16" d="M 316.60911 459 C 360.23922999999996 459 395.60911 494.36988 395.60911 538 C 395.60911 581.63012 360.23922999999996 617 316.60911 617 C 272.97899 617 237.60911 581.63012 237.60911 538 C 237.60911 494.36988 272.97899 459 316.60911 459  Z "/>
+  <path class="st42" id="矩形41" d="M 280.60911 600 C 280.60911 600 304.60911 600 304.60911 600 C 304.60911 600 304.60911 643 304.60911 643 C 304.60911 643 280.60911 643 280.60911 643 C 280.60911 643 280.60911 600 280.60911 600  Z "/>
+  <path class="st43" id="矩形42" d="M 328.60911 600 C 328.60911 600 352.60911 600 352.60911 600 C 352.60911 600 352.60911 643 352.60911 643 C 352.60911 643 328.60911 643 328.60911 643 C 328.60911 643 328.60911 600 328.60911 600  Z "/>
+  <path class="st44" id="椭圆19" d="M 300.60911 636 C 311.65470999999997 636 320.60911 639.3579 320.60911 643.5 C 320.60911 647.6421 311.65470999999997 651 300.60911 651 C 289.56351 651 280.60911 647.6421 280.60911 643.5 C 280.60911 639.3579 289.56351 636 300.60911 636  Z "/>
+  <path class="st45" id="椭圆20" d="M 348.60911 635 C 359.65470999999997 635 368.60911 638.3579 368.60911 642.5 C 368.60911 646.6421 359.65470999999997 650 348.60911 650 C 337.56351 650 328.60911 646.6421 328.60911 642.5 C 328.60911 638.3579 337.56351 635 348.60911 635  Z "/>
+  <path class="st46" id="圆17" d="M 318.60911 491 C 333.52067 491 345.60911 503.08844 345.60911 518 C 345.60911 532.91156 333.52067 545 318.60911 545 C 303.69755 545 291.60911 532.91156 291.60911 518 C 291.60911 503.08844 303.69755 491 318.60911 491  Z "/>
+  <path class="st47" id="圆18" d="M 318.60911 509 C 323.57963 509 327.60911 513.02948 327.60911 518 C 327.60911 522.97052 323.57963 527 318.60911 527 C 313.63858999999997 527 309.60911 522.97052 309.60911 518 C 309.60911 513.02948 313.63858999999997 509 318.60911 509  Z "/>
+  <path class="st48" id="路径107" d="M 240.01733 464.53228 C 233.63843999999995 435.9647 254.02917999999997 407.09836 285.56132999999994 400.05751 C 317.09347999999994 393.01665999999994 347.82642999999996 410.46751 354.20532999999995 439.03511 C 360.58422999999993 467.6027100000001 339.6867199999999 478.1389 308.15457999999995 485.17975 C 276.62244 492.2206 246.39622 493.09986 240.01733 464.53228  Z "/>
+  <path class="st49" id="椭圆21" d="M 380.9815955919182 499.4132573825571 C 401.0369114373136 490.8294850646929 419.4798065828573 488.9748298167795 422.1745178324786 495.27081289065745 C 424.8692290820999 501.56679596453546 410.79540803187194 513.6294527400676 390.74009218647655 522.2132250579318 C 370.68477634108126 530.7969973757962 352.24188119553753 532.6516526237094 349.54716994591627 526.3556695498314 C 346.8524586962949 520.0596864759535 360.9262797465228 507.9970297004215 380.9815955919182 499.4132573825571  Z "/>
+  <path class="st50" id="椭圆22" d="M 232.9746324998295 552.4228551489566 C 253.0299483452249 543.8390828310922 271.4728434907685 541.984427583179 274.1675547403899 548.2804106570568 C 276.8622659900113 554.5763937309348 262.7884449397831 566.6390505064669 242.73312909438783 575.2228228243313 C 222.67781324899255 583.8065951421955 204.23491810344888 585.6612503901089 201.5402068538275 579.3652673162309 C 198.84549560420615 573.069284242353 212.91931665443423 561.0066274668209 232.9746324998295 552.4228551489566  Z "/>
+  <g id="图层5">
+    <g id="图层4">
+      <path class="st51" id="路径109" d="M 822.9554946468261 269.7501289006101 C 817.4943708128047 273.97153446112145 811.3049585602737 278.756166248026 807.9885341893005 286.67203104535486 C 802.2282465023418 300.48248912525224 819.7754945422157 315.54675975692845 820.5254814568495 316.181277107183 C 820.7054634831188 316.33364689607924 820.9090231938661 316.4072655337846 821.1361605890913 316.4021330202989 C 821.363297984317 316.39700050681313 821.5639325661565 316.31424848684185 821.7380643346107 316.153876960385 C 821.9121974653447 315.99360839257884 822.0215480566799 315.7910866650371 822.066116108617 315.54631177775997 C 822.1106841605546 315.3015368904829 822.0806642652001 315.06836171581926 821.9760564225542 314.84678625377 C 821.9125764763555 314.7123223754274 815.6139786424926 301.26593162348405 815.8480466608014 291.6195417011437 C 815.9309169219179 288.259719957995 820.2090049752543 284.44830251684465 824.7380121085671 280.41311672389656 C 828.8861394492678 276.7171352214639 833.5882737925192 272.52820389961255 836.3393801727611 267.6278824630548 C 842.3789797153298 256.84134007795734 835.6662616479264 246.23492852481814 835.5977033106487 246.12887963701718 C 835.4644942335158 245.92321107918195 835.2871770732302 245.78680140645892 835.0657518297915 245.71965061884742 C 834.8443265863534 245.6524998312358 834.6284526539603 245.66966794348815 834.4181300326115 245.77115495560463 C 834.2079036033577 245.87296277088814 834.0504874674655 246.03626415237358 833.945881624938 246.26105910006112 C 833.8412757824101 246.48585404774815 833.8129456969699 246.7217159548332 833.8608913686187 246.96864482131627 C 833.8745106534241 247.03892122829066 835.1798896178359 254.0528630574392 831.5474505630975 261.27915637312543 C 830.0511700776813 264.2652698996118 826.7631385977634 266.8068915074449 822.9554946468256 269.7501289006101 C 822.9554946468256 269.7501289006101 822.9554946468261 269.7501289006101 822.9554946468261 269.7501289006101  Z "/>
+      <path class="st52" id="路径110" d="M 845.9636356795149 274.5065992810529 C 846.1560371461162 274.34704101054535 846.2773660410157 274.13771991898733 846.3276223642149 273.87863600637877 C 846.3778786874137 273.6195520937702 846.3447759658476 273.37404520097164 846.228314199517 273.14211532798294 C 846.1118524331858 272.9101854549947 845.9405037478634 272.74853392725817 845.7142681435496 272.6571607447754 C 845.4880325392355 272.5657875622922 845.2622192284159 272.5670312901204 845.0368282110908 272.6608919282594 C 844.1090973778488 273.0485538658291 822.3188483397829 282.280135414738 822.3188482243627 293.4342970808922 C 822.3188482243627 301.1233492489045 825.3072542843547 305.1851740558427 827.4893493300135 308.1514985098961 C 828.3452901645354 309.3149918713322 829.0841969321926 310.3196656120029 829.327729209045 311.17744389218313 C 830.0133128126621 313.64929638805796 828.3891490700307 318.1170500662389 827.7061046042429 319.6301494859948 C 827.6074566452642 319.8478776198725 827.5799352772416 320.0759724022158 827.6235405001737 320.3144338330246 C 827.6671457231052 320.5528952638332 827.7727106465101 320.75159288456166 827.9402352703869 320.9105266952092 C 828.1077598942636 321.0694605058568 828.3020264218222 321.15521870989426 828.5230348530615 321.16780130732195 C 828.7440432843009 321.18038390474976 828.9453322105022 321.1171457240754 829.126901631666 320.978086765299 C 829.5015488271763 320.69190691868465 838.2834830150555 313.8677368102019 836.7084872947833 305.64590309382584 C 836.121701533713 302.5207588921511 834.7244497320487 300.2374095622628 833.4915534053921 298.2224806940433 C 831.5816143688448 295.1006347345352 830.2021368782473 292.8457003951885 832.294898224482 288.6808711048244 C 834.7468408672065 283.8229185065708 845.8512184367416 274.5989481588826 845.9636356795149 274.5065992810529 C 845.9636356795149 274.5065992810529 845.9636356795149 274.5065992810529 845.9636356795149 274.5065992810529  Z "/>
+      <path class="st53" id="复合路径6" d="M 789.2427843543019 321.3454522085643 C 788.8692913648143 322.57465530698414 789.0456502361955 323.79396380576014 789.7522399277425 324.8727196174432 C 792.114387188634 328.47711350170925 800.4815086193582 330.4615976919001 813.3132338723794 330.46159781875537 C 813.3132338723794 330.46159781875537 813.314849645391 330.46159781875537 813.314849645391 330.46159781875537 C 815.0535082016363 330.46159781875537 816.8891181016345 330.42404936137723 818.7692793153215 330.34996729036493 C 839.2848505766545 329.54293018251747 846.8941366072121 322.5183326209169 847.2080739509777 322.21972131901066 C 847.3785645227817 322.05692448761954 847.4843285224413 321.85348072165175 847.5253659499576 321.6093900211074 C 847.5664033774739 321.36529932056305 847.5337721224682 321.13374937577345 847.4274721849392 320.9147401867387 C 847.3211722474102 320.695730997704 847.1643665260148 320.5369849598294 846.9570550207529 320.4385020731148 C 846.7497435154903 320.34001918640035 846.5370996808164 320.32325900366743 846.3191235167319 320.3882215249157 C 839.0937182144451 322.55638862702244 825.6020321544069 323.32613098842756 816.243930785445 323.32613098842756 C 805.7725061790995 323.32613098842756 800.4397272847032 322.497021409725 799.1341174790871 321.88483011440564 C 799.8040042270584 320.87381372719375 803.9359730297041 319.0684455252175 809.0561517915526 317.9615285607844 C 809.3004985527296 317.90833096606366 809.4969570670742 317.7718593937334 809.6455273345855 317.55211384379425 C 809.7940976020972 317.3323682938544 809.856305769185 317.0862542175597 809.8321518358489 316.81377161490997 C 809.8079979025118 316.5412890122599 809.7037367871171 316.31300015615193 809.5193684896635 316.12890504658617 C 809.3350001922098 315.9448099370203 809.1182688475237 315.8525819639077 808.8691744556045 315.85222112724796 C 805.8678416344204 315.85222112724796 790.8161641861425 316.11708963581486 789.2427843543019 321.3454522085643 C 789.2427843543019 321.3454522085643 789.2427843543019 321.3454522085643 789.2427843543019 321.3454522085643  Z M 857.8920986898709 314.1102792638326 C 853.6606395210645 314.1102792638326 849.6480130819075 316.4413252348238 849.4790408982301 316.54001663233964 C 849.2835685767374 316.65543209537907 849.1409707779104 316.82466529484117 849.0512475017488 317.04771623072634 C 848.9615242255863 317.27076716661156 848.9436032384567 317.5005816498282 848.9974845403599 317.7371596803771 C 849.051365842262 317.97373771092583 849.1656827874656 318.16717146241643 849.3404353759706 318.3174609348495 C 849.515187964476 318.4677504072824 849.713510888764 318.5431909623147 849.9354041488348 318.5437825999463 C 850.0251994152469 318.5437825999463 858.9615630217596 318.62420719064505 859.7708748563314 324.2359188687652 C 860.4878522866617 329.0771269258168 851.315574047626 336.921193177412 847.7207611858614 339.53537446378647 C 847.4888682666456 339.5894761619574 847.3004281118501 339.71959399155173 847.1554407214733 339.925727952569 C 847.010453331097 340.1318619135865 846.9433447163843 340.3650672664801 846.9541148773335 340.6253440112499 C 846.9648850382831 340.8856207560196 847.0509766926311 341.11116841388946 847.212389840379 341.3019869848589 C 847.3738029881262 341.4928055558284 847.5722114629431 341.60358680824675 847.8076152648296 341.6343307421138 C 848.043019066716 341.66507467598126 848.2595235836698 341.6084814081131 848.4571288156899 341.46455093850955 C 849.3102995557576 341.26386990131107 869.326110343399 336.416065486782 867.2098036559844 323.6077440381962 C 865.9187364999917 315.75809627286736 861.4298949283232 314.1102792638326 857.8920986898709 314.1102792638326  Z M 844.1654213621275 337.9679819185955 C 844.2001784868097 337.76278552195254 844.1816768633246 337.5635638219925 844.1099164916716 337.3703168187153 C 844.0381561200195 337.17706981543813 843.9245424744862 337.02051186659025 843.7690755550739 336.90064297217185 C 843.7690755550739 336.90064297217185 838.969759142286 333.2059300244186 838.969759142286 333.2059300244186 C 838.852673604899 333.11611554150295 838.7238361194778 333.0575078622851 838.5832466860231 333.0301069867647 C 838.4426572525674 333.0027061112444 838.3033399764223 333.00905043708406 838.1652948575893 333.0491399642843 C 838.1152033549916 333.0630938120468 833.0963618043612 334.513274315114 825.8097848525006 335.4025121170665 C 822.9178683384316 335.7589683706554 819.6787741550884 335.947217825706 816.4419882683694 335.94721769885064 C 809.1572580461453 335.94721769885064 804.3941830099453 335.0064777186131 803.7005200795898 334.3163989419538 C 803.6086472423373 334.12256797316894 803.6377326570051 334.03453218124935 803.6541220362651 333.98556698546747 C 803.7801586792644 333.6004420304014 804.4555855007236 333.1427573967933 804.890942547978 332.9616115942364 C 805.1324904638121 332.8645990467263 805.3106288859912 332.6896113663538 805.4253578145142 332.43664855311886 C 805.5400867430384 332.1836857398837 805.5599932098903 331.9220094252116 805.4850772150719 331.65161960910245 C 805.4101612202534 331.38122979299317 805.2609348855052 331.1761596487228 805.0373982108263 331.0364091762913 C 804.8138615361484 330.89665870385966 804.577219228167 330.8604918108721 804.3274712868836 330.92790849732785 C 799.5131505420628 332.2048082368501 797.1590824924886 333.9903873663938 797.3303630882115 336.2349198110803 C 797.6346052168078 340.2145440507689 806.0213476882356 342.257126903578 813.1114829301825 342.79701210443574 C 814.1310866006777 342.87363115795154 815.2337913734947 342.91244804315346 816.3882034219198 342.9124481700087 C 816.3882034219198 342.9124481700087 816.3900501515564 342.9124481700087 816.3900501515564 342.9124481700087 C 828.1797804835048 342.9124481700087 843.294014513164 338.8468178258878 843.44498142915 338.8054637044713 C 843.629532636475 338.75588878485803 843.7870692449761 338.65523809152046 843.917591254653 338.5035116244594 C 844.0481132643306 338.35178515739807 844.130723300155 338.1732752554433 844.1654213621275 337.9679819185955 C 844.1654213621275 337.9679819185955 844.1654213621275 337.9679819185955 844.1654213621275 337.9679819185955  Z M 807.9829941158127 346.50872343118215 C 808.1646704285263 346.37873693018196 808.2922028139814 346.2016490941602 808.3655912721779 345.9774599231188 C 808.4389797303737 345.7532707520768 808.4433317727313 345.5274742480861 808.3786473992525 345.3000704111471 C 808.2500716184239 344.84517647097874 807.8629592287106 344.54631145813596 807.4280637484444 344.55265410467786 C 806.7828764322547 344.57142833336655 801.1149232649575 344.8525339612637 800.7181157754956 348.81871190191686 C 800.5980808883928 350.0040238964165 800.9069398410799 351.08709266715414 801.6366131913976 352.0372195714534 C 803.6716655061264 354.68793447146305 809.1651065316784 356.2634455128915 818.4278725607392 356.853564591066 C 819.5236522128416 356.92587068552746 820.636744609021 356.96215058822605 821.7366792873831 356.9621504613706 C 833.5127903345268 356.9621504613706 841.4438620789629 352.90971270534897 841.7760354162042 352.73719307461175 C 841.994972875426 352.6235052780447 842.1529289543481 352.4447321559884 842.2499036529705 352.2008737084443 C 842.3468783515929 351.9570152609009 842.3589707551555 351.7081741749729 842.2861808636587 351.4543504506613 C 842.213390972161 351.20052672634955 842.0736589804883 351.00427914738935 841.8669848886393 350.86560771378004 C 841.8669848886393 350.86560771378004 835.8017625494706 346.7961717056206 835.8017625494706 346.7961717056206 C 835.5835436960244 346.65053322971164 835.3493987691218 346.6059656478666 835.0993277687639 346.6624689600856 C 835.0610089367563 346.67134858913073 831.209967878152 347.54916965267944 825.3982037567891 348.41633498377695 C 824.2984999196316 348.58073611827626 822.921330841079 348.66420524020555 821.3054771509692 348.66420524020555 C 815.4999456267086 348.66420524020555 809.042532506747 347.62172945807674 807.8040959911812 346.93900791799194 C 807.7860907234902 346.811647818999 807.8089435410567 346.64978366700245 807.9829941158127 346.50872343118215 C 807.9829941158127 346.50872343118215 807.9829941158127 346.50872343118215 807.9829941158127 346.50872343118215  Z "/>
+      <path class="st54" id="路径115" d="M 816.24831665291 369.1978586326466 C 843.2224552402273 369.1727417574159 857.6998120062191 363.9004880807472 860.4887755360592 360.5827814649668 C 861.4760621304434 359.40913991980614 861.582708458524 358.29790986946324 861.4989149480095 357.57205848512154 C 861.2916240477451 355.78597180685114 859.8112711437589 354.69250126830855 859.6434532815249 354.5737670874247 C 859.2385664653241 354.28758724080996 858.6951780427618 354.3624304446299 858.3793939693599 354.7627776752832 C 858.0643025349916 355.16312490593566 858.0569157318669 355.74816976539245 858.3731613722575 356.1482632851094 C 858.5432876465374 356.38877605125316 858.6416239220969 356.7914066803292 858.1441718604501 357.33864949832736 C 857.0292328500549 358.48311492013875 845.7840451466916 361.9571041741809 827.0606864468486 363.0008485109891 C 824.4958648789426 363.1472365496077 821.80569930707 363.22182604249167 819.0654422326004 363.22233333750796 C 802.3014215482899 363.22233333750796 790.0327059893752 360.69847111462065 788.4221615315496 359.2279942441048 C 789.042880141741 358.24767624585746 793.3826016424803 356.6815522553453 797.9977106983536 355.79561269555904 C 798.2620875671877 355.75066994496814 798.4732899876316 355.6095772461401 798.6313179596864 355.37233459907634 C 798.7893459317413 355.1350919520118 798.8479141351861 354.87118611748184 798.807022570021 354.5806170954867 C 798.7661310048552 354.29004807349094 798.6377565329192 354.0579215580049 798.4218991542118 353.8842375490276 C 798.2060417755043 353.71055354005046 797.9659246508717 353.64618290473385 797.7015477803138 353.69112564307835 C 797.5713561110538 353.71066100457506 797.1295355100723 353.73958341698847 796.6180023657907 353.77408734313605 C 789.0031762617449 354.28505013158014 780.2034677628001 355.4239341665131 779.7443345331619 359.7361663392393 C 779.6049094465612 361.05010698741194 779.9601664425733 362.24303018313384 780.8006412626535 363.28119300620784 C 782.8571613477216 365.8207849265541 788.7681851094605 369.19735121090406 816.2473934027528 369.19735121090406 C 816.2473934027528 369.19735121090406 816.2483166521504 369.19785863277593 816.2483166521504 369.19785863277593 C 816.2483166521504 369.19785863277593 816.24831665291 369.1978586326466 816.24831665291 369.1978586326466  Z "/>
+      <path class="st55" id="路径116" d="M 865.78692905772 361.5176862205351 C 865.5967194562019 361.42077843731136 865.3987624803686 361.3945776180469 865.1930581302192 361.4390837627417 C 864.987353780069 361.4835899074363 864.8132027366964 361.5902999299967 864.6706050000973 361.7592138304223 C 864.6311319620673 361.80614933871686 860.5755699822325 366.46697285287485 848.3818761989016 369.2039475682522 C 843.7136748201931 370.2319622076017 834.9511309472321 370.75332701756224 822.3375460156681 370.75332701756224 C 809.7004157429241 370.75332701756224 797.6754633020657 370.20684545922694 797.5556592561677 370.2012638186375 C 797.0533595292262 370.1743710937112 796.6237732812436 370.5757331681074 796.5554457851708 371.1191703220677 C 796.5212446058338 371.39074660454463 796.5745287695744 371.6397046357916 796.7152982763937 371.8660444158106 C 796.8560677832128 372.0923841958288 797.0477778136722 372.23734622066604 797.2904283677722 372.3009304903211 C 797.4155416459535 372.3334048558369 810.0175847481328 375.578297955284 827.2481254652062 375.578297955284 C 835.5122939117025 375.578297955284 843.5541670104805 374.84077612160337 851.1507570056301 373.3850139779468 C 865.3150997926733 370.65590404787076 866.3067723699436 362.9366610396212 866.3420902662926 362.60938090938123 C 866.3667718345771 362.38058654721624 866.3279757416215 362.1656314448156 866.2257019874287 361.96451560217855 C 866.1234282332352 361.76339975954176 865.977170589999 361.6144566323272 865.78692905772 361.5176862205351 C 865.78692905772 361.5176862205351 865.78692905772 361.5176862205351 865.78692905772 361.5176862205351  Z "/>
+    </g>
+  </g>
+  <path class="st56" id="路径108" d="M 362.65 561 C 362.65 568.732 342.74138999999997 584 320.65 584 C 298.55861 584 277.65 569.732 277.65 562 C 277.65 554.268 298.55861 556 320.65 556 C 342.74138999999997 556 362.65 553.268 362.65 561  Z "/>
+  <g id="文本1">
+    <text transform="matrix(1.1045780181884766 0 0 1 681.088262271881 386.5375)" opacity="1" id="文本1" text-anchor="start" dominant-baseline="auto">
+      <tspan x="2" y="76.85" font-family="Segoe Print" font-size="60" fill="#42b983" font-style="normal" font-weight="normal">J</tspan>
+    </text>
+    <text transform="matrix(1.1045780181884766 0 0 1 720.4112397193909 386.5375)" opacity="1" id="文本2" text-anchor="start" dominant-baseline="auto">
+      <tspan x="2" y="76.85" font-family="Segoe Print" font-size="60" fill="#42b983" font-style="normal" font-weight="normal">a</tspan>
+    </text>
+    <text transform="matrix(1.1045780181884766 0 0 1 759.1819281578064 386.5375)" opacity="1" id="文本3" text-anchor="start" dominant-baseline="auto">
+      <tspan x="2" y="76.85" font-family="Segoe Print" font-size="60" fill="#42b983" font-style="normal" font-weight="normal">v</tspan>
+    </text>
+    <text transform="matrix(1.1045780181884766 0 0 1 795.1911715507507 386.5375)" opacity="1" id="文本4" text-anchor="start" dominant-baseline="auto">
+      <tspan x="2" y="76.85" font-family="Segoe Print" font-size="60" fill="#42b983" font-style="normal" font-weight="normal">a</tspan>
+    </text>
+    <text transform="matrix(1.1045780181884766 0 0 1 833.9618599891662 386.5375)" opacity="1" id="文本5" text-anchor="start" dominant-baseline="auto">
+      <tspan x="2" y="76.85" font-family="Segoe Print" font-size="60" fill="#42b983" font-style="normal" font-weight="normal">P</tspan>
+    </text>
+    <text transform="matrix(1.1045780181884766 0 0 1 880.6302812576293 386.5375)" opacity="1" id="文本6" text-anchor="start" dominant-baseline="auto">
+      <tspan x="2" y="76.85" font-family="Segoe Print" font-size="60" fill="#42b983" font-style="normal" font-weight="normal">a</tspan>
+    </text>
+    <text transform="matrix(1.1045780181884766 0 0 1 919.4009696960449 386.5375)" opacity="1" id="文本7" text-anchor="start" dominant-baseline="auto">
+      <tspan x="2" y="76.85" font-family="Segoe Print" font-size="60" fill="#42b983" font-style="normal" font-weight="normal">r</tspan>
+    </text>
+    <text transform="matrix(1.1045780181884766 0 0 1 952.9801414489746 386.5375)" opacity="1" id="文本8" text-anchor="start" dominant-baseline="auto">
+      <tspan x="2" y="76.85" font-family="Segoe Print" font-size="60" fill="#42b983" font-style="normal" font-weight="normal">k</tspan>
+    </text>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/src/.vuepress/public/map.png b/src/.vuepress/public/map.png
new file mode 100644
index 0000000000..ebee6efbd2
Binary files /dev/null and b/src/.vuepress/public/map.png differ
diff --git a/src/.vuepress/sidebar.ts b/src/.vuepress/sidebar.ts
new file mode 100644
index 0000000000..f9ded8435f
--- /dev/null
+++ b/src/.vuepress/sidebar.ts
@@ -0,0 +1,13 @@
+import { sidebar } from "vuepress-theme-hope";
+
+export default sidebar({
+  "/weekly/": "structure",
+  "/java-tutorial/": "structure",
+  "/program-language/": "structure",
+  "/tutorial/": "structure",
+  "/QA/": "structure",
+  "/about/": "structure",
+  "/cs-wiki/": "structure",
+  "/interview/": "structure",
+  "/framework/": "structure",
+});
diff --git a/src/.vuepress/styles/config.scss b/src/.vuepress/styles/config.scss
new file mode 100644
index 0000000000..540a27f25e
--- /dev/null
+++ b/src/.vuepress/styles/config.scss
@@ -0,0 +1,5 @@
+// you can change config here
+$theme-colors: #2196f3, #f26d6d, #fb9b5f, #c0392b, #d35400, #f39c12, #27ae60,
+  #16a085, #2980b9, #8e44ad, #2c3e50, #7f8c8d;
+$colors: #c0392b, #d35400, #f39c12, #27ae60, #16a085, #2980b9, #8e44ad, #2c3e50,
+  #7f8c8d !default;
diff --git a/src/.vuepress/styles/index.scss b/src/.vuepress/styles/index.scss
new file mode 100644
index 0000000000..2bd8de47ee
--- /dev/null
+++ b/src/.vuepress/styles/index.scss
@@ -0,0 +1,8 @@
+// place your custom styles here
+@font-face {
+    font-family: lxgw-wenkai-screen;
+    src: url("https://cdnjs.cloudflare.com/ajax/libs/lxgw-wenkai-screen-webfont/1.7.0/lxgwwenkaigbscreenr.min.css");
+
+    font-family: han-serif;
+    src: url("https://cdn.jsdelivr.net/npm/cn-fontsource-source-han-serif-sc-vf-regular@1.0/font.min.css");
+}
\ No newline at end of file
diff --git a/src/.vuepress/styles/palette.scss b/src/.vuepress/styles/palette.scss
new file mode 100644
index 0000000000..1e96179c5d
--- /dev/null
+++ b/src/.vuepress/styles/palette.scss
@@ -0,0 +1,6 @@
+// you can change colors here
+$theme-color: #27ae60, #c0392b, #d35400, #f39c12, #16a085, #2980b9, #8e44ad,
+  #2c3e50, #7f8c8d !default;
+
+$font-family: '"lxgw-wenkai-screen", han-serif, -apple-system, "PingFang SC", sans-serif';
+$font-family-heading: "lxgw-wenkai-screen";
diff --git a/src/.vuepress/theme.ts b/src/.vuepress/theme.ts
new file mode 100644
index 0000000000..09aca97b1d
--- /dev/null
+++ b/src/.vuepress/theme.ts
@@ -0,0 +1,242 @@
+import { hopeTheme } from "vuepress-theme-hope";
+import navbar from "./navbar.js";
+import sidebar from "./sidebar.js";
+
+export default hopeTheme({
+  breadcrumb: true,
+  hostname: "https://cunyu1943.github.io",
+  sidebarSorter: ["date", "order", "filename", "title"],
+
+  author: {
+    name: "村雨遥",
+    url: "https://cunyu1943.github.io",
+    email: "747731461@qq.com",
+  },
+
+  iconAssets: ["iconify","fontawesome","fontawesome-with-brands", "//at.alicdn.com/t/c/font_3871871_99xoxcxn6bo.css"],
+  favicon: "/logo.svg",
+  logo: "/logo.svg",
+
+  // repo: "cunyu1943/JavaPark",
+
+  docsDir: "src",
+
+  fullscreen: true,
+
+  // navbar
+  navbar,
+
+  // sidebar
+  sidebar,
+
+  footer: "All rights reserved.",
+
+  displayFooter: true,
+
+  // encrypt: {
+  //   config: {
+  //     "/demo/encrypt.html": ["1234"],
+  //   },
+  // },
+
+  // page meta
+  metaLocales: {
+    editLink: "在 GitHub 上编辑此页",
+  },
+
+  // blog: {
+  //   name: "村雨遥",
+  //   avatar: "/logo.svg",
+  //   description: "不要哀求，学会争取。若是如此，终有所获。",
+  //   medias: {
+  //     Github: "https://github.com/cunyu1943",
+  //     Gitee: "https://gitee.com/cunyu1943",
+  //   },
+  // },
+
+  plugins: {
+    blog: false,
+    // You should generate and use your own comment service
+    // comment: {
+    //   provider: "Giscus",
+    //   repo: "cunyu1943/JavaPark",
+    //   repoId: "R_kgDOHI1mog",
+    //   category: "Announcements",
+    //   categoryId: "DIC_kwDOHI1mos4CUBUV",
+    // },
+
+    // 版权信息
+    copyright: {
+      global: true,
+      triggerLength: 100,
+      license: "著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处",
+    },
+
+    // feed 插件
+    feed: {
+      rss: true,
+      atom: true,
+      json: true,
+    },
+
+    components: {
+      componentOptions: {
+        share: {
+          services: ["qq", "weibo", "email", "douban", "evernote", "facebook", "twitter", "whatsapp", "reddit", "telegram", "skype", "buffer"],
+        },
+      },
+      rootComponents: {
+        notice: [
+          {
+            showOnce: true,
+            fullscreen: true,
+            confirm: true,
+            path: "/",
+            title: "🎉🎉🎉",
+            content:
+              '<b><center>扫码添加微信/关注公众号，及时获取最新资讯</br><img src="/contact/contact.png" width="180"></br>鼓励/支持/赞赏我</br><img src="/award/donate.svg" width="100"></b></center>',
+            actions: [
+              {
+                text: "已关注，开卷 🔜",
+                link: "/",
+                type: "primary",
+              },
+              {
+                text: "查看合辑",
+                link: "https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIyNTg2MjkzNw==&action=getalbum&album_id=2501145320567963650&scene=173&from_msgid=2247496990&from_itemidx=1&count=3&nolastread=1#wechat_redirect",
+                // type: "primary",
+              }
+            ],
+          },
+        ],
+      },
+      // components: ["ArtPlayer", "AudioPlayer", "Badge", "BiliBili", "CodePen", "FontIcon", "PDF", "Replit", "Share", "StackBlitz", "SiteInfo", "XiGua", "YouTube", "VideoPlayer"],
+    },
+
+    // All features are enabled for demo, only preserve features you need here
+    mdEnhance: {
+      align: true,
+      attrs: true,
+      component: true,
+
+      // install chart.js before enabling it
+      // chart: true,
+
+      codetabs: true,
+      demo: true,
+
+      // install echarts before enabling it
+      // echarts: true,
+
+      figure: true,
+
+      // install flowchart.ts before enabling it
+      // flowchart: true,
+
+      // gfm requires mathjax-full to provide tex support
+      // gfm: true,
+
+      imgLazyload: true,
+      imgSize: true,
+      include: true,
+
+      // install katex before enabling it
+      katex: true,
+
+      // install mathjax-full before enabling it
+      // mathjax: true,
+
+      mark: true,
+
+      // install mermaid before enabling it
+      mermaid: true,
+
+      playground: {
+        presets: ["ts", "vue"],
+      },
+
+      // install reveal.js before enabling it
+      // revealJs: {
+      //   plugins: ["highlight", "math", "search", "notes", "zoom"],
+      // },
+
+      stylize: [
+        {
+          matcher: "Recommended",
+          replacer: ({ tag }) => {
+            if (tag === "em")
+              return {
+                tag: "Badge",
+                attrs: { type: "tip" },
+                content: "Recommended",
+              };
+          },
+        },
+      ],
+      sub: true,
+      sup: true,
+      tabs: true,
+      vPre: true,
+
+      // install @vue/repl before enabling it
+      // vuePlayground: true,
+    },
+
+    // uncomment these if you want a pwa
+    // pwa: {
+    //   favicon: "/favicon.ico",
+    //   cacheHTML: true,
+    //   cachePic: true,
+    //   appendBase: true,
+    //   apple: {
+    //     icon: "/assets/icon/apple-icon-152.png",
+    //     statusBarColor: "black",
+    //   },
+    //   msTile: {
+    //     image: "/assets/icon/ms-icon-144.png",
+    //     color: "#ffffff",
+    //   },
+    //   manifest: {
+    //     icons: [
+    //       {
+    //         src: "/assets/icon/chrome-mask-512.png",
+    //         sizes: "512x512",
+    //         purpose: "maskable",
+    //         type: "image/png",
+    //       },
+    //       {
+    //         src: "/assets/icon/chrome-mask-192.png",
+    //         sizes: "192x192",
+    //         purpose: "maskable",
+    //         type: "image/png",
+    //       },
+    //       {
+    //         src: "/assets/icon/chrome-512.png",
+    //         sizes: "512x512",
+    //         type: "image/png",
+    //       },
+    //       {
+    //         src: "/assets/icon/chrome-192.png",
+    //         sizes: "192x192",
+    //         type: "image/png",
+    //       },
+    //     ],
+    //     shortcuts: [
+    //       {
+    //         name: "Demo",
+    //         short_name: "Demo",
+    //         url: "/demo/",
+    //         icons: [
+    //           {
+    //             src: "/assets/icon/guide-maskable.png",
+    //             sizes: "192x192",
+    //             purpose: "maskable",
+    //             type: "image/png",
+    //           },
+    //         ],
+    //       },
+    //     ],
+    //   },
+    // },
+  },
+});
diff --git a/docs/src/faq/20230402-where-exercise-java-basics.md b/src/QA/20230402-where-exercise-java-basics.md
similarity index 88%
rename from docs/src/faq/20230402-where-exercise-java-basics.md
rename to src/QA/20230402-where-exercise-java-basics.md
index 3b0e061a99..90a421390d 100644
--- a/docs/src/faq/20230402-where-exercise-java-basics.md
+++ b/src/QA/20230402-where-exercise-java-basics.md
@@ -9,21 +9,9 @@ tag:
 
 # 想学好 Java 基础，应该去哪儿刷题
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-
-
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 一、前言
 
@@ -98,6 +86,6 @@ tag:
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/QA/README.md b/src/QA/README.md
new file mode 100644
index 0000000000..b00424464f
--- /dev/null
+++ b/src/QA/README.md
@@ -0,0 +1,7 @@
+---
+title: 你问我答
+index: false
+icon: fa-solid fa-circle-question
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/src/README.md b/src/README.md
new file mode 100644
index 0000000000..ed68aa4e8b
--- /dev/null
+++ b/src/README.md
@@ -0,0 +1,73 @@
+---
+home: true
+icon: fas fa-home
+title: 主页
+heroImage: /logo.svg
+# bgImage: https://theme-hope-assets.vuejs.press/bg/6-light.svg
+# bgImageDark: https://theme-hope-assets.vuejs.press/bg/6-dark.svg
+# bgImageStyle:
+#   background-attachment: fixed
+heroText: JavaPark
+tagline: 汇聚 Java 基础、框架、中间件、求职面试、计算机知识、编程语言、基础教程、效率工具…
+actions:
+  - text: 发车 ➡️
+    link: /guide
+    type: primary
+
+  - text: 电子书 📚
+    link: https://github.com/cunyu1943/ebooks
+
+# highlights:
+
+  # - header: 在这里你能看到以下方面的内容
+features:
+  - title: Java 教程
+    icon: iconfont icon-java
+    details: Java 基础保姆级教程
+    link: /java-tutorial/
+  - title: 求职面试
+    icon: iconfont icon-interview
+    details: 面试八股、简历修改
+    link: /interview/
+  - title: 框架｜中间件
+    icon: iconfont icon-framework
+    details: 各种框架、中间件知识点总结
+    link: /framework/
+  - title: 计算机基础
+    icon: iconfont icon-computer
+    details: 网络、算法、数据结构等知识
+    link: /cs-wiki/
+  - title: 基础教程
+    icon: iconfont icon-rocket
+    details: IT 相关知识，助力工作学习
+    link: /tutorial/
+  - title: 编程语言
+    icon: iconfont icon-order
+    details: 学习其他编程语言的总结
+    link: /program-language/
+  - title: 你问我答
+    icon: fa-solid fa-circle-question
+    details: 回复常见疑问
+    link: /QA/
+  - title: 好物周刊
+    icon: fa-solid fa-newspaper
+    details: 记录每周有价值的信息
+    link: /weekly/
+---
+
+## 必看专栏
+
+-   [Java 基础](/java-tutorial/javase/20220701-intro-to-java/)：适合 `Java` 初学者，结合网上资料加以编写的保姆级教程。
+-   [好物周刊](/weekly/2023/0415-0421/)：记录每周看到的有价值的信息，主要针对计算机领域，汇聚项目、软件、网站、插件、资料等方面内容，每周五发布。
+
+## 公众号
+
+最新文章首发地址，强烈推荐关注一波！
+
+![](/contact/wechatpublic.png =150x)
+
+## 联系我
+
+你也可以添加我的微信：`cunyu1943`，备注 **加群** 加入作者技术交流群。
+
+![](/contact/wechat.png =150x)
\ No newline at end of file
diff --git a/src/about/README.md b/src/about/README.md
new file mode 100644
index 0000000000..a58db116f9
--- /dev/null
+++ b/src/about/README.md
@@ -0,0 +1,12 @@
+---
+title: 关于
+index: false
+icon: fa-solid fa-circle-info
+category: 关于
+---
+
+## 关于自己
+
+## 关于学习
+
+## 关于工作
\ No newline at end of file
diff --git a/src/about/job/README.md b/src/about/job/README.md
new file mode 100644
index 0000000000..741a208b8b
--- /dev/null
+++ b/src/about/job/README.md
@@ -0,0 +1,6 @@
+---
+title: 关于工作
+index: false
+icon: fa-solid fa-image-portrait
+---
+<AutoCatalog />
\ No newline at end of file
diff --git a/src/about/me/README.md b/src/about/me/README.md
new file mode 100644
index 0000000000..b9470c0bc4
--- /dev/null
+++ b/src/about/me/README.md
@@ -0,0 +1,6 @@
+---
+title: 关于自己
+index: false
+icon: fa-solid fa-user-secret
+---
+<AutoCatalog />
\ No newline at end of file
diff --git a/src/about/study/README.md b/src/about/study/README.md
new file mode 100644
index 0000000000..b36c8f3b75
--- /dev/null
+++ b/src/about/study/README.md
@@ -0,0 +1,6 @@
+---
+title: 关于学习
+index: false
+icon: fa-solid fa-graduation-cap
+---
+<AutoCatalog />
\ No newline at end of file
diff --git a/src/cs-wiki/README.md b/src/cs-wiki/README.md
new file mode 100644
index 0000000000..36218c0c79
--- /dev/null
+++ b/src/cs-wiki/README.md
@@ -0,0 +1,19 @@
+---
+title: 计算机知识
+index: false
+icon: iconfont icon-computer
+---
+
+## 组成原理
+## 操作系统
+## 计算机网络
+## 数据结构与算法
+
+1.   [数据结构与算法：数据结构简介](algo/20220503-datastructure-intro.md)
+2.   [数据结构与算法：算法简介](algo/20220511-algo-intro.md)
+3. [数据结构与算法：时间 & 空间复杂度](algo/20220512-time-space.md)
+4. [数据结构与算法：数组简介](algo/20220516-array.md)
+5. [数据结构与算法：数组的增删改查](algo/20200510-arr-crud.md)
+6. [数据结构与算法：有序数组去重](algo/20220513-sorted-arr-duplication.md)
+7. [数据结构与算法：链表详解](algo/20220515-linkedlist.md)
+8. [数据结构与算法：二叉树的遍历](algo/202205170-binary-tree-traverse.md)
\ No newline at end of file
diff --git a/docs/src/cs-wiki/algo/20200510-arr-crud.md b/src/cs-wiki/algo/20200510-arr-crud.md
similarity index 94%
rename from docs/src/cs-wiki/algo/20200510-arr-crud.md
rename to src/cs-wiki/algo/20200510-arr-crud.md
index 07a80b358b..db7d45212f 100644
--- a/docs/src/cs-wiki/algo/20200510-arr-crud.md
+++ b/src/cs-wiki/algo/20200510-arr-crud.md
@@ -9,19 +9,6 @@ tag:
 
 # 数组的增删改查
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 一、前言
 
 作为重要的线性数据结构， 我们经常会跟数组打交道。所谓数组，就是一系列相同数据类型元素的集合，数据类型可以是 `int`、`float`、`String`、类……。而对数组的增删改查则是日常用到的操作。为了弄清楚这些常用操作，此博客则对这些操作进行一一梳理。
diff --git a/docs/src/cs-wiki/algo/20220503-datastructure-intro.md b/src/cs-wiki/algo/20220503-datastructure-intro.md
similarity index 87%
rename from docs/src/cs-wiki/algo/20220503-datastructure-intro.md
rename to src/cs-wiki/algo/20220503-datastructure-intro.md
index 22967fa58a..0718bdb30d 100644
--- a/docs/src/cs-wiki/algo/20220503-datastructure-intro.md
+++ b/src/cs-wiki/algo/20220503-datastructure-intro.md
@@ -8,19 +8,7 @@ date: 2022-05-03
 
 # 数据结构简介
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## 一、什么是数据结构
+## 什么是数据结构
 
 在开始正式学习数据结构前，咱们先来看看什么是数据。所谓数据，就是用来描述客观事物的符号，在计算机中就是可以操作的对象，能够被计算机识别并输入给计算机处理的符号集合。数据不仅包括整型、浮点型等数值类型，还包括字符、声音、图像、视频等非数值型类型。
 
@@ -32,9 +20,9 @@ date: 2022-05-03
 
 用 Java 中的类来类比，数据就像 Java 中的一个类，数据元素就是类中的各个对象，而数据项则是各个对象中的属性。
 
-## 二、逻辑结构与物理结构
+## 逻辑结构与物理结构
 
-### 1. 逻辑结构
+### 逻辑结构
 
 逻辑结构，就是指数据对象中数据元素之间的相互关系。逻辑结构主要又可以分为 4 种，总结如下：
 
@@ -72,7 +60,7 @@ date: 2022-05-03
 
 ![](assets/20220503-datastructure-intro/b0a4b84fa144ad40450d23b180fcb57c.webp)
 
-### 2. 物理结构
+### 物理结构
 
 除开逻辑结构之外，还有另一种物理结构，有的书里也叫存储结构。所谓物理结构，指的是数据的逻辑结构在计算机中的存储形式。数据元素的存储结构形式同样主要有四种：
 
@@ -107,6 +95,6 @@ date: 2022-05-03
 
 通过散列函数和解决冲突的方式，将关键字散列在连续有限的地址空间中，并将散列函数的值解释成关键字所在元素的存储地址。散列存储的特点是存取速度快，但只能按关键字随机存储，不能顺序存储，也不能折半存储。
 
-## 三、总结
+## 总结
 
 本文的内容到此就结束了，主要介绍了数据结构的定义，并了解了数据结构中的四种逻辑结构和四种物理结构。关于更多数据结构的知识，咱们就下期文章再见吧！
\ No newline at end of file
diff --git a/docs/src/cs-wiki/algo/20220511-algo-intro.md b/src/cs-wiki/algo/20220511-algo-intro.md
similarity index 89%
rename from docs/src/cs-wiki/algo/20220511-algo-intro.md
rename to src/cs-wiki/algo/20220511-algo-intro.md
index 1db1db5f1d..99381515f5 100644
--- a/docs/src/cs-wiki/algo/20220511-algo-intro.md
+++ b/src/cs-wiki/algo/20220511-algo-intro.md
@@ -8,24 +8,11 @@ date: 2022-05-11
 
 # 算法简介
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## 一、什么是算法
+## 什么是算法
 
 什么是算法？简单来讲，算法就是用于描述解决问题的方法。而现今普遍对算法的定义为：解决特定问题求解步骤的描述，在计算机中表现为指令的有限序列，并且每条指令含有一个或多个操作。
 
-## 二、算法的特性
+## 算法的特性
 
 算法具有五个基本特性，分别是：
 
@@ -53,7 +40,7 @@ date: 2022-05-11
 
 指算法的每一步都必须是可行的，也就是说每一步都可以通过执行一定的次数来完成。
 
-## 三、算法的设计要求
+## 算法的设计要求
 
 同一个问题，我们可以通过不同的算法来解决。俗话说得好，条条大路通罗马。同一个目的地，我们可以通过不同的方式到达。
 
@@ -86,23 +73,23 @@ date: 2022-05-11
 
 除开时间效率之外，存储量也是一个重要的指标。存储量指的是算法在执行过程中所需的最大存储空间，主要指算法程序运行时所占用的内存或外部存储空间。针对同一问题，算法所需空间越少，则算法效果越好，所需空间越多，则算法效果越差。
 
-## 四、算法效率衡量方法
+## 算法效率衡量方法
 
 前边讲了算法的特性以及算法的设计要求，但都没有明确的方式来衡量一个算法的好坏。为了衡量一个算法的好坏，又提出了时间复杂度和空间复杂度的概念。
 
-### 1. 时间复杂度
+### 时间复杂度
 
-#### 1.1. 定义
+#### 定义
 
 若存在函数 $f(n)$，使得当 $n$ 趋向无穷大时，$T(n) / f(n)$ 的极限值为不等于 0 的常数，则称 $f(n)$ 是 $T(n)$ 的同数量级函数，记作 $T(n)=O(f(n))$，称 $O(f(n))$ 为算法的 **渐进时间复杂度**，简称 **时间复杂度**，用大 O 来表示，称为 **大 O 表示法**；
 
-#### 1.2. 推导时间复杂度的原则
+#### 推导时间复杂度的原则
 
 1.  **若运行时间是常数量级，则用常数 1 表示**；
 2.  **只保留时间函数中最高阶项**，如 $O(n^2 + 4n)$，保留最高阶项后，成为 $O(n^2)$；
 3.  **若最高阶项存在，则省去最高阶项前的系数**，如 $O(4n^2)$，省去最高阶项的系数后，成为 $O(n^2)$；
 
-#### 1.3. 分析时间复杂度的方法
+#### 分析时间复杂度的方法
 
 总结起来，对于如何分析一段代码的时间复杂度，主要有如下 3 个实用方法：
 
@@ -110,13 +97,13 @@ date: 2022-05-11
 2.  **加法原则：总复杂度等于量度最大的那段代码的复杂度；**
 3.  **乘法原则：嵌套代码的复杂度等于嵌套内外代码复杂度的乘积**；
 
-#### 1.4. 常见的时间复杂度曲线
+#### 常见的时间复杂度曲线
 
 ![](assets/20220511-algo-intro/d05765ff2a97166cb1abd4612906bed6.webp)
 
-#### 1.5. 常见时间复杂度
+#### 常见时间复杂度
 
-##### 1.5.1. $O(1)$
+##### $O(1)$
 
 即无论执行多少行，都不会影响到其他区域，此时代码的复杂度就是 $O(1)$，如下面的代码中，假设执行每行代码时间都相同切为 $t$，则 2,3 行各需 1 个执行时间，即为 $t + t = 2t$。此时执行时间复杂度为常数。
 
@@ -127,7 +114,7 @@ void sayHello(String name){
 }
 ```
 
-##### 1.5.2. $O(log n)$
+##### $O(log n)$
 
 如下列二分查找代码中，通过 `while` 循环，能够成倍的缩减搜索范围，假设需要 `x` 次才能跳出循环，则有 `num * 2 * 2 * ... = n` ，其中 `num` 是常数，有 `n` 个 2 相乘，则有 $num * 2 ^x = n$，从而推出 $x = log_2(n/num)$ ，因此时间复杂度用大 O 表示法表示为 $O(log n)$。
 
@@ -150,7 +137,7 @@ int binarySearch(int[] arr, int target){
 }
 ```
 
-##### 1.5.3. $O(n)$
+##### $O(n)$
 
 如下面这段代码中，`for` 循环中的代码被执行了 `arr.length` 次，因此所需要的时间和数组长度成正比的，因此可以用 $O(n)$ 来表示它的时间复杂度。利用上述推到原则和分析的方法，可以知道下面代码中循环次数最多的是 4,5 行，总的执行时间是 $O(2n)$，抛去系数后，得到最终时间复杂度 $O(n)$。
 
@@ -166,7 +153,7 @@ int sum(int[] arr){
 }
 ```
 
-##### 1.5.4. $O(n log n)$
+##### $O(n log n)$
 
 如果我们将一个复杂度为 $O(logn)$ 的代码重复执行 $n$ 次，那么此时代码的复杂度不就变成 $O(nlogn)$ 了吗。
 
@@ -181,7 +168,7 @@ void hello (int n){
 }
 ```
 
-##### 1.5.5. $O(n^2)$
+##### $O(n^2)$
 
 假设我们将时间复杂度为 $O(n)$ 的代码重复执行 $n$ 次，那么此时的时间复杂度就是 $n*O(n)$，即可表示为 $O(n^2)$，表现出来就是双重循环的形式。
 
@@ -200,7 +187,7 @@ void selectionSort(int[] arr, int n){
 }
 ```
 
-##### 1.5.6. $O(n^3)$
+##### $O(n^3)$
 
 和 $O(n^2)$，类似，将时间复杂度为 $O(n^2)$ 的代码嵌套循环一次，此时复杂度就变成了  $O(n^3)$，表现出来就是三重循环嵌套的形式。
 
@@ -218,19 +205,19 @@ void demo(int n){
 }
 ```
 
-##### 1.5.7. $O(n!)$
+##### $O(n!)$
 
 虽然理论上存在时间复杂度为 $O(n!)$ 的算法，但实践中基本遇不到，所以这里就不展开了。
 
-### 2. 空间复杂度
+### 空间复杂度
 
-#### 2.1. 定义
+#### 定义
 
 空间复杂度是对一个算法在运行过程中临时占用存储空间大小的一个量度（即除开原始序列大小的内存，在算法过程中用到的额外的存储空间），反映的对内存占用的趋势，而不是具体内存，也叫作 **渐进空间复杂度** ，**表示算法的存储空间与数据规模间的增长关系**，用 $S(n)$ 来代替；
 
-#### 2.2. 常用空间复杂度
+#### 常用空间复杂度
 
-##### 2.2.1. $O(1)$
+##### $O(1)$
 
 算法执行所需临时空间不随某一变量 `n` 的大小而变化，则该算法空间复杂度为一个常量，表示为 $S(n) = O(1)$；
 
@@ -240,7 +227,7 @@ int num2 = 2;
 int total = num1 + num2;
 ```
 
-##### 2.2.2. $O(n)$
+##### $O(n)$
 
 数组占用内存大小为 `n`，而且后续未分配新的空间，因此该算法空间复杂度为 $S(n) = O(n)$；
 
@@ -248,7 +235,7 @@ int total = num1 + num2;
 int[] arr = new int[n];
 ```
 
-##### 2.2.3. $O(n^2)$
+##### $O(n^2)$
 
 二维数组的情况；
 
@@ -256,7 +243,7 @@ int[] arr = new int[n];
 int[][] arr = new int[n][n];
 ```
 
-### 3. 常见排序算法的时间复杂度和空间复杂度
+### 常见排序算法的时间复杂度和空间复杂度
 
 对于面试中常见的的排序算法，以下总结给出了其时间复杂度以及空间复杂度，以及算法稳定性。
 
@@ -273,6 +260,6 @@ int[][] arr = new int[n][n];
 | 桶排序   | $O(n+k)$       | $O(n)$         | $O(n^2)$       | $O(n+k)$     | 稳定   |
 | 基数排序 | $O(n*k)$       | $O(n*k)$       | $O(n*k)$       | $O(n+k)$     | 稳定   |
 
-## 五、总结
+## 总结
 
 好了，以上就是今天文章的内容了。主要介绍了算法的定义、算法的特性、算法的设计要求以及算法效率的衡量方法。时间复杂度的定义、推导原则以及常见时间复杂度，还对空间复杂度定义以及常见空间复杂度进行了介绍，最后则是总结了常见排序算法的时间复杂度和空间复杂度。
diff --git a/docs/src/cs-wiki/algo/20220512-time-space.md b/src/cs-wiki/algo/20220512-time-space.md
similarity index 87%
rename from docs/src/cs-wiki/algo/20220512-time-space.md
rename to src/cs-wiki/algo/20220512-time-space.md
index dd907e6f7b..6c73abe426 100644
--- a/docs/src/cs-wiki/algo/20220512-time-space.md
+++ b/src/cs-wiki/algo/20220512-time-space.md
@@ -8,40 +8,27 @@ date: 2022-05-12
 
 # 时间 & 空间复杂度
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## 一、前言
+## 前言
 
 所谓算法，其实就是我们用来操作数据、解决程序问题的一组方法。针对同一个问题，我们可以采用不同的算法，然后实现相同的结果。但是针对不同的算法，对于时间和资源的消耗却有不同的差别。而为了分析不同算法的效率，我们常常从 **时间** 和 **空间** 两个方面来对比，然后从中挑出最适合我们的解决方案。
 
 本文主要从时间复杂度和空间复杂度的定义说起，然后介绍常见的时间复杂度和空间复杂度，最后则是对常见排序算法进行了总结。
 
-## 二、时间复杂度
+## 时间复杂度
 
 
 
-### 1. 定义
+### 定义
 
 若存在函数 $f(n)$，使得当 $n$ 趋向无穷大时，$T(n) / f(n)$ 的极限值为不等于 0 的常数，则称 $f(n)$ 是 $T(n)$ 的同数量级函数，记作 $T(n)=O(f(n))$，称 $O(f(n))$ 为算法的 **渐进时间复杂度**，简称 **时间复杂度**，用大 O 来表示，称为 **大 O 表示法**；
 
-### 2. 推导时间复杂度的原则
+### 推导时间复杂度的原则
 
 1.  **若运行时间是常数量级，则用常数 1 表示**；
 2.  **只保留时间函数中最高阶项**，如 $O(n^2 + 4n)$，保留最高阶项后，成为 $O(n^2)$；
 3.  **若最高阶项存在，则省去最高阶项前的系数**，如 $O(4n^2)$，省去最高阶项的系数后，成为 $O(n^2)$；
 
-### 3. 分析时间复杂度的方法
+### 分析时间复杂度的方法
 
 总结起来，对于如何分析一段代码的时间复杂度，主要有如下 3 个实用方法：
 
@@ -49,12 +36,12 @@ date: 2022-05-12
 2.  **加法原则：总复杂度等于量度最大的那段代码的复杂度；**
 3.  **乘法原则：嵌套代码的复杂度等于嵌套内外代码复杂度的乘积**；
 
-### 4. 常见的时间复杂度曲线
+### 常见的时间复杂度曲线
 
 ![](assets/20220512-time-space/dd6b7dfb2c46cd7119e21d59de2f1705.webp)
-### 5. 常见时间复杂度
+### 常见时间复杂度
 
-#### 5.1. $O(1)$
+#### $O(1)$
 
 即无论执行多少行，都不会影响到其他区域，此时代码的复杂度就是 $O(1)$，如下面的代码中，假设执行每行代码时间都相同切为 $t$，则 2,3 行各需 1 个执行时间，即为 $t + t = 2t$。此时执行时间复杂度为常数。
 
@@ -65,7 +52,7 @@ void sayHello(String name){
 }
 ```
 
-#### 5.2. $O(log n)$
+#### $O(log n)$
 
 如下列二分查找代码中，通过 `while` 循环，能够成倍的缩减搜索范围，假设需要 `x` 次才能跳出循环，则有 `num * 2 * 2 * ... = n` ，其中 `num` 是常数，有 `n` 个 2 相乘，则有 $num * 2 ^x = n$，从而推出 $x = log_2(n/num)$ ，因此时间复杂度用大 O 表示法表示为 $O(log n)$。
 
@@ -88,7 +75,7 @@ int binarySearch(int[] arr, int target){
 }
 ```
 
-#### 5.3. $O(n)$
+#### $O(n)$
 
 如下面这段代码中，`for` 循环中的代码被执行了 `arr.length` 次，因此所需要的时间和数组长度成正比的，因此可以用 $O(n)$ 来表示它的时间复杂度。利用上述推到原则和分析的方法，可以知道下面代码中循环次数最多的是 4,5 行，总的执行时间是 $O(2n)$，抛去系数后，得到最终时间复杂度 $O(n)$.
 
@@ -104,7 +91,7 @@ int sum(int[] arr){
 }
 ```
 
-#### 5.4. $O(n log n)$
+#### $O(n log n)$
 
 如果我们将一个复杂度为 $O(logn)$ 的代码重复执行 $n$ 次，那么此时代码的复杂度不就变成 $O(nlogn)$ 了吗。
 
@@ -119,7 +106,7 @@ void hello (int n){
 }
 ```
 
-#### 5.5. $O(n^2)$
+#### $O(n^2)$
 
 假设我们将时间复杂度为 $O(n)$ 的代码重复执行 $n$ 次，那么此时的时间复杂度就是 $n*O(n)$，即可表示为 $O(n^2)$，表现出来就是双重循环的形式。
 
@@ -138,7 +125,7 @@ void selectionSort(int[] arr, int n){
 }
 ```
 
-#### 5.6. $O(n^3)$
+#### $O(n^3)$
 
 和 $O(n^2)$，类似，将时间复杂度为 $O(n^2)$ 的代码嵌套循环一次，此时复杂度就变成了  $O(n^3)$，表现出来就是三重循环嵌套的形式。
 
@@ -156,19 +143,19 @@ void demo(int n){
 }
 ```
 
-#### 5.7. $O(n!)$
+#### $O(n!)$
 
 虽然理论上存在时间复杂度为 $O(n!)$ 的算法，但实践中基本遇不到，所以这里就不展开了。
 
-## 三、空间复杂度
+## 空间复杂度
 
-### 1. 定义
+### 定义
 
 空间复杂度是对一个算法在运行过程中临时占用存储空间大小的一个量度（即除开原始序列大小的内存，在算法过程中用到的额外的存储空间），反映的对内存占用的趋势，而不是具体内存，也叫作 **渐进空间复杂度** ，**表示算法的存储空间与数据规模间的增长关系**，用 $S(n)$ 来代替；
 
-### 2. 常用空间复杂度
+### 常用空间复杂度
 
-#### 2.1. $O(1)$
+#### $O(1)$
 
 算法执行所需临时空间不随某一变量 `n` 的大小而变化，则该算法空间复杂度为一个常量，表示为 $S(n) = O(1)$；
 
@@ -178,7 +165,7 @@ int num2 = 2;
 int total = num1 + num2;
 ```
 
-#### 2.2. $O(n)$
+#### $O(n)$
 
 数组占用内存大小为 `n`，而且后续未分配新的空间，因此该算法空间复杂度为 $S(n) = O(n)$；
 
@@ -186,7 +173,7 @@ int total = num1 + num2;
 int[] arr = new int[n];
 ```
 
-#### 2.3. $O(n^2)$
+#### $O(n^2)$
 
 二维数组的情况；
 
@@ -194,7 +181,7 @@ int[] arr = new int[n];
 int[][] arr = new int[n][n];
 ```
 
-## 四、常见排序算法的时间复杂度和空间复杂度
+## 常见排序算法的时间复杂度和空间复杂度
 
 对于面试中常见的的排序算法，以下总结给出了其时间复杂度以及空间复杂度，以及算法稳定性。
 
@@ -211,6 +198,6 @@ int[][] arr = new int[n][n];
 | 桶排序   | $O(n+k)$       | $O(n)$         | $O(n^2)$       | $O(n+k)$     | 稳定   |
 | 基数排序 | $O(n*k)$       | $O(n*k)$       | $O(n*k)$       | $O(n+k)$     | 稳定   |
 
-## 五、总结
+## 总结
 
 好了，以上就是今天文章的内容了。主要介绍了时间复杂度的定义、推导原则以及常见时间复杂度，还对空间复杂度定义以及常见空间复杂度进行了介绍，最后则是总结了常见排序算法的时间复杂度和空间复杂度。如果觉得文章对你有所帮助，那就点个赞再走吧！
\ No newline at end of file
diff --git a/docs/src/cs-wiki/algo/20220513-sorted-arr-duplication.md b/src/cs-wiki/algo/20220513-sorted-arr-duplication.md
similarity index 87%
rename from docs/src/cs-wiki/algo/20220513-sorted-arr-duplication.md
rename to src/cs-wiki/algo/20220513-sorted-arr-duplication.md
index 0aff20f8aa..e5977bf90a 100644
--- a/docs/src/cs-wiki/algo/20220513-sorted-arr-duplication.md
+++ b/src/cs-wiki/algo/20220513-sorted-arr-duplication.md
@@ -11,20 +11,7 @@ date: 2022-05-19
 
 # 有序数组去重
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-## 一、问题
+## 问题
 
 给定一个有序数组，要删除数组重复出现的元素，使得每个元素只出现一次，然后返回移除重复数组后的新长度；
 
@@ -32,9 +19,9 @@ date: 2022-05-19
 
 假设给定一个数组 `nums = [1,2,4,4]`，删除重复出现的元素 4 后，原数组变成 `nums = [1, 2, 4]`，此时新的数组长度为 3；
 
-## 二、解决思路
+## 解决思路
 
-### 1. 数组原地操作
+### 数组原地操作
 
 数组原地操作，此时无需创建新的数组，只需要在原来的数组上操作即可。相当于首先要找到数组中重复的元素，然后将重复的元素移除，此时就涉及到数组中的删除操作，相关知识点可以看我的另一篇文章 [数组的增删改查](https://juejin.cn/post/6959725810160762888)。
 
@@ -67,7 +54,7 @@ public int removeDuplicates(int[] nums) {
 }
 ```
 
-### 2. 普通方法
+### 普通方法
 
 针对数组原地操作算法时间复杂度为 $O(n^2)$，为降低时间复杂度提高算法效率，可以通过空间换时间的做法，通过定义新的数组，从而实现去除重复元素的目的，此时的时间复杂度为 $O(n)$，而空间复杂度也由 $O(1)$ 变成了 $O(n)$。但是有几点需要注意：
 
@@ -110,7 +97,7 @@ public int[] removeDuplicates(int[] nums) {
 }
 ```
 
-### 3. 双指针
+### 双指针
 
 以上的两种方法要么是以时间换空间，要么是以空间换时间，那我们有没有一种折中的办法，既能保证时间复杂度很低，也能保证空间复杂度呢？答案是：当然有！
 
@@ -141,7 +128,7 @@ public int removeDuplicates(int[] nums) {
 }
 ```
 
-## 三、总结
+## 总结
 
 以上就是 3 种去除有序数组中重复元素的三种算法，其中既有以时间换空间的数组原地操作法，也有空间换时间的普通方法，最后的话则是有一种综合前两种方法优点的方法 - 双指针。通过双指针方法，既能保证空间复杂度为 $O(1)$，也将时间复杂度限制在了 $O(n)$。
 
diff --git a/docs/src/cs-wiki/algo/20220515-linkedlist.md b/src/cs-wiki/algo/20220515-linkedlist.md
similarity index 93%
rename from docs/src/cs-wiki/algo/20220515-linkedlist.md
rename to src/cs-wiki/algo/20220515-linkedlist.md
index b811bd0378..c27c45eacb 100644
--- a/docs/src/cs-wiki/algo/20220515-linkedlist.md
+++ b/src/cs-wiki/algo/20220515-linkedlist.md
@@ -8,19 +8,7 @@ tag:
 
 # 链表解惑
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-## 一、前言
+##  前言
 
 链表是一种 **递归** 的数据结构，或者为空 `null`，或者指向一个结点（`node`）的引用，一个结点含有 **一个泛型元素和一个指向另一条链表的引用**。
 
@@ -30,7 +18,7 @@ tag:
 -   **双向链表**：每个数据结点中都有两个指针，分别指向直接后继和直接前驱。
 -   **循环链表**：一种 **链式存储结构**，它的最后一个结点指向头结点，形成一个环。
 
-### 1. 单向链表
+###  单向链表
 
 单向链表包括一个值和一个指向下一结点的指针，其典型结构定义如下：
 
@@ -80,7 +68,7 @@ public class Node{
 }
 ```
 
-### 2. 双向链表
+### 双向链表
 
 每个数据结点中都有两个指针，分别指向直接后继和直接前驱，其典型结构定义如下：
 
@@ -143,9 +131,9 @@ public class DoubleNode{
 }
 ```
 
-## 二、单向链表的增删改查
+## 单向链表的增删改查
 
-### 1. 基于链表实现栈
+### 基于链表实现栈
 
 ```java
 public class MyStack{
@@ -204,7 +192,7 @@ public class MyStack{
 } 
 ```
 
-### 2. 基于链表实现队列
+### 基于链表实现队列
 
 ```java
 public class MyQueue{
@@ -290,11 +278,11 @@ public class MyQueue{
 }
 ```
 
-## 三、双向链表的增删改查
+## 双向链表的增删改查
 
 实现双向链表时，通常在最前端和最后端各设置一个 **哑元结点**，分别称为 **头结点** 和 **尾结点**，起着 **哨兵** 的作用。但实际上两者并不存储任何实质的数据对象，头（尾）结点的 `next`（`prev`）引用指向首（末）结点，而 `prev`（`next`）引用为空。
 
-### 1. 首尾结点的插入
+### 首尾结点的插入
 
 假设要进行首结点的插入，则通常需要如下步骤，而末结点的插入则是和首结点的插入过程对称。
 
@@ -302,7 +290,7 @@ public class MyQueue{
 2.  然后将其接入队列的前端；
 3.  接着将头结点的 `next` 的引用指向新插入的结点，同时将首结点的 `prev` 的引用指向新插入的结点。
 
-### 2. 首尾结点的删除
+### 首尾结点的删除
 
 假设要进行末结点的删除，通常需要如下步骤，而首结点的删除过程适合尾结点的删除过程对称。
 
@@ -310,7 +298,7 @@ public class MyQueue{
 2.  同时将尾结点的 `prev` 引用指向新的末结点；
 3.  最后原先的末结点将会被系统回收。
 
-### 3. 一般结点的插入与删除
+### 一般结点的插入与删除
 
 要实现在一般结点之间插入新结点，通常需要进行如下步骤：
 
@@ -437,6 +425,6 @@ public class MyDoubleQueue{
 }
 ```
 
-## 四、总结
+## 总结
 
 本文从单向链表和双向链表的结构定义出发，然后又分别介绍了如何基于单向链表实现堆和栈，最后则是对双向链表的增删改查进行了总结。对于文中有疏漏的地方，欢迎评论留言。如果你觉得文章对你有所帮助，那就点个赞再走吧！
diff --git a/docs/src/cs-wiki/algo/20220516-array.md b/src/cs-wiki/algo/20220516-array.md
similarity index 84%
rename from docs/src/cs-wiki/algo/20220516-array.md
rename to src/cs-wiki/algo/20220516-array.md
index 14101b963f..371ed3cdf7 100644
--- a/docs/src/cs-wiki/algo/20220516-array.md
+++ b/src/cs-wiki/algo/20220516-array.md
@@ -9,26 +9,11 @@ tag:
 
 # 数组详解
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-
-
-## 一、数组简介
+## 1. 数组简介
 
 数组（Array）是一种 **线性表（将数据排成一条线一样的结构）** 数据结构，用一组 **连续内存空间** 来存储一组具有 **相同类型** 的数据。
 
-## 二、数组的常见操作
+## 2. 数组的常见操作
 
 数组最常见的操作无非增删改差，下面分别来对各个操作进行介绍，假设数组类的定义如下：
 
@@ -45,7 +30,7 @@ public class Array{
 
 
 
-### 1. 按照下标随机访问操作
+### 2.1 按照下标随机访问操作
 
 要实现随机访问，那么需要先看访问的下标位置是否合法，不合法则访问失败，合法则放回当前位置元素。
 
@@ -62,7 +47,7 @@ public int find(int index){
 }
 ```
 
-### 2. 数组的插入
+### 2.2 数组的插入
 
 要实现数组的插入，通常有如下步骤：
 
@@ -100,7 +85,7 @@ public boolean insert(int index, int value){
 }
 ```
 
-### 3. 数组的删除
+### 2.3 数组的删除
 
 要实现数组的删除操作，通常有如下步骤：
 
@@ -127,7 +112,7 @@ public boolean delete(int index){
 }
 ```
 
-### 4. 数组的更新
+### 2.4 数组的更新
 
 所谓数组更新，只要位置合法，只需要将对应索引位置赋值为新的值即可。
 
@@ -145,6 +130,6 @@ public boolean update(int index, int value){
 }
 ```
 
-## 三、总结
+## 3. 总结
 
 对于数组这一数据结构，其最常见的操作无非上边所描述的四种，当然我举例都是用的 `int` 数据类型的值。如果你想用其他数据类型的数组，有了上面的实例，迁移过去不是分分钟的事情么！💯💯💯
\ No newline at end of file
diff --git a/docs/src/cs-wiki/algo/202205170-binary-tree-traverse.md b/src/cs-wiki/algo/202205170-binary-tree-traverse.md
similarity index 90%
rename from docs/src/cs-wiki/algo/202205170-binary-tree-traverse.md
rename to src/cs-wiki/algo/202205170-binary-tree-traverse.md
index 2f7711fb0b..40d00758e3 100644
--- a/docs/src/cs-wiki/algo/202205170-binary-tree-traverse.md
+++ b/src/cs-wiki/algo/202205170-binary-tree-traverse.md
@@ -11,23 +11,11 @@ tag:
 
 # 二叉树的遍历
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-## 一、前言
+## 前言
 
 二叉树作为一种重要的数据结构，在算法中起到了承前启后的作用，它是数组和链表的延伸，也是图的基础。所以学习二叉树的相关知识是十分有必要的，而在相关的操作中，二叉树的遍历是最频繁的，今天就来看看二叉树的 4 种遍历方法！
 
-## 二、二叉树数据结构
+## 二叉树数据结构
 
 所谓二叉树，指的是每个结点最多有两个分支的树结构，其分支通常被称为“左子树”和“右子树”，而且他们的次序是固定的，不能随意颠倒，一棵二叉树的示例如下：
 
@@ -43,13 +31,13 @@ class TreeNode{
 }
 ```
 
-## 三、前序遍历
+## 前序遍历
 
 也叫做先序遍历，首先访问根节点，然后遍历左子树，最后再遍历右子树。而在遍历左右子树时，仍然按照先访问根节点，然后遍历左子树，最后遍历右子树的方式，直到二叉树为空则返回！
 
 遍历的方式又主要分为递归和迭代的方式，其具体实现如下所示。
 
-### 1. 递归
+### 递归
 
 ```java
 public ArrayList<Integer> preOrderReverse(TreeNode root){
@@ -71,7 +59,7 @@ public void preOrder(TreeNode root, ArrayList<Integer> list){
 
 ```
 
-### 2. 迭代
+### 迭代
 
 ```java
 /**
@@ -107,13 +95,13 @@ public ArrayList<Integer> preOrderReverse(TreeNode root){
 
 
 
-## 四、中序遍历
+## 中序遍历
 
 首先遍历左子树，然后访问根节点，最后再遍历右子树。而在遍历左右子树时，仍然按照先遍历左子树，然后访问根节点，最后遍历右子树的方式，直到二叉树为空则返回！
 
 遍历的方式又主要分为递归和迭代的方式，其具体实现如下所示。
 
-### 1. 递归
+### 递归
 
 ```java
 public ArrayList<Integer> inOrderReverse(TreeNode root){
@@ -134,7 +122,7 @@ public void inOrder(TreeNode root, ArrayList<Integer> list){
 }
 ```
 
-### 2. 迭代
+### 迭代
 
 ```java
 /**
@@ -168,13 +156,13 @@ public ArrayList<Integer> inOrderReverse(TreeNode root){
 
 
 
-## 四、后序遍历
+## 后序遍历
 
 后序遍历首先遍历左子树，然后遍历右子树，最后访问根结点，在遍历左、右子树时，仍然先遍历左子树，然后遍历右子树，最后遍历根结点，直到二叉树为空则返回！
 
 遍历的方式又主要分为递归和迭代的方式，其具体实现如下所示。
 
-### 1. 递归
+###  递归
 
 ```java
 public ArrayList<Integer> postOrderReverse(TreeNode root){
@@ -195,7 +183,7 @@ public void postOrder(TreeNode root, ArrayList<Integer> list){
 }
 ```
 
-### 2. 迭代
+###  迭代
 
 ```java
 public ArrayList<Integer> postOrderReverse(TreeNode root){
@@ -230,13 +218,13 @@ public ArrayList<Integer> postOrderReverse(TreeNode root){
 }
 ```
 
-## 五、层次遍历
+## 层次遍历
 
 层次遍历也叫做广度优先遍历，它会优先访问离根节点最近的节点，其实现一般借助队列实现。
 
 遍历的方式又主要分为递归和迭代的方式，其具体实现如下所示。
 
-### 1. 递归
+### 递归
 
 ```java
 public List<List<Integer>> levelOrder(TreeNode root) {
@@ -273,7 +261,7 @@ public void dfs(int index, TreeNode root, List<List<Integer>> lists){
 }
 ```
 
-### 2. 迭代
+### 迭代
 
 ```java
 ArrayList<ArrayList<Integer>> levelOrder(TreeNode root){
@@ -311,6 +299,6 @@ ArrayList<ArrayList<Integer>> levelOrder(TreeNode root){
 }
 ```
 
-## 六、总结
+## 总结
 
 以上就是数据结构二叉树的 4 种遍历，如果你有更多关于各种遍历的实现，欢迎留言交流呀！
\ No newline at end of file
diff --git a/src/cs-wiki/algo/README.md b/src/cs-wiki/algo/README.md
new file mode 100644
index 0000000000..9cd3dcfdb1
--- /dev/null
+++ b/src/cs-wiki/algo/README.md
@@ -0,0 +1,7 @@
+---
+title: 数据结构与算法
+index: false
+icon: iconfont icon-algo
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/62695a4f4c75d20ffe9fe9d8ceed9409.webp b/src/cs-wiki/algo/assets/20220503-datastructure-intro/62695a4f4c75d20ffe9fe9d8ceed9409.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/62695a4f4c75d20ffe9fe9d8ceed9409.webp
rename to src/cs-wiki/algo/assets/20220503-datastructure-intro/62695a4f4c75d20ffe9fe9d8ceed9409.webp
diff --git a/docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/80c28630afe9c89d027508a1967800da.webp b/src/cs-wiki/algo/assets/20220503-datastructure-intro/80c28630afe9c89d027508a1967800da.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/80c28630afe9c89d027508a1967800da.webp
rename to src/cs-wiki/algo/assets/20220503-datastructure-intro/80c28630afe9c89d027508a1967800da.webp
diff --git a/docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/88cda2c2c4eb77527c45bdf0056b1ffb.webp b/src/cs-wiki/algo/assets/20220503-datastructure-intro/88cda2c2c4eb77527c45bdf0056b1ffb.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/88cda2c2c4eb77527c45bdf0056b1ffb.webp
rename to src/cs-wiki/algo/assets/20220503-datastructure-intro/88cda2c2c4eb77527c45bdf0056b1ffb.webp
diff --git a/docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/b0a4b84fa144ad40450d23b180fcb57c.webp b/src/cs-wiki/algo/assets/20220503-datastructure-intro/b0a4b84fa144ad40450d23b180fcb57c.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/b0a4b84fa144ad40450d23b180fcb57c.webp
rename to src/cs-wiki/algo/assets/20220503-datastructure-intro/b0a4b84fa144ad40450d23b180fcb57c.webp
diff --git a/docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/cfe40f6664fc47c0dc21071793c47e20.webp b/src/cs-wiki/algo/assets/20220503-datastructure-intro/cfe40f6664fc47c0dc21071793c47e20.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/cfe40f6664fc47c0dc21071793c47e20.webp
rename to src/cs-wiki/algo/assets/20220503-datastructure-intro/cfe40f6664fc47c0dc21071793c47e20.webp
diff --git a/docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/d95e189edce34a3181e280591e2a1c05.webp b/src/cs-wiki/algo/assets/20220503-datastructure-intro/d95e189edce34a3181e280591e2a1c05.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/d95e189edce34a3181e280591e2a1c05.webp
rename to src/cs-wiki/algo/assets/20220503-datastructure-intro/d95e189edce34a3181e280591e2a1c05.webp
diff --git a/docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/f6ee7904c8a2823415590e57ef43b9ba.webp b/src/cs-wiki/algo/assets/20220503-datastructure-intro/f6ee7904c8a2823415590e57ef43b9ba.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/f6ee7904c8a2823415590e57ef43b9ba.webp
rename to src/cs-wiki/algo/assets/20220503-datastructure-intro/f6ee7904c8a2823415590e57ef43b9ba.webp
diff --git a/docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/fd5a3ceeeafd79f4733640deaa23e6b0.webp b/src/cs-wiki/algo/assets/20220503-datastructure-intro/fd5a3ceeeafd79f4733640deaa23e6b0.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/20220503-datastructure-intro/fd5a3ceeeafd79f4733640deaa23e6b0.webp
rename to src/cs-wiki/algo/assets/20220503-datastructure-intro/fd5a3ceeeafd79f4733640deaa23e6b0.webp
diff --git a/docs/src/cs-wiki/algo/assets/20220511-algo-intro/d05765ff2a97166cb1abd4612906bed6.webp b/src/cs-wiki/algo/assets/20220511-algo-intro/d05765ff2a97166cb1abd4612906bed6.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/20220511-algo-intro/d05765ff2a97166cb1abd4612906bed6.webp
rename to src/cs-wiki/algo/assets/20220511-algo-intro/d05765ff2a97166cb1abd4612906bed6.webp
diff --git a/docs/src/cs-wiki/algo/assets/20220512-time-space/dd6b7dfb2c46cd7119e21d59de2f1705.webp b/src/cs-wiki/algo/assets/20220512-time-space/dd6b7dfb2c46cd7119e21d59de2f1705.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/20220512-time-space/dd6b7dfb2c46cd7119e21d59de2f1705.webp
rename to src/cs-wiki/algo/assets/20220512-time-space/dd6b7dfb2c46cd7119e21d59de2f1705.webp
diff --git a/docs/src/cs-wiki/algo/assets/20220515-linkedlist/cac197c9b025943ec3248c259fe5fcfd.webp b/src/cs-wiki/algo/assets/20220515-linkedlist/cac197c9b025943ec3248c259fe5fcfd.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/20220515-linkedlist/cac197c9b025943ec3248c259fe5fcfd.webp
rename to src/cs-wiki/algo/assets/20220515-linkedlist/cac197c9b025943ec3248c259fe5fcfd.webp
diff --git a/docs/src/cs-wiki/algo/assets/20220515-linkedlist/e4b67a02887add618a56cb99721b7753.webp b/src/cs-wiki/algo/assets/20220515-linkedlist/e4b67a02887add618a56cb99721b7753.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/20220515-linkedlist/e4b67a02887add618a56cb99721b7753.webp
rename to src/cs-wiki/algo/assets/20220515-linkedlist/e4b67a02887add618a56cb99721b7753.webp
diff --git a/docs/src/cs-wiki/algo/assets/202205170-binary-tree-traverse/37daa9b9896f27f71d9bccfae85dee6d.webp b/src/cs-wiki/algo/assets/202205170-binary-tree-traverse/37daa9b9896f27f71d9bccfae85dee6d.webp
similarity index 100%
rename from docs/src/cs-wiki/algo/assets/202205170-binary-tree-traverse/37daa9b9896f27f71d9bccfae85dee6d.webp
rename to src/cs-wiki/algo/assets/202205170-binary-tree-traverse/37daa9b9896f27f71d9bccfae85dee6d.webp
diff --git a/src/cs-wiki/composition/README.md b/src/cs-wiki/composition/README.md
new file mode 100644
index 0000000000..45aefcc250
--- /dev/null
+++ b/src/cs-wiki/composition/README.md
@@ -0,0 +1,7 @@
+---
+title: 组成原理                     
+index: false
+icon: iconfont icon-flow
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/src/cs-wiki/network/README.md b/src/cs-wiki/network/README.md
new file mode 100644
index 0000000000..4c18a676cf
--- /dev/null
+++ b/src/cs-wiki/network/README.md
@@ -0,0 +1,7 @@
+---
+title: 计算机网络                           
+index: false
+icon: fa-solid fa-wifi
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/src/cs-wiki/system/README.md b/src/cs-wiki/system/README.md
new file mode 100644
index 0000000000..add1cd6ddb
--- /dev/null
+++ b/src/cs-wiki/system/README.md
@@ -0,0 +1,7 @@
+---
+title: 操作系统  
+index: false
+icon: iconfont icon-system
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/src/framework/README.md b/src/framework/README.md
new file mode 100644
index 0000000000..5960c7d684
--- /dev/null
+++ b/src/framework/README.md
@@ -0,0 +1,51 @@
+---
+title: 框架｜中间件
+index: false
+icon: iconfont icon-framework
+---
+
+## Spring
+
+1. [Spring 系列：简介](spring/20200720-intro.md)
+2. [Spring 系列：依赖注入](spring/20200724-di.md)
+3. [Spring 系列：注解详解](spring/20210521-annotation.md)
+4. [Spring 系列：IoC 大揭秘](spring/20200723-ioc.md)
+5. [Spring 系列：IoC 简介及入门实例（XML 版）](spring/20220428-ioc-xml.md)
+6. [Spring 系列：Bean 详解](spring/20220429-bean.md)
+
+## MyBatis
+
+1. [MyBatis 系列：简介](mybatis/20200719-intro.md)
+2. [MyBatis 系列：入门实例](mybatis/20200720-quick-start.md)
+3. [MyBatis 系列：注解开发](mybatis/20200721-annotation.md)
+4. [MyBatis 系列：一二级缓存](mybatis/20200722-pri-sec-cache.md)
+5. [MyBatis 系列：代码生成器](mybatis/20211214-generator.md)
+
+## MyBatis Plus
+1. [MyBatis Plus 系列：简介及入门实例](mybatis-plus/20210807-intro.md)
+2. [MyBatis Plus 系列：日志配置及常用 CRUD](mybatis-plus/20210808-log-crud.md)
+
+## Spring Boot 2.7.x
+
+1. [Spring Boot 2.7.x：简介](springboot/2.7.x/20200520-intro.md)
+2. [Spring Boot 2.7.x：配置详解](springboot/2.7.x/20211003-config.md)
+3. [Spring Boot 2.7.x：创建项目的几种方式](springboot/2.7.x/20210811-create-ways.md)
+4. [Spring Boot 2.7.x：整合 JDBC Template 实例](springboot/2.7.x/20200730-jdbc.md)
+5. [Spring Boot 2.7.x：XML 方式整合 MyBatis 实例](springboot/2.7.x/20200726-xml-mybatis.md)
+6. [Spring Boot 2.7.x：注解方式整合 MyBatis 实例](springboot/2.7.x/20200727-annotation-mybatis.md)
+7. [Spring Boot 2.7.x：注解方式整合 Mybatis + PageHelper 分页实例](springboot/2.7.x/20200728-annotation-mybatis-pagehelper.md)
+8. [Spring Boot 2.7.x：整合 FreeMarker 实例](springboot/2.7.x/20211130-freemaker.md)
+9. [Spring Boot 2.7.x：整合 Thymeleaf 实例](springboot/2.7.x/20200729-thymeleaf.md)
+10. [Spring Boot 2.7.x：集成 Swagger2](springboot/2.7.x/20220106-swagger2.md)
+11. [Spring Boot 2.7.x：集成 Swagger3](springboot/2.7.x/20220110-swagger3.md)
+12. [Spring Boot 2.7.x：集成 Knife4j](springboot/2.7.x/20220430-knife4j.md)
+13. [Spring Boot 2.7.x：集成 Security 入门小实例](springboot/2.7.x/20220604-security.md)
+
+## Redis
+
+1. [Redis：简介](redis/20210821-intro.md)
+1. [Redis：持久化](redis/20221016-persistence.md)
+
+## Nginx
+
+1. [简介与环境搭建](nginx/20221016-intro-install.md)
\ No newline at end of file
diff --git a/docs/src/framework/maven/20200707-intro.md b/src/framework/maven/20200707-intro.md
similarity index 88%
rename from docs/src/framework/maven/20200707-intro.md
rename to src/framework/maven/20200707-intro.md
index 95007f01dd..da75b0609d 100644
--- a/docs/src/framework/maven/20200707-intro.md
+++ b/src/framework/maven/20200707-intro.md
@@ -6,20 +6,7 @@ tag: Maven
 
 # 简介
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## 一、前言
+## 前言
 
 在我们之前的开发过程中，往往会遇到以下问题：
 
@@ -32,7 +19,7 @@ tag: Maven
 
 通过使用 Maven，我们就能将一个大型的项目拆分为多个工程。此外，通过 Maven，我们可以很方便的对各个 jar 包进行统一管理，而且它也能解决各个包之间的依赖关系。
 
-## 二、什么是 Maven
+## 什么是 Maven
 
 Maven 是一个项目管理工具，包含了一个项目对象模型（`Project Object Model`），反映在配置中就是 `pom.xml` 文件。其中包含了一个项目的生命周期、一个依赖管理系统，以及定义在项目生命周期阶段的插件（`plugin`）和目标（`goal`）。
 
@@ -41,7 +28,7 @@ Maven 是一个项目管理工具，包含了一个项目对象模型（`Project
 -   **依赖管理**：提供对 `jar` 的统一管理。（Maven 提供了一个中央仓库，当我们在项目中添加完依赖后，Maven 就会自动去中央仓库中下载相关依赖）。
 -   **项目构建**：Maven 提供对项目的编译、测试、打包、部署、上传到私服等。
 
-## 三、Maven 安装
+## Maven 安装
 
 Maven 属于 Java 项目，因此使用 Maven 必须依赖于 JDK。
 
@@ -87,7 +74,7 @@ mvn -v
 
 ![](assets/20200707-intro/e36aee427c695641584f215e3d97145b.webp)
 
-## 四、Maven 目录结构
+## Maven 目录结构
 
 安装好 Maven 之后，其目录和内容如下，各目录内容如下：
 
@@ -109,9 +96,9 @@ mvn -v
 
 包含所有 Maven 运行时所需的 Java 类库，Maven 本身是分模块开发，所以里边有不同模块之类的类库。此外还包含了一些 Maven 用到的第三方依赖。
 
-## 五、Maven 配置
+## Maven 配置
 
-### 1. 仓库镜像配置
+### 仓库镜像配置
 
 通常安装好 Maven 之后就可以使用了，但是由于 Maven 的中央仓库服务器位于国外，国内使用网速较慢，所以我们最好将中央仓库换为国内的阿里云镜像。
 
@@ -128,7 +115,7 @@ mvn -v
 
 ![](assets/20200707-intro/940699ffc4d8704d0370faa22fa337e2.webp)
 
-### 2. 本地仓库配置
+### 本地仓库配置
 
 安装好 Maven 后，本地仓库默认在 `当前用户名/.m2/repository` 下，但是这个位置比较隐蔽，所以建议自定义为其他路径：
 
@@ -140,6 +127,6 @@ mvn -v
 
 ![](assets/20200707-intro/c73f0bb7e00acb4eece937dd37afe39e.webp)
 
-## 六、总结
+## 总结
 
 好了，以上就是关于我们日常项目开发中经常使用的 Maven 的相关知识点了。文章介绍了 Maven 是干什么的，以及我们应该如何安装 Maven 和安装后常见的一些设置，最后则是对 Maven 的目录结构进行详解。而在下一篇博客中，我将讲述 Maven 中最常见的命令，看看大家都是用什么命令来进行工作的吧！
diff --git a/docs/src/framework/maven/20200708-command.md b/src/framework/maven/20200708-command.md
similarity index 87%
rename from docs/src/framework/maven/20200708-command.md
rename to src/framework/maven/20200708-command.md
index 94fea3f104..44420485ed 100644
--- a/docs/src/framework/maven/20200708-command.md
+++ b/src/framework/maven/20200708-command.md
@@ -6,23 +6,13 @@ tag: Maven
 
 # 常用命令
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-## 一、前言
+## 前言
 
 上一篇文章中我们已经介绍了什么是 Maven，以及如何进行 Maven 的安装，最后还对 Maven 安装后的简单配置进行了讲解。今天我们就主要来看看 Maven 中的核心概念以及 Maven 在日常使用中常用的命令。
 
-## 二、构建
+## Maven 核心
+
+## 构建
 
 所谓构建，就是指项目的构建，它是面向过程的，是一系列步骤的总和，主要包括项目代码的编译、运行、测试、打包以及部署等等。而 Maven 所支持的构建主要有如下几种：
 
@@ -34,7 +24,7 @@ tag: Maven
 6.   **安装**：把打包好的文件安装到本地仓库；
 7.   **部署**：让程序跑起来。
 
-## 三、Maven 核心概念
+### Maven 核心概念
 
 1.   **pom**：项目对象模型，Maven 将项目当做一个模型，用于控制 Maven 构建项目的过程，通过它来管理 jar 依赖；
 2.   **目录结构**：Maven 的目录和文件位置都是约定俗成的；
@@ -46,7 +36,7 @@ tag: Maven
 8.   **继承**
 9.   **聚合**
 
-## 四、常用命令
+## 常用命令
 
 Maven 中的一些常见命令如下：
 
@@ -59,7 +49,7 @@ Maven 中的一些常见命令如下：
 | `mvn install` | 安装 | 手动向本地仓库安装一个 `jar`                   |
 | `mvn deploy`  | 上传 | 将 `jar` 上传到私服                            |
 
-## 五、利用 Archetype 来生成项目骨架
+## 利用 Archetype 来生成项目骨架
 
 实际上，为了更快捷的创建 Maven 项目骨架，我们可以使用 maven archetype 来创建，创建过程如下：
 
@@ -85,7 +75,7 @@ mvn archetype:generate
 
 5.  最后确认无误后，回车生成即可。
 
-## 六、项目结构
+## 项目结构
 
 项目生成后的目录中主要包含如下文件：
 
@@ -118,6 +108,8 @@ HelloWorld/
 
 ![](assets/20200708-commond/ab5e4ae829de4056bdc3689966cffb7d.webp)
 
-## 七、总结
+
+
+## 总结
 
 好了，以上就是 Maven 中的一些常用命令和如何利用 Archetype 来生成项目骨架，以及利用 Maven 所生成的项目的总体结构了。如果你觉得对你有所帮助，还请点赞关注一波哦。今天就到此为止了，下一期我们继续来看如何利用 Maven 进行依赖管理，敬请期待吧！
diff --git a/docs/src/framework/maven/20200709-pom.md b/src/framework/maven/20200709-pom.md
similarity index 89%
rename from docs/src/framework/maven/20200709-pom.md
rename to src/framework/maven/20200709-pom.md
index d1d663b420..0b6358119a 100644
--- a/docs/src/framework/maven/20200709-pom.md
+++ b/src/framework/maven/20200709-pom.md
@@ -6,25 +6,11 @@ tag: Maven
 
 # 仓库、坐标及依赖管理
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## 一、前言
+## 前言
 
 在我们创建使用 Maven 项目的过程中，当需要用到第三方的插件时，都是通过依赖管理来达成，也就是 Maven 项目中必有的 `pom.xml` 文件。POM（Project Object Model），即 **项目对象模型**，其中定义了 Maven 项目的形式。因此，`pom.xml` 可以看做是 Maven 项目中的导航。
 
-## 二、Maven 仓库
+## Maven 仓库
 
 所谓仓库，就和我们平常说的粮仓啥的差不多，其实都是用来存放东西的。只不过在 Maven 项目中，仓库使用来存放我们项目所使用的 jar 包以及 Maven 所使用的各种 jar 包的。
 
@@ -42,7 +28,7 @@ tag: Maven
 
 通常来讲，当我们要使用 Maven 仓库中的资源时，是不需要我们去人为干预的。假设我们要使用某一个驱动，我们首先去 `pom.xml` 中进行配置，接着 Maven 将自动先去检查我们的本地仓库中是否存在该资源，如果没有，那么就到私服中午查找，如果还没有找到，那么就到中央仓库镜像中去查询，最后如果连镜像仓库中也没法找到，那就只有到中央仓库去进行搜索了。
 
-## 三、Maven 坐标
+## Maven 坐标
 
 坐标，其实就相当于我们人的身份证，它是唯一的，用于标识一个项目。一个坐标的组成一般有如下几部分，前三者必须，`packaging` 可选，`classifier` 不能直接定义。
 
@@ -74,13 +60,13 @@ tag: Maven
 
 
 
-## 四、依赖冲突
+## 依赖冲突
 
-### 1. 冲突产生原因
+### 冲突产生原因
 
 Maven 项目中，通常都会定义血多 `dependency`，每个 `dependency` 内部也会定义它的 `dependency`，而有时各个依赖之间会产生冲突，冲突的原因通常主要是 **由于 `jar` 包依赖的传递性**，如果在一个项目中同时引入了一个依赖的不同版本，就可能导致依赖冲突。
 
-### 2. 解决冲突的办法
+### 解决冲突的办法
 
 当冲突产生时，需要如何解决呢？通常我们有两种处理策略：
 
@@ -107,6 +93,6 @@ Maven 项目中，通常都会定义血多 `dependency`，每个 `dependency` 
 </dependency>
 ```
 
-## 五、总结
+## 总结
 
 今天关于 Maven 的仓库和坐标的相关知识，以及 Maven 中依赖产生冲突的原因和如何解决冲突的内容就到此结束了。个人水平有限可能有些遗漏的方面，如果你有更多关于以上方面的知识，欢迎评论交流。既然差不多讲完了 Maven 中的核心知识点，那么下一次我们就来看看怎么使用 Maven 来进行实战吧。
diff --git a/docs/src/framework/maven/20200710-idea-maven.md b/src/framework/maven/20200710-idea-maven.md
similarity index 88%
rename from docs/src/framework/maven/20200710-idea-maven.md
rename to src/framework/maven/20200710-idea-maven.md
index 42e2515314..5605e92712 100644
--- a/docs/src/framework/maven/20200710-idea-maven.md
+++ b/src/framework/maven/20200710-idea-maven.md
@@ -6,24 +6,11 @@ tag: Maven
 
 # IDEA 创建 Maven 项目
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-## 一、前言
+## 前言
 
 之前我们已经学习过 Maven 是什么，我们可以用它来干什么。接着我们又介绍了如何安装和配置 Maven，再接着，我们又了解了 Maven 中常用的一些命令以及如何利用 Archetype 来生成项目骨架，并对利用 Maven 所生成项目的结构进行了描述。最后则是 Maven 中的一些核心概念和如何进行依赖管理，并说明当依赖产生冲突时，应该如何解决。但以上始终还是停留在概念的阶段，并未进入我们实际的开发中。那么今天的内容就主要来看看，我们如何利用 IDEA 搭配 Maven 来开发一个简单的 Demo。
 
-## 二、IDEA 中的 Maven 配置
+## IDEA 中的 Maven 配置
 
 依次进入 `File -> Settings -> Build,Execution,Deployment -> Build Tools -> Maven`，IDEA 默认使用它自带的 Maven，我们可以自定义为自己的 Maven，更加方便管理。
 
@@ -37,7 +24,7 @@ tag: Maven
 
 ![](assets/20200710-idea-maven/3a8f240387f0be16d9f1161fc17119d1.webp)
 
-## 三、使用 IDEA 创建 Maven 项目
+## 使用 IDEA 创建 Maven 项目
 
 接下来我们就来看看如何使用 IDEA 创建 Maven 项目，具体可以分为如下步骤：
 
@@ -90,11 +77,11 @@ ProjectName/
 
 5.  到上一步之后，一个新的 Maven 项目就完成了，接下来就是去编写业务代码了。
 
-## 四、业务代码编写
+## 业务代码编写
 
 上面已经学会了如何创建一个 Maven 项目，接下来就是编写业务代码了，我们以最经典的 `HelloWorld` 为例。
 
-### 1. 项目主代码
+### 项目主代码
 
 项目主代码会打包到最终构件中，默认位于 `src/main/java` 目录下，我们创建一个 `HelloWorld` 的主类；
 
@@ -120,7 +107,7 @@ public class HelloWorld {
 }
 ```
 
-### 2. 项目测试代码
+### 项目测试代码
 
 要对主代码进行测试，那么则需要编写测试代码，测试代码默认位于 `src/test/java` 目录，要对指定主代码进行测试，编写测试代码时要和主代码保持相同的目录结构。如上述主代码位于 `com.cunyu.helloworld` 包下，那么测试代码也应该位于 `com.cunyu.helloworld` 包下，只是根目录不同。而要进行测试，通常首选 JUnit 单元测试。所以编写测试代码对主代码进行测试主要有如下步骤。
 
@@ -169,7 +156,7 @@ public class HelloWorldTest {
 }
 ```
 
-## 五、总结
+## 总结
 
 经过上边的项目创建以及业务代码编写之后，一个 Maven 版的 `Hello World` 项目到此就结束了。是不是很简单呢，赶快自己动手试试吧！
 
diff --git a/src/framework/maven/README.md b/src/framework/maven/README.md
new file mode 100644
index 0000000000..a4e75c7b54
--- /dev/null
+++ b/src/framework/maven/README.md
@@ -0,0 +1,7 @@
+---
+title: Maven  
+index: false
+icon: iconfont icon-maven
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/framework/maven/assets/20200707-intro/07b231ac8f0c6addd6c9baba7e69bae4.webp b/src/framework/maven/assets/20200707-intro/07b231ac8f0c6addd6c9baba7e69bae4.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200707-intro/07b231ac8f0c6addd6c9baba7e69bae4.webp
rename to src/framework/maven/assets/20200707-intro/07b231ac8f0c6addd6c9baba7e69bae4.webp
diff --git a/docs/src/framework/maven/assets/20200707-intro/168fbc6eee963079342fa276d8b9aa8a.webp b/src/framework/maven/assets/20200707-intro/168fbc6eee963079342fa276d8b9aa8a.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200707-intro/168fbc6eee963079342fa276d8b9aa8a.webp
rename to src/framework/maven/assets/20200707-intro/168fbc6eee963079342fa276d8b9aa8a.webp
diff --git a/docs/src/framework/maven/assets/20200707-intro/27d6940eb47536577ab32d83d880752e.webp b/src/framework/maven/assets/20200707-intro/27d6940eb47536577ab32d83d880752e.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200707-intro/27d6940eb47536577ab32d83d880752e.webp
rename to src/framework/maven/assets/20200707-intro/27d6940eb47536577ab32d83d880752e.webp
diff --git a/docs/src/framework/maven/assets/20200707-intro/6761f1ec34dbb0f014b10d8134424a64.webp b/src/framework/maven/assets/20200707-intro/6761f1ec34dbb0f014b10d8134424a64.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200707-intro/6761f1ec34dbb0f014b10d8134424a64.webp
rename to src/framework/maven/assets/20200707-intro/6761f1ec34dbb0f014b10d8134424a64.webp
diff --git a/docs/src/framework/maven/assets/20200707-intro/7723ba221f40ec7f0d5beefb7542f47a.webp b/src/framework/maven/assets/20200707-intro/7723ba221f40ec7f0d5beefb7542f47a.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200707-intro/7723ba221f40ec7f0d5beefb7542f47a.webp
rename to src/framework/maven/assets/20200707-intro/7723ba221f40ec7f0d5beefb7542f47a.webp
diff --git a/docs/src/framework/maven/assets/20200707-intro/8db1d5da10c87044b037bb192d00bea2.webp b/src/framework/maven/assets/20200707-intro/8db1d5da10c87044b037bb192d00bea2.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200707-intro/8db1d5da10c87044b037bb192d00bea2.webp
rename to src/framework/maven/assets/20200707-intro/8db1d5da10c87044b037bb192d00bea2.webp
diff --git a/docs/src/framework/maven/assets/20200707-intro/940699ffc4d8704d0370faa22fa337e2.webp b/src/framework/maven/assets/20200707-intro/940699ffc4d8704d0370faa22fa337e2.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200707-intro/940699ffc4d8704d0370faa22fa337e2.webp
rename to src/framework/maven/assets/20200707-intro/940699ffc4d8704d0370faa22fa337e2.webp
diff --git a/docs/src/framework/maven/assets/20200707-intro/c73f0bb7e00acb4eece937dd37afe39e.webp b/src/framework/maven/assets/20200707-intro/c73f0bb7e00acb4eece937dd37afe39e.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200707-intro/c73f0bb7e00acb4eece937dd37afe39e.webp
rename to src/framework/maven/assets/20200707-intro/c73f0bb7e00acb4eece937dd37afe39e.webp
diff --git a/docs/src/framework/maven/assets/20200707-intro/e36aee427c695641584f215e3d97145b.webp b/src/framework/maven/assets/20200707-intro/e36aee427c695641584f215e3d97145b.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200707-intro/e36aee427c695641584f215e3d97145b.webp
rename to src/framework/maven/assets/20200707-intro/e36aee427c695641584f215e3d97145b.webp
diff --git a/docs/src/framework/maven/assets/20200708-commond/1a9cceb094384ec09ac179bb2e7adc17.webp b/src/framework/maven/assets/20200708-commond/1a9cceb094384ec09ac179bb2e7adc17.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200708-commond/1a9cceb094384ec09ac179bb2e7adc17.webp
rename to src/framework/maven/assets/20200708-commond/1a9cceb094384ec09ac179bb2e7adc17.webp
diff --git a/docs/src/framework/maven/assets/20200708-commond/273f43dbaa504388b0e754ac8177bb78.webp b/src/framework/maven/assets/20200708-commond/273f43dbaa504388b0e754ac8177bb78.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200708-commond/273f43dbaa504388b0e754ac8177bb78.webp
rename to src/framework/maven/assets/20200708-commond/273f43dbaa504388b0e754ac8177bb78.webp
diff --git a/docs/src/framework/maven/assets/20200708-commond/4e7412c814e44f3b809f332f7aa4bddc.webp b/src/framework/maven/assets/20200708-commond/4e7412c814e44f3b809f332f7aa4bddc.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200708-commond/4e7412c814e44f3b809f332f7aa4bddc.webp
rename to src/framework/maven/assets/20200708-commond/4e7412c814e44f3b809f332f7aa4bddc.webp
diff --git a/docs/src/framework/maven/assets/20200708-commond/ab5e4ae829de4056bdc3689966cffb7d.webp b/src/framework/maven/assets/20200708-commond/ab5e4ae829de4056bdc3689966cffb7d.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200708-commond/ab5e4ae829de4056bdc3689966cffb7d.webp
rename to src/framework/maven/assets/20200708-commond/ab5e4ae829de4056bdc3689966cffb7d.webp
diff --git a/docs/src/framework/maven/assets/20200708-commond/d46f4cc09ab616cd9ce015c1c66c2ed6.webp b/src/framework/maven/assets/20200708-commond/d46f4cc09ab616cd9ce015c1c66c2ed6.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200708-commond/d46f4cc09ab616cd9ce015c1c66c2ed6.webp
rename to src/framework/maven/assets/20200708-commond/d46f4cc09ab616cd9ce015c1c66c2ed6.webp
diff --git a/docs/src/framework/maven/assets/20200708-commond/fd61e6ff18e94050c5ab4998cc1301af.webp b/src/framework/maven/assets/20200708-commond/fd61e6ff18e94050c5ab4998cc1301af.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200708-commond/fd61e6ff18e94050c5ab4998cc1301af.webp
rename to src/framework/maven/assets/20200708-commond/fd61e6ff18e94050c5ab4998cc1301af.webp
diff --git a/docs/src/framework/maven/assets/20200710-idea-maven/3a8f240387f0be16d9f1161fc17119d1.webp b/src/framework/maven/assets/20200710-idea-maven/3a8f240387f0be16d9f1161fc17119d1.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200710-idea-maven/3a8f240387f0be16d9f1161fc17119d1.webp
rename to src/framework/maven/assets/20200710-idea-maven/3a8f240387f0be16d9f1161fc17119d1.webp
diff --git a/docs/src/framework/maven/assets/20200710-idea-maven/5f4bab56f2bb15926dbbf4331bd1f4a9.webp b/src/framework/maven/assets/20200710-idea-maven/5f4bab56f2bb15926dbbf4331bd1f4a9.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200710-idea-maven/5f4bab56f2bb15926dbbf4331bd1f4a9.webp
rename to src/framework/maven/assets/20200710-idea-maven/5f4bab56f2bb15926dbbf4331bd1f4a9.webp
diff --git a/docs/src/framework/maven/assets/20200710-idea-maven/6d79685d9e783d69bc0eaccb27bf22bd.webp b/src/framework/maven/assets/20200710-idea-maven/6d79685d9e783d69bc0eaccb27bf22bd.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200710-idea-maven/6d79685d9e783d69bc0eaccb27bf22bd.webp
rename to src/framework/maven/assets/20200710-idea-maven/6d79685d9e783d69bc0eaccb27bf22bd.webp
diff --git a/docs/src/framework/maven/assets/20200710-idea-maven/ec34f6c52bd77c208e315f56d1ca98de.webp b/src/framework/maven/assets/20200710-idea-maven/ec34f6c52bd77c208e315f56d1ca98de.webp
similarity index 100%
rename from docs/src/framework/maven/assets/20200710-idea-maven/ec34f6c52bd77c208e315f56d1ca98de.webp
rename to src/framework/maven/assets/20200710-idea-maven/ec34f6c52bd77c208e315f56d1ca98de.webp
diff --git a/docs/src/framework/mybatis-plus/20210807-intro.md b/src/framework/mybatis-plus/20210807-intro.md
similarity index 96%
rename from docs/src/framework/mybatis-plus/20210807-intro.md
rename to src/framework/mybatis-plus/20210807-intro.md
index f34674c401..507bfe6b28 100644
--- a/docs/src/framework/mybatis-plus/20210807-intro.md
+++ b/src/framework/mybatis-plus/20210807-intro.md
@@ -8,19 +8,6 @@ date: 2021-08-07
 
 # 简介及入门实例
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 
diff --git a/docs/src/framework/mybatis-plus/20210808-log-crud.md b/src/framework/mybatis-plus/20210808-log-crud.md
similarity index 98%
rename from docs/src/framework/mybatis-plus/20210808-log-crud.md
rename to src/framework/mybatis-plus/20210808-log-crud.md
index fafbda61dd..daf57b4413 100644
--- a/docs/src/framework/mybatis-plus/20210808-log-crud.md
+++ b/src/framework/mybatis-plus/20210808-log-crud.md
@@ -8,19 +8,6 @@ date: 2021-08-08
 
 # 日志配置及常用 CRUD
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 上一篇文章中我们讲了 Mybatis-Plus 的定义以及相关特点，并从零开始编写了一个 SpringBoot + Mybatis-Plus 的实例。今天我们就来看看，如何利用 MP 来实现对数据库的增删改查。
diff --git a/src/framework/mybatis-plus/README.md b/src/framework/mybatis-plus/README.md
new file mode 100644
index 0000000000..763b43decb
--- /dev/null
+++ b/src/framework/mybatis-plus/README.md
@@ -0,0 +1,7 @@
+---
+title: MyBatis Plus  
+index: false
+icon: iconfont icon-mybatisplus
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/framework/mybatis-plus/assets/20210807-intro/1ce4ce911c2b194804ebeb96c69172b4.webp b/src/framework/mybatis-plus/assets/20210807-intro/1ce4ce911c2b194804ebeb96c69172b4.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210807-intro/1ce4ce911c2b194804ebeb96c69172b4.webp
rename to src/framework/mybatis-plus/assets/20210807-intro/1ce4ce911c2b194804ebeb96c69172b4.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210807-intro/220064cf38a81109548fee8b591198e8.webp b/src/framework/mybatis-plus/assets/20210807-intro/220064cf38a81109548fee8b591198e8.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210807-intro/220064cf38a81109548fee8b591198e8.webp
rename to src/framework/mybatis-plus/assets/20210807-intro/220064cf38a81109548fee8b591198e8.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210807-intro/66c7ae42898111a5b20ba9f586fc557c.webp b/src/framework/mybatis-plus/assets/20210807-intro/66c7ae42898111a5b20ba9f586fc557c.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210807-intro/66c7ae42898111a5b20ba9f586fc557c.webp
rename to src/framework/mybatis-plus/assets/20210807-intro/66c7ae42898111a5b20ba9f586fc557c.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210807-intro/87f66154129c854d2c03d23d39020863.webp b/src/framework/mybatis-plus/assets/20210807-intro/87f66154129c854d2c03d23d39020863.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210807-intro/87f66154129c854d2c03d23d39020863.webp
rename to src/framework/mybatis-plus/assets/20210807-intro/87f66154129c854d2c03d23d39020863.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/0bf78710d200c2f7535ade0f232646ea.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/0bf78710d200c2f7535ade0f232646ea.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/0bf78710d200c2f7535ade0f232646ea.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/0bf78710d200c2f7535ade0f232646ea.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/0c43ff686889a7ad13040a12bd011f6a.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/0c43ff686889a7ad13040a12bd011f6a.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/0c43ff686889a7ad13040a12bd011f6a.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/0c43ff686889a7ad13040a12bd011f6a.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/0d603e74557b79206aaf184530f41007.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/0d603e74557b79206aaf184530f41007.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/0d603e74557b79206aaf184530f41007.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/0d603e74557b79206aaf184530f41007.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/0e4ce5565c45b3af2113ba6fa265ae85.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/0e4ce5565c45b3af2113ba6fa265ae85.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/0e4ce5565c45b3af2113ba6fa265ae85.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/0e4ce5565c45b3af2113ba6fa265ae85.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/12764416856e4a9194c4b7046683ecd4~tplv-k3u1fbpfcp-zoom-1.image b/src/framework/mybatis-plus/assets/20210808-log-crud/12764416856e4a9194c4b7046683ecd4~tplv-k3u1fbpfcp-zoom-1.image
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/12764416856e4a9194c4b7046683ecd4~tplv-k3u1fbpfcp-zoom-1.image
rename to src/framework/mybatis-plus/assets/20210808-log-crud/12764416856e4a9194c4b7046683ecd4~tplv-k3u1fbpfcp-zoom-1.image
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/13e0ccaf7974bde5b83c98bd9c00a5e9.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/13e0ccaf7974bde5b83c98bd9c00a5e9.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/13e0ccaf7974bde5b83c98bd9c00a5e9.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/13e0ccaf7974bde5b83c98bd9c00a5e9.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/13fa53d7ce388606a0dba6caa7884791.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/13fa53d7ce388606a0dba6caa7884791.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/13fa53d7ce388606a0dba6caa7884791.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/13fa53d7ce388606a0dba6caa7884791.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/176bd864bf1fdeaa40b52a971a0c6bf0.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/176bd864bf1fdeaa40b52a971a0c6bf0.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/176bd864bf1fdeaa40b52a971a0c6bf0.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/176bd864bf1fdeaa40b52a971a0c6bf0.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/1bd07adc6afb9fa346f56563b97f3d20.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/1bd07adc6afb9fa346f56563b97f3d20.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/1bd07adc6afb9fa346f56563b97f3d20.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/1bd07adc6afb9fa346f56563b97f3d20.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/1ceaa41986d6c4df67c64613b13f292f.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/1ceaa41986d6c4df67c64613b13f292f.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/1ceaa41986d6c4df67c64613b13f292f.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/1ceaa41986d6c4df67c64613b13f292f.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/21bdde18446f1bc7ec886ec01e0aa8bc.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/21bdde18446f1bc7ec886ec01e0aa8bc.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/21bdde18446f1bc7ec886ec01e0aa8bc.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/21bdde18446f1bc7ec886ec01e0aa8bc.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/21c7a6ffa9423f11939a36d00b249933.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/21c7a6ffa9423f11939a36d00b249933.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/21c7a6ffa9423f11939a36d00b249933.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/21c7a6ffa9423f11939a36d00b249933.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/22fba4882741eaeee5c940d77b0131dc.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/22fba4882741eaeee5c940d77b0131dc.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/22fba4882741eaeee5c940d77b0131dc.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/22fba4882741eaeee5c940d77b0131dc.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/28761dbe6cb714bec1758a759fe5ec8b.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/28761dbe6cb714bec1758a759fe5ec8b.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/28761dbe6cb714bec1758a759fe5ec8b.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/28761dbe6cb714bec1758a759fe5ec8b.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/2bec29287ff01a73aaf20f8c23afe19a.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/2bec29287ff01a73aaf20f8c23afe19a.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/2bec29287ff01a73aaf20f8c23afe19a.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/2bec29287ff01a73aaf20f8c23afe19a.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/3590f21fa1cc05fb37090df84129487e.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/3590f21fa1cc05fb37090df84129487e.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/3590f21fa1cc05fb37090df84129487e.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/3590f21fa1cc05fb37090df84129487e.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/36a48ba2fee8f6a5800b14a36020a96a.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/36a48ba2fee8f6a5800b14a36020a96a.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/36a48ba2fee8f6a5800b14a36020a96a.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/36a48ba2fee8f6a5800b14a36020a96a.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/3b281656c97119c48bcc67ae039dd43f.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/3b281656c97119c48bcc67ae039dd43f.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/3b281656c97119c48bcc67ae039dd43f.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/3b281656c97119c48bcc67ae039dd43f.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/3cf55bdf99d6ca96218127840beb604a.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/3cf55bdf99d6ca96218127840beb604a.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/3cf55bdf99d6ca96218127840beb604a.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/3cf55bdf99d6ca96218127840beb604a.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/43147f95524c777df4ca9b6c9534f2bf.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/43147f95524c777df4ca9b6c9534f2bf.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/43147f95524c777df4ca9b6c9534f2bf.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/43147f95524c777df4ca9b6c9534f2bf.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/4c610fff64f2d26ecdde6de141613e7b.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/4c610fff64f2d26ecdde6de141613e7b.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/4c610fff64f2d26ecdde6de141613e7b.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/4c610fff64f2d26ecdde6de141613e7b.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/4f28d3ad476649f51c2d21ca67575b4c.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/4f28d3ad476649f51c2d21ca67575b4c.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/4f28d3ad476649f51c2d21ca67575b4c.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/4f28d3ad476649f51c2d21ca67575b4c.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/5996487ba47a09711b90c00741733206.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/5996487ba47a09711b90c00741733206.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/5996487ba47a09711b90c00741733206.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/5996487ba47a09711b90c00741733206.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/68924264cc41e5c2d46d432dc2e33149.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/68924264cc41e5c2d46d432dc2e33149.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/68924264cc41e5c2d46d432dc2e33149.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/68924264cc41e5c2d46d432dc2e33149.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/754b2aa42b70340c6d1ef359bf4957a1.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/754b2aa42b70340c6d1ef359bf4957a1.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/754b2aa42b70340c6d1ef359bf4957a1.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/754b2aa42b70340c6d1ef359bf4957a1.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/7781d31edd822234ef741751cc84403d.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/7781d31edd822234ef741751cc84403d.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/7781d31edd822234ef741751cc84403d.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/7781d31edd822234ef741751cc84403d.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/83c2fbbe1dd98236217aecee73168797.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/83c2fbbe1dd98236217aecee73168797.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/83c2fbbe1dd98236217aecee73168797.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/83c2fbbe1dd98236217aecee73168797.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/86a6bc3c0f430dab4efdcb583ddde74a.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/86a6bc3c0f430dab4efdcb583ddde74a.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/86a6bc3c0f430dab4efdcb583ddde74a.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/86a6bc3c0f430dab4efdcb583ddde74a.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/882f141e5b1b562300fd340e99dd1e74.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/882f141e5b1b562300fd340e99dd1e74.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/882f141e5b1b562300fd340e99dd1e74.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/882f141e5b1b562300fd340e99dd1e74.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/8ae3056bfe18e6a4f745a6c9ff509a30.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/8ae3056bfe18e6a4f745a6c9ff509a30.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/8ae3056bfe18e6a4f745a6c9ff509a30.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/8ae3056bfe18e6a4f745a6c9ff509a30.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/8ca0e6de77b33e31d83ac08480f40b5e.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/8ca0e6de77b33e31d83ac08480f40b5e.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/8ca0e6de77b33e31d83ac08480f40b5e.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/8ca0e6de77b33e31d83ac08480f40b5e.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/99b83c2bb2e50f9b687d2ccafe694a6c.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/99b83c2bb2e50f9b687d2ccafe694a6c.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/99b83c2bb2e50f9b687d2ccafe694a6c.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/99b83c2bb2e50f9b687d2ccafe694a6c.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/b79542a84e068a734cb25be93500e83c.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/b79542a84e068a734cb25be93500e83c.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/b79542a84e068a734cb25be93500e83c.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/b79542a84e068a734cb25be93500e83c.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/bb54a447984342587c7f179565fa04bd.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/bb54a447984342587c7f179565fa04bd.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/bb54a447984342587c7f179565fa04bd.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/bb54a447984342587c7f179565fa04bd.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/c3a783950d27aa75ae82a123cad3955b.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/c3a783950d27aa75ae82a123cad3955b.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/c3a783950d27aa75ae82a123cad3955b.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/c3a783950d27aa75ae82a123cad3955b.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/ca254977c9086653ab4b422b8809834c.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/ca254977c9086653ab4b422b8809834c.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/ca254977c9086653ab4b422b8809834c.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/ca254977c9086653ab4b422b8809834c.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/cc5f359bcbb2d4287e51e693c64320b5.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/cc5f359bcbb2d4287e51e693c64320b5.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/cc5f359bcbb2d4287e51e693c64320b5.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/cc5f359bcbb2d4287e51e693c64320b5.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/d074edd870e74a751570e165a2b442e3.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/d074edd870e74a751570e165a2b442e3.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/d074edd870e74a751570e165a2b442e3.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/d074edd870e74a751570e165a2b442e3.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/d165237c3ffaff0011de68da405520dc.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/d165237c3ffaff0011de68da405520dc.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/d165237c3ffaff0011de68da405520dc.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/d165237c3ffaff0011de68da405520dc.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/e00c5eec6db5fb177385f916593a5ddf.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/e00c5eec6db5fb177385f916593a5ddf.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/e00c5eec6db5fb177385f916593a5ddf.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/e00c5eec6db5fb177385f916593a5ddf.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/e2c6861eb9678452797bb6373e430b71.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/e2c6861eb9678452797bb6373e430b71.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/e2c6861eb9678452797bb6373e430b71.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/e2c6861eb9678452797bb6373e430b71.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/ea95b0aef97d6fc8911c4de46dbdc9d6.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/ea95b0aef97d6fc8911c4de46dbdc9d6.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/ea95b0aef97d6fc8911c4de46dbdc9d6.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/ea95b0aef97d6fc8911c4de46dbdc9d6.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/eafc4ae5b2e4bd3bc2695e14daca8cb6.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/eafc4ae5b2e4bd3bc2695e14daca8cb6.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/eafc4ae5b2e4bd3bc2695e14daca8cb6.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/eafc4ae5b2e4bd3bc2695e14daca8cb6.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/efa9b05a272b232f6ea259c8d3054e42.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/efa9b05a272b232f6ea259c8d3054e42.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/efa9b05a272b232f6ea259c8d3054e42.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/efa9b05a272b232f6ea259c8d3054e42.webp
diff --git a/docs/src/framework/mybatis-plus/assets/20210808-log-crud/f1adac18df09758c69dae5b98eecb8bc.webp b/src/framework/mybatis-plus/assets/20210808-log-crud/f1adac18df09758c69dae5b98eecb8bc.webp
similarity index 100%
rename from docs/src/framework/mybatis-plus/assets/20210808-log-crud/f1adac18df09758c69dae5b98eecb8bc.webp
rename to src/framework/mybatis-plus/assets/20210808-log-crud/f1adac18df09758c69dae5b98eecb8bc.webp
diff --git a/docs/src/framework/mybatis/20200719-intro.md b/src/framework/mybatis/20200719-intro.md
similarity index 90%
rename from docs/src/framework/mybatis/20200719-intro.md
rename to src/framework/mybatis/20200719-intro.md
index 8f74f58abb..da2e7c649b 100644
--- a/docs/src/framework/mybatis/20200719-intro.md
+++ b/src/framework/mybatis/20200719-intro.md
@@ -6,20 +6,6 @@ tag: MyBatis
 
 # 简介
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 ### 什么是持久化
diff --git a/docs/src/framework/mybatis/20200720-quick-start.md b/src/framework/mybatis/20200720-quick-start.md
similarity index 95%
rename from docs/src/framework/mybatis/20200720-quick-start.md
rename to src/framework/mybatis/20200720-quick-start.md
index bfb1a68605..a05186b537 100644
--- a/docs/src/framework/mybatis/20200720-quick-start.md
+++ b/src/framework/mybatis/20200720-quick-start.md
@@ -8,20 +8,6 @@ tag: MyBatis
 
 # 入门实例
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 
diff --git a/docs/src/framework/mybatis/20200721-annotation.md b/src/framework/mybatis/20200721-annotation.md
similarity index 91%
rename from docs/src/framework/mybatis/20200721-annotation.md
rename to src/framework/mybatis/20200721-annotation.md
index 18bdac1c68..5cf2ae20ba 100644
--- a/docs/src/framework/mybatis/20200721-annotation.md
+++ b/src/framework/mybatis/20200721-annotation.md
@@ -6,20 +6,6 @@ tag: MyBatis
 
 # 注解开发
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 1. MyBatis 注解
 
 之前的实例中，利用 MyBatis 进行开发时，一旦添加新的方法，则每次都需要在 XML 配置文件中进行映射。而现在随着注解开发的大肆流行，MyBatis 3 也提供了基于注解的配置。但是通过注解的方式表达力和灵活性有限，必要时要是需要通过 `mapper` 配置文件来进行构建，常用的注解主要用如下几个：
diff --git a/docs/src/framework/mybatis/20200722-pri-sec-cache.md b/src/framework/mybatis/20200722-pri-sec-cache.md
similarity index 94%
rename from docs/src/framework/mybatis/20200722-pri-sec-cache.md
rename to src/framework/mybatis/20200722-pri-sec-cache.md
index 3dfde86751..e9de4b54de 100644
--- a/docs/src/framework/mybatis/20200722-pri-sec-cache.md
+++ b/src/framework/mybatis/20200722-pri-sec-cache.md
@@ -6,19 +6,6 @@ tag: MyBatis
 
 # 一二级缓存
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 1. 前言
 
 ### 1.1 什么是缓存
diff --git a/docs/src/framework/mybatis/20211214-generator.md b/src/framework/mybatis/20211214-generator.md
similarity index 97%
rename from docs/src/framework/mybatis/20211214-generator.md
rename to src/framework/mybatis/20211214-generator.md
index 7c77e3ff1d..c5cee6f315 100644
--- a/docs/src/framework/mybatis/20211214-generator.md
+++ b/src/framework/mybatis/20211214-generator.md
@@ -6,19 +6,6 @@ tag: MyBatis
 
 # 代码自动生成器
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 在日常开发工作中，我们往往需要自己去构建各种数据表所对应的持久化对象（PO）、用于操作数据库的接口（DAO）以及跟 DAO 所绑定的对应 XML。这都是一些重复性的操作，不需要多大技术含量，这时候我们不禁会去想，有没有一种工具，能够帮助我们去自动生成这些文件呢？答案是：有的！
diff --git a/src/framework/mybatis/README.md b/src/framework/mybatis/README.md
new file mode 100644
index 0000000000..25526a9e33
--- /dev/null
+++ b/src/framework/mybatis/README.md
@@ -0,0 +1,7 @@
+---
+title: MyBatis  
+index: false
+icon: iconfont icon-mybatis
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/framework/mybatis/assets/20200719-intro/c15fdbc5b8068b590a7ba80d5db825af.webp b/src/framework/mybatis/assets/20200719-intro/c15fdbc5b8068b590a7ba80d5db825af.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200719-intro/c15fdbc5b8068b590a7ba80d5db825af.webp
rename to src/framework/mybatis/assets/20200719-intro/c15fdbc5b8068b590a7ba80d5db825af.webp
diff --git a/docs/src/framework/mybatis/assets/20200719-intro/format,png-20240216183027825.webp b/src/framework/mybatis/assets/20200719-intro/format,png-20240216183027825.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200719-intro/format,png-20240216183027825.webp
rename to src/framework/mybatis/assets/20200719-intro/format,png-20240216183027825.webp
diff --git a/docs/src/framework/mybatis/assets/20200720-quick-start/087f7db9a7249e900dde8c00df58dd8e.webp b/src/framework/mybatis/assets/20200720-quick-start/087f7db9a7249e900dde8c00df58dd8e.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200720-quick-start/087f7db9a7249e900dde8c00df58dd8e.webp
rename to src/framework/mybatis/assets/20200720-quick-start/087f7db9a7249e900dde8c00df58dd8e.webp
diff --git a/docs/src/framework/mybatis/assets/20200720-quick-start/2b5ad394c94ba5803bc2e894744d8ba7.webp b/src/framework/mybatis/assets/20200720-quick-start/2b5ad394c94ba5803bc2e894744d8ba7.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200720-quick-start/2b5ad394c94ba5803bc2e894744d8ba7.webp
rename to src/framework/mybatis/assets/20200720-quick-start/2b5ad394c94ba5803bc2e894744d8ba7.webp
diff --git a/docs/src/framework/mybatis/assets/20200720-quick-start/571f9bfe5b4baaab08ca1586f0e5ff6a.webp b/src/framework/mybatis/assets/20200720-quick-start/571f9bfe5b4baaab08ca1586f0e5ff6a.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200720-quick-start/571f9bfe5b4baaab08ca1586f0e5ff6a.webp
rename to src/framework/mybatis/assets/20200720-quick-start/571f9bfe5b4baaab08ca1586f0e5ff6a.webp
diff --git a/docs/src/framework/mybatis/assets/20200720-quick-start/644f607ea9707de6d25f9dfafb4cfb96.webp b/src/framework/mybatis/assets/20200720-quick-start/644f607ea9707de6d25f9dfafb4cfb96.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200720-quick-start/644f607ea9707de6d25f9dfafb4cfb96.webp
rename to src/framework/mybatis/assets/20200720-quick-start/644f607ea9707de6d25f9dfafb4cfb96.webp
diff --git a/docs/src/framework/mybatis/assets/20200720-quick-start/aacb76f5ffabbbc9ede23f683256be41.webp b/src/framework/mybatis/assets/20200720-quick-start/aacb76f5ffabbbc9ede23f683256be41.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200720-quick-start/aacb76f5ffabbbc9ede23f683256be41.webp
rename to src/framework/mybatis/assets/20200720-quick-start/aacb76f5ffabbbc9ede23f683256be41.webp
diff --git a/docs/src/framework/mybatis/assets/20200720-quick-start/ba28cca59f160f88a2c5c0535fceeb2e.webp b/src/framework/mybatis/assets/20200720-quick-start/ba28cca59f160f88a2c5c0535fceeb2e.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200720-quick-start/ba28cca59f160f88a2c5c0535fceeb2e.webp
rename to src/framework/mybatis/assets/20200720-quick-start/ba28cca59f160f88a2c5c0535fceeb2e.webp
diff --git a/docs/src/framework/mybatis/assets/20200721-annotation/format,png-20240216182743462.webp b/src/framework/mybatis/assets/20200721-annotation/format,png-20240216182743462.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200721-annotation/format,png-20240216182743462.webp
rename to src/framework/mybatis/assets/20200721-annotation/format,png-20240216182743462.webp
diff --git a/docs/src/framework/mybatis/assets/20200721-annotation/format,png-20240216182743467.webp b/src/framework/mybatis/assets/20200721-annotation/format,png-20240216182743467.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200721-annotation/format,png-20240216182743467.webp
rename to src/framework/mybatis/assets/20200721-annotation/format,png-20240216182743467.webp
diff --git a/docs/src/framework/mybatis/assets/20200721-annotation/format,png-20240216182743470.webp b/src/framework/mybatis/assets/20200721-annotation/format,png-20240216182743470.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200721-annotation/format,png-20240216182743470.webp
rename to src/framework/mybatis/assets/20200721-annotation/format,png-20240216182743470.webp
diff --git a/docs/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550915.webp b/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550915.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550915.webp
rename to src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550915.webp
diff --git a/docs/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550923.webp b/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550923.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550923.webp
rename to src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550923.webp
diff --git a/docs/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550927.webp b/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550927.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550927.webp
rename to src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550927.webp
diff --git a/docs/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550941.webp b/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550941.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550941.webp
rename to src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550941.webp
diff --git a/docs/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550952.webp b/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550952.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550952.webp
rename to src/framework/mybatis/assets/20200722-pri-sec-cache/format,png-20240216182550952.webp
diff --git a/docs/src/framework/mybatis/assets/20211214-generator/405d9115d907022f81f044810e072b36.webp b/src/framework/mybatis/assets/20211214-generator/405d9115d907022f81f044810e072b36.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20211214-generator/405d9115d907022f81f044810e072b36.webp
rename to src/framework/mybatis/assets/20211214-generator/405d9115d907022f81f044810e072b36.webp
diff --git a/docs/src/framework/mybatis/assets/20211214-generator/aff468af852ea9e60cd47547d6f1afb3.webp b/src/framework/mybatis/assets/20211214-generator/aff468af852ea9e60cd47547d6f1afb3.webp
similarity index 100%
rename from docs/src/framework/mybatis/assets/20211214-generator/aff468af852ea9e60cd47547d6f1afb3.webp
rename to src/framework/mybatis/assets/20211214-generator/aff468af852ea9e60cd47547d6f1afb3.webp
diff --git a/docs/src/framework/nginx/20221016-intro-install.md b/src/framework/nginx/20221016-intro-install.md
similarity index 89%
rename from docs/src/framework/nginx/20221016-intro-install.md
rename to src/framework/nginx/20221016-intro-install.md
index 6ca98d8f6c..e9b66f923b 100644
--- a/docs/src/framework/nginx/20221016-intro-install.md
+++ b/src/framework/nginx/20221016-intro-install.md
@@ -8,21 +8,12 @@ date: 2022-10-16
 
 # 简介与环境搭建
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/Fx4AAS5pUqSGtui4Z-LYXA
-
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/Fx4AAS5pUqSGtui4Z-LYXA
+:::
 
 ## 一、简介
 
@@ -243,6 +234,6 @@ systemctl status nginx
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/framework/nginx/README.md b/src/framework/nginx/README.md
new file mode 100644
index 0000000000..d5b48cdab0
--- /dev/null
+++ b/src/framework/nginx/README.md
@@ -0,0 +1,7 @@
+---
+title: Nginx  
+index: false
+icon: iconfont icon-nginx
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/framework/nginx/assets/06e3119f7e4b4e7096b3ce9e85387613.webp b/src/framework/nginx/assets/06e3119f7e4b4e7096b3ce9e85387613.webp
similarity index 100%
rename from docs/src/framework/nginx/assets/06e3119f7e4b4e7096b3ce9e85387613.webp
rename to src/framework/nginx/assets/06e3119f7e4b4e7096b3ce9e85387613.webp
diff --git a/docs/src/framework/nginx/assets/16c89775141f40f9a69cdb9980bd221b.webp b/src/framework/nginx/assets/16c89775141f40f9a69cdb9980bd221b.webp
similarity index 100%
rename from docs/src/framework/nginx/assets/16c89775141f40f9a69cdb9980bd221b.webp
rename to src/framework/nginx/assets/16c89775141f40f9a69cdb9980bd221b.webp
diff --git a/docs/src/framework/nginx/assets/2cd8cb2c4221471e89bd6ad9c58269d5.webp b/src/framework/nginx/assets/2cd8cb2c4221471e89bd6ad9c58269d5.webp
similarity index 100%
rename from docs/src/framework/nginx/assets/2cd8cb2c4221471e89bd6ad9c58269d5.webp
rename to src/framework/nginx/assets/2cd8cb2c4221471e89bd6ad9c58269d5.webp
diff --git a/docs/src/framework/nginx/assets/70fc81bab6ce4aeb9618e27ba081469d.webp b/src/framework/nginx/assets/70fc81bab6ce4aeb9618e27ba081469d.webp
similarity index 100%
rename from docs/src/framework/nginx/assets/70fc81bab6ce4aeb9618e27ba081469d.webp
rename to src/framework/nginx/assets/70fc81bab6ce4aeb9618e27ba081469d.webp
diff --git a/docs/src/framework/nginx/assets/7205270749fb4e5ab06423dc6920891c.webp b/src/framework/nginx/assets/7205270749fb4e5ab06423dc6920891c.webp
similarity index 100%
rename from docs/src/framework/nginx/assets/7205270749fb4e5ab06423dc6920891c.webp
rename to src/framework/nginx/assets/7205270749fb4e5ab06423dc6920891c.webp
diff --git a/docs/src/framework/nginx/assets/73fa2a756cd54177ac55cfd17b34d9f1.webp b/src/framework/nginx/assets/73fa2a756cd54177ac55cfd17b34d9f1.webp
similarity index 100%
rename from docs/src/framework/nginx/assets/73fa2a756cd54177ac55cfd17b34d9f1.webp
rename to src/framework/nginx/assets/73fa2a756cd54177ac55cfd17b34d9f1.webp
diff --git a/docs/src/framework/nginx/assets/7a61140a0a464a81a27e348e1b284ac6.webp b/src/framework/nginx/assets/7a61140a0a464a81a27e348e1b284ac6.webp
similarity index 100%
rename from docs/src/framework/nginx/assets/7a61140a0a464a81a27e348e1b284ac6.webp
rename to src/framework/nginx/assets/7a61140a0a464a81a27e348e1b284ac6.webp
diff --git a/docs/src/framework/nginx/assets/82fab0e89c6a42b896b77f98dee94b2c.webp b/src/framework/nginx/assets/82fab0e89c6a42b896b77f98dee94b2c.webp
similarity index 100%
rename from docs/src/framework/nginx/assets/82fab0e89c6a42b896b77f98dee94b2c.webp
rename to src/framework/nginx/assets/82fab0e89c6a42b896b77f98dee94b2c.webp
diff --git a/docs/src/framework/nginx/assets/991d0ce06dc6480d97abf8b858b93030.webp b/src/framework/nginx/assets/991d0ce06dc6480d97abf8b858b93030.webp
similarity index 100%
rename from docs/src/framework/nginx/assets/991d0ce06dc6480d97abf8b858b93030.webp
rename to src/framework/nginx/assets/991d0ce06dc6480d97abf8b858b93030.webp
diff --git a/docs/src/framework/nginx/assets/e0c9acc5f35e447591b2b6d2df12755b.webp b/src/framework/nginx/assets/e0c9acc5f35e447591b2b6d2df12755b.webp
similarity index 100%
rename from docs/src/framework/nginx/assets/e0c9acc5f35e447591b2b6d2df12755b.webp
rename to src/framework/nginx/assets/e0c9acc5f35e447591b2b6d2df12755b.webp
diff --git a/docs/src/framework/redis/20210821-intro.md b/src/framework/redis/20210821-intro.md
similarity index 93%
rename from docs/src/framework/redis/20210821-intro.md
rename to src/framework/redis/20210821-intro.md
index b30fdaeec1..55fdd81866 100644
--- a/docs/src/framework/redis/20210821-intro.md
+++ b/src/framework/redis/20210821-intro.md
@@ -9,19 +9,6 @@ date: 2021-08-12
 
 # 简介
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 说到 Redis，大家可能第一反应就是它是当前最受欢迎的 NoSQL 数据库之一。那么在正式介绍 Redis 之前，我们先来看看关于 NoSQL 的一些相关信息，比如它是什么，又比如它的一些特点以及它的一些分类。那么我们接下来就从以上三个方面来对 NoSQL 的相关历史做一个简单介绍，然后再去看看 Redis 的相关知识。
diff --git a/docs/src/framework/redis/20221016-persistence.md b/src/framework/redis/20221016-persistence.md
similarity index 90%
rename from docs/src/framework/redis/20221016-persistence.md
rename to src/framework/redis/20221016-persistence.md
index ac57d146a4..c57f4bc0d3 100644
--- a/docs/src/framework/redis/20221016-persistence.md
+++ b/src/framework/redis/20221016-persistence.md
@@ -8,19 +8,6 @@ tag:
 
 # Redis 持久化
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 什么是持久化？
 
 所谓持久化，其实就是一种机制，它能够 **将内存中的数据库状态保存到磁盘** 中，从而防止服务器宕机导致内存数据丢失。`Redis` 的 **数据都是存在内存中** 的，一旦出现宕机等情况，所有数据将会丢失，而持久化机制则是为了应对这一突发故障而提出的机制。
diff --git a/src/framework/redis/README.md b/src/framework/redis/README.md
new file mode 100644
index 0000000000..92d0423e29
--- /dev/null
+++ b/src/framework/redis/README.md
@@ -0,0 +1,7 @@
+---
+title: Redis
+index: false
+icon: iconfont icon-Redis
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/framework/redis/assets/20210821-intro/262779ed07c117d6754f62975cee3f18.webp b/src/framework/redis/assets/20210821-intro/262779ed07c117d6754f62975cee3f18.webp
similarity index 100%
rename from docs/src/framework/redis/assets/20210821-intro/262779ed07c117d6754f62975cee3f18.webp
rename to src/framework/redis/assets/20210821-intro/262779ed07c117d6754f62975cee3f18.webp
diff --git a/docs/src/framework/redis/assets/20210821-intro/3e844de7150edd7572c5885d74ca460a.webp b/src/framework/redis/assets/20210821-intro/3e844de7150edd7572c5885d74ca460a.webp
similarity index 100%
rename from docs/src/framework/redis/assets/20210821-intro/3e844de7150edd7572c5885d74ca460a.webp
rename to src/framework/redis/assets/20210821-intro/3e844de7150edd7572c5885d74ca460a.webp
diff --git a/docs/src/framework/redis/assets/20210821-intro/9157f1aefe0a16896cbe9b6cb1207b03.webp b/src/framework/redis/assets/20210821-intro/9157f1aefe0a16896cbe9b6cb1207b03.webp
similarity index 100%
rename from docs/src/framework/redis/assets/20210821-intro/9157f1aefe0a16896cbe9b6cb1207b03.webp
rename to src/framework/redis/assets/20210821-intro/9157f1aefe0a16896cbe9b6cb1207b03.webp
diff --git a/docs/src/framework/redis/assets/20210821-intro/b44a87d43582438e868d9c6a12d2d4d1.webp b/src/framework/redis/assets/20210821-intro/b44a87d43582438e868d9c6a12d2d4d1.webp
similarity index 100%
rename from docs/src/framework/redis/assets/20210821-intro/b44a87d43582438e868d9c6a12d2d4d1.webp
rename to src/framework/redis/assets/20210821-intro/b44a87d43582438e868d9c6a12d2d4d1.webp
diff --git a/docs/src/framework/redis/assets/20210821-intro/c4981f9ac4f58604c550987bd1431b4e.webp b/src/framework/redis/assets/20210821-intro/c4981f9ac4f58604c550987bd1431b4e.webp
similarity index 100%
rename from docs/src/framework/redis/assets/20210821-intro/c4981f9ac4f58604c550987bd1431b4e.webp
rename to src/framework/redis/assets/20210821-intro/c4981f9ac4f58604c550987bd1431b4e.webp
diff --git a/docs/src/framework/redis/assets/20210821-intro/c696aad772c19064a510611f2aba510b.webp b/src/framework/redis/assets/20210821-intro/c696aad772c19064a510611f2aba510b.webp
similarity index 100%
rename from docs/src/framework/redis/assets/20210821-intro/c696aad772c19064a510611f2aba510b.webp
rename to src/framework/redis/assets/20210821-intro/c696aad772c19064a510611f2aba510b.webp
diff --git a/docs/src/framework/redis/assets/20221016-persistence/97c86fe924d22384d36088a0b2989bf3.webp b/src/framework/redis/assets/20221016-persistence/97c86fe924d22384d36088a0b2989bf3.webp
similarity index 100%
rename from docs/src/framework/redis/assets/20221016-persistence/97c86fe924d22384d36088a0b2989bf3.webp
rename to src/framework/redis/assets/20221016-persistence/97c86fe924d22384d36088a0b2989bf3.webp
diff --git a/docs/src/framework/redis/assets/20221016-persistence/9da8b3765509b2d69aa52f4d186a7701.webp b/src/framework/redis/assets/20221016-persistence/9da8b3765509b2d69aa52f4d186a7701.webp
similarity index 100%
rename from docs/src/framework/redis/assets/20221016-persistence/9da8b3765509b2d69aa52f4d186a7701.webp
rename to src/framework/redis/assets/20221016-persistence/9da8b3765509b2d69aa52f4d186a7701.webp
diff --git a/docs/src/framework/spring/20200720-intro.md b/src/framework/spring/20200720-intro.md
similarity index 95%
rename from docs/src/framework/spring/20200720-intro.md
rename to src/framework/spring/20200720-intro.md
index 7f424e3f7d..a0a5271767 100644
--- a/docs/src/framework/spring/20200720-intro.md
+++ b/src/framework/spring/20200720-intro.md
@@ -7,19 +7,6 @@ tag:
 
 # 简介
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 
diff --git a/docs/src/framework/spring/20200723-ioc.md b/src/framework/spring/20200723-ioc.md
similarity index 90%
rename from docs/src/framework/spring/20200723-ioc.md
rename to src/framework/spring/20200723-ioc.md
index 3e58e44259..ac75d18167 100644
--- a/docs/src/framework/spring/20200723-ioc.md
+++ b/src/framework/spring/20200723-ioc.md
@@ -7,19 +7,6 @@ tag:
 
 # IoC 大揭秘
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 1. 什么是 Ioc
 
 ### 1.1 Ioc 定义
diff --git a/docs/src/framework/spring/20200724-di.md b/src/framework/spring/20200724-di.md
similarity index 95%
rename from docs/src/framework/spring/20200724-di.md
rename to src/framework/spring/20200724-di.md
index 746dd1b643..9583680951 100644
--- a/docs/src/framework/spring/20200724-di.md
+++ b/src/framework/spring/20200724-di.md
@@ -7,19 +7,6 @@ tag:
 
 # 依赖注入知多少
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 0. 前言
 
 Spring 中，用来组成应用程序的主体以及由 Spring IoC 容器所管理的对象叫做 Bean。简而言之，Bean 就是由 IoC 容器来进行初始化、装配和管理的对象。
diff --git a/docs/src/framework/spring/20210521-annotation.md b/src/framework/spring/20210521-annotation.md
similarity index 95%
rename from docs/src/framework/spring/20210521-annotation.md
rename to src/framework/spring/20210521-annotation.md
index 0648673483..2349d84e68 100644
--- a/docs/src/framework/spring/20210521-annotation.md
+++ b/src/framework/spring/20210521-annotation.md
@@ -8,19 +8,6 @@ date: 2021-05-21
 
 # Spring Bean 注解详解
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 本篇博客中，我们将会讨论用于声明不同类型 Beans 的几种最常用的 Spring Bean 注解。
diff --git a/docs/src/framework/spring/20220428-ioc-xml.md b/src/framework/spring/20220428-ioc-xml.md
similarity index 92%
rename from docs/src/framework/spring/20220428-ioc-xml.md
rename to src/framework/spring/20220428-ioc-xml.md
index 20ce9e1904..30fa9b19d1 100644
--- a/docs/src/framework/spring/20220428-ioc-xml.md
+++ b/src/framework/spring/20220428-ioc-xml.md
@@ -9,19 +9,6 @@ date: 2022-04-28
 
 # IoC 简介及入门实例（XML 版）
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## IoC
 
 IoC（`Inversion of Control`），中文名又叫做控制反转。
diff --git a/docs/src/framework/spring/20220429-bean.md b/src/framework/spring/20220429-bean.md
similarity index 93%
rename from docs/src/framework/spring/20220429-bean.md
rename to src/framework/spring/20220429-bean.md
index 2d2fe8f967..87692a28e3 100644
--- a/docs/src/framework/spring/20220429-bean.md
+++ b/src/framework/spring/20220429-bean.md
@@ -8,19 +8,6 @@ date: 2022-04-29
 
 # Bean 详解
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ##  Bean 的别名配置
 
 接着上一篇文章中的 `<bean>` 配置，其中配置了 `id` 属性，通过 `id` 属性我们就可以获取到对象。其实 `<bean>` 配置也提供了 `name` 属性，它是用于定义 Bean 的别名，一个 Bean 的别名是可以有多个的，各个别名之间可以通过逗号（`,`）、分号（`;`）、空格（` `）分隔。
diff --git a/src/framework/spring/README.md b/src/framework/spring/README.md
new file mode 100644
index 0000000000..7c73b54095
--- /dev/null
+++ b/src/framework/spring/README.md
@@ -0,0 +1,7 @@
+---
+title: Spring  
+index: false
+icon: iconfont icon-spring
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/framework/spring/assets/2020-724-di/format,png.webp b/src/framework/spring/assets/2020-724-di/format,png.webp
similarity index 100%
rename from docs/src/framework/spring/assets/2020-724-di/format,png.webp
rename to src/framework/spring/assets/2020-724-di/format,png.webp
diff --git a/docs/src/framework/spring/assets/20200720-intro/7294d205368932cf9f740cda96d73cd9.webp b/src/framework/spring/assets/20200720-intro/7294d205368932cf9f740cda96d73cd9.webp
similarity index 100%
rename from docs/src/framework/spring/assets/20200720-intro/7294d205368932cf9f740cda96d73cd9.webp
rename to src/framework/spring/assets/20200720-intro/7294d205368932cf9f740cda96d73cd9.webp
diff --git a/docs/src/framework/spring/assets/20200720-intro/a7e669fff1ccfbd462d1e7187781f9b0.webp b/src/framework/spring/assets/20200720-intro/a7e669fff1ccfbd462d1e7187781f9b0.webp
similarity index 100%
rename from docs/src/framework/spring/assets/20200720-intro/a7e669fff1ccfbd462d1e7187781f9b0.webp
rename to src/framework/spring/assets/20200720-intro/a7e669fff1ccfbd462d1e7187781f9b0.webp
diff --git a/docs/src/framework/spring/assets/20200723-ioc/1.webp b/src/framework/spring/assets/20200723-ioc/1.webp
similarity index 100%
rename from docs/src/framework/spring/assets/20200723-ioc/1.webp
rename to src/framework/spring/assets/20200723-ioc/1.webp
diff --git a/docs/src/framework/spring/assets/20220428-ioc-xml/1e4b4d41e460b1dd7638bee473f8b9de.webp b/src/framework/spring/assets/20220428-ioc-xml/1e4b4d41e460b1dd7638bee473f8b9de.webp
similarity index 100%
rename from docs/src/framework/spring/assets/20220428-ioc-xml/1e4b4d41e460b1dd7638bee473f8b9de.webp
rename to src/framework/spring/assets/20220428-ioc-xml/1e4b4d41e460b1dd7638bee473f8b9de.webp
diff --git a/docs/src/framework/spring/assets/20220428-ioc-xml/aaceffc537d9c1bf2445a6c067b0d07a.webp b/src/framework/spring/assets/20220428-ioc-xml/aaceffc537d9c1bf2445a6c067b0d07a.webp
similarity index 100%
rename from docs/src/framework/spring/assets/20220428-ioc-xml/aaceffc537d9c1bf2445a6c067b0d07a.webp
rename to src/framework/spring/assets/20220428-ioc-xml/aaceffc537d9c1bf2445a6c067b0d07a.webp
diff --git a/docs/src/framework/spring/assets/20220428-ioc-xml/c8be93c33fc982de23d52b6bfa74034d.webp b/src/framework/spring/assets/20220428-ioc-xml/c8be93c33fc982de23d52b6bfa74034d.webp
similarity index 100%
rename from docs/src/framework/spring/assets/20220428-ioc-xml/c8be93c33fc982de23d52b6bfa74034d.webp
rename to src/framework/spring/assets/20220428-ioc-xml/c8be93c33fc982de23d52b6bfa74034d.webp
diff --git a/docs/src/framework/spring/assets/20220428-ioc-xml/e754b26be2e317997753c9e9896564db.webp b/src/framework/spring/assets/20220428-ioc-xml/e754b26be2e317997753c9e9896564db.webp
similarity index 100%
rename from docs/src/framework/spring/assets/20220428-ioc-xml/e754b26be2e317997753c9e9896564db.webp
rename to src/framework/spring/assets/20220428-ioc-xml/e754b26be2e317997753c9e9896564db.webp
diff --git a/docs/src/framework/spring/assets/20220429-bean/0a92ceb6def8add5e0bf5283576fc511.webp b/src/framework/spring/assets/20220429-bean/0a92ceb6def8add5e0bf5283576fc511.webp
similarity index 100%
rename from docs/src/framework/spring/assets/20220429-bean/0a92ceb6def8add5e0bf5283576fc511.webp
rename to src/framework/spring/assets/20220429-bean/0a92ceb6def8add5e0bf5283576fc511.webp
diff --git a/docs/src/framework/spring/assets/20220429-bean/23274c95c22d506fe28d07e59058881b.webp b/src/framework/spring/assets/20220429-bean/23274c95c22d506fe28d07e59058881b.webp
similarity index 100%
rename from docs/src/framework/spring/assets/20220429-bean/23274c95c22d506fe28d07e59058881b.webp
rename to src/framework/spring/assets/20220429-bean/23274c95c22d506fe28d07e59058881b.webp
diff --git a/docs/src/framework/spring/assets/20220429-bean/738ba175ae38bd9eecce821a88b15b63.webp b/src/framework/spring/assets/20220429-bean/738ba175ae38bd9eecce821a88b15b63.webp
similarity index 100%
rename from docs/src/framework/spring/assets/20220429-bean/738ba175ae38bd9eecce821a88b15b63.webp
rename to src/framework/spring/assets/20220429-bean/738ba175ae38bd9eecce821a88b15b63.webp
diff --git a/docs/src/framework/spring/assets/20220429-bean/762db86a1a56da40cad36f0adefab25e.webp b/src/framework/spring/assets/20220429-bean/762db86a1a56da40cad36f0adefab25e.webp
similarity index 100%
rename from docs/src/framework/spring/assets/20220429-bean/762db86a1a56da40cad36f0adefab25e.webp
rename to src/framework/spring/assets/20220429-bean/762db86a1a56da40cad36f0adefab25e.webp
diff --git a/docs/src/framework/spring/assets/20220429-bean/7efc979cde7f61adecf59e1505011624.webp b/src/framework/spring/assets/20220429-bean/7efc979cde7f61adecf59e1505011624.webp
similarity index 100%
rename from docs/src/framework/spring/assets/20220429-bean/7efc979cde7f61adecf59e1505011624.webp
rename to src/framework/spring/assets/20220429-bean/7efc979cde7f61adecf59e1505011624.webp
diff --git a/docs/src/framework/springboot/20200520-intro.md b/src/framework/springboot/2.7.x/20200520-intro.md
similarity index 91%
rename from docs/src/framework/springboot/20200520-intro.md
rename to src/framework/springboot/2.7.x/20200520-intro.md
index 493f48659c..482c47af54 100644
--- a/docs/src/framework/springboot/20200520-intro.md
+++ b/src/framework/springboot/2.7.x/20200520-intro.md
@@ -7,19 +7,6 @@ date: 2020-05-19
 
 # 简介
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 `Spring` 是重量级企业开发框架 `EJB（Enterprise JavaBean）` 的替代品，是为了解决企业级应用开发的复杂性而创建的，简化开发。通过 **依赖注入（DI）** 和 **面向切面编程**，用简单的 **`Java` 对象（`POJO`，`Plain Old Java Object`）** 实现 `EJB` 的功能，**其组件代码轻量，但是配置很繁琐（需要大量 `XML` 配置）**。`Spring 2.5` 引入基于注解的组件扫描，`Spring 3.0` 引入基于 `Java` 的配置，可以代替 `XML`，虽然引入的特性大大提高了配置的效率，但是也无法避免，针对这一问题，`Spring Boot` 应运而生。
diff --git a/docs/src/framework/springboot/20200726-xml-mybatis.md b/src/framework/springboot/2.7.x/20200726-xml-mybatis.md
similarity index 93%
rename from docs/src/framework/springboot/20200726-xml-mybatis.md
rename to src/framework/springboot/2.7.x/20200726-xml-mybatis.md
index 25ce06ada5..10f56ce6b2 100644
--- a/docs/src/framework/springboot/20200726-xml-mybatis.md
+++ b/src/framework/springboot/2.7.x/20200726-xml-mybatis.md
@@ -9,19 +9,6 @@ tag:
 
 # XML 方式整合 MyBatis 实例
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 上一篇文章中我们已经[利用注解的方式将 Spring Boot 和 MyBatis 整合起来](https://blog.csdn.net/github_39655029/article/details/107602438)，今天我们就来看看，如何利用 XML 文件的方式来将两者整合起来！
diff --git a/docs/src/framework/springboot/20200727-annotation-mybatis.md b/src/framework/springboot/2.7.x/20200727-annotation-mybatis.md
similarity index 92%
rename from docs/src/framework/springboot/20200727-annotation-mybatis.md
rename to src/framework/springboot/2.7.x/20200727-annotation-mybatis.md
index b6cfcab3f2..7f650cf4d9 100644
--- a/docs/src/framework/springboot/20200727-annotation-mybatis.md
+++ b/src/framework/springboot/2.7.x/20200727-annotation-mybatis.md
@@ -8,19 +8,6 @@ tag:
 
 # 注解方式整合 MyBatis 实例
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 目前而言，国内大家使用最多的持久层框架可能还是 MyBatis 吧，那既然如此，更强大的 Spring Boot 遇上炽手可热的 MyBatis，又会擦出什么样的火花呢？
 
diff --git a/docs/src/framework/springboot/20200728-annotation-mybatis-pagehelper.md b/src/framework/springboot/2.7.x/20200728-annotation-mybatis-pagehelper.md
similarity index 94%
rename from docs/src/framework/springboot/20200728-annotation-mybatis-pagehelper.md
rename to src/framework/springboot/2.7.x/20200728-annotation-mybatis-pagehelper.md
index 1b4ab5deb0..855b1e6c82 100644
--- a/docs/src/framework/springboot/20200728-annotation-mybatis-pagehelper.md
+++ b/src/framework/springboot/2.7.x/20200728-annotation-mybatis-pagehelper.md
@@ -8,19 +8,6 @@ tag:
 
 # 注解方式整合 Mybatis + PageHelper 分页实例
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 1. 前言
 
 本篇博客主要利用 SpringBoot 通过注解的方式整合 Mybatis 同时利用 PageHelper 对结果分页。下面是整个整合过程，接下来开始整合：
diff --git a/docs/src/framework/springboot/20200729-thymeleaf.md b/src/framework/springboot/2.7.x/20200729-thymeleaf.md
similarity index 92%
rename from docs/src/framework/springboot/20200729-thymeleaf.md
rename to src/framework/springboot/2.7.x/20200729-thymeleaf.md
index 3d5a268b0d..44eac6b04b 100644
--- a/docs/src/framework/springboot/20200729-thymeleaf.md
+++ b/src/framework/springboot/2.7.x/20200729-thymeleaf.md
@@ -10,19 +10,6 @@ tag:
 
 # 整合 Thymeleaf 实例
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 什么是 Thymeleaf
 
 -   Thymeleaf 是新一代的 Java 模板引擎，类似于 Velocity、FreeMarker 等传统引擎，其语言和 HTML 很接近，而且扩展性更高；
diff --git a/docs/src/framework/springboot/20200730-jdbc.md b/src/framework/springboot/2.7.x/20200730-jdbc.md
similarity index 92%
rename from docs/src/framework/springboot/20200730-jdbc.md
rename to src/framework/springboot/2.7.x/20200730-jdbc.md
index 29066257b8..f7d418ca02 100644
--- a/docs/src/framework/springboot/20200730-jdbc.md
+++ b/src/framework/springboot/2.7.x/20200730-jdbc.md
@@ -8,19 +8,6 @@ tag:
 
 # 整合 JDBC Template 实例
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 在 Spring Boot 中，对于数据访问层，无论是关系型数据库（SQL）还是非关系型数据库（No
diff --git a/docs/src/framework/springboot/20210811-create-ways.md b/src/framework/springboot/2.7.x/20210811-create-ways.md
similarity index 94%
rename from docs/src/framework/springboot/20210811-create-ways.md
rename to src/framework/springboot/2.7.x/20210811-create-ways.md
index 8e07e0d3ce..5d806d6741 100644
--- a/docs/src/framework/springboot/20210811-create-ways.md
+++ b/src/framework/springboot/2.7.x/20210811-create-ways.md
@@ -7,19 +7,6 @@ date: 2021-08-11
 
 # 创建项目的几种方式
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 如果你是一个浸淫 `Spring Boot` 已久的老手，那么可能下面的内容可能不那么适合你，写得很简单。但如果是
diff --git a/docs/src/framework/springboot/20211003-config.md b/src/framework/springboot/2.7.x/20211003-config.md
similarity index 94%
rename from docs/src/framework/springboot/20211003-config.md
rename to src/framework/springboot/2.7.x/20211003-config.md
index d67061faee..ee68f804ac 100644
--- a/docs/src/framework/springboot/20211003-config.md
+++ b/src/framework/springboot/2.7.x/20211003-config.md
@@ -7,19 +7,6 @@ date: 2021-10-03
 
 # 配置详解
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ##  前言
 
 为了 Spring Boot 能够更好地生成配置元数据文件，我们可以在创建项目时添加 `Spring Configuartion Processor` 依赖，或者在创建好项目后的 `pom.xml` 文件中手动添加。添加该依赖后，我们在编写配置时就会有属性提示，大大降低编写错误。
diff --git a/docs/src/framework/springboot/20211130-freemaker.md b/src/framework/springboot/2.7.x/20211130-freemaker.md
similarity index 92%
rename from docs/src/framework/springboot/20211130-freemaker.md
rename to src/framework/springboot/2.7.x/20211130-freemaker.md
index a9723faf9a..bb99bc83c6 100644
--- a/docs/src/framework/springboot/20211130-freemaker.md
+++ b/src/framework/springboot/2.7.x/20211130-freemaker.md
@@ -7,19 +7,6 @@ date: 2021-11-30
 
 # 整合 FreeMarker 实例
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 在之前的文章[Spring Boot 整合 Thymeleaf](https://cunyu1943.blog.csdn.net/article/details/107671467)中，我们学习了如何将模板 `Thymeleaf` 整合到 `Spring Boot` 中，那今天我们就来看看，另一个老牌的开源免费模板引擎 - `FreeMarker`！
diff --git a/docs/src/framework/springboot/20220106-swagger2.md b/src/framework/springboot/2.7.x/20220106-swagger2.md
similarity index 94%
rename from docs/src/framework/springboot/20220106-swagger2.md
rename to src/framework/springboot/2.7.x/20220106-swagger2.md
index c0a6d70cd5..e4884aa83e 100644
--- a/docs/src/framework/springboot/20220106-swagger2.md
+++ b/src/framework/springboot/2.7.x/20220106-swagger2.md
@@ -7,19 +7,6 @@ date: 2022-01-06
 
 # Swagger2 构建强大的 API 文档
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 不管你是从事前端还是后端开发，相信都难免被接口文档折磨过。如果你是一个前端开发者，可能你会经常发现后端给的接口文档跟实际代码有所出入。而假设你是一个后端开发者，你可能又会觉得自己开发后端接口已经够烦的了，还要花费大量精力去编写和维护接口文档，所以难免有时候会更新不及时。这就可能造成了前后端相互不理解，最后甚至吵起来，哈哈哈 🤪。
@@ -213,9 +200,7 @@ public class SwaggerDemoController {
 
 完成上述步骤后，我们启动项目，然后在浏览器中访问如下地址，就可以访问我们项目的接口文档了。
 
-```html
-http://localhost:8080/swagger-ui.html
-```
+>   http://localhost:8080/swagger-ui.html
 
 访问如上地址后，如果出现下面的界面，说明我们 Spring Boot 集成 Swagger2 就到此成功了。
 
diff --git a/docs/src/framework/springboot/20220110-swagger3.md b/src/framework/springboot/2.7.x/20220110-swagger3.md
similarity index 94%
rename from docs/src/framework/springboot/20220110-swagger3.md
rename to src/framework/springboot/2.7.x/20220110-swagger3.md
index ea02862f97..e92ba8e61c 100644
--- a/docs/src/framework/springboot/20220110-swagger3.md
+++ b/src/framework/springboot/2.7.x/20220110-swagger3.md
@@ -7,19 +7,6 @@ date: 2022-01-10
 
 # Swagger3 生成 API 接口文档
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 在之前的文章中，我们已经讲了如何利用 Spring Boot 来集成 Swagger2，详情可戳：[Spring Boot 集成 Swagger2，构建强大的 API 文档](https://blog.csdn.net/github_39655029/article/details/122336225 "Spring Boot 集成 Swagger2，构建强大的 API 文档")。但其实 Swagger2 中主流的 `2.9.2` 自 2018 年发布后就已经好久没更新了，而在时隔两年之后的 2020 年，Swagger3 终于发布了。
@@ -271,17 +258,13 @@ public class UserController {
 
 启动我们的项目，然后在浏览器中访问如下地址，就可以访问项目的接口文档了。
 
-```html
-http://localhost:8080/swagger-ui/index.html
-```
+> http://localhost:8080/swagger-ui/index.html
 
 访问上面的地址后，如果出现下面的界面，则说明集成 Swagger3 就成功了。
 
 这里也要注意一点，Swagger2 中的接口访问地址是：
 
-```html
-http://localhost:8080/swagger-ui.html
-```
+> http://localhost:8080/swagger-ui.html
 
 这里 Swagger2 和 Swagger3 是不同的，这里大家一定要注意，否则可能你继续拿着 Swagger2 接口访问地址来放到 Swagger3 项目中不适用。
 
@@ -332,7 +315,7 @@ public String show1(@ApiParam(value = "姓名", required = true, example = "村
 1.  **所需依赖不同**，Swagger2 需要添加两个依赖，而 Swagger3 则只需要添加一个依赖；
 2.  **启用 Swagger 的注解不同**，不知道大家有没有发现，无论是 Swagger2 还是 Swagger3 中的配置类，其实都是有一个注解用来启用 Swagger 的，不同之处在于 Swagger2 中用的是 `@EnableSwagger2`，而 Swagger3 中则用的是 `@EnableOpenApi`；
 3.  **文档摘要信息（Docket）文件类型不同**，可以发现在 Swagger 的配置类中，Swagger2 用的是 `SWAGGER_2`，而 Swagger3 中则用的是 `OAS_3`；
-4.  **Swagger UI 访问地址不同**，在 Swagger2 中，如果我们要访问文档地址，需要访问 http://localhost:8080/swagger-ui.html，而在 Swagger3 中，则是访问 http://localhost:8080/swagger-ui/index.html；
+4.  **Swagger UI 访问地址不同**，在 Swagger2 中，如果我们要访问文档地址，需要访问 `http://localhost:8080/swagger-ui.html`，而在 Swagger3 中，则是访问 `http://localhost:8080/swagger-ui/index.html`；
 
 ## 总结
 
diff --git a/docs/src/framework/springboot/20220430-knife4j.md b/src/framework/springboot/2.7.x/20220430-knife4j.md
similarity index 94%
rename from docs/src/framework/springboot/20220430-knife4j.md
rename to src/framework/springboot/2.7.x/20220430-knife4j.md
index d3529786c3..6341ba00a4 100644
--- a/docs/src/framework/springboot/20220430-knife4j.md
+++ b/src/framework/springboot/2.7.x/20220430-knife4j.md
@@ -7,19 +7,6 @@ date: 2022-04-30
 
 # 集成 Knife4j
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 之前介绍了如何在 `Spring Boot` 中集成 `Swagger2` 和 `Swagger3`，对于我们日常的接口管理已经够用了。但是作为一个颜值党，无论是 `Swagger2` 还是 `Swagger3`，都难以满足我们的审美。而且 `Swagger2` 和 `Swagger3` 都已经好久没更新了，更新还是比较慢的。
diff --git a/docs/src/framework/springboot/20220604-security.md b/src/framework/springboot/2.7.x/20220604-security.md
similarity index 90%
rename from docs/src/framework/springboot/20220604-security.md
rename to src/framework/springboot/2.7.x/20220604-security.md
index 076b7a92d8..4caaed4a56 100644
--- a/docs/src/framework/springboot/20220604-security.md
+++ b/src/framework/springboot/2.7.x/20220604-security.md
@@ -7,19 +7,6 @@ date: 2022-06-04
 
 # 集成 Security 入门小实例
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 `Spring Security` 是 `Spring` 家族中一个强大可定制的身份验证和访问控制框架，和 `Shiro` 一样，它们都具有认证、授权、加密等用于权限管理的功能。但相比于 `Shiro`，`Spring Security` 的功能无疑更加强大。而且作为 `Spring` 家族中的一份子，配合家族中的其它兄弟 - `Spring Boot`、`Spring Cloud` 使用起来更加丝滑。
diff --git a/src/framework/springboot/2.7.x/README.md b/src/framework/springboot/2.7.x/README.md
new file mode 100644
index 0000000000..49ba97525f
--- /dev/null
+++ b/src/framework/springboot/2.7.x/README.md
@@ -0,0 +1,7 @@
+---
+title: Spring Boot 2.7.x 
+index: false
+icon: iconfont icon-spring
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/framework/springboot/assets/20200520-intro/d497cf5ecdfa0901da96910ed026d52d.webp b/src/framework/springboot/2.7.x/assets/20200520-intro/d497cf5ecdfa0901da96910ed026d52d.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200520-intro/d497cf5ecdfa0901da96910ed026d52d.webp
rename to src/framework/springboot/2.7.x/assets/20200520-intro/d497cf5ecdfa0901da96910ed026d52d.webp
diff --git a/docs/src/framework/springboot/assets/20200520-intro/e004e85b17f27105407b1916186d9943.webp b/src/framework/springboot/2.7.x/assets/20200520-intro/e004e85b17f27105407b1916186d9943.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200520-intro/e004e85b17f27105407b1916186d9943.webp
rename to src/framework/springboot/2.7.x/assets/20200520-intro/e004e85b17f27105407b1916186d9943.webp
diff --git a/docs/src/framework/springboot/assets/20200726-xml-mybatis/14162bcaa8a912073e768cb3a8b190c4.webp b/src/framework/springboot/2.7.x/assets/20200726-xml-mybatis/14162bcaa8a912073e768cb3a8b190c4.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200726-xml-mybatis/14162bcaa8a912073e768cb3a8b190c4.webp
rename to src/framework/springboot/2.7.x/assets/20200726-xml-mybatis/14162bcaa8a912073e768cb3a8b190c4.webp
diff --git a/docs/src/framework/springboot/assets/20200726-xml-mybatis/b427339f93a5fd033a70087b51ba2663.webp b/src/framework/springboot/2.7.x/assets/20200726-xml-mybatis/b427339f93a5fd033a70087b51ba2663.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200726-xml-mybatis/b427339f93a5fd033a70087b51ba2663.webp
rename to src/framework/springboot/2.7.x/assets/20200726-xml-mybatis/b427339f93a5fd033a70087b51ba2663.webp
diff --git a/docs/src/framework/springboot/assets/20200726-xml-mybatis/ef1bd6c4a0dff834d62f689af19e2aca.webp b/src/framework/springboot/2.7.x/assets/20200726-xml-mybatis/ef1bd6c4a0dff834d62f689af19e2aca.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200726-xml-mybatis/ef1bd6c4a0dff834d62f689af19e2aca.webp
rename to src/framework/springboot/2.7.x/assets/20200726-xml-mybatis/ef1bd6c4a0dff834d62f689af19e2aca.webp
diff --git a/docs/src/framework/springboot/assets/20200727-annotation-mybatis/1.webp b/src/framework/springboot/2.7.x/assets/20200727-annotation-mybatis/1.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200727-annotation-mybatis/1.webp
rename to src/framework/springboot/2.7.x/assets/20200727-annotation-mybatis/1.webp
diff --git a/docs/src/framework/springboot/assets/20200727-annotation-mybatis/2.webp b/src/framework/springboot/2.7.x/assets/20200727-annotation-mybatis/2.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200727-annotation-mybatis/2.webp
rename to src/framework/springboot/2.7.x/assets/20200727-annotation-mybatis/2.webp
diff --git a/docs/src/framework/springboot/assets/20200727-annotation-mybatis/format,png.webp b/src/framework/springboot/2.7.x/assets/20200727-annotation-mybatis/format,png.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200727-annotation-mybatis/format,png.webp
rename to src/framework/springboot/2.7.x/assets/20200727-annotation-mybatis/format,png.webp
diff --git a/docs/src/framework/springboot/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142942968.webp b/src/framework/springboot/2.7.x/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142942968.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142942968.webp
rename to src/framework/springboot/2.7.x/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142942968.webp
diff --git a/docs/src/framework/springboot/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142942996.webp b/src/framework/springboot/2.7.x/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142942996.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142942996.webp
rename to src/framework/springboot/2.7.x/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142942996.webp
diff --git a/docs/src/framework/springboot/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142943002.webp b/src/framework/springboot/2.7.x/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142943002.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142943002.webp
rename to src/framework/springboot/2.7.x/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142943002.webp
diff --git a/docs/src/framework/springboot/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142943003.webp b/src/framework/springboot/2.7.x/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142943003.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142943003.webp
rename to src/framework/springboot/2.7.x/assets/20200728-annotation-mybatis-pagehelper/format,png-20240216142943003.webp
diff --git a/docs/src/framework/springboot/assets/20200729-thymeleaf/15061e92fe45f7c20cd92719af1bc518.webp b/src/framework/springboot/2.7.x/assets/20200729-thymeleaf/15061e92fe45f7c20cd92719af1bc518.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200729-thymeleaf/15061e92fe45f7c20cd92719af1bc518.webp
rename to src/framework/springboot/2.7.x/assets/20200729-thymeleaf/15061e92fe45f7c20cd92719af1bc518.webp
diff --git a/docs/src/framework/springboot/assets/20200729-thymeleaf/b097ea4415d4788723624bc10c8d5079.png b/src/framework/springboot/2.7.x/assets/20200729-thymeleaf/b097ea4415d4788723624bc10c8d5079.png
similarity index 100%
rename from docs/src/framework/springboot/assets/20200729-thymeleaf/b097ea4415d4788723624bc10c8d5079.png
rename to src/framework/springboot/2.7.x/assets/20200729-thymeleaf/b097ea4415d4788723624bc10c8d5079.png
diff --git a/docs/src/framework/springboot/assets/20200729-thymeleaf/d21cf34a70eef14aadda1115504a2e20.webp b/src/framework/springboot/2.7.x/assets/20200729-thymeleaf/d21cf34a70eef14aadda1115504a2e20.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200729-thymeleaf/d21cf34a70eef14aadda1115504a2e20.webp
rename to src/framework/springboot/2.7.x/assets/20200729-thymeleaf/d21cf34a70eef14aadda1115504a2e20.webp
diff --git a/docs/src/framework/springboot/assets/20200730-jdbc/36de70fe7095ce899d78090d21069ee1.webp b/src/framework/springboot/2.7.x/assets/20200730-jdbc/36de70fe7095ce899d78090d21069ee1.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200730-jdbc/36de70fe7095ce899d78090d21069ee1.webp
rename to src/framework/springboot/2.7.x/assets/20200730-jdbc/36de70fe7095ce899d78090d21069ee1.webp
diff --git a/docs/src/framework/springboot/assets/20200730-jdbc/bfa9a133e78d34fb4fc75abe556726b5.webp b/src/framework/springboot/2.7.x/assets/20200730-jdbc/bfa9a133e78d34fb4fc75abe556726b5.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20200730-jdbc/bfa9a133e78d34fb4fc75abe556726b5.webp
rename to src/framework/springboot/2.7.x/assets/20200730-jdbc/bfa9a133e78d34fb4fc75abe556726b5.webp
diff --git a/docs/src/framework/springboot/assets/20210811-create-ways/09a392fe5a02cd0a7a8d995aa6e7df28.webp b/src/framework/springboot/2.7.x/assets/20210811-create-ways/09a392fe5a02cd0a7a8d995aa6e7df28.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20210811-create-ways/09a392fe5a02cd0a7a8d995aa6e7df28.webp
rename to src/framework/springboot/2.7.x/assets/20210811-create-ways/09a392fe5a02cd0a7a8d995aa6e7df28.webp
diff --git a/docs/src/framework/springboot/assets/20210811-create-ways/4c20b2ba08f111ee3131656c2343da88.webp b/src/framework/springboot/2.7.x/assets/20210811-create-ways/4c20b2ba08f111ee3131656c2343da88.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20210811-create-ways/4c20b2ba08f111ee3131656c2343da88.webp
rename to src/framework/springboot/2.7.x/assets/20210811-create-ways/4c20b2ba08f111ee3131656c2343da88.webp
diff --git a/docs/src/framework/springboot/assets/20210811-create-ways/51b0fea0db18f15723bd3bce4549ffd1.webp b/src/framework/springboot/2.7.x/assets/20210811-create-ways/51b0fea0db18f15723bd3bce4549ffd1.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20210811-create-ways/51b0fea0db18f15723bd3bce4549ffd1.webp
rename to src/framework/springboot/2.7.x/assets/20210811-create-ways/51b0fea0db18f15723bd3bce4549ffd1.webp
diff --git a/docs/src/framework/springboot/assets/20210811-create-ways/670b5de78b6ec92cc49f00f33c1bf444.webp b/src/framework/springboot/2.7.x/assets/20210811-create-ways/670b5de78b6ec92cc49f00f33c1bf444.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20210811-create-ways/670b5de78b6ec92cc49f00f33c1bf444.webp
rename to src/framework/springboot/2.7.x/assets/20210811-create-ways/670b5de78b6ec92cc49f00f33c1bf444.webp
diff --git a/docs/src/framework/springboot/assets/20210811-create-ways/688657458528f2467fc9b7a46b9648fd.webp b/src/framework/springboot/2.7.x/assets/20210811-create-ways/688657458528f2467fc9b7a46b9648fd.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20210811-create-ways/688657458528f2467fc9b7a46b9648fd.webp
rename to src/framework/springboot/2.7.x/assets/20210811-create-ways/688657458528f2467fc9b7a46b9648fd.webp
diff --git a/docs/src/framework/springboot/assets/20210811-create-ways/69bc8fcdeb7d003d8435f63ed54d4eb9.webp b/src/framework/springboot/2.7.x/assets/20210811-create-ways/69bc8fcdeb7d003d8435f63ed54d4eb9.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20210811-create-ways/69bc8fcdeb7d003d8435f63ed54d4eb9.webp
rename to src/framework/springboot/2.7.x/assets/20210811-create-ways/69bc8fcdeb7d003d8435f63ed54d4eb9.webp
diff --git a/docs/src/framework/springboot/assets/20210811-create-ways/89d398fd75033e437c7f34c1ed90d131.webp b/src/framework/springboot/2.7.x/assets/20210811-create-ways/89d398fd75033e437c7f34c1ed90d131.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20210811-create-ways/89d398fd75033e437c7f34c1ed90d131.webp
rename to src/framework/springboot/2.7.x/assets/20210811-create-ways/89d398fd75033e437c7f34c1ed90d131.webp
diff --git a/docs/src/framework/springboot/assets/20210811-create-ways/91b5310c2142ea527bd906c1e52a0d19.webp b/src/framework/springboot/2.7.x/assets/20210811-create-ways/91b5310c2142ea527bd906c1e52a0d19.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20210811-create-ways/91b5310c2142ea527bd906c1e52a0d19.webp
rename to src/framework/springboot/2.7.x/assets/20210811-create-ways/91b5310c2142ea527bd906c1e52a0d19.webp
diff --git a/docs/src/framework/springboot/assets/20210811-create-ways/b9d782e5bc6126a20724c3226a108eb6.webp b/src/framework/springboot/2.7.x/assets/20210811-create-ways/b9d782e5bc6126a20724c3226a108eb6.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20210811-create-ways/b9d782e5bc6126a20724c3226a108eb6.webp
rename to src/framework/springboot/2.7.x/assets/20210811-create-ways/b9d782e5bc6126a20724c3226a108eb6.webp
diff --git a/docs/src/framework/springboot/assets/20210811-create-ways/dfb91002b373b2951611187bceaf37c0.webp b/src/framework/springboot/2.7.x/assets/20210811-create-ways/dfb91002b373b2951611187bceaf37c0.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20210811-create-ways/dfb91002b373b2951611187bceaf37c0.webp
rename to src/framework/springboot/2.7.x/assets/20210811-create-ways/dfb91002b373b2951611187bceaf37c0.webp
diff --git a/docs/src/framework/springboot/assets/20210811-create-ways/f0340f49c99f92cc4b894423b4c1032d.webp b/src/framework/springboot/2.7.x/assets/20210811-create-ways/f0340f49c99f92cc4b894423b4c1032d.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20210811-create-ways/f0340f49c99f92cc4b894423b4c1032d.webp
rename to src/framework/springboot/2.7.x/assets/20210811-create-ways/f0340f49c99f92cc4b894423b4c1032d.webp
diff --git a/docs/src/framework/springboot/assets/20211003-config/7e41a871c0d8b2992e37f7a5d587b486.webp b/src/framework/springboot/2.7.x/assets/20211003-config/7e41a871c0d8b2992e37f7a5d587b486.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20211003-config/7e41a871c0d8b2992e37f7a5d587b486.webp
rename to src/framework/springboot/2.7.x/assets/20211003-config/7e41a871c0d8b2992e37f7a5d587b486.webp
diff --git a/docs/src/framework/springboot/assets/20211003-config/83a11edacd179ff4d36d115efae92b8c.webp b/src/framework/springboot/2.7.x/assets/20211003-config/83a11edacd179ff4d36d115efae92b8c.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20211003-config/83a11edacd179ff4d36d115efae92b8c.webp
rename to src/framework/springboot/2.7.x/assets/20211003-config/83a11edacd179ff4d36d115efae92b8c.webp
diff --git a/docs/src/framework/springboot/assets/20211003-config/a749931a1ed4fed321f2fed10ff39524.webp b/src/framework/springboot/2.7.x/assets/20211003-config/a749931a1ed4fed321f2fed10ff39524.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20211003-config/a749931a1ed4fed321f2fed10ff39524.webp
rename to src/framework/springboot/2.7.x/assets/20211003-config/a749931a1ed4fed321f2fed10ff39524.webp
diff --git a/docs/src/framework/springboot/assets/20211003-config/fd2d14ade1c670b6c41706e9fe33918b.webp b/src/framework/springboot/2.7.x/assets/20211003-config/fd2d14ade1c670b6c41706e9fe33918b.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20211003-config/fd2d14ade1c670b6c41706e9fe33918b.webp
rename to src/framework/springboot/2.7.x/assets/20211003-config/fd2d14ade1c670b6c41706e9fe33918b.webp
diff --git a/docs/src/framework/springboot/assets/20211130-freemaker/3057aebb4069a8f7d7194e1a3550d345.webp b/src/framework/springboot/2.7.x/assets/20211130-freemaker/3057aebb4069a8f7d7194e1a3550d345.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20211130-freemaker/3057aebb4069a8f7d7194e1a3550d345.webp
rename to src/framework/springboot/2.7.x/assets/20211130-freemaker/3057aebb4069a8f7d7194e1a3550d345.webp
diff --git a/docs/src/framework/springboot/assets/20211130-freemaker/392d82974ae0da42c0837b569234c9ab.webp b/src/framework/springboot/2.7.x/assets/20211130-freemaker/392d82974ae0da42c0837b569234c9ab.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20211130-freemaker/392d82974ae0da42c0837b569234c9ab.webp
rename to src/framework/springboot/2.7.x/assets/20211130-freemaker/392d82974ae0da42c0837b569234c9ab.webp
diff --git a/docs/src/framework/springboot/assets/20211130-freemaker/e73532bbbc13df6c7c032cb5e2830308.webp b/src/framework/springboot/2.7.x/assets/20211130-freemaker/e73532bbbc13df6c7c032cb5e2830308.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20211130-freemaker/e73532bbbc13df6c7c032cb5e2830308.webp
rename to src/framework/springboot/2.7.x/assets/20211130-freemaker/e73532bbbc13df6c7c032cb5e2830308.webp
diff --git a/docs/src/framework/springboot/assets/20220106-swagger2/368ac7a10903d6bc4b8ca40f0499e1a2.webp b/src/framework/springboot/2.7.x/assets/20220106-swagger2/368ac7a10903d6bc4b8ca40f0499e1a2.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220106-swagger2/368ac7a10903d6bc4b8ca40f0499e1a2.webp
rename to src/framework/springboot/2.7.x/assets/20220106-swagger2/368ac7a10903d6bc4b8ca40f0499e1a2.webp
diff --git a/docs/src/framework/springboot/assets/20220106-swagger2/3991e096f8e065eef28eb18c96c9e75a.webp b/src/framework/springboot/2.7.x/assets/20220106-swagger2/3991e096f8e065eef28eb18c96c9e75a.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220106-swagger2/3991e096f8e065eef28eb18c96c9e75a.webp
rename to src/framework/springboot/2.7.x/assets/20220106-swagger2/3991e096f8e065eef28eb18c96c9e75a.webp
diff --git a/docs/src/framework/springboot/assets/20220106-swagger2/549b01a19bb472adb6627ac8fc3cbea0.webp b/src/framework/springboot/2.7.x/assets/20220106-swagger2/549b01a19bb472adb6627ac8fc3cbea0.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220106-swagger2/549b01a19bb472adb6627ac8fc3cbea0.webp
rename to src/framework/springboot/2.7.x/assets/20220106-swagger2/549b01a19bb472adb6627ac8fc3cbea0.webp
diff --git a/docs/src/framework/springboot/assets/20220106-swagger2/7e7bfe6ea67c4cad6e0f7d54d3f91ee2.webp b/src/framework/springboot/2.7.x/assets/20220106-swagger2/7e7bfe6ea67c4cad6e0f7d54d3f91ee2.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220106-swagger2/7e7bfe6ea67c4cad6e0f7d54d3f91ee2.webp
rename to src/framework/springboot/2.7.x/assets/20220106-swagger2/7e7bfe6ea67c4cad6e0f7d54d3f91ee2.webp
diff --git a/docs/src/framework/springboot/assets/20220106-swagger2/b82f60ff3fc15b63805e9a752f5dad04.webp b/src/framework/springboot/2.7.x/assets/20220106-swagger2/b82f60ff3fc15b63805e9a752f5dad04.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220106-swagger2/b82f60ff3fc15b63805e9a752f5dad04.webp
rename to src/framework/springboot/2.7.x/assets/20220106-swagger2/b82f60ff3fc15b63805e9a752f5dad04.webp
diff --git a/docs/src/framework/springboot/assets/20220106-swagger2/fd00f07cc22497006d89bb5eee390dd3.webp b/src/framework/springboot/2.7.x/assets/20220106-swagger2/fd00f07cc22497006d89bb5eee390dd3.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220106-swagger2/fd00f07cc22497006d89bb5eee390dd3.webp
rename to src/framework/springboot/2.7.x/assets/20220106-swagger2/fd00f07cc22497006d89bb5eee390dd3.webp
diff --git a/docs/src/framework/springboot/assets/20220110-swagger3/2414e1f4aa828327b4f7e4081f34fa67.webp b/src/framework/springboot/2.7.x/assets/20220110-swagger3/2414e1f4aa828327b4f7e4081f34fa67.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220110-swagger3/2414e1f4aa828327b4f7e4081f34fa67.webp
rename to src/framework/springboot/2.7.x/assets/20220110-swagger3/2414e1f4aa828327b4f7e4081f34fa67.webp
diff --git a/docs/src/framework/springboot/assets/20220110-swagger3/55b5febabbbd5843263e23a15c3dba25.webp b/src/framework/springboot/2.7.x/assets/20220110-swagger3/55b5febabbbd5843263e23a15c3dba25.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220110-swagger3/55b5febabbbd5843263e23a15c3dba25.webp
rename to src/framework/springboot/2.7.x/assets/20220110-swagger3/55b5febabbbd5843263e23a15c3dba25.webp
diff --git a/docs/src/framework/springboot/assets/20220110-swagger3/77fb63e04b37520112786c316357b5e9.webp b/src/framework/springboot/2.7.x/assets/20220110-swagger3/77fb63e04b37520112786c316357b5e9.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220110-swagger3/77fb63e04b37520112786c316357b5e9.webp
rename to src/framework/springboot/2.7.x/assets/20220110-swagger3/77fb63e04b37520112786c316357b5e9.webp
diff --git a/docs/src/framework/springboot/assets/20220110-swagger3/9d0b71735ce59d7b07c4710d61e87f9c.webp b/src/framework/springboot/2.7.x/assets/20220110-swagger3/9d0b71735ce59d7b07c4710d61e87f9c.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220110-swagger3/9d0b71735ce59d7b07c4710d61e87f9c.webp
rename to src/framework/springboot/2.7.x/assets/20220110-swagger3/9d0b71735ce59d7b07c4710d61e87f9c.webp
diff --git a/docs/src/framework/springboot/assets/20220110-swagger3/c189ce0f46e7fc0ab30a7f9abdd29b0e.webp b/src/framework/springboot/2.7.x/assets/20220110-swagger3/c189ce0f46e7fc0ab30a7f9abdd29b0e.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220110-swagger3/c189ce0f46e7fc0ab30a7f9abdd29b0e.webp
rename to src/framework/springboot/2.7.x/assets/20220110-swagger3/c189ce0f46e7fc0ab30a7f9abdd29b0e.webp
diff --git a/docs/src/framework/springboot/assets/20220110-swagger3/e614f6d4b8a5080f356547e604e869c9.webp b/src/framework/springboot/2.7.x/assets/20220110-swagger3/e614f6d4b8a5080f356547e604e869c9.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220110-swagger3/e614f6d4b8a5080f356547e604e869c9.webp
rename to src/framework/springboot/2.7.x/assets/20220110-swagger3/e614f6d4b8a5080f356547e604e869c9.webp
diff --git a/docs/src/framework/springboot/assets/20220110-swagger3/e95321801f7ac573bfa0061f6c6c5114.webp b/src/framework/springboot/2.7.x/assets/20220110-swagger3/e95321801f7ac573bfa0061f6c6c5114.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220110-swagger3/e95321801f7ac573bfa0061f6c6c5114.webp
rename to src/framework/springboot/2.7.x/assets/20220110-swagger3/e95321801f7ac573bfa0061f6c6c5114.webp
diff --git a/docs/src/framework/springboot/assets/20220430-knife4j/10ee44265c16148cbed2a8a34a676f6a-20240205215323531.webp b/src/framework/springboot/2.7.x/assets/20220430-knife4j/10ee44265c16148cbed2a8a34a676f6a-20240205215323531.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220430-knife4j/10ee44265c16148cbed2a8a34a676f6a-20240205215323531.webp
rename to src/framework/springboot/2.7.x/assets/20220430-knife4j/10ee44265c16148cbed2a8a34a676f6a-20240205215323531.webp
diff --git a/docs/src/framework/springboot/assets/20220430-knife4j/3365c280ea9b48d4fde5b80e3d0847bb-20240205215323532.webp b/src/framework/springboot/2.7.x/assets/20220430-knife4j/3365c280ea9b48d4fde5b80e3d0847bb-20240205215323532.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220430-knife4j/3365c280ea9b48d4fde5b80e3d0847bb-20240205215323532.webp
rename to src/framework/springboot/2.7.x/assets/20220430-knife4j/3365c280ea9b48d4fde5b80e3d0847bb-20240205215323532.webp
diff --git a/docs/src/framework/springboot/assets/20220430-knife4j/8b6f5004e1f91d1abcffbb8b4d380b2e-20240205215323505.webp b/src/framework/springboot/2.7.x/assets/20220430-knife4j/8b6f5004e1f91d1abcffbb8b4d380b2e-20240205215323505.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220430-knife4j/8b6f5004e1f91d1abcffbb8b4d380b2e-20240205215323505.webp
rename to src/framework/springboot/2.7.x/assets/20220430-knife4j/8b6f5004e1f91d1abcffbb8b4d380b2e-20240205215323505.webp
diff --git a/docs/src/framework/springboot/assets/20220430-knife4j/cf1fa1440de711f1e1788c5897d31808-20240205215323517.webp b/src/framework/springboot/2.7.x/assets/20220430-knife4j/cf1fa1440de711f1e1788c5897d31808-20240205215323517.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220430-knife4j/cf1fa1440de711f1e1788c5897d31808-20240205215323517.webp
rename to src/framework/springboot/2.7.x/assets/20220430-knife4j/cf1fa1440de711f1e1788c5897d31808-20240205215323517.webp
diff --git a/docs/src/framework/springboot/assets/20220604-security/02ef542d6e334658bf5175f3fb7046d7.webp b/src/framework/springboot/2.7.x/assets/20220604-security/02ef542d6e334658bf5175f3fb7046d7.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220604-security/02ef542d6e334658bf5175f3fb7046d7.webp
rename to src/framework/springboot/2.7.x/assets/20220604-security/02ef542d6e334658bf5175f3fb7046d7.webp
diff --git a/docs/src/framework/springboot/assets/20220604-security/57056782c34445b69f2ff934ece24c83.webp b/src/framework/springboot/2.7.x/assets/20220604-security/57056782c34445b69f2ff934ece24c83.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220604-security/57056782c34445b69f2ff934ece24c83.webp
rename to src/framework/springboot/2.7.x/assets/20220604-security/57056782c34445b69f2ff934ece24c83.webp
diff --git a/docs/src/framework/springboot/assets/20220604-security/b361ffbd2c1441bf853fa32cd64c7479.webp b/src/framework/springboot/2.7.x/assets/20220604-security/b361ffbd2c1441bf853fa32cd64c7479.webp
similarity index 100%
rename from docs/src/framework/springboot/assets/20220604-security/b361ffbd2c1441bf853fa32cd64c7479.webp
rename to src/framework/springboot/2.7.x/assets/20220604-security/b361ffbd2c1441bf853fa32cd64c7479.webp
diff --git a/src/framework/springboot/README.md b/src/framework/springboot/README.md
new file mode 100644
index 0000000000..2c2e52c83a
--- /dev/null
+++ b/src/framework/springboot/README.md
@@ -0,0 +1,7 @@
+---
+title: Spring Boot  
+index: false
+icon: iconfont icon-spring
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/src/frontmatter.md b/src/frontmatter.md
new file mode 100644
index 0000000000..88a049ab70
--- /dev/null
+++ b/src/frontmatter.md
@@ -0,0 +1,23 @@
+---
+index: false
+isOriginal: true
+shortTitle: 
+category:
+tag:
+---
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+
+:::
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/guide.md b/src/guide.md
new file mode 100644
index 0000000000..3b82c1af1e
--- /dev/null
+++ b/src/guide.md
@@ -0,0 +1,38 @@
+---
+icon: fa-brands fa-java
+isOriginal: true
+title: JavaPark | 编程知识公园 🔥
+---
+
+⏰ 在阅读本博客内容时，若遇到任何内容、代码、图片等有关错误，都可以提交 **issues** 或者 **PR** 的方式进行勘误反馈，我会陆续进行完善改进，感谢支持。
+
+- issues: `https://github.com/cunyu1943/JavaPark/issues`
+- PR: `https://github.com/cunyu1943/JavaPark/pulls`，仅需在文章的末尾找到 **在 GitHub 上编辑此页**，即可完成克隆和提交 `PR`。
+- 本站为整理公众号文章的知识库，关注公众号：[村雨遥](https://cunyu1943.gitee.io/contact/wechatpublic.png) 及时获取最新推文，避免错过最近更新。
+- 此外，如果在学习本站内容有疑惑的地方，还可以通过微信：`cunyu1943` 联系我，备注 **加群**，拉你进技术交流群！
+
+![](/contact/contact.png =200x)
+
+---
+
+## 零、本站知识图谱
+
+![](.vuepress/public/map.png)
+
+## 一、Java
+
+## 二、求职面试
+
+## 三、框架｜中间件
+
+## 四、计算机知识
+
+## 五、基础教程
+
+## 六、编程语言
+
+## 七、你问我答
+
+## 八、好物周刊
+
+## 九、关于
\ No newline at end of file
diff --git a/src/interview/README.md b/src/interview/README.md
new file mode 100644
index 0000000000..e867a449fa
--- /dev/null
+++ b/src/interview/README.md
@@ -0,0 +1,20 @@
+---
+title: 求职面试
+index: false
+icon: iconfont icon-interview
+---
+
+## 知识点
+
+1. [Java 基础面试知识点](knowledge/20240201-java-basic.md)
+2. [Java 进阶面试知识点](knowledge/20240203-java-advanced.md)
+3. [MySQL 面试知识点](knowledge/20240203-mysql.md)
+4. [MyBatis 面试知识点](knowledge/20210822-mybatis.md)
+5. [知识点：Spring 面试知识点](knowledge/20210103-spring.md)
+6. [知识点：多线程面试知识点](knowledge/20210629-thread.md)
+7. [知识点：异常面试知识点](knowledge/20210528-exception.md)
+8. [知识点：计算机网络面试知识点](knowledge/20201231-network.md)
+
+## 面经
+
+## 技巧
\ No newline at end of file
diff --git a/docs/src/interview/knowledge/20201231-network.md b/src/interview/knowledge/20201231-network.md
similarity index 98%
rename from docs/src/interview/knowledge/20201231-network.md
rename to src/interview/knowledge/20201231-network.md
index ab08262114..ef5c8c73b0 100644
--- a/docs/src/interview/knowledge/20201231-network.md
+++ b/src/interview/knowledge/20201231-network.md
@@ -10,19 +10,6 @@ tag:
 
 # 计算机网络面试知识点
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 1. 计算机网络基础
 
 ### 1.1 主机间的通信方式
diff --git a/docs/src/interview/knowledge/20210103-spring.md b/src/interview/knowledge/20210103-spring.md
similarity index 97%
rename from docs/src/interview/knowledge/20210103-spring.md
rename to src/interview/knowledge/20210103-spring.md
index 62a085519d..3e3a7c30fb 100644
--- a/docs/src/interview/knowledge/20210103-spring.md
+++ b/src/interview/knowledge/20210103-spring.md
@@ -8,19 +8,6 @@ tag:
 
 # Spring 面试知识点
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 1. Spring 特点
 
 Spring 主要有如下特点：
diff --git a/docs/src/interview/knowledge/20210528-exception.md b/src/interview/knowledge/20210528-exception.md
similarity index 94%
rename from docs/src/interview/knowledge/20210528-exception.md
rename to src/interview/knowledge/20210528-exception.md
index 803a4408bf..a293bb3b98 100644
--- a/docs/src/interview/knowledge/20210528-exception.md
+++ b/src/interview/knowledge/20210528-exception.md
@@ -8,19 +8,6 @@ tag:
 
 # 异常面试知识点
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 异常简介
 
 ### 异常类层次结构
diff --git a/docs/src/interview/knowledge/20210629-thread.md b/src/interview/knowledge/20210629-thread.md
similarity index 97%
rename from docs/src/interview/knowledge/20210629-thread.md
rename to src/interview/knowledge/20210629-thread.md
index 113c9c1c13..4945afa288 100644
--- a/docs/src/interview/knowledge/20210629-thread.md
+++ b/src/interview/knowledge/20210629-thread.md
@@ -8,19 +8,6 @@ tag:
 
 # 多线程面试知识点
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 1. 进程和线程
 
 ### 1.1 进程
diff --git a/docs/src/interview/knowledge/20210822-mybatis.md b/src/interview/knowledge/20210822-mybatis.md
similarity index 95%
rename from docs/src/interview/knowledge/20210822-mybatis.md
rename to src/interview/knowledge/20210822-mybatis.md
index a60f7bf0c8..f4572c0a61 100644
--- a/docs/src/interview/knowledge/20210822-mybatis.md
+++ b/src/interview/knowledge/20210822-mybatis.md
@@ -6,19 +6,6 @@ tag: 面试
 
 # MyBatis 面试知识点
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## Hibernate 简介
 
 ### 什么是 Hibernate？
diff --git a/docs/src/interview/knowledge/20240201-java-basic.md b/src/interview/knowledge/20240201-java-basic.md
similarity index 82%
rename from docs/src/interview/knowledge/20240201-java-basic.md
rename to src/interview/knowledge/20240201-java-basic.md
index 651cab0d96..bcb1855ad7 100644
--- a/docs/src/interview/knowledge/20240201-java-basic.md
+++ b/src/interview/knowledge/20240201-java-basic.md
@@ -7,20 +7,6 @@ date: 2024-02-01
 
 # Java 基础面试知识点
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 一个 Java 文件中是否可以存在多个类（修饰类除外）？
 
 一个 Java 文件中是可以存在多个类的，但是一个 Java 文件中只能存在一个 `public` 所修饰的类，而且这个 Java 文件的文件名还必须和 `public` 所修饰类的类名保持一致，一个简单的实例如下。
@@ -75,19 +61,19 @@ Java 中，数据类型主要包括 8 大基本数据类型和引用数据类型
 
 ### 基本数据类型
 
-| 数据类型               | bit     | 字节   | 封装类      | 数据范围                          | 默认值 |
-| ---------------------- | ------- | ------ | ----------- | --------------------------------- | ------ |
-| `byte`                 | 8       | 1      | `Byte`      | $-2^7 \text{~} 2^7-1$             | `0`    |
-| `short`                | 16      | 2      | `Short`     | $-2^{15} \text{~} 2^{15}-1$       | `0`    |
-| `char`                 | 16      | 2      | `Character` | `\\u0000`                         |        |
-| ~ `\\uffff`            |         |        |             |                                   |        |
-| （$0 \text{~} 65535$） | `u0000` |        |             |                                   |        |
-| `int`                  | 32      | 4      | `Integer`   | $-2^{31} \text{~} 2^{31}-1$       | `0`    |
-| `long`                 | 64      | 8      | `Long`      | $-2^{63} \text{~} 2^{63}-1$       | `0L`   |
-| `float`                | 32      | 4      | `Float`     | $3.4e^{-45} \text{~} 1.4e^{38}$   | `0.0f` |
-| `double`               | 64      | 8      | `Double`    | $4.9e^{-324} \text{~} 1.8e^{308}$ | `0.0D` |
-| `boolean`              | 不确定  | 不确定 | `Boolean`   | `true`                            |        |
-| 或 `false`             | `false` |        |             |                                   |        |
+| 数据类型          | bit     | 字节   | 封装类      | 数据范围                     | 默认值 |
+| ----------------- | ------- | ------ | ----------- | ---------------------------- | ------ |
+| `byte`            | 8       | 1      | `Byte`      | $-2^7 \text{~} 2^7-1$             | `0`    |
+| `short`           | 16      | 2      | `Short`     | $-2^{15} \text{~} 2^{15}-1$       | `0`    |
+| `char`            | 16      | 2      | `Character` | `\\u0000`                    |        |
+| ~ `\\uffff`       |         |        |             |                              |        |
+| （$0 \text{~} 65535$） | `u0000` |        |             |                              |        |
+| `int`             | 32      | 4      | `Integer`   | $-2^{31} \text{~} 2^{31}-1$       | `0`    |
+| `long`            | 64      | 8      | `Long`      | $-2^{63} \text{~} 2^{63}-1$       | `0L`   |
+| `float`           | 32      | 4      | `Float`     | $3.4e^{-45} \text{~} 1.4e^{38}$   | `0.0f` |
+| `double`          | 64      | 8      | `Double`    | $4.9e^{-324} \text{~} 1.8e^{308}$ | `0.0D` |
+| `boolean`         | 不确定  | 不确定 | `Boolean`   | `true`                       |        |
+| 或 `false`        | `false` |        |             |                              |        |
 
 
 **注意：**
@@ -147,15 +133,15 @@ Integer n = Integer.valueOf(123);
 System.out.println(m == n);
 ```
 
-| 数据类型    | 默认缓存池            |
-| ----------- | --------------------- |
+| 数据类型    | 默认缓存池       |
+| ----------- | ---------------- |
 | `Byte`      | $-2^7 \text{~} 2^7-1$ |
-| `Character` | `\\u0000`             |
-| ~ `\\u007F` |                       |
+| `Character` | `\\u0000`        |
+| ~ `\\u007F` |                  |
 | `Short`     | $-2^7 \text{~} 2^7-1$ |
 | `Integer`   | $-2^7 \text{~} 2^7-1$ |
-| `Boolean`   | `true` & `false`      |
-|             |                       |
+| `Boolean`   | `true` & `false` |
+|             |                  |
 
 
 ## 字符串 String
@@ -193,10 +179,10 @@ public final class String implements java.io.Serializable, Comparable<String>, C
 
 主要从三个方面对三者进行对比：
 
-|                 | 可变性 | 线程安全                               | 适用场景                                                      |
-| --------------- | ------ | -------------------------------------- | ------------------------------------------------------------- |
-| `String`        | 不可变 | 安全                                   | 操作少量的数据                                                |
-| `StringBuffer`  | 可变   | 安全，内部使用 `synchronized` 进行同步 | 多线程操作字符串缓冲区下操作大量数据                          |
+|                 | 可变性 | 线程安全                               | 适用场景                                                     |
+| --------------- | ------ | -------------------------------------- | ------------------------------------------------------------ |
+| `String`        | 不可变 | 安全                                   | 操作少量的数据                                               |
+| `StringBuffer`  | 可变   | 安全，内部使用 `synchronized` 进行同步 | 多线程操作字符串缓冲区下操作大量数据                         |
 | `StringBuilder` | 可变   | 不安全                                 | 单线程操作字符串缓冲区下操作大量数据，性能高于 `StringBuffer` |
 
 
@@ -300,12 +286,12 @@ String name = "村雨遥";
 
 Java 主要提供了 3 中访问修饰符 `public`、`protected`、`private`，但实际使用过程中，一共可以形成 4 种访问权限，分别是 `public`、`protected`、`private`、`default`，其中 `default` 是不加任何修饰符时的访问权限。关于 4 种访问权限的对比如下表，✅ 表示可以访问，❌ 表示不可访问。
 
-| 作用域      | 当前类 | 同一 `package` 的类 | 子类 | 其他 `package` 的类 |
-| ----------- | ------ | ------------------- | ---- | ------------------- |
-| `public`    | ✅      | ✅                   | ✅    | ✅                   |
-| `protected` | ✅      | ✅                   | ✅    | ❌                   |
-| `default`   | ✅      | ✅                   | ❌    | ❌                   |
-| `private`   | ✅      | ❌                   | ❌    | ❌                   |
+| 作用域 | 当前类 | 同一 `package` 的类 | 子类 | 其他 `package` 的类 |
+| --- | --- | --- | --- | --- |
+| `public` | ✅ | ✅ | ✅ | ✅ |
+| `protected` | ✅ | ✅ | ✅ | ❌ |
+| `default` | ✅ | ✅ | ❌ | ❌ |
+| `private` | ✅ | ❌ | ❌ | ❌ |
 
 
 ### static、final、this、super
@@ -376,10 +362,10 @@ public class Son extends Father{
 
 ### continue、break 和 return
 
-| 关键字     | 说明                                                                                                                                                  |
-| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `continue` | 用于循环结构，指跳出当前循环，进入下一次循环                                                                                                          |
-| `break`    | 用于循环结构，指跳出整个循环体，继续执行循环下面的语句                                                                                                |
+| 关键字     | 说明                                                         |
+| ---------- | ------------------------------------------------------------ |
+| `continue` | 用于循环结构，指跳出当前循环，进入下一次循环                 |
+| `break`    | 用于循环结构，指跳出整个循环体，继续执行循环下面的语句       |
 | `return`   | 1. `return ;`进行同步：直接用 `return` 结束方法执行，用于没有返回值函数的方法；<br />2. `return value;` ：`return` 一个特定值，用于有返回值函数的方法 |
 
 
@@ -437,37 +423,37 @@ public class Son extends Father{
 
 ### 关系运算符
 
-| 运算符 | 描述                                                             | 例子             |
-| ------ | ---------------------------------------------------------------- | ---------------- |
-| `==`   | 检查如果两个操作数的值是否相等，如果相等则条件为真。             | （A == B）为假。 |
-| `!=`   | 检查如果两个操作数的值是否相等，如果值不相等则条件为真。         | (A != B) 为真。  |
-| `>`    | 检查左操作数的值是否大于右操作数的值，如果是那么条件为真。       | （A> B）为假。   |
-| `<`    | 检查左操作数的值是否小于右操作数的值，如果是那么条件为真。       | （A <B）为真。   |
+| 运算符 | 描述                                                         | 例子             |
+| ------ | ------------------------------------------------------------ | ---------------- |
+| `==`   | 检查如果两个操作数的值是否相等，如果相等则条件为真。         | （A == B）为假。 |
+| `!=`   | 检查如果两个操作数的值是否相等，如果值不相等则条件为真。     | (A != B) 为真。  |
+| `>`    | 检查左操作数的值是否大于右操作数的值，如果是那么条件为真。   | （A> B）为假。   |
+| `<`    | 检查左操作数的值是否小于右操作数的值，如果是那么条件为真。   | （A <B）为真。   |
 | `>=`   | 检查左操作数的值是否大于或等于右操作数的值，如果是那么条件为真。 | （A> = B）为假。 |
 | `<=`   | 检查左操作数的值是否小于或等于右操作数的值，如果是那么条件为真。 | （A <= B）为真。 |
 
 
 ### 位运算符
 
-| 操作符 | 描述                                                                               | 例子                                     |
-| ------ | ---------------------------------------------------------------------------------- | ---------------------------------------- |
-| `＆`   | 如果相对应位都是 1，则结果为 1，否则为 0                                           | $(A\text{＆}B)$，得到 12，即 0000 1100   |
-| `      | `                                                                                  | 如果相对应位都是 0，则结果为 0，否则为 1 | 如果相对应位都是 0，则结果为 0，否则为 1 |
-| `^`    | 如果相对应位值相同，则结果为 0，否则为1                                            | $(A ^ B)$得到 49，即 0011 0001           |
-| `〜`   | 按位取反运算符翻转操作数的每一位，即 0 变成 1，1 变成 0。                          | $( \text{~} A)$ 得到 -61，即1100 0011    |
-| `<<`   | 按位左移运算符。左操作数按位左移右操作数指定的位数。                               | $A << 2$ 得到 240，即 1111 0000          |
-| `>>`   | 按位右移运算符。左操作数按位右移右操作数指定的位数。                               | $A >> 2$ 得到 15 即 $1111$               |
+| 操作符 | 描述                                                         | 例子                                     |
+| ------ | ------------------------------------------------------------ | ---------------------------------------- |
+| `＆`   | 如果相对应位都是 1，则结果为 1，否则为 0                     | $(A\text{＆}B)$，得到 12，即 0000 1100          |
+| `|`    | 如果相对应位都是 0，则结果为 0，否则为 1                     | 如果相对应位都是 0，则结果为 0，否则为 1 |
+| `^`    | 如果相对应位值相同，则结果为 0，否则为1                      | $(A ^ B)$得到 49，即 0011 0001           |
+| `〜`   | 按位取反运算符翻转操作数的每一位，即 0 变成 1，1 变成 0。    | $( \text{~} A)$ 得到 -61，即1100 0011            |
+| `<<`   | 按位左移运算符。左操作数按位左移右操作数指定的位数。         | $A << 2$ 得到 240，即 1111 0000          |
+| `>>`   | 按位右移运算符。左操作数按位右移右操作数指定的位数。         | $A >> 2$ 得到 15 即 $1111$               |
 | `>>>`  | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移，移动得到的空位以零填充。 | $A >>> 2$ 得到 15 即 $0000 1111$         |
 
 
 ### 逻辑运算符
 
-| 操作符 | 描述                                                                                    | 例子                                                         |
-| ------ | --------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
-| `&&`   | 称为逻辑与运算符。当且仅当两个操作数都为真，条件才为真。                                | `（A && B）`                                                 |
-| `      | `                                                                                       | 称为逻辑或操作符。如果任何两个操作数任何一个为真，条件为真。 | `（A | B）`为真。 |
-| `!`    | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true，则逻辑非运算符将得到false。 | `!(A && B)`                                                  |
-| 为真。 |                                                                                         |                                                              |
+| 操作符 | 描述                                                         | 例子              |
+| ------ | ------------------------------------------------------------ | ----------------- |
+| `&&`   | 称为逻辑与运算符。当且仅当两个操作数都为真，条件才为真。     | `（A && B）`      |
+| `|`    | 称为逻辑或操作符。如果任何两个操作数任何一个为真，条件为真。 | `（A | B）`为真。 |
+| `!`    | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true，则逻辑非运算符将得到false。 | `!(A && B)`       |
+| 为真。 |                                                              |                   |
 
 
 ### 赋值运算符
@@ -733,16 +719,16 @@ public static void PersonCrossTest(Person person){
 
 ### Object 类中常见方法
 
-| 方法                                                                      | 说明                                                                                                                                                                                                                                                     |
-| ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `public final native Class<?> getClass()`                                 | 用于返回当前运行时对象的 Class 对象，使用了final 关键字修饰，故不允许子类重写                                                                                                                                                                            |
-| `public native int hashCode()`                                            | 用于返回对象的哈希码，主要使用在哈希表中，比如 JDK 中的 HashMap                                                                                                                                                                                          |
-| `public boolean equals(Object obj)`                                       | 用于比较 2 个对象的内存地址是否相等，String 类对该方法进行了重写用户比较字符串的值是否相等                                                                                                                                                               |
-| `protected native Object clone() throws CloneNotSupportedException`       | 用于创建并返回当前对象的一份浅拷贝。一般情况下，对于任何对象 x，表达式 x.clone() != x 为true，x.clone().getClass() == x.getClass() 为 true。Object 本身没有实现 Cloneable 接口，所以不重写clone方法并且进行调用的话会发生CloneNotSupportedException 异常 |
-| `public String toString()`                                                | 返回类的名字@实例的哈希码的16进制的字符串。建议Object所有的子类都重写这个方法                                                                                                                                                                            |
-| `public final native void notify()`                                       | 不能重写。唤醒一个在此对象监视器上等待的线程(监视器相当于就是锁的概念)。如果有多个线程在等待只会任意唤醒一个                                                                                                                                             |
-| `public final native void notifyAll()`                                    | 不能重写。跟notify一样，唯一的区别就是会唤醒在此对象监视器上等待的所有线程，而不是一个线程                                                                                                                                                               |
-| `public final native void wait(long timeout) throws InterruptedException` | 不能重写。暂停线程的执行注意：sleep方法没有释放锁，而wait方法释放了锁 。timeout是等待时间，调用该方法后当前线程进入睡眠状态，知道如下时间发生：                                                                                                          |
+| 方法                                                         | 说明                                                         |
+| ------------------------------------------------------------ | ------------------------------------------------------------ |
+| `public final native Class<?> getClass()`                    | 用于返回当前运行时对象的 Class 对象，使用了final 关键字修饰，故不允许子类重写 |
+| `public native int hashCode()`                               | 用于返回对象的哈希码，主要使用在哈希表中，比如 JDK 中的 HashMap |
+| `public boolean equals(Object obj)`                          | 用于比较 2 个对象的内存地址是否相等，String 类对该方法进行了重写用户比较字符串的值是否相等 |
+| `protected native Object clone() throws CloneNotSupportedException` | 用于创建并返回当前对象的一份浅拷贝。一般情况下，对于任何对象 x，表达式 x.clone() != x 为true，x.clone().getClass() == x.getClass() 为 true。Object 本身没有实现 Cloneable 接口，所以不重写clone方法并且进行调用的话会发生CloneNotSupportedException 异常 |
+| `public String toString()`                                   | 返回类的名字@实例的哈希码的16进制的字符串。建议Object所有的子类都重写这个方法 |
+| `public final native void notify()`                          | 不能重写。唤醒一个在此对象监视器上等待的线程(监视器相当于就是锁的概念)。如果有多个线程在等待只会任意唤醒一个 |
+| `public final native void notifyAll()`                       | 不能重写。跟notify一样，唯一的区别就是会唤醒在此对象监视器上等待的所有线程，而不是一个线程 |
+| `public final native void wait(long timeout) throws InterruptedException` | 不能重写。暂停线程的执行注意：sleep方法没有释放锁，而wait方法释放了锁 。timeout是等待时间，调用该方法后当前线程进入睡眠状态，知道如下时间发生： |
 
 1. 其他线程调用该对象的 `notify()/notifyAll()`
     方法；
diff --git a/docs/src/interview/knowledge/20240203-java-advanced.md b/src/interview/knowledge/20240203-java-advanced.md
similarity index 98%
rename from docs/src/interview/knowledge/20240203-java-advanced.md
rename to src/interview/knowledge/20240203-java-advanced.md
index 7ac624ba8a..5c0a35258b 100644
--- a/docs/src/interview/knowledge/20240203-java-advanced.md
+++ b/src/interview/knowledge/20240203-java-advanced.md
@@ -7,19 +7,6 @@ date: 2024-02-03
 
 # Java 进阶面试知识点
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 异常
 
 ### 异常类层次结构
@@ -423,6 +410,8 @@ System.out.println("array1:" + Arrays.toString(array));
 System.out.println("array2:" + Arrays.toString(array2));
 ```
 
+有关集合的更多内容，可以参看 [Java 容器知识点总结](4.Java%E5%AE%B9%E5%99%A8)。
+
 ## 泛型
 
 推荐阅读：[https://juejin.im/post/5b614848e51d45355d51f792](https://juejin.im/post/5b614848e51d45355d51f792)
diff --git a/docs/src/interview/knowledge/20240203-mysql.md b/src/interview/knowledge/20240203-mysql.md
similarity index 98%
rename from docs/src/interview/knowledge/20240203-mysql.md
rename to src/interview/knowledge/20240203-mysql.md
index 897751637a..8985ff57c0 100644
--- a/docs/src/interview/knowledge/20240203-mysql.md
+++ b/src/interview/knowledge/20240203-mysql.md
@@ -7,19 +7,6 @@ date: 2024-02-03
 
 # MySQL 面试知识点
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 数据库基础
 
 ### 使用数据库的优点
diff --git a/src/interview/knowledge/README.md b/src/interview/knowledge/README.md
new file mode 100644
index 0000000000..1ba871c4d6
--- /dev/null
+++ b/src/interview/knowledge/README.md
@@ -0,0 +1,7 @@
+---
+title: 知识点
+index: false
+icon: iconfont icon-interview
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/interview/knowledge/assets/20201231-network/1d5ac6b297456fd31f8e4b9c518f0e53.webp b/src/interview/knowledge/assets/20201231-network/1d5ac6b297456fd31f8e4b9c518f0e53.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20201231-network/1d5ac6b297456fd31f8e4b9c518f0e53.webp
rename to src/interview/knowledge/assets/20201231-network/1d5ac6b297456fd31f8e4b9c518f0e53.webp
diff --git a/docs/src/interview/knowledge/assets/20201231-network/6b09a3bc1b49c1cb772d6eedce2f66a9.webp b/src/interview/knowledge/assets/20201231-network/6b09a3bc1b49c1cb772d6eedce2f66a9.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20201231-network/6b09a3bc1b49c1cb772d6eedce2f66a9.webp
rename to src/interview/knowledge/assets/20201231-network/6b09a3bc1b49c1cb772d6eedce2f66a9.webp
diff --git a/docs/src/interview/knowledge/assets/20201231-network/6ed01a44de3bc699551d355ec5cb400e.webp b/src/interview/knowledge/assets/20201231-network/6ed01a44de3bc699551d355ec5cb400e.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20201231-network/6ed01a44de3bc699551d355ec5cb400e.webp
rename to src/interview/knowledge/assets/20201231-network/6ed01a44de3bc699551d355ec5cb400e.webp
diff --git a/docs/src/interview/knowledge/assets/20201231-network/a468e849bf48b218f0a3266e1d9cd5b9.webp b/src/interview/knowledge/assets/20201231-network/a468e849bf48b218f0a3266e1d9cd5b9.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20201231-network/a468e849bf48b218f0a3266e1d9cd5b9.webp
rename to src/interview/knowledge/assets/20201231-network/a468e849bf48b218f0a3266e1d9cd5b9.webp
diff --git a/docs/src/interview/knowledge/assets/20201231-network/b5a6afaaab6917b98040b871ca963f00.webp b/src/interview/knowledge/assets/20201231-network/b5a6afaaab6917b98040b871ca963f00.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20201231-network/b5a6afaaab6917b98040b871ca963f00.webp
rename to src/interview/knowledge/assets/20201231-network/b5a6afaaab6917b98040b871ca963f00.webp
diff --git a/docs/src/interview/knowledge/assets/20201231-network/b606acad67d96dfe7b05087d9f9c5da6.webp b/src/interview/knowledge/assets/20201231-network/b606acad67d96dfe7b05087d9f9c5da6.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20201231-network/b606acad67d96dfe7b05087d9f9c5da6.webp
rename to src/interview/knowledge/assets/20201231-network/b606acad67d96dfe7b05087d9f9c5da6.webp
diff --git a/docs/src/interview/knowledge/assets/20201231-network/e83d235b519cb62cfe22fec281fbe7d5.webp b/src/interview/knowledge/assets/20201231-network/e83d235b519cb62cfe22fec281fbe7d5.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20201231-network/e83d235b519cb62cfe22fec281fbe7d5.webp
rename to src/interview/knowledge/assets/20201231-network/e83d235b519cb62cfe22fec281fbe7d5.webp
diff --git a/docs/src/interview/knowledge/assets/20210103-spring/38c318f0471c891948870b4aeb7ef42b.webp b/src/interview/knowledge/assets/20210103-spring/38c318f0471c891948870b4aeb7ef42b.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20210103-spring/38c318f0471c891948870b4aeb7ef42b.webp
rename to src/interview/knowledge/assets/20210103-spring/38c318f0471c891948870b4aeb7ef42b.webp
diff --git a/docs/src/interview/knowledge/assets/20210103-spring/f8f52f31e2b1e4a5c63e5668d064cd79.webp b/src/interview/knowledge/assets/20210103-spring/f8f52f31e2b1e4a5c63e5668d064cd79.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20210103-spring/f8f52f31e2b1e4a5c63e5668d064cd79.webp
rename to src/interview/knowledge/assets/20210103-spring/f8f52f31e2b1e4a5c63e5668d064cd79.webp
diff --git a/docs/src/interview/knowledge/assets/20210528-exception/1c84229f69d297378acbb67640945140.webp b/src/interview/knowledge/assets/20210528-exception/1c84229f69d297378acbb67640945140.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20210528-exception/1c84229f69d297378acbb67640945140.webp
rename to src/interview/knowledge/assets/20210528-exception/1c84229f69d297378acbb67640945140.webp
diff --git a/docs/src/interview/knowledge/assets/20210528-exception/f0e6de0123d88bb0f33ef3e5048de1ed.webp b/src/interview/knowledge/assets/20210528-exception/f0e6de0123d88bb0f33ef3e5048de1ed.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20210528-exception/f0e6de0123d88bb0f33ef3e5048de1ed.webp
rename to src/interview/knowledge/assets/20210528-exception/f0e6de0123d88bb0f33ef3e5048de1ed.webp
diff --git a/docs/src/interview/knowledge/assets/20210629-thread/21763e0482318e0c66b636400c0db8d8.webp b/src/interview/knowledge/assets/20210629-thread/21763e0482318e0c66b636400c0db8d8.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20210629-thread/21763e0482318e0c66b636400c0db8d8.webp
rename to src/interview/knowledge/assets/20210629-thread/21763e0482318e0c66b636400c0db8d8.webp
diff --git a/docs/src/interview/knowledge/assets/20210629-thread/aa87d3f39c64c954d987c1f6584c41be.webp b/src/interview/knowledge/assets/20210629-thread/aa87d3f39c64c954d987c1f6584c41be.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20210629-thread/aa87d3f39c64c954d987c1f6584c41be.webp
rename to src/interview/knowledge/assets/20210629-thread/aa87d3f39c64c954d987c1f6584c41be.webp
diff --git a/docs/src/interview/knowledge/assets/20210629-thread/e41c06ea944bee601b8ad835bf798ab0.webp b/src/interview/knowledge/assets/20210629-thread/e41c06ea944bee601b8ad835bf798ab0.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20210629-thread/e41c06ea944bee601b8ad835bf798ab0.webp
rename to src/interview/knowledge/assets/20210629-thread/e41c06ea944bee601b8ad835bf798ab0.webp
diff --git a/docs/src/interview/knowledge/assets/20210822-mybatis/1.png b/src/interview/knowledge/assets/20210822-mybatis/1.png
similarity index 100%
rename from docs/src/interview/knowledge/assets/20210822-mybatis/1.png
rename to src/interview/knowledge/assets/20210822-mybatis/1.png
diff --git a/docs/src/interview/knowledge/assets/20240203-java-advanced/aE9fSO.webp b/src/interview/knowledge/assets/20240203-java-advanced/aE9fSO.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-java-advanced/aE9fSO.webp
rename to src/interview/knowledge/assets/20240203-java-advanced/aE9fSO.webp
diff --git a/docs/src/interview/knowledge/assets/20240203-java-advanced/aENcM8.webp b/src/interview/knowledge/assets/20240203-java-advanced/aENcM8.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-java-advanced/aENcM8.webp
rename to src/interview/knowledge/assets/20240203-java-advanced/aENcM8.webp
diff --git a/docs/src/interview/knowledge/assets/20240203-java-advanced/aVTv3n.webp b/src/interview/knowledge/assets/20240203-java-advanced/aVTv3n.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-java-advanced/aVTv3n.webp
rename to src/interview/knowledge/assets/20240203-java-advanced/aVTv3n.webp
diff --git a/docs/src/interview/knowledge/assets/20240203-java-advanced/akwEee.webp b/src/interview/knowledge/assets/20240203-java-advanced/akwEee.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-java-advanced/akwEee.webp
rename to src/interview/knowledge/assets/20240203-java-advanced/akwEee.webp
diff --git a/docs/src/interview/knowledge/assets/20240203-java-basic/UxLfq1.webp b/src/interview/knowledge/assets/20240203-java-basic/UxLfq1.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-java-basic/UxLfq1.webp
rename to src/interview/knowledge/assets/20240203-java-basic/UxLfq1.webp
diff --git a/docs/src/interview/knowledge/assets/20240203-java-basic/UxXxC8.webp b/src/interview/knowledge/assets/20240203-java-basic/UxXxC8.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-java-basic/UxXxC8.webp
rename to src/interview/knowledge/assets/20240203-java-basic/UxXxC8.webp
diff --git a/docs/src/interview/knowledge/assets/20240203-java-basic/UxjpvQ.webp b/src/interview/knowledge/assets/20240203-java-basic/UxjpvQ.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-java-basic/UxjpvQ.webp
rename to src/interview/knowledge/assets/20240203-java-basic/UxjpvQ.webp
diff --git a/docs/src/interview/knowledge/assets/20240203-java-basic/UzFVeO.webp b/src/interview/knowledge/assets/20240203-java-basic/UzFVeO.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-java-basic/UzFVeO.webp
rename to src/interview/knowledge/assets/20240203-java-basic/UzFVeO.webp
diff --git a/docs/src/interview/knowledge/assets/20240203-java-basic/aSAzUU.webp b/src/interview/knowledge/assets/20240203-java-basic/aSAzUU.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-java-basic/aSAzUU.webp
rename to src/interview/knowledge/assets/20240203-java-basic/aSAzUU.webp
diff --git a/docs/src/interview/knowledge/assets/20240203-java-basic/aSEADx.webp b/src/interview/knowledge/assets/20240203-java-basic/aSEADx.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-java-basic/aSEADx.webp
rename to src/interview/knowledge/assets/20240203-java-basic/aSEADx.webp
diff --git a/docs/src/interview/knowledge/assets/20240203-java-basic/format,png.webp b/src/interview/knowledge/assets/20240203-java-basic/format,png.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-java-basic/format,png.webp
rename to src/interview/knowledge/assets/20240203-java-basic/format,png.webp
diff --git "a/docs/src/interview/knowledge/assets/20240203-java-basic/imgJava \345\205\263\351\224\256\345\255\227.webp" "b/src/interview/knowledge/assets/20240203-java-basic/imgJava \345\205\263\351\224\256\345\255\227.webp"
similarity index 100%
rename from "docs/src/interview/knowledge/assets/20240203-java-basic/imgJava \345\205\263\351\224\256\345\255\227.webp"
rename to "src/interview/knowledge/assets/20240203-java-basic/imgJava \345\205\263\351\224\256\345\255\227.webp"
diff --git a/docs/src/interview/knowledge/assets/20240203-mysql/dNPfJ0.webp b/src/interview/knowledge/assets/20240203-mysql/dNPfJ0.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-mysql/dNPfJ0.webp
rename to src/interview/knowledge/assets/20240203-mysql/dNPfJ0.webp
diff --git a/docs/src/interview/knowledge/assets/20240203-mysql/wQJaan.webp b/src/interview/knowledge/assets/20240203-mysql/wQJaan.webp
similarity index 100%
rename from docs/src/interview/knowledge/assets/20240203-mysql/wQJaan.webp
rename to src/interview/knowledge/assets/20240203-mysql/wQJaan.webp
diff --git a/src/java-tutorial/README.md b/src/java-tutorial/README.md
new file mode 100644
index 0000000000..d55509ba7b
--- /dev/null
+++ b/src/java-tutorial/README.md
@@ -0,0 +1,82 @@
+---
+title: Java
+index: false
+icon: iconfont icon-java
+---
+
+## Java 基础
+
+1.  [Java 基础：简介](javase/20220701-intro-to-java.md)
+2.  [Java 基础：开发环境搭建及入门程序](javase/20220702-jdk-install-and-hello-world.md)
+3.  [Java 基础：利用 IDEA 进行 Java 开发](javase/20220703-learn-java-with-idea.md)
+4.  [Java 基础：变量与数据类型](javase/20220704-variable-and-datatype.md)
+5.  [Java 基础：常用进制转换](javase/20220705-binary-convert.md)
+6.  [Java 基础：操作符](javase/20220706-operator.md)
+7.  [Java 基础：控制流程](javase/20220707-control-process.md)
+8.  [Java 基础：流程控制知识大闯关](javase/20221127-loop-in-action.md)
+9.  [Java 基础：数组操作的奇技淫巧](javase/20220708-how-to-operate-array.md)
+10. [Java 基础：面向对象的 3、5 知识点](javase/20220709-oop-1.md)
+11. [Java 基础：类的相关知识](javase/20220710-oop-2.md)
+12. [Java 基础：包和 jar 文件的创建](javase/20220711-oop-3.md)
+13. [Java 基础：成员变量、实例变量、静态变量、局部变量？](javase/20220712-all-kinds-of-variable.md)
+14. [Java 基础：String 详解](javase/20220713-string.md)
+15. [Java 基础：ArrayList 详解](javase/20220714-arraylist.md)
+16. [Java 基础：输入输出流](javase/20220715-in-out-stream.md)
+17. [Java 基础：反射机制详解](javase/20220716-reflection.md)
+18. [Java 基础：深入浅出 Java 注解](javase/20220721-annotations.md)
+19. [Java 基础：JDBC 入门指南](javase/20220717-jdbc-introduction.md)
+20. [Java 基础：是时候拥抱 Junit 单元测试了！](javase/20220718-test-with-junit.md)
+21. [Java 基础：Lombok 安装及使用指南](javase/20220719-lombok-install-and-usage.md)
+22. [Java 基础：Fastjson V2 简单使用手册](javase/20220720-fastjson2-quickstart.md)
+23. [Java 基础：static 和 final 小课堂](javase/20221203-oop-advance.md)
+24. [Java 基础：抽象、接口和内部类](javase/20221211-abstract.md)
+25. [Java 基础：Mockito + JUnit 单元测试实例](javase/20220722-mockito.md)
+
+## 实战训练
+### 项目实践
+
+1. [项目实践：MySQL + MyBatis 版学生管理系统](in-action/project/20220307-mysql-mybatis-stu-manag-sys.md)
+2. [项目实践：学生管理系统](in-action/project/20210405-stu-manage-sys.md)
+3. [项目实践：记账本](in-action/project/20210801-tally-book.md)
+4. [项目实践：点菜系统](in-action/project/20210731-order-system.md)
+
+### Java 入门
+
+1. [入门练习：1 - 5](in-action/se/20220625-1-5.md)
+2. [入门练习：6 - 10](in-action/se/20220626-6-10.md)
+3. [入门练习：11 - 15](in-action/se/20220627-11-15.md)
+4. [入门练习：16 - 20](in-action/se/20220628-16-20.md)
+5. [入门练习：21 - 25](in-action/se/20220629-21-25.md)
+6. [入门练习：26 - 30](in-action/se/20220630-26-30.md)
+7. [入门练习：31 - 35](in-action/se/20220701-31-35.md)
+8. [入门练习：36 - 40](in-action/se/20220702-36-40.md)
+
+## MySQL 教程
+
+1. [MySQL 教程：《SQL 必知必会》全解析](mysql/20220726-sql-in-10min.md)
+
+## Web 前端
+<!-- 1. [前端：开发环境搭建](front-end/20230829-environment.md)
+2. [前端：HTML 大揭秘](front-end/20230829-html.md)
+3. [前端：CSS 教程](front-end/20230903-css.md) -->
+1. [前端：Axios 简单使用指南](front-end/20230926-axios.md)
+
+### JavaScript
+
+1. [JavaScript：简介](front-end/javascript/20220416-intro.md)
+2. [JavaScript：注释、输入输出、变量](front-end/javascript/20220417-var.md)
+3. [JavaScript：数据类型](front-end/javascript/20220418-datatype.md)
+4. [JavaScript：操作符](front-end/javascript/20220419-operator.md)
+5. [JavaScript：流程控制](front-end/javascript/20220420-flow.md)
+6. [JavaScript：数组](front-end/javascript/20220421-array.md)
+7. [JavaScript：函数](front-end/javascript/20220422-function.md)
+8. [JavaScript：面向对象](front-end/javascript/20220423-oop.md)
+9. [JavaScript：DOM 元素获取、属性修改](front-end/javascript/20220424-dom-attr.md)
+10. [JavaScript：DOM 事件](front-end/javascript/20220425-dom.md)
+11. [JavaScript：Chrome 中执行 JavaScript 代码](front-end/javascript/20220301-chrome-js.md)
+
+### Vue 3 系列
+
+1. [Vue 3 系列：简介](front-end/vue3/20220605-intro.md)
+2. [Vue 3 系列：搭建 Vue + Vite 入门项目](front-end/vue3/20220606-vite-quickstart.md)
+3. [Vue 3 系列：常用指令](front-end/vue3/20221012-common-command.md)
\ No newline at end of file
diff --git a/docs/src/program-language/front-end/20230829-environment.md b/src/java-tutorial/front-end/20230829-environment.md
similarity index 88%
rename from docs/src/program-language/front-end/20230829-environment.md
rename to src/java-tutorial/front-end/20230829-environment.md
index 660166a28e..75ea51d926 100644
--- a/docs/src/program-language/front-end/20230829-environment.md
+++ b/src/java-tutorial/front-end/20230829-environment.md
@@ -13,19 +13,13 @@ date: 2023-08-29
 
 # 开发环境搭建
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
-## 🎈 号外
+::: tip 原文
 
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::
 
 ## 一、前言
 
@@ -117,6 +111,6 @@ date: 2023-08-29
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/front-end/20230829-html.md b/src/java-tutorial/front-end/20230829-html.md
similarity index 95%
rename from docs/src/program-language/front-end/20230829-html.md
rename to src/java-tutorial/front-end/20230829-html.md
index 7ce74b682e..68ef984619 100644
--- a/docs/src/program-language/front-end/20230829-html.md
+++ b/src/java-tutorial/front-end/20230829-html.md
@@ -11,20 +11,13 @@ date: 2023-08-29
 
 # HTML 大揭秘
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: tip 原文
 
+:::
 
 ## 什么是 HTML
 
@@ -421,6 +414,6 @@ date: 2023-08-29
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/front-end/20230903-css.md b/src/java-tutorial/front-end/20230903-css.md
similarity index 94%
rename from docs/src/program-language/front-end/20230903-css.md
rename to src/java-tutorial/front-end/20230903-css.md
index 035e1c35f0..2e344f59bb 100644
--- a/docs/src/program-language/front-end/20230903-css.md
+++ b/src/java-tutorial/front-end/20230903-css.md
@@ -11,18 +11,12 @@ date: 2023-09-03
 
 # CSS 教程
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-## 🎈 号外
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
 
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::
 
 ## 一、前言
 
@@ -517,7 +511,7 @@ p {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/program-language/front-end/20230926-axios.md b/src/java-tutorial/front-end/20230926-axios.md
similarity index 90%
rename from docs/src/program-language/front-end/20230926-axios.md
rename to src/java-tutorial/front-end/20230926-axios.md
index 2022f4c823..b9b99b8cf4 100644
--- a/docs/src/program-language/front-end/20230926-axios.md
+++ b/src/java-tutorial/front-end/20230926-axios.md
@@ -7,19 +7,9 @@ date: 2023-09-26
 ---
 # Axios 简单使用指南
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 一、概述
 
@@ -242,6 +232,6 @@ axios.delete(url?key=value&key2=value2).then(function(response){}, function(err)
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/java-tutorial/front-end/README.md b/src/java-tutorial/front-end/README.md
new file mode 100644
index 0000000000..552e0c0a8c
--- /dev/null
+++ b/src/java-tutorial/front-end/README.md
@@ -0,0 +1,7 @@
+---
+title: Web 前端
+index: false
+icon: iconfont icon-html
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/program-language/front-end/assets/1693786691442.webp b/src/java-tutorial/front-end/assets/1693786691442.webp
similarity index 100%
rename from docs/src/program-language/front-end/assets/1693786691442.webp
rename to src/java-tutorial/front-end/assets/1693786691442.webp
diff --git a/docs/src/program-language/front-end/assets/1693786800554.webp b/src/java-tutorial/front-end/assets/1693786800554.webp
similarity index 100%
rename from docs/src/program-language/front-end/assets/1693786800554.webp
rename to src/java-tutorial/front-end/assets/1693786800554.webp
diff --git a/docs/src/program-language/front-end/assets/1693787359078.webp b/src/java-tutorial/front-end/assets/1693787359078.webp
similarity index 100%
rename from docs/src/program-language/front-end/assets/1693787359078.webp
rename to src/java-tutorial/front-end/assets/1693787359078.webp
diff --git a/docs/src/program-language/front-end/assets/1693787400353.webp b/src/java-tutorial/front-end/assets/1693787400353.webp
similarity index 100%
rename from docs/src/program-language/front-end/assets/1693787400353.webp
rename to src/java-tutorial/front-end/assets/1693787400353.webp
diff --git a/docs/src/program-language/front-end/assets/1693787430775.webp b/src/java-tutorial/front-end/assets/1693787430775.webp
similarity index 100%
rename from docs/src/program-language/front-end/assets/1693787430775.webp
rename to src/java-tutorial/front-end/assets/1693787430775.webp
diff --git a/docs/src/program-language/front-end/assets/1693787469522.webp b/src/java-tutorial/front-end/assets/1693787469522.webp
similarity index 100%
rename from docs/src/program-language/front-end/assets/1693787469522.webp
rename to src/java-tutorial/front-end/assets/1693787469522.webp
diff --git a/docs/src/program-language/front-end/assets/1693787504599.webp b/src/java-tutorial/front-end/assets/1693787504599.webp
similarity index 100%
rename from docs/src/program-language/front-end/assets/1693787504599.webp
rename to src/java-tutorial/front-end/assets/1693787504599.webp
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/092ca208c01a4261aca3eda70b7c21df.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/092ca208c01a4261aca3eda70b7c21df.png
new file mode 100644
index 0000000000..9f58865b38
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/092ca208c01a4261aca3eda70b7c21df.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/5cbb562698c340a4b4e40c882ba51e69.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/5cbb562698c340a4b4e40c882ba51e69.png
new file mode 100644
index 0000000000..431f667836
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/5cbb562698c340a4b4e40c882ba51e69.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/6ab2f964b8c944c9b445851de2699c15.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/6ab2f964b8c944c9b445851de2699c15.png
new file mode 100644
index 0000000000..f2ea0dd4ed
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/6ab2f964b8c944c9b445851de2699c15.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/add-attr.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/add-attr.png
new file mode 100644
index 0000000000..d09757d851
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/add-attr.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/add-index-demo.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/add-index-demo.png
new file mode 100644
index 0000000000..78b81a66c2
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/add-index-demo.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/add-index.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/add-index.png
new file mode 100644
index 0000000000..68093135b5
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/add-index.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/add.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/add.png
new file mode 100644
index 0000000000..6e4d1d6dd2
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/add.png differ
diff --git a/docs/src/program-language/front-end/javascript/assets/20220417-var/10e2ce1f783e5f3bde02b32331abce8d.gif b/src/java-tutorial/front-end/assets/javaweb-tutorial/alert.gif
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220417-var/10e2ce1f783e5f3bde02b32331abce8d.gif
rename to src/java-tutorial/front-end/assets/javaweb-tutorial/alert.gif
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/alt-img.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/alt-img.png
new file mode 100644
index 0000000000..631cfa0187
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/alt-img.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/anonymous-fun.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/anonymous-fun.png
new file mode 100644
index 0000000000..460a82307d
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/anonymous-fun.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-create.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-create.png
new file mode 100644
index 0000000000..3fc141d735
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-create.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-get.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-get.png
new file mode 100644
index 0000000000..6a4d0a6e77
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-get.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-index.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-index.png
new file mode 100644
index 0000000000..b6975a61ac
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-index.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-iterator.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-iterator.png
new file mode 100644
index 0000000000..8e01e6acbf
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-iterator.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-loop.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-loop.png
new file mode 100644
index 0000000000..8224240a1b
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/arr-loop.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/assignment.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/assignment.png
new file mode 100644
index 0000000000..60997b78ba
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/assignment.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/attr-del.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/attr-del.png
new file mode 100644
index 0000000000..cb8b40473f
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/attr-del.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/attr-qry.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/attr-qry.png
new file mode 100644
index 0000000000..54a311a8be
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/attr-qry.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/body.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/body.png
new file mode 100644
index 0000000000..ed03546dc5
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/body.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/bold.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/bold.png
new file mode 100644
index 0000000000..1c6f1554e4
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/bold.png differ
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/66e9785c383e24d098cbd1db7865b363.gif b/src/java-tutorial/front-end/assets/javaweb-tutorial/boolean.gif
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/66e9785c383e24d098cbd1db7865b363.gif
rename to src/java-tutorial/front-end/assets/javaweb-tutorial/boolean.gif
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/br.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/br.png
new file mode 100644
index 0000000000..0cb4858077
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/br.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/branch.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/branch.png
new file mode 100644
index 0000000000..682f6edfa5
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/branch.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/break.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/break.png
new file mode 100644
index 0000000000..b74dc410a3
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/break.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/classlist.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/classlist.png
new file mode 100644
index 0000000000..0a746c0d52
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/classlist.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/compare.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/compare.png
new file mode 100644
index 0000000000..e9dc642327
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/compare.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/console.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/console.png
new file mode 100644
index 0000000000..390f70ffb2
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/console.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/continue.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/continue.png
new file mode 100644
index 0000000000..87510e85fb
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/continue.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/convert.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/convert.png
new file mode 100644
index 0000000000..93697efc95
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/convert.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/doc-write.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/doc-write.png
new file mode 100644
index 0000000000..a3748b983b
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/doc-write.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/dom-attr-get.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/dom-attr-get.png
new file mode 100644
index 0000000000..a2918ccb71
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/dom-attr-get.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/dom-attr-ways.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/dom-attr-ways.png
new file mode 100644
index 0000000000..77a822928a
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/dom-attr-ways.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/e35a62cae12b4957b28f908702986f51.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/e35a62cae12b4957b28f908702986f51.png
new file mode 100644
index 0000000000..6ff0f80bc1
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/e35a62cae12b4957b28f908702986f51.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/embed.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/embed.png
new file mode 100644
index 0000000000..13ffa1edbf
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/embed.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/env-obj.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/env-obj.png
new file mode 100644
index 0000000000..5df417571e
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/env-obj.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/flow.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/flow.png
new file mode 100644
index 0000000000..da20edebfa
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/flow.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/for-each.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/for-each.png
new file mode 100644
index 0000000000..99971d9a53
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/for-each.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/for.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/for.png
new file mode 100644
index 0000000000..1dfc6aa601
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/for.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/form.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/form.png
new file mode 100644
index 0000000000..f2d1461123
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/form.png differ
diff --git a/docs/src/program-language/front-end/javascript/assets/20220422-function/83d86ae8908175b169f17e3f24974d9c.gif b/src/java-tutorial/front-end/assets/javaweb-tutorial/fun-call.gif
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220422-function/83d86ae8908175b169f17e3f24974d9c.gif
rename to src/java-tutorial/front-end/assets/javaweb-tutorial/fun-call.gif
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/fun-para.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/fun-para.png
new file mode 100644
index 0000000000..562c2fbfaa
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/fun-para.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/html-basic.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/html-basic.png
new file mode 100644
index 0000000000..21a08b7ed5
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/html-basic.png differ
diff --git a/docs/src/program-language/front-end/javascript/assets/20220420-flow/8844ae3cf53621c074638f8d8684caf1.gif b/src/java-tutorial/front-end/assets/javaweb-tutorial/if-demo1.gif
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220420-flow/8844ae3cf53621c074638f8d8684caf1.gif
rename to src/java-tutorial/front-end/assets/javaweb-tutorial/if-demo1.gif
diff --git a/docs/src/program-language/front-end/javascript/assets/20220420-flow/a00ff8b587ed4064c1526aac3571a89b.gif b/src/java-tutorial/front-end/assets/javaweb-tutorial/if-demo2.gif
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220420-flow/a00ff8b587ed4064c1526aac3571a89b.gif
rename to src/java-tutorial/front-end/assets/javaweb-tutorial/if-demo2.gif
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/if.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/if.png
new file mode 100644
index 0000000000..5145d76e8c
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/if.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/img.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/img.png
new file mode 100644
index 0000000000..a650ed7274
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/img.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/in-html-1.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/in-html-1.png
new file mode 100644
index 0000000000..3c5f342d82
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/in-html-1.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/in-html-2.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/in-html-2.png
new file mode 100644
index 0000000000..4e196d6a0a
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/in-html-2.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/in-obj.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/in-obj.png
new file mode 100644
index 0000000000..fa6c1dca6e
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/in-obj.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/in-text-1.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/in-text-1.png
new file mode 100644
index 0000000000..bbd58bcd69
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/in-text-1.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/in-text-2.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/in-text-2.png
new file mode 100644
index 0000000000..99cf2f815d
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/in-text-2.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/inline.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/inline.png
new file mode 100644
index 0000000000..5b0a7c890b
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/inline.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/intext-change.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/intext-change.png
new file mode 100644
index 0000000000..d303c3431e
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/intext-change.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/italic.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/italic.png
new file mode 100644
index 0000000000..5b102a48f8
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/italic.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/js-compose.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/js-compose.png
new file mode 100644
index 0000000000..b76a7d083e
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/js-compose.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/js-structure.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/js-structure.png
new file mode 100644
index 0000000000..33e93a6832
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/js-structure.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/link.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/link.png
new file mode 100644
index 0000000000..cf13fe9bd5
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/link.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/loop.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/loop.png
new file mode 100644
index 0000000000..84d2f1172e
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/loop.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/mix-dev.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/mix-dev.png
new file mode 100644
index 0000000000..d4ced69f72
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/mix-dev.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/modify-attr-res.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/modify-attr-res.png
new file mode 100644
index 0000000000..c3bede72df
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/modify-attr-res.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/mul-attr.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/mul-attr.png
new file mode 100644
index 0000000000..b0af623950
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/mul-attr.png differ
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/56070b14907ae0310b02cb9dc68c1bf3.gif b/src/java-tutorial/front-end/assets/javaweb-tutorial/number.gif
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/56070b14907ae0310b02cb9dc68c1bf3.gif
rename to src/java-tutorial/front-end/assets/javaweb-tutorial/number.gif
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/number.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/number.png
new file mode 100644
index 0000000000..dc2d849686
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/number.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/ol-list.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/ol-list.png
new file mode 100644
index 0000000000..7af6df4762
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/ol-list.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/operate-obj.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/operate-obj.png
new file mode 100644
index 0000000000..1e705a5501
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/operate-obj.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/operator.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/operator.png
new file mode 100644
index 0000000000..7f172da1f1
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/operator.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/outer.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/outer.png
new file mode 100644
index 0000000000..9dc42d1265
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/outer.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/p.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/p.png
new file mode 100644
index 0000000000..09c99676e5
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/p.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/parsefloat.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/parsefloat.png
new file mode 100644
index 0000000000..4d014ab94f
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/parsefloat.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/parseint.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/parseint.png
new file mode 100644
index 0000000000..5e5d99d945
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/parseint.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/plus-sub-demo.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/plus-sub-demo.png
new file mode 100644
index 0000000000..89ca9a50b5
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/plus-sub-demo.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/plus-sub.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/plus-sub.png
new file mode 100644
index 0000000000..1138b29506
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/plus-sub.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/plus.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/plus.png
new file mode 100644
index 0000000000..1a50372ad2
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/plus.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/prompt.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/prompt.png
new file mode 100644
index 0000000000..f643b4b069
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/prompt.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/quickstart-preview.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/quickstart-preview.png
new file mode 100644
index 0000000000..0b1975217a
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/quickstart-preview.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/roma-list.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/roma-list.png
new file mode 100644
index 0000000000..0a5b87f4ed
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/roma-list.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/seprate-dev.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/seprate-dev.png
new file mode 100644
index 0000000000..58eaff813b
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/seprate-dev.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/string-contract.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/string-contract.png
new file mode 100644
index 0000000000..f1eb8a4ac8
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/string-contract.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/string.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/string.png
new file mode 100644
index 0000000000..d98e3e6a1c
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/string.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/style-chg.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/style-chg.png
new file mode 100644
index 0000000000..221475a650
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/style-chg.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/style-class-list.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/style-class-list.png
new file mode 100644
index 0000000000..62427479af
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/style-class-list.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/style-classname.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/style-classname.png
new file mode 100644
index 0000000000..45146ad523
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/style-classname.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/table.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/table.png
new file mode 100644
index 0000000000..4c1adabe46
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/table.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/title-class.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/title-class.png
new file mode 100644
index 0000000000..79754c5fc7
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/title-class.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/title.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/title.png
new file mode 100644
index 0000000000..cffecb726f
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/title.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/to-boolean.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/to-boolean.png
new file mode 100644
index 0000000000..5b37f4c35b
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/to-boolean.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/tostring.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/tostring.png
new file mode 100644
index 0000000000..6d8b343017
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/tostring.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/type-string.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/type-string.png
new file mode 100644
index 0000000000..824e8a3fc5
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/type-string.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/ul-list-1.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/ul-list-1.png
new file mode 100644
index 0000000000..4448720a60
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/ul-list-1.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/ul-list.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/ul-list.png
new file mode 100644
index 0000000000..3e70ded794
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/ul-list.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/underline.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/underline.png
new file mode 100644
index 0000000000..affc2db6eb
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/underline.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/up-down.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/up-down.png
new file mode 100644
index 0000000000..8cab711ead
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/up-down.png differ
diff --git a/src/java-tutorial/front-end/assets/javaweb-tutorial/variable.png b/src/java-tutorial/front-end/assets/javaweb-tutorial/variable.png
new file mode 100644
index 0000000000..93b248f1b3
Binary files /dev/null and b/src/java-tutorial/front-end/assets/javaweb-tutorial/variable.png differ
diff --git a/docs/src/program-language/front-end/javascript/20220301-chrome-js.md b/src/java-tutorial/front-end/javascript/20220301-chrome-js.md
similarity index 89%
rename from docs/src/program-language/front-end/javascript/20220301-chrome-js.md
rename to src/java-tutorial/front-end/javascript/20220301-chrome-js.md
index 46eaa444a3..5f12cf8831 100644
--- a/docs/src/program-language/front-end/javascript/20220301-chrome-js.md
+++ b/src/java-tutorial/front-end/javascript/20220301-chrome-js.md
@@ -1,19 +1,5 @@
 # Chrome 中执行 JavaScript 代码
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 要在浏览器中执行 `JavaScript` 脚本，首先你的浏览器得支持。现在主流推荐 `Chrome` 浏览器，也可以使用基于 `Chromium` 的 `Edge` 浏览器。下面来介绍如何在 `Chrome` 中打开开发者工具，以及如何在开发者工具中运行调试 `JavaScript` 代码。
diff --git a/docs/src/program-language/front-end/javascript/20220416-intro.md b/src/java-tutorial/front-end/javascript/20220416-intro.md
similarity index 92%
rename from docs/src/program-language/front-end/javascript/20220416-intro.md
rename to src/java-tutorial/front-end/javascript/20220416-intro.md
index 81e2453518..68e68e8d08 100644
--- a/docs/src/program-language/front-end/javascript/20220416-intro.md
+++ b/src/java-tutorial/front-end/javascript/20220416-intro.md
@@ -5,23 +5,8 @@ tag:
     - JavaScript
 date: 2022-04-16
 ---
-
 # 简介
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 什么是 JavaScript
 
 作为世界上最流行的语言之一，是一种运行在客户端的脚本语言。而所谓脚本语言，就是不需要编译就能运行的编程语言，JavaScript 在运行过程中通过 JS 解释器来逐行解释然后执行。
diff --git a/docs/src/program-language/front-end/javascript/20220417-var.md b/src/java-tutorial/front-end/javascript/20220417-var.md
similarity index 90%
rename from docs/src/program-language/front-end/javascript/20220417-var.md
rename to src/java-tutorial/front-end/javascript/20220417-var.md
index 3f1449ce8b..f2c2ac9961 100644
--- a/docs/src/program-language/front-end/javascript/20220417-var.md
+++ b/src/java-tutorial/front-end/javascript/20220417-var.md
@@ -8,20 +8,6 @@ date: 2022-04-17
 
 # 注释、输入输出、变量
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 注释
 
 为了提高代码的可读性，我们往往需要在代码中添加一些额外的信息，但是我们又不想让这些信息影响到代码的执行。这时候，我们就需要使用到注释。JavaScript 中，主要有两种注释，一种是单行注释，另一种则是多行注释，和 Java 中的注释很相似。
diff --git a/docs/src/program-language/front-end/javascript/20220418-datatype.md b/src/java-tutorial/front-end/javascript/20220418-datatype.md
similarity index 94%
rename from docs/src/program-language/front-end/javascript/20220418-datatype.md
rename to src/java-tutorial/front-end/javascript/20220418-datatype.md
index e022c4314f..ac402be174 100644
--- a/docs/src/program-language/front-end/javascript/20220418-datatype.md
+++ b/src/java-tutorial/front-end/javascript/20220418-datatype.md
@@ -8,20 +8,6 @@ date: 2022-04-18
 
 # 数据类型
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 导读
 
 初步了解 JavaScript 之后，我们又学习了注释、输入输出以及变量的相关知识。本文紧接上两部分，来继续带领大家学习 JavaScript 中的数据类型知识，本文主要内容如下：
diff --git a/docs/src/program-language/front-end/javascript/20220419-operator.md b/src/java-tutorial/front-end/javascript/20220419-operator.md
similarity index 92%
rename from docs/src/program-language/front-end/javascript/20220419-operator.md
rename to src/java-tutorial/front-end/javascript/20220419-operator.md
index 3a27e55cc1..be878b06b2 100644
--- a/docs/src/program-language/front-end/javascript/20220419-operator.md
+++ b/src/java-tutorial/front-end/javascript/20220419-operator.md
@@ -8,20 +8,6 @@ date: 2022-04-19
 
 # 操作符
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 运算符（`operator`），也叫做操作符，主要是用于实现赋值、比较以及执行算数运算等功能的符号。在 JavaScript 中，主要有以下几类常见的运算符：
 
 -   算数运算符
diff --git a/docs/src/program-language/front-end/javascript/20220420-flow.md b/src/java-tutorial/front-end/javascript/20220420-flow.md
similarity index 94%
rename from docs/src/program-language/front-end/javascript/20220420-flow.md
rename to src/java-tutorial/front-end/javascript/20220420-flow.md
index f1ccfb53b9..3b1d544d95 100644
--- a/docs/src/program-language/front-end/javascript/20220420-flow.md
+++ b/src/java-tutorial/front-end/javascript/20220420-flow.md
@@ -8,20 +8,6 @@ date: 2022-04-20
 
 # 流程控制
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 一个程序中，各个代码之间的执行顺序对于程序结果是会造成影响的。就拿下面简单的例子来说，假如我们拿先使用 `num` 这个变量然后再定义和先定义变量再使用相比。先使用再定义会报错 `undefined`，而定义再使用就没有问题。也就是说，代码的先后顺序会对我们的程序结果造成直接影响。
 
 ```js
diff --git a/docs/src/program-language/front-end/javascript/20220421-array.md b/src/java-tutorial/front-end/javascript/20220421-array.md
similarity index 91%
rename from docs/src/program-language/front-end/javascript/20220421-array.md
rename to src/java-tutorial/front-end/javascript/20220421-array.md
index 610b78a5b8..1429f7a730 100644
--- a/docs/src/program-language/front-end/javascript/20220421-array.md
+++ b/src/java-tutorial/front-end/javascript/20220421-array.md
@@ -8,20 +8,6 @@ date: 2022-04-21
 
 # 数组
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 什么是数组
 
 之前的学习中，如果我们要存储一个值，一般都是通过变量来存储。但如果我们现在想要存储一系列的值，又该如何存储呢，你可能会说可以用多个变量来进行存储。这种方法也可以，但如果你想，一旦值过多，那岂不是就要多个变量，到时候管理就很混乱了。这时候就想，有没有一个可以存储多个值的数据结构，方便我们进行多个值的存储管理呢？
diff --git a/docs/src/program-language/front-end/javascript/20220422-function.md b/src/java-tutorial/front-end/javascript/20220422-function.md
similarity index 92%
rename from docs/src/program-language/front-end/javascript/20220422-function.md
rename to src/java-tutorial/front-end/javascript/20220422-function.md
index 35b9d1d9f5..b630772d20 100644
--- a/docs/src/program-language/front-end/javascript/20220422-function.md
+++ b/src/java-tutorial/front-end/javascript/20220422-function.md
@@ -8,20 +8,6 @@ date: 2022-04-22
 
 # 函数
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 函数简介
 
 编程时，可能会定义许多相同或者功能相似的代码，此时我们每需要使用一次，就需要重写编写一次。虽然利用循环结构也能够实现一些简单的重复操作，但是功能较为局限。此时，我们就需要使用到 JavaScript 中的函数。
diff --git a/docs/src/program-language/front-end/javascript/20220423-oop.md b/src/java-tutorial/front-end/javascript/20220423-oop.md
similarity index 93%
rename from docs/src/program-language/front-end/javascript/20220423-oop.md
rename to src/java-tutorial/front-end/javascript/20220423-oop.md
index cf46799e96..bc08556f85 100644
--- a/docs/src/program-language/front-end/javascript/20220423-oop.md
+++ b/src/java-tutorial/front-end/javascript/20220423-oop.md
@@ -8,20 +8,6 @@ date: 2022-04-23
 
 # 面向对象
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 什么是对象
 
 之前学习的数据类型在存储一些复杂的信息时，十分不方便，而且也难以区分。为此，为了更加详细方便的描述某一个事物，因而提出面向对象的概念。
diff --git a/docs/src/program-language/front-end/javascript/20220424-dom-attr.md b/src/java-tutorial/front-end/javascript/20220424-dom-attr.md
similarity index 95%
rename from docs/src/program-language/front-end/javascript/20220424-dom-attr.md
rename to src/java-tutorial/front-end/javascript/20220424-dom-attr.md
index 3a3fa6423d..499e6e1655 100644
--- a/docs/src/program-language/front-end/javascript/20220424-dom-attr.md
+++ b/src/java-tutorial/front-end/javascript/20220424-dom-attr.md
@@ -8,20 +8,6 @@ date: 2022-04-24
 
 # DOM 元素获取、属性修改
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 什么是 Web API
 
 Web API 是指网页服务器或者网页浏览器的应用程序接口。简单来讲，就是我们在编写 JavaScript 代码时，可以通过 Web API 来操作 HTML 网页和浏览器。
diff --git a/docs/src/program-language/front-end/javascript/20220425-dom.md b/src/java-tutorial/front-end/javascript/20220425-dom.md
similarity index 90%
rename from docs/src/program-language/front-end/javascript/20220425-dom.md
rename to src/java-tutorial/front-end/javascript/20220425-dom.md
index 8ee96c984d..1924b6b1ce 100644
--- a/docs/src/program-language/front-end/javascript/20220425-dom.md
+++ b/src/java-tutorial/front-end/javascript/20220425-dom.md
@@ -8,20 +8,6 @@ date: 2022-04-25
 
 # DOM 事件
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 事件
 
 ### 什么是事件
diff --git a/src/java-tutorial/front-end/javascript/README.md b/src/java-tutorial/front-end/javascript/README.md
new file mode 100644
index 0000000000..d95dfa1365
--- /dev/null
+++ b/src/java-tutorial/front-end/javascript/README.md
@@ -0,0 +1,7 @@
+---
+title: JavaScript 系列
+index: false
+icon: iconfont icon-javascript
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/0c5edf2c7a28cfd8a1ed3f9661c9572a.gif b/src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/0c5edf2c7a28cfd8a1ed3f9661c9572a.gif
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/0c5edf2c7a28cfd8a1ed3f9661c9572a.gif
rename to src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/0c5edf2c7a28cfd8a1ed3f9661c9572a.gif
diff --git a/docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/12d973ff03fed03eaa41c2857d2c818a.webp b/src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/12d973ff03fed03eaa41c2857d2c818a.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/12d973ff03fed03eaa41c2857d2c818a.webp
rename to src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/12d973ff03fed03eaa41c2857d2c818a.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/5e91d3a1e112e737a070ac43c2493450.webp b/src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/5e91d3a1e112e737a070ac43c2493450.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/5e91d3a1e112e737a070ac43c2493450.webp
rename to src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/5e91d3a1e112e737a070ac43c2493450.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/84db6264a2dfa00d1b1e01a74467b484.webp b/src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/84db6264a2dfa00d1b1e01a74467b484.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/84db6264a2dfa00d1b1e01a74467b484.webp
rename to src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/84db6264a2dfa00d1b1e01a74467b484.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/a459c8d0c25730be7d147c9c5edf8389.gif b/src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/a459c8d0c25730be7d147c9c5edf8389.gif
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/a459c8d0c25730be7d147c9c5edf8389.gif
rename to src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/a459c8d0c25730be7d147c9c5edf8389.gif
diff --git a/docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/ce2f4a618bc6eaae91331e8cb342db7e.webp b/src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/ce2f4a618bc6eaae91331e8cb342db7e.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/ce2f4a618bc6eaae91331e8cb342db7e.webp
rename to src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/ce2f4a618bc6eaae91331e8cb342db7e.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/fb9a6c6a907c08afe59729970a53304b.webp b/src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/fb9a6c6a907c08afe59729970a53304b.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/fb9a6c6a907c08afe59729970a53304b.webp
rename to src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/fb9a6c6a907c08afe59729970a53304b.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/ff9e7ce2197548a75977afad65ed5680.gif b/src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/ff9e7ce2197548a75977afad65ed5680.gif
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220301-chrome-js/ff9e7ce2197548a75977afad65ed5680.gif
rename to src/java-tutorial/front-end/javascript/assets/20220301-chrome-js/ff9e7ce2197548a75977afad65ed5680.gif
diff --git a/docs/src/program-language/front-end/javascript/assets/20220416-intro/43b1927d9159b19f2a43471cf3a0a289.webp b/src/java-tutorial/front-end/javascript/assets/20220416-intro/43b1927d9159b19f2a43471cf3a0a289.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220416-intro/43b1927d9159b19f2a43471cf3a0a289.webp
rename to src/java-tutorial/front-end/javascript/assets/20220416-intro/43b1927d9159b19f2a43471cf3a0a289.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220416-intro/533b7d71fa6d9e3d7525d6e44eec01fd.webp b/src/java-tutorial/front-end/javascript/assets/20220416-intro/533b7d71fa6d9e3d7525d6e44eec01fd.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220416-intro/533b7d71fa6d9e3d7525d6e44eec01fd.webp
rename to src/java-tutorial/front-end/javascript/assets/20220416-intro/533b7d71fa6d9e3d7525d6e44eec01fd.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220416-intro/b87142ce6a5f5cdacd0d65eb3062308d.webp b/src/java-tutorial/front-end/javascript/assets/20220416-intro/b87142ce6a5f5cdacd0d65eb3062308d.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220416-intro/b87142ce6a5f5cdacd0d65eb3062308d.webp
rename to src/java-tutorial/front-end/javascript/assets/20220416-intro/b87142ce6a5f5cdacd0d65eb3062308d.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220416-intro/cc3bfe820f145a4537bc04ef2fdbeb01.webp b/src/java-tutorial/front-end/javascript/assets/20220416-intro/cc3bfe820f145a4537bc04ef2fdbeb01.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220416-intro/cc3bfe820f145a4537bc04ef2fdbeb01.webp
rename to src/java-tutorial/front-end/javascript/assets/20220416-intro/cc3bfe820f145a4537bc04ef2fdbeb01.webp
diff --git a/src/java-tutorial/front-end/javascript/assets/20220417-var/10e2ce1f783e5f3bde02b32331abce8d.gif b/src/java-tutorial/front-end/javascript/assets/20220417-var/10e2ce1f783e5f3bde02b32331abce8d.gif
new file mode 100644
index 0000000000..052a4616bf
Binary files /dev/null and b/src/java-tutorial/front-end/javascript/assets/20220417-var/10e2ce1f783e5f3bde02b32331abce8d.gif differ
diff --git a/docs/src/program-language/front-end/javascript/assets/20220417-var/2ef96b65b33837206ef3aa56eabb1477.webp b/src/java-tutorial/front-end/javascript/assets/20220417-var/2ef96b65b33837206ef3aa56eabb1477.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220417-var/2ef96b65b33837206ef3aa56eabb1477.webp
rename to src/java-tutorial/front-end/javascript/assets/20220417-var/2ef96b65b33837206ef3aa56eabb1477.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220417-var/d074d5d6d9a7006ee0bdf064c39c46b5.webp b/src/java-tutorial/front-end/javascript/assets/20220417-var/d074d5d6d9a7006ee0bdf064c39c46b5.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220417-var/d074d5d6d9a7006ee0bdf064c39c46b5.webp
rename to src/java-tutorial/front-end/javascript/assets/20220417-var/d074d5d6d9a7006ee0bdf064c39c46b5.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/02552faab1a464ff09201d013e17ca23.webp b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/02552faab1a464ff09201d013e17ca23.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/02552faab1a464ff09201d013e17ca23.webp
rename to src/java-tutorial/front-end/javascript/assets/20220418-datatype/02552faab1a464ff09201d013e17ca23.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/0517f8dc3b83b23a6aed158062578f35.webp b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/0517f8dc3b83b23a6aed158062578f35.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/0517f8dc3b83b23a6aed158062578f35.webp
rename to src/java-tutorial/front-end/javascript/assets/20220418-datatype/0517f8dc3b83b23a6aed158062578f35.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/45a721bb41f8dd178f2ff70b3ea7d8ed.webp b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/45a721bb41f8dd178f2ff70b3ea7d8ed.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/45a721bb41f8dd178f2ff70b3ea7d8ed.webp
rename to src/java-tutorial/front-end/javascript/assets/20220418-datatype/45a721bb41f8dd178f2ff70b3ea7d8ed.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/54c159e17b993a45d6893c80f21ad185.webp b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/54c159e17b993a45d6893c80f21ad185.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/54c159e17b993a45d6893c80f21ad185.webp
rename to src/java-tutorial/front-end/javascript/assets/20220418-datatype/54c159e17b993a45d6893c80f21ad185.webp
diff --git a/src/java-tutorial/front-end/javascript/assets/20220418-datatype/56070b14907ae0310b02cb9dc68c1bf3.gif b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/56070b14907ae0310b02cb9dc68c1bf3.gif
new file mode 100644
index 0000000000..68c71b710d
Binary files /dev/null and b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/56070b14907ae0310b02cb9dc68c1bf3.gif differ
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/61a66c457fca2d068a1bec8145352bf1.webp b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/61a66c457fca2d068a1bec8145352bf1.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/61a66c457fca2d068a1bec8145352bf1.webp
rename to src/java-tutorial/front-end/javascript/assets/20220418-datatype/61a66c457fca2d068a1bec8145352bf1.webp
diff --git a/src/java-tutorial/front-end/javascript/assets/20220418-datatype/66e9785c383e24d098cbd1db7865b363.gif b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/66e9785c383e24d098cbd1db7865b363.gif
new file mode 100644
index 0000000000..57e7963319
Binary files /dev/null and b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/66e9785c383e24d098cbd1db7865b363.gif differ
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/96ed3e8b75385549e0869ff4788c332b.webp b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/96ed3e8b75385549e0869ff4788c332b.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/96ed3e8b75385549e0869ff4788c332b.webp
rename to src/java-tutorial/front-end/javascript/assets/20220418-datatype/96ed3e8b75385549e0869ff4788c332b.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/9f32cd5199b6015a503a788e0f7951e3.webp b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/9f32cd5199b6015a503a788e0f7951e3.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/9f32cd5199b6015a503a788e0f7951e3.webp
rename to src/java-tutorial/front-end/javascript/assets/20220418-datatype/9f32cd5199b6015a503a788e0f7951e3.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/c0a4e4f881909e059843551817966f76.webp b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/c0a4e4f881909e059843551817966f76.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/c0a4e4f881909e059843551817966f76.webp
rename to src/java-tutorial/front-end/javascript/assets/20220418-datatype/c0a4e4f881909e059843551817966f76.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/caa873449d4f32322eb02bd81f782105.webp b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/caa873449d4f32322eb02bd81f782105.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/caa873449d4f32322eb02bd81f782105.webp
rename to src/java-tutorial/front-end/javascript/assets/20220418-datatype/caa873449d4f32322eb02bd81f782105.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/e81d9acd24a29e0bb12f38d65751ddac.webp b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/e81d9acd24a29e0bb12f38d65751ddac.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/e81d9acd24a29e0bb12f38d65751ddac.webp
rename to src/java-tutorial/front-end/javascript/assets/20220418-datatype/e81d9acd24a29e0bb12f38d65751ddac.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220418-datatype/edbf5e3efa47ca1af0b0eae725a1fbaf.webp b/src/java-tutorial/front-end/javascript/assets/20220418-datatype/edbf5e3efa47ca1af0b0eae725a1fbaf.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220418-datatype/edbf5e3efa47ca1af0b0eae725a1fbaf.webp
rename to src/java-tutorial/front-end/javascript/assets/20220418-datatype/edbf5e3efa47ca1af0b0eae725a1fbaf.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220419-operator/25c46a7f4e13e01051cb4d33650bc300.webp b/src/java-tutorial/front-end/javascript/assets/20220419-operator/25c46a7f4e13e01051cb4d33650bc300.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220419-operator/25c46a7f4e13e01051cb4d33650bc300.webp
rename to src/java-tutorial/front-end/javascript/assets/20220419-operator/25c46a7f4e13e01051cb4d33650bc300.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220419-operator/31f9a961f5ad0bdb34f5a03c74b21e4f.webp b/src/java-tutorial/front-end/javascript/assets/20220419-operator/31f9a961f5ad0bdb34f5a03c74b21e4f.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220419-operator/31f9a961f5ad0bdb34f5a03c74b21e4f.webp
rename to src/java-tutorial/front-end/javascript/assets/20220419-operator/31f9a961f5ad0bdb34f5a03c74b21e4f.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220419-operator/756a2e6f176ceb70d65fd24cb11449fd.webp b/src/java-tutorial/front-end/javascript/assets/20220419-operator/756a2e6f176ceb70d65fd24cb11449fd.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220419-operator/756a2e6f176ceb70d65fd24cb11449fd.webp
rename to src/java-tutorial/front-end/javascript/assets/20220419-operator/756a2e6f176ceb70d65fd24cb11449fd.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220419-operator/8a3431102badca74dcf0479178fe1a6d.webp b/src/java-tutorial/front-end/javascript/assets/20220419-operator/8a3431102badca74dcf0479178fe1a6d.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220419-operator/8a3431102badca74dcf0479178fe1a6d.webp
rename to src/java-tutorial/front-end/javascript/assets/20220419-operator/8a3431102badca74dcf0479178fe1a6d.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220419-operator/e734c82883104ecde04843b2f9f03190.webp b/src/java-tutorial/front-end/javascript/assets/20220419-operator/e734c82883104ecde04843b2f9f03190.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220419-operator/e734c82883104ecde04843b2f9f03190.webp
rename to src/java-tutorial/front-end/javascript/assets/20220419-operator/e734c82883104ecde04843b2f9f03190.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220420-flow/0d5dc1dadbb90dd6eeb36f584ddad4db.webp b/src/java-tutorial/front-end/javascript/assets/20220420-flow/0d5dc1dadbb90dd6eeb36f584ddad4db.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220420-flow/0d5dc1dadbb90dd6eeb36f584ddad4db.webp
rename to src/java-tutorial/front-end/javascript/assets/20220420-flow/0d5dc1dadbb90dd6eeb36f584ddad4db.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220420-flow/233ef57183f2e5d2b83ebc9250fb6d97.webp b/src/java-tutorial/front-end/javascript/assets/20220420-flow/233ef57183f2e5d2b83ebc9250fb6d97.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220420-flow/233ef57183f2e5d2b83ebc9250fb6d97.webp
rename to src/java-tutorial/front-end/javascript/assets/20220420-flow/233ef57183f2e5d2b83ebc9250fb6d97.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220420-flow/538605cdf676c60e1e32e4fd1f02b328.webp b/src/java-tutorial/front-end/javascript/assets/20220420-flow/538605cdf676c60e1e32e4fd1f02b328.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220420-flow/538605cdf676c60e1e32e4fd1f02b328.webp
rename to src/java-tutorial/front-end/javascript/assets/20220420-flow/538605cdf676c60e1e32e4fd1f02b328.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220420-flow/58300ac63840c7474f7d183aa592df37.webp b/src/java-tutorial/front-end/javascript/assets/20220420-flow/58300ac63840c7474f7d183aa592df37.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220420-flow/58300ac63840c7474f7d183aa592df37.webp
rename to src/java-tutorial/front-end/javascript/assets/20220420-flow/58300ac63840c7474f7d183aa592df37.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220420-flow/784186b63df1ccecd4b38bcc9486c7bd.webp b/src/java-tutorial/front-end/javascript/assets/20220420-flow/784186b63df1ccecd4b38bcc9486c7bd.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220420-flow/784186b63df1ccecd4b38bcc9486c7bd.webp
rename to src/java-tutorial/front-end/javascript/assets/20220420-flow/784186b63df1ccecd4b38bcc9486c7bd.webp
diff --git a/src/java-tutorial/front-end/javascript/assets/20220420-flow/8844ae3cf53621c074638f8d8684caf1.gif b/src/java-tutorial/front-end/javascript/assets/20220420-flow/8844ae3cf53621c074638f8d8684caf1.gif
new file mode 100644
index 0000000000..1adcd695ef
Binary files /dev/null and b/src/java-tutorial/front-end/javascript/assets/20220420-flow/8844ae3cf53621c074638f8d8684caf1.gif differ
diff --git a/src/java-tutorial/front-end/javascript/assets/20220420-flow/a00ff8b587ed4064c1526aac3571a89b.gif b/src/java-tutorial/front-end/javascript/assets/20220420-flow/a00ff8b587ed4064c1526aac3571a89b.gif
new file mode 100644
index 0000000000..d9b2a4da1b
Binary files /dev/null and b/src/java-tutorial/front-end/javascript/assets/20220420-flow/a00ff8b587ed4064c1526aac3571a89b.gif differ
diff --git a/docs/src/program-language/front-end/javascript/assets/20220420-flow/a94771451e8abf42ec1b7e4cce84577c.webp b/src/java-tutorial/front-end/javascript/assets/20220420-flow/a94771451e8abf42ec1b7e4cce84577c.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220420-flow/a94771451e8abf42ec1b7e4cce84577c.webp
rename to src/java-tutorial/front-end/javascript/assets/20220420-flow/a94771451e8abf42ec1b7e4cce84577c.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220420-flow/d425505cdd81240e3c19ad5e6e7fd276.webp b/src/java-tutorial/front-end/javascript/assets/20220420-flow/d425505cdd81240e3c19ad5e6e7fd276.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220420-flow/d425505cdd81240e3c19ad5e6e7fd276.webp
rename to src/java-tutorial/front-end/javascript/assets/20220420-flow/d425505cdd81240e3c19ad5e6e7fd276.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220421-array/09ab09e8a2aa089941c6837cbc45daff.webp b/src/java-tutorial/front-end/javascript/assets/20220421-array/09ab09e8a2aa089941c6837cbc45daff.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220421-array/09ab09e8a2aa089941c6837cbc45daff.webp
rename to src/java-tutorial/front-end/javascript/assets/20220421-array/09ab09e8a2aa089941c6837cbc45daff.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220421-array/4a4ff0a44fc4cb55f98f5cb6e4282c2b.webp b/src/java-tutorial/front-end/javascript/assets/20220421-array/4a4ff0a44fc4cb55f98f5cb6e4282c2b.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220421-array/4a4ff0a44fc4cb55f98f5cb6e4282c2b.webp
rename to src/java-tutorial/front-end/javascript/assets/20220421-array/4a4ff0a44fc4cb55f98f5cb6e4282c2b.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220421-array/70e2d8730f590f233eb3c83dcd1182b5.webp b/src/java-tutorial/front-end/javascript/assets/20220421-array/70e2d8730f590f233eb3c83dcd1182b5.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220421-array/70e2d8730f590f233eb3c83dcd1182b5.webp
rename to src/java-tutorial/front-end/javascript/assets/20220421-array/70e2d8730f590f233eb3c83dcd1182b5.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220421-array/72f61bfefdddb01d2861e1d65e1f2c43.webp b/src/java-tutorial/front-end/javascript/assets/20220421-array/72f61bfefdddb01d2861e1d65e1f2c43.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220421-array/72f61bfefdddb01d2861e1d65e1f2c43.webp
rename to src/java-tutorial/front-end/javascript/assets/20220421-array/72f61bfefdddb01d2861e1d65e1f2c43.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220421-array/90c7dcd78c042e4ff3ab7394e4269af1.webp b/src/java-tutorial/front-end/javascript/assets/20220421-array/90c7dcd78c042e4ff3ab7394e4269af1.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220421-array/90c7dcd78c042e4ff3ab7394e4269af1.webp
rename to src/java-tutorial/front-end/javascript/assets/20220421-array/90c7dcd78c042e4ff3ab7394e4269af1.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220421-array/9cbbb970f27082075505e7a0e7ca4459.webp b/src/java-tutorial/front-end/javascript/assets/20220421-array/9cbbb970f27082075505e7a0e7ca4459.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220421-array/9cbbb970f27082075505e7a0e7ca4459.webp
rename to src/java-tutorial/front-end/javascript/assets/20220421-array/9cbbb970f27082075505e7a0e7ca4459.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220421-array/e969f19caa1fe03017aee380a8773ed9.webp b/src/java-tutorial/front-end/javascript/assets/20220421-array/e969f19caa1fe03017aee380a8773ed9.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220421-array/e969f19caa1fe03017aee380a8773ed9.webp
rename to src/java-tutorial/front-end/javascript/assets/20220421-array/e969f19caa1fe03017aee380a8773ed9.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220421-array/fad844b606125a42ef43cbfbf0489e19.webp b/src/java-tutorial/front-end/javascript/assets/20220421-array/fad844b606125a42ef43cbfbf0489e19.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220421-array/fad844b606125a42ef43cbfbf0489e19.webp
rename to src/java-tutorial/front-end/javascript/assets/20220421-array/fad844b606125a42ef43cbfbf0489e19.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220422-function/732f49328d4542bef95533bafa6eb06c.webp b/src/java-tutorial/front-end/javascript/assets/20220422-function/732f49328d4542bef95533bafa6eb06c.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220422-function/732f49328d4542bef95533bafa6eb06c.webp
rename to src/java-tutorial/front-end/javascript/assets/20220422-function/732f49328d4542bef95533bafa6eb06c.webp
diff --git a/src/java-tutorial/front-end/javascript/assets/20220422-function/83d86ae8908175b169f17e3f24974d9c.gif b/src/java-tutorial/front-end/javascript/assets/20220422-function/83d86ae8908175b169f17e3f24974d9c.gif
new file mode 100644
index 0000000000..0cf531f0df
Binary files /dev/null and b/src/java-tutorial/front-end/javascript/assets/20220422-function/83d86ae8908175b169f17e3f24974d9c.gif differ
diff --git a/docs/src/program-language/front-end/javascript/assets/20220422-function/e16af760c972ee92d8e4538fd9d2a070.webp b/src/java-tutorial/front-end/javascript/assets/20220422-function/e16af760c972ee92d8e4538fd9d2a070.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220422-function/e16af760c972ee92d8e4538fd9d2a070.webp
rename to src/java-tutorial/front-end/javascript/assets/20220422-function/e16af760c972ee92d8e4538fd9d2a070.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220423-oop/0b8adee00806455580d3a4c6a61d63c8.webp b/src/java-tutorial/front-end/javascript/assets/20220423-oop/0b8adee00806455580d3a4c6a61d63c8.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220423-oop/0b8adee00806455580d3a4c6a61d63c8.webp
rename to src/java-tutorial/front-end/javascript/assets/20220423-oop/0b8adee00806455580d3a4c6a61d63c8.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220423-oop/4cac185597f62faa66d3d293a956e719.webp b/src/java-tutorial/front-end/javascript/assets/20220423-oop/4cac185597f62faa66d3d293a956e719.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220423-oop/4cac185597f62faa66d3d293a956e719.webp
rename to src/java-tutorial/front-end/javascript/assets/20220423-oop/4cac185597f62faa66d3d293a956e719.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220423-oop/6a7942668b51305aab0fb9d88c7ecf77.webp b/src/java-tutorial/front-end/javascript/assets/20220423-oop/6a7942668b51305aab0fb9d88c7ecf77.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220423-oop/6a7942668b51305aab0fb9d88c7ecf77.webp
rename to src/java-tutorial/front-end/javascript/assets/20220423-oop/6a7942668b51305aab0fb9d88c7ecf77.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220423-oop/89ff4be499b93d82805d94698a6b799b.webp b/src/java-tutorial/front-end/javascript/assets/20220423-oop/89ff4be499b93d82805d94698a6b799b.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220423-oop/89ff4be499b93d82805d94698a6b799b.webp
rename to src/java-tutorial/front-end/javascript/assets/20220423-oop/89ff4be499b93d82805d94698a6b799b.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220423-oop/cf3ea495c960d7326f17174adf691efa.png b/src/java-tutorial/front-end/javascript/assets/20220423-oop/cf3ea495c960d7326f17174adf691efa.png
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220423-oop/cf3ea495c960d7326f17174adf691efa.png
rename to src/java-tutorial/front-end/javascript/assets/20220423-oop/cf3ea495c960d7326f17174adf691efa.png
diff --git a/docs/src/program-language/front-end/javascript/assets/20220423-oop/da9f90545e07c54cf7b7cf009b4ae549.webp b/src/java-tutorial/front-end/javascript/assets/20220423-oop/da9f90545e07c54cf7b7cf009b4ae549.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220423-oop/da9f90545e07c54cf7b7cf009b4ae549.webp
rename to src/java-tutorial/front-end/javascript/assets/20220423-oop/da9f90545e07c54cf7b7cf009b4ae549.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220423-oop/e22ca61732e02a1c91ac6d8f8ad36d11.webp b/src/java-tutorial/front-end/javascript/assets/20220423-oop/e22ca61732e02a1c91ac6d8f8ad36d11.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220423-oop/e22ca61732e02a1c91ac6d8f8ad36d11.webp
rename to src/java-tutorial/front-end/javascript/assets/20220423-oop/e22ca61732e02a1c91ac6d8f8ad36d11.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220423-oop/e85529e4fb6b4e1fb1d208a5581fea74.webp b/src/java-tutorial/front-end/javascript/assets/20220423-oop/e85529e4fb6b4e1fb1d208a5581fea74.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220423-oop/e85529e4fb6b4e1fb1d208a5581fea74.webp
rename to src/java-tutorial/front-end/javascript/assets/20220423-oop/e85529e4fb6b4e1fb1d208a5581fea74.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/057111262b26859801c1eb3471119e76.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/057111262b26859801c1eb3471119e76.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/057111262b26859801c1eb3471119e76.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/057111262b26859801c1eb3471119e76.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/093eaf1ff0a0bb858b49c472fd09e231.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/093eaf1ff0a0bb858b49c472fd09e231.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/093eaf1ff0a0bb858b49c472fd09e231.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/093eaf1ff0a0bb858b49c472fd09e231.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/1dd37fe23ef71f430f2636091a210c36.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/1dd37fe23ef71f430f2636091a210c36.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/1dd37fe23ef71f430f2636091a210c36.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/1dd37fe23ef71f430f2636091a210c36.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/20f87d38e1ddddedbbec16433db29210.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/20f87d38e1ddddedbbec16433db29210.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/20f87d38e1ddddedbbec16433db29210.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/20f87d38e1ddddedbbec16433db29210.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/3b5601f55041a8de8d15357cb97d91ca.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/3b5601f55041a8de8d15357cb97d91ca.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/3b5601f55041a8de8d15357cb97d91ca.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/3b5601f55041a8de8d15357cb97d91ca.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/5607530ddd3832480626144371b54970.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/5607530ddd3832480626144371b54970.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/5607530ddd3832480626144371b54970.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/5607530ddd3832480626144371b54970.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/63283773c5e0fc0b91a1a5eb956657fb.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/63283773c5e0fc0b91a1a5eb956657fb.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/63283773c5e0fc0b91a1a5eb956657fb.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/63283773c5e0fc0b91a1a5eb956657fb.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/76edfc4952ca904e6d9e2f78e258d57b.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/76edfc4952ca904e6d9e2f78e258d57b.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/76edfc4952ca904e6d9e2f78e258d57b.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/76edfc4952ca904e6d9e2f78e258d57b.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/7e563024185360972ec1298d052b0e76.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/7e563024185360972ec1298d052b0e76.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/7e563024185360972ec1298d052b0e76.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/7e563024185360972ec1298d052b0e76.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/82cef4cbf8d1ffc141a1dab1b488c8b6.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/82cef4cbf8d1ffc141a1dab1b488c8b6.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/82cef4cbf8d1ffc141a1dab1b488c8b6.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/82cef4cbf8d1ffc141a1dab1b488c8b6.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/8da5c65462de12d6e65667775d064e72.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/8da5c65462de12d6e65667775d064e72.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/8da5c65462de12d6e65667775d064e72.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/8da5c65462de12d6e65667775d064e72.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/8f925e54c7622e40f117fb85eb3768a3.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/8f925e54c7622e40f117fb85eb3768a3.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/8f925e54c7622e40f117fb85eb3768a3.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/8f925e54c7622e40f117fb85eb3768a3.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/90dbfb2cbd9909197f81ef3ef925fa35.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/90dbfb2cbd9909197f81ef3ef925fa35.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/90dbfb2cbd9909197f81ef3ef925fa35.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/90dbfb2cbd9909197f81ef3ef925fa35.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/ca7783e87ad2eafae32b4090697d3dcc.webp b/src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/ca7783e87ad2eafae32b4090697d3dcc.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220424-dom-attr/ca7783e87ad2eafae32b4090697d3dcc.webp
rename to src/java-tutorial/front-end/javascript/assets/20220424-dom-attr/ca7783e87ad2eafae32b4090697d3dcc.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220425-dom/3eabc18cf3d244f400d101d52648458f.webp b/src/java-tutorial/front-end/javascript/assets/20220425-dom/3eabc18cf3d244f400d101d52648458f.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220425-dom/3eabc18cf3d244f400d101d52648458f.webp
rename to src/java-tutorial/front-end/javascript/assets/20220425-dom/3eabc18cf3d244f400d101d52648458f.webp
diff --git a/docs/src/program-language/front-end/javascript/assets/20220425-dom/ce1fe56f9cdd7702b0f17d8d09d84dd0.webp b/src/java-tutorial/front-end/javascript/assets/20220425-dom/ce1fe56f9cdd7702b0f17d8d09d84dd0.webp
similarity index 100%
rename from docs/src/program-language/front-end/javascript/assets/20220425-dom/ce1fe56f9cdd7702b0f17d8d09d84dd0.webp
rename to src/java-tutorial/front-end/javascript/assets/20220425-dom/ce1fe56f9cdd7702b0f17d8d09d84dd0.webp
diff --git a/src/java-tutorial/front-end/javaweb-tutorial.md b/src/java-tutorial/front-end/javaweb-tutorial.md
new file mode 100644
index 0000000000..c257683427
--- /dev/null
+++ b/src/java-tutorial/front-end/javaweb-tutorial.md
@@ -0,0 +1,3016 @@
+---
+index: false
+---
+
+# 一、Web 简介
+
+## 什么是 Web
+
+什么是 `Web` 呢？所谓 `Web`，就是全球广域网，也叫做万维网（`www, World Wide Web`），通过浏览器就能够访问的网站。
+
+## Web 网站工作流程
+
+![混合开发](assets/javaweb-tutorial/mix-dev.png)
+
+![前后端分离](assets/javaweb-tutorial/seprate-dev.png)
+
+## Web 前端
+
+网页组成：文字、图片、音频、视频、超链接
+
+而看到的网页，本质都是前端代码。通过浏览器对前端代码的的解析和渲染，形成用户看的网页。而在浏览器中对代码解析渲染的工具就叫做浏览器内核。需要注意，不同的浏览器内核是不一样的，所以对于相同的代码解析后的效果也有所有差异。
+
+为了让浏览器将一套代码都能渲染出相同的效果，所以制定了一系列的标准，而这些标准大部分都由 `W3C(World Wide Web Consortium，万维网联盟)` 负责制定。
+
+一个网页由三个部分共同组成：
+
+-   **HTML**：网页的结构（页面元素 + 内容）
+-   **CSS**：网页的表现（页面元素的外观、位置等页面样式）
+-   **JavaScript**：网页的行为（交互效果）
+
+# 二、HTML
+
+## 什么是 HTML
+
+`HTML(HyperText Markup Language)`，中文译为超文本标记语言。
+
+所谓超文本，就是超越了文本的限制，较普通文本更为强大。除开文字信息外，还能定义图片、音频、视频等诸多内容。
+
+而标记语言也很简单，就是由标签所构成的语言。在 `HTML` 中，所有标签都是预先定义好的。写好的 `HTML` 代码能直接在浏览器中运行，然后由浏览器解析。
+
+## HTML 快速入门
+
+1.   先建一个文本，保存后缀名为 `.html` 的文件中。
+2.   接着编写 `HTML` 结构标签
+
+```html
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="UTF-8">
+        <title>Title</title>
+    </head>
+    <body>
+
+    </body>
+</html>
+```
+
+3.   在 `<body>` 中填写内容即可
+
+```html
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="UTF-8">
+        <title>Title</title>
+    </head>
+    <body>
+        <h1>HTML 快速入门</h1>
+    </body>
+</html>
+```
+
+4.   效果预览
+
+![](assets/javaweb-tutorial/quickstart-preview.png)
+
+`HTML` 特点：
+
+-   标签不区分大小写
+-   标签属性值单双引号均可
+-   语法松散
+
+
+
+## 基础标签
+
+既然说了 HTML 是由一系列的元素组成，那我们就来看看元素相关的内容。
+
+元素又是由一对标签加上内容所共同构成，以下是一个简单的文本标签示例。
+
+![](assets/javaweb-tutorial/html-basic.png)
+
+该元素中，主要组成部分如下：
+
+- **开始标签**：由标签名称，大于号、小于号所组成，表示元素从此处开始生效。
+- **结束标签**：类似于开始标签，只是在标签名之前多了一个斜杠 `/`，表示元素的结尾。
+- **内容**：元素的内容。
+
+以下就来看看，`HTML` 中的各种常用标签。
+
+### `<!DOCTYPE html>`
+
+放在 HTML 文件中的首行，主要用于标识文档类型。
+
+### `<html>`
+
+HTML 文档中的根标签，包含了整个页面的所有内容，其他所有标签都包含在 `html` 标签中。
+
+### `<head>`
+
+这个元素中的内容对用户是不可兼得，主要用于设置网页字符编码、CSS 样式、页面描述、搜索关键字等信息。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>HTML 标题</title>
+	</head>
+</html>
+```
+
+### `<body>`
+
+网站主体内容，如果想让我们的内容显示在网页中让其他用户在访问该界面时看见，则内容需要写在该标签中，主要包括文本、图形、视频或其他内容。
+
+以下是一个在网页中显示内容的实例。
+
+```html
+<!DOCTYPE html>
+<html>
+    <body>
+		公众号：村雨遥
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/body.png)
+
+### `<title>`
+
+网页标题，在 `head` 标签中设置后，打开网页时将显示为网页标题。
+
+以下是一个实例。
+
+```js
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>HTML 标题</title>
+	</head>
+</html>
+```
+
+![](assets/javaweb-tutorial/title.png)
+
+### `<p>`
+
+文本标签，用于定义段落。该标签会自动在其前后创建一些空白，浏览器将自动添加这些空间。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>HTML 标题</title>
+	</head>
+	<body>
+		<p>这是一段文本</p>
+	</body>
+</html>
+
+```
+
+![](assets/javaweb-tutorial/p.png)
+
+### 标题
+
+此处的标题不同与上边的 `title` 标签，`title` 设置的主要是网页标题，二次数的标题主要是是针对 `body` 标签中的标题。
+
+这里的标题又可以分为 6 级，其对应标签分别是：`<h1>`、`<h2>`、`<h3>`、`<h4>`、`<h5>`、`<h6>`。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>HTML 标题</title>
+	</head>
+	<body>
+		<h1>一级标题</h1>
+		<h2>二级标题</h2>
+		<h3>三级标题</h3>
+		<h4>四级标题</h4>
+		<h5>五级标题</h5>
+		<h6>六级标题</h6>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/title-class.png)
+
+### `</br>`
+
+表示换行，不同于 `title` 等标签，它是一个单标签，即开始标签和结束标签都是同一个，单词放在标签名之前。
+
+```js
+<!DOCTYPE html>
+<html>
+    <body>
+		公众号</br>
+		村雨遥
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/br.png)
+
+### `<img>`
+
+表示图片标签，通过该属性我们可以在网页中添加一张图片。
+
+此外，`img` 标签提供 `src` 属性用于设置图片路径，`height` 属性设置图片高度，`width` 属性设置图宽度。为了防止图片失效造成误解，我们还可以给图片添加一个提示，此时使用 `alt` 属性即可。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>HTML 标题</title>
+	</head>
+	<body>
+		<img
+			src="https://p26-passport.byteacctimg.com/img/user-avatar/e10e488ad0fe9e3f7e55641f34a23806~300x300.image" width="100" height="100"/>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/img.png)
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>HTML 标题</title>
+	</head>
+	<body>
+		<img src="img/1.jpg" width="100" height="100" alt="这里是一张图片" />
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/alt-img.png)
+
+### `<a>`
+
+在某一个网页中，我们要通过超链接来跳转到另一个页面，则此时需要用到 `<a>` 标签，当然该标签中最重要的 `href` 属性也不能少，它用于指示跳转的目标网页。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+	</head>
+	<body>
+		<a href="https://cunyu1943.github.io/JavaPark">JavaPark(Java 自学指南)</a>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/link.png)
+
+### 列表
+
+列表可以分为有序列表和无序列表，其中有序列表是由 `ol` 标签标识。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>HTML 标题</title>
+	</head>
+	<body>
+		<ol>
+			<li>《网球王子》</li>
+			<li>《灌篮高手》</li>
+			<li>《鬼灭之刃》</li>
+		</ol>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/ol-list.png)
+
+有序列表中，可以在 `ol` 标签中添加 `start` 属性，用于表示从第几位开始，`type` 属性用于标识所要显示的类型。
+
+| type | 说明                       |
+| ---- | -------------------------- |
+| `1`  | 显示类型为数字类型         |
+| `A`  | 显示类型为大写字母类型     |
+| `a`  | 显示类型为小写字母类型     |
+| `I`  | 显示类型为大写罗马数字类型 |
+| `i`  | 显示类型为小写罗马数字类型 |
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>HTML 标题</title>
+	</head>
+	<body>
+		<ol type="I" start="2">
+			<li>《网球王子》</li>
+			<li>《灌篮高手》</li>
+			<li>《鬼灭之刃》</li>
+		</ol>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/roma-list.png)
+
+除开有序列表之外，还有无序列表，无序列表以 `ul` 标识。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>HTML 标题</title>
+	</head>
+	<body>
+		<ul>
+			<li>嵩山派</li>
+			<li>泰山派</li>
+			<li>恒山派</li>
+		</ul>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/ul-list.png)
+
+无序列表虽然没有顺序之分，但是同样提供了 `type` 属性。
+
+| type     | 说明                   |
+| -------- | ---------------------- |
+| `disc`   | 小圆黑点，默认显示方式 |
+| `circle` | 空心圆圈               |
+| `square` | 小黑方形               |
+
+```js
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>HTML 标题</title>
+	</head>
+	<body>
+		<ul type="circle">
+			<li>嵩山派</li>
+			<li>泰山派</li>
+			<li>恒山派</li>
+		</ul>
+		<ul type="square">
+			<li>西施</li>
+			<li>王昭君</li>
+			<li>杨玉环</li>
+		</ul>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/ul-list-1.png)
+
+### `<b>`
+
+要实现对内容加粗，可以使用 `<b>` 标签。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+	</head>
+	<body>
+		<b>重点</b>提醒
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/bold.png)
+
+### `<u>`
+
+有时需要对内容做下划线处理，则可以使用 `<u>` 标签。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+	</head>
+	<body>
+		<u>下划线</u> 展示
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/underline.png)
+
+### `<i>`
+
+为了将文本以斜体的方式显示给浏览器，可以使用 `<i>` 标签。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+	</head>
+	<body>
+		<i>世界上只有一种真正的英雄主义，就是认清了生活的真相后还依然热爱它 -- 罗曼.罗兰</i>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/italic.png)
+
+### 上下标
+
+有时候我们需要在网页中显示数学或者化学公式，那么此时需要用到上下标，其中上标用标签 `<sup>` 表示，下标用标签 `<sub>` 表示。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+	</head>
+	<body>
+		x<sub>1</sub><sup>2</sup> + x<sub>2</sub><sup>2</sup> = 100;
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/up-down.png)
+
+### `<table>`
+
+表格标签 `<table>` 中又含有多个子标签，常用的子标签有如下。
+
+- `th`：表头列
+- `tr`：行
+- `td`：列
+
+同样的，表格标签还提供了以下这些常用的属性，用于给表格增加样式。但现在大多都是用 CSS 来对表格进行修饰，所以这些属性简单了解即可，不用太过深入。
+
+| 属性          | 说明           |
+| ------------- | -------------- |
+| `border`      | 表格边框的粗细 |
+| `width`       | 表格的宽度     |
+| `cellspacing` | 单元格间距     |
+| `cellpadding` | 单元格填充     |
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+	</head>
+	<body>
+		<table border="1" width="500">
+			<tr>
+				<th>名字</th>
+				<th>性别</th>
+				<th>职业</th>
+			</tr>
+			<tr>
+				<td>亚瑟</td>
+				<td>男</td>
+				<td>战士</td>
+			</tr>
+			<tr>
+				<td>伽罗</td>
+				<td>女</td>
+				<td>射手</td>
+			</tr>
+			<tr>
+				<td>米莱迪</td>
+				<td>女</td>
+				<td>法师</td>
+			</tr>
+		</table>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/table.png)
+
+### `<form>`
+
+`<form>` 表示文档中的一个区域，主要包含交互空间，用来向服务器提交信息。`<form>` 标签通常包含一个或者多个表单标签，常用的表单标签如下：
+
+| 表单标签     | 说明   |
+| ------------ | ------ |
+| `<input>`    | 输入框 |
+| `<textarea>` | 文本域 |
+| `<button>`   | 按钮   |
+| `<select>`   | 单选框 |
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+	</head>
+	<body>
+		<form action="" method="post">
+
+			<label for="name">姓名: </label>
+			<input type="text" name="name" id="name"></br>
+			<label for="email">邮箱: </label>
+			<input type="email" name="email" id="email"></br>
+
+			<input type="submit" value="提交">
+
+		</form>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/form.png)
+
+其中 `action` 属性用来处理表单提交的 URL，`method` 属性表示使用何种 HTTP 方式来提交表单，常用的值有 `post` 和 `get`。
+
+# 三、CSS
+
+## 什么是 CSS
+
+`CSS(Cascading Style Sheet)`，中文译为层叠样式表，用于控制页面的样式。
+
+# 四、JavaScript 简介
+
+## 什么是 JavaScript
+
+作为世界上最流行的语言之一，是一种运行在客户端的脚本语言。而所谓脚本语言，就是不需要编译就能运行的编程语言，`JavaScript` 在运行过程中通过 `JS` 解释器来逐行解释然后执行。
+
+## JavaScript 能做什么？
+
+最初的时候，`JavaScript` 被设计出来的初衷是为了实现表单的动态校验，比如密码长度校验、邮箱格式校验等。但渐渐随着 `JavaScript` 的发展，`JavaScript` 变得越来越强大，也发展出了许多产物，如 `Node.js`、`Electron`、`Cordova`、`Ruff`、`cocos2d-js`。利用这些产物，我们可以用来进行服务器的开发、桌面程序的搭建、`APP` 的开发、硬件-物联网的控制、游戏开发等等工作。
+
+## HTML、CSS、JavaScript 之间的关系
+
+`HTML` 和 `CSS` 不同于 `JavaScript`，它们都是描述类语言，其中 `HTML` 主要用于决定网页结构和内容（决定网页上能看到什么），而 `CSS` 则主要用于定义网页所呈现给用户的模样（决定网页是否美观）。`JavaScript` 则是专注于实现业务逻辑和页面控制（决定网页提供的功能）。
+
+如果把这三者比作一个王者荣耀中的英雄的话，那 `HTML` 就相当于原皮的英雄，而 `CSS` 则是相当于英雄的皮肤，让我们的英雄更帅气，而 `JavaScript` 则相当于英雄的技能，我们可以通过控制英雄通过技能来实现杀敌清兵的效果。
+
+## 浏览器如何执行 JavaScript
+
+`JavaScript` 一般运行在网页中的，所以一般是在浏览器中运行。而浏览器一般分为两部分，一个是**渲染引擎**，另一个则是 **JS 引擎**，两者的功能如下：
+
+- **渲染引擎**：用于解析 `HTML` 和 `CSS` 代码，大家一般把它叫做内核，比如 `Chrome` 浏览器的 `Blink`，`Firefox` 浏览器的 `Gecko`。
+- **JavaScript 引擎**：也叫做 `JavaScript` 解释器，主要用于读取网页中的 `JavaScript` 代码，然后对其处理用执行，如 `Chrome` 浏览器的 `V8`，`Firefox` 的 `TraceMonkey`。
+
+所以名义上虽然说是浏览器执行了 `JavaScript` 代码，但如果看底层的话，却会发现其实 `JavaScript` 代码是通过浏览器中的 `JavaScript` 引擎来执行的。`JavaScript` 引擎在执行代码时会逐行解释源代码，将其转换为机器语言，然后交由计算机执行。也正因为如此，所以将 `JavaScript` 划分为脚本语言，它会逐行去解释执行，而不是像 `HTML`、`CSS` 类似的标记语言。
+
+## JavaScript 的组成
+
+![](assets/javaweb-tutorial/js-compose.png)
+
+1.  **ECMAScript**
+
+`ECMAScript` 是由 `ECMA` 国际进行标准化的一门编程语言，往往被大家称为 JavaScript 或者 `JScript`，但实际上并不是一个东西，后两者其实是基于 `ECMAScript` 的实现和扩展。其中，`JavaScript` 是由网景公司所提出，而 `JScript` 则是由微软公司所提出。 所以 `ECMAScript` 更像是一种规范，它规定了 `JavaScript` 的编程语法和基础核心知识，然后所有的浏览器厂商都需要共同遵守这一套 `JavaScript` 语法工业标准。
+
+2.  **DOM**
+
+`DOM`（`Document Object Model`）即文档对象模型，是由 `W3C` 组织推荐的用于处理可扩展标记语言的**标准编程接口**。通过 `DOM` 所提供的各种接口，我们就能够轻易地对网页上的各种元素进行操作，如调整位置、大小、颜色等。
+
+3.  **BOM**
+
+
+`BOM`（`Browser Object Model`）即浏览器对象模型，它提供了独立于内容，能够与浏览器进行交互的对象结构。通过使用 `BOM`，我们就能够十分方便的操作浏览器窗口，如弹出提示框、控制跳转、获取分辨率等操作。
+
+## JavaScript 引入方式
+
+`JavaScript` 的引入方式主要有 3 种，分别是 **行内式**、**内嵌式** 和 **外部式**，以下就分别来看看各种引入方式的写法。
+
+1.  **行内式**
+
+首先是行内式，顾名思义，所谓行内式，就是将少量的 `JavaScript` 代码直接写在 `HTML` 标签的相关属性中，比如下面的代码。通过点击页面中的按钮，页面就会弹窗。
+
+```html
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8" />
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <title>JavaScript 入门体验</title>
+    </head>
+    <body>
+        <input type="button" value="楚子航" onclick="alert('路明非')"/>
+    </body>
+</html>
+```
+
+![](assets/javaweb-tutorial/inline.png)
+
+行内式的特点就是比较简单，但是也存在很多问题。比如可读性较差，如果需要在 `HTML` 编写大量 `JavaScript` 代码时，此时阅读就很不方便。除此之外，`JavaScript` 和 `HTML` 中都会使用到引号，如果出现多层引号相互嵌套时，会非常容易混淆，导致代码实现结果出错。所以除非特殊情况，否则一般不推荐使用行内式。
+
+2.  **内嵌式**
+
+相比于单行式，内嵌式就更加清晰明了。我们通过将 `JavaScript` 代码封装到 `<script>` 标签中，然后就可以实现简单的弹窗功能了。内嵌式的代码可读性更高，也更方便纠错。
+
+```html
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8" />
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <title>JavaScript 入门体验</title>
+        <script>
+            alert("罗罗诺亚.索隆")
+        </script>
+    </head>
+    <body>
+    </body>
+</html>
+```
+
+![](assets/javaweb-tutorial/embed.png)
+
+3.  **外部式**
+
+最后一种就是外部式，通过在外部新建一个后缀名为 `.js` 的文件，然后将 `JavaScript` 直接写到该文件中，最后在 `HTML` 页面中通过 `<script>` 标签的 `src` 属性引入即可。
+
+外部式的优点是很明显的：
+
+- 首先，可读性提高。`JavaScript` 代码量较大时，通过放在独立的文件中，排除了 `HTML` 和 `CSS` 元素的干扰。
+- 其次，代码复用率提高。假设我们其他业务需要同样的功能，我们只需要将封装好的 `.js` 文件引用过去即可使用。
+
+```javascript
+alert("手塚国光")
+```
+
+```html
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8" />
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <title>JavaScript 入门体验</title>
+        <script src="js/my.js"></script>
+    </head>
+    <body>
+    </body>
+</html>
+```
+
+![](assets/javaweb-tutorial/outer.png)
+
+# 五、JavaScript 基础语法
+
+## 注释
+
+为了提高代码的可读性，我们往往需要在代码中添加一些额外的信息，但是我们又不想让这些信息影响到代码的执行。这时候，我们就需要使用到注释。`JavaScript` 中，主要有两种注释，一种是单行注释，另一种则是多行注释，和 `Java` 中的注释很相似。
+
+1.  **单行注释**
+
+单行注释以 `//` 开头，后边接上需要注释的信息即可。
+
+```js
+// 单行注释
+alert("虞姬");
+```
+
+2.  **多行注释**
+
+多行注释则是以 `/*` 开头，以 `*/` 结尾，两者中间所包含的内容则是我们的注释。
+
+```js
+/*
+    多行注释
+ */
+alert("网球王子");
+```
+
+## 输入输出
+
+为了方便信息的输入输出，`JavaScript` 中也像其他编程语言一样，提供了常用的输入输出语句。而其中最常用的，莫过于以下 3 个方法了。
+
+| 方法               | 功能                         | 归属   |
+| ------------------ | ---------------------------- | ------ |
+| `alert(msg)`       | 弹出警示框                   | 浏览器 |
+| `console.log(msg)` | 控制台打印输出信息           | 浏览器 |
+| `prompt(info)`     | 弹出输入框，用户可以输入信息 | 浏览器 |
+
+1.  **prompt(info)**
+
+通过使用该方法，我们可以让用户在打开页面时让浏览器自动弹出输入框，然后用户就能够根据提示来进行信息输入。以下是一个简单的示例，通过弹窗让用户输入想要观看的动漫。
+
+```html
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8" />
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <title>Java 基础语法</title>
+    </head>
+    <body>
+        <script>
+            prompt('请输入你要观看的动漫名');
+        </script>
+    </body>
+</html>
+```
+
+![](assets/javaweb-tutorial/prompt.png)
+
+2.  **alert(msg)**
+
+该方法可以在网页中弹出警示框，将信息展示给用户。紧接着上一个方法，假设用户输入后我们要让用户再次看到他刚才的输入，那我们就可以通过弹窗将刚才输入的信息进行展示。
+
+```html
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8" />
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <title>Java 基础语法</title>
+    </head>
+    <body>
+        <script>
+            var name = prompt('请输入你要观看的动漫名');
+            alert(name);
+        </script>
+    </body>
+</html>
+```
+
+![](assets/javaweb-tutorial/alert.gif)
+
+3.  **console(msg)**
+
+这个方法主要是用于在浏览器的控制台打开，而一般用户也用不到这个，更多的是开发人员用于调试开发时使用。
+
+![](assets/javaweb-tutorial/console.png)
+
+## 变量
+
+### 什么是变量
+
+其实在上面的例子中我已经试用过变量了，也就是在使用 `alert(msg)` 方法举例时，其中用的 `name` 其实就是一个变量。
+
+所谓变量，可以把它看做是用来存放数据的容器。我们通过**变量名**来获取容器中的数据，也可以进行数据修改等操作。其本质其实是程序在内存中所申请的用来存放数据的一块空间。
+
+### 如何使用变量
+
+要使用一个变量也很简单，同样以下面的例子来说。
+
+```js
+var name = prompt('请输入你要观看的动漫名');
+alert(name);
+```
+
+主要可以把变量的使用拆解为两个步骤，第一步就是对变量进行声明，第二步则是对变量进行赋值。上面的例子是将两个步骤合二为一，而这个过程我们也叫做**变量的初始化**，在声明变量的同时也给对象赋了值。如果要对其进行拆分，则可以拆分为以下步骤：
+
+```js
+// 声明变量
+var name;
+// 变量赋值
+name = prompt('请输入你要观看的动漫名');
+// 使用变量
+alert(name);
+```
+
+其中 `var` 是 `JavaScript` 中的一个关键字，用于声明变量。 通过使用该关键字对变量进行声明后，计算机就会自动为变量分配内存空间，而无需我们程序员去操作。`name` 则是我们所定义的变量名，通过变量名，我们就可以访问计算机在内存中所分配的空间了。
+
+### 变量命名规范
+
+学习了变量的定义以及如何使用变量，接下来就要看看如何规范地进行变量命名。变量命名时，我们常常需要遵守以下的相关规则。
+
+1.  只能由字母（`a-zA-Z`）、数字（`0-9`）、美元符号（`$`）、下划线（`_`） 组成。
+2.  严格区分大小写。
+3.  不能以数字开头。
+4.  不能是 `JavaScript` 中的关键字、保留字。
+5.  变量名应该有意义，而且应当遵守驼峰命名法。
+
+## 数据类型
+
+学习了注释、输入输出以及变量的相关知识后，继续来学习 `JavaScript` 中的数据类型知识。
+
+### 什么是数据类型
+
+在计算机中，不同数据所需要的存储空间是不一样的，为了尽可能的提高内存利用率，方便把数据划分为所需内存大小不同的数据，于是需要将不同数据定义为对应的数据类型。
+
+最常见的就是字符串和数字，就像“公众号：村雨遥”这个字符串和 1943 这个数字所对应的类型是不一样。
+
+不同于 `Java` 这样的编程语言，`JavaScript` 是一种弱类型的语言。这意味在 `JavaScript` 中，不用提前声明变量的类型，在程序运行过程中，`JavaScript` 引擎会自动确定变量类型。在 `Java` 中，如果我们要定义一个变量，通常需要像如下形式：
+
+```java
+int name = "村雨遥";
+```
+
+但是在 `JavaScript` 中，我们只需要按照下面的方式定义即可。
+
+```js
+var name = '村雨遥';
+```
+
+也正是由于 `JavaScript` 的动态特性，所以在 `JavaScript` 中，变量的数据类型是可以变化的。
+
+以下是一个变量数据类型动态变化的实例，一开始变量是一个字符串，然后我们又把它变成了数字类型。
+
+```js
+var name = '村雨遥';
+name = 1943;
+```
+
+### 数据类型分类
+
+在 `JavaScript` 中，数据类型可以分为两大类：
+
+- **基本数据类型**：`Number`、`String`、`Boolean`、`Undefined`、`Null`
+
+- **复杂数据类型**：`object`
+
+基本数据类型详情如下表所示：
+
+| 数据类型    | 说明                                                     | 默认值      |
+| ----------- | -------------------------------------------------------- | ----------- |
+| `Number`    | 数字类型，包括整形和浮点型                               | 0           |
+| `String`    | 字符串类型                                               | `""`        |
+| `Boolean`   | 布尔值类型                                               | `false`     |
+| `Undefined` | 如果一个变量声明了但是未赋值，则此时该变量为 `undefined` | `undefined` |
+| `Null`      | `var num = null`，声明变量 `num` 为空值                  | `null`      |
+
+#### 数字类型（`Number`）
+
+JavaScript 中，不分整型和浮点型，它们统一称之为数字类型。也就是说，JavaScript 中数字类型的既可以保存整数值，也可以保存小数值。
+
+```js
+var num = 1943;
+var wepublic = "村雨遥";
+```
+
+数字型中，有以下几个特殊值需要值得注意：
+
+- **最大值**：`Number.MAX_VALUE`
+- **最小值**：`Number.MIN_VALUE`
+- **无穷大**：`Infinity`，表示大于任何数值。
+- **无穷小**：`-Infinity`，表示小于任何数值。
+- **非数字**：`NaN`，`Not a number`，表示一个非数字。
+
+如果要确认一个变量是否是非数字，`JavaScript` 提供了一个方法 `isNaN(x)`。如果 `x` 是一个数字，则返回 `false`，如果 `x` 不是数字，则返回 `true`。
+
+```js
+alert(isNaN('村雨遥'));
+alert(isNaN(12));
+```
+
+![](assets/javaweb-tutorial/number.gif)
+
+#### 字符串类型（`String`）
+
+`JavaScript` 中，把用引号括起来的任意文本叫做字符串类型，其中引号既可以使用双引号 `""`，也可以使用单引号 `''`。
+
+以下的 `name` 就是一个字符串类型，可以使用单引号或双引号将其包括，两者的功能是一样的。
+
+```js
+var name;
+name = '村雨遥';
+name = "村雨遥";
+```
+
+除此之外，和其他编程语言一样，JavaScript 也提供了许多转义符，常见的转义符如下表所示。
+
+| 转义符 | 说明       |
+| ------ | ---------- |
+| `\n`   | 换行       |
+| `\\`   | `\` 右斜杠 |
+| `\'`   | `'` 单引号 |
+| `\"`   | `"` 双引号 |
+| `\t`   | `tab` 缩进 |
+| `\b`   | 空格       |
+
+`JavaScript` 中对于字符串的常用操作主要有以下几种。
+
+1.  **获取字符串长度**
+
+字符串是由如果字符所组成，而字符串的长度就是这些字符的数量。在 `JavaScript` 中，可以通过字符串的 `length` 属性获取整个个字符串的长度。
+
+```js
+var wepublic = '村雨遥';
+alert(wepublic.length);
+```
+
+![](assets/javaweb-tutorial/string.png)
+
+2.  **字符串拼接**
+
+如果存在多个字符串，可以使用 `+` 来进行拼接，其具体方式为：
+
+> 字符串 + 任何类型 = 拼接后的新字符串
+
+```js
+var wepublic = '村雨遥：';
+var id = 'cunyu1943';
+alert(wepublic + id);
+```
+
+![](assets/javaweb-tutorial/string-contract.png)
+
+#### 布尔类型（`Boolean`）
+
+只有 `true` 和 `false` 两个值，`true` 代表真，而 `false` 表示假。但是当它们和数字类型相加时，此时 `true` 的值就变成了 1，而 `false` 的值变成了 0。
+
+```js
+// 2
+alert(true + 1);
+// 1
+alert(false + 1);
+```
+
+![](assets/javaweb-tutorial/boolean.gif)
+
+#### `Undefined` 和 `Null`
+
+在 `JavaScript` 中，如果一个变量被声明后但却没有赋值，那么此时该变量的默认值就是 `undefined`。
+
+如果一个对象的值未设置，那么则该对象此时为 `null`。
+
+### 获取变量数据类型
+
+假设我们有一个变量，但是没有找到他的定义所在位置，那么此时也不用慌，`JavaScript` 提供了 `typeof` 关键字来帮助我们确定变量的数据类型。
+
+```js
+var num = 1943;
+console.log(typeof num);
+var wepublic = '村雨遥';
+console.log(typeof wepublic);
+var focus = true;
+console.log(typeof focus);
+```
+
+![](assets/javaweb-tutorial/variable.png)
+
+### 数据类型转换
+
+日常开发中，在浏览器中通过表单或者 `prompt` 等获取来的变量默认都是字符串类型，但实际上我们所需要的类型往往都不是字符串，此时就需要对变量的数据类型进行转换。而这一过程就叫做数据类型转换，即将一种数据类型的变量转换为另一种数据类型。
+
+最常用的主要有以下三种：
+
+- **转换为字符串类型**
+- **转换为数字类型**
+- **转换为布尔类型**
+
+#### 转换为字符串类型
+
+转换为字符串类型的方法总结如下表，以下就分别来看看这三种方法的使用。
+
+| 方法                | 说明                         |
+| ------------------- | ---------------------------- |
+| `toString()`        | 转换为字符串                 |
+| `String()` 强制转换 | 转换为字符串                 |
+| `+` 拼接            | 和字符串拼接的结果都是字符串 |
+
+1.  **toString()**
+
+通过调用 `toString()` ，可以实现由其他类型向字符串类型的转变。
+
+```js
+var num = 1943;
+var str = num.toString()
+console.log(str);
+console.log(typeof str);
+```
+
+![](assets/javaweb-tutorial/tostring.png)
+
+2.  **String()**
+
+```js
+var num = 1943;
+var str = String(num);
+console.log(str);
+console.log(typeof str);
+```
+
+![](assets/javaweb-tutorial/type-string.png)
+
+3.  **`+` 拼接**
+
+字符串和其他任意类型的变量相拼接，最后得到的一定是字符串。
+
+```js
+var num = 1943;
+var str = num + "";
+console.log(str);
+console.log(typeof str);
+```
+
+![](assets/javaweb-tutorial/plus.png)
+
+#### 转换为数字类型
+
+最常用的一般是字符串类型转换为数字类型，这里既可以将字符串类型转换为具体的整数数值类型或者浮点数数值类型，也可以将直接将其转换为数值型而不用区分整数数值还是浮点数数值。除此之外，还经常利用运算符来进行隐式转换。
+
+| 方法                   | 说明                           |
+| ---------------------- | ------------------------------ |
+| `parseInt(string)`     | 字符串类型转换为整数数值类型   |
+| `parseFloat(string)`   | 字符串类型转换为浮点数数值类型 |
+| `Number()`             | 字符串转换为数值型             |
+| `-`、`*`、`/` 隐式转换 | 利用算数运算隐式转换为数值型   |
+
+1.  **parseInt(string)**
+
+```js
+var str = '1943';
+var num = parseInt(str);
+console.log(num);
+console.log(typeof num);
+```
+
+![](assets/javaweb-tutorial/parseint.png)
+
+2.  **parseFloat(string)**
+
+```js
+var str = '19.43';
+var num = parseFloat(str);
+console.log(num);
+console.log(typeof num);
+```
+
+![](assets/javaweb-tutorial/parsefloat.png)
+
+3.  **Number()**
+
+```js
+var str1 = '19.43';
+var str2 = '1943';
+var num1 = Number(str1);
+var num2 = Number(str2);
+console.log(num1);
+console.log(typeof num1);
+console.log(num2);
+console.log(typeof num2);
+```
+
+![](assets/javaweb-tutorial/number.png)
+
+4.  **运算符隐式转换**
+
+```js
+var str1 = '2022';
+var str2 = '2';
+var num1 = str1 * str2;
+var num2 = str1 / str2;
+var num3 = str1 - str2;
+console.log(num1);
+console.log(typeof num1);
+console.log(num2);
+console.log(typeof num2);
+console.log(num3);
+console.log(typeof num3);
+```
+
+![](assets/javaweb-tutorial/convert.png)
+
+#### 转换为布尔类型
+
+| 方法        | 说明                     |
+| ----------- | ------------------------ |
+| `Boolean()` | 将其他类型转换为布尔类型 |
+
+在 `JavaScript` 中，代表**空、否定**的值都会转变为 `false`，比如 `''`、 `0`、`NaN`、`undefined`、`null` 等。而其他值则会转换为 `true`。
+
+```js
+// false
+console.log(Boolean(''));
+// false
+console.log(Boolean(NaN));
+// true
+console.log(Boolean(1943));
+// true
+console.log(Boolean('村雨遥'));
+```
+
+![](assets/javaweb-tutorial/to-boolean.png)
+
+## 运算符
+
+运算符（`operator`），也叫做操作符，主要是用于实现赋值、比较以及执行算数运算等功能的符号。在 `JavaScript` 中，主要有以下几类常见的运算符：
+
+- 算数运算符
+- 递增递减运算符
+- 比较运算符
+- 逻辑运算符
+- 赋值运算符
+
+以下就分别来看看，这些运算符都是怎么用的。
+
+### 算数运算符
+
+这个我们应该都不陌生，从小学开始，我们就学习加、减、乘、除、取余等算数运算。而算数运算符也就是供我们算术运算所使用的的符号，主要用来执行两个变量或值的算数运算。
+
+| 运算符 | 说明 |
+| ------ | ---- |
+| $+$    | 加   |
+| $-$    | 减   |
+| $*$    | 乘   |
+| $/$    | 除   |
+| $\%$   | 取余 |
+
+```js
+var num1 = 100;
+var num2 = 5;
+// 105
+console.log(num1 + num2);
+// 95
+console.log(num1 - num2);
+// 500
+console.log(num1 * num2);
+// 20
+console.log(num1 / num2);
+// 100 % 5 = 0
+console.log(num1 % num2);
+```
+
+![](assets/javaweb-tutorial/operator.png)
+
+但是在进行算数运算时，特别需要注意的是浮点数的计算，浮点数值的最高精度是 17 位小数，但算数运算时却远不如整数。同时，我们也需要注意，不要用浮点数来直接进行比较。
+
+### 表达式与返回值
+
+所谓表达式，就由数字、运算符、变量等组成的式子。而且表达式最终能够求得一个结果，而这个返回给我们的值就叫做返回值。
+
+### 递增递减运算符
+
+如果要实现让一个变量自己加 1，以前的做法是按照如下方式：
+
+```js
+var num = 1;
+num = num + 1;
+```
+
+但现在可以利用递增计算符（`++`）来给实现给变量加 1，同样，递增计算符的位置也会对最终的结果造成影响。
+
+如果递增计算符放在变量前面，则该递增计算符又称为前置递增运算符。若递增计算符放在变量后面，则称为后置递增运算符。
+
+同样类比，有递增那就有递减。而且和递增一样，也可以根据递减运算符所放置的位置将其分为前置递减运算符和后置递减运算符。
+
+```js
+var num = 10;
+// 前置递增
+++num;
+console.log(num);
+// 后置递增
+num++;
+console.log(num);
+// 前置递减
+--num;
+console.log(num);
+// 后置递减
+num--;
+console.log(num);
+```
+
+![](assets/javaweb-tutorial/plus-sub.png)
+
+前置和后置如果是单独使用，那么它们实现的效果是一样的。而两者的区别在于：
+
+- 使用前置时：先自加/减 1，然后再返回结果。
+- 使用后置式：先返回原值，然后再自加/减 1。
+
+```js
+var num = 10;
+console.log(num++ + 10);
+num = 10;
+console.log(++num + 10);
+```
+
+![](assets/javaweb-tutorial/plus-sub-demo.png)
+
+### 比较运算符
+
+比较运算符又叫做关系运算符，是两个数据之间进行比较时所使用的运算符，通过比较，返回一个布尔值作为比较运算的结果，常见的比较运算符总结见下表。
+
+| 运算符 | 说明                     |
+| ------ | ------------------------ |
+| `<`    | 小于                     |
+| `>`    | 大于                     |
+| `>=`   | 大于等于                 |
+| `<=`   | 小于等于                 |
+| `==`   | 判等，值相等即可         |
+| `!=`   | 不等于                   |
+| `===`  | 全等，值和数据类型都一致 |
+
+```js
+var num1 = 1;
+var num2 = 10;
+var str1 = '1';
+console.log(num1 > num2);
+console.log(num1 < num2);
+console.log(num1 >= num2);
+console.log(num1 <= num2);
+console.log(num1 == str1);
+console.log(num1 != str1);
+console.log(num1 === str1);
+```
+
+![](assets/javaweb-tutorial/compare.png)
+
+可以注意到 `==` 和 `===` 是不一样的，我们在比较时，一定要注意它们之间的区别。
+
+### 逻辑运算符
+
+逻辑运算符是用来进行布尔值运算的运算符，其最终返回结果也是一个布尔值，常用于条件判断。常见的逻辑运算符见下表。
+
+| 运算符 | 说明   |
+| ------ | ------ |
+| `&`    | 与     |
+| `&&`   | 逻辑与 |
+| `      | `      | 或 |
+| `      |        | `  | 逻辑或 |
+| `!`    | 逻辑非 |
+
+其中 `&` 和 `&&` 的区别在于：`&` 中一旦符号前布尔值为 `false` 时，还会继续符号后布尔值的运算，然后判定两个布尔值的运算结果为 `false`。而 `&&` 一旦符号前布尔值为 `false`，就不再进行符号后布尔值的运算，直接判定两个布尔值最终结果为 `false`，这个过程就叫做短路运算。
+
+而 `||` 表示只要符号前后任一布尔值为 `true`，则最终结果为 `true`。
+
+```js
+// false
+console.log(1 > 2 && 2 > 1)
+// true
+console.log(1 > 2 || 2 > 1)
+// false
+console.log(!true)
+```
+
+### 赋值运算符
+
+顾名思义，所谓赋值运算符就是用来将数据赋值给变量的运算符，常用的赋值运算符总结如下。
+
+| 运算符       | 说明               |
+| ------------ | ------------------ |
+| `=`          | 直接赋值           |
+| `+=、-=`     | 加、减一个数后赋值 |
+| `*=、/=、%=` | 乘、除、取余后赋值 |
+
+```js
+// 直接赋值
+var num1 = 10;
+var num2 = 20;
+// 30
+console.log(num1 += num2);
+num1 = 10;
+num2 = 20;
+// 10
+console.log(num2 -= num1);
+num1 = 10;
+num2 = 20;
+// 200
+console.log(num1 *= num2);
+num1 = 10;
+num2 = 20;
+// 2
+console.log(num2 /= num1);
+num1 = 10;
+num2 = 20;
+// 10
+console.log(num1 %= num2);
+```
+
+![](assets/javaweb-tutorial/assignment.png)
+
+### 运算符优先级
+
+运算符的优先级决定了我们表达式中运算执行的先后顺序，优先级越高，则执行顺序越靠前。常见的运算符的优先级分级如下表。总的来说，在开发过程中要尽量避免复杂的表达式，如果实在是要用，也可以多利用小括号来提高代码的可读性，防止因疏忽代码运算执行先后顺序而导致程序结果错误。
+
+| 优先级 | 运算符     | 顺序                     |
+| ------ | ---------- | ------------------------ |
+| 1      | 小括号     | `()`                     |
+| 2      | 一元运算符 | `++`、`--`、`!`          |
+| 3      | 算数运算符 | `*`、`/`、`%`、 `+`、`-` |
+| 4      | 关系运算符 | `>`、`>=` 、`<`、`<=`    |
+| 5      | 相等运算符 | `==`、`!=`、`===`、`!==` |
+| 6      | 逻辑运算法 | 先 `&&` 后 `             |  | ` |
+| 7      | 赋值运算符 | `=`                      |
+| 8      | 逗号运算符 | `,`                      |
+
+## 流程控制
+
+一个程序中，各个代码之间的执行顺序对于程序结果是会造成影响的。就拿下面简单的例子来说，假如我们拿先使用 `num` 这个变量然后再定义和先定义变量再使用相比。先使用再定义会报错 `undefined`，而定义再使用就没有问题。也就是说，代码的先后顺序会对我们的程序结果造成直接影响。
+
+```js
+console.log(num);
+var num = 10;
+var num = 10;
+console.log(num);
+```
+
+而今天要说的流程控制，就是为了解决这个问题。通俗来讲，流程控制就是控制我们的代码按照既定的结构顺序来执行。
+
+而流程控制主要分为三种结构，分别是：
+
+- **顺序结构**
+- **分支结构**
+- **循环结构**
+
+这三种结构分别代表了三种代码执行的顺序，用流程图示意如下。
+
+| 顺序结构                                                                       | 分支结构                                                                         | 循环结构                                                                       |
+| ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
+| ![](assets/javaweb-tutorial/flow.png) | ![](assets/javaweb-tutorial/branch.png) | ![](assets/javaweb-tutorial/loop.png) |
+
+### 顺序结构流程控制
+
+顺序结构是代码中最基本、最简单的流程控制，它没有特定的语法结构，代码会按照**代码位置的先后顺序，依次执行**。基本上程序中的代码都会存在顺序结构。
+
+### 分支结构流程控制
+
+由上而下执行代码时，根据不同的条件，从而流向不同的代码路径，最终得到不同的结果。`JavaScript` 中，提供了两种分支结构语句，分别是：
+
+- `if` 语句
+- `swtich` 语句
+
+#### if
+
+`if` 的语法结构如下：
+
+```js
+if(条件表达式){
+    // 执行语句
+}
+```
+
+如果 `if` 语法结构中的条件表达式为 `true`，则执行大括号中的语句，若条件表达式结果为 `false`，则跳过大括号中的代码，执行大括号之后的代码。
+
+```js
+if(10 > 20){
+    console.log('10 大于 20');
+}
+console.log('10 小于 20');
+```
+
+![](assets/javaweb-tutorial/if.png)
+
+除开单分支语句 `if` 之外，`JavaScript` 也提供了双分支语句 `if…else…`，其语法结构如下：
+
+```js
+if(条件表达式){
+    // 执行语句 1
+}else{
+    // 执行语句 2
+}
+```
+
+如果条件表达式为 `true`，则执行条件语句 1，若条件表达式为 `false`，则执行语句 2。
+
+```js
+var age = prompt('请输入你的年龄');
+if(age >= 18){
+    alert('你可以玩王者荣耀 5 小时');
+}else{
+    alert('你只能玩王者荣耀 2 小时');
+}
+```
+
+![](assets/javaweb-tutorial/if-demo1.gif)
+
+![](assets/javaweb-tutorial/if-demo2.gif)
+
+当然，除开单分支和双分支之外，还有多分支语句 `if…else…if…`，其语法结构如下：
+
+```js
+if(条件表达式 1){
+    // 语句 1
+}else if(条件表达式 2){
+    // 语句 2
+}else if …
+```
+
+通过多个条件来选择不同的语句执行，从而得到不同的结果。
+
+#### 三元表达式
+
+除了使用 `if` 来进行条件选择之外我们也可以利用三元表达式来做一些简单的条件选择，其语法结构如下：
+
+```js
+条件表达式?条件表达式为真时执行语句:条件表达式为假时执行语句;
+10 > 4?alert('10 大于 4'):alert('10 小于 4');
+```
+
+三元表达式也可以转换为 `if` 条件分支判断，两者的效果是等价的。比如上面的三元表达式就可以转换为以下 `if` 条件表达式。
+
+```js
+if(10 > 4){
+    alert('10 大于 4');
+}else{
+    alert('10 小于 4');
+}
+```
+
+#### switch
+
+`switch` 语句对应于 `if` 语句中的多分支语句，主要用于基于不同条件来执行不同的代码。如果要针对变量设置一系列的**特定值**的选项时，就可以使用 `switch`。
+
+`switch` 语法结构如下，通过表达式的值和 `case` 中的选项值相匹配，如果有对应匹配项，则执行该 `case` 中的语句，如果没有对应匹配项，则执行 `default` 中的代码。
+
+```js
+switch(表达式){
+    case value1:
+        // 执行语句1
+        break;
+    case value2:
+        // 执行语句2
+        break;
+    ……
+    default:
+        执行最后的语句;
+}
+```
+
+#### switch 和 `if else if` 的区别
+
+一般情况下，两者是可以相互替换的。其中 `switch…case` 语句通常用于处理 `case` 是确定值的情况，而 `if…else…` 语句则更加的灵活，通常用语范围判断。
+
+此外，`switch` 语句进行条件判断后会直接执行到程序的条件语句，效率更高。而 `if…else` 语句有多少种情况，就需要判断多少次，较为耗费时间。
+
+### 循环结构流程控制
+
+实际处理问题时，经常要做许多具有规律性的重复操作，为了更高效的完成这类操作，所以需要重复执行这些语句，而这就是我们程序中所说的循环结构。
+
+在 `JavaScript` 中，主要有三种类型的循环语句：
+
+- `for` 循环
+- `while` 循环
+- `do…while` 循环
+
+#### for 循环
+
+程序中，一组被重复执行的语句被叫做**循环体**，而是否需要继续重复执行，取决于**循环的终止条件**，由循环体和循环终止条件共同组成语句就叫做**循环语句。**
+
+`for` 循环主要用于将某些代码循环若干次，通常跟计数有关系，其语法结构如下：
+
+```js
+for(初始化变量;条件表达式;操作表达式){
+    // 循环体
+}
+// 计算 1 + 2 + …… + 100 的值
+var i = 0;
+var sum = 0;
+for(i = 1; i <= 100; i++){
+    sum += i;
+}
+console.log(sum);
+```
+
+![](assets/javaweb-tutorial/for.png)
+
+`for` 循环语句的执行顺序可以总结为如下：
+
+- 首先去执行初始化变量语句，该语句在整个 `for` 循环中只执行一次。
+- 接着去执行条件表达式，若满足条件则执行循环体，如果不满足则退出循环。
+- 执行完循环体之后，最后去执行操作表达式，至此第一轮循环结束。
+- 然后开始第二轮循环，继续执行条件表达式，重复上面的两个步骤直到退出循环。
+
+#### while 循环
+
+`while` 语句可以在表达式为真的情况下，循环执行某一段指定的代码，直到不满足表达式时才结束循环，其语法结构如下：
+
+```js
+while(条件表达式){
+    // 循环体代码
+}
+```
+
+执行时，先判断条件表达式，若结果为 `true`，则进入循环体执行循环体代码，如果结果为 `false`，则退出循环，执行 `while` 循环后边的代码。
+
+```js
+// 计算 1 + 2 + …… + 100 的值
+var sum = 0;
+var num = 1;
+while(num <= 100){
+    sum += num;
+    num++;
+}
+// 5050
+console.log(sum);
+```
+
+以上代码同样可以用于求 `1 + 2 + …… + 100` 的值，能够达到与 `for` 循环同样的效果。
+
+#### do…while 循环
+
+`do…while` 其实是 `while` 循环的一个变体，其语法结构如下：
+
+```js
+do{
+    // 循环体代码
+}while(条件表达式);
+```
+
+执行时，无论如何都会先进入循环体执行一次循环体代码，然后再对条件表达式进行判断，如果条件为 `true`，则继续执行循环体代码，若条件为 `false`，则退出循环。
+
+#### continue 和 break
+
+`continue` 用于立即**跳出当次循环，继续进入下一次循环**。
+
+```js
+for(var i = 0; i <= 5; i++){
+    if(i == 2){
+        continue;
+    }
+    console.log(i);
+}
+```
+
+![](assets/javaweb-tutorial/continue.png)
+
+以上实例中，设置了当 `i` 为 2 时，跳出当次循环，所以程序打印出了 `0-5` 中除 2 之外的其他元素。
+
+`break` 主要用于立即**跳出整个循环**。
+
+```js
+for(var i = 0; i <= 5; i++){
+    if(i == 2){
+        break;
+    }
+    console.log(i);
+}
+```
+
+![](assets/javaweb-tutorial/break.png)
+
+以上实例设置了当 `i` 为 2 时跳出整个循环，所以程序只打印出了 0、1，2 及以后的数不再打印。
+
+## 数组
+
+### 什么是数组
+
+之前的学习中，如果我们要存储一个值，一般都是通过变量来存储。但如果我们现在想要存储一系列的值，又该如何存储呢，你可能会说可以用多个变量来进行存储。这种方法也可以，但如果你想，一旦值过多，那岂不是就要多个变量，到时候管理就很混乱了。这时候就想，有没有一个可以存储多个值的数据结构，方便我们进行多个值的存储管理呢？
+
+针对上面这一需求，提出了数组这一数据结构。
+
+数组是指一组数据的集合，数组中的每个数据被称为元素，而且数组中可以存放任意类型的元素。通过使用数组，当我们需要存储多个值时，就可以不用再去多个创建变量，而只需要创建一个数组就好了。
+
+```js
+var num = 1;
+var arr = [1, 2, 3, 4, 5];
+```
+
+### 如何创建数组
+
+既然知道了数组这种数据结构，那怎么才能创建一个数组呢。这里主要用两种方式：
+
+- 利用关键字 `new` 创建数组。
+- 利用数组字面量创建数组。
+
+#### 利用 `new` 创建数组
+
+这里其实跟 `JavaScript` 中的面向对象相关，和 `Java` 中也类似，其语法结构为：
+
+```js
+var 数组名 = new Array();
+```
+
+除了数组名，其他都是固定的，通过这种方式，我们就创建了一个新的空数组，此时中没有任何元素，数组长度为 0。
+
+```js
+var arr = new Array();
+console.log(arr);
+```
+
+#### 利用数组字面量创建数组
+
+除开利用关键字 `new` 来创建数组之外，也可以利用字面量来创建数组，其语法结构如下：
+
+```js
+var 数组名 = [];
+```
+
+通过这种方式所创建的数组也是一个空数组，效果和利用 `new` 创建空数组一样，此时数组长度为 0，里边没有任何元素。
+
+```js
+var arr = [];
+console.log(arr);
+```
+
+此外，还可以创建带有初始值的数组，其中的各个元素用逗号 `,` 分隔，其语法结构如下：
+
+```js
+var 数组名 = [value1, value2, value3];
+var arr = ['村雨遥', 'cunyu1943', '村雨'];
+console.log(arr);
+```
+
+![](assets/javaweb-tutorial/arr-create.png)
+
+通过字面量的方式，我们就创建了一个含有三个初始值的数组。
+
+### 获取数组中元素
+
+创建好了数组，接下来就是如何拿到数组里边的元素了。`JavaScript` 中，是通过索引（下标）来访问数组中的元素的。需要注意的是，数组索引是从 0 开始的，而不是从 1 开始。
+
+```js
+var arr = ['村雨遥', 'cunyu1943', '村雨'];
+// 村雨遥
+console.log(arr[0]);
+```
+
+![](assets/javaweb-tutorial/arr-get.png)
+
+以上的实例中，我们通过索引获取到了数组中的第一个元素 `村雨遥`。
+
+通过索引不仅能访问数组元素，还能设置和修改数组元素，通过 `数组名[索引]` 的形式即可实现。
+
+```js
+var arr = ['村雨遥', 'cunyu1943', '村雨'];
+// 村雨遥
+console.log(arr[0]);
+// 修改数组元素
+arr[0] = '村雨1943'
+// 村雨1943
+console.log(arr[0]);
+```
+
+![](assets/javaweb-tutorial/arr-index.png)
+
+### 遍历数组
+
+如果要拿到数组中的所有元素，那是不是得一个一个以 `数组名[索引]` 的形式来获取呢？答案是，不用！
+
+还记得我们之前学习的循环么，通过循环，我们就能十分简单地实现获取数组所有元素。
+
+不过在那之前，我们还可以学习下如何获取数组的长度，数组提供了一个属性 `length`，通过该属性，我们就能获取到数组的长度（即数组中元素个数）。
+
+```js
+var arr = ['村雨遥', 'cunyu1943', '村雨'];
+// 3
+console.log(arr.length);
+```
+
+![](assets/javaweb-tutorial/arr-iterator.png)
+
+接着，我们就可以通过循环来获取到数组中的所有元素了。
+
+```js
+var arr = ['村雨遥', 'cunyu1943', '村雨'];
+for(var i = 0; i < arr.length; i++){
+    console.log(arr[i]);
+}
+```
+
+![](assets/javaweb-tutorial/arr-loop.png)
+
+### 数组新增元素
+
+学习了创建数组、如何获取数组元素以及遍历数组，接下来就来看看，如何往初始化后的数组中新增元素。
+
+先来看看第一种，我们修改数组的长度，然后再往数组里边新增元素。
+
+```js
+var arr = ['村雨遥', 'cunyu1943', '村雨'];
+console.log(arr.length);
+arr.length = 4;
+console.log(arr.length);
+arr[3] = '村雨1943';
+console.log(arr);
+```
+
+![](assets/javaweb-tutorial/add.png)
+
+通过实例结果可以看到，通过修改数组长度奏效了，数组长度从一开始的 3 变成了 4，而且数组中增加元素也成功了。
+
+再来看看第二种，我们通过修改索引号的方式来增加数组元素。
+
+```js
+var arr = ['村雨遥', 'cunyu1943', '村雨'];
+console.log(arr.length);
+arr[3] = '村雨1943';
+console.log(arr);
+console.log(arr.length);
+```
+
+![](assets/javaweb-tutorial/add-index.png)
+
+同样达到了往数组中新增元素的效果，区别在于没有事先修改数组长度，而是直接修改数组索引的方式来增加元素。
+
+需要注意的时，在向数组中增加元素时，不能利用数组原有的索引来增加元素，否则会修改掉数组原有元素。
+
+```js
+var arr = ['村雨遥', 'cunyu1943', '村雨'];
+// 会修改掉数组中原有元素
+arr[1] = '村雨1943';
+console.log(arr);
+```
+
+![](assets/javaweb-tutorial/add-index-demo.png)
+
+### 数组常用 API
+
+| 方法           | 描述                                         |
+| -------------- | -------------------------------------------- |
+| `concat()`     | 连接两个或更多的数组并返回结果               |
+| `copyWithin()` | 从数组指定位置拷贝元素到数组的另一个指定位置 |
+| `entries()`    | 返回数组的可迭代对象                         |
+| `every()`      | 检测数值元素的每个元素是否都符合条件         |
+| `fill()`       | 使用一个固定值来填充数组                     |
+| `filter()`     | 检测数值元素，并返回复合条件所有元素的数组   |
+| `find()`       | 返回复合传入条件的数组元素                   |
+| `findIndex()`  | 返回复合传入条件的数组元素索引               |
+
+
+
+# 六、JavaScript 函数
+
+编程时，可能会定义许多相同或者功能相似的代码，此时我们每需要使用一次，就需要重写编写一次。虽然利用循环结构也能够实现一些简单的重复操作，但是功能较为局限。此时，我们就需要使用到 `JavaScript` 中的函数。
+
+所谓函数，就是通过将一段可以重复调用的代码块进行封装，从而实现代码的重复利用。
+
+## 函数使用
+
+了解函数的相关概念后，接下来就来看看如何使用函数。
+
+函数使用，主要可以分为两步：**声明函数**和**调用函数**。
+
+- **函数声明**
+
+函数声明，也就是说明函数用来干啥的，其语法结构如下：
+
+```js
+function 函数名(){
+    // 函数体
+}
+```
+
+其中 `function` 是声明函数的关键字，而函数一般是对应某一个功能，所以函数名一般是动词。
+
+- **函数调用**
+
+既然声明了函数，那就要去调用！调用函数时，通过调用其函数名来执行函数体代码，其语法结构如下：
+
+```js
+函数名();
+```
+
+以下我们在 `JavaScript` 中定义一个函数，用于求 `1 + 2 + … + num` 的值。
+
+```js
+function sum(num){
+    let result = 0;
+    for(let i = 1; i <= num; i++){
+        result += i;
+    }
+    return result;
+}
+
+let num = prompt('请输入一个整数');
+alert('和为：' + sum(num));
+```
+
+![](assets/javaweb-tutorial/fun-call.gif)
+
+## 函数的参数
+
+为了让函数能够准确地实现我们的功能，有时候我们需要用到参数。而参数又分为形参和实参，其中，形参位于声明函数的小括号中，而实参位于函数调用的小括号中。
+
+声明带有参数的函数时，其语法结构如下：
+
+```js
+function 函数名(形参1, 形参2……){
+    // 函数体
+}
+```
+
+当需要调用函数时，则可以通过以下形式调用。
+
+```js
+函数名(实参1, 实参2……);
+```
+
+函数声明时，在函数名后的小括号中紧跟一些参数，这些参数被叫做**形参**，而在函数调用时，同样需要传递对应的参数，而这些参数就叫做**实参**。两者的区别总结如下：
+
+| 参数     | 说明                                                   |
+| -------- | ------------------------------------------------------ |
+| **形参** | 形式上的参数，函数定义时传递的参数                     |
+| **实参** | 实际上的参数，函数调用时传递的参数，实参是传递给形参的 |
+
+所以参数的作用在于，在函数内部某些不能固定的值，可以通过参数在调用函数时传递不同的值进行。
+
+假设我们定义一个函数时，传递了不同数量的参数，就可能出现以下情况。
+
+- 实参个数与形参个数相匹配
+- 实参个数多于形参个数
+- 实参个数少于形参个数
+
+以下以实例来分别看着三种情况会出现怎样的结果。
+
+```js
+function sum(num){
+    let result = 0;
+    for(let i = 1; i <= num; i++){
+        result += i;
+    }
+    return result;
+}
+
+let num = 10;
+console.log('和为：' + sum(num));
+console.log('和为：' + sum(num, 20));
+console.log('和为：' + sum());
+```
+
+![](assets/javaweb-tutorial/fun-para.png)
+
+可以看到实参和形参个数匹配时，程序输出了正确的结果，而当实参个数大于形参个数时，程序同样输出了正确的结果。而当实参个数小于形参个数时，程序结果出错。因此，在定义和调用参数时，一定要注意形参和实参的匹配问题，否则可能会导致程序出错。
+
+## 函数返回值
+
+在调用函数时，我们会希望将函数调用的结果返回到调用者，此时就可以通过关键字 `return` 语句来实现，其语法结构如下：
+
+```js
+function 函数名(形参1, 形参2……){
+    // 函数体
+    return 返回结果;
+}
+```
+
+其实上面的实例中我已经给出了函数的返回值了，其中 `result` 就是函数的返回值。实例中将函数的结果进行了返回，所以在调用时直接能够直接进行输出。
+
+当然，不是所有函数都需要返回值，具体是否需要要根据自己的实际需求来编写。
+
+## 作用域
+
+通常来讲，程序中用到的代码并不是一直有效的，而用于限定这个代码可用范围的就是这段代码的**作用域**。因为作用域的存在，改高了程序逻辑的局部性，增强了可靠性，最大程度上减少了代码中的冲突。
+
+`JavaScript` 中，主要有三种作用域：
+
+- 全局作用域
+- 局部作用域
+- 块级作用域
+
+1.  **全局作用域**
+
+顾名思义，全局作用域也就是在整个代码中都有效。作用于所有代码执行的环境。
+
+2.  **局部作用域**
+
+局部有效，作用于函数内的代码环境，因为和函数息息相关，所以也叫做函数作用域。
+
+3.  **块级作用域**
+
+块级作用域由 `{}` 所包含，比如 `if` 和 `for` 语句中的 `{}`。
+
+```js
+let num = 1943;
+function demo(num1, num2){
+    let tmp = num1;
+    num1 = num2;
+    num2 = tmp;
+}
+demo(num, 10);
+```
+
+以上实例中 `num` 的作用域是全局作用域，`num1` 和 `num2` 的作用域为局部作用域，而 `tmp` 的作用域则是块级作用域。
+
+## 匿名函数
+
+所谓匿名函数，其实指的就是没有函数名的函数。其语法结构如下，主要有两种定义的方式。
+
+```js
+(function (){
+    // 函数体
+});
+(function (){
+    // 函数体
+});
+(function (num1, num2){
+    console.log(num1 + num2);
+});
+```
+
+以上就是一个简单的匿名函数，要注意匿名函数是不能单独使用的，它通常作为立即执行函数的基础。
+
+为了避免全局变量之间的污染，因此我们有时候需要在定义函数时立即执行函数，这时候我们就可以使用到立即执行函数。立即执行函数是基于匿名函数来实现的，也没有函数名，但是他会在定义后立即执行，其语法结构如下。
+
+立即执行函数也有两种形式，第一种是将匿名函数包裹在一个括号运算符中，然后再跟一个括号。
+
+```js
+(function (){
+    // 函数体
+})();
+```
+
+另一种则是在匿名函数后面跟上一个括号，然后再将整个包裹在一个括号运算符中。
+
+```js
+(function (){
+    // 函数体
+}());
+(function (num1, num2){
+    console.log(num1 + num2);
+}(10, 20));
+```
+
+![](assets/javaweb-tutorial/anonymous-fun.png)
+
+但是需要注意的是，如果存在多个匿名函数，那它们之间要用 `;` 分隔开，否则将会导致报错。
+
+## 高阶函数
+
+高阶函数，简单的说可以被理解为函数的高级应用，`JavaScript` 中函数能够当成值来对待，然后基于这个值来实现函数的高级应用。
+
+### 函数表达式
+
+函数表达式其实和普通的函数没有本质上的区别，以下是一个函数表达式和一个普通函数。
+
+- 函数表达式
+
+```js
+let sum1 = function(x, y) {
+    return x + y;
+}
+```
+
+- 普通函数
+
+```js
+function sum2(x, y){
+    return x + y;
+}
+```
+
+在调用时，可以发现调用方式其实都一样，两者最终得到的结果也一致。
+
+```js
+// 函数表达式调用
+sum1(10, 20);
+// 普通函数调用
+sum2(10, 20);
+```
+
+### 回调函数
+
+如果有两个函数 A 和 B，假设我们将函数 A 作为参数传递给函数 B，那么我们此时将函数 A 叫做 **回调函数**。总结来说就是如果一个函数被当做参数来传递给另一个函数时，则这个被当做参数的函数就叫做回调函数。
+
+```js
+function A(){
+    ……
+}
+// 此时 A 就是一个回调函数
+setInterval(A, 100);
+```
+
+# 七、JavaScript 对象
+
+## 什么是对象
+
+之前学习的数据类型在存储一些复杂的信息时，十分不方便，而且也难以区分。为此，为了更加详细方便的描述某一个事物，因而提出面向对象的概念。
+
+那什么是对象呢？
+
+所谓对象，也是 `JavaScript` 中的一种数据类型，可以看做是一系列无序数据的集合。
+
+有了对象，就可以用来描述某一个事物，比如用对象来描述一个人。其中人的一些静态特征比如姓名、年龄、性别、身高、体重我们就可以用数字类型、字符串类型、数组、布尔类型等数据结构来表示，而人的一些动作比如吃喝拉撒啥的，就可以用函数来进行表示。
+
+## 如何使用对象
+
+要使用对象之前，我们需要先进行声明，其语法结构如下：
+
+```js
+let 对象名 = {};
+```
+
+比如要创建一个王者荣耀中的英雄对象，则可以按照如下方式：
+
+```js
+let hero = {};
+```
+
+那既然创建了一个对象，那对象里边还有各种属性和方法呀。比如英雄的性别、职业、初始血条值、初始魔法值等等，此外，各个英雄还有各自的技能，用于杀敌清兵。
+
+我们将上面的英雄对象添加上属性和方法，其语法结构如下：
+
+```js
+let 对象名 = {
+    属性名: 属性值,
+    方法名: 函数
+}
+```
+
+```js
+let hero = {
+    name: '妲己',
+    sex: '女',
+    profession: '法师',
+    skill: ['灵魂冲击', '偶像魅力', '女王崇拜']
+}
+```
+
+声明对象并添加若干属性之后，我们既可以利用 `.` 或者 `[]` 来获取对象中属性所对应的值。紧接着上述实例，我们定义了一个英雄对象，并含有姓名、性别、职业、技能等属性，假设我们要获取其中的姓名属性，这可以通过以下两种方式来获得。
+
+```js
+方法名.属性名;
+```
+
+```js
+alert(hero.name);
+```
+
+```js
+方法名[属性名];
+```
+
+```js
+alert(hero['name']);
+```
+
+除开属性之外我们的英雄还拥有其他行为，比如放各种技能。以下我们就来看看，如何在对象中添加一个方法。
+
+```js
+let hero = {
+    soulCrash: function(){
+        alert('一技能：灵魂冲击');
+    }
+}
+```
+
+对象中的方式是由方法名和函数两部分共同组成，并且中间使用 `:` 分隔。
+
+当要使用该方法是，就可以通过以下方式来调用。
+
+```js
+对象名.方法名();
+```
+
+```js
+hero.soulCrash();
+```
+
+## 操作对象
+
+对象作为一种无序的数据集合，要对对象进行操作，无非是给对象增加、修改、查询、删除各个属性或方法。
+
+假设我们现在有以下的对象：
+
+```js
+let hero = {
+    name: '伽罗',
+    sex: '女',
+    profession: '射手',
+    silentArrow: function(){
+        alert('二技能：静默之箭');
+    }
+}
+console.log(hero);
+```
+
+![](assets/javaweb-tutorial/operate-obj.png)
+
+1.  **增加**
+
+现在我们要给 `hero` 属性添加一个新的属性，就可以通过以下的语法形式形式：
+
+```js
+对象名.新属性名 = 新属性值;
+```
+
+```js
+let hero = {
+    name: '伽罗',
+    sex: '女',
+    profession: '射手',
+    silentArrow: function(){
+        alert('二技能：静默之箭');
+    }
+}
+console.log(hero);
+hero.height = 172;
+console.log(hero);
+```
+
+![](assets/javaweb-tutorial/add-attr.png)
+
+2.  **修改**
+
+如果要修改其中的一个属性或者方法，则可以通过以下的方式：
+
+```js
+// 修改属性
+对象名.属性名 = 新的属性值;
+// 修改方法
+对象名.方法名 = function(){
+    // 函数体;
+}
+```
+
+以下为修改属性和方法的实例：
+
+```js
+let hero = {
+    name: '伽罗',
+    sex: '女',
+    profession: '射手',
+    silentArrow: function(){
+        alert('二技能：静默之箭');
+    }
+}
+console.log(hero);
+hero.silentArrow();
+hero.height = 175;
+hero.silentArrow = function(){
+    alert('二技能：静默之箭，冷却时间缩短');
+}
+console.log(hero);
+hero.silentArrow();
+```
+
+![](assets/javaweb-tutorial/modify-attr-res.png)
+
+3.  **查询**
+
+而如果要查询对象的属性或者方法，则可以使用的方式：
+
+```js
+// 查询属性，以下方法 2 选 1
+对象名.属性名;
+对象名[属性名];
+// 查询方法
+对象名.方法名();
+```
+
+```js
+let hero = {
+    name: '伽罗',
+    height: 175,
+    sex: '女',
+    profession: '射手',
+    silentArrow: function(){
+        alert('二技能：静默之箭');
+    }
+}
+console.log(hero.name);
+console.log(hero.silentArrow());
+```
+
+![](assets/javaweb-tutorial/attr-qry.png)
+
+4.  **删除**
+
+删除对象中的属性，可以通过以下方式：
+
+```js
+delete 对象名.属性名;
+```
+
+```js
+let hero = {
+    name: '伽罗',
+    height: 175,
+    sex: '女',
+    profession: '射手',
+    silentArrow: function(){
+        alert('二技能：静默之箭');
+    }
+}
+console.log(hero);
+delete hero.height;
+console.log(hero);
+```
+
+![](assets/javaweb-tutorial/attr-del.png)
+
+## 遍历对象
+
+类似于数组，如果我们想要输出数组中的所有元素，我们可以对数组进行遍历。而同样的，对象也可以进行遍历，从而输出对象中所有属性和方法。
+
+但是由于对象是无序的，而且也不像数组一样可以通过 `length` 属性来确定数组长度，因此要遍历对象，需要用到一个增强型的 `for` 循环，其语法结构如下：
+
+```js
+for(let 变量 in 对象名){
+    // 循环体
+}
+```
+
+例如针对以下对象，要输出对象的属性及其属性值，则可以通过 `for…in` 的方式。
+
+```js
+let hero = {
+    name: '伽罗',
+    height: 175,
+    sex: '女',
+    profession: '射手',
+    silentArrow: function(){
+        alert('二技能：静默之箭');
+    }
+}
+```
+
+```js
+for(let key in hero){
+    // 打印属性名
+    console.log(key);
+    // 打印属性值
+    console.log(hero[key]);
+}
+```
+
+![](assets/javaweb-tutorial/for-each.png)
+
+## 内置对象
+
+所谓内置对象，就是 `JavaScript` 中内部已经提供的对象，里边包含了各种属性和方法，当我们开发者需要时，就可以直接进行调用而不必去重新创建。
+
+我们常用的有 `Math` 对象，它提供了一些用于数学运算符的方法，常见方法总结如下：
+
+| 方法       | 说明                                                   |
+| ---------- | ------------------------------------------------------ |
+| `random()` | 生成 0 - 1 之间的随机数，左闭右开，即包括 0 但不包括 1 |
+| `ceil()`   | 向上取整                                               |
+| `floor()`  | 向下取整                                               |
+| `max()`    | 求最大值                                               |
+| `min()`    | 求最小值                                               |
+| `pow()`    | 幂运算                                                 |
+| `abs()`    | 求绝对值                                               |
+
+```js
+console.log(Math.random());
+console.log(Math.ceil(3.2));
+console.log(Math.floor(3.2));
+console.log(Math.max(1, 23, 4, 5));
+console.log(Math.min(1, 23, 4, 5));
+console.log(Math.pow(10, 3));
+console.log(Math.abs(-1.3));
+```
+
+![](assets/javaweb-tutorial/in-obj.png)
+
+## 环境对象
+
+环境对象是指函数内部特殊的变量 `this`，它代表着当前函数运行时所处的环境。
+
+JavaScript 中，`this` 不是固定不变的，它会随着执行环境的变化而变化。`this` 在不同位置，也有着不同的含义。
+
+| 位置     | 含义                        |
+| -------- | --------------------------- |
+| 方法中   | `this` 表示该方法所属的对象 |
+| 单独使用 | `this` 表示全局对象         |
+| 函数中   | `this` 表示全局对象         |
+| 事件中   | `this` 表示接收事件的元素   |
+
+1.  **方法中**
+
+假设有一个对象，则此时对象方法 `info` 中的 `this` 就代表 `hero` 这个对象。
+
+```js
+let hero = {
+    name: '伽罗',
+    sex: '女',
+    info: function(){
+        return this.name + " , " + this.sex;
+    }
+}
+```
+
+2.  **单独使用**
+
+单独使用时，`this` 指向了全局对象。
+
+```js
+let num = this;
+alert(num);
+```
+
+![](assets/javaweb-tutorial/env-obj.png)
+
+3.  **函数中**
+
+函数中使用 `this` 时，同样指向全局对象。
+
+```js
+function func(){
+    return this;
+}
+alert(func());
+```
+
+![](assets/javaweb-tutorial/env-obj.png)
+
+# 八、JavaScript 事件监听
+
+## 什么是 Web API
+
+`Web API` 是指网页服务器或者网页浏览器的应用程序接口。简单来讲，就是我们在编写 `JavaScript` 代码时，可以通过 `Web API` 来操作 `HTML` 网页和浏览器。
+
+`Web API` 又可以分为两类：
+
+- `DOM`（文档对象模型）
+- `BOM`（浏览器对象模型）
+
+![](assets/javaweb-tutorial/js-structure.png)
+
+`DOM`（`Document Object Model`），即文档对象模型，主要用来呈现以及与 `HTML` 或 `XML` 文档交互的 `API`。说白了就是用来操作网页内容，实现各种特效，让用户用起来更顺手。
+
+再来看看 `DOM` 树的概念，`DOM` 树又叫文档树，指的是将 `HTML` 文档以树状结构直观呈现出来，从而将 `HTML` 中标签与标签之间的关系直观体现出来。
+
+我们都知道 `HTML` 页面中包含了许多标签，而 `DOM` 对象就是浏览器根据这些标签所生成的 `JavaScript` 对象。通过这个对象，我们就可以找到标签的各种属性，而通过修改这个对象的属性的结果也会映射到 `HTML` 页面中标签中。也就是说，通过修改 `JavaScript` 中的对象属性，我们就能够改变对象对应 `HTML` 中的标签属性。
+
+```js
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>DOM</title>
+	</head>
+	<body>
+		<button>点击</button>
+		<script>
+			// 获取 JavaScript 对象
+			let btn = document.querySelector('button');
+			// 打印所有属性
+			console.dir(btn);
+			// 修改对象属性
+			btn.innerText = '村雨遥';
+		</script>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/intext-change.png)
+可以看到原本 `button` 标签的属性 `innerText` 从原先的点击变成了 村雨遥，说明通过修改 `JavaScript` 对象属性从而改变 `HTML` 中标签属性的目的达到了。
+
+## DOM 对象获取
+
+1. **匹配的首个元素**
+
+上一小节实例中我们其实已经获取过相关 `DOM` 对象了，也就是以下这一句：
+
+```js
+let btn = document.querySelector('button');
+```
+
+这其实是通过 `CSS` 选择器来获取的我们网页中的标签，通过以下语法，我们将会从网页中选择到匹配的第一个元素。
+
+```js
+document.querySelector('CSS 选择器');
+```
+
+其中的参数包含了一个或多个有效的 `CSS` 选择器字符串，然后返回的结果就是匹配到的 `CSS` 选择器中的**第一个元素**，是一个 `HTMLElement` 元素。当然，如果没有匹配到任何元素，则返回 `null`。
+
+以下是一个获取 `DOM` 对象的实例。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>DOM 元素获取</title>
+	</head>
+	<body>
+		<div>DOM 元素获取</div>
+
+		<script>
+			// 获取 js 元素
+			let div = document.querySelector('div');
+			console.log(div);
+		</script>
+	</body>
+
+</html>
+
+```
+
+![](assets/javaweb-tutorial/dom-attr-get.png)
+
+2. **匹配的多个元素**
+
+之前我们已经学习了如何获取匹配的首个元素，但是在日常开发中，我们常常需要获取匹配到的多个元素，此时我们就可以使用如下语法来获取匹配的多个元素。
+
+```js
+document.querySelectorAll('CSS 选择器');
+```
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>DOM 元素获取</title>
+	</head>
+	<body>
+		<div>DOM 元素获取1</div>
+		<div>DOM 元素获取2</div>
+
+		<script>
+			// 获取 js 元素
+			let div = document.querySelectorAll('div');
+			console.log(div);
+		</script>
+	</body>
+
+</html>
+```
+
+![](assets/javaweb-tutorial/mul-attr.png)
+
+除开上述两种获取 `DOM` 对象之外，还提供了一些用于获取 `DOM` 元素的方法。最常见的几种总结如下：
+
+- 根据 `id` 获取一个元素
+
+```js
+document.getElementById('id 元素名');
+```
+
+- 根据标签获取页面中的一类元素
+
+```js
+document.getElementsByTagName('标签名');
+```
+
+- 根据类名获取页面中的元素
+
+```js
+document.getElementsByClassName('类名')
+```
+
+以下是一个分别利用上述方法来获取页面中 `DOM` 元素的实例。
+
+```js
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>DOM 元素获取</title>
+	</head>
+	<body>
+		<div id="id1">DOM 元素获取1</div>
+		<div id="id2">DOM 元素获取2</div>
+		<div class="class1">DOM 元素获取3</div>
+		<div class="class1">DOM 元素获取4</div>
+
+		<script>
+			// 获取 js 元素
+			let divs = document.getElementsByTagName('div');
+			console.log(divs);
+			let id1 = document.getElementById('id1');
+			console.log(id1);
+			let id2 = document.getElementById('id2');
+			console.log(id2);
+			let classes = document.getElementsByClassName('class1');
+			console.log(classes);
+		</script>
+	</body>
+
+</html>
+```
+
+![](assets/javaweb-tutorial/dom-attr-ways.png)
+
+## DOM 元素内容
+
+既然已经学会了如何获取 `DOM` 元素，接下来就是看看如何修改元素中的内容。
+
+这里 `Web API` 主要提供了三种方式，分别是：
+
+- `document.write()`
+- `innerText` 属性
+- `innerHTML` 属性
+
+### doucument.write()
+
+该方法只能将文本内容追加到 `</body>` 标签前面的位置，而且文本内容中所包含的标签也同样会被解析。
+
+```js
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>DOM 元素内容</title>
+	</head>
+	<body>
+		<script>
+			document.write('公众号：村雨遥！</br>');
+			document.write("<font color='red'>wePublic: cunyu1943</font>");
+		</script>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/doc-write.png)
+
+### innerText 属性
+
+通过该属性，可以将文本内容添加或者更新到任意标签的位置，而且文本中的标签也不会被解析。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>DOM 元素内容</title>
+
+	</head>
+	<body>
+		<div>
+			测试
+		</div>
+		<script>
+			let div = document.querySelector('div');
+			div.innerText = 'Hello World!';
+            div.innerText = '<h1>一级标题</h1>';
+		</script>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/in-text-1.png)
+
+![](assets/javaweb-tutorial/in-text-2.png)
+
+### innerHTML 属性
+
+除了 `innerText` 属性之外，也可以是使用 `innerHTML` 属性来对文本内容进行添加或者更新，但不同于 `innerText` 的是，`innerHTML` 会将文本内容中中的标签也进行解析。
+
+```js
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>DOM 元素内容</title>
+
+	</head>
+	<body>
+		<div>
+			测试
+		</div>
+		<script>
+			let div = document.querySelector('div');
+			div.innerHTML = 'Java Park!';
+			div.innerHTML = '<a href="https://cunyu1943.github.io/JavaPark">JavaPark</a>';
+		</script>
+	</body>
+</html>
+```
+
+| 文本                                                                                | 链接                                                                                |
+| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
+| ![](assets/javaweb-tutorial/in-html-1.png) | ![](assets/javaweb-tutorial/in-html-2.png) |
+
+
+
+
+
+### 修改元素样式属性
+
+出了修改文本内容，我们还可以实现对元素样式的控制，主要可以通过以下三种方式：
+
+- 通过 `style` 属性操作 `CSS`
+- 通过类名 `className` 操作 `CSS`
+- 通过 `classList` 操作类控制 `CSS`
+
+1.  **通过 `style` 属性操作 `CSS`**
+
+语法结构如下：
+
+```js
+对象.style.样式属性 = 样式属性值;
+```
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>属性修改</title>
+		<style>
+			div {
+				background-color: black;
+				width: 6.25rem;
+				height: 12.5rem;
+			}
+		</style>
+	</head>
+	<body>
+		<div>
+
+		</div>
+		<script>
+			let div = document.querySelector('div');
+			div.style.backgroundColor = 'green';
+		</script>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/style-chg.png)
+
+2.  **通过类名 `className` 操作 `CSS`**
+
+当设计修改的样式较多时，如果直接通过 `style` 属性修改比较麻烦，此时就可以通过操作 `CSS` 类名的方式来进行批量修改，其语法结构如下：
+
+```js
+元素.className = '类名';
+```
+
+```js
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>属性修改</title>
+		<style>
+			div {
+				background-color: black;
+				width: 6.25rem;
+				height: 12.5rem;
+			}
+
+			.demo {
+				background-color: greenyellow;
+				width: 25rem;
+				height: 31.25rem;
+			}
+		</style>
+	</head>
+	<body>
+		<div class="demo">
+
+		</div>
+		<script>
+			let div = document.querySelector('div');
+			div.className = 'demo';
+		</script>
+	</body>
+</html>
+```
+
+![](assets/javaweb-tutorial/style-classname.png)
+
+使用类名来操作 `CSS` 时，需要注意一下，如果原先的元素中已经有了 `CSS` 类，那么此时新增的 `CSS` 类将覆盖之前 `CSS` 类。
+
+3.  **通过 `classList` 来操作 `CSS`**
+
+针对通过类名 `className` 操作 `CSS` 会覆盖以前类名的问题，`JavaScript` 中又提供了 `classList` 的方式来追加和删除类名。
+
+| 方法             | 说明       |
+| ---------------- | ---------- |
+| `add('类名')`    | 追加一个类 |
+| `remove('类名')` | 删除一个类 |
+| `toggle('类名')` | 切换一个类 |
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>属性修改</title>
+		<style>
+			div {
+				background-color: black;
+				width: 6.25rem;
+				height: 12.5rem;
+			}
+
+			.demo1 {
+				background-color: greenyellow;
+				width: 10rem;
+				height: 15rem;
+			}
+
+			.demo2 {
+				background-color: aquamarine;
+				width: 9.375rem;
+				height: 12.5rem;
+			}
+		</style>
+	</head>
+	<body>
+		<div class="demo">
+
+		</div>
+		<script>
+			let div = document.querySelector('div');
+			div.classList.add('demo1');
+			div.classList.toggle('demo2');
+			div.classList.remove('demo2');
+		</script>
+	</body>
+</html>
+```
+
+|                                     greenyellow                                     |                                         aquamarine                                         |
+| :---------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------: |
+| ![](assets/javaweb-tutorial/classlist.png) | ![](assets/javaweb-tutorial/style-class-list.png) |
+
+
+
+## 什么是事件
+
+在之前 `DOM` 的学习中，我们主要学习了如何获取 `DOM` 元素，并且学会了如何给获取的元素进行属性修改等操作。但这些基本都是静态的修改，并没有接触到一些动作。而今天要学习的事件，其实就是这些动作的总称。
+
+所谓事件，就是在编程时系统内所发生的动作或者发生的事情，比如在网页中点击一个按钮之后，我们就能实现登录或者注册之类的功能。
+
+## 事件监听
+
+事件监听，就是让程序检测是否有事件产生，一旦有事件触发，就立即调用一个函数做出响应，这个过程就叫做注册事件。其语法结构如下：
+
+```js
+元素.addEventListener('事件', 要执行的函数);
+```
+
+要实现事件监听，要同时包含以下三要素：
+
+- **事件源**：也就是上面语法中所对应的元素，指的是谁发出的事件，也就是网页中哪个 `DOM` 元素被事件所触发。
+- **事件**：以何种方式触发，比如鼠标单击 `click`。
+- **事件调用函数**：也就是语法结构中要执行的函数，我们触发事件后，需要去做什么。
+
+```html
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<title>DOM 事件</title>
+	</head>
+	<body>
+		<button>点击开始</button>
+		<script>
+			let btn = document.querySelector('button');
+			btn.addEventListener('click', function() {
+				alert('马上开始');
+			});
+		</script>
+	</body>
+</html>
+```
+
+以上就是一个事件监听的实例，通过在网页中点击按钮，就会执行事件调用函数，弹窗显示内容。
+
+## 常见事件类型
+
+学习了事件的定义以及如何实现一个最简单的事件监听，接下来就来看看，`Web API` 中为 `DOM` 提供的常用事件类型有哪些。
+
+主要有 4 种类型的事件，分为：
+
+- **鼠标事件**
+- **键盘事件**
+- **表单事件**
+- **页面加载事件**
+
+以下就分别来看看这些类型的事件又可以细分为哪些小类。
+
+1.  **鼠标事件**
+
+| 事件            | 说明                                   |
+| --------------- | -------------------------------------- |
+| `onclick`       | 当用户点击某个对象时调用的事件句柄     |
+| `oncontextmenu` | 在用户点击鼠标右键打开上下文菜单时触发 |
+| `ondblclick`    | 当用户双击某个对象时调用的事件句柄     |
+| `onmousedown`   | 鼠标按钮被按下                         |
+| `onmouseenter`  | 当鼠标指针移动到元素上触发             |
+| `onmouseleave`  | 当鼠标指针移出元素时触发               |
+| `onmousemove`   | 鼠标被移动                             |
+| `onmouseover`   | 鼠标移到某元素之上                     |
+| `onmouseout`    | 鼠标从某元素移开                       |
+| `onmouseup`     | 鼠标按键被松开                         |
+
+2.  **键盘触发**
+
+| 事件         | 说明           |
+| ------------ | -------------- |
+| `onkeydown`  | 键盘按下触发   |
+| `onkeyup`    | 键盘抬起触发   |
+| `onkeypress` | 键盘按下并松开 |
+
+3.  **表单事件**
+
+| 事件         | 说明                         |
+| ------------ | ---------------------------- |
+| `oninput`    | 表单获取用户输入时触发       |
+| `onblur`     | 元素失去焦点时触发           |
+| `onchange`   | 事件在表单元素内容改变时触发 |
+| `onfocus`    | 元素获取焦点时触发           |
+| `onfocusout` | 元素即将失去焦点时触发       |
+| `onreset`    | 表单重置时触发               |
+| `onsearch`   | 用户向搜索与输入文本时触发   |
+| `onselect`   | 用户选取文本时触发           |
+| `onsubmit`   | 表单提交时触发               |
+
+4.   **页面加载事件**
+
+| 事件     | 说明               |
+| -------- | ------------------ |
+| `onload` | 页面加载完成时触发 |
+
+
+
+# Vue 概述
+
+## 什么是 Vue
+- 官网：https://v2.cn.vuejs.org/
+- `Vue` 是一套前端框架，免除了原生 `JavaScript` 中的 `DOM` 操作，从而简化了 `DOM` 时的书写。
+- `Vue` 基于 `MVVM(Model-View-ViewModel)` 思想，从而实现数据的双向绑定，让开发者能将关注点更多的聚焦到数据上。
+
+![](assets/javaweb-tutorial/5cbb562698c340a4b4e40c882ba51e69.png)
+
+
+
+而所谓框架，说明 `Vue` 是一个半成品的软件，是一套可重用、通用的、软件基础代码模型。当我们基于框架进行开发时，能够更加快捷与高效。
+
+## Vue 快速入门
+
+1. 首先新建 `HTML` 页面，同时引入 `Vue.js` 文件。
+
+```html
+<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
+```
+
+2. 接着在 `<head>`  或者 `<body>` 区域创建 `JavaScript` 代码区，创建 `Vue` 核心对象，定义数据模型。
+
+```html
+<script>
+    // 定义 Vue 对象
+    var app = new Vue({
+        el: '#app', // Vue 接管的区域
+        data: {
+            message: 'Hello Vue2!'
+        }
+    })
+</script>
+```
+
+3. 最后，在 `<body>` 中编写视图即可。
+
+```html
+<div id="app">
+    <input type="text" v-model="message">
+    {{message}}
+</div>
+```
+
+4. 用浏览器打开，得到最终的效果预览如下。
+
+![](assets/javaweb-tutorial/092ca208c01a4261aca3eda70b7c21df.png)
+# Vue 常用指令
+
+所谓指令，就是指 `HTML` 标签上带有 `v-` 前缀的特殊属性，而不同的含义则代表不同含义，常用的指令有：
+
+| 指令        | 说明                                                    |
+| ----------- | ------------------------------------------------------- |
+| `v-bind`    | 为 `HTML` 标签绑定属性值，比如设置 `href`、`css` 样式等 |
+| `v-model`   | 为表单元素创建双向数据绑定                              |
+| `v-on`      | 为 `HTML` 标签绑定事件                                  |
+| `v-if`      | 条件性渲染某元素，判定为 `true` 时渲染，否则不渲染      |
+| `v-else-if` | 条件性渲染某元素，判定为 `true` 时渲染，否则不渲染      |
+| `v-else`    | 条件性渲染某元素，判定为 `true` 时渲染，否则不渲染      |
+| `v-show`    | 根据条件展示某元素，区别在于切换的是 `display` 属性的值 |
+| `v-for`     | 列表渲染，遍历容器元素或对象属性                        |
+
+## 插值表达
+
+### 语法
+
+```js
+{{ 表达式 }}
+```
+
+2. **表达式内容**
+
+表达式中的内容可以是以下内容中的任意一种：
+
+-  变量
+- 三元运算符
+- 函数调用
+- 算术运算
+
+### 实例
+
+## 属性绑定
+
+### 语法
+
+为了实现属性绑定的效果，需要用到 `Vue` 中的 `v-bind` 指令。
+
+```js
+<h1 v-bind:class="green"></h1>
+```
+以上是 `v-bind` 指令的一个使用示例，书写时为了简化，也通常写成以下的形式。
+
+```js
+<h1 :class="green"></h1>
+```
+
+其中，指令冒号后的部分（`:class`）时指令的参数。 
+
+### 实例
+
+
+引入 `Vue` 的相关依赖后，按照之前快速入门时的示例。
+
+1.   在 `<head>`  或者 `<body>` 区域创建 `JavaScript` 代码区，创建 `Vue` 核心对象，定义数据模型。
+
+```html
+<script>
+    // 定义 Vue 对象
+    var app = new Vue({
+        el: '#app', // Vue 接管的区域
+        data: {
+            website: 'https://cunyu1943.site'
+        }
+    })
+</script>
+```
+
+3. 接着在 `<body>` 中编写视图。
+
+```html
+<div id="app">
+    <a v-bind:href="website">JavaPark</a>
+</div>
+```
+
+4. 最后用浏览器打开，得到最终的效果预览如下。
+
+![](assets/javaweb-tutorial/e35a62cae12b4957b28f908702986f51.png)
+
+其实，上面语句实现的效果和下边语句的效果相同，只是在 `Vue` 中，将链接绑定到了数据域中，从而能够实现一次修改，多处变化。
+
+```html
+<a href="https://cunyu1943.site">JavaPark</a>
+```
+
+同时，为了简化书写，`v-bind` 语法也经常写成如下形式：
+
+```js
+<div id="app">
+    <a :href="website">JavaPark</a>
+</div>
+```
+
+## 事件监听
+
+## 表单绑定
+
+### 语法
+
+在表单元素上创建双向数据绑定。
+
+```js
+<input type="text" v-model="website">
+{{website}}
+```
+
+### 实例
+
+```js
+<script>
+    var app = new Vue({
+        el: '#app',
+        data: {
+            website: 'https://cundyu1943.site'
+        }
+    })
+</script>
+```
+
+```html
+<div id="app">
+    <input type="text" v-model="website">
+    {{website}}
+</div>
+```
+
+![](assets/javaweb-tutorial/6ab2f964b8c944c9b445851de2699c15.png)
+
+## 条件渲染
+
+## 列表渲染
+
+## 计算属性
+
+
+
+# Vue 生命周期
diff --git a/docs/src/program-language/vue/20220605-intro.md b/src/java-tutorial/front-end/vue3/20220605-intro.md
similarity index 90%
rename from docs/src/program-language/vue/20220605-intro.md
rename to src/java-tutorial/front-end/vue3/20220605-intro.md
index b3f68643b5..3638ee081a 100644
--- a/docs/src/program-language/vue/20220605-intro.md
+++ b/src/java-tutorial/front-end/vue3/20220605-intro.md
@@ -8,20 +8,6 @@ tag:
 
 # Vue 3 简介及入门实例
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 之前已经学习过来 `HTML`、 `CSS` 以及 `JavaScript` 的相关知识，也算是基本了解了关于这前端三件套的一些基本用法。今天就来了解下，当前前端开发中最炙手可热的当红辣子鸡 - `Vue`。本文主要介绍 `Vue` 的一些入门知识和最经典的 `Vue` 入门 `Hello World` 程序，如果你想了解的是更高级的使用技巧，那么完全可以忽略。
diff --git a/docs/src/program-language/vue/20220606-vite-quickstart.md b/src/java-tutorial/front-end/vue3/20220606-vite-quickstart.md
similarity index 91%
rename from docs/src/program-language/vue/20220606-vite-quickstart.md
rename to src/java-tutorial/front-end/vue3/20220606-vite-quickstart.md
index a7c8608a20..04b88f80b3 100644
--- a/docs/src/program-language/vue/20220606-vite-quickstart.md
+++ b/src/java-tutorial/front-end/vue3/20220606-vite-quickstart.md
@@ -9,20 +9,6 @@ tag:
 
 # 搭建 Vue + Vite 入门项目
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 虽然市面上有很多的打包工具，例如 `webpack`、`Rollup` 以及 `Parcel` 等。毫无疑问，通过使用这些工具，在很大程度上改善了前端开发者的游戏体验。
diff --git a/docs/src/program-language/vue/20221012-common-command.md b/src/java-tutorial/front-end/vue3/20221012-common-command.md
similarity index 89%
rename from docs/src/program-language/vue/20221012-common-command.md
rename to src/java-tutorial/front-end/vue3/20221012-common-command.md
index 12c5d2b392..ada493d39b 100644
--- a/docs/src/program-language/vue/20221012-common-command.md
+++ b/src/java-tutorial/front-end/vue3/20221012-common-command.md
@@ -6,21 +6,7 @@ tag:
     - Vue
 ---
 
-# Vue3 常用指令
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+# 常用指令
 
 ##  插值
 
diff --git a/src/java-tutorial/front-end/vue3/README.md b/src/java-tutorial/front-end/vue3/README.md
new file mode 100644
index 0000000000..98c290ab34
--- /dev/null
+++ b/src/java-tutorial/front-end/vue3/README.md
@@ -0,0 +1,7 @@
+---
+title: Vue 3 系列
+index: false
+icon: iconfont icon-vue
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/program-language/vue/assets/20220605-intro/68c971d94d1c423291c619faf7492af2.webp b/src/java-tutorial/front-end/vue3/assets/20220605-intro/68c971d94d1c423291c619faf7492af2.webp
similarity index 100%
rename from docs/src/program-language/vue/assets/20220605-intro/68c971d94d1c423291c619faf7492af2.webp
rename to src/java-tutorial/front-end/vue3/assets/20220605-intro/68c971d94d1c423291c619faf7492af2.webp
diff --git a/docs/src/program-language/vue/assets/20220605-intro/aa9650d4c991be9e0eca210af108d3d4.webp b/src/java-tutorial/front-end/vue3/assets/20220605-intro/aa9650d4c991be9e0eca210af108d3d4.webp
similarity index 100%
rename from docs/src/program-language/vue/assets/20220605-intro/aa9650d4c991be9e0eca210af108d3d4.webp
rename to src/java-tutorial/front-end/vue3/assets/20220605-intro/aa9650d4c991be9e0eca210af108d3d4.webp
diff --git a/docs/src/program-language/vue/assets/20220606-vite-quickstart/001f62742fa74ef18243ee2d6be11f1c.webp b/src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/001f62742fa74ef18243ee2d6be11f1c.webp
similarity index 100%
rename from docs/src/program-language/vue/assets/20220606-vite-quickstart/001f62742fa74ef18243ee2d6be11f1c.webp
rename to src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/001f62742fa74ef18243ee2d6be11f1c.webp
diff --git a/docs/src/program-language/vue/assets/20220606-vite-quickstart/15646dd536d24bd1bdec490bf9ef9947.webp b/src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/15646dd536d24bd1bdec490bf9ef9947.webp
similarity index 100%
rename from docs/src/program-language/vue/assets/20220606-vite-quickstart/15646dd536d24bd1bdec490bf9ef9947.webp
rename to src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/15646dd536d24bd1bdec490bf9ef9947.webp
diff --git a/docs/src/program-language/vue/assets/20220606-vite-quickstart/191b34c683cd49f2a9b608ea24533267.webp b/src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/191b34c683cd49f2a9b608ea24533267.webp
similarity index 100%
rename from docs/src/program-language/vue/assets/20220606-vite-quickstart/191b34c683cd49f2a9b608ea24533267.webp
rename to src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/191b34c683cd49f2a9b608ea24533267.webp
diff --git a/docs/src/program-language/vue/assets/20220606-vite-quickstart/1bcdad701ebf4452baed219fc83acede.webp b/src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/1bcdad701ebf4452baed219fc83acede.webp
similarity index 100%
rename from docs/src/program-language/vue/assets/20220606-vite-quickstart/1bcdad701ebf4452baed219fc83acede.webp
rename to src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/1bcdad701ebf4452baed219fc83acede.webp
diff --git a/docs/src/program-language/vue/assets/20220606-vite-quickstart/398ba0dc8fac4c028ac08a91183ea9d9.webp b/src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/398ba0dc8fac4c028ac08a91183ea9d9.webp
similarity index 100%
rename from docs/src/program-language/vue/assets/20220606-vite-quickstart/398ba0dc8fac4c028ac08a91183ea9d9.webp
rename to src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/398ba0dc8fac4c028ac08a91183ea9d9.webp
diff --git a/docs/src/program-language/vue/assets/20220606-vite-quickstart/3bc140611b8241d99f05ecfac0123b04.webp b/src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/3bc140611b8241d99f05ecfac0123b04.webp
similarity index 100%
rename from docs/src/program-language/vue/assets/20220606-vite-quickstart/3bc140611b8241d99f05ecfac0123b04.webp
rename to src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/3bc140611b8241d99f05ecfac0123b04.webp
diff --git a/docs/src/program-language/vue/assets/20220606-vite-quickstart/7ebab8a50d8b40d1b6dfd3d363b7420e.webp b/src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/7ebab8a50d8b40d1b6dfd3d363b7420e.webp
similarity index 100%
rename from docs/src/program-language/vue/assets/20220606-vite-quickstart/7ebab8a50d8b40d1b6dfd3d363b7420e.webp
rename to src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/7ebab8a50d8b40d1b6dfd3d363b7420e.webp
diff --git a/docs/src/program-language/vue/assets/20220606-vite-quickstart/8643dfb26f7046f38dff61bf34412547.webp b/src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/8643dfb26f7046f38dff61bf34412547.webp
similarity index 100%
rename from docs/src/program-language/vue/assets/20220606-vite-quickstart/8643dfb26f7046f38dff61bf34412547.webp
rename to src/java-tutorial/front-end/vue3/assets/20220606-vite-quickstart/8643dfb26f7046f38dff61bf34412547.webp
diff --git a/src/java-tutorial/in-action/README.md b/src/java-tutorial/in-action/README.md
new file mode 100644
index 0000000000..fa5361e783
--- /dev/null
+++ b/src/java-tutorial/in-action/README.md
@@ -0,0 +1,7 @@
+---
+title: 实战训练
+index: false
+icon: fa-solid fa-crosshairs
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/in-action/20210405-stu-manage-sys.md b/src/java-tutorial/in-action/project/20210405-stu-manage-sys.md
similarity index 98%
rename from docs/src/java-tutorial/in-action/20210405-stu-manage-sys.md
rename to src/java-tutorial/in-action/project/20210405-stu-manage-sys.md
index 9e9652d672..835ce3dcd9 100644
--- a/docs/src/java-tutorial/in-action/20210405-stu-manage-sys.md
+++ b/src/java-tutorial/in-action/project/20210405-stu-manage-sys.md
@@ -8,19 +8,6 @@ date: 2021-04-05
 
 # 学生成绩管理系统
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 对于计算机专业的学生来讲，一定对于学生成绩管理系统课程设计十分印象深刻。设计、上机、编码、写报告、答辩等一系列流程，虽然很简单，但也可以综合运用我们所学的一些知识了。
diff --git a/docs/src/java-tutorial/in-action/20210731-order-system.md b/src/java-tutorial/in-action/project/20210731-order-system.md
similarity index 95%
rename from docs/src/java-tutorial/in-action/20210731-order-system.md
rename to src/java-tutorial/in-action/project/20210731-order-system.md
index daa83a0a9b..bb305e3198 100644
--- a/docs/src/java-tutorial/in-action/20210731-order-system.md
+++ b/src/java-tutorial/in-action/project/20210731-order-system.md
@@ -8,19 +8,6 @@ date: 2021-07-31
 
 # 饭馆点菜系统
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 继上次写了一个 Java SE 版本的 学生成绩管理系统 之后，发现大家反响还不错，所以今天我有带来了差不多一样的点菜系统，希望利用我们所学的 Java SE 知识，实现我们的点菜系统。
diff --git a/docs/src/java-tutorial/in-action/20210801-tally-book.md b/src/java-tutorial/in-action/project/20210801-tally-book.md
similarity index 95%
rename from docs/src/java-tutorial/in-action/20210801-tally-book.md
rename to src/java-tutorial/in-action/project/20210801-tally-book.md
index 13243ae1fb..b9b626ece1 100644
--- a/docs/src/java-tutorial/in-action/20210801-tally-book.md
+++ b/src/java-tutorial/in-action/project/20210801-tally-book.md
@@ -8,19 +8,6 @@ date: 2021-08-01
 
 # 记账本
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 之前已经写过关于学生成绩管理系统 以及点菜系统的文章，大家如果感兴趣，可以点击各自的传送门去看看呀！
diff --git a/docs/src/java-tutorial/in-action/20220307-mysql-mybatis-stu-manag-sys.md b/src/java-tutorial/in-action/project/20220307-mysql-mybatis-stu-manag-sys.md
similarity index 98%
rename from docs/src/java-tutorial/in-action/20220307-mysql-mybatis-stu-manag-sys.md
rename to src/java-tutorial/in-action/project/20220307-mysql-mybatis-stu-manag-sys.md
index 7c4c29ffd2..5bd8b592b1 100644
--- a/docs/src/java-tutorial/in-action/20220307-mysql-mybatis-stu-manag-sys.md
+++ b/src/java-tutorial/in-action/project/20220307-mysql-mybatis-stu-manag-sys.md
@@ -7,22 +7,8 @@ tag:
     - MySQL
 date: 2022-03-07
 ---
-
 # MySQL + MyBatis 版学生管理系统
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 之前写了一篇文章，是关于 `Java SE` 版本的学生成绩管理系统，发现反响还不错。同时也有不少小伙伴通过评论或者私信的方式问过有没有和数据库交互版本的学生成绩管理系统，然后自己也把这件事儿列入了自己的计划。害，都怪自己懒，所以一直拖到了现在。不过终究是逼迫自己完成了，也算是给私信和评论的小伙伴们一个交代吧。
diff --git a/src/java-tutorial/in-action/project/README.md b/src/java-tutorial/in-action/project/README.md
new file mode 100644
index 0000000000..72d3a637e5
--- /dev/null
+++ b/src/java-tutorial/in-action/project/README.md
@@ -0,0 +1,9 @@
+---
+title: 项目实践
+index: false
+icon: iconfont icon-template
+---
+<AutoCatalog />
+
+
+
diff --git a/docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/20210619143254399.png b/src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/20210619143254399.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/20210619143254399.png
rename to src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/20210619143254399.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/4ba351b052ca1ea1abf42eda0f51811e.png b/src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/4ba351b052ca1ea1abf42eda0f51811e.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/4ba351b052ca1ea1abf42eda0f51811e.png
rename to src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/4ba351b052ca1ea1abf42eda0f51811e.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/4dc976ae64d0adcfc74643dd228c2972.png b/src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/4dc976ae64d0adcfc74643dd228c2972.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/4dc976ae64d0adcfc74643dd228c2972.png
rename to src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/4dc976ae64d0adcfc74643dd228c2972.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/6e6f850a07b165e07cdd3301de62ec03.png b/src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/6e6f850a07b165e07cdd3301de62ec03.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/6e6f850a07b165e07cdd3301de62ec03.png
rename to src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/6e6f850a07b165e07cdd3301de62ec03.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/776112ffa9b118db618a91e11030ce7f.png b/src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/776112ffa9b118db618a91e11030ce7f.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/776112ffa9b118db618a91e11030ce7f.png
rename to src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/776112ffa9b118db618a91e11030ce7f.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/8df8f15688e8e60a2f37408e5e1b991e.png b/src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/8df8f15688e8e60a2f37408e5e1b991e.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/8df8f15688e8e60a2f37408e5e1b991e.png
rename to src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/8df8f15688e8e60a2f37408e5e1b991e.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/93a7e09af9d90a599bdb79b5de7c7c63.png b/src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/93a7e09af9d90a599bdb79b5de7c7c63.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/93a7e09af9d90a599bdb79b5de7c7c63.png
rename to src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/93a7e09af9d90a599bdb79b5de7c7c63.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/b079f26a81bdb5bb01132dff8c11cd72.png b/src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/b079f26a81bdb5bb01132dff8c11cd72.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/b079f26a81bdb5bb01132dff8c11cd72.png
rename to src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/b079f26a81bdb5bb01132dff8c11cd72.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/ba9ba8e22d47559ff28a711ffeb7fdf6.png b/src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/ba9ba8e22d47559ff28a711ffeb7fdf6.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/ba9ba8e22d47559ff28a711ffeb7fdf6.png
rename to src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/ba9ba8e22d47559ff28a711ffeb7fdf6.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/ee773f66ab26c72d1e055c2a34726b80.png b/src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/ee773f66ab26c72d1e055c2a34726b80.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/ee773f66ab26c72d1e055c2a34726b80.png
rename to src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/ee773f66ab26c72d1e055c2a34726b80.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/f9b068d8d724f20ca54af69b5048245f.png b/src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/f9b068d8d724f20ca54af69b5048245f.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210405-stu-manage-sys/f9b068d8d724f20ca54af69b5048245f.png
rename to src/java-tutorial/in-action/project/assets/20210405-stu-manage-sys/f9b068d8d724f20ca54af69b5048245f.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210731-order-system/2a6587a091352f84ee9bee91f231e358.png b/src/java-tutorial/in-action/project/assets/20210731-order-system/2a6587a091352f84ee9bee91f231e358.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210731-order-system/2a6587a091352f84ee9bee91f231e358.png
rename to src/java-tutorial/in-action/project/assets/20210731-order-system/2a6587a091352f84ee9bee91f231e358.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210731-order-system/3920cf4fb7dce044dacd8fbda667893a.png b/src/java-tutorial/in-action/project/assets/20210731-order-system/3920cf4fb7dce044dacd8fbda667893a.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210731-order-system/3920cf4fb7dce044dacd8fbda667893a.png
rename to src/java-tutorial/in-action/project/assets/20210731-order-system/3920cf4fb7dce044dacd8fbda667893a.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210731-order-system/461135e530a1998d39b97c6ea21fb828.png b/src/java-tutorial/in-action/project/assets/20210731-order-system/461135e530a1998d39b97c6ea21fb828.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210731-order-system/461135e530a1998d39b97c6ea21fb828.png
rename to src/java-tutorial/in-action/project/assets/20210731-order-system/461135e530a1998d39b97c6ea21fb828.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210731-order-system/511b4859bf7090ad102e4ca314fce063.png b/src/java-tutorial/in-action/project/assets/20210731-order-system/511b4859bf7090ad102e4ca314fce063.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210731-order-system/511b4859bf7090ad102e4ca314fce063.png
rename to src/java-tutorial/in-action/project/assets/20210731-order-system/511b4859bf7090ad102e4ca314fce063.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210731-order-system/5b1601079f666eb8a9942aeb022d3433.png b/src/java-tutorial/in-action/project/assets/20210731-order-system/5b1601079f666eb8a9942aeb022d3433.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210731-order-system/5b1601079f666eb8a9942aeb022d3433.png
rename to src/java-tutorial/in-action/project/assets/20210731-order-system/5b1601079f666eb8a9942aeb022d3433.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210731-order-system/80ec3f6b7cf0500b16627ea11e9e485b.png b/src/java-tutorial/in-action/project/assets/20210731-order-system/80ec3f6b7cf0500b16627ea11e9e485b.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210731-order-system/80ec3f6b7cf0500b16627ea11e9e485b.png
rename to src/java-tutorial/in-action/project/assets/20210731-order-system/80ec3f6b7cf0500b16627ea11e9e485b.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210731-order-system/93034e596810610a1ac84d40ff919ca0.png b/src/java-tutorial/in-action/project/assets/20210731-order-system/93034e596810610a1ac84d40ff919ca0.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210731-order-system/93034e596810610a1ac84d40ff919ca0.png
rename to src/java-tutorial/in-action/project/assets/20210731-order-system/93034e596810610a1ac84d40ff919ca0.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210731-order-system/9dcd13637a2916aa173c8edbbe937a10.png b/src/java-tutorial/in-action/project/assets/20210731-order-system/9dcd13637a2916aa173c8edbbe937a10.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210731-order-system/9dcd13637a2916aa173c8edbbe937a10.png
rename to src/java-tutorial/in-action/project/assets/20210731-order-system/9dcd13637a2916aa173c8edbbe937a10.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210731-order-system/c70e4fe4d20d9450e15c7c770bbb16db.png b/src/java-tutorial/in-action/project/assets/20210731-order-system/c70e4fe4d20d9450e15c7c770bbb16db.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210731-order-system/c70e4fe4d20d9450e15c7c770bbb16db.png
rename to src/java-tutorial/in-action/project/assets/20210731-order-system/c70e4fe4d20d9450e15c7c770bbb16db.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210731-order-system/d30bc01021a930cb08f78b42e85377d8.png b/src/java-tutorial/in-action/project/assets/20210731-order-system/d30bc01021a930cb08f78b42e85377d8.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210731-order-system/d30bc01021a930cb08f78b42e85377d8.png
rename to src/java-tutorial/in-action/project/assets/20210731-order-system/d30bc01021a930cb08f78b42e85377d8.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210731-order-system/df9117133f0025e395d1b7068dc6bcc9.png b/src/java-tutorial/in-action/project/assets/20210731-order-system/df9117133f0025e395d1b7068dc6bcc9.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210731-order-system/df9117133f0025e395d1b7068dc6bcc9.png
rename to src/java-tutorial/in-action/project/assets/20210731-order-system/df9117133f0025e395d1b7068dc6bcc9.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210801-tally-book/0020e6d96811c6f926238e495150aad1.png b/src/java-tutorial/in-action/project/assets/20210801-tally-book/0020e6d96811c6f926238e495150aad1.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210801-tally-book/0020e6d96811c6f926238e495150aad1.png
rename to src/java-tutorial/in-action/project/assets/20210801-tally-book/0020e6d96811c6f926238e495150aad1.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210801-tally-book/03485337d0f4f516f8b0dcba7b574ced.png b/src/java-tutorial/in-action/project/assets/20210801-tally-book/03485337d0f4f516f8b0dcba7b574ced.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210801-tally-book/03485337d0f4f516f8b0dcba7b574ced.png
rename to src/java-tutorial/in-action/project/assets/20210801-tally-book/03485337d0f4f516f8b0dcba7b574ced.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210801-tally-book/29f8a1a7605083b7b60c9497a3b938af.png b/src/java-tutorial/in-action/project/assets/20210801-tally-book/29f8a1a7605083b7b60c9497a3b938af.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210801-tally-book/29f8a1a7605083b7b60c9497a3b938af.png
rename to src/java-tutorial/in-action/project/assets/20210801-tally-book/29f8a1a7605083b7b60c9497a3b938af.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210801-tally-book/34453701d40280697117d461317afe0b.png b/src/java-tutorial/in-action/project/assets/20210801-tally-book/34453701d40280697117d461317afe0b.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210801-tally-book/34453701d40280697117d461317afe0b.png
rename to src/java-tutorial/in-action/project/assets/20210801-tally-book/34453701d40280697117d461317afe0b.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210801-tally-book/5f77a59d93b0d54dab9a4129588afc52.png b/src/java-tutorial/in-action/project/assets/20210801-tally-book/5f77a59d93b0d54dab9a4129588afc52.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210801-tally-book/5f77a59d93b0d54dab9a4129588afc52.png
rename to src/java-tutorial/in-action/project/assets/20210801-tally-book/5f77a59d93b0d54dab9a4129588afc52.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210801-tally-book/75bc456588eb41341aba166d9a1e7bf6.png b/src/java-tutorial/in-action/project/assets/20210801-tally-book/75bc456588eb41341aba166d9a1e7bf6.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210801-tally-book/75bc456588eb41341aba166d9a1e7bf6.png
rename to src/java-tutorial/in-action/project/assets/20210801-tally-book/75bc456588eb41341aba166d9a1e7bf6.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210801-tally-book/7aa75a1e5bd3f68f1a4488f42282818a.png b/src/java-tutorial/in-action/project/assets/20210801-tally-book/7aa75a1e5bd3f68f1a4488f42282818a.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210801-tally-book/7aa75a1e5bd3f68f1a4488f42282818a.png
rename to src/java-tutorial/in-action/project/assets/20210801-tally-book/7aa75a1e5bd3f68f1a4488f42282818a.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210801-tally-book/a0536e540a393d2b5525bd4b34c9dfe5.png b/src/java-tutorial/in-action/project/assets/20210801-tally-book/a0536e540a393d2b5525bd4b34c9dfe5.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210801-tally-book/a0536e540a393d2b5525bd4b34c9dfe5.png
rename to src/java-tutorial/in-action/project/assets/20210801-tally-book/a0536e540a393d2b5525bd4b34c9dfe5.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210801-tally-book/a57c476ad4a8a9bce41a827d11b15ce7.png b/src/java-tutorial/in-action/project/assets/20210801-tally-book/a57c476ad4a8a9bce41a827d11b15ce7.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210801-tally-book/a57c476ad4a8a9bce41a827d11b15ce7.png
rename to src/java-tutorial/in-action/project/assets/20210801-tally-book/a57c476ad4a8a9bce41a827d11b15ce7.png
diff --git a/docs/src/java-tutorial/in-action/assets/20210801-tally-book/e5bdbd1b671ae5659cebc44821fc6267.png b/src/java-tutorial/in-action/project/assets/20210801-tally-book/e5bdbd1b671ae5659cebc44821fc6267.png
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20210801-tally-book/e5bdbd1b671ae5659cebc44821fc6267.png
rename to src/java-tutorial/in-action/project/assets/20210801-tally-book/e5bdbd1b671ae5659cebc44821fc6267.png
diff --git a/docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/006240c16cf959ab0a65f85e0220cabe.gif b/src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/006240c16cf959ab0a65f85e0220cabe.gif
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/006240c16cf959ab0a65f85e0220cabe.gif
rename to src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/006240c16cf959ab0a65f85e0220cabe.gif
diff --git a/docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/5cc1b56f3bf51c61d8eb105f251a3f1c.webp b/src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/5cc1b56f3bf51c61d8eb105f251a3f1c.webp
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/5cc1b56f3bf51c61d8eb105f251a3f1c.webp
rename to src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/5cc1b56f3bf51c61d8eb105f251a3f1c.webp
diff --git a/docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/61fa66e619999c83c1cf4a2b607085c1.gif b/src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/61fa66e619999c83c1cf4a2b607085c1.gif
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/61fa66e619999c83c1cf4a2b607085c1.gif
rename to src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/61fa66e619999c83c1cf4a2b607085c1.gif
diff --git a/docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/65f58e6e27e551770c851159792af790.webp b/src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/65f58e6e27e551770c851159792af790.webp
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/65f58e6e27e551770c851159792af790.webp
rename to src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/65f58e6e27e551770c851159792af790.webp
diff --git a/docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/7db05f589ccb5b95b1503db0424004b5.gif b/src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/7db05f589ccb5b95b1503db0424004b5.gif
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/7db05f589ccb5b95b1503db0424004b5.gif
rename to src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/7db05f589ccb5b95b1503db0424004b5.gif
diff --git a/docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/8147c951a74694471145a4aacbf376d4.webp b/src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/8147c951a74694471145a4aacbf376d4.webp
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/8147c951a74694471145a4aacbf376d4.webp
rename to src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/8147c951a74694471145a4aacbf376d4.webp
diff --git a/docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/a05630543fdce0d842a9aa5cb3700bf3.gif b/src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/a05630543fdce0d842a9aa5cb3700bf3.gif
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/a05630543fdce0d842a9aa5cb3700bf3.gif
rename to src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/a05630543fdce0d842a9aa5cb3700bf3.gif
diff --git a/docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/ac9e88ea870cb767ad3c2a6bf1524a92.webp b/src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/ac9e88ea870cb767ad3c2a6bf1524a92.webp
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/ac9e88ea870cb767ad3c2a6bf1524a92.webp
rename to src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/ac9e88ea870cb767ad3c2a6bf1524a92.webp
diff --git a/docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/bfe4154dd6118b550917ddb901f47dd8.webp b/src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/bfe4154dd6118b550917ddb901f47dd8.webp
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/bfe4154dd6118b550917ddb901f47dd8.webp
rename to src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/bfe4154dd6118b550917ddb901f47dd8.webp
diff --git a/docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/df5ca4c3b5b8bdfc89b48dfe2eae0025.gif b/src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/df5ca4c3b5b8bdfc89b48dfe2eae0025.gif
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/df5ca4c3b5b8bdfc89b48dfe2eae0025.gif
rename to src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/df5ca4c3b5b8bdfc89b48dfe2eae0025.gif
diff --git a/docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/f6a711f9e5a4c1b69b9b489b03e3200a.webp b/src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/f6a711f9e5a4c1b69b9b489b03e3200a.webp
similarity index 100%
rename from docs/src/java-tutorial/in-action/assets/20220307-mysql-mybatis-stu-manag-sys/f6a711f9e5a4c1b69b9b489b03e3200a.webp
rename to src/java-tutorial/in-action/project/assets/20220307-mysql-mybatis-stu-manag-sys/f6a711f9e5a4c1b69b9b489b03e3200a.webp
diff --git a/docs/src/java-tutorial/in-action/20220625-1-5.md b/src/java-tutorial/in-action/se/20220625-1-5.md
similarity index 87%
rename from docs/src/java-tutorial/in-action/20220625-1-5.md
rename to src/java-tutorial/in-action/se/20220625-1-5.md
index 33966ecbb7..b15c2d0760 100644
--- a/docs/src/java-tutorial/in-action/20220625-1-5.md
+++ b/src/java-tutorial/in-action/se/20220625-1-5.md
@@ -8,23 +8,11 @@ date: 2022-06-25
 
 # Java 入门练习：1 - 5
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-
-## Java1 类型转换
+## JAVA1 类型转换
 
 ### 描述
 
@@ -87,7 +75,7 @@ public class Main {
 }
 ```
 
-## Java2 简单运算
+## JAVA2 简单运算
 
 ### 描述
 
@@ -140,7 +128,7 @@ public class Main {
 }
 ```
 
-## Java3 四舍五入
+## JAVA3 四舍五入
 
 ### 描述
 
@@ -188,7 +176,7 @@ public class Main {
 }
 ```
 
-## Java4 交换变量值
+## JAVA4 交换变量值
 
 ### 描述
 
@@ -237,7 +225,7 @@ public class Main {
 }
 ```
 
-## Java5 计算商场折扣
+## JAVA5 计算商场折扣
 
 ### 描述
 
@@ -312,7 +300,7 @@ public class Main {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/java-tutorial/in-action/20220626-6-10.md b/src/java-tutorial/in-action/se/20220626-6-10.md
similarity index 89%
rename from docs/src/java-tutorial/in-action/20220626-6-10.md
rename to src/java-tutorial/in-action/se/20220626-6-10.md
index a06b584836..b934ddf1dd 100644
--- a/docs/src/java-tutorial/in-action/20220626-6-10.md
+++ b/src/java-tutorial/in-action/se/20220626-6-10.md
@@ -8,24 +8,11 @@ date: 2022-06-26
 
 # Java 入门练习：6 - 10
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-
-## Java6 判断体重指数
+## JAVA6 判断体重指数
 
 ### 描述
 
@@ -123,7 +110,7 @@ public class Main {
 }
 ```
 
-## Java7 判断学生成绩等级
+## JAVA7 判断学生成绩等级
 
 ### 描述
 
@@ -239,7 +226,7 @@ public class Main {
 }
 ```
 
-## Java8 邮箱验证
+## JAVA8 邮箱验证
 
 ### 描述
 
@@ -304,7 +291,7 @@ public class Main {
 }
 ```
 
-## Java9 数列求和
+## JAVA9 数列求和
 
 ### 描述
 
@@ -336,7 +323,7 @@ public class Main {
 }
 ```
 
-## Java10 统计输入正数个数
+## JAVA10 统计输入正数个数
 
 ### 描述
 
@@ -390,7 +377,7 @@ public class Main {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/java-tutorial/in-action/20220627-11-15.md b/src/java-tutorial/in-action/se/20220627-11-15.md
similarity index 89%
rename from docs/src/java-tutorial/in-action/20220627-11-15.md
rename to src/java-tutorial/in-action/se/20220627-11-15.md
index 30110f5420..aca4267683 100644
--- a/docs/src/java-tutorial/in-action/20220627-11-15.md
+++ b/src/java-tutorial/in-action/se/20220627-11-15.md
@@ -8,23 +8,11 @@ date: 2022-06-27
 
 # Java 入门练习：11 - 15
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-
-## Java11 求最小公倍数
+## JAVA11 求最小公倍数
 
 ### 描述
 
@@ -80,7 +68,7 @@ public class Main {
 }
 ```
 
-## Java12 小球走过路程计算
+## JAVA12 小球走过路程计算
 
 ### 描述
 
@@ -143,7 +131,7 @@ public class Main {
 }
 ```
 
-## Java13 求平均数
+## JAVA13 求平均数
 
 ### 描述
 
@@ -202,7 +190,7 @@ public class Main {
 }
 ```
 
-## Java14 判断质数
+## JAVA14 判断质数
 
 ### 描述
 
@@ -271,7 +259,7 @@ public class Main {
 }
 ```
 
-## Java15 计算整数位数
+## JAVA15 计算整数位数
 
 ### 描述
 
@@ -354,7 +342,7 @@ public class Main {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/java-tutorial/in-action/20220628-16-20.md b/src/java-tutorial/in-action/se/20220628-16-20.md
similarity index 89%
rename from docs/src/java-tutorial/in-action/20220628-16-20.md
rename to src/java-tutorial/in-action/se/20220628-16-20.md
index 74a5a001f6..cc6d9d19cc 100644
--- a/docs/src/java-tutorial/in-action/20220628-16-20.md
+++ b/src/java-tutorial/in-action/se/20220628-16-20.md
@@ -8,23 +8,11 @@ date: 2022-06-28
 
 # Java 入门练习：16 - 20
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-
-## Java16 数组遍历
+## JAVA16 数组遍历
 
 ### 描述
 
@@ -92,7 +80,7 @@ public class Main {
 }
 ```
 
-## Java17 数组倒转
+## JAVA17 数组倒转
 
 ### 描述
 
@@ -153,7 +141,7 @@ public class Main {
 }
 ```
 
-## Java18 二维数组求和
+## JAVA18 二维数组求和
 
 ### 描述
 
@@ -207,7 +195,7 @@ public class Main {
 }
 ```
 
-## Java19 修改 Data 类的定义
+## JAVA19 修改 Data 类的定义
 
 ### 描述
 
@@ -277,7 +265,7 @@ class Data {
 }
 ```
 
-## Java20 验证年龄
+## JAVA20 验证年龄
 
 ### 描述
 
@@ -385,7 +373,7 @@ class Person {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/java-tutorial/in-action/20220629-21-25.md b/src/java-tutorial/in-action/se/20220629-21-25.md
similarity index 91%
rename from docs/src/java-tutorial/in-action/20220629-21-25.md
rename to src/java-tutorial/in-action/se/20220629-21-25.md
index bebc9c91ee..7092a8c631 100644
--- a/docs/src/java-tutorial/in-action/20220629-21-25.md
+++ b/src/java-tutorial/in-action/se/20220629-21-25.md
@@ -8,23 +8,11 @@ date: 2022-06-29
 
 # Java 入门练习：21 - 25
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-
-## Java21 补全构造方法
+## JAVA21 补全构造方法
 
 ### 描述
 
@@ -110,7 +98,7 @@ class Sub extends Base {
 }
 ```
 
-## Java22 重写计算逻辑
+## JAVA22 重写计算逻辑
 
 ### 描述
 
@@ -217,7 +205,7 @@ class Sub extends Base {
 ```
 
 
-## Java23 定义打印方法
+## JAVA23 定义打印方法
 ### 描述
 
 已知有三个类：First、Second、Third。要求定义一个打印方法，支持传入任意引用类型的参数（包括上述三个类），并在方法内部打印出对象的字符串形式。
@@ -284,7 +272,7 @@ class Third {
     }
 }
 ```
-## Java24 类型判断
+## JAVA24 类型判断
 
 ### 描述
 
@@ -395,7 +383,7 @@ class Sub2 extends Base {
 
 }
 ```
-## Java25 实现抽象方法
+## JAVA25 实现抽象方法
 
 ### 描述
 
@@ -509,7 +497,7 @@ class Sub extends Base {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/java-tutorial/in-action/20220630-26-30.md b/src/java-tutorial/in-action/se/20220630-26-30.md
similarity index 89%
rename from docs/src/java-tutorial/in-action/20220630-26-30.md
rename to src/java-tutorial/in-action/se/20220630-26-30.md
index 22403f0e97..87a0d1a6a3 100644
--- a/docs/src/java-tutorial/in-action/20220630-26-30.md
+++ b/src/java-tutorial/in-action/se/20220630-26-30.md
@@ -8,23 +8,11 @@ date: 2022-06-30
 
 # Java 入门练习：26 - 30
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-
-## Java26 实现接口
+## JAVA26 实现接口
 
 ### 描述
 
@@ -92,7 +80,7 @@ class ComparatorImpl implements Comparator {
 }
 ```
 
-## Java27 重写父类方法
+## JAVA27 重写父类方法
 
 ### 描述
 
@@ -177,7 +165,7 @@ class Sub extends Base {
 }
 ```
 
-## Java28 创建单例对象
+## JAVA28 创建单例对象
 
 ### 描述
 
@@ -225,7 +213,7 @@ class Singleton {
 }
 ```
 
-## Java29 动态字符串
+## JAVA29 动态字符串
 
 ### 描述
 
@@ -276,7 +264,7 @@ public class Main {
 
 
 
-## Java30 统计字符串中字母出现次数
+## JAVA30 统计字符串中字母出现次数
 
 ### 描述
 
@@ -353,7 +341,7 @@ public class Main {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/java-tutorial/in-action/20220701-31-35.md b/src/java-tutorial/in-action/se/20220701-31-35.md
similarity index 88%
rename from docs/src/java-tutorial/in-action/20220701-31-35.md
rename to src/java-tutorial/in-action/se/20220701-31-35.md
index ae39a781f7..182467ba51 100644
--- a/docs/src/java-tutorial/in-action/20220701-31-35.md
+++ b/src/java-tutorial/in-action/se/20220701-31-35.md
@@ -8,22 +8,10 @@ date: 2022-07-01
 
 # Java 入门练习：31 - 35
 
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## Java31 十进制数转二进制数
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+## JAVA31 十进制数转二进制数
 
 ### 描述
 
@@ -68,7 +56,7 @@ public class Main {
 }
 ```
 
-## Java32 掷骰子游戏
+## JAVA32 掷骰子游戏
 
 ### 描述
 
@@ -120,7 +108,7 @@ public class Main {
 }
 ```
 
-## Java33 求绝对值，平方根，对数，正弦值
+## JAVA33 求绝对值，平方根，对数，正弦值
 
 ### 描述
 
@@ -172,7 +160,7 @@ public class Main {
 }
 ```
 
-## Java34 输出某一年的各个月份的天数
+## JAVA34 输出某一年的各个月份的天数
 
 ### 描述
 
@@ -250,7 +238,7 @@ public class Main {
 }
 ```
 
-## Java35 日期换算
+## JAVA35 日期换算
 
 ### 描述
 
@@ -335,7 +323,7 @@ public class Main {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/java-tutorial/in-action/20220702-36-40.md b/src/java-tutorial/in-action/se/20220702-36-40.md
similarity index 90%
rename from docs/src/java-tutorial/in-action/20220702-36-40.md
rename to src/java-tutorial/in-action/se/20220702-36-40.md
index 497abd2b0b..6f2df3b22b 100644
--- a/docs/src/java-tutorial/in-action/20220702-36-40.md
+++ b/src/java-tutorial/in-action/se/20220702-36-40.md
@@ -8,23 +8,11 @@ date: 2022-07-02
 
 # Java 入门练习：36 - 40
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-
-## Java36 判断学生成绩
+## JAVA36 判断学生成绩
 
 ### 描述
 
@@ -99,7 +87,7 @@ class ScoreException extends Exception {
 }
 ```
 
-## Java37 字符串去重
+## JAVA37 字符串去重
 
 ### 描述
 
@@ -155,7 +143,7 @@ public class Main {
 }
 ```
 
-## Java38 集合遍历
+## JAVA38 集合遍历
 
 ### 描述
 
@@ -233,7 +221,7 @@ public class Main {
 }
 ```
 
-## Java39 排队系统
+## JAVA39 排队系统
 
 ### 描述
 
@@ -285,7 +273,7 @@ class Guest {
 }
 ```
 
-## Java40 首尾交替出队
+## JAVA40 首尾交替出队
 
 ### 描述
 
@@ -354,7 +342,7 @@ public class Main {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/src/java-tutorial/in-action/se/README.md b/src/java-tutorial/in-action/se/README.md
new file mode 100644
index 0000000000..0ddb763fd0
--- /dev/null
+++ b/src/java-tutorial/in-action/se/README.md
@@ -0,0 +1,6 @@
+---
+title: Java 入门
+index: false
+icon: fa-solid fa-dumbbell
+---
+<AutoCatalog />
diff --git a/docs/src/java-tutorial/javase/20200521-servlet.md b/src/java-tutorial/javase/20200521-servlet.md
similarity index 97%
rename from docs/src/java-tutorial/javase/20200521-servlet.md
rename to src/java-tutorial/javase/20200521-servlet.md
index 54c10c99d7..b08c1fbc1f 100644
--- a/docs/src/java-tutorial/javase/20200521-servlet.md
+++ b/src/java-tutorial/javase/20200521-servlet.md
@@ -8,19 +8,6 @@ tag: Java
 
 # Servlet 详细教程
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 1. Servlet 程序
 
 ### 1.1 什么是 Servlet
diff --git a/docs/src/java-tutorial/javase/20220701-intro-to-java.md b/src/java-tutorial/javase/20220701-intro-to-java.md
similarity index 92%
rename from docs/src/java-tutorial/javase/20220701-intro-to-java.md
rename to src/java-tutorial/javase/20220701-intro-to-java.md
index 52549e2616..639da35304 100644
--- a/docs/src/java-tutorial/javase/20220701-intro-to-java.md
+++ b/src/java-tutorial/javase/20220701-intro-to-java.md
@@ -7,25 +7,14 @@ tag: Java
 ---
 # Java 入门简介
 
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 ::: tip 原文
 https://mp.weixin.qq.com/s/aGz8CBOK5mW8xjAlstlMQw
 
 :::
 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 一、前言
 
 既然要学习一门技术，那么就先来了解下它的历史，我们为什么要使用它，以及我们能用它来干啥。
@@ -140,6 +129,6 @@ Java Micro Edition，即 Java 小型版。主要是 Java 针对移动设备应
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220702-jdk-install-and-hello-world.md b/src/java-tutorial/javase/20220702-jdk-install-and-hello-world.md
similarity index 93%
rename from docs/src/java-tutorial/javase/20220702-jdk-install-and-hello-world.md
rename to src/java-tutorial/javase/20220702-jdk-install-and-hello-world.md
index 2c456a3284..70a94d66fe 100644
--- a/docs/src/java-tutorial/javase/20220702-jdk-install-and-hello-world.md
+++ b/src/java-tutorial/javase/20220702-jdk-install-and-hello-world.md
@@ -7,22 +7,13 @@ tag: [Java,JDK]
 ---
 # JDK 安装及入门实例
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/geOWlAwVMhtmmIMvFvjSpQ
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/geOWlAwVMhtmmIMvFvjSpQ
-
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::
 
 ## 一、前言
 
@@ -246,6 +237,6 @@ public class Main{
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220703-learn-java-with-idea.md b/src/java-tutorial/javase/20220703-learn-java-with-idea.md
similarity index 93%
rename from docs/src/java-tutorial/javase/20220703-learn-java-with-idea.md
rename to src/java-tutorial/javase/20220703-learn-java-with-idea.md
index a2ca485755..9855b01ceb 100644
--- a/docs/src/java-tutorial/javase/20220703-learn-java-with-idea.md
+++ b/src/java-tutorial/javase/20220703-learn-java-with-idea.md
@@ -9,26 +9,14 @@ tag:
 ---
 # 利用 IDEA 进行 Java 开发
 
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ::: tip 原文
 https://mp.weixin.qq.com/s/Pkf1WTj-x6JH4Jo8mOr8SQ
 :::
 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 一、前言
 
 上一篇中，我们讲了 [如何搭建 Java 开发环境](https://mp.weixin.qq.com/s/geOWlAwVMhtmmIMvFvjSpQ)。不过既然确定了要从事 Java 开发，那怎么能少得了一个趁手的 IDE 呢。正所谓工欲善其事。必先利其器，一个趁手的 IDE 就像电视剧里的神兵利器，能让我们功力大增，大大提高我们的效率。
@@ -200,6 +188,6 @@ Hello World!
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220704-variable-and-datatype.md b/src/java-tutorial/javase/20220704-variable-and-datatype.md
similarity index 96%
rename from docs/src/java-tutorial/javase/20220704-variable-and-datatype.md
rename to src/java-tutorial/javase/20220704-variable-and-datatype.md
index 7fd35fb434..d41b2c4c7f 100644
--- a/docs/src/java-tutorial/javase/20220704-variable-and-datatype.md
+++ b/src/java-tutorial/javase/20220704-variable-and-datatype.md
@@ -8,22 +8,16 @@ tag:
 ---
 # 变量与数据类型
 
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/Yz41IdWSNTgqgj0R-Ffgqw
+:::tip
 
 
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+原文：https://mp.weixin.qq.com/s/Yz41IdWSNTgqgj0R-Ffgqw
 
+:::
 
 ## 前情回顾
 
@@ -528,6 +522,6 @@ PS：`final` 修饰变量后，该变量则变为常量。而 `final` 也还可
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
diff --git a/docs/src/java-tutorial/javase/20220705-binary-convert.md b/src/java-tutorial/javase/20220705-binary-convert.md
similarity index 89%
rename from docs/src/java-tutorial/javase/20220705-binary-convert.md
rename to src/java-tutorial/javase/20220705-binary-convert.md
index 7b1b65ff66..7c2236e7a5 100644
--- a/docs/src/java-tutorial/javase/20220705-binary-convert.md
+++ b/src/java-tutorial/javase/20220705-binary-convert.md
@@ -8,22 +8,13 @@ tag:
 ---
 # 常用进制转换
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/2f_dODoVco-tSS66lF0U5A
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/2f_dODoVco-tSS66lF0U5A
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
+:::
 
 ## 前言
 
@@ -126,6 +117,6 @@ public class Main {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220706-operator.md b/src/java-tutorial/javase/20220706-operator.md
similarity index 95%
rename from docs/src/java-tutorial/javase/20220706-operator.md
rename to src/java-tutorial/javase/20220706-operator.md
index daceb1b9df..cfd3b95b41 100644
--- a/docs/src/java-tutorial/javase/20220706-operator.md
+++ b/src/java-tutorial/javase/20220706-operator.md
@@ -9,20 +9,12 @@ tag:
 # 操作符
 
 
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/49KRDz8bpcGdPlU15OJD0g
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/49KRDz8bpcGdPlU15OJD0g
+:::
 
 ## 前言
 
@@ -412,6 +404,6 @@ public class Main {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220707-control-process.md b/src/java-tutorial/javase/20220707-control-process.md
similarity index 96%
rename from docs/src/java-tutorial/javase/20220707-control-process.md
rename to src/java-tutorial/javase/20220707-control-process.md
index 93f583a6c3..85254c33d0 100644
--- a/docs/src/java-tutorial/javase/20220707-control-process.md
+++ b/src/java-tutorial/javase/20220707-control-process.md
@@ -8,22 +8,13 @@ tag:
 ---
 # 流程控制
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/3WU5l37DpPkR6o7CnFiStA
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/3WU5l37DpPkR6o7CnFiStA
-
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::
 
 ## 前言
 
@@ -650,6 +641,6 @@ public class Main {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220708-how-to-operate-array.md b/src/java-tutorial/javase/20220708-how-to-operate-array.md
similarity index 94%
rename from docs/src/java-tutorial/javase/20220708-how-to-operate-array.md
rename to src/java-tutorial/javase/20220708-how-to-operate-array.md
index 78447e535f..f3e6dc38bb 100644
--- a/docs/src/java-tutorial/javase/20220708-how-to-operate-array.md
+++ b/src/java-tutorial/javase/20220708-how-to-operate-array.md
@@ -10,20 +10,12 @@ tag:
 # 数组操作的奇技淫巧
 
 
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-> 原文：https://mp.weixin.qq.com/s/2Ff14d3cwjVflhtz67k3vQ
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/2Ff14d3cwjVflhtz67k3vQ
+:::
 
 ## 前言
 
@@ -384,6 +376,6 @@ public class CommonMethodsTest {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220709-oop-1.md b/src/java-tutorial/javase/20220709-oop-1.md
similarity index 91%
rename from docs/src/java-tutorial/javase/20220709-oop-1.md
rename to src/java-tutorial/javase/20220709-oop-1.md
index 746dd0bafb..bf376c3890 100644
--- a/docs/src/java-tutorial/javase/20220709-oop-1.md
+++ b/src/java-tutorial/javase/20220709-oop-1.md
@@ -9,20 +9,13 @@ tag:
 # 面向对象的 3、5 知识点
 
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/Z4F7tsjLkPbTGy4_gJPQTw
-
-
-## 🎈 号外
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/Z4F7tsjLkPbTGy4_gJPQTw
 
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::
 
 ## 前言
 
@@ -174,6 +167,6 @@ Hero shooter = new Shooter();
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220710-oop-2.md b/src/java-tutorial/javase/20220710-oop-2.md
similarity index 95%
rename from docs/src/java-tutorial/javase/20220710-oop-2.md
rename to src/java-tutorial/javase/20220710-oop-2.md
index 6b63b02aa4..70ab976ee9 100644
--- a/docs/src/java-tutorial/javase/20220710-oop-2.md
+++ b/src/java-tutorial/javase/20220710-oop-2.md
@@ -9,19 +9,13 @@ tag:
 
 # 类的相关知识
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/1BPFnyNuC3fdYBVxP7J3VA
-
-## 🎈 号外
 
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/1BPFnyNuC3fdYBVxP7J3VA
+:::
 
 ## 前言
 
@@ -436,6 +430,6 @@ String str3 = str1;
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220711-oop-3.md b/src/java-tutorial/javase/20220711-oop-3.md
similarity index 94%
rename from docs/src/java-tutorial/javase/20220711-oop-3.md
rename to src/java-tutorial/javase/20220711-oop-3.md
index 2953372f5d..626f62ae88 100644
--- a/docs/src/java-tutorial/javase/20220711-oop-3.md
+++ b/src/java-tutorial/javase/20220711-oop-3.md
@@ -8,20 +8,14 @@ tag:
 ---
 # 包和 jar 文件的创建
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/l4O4bhDMgHamQ5DVPcqUYA
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/l4O4bhDMgHamQ5DVPcqUYA
 
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::
 
 ## 前言
 
@@ -331,6 +325,6 @@ Main-Class: HelloWorld
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220712-all-kinds-of-variable.md b/src/java-tutorial/javase/20220712-all-kinds-of-variable.md
similarity index 87%
rename from docs/src/java-tutorial/javase/20220712-all-kinds-of-variable.md
rename to src/java-tutorial/javase/20220712-all-kinds-of-variable.md
index df49403d78..5ba606253e 100644
--- a/docs/src/java-tutorial/javase/20220712-all-kinds-of-variable.md
+++ b/src/java-tutorial/javase/20220712-all-kinds-of-variable.md
@@ -8,19 +8,11 @@ tag:
 ---
 # 成员变量、实例变量、静态变量、局部变量
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 
-
-## 🎈 号外
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
 
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
 
 ## 前言
 
@@ -128,6 +120,6 @@ public class Demo {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220713-string.md b/src/java-tutorial/javase/20220713-string.md
similarity index 94%
rename from docs/src/java-tutorial/javase/20220713-string.md
rename to src/java-tutorial/javase/20220713-string.md
index b149b9c7d0..422f8a3e83 100644
--- a/docs/src/java-tutorial/javase/20220713-string.md
+++ b/src/java-tutorial/javase/20220713-string.md
@@ -9,20 +9,9 @@ tag:
 ---
 # String 详解
 
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 概述
 
@@ -376,6 +365,6 @@ public class StringJoinerMethodTest {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220714-arraylist.md b/src/java-tutorial/javase/20220714-arraylist.md
similarity index 88%
rename from docs/src/java-tutorial/javase/20220714-arraylist.md
rename to src/java-tutorial/javase/20220714-arraylist.md
index 3f0f3a14d7..bc133b8b40 100644
--- a/docs/src/java-tutorial/javase/20220714-arraylist.md
+++ b/src/java-tutorial/javase/20220714-arraylist.md
@@ -9,18 +9,9 @@ tag:
 ---
 # ArrayList 详解
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 概述
 
@@ -148,6 +139,6 @@ public class IterTest {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220715-in-out-stream.md b/src/java-tutorial/javase/20220715-in-out-stream.md
similarity index 97%
rename from docs/src/java-tutorial/javase/20220715-in-out-stream.md
rename to src/java-tutorial/javase/20220715-in-out-stream.md
index eb9093c170..106c35ce02 100644
--- a/docs/src/java-tutorial/javase/20220715-in-out-stream.md
+++ b/src/java-tutorial/javase/20220715-in-out-stream.md
@@ -9,19 +9,9 @@ tag:
 
 # 输入输出流
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 前言
 
@@ -590,6 +580,6 @@ public class TestReader {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220716-reflection.md b/src/java-tutorial/javase/20220716-reflection.md
similarity index 97%
rename from docs/src/java-tutorial/javase/20220716-reflection.md
rename to src/java-tutorial/javase/20220716-reflection.md
index c1e192e554..b66aacc9d8 100644
--- a/docs/src/java-tutorial/javase/20220716-reflection.md
+++ b/src/java-tutorial/javase/20220716-reflection.md
@@ -9,20 +9,14 @@ tag:
 ---
 # 反射机制详解
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/f0sJpAhgI6B7oirsJfv9jQ
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/f0sJpAhgI6B7oirsJfv9jQ
 
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::
 
 ## 反射概述
 
@@ -696,6 +690,6 @@ public class ReflectTest {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220717-jdbc-introduction.md b/src/java-tutorial/javase/20220717-jdbc-introduction.md
similarity index 98%
rename from docs/src/java-tutorial/javase/20220717-jdbc-introduction.md
rename to src/java-tutorial/javase/20220717-jdbc-introduction.md
index df72d7fb0c..e4e237c22e 100644
--- a/docs/src/java-tutorial/javase/20220717-jdbc-introduction.md
+++ b/src/java-tutorial/javase/20220717-jdbc-introduction.md
@@ -9,20 +9,12 @@ tag:
 ---
 # JDBC 入门指南
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/DOXFxk5dk9WBfAVK0UJUng
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/DOXFxk5dk9WBfAVK0UJUng
+:::
 
 ## 前言
 
@@ -938,6 +930,6 @@ public class DruidTest {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220718-test-with-junit.md b/src/java-tutorial/javase/20220718-test-with-junit.md
similarity index 94%
rename from docs/src/java-tutorial/javase/20220718-test-with-junit.md
rename to src/java-tutorial/javase/20220718-test-with-junit.md
index 7e03fccf09..1a4bc82bbb 100644
--- a/docs/src/java-tutorial/javase/20220718-test-with-junit.md
+++ b/src/java-tutorial/javase/20220718-test-with-junit.md
@@ -9,20 +9,13 @@ tag:
 ---
 # 是时候拥抱 Junit 单元测试了
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/_FWd0Bj3DlbCReex6pqJKQ
-
-
-## 🎈 号外
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/_FWd0Bj3DlbCReex6pqJKQ
 
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::
 
 ## 何为测试
 
@@ -307,6 +300,6 @@ public class CalcTest {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220719-lombok-install-and-usage.md b/src/java-tutorial/javase/20220719-lombok-install-and-usage.md
similarity index 97%
rename from docs/src/java-tutorial/javase/20220719-lombok-install-and-usage.md
rename to src/java-tutorial/javase/20220719-lombok-install-and-usage.md
index 260992d565..2f338ae514 100644
--- a/docs/src/java-tutorial/javase/20220719-lombok-install-and-usage.md
+++ b/src/java-tutorial/javase/20220719-lombok-install-and-usage.md
@@ -8,20 +8,13 @@ tag:
 ---
 # Lombok 安装及使用指南
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 原文：https://mp.weixin.qq.com/s/t4h5VRfbYqNIRZVlMaqPEg
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/t4h5VRfbYqNIRZVlMaqPEg
 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::
 
 ## 简介
 
@@ -1135,6 +1128,6 @@ public class SneakyThrowsExample implements Runnable {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220720-fastjson2-quickstart.md b/src/java-tutorial/javase/20220720-fastjson2-quickstart.md
similarity index 90%
rename from docs/src/java-tutorial/javase/20220720-fastjson2-quickstart.md
rename to src/java-tutorial/javase/20220720-fastjson2-quickstart.md
index ecc2697a9d..621662b01b 100644
--- a/docs/src/java-tutorial/javase/20220720-fastjson2-quickstart.md
+++ b/src/java-tutorial/javase/20220720-fastjson2-quickstart.md
@@ -9,19 +9,9 @@ tag:
 ---
 # Fastjson V2 简单使用手册
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 前言
 
@@ -161,6 +151,6 @@ public class MainApplication {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220721-annotations.md b/src/java-tutorial/javase/20220721-annotations.md
similarity index 95%
rename from docs/src/java-tutorial/javase/20220721-annotations.md
rename to src/java-tutorial/javase/20220721-annotations.md
index 69cac98987..468852b33e 100644
--- a/docs/src/java-tutorial/javase/20220721-annotations.md
+++ b/src/java-tutorial/javase/20220721-annotations.md
@@ -8,18 +8,9 @@ tag:
 ---
 # 深入浅出 Java 注解
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 注解简介
 
@@ -389,6 +380,6 @@ public @interface AnnoDemo{
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20220722-mockito.md b/src/java-tutorial/javase/20220722-mockito.md
similarity index 93%
rename from docs/src/java-tutorial/javase/20220722-mockito.md
rename to src/java-tutorial/javase/20220722-mockito.md
index 450d585020..5c8c35adcc 100644
--- a/docs/src/java-tutorial/javase/20220722-mockito.md
+++ b/src/java-tutorial/javase/20220722-mockito.md
@@ -8,19 +8,6 @@ tag:
 ---
 # Mockito + JUnit 单元测试实例
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 在日常 Java 开发中，一般都需要进行单元测试，而 `Mock` 测试则是单元测试中的重要方法之一。所谓 `Mock` 测试，就是指在测试过程中，对于一些不容易构造或难以获取的较为复杂的对象，用一个虚拟的对象来代表，从而方便测试的一种测试方法。其中，这个虚拟的对象就叫做 `Mock` 对象，最常见的就是用它来代表 `Servlet` 中 `HttpServletRequest` 对象，`JDBC` 中的 `ResultSet` 对象等。
diff --git a/docs/src/java-tutorial/javase/20221127-loop-in-action.md b/src/java-tutorial/javase/20221127-loop-in-action.md
similarity index 93%
rename from docs/src/java-tutorial/javase/20221127-loop-in-action.md
rename to src/java-tutorial/javase/20221127-loop-in-action.md
index 77fb820db0..ebfdd253b4 100644
--- a/docs/src/java-tutorial/javase/20221127-loop-in-action.md
+++ b/src/java-tutorial/javase/20221127-loop-in-action.md
@@ -9,23 +9,15 @@ tag:
 # 流程控制知识大闯关
 
 
->
-> 不要哀求，学会争取。若是如此，终有所获。
-> 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 ::: tip 原文
 https://mp.weixin.qq.com/s/K4aL8o_ND7R_W0mooNhusw
 
 :::
 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
+---
 
 ## 前言
 
@@ -321,6 +313,6 @@ public class GuessNum {
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20221203-oop-advance.md b/src/java-tutorial/javase/20221203-oop-advance.md
similarity index 90%
rename from docs/src/java-tutorial/javase/20221203-oop-advance.md
rename to src/java-tutorial/javase/20221203-oop-advance.md
index 0481fc35ca..51d26d91fb 100644
--- a/docs/src/java-tutorial/javase/20221203-oop-advance.md
+++ b/src/java-tutorial/javase/20221203-oop-advance.md
@@ -8,19 +8,9 @@ tag:
 ---
 # static 和 final 小课堂
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 前言
 
@@ -210,6 +200,6 @@ class Student extends Person{
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20221211-abstract.md b/src/java-tutorial/javase/20221211-abstract.md
similarity index 94%
rename from docs/src/java-tutorial/javase/20221211-abstract.md
rename to src/java-tutorial/javase/20221211-abstract.md
index ef6954520c..137e403d11 100644
--- a/docs/src/java-tutorial/javase/20221211-abstract.md
+++ b/src/java-tutorial/javase/20221211-abstract.md
@@ -8,19 +8,9 @@ tag:
 ---
 # 抽象、接口和内部类
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-> 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 抽象方法
 
@@ -467,6 +457,6 @@ public class Main{
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/java-tutorial/javase/20230920-cs-hard-soft.md b/src/java-tutorial/javase/20230920-cs-hard-soft.md
new file mode 100644
index 0000000000..c027ca7b5b
--- /dev/null
+++ b/src/java-tutorial/javase/20230920-cs-hard-soft.md
@@ -0,0 +1,33 @@
+---
+isOriginal: true
+index: false
+category: Java 基础系列
+tag:
+    - Java
+    - 计算机
+date: 2023-09-25
+---
+
+# 计算机软硬件
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+
+:::
+
+## 一、计算机组成
+
+
+
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20230921-intro.md b/src/java-tutorial/javase/20230921-intro.md
similarity index 93%
rename from docs/src/java-tutorial/javase/20230921-intro.md
rename to src/java-tutorial/javase/20230921-intro.md
index 86b84cfc8f..3e378930a7 100644
--- a/docs/src/java-tutorial/javase/20230921-intro.md
+++ b/src/java-tutorial/javase/20230921-intro.md
@@ -9,21 +9,12 @@ date: 2023-09-25
 
 # Java 简介
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::
 
 ## 一、前言
 
@@ -129,6 +120,6 @@ date: 2023-09-25
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/20230922-environment.md b/src/java-tutorial/javase/20230922-environment.md
similarity index 94%
rename from docs/src/java-tutorial/javase/20230922-environment.md
rename to src/java-tutorial/javase/20230922-environment.md
index c482f57eff..e1bf48c6cf 100644
--- a/docs/src/java-tutorial/javase/20230922-environment.md
+++ b/src/java-tutorial/javase/20230922-environment.md
@@ -10,21 +10,12 @@ date: 2023-09-25
 
 # 开发环境配置
 
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
->
-
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::
 
 ## 一、前言
 
@@ -244,6 +235,6 @@ javac
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/java-tutorial/javase/README.md b/src/java-tutorial/javase/README.md
new file mode 100644
index 0000000000..647852c835
--- /dev/null
+++ b/src/java-tutorial/javase/README.md
@@ -0,0 +1,7 @@
+---
+title: Java 基础
+index: false
+icon: iconfont icon-java
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/javase/assets/1695686544052.webp b/src/java-tutorial/javase/assets/1695686544052.webp
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/1695686544052.webp
rename to src/java-tutorial/javase/assets/1695686544052.webp
diff --git a/docs/src/java-tutorial/javase/assets/1695686583197.webp b/src/java-tutorial/javase/assets/1695686583197.webp
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/1695686583197.webp
rename to src/java-tutorial/javase/assets/1695686583197.webp
diff --git a/docs/src/java-tutorial/javase/assets/1695686620882.webp b/src/java-tutorial/javase/assets/1695686620882.webp
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/1695686620882.webp
rename to src/java-tutorial/javase/assets/1695686620882.webp
diff --git a/docs/src/java-tutorial/javase/assets/1695686767330.webp b/src/java-tutorial/javase/assets/1695686767330.webp
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/1695686767330.webp
rename to src/java-tutorial/javase/assets/1695686767330.webp
diff --git a/docs/src/java-tutorial/javase/assets/1695686806548.webp b/src/java-tutorial/javase/assets/1695686806548.webp
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/1695686806548.webp
rename to src/java-tutorial/javase/assets/1695686806548.webp
diff --git a/docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359697.png b/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359697.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359697.png
rename to src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359697.png
diff --git a/docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359710.png b/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359710.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359710.png
rename to src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359710.png
diff --git a/docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359722.png b/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359722.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359722.png
rename to src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359722.png
diff --git a/docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359733.png b/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359733.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359733.png
rename to src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359733.png
diff --git a/docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359741-8085039.png b/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359741-8085039.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359741-8085039.png
rename to src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359741-8085039.png
diff --git a/docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359741.png b/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359741.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359741.png
rename to src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359741.png
diff --git a/docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359759.png b/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359759.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359759.png
rename to src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359759.png
diff --git a/docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359765.png b/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359765.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359765.png
rename to src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359765.png
diff --git a/docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359782.png b/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359782.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359782.png
rename to src/java-tutorial/javase/assets/20200521-servlet/format,png-20240216200359782.png
diff --git a/docs/src/java-tutorial/javase/assets/20200521-servlet/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200359719.png b/src/java-tutorial/javase/assets/20200521-servlet/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200359719.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20200521-servlet/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200359719.png
rename to src/java-tutorial/javase/assets/20200521-servlet/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200359719.png
diff --git a/docs/src/java-tutorial/javase/assets/20220701-intro-to-java/java-platform.png b/src/java-tutorial/javase/assets/20220701-intro-to-java/java-platform.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220701-intro-to-java/java-platform.png
rename to src/java-tutorial/javase/assets/20220701-intro-to-java/java-platform.png
diff --git a/docs/src/java-tutorial/javase/assets/20220701-intro-to-java/java-system.png b/src/java-tutorial/javase/assets/20220701-intro-to-java/java-system.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220701-intro-to-java/java-system.png
rename to src/java-tutorial/javase/assets/20220701-intro-to-java/java-system.png
diff --git a/docs/src/java-tutorial/javase/assets/20220701-intro-to-java/language-sort.png b/src/java-tutorial/javase/assets/20220701-intro-to-java/language-sort.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220701-intro-to-java/language-sort.png
rename to src/java-tutorial/javase/assets/20220701-intro-to-java/language-sort.png
diff --git a/docs/src/java-tutorial/javase/assets/20220701-intro-to-java/trending.png b/src/java-tutorial/javase/assets/20220701-intro-to-java/trending.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220701-intro-to-java/trending.png
rename to src/java-tutorial/javase/assets/20220701-intro-to-java/trending.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/agree.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/agree.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/agree.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/agree.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/console-compiler.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/console-compiler.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/console-compiler.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/console-compiler.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/download.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/download.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/download.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/download.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/envi-vari.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/envi-vari.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/envi-vari.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/envi-vari.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/helloworld.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/helloworld.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/helloworld.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/helloworld.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/install-macos.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/install-macos.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/install-macos.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/install-macos.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/install-path.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/install-path.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/install-path.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/install-path.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java-class.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java-class.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java-class.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java-class.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java-home.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java-home.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java-home.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java-home.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java-version.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java-version.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java-version.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java-version.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/java.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/javac.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/javac.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/javac.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/javac.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/jdk-config.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/jdk-config.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/jdk-config.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/jdk-config.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/jdk11.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/jdk11.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/jdk11.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/jdk11.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/login.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/login.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/login.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/login.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-java.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-java.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-java.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-java.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-javac.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-javac.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-javac.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-javac.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-jdk-v.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-jdk-v.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-jdk-v.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-jdk-v.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-jdk.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-jdk.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-jdk.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/macos-jdk.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/path-bin.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/path-bin.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/path-bin.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/path-bin.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/pwd.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/pwd.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/pwd.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/pwd.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/sequence.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/sequence.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/sequence.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/sequence.png
diff --git a/docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/success.png b/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/success.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/success.png
rename to src/java-tutorial/javase/assets/20220702-jdk-install-and-hello-world/success.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/finish-pro.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/finish-pro.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/finish-pro.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/finish-pro.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/helloworld.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/helloworld.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/helloworld.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/helloworld.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/idea-main-ui.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/idea-main-ui.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/idea-main-ui.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/idea-main-ui.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/macos-down.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/macos-down.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/macos-down.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/macos-down.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/macos-install.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/macos-install.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/macos-install.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/macos-install.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/new-project.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/new-project.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/new-project.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/new-project.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/other-pulgin.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/other-pulgin.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/other-pulgin.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/other-pulgin.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/plugin.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/plugin.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/plugin.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/plugin.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/pro-name.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/pro-name.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/pro-name.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/pro-name.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/sh-idea.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/sh-idea.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/sh-idea.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/sh-idea.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/shell-path.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/shell-path.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/shell-path.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/shell-path.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/strucrure.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/strucrure.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/strucrure.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/strucrure.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/template.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/template.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/template.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/template.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/ubuntu-download.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/ubuntu-download.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/ubuntu-download.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/ubuntu-download.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/ui.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/ui.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/ui.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/ui.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/ul-vs-community.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/ul-vs-community.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/ul-vs-community.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/ul-vs-community.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/uninstall-macos.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/uninstall-macos.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/uninstall-macos.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/uninstall-macos.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/uninstall.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/uninstall.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/uninstall.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/uninstall.png
diff --git a/docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/unzip.png b/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/unzip.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220703-learn-java-with-idea/unzip.png
rename to src/java-tutorial/javase/assets/20220703-learn-java-with-idea/unzip.png
diff --git a/docs/src/java-tutorial/javase/assets/20220704-variable-and-datatype/java-key-words.png b/src/java-tutorial/javase/assets/20220704-variable-and-datatype/java-key-words.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220704-variable-and-datatype/java-key-words.png
rename to src/java-tutorial/javase/assets/20220704-variable-and-datatype/java-key-words.png
diff --git a/docs/src/java-tutorial/javase/assets/20220704-variable-and-datatype/string-pool.png b/src/java-tutorial/javase/assets/20220704-variable-and-datatype/string-pool.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220704-variable-and-datatype/string-pool.png
rename to src/java-tutorial/javase/assets/20220704-variable-and-datatype/string-pool.png
diff --git a/docs/src/java-tutorial/javase/assets/20220704-variable-and-datatype/stringpool-exist.png b/src/java-tutorial/javase/assets/20220704-variable-and-datatype/stringpool-exist.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220704-variable-and-datatype/stringpool-exist.png
rename to src/java-tutorial/javase/assets/20220704-variable-and-datatype/stringpool-exist.png
diff --git a/docs/src/java-tutorial/javase/assets/20220705-binary-convert/16.png b/src/java-tutorial/javase/assets/20220705-binary-convert/16.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220705-binary-convert/16.png
rename to src/java-tutorial/javase/assets/20220705-binary-convert/16.png
diff --git a/docs/src/java-tutorial/javase/assets/20220705-binary-convert/8.png b/src/java-tutorial/javase/assets/20220705-binary-convert/8.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220705-binary-convert/8.png
rename to src/java-tutorial/javase/assets/20220705-binary-convert/8.png
diff --git a/docs/src/java-tutorial/javase/assets/20220705-binary-convert/decimal.png b/src/java-tutorial/javase/assets/20220705-binary-convert/decimal.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220705-binary-convert/decimal.png
rename to src/java-tutorial/javase/assets/20220705-binary-convert/decimal.png
diff --git a/docs/src/java-tutorial/javase/assets/20220705-binary-convert/int.png b/src/java-tutorial/javase/assets/20220705-binary-convert/int.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220705-binary-convert/int.png
rename to src/java-tutorial/javase/assets/20220705-binary-convert/int.png
diff --git a/docs/src/java-tutorial/javase/assets/20220705-binary-convert/n210.png b/src/java-tutorial/javase/assets/20220705-binary-convert/n210.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220705-binary-convert/n210.png
rename to src/java-tutorial/javase/assets/20220705-binary-convert/n210.png
diff --git a/docs/src/java-tutorial/javase/assets/20220705-binary-convert/parse-200.png b/src/java-tutorial/javase/assets/20220705-binary-convert/parse-200.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220705-binary-convert/parse-200.png
rename to src/java-tutorial/javase/assets/20220705-binary-convert/parse-200.png
diff --git a/docs/src/java-tutorial/javase/assets/20220706-operator/assign.png b/src/java-tutorial/javase/assets/20220706-operator/assign.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220706-operator/assign.png
rename to src/java-tutorial/javase/assets/20220706-operator/assign.png
diff --git a/docs/src/java-tutorial/javase/assets/20220706-operator/bit.png b/src/java-tutorial/javase/assets/20220706-operator/bit.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220706-operator/bit.png
rename to src/java-tutorial/javase/assets/20220706-operator/bit.png
diff --git a/docs/src/java-tutorial/javase/assets/20220706-operator/condition.png b/src/java-tutorial/javase/assets/20220706-operator/condition.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220706-operator/condition.png
rename to src/java-tutorial/javase/assets/20220706-operator/condition.png
diff --git a/docs/src/java-tutorial/javase/assets/20220706-operator/equals.png b/src/java-tutorial/javase/assets/20220706-operator/equals.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220706-operator/equals.png
rename to src/java-tutorial/javase/assets/20220706-operator/equals.png
diff --git a/docs/src/java-tutorial/javase/assets/20220706-operator/logic-&.png b/src/java-tutorial/javase/assets/20220706-operator/logic-&.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220706-operator/logic-&.png
rename to src/java-tutorial/javase/assets/20220706-operator/logic-&.png
diff --git a/docs/src/java-tutorial/javase/assets/20220706-operator/logic.png b/src/java-tutorial/javase/assets/20220706-operator/logic.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220706-operator/logic.png
rename to src/java-tutorial/javase/assets/20220706-operator/logic.png
diff --git a/docs/src/java-tutorial/javase/assets/20220706-operator/operator.png b/src/java-tutorial/javase/assets/20220706-operator/operator.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220706-operator/operator.png
rename to src/java-tutorial/javase/assets/20220706-operator/operator.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/break.png b/src/java-tutorial/javase/assets/20220707-control-process/break.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/break.png
rename to src/java-tutorial/javase/assets/20220707-control-process/break.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/condition.png b/src/java-tutorial/javase/assets/20220707-control-process/condition.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/condition.png
rename to src/java-tutorial/javase/assets/20220707-control-process/condition.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/continue.png b/src/java-tutorial/javase/assets/20220707-control-process/continue.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/continue.png
rename to src/java-tutorial/javase/assets/20220707-control-process/continue.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/dowhile.png b/src/java-tutorial/javase/assets/20220707-control-process/dowhile.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/dowhile.png
rename to src/java-tutorial/javase/assets/20220707-control-process/dowhile.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/for-each.png b/src/java-tutorial/javase/assets/20220707-control-process/for-each.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/for-each.png
rename to src/java-tutorial/javase/assets/20220707-control-process/for-each.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/for.png b/src/java-tutorial/javase/assets/20220707-control-process/for.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/for.png
rename to src/java-tutorial/javase/assets/20220707-control-process/for.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/if-res.png b/src/java-tutorial/javase/assets/20220707-control-process/if-res.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/if-res.png
rename to src/java-tutorial/javase/assets/20220707-control-process/if-res.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/if.png b/src/java-tutorial/javase/assets/20220707-control-process/if.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/if.png
rename to src/java-tutorial/javase/assets/20220707-control-process/if.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/input.png b/src/java-tutorial/javase/assets/20220707-control-process/input.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/input.png
rename to src/java-tutorial/javase/assets/20220707-control-process/input.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/loop.png b/src/java-tutorial/javase/assets/20220707-control-process/loop.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/loop.png
rename to src/java-tutorial/javase/assets/20220707-control-process/loop.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/mul-if.png b/src/java-tutorial/javase/assets/20220707-control-process/mul-if.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/mul-if.png
rename to src/java-tutorial/javase/assets/20220707-control-process/mul-if.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/output.png b/src/java-tutorial/javase/assets/20220707-control-process/output.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/output.png
rename to src/java-tutorial/javase/assets/20220707-control-process/output.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/sequence.png b/src/java-tutorial/javase/assets/20220707-control-process/sequence.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/sequence.png
rename to src/java-tutorial/javase/assets/20220707-control-process/sequence.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/sum.png b/src/java-tutorial/javase/assets/20220707-control-process/sum.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/sum.png
rename to src/java-tutorial/javase/assets/20220707-control-process/sum.png
diff --git a/docs/src/java-tutorial/javase/assets/20220707-control-process/while.png b/src/java-tutorial/javase/assets/20220707-control-process/while.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220707-control-process/while.png
rename to src/java-tutorial/javase/assets/20220707-control-process/while.png
diff --git a/docs/src/java-tutorial/javase/assets/20220708-how-to-operate-array/arrays.png b/src/java-tutorial/javase/assets/20220708-how-to-operate-array/arrays.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220708-how-to-operate-array/arrays.png
rename to src/java-tutorial/javase/assets/20220708-how-to-operate-array/arrays.png
diff --git a/docs/src/java-tutorial/javase/assets/20220708-how-to-operate-array/arrsys-sort.png b/src/java-tutorial/javase/assets/20220708-how-to-operate-array/arrsys-sort.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220708-how-to-operate-array/arrsys-sort.png
rename to src/java-tutorial/javase/assets/20220708-how-to-operate-array/arrsys-sort.png
diff --git a/docs/src/java-tutorial/javase/assets/20220708-how-to-operate-array/for-each.png b/src/java-tutorial/javase/assets/20220708-how-to-operate-array/for-each.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220708-how-to-operate-array/for-each.png
rename to src/java-tutorial/javase/assets/20220708-how-to-operate-array/for-each.png
diff --git a/docs/src/java-tutorial/javase/assets/20220708-how-to-operate-array/for.png b/src/java-tutorial/javase/assets/20220708-how-to-operate-array/for.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220708-how-to-operate-array/for.png
rename to src/java-tutorial/javase/assets/20220708-how-to-operate-array/for.png
diff --git a/docs/src/java-tutorial/javase/assets/20220708-how-to-operate-array/ort.png b/src/java-tutorial/javase/assets/20220708-how-to-operate-array/ort.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220708-how-to-operate-array/ort.png
rename to src/java-tutorial/javase/assets/20220708-how-to-operate-array/ort.png
diff --git a/docs/src/java-tutorial/javase/assets/20220708-how-to-operate-array/out-array.png b/src/java-tutorial/javase/assets/20220708-how-to-operate-array/out-array.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220708-how-to-operate-array/out-array.png
rename to src/java-tutorial/javase/assets/20220708-how-to-operate-array/out-array.png
diff --git a/docs/src/java-tutorial/javase/assets/20220710-oop-2/reference.png b/src/java-tutorial/javase/assets/20220710-oop-2/reference.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220710-oop-2/reference.png
rename to src/java-tutorial/javase/assets/20220710-oop-2/reference.png
diff --git a/docs/src/java-tutorial/javase/assets/20220710-oop-2/str.png b/src/java-tutorial/javase/assets/20220710-oop-2/str.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220710-oop-2/str.png
rename to src/java-tutorial/javase/assets/20220710-oop-2/str.png
diff --git a/docs/src/java-tutorial/javase/assets/20220711-oop-3/class.png b/src/java-tutorial/javase/assets/20220711-oop-3/class.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220711-oop-3/class.png
rename to src/java-tutorial/javase/assets/20220711-oop-3/class.png
diff --git a/docs/src/java-tutorial/javase/assets/20220711-oop-3/compile.png b/src/java-tutorial/javase/assets/20220711-oop-3/compile.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220711-oop-3/compile.png
rename to src/java-tutorial/javase/assets/20220711-oop-3/compile.png
diff --git a/docs/src/java-tutorial/javase/assets/20220711-oop-3/index.png b/src/java-tutorial/javase/assets/20220711-oop-3/index.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220711-oop-3/index.png
rename to src/java-tutorial/javase/assets/20220711-oop-3/index.png
diff --git a/docs/src/java-tutorial/javase/assets/20220711-oop-3/javadoc.png b/src/java-tutorial/javase/assets/20220711-oop-3/javadoc.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220711-oop-3/javadoc.png
rename to src/java-tutorial/javase/assets/20220711-oop-3/javadoc.png
diff --git a/docs/src/java-tutorial/javase/assets/20220711-oop-3/main-class.png b/src/java-tutorial/javase/assets/20220711-oop-3/main-class.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220711-oop-3/main-class.png
rename to src/java-tutorial/javase/assets/20220711-oop-3/main-class.png
diff --git a/docs/src/java-tutorial/javase/assets/20220713-string/chatat.png b/src/java-tutorial/javase/assets/20220713-string/chatat.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220713-string/chatat.png
rename to src/java-tutorial/javase/assets/20220713-string/chatat.png
diff --git a/docs/src/java-tutorial/javase/assets/20220713-string/common-used-method.png b/src/java-tutorial/javase/assets/20220713-string/common-used-method.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220713-string/common-used-method.png
rename to src/java-tutorial/javase/assets/20220713-string/common-used-method.png
diff --git a/docs/src/java-tutorial/javase/assets/20220713-string/equals.png b/src/java-tutorial/javase/assets/20220713-string/equals.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220713-string/equals.png
rename to src/java-tutorial/javase/assets/20220713-string/equals.png
diff --git a/docs/src/java-tutorial/javase/assets/20220713-string/equalsignorecase.png b/src/java-tutorial/javase/assets/20220713-string/equalsignorecase.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220713-string/equalsignorecase.png
rename to src/java-tutorial/javase/assets/20220713-string/equalsignorecase.png
diff --git a/docs/src/java-tutorial/javase/assets/20220713-string/lenth.png b/src/java-tutorial/javase/assets/20220713-string/lenth.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220713-string/lenth.png
rename to src/java-tutorial/javase/assets/20220713-string/lenth.png
diff --git a/docs/src/java-tutorial/javase/assets/20220713-string/replace.png b/src/java-tutorial/javase/assets/20220713-string/replace.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220713-string/replace.png
rename to src/java-tutorial/javase/assets/20220713-string/replace.png
diff --git a/docs/src/java-tutorial/javase/assets/20220713-string/split.png b/src/java-tutorial/javase/assets/20220713-string/split.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220713-string/split.png
rename to src/java-tutorial/javase/assets/20220713-string/split.png
diff --git a/docs/src/java-tutorial/javase/assets/20220713-string/string-joiner-method.png b/src/java-tutorial/javase/assets/20220713-string/string-joiner-method.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220713-string/string-joiner-method.png
rename to src/java-tutorial/javase/assets/20220713-string/string-joiner-method.png
diff --git a/docs/src/java-tutorial/javase/assets/20220713-string/string-joiner.png b/src/java-tutorial/javase/assets/20220713-string/string-joiner.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220713-string/string-joiner.png
rename to src/java-tutorial/javase/assets/20220713-string/string-joiner.png
diff --git a/docs/src/java-tutorial/javase/assets/20220713-string/stringbuilder.png b/src/java-tutorial/javase/assets/20220713-string/stringbuilder.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220713-string/stringbuilder.png
rename to src/java-tutorial/javase/assets/20220713-string/stringbuilder.png
diff --git a/docs/src/java-tutorial/javase/assets/20220713-string/substring.png b/src/java-tutorial/javase/assets/20220713-string/substring.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220713-string/substring.png
rename to src/java-tutorial/javase/assets/20220713-string/substring.png
diff --git a/docs/src/java-tutorial/javase/assets/20220713-string/tochararray.png b/src/java-tutorial/javase/assets/20220713-string/tochararray.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220713-string/tochararray.png
rename to src/java-tutorial/javase/assets/20220713-string/tochararray.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/create-del.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/create-del.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/create-del.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/create-del.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/encode-decode.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/encode-decode.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/encode-decode.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/encode-decode.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/exercise.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/exercise.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/exercise.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/exercise.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/file-attr.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/file-attr.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/file-attr.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/file-attr.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/file-demo1.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/file-demo1.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/file-demo1.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/file-demo1.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/file-text.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/file-text.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/file-text.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/file-text.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/inputstream.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/inputstream.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/inputstream.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/inputstream.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/io-stream.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/io-stream.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/io-stream.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/io-stream.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/output-file.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/output-file.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/output-file.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/output-file.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/outputstream.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/outputstream.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/outputstream.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/outputstream.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/path-attr.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/path-attr.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/path-attr.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/path-attr.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/path.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/path.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/path.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/path.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/reader-demo.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/reader-demo.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/reader-demo.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/reader-demo.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/reader.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/reader.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/reader.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/reader.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/relative-path.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/relative-path.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/relative-path.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/relative-path.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/write-demo.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/write-demo.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/write-demo.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/write-demo.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/write-success.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/write-success.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/write-success.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/write-success.png
diff --git a/docs/src/java-tutorial/javase/assets/20220715-in-out-stream/writer.png b/src/java-tutorial/javase/assets/20220715-in-out-stream/writer.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220715-in-out-stream/writer.png
rename to src/java-tutorial/javase/assets/20220715-in-out-stream/writer.png
diff --git a/docs/src/java-tutorial/javase/assets/20220716-reflection/attr-fail1.png b/src/java-tutorial/javase/assets/20220716-reflection/attr-fail1.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220716-reflection/attr-fail1.png
rename to src/java-tutorial/javase/assets/20220716-reflection/attr-fail1.png
diff --git a/docs/src/java-tutorial/javase/assets/20220716-reflection/attr-fail2.png b/src/java-tutorial/javase/assets/20220716-reflection/attr-fail2.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220716-reflection/attr-fail2.png
rename to src/java-tutorial/javase/assets/20220716-reflection/attr-fail2.png
diff --git a/docs/src/java-tutorial/javase/assets/20220716-reflection/class-attr.png b/src/java-tutorial/javase/assets/20220716-reflection/class-attr.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220716-reflection/class-attr.png
rename to src/java-tutorial/javase/assets/20220716-reflection/class-attr.png
diff --git a/docs/src/java-tutorial/javase/assets/20220716-reflection/class-obj.png b/src/java-tutorial/javase/assets/20220716-reflection/class-obj.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220716-reflection/class-obj.png
rename to src/java-tutorial/javase/assets/20220716-reflection/class-obj.png
diff --git a/docs/src/java-tutorial/javase/assets/20220716-reflection/constructor.png b/src/java-tutorial/javase/assets/20220716-reflection/constructor.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220716-reflection/constructor.png
rename to src/java-tutorial/javase/assets/20220716-reflection/constructor.png
diff --git a/docs/src/java-tutorial/javase/assets/20220716-reflection/field.png b/src/java-tutorial/javase/assets/20220716-reflection/field.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220716-reflection/field.png
rename to src/java-tutorial/javase/assets/20220716-reflection/field.png
diff --git a/docs/src/java-tutorial/javase/assets/20220716-reflection/getDeclaredField.png b/src/java-tutorial/javase/assets/20220716-reflection/getDeclaredField.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220716-reflection/getDeclaredField.png
rename to src/java-tutorial/javase/assets/20220716-reflection/getDeclaredField.png
diff --git a/docs/src/java-tutorial/javase/assets/20220716-reflection/getMethods.png b/src/java-tutorial/javase/assets/20220716-reflection/getMethods.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220716-reflection/getMethods.png
rename to src/java-tutorial/javase/assets/20220716-reflection/getMethods.png
diff --git a/docs/src/java-tutorial/javase/assets/20220716-reflection/getName.png b/src/java-tutorial/javase/assets/20220716-reflection/getName.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220716-reflection/getName.png
rename to src/java-tutorial/javase/assets/20220716-reflection/getName.png
diff --git a/docs/src/java-tutorial/javase/assets/20220716-reflection/prop.png b/src/java-tutorial/javase/assets/20220716-reflection/prop.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220716-reflection/prop.png
rename to src/java-tutorial/javase/assets/20220716-reflection/prop.png
diff --git a/docs/src/java-tutorial/javase/assets/20220716-reflection/reflecttest.png b/src/java-tutorial/javase/assets/20220716-reflection/reflecttest.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220716-reflection/reflecttest.png
rename to src/java-tutorial/javase/assets/20220716-reflection/reflecttest.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/add-qry.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/add-qry.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/add-qry.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/add-qry.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/c3p0.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/c3p0.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/c3p0.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/c3p0.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/connection.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/connection.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/connection.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/connection.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/create-tb.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/create-tb.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/create-tb.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/create-tb.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/del-qry.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/del-qry.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/del-qry.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/del-qry.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/dependency.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/dependency.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/dependency.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/dependency.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/druid.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/druid.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/druid.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/druid.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/import.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/import.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/import.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/import.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/link.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/link.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/link.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/link.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/module.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/module.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/module.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/module.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/pro-structure.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/pro-structure.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/pro-structure.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/pro-structure.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/qry.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/qry.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/qry.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/qry.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/tb-data.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/tb-data.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/tb-data.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/tb-data.png
diff --git a/docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/update-qry.png b/src/java-tutorial/javase/assets/20220717-jdbc-introduction/update-qry.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220717-jdbc-introduction/update-qry.png
rename to src/java-tutorial/javase/assets/20220717-jdbc-introduction/update-qry.png
diff --git a/docs/src/java-tutorial/javase/assets/20220718-test-with-junit/@test.png b/src/java-tutorial/javase/assets/20220718-test-with-junit/@test.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220718-test-with-junit/@test.png
rename to src/java-tutorial/javase/assets/20220718-test-with-junit/@test.png
diff --git a/docs/src/java-tutorial/javase/assets/20220718-test-with-junit/assert.png b/src/java-tutorial/javase/assets/20220718-test-with-junit/assert.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220718-test-with-junit/assert.png
rename to src/java-tutorial/javase/assets/20220718-test-with-junit/assert.png
diff --git a/docs/src/java-tutorial/javase/assets/20220718-test-with-junit/dependency.png b/src/java-tutorial/javase/assets/20220718-test-with-junit/dependency.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220718-test-with-junit/dependency.png
rename to src/java-tutorial/javase/assets/20220718-test-with-junit/dependency.png
diff --git a/docs/src/java-tutorial/javase/assets/20220718-test-with-junit/fail.png b/src/java-tutorial/javase/assets/20220718-test-with-junit/fail.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220718-test-with-junit/fail.png
rename to src/java-tutorial/javase/assets/20220718-test-with-junit/fail.png
diff --git a/docs/src/java-tutorial/javase/assets/20220718-test-with-junit/success.png b/src/java-tutorial/javase/assets/20220718-test-with-junit/success.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220718-test-with-junit/success.png
rename to src/java-tutorial/javase/assets/20220718-test-with-junit/success.png
diff --git a/docs/src/java-tutorial/javase/assets/20220719-lombok-install-and-usage/@data.png b/src/java-tutorial/javase/assets/20220719-lombok-install-and-usage/@data.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220719-lombok-install-and-usage/@data.png
rename to src/java-tutorial/javase/assets/20220719-lombok-install-and-usage/@data.png
diff --git a/docs/src/java-tutorial/javase/assets/20220719-lombok-install-and-usage/intege-lombok.png b/src/java-tutorial/javase/assets/20220719-lombok-install-and-usage/intege-lombok.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220719-lombok-install-and-usage/intege-lombok.png
rename to src/java-tutorial/javase/assets/20220719-lombok-install-and-usage/intege-lombok.png
diff --git a/docs/src/java-tutorial/javase/assets/20220719-lombok-install-and-usage/lombok-plugin.png b/src/java-tutorial/javase/assets/20220719-lombok-install-and-usage/lombok-plugin.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220719-lombok-install-and-usage/lombok-plugin.png
rename to src/java-tutorial/javase/assets/20220719-lombok-install-and-usage/lombok-plugin.png
diff --git a/docs/src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json-array.png b/src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json-array.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json-array.png
rename to src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json-array.png
diff --git a/docs/src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json.png b/src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json.png
rename to src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json.png
diff --git a/docs/src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json2java.png b/src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json2java.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json2java.png
rename to src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json2java.png
diff --git a/docs/src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json2obj.png b/src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json2obj.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json2obj.png
rename to src/java-tutorial/javase/assets/20220720-fastjson2-quickstart/json2obj.png
diff --git a/docs/src/java-tutorial/javase/assets/20220721-annotations/deprecated.png b/src/java-tutorial/javase/assets/20220721-annotations/deprecated.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220721-annotations/deprecated.png
rename to src/java-tutorial/javase/assets/20220721-annotations/deprecated.png
diff --git a/docs/src/java-tutorial/javase/assets/20220721-annotations/override.png b/src/java-tutorial/javase/assets/20220721-annotations/override.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220721-annotations/override.png
rename to src/java-tutorial/javase/assets/20220721-annotations/override.png
diff --git a/docs/src/java-tutorial/javase/assets/20220721-annotations/suppressWarnings.png b/src/java-tutorial/javase/assets/20220721-annotations/suppressWarnings.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220721-annotations/suppressWarnings.png
rename to src/java-tutorial/javase/assets/20220721-annotations/suppressWarnings.png
diff --git a/docs/src/java-tutorial/javase/assets/20220722-mockito/4343249c31e24d49bfe3c1709cc5b76f.webp b/src/java-tutorial/javase/assets/20220722-mockito/4343249c31e24d49bfe3c1709cc5b76f.webp
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220722-mockito/4343249c31e24d49bfe3c1709cc5b76f.webp
rename to src/java-tutorial/javase/assets/20220722-mockito/4343249c31e24d49bfe3c1709cc5b76f.webp
diff --git a/docs/src/java-tutorial/javase/assets/20220722-mockito/4b5a44b91820434fb8399a68ae1284d7.webp b/src/java-tutorial/javase/assets/20220722-mockito/4b5a44b91820434fb8399a68ae1284d7.webp
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220722-mockito/4b5a44b91820434fb8399a68ae1284d7.webp
rename to src/java-tutorial/javase/assets/20220722-mockito/4b5a44b91820434fb8399a68ae1284d7.webp
diff --git a/docs/src/java-tutorial/javase/assets/20220722-mockito/740c39144eb5470189db4c934657101f.webp b/src/java-tutorial/javase/assets/20220722-mockito/740c39144eb5470189db4c934657101f.webp
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220722-mockito/740c39144eb5470189db4c934657101f.webp
rename to src/java-tutorial/javase/assets/20220722-mockito/740c39144eb5470189db4c934657101f.webp
diff --git a/docs/src/java-tutorial/javase/assets/20220722-mockito/7538165d2acb4641818ba073c2b77608.webp b/src/java-tutorial/javase/assets/20220722-mockito/7538165d2acb4641818ba073c2b77608.webp
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220722-mockito/7538165d2acb4641818ba073c2b77608.webp
rename to src/java-tutorial/javase/assets/20220722-mockito/7538165d2acb4641818ba073c2b77608.webp
diff --git a/docs/src/java-tutorial/javase/assets/20220722-mockito/88df70ce36c449498cc96457f5cf92da.webp b/src/java-tutorial/javase/assets/20220722-mockito/88df70ce36c449498cc96457f5cf92da.webp
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220722-mockito/88df70ce36c449498cc96457f5cf92da.webp
rename to src/java-tutorial/javase/assets/20220722-mockito/88df70ce36c449498cc96457f5cf92da.webp
diff --git a/docs/src/java-tutorial/javase/assets/20220722-mockito/89c981e76b8041778bef3397d20f3263.webp b/src/java-tutorial/javase/assets/20220722-mockito/89c981e76b8041778bef3397d20f3263.webp
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/20220722-mockito/89c981e76b8041778bef3397d20f3263.webp
rename to src/java-tutorial/javase/assets/20220722-mockito/89c981e76b8041778bef3397d20f3263.webp
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/16.png b/src/java-tutorial/javase/assets/java-tutorial/16.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/16.png
rename to src/java-tutorial/javase/assets/java-tutorial/16.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/8..png b/src/java-tutorial/javase/assets/java-tutorial/8..png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/8..png
rename to src/java-tutorial/javase/assets/java-tutorial/8..png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/arithmetic-operator.png b/src/java-tutorial/javase/assets/java-tutorial/arithmetic-operator.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/arithmetic-operator.png
rename to src/java-tutorial/javase/assets/java-tutorial/arithmetic-operator.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/assign.png b/src/java-tutorial/javase/assets/java-tutorial/assign.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/assign.png
rename to src/java-tutorial/javase/assets/java-tutorial/assign.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/bit-operator.png b/src/java-tutorial/javase/assets/java-tutorial/bit-operator.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/bit-operator.png
rename to src/java-tutorial/javase/assets/java-tutorial/bit-operator.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/break-demo.png b/src/java-tutorial/javase/assets/java-tutorial/break-demo.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/break-demo.png
rename to src/java-tutorial/javase/assets/java-tutorial/break-demo.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/cancel-shutdown.png b/src/java-tutorial/javase/assets/java-tutorial/cancel-shutdown.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/cancel-shutdown.png
rename to src/java-tutorial/javase/assets/java-tutorial/cancel-shutdown.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/cd-root.png b/src/java-tutorial/javase/assets/java-tutorial/cd-root.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/cd-root.png
rename to src/java-tutorial/javase/assets/java-tutorial/cd-root.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/cd-up.png b/src/java-tutorial/javase/assets/java-tutorial/cd-up.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/cd-up.png
rename to src/java-tutorial/javase/assets/java-tutorial/cd-up.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/cd.png b/src/java-tutorial/javase/assets/java-tutorial/cd.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/cd.png
rename to src/java-tutorial/javase/assets/java-tutorial/cd.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/class.png b/src/java-tutorial/javase/assets/java-tutorial/class.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/class.png
rename to src/java-tutorial/javase/assets/java-tutorial/class.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/cls-after.png b/src/java-tutorial/javase/assets/java-tutorial/cls-after.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/cls-after.png
rename to src/java-tutorial/javase/assets/java-tutorial/cls-after.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/cls.png b/src/java-tutorial/javase/assets/java-tutorial/cls.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/cls.png
rename to src/java-tutorial/javase/assets/java-tutorial/cls.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/compile.png b/src/java-tutorial/javase/assets/java-tutorial/compile.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/compile.png
rename to src/java-tutorial/javase/assets/java-tutorial/compile.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/computer-component.png b/src/java-tutorial/javase/assets/java-tutorial/computer-component.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/computer-component.png
rename to src/java-tutorial/javase/assets/java-tutorial/computer-component.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/condition-operator.png b/src/java-tutorial/javase/assets/java-tutorial/condition-operator.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/condition-operator.png
rename to src/java-tutorial/javase/assets/java-tutorial/condition-operator.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/continue-demo.png b/src/java-tutorial/javase/assets/java-tutorial/continue-demo.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/continue-demo.png
rename to src/java-tutorial/javase/assets/java-tutorial/continue-demo.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/control-process.png b/src/java-tutorial/javase/assets/java-tutorial/control-process.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/control-process.png
rename to src/java-tutorial/javase/assets/java-tutorial/control-process.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/copy.png b/src/java-tutorial/javase/assets/java-tutorial/copy.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/copy.png
rename to src/java-tutorial/javase/assets/java-tutorial/copy.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/cpu-disk-memory.png b/src/java-tutorial/javase/assets/java-tutorial/cpu-disk-memory.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/cpu-disk-memory.png
rename to src/java-tutorial/javase/assets/java-tutorial/cpu-disk-memory.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/decimal..png b/src/java-tutorial/javase/assets/java-tutorial/decimal..png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/decimal..png
rename to src/java-tutorial/javase/assets/java-tutorial/decimal..png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/del.png b/src/java-tutorial/javase/assets/java-tutorial/del.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/del.png
rename to src/java-tutorial/javase/assets/java-tutorial/del.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/dir.png b/src/java-tutorial/javase/assets/java-tutorial/dir.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/dir.png
rename to src/java-tutorial/javase/assets/java-tutorial/dir.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/disk.png b/src/java-tutorial/javase/assets/java-tutorial/disk.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/disk.png
rename to src/java-tutorial/javase/assets/java-tutorial/disk.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/dmg-install.png b/src/java-tutorial/javase/assets/java-tutorial/dmg-install.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/dmg-install.png
rename to src/java-tutorial/javase/assets/java-tutorial/dmg-install.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/eclipse.png b/src/java-tutorial/javase/assets/java-tutorial/eclipse.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/eclipse.png
rename to src/java-tutorial/javase/assets/java-tutorial/eclipse.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/envi-para.png b/src/java-tutorial/javase/assets/java-tutorial/envi-para.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/envi-para.png
rename to src/java-tutorial/javase/assets/java-tutorial/envi-para.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/exe-install.png b/src/java-tutorial/javase/assets/java-tutorial/exe-install.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/exe-install.png
rename to src/java-tutorial/javase/assets/java-tutorial/exe-install.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/flushdns.png b/src/java-tutorial/javase/assets/java-tutorial/flushdns.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/flushdns.png
rename to src/java-tutorial/javase/assets/java-tutorial/flushdns.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/graph.png b/src/java-tutorial/javase/assets/java-tutorial/graph.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/graph.png
rename to src/java-tutorial/javase/assets/java-tutorial/graph.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/hbuilderx.png b/src/java-tutorial/javase/assets/java-tutorial/hbuilderx.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/hbuilderx.png
rename to src/java-tutorial/javase/assets/java-tutorial/hbuilderx.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/high-level-language.png b/src/java-tutorial/javase/assets/java-tutorial/high-level-language.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/high-level-language.png
rename to src/java-tutorial/javase/assets/java-tutorial/high-level-language.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/if.png b/src/java-tutorial/javase/assets/java-tutorial/if.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/if.png
rename to src/java-tutorial/javase/assets/java-tutorial/if.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/image.7d2nlniemoo0.webp b/src/java-tutorial/javase/assets/java-tutorial/image.7d2nlniemoo0.webp
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/image.7d2nlniemoo0.webp
rename to src/java-tutorial/javase/assets/java-tutorial/image.7d2nlniemoo0.webp
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/index-doc.png b/src/java-tutorial/javase/assets/java-tutorial/index-doc.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/index-doc.png
rename to src/java-tutorial/javase/assets/java-tutorial/index-doc.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/int-binary.png b/src/java-tutorial/javase/assets/java-tutorial/int-binary.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/int-binary.png
rename to src/java-tutorial/javase/assets/java-tutorial/int-binary.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/intellij-idea.png b/src/java-tutorial/javase/assets/java-tutorial/intellij-idea.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/intellij-idea.png
rename to src/java-tutorial/javase/assets/java-tutorial/intellij-idea.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/ipconfig.png b/src/java-tutorial/javase/assets/java-tutorial/ipconfig.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/ipconfig.png
rename to src/java-tutorial/javase/assets/java-tutorial/ipconfig.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/java-archive.png b/src/java-tutorial/javase/assets/java-tutorial/java-archive.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/java-archive.png
rename to src/java-tutorial/javase/assets/java-tutorial/java-archive.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/java-home.png b/src/java-tutorial/javase/assets/java-tutorial/java-home.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/java-home.png
rename to src/java-tutorial/javase/assets/java-tutorial/java-home.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/java-macos.png b/src/java-tutorial/javase/assets/java-tutorial/java-macos.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/java-macos.png
rename to src/java-tutorial/javase/assets/java-tutorial/java-macos.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/java-macos1.png b/src/java-tutorial/javase/assets/java-tutorial/java-macos1.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/java-macos1.png
rename to src/java-tutorial/javase/assets/java-tutorial/java-macos1.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/java-overview.png b/src/java-tutorial/javase/assets/java-tutorial/java-overview.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/java-overview.png
rename to src/java-tutorial/javase/assets/java-tutorial/java-overview.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/java-platform.png b/src/java-tutorial/javase/assets/java-tutorial/java-platform.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/java-platform.png
rename to src/java-tutorial/javase/assets/java-tutorial/java-platform.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/java-version-macos.png b/src/java-tutorial/javase/assets/java-tutorial/java-version-macos.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/java-version-macos.png
rename to src/java-tutorial/javase/assets/java-tutorial/java-version-macos.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/java-version-windows.png b/src/java-tutorial/javase/assets/java-tutorial/java-version-windows.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/java-version-windows.png
rename to src/java-tutorial/javase/assets/java-tutorial/java-version-windows.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/java-windows.png b/src/java-tutorial/javase/assets/java-tutorial/java-windows.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/java-windows.png
rename to src/java-tutorial/javase/assets/java-tutorial/java-windows.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/javac-macos.png b/src/java-tutorial/javase/assets/java-tutorial/javac-macos.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/javac-macos.png
rename to src/java-tutorial/javase/assets/java-tutorial/javac-macos.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/javac-macos1.png b/src/java-tutorial/javase/assets/java-tutorial/javac-macos1.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/javac-macos1.png
rename to src/java-tutorial/javase/assets/java-tutorial/javac-macos1.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/javac-windows.png b/src/java-tutorial/javase/assets/java-tutorial/javac-windows.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/javac-windows.png
rename to src/java-tutorial/javase/assets/java-tutorial/javac-windows.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/javadoc.png b/src/java-tutorial/javase/assets/java-tutorial/javadoc.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/javadoc.png
rename to src/java-tutorial/javase/assets/java-tutorial/javadoc.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/jdk-install-path.png b/src/java-tutorial/javase/assets/java-tutorial/jdk-install-path.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/jdk-install-path.png
rename to src/java-tutorial/javase/assets/java-tutorial/jdk-install-path.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/jdk-path.png b/src/java-tutorial/javase/assets/java-tutorial/jdk-path.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/jdk-path.png
rename to src/java-tutorial/javase/assets/java-tutorial/jdk-path.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/jdk17.png b/src/java-tutorial/javase/assets/java-tutorial/jdk17.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/jdk17.png
rename to src/java-tutorial/javase/assets/java-tutorial/jdk17.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/keywords.png b/src/java-tutorial/javase/assets/java-tutorial/keywords.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/keywords.png
rename to src/java-tutorial/javase/assets/java-tutorial/keywords.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/kill-pid.png b/src/java-tutorial/javase/assets/java-tutorial/kill-pid.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/kill-pid.png
rename to src/java-tutorial/javase/assets/java-tutorial/kill-pid.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/kill-task.png b/src/java-tutorial/javase/assets/java-tutorial/kill-task.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/kill-task.png
rename to src/java-tutorial/javase/assets/java-tutorial/kill-task.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/language-sort.png b/src/java-tutorial/javase/assets/java-tutorial/language-sort.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/language-sort.png
rename to src/java-tutorial/javase/assets/java-tutorial/language-sort.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/language-trending.png b/src/java-tutorial/javase/assets/java-tutorial/language-trending.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/language-trending.png
rename to src/java-tutorial/javase/assets/java-tutorial/language-trending.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/logic-operator.png b/src/java-tutorial/javase/assets/java-tutorial/logic-operator.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/logic-operator.png
rename to src/java-tutorial/javase/assets/java-tutorial/logic-operator.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/loop.png b/src/java-tutorial/javase/assets/java-tutorial/loop.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/loop.png
rename to src/java-tutorial/javase/assets/java-tutorial/loop.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/macos-success.png b/src/java-tutorial/javase/assets/java-tutorial/macos-success.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/macos-success.png
rename to src/java-tutorial/javase/assets/java-tutorial/macos-success.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/md.png b/src/java-tutorial/javase/assets/java-tutorial/md.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/md.png
rename to src/java-tutorial/javase/assets/java-tutorial/md.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/mul-if.png b/src/java-tutorial/javase/assets/java-tutorial/mul-if.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/mul-if.png
rename to src/java-tutorial/javase/assets/java-tutorial/mul-if.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/myeclipse.png b/src/java-tutorial/javase/assets/java-tutorial/myeclipse.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/myeclipse.png
rename to src/java-tutorial/javase/assets/java-tutorial/myeclipse.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/net-start.png b/src/java-tutorial/javase/assets/java-tutorial/net-start.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/net-start.png
rename to src/java-tutorial/javase/assets/java-tutorial/net-start.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/netbean.png b/src/java-tutorial/javase/assets/java-tutorial/netbean.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/netbean.png
rename to src/java-tutorial/javase/assets/java-tutorial/netbean.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/notepad3.png b/src/java-tutorial/javase/assets/java-tutorial/notepad3.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/notepad3.png
rename to src/java-tutorial/javase/assets/java-tutorial/notepad3.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/p3c.png b/src/java-tutorial/javase/assets/java-tutorial/p3c.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/p3c.png
rename to src/java-tutorial/javase/assets/java-tutorial/p3c.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/ping.png b/src/java-tutorial/javase/assets/java-tutorial/ping.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/ping.png
rename to src/java-tutorial/javase/assets/java-tutorial/ping.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/programming-process.png b/src/java-tutorial/javase/assets/java-tutorial/programming-process.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/programming-process.png
rename to src/java-tutorial/javase/assets/java-tutorial/programming-process.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/pwd-macos.png b/src/java-tutorial/javase/assets/java-tutorial/pwd-macos.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/pwd-macos.png
rename to src/java-tutorial/javase/assets/java-tutorial/pwd-macos.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/rd.png b/src/java-tutorial/javase/assets/java-tutorial/rd.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/rd.png
rename to src/java-tutorial/javase/assets/java-tutorial/rd.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/relation-operator.png b/src/java-tutorial/javase/assets/java-tutorial/relation-operator.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/relation-operator.png
rename to src/java-tutorial/javase/assets/java-tutorial/relation-operator.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/scanner-error.png b/src/java-tutorial/javase/assets/java-tutorial/scanner-error.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/scanner-error.png
rename to src/java-tutorial/javase/assets/java-tutorial/scanner-error.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/sequence.png b/src/java-tutorial/javase/assets/java-tutorial/sequence.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/sequence.png
rename to src/java-tutorial/javase/assets/java-tutorial/sequence.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/shutdown.png b/src/java-tutorial/javase/assets/java-tutorial/shutdown.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/shutdown.png
rename to src/java-tutorial/javase/assets/java-tutorial/shutdown.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/start-service.png b/src/java-tutorial/javase/assets/java-tutorial/start-service.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/start-service.png
rename to src/java-tutorial/javase/assets/java-tutorial/start-service.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/stop-service.png b/src/java-tutorial/javase/assets/java-tutorial/stop-service.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/stop-service.png
rename to src/java-tutorial/javase/assets/java-tutorial/stop-service.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/string-operation.png b/src/java-tutorial/javase/assets/java-tutorial/string-operation.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/string-operation.png
rename to src/java-tutorial/javase/assets/java-tutorial/string-operation.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/sublime.png b/src/java-tutorial/javase/assets/java-tutorial/sublime.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/sublime.png
rename to src/java-tutorial/javase/assets/java-tutorial/sublime.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/sysdmcpl.png b/src/java-tutorial/javase/assets/java-tutorial/sysdmcpl.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/sysdmcpl.png
rename to src/java-tutorial/javase/assets/java-tutorial/sysdmcpl.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/tasklist.png b/src/java-tutorial/javase/assets/java-tutorial/tasklist.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/tasklist.png
rename to src/java-tutorial/javase/assets/java-tutorial/tasklist.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/terminal.png b/src/java-tutorial/javase/assets/java-tutorial/terminal.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/terminal.png
rename to src/java-tutorial/javase/assets/java-tutorial/terminal.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/tool-system.png b/src/java-tutorial/javase/assets/java-tutorial/tool-system.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/tool-system.png
rename to src/java-tutorial/javase/assets/java-tutorial/tool-system.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/tracert.png b/src/java-tutorial/javase/assets/java-tutorial/tracert.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/tracert.png
rename to src/java-tutorial/javase/assets/java-tutorial/tracert.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/tree.png b/src/java-tutorial/javase/assets/java-tutorial/tree.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/tree.png
rename to src/java-tutorial/javase/assets/java-tutorial/tree.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/ultraedit.png b/src/java-tutorial/javase/assets/java-tutorial/ultraedit.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/ultraedit.png
rename to src/java-tutorial/javase/assets/java-tutorial/ultraedit.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/variable-operator.png b/src/java-tutorial/javase/assets/java-tutorial/variable-operator.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/variable-operator.png
rename to src/java-tutorial/javase/assets/java-tutorial/variable-operator.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/vim.png b/src/java-tutorial/javase/assets/java-tutorial/vim.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/vim.png
rename to src/java-tutorial/javase/assets/java-tutorial/vim.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/vscode.png b/src/java-tutorial/javase/assets/java-tutorial/vscode.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/vscode.png
rename to src/java-tutorial/javase/assets/java-tutorial/vscode.png
diff --git a/docs/src/java-tutorial/javase/assets/java-tutorial/windows-success.png b/src/java-tutorial/javase/assets/java-tutorial/windows-success.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/java-tutorial/windows-success.png
rename to src/java-tutorial/javase/assets/java-tutorial/windows-success.png
diff --git a/docs/src/java-tutorial/javase/assets/jdk-install.png b/src/java-tutorial/javase/assets/jdk-install.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/jdk-install.png
rename to src/java-tutorial/javase/assets/jdk-install.png
diff --git a/docs/src/java-tutorial/javase/assets/jdk-path.png b/src/java-tutorial/javase/assets/jdk-path.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/jdk-path.png
rename to src/java-tutorial/javase/assets/jdk-path.png
diff --git a/docs/src/java-tutorial/javase/assets/jdk-profile.png b/src/java-tutorial/javase/assets/jdk-profile.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/jdk-profile.png
rename to src/java-tutorial/javase/assets/jdk-profile.png
diff --git a/docs/src/java-tutorial/javase/assets/profile-jdk.png b/src/java-tutorial/javase/assets/profile-jdk.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/profile-jdk.png
rename to src/java-tutorial/javase/assets/profile-jdk.png
diff --git a/docs/src/java-tutorial/javase/assets/verify.png b/src/java-tutorial/javase/assets/verify.png
similarity index 100%
rename from docs/src/java-tutorial/javase/assets/verify.png
rename to src/java-tutorial/javase/assets/verify.png
diff --git a/docs/src/java-tutorial/javase/java-tutorial.md b/src/java-tutorial/javase/java-tutorial.md
similarity index 99%
rename from docs/src/java-tutorial/javase/java-tutorial.md
rename to src/java-tutorial/javase/java-tutorial.md
index 9ff9a9ce9c..1c7464a4ce 100644
--- a/docs/src/java-tutorial/javase/java-tutorial.md
+++ b/src/java-tutorial/javase/java-tutorial.md
@@ -5,19 +5,6 @@ index: false
 
 # 一、Java 概述
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 本文预览
 
 ![](assets/java-tutorial/java-overview.png)
diff --git a/docs/src/java-tutorial/mysql/20210623-quick-start.md b/src/java-tutorial/mysql/20210623-quick-start.md
similarity index 97%
rename from docs/src/java-tutorial/mysql/20210623-quick-start.md
rename to src/java-tutorial/mysql/20210623-quick-start.md
index 0b2285337c..9c635d3d13 100644
--- a/docs/src/java-tutorial/mysql/20210623-quick-start.md
+++ b/src/java-tutorial/mysql/20210623-quick-start.md
@@ -9,19 +9,6 @@ tag:
 
 # MySQL 快速入门
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 数据库基本概念
 
 ### 什么是数据库
diff --git a/docs/src/java-tutorial/mysql/20220726-sql-in-10min.md b/src/java-tutorial/mysql/20220726-sql-in-10min.md
similarity index 99%
rename from docs/src/java-tutorial/mysql/20220726-sql-in-10min.md
rename to src/java-tutorial/mysql/20220726-sql-in-10min.md
index 2234ffe382..b505ee0ec3 100644
--- a/docs/src/java-tutorial/mysql/20220726-sql-in-10min.md
+++ b/src/java-tutorial/mysql/20220726-sql-in-10min.md
@@ -8,19 +8,12 @@ tag:
 ---
 # 《SQL 必知必会》全解析
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-> 原文：https://mp.weixin.qq.com/s/zbOqyAtsWsocarsFIGdGgw
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+:::tip 原文
+https://mp.weixin.qq.com/s/zbOqyAtsWsocarsFIGdGgw
+:::
 
 ## 前言
 
@@ -3295,6 +3288,6 @@ WHERE cust_state = 'IL' ORDER BY cust_name;
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/mysql/20240314-environment.md b/src/java-tutorial/mysql/20240314-environment.md
similarity index 80%
rename from docs/src/java-tutorial/mysql/20240314-environment.md
rename to src/java-tutorial/mysql/20240314-environment.md
index 1205fd8b61..796bc563a4 100644
--- a/docs/src/java-tutorial/mysql/20240314-environment.md
+++ b/src/java-tutorial/mysql/20240314-environment.md
@@ -7,20 +7,6 @@ tag:
     - SQL
     - MySQL
 ---
-# 开发环境搭建
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
 
 ## 下载
 
@@ -78,7 +64,7 @@ port=3306
 default-character-set=utf8
 ```
 
-第四步，以管理员权限打开控制台，输入以下命令，会打印初始化的 `root` 密码，一定要记住，待会儿要用它来改密码。
+第四步，以管理yuan权限打开控制台，输入以下命令，会打印初始化的 `root` 密码，一定要记住，待会儿要用它来改密码。
 
 ```shell
 mysqld --initialize --console
diff --git a/src/java-tutorial/mysql/README.md b/src/java-tutorial/mysql/README.md
new file mode 100644
index 0000000000..a09a518860
--- /dev/null
+++ b/src/java-tutorial/mysql/README.md
@@ -0,0 +1,6 @@
+---
+title: MySQL
+index: false
+icon: iconfont icon-mysql
+---
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/java-tutorial/mysql/assets/0D39E534BBF4F7D451CCD1CDBDDFD56A.png b/src/java-tutorial/mysql/assets/0D39E534BBF4F7D451CCD1CDBDDFD56A.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/0D39E534BBF4F7D451CCD1CDBDDFD56A.png
rename to src/java-tutorial/mysql/assets/0D39E534BBF4F7D451CCD1CDBDDFD56A.png
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/0e1ed91b28963198a9e0b555c0f5fba1.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/0e1ed91b28963198a9e0b555c0f5fba1.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/0e1ed91b28963198a9e0b555c0f5fba1.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/0e1ed91b28963198a9e0b555c0f5fba1.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/1ad7fb54a7f669840dd4ab469384015c.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/1ad7fb54a7f669840dd4ab469384015c.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/1ad7fb54a7f669840dd4ab469384015c.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/1ad7fb54a7f669840dd4ab469384015c.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/1d93614d9179873de1447357980753ac.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/1d93614d9179873de1447357980753ac.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/1d93614d9179873de1447357980753ac.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/1d93614d9179873de1447357980753ac.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/1e097422e9744c03ce78b5eb78a47f4d.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/1e097422e9744c03ce78b5eb78a47f4d.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/1e097422e9744c03ce78b5eb78a47f4d.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/1e097422e9744c03ce78b5eb78a47f4d.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/20210621222713867.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/20210621222713867.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/20210621222713867.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/20210621222713867.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/3b5e33e5c405b04c197823cad14d14bb.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/3b5e33e5c405b04c197823cad14d14bb.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/3b5e33e5c405b04c197823cad14d14bb.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/3b5e33e5c405b04c197823cad14d14bb.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/42f899cc442c8651f142ea8069f6564a.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/42f899cc442c8651f142ea8069f6564a.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/42f899cc442c8651f142ea8069f6564a.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/42f899cc442c8651f142ea8069f6564a.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/4a338ce2e13e99616e06c1d74dc1e4b0.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/4a338ce2e13e99616e06c1d74dc1e4b0.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/4a338ce2e13e99616e06c1d74dc1e4b0.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/4a338ce2e13e99616e06c1d74dc1e4b0.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/4bd803f437ebf60ec1bf62a3d9364e76.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/4bd803f437ebf60ec1bf62a3d9364e76.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/4bd803f437ebf60ec1bf62a3d9364e76.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/4bd803f437ebf60ec1bf62a3d9364e76.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/54e1274c4603f60b3472db5c7e2b010c.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/54e1274c4603f60b3472db5c7e2b010c.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/54e1274c4603f60b3472db5c7e2b010c.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/54e1274c4603f60b3472db5c7e2b010c.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/6ce578b106aa7b11082fcd7591a2782a.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/6ce578b106aa7b11082fcd7591a2782a.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/6ce578b106aa7b11082fcd7591a2782a.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/6ce578b106aa7b11082fcd7591a2782a.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/762bc632aca002b5b9b05b9b5781c67a.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/762bc632aca002b5b9b05b9b5781c67a.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/762bc632aca002b5b9b05b9b5781c67a.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/762bc632aca002b5b9b05b9b5781c67a.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/765282cb5887622a7f394dc8836e22bc.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/765282cb5887622a7f394dc8836e22bc.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/765282cb5887622a7f394dc8836e22bc.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/765282cb5887622a7f394dc8836e22bc.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/8aedeabdfa8bc7655c7df6cdada1cff7.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/8aedeabdfa8bc7655c7df6cdada1cff7.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/8aedeabdfa8bc7655c7df6cdada1cff7.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/8aedeabdfa8bc7655c7df6cdada1cff7.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/a281d38e3b73def59d8a1bf46134a21b.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/a281d38e3b73def59d8a1bf46134a21b.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/a281d38e3b73def59d8a1bf46134a21b.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/a281d38e3b73def59d8a1bf46134a21b.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/b40576c3f98ff17a7d2377bdde2f90ef.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/b40576c3f98ff17a7d2377bdde2f90ef.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/b40576c3f98ff17a7d2377bdde2f90ef.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/b40576c3f98ff17a7d2377bdde2f90ef.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/b6747ab4d4c7d0ea99e9babd50321c15.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/b6747ab4d4c7d0ea99e9babd50321c15.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/b6747ab4d4c7d0ea99e9babd50321c15.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/b6747ab4d4c7d0ea99e9babd50321c15.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/c57cf3385b55bf7a9b00f305f0d6cdc1.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/c57cf3385b55bf7a9b00f305f0d6cdc1.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/c57cf3385b55bf7a9b00f305f0d6cdc1.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/c57cf3385b55bf7a9b00f305f0d6cdc1.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/cc5871bac3d1814c365b6509b95fd85b.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/cc5871bac3d1814c365b6509b95fd85b.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/cc5871bac3d1814c365b6509b95fd85b.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/cc5871bac3d1814c365b6509b95fd85b.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/d900bd88136838b5b76cd88e24c496a1.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/d900bd88136838b5b76cd88e24c496a1.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/d900bd88136838b5b76cd88e24c496a1.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/d900bd88136838b5b76cd88e24c496a1.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/de23759d0dc70c0f8dc0edfc7aee4fea.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/de23759d0dc70c0f8dc0edfc7aee4fea.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/de23759d0dc70c0f8dc0edfc7aee4fea.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/de23759d0dc70c0f8dc0edfc7aee4fea.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/f40c44947c0fcd82e0d8fb6ee8ee8d4d.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/f40c44947c0fcd82e0d8fb6ee8ee8d4d.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/f40c44947c0fcd82e0d8fb6ee8ee8d4d.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/f40c44947c0fcd82e0d8fb6ee8ee8d4d.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/f952d6dd3f71332223496520431da2c5.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/f952d6dd3f71332223496520431da2c5.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/f952d6dd3f71332223496520431da2c5.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/f952d6dd3f71332223496520431da2c5.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859425.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859425.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859425.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859425.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859443.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859443.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859443.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859443.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859453.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859453.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859453.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859453.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859470.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859470.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859470.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859470.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859476.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859476.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859476.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859476.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859494.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859494.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859494.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859494.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859495.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859495.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859495.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859495.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859532.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859532.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859532.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859532.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859557-8061339.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859557-8061339.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859557-8061339.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859557-8061339.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859557.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859557.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859557.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859557.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859558.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859558.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859558.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859558.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859575.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859575.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859575.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859575.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859576.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859576.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859576.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859576.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859586.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859586.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859586.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859586.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859587.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859587.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859587.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859587.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859589.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859589.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859589.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859589.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859640.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859640.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859640.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859640.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859697.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859697.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859697.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216132859697.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70.webp b/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70.webp
rename to src/java-tutorial/mysql/assets/20210623-quick-start/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20240314-environment/SystemPropertiesComputerName_1710378718.webp b/src/java-tutorial/mysql/assets/20240314-environment/SystemPropertiesComputerName_1710378718.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20240314-environment/SystemPropertiesComputerName_1710378718.webp
rename to src/java-tutorial/mysql/assets/20240314-environment/SystemPropertiesComputerName_1710378718.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710376136.webp b/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710376136.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710376136.webp
rename to src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710376136.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710416892.webp b/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710416892.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710416892.webp
rename to src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710416892.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417052.webp b/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417052.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417052.webp
rename to src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417052.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417206.webp b/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417206.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417206.webp
rename to src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417206.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417373.webp b/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417373.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417373.webp
rename to src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417373.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417548.webp b/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417548.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417548.webp
rename to src/java-tutorial/mysql/assets/20240314-environment/WindowsTerminal_1710417548.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20240314-environment/chrome_1710375458.webp b/src/java-tutorial/mysql/assets/20240314-environment/chrome_1710375458.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20240314-environment/chrome_1710375458.webp
rename to src/java-tutorial/mysql/assets/20240314-environment/chrome_1710375458.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20240314-environment/chrome_1710375498.webp b/src/java-tutorial/mysql/assets/20240314-environment/chrome_1710375498.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20240314-environment/chrome_1710375498.webp
rename to src/java-tutorial/mysql/assets/20240314-environment/chrome_1710375498.webp
diff --git a/docs/src/java-tutorial/mysql/assets/20240314-environment/explorer_1710375709.webp b/src/java-tutorial/mysql/assets/20240314-environment/explorer_1710375709.webp
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/20240314-environment/explorer_1710375709.webp
rename to src/java-tutorial/mysql/assets/20240314-environment/explorer_1710375709.webp
diff --git a/docs/src/java-tutorial/mysql/assets/7BA735F317FA1D28FF507511833784C7.png b/src/java-tutorial/mysql/assets/7BA735F317FA1D28FF507511833784C7.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/7BA735F317FA1D28FF507511833784C7.png
rename to src/java-tutorial/mysql/assets/7BA735F317FA1D28FF507511833784C7.png
diff --git a/docs/src/java-tutorial/mysql/assets/charset.png b/src/java-tutorial/mysql/assets/charset.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/charset.png
rename to src/java-tutorial/mysql/assets/charset.png
diff --git a/docs/src/java-tutorial/mysql/assets/comment-1.png b/src/java-tutorial/mysql/assets/comment-1.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/comment-1.png
rename to src/java-tutorial/mysql/assets/comment-1.png
diff --git a/docs/src/java-tutorial/mysql/assets/comment-2.png b/src/java-tutorial/mysql/assets/comment-2.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/comment-2.png
rename to src/java-tutorial/mysql/assets/comment-2.png
diff --git a/docs/src/java-tutorial/mysql/assets/create.png b/src/java-tutorial/mysql/assets/create.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/create.png
rename to src/java-tutorial/mysql/assets/create.png
diff --git a/docs/src/java-tutorial/mysql/assets/database-overview.png b/src/java-tutorial/mysql/assets/database-overview.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/database-overview.png
rename to src/java-tutorial/mysql/assets/database-overview.png
diff --git a/docs/src/java-tutorial/mysql/assets/db-dbms.png b/src/java-tutorial/mysql/assets/db-dbms.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/db-dbms.png
rename to src/java-tutorial/mysql/assets/db-dbms.png
diff --git a/docs/src/java-tutorial/mysql/assets/db-del.png b/src/java-tutorial/mysql/assets/db-del.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/db-del.png
rename to src/java-tutorial/mysql/assets/db-del.png
diff --git a/docs/src/java-tutorial/mysql/assets/db-engine-rank.png b/src/java-tutorial/mysql/assets/db-engine-rank.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/db-engine-rank.png
rename to src/java-tutorial/mysql/assets/db-engine-rank.png
diff --git a/docs/src/java-tutorial/mysql/assets/db-treeding.png b/src/java-tutorial/mysql/assets/db-treeding.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/db-treeding.png
rename to src/java-tutorial/mysql/assets/db-treeding.png
diff --git a/docs/src/java-tutorial/mysql/assets/high-env.png b/src/java-tutorial/mysql/assets/high-env.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/high-env.png
rename to src/java-tutorial/mysql/assets/high-env.png
diff --git a/docs/src/java-tutorial/mysql/assets/high-setting.png b/src/java-tutorial/mysql/assets/high-setting.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/high-setting.png
rename to src/java-tutorial/mysql/assets/high-setting.png
diff --git a/docs/src/java-tutorial/mysql/assets/modify-record.png b/src/java-tutorial/mysql/assets/modify-record.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/modify-record.png
rename to src/java-tutorial/mysql/assets/modify-record.png
diff --git a/docs/src/java-tutorial/mysql/assets/mul-row-comment.png b/src/java-tutorial/mysql/assets/mul-row-comment.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/mul-row-comment.png
rename to src/java-tutorial/mysql/assets/mul-row-comment.png
diff --git a/docs/src/java-tutorial/mysql/assets/mysql-home.png b/src/java-tutorial/mysql/assets/mysql-home.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/mysql-home.png
rename to src/java-tutorial/mysql/assets/mysql-home.png
diff --git a/docs/src/java-tutorial/mysql/assets/mysql-init.png b/src/java-tutorial/mysql/assets/mysql-init.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/mysql-init.png
rename to src/java-tutorial/mysql/assets/mysql-init.png
diff --git a/docs/src/java-tutorial/mysql/assets/mysql-service.png b/src/java-tutorial/mysql/assets/mysql-service.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/mysql-service.png
rename to src/java-tutorial/mysql/assets/mysql-service.png
diff --git a/docs/src/java-tutorial/mysql/assets/qry.png b/src/java-tutorial/mysql/assets/qry.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/qry.png
rename to src/java-tutorial/mysql/assets/qry.png
diff --git a/docs/src/java-tutorial/mysql/assets/rdbms.png b/src/java-tutorial/mysql/assets/rdbms.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/rdbms.png
rename to src/java-tutorial/mysql/assets/rdbms.png
diff --git a/docs/src/java-tutorial/mysql/assets/root-pass.png b/src/java-tutorial/mysql/assets/root-pass.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/root-pass.png
rename to src/java-tutorial/mysql/assets/root-pass.png
diff --git a/docs/src/java-tutorial/mysql/assets/start-end.png b/src/java-tutorial/mysql/assets/start-end.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/start-end.png
rename to src/java-tutorial/mysql/assets/start-end.png
diff --git a/docs/src/java-tutorial/mysql/assets/string-type.png b/src/java-tutorial/mysql/assets/string-type.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/string-type.png
rename to src/java-tutorial/mysql/assets/string-type.png
diff --git a/docs/src/java-tutorial/mysql/assets/sys-vari.png b/src/java-tutorial/mysql/assets/sys-vari.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/sys-vari.png
rename to src/java-tutorial/mysql/assets/sys-vari.png
diff --git a/docs/src/java-tutorial/mysql/assets/tb-copy.png b/src/java-tutorial/mysql/assets/tb-copy.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/tb-copy.png
rename to src/java-tutorial/mysql/assets/tb-copy.png
diff --git a/docs/src/java-tutorial/mysql/assets/tb-del.png b/src/java-tutorial/mysql/assets/tb-del.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/tb-del.png
rename to src/java-tutorial/mysql/assets/tb-del.png
diff --git a/docs/src/java-tutorial/mysql/assets/tb-qry.png b/src/java-tutorial/mysql/assets/tb-qry.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/tb-qry.png
rename to src/java-tutorial/mysql/assets/tb-qry.png
diff --git a/docs/src/java-tutorial/mysql/assets/tb-update.png b/src/java-tutorial/mysql/assets/tb-update.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/tb-update.png
rename to src/java-tutorial/mysql/assets/tb-update.png
diff --git a/docs/src/java-tutorial/mysql/assets/time-type.png b/src/java-tutorial/mysql/assets/time-type.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/time-type.png
rename to src/java-tutorial/mysql/assets/time-type.png
diff --git a/docs/src/java-tutorial/mysql/assets/update.png b/src/java-tutorial/mysql/assets/update.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/update.png
rename to src/java-tutorial/mysql/assets/update.png
diff --git a/docs/src/java-tutorial/mysql/assets/use-db.png b/src/java-tutorial/mysql/assets/use-db.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/use-db.png
rename to src/java-tutorial/mysql/assets/use-db.png
diff --git a/docs/src/java-tutorial/mysql/assets/user-create.png b/src/java-tutorial/mysql/assets/user-create.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/user-create.png
rename to src/java-tutorial/mysql/assets/user-create.png
diff --git a/docs/src/java-tutorial/mysql/assets/user-del.png b/src/java-tutorial/mysql/assets/user-del.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/user-del.png
rename to src/java-tutorial/mysql/assets/user-del.png
diff --git a/docs/src/java-tutorial/mysql/assets/user-pass.png b/src/java-tutorial/mysql/assets/user-pass.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/user-pass.png
rename to src/java-tutorial/mysql/assets/user-pass.png
diff --git a/docs/src/java-tutorial/mysql/assets/user-qry.png b/src/java-tutorial/mysql/assets/user-qry.png
similarity index 100%
rename from docs/src/java-tutorial/mysql/assets/user-qry.png
rename to src/java-tutorial/mysql/assets/user-qry.png
diff --git a/docs/src/java-tutorial/mysql/mysql-tutorial.md b/src/java-tutorial/mysql/mysql-tutorial.md
similarity index 96%
rename from docs/src/java-tutorial/mysql/mysql-tutorial.md
rename to src/java-tutorial/mysql/mysql-tutorial.md
index 5c895847dc..9d9c22c654 100644
--- a/docs/src/java-tutorial/mysql/mysql-tutorial.md
+++ b/src/java-tutorial/mysql/mysql-tutorial.md
@@ -2,20 +2,9 @@
 index: false
 ---
 
-# 数据库简介
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-
 
-## 🎈 号外
 
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+# 数据库简介
 
 之前在 Java 基础部分的学习中，我们更多的是写一些和控制台进行交互的小程序，而这些小程序有个特点就是：一旦程序终止，那么程序中的数据就消失了。为了满足存储数据的需求，我们可以选择将程序中的数据保存到文本文件或者数据库中。而今天，我们就来看看数据库的简单知识，为后续基于数据库的开发打下基础。
 
@@ -1019,16 +1008,7 @@ ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERE
 2.  多对多
 3.  一对一
 
-#
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## 一对多（多对一）
+### 一对多（多对一）
 
 常见的就是部门和员工之间的关系，一个部门下边有多个员工，但是每个员工只能有一个部门。为了在数据库中实现这一关系，可以**在多的一方建立外键，然后指向一的一方的主键。**
 
@@ -1036,16 +1016,7 @@ ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERE
 
 最常见的有学生和课程之间的关系，每个学生可以选修多门课程，而一门课程也可以供多个学生选择。为了在数据库中实现这一关系，通常**需要建立一个第三方的中间表，而且这个中间表应该至少包含两个外键，用于关联两方的主键。**
 
-#
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
-## 一对一
+### 一对一
 
 最常见的是用户与用户详情之间的关系，多用于**单表拆分**，将一张表的基础字段放在一张表中，其他详情字段则放在另一张表中，从而提升操作效率。为了在数据库中实现这一关系，可以**在任意一张表中加入外键，用来关联另一张表的主键，并且设置该外键唯一（`UNIQUE`）**。
 
diff --git a/src/program-language/README.md b/src/program-language/README.md
new file mode 100644
index 0000000000..b35f87d0ed
--- /dev/null
+++ b/src/program-language/README.md
@@ -0,0 +1,41 @@
+---
+title: 编程语言
+index: false
+icon: iconfont icon-order
+---
+
+## C 语言
+
+1. [C 语言：内存管理函数](c/20180308-memory-manage.md)
+2. [C 语言：知识点总结](c/20180720-summary.md)
+
+## C++
+
+1. [C++ 系列：知识点总结](cpp/20180720-summary.md)
+
+## Python
+
+### 教程
+
+1. [Python 教程：简介](python/tutorial/20210331-intro.md)
+2. [Python 教程：玩转 Pycharm](python/tutorial//20210401-pycharm.md)
+3. [Python 教程：语言元素](python/tutorial/20210402-language-element.md)
+4. [Python 教程：条件判断、循环以及循环的终止](python/tutorial/20210403-condition.md)
+5. [Python 教程：购物车](python/tutorial/20220420-shopping.md)
+6. [Python 教程：turtle 库使用](python/tutorial/20180429-turtle.md)
+7. [Python 教程：数码管绘制](python/tutorial/20180501-digital-time.md)
+8. [Python 教程：Python 3.7 安装 polyglot 失败](python/tutorial/20220421-polyglot-install.md)
+
+### 编程实例
+
+1. [编程实例（1 - 5）](python/instance/20181003-1-5.md)
+2. [编程实例（6 - 10）](python/instance/20181004-6-10.md)
+3. [编程实例（11 - 15）](python/instance/20181005-11-15.md)
+4. [编程实例（16 - 20）](python/instance/20181006-16-20.md)
+5. [编程实例（21 - 25）](python/instance/20181007-21-25.md)
+6. [编程实例（26 - 30）](python/instance/20181008-26-30.md)
+7. [编程实例（31 - 35）](python/instance/20181009-31-35.md)
+8. [编程实例（36 - 40）](python/instance/20181010-36-40.md)
+9. [编程实例（41 - 45）](python/instance/20181011-41-45.md)
+10. [编程实例（46 - 50）](python/instance/20181012-46-50.md)
+11. [编程实例（51 - 55）](python/instance/20181013-51-55.md)
\ No newline at end of file
diff --git a/docs/src/program-language/c/20180308-memory-manage.md b/src/program-language/c/20180308-memory-manage.md
similarity index 83%
rename from docs/src/program-language/c/20180308-memory-manage.md
rename to src/program-language/c/20180308-memory-manage.md
index 90e7f5a5b2..c57e36158c 100644
--- a/docs/src/program-language/c/20180308-memory-manage.md
+++ b/src/program-language/c/20180308-memory-manage.md
@@ -9,19 +9,9 @@ date: 2018-03-08
 
 # 内存管理函数
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-> 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## malloc函数
 
@@ -151,7 +141,7 @@ int main()
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/program-language/c/20180720-summary.md b/src/program-language/c/20180720-summary.md
similarity index 93%
rename from docs/src/program-language/c/20180720-summary.md
rename to src/program-language/c/20180720-summary.md
index 02bbfcd701..4ec45b2838 100644
--- a/docs/src/program-language/c/20180720-summary.md
+++ b/src/program-language/c/20180720-summary.md
@@ -9,19 +9,9 @@ date: 2018-07-20
 
 # 知识点总结
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## Debug 和 Release 版本比较
 
@@ -201,7 +191,7 @@ system("notepad");
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/src/program-language/c/README.md b/src/program-language/c/README.md
new file mode 100644
index 0000000000..f9fcd0d62f
--- /dev/null
+++ b/src/program-language/c/README.md
@@ -0,0 +1,7 @@
+---
+title: C 语言
+index: false
+icon: iconfont icon-c
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/program-language/c/assets/f1e1ed9afd9b5922b54266ae771f23c0.png b/src/program-language/c/assets/f1e1ed9afd9b5922b54266ae771f23c0.png
similarity index 100%
rename from docs/src/program-language/c/assets/f1e1ed9afd9b5922b54266ae771f23c0.png
rename to src/program-language/c/assets/f1e1ed9afd9b5922b54266ae771f23c0.png
diff --git a/docs/src/program-language/cpp/20180720-summary.md b/src/program-language/cpp/20180720-summary.md
similarity index 89%
rename from docs/src/program-language/cpp/20180720-summary.md
rename to src/program-language/cpp/20180720-summary.md
index fe33ff0f33..eedd8f046c 100644
--- a/docs/src/program-language/cpp/20180720-summary.md
+++ b/src/program-language/cpp/20180720-summary.md
@@ -8,19 +8,9 @@ date: 2018-07-20
 
 # 知识点总结
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## const 在不同位置时的不同意义
 
@@ -162,7 +152,7 @@ v2 = temp;
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/src/program-language/cpp/README.md b/src/program-language/cpp/README.md
new file mode 100644
index 0000000000..b95d55c6eb
--- /dev/null
+++ b/src/program-language/cpp/README.md
@@ -0,0 +1,7 @@
+---
+title: C++ 系列
+index: false
+icon: iconfont icon-CPP
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/program-language/cpp/assets/format,png-1695857270321-3.png b/src/program-language/cpp/assets/format,png-1695857270321-3.png
similarity index 100%
rename from docs/src/program-language/cpp/assets/format,png-1695857270321-3.png
rename to src/program-language/cpp/assets/format,png-1695857270321-3.png
diff --git a/docs/src/program-language/cpp/assets/format,png.png b/src/program-language/cpp/assets/format,png.png
similarity index 100%
rename from docs/src/program-language/cpp/assets/format,png.png
rename to src/program-language/cpp/assets/format,png.png
diff --git a/src/program-language/python/README.md b/src/program-language/python/README.md
new file mode 100644
index 0000000000..bfffb8172a
--- /dev/null
+++ b/src/program-language/python/README.md
@@ -0,0 +1,6 @@
+---
+title: Python 系列
+index: false
+icon: iconfont icon-Python
+---
+<AutoCatalog />
diff --git a/docs/src/program-language/python/20181003-1-5.md b/src/program-language/python/instance/20181003-1-5.md
similarity index 89%
rename from docs/src/program-language/python/20181003-1-5.md
rename to src/program-language/python/instance/20181003-1-5.md
index 59433882f4..6992824a6a 100644
--- a/docs/src/program-language/python/20181003-1-5.md
+++ b/src/program-language/python/instance/20181003-1-5.md
@@ -8,19 +8,9 @@ date: 2018-10-03
 
 # Python3 编程实例（1 - 5）
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 一、实例 1
 
@@ -185,6 +175,6 @@ if __name__ == '__main__':
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/python/20181004-6-10.md b/src/program-language/python/instance/20181004-6-10.md
similarity index 85%
rename from docs/src/program-language/python/20181004-6-10.md
rename to src/program-language/python/instance/20181004-6-10.md
index 659fc1d2b7..95b2a7823f 100644
--- a/docs/src/program-language/python/20181004-6-10.md
+++ b/src/program-language/python/instance/20181004-6-10.md
@@ -8,19 +8,9 @@ date: 2018-10-04
 
 # Python3 编程实例（6 - 10）
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 实例 6
 
@@ -193,6 +183,6 @@ print(time.strftime("%Y-%m-%d %H:%M:%S %a", time.localtime()))
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/python/20181005-11-15.md b/src/program-language/python/instance/20181005-11-15.md
similarity index 89%
rename from docs/src/program-language/python/20181005-11-15.md
rename to src/program-language/python/instance/20181005-11-15.md
index eb21b92723..8b7c27cddf 100644
--- a/docs/src/program-language/python/20181005-11-15.md
+++ b/src/program-language/python/instance/20181005-11-15.md
@@ -8,19 +8,9 @@ date: 2018-10-05
 
 # Python3 编程实例（11 - 15）
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 实例11
 
@@ -212,6 +202,6 @@ while True:
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/python/20181006-16-20.md b/src/program-language/python/instance/20181006-16-20.md
similarity index 85%
rename from docs/src/program-language/python/20181006-16-20.md
rename to src/program-language/python/instance/20181006-16-20.md
index e536783d12..3207eee5f0 100644
--- a/docs/src/program-language/python/20181006-16-20.md
+++ b/src/program-language/python/instance/20181006-16-20.md
@@ -8,20 +8,9 @@ date: 2018-10-06
 
 # Python3 编程实例（16 - 20）
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 实例16
 
@@ -215,6 +204,6 @@ print('第10次反弹距离: ', distance / 2)
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/python/20181007-21-25.md b/src/program-language/python/instance/20181007-21-25.md
similarity index 89%
rename from docs/src/program-language/python/20181007-21-25.md
rename to src/program-language/python/instance/20181007-21-25.md
index c0f1599fbc..70a0b2dab1 100644
--- a/docs/src/program-language/python/20181007-21-25.md
+++ b/src/program-language/python/instance/20181007-21-25.md
@@ -8,19 +8,9 @@ date: 2018-10-07
 
 # Python3 编程实例（21 - 25）
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 实例 21
 
@@ -253,6 +243,6 @@ if __name__ == '__main__':
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/python/20181008-26-30.md b/src/program-language/python/instance/20181008-26-30.md
similarity index 89%
rename from docs/src/program-language/python/20181008-26-30.md
rename to src/program-language/python/instance/20181008-26-30.md
index 091bae2fb8..220dc71dd9 100644
--- a/docs/src/program-language/python/20181008-26-30.md
+++ b/src/program-language/python/instance/20181008-26-30.md
@@ -8,19 +8,9 @@ date: 2018-10-08
 
 # Python3 编程实例（26 - 30）
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 实例 26
 
@@ -255,6 +245,6 @@ if __name__ == '__main__':
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/python/20181009-31-35.md b/src/program-language/python/instance/20181009-31-35.md
similarity index 89%
rename from docs/src/program-language/python/20181009-31-35.md
rename to src/program-language/python/instance/20181009-31-35.md
index e4dc887207..7279ca2d04 100644
--- a/docs/src/program-language/python/20181009-31-35.md
+++ b/src/program-language/python/instance/20181009-31-35.md
@@ -8,19 +8,9 @@ date: 2018-10-09
 
 # Python3 编程实例（31 - 35）
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 实例 31
 
@@ -280,6 +270,6 @@ if __name__ == '__main__':
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/python/20181010-36-40.md b/src/program-language/python/instance/20181010-36-40.md
similarity index 89%
rename from docs/src/program-language/python/20181010-36-40.md
rename to src/program-language/python/instance/20181010-36-40.md
index 057a883632..742ae7596b 100644
--- a/docs/src/program-language/python/20181010-36-40.md
+++ b/src/program-language/python/instance/20181010-36-40.md
@@ -8,19 +8,9 @@ date: 2018-10-10
 
 # Python3 编程实例（36 - 40）
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 实例 36
 
@@ -275,6 +265,6 @@ if __name__ == '__main__':
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/python/20181011-41-45.md b/src/program-language/python/instance/20181011-41-45.md
similarity index 87%
rename from docs/src/program-language/python/20181011-41-45.md
rename to src/program-language/python/instance/20181011-41-45.md
index 0599f93bdf..3c270e5ce2 100644
--- a/docs/src/program-language/python/20181011-41-45.md
+++ b/src/program-language/python/instance/20181011-41-45.md
@@ -8,19 +8,9 @@ date: 2018-10-11
 
 # Python3 编程实例（41 - 45）
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 实例 41
 
@@ -270,6 +260,6 @@ if __name__ == '__main__':
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/python/20181012-46-50.md b/src/program-language/python/instance/20181012-46-50.md
similarity index 86%
rename from docs/src/program-language/python/20181012-46-50.md
rename to src/program-language/python/instance/20181012-46-50.md
index 7ef5424aa1..e3e53b9f8d 100644
--- a/docs/src/program-language/python/20181012-46-50.md
+++ b/src/program-language/python/instance/20181012-46-50.md
@@ -8,19 +8,9 @@ date: 2018-10-12
 
 # Python3 编程实例（46 - 50）
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 实例 46
 
@@ -235,6 +225,6 @@ if __name__ == '__main__':
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/python/20181013-51-55.md b/src/program-language/python/instance/20181013-51-55.md
similarity index 87%
rename from docs/src/program-language/python/20181013-51-55.md
rename to src/program-language/python/instance/20181013-51-55.md
index 2b5cd0e591..fcb1e79ec3 100644
--- a/docs/src/program-language/python/20181013-51-55.md
+++ b/src/program-language/python/instance/20181013-51-55.md
@@ -8,19 +8,9 @@ date: 2018-10-13
 
 # Python3 编程实例（51 - 55）
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 实例 51
 
@@ -251,6 +241,6 @@ if __name__ == '__main__':
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/program-language/python/instance/README.md b/src/program-language/python/instance/README.md
new file mode 100644
index 0000000000..3e54742cc1
--- /dev/null
+++ b/src/program-language/python/instance/README.md
@@ -0,0 +1,7 @@
+---
+title: Python 实例
+index: false
+icon: fa-solid fa-snowflake
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/program-language/python/assets/0306e03b7c9269178fe9c0dbc6b09222.webp b/src/program-language/python/instance/assets/0306e03b7c9269178fe9c0dbc6b09222.webp
similarity index 100%
rename from docs/src/program-language/python/assets/0306e03b7c9269178fe9c0dbc6b09222.webp
rename to src/program-language/python/instance/assets/0306e03b7c9269178fe9c0dbc6b09222.webp
diff --git a/docs/src/program-language/python/assets/0311815ffc7ef8b90560d2da17a57f89.webp b/src/program-language/python/instance/assets/0311815ffc7ef8b90560d2da17a57f89.webp
similarity index 100%
rename from docs/src/program-language/python/assets/0311815ffc7ef8b90560d2da17a57f89.webp
rename to src/program-language/python/instance/assets/0311815ffc7ef8b90560d2da17a57f89.webp
diff --git a/docs/src/program-language/python/assets/06cb62b17916c0e5c885a3b7764da9e5.webp b/src/program-language/python/instance/assets/06cb62b17916c0e5c885a3b7764da9e5.webp
similarity index 100%
rename from docs/src/program-language/python/assets/06cb62b17916c0e5c885a3b7764da9e5.webp
rename to src/program-language/python/instance/assets/06cb62b17916c0e5c885a3b7764da9e5.webp
diff --git a/docs/src/program-language/python/assets/12b2dd13b04b75a0d886bdd09b16c241.webp b/src/program-language/python/instance/assets/12b2dd13b04b75a0d886bdd09b16c241.webp
similarity index 100%
rename from docs/src/program-language/python/assets/12b2dd13b04b75a0d886bdd09b16c241.webp
rename to src/program-language/python/instance/assets/12b2dd13b04b75a0d886bdd09b16c241.webp
diff --git a/docs/src/program-language/python/assets/14.webp b/src/program-language/python/instance/assets/14.webp
similarity index 100%
rename from docs/src/program-language/python/assets/14.webp
rename to src/program-language/python/instance/assets/14.webp
diff --git a/docs/src/program-language/python/assets/16.webp b/src/program-language/python/instance/assets/16.webp
similarity index 100%
rename from docs/src/program-language/python/assets/16.webp
rename to src/program-language/python/instance/assets/16.webp
diff --git a/docs/src/program-language/python/assets/17.webp b/src/program-language/python/instance/assets/17.webp
similarity index 100%
rename from docs/src/program-language/python/assets/17.webp
rename to src/program-language/python/instance/assets/17.webp
diff --git a/docs/src/program-language/python/assets/18.webp b/src/program-language/python/instance/assets/18.webp
similarity index 100%
rename from docs/src/program-language/python/assets/18.webp
rename to src/program-language/python/instance/assets/18.webp
diff --git a/docs/src/program-language/python/assets/20190306220952858.webp b/src/program-language/python/instance/assets/20190306220952858.webp
similarity index 100%
rename from docs/src/program-language/python/assets/20190306220952858.webp
rename to src/program-language/python/instance/assets/20190306220952858.webp
diff --git a/docs/src/program-language/python/assets/20190306221430823.webp b/src/program-language/python/instance/assets/20190306221430823.webp
similarity index 100%
rename from docs/src/program-language/python/assets/20190306221430823.webp
rename to src/program-language/python/instance/assets/20190306221430823.webp
diff --git a/docs/src/program-language/python/assets/2137ca714c6bfc2d5d8fc568a7a8cc27.webp b/src/program-language/python/instance/assets/2137ca714c6bfc2d5d8fc568a7a8cc27.webp
similarity index 100%
rename from docs/src/program-language/python/assets/2137ca714c6bfc2d5d8fc568a7a8cc27.webp
rename to src/program-language/python/instance/assets/2137ca714c6bfc2d5d8fc568a7a8cc27.webp
diff --git a/docs/src/program-language/python/assets/24e946da5d5f2805dfdc220cac8a3532.webp b/src/program-language/python/instance/assets/24e946da5d5f2805dfdc220cac8a3532.webp
similarity index 100%
rename from docs/src/program-language/python/assets/24e946da5d5f2805dfdc220cac8a3532.webp
rename to src/program-language/python/instance/assets/24e946da5d5f2805dfdc220cac8a3532.webp
diff --git a/docs/src/program-language/python/assets/2a4d0c660ac395da2154ff1ad09f1095.webp b/src/program-language/python/instance/assets/2a4d0c660ac395da2154ff1ad09f1095.webp
similarity index 100%
rename from docs/src/program-language/python/assets/2a4d0c660ac395da2154ff1ad09f1095.webp
rename to src/program-language/python/instance/assets/2a4d0c660ac395da2154ff1ad09f1095.webp
diff --git a/docs/src/program-language/python/assets/2bf0e9c40e393851939be2555d19a5c6.webp b/src/program-language/python/instance/assets/2bf0e9c40e393851939be2555d19a5c6.webp
similarity index 100%
rename from docs/src/program-language/python/assets/2bf0e9c40e393851939be2555d19a5c6.webp
rename to src/program-language/python/instance/assets/2bf0e9c40e393851939be2555d19a5c6.webp
diff --git a/docs/src/program-language/python/assets/30eb84286f843e21d35696bc2cf4e0c3.webp b/src/program-language/python/instance/assets/30eb84286f843e21d35696bc2cf4e0c3.webp
similarity index 100%
rename from docs/src/program-language/python/assets/30eb84286f843e21d35696bc2cf4e0c3.webp
rename to src/program-language/python/instance/assets/30eb84286f843e21d35696bc2cf4e0c3.webp
diff --git a/docs/src/program-language/python/assets/351d121ddd49b55fa8d3d06210bb5375.webp b/src/program-language/python/instance/assets/351d121ddd49b55fa8d3d06210bb5375.webp
similarity index 100%
rename from docs/src/program-language/python/assets/351d121ddd49b55fa8d3d06210bb5375.webp
rename to src/program-language/python/instance/assets/351d121ddd49b55fa8d3d06210bb5375.webp
diff --git a/docs/src/program-language/python/assets/4d5e0dd7ac80ee79c72e805a0f788b91.webp b/src/program-language/python/instance/assets/4d5e0dd7ac80ee79c72e805a0f788b91.webp
similarity index 100%
rename from docs/src/program-language/python/assets/4d5e0dd7ac80ee79c72e805a0f788b91.webp
rename to src/program-language/python/instance/assets/4d5e0dd7ac80ee79c72e805a0f788b91.webp
diff --git a/docs/src/program-language/python/assets/4f8d682996da2028bb70b22be50204c4.webp b/src/program-language/python/instance/assets/4f8d682996da2028bb70b22be50204c4.webp
similarity index 100%
rename from docs/src/program-language/python/assets/4f8d682996da2028bb70b22be50204c4.webp
rename to src/program-language/python/instance/assets/4f8d682996da2028bb70b22be50204c4.webp
diff --git a/docs/src/program-language/python/assets/5f2aafbc83756776c6172a4b69fc64eb.webp b/src/program-language/python/instance/assets/5f2aafbc83756776c6172a4b69fc64eb.webp
similarity index 100%
rename from docs/src/program-language/python/assets/5f2aafbc83756776c6172a4b69fc64eb.webp
rename to src/program-language/python/instance/assets/5f2aafbc83756776c6172a4b69fc64eb.webp
diff --git a/docs/src/program-language/python/assets/607e99c51283c29b9a3cd7b52348b85b.webp b/src/program-language/python/instance/assets/607e99c51283c29b9a3cd7b52348b85b.webp
similarity index 100%
rename from docs/src/program-language/python/assets/607e99c51283c29b9a3cd7b52348b85b.webp
rename to src/program-language/python/instance/assets/607e99c51283c29b9a3cd7b52348b85b.webp
diff --git a/docs/src/program-language/python/assets/67730a9cbb95fe76a8df77fa7ddedd2b.webp b/src/program-language/python/instance/assets/67730a9cbb95fe76a8df77fa7ddedd2b.webp
similarity index 100%
rename from docs/src/program-language/python/assets/67730a9cbb95fe76a8df77fa7ddedd2b.webp
rename to src/program-language/python/instance/assets/67730a9cbb95fe76a8df77fa7ddedd2b.webp
diff --git a/docs/src/program-language/python/assets/6ba8755bd93e020d89474da1a54c7ce7.webp b/src/program-language/python/instance/assets/6ba8755bd93e020d89474da1a54c7ce7.webp
similarity index 100%
rename from docs/src/program-language/python/assets/6ba8755bd93e020d89474da1a54c7ce7.webp
rename to src/program-language/python/instance/assets/6ba8755bd93e020d89474da1a54c7ce7.webp
diff --git a/docs/src/program-language/python/assets/70-1695774275180-1.webp b/src/program-language/python/instance/assets/70-1695774275180-1.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-1695774275180-1.webp
rename to src/program-language/python/instance/assets/70-1695774275180-1.webp
diff --git a/docs/src/program-language/python/assets/70-1695774275180-2.webp b/src/program-language/python/instance/assets/70-1695774275180-2.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-1695774275180-2.webp
rename to src/program-language/python/instance/assets/70-1695774275180-2.webp
diff --git a/docs/src/program-language/python/assets/70-1695774275181-3.webp b/src/program-language/python/instance/assets/70-1695774275181-3.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-1695774275181-3.webp
rename to src/program-language/python/instance/assets/70-1695774275181-3.webp
diff --git a/docs/src/program-language/python/assets/70-1695778321002-14.webp b/src/program-language/python/instance/assets/70-1695778321002-14.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-1695778321002-14.webp
rename to src/program-language/python/instance/assets/70-1695778321002-14.webp
diff --git a/docs/src/program-language/python/assets/70-1695778321002-15.webp b/src/program-language/python/instance/assets/70-1695778321002-15.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-1695778321002-15.webp
rename to src/program-language/python/instance/assets/70-1695778321002-15.webp
diff --git a/docs/src/program-language/python/assets/70-1695778321003-16.webp b/src/program-language/python/instance/assets/70-1695778321003-16.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-1695778321003-16.webp
rename to src/program-language/python/instance/assets/70-1695778321003-16.webp
diff --git a/docs/src/program-language/python/assets/70-1695778321003-17.webp b/src/program-language/python/instance/assets/70-1695778321003-17.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-1695778321003-17.webp
rename to src/program-language/python/instance/assets/70-1695778321003-17.webp
diff --git a/docs/src/program-language/python/assets/70-1695778321003-18.webp b/src/program-language/python/instance/assets/70-1695778321003-18.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-1695778321003-18.webp
rename to src/program-language/python/instance/assets/70-1695778321003-18.webp
diff --git a/docs/src/program-language/python/assets/70-1695778509031-29.webp b/src/program-language/python/instance/assets/70-1695778509031-29.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-1695778509031-29.webp
rename to src/program-language/python/instance/assets/70-1695778509031-29.webp
diff --git a/docs/src/program-language/python/assets/70-1695778509032-30.webp b/src/program-language/python/instance/assets/70-1695778509032-30.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-1695778509032-30.webp
rename to src/program-language/python/instance/assets/70-1695778509032-30.webp
diff --git a/docs/src/program-language/python/assets/70-1695778509032-31.webp b/src/program-language/python/instance/assets/70-1695778509032-31.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-1695778509032-31.webp
rename to src/program-language/python/instance/assets/70-1695778509032-31.webp
diff --git a/docs/src/program-language/python/assets/70-1695778509033-32.webp b/src/program-language/python/instance/assets/70-1695778509033-32.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-1695778509033-32.webp
rename to src/program-language/python/instance/assets/70-1695778509033-32.webp
diff --git a/src/program-language/python/instance/assets/70.webp b/src/program-language/python/instance/assets/70.webp
new file mode 100644
index 0000000000..8d8021b95c
Binary files /dev/null and b/src/program-language/python/instance/assets/70.webp differ
diff --git a/docs/src/program-language/python/assets/7c6582d11734a3ff2fc1442430f69477.webp b/src/program-language/python/instance/assets/7c6582d11734a3ff2fc1442430f69477.webp
similarity index 100%
rename from docs/src/program-language/python/assets/7c6582d11734a3ff2fc1442430f69477.webp
rename to src/program-language/python/instance/assets/7c6582d11734a3ff2fc1442430f69477.webp
diff --git a/docs/src/program-language/python/assets/86a7c740fce355f18ff11660fb266695.webp b/src/program-language/python/instance/assets/86a7c740fce355f18ff11660fb266695.webp
similarity index 100%
rename from docs/src/program-language/python/assets/86a7c740fce355f18ff11660fb266695.webp
rename to src/program-language/python/instance/assets/86a7c740fce355f18ff11660fb266695.webp
diff --git a/docs/src/program-language/python/assets/8d765261cb6911aca7c465a20e4be367.webp b/src/program-language/python/instance/assets/8d765261cb6911aca7c465a20e4be367.webp
similarity index 100%
rename from docs/src/program-language/python/assets/8d765261cb6911aca7c465a20e4be367.webp
rename to src/program-language/python/instance/assets/8d765261cb6911aca7c465a20e4be367.webp
diff --git a/docs/src/program-language/python/assets/8d8cc23ca81e8eb1986435fe6e70572c.webp b/src/program-language/python/instance/assets/8d8cc23ca81e8eb1986435fe6e70572c.webp
similarity index 100%
rename from docs/src/program-language/python/assets/8d8cc23ca81e8eb1986435fe6e70572c.webp
rename to src/program-language/python/instance/assets/8d8cc23ca81e8eb1986435fe6e70572c.webp
diff --git a/docs/src/program-language/python/assets/952501b20ff658866fae6570388b65e1.webp b/src/program-language/python/instance/assets/952501b20ff658866fae6570388b65e1.webp
similarity index 100%
rename from docs/src/program-language/python/assets/952501b20ff658866fae6570388b65e1.webp
rename to src/program-language/python/instance/assets/952501b20ff658866fae6570388b65e1.webp
diff --git a/docs/src/program-language/python/assets/9b558d1a505e162b106ce96d26903a6e.webp b/src/program-language/python/instance/assets/9b558d1a505e162b106ce96d26903a6e.webp
similarity index 100%
rename from docs/src/program-language/python/assets/9b558d1a505e162b106ce96d26903a6e.webp
rename to src/program-language/python/instance/assets/9b558d1a505e162b106ce96d26903a6e.webp
diff --git a/docs/src/program-language/python/assets/af2b5c03ba8eb64d22e9328550803a84.webp b/src/program-language/python/instance/assets/af2b5c03ba8eb64d22e9328550803a84.webp
similarity index 100%
rename from docs/src/program-language/python/assets/af2b5c03ba8eb64d22e9328550803a84.webp
rename to src/program-language/python/instance/assets/af2b5c03ba8eb64d22e9328550803a84.webp
diff --git a/docs/src/program-language/python/assets/b482197ffb441cc1840beacfc5ce3410.webp b/src/program-language/python/instance/assets/b482197ffb441cc1840beacfc5ce3410.webp
similarity index 100%
rename from docs/src/program-language/python/assets/b482197ffb441cc1840beacfc5ce3410.webp
rename to src/program-language/python/instance/assets/b482197ffb441cc1840beacfc5ce3410.webp
diff --git a/docs/src/program-language/python/assets/bb312c49f3398338d6d3985d1b306221.webp b/src/program-language/python/instance/assets/bb312c49f3398338d6d3985d1b306221.webp
similarity index 100%
rename from docs/src/program-language/python/assets/bb312c49f3398338d6d3985d1b306221.webp
rename to src/program-language/python/instance/assets/bb312c49f3398338d6d3985d1b306221.webp
diff --git a/docs/src/program-language/python/assets/bc014d7804cf24fe5db3b79dcec5ed54.webp b/src/program-language/python/instance/assets/bc014d7804cf24fe5db3b79dcec5ed54.webp
similarity index 100%
rename from docs/src/program-language/python/assets/bc014d7804cf24fe5db3b79dcec5ed54.webp
rename to src/program-language/python/instance/assets/bc014d7804cf24fe5db3b79dcec5ed54.webp
diff --git a/docs/src/program-language/python/assets/d9bad8492cb8623326b2c300e2f0835e.webp b/src/program-language/python/instance/assets/d9bad8492cb8623326b2c300e2f0835e.webp
similarity index 100%
rename from docs/src/program-language/python/assets/d9bad8492cb8623326b2c300e2f0835e.webp
rename to src/program-language/python/instance/assets/d9bad8492cb8623326b2c300e2f0835e.webp
diff --git a/docs/src/program-language/python/assets/dafa98fd483f97f571d2dfb3dc1d6502.webp b/src/program-language/python/instance/assets/dafa98fd483f97f571d2dfb3dc1d6502.webp
similarity index 100%
rename from docs/src/program-language/python/assets/dafa98fd483f97f571d2dfb3dc1d6502.webp
rename to src/program-language/python/instance/assets/dafa98fd483f97f571d2dfb3dc1d6502.webp
diff --git a/docs/src/program-language/python/assets/dfae4b66e5e355408177670883eeb0cb.webp b/src/program-language/python/instance/assets/dfae4b66e5e355408177670883eeb0cb.webp
similarity index 100%
rename from docs/src/program-language/python/assets/dfae4b66e5e355408177670883eeb0cb.webp
rename to src/program-language/python/instance/assets/dfae4b66e5e355408177670883eeb0cb.webp
diff --git a/docs/src/program-language/python/assets/e417bc76768f823c2ed23eb117e2ed66.webp b/src/program-language/python/instance/assets/e417bc76768f823c2ed23eb117e2ed66.webp
similarity index 100%
rename from docs/src/program-language/python/assets/e417bc76768f823c2ed23eb117e2ed66.webp
rename to src/program-language/python/instance/assets/e417bc76768f823c2ed23eb117e2ed66.webp
diff --git a/docs/src/program-language/python/assets/ee7e0bee8cbd7e314c656e4bcdd8b629.webp b/src/program-language/python/instance/assets/ee7e0bee8cbd7e314c656e4bcdd8b629.webp
similarity index 100%
rename from docs/src/program-language/python/assets/ee7e0bee8cbd7e314c656e4bcdd8b629.webp
rename to src/program-language/python/instance/assets/ee7e0bee8cbd7e314c656e4bcdd8b629.webp
diff --git a/docs/src/program-language/python/assets/f3df8e3672bb85747dc523555c2d63cb.webp b/src/program-language/python/instance/assets/f3df8e3672bb85747dc523555c2d63cb.webp
similarity index 100%
rename from docs/src/program-language/python/assets/f3df8e3672bb85747dc523555c2d63cb.webp
rename to src/program-language/python/instance/assets/f3df8e3672bb85747dc523555c2d63cb.webp
diff --git a/docs/src/program-language/python/assets/f8f7c4b5f749929628a7258a93a3ef5a.webp b/src/program-language/python/instance/assets/f8f7c4b5f749929628a7258a93a3ef5a.webp
similarity index 100%
rename from docs/src/program-language/python/assets/f8f7c4b5f749929628a7258a93a3ef5a.webp
rename to src/program-language/python/instance/assets/f8f7c4b5f749929628a7258a93a3ef5a.webp
diff --git a/docs/src/program-language/python/assets/fbeaa90730ea4754d0fa144258a097bf.webp b/src/program-language/python/instance/assets/fbeaa90730ea4754d0fa144258a097bf.webp
similarity index 100%
rename from docs/src/program-language/python/assets/fbeaa90730ea4754d0fa144258a097bf.webp
rename to src/program-language/python/instance/assets/fbeaa90730ea4754d0fa144258a097bf.webp
diff --git a/docs/src/program-language/python/assets/fcd17a6652abbfae103643fef1de75b6.webp b/src/program-language/python/instance/assets/fcd17a6652abbfae103643fef1de75b6.webp
similarity index 100%
rename from docs/src/program-language/python/assets/fcd17a6652abbfae103643fef1de75b6.webp
rename to src/program-language/python/instance/assets/fcd17a6652abbfae103643fef1de75b6.webp
diff --git a/docs/src/program-language/python/20180429-turtle.md b/src/program-language/python/tutorial/20180429-turtle.md
similarity index 89%
rename from docs/src/program-language/python/20180429-turtle.md
rename to src/program-language/python/tutorial/20180429-turtle.md
index 6a546b5a8e..349a87b4b1 100644
--- a/docs/src/program-language/python/20180429-turtle.md
+++ b/src/program-language/python/tutorial/20180429-turtle.md
@@ -8,20 +8,9 @@ tag:
 
 # turtle 库使用
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
- 
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## Turtle图形库
 
@@ -230,7 +219,7 @@ tt.mainloop()
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/program-language/python/20180501-digital-time.md b/src/program-language/python/tutorial/20180501-digital-time.md
similarity index 82%
rename from docs/src/program-language/python/20180501-digital-time.md
rename to src/program-language/python/tutorial/20180501-digital-time.md
index 3909632b75..ea0a64eadf 100644
--- a/docs/src/program-language/python/20180501-digital-time.md
+++ b/src/program-language/python/tutorial/20180501-digital-time.md
@@ -8,20 +8,9 @@ tag:
 
 # 数码管绘制
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ##  利用 Python 中的 turtle 图形库绘制七段数码管，显示当前时间。
 
@@ -154,7 +143,7 @@ if __name__ == "__main__":
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/program-language/python/20210331-intro.md b/src/program-language/python/tutorial/20210331-intro.md
similarity index 93%
rename from docs/src/program-language/python/20210331-intro.md
rename to src/program-language/python/tutorial/20210331-intro.md
index 17f20ab851..8ac0ef348e 100644
--- a/docs/src/program-language/python/20210331-intro.md
+++ b/src/program-language/python/tutorial/20210331-intro.md
@@ -8,19 +8,9 @@ date: 2021-03-31
 
 # 简介
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 前言
 
@@ -193,7 +183,7 @@ Pycharm 分为社区版（Community）和专业版（Professional），两者的
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/program-language/python/20210401-pycharm.md b/src/program-language/python/tutorial/20210401-pycharm.md
similarity index 92%
rename from docs/src/program-language/python/20210401-pycharm.md
rename to src/program-language/python/tutorial/20210401-pycharm.md
index 48359480b8..c899cdef5f 100644
--- a/docs/src/program-language/python/20210401-pycharm.md
+++ b/src/program-language/python/tutorial/20210401-pycharm.md
@@ -8,19 +8,9 @@ date: 2021-04-01
 
 # 玩转 Pycharm
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 前言
 
@@ -177,7 +167,7 @@ Key Promoter X 帮助你在工作时学习必要的快捷方式。当你在 IDE
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/program-language/python/20210402-language-element.md b/src/program-language/python/tutorial/20210402-language-element.md
similarity index 97%
rename from docs/src/program-language/python/20210402-language-element.md
rename to src/program-language/python/tutorial/20210402-language-element.md
index a8c465dc23..20953f0cb9 100644
--- a/docs/src/program-language/python/20210402-language-element.md
+++ b/src/program-language/python/tutorial/20210402-language-element.md
@@ -8,19 +8,9 @@ date: 2021-04-02
 
 # 语言元素
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 前言
 
@@ -378,7 +368,7 @@ Python 支持多种运算符，但是运算符之间也是有优先级的，下
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/docs/src/program-language/python/20210403-condition.md b/src/program-language/python/tutorial/20210403-condition.md
similarity index 78%
rename from docs/src/program-language/python/20210403-condition.md
rename to src/program-language/python/tutorial/20210403-condition.md
index 8a1d26b352..2a338f5ad3 100644
--- a/docs/src/program-language/python/20210403-condition.md
+++ b/src/program-language/python/tutorial/20210403-condition.md
@@ -7,19 +7,9 @@ date: 2021-04-03
 ---
 # 条件判断、循环以及循环的终止
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 条件判断
 
@@ -143,6 +133,6 @@ while num < 20:
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/python/20220420-shopping.md b/src/program-language/python/tutorial/20220420-shopping.md
similarity index 79%
rename from docs/src/program-language/python/20220420-shopping.md
rename to src/program-language/python/tutorial/20220420-shopping.md
index f77045d9d8..59211fdab7 100644
--- a/docs/src/program-language/python/20220420-shopping.md
+++ b/src/program-language/python/tutorial/20220420-shopping.md
@@ -8,19 +8,9 @@ date: 2022-04-20
 
 # Python 实现购物车
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 要求
 ![](assets/35-20230927212503189.webp)
@@ -95,6 +85,6 @@ else:
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/docs/src/program-language/python/20220421-polyglot-install.md b/src/program-language/python/tutorial/20220421-polyglot-install.md
similarity index 80%
rename from docs/src/program-language/python/20220421-polyglot-install.md
rename to src/program-language/python/tutorial/20220421-polyglot-install.md
index 296bc31da1..a795ee4c8b 100644
--- a/docs/src/program-language/python/20220421-polyglot-install.md
+++ b/src/program-language/python/tutorial/20220421-polyglot-install.md
@@ -10,19 +10,11 @@ date: 2022-04-21
 
 # Python 3.7 安装 polyglot 失败
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
-## 🎈 号外
 
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
 
 ## 一、前言
 
@@ -91,6 +83,6 @@ pip install xxx.whl
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
\ No newline at end of file
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/program-language/python/tutorial/README.md b/src/program-language/python/tutorial/README.md
new file mode 100644
index 0000000000..a94fe69957
--- /dev/null
+++ b/src/program-language/python/tutorial/README.md
@@ -0,0 +1,7 @@
+---
+title: Python 教程
+index: false
+icon: fa-solid fa-compass
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/program-language/python/assets/0e7a1fb893dfdc7084caf1edd7546bff.webp b/src/program-language/python/tutorial/assets/0e7a1fb893dfdc7084caf1edd7546bff.webp
similarity index 100%
rename from docs/src/program-language/python/assets/0e7a1fb893dfdc7084caf1edd7546bff.webp
rename to src/program-language/python/tutorial/assets/0e7a1fb893dfdc7084caf1edd7546bff.webp
diff --git a/docs/src/program-language/python/assets/16bf0c47bc13d07d612a596f647a42f6.webp b/src/program-language/python/tutorial/assets/16bf0c47bc13d07d612a596f647a42f6.webp
similarity index 100%
rename from docs/src/program-language/python/assets/16bf0c47bc13d07d612a596f647a42f6.webp
rename to src/program-language/python/tutorial/assets/16bf0c47bc13d07d612a596f647a42f6.webp
diff --git a/docs/src/program-language/python/assets/29d676a199331e9b9bb0fc087ab3d61a.webp b/src/program-language/python/tutorial/assets/29d676a199331e9b9bb0fc087ab3d61a.webp
similarity index 100%
rename from docs/src/program-language/python/assets/29d676a199331e9b9bb0fc087ab3d61a.webp
rename to src/program-language/python/tutorial/assets/29d676a199331e9b9bb0fc087ab3d61a.webp
diff --git a/docs/src/program-language/python/assets/35-20230927212503159-5821103.webp b/src/program-language/python/tutorial/assets/35-20230927212503159-5821103.webp
similarity index 100%
rename from docs/src/program-language/python/assets/35-20230927212503159-5821103.webp
rename to src/program-language/python/tutorial/assets/35-20230927212503159-5821103.webp
diff --git a/docs/src/program-language/python/assets/35-20230927212503159.webp b/src/program-language/python/tutorial/assets/35-20230927212503159.webp
similarity index 100%
rename from docs/src/program-language/python/assets/35-20230927212503159.webp
rename to src/program-language/python/tutorial/assets/35-20230927212503159.webp
diff --git a/docs/src/program-language/python/assets/35-20230927212503160.webp b/src/program-language/python/tutorial/assets/35-20230927212503160.webp
similarity index 100%
rename from docs/src/program-language/python/assets/35-20230927212503160.webp
rename to src/program-language/python/tutorial/assets/35-20230927212503160.webp
diff --git a/docs/src/program-language/python/assets/35-20230927212503189.webp b/src/program-language/python/tutorial/assets/35-20230927212503189.webp
similarity index 100%
rename from docs/src/program-language/python/assets/35-20230927212503189.webp
rename to src/program-language/python/tutorial/assets/35-20230927212503189.webp
diff --git a/docs/src/program-language/python/assets/3799027410bf8b163f0e7f76639a6e93.webp b/src/program-language/python/tutorial/assets/3799027410bf8b163f0e7f76639a6e93.webp
similarity index 100%
rename from docs/src/program-language/python/assets/3799027410bf8b163f0e7f76639a6e93.webp
rename to src/program-language/python/tutorial/assets/3799027410bf8b163f0e7f76639a6e93.webp
diff --git a/docs/src/program-language/python/assets/49d504c7da23f74fe3c940e94c8218cc.webp b/src/program-language/python/tutorial/assets/49d504c7da23f74fe3c940e94c8218cc.webp
similarity index 100%
rename from docs/src/program-language/python/assets/49d504c7da23f74fe3c940e94c8218cc.webp
rename to src/program-language/python/tutorial/assets/49d504c7da23f74fe3c940e94c8218cc.webp
diff --git a/docs/src/program-language/python/assets/5c8466fe9f30afe281cc53823f8aa56f.webp b/src/program-language/python/tutorial/assets/5c8466fe9f30afe281cc53823f8aa56f.webp
similarity index 100%
rename from docs/src/program-language/python/assets/5c8466fe9f30afe281cc53823f8aa56f.webp
rename to src/program-language/python/tutorial/assets/5c8466fe9f30afe281cc53823f8aa56f.webp
diff --git a/docs/src/program-language/python/assets/6c30e489e6cb42b5fb1d361a8dc059b5.webp b/src/program-language/python/tutorial/assets/6c30e489e6cb42b5fb1d361a8dc059b5.webp
similarity index 100%
rename from docs/src/program-language/python/assets/6c30e489e6cb42b5fb1d361a8dc059b5.webp
rename to src/program-language/python/tutorial/assets/6c30e489e6cb42b5fb1d361a8dc059b5.webp
diff --git a/docs/src/program-language/python/assets/70-20230927211958101.webp b/src/program-language/python/tutorial/assets/70-20230927211958101.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-20230927211958101.webp
rename to src/program-language/python/tutorial/assets/70-20230927211958101.webp
diff --git a/docs/src/program-language/python/assets/70-20230927211958111-5820798.webp b/src/program-language/python/tutorial/assets/70-20230927211958111-5820798.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-20230927211958111-5820798.webp
rename to src/program-language/python/tutorial/assets/70-20230927211958111-5820798.webp
diff --git a/docs/src/program-language/python/assets/70-20230927211958111.webp b/src/program-language/python/tutorial/assets/70-20230927211958111.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-20230927211958111.webp
rename to src/program-language/python/tutorial/assets/70-20230927211958111.webp
diff --git a/docs/src/program-language/python/assets/70-20230927211958117.webp b/src/program-language/python/tutorial/assets/70-20230927211958117.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-20230927211958117.webp
rename to src/program-language/python/tutorial/assets/70-20230927211958117.webp
diff --git a/docs/src/program-language/python/assets/70-20230927211958121.webp b/src/program-language/python/tutorial/assets/70-20230927211958121.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70-20230927211958121.webp
rename to src/program-language/python/tutorial/assets/70-20230927211958121.webp
diff --git a/docs/src/program-language/python/assets/70.png b/src/program-language/python/tutorial/assets/70.png
similarity index 100%
rename from docs/src/program-language/python/assets/70.png
rename to src/program-language/python/tutorial/assets/70.png
diff --git a/docs/src/program-language/python/assets/70.webp b/src/program-language/python/tutorial/assets/70.webp
similarity index 100%
rename from docs/src/program-language/python/assets/70.webp
rename to src/program-language/python/tutorial/assets/70.webp
diff --git a/docs/src/program-language/python/assets/71423640d214226a7ec32b1e87e0bb9f.webp b/src/program-language/python/tutorial/assets/71423640d214226a7ec32b1e87e0bb9f.webp
similarity index 100%
rename from docs/src/program-language/python/assets/71423640d214226a7ec32b1e87e0bb9f.webp
rename to src/program-language/python/tutorial/assets/71423640d214226a7ec32b1e87e0bb9f.webp
diff --git a/docs/src/program-language/python/assets/73072aca947678e919a869064d9208c4.webp b/src/program-language/python/tutorial/assets/73072aca947678e919a869064d9208c4.webp
similarity index 100%
rename from docs/src/program-language/python/assets/73072aca947678e919a869064d9208c4.webp
rename to src/program-language/python/tutorial/assets/73072aca947678e919a869064d9208c4.webp
diff --git a/docs/src/program-language/python/assets/7bd1100cb4410f2402e4db29c437a803.webp b/src/program-language/python/tutorial/assets/7bd1100cb4410f2402e4db29c437a803.webp
similarity index 100%
rename from docs/src/program-language/python/assets/7bd1100cb4410f2402e4db29c437a803.webp
rename to src/program-language/python/tutorial/assets/7bd1100cb4410f2402e4db29c437a803.webp
diff --git a/docs/src/program-language/python/assets/7e4f979740e9172cb67529d2c2e0e0de.webp b/src/program-language/python/tutorial/assets/7e4f979740e9172cb67529d2c2e0e0de.webp
similarity index 100%
rename from docs/src/program-language/python/assets/7e4f979740e9172cb67529d2c2e0e0de.webp
rename to src/program-language/python/tutorial/assets/7e4f979740e9172cb67529d2c2e0e0de.webp
diff --git a/docs/src/program-language/python/assets/80607d6e0f82c72f48a7f24b8608fe16.webp b/src/program-language/python/tutorial/assets/80607d6e0f82c72f48a7f24b8608fe16.webp
similarity index 100%
rename from docs/src/program-language/python/assets/80607d6e0f82c72f48a7f24b8608fe16.webp
rename to src/program-language/python/tutorial/assets/80607d6e0f82c72f48a7f24b8608fe16.webp
diff --git a/docs/src/program-language/python/assets/8ca9baaecb1dee9be4151349e1a6d90c.webp b/src/program-language/python/tutorial/assets/8ca9baaecb1dee9be4151349e1a6d90c.webp
similarity index 100%
rename from docs/src/program-language/python/assets/8ca9baaecb1dee9be4151349e1a6d90c.webp
rename to src/program-language/python/tutorial/assets/8ca9baaecb1dee9be4151349e1a6d90c.webp
diff --git a/docs/src/program-language/python/assets/9814ec37596914db65de4e3bfb658147.webp b/src/program-language/python/tutorial/assets/9814ec37596914db65de4e3bfb658147.webp
similarity index 100%
rename from docs/src/program-language/python/assets/9814ec37596914db65de4e3bfb658147.webp
rename to src/program-language/python/tutorial/assets/9814ec37596914db65de4e3bfb658147.webp
diff --git a/docs/src/program-language/python/assets/98179aacae011d4e63f76f2a8e3ee751.webp b/src/program-language/python/tutorial/assets/98179aacae011d4e63f76f2a8e3ee751.webp
similarity index 100%
rename from docs/src/program-language/python/assets/98179aacae011d4e63f76f2a8e3ee751.webp
rename to src/program-language/python/tutorial/assets/98179aacae011d4e63f76f2a8e3ee751.webp
diff --git a/docs/src/program-language/python/assets/a173df6a25cd32ca737c04ae0a05288d.gif b/src/program-language/python/tutorial/assets/a173df6a25cd32ca737c04ae0a05288d.gif
similarity index 100%
rename from docs/src/program-language/python/assets/a173df6a25cd32ca737c04ae0a05288d.gif
rename to src/program-language/python/tutorial/assets/a173df6a25cd32ca737c04ae0a05288d.gif
diff --git a/docs/src/program-language/python/assets/a2c78fee57297605714b27ffb234114b.webp b/src/program-language/python/tutorial/assets/a2c78fee57297605714b27ffb234114b.webp
similarity index 100%
rename from docs/src/program-language/python/assets/a2c78fee57297605714b27ffb234114b.webp
rename to src/program-language/python/tutorial/assets/a2c78fee57297605714b27ffb234114b.webp
diff --git a/docs/src/program-language/python/assets/a92ed29cba2827742e670ae68e01fa3e.webp b/src/program-language/python/tutorial/assets/a92ed29cba2827742e670ae68e01fa3e.webp
similarity index 100%
rename from docs/src/program-language/python/assets/a92ed29cba2827742e670ae68e01fa3e.webp
rename to src/program-language/python/tutorial/assets/a92ed29cba2827742e670ae68e01fa3e.webp
diff --git a/docs/src/program-language/python/assets/ad461d4bda468fbe78a91662df324bc4.webp b/src/program-language/python/tutorial/assets/ad461d4bda468fbe78a91662df324bc4.webp
similarity index 100%
rename from docs/src/program-language/python/assets/ad461d4bda468fbe78a91662df324bc4.webp
rename to src/program-language/python/tutorial/assets/ad461d4bda468fbe78a91662df324bc4.webp
diff --git a/docs/src/program-language/python/assets/b11764761a1bf073e026770a9df38a8d.webp b/src/program-language/python/tutorial/assets/b11764761a1bf073e026770a9df38a8d.webp
similarity index 100%
rename from docs/src/program-language/python/assets/b11764761a1bf073e026770a9df38a8d.webp
rename to src/program-language/python/tutorial/assets/b11764761a1bf073e026770a9df38a8d.webp
diff --git a/docs/src/program-language/python/assets/bc808c4b285907db9b554b7aabc8cc66.webp b/src/program-language/python/tutorial/assets/bc808c4b285907db9b554b7aabc8cc66.webp
similarity index 100%
rename from docs/src/program-language/python/assets/bc808c4b285907db9b554b7aabc8cc66.webp
rename to src/program-language/python/tutorial/assets/bc808c4b285907db9b554b7aabc8cc66.webp
diff --git a/docs/src/program-language/python/assets/c12bca92c4851c32314d57c50ae55b9e.webp b/src/program-language/python/tutorial/assets/c12bca92c4851c32314d57c50ae55b9e.webp
similarity index 100%
rename from docs/src/program-language/python/assets/c12bca92c4851c32314d57c50ae55b9e.webp
rename to src/program-language/python/tutorial/assets/c12bca92c4851c32314d57c50ae55b9e.webp
diff --git a/docs/src/program-language/python/assets/c16975219aba59f6ada5b1dc33e4bdaa.webp b/src/program-language/python/tutorial/assets/c16975219aba59f6ada5b1dc33e4bdaa.webp
similarity index 100%
rename from docs/src/program-language/python/assets/c16975219aba59f6ada5b1dc33e4bdaa.webp
rename to src/program-language/python/tutorial/assets/c16975219aba59f6ada5b1dc33e4bdaa.webp
diff --git a/docs/src/program-language/python/assets/d62427869102b8303851d72c554d2e21.webp b/src/program-language/python/tutorial/assets/d62427869102b8303851d72c554d2e21.webp
similarity index 100%
rename from docs/src/program-language/python/assets/d62427869102b8303851d72c554d2e21.webp
rename to src/program-language/python/tutorial/assets/d62427869102b8303851d72c554d2e21.webp
diff --git a/docs/src/program-language/python/assets/d79c08242f0785f990ac24b8ce3a8e31.gif b/src/program-language/python/tutorial/assets/d79c08242f0785f990ac24b8ce3a8e31.gif
similarity index 100%
rename from docs/src/program-language/python/assets/d79c08242f0785f990ac24b8ce3a8e31.gif
rename to src/program-language/python/tutorial/assets/d79c08242f0785f990ac24b8ce3a8e31.gif
diff --git a/docs/src/program-language/python/assets/db111d1087f42f403b8511ecfd79f487.webp b/src/program-language/python/tutorial/assets/db111d1087f42f403b8511ecfd79f487.webp
similarity index 100%
rename from docs/src/program-language/python/assets/db111d1087f42f403b8511ecfd79f487.webp
rename to src/program-language/python/tutorial/assets/db111d1087f42f403b8511ecfd79f487.webp
diff --git a/docs/src/program-language/python/assets/dd92c4e805ca2942d73a7fc529ae289b.webp b/src/program-language/python/tutorial/assets/dd92c4e805ca2942d73a7fc529ae289b.webp
similarity index 100%
rename from docs/src/program-language/python/assets/dd92c4e805ca2942d73a7fc529ae289b.webp
rename to src/program-language/python/tutorial/assets/dd92c4e805ca2942d73a7fc529ae289b.webp
diff --git a/docs/src/program-language/python/assets/ea4642873c6d8ffa309c941738d51b0b.webp b/src/program-language/python/tutorial/assets/ea4642873c6d8ffa309c941738d51b0b.webp
similarity index 100%
rename from docs/src/program-language/python/assets/ea4642873c6d8ffa309c941738d51b0b.webp
rename to src/program-language/python/tutorial/assets/ea4642873c6d8ffa309c941738d51b0b.webp
diff --git a/docs/src/program-language/python/assets/format,png-1695857759420-8.png b/src/program-language/python/tutorial/assets/format,png-1695857759420-8.png
similarity index 100%
rename from docs/src/program-language/python/assets/format,png-1695857759420-8.png
rename to src/program-language/python/tutorial/assets/format,png-1695857759420-8.png
diff --git a/docs/src/program-language/python/assets/format,png-1695857759420-9.png b/src/program-language/python/tutorial/assets/format,png-1695857759420-9.png
similarity index 100%
rename from docs/src/program-language/python/assets/format,png-1695857759420-9.png
rename to src/program-language/python/tutorial/assets/format,png-1695857759420-9.png
diff --git a/docs/src/program-language/python/assets/format,png.png b/src/program-language/python/tutorial/assets/format,png.png
similarity index 100%
rename from docs/src/program-language/python/assets/format,png.png
rename to src/program-language/python/tutorial/assets/format,png.png
diff --git a/src/tutorial/README.md b/src/tutorial/README.md
new file mode 100644
index 0000000000..c82531ed89
--- /dev/null
+++ b/src/tutorial/README.md
@@ -0,0 +1,53 @@
+---
+title: 基础教程
+index: false
+icon: iconfont icon-interview
+---
+
+## 博客搭建
+
+1. [博客搭建：Vuepress + GitHub Actions 实现博客自动部署](blog/20210826-vuepress.md)
+2. [博客搭建：Hexo + Github Pages 博客搭建教程](blog/20220401-hexo.md)
+3. [博客搭建：dumi 博客搭建](blog/20220610-dumi.md)
+4. [博客搭建：Hugo + Github Pages 博客搭建教程](blog/20220611-hugo.md)
+5. [博客搭建：Halo 博客搭建教程](blog/20201228-halo.md)
+6. [博客搭建：docsify 文档型博客搭建](blog/20220612-docsify.md)
+
+## IDEA 教程
+
+1. [IDEA 教程：创建 Java 入门应用](idea/20210914-java-app.md)
+2. [IDEA 教程：实用小技巧](idea/20211010-tips.md)
+3. [IDEA 教程：集成并使用 Git 图文教程](idea/20220105-git.md)
+4. [IDEA 教程：最新版 IntelliJ IDEA 使用手册](idea/20220202-idea-guide.md)
+5. [IDEA 教程：原来大厂都是这么提交代码的](idea/20230525-code-commit.md)
+
+## 效率工具
+
+1. [效率工具：如何用 Markdown 写出好看的文章](efficiency/20230425-markdown-tutorial.md)
+2. [效率工具：10 个神奇的网站，助力带薪摸鱼](efficiency/20220729-10-amazing-website.md)
+3. [效率工具：网站访问太慢，不妨试试这些 CDN](efficiency/20220729-cdn.md)
+4. [效率工具：计算机专业涨薪必备的几个网站](efficiency/20220731-exercise-websites.md)
+5. [效率工具：黑客大神也常用的一些 CMD 命令](efficiency/20221127-cmd.md)
+6. [效率工具：如何在浏览器中安装插件](efficiency/20230710-browser-plugin-install.md)
+7. [效率工具：Emoji 表情大作战](efficiency/20220729-emoji.md)
+8. [效率工具：macOS 安装 Node.js](efficiency/20221114-macos-install-node.md)
+9. [效率工具：iTerm2 + Fish 高效终端](efficiency/20220426-iterm2-fish.md)
+10. [效率工具：iTerm2 + Oh My Zsh 终端神器](efficiency/20220811-iterm2-zsh.md)
+11. [效率工具：PPT 模板免费下载](efficiency/20220623-ppt-template.md)
+12. [效率工具：Windows 安装 Node.js](efficiency/20200511-windows-install-node.md)
+13. [效率工具：Ubuntu 默认 root 密码修改](efficiency/20200517-ubuntu-root-pwd.md)
+14. [效率工具：VMware 安装 Ubuntu](efficiency/20200518-vmware-ubuntu.md)
+15. [效率工具：XShell 连接 Ubuntu](efficiency/20200519-xshell-ubuntu.md)
+16. [效率工具：手把手配置 Ubuntu](efficiency/20200520-ubuntu.md)
+17. [效率工具：玩转 Manjora](efficiency/20200521-manjora.md)
+18. [效率工具：如何给视频添加字幕](efficiency/20201010-video-subtitle.md)
+19. [效率工具：U 盘启动盘制作](efficiency/20201229-u-disk-sys-booter.md)
+20. [效率工具：优雅地使用 Windows 10](efficiency/20201230-windows-tips.md)
+21. [效率工具：Windows 系统安装教程](efficiency/20201231-windows-sys.md)
+22. [效率工具：如何制作电子签名](efficiency/20210422-signature.md)
+23. [效率工具：技术写作中的神兵利器](efficiency/20210504-write-tools.md)
+24. [效率工具：PPT 模板免费下载](efficiency/20220623-ppt-template.md)
+
+## 软件设计师
+
+1. [软设：计算机系统](software-designer/20221024-computer-system.md)
diff --git a/docs/src/tutorial/blog/20201228-halo.md b/src/tutorial/blog/20201228-halo.md
similarity index 94%
rename from docs/src/tutorial/blog/20201228-halo.md
rename to src/tutorial/blog/20201228-halo.md
index 06b3cc636d..32af14328e 100644
--- a/docs/src/tutorial/blog/20201228-halo.md
+++ b/src/tutorial/blog/20201228-halo.md
@@ -9,20 +9,6 @@ tag:
 
 # Halo 博客搭建教程
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 ### 说在前面
diff --git a/docs/src/tutorial/blog/20210826-vuepress.md b/src/tutorial/blog/20210826-vuepress.md
similarity index 91%
rename from docs/src/tutorial/blog/20210826-vuepress.md
rename to src/tutorial/blog/20210826-vuepress.md
index 35a795520d..139828abb1 100644
--- a/docs/src/tutorial/blog/20210826-vuepress.md
+++ b/src/tutorial/blog/20210826-vuepress.md
@@ -10,20 +10,6 @@ tag:
 
 # Vuepress + GitHub Actions 实现博客自动部署
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 正常我们利用 Vuepress 搭建一个文档博客之后，往往都是通过如下步骤来部署一篇博客：
diff --git a/docs/src/tutorial/blog/20220401-hexo.md b/src/tutorial/blog/20220401-hexo.md
similarity index 95%
rename from docs/src/tutorial/blog/20220401-hexo.md
rename to src/tutorial/blog/20220401-hexo.md
index 6cca967d81..88be645cc4 100644
--- a/docs/src/tutorial/blog/20220401-hexo.md
+++ b/src/tutorial/blog/20220401-hexo.md
@@ -9,19 +9,10 @@ tag:
 ---
 # Hexo + Github Pages 博客搭建教程
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
 
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 前言
 
diff --git a/docs/src/tutorial/blog/20220610-dumi.md b/src/tutorial/blog/20220610-dumi.md
similarity index 87%
rename from docs/src/tutorial/blog/20220610-dumi.md
rename to src/tutorial/blog/20220610-dumi.md
index 12974994d7..87305c7bda 100644
--- a/docs/src/tutorial/blog/20220610-dumi.md
+++ b/src/tutorial/blog/20220610-dumi.md
@@ -9,20 +9,6 @@ tag:
 
 # dumi 搭建文档型博客
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 之前已经讲过如何利用网上各种开源的框架来搭建自己的博客，比如 `docsify`、`Hexo`、`VuePress`、`Halo` 等。前三者可以直接搭配 `Github` 就能免费得到一个专属自己的博客，而 `Halo` 可能需要自己有服务器，然后将服务部署在自己的服务器里。
diff --git a/docs/src/tutorial/blog/20220611-hugo.md b/src/tutorial/blog/20220611-hugo.md
similarity index 89%
rename from docs/src/tutorial/blog/20220611-hugo.md
rename to src/tutorial/blog/20220611-hugo.md
index a70a36160a..4817be2838 100644
--- a/docs/src/tutorial/blog/20220611-hugo.md
+++ b/src/tutorial/blog/20220611-hugo.md
@@ -10,20 +10,6 @@ tag:
 
 # Hugo + Github Pages 博客搭建教程
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 有了利用 `Hexo`、`docsify`、`vuepress` 等框架来搭建博客的经历之后，我们来今天又来看看 `Hugo`。`Hugo` 是一款基于 `Go` 语言而实现的静态网站生成器，具有简单易用、高效易扩展、快速部署的特点。
diff --git a/docs/src/tutorial/blog/20220612-docsify.md b/src/tutorial/blog/20220612-docsify.md
similarity index 91%
rename from docs/src/tutorial/blog/20220612-docsify.md
rename to src/tutorial/blog/20220612-docsify.md
index d6eb7d87b7..e62fc7193c 100644
--- a/docs/src/tutorial/blog/20220612-docsify.md
+++ b/src/tutorial/blog/20220612-docsify.md
@@ -10,20 +10,6 @@ tag:
 
 # docsify 文档型博客搭建
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 在开始之前，请先确保你已经满足以下两个条件：
diff --git a/src/tutorial/blog/README.md b/src/tutorial/blog/README.md
new file mode 100644
index 0000000000..eb33ac6dd7
--- /dev/null
+++ b/src/tutorial/blog/README.md
@@ -0,0 +1,7 @@
+---
+title: 博客搭建
+index: false
+icon: iconfont icon-blog
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/tutorial/blog/assets/20201228-halo/0ea59523b032883f42611d5e49c52513.webp b/src/tutorial/blog/assets/20201228-halo/0ea59523b032883f42611d5e49c52513.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20201228-halo/0ea59523b032883f42611d5e49c52513.webp
rename to src/tutorial/blog/assets/20201228-halo/0ea59523b032883f42611d5e49c52513.webp
diff --git a/docs/src/tutorial/blog/assets/20201228-halo/1bbb76ec98a28520bbb4b1b12fded507.webp b/src/tutorial/blog/assets/20201228-halo/1bbb76ec98a28520bbb4b1b12fded507.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20201228-halo/1bbb76ec98a28520bbb4b1b12fded507.webp
rename to src/tutorial/blog/assets/20201228-halo/1bbb76ec98a28520bbb4b1b12fded507.webp
diff --git a/docs/src/tutorial/blog/assets/20201228-halo/2726bb06b3ed74295099be252fe59ae7.webp b/src/tutorial/blog/assets/20201228-halo/2726bb06b3ed74295099be252fe59ae7.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20201228-halo/2726bb06b3ed74295099be252fe59ae7.webp
rename to src/tutorial/blog/assets/20201228-halo/2726bb06b3ed74295099be252fe59ae7.webp
diff --git a/docs/src/tutorial/blog/assets/20201228-halo/39a6d494380610a19da62949d7927967.webp b/src/tutorial/blog/assets/20201228-halo/39a6d494380610a19da62949d7927967.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20201228-halo/39a6d494380610a19da62949d7927967.webp
rename to src/tutorial/blog/assets/20201228-halo/39a6d494380610a19da62949d7927967.webp
diff --git a/docs/src/tutorial/blog/assets/20201228-halo/5762059b50b9a217169ca9ebc02b90bd.webp b/src/tutorial/blog/assets/20201228-halo/5762059b50b9a217169ca9ebc02b90bd.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20201228-halo/5762059b50b9a217169ca9ebc02b90bd.webp
rename to src/tutorial/blog/assets/20201228-halo/5762059b50b9a217169ca9ebc02b90bd.webp
diff --git a/docs/src/tutorial/blog/assets/20201228-halo/9edf4e765f7b9c1e7aa34c667f663557.webp b/src/tutorial/blog/assets/20201228-halo/9edf4e765f7b9c1e7aa34c667f663557.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20201228-halo/9edf4e765f7b9c1e7aa34c667f663557.webp
rename to src/tutorial/blog/assets/20201228-halo/9edf4e765f7b9c1e7aa34c667f663557.webp
diff --git a/docs/src/tutorial/blog/assets/20201228-halo/bed2bee9316c15d75553b80522b8d686.webp b/src/tutorial/blog/assets/20201228-halo/bed2bee9316c15d75553b80522b8d686.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20201228-halo/bed2bee9316c15d75553b80522b8d686.webp
rename to src/tutorial/blog/assets/20201228-halo/bed2bee9316c15d75553b80522b8d686.webp
diff --git a/docs/src/tutorial/blog/assets/20201228-halo/f44b8d7753c628576920afee7cb73c56.webp b/src/tutorial/blog/assets/20201228-halo/f44b8d7753c628576920afee7cb73c56.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20201228-halo/f44b8d7753c628576920afee7cb73c56.webp
rename to src/tutorial/blog/assets/20201228-halo/f44b8d7753c628576920afee7cb73c56.webp
diff --git a/docs/src/tutorial/blog/assets/20210826-vuepress/182c48f80f42f1b2085b0b3684e9b1fc.webp b/src/tutorial/blog/assets/20210826-vuepress/182c48f80f42f1b2085b0b3684e9b1fc.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20210826-vuepress/182c48f80f42f1b2085b0b3684e9b1fc.webp
rename to src/tutorial/blog/assets/20210826-vuepress/182c48f80f42f1b2085b0b3684e9b1fc.webp
diff --git a/docs/src/tutorial/blog/assets/20210826-vuepress/263ad40d8338b257f2b8852e7b622cad.webp b/src/tutorial/blog/assets/20210826-vuepress/263ad40d8338b257f2b8852e7b622cad.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20210826-vuepress/263ad40d8338b257f2b8852e7b622cad.webp
rename to src/tutorial/blog/assets/20210826-vuepress/263ad40d8338b257f2b8852e7b622cad.webp
diff --git a/docs/src/tutorial/blog/assets/20210826-vuepress/5052e39e5de806967f5dcd97619b2984.webp b/src/tutorial/blog/assets/20210826-vuepress/5052e39e5de806967f5dcd97619b2984.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20210826-vuepress/5052e39e5de806967f5dcd97619b2984.webp
rename to src/tutorial/blog/assets/20210826-vuepress/5052e39e5de806967f5dcd97619b2984.webp
diff --git a/docs/src/tutorial/blog/assets/20210826-vuepress/6d49049a1ba67ac80b5c6480e79da729.webp b/src/tutorial/blog/assets/20210826-vuepress/6d49049a1ba67ac80b5c6480e79da729.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20210826-vuepress/6d49049a1ba67ac80b5c6480e79da729.webp
rename to src/tutorial/blog/assets/20210826-vuepress/6d49049a1ba67ac80b5c6480e79da729.webp
diff --git a/docs/src/tutorial/blog/assets/20210826-vuepress/73b1aebaa00a49182756a17adac2430c.webp b/src/tutorial/blog/assets/20210826-vuepress/73b1aebaa00a49182756a17adac2430c.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20210826-vuepress/73b1aebaa00a49182756a17adac2430c.webp
rename to src/tutorial/blog/assets/20210826-vuepress/73b1aebaa00a49182756a17adac2430c.webp
diff --git a/docs/src/tutorial/blog/assets/20210826-vuepress/8c815342f2679356f1cccc9c28f97f3f.webp b/src/tutorial/blog/assets/20210826-vuepress/8c815342f2679356f1cccc9c28f97f3f.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20210826-vuepress/8c815342f2679356f1cccc9c28f97f3f.webp
rename to src/tutorial/blog/assets/20210826-vuepress/8c815342f2679356f1cccc9c28f97f3f.webp
diff --git a/docs/src/tutorial/blog/assets/20210826-vuepress/a057ab9c0039b346a0f90a0b2ce30c5a.webp b/src/tutorial/blog/assets/20210826-vuepress/a057ab9c0039b346a0f90a0b2ce30c5a.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20210826-vuepress/a057ab9c0039b346a0f90a0b2ce30c5a.webp
rename to src/tutorial/blog/assets/20210826-vuepress/a057ab9c0039b346a0f90a0b2ce30c5a.webp
diff --git a/docs/src/tutorial/blog/assets/20210826-vuepress/f2ec4500b986f31f6c1e56b32079c17a.webp b/src/tutorial/blog/assets/20210826-vuepress/f2ec4500b986f31f6c1e56b32079c17a.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20210826-vuepress/f2ec4500b986f31f6c1e56b32079c17a.webp
rename to src/tutorial/blog/assets/20210826-vuepress/f2ec4500b986f31f6c1e56b32079c17a.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/add-ssh-key.webp b/src/tutorial/blog/assets/20220401-hexo/add-ssh-key.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/add-ssh-key.webp
rename to src/tutorial/blog/assets/20220401-hexo/add-ssh-key.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/arti-context.webp b/src/tutorial/blog/assets/20220401-hexo/arti-context.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/arti-context.webp
rename to src/tutorial/blog/assets/20220401-hexo/arti-context.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/arti-demo.webp b/src/tutorial/blog/assets/20220401-hexo/arti-demo.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/arti-demo.webp
rename to src/tutorial/blog/assets/20220401-hexo/arti-demo.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/article.webp b/src/tutorial/blog/assets/20220401-hexo/article.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/article.webp
rename to src/tutorial/blog/assets/20220401-hexo/article.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/blog-domain-home.webp b/src/tutorial/blog/assets/20220401-hexo/blog-domain-home.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/blog-domain-home.webp
rename to src/tutorial/blog/assets/20220401-hexo/blog-domain-home.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/blog-home.webp b/src/tutorial/blog/assets/20220401-hexo/blog-home.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/blog-home.webp
rename to src/tutorial/blog/assets/20220401-hexo/blog-home.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/config.webp b/src/tutorial/blog/assets/20220401-hexo/config.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/config.webp
rename to src/tutorial/blog/assets/20220401-hexo/config.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/domain.webp b/src/tutorial/blog/assets/20220401-hexo/domain.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/domain.webp
rename to src/tutorial/blog/assets/20220401-hexo/domain.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/doman-setting.webp b/src/tutorial/blog/assets/20220401-hexo/doman-setting.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/doman-setting.webp
rename to src/tutorial/blog/assets/20220401-hexo/doman-setting.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/gitbash-here.webp b/src/tutorial/blog/assets/20220401-hexo/gitbash-here.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/gitbash-here.webp
rename to src/tutorial/blog/assets/20220401-hexo/gitbash-here.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/gitee-home.webp b/src/tutorial/blog/assets/20220401-hexo/gitee-home.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/gitee-home.webp
rename to src/tutorial/blog/assets/20220401-hexo/gitee-home.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/gitee-repo.webp b/src/tutorial/blog/assets/20220401-hexo/gitee-repo.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/gitee-repo.webp
rename to src/tutorial/blog/assets/20220401-hexo/gitee-repo.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/hexo-install.webp b/src/tutorial/blog/assets/20220401-hexo/hexo-install.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/hexo-install.webp
rename to src/tutorial/blog/assets/20220401-hexo/hexo-install.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/id-rsa.webp b/src/tutorial/blog/assets/20220401-hexo/id-rsa.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/id-rsa.webp
rename to src/tutorial/blog/assets/20220401-hexo/id-rsa.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/init-blog.webp b/src/tutorial/blog/assets/20220401-hexo/init-blog.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/init-blog.webp
rename to src/tutorial/blog/assets/20220401-hexo/init-blog.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/new-blog.webp b/src/tutorial/blog/assets/20220401-hexo/new-blog.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/new-blog.webp
rename to src/tutorial/blog/assets/20220401-hexo/new-blog.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/node-v.webp b/src/tutorial/blog/assets/20220401-hexo/node-v.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/node-v.webp
rename to src/tutorial/blog/assets/20220401-hexo/node-v.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/page-setting.webp b/src/tutorial/blog/assets/20220401-hexo/page-setting.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/page-setting.webp
rename to src/tutorial/blog/assets/20220401-hexo/page-setting.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/repo-gitee.webp b/src/tutorial/blog/assets/20220401-hexo/repo-gitee.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/repo-gitee.webp
rename to src/tutorial/blog/assets/20220401-hexo/repo-gitee.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/repo-setting.webp b/src/tutorial/blog/assets/20220401-hexo/repo-setting.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/repo-setting.webp
rename to src/tutorial/blog/assets/20220401-hexo/repo-setting.webp
diff --git a/docs/src/tutorial/blog/assets/20220401-hexo/ssh-key.webp b/src/tutorial/blog/assets/20220401-hexo/ssh-key.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220401-hexo/ssh-key.webp
rename to src/tutorial/blog/assets/20220401-hexo/ssh-key.webp
diff --git a/docs/src/tutorial/blog/assets/20220610-dumi/00f5b5bf65d24602e3c2702572819a2e.webp b/src/tutorial/blog/assets/20220610-dumi/00f5b5bf65d24602e3c2702572819a2e.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220610-dumi/00f5b5bf65d24602e3c2702572819a2e.webp
rename to src/tutorial/blog/assets/20220610-dumi/00f5b5bf65d24602e3c2702572819a2e.webp
diff --git a/docs/src/tutorial/blog/assets/20220610-dumi/194fc4bf8bb3d542fae4ba35f849af67.webp b/src/tutorial/blog/assets/20220610-dumi/194fc4bf8bb3d542fae4ba35f849af67.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220610-dumi/194fc4bf8bb3d542fae4ba35f849af67.webp
rename to src/tutorial/blog/assets/20220610-dumi/194fc4bf8bb3d542fae4ba35f849af67.webp
diff --git a/docs/src/tutorial/blog/assets/20220610-dumi/19cfca0e3e270a805509bca768290e1d.webp b/src/tutorial/blog/assets/20220610-dumi/19cfca0e3e270a805509bca768290e1d.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220610-dumi/19cfca0e3e270a805509bca768290e1d.webp
rename to src/tutorial/blog/assets/20220610-dumi/19cfca0e3e270a805509bca768290e1d.webp
diff --git a/docs/src/tutorial/blog/assets/20220610-dumi/1ce6ed710afc8664fecffeea809eda48.webp b/src/tutorial/blog/assets/20220610-dumi/1ce6ed710afc8664fecffeea809eda48.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220610-dumi/1ce6ed710afc8664fecffeea809eda48.webp
rename to src/tutorial/blog/assets/20220610-dumi/1ce6ed710afc8664fecffeea809eda48.webp
diff --git a/docs/src/tutorial/blog/assets/20220610-dumi/1de4e00f12b0853e038bc3c069d6d9e4.webp b/src/tutorial/blog/assets/20220610-dumi/1de4e00f12b0853e038bc3c069d6d9e4.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220610-dumi/1de4e00f12b0853e038bc3c069d6d9e4.webp
rename to src/tutorial/blog/assets/20220610-dumi/1de4e00f12b0853e038bc3c069d6d9e4.webp
diff --git a/docs/src/tutorial/blog/assets/20220610-dumi/4c5b205b52dd81509c3909ef993b1cb6.webp b/src/tutorial/blog/assets/20220610-dumi/4c5b205b52dd81509c3909ef993b1cb6.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220610-dumi/4c5b205b52dd81509c3909ef993b1cb6.webp
rename to src/tutorial/blog/assets/20220610-dumi/4c5b205b52dd81509c3909ef993b1cb6.webp
diff --git a/docs/src/tutorial/blog/assets/20220610-dumi/4e138ac7ccf22bd375b75152b8aeae8a.webp b/src/tutorial/blog/assets/20220610-dumi/4e138ac7ccf22bd375b75152b8aeae8a.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220610-dumi/4e138ac7ccf22bd375b75152b8aeae8a.webp
rename to src/tutorial/blog/assets/20220610-dumi/4e138ac7ccf22bd375b75152b8aeae8a.webp
diff --git a/docs/src/tutorial/blog/assets/20220610-dumi/62b8d06bbd002bf9da2e7de0ffeb01fb.webp b/src/tutorial/blog/assets/20220610-dumi/62b8d06bbd002bf9da2e7de0ffeb01fb.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220610-dumi/62b8d06bbd002bf9da2e7de0ffeb01fb.webp
rename to src/tutorial/blog/assets/20220610-dumi/62b8d06bbd002bf9da2e7de0ffeb01fb.webp
diff --git a/docs/src/tutorial/blog/assets/20220610-dumi/866d0121f0ec6bc86303f82091c56840.webp b/src/tutorial/blog/assets/20220610-dumi/866d0121f0ec6bc86303f82091c56840.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220610-dumi/866d0121f0ec6bc86303f82091c56840.webp
rename to src/tutorial/blog/assets/20220610-dumi/866d0121f0ec6bc86303f82091c56840.webp
diff --git a/docs/src/tutorial/blog/assets/20220611-hugo/28806f5981a5420c9000e5ec1a3d5794.webp b/src/tutorial/blog/assets/20220611-hugo/28806f5981a5420c9000e5ec1a3d5794.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220611-hugo/28806f5981a5420c9000e5ec1a3d5794.webp
rename to src/tutorial/blog/assets/20220611-hugo/28806f5981a5420c9000e5ec1a3d5794.webp
diff --git a/docs/src/tutorial/blog/assets/20220611-hugo/33ac00bbeecb40a4b9d8c9ac2f8d845a.webp b/src/tutorial/blog/assets/20220611-hugo/33ac00bbeecb40a4b9d8c9ac2f8d845a.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220611-hugo/33ac00bbeecb40a4b9d8c9ac2f8d845a.webp
rename to src/tutorial/blog/assets/20220611-hugo/33ac00bbeecb40a4b9d8c9ac2f8d845a.webp
diff --git a/docs/src/tutorial/blog/assets/20220611-hugo/5d23f2e7cafe49b5adcf4d605ee60209.webp b/src/tutorial/blog/assets/20220611-hugo/5d23f2e7cafe49b5adcf4d605ee60209.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220611-hugo/5d23f2e7cafe49b5adcf4d605ee60209.webp
rename to src/tutorial/blog/assets/20220611-hugo/5d23f2e7cafe49b5adcf4d605ee60209.webp
diff --git a/docs/src/tutorial/blog/assets/20220611-hugo/6122b0668d65457d98601503ce079660.webp b/src/tutorial/blog/assets/20220611-hugo/6122b0668d65457d98601503ce079660.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220611-hugo/6122b0668d65457d98601503ce079660.webp
rename to src/tutorial/blog/assets/20220611-hugo/6122b0668d65457d98601503ce079660.webp
diff --git a/docs/src/tutorial/blog/assets/20220611-hugo/65a1e46ad4944cf88da661fdaa64e27e.webp b/src/tutorial/blog/assets/20220611-hugo/65a1e46ad4944cf88da661fdaa64e27e.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220611-hugo/65a1e46ad4944cf88da661fdaa64e27e.webp
rename to src/tutorial/blog/assets/20220611-hugo/65a1e46ad4944cf88da661fdaa64e27e.webp
diff --git a/docs/src/tutorial/blog/assets/20220611-hugo/ce1fbd19b3bf45bbaa86b66d171c5921.webp b/src/tutorial/blog/assets/20220611-hugo/ce1fbd19b3bf45bbaa86b66d171c5921.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220611-hugo/ce1fbd19b3bf45bbaa86b66d171c5921.webp
rename to src/tutorial/blog/assets/20220611-hugo/ce1fbd19b3bf45bbaa86b66d171c5921.webp
diff --git a/docs/src/tutorial/blog/assets/20220611-hugo/d129c163bfb14533ad38844607808030.webp b/src/tutorial/blog/assets/20220611-hugo/d129c163bfb14533ad38844607808030.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220611-hugo/d129c163bfb14533ad38844607808030.webp
rename to src/tutorial/blog/assets/20220611-hugo/d129c163bfb14533ad38844607808030.webp
diff --git a/docs/src/tutorial/blog/assets/20220611-hugo/d2ab8bfcb35a4b65b08a80fb15047b25.webp b/src/tutorial/blog/assets/20220611-hugo/d2ab8bfcb35a4b65b08a80fb15047b25.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220611-hugo/d2ab8bfcb35a4b65b08a80fb15047b25.webp
rename to src/tutorial/blog/assets/20220611-hugo/d2ab8bfcb35a4b65b08a80fb15047b25.webp
diff --git a/docs/src/tutorial/blog/assets/20220611-hugo/e45101bacfe645d681b9445223e2558c.webp b/src/tutorial/blog/assets/20220611-hugo/e45101bacfe645d681b9445223e2558c.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220611-hugo/e45101bacfe645d681b9445223e2558c.webp
rename to src/tutorial/blog/assets/20220611-hugo/e45101bacfe645d681b9445223e2558c.webp
diff --git a/docs/src/tutorial/blog/assets/20220611-hugo/f263ad2e4ba943089bc164f3ffa1028d.webp b/src/tutorial/blog/assets/20220611-hugo/f263ad2e4ba943089bc164f3ffa1028d.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220611-hugo/f263ad2e4ba943089bc164f3ffa1028d.webp
rename to src/tutorial/blog/assets/20220611-hugo/f263ad2e4ba943089bc164f3ffa1028d.webp
diff --git a/docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743249.webp b/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743249.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743249.webp
rename to src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743249.webp
diff --git a/docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743254.webp b/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743254.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743254.webp
rename to src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743254.webp
diff --git a/docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743311.webp b/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743311.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743311.webp
rename to src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743311.webp
diff --git a/docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743358.webp b/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743358.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743358.webp
rename to src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743358.webp
diff --git a/docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743375.webp b/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743375.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743375.webp
rename to src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743375.webp
diff --git a/docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743376.webp b/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743376.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743376.webp
rename to src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743376.webp
diff --git a/docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743389.webp b/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743389.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743389.webp
rename to src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743389.webp
diff --git a/docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743412.webp b/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743412.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743412.webp
rename to src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743412.webp
diff --git a/docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743431.webp b/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743431.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743431.webp
rename to src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743431.webp
diff --git a/docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743437.webp b/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743437.webp
similarity index 100%
rename from docs/src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743437.webp
rename to src/tutorial/blog/assets/20220612-docsify/format,png-20240216200743437.webp
diff --git a/docs/src/tutorial/efficiency/20200511-windows-install-node.md b/src/tutorial/efficiency/20200511-windows-install-node.md
similarity index 85%
rename from docs/src/tutorial/efficiency/20200511-windows-install-node.md
rename to src/tutorial/efficiency/20200511-windows-install-node.md
index 4aa1d43997..9bb1e67220 100644
--- a/docs/src/tutorial/efficiency/20200511-windows-install-node.md
+++ b/src/tutorial/efficiency/20200511-windows-install-node.md
@@ -9,20 +9,6 @@ tag:
 
 # Windows 安装 Node.js 图文教程
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 本教程所有操作基于`Window 10`操作系统 + `Node.js v12.16.1-x64`，原则上适用于所有`Windows`操作系统，细节不同请根据自己需要自行判断。
diff --git a/docs/src/tutorial/efficiency/20200517-ubuntu-root-pwd.md b/src/tutorial/efficiency/20200517-ubuntu-root-pwd.md
similarity index 67%
rename from docs/src/tutorial/efficiency/20200517-ubuntu-root-pwd.md
rename to src/tutorial/efficiency/20200517-ubuntu-root-pwd.md
index aaf9951658..c247e2ec0c 100644
--- a/docs/src/tutorial/efficiency/20200517-ubuntu-root-pwd.md
+++ b/src/tutorial/efficiency/20200517-ubuntu-root-pwd.md
@@ -12,26 +12,10 @@ tag:
 
 # 修改 Ubuntu 默认 root 密码
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ##  新安装的 Ubuntu 系统中默认的 root 用户密码是多少？该怎么修改？
 
-如题，相信许多刚接触 Ubuntu 系统的新手大多会遇到这个问题，那么我们该如何解决这个问题呢？Ubuntu 在安装过程中并没有让我们设置 root 用户密码，但当我们需要获取 root 用户的权限时，就会让我们输入 root 用户的密码，如下图：
-
+ 如题，相信许多刚接触 Ubuntu 系统的新手大多会遇到这个问题，那么我们该如何解决这个问题呢？Ubuntu 在安装过程中并没有让我们设置 root 用户密码，但当我们需要获取 root 用户的权限时，就会让我们输入 root 用户的密码，如下图，
 ![](assets/20200517-ubuntu-root-pwd/70-20240216202026430.png)
-
 这就搞得我们一头雾水了。当初我们安装系统的时候只是设置好了一个用户名和用户的密码，并没有设置 root 用户密码啊，该怎么输入呢？你可能会抱着试一试的心态，输入自己创建的用户的密码，结果当然是密码错误了！！！
 
  - 原因：未设置之前，Ubuntu 中默认的 root 密码是随机的，即每次开机都会有一个新的root 密码，所以此时的 root 用户密码并不确定；
diff --git a/docs/src/tutorial/efficiency/20200518-vmware-ubuntu.md b/src/tutorial/efficiency/20200518-vmware-ubuntu.md
similarity index 87%
rename from docs/src/tutorial/efficiency/20200518-vmware-ubuntu.md
rename to src/tutorial/efficiency/20200518-vmware-ubuntu.md
index d6763c259a..351356b0a9 100644
--- a/docs/src/tutorial/efficiency/20200518-vmware-ubuntu.md
+++ b/src/tutorial/efficiency/20200518-vmware-ubuntu.md
@@ -12,20 +12,6 @@ tag:
 
 # VMware 安装 Ubuntu
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 准备工作
 
 ### Ubuntu
diff --git a/docs/src/tutorial/efficiency/20200519-xshell-ubuntu.md b/src/tutorial/efficiency/20200519-xshell-ubuntu.md
similarity index 80%
rename from docs/src/tutorial/efficiency/20200519-xshell-ubuntu.md
rename to src/tutorial/efficiency/20200519-xshell-ubuntu.md
index 4683842b6e..d015796e39 100644
--- a/docs/src/tutorial/efficiency/20200519-xshell-ubuntu.md
+++ b/src/tutorial/efficiency/20200519-xshell-ubuntu.md
@@ -10,20 +10,6 @@ tag:
 
 # XShell 连接 Ubuntu
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 一般情况下，安装好的 Ubuntu 系统中默认是只安装了 `openssh-client`，此时只能通过此系统连接访问其他系统，但不具有让其他系统访问的权限。在终端查看 ssh 进程，输入 `ps -e|grep ssh`，如果有安装 `openssh-client` 只会出现 `ssh -agent`，不会出现 `sshd`。
diff --git a/docs/src/tutorial/efficiency/20200520-ubuntu.md b/src/tutorial/efficiency/20200520-ubuntu.md
similarity index 97%
rename from docs/src/tutorial/efficiency/20200520-ubuntu.md
rename to src/tutorial/efficiency/20200520-ubuntu.md
index 06fdc4494d..1d5881410f 100644
--- a/docs/src/tutorial/efficiency/20200520-ubuntu.md
+++ b/src/tutorial/efficiency/20200520-ubuntu.md
@@ -10,20 +10,6 @@ tag:
 
 # 手把手玩转 Ubuntu 配置
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 # 前言
 
 我们在工作或学习过程中，有许多时候会接触到 Linux，然后便想要自己亲自试试这个系统，但苦于没有系统学习过，所以想要打造自己的工作环境难免会遇到许多困难。为了防止大家踩我踩过的坑，才有了这篇博客。本博客将主要从 **系统设置、常用软件安装、开发环境搭建、系统美化** 几个方面着手，手把手教你如何从零打造自己的 Ubuntu 工作环境。
diff --git a/docs/src/tutorial/efficiency/20200521-manjora.md b/src/tutorial/efficiency/20200521-manjora.md
similarity index 92%
rename from docs/src/tutorial/efficiency/20200521-manjora.md
rename to src/tutorial/efficiency/20200521-manjora.md
index 7f22316438..fbe92376b9 100644
--- a/docs/src/tutorial/efficiency/20200521-manjora.md
+++ b/src/tutorial/efficiency/20200521-manjora.md
@@ -10,20 +10,6 @@ tag:
 
 # 玩转 Manjora
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 0. 前言
 
 安装好 manjora 后，基础配置往往不够我们日常需求，然后我们就需要对其进行一些改造，让其成为我们称手的工具。
diff --git a/docs/src/tutorial/efficiency/20201010-video-subtitle.md b/src/tutorial/efficiency/20201010-video-subtitle.md
similarity index 88%
rename from docs/src/tutorial/efficiency/20201010-video-subtitle.md
rename to src/tutorial/efficiency/20201010-video-subtitle.md
index 80021904f8..02442ea2a8 100644
--- a/docs/src/tutorial/efficiency/20201010-video-subtitle.md
+++ b/src/tutorial/efficiency/20201010-video-subtitle.md
@@ -8,20 +8,6 @@ tag:
 
 # 免费给视频加字幕
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 自己在制作视频的过程中，难免需要给自己的视频加入字幕，从而方便观众理解。这篇文章就是手把手教你如何免费给自己的视频加上字幕。
diff --git a/docs/src/tutorial/efficiency/20201229-u-disk-sys-booter.md b/src/tutorial/efficiency/20201229-u-disk-sys-booter.md
similarity index 91%
rename from docs/src/tutorial/efficiency/20201229-u-disk-sys-booter.md
rename to src/tutorial/efficiency/20201229-u-disk-sys-booter.md
index 7c59e95004..20e023937f 100644
--- a/docs/src/tutorial/efficiency/20201229-u-disk-sys-booter.md
+++ b/src/tutorial/efficiency/20201229-u-disk-sys-booter.md
@@ -9,20 +9,6 @@ tag:
 
 # 制作 U 盘启动盘
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 1. 前言
 
 在我们日常使用电脑的过程中，难免会遇到电脑卡顿的情况，大多时候我们可以通过重装系统的方式来让我们的电脑重焕新生。但是这时候就遇到个难题呀，不会装系统咋办？？？去电脑城或者维修店花钱装？    
diff --git a/docs/src/tutorial/efficiency/20201230-windows-tips.md b/src/tutorial/efficiency/20201230-windows-tips.md
similarity index 95%
rename from docs/src/tutorial/efficiency/20201230-windows-tips.md
rename to src/tutorial/efficiency/20201230-windows-tips.md
index d3458e6d91..abc4a91f78 100644
--- a/docs/src/tutorial/efficiency/20201230-windows-tips.md
+++ b/src/tutorial/efficiency/20201230-windows-tips.md
@@ -11,20 +11,6 @@ tag:
 
 # 优雅地使用 Windows 10
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 都 1202 年了，Windows 10 都已经发布 5 年多了，我个人也是从 Windows 10 一发布就从 Windows 7 换到了 Windows 10。就个人体验而言，我觉得 Windows 10 比 Windows 7 好用多了，许多方面都进行了改进。当然了，这只是个人感受，如果您有不同的想法，也不用急着和我争辩，毕竟萝卜白菜，各有所爱嘛，那接下来就说说如何优雅的使用 Windows 10。这些只是个人的使用经验，总结成本文章，供大家参考参考。
diff --git a/docs/src/tutorial/efficiency/20201231-windows-sys.md b/src/tutorial/efficiency/20201231-windows-sys.md
similarity index 95%
rename from docs/src/tutorial/efficiency/20201231-windows-sys.md
rename to src/tutorial/efficiency/20201231-windows-sys.md
index 3c999505c2..dd9b4caa40 100644
--- a/docs/src/tutorial/efficiency/20201231-windows-sys.md
+++ b/src/tutorial/efficiency/20201231-windows-sys.md
@@ -10,20 +10,6 @@ date: 2020-12-31
 
 # 手把手 Windows 系统安装教程
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 最近女朋友由于工作原因，一直缠着我教她装系统（连系统都不会装，大（la）佬（ji））。
diff --git a/docs/src/tutorial/efficiency/20210422-signature.md b/src/tutorial/efficiency/20210422-signature.md
similarity index 89%
rename from docs/src/tutorial/efficiency/20210422-signature.md
rename to src/tutorial/efficiency/20210422-signature.md
index 85817b9034..4200204819 100644
--- a/docs/src/tutorial/efficiency/20210422-signature.md
+++ b/src/tutorial/efficiency/20210422-signature.md
@@ -8,20 +8,6 @@ date: 2021-04-22
 
 # 电子签名制作
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 >   PS：白色背景版和透明背景版可能在某些平台预览效果一样，但实际上是不同的，大家自己尝试就清楚了。
 
 ## 前言
diff --git a/docs/src/tutorial/efficiency/20210504-write-tools.md b/src/tutorial/efficiency/20210504-write-tools.md
similarity index 95%
rename from docs/src/tutorial/efficiency/20210504-write-tools.md
rename to src/tutorial/efficiency/20210504-write-tools.md
index cfef8be1b1..ef76f5b73a 100644
--- a/docs/src/tutorial/efficiency/20210504-write-tools.md
+++ b/src/tutorial/efficiency/20210504-write-tools.md
@@ -12,20 +12,6 @@ date: 2021-05-04
 
 # 技术写作中的神兵利器
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 之前参加了由掘金社区组织的创作者训练营第二期活动，有幸见到了比如月影、工业聚、张晋涛等许多这个行业的大佬，也认识了许多技术写作的博主，可谓是一场大型网友面基会，哈哈哈 🤣. 针对大佬们的演讲和各位博主的提问，发现大家对于多平台分发这一块很感兴趣，也被这个问题困扰了许久，所以今天就来讲讲我这个小菜鸟在平常创作和发布这一块中摸索使用的一些工具总结，希望能对大家有所帮助。下面就来看看文章的主要内容，我主要会从如下几个方面来进行展开：
diff --git a/docs/src/tutorial/efficiency/20210807-windows-install-pgsql.md b/src/tutorial/efficiency/20210807-windows-install-pgsql.md
similarity index 91%
rename from docs/src/tutorial/efficiency/20210807-windows-install-pgsql.md
rename to src/tutorial/efficiency/20210807-windows-install-pgsql.md
index 9b14216e5f..73fb6373bf 100644
--- a/docs/src/tutorial/efficiency/20210807-windows-install-pgsql.md
+++ b/src/tutorial/efficiency/20210807-windows-install-pgsql.md
@@ -10,20 +10,6 @@ date: 2021-08-07
 
 # Windows 安装 PostgreSQL
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 之前由于学习，所以选择的是受众范围较广的 `MySQL`。至于 `MySQL`，在这里就不用说了，想必大家都是很熟悉的。正式参加工作之后，才发现原来不同的公司选择的数据库都不一样，有的选择 `Oracle`，有的选择 `MySQL`，而有的则选择 `PostgreSQL`。`Oracle` 的确很厉害，不过始终是面向收费的，一般小体量的公司用起来成本太高，所以大家还是更倾向于 `MySQL`。关于 `MySQL` 的教程、知识分享博客有很多，而且大家写的也很详细，所以在这里就不在赘述了。我们今天就主要来聊聊另一款数据库 `PostgreSQL`，揭开他的神秘面纱，一探究竟。
diff --git a/docs/src/tutorial/efficiency/20220426-iterm2-fish.md b/src/tutorial/efficiency/20220426-iterm2-fish.md
similarity index 92%
rename from docs/src/tutorial/efficiency/20220426-iterm2-fish.md
rename to src/tutorial/efficiency/20220426-iterm2-fish.md
index c02b1a116c..cc57ffc911 100644
--- a/docs/src/tutorial/efficiency/20220426-iterm2-fish.md
+++ b/src/tutorial/efficiency/20220426-iterm2-fish.md
@@ -10,20 +10,6 @@ date: 2022-04-26
 
 # iTerm2 + Fish 高效终端
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 什么是 Fish
 
 作为一个程序员，难免会和命令行打交道。而提及到命令行，那 Shell 肯定绕不开，说白了，其实学习各种命令实质就是在学习 Shell。
diff --git a/docs/src/tutorial/efficiency/20220623-ppt-template.md b/src/tutorial/efficiency/20220623-ppt-template.md
similarity index 86%
rename from docs/src/tutorial/efficiency/20220623-ppt-template.md
rename to src/tutorial/efficiency/20220623-ppt-template.md
index 472bc4729d..e0e4518516 100644
--- a/docs/src/tutorial/efficiency/20220623-ppt-template.md
+++ b/src/tutorial/efficiency/20220623-ppt-template.md
@@ -9,20 +9,6 @@ date: 2022-06-23
 
 # PPT 模板免费下载
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 第 1 PPT
 
 -   [官网](https://www.1ppt.com/)
diff --git a/docs/src/tutorial/efficiency/20220729-10-amazing-website.md b/src/tutorial/efficiency/20220729-10-amazing-website.md
similarity index 85%
rename from docs/src/tutorial/efficiency/20220729-10-amazing-website.md
rename to src/tutorial/efficiency/20220729-10-amazing-website.md
index 6d5b701c15..ef738b2a6d 100644
--- a/docs/src/tutorial/efficiency/20220729-10-amazing-website.md
+++ b/src/tutorial/efficiency/20220729-10-amazing-website.md
@@ -8,21 +8,12 @@ tag:
 ---
 # 10 个神奇的网站，助力带薪摸鱼
 
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-> 原文：https://mp.weixin.qq.com/s/X4rj6RHMzr3TeYrS0Nj-Dg
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+:::tip 原文
+https://mp.weixin.qq.com/s/X4rj6RHMzr3TeYrS0Nj-Dg
+:::
 
 ## 前言
 
diff --git a/docs/src/tutorial/efficiency/20220729-cdn.md b/src/tutorial/efficiency/20220729-cdn.md
similarity index 87%
rename from docs/src/tutorial/efficiency/20220729-cdn.md
rename to src/tutorial/efficiency/20220729-cdn.md
index d40023eb9b..c20b526635 100644
--- a/docs/src/tutorial/efficiency/20220729-cdn.md
+++ b/src/tutorial/efficiency/20220729-cdn.md
@@ -7,20 +7,12 @@ tag:
 ---
 # 网站访问太慢，不妨试试这些 CDN
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-> 原文：https://mp.weixin.qq.com/s/WDOc5kI0jVtsbxgWwCoJkQ
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info
+不要哀求，学会争取。若是如此，终有所获。
+:::
+:::tip
+原文：https://mp.weixin.qq.com/s/WDOc5kI0jVtsbxgWwCoJkQ
+:::
 
 
 ## 前言
diff --git a/docs/src/tutorial/efficiency/20220729-emoji.md b/src/tutorial/efficiency/20220729-emoji.md
similarity index 86%
rename from docs/src/tutorial/efficiency/20220729-emoji.md
rename to src/tutorial/efficiency/20220729-emoji.md
index 505a177f41..f2f574ae94 100644
--- a/docs/src/tutorial/efficiency/20220729-emoji.md
+++ b/src/tutorial/efficiency/20220729-emoji.md
@@ -8,20 +8,12 @@ tag:
 ---
 # Emoji 表情大作战
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-> 原文：https://mp.weixin.qq.com/s/TZMiXLTsHqVl3VMp2Dcdlg
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+:::tip 原文
+https://mp.weixin.qq.com/s/TZMiXLTsHqVl3VMp2Dcdlg
+:::
 
 ## 前言
 
diff --git a/docs/src/tutorial/efficiency/20220731-exercise-websites.md b/src/tutorial/efficiency/20220731-exercise-websites.md
similarity index 90%
rename from docs/src/tutorial/efficiency/20220731-exercise-websites.md
rename to src/tutorial/efficiency/20220731-exercise-websites.md
index 339efa7655..da700ffbb4 100644
--- a/docs/src/tutorial/efficiency/20220731-exercise-websites.md
+++ b/src/tutorial/efficiency/20220731-exercise-websites.md
@@ -8,19 +8,12 @@ tag:
 ---
 # 计算机专业涨薪必备的几个网站
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-> 原文：https://mp.weixin.qq.com/s/GGoYITwL0Symiqbi257kvA
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info
+不要哀求，学会争取。若是如此，终有所获。
+:::
+:::tip
+原文：https://mp.weixin.qq.com/s/GGoYITwL0Symiqbi257kvA
+:::
 
 ## 前言
 
diff --git a/docs/src/tutorial/efficiency/20220811-iterm2-zsh.md b/src/tutorial/efficiency/20220811-iterm2-zsh.md
similarity index 93%
rename from docs/src/tutorial/efficiency/20220811-iterm2-zsh.md
rename to src/tutorial/efficiency/20220811-iterm2-zsh.md
index df998c9b80..7275f442bf 100644
--- a/docs/src/tutorial/efficiency/20220811-iterm2-zsh.md
+++ b/src/tutorial/efficiency/20220811-iterm2-zsh.md
@@ -10,20 +10,6 @@ date: 2022-08-11
 
 # iTerm2 + Oh My Zsh 终端神器
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 说在前面，本文主要适合于的是使用 macOS 系统的小伙伴，如果你使用的 Windows 或者 Linux 系统的电脑，那可能暂时不太适合你。当然了，如果你只是想了解一下新知识，那么欢迎各位！
diff --git a/docs/src/tutorial/efficiency/20221114-macos-install-node.md b/src/tutorial/efficiency/20221114-macos-install-node.md
similarity index 84%
rename from docs/src/tutorial/efficiency/20221114-macos-install-node.md
rename to src/tutorial/efficiency/20221114-macos-install-node.md
index 1e2f0760c1..e087748343 100644
--- a/docs/src/tutorial/efficiency/20221114-macos-install-node.md
+++ b/src/tutorial/efficiency/20221114-macos-install-node.md
@@ -10,20 +10,6 @@ date: 2022-11-14
 
 # macOS 中安装 Node.js
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 什么是 Node.js
 
 `Node.js` 是一个基于 `Chrome V8` 引擎的 `JavaScript` 运行时环境。最早发布于 2009 年 5 月，由 `Ryan Dahl` 开发。它使用了一个事件驱动、非阻塞式 `I/O` 模型，让 `JavaScript` 运行在服务端的开发平台，能让 `JavaScript` 成为 `PHP`、`Python`、`Perl`、`Ruby` 等服务端语言的脚本语言。
diff --git a/docs/src/tutorial/efficiency/20221127-cmd.md b/src/tutorial/efficiency/20221127-cmd.md
similarity index 87%
rename from docs/src/tutorial/efficiency/20221127-cmd.md
rename to src/tutorial/efficiency/20221127-cmd.md
index 2e691a758e..fcffe77cf9 100644
--- a/docs/src/tutorial/efficiency/20221127-cmd.md
+++ b/src/tutorial/efficiency/20221127-cmd.md
@@ -8,21 +8,12 @@ tag:
 ---
 # 黑客大神也常用的一些 CMD 命令
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-> 原文：https://mp.weixin.qq.com/s/LAZY7sMiwzNwimTpmlh0rw
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
+:::info
+不要哀求，学会争取。若是如此，终有所获。
+:::
+:::tip
+原文：https://mp.weixin.qq.com/s/LAZY7sMiwzNwimTpmlh0rw
+:::
 ## 前言
 
 作为一个程序员，可能更多的是在 `Linux` 中使用命令来操作。但在日常使用 `Windows` 的过程中，或多或少会使用到命令提示符窗口，也就是 `Windows` 中的 `CMD`。这个时候，掌握一些常用的命令就尤为重要了，一方面方便自己使用，另一方面，也方便给电脑小白露一手 👀。那接下来就来看看，`CMD` 中最常用的一些命令。
diff --git a/docs/src/tutorial/efficiency/20230425-markdown-tutorial.md b/src/tutorial/efficiency/20230425-markdown-tutorial.md
similarity index 94%
rename from docs/src/tutorial/efficiency/20230425-markdown-tutorial.md
rename to src/tutorial/efficiency/20230425-markdown-tutorial.md
index 21f6553ce0..16c3aeabf3 100644
--- a/docs/src/tutorial/efficiency/20230425-markdown-tutorial.md
+++ b/src/tutorial/efficiency/20230425-markdown-tutorial.md
@@ -9,20 +9,12 @@ tag:
 
 # 如何用 Markdown 写出好看的文章
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-> 原文：https://mp.weixin.qq.com/s/qIptV_MEGjsUjw_zqvGn_A
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+:::tip 原文
+https://mp.weixin.qq.com/s/qIptV_MEGjsUjw_zqvGn_A
+:::
 
 ## 简介
 
diff --git a/docs/src/tutorial/efficiency/20230710-browser-plugin-install.md b/src/tutorial/efficiency/20230710-browser-plugin-install.md
similarity index 89%
rename from docs/src/tutorial/efficiency/20230710-browser-plugin-install.md
rename to src/tutorial/efficiency/20230710-browser-plugin-install.md
index f76f502ddc..72189374ee 100644
--- a/docs/src/tutorial/efficiency/20230710-browser-plugin-install.md
+++ b/src/tutorial/efficiency/20230710-browser-plugin-install.md
@@ -8,20 +8,12 @@ tag:
 ---
 # 如何在浏览器中安装插件
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-> 原文：https://mp.weixin.qq.com/s/KNiUsB_yMNjjmKXrcSjrXg
-
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info
+不要哀求，学会争取。若是如此，终有所获。
+:::
+:::tip
+原文：https://mp.weixin.qq.com/s/KNiUsB_yMNjjmKXrcSjrXg
+:::
 
 ## 一、前言
 
diff --git a/docs/src/tutorial/efficiency/20240313-miniconda.md b/src/tutorial/efficiency/20240313-miniconda.md
similarity index 59%
rename from docs/src/tutorial/efficiency/20240313-miniconda.md
rename to src/tutorial/efficiency/20240313-miniconda.md
index 898fb3e7d8..a56e9cadaf 100644
--- a/docs/src/tutorial/efficiency/20240313-miniconda.md
+++ b/src/tutorial/efficiency/20240313-miniconda.md
@@ -9,20 +9,6 @@ tag:
 
 # Miniconda
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 下载
 
 https://docs.anaconda.com/free/miniconda/index.html
diff --git a/docs/src/tutorial/efficiency/20240313-mobaxterm.md b/src/tutorial/efficiency/20240313-mobaxterm.md
similarity index 51%
rename from docs/src/tutorial/efficiency/20240313-mobaxterm.md
rename to src/tutorial/efficiency/20240313-mobaxterm.md
index 4d434a98bc..e94eb0a046 100644
--- a/docs/src/tutorial/efficiency/20240313-mobaxterm.md
+++ b/src/tutorial/efficiency/20240313-mobaxterm.md
@@ -10,20 +10,6 @@ tag:
 
 # MobaXterm
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 下载
 
 https://mobaxterm.mobatek.net/download-home-edition.html
diff --git a/docs/src/tutorial/efficiency/20240322-vitepress.md b/src/tutorial/efficiency/20240322-vitepress.md
similarity index 52%
rename from docs/src/tutorial/efficiency/20240322-vitepress.md
rename to src/tutorial/efficiency/20240322-vitepress.md
index b35d27f3bc..ecb64709df 100644
--- a/docs/src/tutorial/efficiency/20240322-vitepress.md
+++ b/src/tutorial/efficiency/20240322-vitepress.md
@@ -7,21 +7,6 @@ tag:
     - 博客
     - Vitepress
 ---
-# vitpress
-
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
 
 ## 安装
 
diff --git a/src/tutorial/efficiency/README.md b/src/tutorial/efficiency/README.md
new file mode 100644
index 0000000000..0a323d89f2
--- /dev/null
+++ b/src/tutorial/efficiency/README.md
@@ -0,0 +1,7 @@
+---
+title: 效率工具
+index: false
+icon: iconfont icon-rocket
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/tutorial/efficiency/assets/056bfd7142319889abbef059c1a456de.jpeg b/src/tutorial/efficiency/assets/056bfd7142319889abbef059c1a456de.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/056bfd7142319889abbef059c1a456de.jpeg
rename to src/tutorial/efficiency/assets/056bfd7142319889abbef059c1a456de.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/074848735de8420cab1ba252e95fa575.png b/src/tutorial/efficiency/assets/074848735de8420cab1ba252e95fa575.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/074848735de8420cab1ba252e95fa575.png
rename to src/tutorial/efficiency/assets/074848735de8420cab1ba252e95fa575.png
diff --git a/docs/src/tutorial/efficiency/assets/09414a722bdc4ecb919d9c12a20cbeff.png b/src/tutorial/efficiency/assets/09414a722bdc4ecb919d9c12a20cbeff.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/09414a722bdc4ecb919d9c12a20cbeff.png
rename to src/tutorial/efficiency/assets/09414a722bdc4ecb919d9c12a20cbeff.png
diff --git a/docs/src/tutorial/efficiency/assets/1886431-20200322212047493-448217841.7k3wkwefcs00.webp b/src/tutorial/efficiency/assets/1886431-20200322212047493-448217841.7k3wkwefcs00.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/1886431-20200322212047493-448217841.7k3wkwefcs00.webp
rename to src/tutorial/efficiency/assets/1886431-20200322212047493-448217841.7k3wkwefcs00.webp
diff --git a/docs/src/tutorial/efficiency/assets/18b025c580b24db0af93ce7473979c50.png b/src/tutorial/efficiency/assets/18b025c580b24db0af93ce7473979c50.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/18b025c580b24db0af93ce7473979c50.png
rename to src/tutorial/efficiency/assets/18b025c580b24db0af93ce7473979c50.png
diff --git a/docs/src/tutorial/efficiency/assets/1ef51757d619425383bb0e847186d46b.png b/src/tutorial/efficiency/assets/1ef51757d619425383bb0e847186d46b.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/1ef51757d619425383bb0e847186d46b.png
rename to src/tutorial/efficiency/assets/1ef51757d619425383bb0e847186d46b.png
diff --git a/docs/src/tutorial/efficiency/assets/20200511-windows-install-node/90614e36232264ba33de238ec0173007.png b/src/tutorial/efficiency/assets/20200511-windows-install-node/90614e36232264ba33de238ec0173007.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200511-windows-install-node/90614e36232264ba33de238ec0173007.png
rename to src/tutorial/efficiency/assets/20200511-windows-install-node/90614e36232264ba33de238ec0173007.png
diff --git a/docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245536.png b/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245536.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245536.png
rename to src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245536.png
diff --git a/docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245564.png b/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245564.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245564.png
rename to src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245564.png
diff --git a/docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245565.png b/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245565.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245565.png
rename to src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245565.png
diff --git a/docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245567-8085565.png b/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245567-8085565.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245567-8085565.png
rename to src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245567-8085565.png
diff --git a/docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245567.png b/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245567.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245567.png
rename to src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245567.png
diff --git a/docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245587-8085565.png b/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245587-8085565.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245587-8085565.png
rename to src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245587-8085565.png
diff --git a/docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245587.png b/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245587.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245587.png
rename to src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245587.png
diff --git a/docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245590.png b/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245590.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245590.png
rename to src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245590.png
diff --git a/docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245677.png b/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245677.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245677.png
rename to src/tutorial/efficiency/assets/20200511-windows-install-node/format,png-20240216201245677.png
diff --git a/docs/src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026430.png b/src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026430.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026430.png
rename to src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026430.png
diff --git a/docs/src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026482.png b/src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026482.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026482.png
rename to src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026482.png
diff --git a/docs/src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026489.png b/src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026489.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026489.png
rename to src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026489.png
diff --git a/docs/src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026491.png b/src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026491.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026491.png
rename to src/tutorial/efficiency/assets/20200517-ubuntu-root-pwd/70-20240216202026491.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914935.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914935.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914935.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914935.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914964.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914964.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914964.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914964.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914973.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914973.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914973.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914973.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914975.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914975.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914975.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914975.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914978.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914978.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914978.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914978.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914981.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914981.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914981.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914981.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914992.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914992.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914992.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914992.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914995.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914995.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914995.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201914995.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915008-8085955.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915008-8085955.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915008-8085955.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915008-8085955.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915008.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915008.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915008.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915008.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915016.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915016.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915016.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915016.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915021.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915021.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915021.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915021.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915022.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915022.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915022.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915022.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915030.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915030.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915030.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915030.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915035.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915035.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915035.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915035.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915054.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915054.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915054.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915054.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915082.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915082.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915082.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70-20240216201915082.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/70.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201914906.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201914906.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201914906.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201914906.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201914920.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201914920.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201914920.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201914920.png
diff --git a/docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201914941.png b/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201914941.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200518-vmware-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201914941.png
rename to src/tutorial/efficiency/assets/20200518-vmware-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201914941.png
diff --git a/docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803278.png b/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803278.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803278.png
rename to src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803278.png
diff --git a/docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803294.png b/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803294.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803294.png
rename to src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803294.png
diff --git a/docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803297.png b/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803297.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803297.png
rename to src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803297.png
diff --git a/docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803300.png b/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803300.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803300.png
rename to src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803300.png
diff --git a/docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803309.png b/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803309.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803309.png
rename to src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803309.png
diff --git a/docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803310.png b/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803310.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803310.png
rename to src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803310.png
diff --git a/docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803332.png b/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803332.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803332.png
rename to src/tutorial/efficiency/assets/20200519-xshell-ubuntu/format,png-20240216201803332.png
diff --git a/docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201803296.png b/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201803296.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200519-xshell-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201803296.png
rename to src/tutorial/efficiency/assets/20200519-xshell-ubuntu/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216201803296.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941898.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941898.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941898.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941898.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941905.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941905.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941905.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941905.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941908.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941908.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941908.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941908.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941923.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941923.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941923.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941923.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941941.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941941.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941941.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941941.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941945.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941945.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941945.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941945.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941950.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941950.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941950.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941950.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941963.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941963.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941963.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941963.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941968.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941968.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941968.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941968.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941969.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941969.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941969.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941969.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941974.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941974.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941974.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941974.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941977.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941977.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941977.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200941977.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942010.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942010.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942010.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942010.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942026.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942026.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942026.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942026.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942030.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942030.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942030.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942030.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942079.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942079.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942079.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942079.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942089.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942089.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942089.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942089.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942092.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942092.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942092.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942092.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942107.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942107.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942107.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942107.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942136.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942136.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942136.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942136.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942144.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942144.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942144.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942144.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942157.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942157.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942157.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942157.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942171.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942171.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942171.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942171.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942174-8085382.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942174-8085382.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942174-8085382.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942174-8085382.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942174.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942174.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942174.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942174.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942177.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942177.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942177.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942177.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942180.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942180.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942180.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942180.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942197.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942197.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942197.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942197.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942198-8085382.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942198-8085382.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942198-8085382.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942198-8085382.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942198.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942198.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942198.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942198.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942203.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942203.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942203.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942203.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942204.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942204.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942204.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942204.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942208.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942208.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942208.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942208.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942223.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942223.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942223.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942223.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942225.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942225.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942225.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942225.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942230.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942230.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942230.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942230.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942233.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942233.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942233.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942233.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942240.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942240.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942240.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942240.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942245.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942245.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942245.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942245.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942249.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942249.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942249.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942249.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942256.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942256.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942256.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942256.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942259.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942259.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942259.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942259.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942264.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942264.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942264.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942264.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942267.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942267.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942267.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942267.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942270.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942270.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942270.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942270.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942280.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942280.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942280.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942280.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942285.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942285.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942285.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942285.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942294.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942294.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942294.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942294.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942301.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942301.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942301.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942301.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942342.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942342.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942342.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942342.png
diff --git a/docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942373.png b/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942373.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942373.png
rename to src/tutorial/efficiency/assets/20200520-ubuntu/format,png-20240216200942373.png
diff --git a/docs/src/tutorial/efficiency/assets/20200521-manjora/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200106955.png b/src/tutorial/efficiency/assets/20200521-manjora/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200106955.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200521-manjora/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200106955.png
rename to src/tutorial/efficiency/assets/20200521-manjora/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200106955.png
diff --git a/docs/src/tutorial/efficiency/assets/20200521-manjora/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200106971.png b/src/tutorial/efficiency/assets/20200521-manjora/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200106971.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200521-manjora/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200106971.png
rename to src/tutorial/efficiency/assets/20200521-manjora/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200106971.png
diff --git a/docs/src/tutorial/efficiency/assets/20200521-manjora/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200107059.png b/src/tutorial/efficiency/assets/20200521-manjora/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200107059.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20200521-manjora/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200107059.png
rename to src/tutorial/efficiency/assets/20200521-manjora/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zOTY1NTAyOQ==,size_16,color_FFFFFF,t_70-20240216200107059.png
diff --git a/docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941080.png b/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941080.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941080.png
rename to src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941080.png
diff --git a/docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941107.png b/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941107.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941107.png
rename to src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941107.png
diff --git a/docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941111.png b/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941111.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941111.png
rename to src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941111.png
diff --git a/docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941120.png b/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941120.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941120.png
rename to src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941120.png
diff --git a/docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941131.png b/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941131.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941131.png
rename to src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941131.png
diff --git a/docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941140.png b/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941140.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941140.png
rename to src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941140.png
diff --git a/docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941144.png b/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941144.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941144.png
rename to src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941144.png
diff --git a/docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941145-8084781.png b/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941145-8084781.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941145-8084781.png
rename to src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941145-8084781.png
diff --git a/docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941145.png b/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941145.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941145.png
rename to src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941145.png
diff --git a/docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941214.png b/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941214.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941214.png
rename to src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941214.png
diff --git a/docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941219.png b/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941219.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941219.png
rename to src/tutorial/efficiency/assets/20201010-video-subtitle/format,png-20240216195941219.png
diff --git a/docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/0e06430b8d621c5bfa9a5559f29ce2e6.png b/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/0e06430b8d621c5bfa9a5559f29ce2e6.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/0e06430b8d621c5bfa9a5559f29ce2e6.png
rename to src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/0e06430b8d621c5bfa9a5559f29ce2e6.png
diff --git a/docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/21dfddec496e369f6e2fbf9e37424dd1.png b/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/21dfddec496e369f6e2fbf9e37424dd1.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/21dfddec496e369f6e2fbf9e37424dd1.png
rename to src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/21dfddec496e369f6e2fbf9e37424dd1.png
diff --git a/docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/447a54bc22ccad2aa4a57d0e8b10ea53.png b/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/447a54bc22ccad2aa4a57d0e8b10ea53.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/447a54bc22ccad2aa4a57d0e8b10ea53.png
rename to src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/447a54bc22ccad2aa4a57d0e8b10ea53.png
diff --git a/docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/72a12261f88731512ca5b18af75f3e01.png b/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/72a12261f88731512ca5b18af75f3e01.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/72a12261f88731512ca5b18af75f3e01.png
rename to src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/72a12261f88731512ca5b18af75f3e01.png
diff --git a/docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/9ac0d0e174db3db80fdab0a3db6b31b2.png b/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/9ac0d0e174db3db80fdab0a3db6b31b2.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/9ac0d0e174db3db80fdab0a3db6b31b2.png
rename to src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/9ac0d0e174db3db80fdab0a3db6b31b2.png
diff --git a/docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/be4f0b65162f6591b1eeb101d7f62f33.png b/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/be4f0b65162f6591b1eeb101d7f62f33.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/be4f0b65162f6591b1eeb101d7f62f33.png
rename to src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/be4f0b65162f6591b1eeb101d7f62f33.png
diff --git a/docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/f3e2e5693bdc7953007be40744c7c8ff.png b/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/f3e2e5693bdc7953007be40744c7c8ff.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/f3e2e5693bdc7953007be40744c7c8ff.png
rename to src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/f3e2e5693bdc7953007be40744c7c8ff.png
diff --git a/docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/f4aa0ff7fca4a7bfa20b2cf3ec57bea3.png b/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/f4aa0ff7fca4a7bfa20b2cf3ec57bea3.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/f4aa0ff7fca4a7bfa20b2cf3ec57bea3.png
rename to src/tutorial/efficiency/assets/20201229-u-disk-sys-booter/f4aa0ff7fca4a7bfa20b2cf3ec57bea3.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/756d400e6179391ba950d8114ee10145.png b/src/tutorial/efficiency/assets/20201230-windows-tips/756d400e6179391ba950d8114ee10145.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/756d400e6179391ba950d8114ee10145.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/756d400e6179391ba950d8114ee10145.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/b6b86d84a028941a0195f1f4818ce122.png b/src/tutorial/efficiency/assets/20201230-windows-tips/b6b86d84a028941a0195f1f4818ce122.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/b6b86d84a028941a0195f1f4818ce122.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/b6b86d84a028941a0195f1f4818ce122.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/de70692c44a5d726bb244b47a904a0c4.png b/src/tutorial/efficiency/assets/20201230-windows-tips/de70692c44a5d726bb244b47a904a0c4.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/de70692c44a5d726bb244b47a904a0c4.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/de70692c44a5d726bb244b47a904a0c4.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514622.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514622.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514622.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514622.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514627.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514627.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514627.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514627.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514628.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514628.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514628.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514628.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514639.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514639.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514639.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514639.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514641.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514641.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514641.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514641.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514658.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514658.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514658.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514658.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514659-8085714.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514659-8085714.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514659-8085714.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514659-8085714.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514659.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514659.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514659.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514659.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514660.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514660.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514660.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514660.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514676.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514676.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514676.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514676.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514709.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514709.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514709.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514709.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514714.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514714.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514714.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514714.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514720.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514720.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514720.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514720.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514747.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514747.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514747.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514747.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514749.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514749.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514749.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514749.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514753.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514753.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514753.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514753.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514778.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514778.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514778.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514778.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514804.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514804.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514804.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514804.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514806.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514806.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514806.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514806.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514853-8085714.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514853-8085714.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514853-8085714.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514853-8085714.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514853.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514853.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514853.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514853.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514898.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514898.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514898.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514898.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514924.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514924.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514924.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514924.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514938.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514938.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514938.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514938.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514939.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514939.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514939.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514939.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514954.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514954.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514954.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514954.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514970-8085714.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514970-8085714.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514970-8085714.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514970-8085714.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514970.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514970.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514970.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201514970.png
diff --git a/docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201515001.png b/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201515001.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201515001.png
rename to src/tutorial/efficiency/assets/20201230-windows-tips/format,png-20240216201515001.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/142517c9f6ee1a55747aadb6117f7d03.png b/src/tutorial/efficiency/assets/20201231-windows-sys/142517c9f6ee1a55747aadb6117f7d03.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/142517c9f6ee1a55747aadb6117f7d03.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/142517c9f6ee1a55747aadb6117f7d03.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/20fb8a806184736cbc2a4760bc8ba9d5.jpeg b/src/tutorial/efficiency/assets/20201231-windows-sys/20fb8a806184736cbc2a4760bc8ba9d5.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/20fb8a806184736cbc2a4760bc8ba9d5.jpeg
rename to src/tutorial/efficiency/assets/20201231-windows-sys/20fb8a806184736cbc2a4760bc8ba9d5.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/217447e870d6f9b951d763f134513e4d.png b/src/tutorial/efficiency/assets/20201231-windows-sys/217447e870d6f9b951d763f134513e4d.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/217447e870d6f9b951d763f134513e4d.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/217447e870d6f9b951d763f134513e4d.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/25d87aaba7d58bcda8a51b85cfce0140.gif b/src/tutorial/efficiency/assets/20201231-windows-sys/25d87aaba7d58bcda8a51b85cfce0140.gif
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/25d87aaba7d58bcda8a51b85cfce0140.gif
rename to src/tutorial/efficiency/assets/20201231-windows-sys/25d87aaba7d58bcda8a51b85cfce0140.gif
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/26fdab8b030437d99030774e2f6f3590.png b/src/tutorial/efficiency/assets/20201231-windows-sys/26fdab8b030437d99030774e2f6f3590.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/26fdab8b030437d99030774e2f6f3590.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/26fdab8b030437d99030774e2f6f3590.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/2b3c1ef8d4cb877e819ba28fb97d5deb.jpeg b/src/tutorial/efficiency/assets/20201231-windows-sys/2b3c1ef8d4cb877e819ba28fb97d5deb.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/2b3c1ef8d4cb877e819ba28fb97d5deb.jpeg
rename to src/tutorial/efficiency/assets/20201231-windows-sys/2b3c1ef8d4cb877e819ba28fb97d5deb.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/3df650f0df688e078323b9ec2fb07c90.jpeg b/src/tutorial/efficiency/assets/20201231-windows-sys/3df650f0df688e078323b9ec2fb07c90.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/3df650f0df688e078323b9ec2fb07c90.jpeg
rename to src/tutorial/efficiency/assets/20201231-windows-sys/3df650f0df688e078323b9ec2fb07c90.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/403b84e584cca532e49fb4e03fb457a7.png b/src/tutorial/efficiency/assets/20201231-windows-sys/403b84e584cca532e49fb4e03fb457a7.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/403b84e584cca532e49fb4e03fb457a7.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/403b84e584cca532e49fb4e03fb457a7.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/4314460ac35fb58e140136e21c576cd4.jpeg b/src/tutorial/efficiency/assets/20201231-windows-sys/4314460ac35fb58e140136e21c576cd4.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/4314460ac35fb58e140136e21c576cd4.jpeg
rename to src/tutorial/efficiency/assets/20201231-windows-sys/4314460ac35fb58e140136e21c576cd4.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/4457155a0b74d310dd68ff13679570ee.png b/src/tutorial/efficiency/assets/20201231-windows-sys/4457155a0b74d310dd68ff13679570ee.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/4457155a0b74d310dd68ff13679570ee.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/4457155a0b74d310dd68ff13679570ee.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/4fee49930e12ffa55ad6419be41bf97b.png b/src/tutorial/efficiency/assets/20201231-windows-sys/4fee49930e12ffa55ad6419be41bf97b.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/4fee49930e12ffa55ad6419be41bf97b.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/4fee49930e12ffa55ad6419be41bf97b.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/543b04be717a96490550768fece1b79d.png b/src/tutorial/efficiency/assets/20201231-windows-sys/543b04be717a96490550768fece1b79d.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/543b04be717a96490550768fece1b79d.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/543b04be717a96490550768fece1b79d.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/553658d77da95398433f17767ad9416c.png b/src/tutorial/efficiency/assets/20201231-windows-sys/553658d77da95398433f17767ad9416c.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/553658d77da95398433f17767ad9416c.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/553658d77da95398433f17767ad9416c.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/5945fc60573ced2decce476c90f68024.png b/src/tutorial/efficiency/assets/20201231-windows-sys/5945fc60573ced2decce476c90f68024.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/5945fc60573ced2decce476c90f68024.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/5945fc60573ced2decce476c90f68024.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/699a3cf7c7400e817112c115298b9fb4.png b/src/tutorial/efficiency/assets/20201231-windows-sys/699a3cf7c7400e817112c115298b9fb4.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/699a3cf7c7400e817112c115298b9fb4.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/699a3cf7c7400e817112c115298b9fb4.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/6ca62ed706fad33644bd01ae74bc43c7.jpeg b/src/tutorial/efficiency/assets/20201231-windows-sys/6ca62ed706fad33644bd01ae74bc43c7.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/6ca62ed706fad33644bd01ae74bc43c7.jpeg
rename to src/tutorial/efficiency/assets/20201231-windows-sys/6ca62ed706fad33644bd01ae74bc43c7.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/72c472b3bd3e926179915522f7667191.gif b/src/tutorial/efficiency/assets/20201231-windows-sys/72c472b3bd3e926179915522f7667191.gif
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/72c472b3bd3e926179915522f7667191.gif
rename to src/tutorial/efficiency/assets/20201231-windows-sys/72c472b3bd3e926179915522f7667191.gif
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/7f391a6c8fd1b62c67e3e3fb918a8f29.png b/src/tutorial/efficiency/assets/20201231-windows-sys/7f391a6c8fd1b62c67e3e3fb918a8f29.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/7f391a6c8fd1b62c67e3e3fb918a8f29.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/7f391a6c8fd1b62c67e3e3fb918a8f29.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/895ecd95e696788b9f92bf3b7c9728e0.png b/src/tutorial/efficiency/assets/20201231-windows-sys/895ecd95e696788b9f92bf3b7c9728e0.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/895ecd95e696788b9f92bf3b7c9728e0.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/895ecd95e696788b9f92bf3b7c9728e0.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/8c9b212afe3fca0a89ae203b53602e3b.jpeg b/src/tutorial/efficiency/assets/20201231-windows-sys/8c9b212afe3fca0a89ae203b53602e3b.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/8c9b212afe3fca0a89ae203b53602e3b.jpeg
rename to src/tutorial/efficiency/assets/20201231-windows-sys/8c9b212afe3fca0a89ae203b53602e3b.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/9b0eca9f3a97732303a22cd6aa863b3a.png b/src/tutorial/efficiency/assets/20201231-windows-sys/9b0eca9f3a97732303a22cd6aa863b3a.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/9b0eca9f3a97732303a22cd6aa863b3a.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/9b0eca9f3a97732303a22cd6aa863b3a.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/a2eba056e55edb902944f3d41d4dfd42.gif b/src/tutorial/efficiency/assets/20201231-windows-sys/a2eba056e55edb902944f3d41d4dfd42.gif
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/a2eba056e55edb902944f3d41d4dfd42.gif
rename to src/tutorial/efficiency/assets/20201231-windows-sys/a2eba056e55edb902944f3d41d4dfd42.gif
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/a5ee6989ae15e088db46664f9119bb6e.png b/src/tutorial/efficiency/assets/20201231-windows-sys/a5ee6989ae15e088db46664f9119bb6e.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/a5ee6989ae15e088db46664f9119bb6e.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/a5ee6989ae15e088db46664f9119bb6e.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/a6b428ab638a259cbf368f5fb398f3dd.png b/src/tutorial/efficiency/assets/20201231-windows-sys/a6b428ab638a259cbf368f5fb398f3dd.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/a6b428ab638a259cbf368f5fb398f3dd.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/a6b428ab638a259cbf368f5fb398f3dd.png
diff --git a/docs/src/tutorial/efficiency/assets/20201231-windows-sys/e3ab961e4c9f8de7135b8d66de868da4.png b/src/tutorial/efficiency/assets/20201231-windows-sys/e3ab961e4c9f8de7135b8d66de868da4.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20201231-windows-sys/e3ab961e4c9f8de7135b8d66de868da4.png
rename to src/tutorial/efficiency/assets/20201231-windows-sys/e3ab961e4c9f8de7135b8d66de868da4.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/106487dea7ff428aa19fbfef8fb92c99.png b/src/tutorial/efficiency/assets/20210422-signature/106487dea7ff428aa19fbfef8fb92c99.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/106487dea7ff428aa19fbfef8fb92c99.png
rename to src/tutorial/efficiency/assets/20210422-signature/106487dea7ff428aa19fbfef8fb92c99.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/1ec9adeca00283b77e4da6b49359b38f.png b/src/tutorial/efficiency/assets/20210422-signature/1ec9adeca00283b77e4da6b49359b38f.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/1ec9adeca00283b77e4da6b49359b38f.png
rename to src/tutorial/efficiency/assets/20210422-signature/1ec9adeca00283b77e4da6b49359b38f.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/26ccae17342aad7cefaa01f0911680b1.png b/src/tutorial/efficiency/assets/20210422-signature/26ccae17342aad7cefaa01f0911680b1.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/26ccae17342aad7cefaa01f0911680b1.png
rename to src/tutorial/efficiency/assets/20210422-signature/26ccae17342aad7cefaa01f0911680b1.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/44a22e469329a2c03462581512ebffe2.png b/src/tutorial/efficiency/assets/20210422-signature/44a22e469329a2c03462581512ebffe2.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/44a22e469329a2c03462581512ebffe2.png
rename to src/tutorial/efficiency/assets/20210422-signature/44a22e469329a2c03462581512ebffe2.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/821c128314f356fa733294a824859113.png b/src/tutorial/efficiency/assets/20210422-signature/821c128314f356fa733294a824859113.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/821c128314f356fa733294a824859113.png
rename to src/tutorial/efficiency/assets/20210422-signature/821c128314f356fa733294a824859113.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/8ac730969fec656e5f3f87d6fc2948fc.png b/src/tutorial/efficiency/assets/20210422-signature/8ac730969fec656e5f3f87d6fc2948fc.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/8ac730969fec656e5f3f87d6fc2948fc.png
rename to src/tutorial/efficiency/assets/20210422-signature/8ac730969fec656e5f3f87d6fc2948fc.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/8edc0ce23795dabec68575155858bbab.png b/src/tutorial/efficiency/assets/20210422-signature/8edc0ce23795dabec68575155858bbab.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/8edc0ce23795dabec68575155858bbab.png
rename to src/tutorial/efficiency/assets/20210422-signature/8edc0ce23795dabec68575155858bbab.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/917c8e6a122ab7418482fabab6bd77dc.png b/src/tutorial/efficiency/assets/20210422-signature/917c8e6a122ab7418482fabab6bd77dc.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/917c8e6a122ab7418482fabab6bd77dc.png
rename to src/tutorial/efficiency/assets/20210422-signature/917c8e6a122ab7418482fabab6bd77dc.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/9619137bd4d1a911fc740360c92946f6.png b/src/tutorial/efficiency/assets/20210422-signature/9619137bd4d1a911fc740360c92946f6.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/9619137bd4d1a911fc740360c92946f6.png
rename to src/tutorial/efficiency/assets/20210422-signature/9619137bd4d1a911fc740360c92946f6.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/a75e1f7a2f6fe352430e4047c01fedd7.png b/src/tutorial/efficiency/assets/20210422-signature/a75e1f7a2f6fe352430e4047c01fedd7.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/a75e1f7a2f6fe352430e4047c01fedd7.png
rename to src/tutorial/efficiency/assets/20210422-signature/a75e1f7a2f6fe352430e4047c01fedd7.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/c6dd0a7af3094d241a747bb8e02a7e86.png b/src/tutorial/efficiency/assets/20210422-signature/c6dd0a7af3094d241a747bb8e02a7e86.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/c6dd0a7af3094d241a747bb8e02a7e86.png
rename to src/tutorial/efficiency/assets/20210422-signature/c6dd0a7af3094d241a747bb8e02a7e86.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/d275288f0d4535ad0485bfd044ae43a8.png b/src/tutorial/efficiency/assets/20210422-signature/d275288f0d4535ad0485bfd044ae43a8.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/d275288f0d4535ad0485bfd044ae43a8.png
rename to src/tutorial/efficiency/assets/20210422-signature/d275288f0d4535ad0485bfd044ae43a8.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/d313ec7fdaa00afd52b66906a7f8ca02.png b/src/tutorial/efficiency/assets/20210422-signature/d313ec7fdaa00afd52b66906a7f8ca02.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/d313ec7fdaa00afd52b66906a7f8ca02.png
rename to src/tutorial/efficiency/assets/20210422-signature/d313ec7fdaa00afd52b66906a7f8ca02.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/d5d858644f8aca78e6208b5e5203c383.png b/src/tutorial/efficiency/assets/20210422-signature/d5d858644f8aca78e6208b5e5203c383.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/d5d858644f8aca78e6208b5e5203c383.png
rename to src/tutorial/efficiency/assets/20210422-signature/d5d858644f8aca78e6208b5e5203c383.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/d6d39e83a478354b87d7eeb3749ec90c.png b/src/tutorial/efficiency/assets/20210422-signature/d6d39e83a478354b87d7eeb3749ec90c.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/d6d39e83a478354b87d7eeb3749ec90c.png
rename to src/tutorial/efficiency/assets/20210422-signature/d6d39e83a478354b87d7eeb3749ec90c.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/e8a278084341f745c18011a8b027e8e3.png b/src/tutorial/efficiency/assets/20210422-signature/e8a278084341f745c18011a8b027e8e3.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/e8a278084341f745c18011a8b027e8e3.png
rename to src/tutorial/efficiency/assets/20210422-signature/e8a278084341f745c18011a8b027e8e3.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/fad47686398ba51d821707dea848e0d5.png b/src/tutorial/efficiency/assets/20210422-signature/fad47686398ba51d821707dea848e0d5.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/fad47686398ba51d821707dea848e0d5.png
rename to src/tutorial/efficiency/assets/20210422-signature/fad47686398ba51d821707dea848e0d5.png
diff --git a/docs/src/tutorial/efficiency/assets/20210422-signature/fd92f95f135601b6bf3e51019a0d38ca.png b/src/tutorial/efficiency/assets/20210422-signature/fd92f95f135601b6bf3e51019a0d38ca.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210422-signature/fd92f95f135601b6bf3e51019a0d38ca.png
rename to src/tutorial/efficiency/assets/20210422-signature/fd92f95f135601b6bf3e51019a0d38ca.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/05a79ed98bd13b3a7dca992a89bbc4f6.png b/src/tutorial/efficiency/assets/20210504-write-tools/05a79ed98bd13b3a7dca992a89bbc4f6.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/05a79ed98bd13b3a7dca992a89bbc4f6.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/05a79ed98bd13b3a7dca992a89bbc4f6.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/166a1a14756f06a2d7f5ce454f619b18.png b/src/tutorial/efficiency/assets/20210504-write-tools/166a1a14756f06a2d7f5ce454f619b18.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/166a1a14756f06a2d7f5ce454f619b18.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/166a1a14756f06a2d7f5ce454f619b18.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/2e110d0c638da659f2c41688a3aba490.png b/src/tutorial/efficiency/assets/20210504-write-tools/2e110d0c638da659f2c41688a3aba490.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/2e110d0c638da659f2c41688a3aba490.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/2e110d0c638da659f2c41688a3aba490.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/3a7830643aca031b5809fcd9324d2303.png b/src/tutorial/efficiency/assets/20210504-write-tools/3a7830643aca031b5809fcd9324d2303.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/3a7830643aca031b5809fcd9324d2303.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/3a7830643aca031b5809fcd9324d2303.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/43b55f25b35d160e46ac3c74cc046d41.png b/src/tutorial/efficiency/assets/20210504-write-tools/43b55f25b35d160e46ac3c74cc046d41.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/43b55f25b35d160e46ac3c74cc046d41.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/43b55f25b35d160e46ac3c74cc046d41.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/4899edb48d76b22bdad0cf5e17315bc5.png b/src/tutorial/efficiency/assets/20210504-write-tools/4899edb48d76b22bdad0cf5e17315bc5.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/4899edb48d76b22bdad0cf5e17315bc5.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/4899edb48d76b22bdad0cf5e17315bc5.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/4c69fd55e7e1032d866093822ac75db0.png b/src/tutorial/efficiency/assets/20210504-write-tools/4c69fd55e7e1032d866093822ac75db0.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/4c69fd55e7e1032d866093822ac75db0.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/4c69fd55e7e1032d866093822ac75db0.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/5f7d91517e741db88ea31cb08ffd6906.png b/src/tutorial/efficiency/assets/20210504-write-tools/5f7d91517e741db88ea31cb08ffd6906.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/5f7d91517e741db88ea31cb08ffd6906.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/5f7d91517e741db88ea31cb08ffd6906.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/6496690a8cbde7ed3741ad873273c64b.png b/src/tutorial/efficiency/assets/20210504-write-tools/6496690a8cbde7ed3741ad873273c64b.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/6496690a8cbde7ed3741ad873273c64b.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/6496690a8cbde7ed3741ad873273c64b.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/6af374723b950d11ad06f966c4b44e54.png b/src/tutorial/efficiency/assets/20210504-write-tools/6af374723b950d11ad06f966c4b44e54.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/6af374723b950d11ad06f966c4b44e54.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/6af374723b950d11ad06f966c4b44e54.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/7c481ca35d6ff0e1055c51bfe3068405.png b/src/tutorial/efficiency/assets/20210504-write-tools/7c481ca35d6ff0e1055c51bfe3068405.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/7c481ca35d6ff0e1055c51bfe3068405.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/7c481ca35d6ff0e1055c51bfe3068405.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/858f33946ecbb1446983154fc4cb3c6f.png b/src/tutorial/efficiency/assets/20210504-write-tools/858f33946ecbb1446983154fc4cb3c6f.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/858f33946ecbb1446983154fc4cb3c6f.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/858f33946ecbb1446983154fc4cb3c6f.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/90a698a4707f5d0a0b0c3a81e79df8b3.png b/src/tutorial/efficiency/assets/20210504-write-tools/90a698a4707f5d0a0b0c3a81e79df8b3.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/90a698a4707f5d0a0b0c3a81e79df8b3.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/90a698a4707f5d0a0b0c3a81e79df8b3.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/9347fd7fa0b1edb839c22c80f3f9e1f9.png b/src/tutorial/efficiency/assets/20210504-write-tools/9347fd7fa0b1edb839c22c80f3f9e1f9.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/9347fd7fa0b1edb839c22c80f3f9e1f9.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/9347fd7fa0b1edb839c22c80f3f9e1f9.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/93f5e642ec2df9f4800192fb7b634121.png b/src/tutorial/efficiency/assets/20210504-write-tools/93f5e642ec2df9f4800192fb7b634121.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/93f5e642ec2df9f4800192fb7b634121.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/93f5e642ec2df9f4800192fb7b634121.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/9df4c097a6f575d570c34e7d68130eeb.png b/src/tutorial/efficiency/assets/20210504-write-tools/9df4c097a6f575d570c34e7d68130eeb.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/9df4c097a6f575d570c34e7d68130eeb.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/9df4c097a6f575d570c34e7d68130eeb.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/9e310e1b7ef6aa3eed5e75fcf6cef1a1.png b/src/tutorial/efficiency/assets/20210504-write-tools/9e310e1b7ef6aa3eed5e75fcf6cef1a1.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/9e310e1b7ef6aa3eed5e75fcf6cef1a1.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/9e310e1b7ef6aa3eed5e75fcf6cef1a1.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/9f662f4455952462aca4894af58457d1.jpeg b/src/tutorial/efficiency/assets/20210504-write-tools/9f662f4455952462aca4894af58457d1.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/9f662f4455952462aca4894af58457d1.jpeg
rename to src/tutorial/efficiency/assets/20210504-write-tools/9f662f4455952462aca4894af58457d1.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/a2e945b1b3ef1a3a9eccd3c7be36f7eb.jpeg b/src/tutorial/efficiency/assets/20210504-write-tools/a2e945b1b3ef1a3a9eccd3c7be36f7eb.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/a2e945b1b3ef1a3a9eccd3c7be36f7eb.jpeg
rename to src/tutorial/efficiency/assets/20210504-write-tools/a2e945b1b3ef1a3a9eccd3c7be36f7eb.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/a5d533cd3c854c6f1b73b952543d240f.png b/src/tutorial/efficiency/assets/20210504-write-tools/a5d533cd3c854c6f1b73b952543d240f.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/a5d533cd3c854c6f1b73b952543d240f.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/a5d533cd3c854c6f1b73b952543d240f.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/b26f1bd57b635e0a1102f3e0b4016320.png b/src/tutorial/efficiency/assets/20210504-write-tools/b26f1bd57b635e0a1102f3e0b4016320.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/b26f1bd57b635e0a1102f3e0b4016320.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/b26f1bd57b635e0a1102f3e0b4016320.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/b8f96e90ed0b0295a2b27e80ea2bb083.png b/src/tutorial/efficiency/assets/20210504-write-tools/b8f96e90ed0b0295a2b27e80ea2bb083.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/b8f96e90ed0b0295a2b27e80ea2bb083.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/b8f96e90ed0b0295a2b27e80ea2bb083.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/dc4fdd7d65efdcef9ca7aff90a068965.png b/src/tutorial/efficiency/assets/20210504-write-tools/dc4fdd7d65efdcef9ca7aff90a068965.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/dc4fdd7d65efdcef9ca7aff90a068965.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/dc4fdd7d65efdcef9ca7aff90a068965.png
diff --git a/docs/src/tutorial/efficiency/assets/20210504-write-tools/e9f134196a0b63cc749fe1925eb7ff15.png b/src/tutorial/efficiency/assets/20210504-write-tools/e9f134196a0b63cc749fe1925eb7ff15.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210504-write-tools/e9f134196a0b63cc749fe1925eb7ff15.png
rename to src/tutorial/efficiency/assets/20210504-write-tools/e9f134196a0b63cc749fe1925eb7ff15.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/04d451920a17d9859e053f1b07cbb41f.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/04d451920a17d9859e053f1b07cbb41f.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/04d451920a17d9859e053f1b07cbb41f.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/04d451920a17d9859e053f1b07cbb41f.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/07af7f2c11fe8ca624cc72b198e3aefe.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/07af7f2c11fe8ca624cc72b198e3aefe.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/07af7f2c11fe8ca624cc72b198e3aefe.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/07af7f2c11fe8ca624cc72b198e3aefe.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/14acea39ce07988b9c47b9dd72ec796a.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/14acea39ce07988b9c47b9dd72ec796a.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/14acea39ce07988b9c47b9dd72ec796a.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/14acea39ce07988b9c47b9dd72ec796a.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/15781307661c1c8e0626ef0dc5730a37.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/15781307661c1c8e0626ef0dc5730a37.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/15781307661c1c8e0626ef0dc5730a37.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/15781307661c1c8e0626ef0dc5730a37.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/27b5edf246d19c84dd8e028bb69a5c9b.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/27b5edf246d19c84dd8e028bb69a5c9b.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/27b5edf246d19c84dd8e028bb69a5c9b.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/27b5edf246d19c84dd8e028bb69a5c9b.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/294881a19a526faee6a12ba990576f0b.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/294881a19a526faee6a12ba990576f0b.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/294881a19a526faee6a12ba990576f0b.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/294881a19a526faee6a12ba990576f0b.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/3bd19984a627c03b15ce27a86af8e59a.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/3bd19984a627c03b15ce27a86af8e59a.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/3bd19984a627c03b15ce27a86af8e59a.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/3bd19984a627c03b15ce27a86af8e59a.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/6cfef34c322df4d1fa527b782a39c5ea.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/6cfef34c322df4d1fa527b782a39c5ea.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/6cfef34c322df4d1fa527b782a39c5ea.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/6cfef34c322df4d1fa527b782a39c5ea.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/6e15b68a9641a7a44be4108e9e81b3c9.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/6e15b68a9641a7a44be4108e9e81b3c9.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/6e15b68a9641a7a44be4108e9e81b3c9.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/6e15b68a9641a7a44be4108e9e81b3c9.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/88596c55247c9a327fdf825629a05bfa.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/88596c55247c9a327fdf825629a05bfa.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/88596c55247c9a327fdf825629a05bfa.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/88596c55247c9a327fdf825629a05bfa.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/972c4ada250cbcb1ae11fc64d67d1ea8.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/972c4ada250cbcb1ae11fc64d67d1ea8.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/972c4ada250cbcb1ae11fc64d67d1ea8.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/972c4ada250cbcb1ae11fc64d67d1ea8.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/ccde635d53ecde5db61fbd8b4770a6e3.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/ccde635d53ecde5db61fbd8b4770a6e3.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/ccde635d53ecde5db61fbd8b4770a6e3.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/ccde635d53ecde5db61fbd8b4770a6e3.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/d25464db8f1ccad9d4fe193df1657553.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/d25464db8f1ccad9d4fe193df1657553.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/d25464db8f1ccad9d4fe193df1657553.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/d25464db8f1ccad9d4fe193df1657553.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/d8f597a48d75ac8679a19ede476345cb.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/d8f597a48d75ac8679a19ede476345cb.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/d8f597a48d75ac8679a19ede476345cb.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/d8f597a48d75ac8679a19ede476345cb.png
diff --git a/docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/de5c00f96e55e78b53aa06395f2f8f83.png b/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/de5c00f96e55e78b53aa06395f2f8f83.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20210807-windows-install-pgsql/de5c00f96e55e78b53aa06395f2f8f83.png
rename to src/tutorial/efficiency/assets/20210807-windows-install-pgsql/de5c00f96e55e78b53aa06395f2f8f83.png
diff --git a/docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/21063423c08f43eefe9c053213cea50c.webp b/src/tutorial/efficiency/assets/20220426-iterm2-fish/21063423c08f43eefe9c053213cea50c.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/21063423c08f43eefe9c053213cea50c.webp
rename to src/tutorial/efficiency/assets/20220426-iterm2-fish/21063423c08f43eefe9c053213cea50c.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/4b1e7b0f468d3b4d58723fec116b927e.webp b/src/tutorial/efficiency/assets/20220426-iterm2-fish/4b1e7b0f468d3b4d58723fec116b927e.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/4b1e7b0f468d3b4d58723fec116b927e.webp
rename to src/tutorial/efficiency/assets/20220426-iterm2-fish/4b1e7b0f468d3b4d58723fec116b927e.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/5281eb4d6dffc9b567e9c23421ab6748.webp b/src/tutorial/efficiency/assets/20220426-iterm2-fish/5281eb4d6dffc9b567e9c23421ab6748.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/5281eb4d6dffc9b567e9c23421ab6748.webp
rename to src/tutorial/efficiency/assets/20220426-iterm2-fish/5281eb4d6dffc9b567e9c23421ab6748.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/813b6c612943cfd356efb9413c714d25.webp b/src/tutorial/efficiency/assets/20220426-iterm2-fish/813b6c612943cfd356efb9413c714d25.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/813b6c612943cfd356efb9413c714d25.webp
rename to src/tutorial/efficiency/assets/20220426-iterm2-fish/813b6c612943cfd356efb9413c714d25.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/983388b90027be6b36ced40c2c26d70f.webp b/src/tutorial/efficiency/assets/20220426-iterm2-fish/983388b90027be6b36ced40c2c26d70f.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/983388b90027be6b36ced40c2c26d70f.webp
rename to src/tutorial/efficiency/assets/20220426-iterm2-fish/983388b90027be6b36ced40c2c26d70f.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/c93dcb6cb05722a08af366cff83a3e4d.webp b/src/tutorial/efficiency/assets/20220426-iterm2-fish/c93dcb6cb05722a08af366cff83a3e4d.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/c93dcb6cb05722a08af366cff83a3e4d.webp
rename to src/tutorial/efficiency/assets/20220426-iterm2-fish/c93dcb6cb05722a08af366cff83a3e4d.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/dd61a13f988a1409e09d2708bc900e84.webp b/src/tutorial/efficiency/assets/20220426-iterm2-fish/dd61a13f988a1409e09d2708bc900e84.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/dd61a13f988a1409e09d2708bc900e84.webp
rename to src/tutorial/efficiency/assets/20220426-iterm2-fish/dd61a13f988a1409e09d2708bc900e84.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/e6de544c26a6387c2a5fa1f878180473.webp b/src/tutorial/efficiency/assets/20220426-iterm2-fish/e6de544c26a6387c2a5fa1f878180473.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/e6de544c26a6387c2a5fa1f878180473.webp
rename to src/tutorial/efficiency/assets/20220426-iterm2-fish/e6de544c26a6387c2a5fa1f878180473.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/f646aedf1343d77e628c9cb8f1378ea1.webp b/src/tutorial/efficiency/assets/20220426-iterm2-fish/f646aedf1343d77e628c9cb8f1378ea1.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220426-iterm2-fish/f646aedf1343d77e628c9cb8f1378ea1.webp
rename to src/tutorial/efficiency/assets/20220426-iterm2-fish/f646aedf1343d77e628c9cb8f1378ea1.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220623-ppt-template/438df0d550ea41e38e8cceece957cd74.webp b/src/tutorial/efficiency/assets/20220623-ppt-template/438df0d550ea41e38e8cceece957cd74.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220623-ppt-template/438df0d550ea41e38e8cceece957cd74.webp
rename to src/tutorial/efficiency/assets/20220623-ppt-template/438df0d550ea41e38e8cceece957cd74.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220623-ppt-template/44f8e2802e1a639b6129b468e2247372.webp b/src/tutorial/efficiency/assets/20220623-ppt-template/44f8e2802e1a639b6129b468e2247372.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220623-ppt-template/44f8e2802e1a639b6129b468e2247372.webp
rename to src/tutorial/efficiency/assets/20220623-ppt-template/44f8e2802e1a639b6129b468e2247372.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220623-ppt-template/5374e008e63d4ad5b0c2ba1e3167daa8.webp b/src/tutorial/efficiency/assets/20220623-ppt-template/5374e008e63d4ad5b0c2ba1e3167daa8.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220623-ppt-template/5374e008e63d4ad5b0c2ba1e3167daa8.webp
rename to src/tutorial/efficiency/assets/20220623-ppt-template/5374e008e63d4ad5b0c2ba1e3167daa8.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220623-ppt-template/a8c3aa6a415845b6a1cfa876a9827d3a.webp b/src/tutorial/efficiency/assets/20220623-ppt-template/a8c3aa6a415845b6a1cfa876a9827d3a.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220623-ppt-template/a8c3aa6a415845b6a1cfa876a9827d3a.webp
rename to src/tutorial/efficiency/assets/20220623-ppt-template/a8c3aa6a415845b6a1cfa876a9827d3a.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220623-ppt-template/b1f4a358e1884d608ee1ab54aef23a4b.webp b/src/tutorial/efficiency/assets/20220623-ppt-template/b1f4a358e1884d608ee1ab54aef23a4b.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220623-ppt-template/b1f4a358e1884d608ee1ab54aef23a4b.webp
rename to src/tutorial/efficiency/assets/20220623-ppt-template/b1f4a358e1884d608ee1ab54aef23a4b.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220623-ppt-template/e97bcf54b8eb4450a1d457efcd7cf3b7.webp b/src/tutorial/efficiency/assets/20220623-ppt-template/e97bcf54b8eb4450a1d457efcd7cf3b7.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220623-ppt-template/e97bcf54b8eb4450a1d457efcd7cf3b7.webp
rename to src/tutorial/efficiency/assets/20220623-ppt-template/e97bcf54b8eb4450a1d457efcd7cf3b7.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220623-ppt-template/f674fd4529b34e7e8ab99f65e869fbe6.webp b/src/tutorial/efficiency/assets/20220623-ppt-template/f674fd4529b34e7e8ab99f65e869fbe6.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220623-ppt-template/f674fd4529b34e7e8ab99f65e869fbe6.webp
rename to src/tutorial/efficiency/assets/20220623-ppt-template/f674fd4529b34e7e8ab99f65e869fbe6.webp
diff --git a/docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/1383cd7541d0404f91e7dc27ecd2d1e9.png b/src/tutorial/efficiency/assets/20220811-iterm2-zsh/1383cd7541d0404f91e7dc27ecd2d1e9.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/1383cd7541d0404f91e7dc27ecd2d1e9.png
rename to src/tutorial/efficiency/assets/20220811-iterm2-zsh/1383cd7541d0404f91e7dc27ecd2d1e9.png
diff --git a/docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/1d31de3b8ade95d4062b2ab4b2fd81da.gif b/src/tutorial/efficiency/assets/20220811-iterm2-zsh/1d31de3b8ade95d4062b2ab4b2fd81da.gif
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/1d31de3b8ade95d4062b2ab4b2fd81da.gif
rename to src/tutorial/efficiency/assets/20220811-iterm2-zsh/1d31de3b8ade95d4062b2ab4b2fd81da.gif
diff --git a/docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/4ba07fea07cfd5b51f923651919523a5.png b/src/tutorial/efficiency/assets/20220811-iterm2-zsh/4ba07fea07cfd5b51f923651919523a5.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/4ba07fea07cfd5b51f923651919523a5.png
rename to src/tutorial/efficiency/assets/20220811-iterm2-zsh/4ba07fea07cfd5b51f923651919523a5.png
diff --git a/docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/5b165f298d960808713fef024bc97b0c.png b/src/tutorial/efficiency/assets/20220811-iterm2-zsh/5b165f298d960808713fef024bc97b0c.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/5b165f298d960808713fef024bc97b0c.png
rename to src/tutorial/efficiency/assets/20220811-iterm2-zsh/5b165f298d960808713fef024bc97b0c.png
diff --git a/docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/7700737a49b85c21425753a83429f5ad.jpeg b/src/tutorial/efficiency/assets/20220811-iterm2-zsh/7700737a49b85c21425753a83429f5ad.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/7700737a49b85c21425753a83429f5ad.jpeg
rename to src/tutorial/efficiency/assets/20220811-iterm2-zsh/7700737a49b85c21425753a83429f5ad.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/8603f31c02b851d7b28b7d5e631a3897.png b/src/tutorial/efficiency/assets/20220811-iterm2-zsh/8603f31c02b851d7b28b7d5e631a3897.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/8603f31c02b851d7b28b7d5e631a3897.png
rename to src/tutorial/efficiency/assets/20220811-iterm2-zsh/8603f31c02b851d7b28b7d5e631a3897.png
diff --git a/docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/ee3f6d808c9bb4470a5b86bd889f1e53.png b/src/tutorial/efficiency/assets/20220811-iterm2-zsh/ee3f6d808c9bb4470a5b86bd889f1e53.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20220811-iterm2-zsh/ee3f6d808c9bb4470a5b86bd889f1e53.png
rename to src/tutorial/efficiency/assets/20220811-iterm2-zsh/ee3f6d808c9bb4470a5b86bd889f1e53.png
diff --git a/docs/src/tutorial/efficiency/assets/20221114-macos-install-node/0c83b3a9dee44dcb9d3998d9d53b0780.webp b/src/tutorial/efficiency/assets/20221114-macos-install-node/0c83b3a9dee44dcb9d3998d9d53b0780.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20221114-macos-install-node/0c83b3a9dee44dcb9d3998d9d53b0780.webp
rename to src/tutorial/efficiency/assets/20221114-macos-install-node/0c83b3a9dee44dcb9d3998d9d53b0780.webp
diff --git a/docs/src/tutorial/efficiency/assets/20221114-macos-install-node/2e216b16032e48bc975879a6c33e3efa.webp b/src/tutorial/efficiency/assets/20221114-macos-install-node/2e216b16032e48bc975879a6c33e3efa.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20221114-macos-install-node/2e216b16032e48bc975879a6c33e3efa.webp
rename to src/tutorial/efficiency/assets/20221114-macos-install-node/2e216b16032e48bc975879a6c33e3efa.webp
diff --git a/docs/src/tutorial/efficiency/assets/20221114-macos-install-node/34f899be9c4b472ca820ff95e61c821f.webp b/src/tutorial/efficiency/assets/20221114-macos-install-node/34f899be9c4b472ca820ff95e61c821f.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20221114-macos-install-node/34f899be9c4b472ca820ff95e61c821f.webp
rename to src/tutorial/efficiency/assets/20221114-macos-install-node/34f899be9c4b472ca820ff95e61c821f.webp
diff --git a/docs/src/tutorial/efficiency/assets/20221114-macos-install-node/369e9457a1304c64a464fc3fd80d2379.webp b/src/tutorial/efficiency/assets/20221114-macos-install-node/369e9457a1304c64a464fc3fd80d2379.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20221114-macos-install-node/369e9457a1304c64a464fc3fd80d2379.webp
rename to src/tutorial/efficiency/assets/20221114-macos-install-node/369e9457a1304c64a464fc3fd80d2379.webp
diff --git a/docs/src/tutorial/efficiency/assets/20221114-macos-install-node/3f5c380b1b07471684ab25d4e198a33a.webp b/src/tutorial/efficiency/assets/20221114-macos-install-node/3f5c380b1b07471684ab25d4e198a33a.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20221114-macos-install-node/3f5c380b1b07471684ab25d4e198a33a.webp
rename to src/tutorial/efficiency/assets/20221114-macos-install-node/3f5c380b1b07471684ab25d4e198a33a.webp
diff --git a/docs/src/tutorial/efficiency/assets/20221114-macos-install-node/7a27f66f9663480a8ff67a6306d19f07.webp b/src/tutorial/efficiency/assets/20221114-macos-install-node/7a27f66f9663480a8ff67a6306d19f07.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20221114-macos-install-node/7a27f66f9663480a8ff67a6306d19f07.webp
rename to src/tutorial/efficiency/assets/20221114-macos-install-node/7a27f66f9663480a8ff67a6306d19f07.webp
diff --git a/docs/src/tutorial/efficiency/assets/20221114-macos-install-node/a2c4610455694c30b7669760c80fe5c7.webp b/src/tutorial/efficiency/assets/20221114-macos-install-node/a2c4610455694c30b7669760c80fe5c7.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20221114-macos-install-node/a2c4610455694c30b7669760c80fe5c7.webp
rename to src/tutorial/efficiency/assets/20221114-macos-install-node/a2c4610455694c30b7669760c80fe5c7.webp
diff --git a/docs/src/tutorial/efficiency/assets/20221114-macos-install-node/ae07eedb1f3c474cabe65a969fdee743.webp b/src/tutorial/efficiency/assets/20221114-macos-install-node/ae07eedb1f3c474cabe65a969fdee743.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20221114-macos-install-node/ae07eedb1f3c474cabe65a969fdee743.webp
rename to src/tutorial/efficiency/assets/20221114-macos-install-node/ae07eedb1f3c474cabe65a969fdee743.webp
diff --git a/docs/src/tutorial/efficiency/assets/20221114-macos-install-node/b236646d36d644abbbad9586c548c9f9.webp b/src/tutorial/efficiency/assets/20221114-macos-install-node/b236646d36d644abbbad9586c548c9f9.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20221114-macos-install-node/b236646d36d644abbbad9586c548c9f9.webp
rename to src/tutorial/efficiency/assets/20221114-macos-install-node/b236646d36d644abbbad9586c548c9f9.webp
diff --git a/docs/src/tutorial/efficiency/assets/20221114-macos-install-node/b36bcb1b70b44b51808d5408ac90e596.webp b/src/tutorial/efficiency/assets/20221114-macos-install-node/b36bcb1b70b44b51808d5408ac90e596.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20221114-macos-install-node/b36bcb1b70b44b51808d5408ac90e596.webp
rename to src/tutorial/efficiency/assets/20221114-macos-install-node/b36bcb1b70b44b51808d5408ac90e596.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289459.webp b/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289459.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289459.webp
rename to src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289459.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289492.webp b/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289492.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289492.webp
rename to src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289492.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289513.webp b/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289513.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289513.webp
rename to src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289513.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289548.webp b/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289548.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289548.webp
rename to src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289548.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289589.webp b/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289589.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289589.webp
rename to src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289589.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289609.webp b/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289609.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289609.webp
rename to src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289609.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289680.webp b/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289680.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289680.webp
rename to src/tutorial/efficiency/assets/20240313-miniconda/Miniconda3-latest-Windows-x86_64_1710289680.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-miniconda/chrome_1710289415.webp b/src/tutorial/efficiency/assets/20240313-miniconda/chrome_1710289415.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-miniconda/chrome_1710289415.webp
rename to src/tutorial/efficiency/assets/20240313-miniconda/chrome_1710289415.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-mobaxterm/chrome_1710288765.webp b/src/tutorial/efficiency/assets/20240313-mobaxterm/chrome_1710288765.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-mobaxterm/chrome_1710288765.webp
rename to src/tutorial/efficiency/assets/20240313-mobaxterm/chrome_1710288765.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288500.webp b/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288500.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288500.webp
rename to src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288500.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288526.webp b/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288526.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288526.webp
rename to src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288526.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288554.webp b/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288554.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288554.webp
rename to src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288554.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288588.webp b/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288588.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288588.webp
rename to src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288588.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288603.webp b/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288603.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288603.webp
rename to src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288603.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288615.webp b/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288615.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288615.webp
rename to src/tutorial/efficiency/assets/20240313-mobaxterm/msiexec_1710288615.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240322-vitepress/Code_1711089302.webp b/src/tutorial/efficiency/assets/20240322-vitepress/Code_1711089302.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240322-vitepress/Code_1711089302.webp
rename to src/tutorial/efficiency/assets/20240322-vitepress/Code_1711089302.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711087340.webp b/src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711087340.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711087340.webp
rename to src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711087340.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711087434.webp b/src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711087434.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711087434.webp
rename to src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711087434.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711087793.webp b/src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711087793.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711087793.webp
rename to src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711087793.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711089421.webp b/src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711089421.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711089421.webp
rename to src/tutorial/efficiency/assets/20240322-vitepress/WindowsTerminal_1711089421.webp
diff --git a/docs/src/tutorial/efficiency/assets/20240322-vitepress/chrome_1711089436.webp b/src/tutorial/efficiency/assets/20240322-vitepress/chrome_1711089436.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/20240322-vitepress/chrome_1711089436.webp
rename to src/tutorial/efficiency/assets/20240322-vitepress/chrome_1711089436.webp
diff --git a/docs/src/tutorial/efficiency/assets/213c84cd7d25d1bd89170749c5d8b9c3.png b/src/tutorial/efficiency/assets/213c84cd7d25d1bd89170749c5d8b9c3.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/213c84cd7d25d1bd89170749c5d8b9c3.png
rename to src/tutorial/efficiency/assets/213c84cd7d25d1bd89170749c5d8b9c3.png
diff --git a/docs/src/tutorial/efficiency/assets/280ecadf38664625b5be11c324f170c1.png b/src/tutorial/efficiency/assets/280ecadf38664625b5be11c324f170c1.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/280ecadf38664625b5be11c324f170c1.png
rename to src/tutorial/efficiency/assets/280ecadf38664625b5be11c324f170c1.png
diff --git a/docs/src/tutorial/efficiency/assets/29eb77b4d7d540dc8dd80d47c0fb07f0~tplv-k3u1fbpfcp-watermark.png b/src/tutorial/efficiency/assets/29eb77b4d7d540dc8dd80d47c0fb07f0~tplv-k3u1fbpfcp-watermark.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/29eb77b4d7d540dc8dd80d47c0fb07f0~tplv-k3u1fbpfcp-watermark.png
rename to src/tutorial/efficiency/assets/29eb77b4d7d540dc8dd80d47c0fb07f0~tplv-k3u1fbpfcp-watermark.png
diff --git a/docs/src/tutorial/efficiency/assets/2a0c08c6f0964017b871b42895a5fb9a.png b/src/tutorial/efficiency/assets/2a0c08c6f0964017b871b42895a5fb9a.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/2a0c08c6f0964017b871b42895a5fb9a.png
rename to src/tutorial/efficiency/assets/2a0c08c6f0964017b871b42895a5fb9a.png
diff --git a/docs/src/tutorial/efficiency/assets/2d7f861853f44810821c50208d9d88eb.png b/src/tutorial/efficiency/assets/2d7f861853f44810821c50208d9d88eb.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/2d7f861853f44810821c50208d9d88eb.png
rename to src/tutorial/efficiency/assets/2d7f861853f44810821c50208d9d88eb.png
diff --git a/docs/src/tutorial/efficiency/assets/360b7331438a65a9d9beb61aad44b197.png b/src/tutorial/efficiency/assets/360b7331438a65a9d9beb61aad44b197.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/360b7331438a65a9d9beb61aad44b197.png
rename to src/tutorial/efficiency/assets/360b7331438a65a9d9beb61aad44b197.png
diff --git a/docs/src/tutorial/efficiency/assets/39d7659d45884808b26da56f85afca97.png b/src/tutorial/efficiency/assets/39d7659d45884808b26da56f85afca97.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/39d7659d45884808b26da56f85afca97.png
rename to src/tutorial/efficiency/assets/39d7659d45884808b26da56f85afca97.png
diff --git a/docs/src/tutorial/efficiency/assets/3eb2af5af5884eea42a5636974291b08.png b/src/tutorial/efficiency/assets/3eb2af5af5884eea42a5636974291b08.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/3eb2af5af5884eea42a5636974291b08.png
rename to src/tutorial/efficiency/assets/3eb2af5af5884eea42a5636974291b08.png
diff --git a/docs/src/tutorial/efficiency/assets/44f8e2802e1a639b6129b468e2247372.png b/src/tutorial/efficiency/assets/44f8e2802e1a639b6129b468e2247372.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/44f8e2802e1a639b6129b468e2247372.png
rename to src/tutorial/efficiency/assets/44f8e2802e1a639b6129b468e2247372.png
diff --git a/docs/src/tutorial/efficiency/assets/45336c8adbc94cb4ae00a8754280930e.png b/src/tutorial/efficiency/assets/45336c8adbc94cb4ae00a8754280930e.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/45336c8adbc94cb4ae00a8754280930e.png
rename to src/tutorial/efficiency/assets/45336c8adbc94cb4ae00a8754280930e.png
diff --git a/docs/src/tutorial/efficiency/assets/4ff4342792f3439e934eb03776188aff.png b/src/tutorial/efficiency/assets/4ff4342792f3439e934eb03776188aff.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/4ff4342792f3439e934eb03776188aff.png
rename to src/tutorial/efficiency/assets/4ff4342792f3439e934eb03776188aff.png
diff --git a/docs/src/tutorial/efficiency/assets/510f0f8fbea14f769d8b8caae62cd69f.png b/src/tutorial/efficiency/assets/510f0f8fbea14f769d8b8caae62cd69f.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/510f0f8fbea14f769d8b8caae62cd69f.png
rename to src/tutorial/efficiency/assets/510f0f8fbea14f769d8b8caae62cd69f.png
diff --git a/docs/src/tutorial/efficiency/assets/538c9ecafd5141dfbb5bfc6985226785-20230604211027130.png b/src/tutorial/efficiency/assets/538c9ecafd5141dfbb5bfc6985226785-20230604211027130.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/538c9ecafd5141dfbb5bfc6985226785-20230604211027130.png
rename to src/tutorial/efficiency/assets/538c9ecafd5141dfbb5bfc6985226785-20230604211027130.png
diff --git a/docs/src/tutorial/efficiency/assets/53f801e50c2f473da651c11736be15c7.png b/src/tutorial/efficiency/assets/53f801e50c2f473da651c11736be15c7.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/53f801e50c2f473da651c11736be15c7.png
rename to src/tutorial/efficiency/assets/53f801e50c2f473da651c11736be15c7.png
diff --git a/docs/src/tutorial/efficiency/assets/5dea8e9f04c34e91869c7356b32bfab2.png b/src/tutorial/efficiency/assets/5dea8e9f04c34e91869c7356b32bfab2.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/5dea8e9f04c34e91869c7356b32bfab2.png
rename to src/tutorial/efficiency/assets/5dea8e9f04c34e91869c7356b32bfab2.png
diff --git a/docs/src/tutorial/efficiency/assets/6.2au71x2dr8g0.webp b/src/tutorial/efficiency/assets/6.2au71x2dr8g0.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/6.2au71x2dr8g0.webp
rename to src/tutorial/efficiency/assets/6.2au71x2dr8g0.webp
diff --git a/docs/src/tutorial/efficiency/assets/606b4fa055434686a131816760c7aa95.png b/src/tutorial/efficiency/assets/606b4fa055434686a131816760c7aa95.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/606b4fa055434686a131816760c7aa95.png
rename to src/tutorial/efficiency/assets/606b4fa055434686a131816760c7aa95.png
diff --git a/docs/src/tutorial/efficiency/assets/6617f0f262cd44b39bc6e75f7146e0e7.png b/src/tutorial/efficiency/assets/6617f0f262cd44b39bc6e75f7146e0e7.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/6617f0f262cd44b39bc6e75f7146e0e7.png
rename to src/tutorial/efficiency/assets/6617f0f262cd44b39bc6e75f7146e0e7.png
diff --git a/docs/src/tutorial/efficiency/assets/68a68e8dc08745ee90b562feb5120de5.png b/src/tutorial/efficiency/assets/68a68e8dc08745ee90b562feb5120de5.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/68a68e8dc08745ee90b562feb5120de5.png
rename to src/tutorial/efficiency/assets/68a68e8dc08745ee90b562feb5120de5.png
diff --git a/docs/src/tutorial/efficiency/assets/6ba2ca2cb8aa2e60c74e61237e4a0aea.jpeg b/src/tutorial/efficiency/assets/6ba2ca2cb8aa2e60c74e61237e4a0aea.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/6ba2ca2cb8aa2e60c74e61237e4a0aea.jpeg
rename to src/tutorial/efficiency/assets/6ba2ca2cb8aa2e60c74e61237e4a0aea.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/75a49bd80897f5102ecdf3a5e111abbb.png b/src/tutorial/efficiency/assets/75a49bd80897f5102ecdf3a5e111abbb.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/75a49bd80897f5102ecdf3a5e111abbb.png
rename to src/tutorial/efficiency/assets/75a49bd80897f5102ecdf3a5e111abbb.png
diff --git a/docs/src/tutorial/efficiency/assets/7982fb6c7ca94c9790786e5dc4248205.png b/src/tutorial/efficiency/assets/7982fb6c7ca94c9790786e5dc4248205.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/7982fb6c7ca94c9790786e5dc4248205.png
rename to src/tutorial/efficiency/assets/7982fb6c7ca94c9790786e5dc4248205.png
diff --git a/docs/src/tutorial/efficiency/assets/7a6c1e4b8e7c4a2f8db15a928353a0cc-20230604211027213.png b/src/tutorial/efficiency/assets/7a6c1e4b8e7c4a2f8db15a928353a0cc-20230604211027213.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/7a6c1e4b8e7c4a2f8db15a928353a0cc-20230604211027213.png
rename to src/tutorial/efficiency/assets/7a6c1e4b8e7c4a2f8db15a928353a0cc-20230604211027213.png
diff --git a/docs/src/tutorial/efficiency/assets/81c34f60febe42aca79b8baebdc9a7c7.png b/src/tutorial/efficiency/assets/81c34f60febe42aca79b8baebdc9a7c7.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/81c34f60febe42aca79b8baebdc9a7c7.png
rename to src/tutorial/efficiency/assets/81c34f60febe42aca79b8baebdc9a7c7.png
diff --git a/docs/src/tutorial/efficiency/assets/83ebc1e6678e4f0989c8e228838597b2-20230604211027089.png b/src/tutorial/efficiency/assets/83ebc1e6678e4f0989c8e228838597b2-20230604211027089.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/83ebc1e6678e4f0989c8e228838597b2-20230604211027089.png
rename to src/tutorial/efficiency/assets/83ebc1e6678e4f0989c8e228838597b2-20230604211027089.png
diff --git a/docs/src/tutorial/efficiency/assets/866528a021da01def1ebb0f22000bc9a.jpeg b/src/tutorial/efficiency/assets/866528a021da01def1ebb0f22000bc9a.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/866528a021da01def1ebb0f22000bc9a.jpeg
rename to src/tutorial/efficiency/assets/866528a021da01def1ebb0f22000bc9a.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/867c5f3845c34e9e9332612406020dc1.png b/src/tutorial/efficiency/assets/867c5f3845c34e9e9332612406020dc1.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/867c5f3845c34e9e9332612406020dc1.png
rename to src/tutorial/efficiency/assets/867c5f3845c34e9e9332612406020dc1.png
diff --git a/docs/src/tutorial/efficiency/assets/871450fabd614115ac62f4d8cc552871.png b/src/tutorial/efficiency/assets/871450fabd614115ac62f4d8cc552871.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/871450fabd614115ac62f4d8cc552871.png
rename to src/tutorial/efficiency/assets/871450fabd614115ac62f4d8cc552871.png
diff --git a/docs/src/tutorial/efficiency/assets/89af78bbcd7a48d6be489b09a0505ea0.png b/src/tutorial/efficiency/assets/89af78bbcd7a48d6be489b09a0505ea0.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/89af78bbcd7a48d6be489b09a0505ea0.png
rename to src/tutorial/efficiency/assets/89af78bbcd7a48d6be489b09a0505ea0.png
diff --git a/docs/src/tutorial/efficiency/assets/8c96a38af82240a2bffd07db526d01ba-20230604211027130.png b/src/tutorial/efficiency/assets/8c96a38af82240a2bffd07db526d01ba-20230604211027130.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/8c96a38af82240a2bffd07db526d01ba-20230604211027130.png
rename to src/tutorial/efficiency/assets/8c96a38af82240a2bffd07db526d01ba-20230604211027130.png
diff --git a/docs/src/tutorial/efficiency/assets/925f0da34e374d1b8b27799209af0293.png b/src/tutorial/efficiency/assets/925f0da34e374d1b8b27799209af0293.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/925f0da34e374d1b8b27799209af0293.png
rename to src/tutorial/efficiency/assets/925f0da34e374d1b8b27799209af0293.png
diff --git a/docs/src/tutorial/efficiency/assets/980529a381834e8892c3a733f440d826.png b/src/tutorial/efficiency/assets/980529a381834e8892c3a733f440d826.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/980529a381834e8892c3a733f440d826.png
rename to src/tutorial/efficiency/assets/980529a381834e8892c3a733f440d826.png
diff --git a/docs/src/tutorial/efficiency/assets/98b36e84ffaf4292a6cd97bdc98aa4fd.png b/src/tutorial/efficiency/assets/98b36e84ffaf4292a6cd97bdc98aa4fd.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/98b36e84ffaf4292a6cd97bdc98aa4fd.png
rename to src/tutorial/efficiency/assets/98b36e84ffaf4292a6cd97bdc98aa4fd.png
diff --git a/docs/src/tutorial/efficiency/assets/98bf365924b164df10001725fc432632.png b/src/tutorial/efficiency/assets/98bf365924b164df10001725fc432632.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/98bf365924b164df10001725fc432632.png
rename to src/tutorial/efficiency/assets/98bf365924b164df10001725fc432632.png
diff --git a/docs/src/tutorial/efficiency/assets/9ab01d4d9b7c4ecea2deb6985bd3ba9e.png b/src/tutorial/efficiency/assets/9ab01d4d9b7c4ecea2deb6985bd3ba9e.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/9ab01d4d9b7c4ecea2deb6985bd3ba9e.png
rename to src/tutorial/efficiency/assets/9ab01d4d9b7c4ecea2deb6985bd3ba9e.png
diff --git a/docs/src/tutorial/efficiency/assets/9d33d4ffd08b6d673f53eae95548cacc.jpeg b/src/tutorial/efficiency/assets/9d33d4ffd08b6d673f53eae95548cacc.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/9d33d4ffd08b6d673f53eae95548cacc.jpeg
rename to src/tutorial/efficiency/assets/9d33d4ffd08b6d673f53eae95548cacc.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/Markdown-here.png b/src/tutorial/efficiency/assets/Markdown-here.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/Markdown-here.png
rename to src/tutorial/efficiency/assets/Markdown-here.png
diff --git a/docs/src/tutorial/efficiency/assets/a5d4ac05b3bb6a0d9fa42e2907a49e2a.jpeg b/src/tutorial/efficiency/assets/a5d4ac05b3bb6a0d9fa42e2907a49e2a.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/a5d4ac05b3bb6a0d9fa42e2907a49e2a.jpeg
rename to src/tutorial/efficiency/assets/a5d4ac05b3bb6a0d9fa42e2907a49e2a.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/a6fcd5cf60758ffb36cb9af286268e9b.png b/src/tutorial/efficiency/assets/a6fcd5cf60758ffb36cb9af286268e9b.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/a6fcd5cf60758ffb36cb9af286268e9b.png
rename to src/tutorial/efficiency/assets/a6fcd5cf60758ffb36cb9af286268e9b.png
diff --git a/docs/src/tutorial/efficiency/assets/a7293d618a104caeb8a596a0a7fea8b7-20230604211027140.png b/src/tutorial/efficiency/assets/a7293d618a104caeb8a596a0a7fea8b7-20230604211027140.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/a7293d618a104caeb8a596a0a7fea8b7-20230604211027140.png
rename to src/tutorial/efficiency/assets/a7293d618a104caeb8a596a0a7fea8b7-20230604211027140.png
diff --git a/docs/src/tutorial/efficiency/assets/aaf0e471c2434efa905e0d160b1b060e.png b/src/tutorial/efficiency/assets/aaf0e471c2434efa905e0d160b1b060e.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/aaf0e471c2434efa905e0d160b1b060e.png
rename to src/tutorial/efficiency/assets/aaf0e471c2434efa905e0d160b1b060e.png
diff --git a/docs/src/tutorial/efficiency/assets/ab94245a4e65ae241496f0a2a3c2340c.png b/src/tutorial/efficiency/assets/ab94245a4e65ae241496f0a2a3c2340c.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/ab94245a4e65ae241496f0a2a3c2340c.png
rename to src/tutorial/efficiency/assets/ab94245a4e65ae241496f0a2a3c2340c.png
diff --git a/docs/src/tutorial/efficiency/assets/b06786bc14b8cc4929a4389f9e4d419c.jpeg b/src/tutorial/efficiency/assets/b06786bc14b8cc4929a4389f9e4d419c.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/b06786bc14b8cc4929a4389f9e4d419c.jpeg
rename to src/tutorial/efficiency/assets/b06786bc14b8cc4929a4389f9e4d419c.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/b7791de08a0a4d67b13bd238583700aa.png b/src/tutorial/efficiency/assets/b7791de08a0a4d67b13bd238583700aa.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/b7791de08a0a4d67b13bd238583700aa.png
rename to src/tutorial/efficiency/assets/b7791de08a0a4d67b13bd238583700aa.png
diff --git a/docs/src/tutorial/efficiency/assets/b89fc7397f8bd6b756a7587cdcb822d0.jpeg b/src/tutorial/efficiency/assets/b89fc7397f8bd6b756a7587cdcb822d0.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/b89fc7397f8bd6b756a7587cdcb822d0.jpeg
rename to src/tutorial/efficiency/assets/b89fc7397f8bd6b756a7587cdcb822d0.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/b90c248998964ff79241b7d5a4a5dba9.png b/src/tutorial/efficiency/assets/b90c248998964ff79241b7d5a4a5dba9.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/b90c248998964ff79241b7d5a4a5dba9.png
rename to src/tutorial/efficiency/assets/b90c248998964ff79241b7d5a4a5dba9.png
diff --git a/docs/src/tutorial/efficiency/assets/bddda2e75fb6487b9e0631b00f52b5ff.png b/src/tutorial/efficiency/assets/bddda2e75fb6487b9e0631b00f52b5ff.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/bddda2e75fb6487b9e0631b00f52b5ff.png
rename to src/tutorial/efficiency/assets/bddda2e75fb6487b9e0631b00f52b5ff.png
diff --git a/docs/src/tutorial/efficiency/assets/c422e4c274ba4e4eab773b94763c9f06.png b/src/tutorial/efficiency/assets/c422e4c274ba4e4eab773b94763c9f06.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/c422e4c274ba4e4eab773b94763c9f06.png
rename to src/tutorial/efficiency/assets/c422e4c274ba4e4eab773b94763c9f06.png
diff --git a/docs/src/tutorial/efficiency/assets/c80e7f542170453dafb413b4c8b33c11.png b/src/tutorial/efficiency/assets/c80e7f542170453dafb413b4c8b33c11.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/c80e7f542170453dafb413b4c8b33c11.png
rename to src/tutorial/efficiency/assets/c80e7f542170453dafb413b4c8b33c11.png
diff --git a/docs/src/tutorial/efficiency/assets/ca2d77c94ba85104131af8db27543076.jpeg b/src/tutorial/efficiency/assets/ca2d77c94ba85104131af8db27543076.jpeg
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/ca2d77c94ba85104131af8db27543076.jpeg
rename to src/tutorial/efficiency/assets/ca2d77c94ba85104131af8db27543076.jpeg
diff --git a/docs/src/tutorial/efficiency/assets/cmdmarkdown.png b/src/tutorial/efficiency/assets/cmdmarkdown.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/cmdmarkdown.png
rename to src/tutorial/efficiency/assets/cmdmarkdown.png
diff --git a/docs/src/tutorial/efficiency/assets/d406b53ec2af4ee09e0911b977387a3b-20230604211027205.png b/src/tutorial/efficiency/assets/d406b53ec2af4ee09e0911b977387a3b-20230604211027205.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/d406b53ec2af4ee09e0911b977387a3b-20230604211027205.png
rename to src/tutorial/efficiency/assets/d406b53ec2af4ee09e0911b977387a3b-20230604211027205.png
diff --git a/docs/src/tutorial/efficiency/assets/da0eab7486904e278dfd00048d0476d0-20230604211027149.png b/src/tutorial/efficiency/assets/da0eab7486904e278dfd00048d0476d0-20230604211027149.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/da0eab7486904e278dfd00048d0476d0-20230604211027149.png
rename to src/tutorial/efficiency/assets/da0eab7486904e278dfd00048d0476d0-20230604211027149.png
diff --git a/docs/src/tutorial/efficiency/assets/doocs.png b/src/tutorial/efficiency/assets/doocs.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/doocs.png
rename to src/tutorial/efficiency/assets/doocs.png
diff --git a/docs/src/tutorial/efficiency/assets/drag.gif b/src/tutorial/efficiency/assets/drag.gif
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/drag.gif
rename to src/tutorial/efficiency/assets/drag.gif
diff --git a/docs/src/tutorial/efficiency/assets/e56959e6d975c8fb5e064eecb22152d5.png b/src/tutorial/efficiency/assets/e56959e6d975c8fb5e064eecb22152d5.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/e56959e6d975c8fb5e064eecb22152d5.png
rename to src/tutorial/efficiency/assets/e56959e6d975c8fb5e064eecb22152d5.png
diff --git a/docs/src/tutorial/efficiency/assets/e77917423cde4e07b1552897ee9497d7.png b/src/tutorial/efficiency/assets/e77917423cde4e07b1552897ee9497d7.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/e77917423cde4e07b1552897ee9497d7.png
rename to src/tutorial/efficiency/assets/e77917423cde4e07b1552897ee9497d7.png
diff --git a/docs/src/tutorial/efficiency/assets/e88262049fb2404894e0137de05d83b5.png b/src/tutorial/efficiency/assets/e88262049fb2404894e0137de05d83b5.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/e88262049fb2404894e0137de05d83b5.png
rename to src/tutorial/efficiency/assets/e88262049fb2404894e0137de05d83b5.png
diff --git a/docs/src/tutorial/efficiency/assets/e885b214e9203bfef740fef7a1a23c93.png b/src/tutorial/efficiency/assets/e885b214e9203bfef740fef7a1a23c93.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/e885b214e9203bfef740fef7a1a23c93.png
rename to src/tutorial/efficiency/assets/e885b214e9203bfef740fef7a1a23c93.png
diff --git a/docs/src/tutorial/efficiency/assets/e9f5101b685041aaaa900ec151593b1d.png b/src/tutorial/efficiency/assets/e9f5101b685041aaaa900ec151593b1d.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/e9f5101b685041aaaa900ec151593b1d.png
rename to src/tutorial/efficiency/assets/e9f5101b685041aaaa900ec151593b1d.png
diff --git a/docs/src/tutorial/efficiency/assets/fb1d63432bae44d18462e68655232300.png b/src/tutorial/efficiency/assets/fb1d63432bae44d18462e68655232300.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/fb1d63432bae44d18462e68655232300.png
rename to src/tutorial/efficiency/assets/fb1d63432bae44d18462e68655232300.png
diff --git a/docs/src/tutorial/efficiency/assets/fb69937909584d7da46bb03353381464.png b/src/tutorial/efficiency/assets/fb69937909584d7da46bb03353381464.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/fb69937909584d7da46bb03353381464.png
rename to src/tutorial/efficiency/assets/fb69937909584d7da46bb03353381464.png
diff --git a/docs/src/tutorial/efficiency/assets/fcd985a26701494b8207eb372c2c8600.png b/src/tutorial/efficiency/assets/fcd985a26701494b8207eb372c2c8600.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/fcd985a26701494b8207eb372c2c8600.png
rename to src/tutorial/efficiency/assets/fcd985a26701494b8207eb372c2c8600.png
diff --git a/docs/src/tutorial/efficiency/assets/image-20230709152104624.4ltzk0nd2nc0.webp b/src/tutorial/efficiency/assets/image-20230709152104624.4ltzk0nd2nc0.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/image-20230709152104624.4ltzk0nd2nc0.webp
rename to src/tutorial/efficiency/assets/image-20230709152104624.4ltzk0nd2nc0.webp
diff --git a/docs/src/tutorial/efficiency/assets/image-20230709153645092.rhof4fm5jxs.webp b/src/tutorial/efficiency/assets/image-20230709153645092.rhof4fm5jxs.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/image-20230709153645092.rhof4fm5jxs.webp
rename to src/tutorial/efficiency/assets/image-20230709153645092.rhof4fm5jxs.webp
diff --git a/docs/src/tutorial/efficiency/assets/image-20230709153751994.1l0zd5c3lgw.webp b/src/tutorial/efficiency/assets/image-20230709153751994.1l0zd5c3lgw.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/image-20230709153751994.1l0zd5c3lgw.webp
rename to src/tutorial/efficiency/assets/image-20230709153751994.1l0zd5c3lgw.webp
diff --git a/docs/src/tutorial/efficiency/assets/image-20230709155635609.4xclznd3gnc.webp b/src/tutorial/efficiency/assets/image-20230709155635609.4xclznd3gnc.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/image-20230709155635609.4xclznd3gnc.webp
rename to src/tutorial/efficiency/assets/image-20230709155635609.4xclznd3gnc.webp
diff --git a/docs/src/tutorial/efficiency/assets/image-20230709160612738.3lzpr3pdq960.webp b/src/tutorial/efficiency/assets/image-20230709160612738.3lzpr3pdq960.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/image-20230709160612738.3lzpr3pdq960.webp
rename to src/tutorial/efficiency/assets/image-20230709160612738.3lzpr3pdq960.webp
diff --git a/docs/src/tutorial/efficiency/assets/image-20230709173937874.60pwrypwlcw0.webp b/src/tutorial/efficiency/assets/image-20230709173937874.60pwrypwlcw0.webp
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/image-20230709173937874.60pwrypwlcw0.webp
rename to src/tutorial/efficiency/assets/image-20230709173937874.60pwrypwlcw0.webp
diff --git a/docs/src/tutorial/efficiency/assets/markdownnice.png b/src/tutorial/efficiency/assets/markdownnice.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/markdownnice.png
rename to src/tutorial/efficiency/assets/markdownnice.png
diff --git a/docs/src/tutorial/efficiency/assets/marktext.png b/src/tutorial/efficiency/assets/marktext.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/marktext.png
rename to src/tutorial/efficiency/assets/marktext.png
diff --git a/docs/src/tutorial/efficiency/assets/typora.png b/src/tutorial/efficiency/assets/typora.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/typora.png
rename to src/tutorial/efficiency/assets/typora.png
diff --git a/docs/src/tutorial/efficiency/assets/unzip.gif b/src/tutorial/efficiency/assets/unzip.gif
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/unzip.gif
rename to src/tutorial/efficiency/assets/unzip.gif
diff --git a/docs/src/tutorial/efficiency/assets/vscode.png b/src/tutorial/efficiency/assets/vscode.png
similarity index 100%
rename from docs/src/tutorial/efficiency/assets/vscode.png
rename to src/tutorial/efficiency/assets/vscode.png
diff --git a/docs/src/tutorial/idea/20210914-java-app.md b/src/tutorial/idea/20210914-java-app.md
similarity index 92%
rename from docs/src/tutorial/idea/20210914-java-app.md
rename to src/tutorial/idea/20210914-java-app.md
index 71b946829d..339321197e 100644
--- a/docs/src/tutorial/idea/20210914-java-app.md
+++ b/src/tutorial/idea/20210914-java-app.md
@@ -10,20 +10,6 @@ date: 2021-00-14
 
 # 创建 Java 入门应用
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 本篇文章中，我们将学习如何使用 IDEA 来创建、运行并打包我们的第一个 `Hello World!` Java 程序。通过阅读该教程，希望大家能对如何使用 IDEA 来创建、运行并打包 Java 程序有一个简单的了解，熟悉一下 IDEA 的一些简单使用技巧，去感受 IDEA 为我们开发者所带来的便利，接下来我们就来具体看看具体的创建、运行以及打包过程。
diff --git a/docs/src/tutorial/idea/20211010-tips.md b/src/tutorial/idea/20211010-tips.md
similarity index 88%
rename from docs/src/tutorial/idea/20211010-tips.md
rename to src/tutorial/idea/20211010-tips.md
index 8de0f237b0..84f1463a0a 100644
--- a/docs/src/tutorial/idea/20211010-tips.md
+++ b/src/tutorial/idea/20211010-tips.md
@@ -10,20 +10,6 @@ date: 2021-10-10
 
 # 实用小技巧
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 人人都说 IDEA 好，但你知道他的强大之处在哪儿么？今天就来看看，增进日常开发效率的 IDEA 小技巧。
diff --git a/docs/src/tutorial/idea/20220105-git.md b/src/tutorial/idea/20220105-git.md
similarity index 94%
rename from docs/src/tutorial/idea/20220105-git.md
rename to src/tutorial/idea/20220105-git.md
index 02d0b7b1aa..850e72451a 100644
--- a/docs/src/tutorial/idea/20220105-git.md
+++ b/src/tutorial/idea/20220105-git.md
@@ -10,20 +10,6 @@ date: 2022-01-05
 
 # 集成并使用 Git 图文教程
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
-
 ## 前言
 
 一般在进行项目开发时，都离不开版本控制，当前主流的版本控制工具无非就是 Git 和 SVN，而且现在 Git 的使用率可以说是已经远远超过 SVN，本文就主要看看，如何使用 IDEA + Git 来控制代码版本，让团队开发更流畅！
diff --git a/docs/src/tutorial/idea/20220202-idea-guide.md b/src/tutorial/idea/20220202-idea-guide.md
similarity index 95%
rename from docs/src/tutorial/idea/20220202-idea-guide.md
rename to src/tutorial/idea/20220202-idea-guide.md
index 482d9d134f..365f3acf09 100644
--- a/docs/src/tutorial/idea/20220202-idea-guide.md
+++ b/src/tutorial/idea/20220202-idea-guide.md
@@ -8,19 +8,9 @@ tag:
 
 # 最新版 IntelliJ IDEA 使用手册
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## 前言
 
diff --git a/docs/src/tutorial/idea/20230525-code-commit.md b/src/tutorial/idea/20230525-code-commit.md
similarity index 94%
rename from docs/src/tutorial/idea/20230525-code-commit.md
rename to src/tutorial/idea/20230525-code-commit.md
index b4d088c962..b418dc8d3a 100644
--- a/docs/src/tutorial/idea/20230525-code-commit.md
+++ b/src/tutorial/idea/20230525-code-commit.md
@@ -10,19 +10,12 @@ tag:
 
 # 原来大厂都是这么提交代码的
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
-> 原文：https://mp.weixin.qq.com/s/Mhc7tygE6Fl5_3h8mz7A9g
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+:::info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+:::tip 原文
+https://mp.weixin.qq.com/s/Mhc7tygE6Fl5_3h8mz7A9g
+:::
 
 ## 前言
 
diff --git a/src/tutorial/idea/README.md b/src/tutorial/idea/README.md
new file mode 100644
index 0000000000..a2c2e0bfc8
--- /dev/null
+++ b/src/tutorial/idea/README.md
@@ -0,0 +1,7 @@
+---
+title: IDEA 教程
+index: false
+icon: iconfont icon-intellijidea
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/12edb796ce2da0302b24f5802288e655.png b/src/tutorial/idea/assets/20210914-java-app/12edb796ce2da0302b24f5802288e655.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/12edb796ce2da0302b24f5802288e655.png
rename to src/tutorial/idea/assets/20210914-java-app/12edb796ce2da0302b24f5802288e655.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/179f79e1e8445c1e7b6a7de2723c4845.png b/src/tutorial/idea/assets/20210914-java-app/179f79e1e8445c1e7b6a7de2723c4845.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/179f79e1e8445c1e7b6a7de2723c4845.png
rename to src/tutorial/idea/assets/20210914-java-app/179f79e1e8445c1e7b6a7de2723c4845.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/2233a0ba9b7a2261170803a4ef89d26f.png b/src/tutorial/idea/assets/20210914-java-app/2233a0ba9b7a2261170803a4ef89d26f.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/2233a0ba9b7a2261170803a4ef89d26f.png
rename to src/tutorial/idea/assets/20210914-java-app/2233a0ba9b7a2261170803a4ef89d26f.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/2d0d0aa5adee9fd5f756e3bdb0cd705b.png b/src/tutorial/idea/assets/20210914-java-app/2d0d0aa5adee9fd5f756e3bdb0cd705b.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/2d0d0aa5adee9fd5f756e3bdb0cd705b.png
rename to src/tutorial/idea/assets/20210914-java-app/2d0d0aa5adee9fd5f756e3bdb0cd705b.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/421747d7cc7be0688f1a71614e13cff3.png b/src/tutorial/idea/assets/20210914-java-app/421747d7cc7be0688f1a71614e13cff3.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/421747d7cc7be0688f1a71614e13cff3.png
rename to src/tutorial/idea/assets/20210914-java-app/421747d7cc7be0688f1a71614e13cff3.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/430123c951a1061b2a8f3669876da1ee.png b/src/tutorial/idea/assets/20210914-java-app/430123c951a1061b2a8f3669876da1ee.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/430123c951a1061b2a8f3669876da1ee.png
rename to src/tutorial/idea/assets/20210914-java-app/430123c951a1061b2a8f3669876da1ee.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/61d1aa5347ab34d5923180d5036f6926.png b/src/tutorial/idea/assets/20210914-java-app/61d1aa5347ab34d5923180d5036f6926.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/61d1aa5347ab34d5923180d5036f6926.png
rename to src/tutorial/idea/assets/20210914-java-app/61d1aa5347ab34d5923180d5036f6926.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/6380310c50b5b853aa3f84861fc06034.png b/src/tutorial/idea/assets/20210914-java-app/6380310c50b5b853aa3f84861fc06034.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/6380310c50b5b853aa3f84861fc06034.png
rename to src/tutorial/idea/assets/20210914-java-app/6380310c50b5b853aa3f84861fc06034.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/68ec843db0696ba14e7b7d9837e53ad9.png b/src/tutorial/idea/assets/20210914-java-app/68ec843db0696ba14e7b7d9837e53ad9.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/68ec843db0696ba14e7b7d9837e53ad9.png
rename to src/tutorial/idea/assets/20210914-java-app/68ec843db0696ba14e7b7d9837e53ad9.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/7b0c9354865783a461df50ee8a0344dd.png b/src/tutorial/idea/assets/20210914-java-app/7b0c9354865783a461df50ee8a0344dd.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/7b0c9354865783a461df50ee8a0344dd.png
rename to src/tutorial/idea/assets/20210914-java-app/7b0c9354865783a461df50ee8a0344dd.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/af56e65bf33369897c860d19b6a6537d.png b/src/tutorial/idea/assets/20210914-java-app/af56e65bf33369897c860d19b6a6537d.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/af56e65bf33369897c860d19b6a6537d.png
rename to src/tutorial/idea/assets/20210914-java-app/af56e65bf33369897c860d19b6a6537d.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/bf17a258aaa8fae4ec8a55e3f39e1255.png b/src/tutorial/idea/assets/20210914-java-app/bf17a258aaa8fae4ec8a55e3f39e1255.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/bf17a258aaa8fae4ec8a55e3f39e1255.png
rename to src/tutorial/idea/assets/20210914-java-app/bf17a258aaa8fae4ec8a55e3f39e1255.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/c3e6f20cf409e842b1e1c2b219b58464.png b/src/tutorial/idea/assets/20210914-java-app/c3e6f20cf409e842b1e1c2b219b58464.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/c3e6f20cf409e842b1e1c2b219b58464.png
rename to src/tutorial/idea/assets/20210914-java-app/c3e6f20cf409e842b1e1c2b219b58464.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/c7510f468bf4e16a42bf4e59e25dffc5.png b/src/tutorial/idea/assets/20210914-java-app/c7510f468bf4e16a42bf4e59e25dffc5.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/c7510f468bf4e16a42bf4e59e25dffc5.png
rename to src/tutorial/idea/assets/20210914-java-app/c7510f468bf4e16a42bf4e59e25dffc5.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/cffaa858bea34df06f88230506d01620.png b/src/tutorial/idea/assets/20210914-java-app/cffaa858bea34df06f88230506d01620.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/cffaa858bea34df06f88230506d01620.png
rename to src/tutorial/idea/assets/20210914-java-app/cffaa858bea34df06f88230506d01620.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/d76ef859fa7e96b20f35ce9d8071692c.png b/src/tutorial/idea/assets/20210914-java-app/d76ef859fa7e96b20f35ce9d8071692c.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/d76ef859fa7e96b20f35ce9d8071692c.png
rename to src/tutorial/idea/assets/20210914-java-app/d76ef859fa7e96b20f35ce9d8071692c.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/df8e27534d5ed9b913dc647837e9dab5.png b/src/tutorial/idea/assets/20210914-java-app/df8e27534d5ed9b913dc647837e9dab5.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/df8e27534d5ed9b913dc647837e9dab5.png
rename to src/tutorial/idea/assets/20210914-java-app/df8e27534d5ed9b913dc647837e9dab5.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/ec8b180d1673a5e889961e2d972f3210.png b/src/tutorial/idea/assets/20210914-java-app/ec8b180d1673a5e889961e2d972f3210.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/ec8b180d1673a5e889961e2d972f3210.png
rename to src/tutorial/idea/assets/20210914-java-app/ec8b180d1673a5e889961e2d972f3210.png
diff --git a/docs/src/tutorial/idea/assets/20210914-java-app/f71546df34e73baa93cae1d1b10c830b.png b/src/tutorial/idea/assets/20210914-java-app/f71546df34e73baa93cae1d1b10c830b.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20210914-java-app/f71546df34e73baa93cae1d1b10c830b.png
rename to src/tutorial/idea/assets/20210914-java-app/f71546df34e73baa93cae1d1b10c830b.png
diff --git a/docs/src/tutorial/idea/assets/20211010-tips/091e8b6b63aed8112ff8c800686a4394.png b/src/tutorial/idea/assets/20211010-tips/091e8b6b63aed8112ff8c800686a4394.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20211010-tips/091e8b6b63aed8112ff8c800686a4394.png
rename to src/tutorial/idea/assets/20211010-tips/091e8b6b63aed8112ff8c800686a4394.png
diff --git a/docs/src/tutorial/idea/assets/20211010-tips/2d2e86ecb8dc163069b4803619c69c80.png b/src/tutorial/idea/assets/20211010-tips/2d2e86ecb8dc163069b4803619c69c80.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20211010-tips/2d2e86ecb8dc163069b4803619c69c80.png
rename to src/tutorial/idea/assets/20211010-tips/2d2e86ecb8dc163069b4803619c69c80.png
diff --git a/docs/src/tutorial/idea/assets/20211010-tips/3451e9cbe42b89ce3b654ff0323aafa3.png b/src/tutorial/idea/assets/20211010-tips/3451e9cbe42b89ce3b654ff0323aafa3.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20211010-tips/3451e9cbe42b89ce3b654ff0323aafa3.png
rename to src/tutorial/idea/assets/20211010-tips/3451e9cbe42b89ce3b654ff0323aafa3.png
diff --git a/docs/src/tutorial/idea/assets/20211010-tips/4eba607aff5dd7291c3112fb80c89c81.png b/src/tutorial/idea/assets/20211010-tips/4eba607aff5dd7291c3112fb80c89c81.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20211010-tips/4eba607aff5dd7291c3112fb80c89c81.png
rename to src/tutorial/idea/assets/20211010-tips/4eba607aff5dd7291c3112fb80c89c81.png
diff --git a/docs/src/tutorial/idea/assets/20211010-tips/75a104b1eff84a78dedbc4bc4d51ed7a.png b/src/tutorial/idea/assets/20211010-tips/75a104b1eff84a78dedbc4bc4d51ed7a.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20211010-tips/75a104b1eff84a78dedbc4bc4d51ed7a.png
rename to src/tutorial/idea/assets/20211010-tips/75a104b1eff84a78dedbc4bc4d51ed7a.png
diff --git a/docs/src/tutorial/idea/assets/20211010-tips/a6e49aded013bc28aa53dac516f8229a.png b/src/tutorial/idea/assets/20211010-tips/a6e49aded013bc28aa53dac516f8229a.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20211010-tips/a6e49aded013bc28aa53dac516f8229a.png
rename to src/tutorial/idea/assets/20211010-tips/a6e49aded013bc28aa53dac516f8229a.png
diff --git a/docs/src/tutorial/idea/assets/20211010-tips/bcbcdb8bf3fea3b21b3d3698caae943b.png b/src/tutorial/idea/assets/20211010-tips/bcbcdb8bf3fea3b21b3d3698caae943b.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20211010-tips/bcbcdb8bf3fea3b21b3d3698caae943b.png
rename to src/tutorial/idea/assets/20211010-tips/bcbcdb8bf3fea3b21b3d3698caae943b.png
diff --git a/docs/src/tutorial/idea/assets/20211010-tips/cdb76601e9527a592220166ae68e5afc.png b/src/tutorial/idea/assets/20211010-tips/cdb76601e9527a592220166ae68e5afc.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20211010-tips/cdb76601e9527a592220166ae68e5afc.png
rename to src/tutorial/idea/assets/20211010-tips/cdb76601e9527a592220166ae68e5afc.png
diff --git a/docs/src/tutorial/idea/assets/20211010-tips/f11c243584856d809749bd9069e2a63e.png b/src/tutorial/idea/assets/20211010-tips/f11c243584856d809749bd9069e2a63e.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20211010-tips/f11c243584856d809749bd9069e2a63e.png
rename to src/tutorial/idea/assets/20211010-tips/f11c243584856d809749bd9069e2a63e.png
diff --git a/docs/src/tutorial/idea/assets/20211010-tips/fcbad07fe2b94f437617c67647f919b2.png b/src/tutorial/idea/assets/20211010-tips/fcbad07fe2b94f437617c67647f919b2.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/20211010-tips/fcbad07fe2b94f437617c67647f919b2.png
rename to src/tutorial/idea/assets/20211010-tips/fcbad07fe2b94f437617c67647f919b2.png
diff --git a/docs/src/tutorial/idea/assets/20220105-git/085e127932430652a7ce2f924a28374d.webp b/src/tutorial/idea/assets/20220105-git/085e127932430652a7ce2f924a28374d.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/085e127932430652a7ce2f924a28374d.webp
rename to src/tutorial/idea/assets/20220105-git/085e127932430652a7ce2f924a28374d.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/116d298d9fb53756945cbb022184f29a.webp b/src/tutorial/idea/assets/20220105-git/116d298d9fb53756945cbb022184f29a.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/116d298d9fb53756945cbb022184f29a.webp
rename to src/tutorial/idea/assets/20220105-git/116d298d9fb53756945cbb022184f29a.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/27b20f1df027ec42ecd07415fac966cd.webp b/src/tutorial/idea/assets/20220105-git/27b20f1df027ec42ecd07415fac966cd.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/27b20f1df027ec42ecd07415fac966cd.webp
rename to src/tutorial/idea/assets/20220105-git/27b20f1df027ec42ecd07415fac966cd.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/322580983264cfc17688040e4fd89956.webp b/src/tutorial/idea/assets/20220105-git/322580983264cfc17688040e4fd89956.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/322580983264cfc17688040e4fd89956.webp
rename to src/tutorial/idea/assets/20220105-git/322580983264cfc17688040e4fd89956.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/32a6df7b1f7c1b96558b1923e441e89e.webp b/src/tutorial/idea/assets/20220105-git/32a6df7b1f7c1b96558b1923e441e89e.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/32a6df7b1f7c1b96558b1923e441e89e.webp
rename to src/tutorial/idea/assets/20220105-git/32a6df7b1f7c1b96558b1923e441e89e.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/40cfec3cc33052ffaa63614e4ffd709c.webp b/src/tutorial/idea/assets/20220105-git/40cfec3cc33052ffaa63614e4ffd709c.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/40cfec3cc33052ffaa63614e4ffd709c.webp
rename to src/tutorial/idea/assets/20220105-git/40cfec3cc33052ffaa63614e4ffd709c.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/42f18a6772396872b78b655cecbfbbdf.webp b/src/tutorial/idea/assets/20220105-git/42f18a6772396872b78b655cecbfbbdf.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/42f18a6772396872b78b655cecbfbbdf.webp
rename to src/tutorial/idea/assets/20220105-git/42f18a6772396872b78b655cecbfbbdf.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/62bf142e5bdaa3a91e3deab5fc41e8f5.webp b/src/tutorial/idea/assets/20220105-git/62bf142e5bdaa3a91e3deab5fc41e8f5.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/62bf142e5bdaa3a91e3deab5fc41e8f5.webp
rename to src/tutorial/idea/assets/20220105-git/62bf142e5bdaa3a91e3deab5fc41e8f5.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/664e3f5b90852d726a0f2cd5425b1b7e.webp b/src/tutorial/idea/assets/20220105-git/664e3f5b90852d726a0f2cd5425b1b7e.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/664e3f5b90852d726a0f2cd5425b1b7e.webp
rename to src/tutorial/idea/assets/20220105-git/664e3f5b90852d726a0f2cd5425b1b7e.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/67c2613ff0b1e2dac038a84a6a65490c.webp b/src/tutorial/idea/assets/20220105-git/67c2613ff0b1e2dac038a84a6a65490c.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/67c2613ff0b1e2dac038a84a6a65490c.webp
rename to src/tutorial/idea/assets/20220105-git/67c2613ff0b1e2dac038a84a6a65490c.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/67d1ae8ce2c42dfe15d02511f138404d.webp b/src/tutorial/idea/assets/20220105-git/67d1ae8ce2c42dfe15d02511f138404d.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/67d1ae8ce2c42dfe15d02511f138404d.webp
rename to src/tutorial/idea/assets/20220105-git/67d1ae8ce2c42dfe15d02511f138404d.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/6e5004db9448cc282f575dc18b257db5.webp b/src/tutorial/idea/assets/20220105-git/6e5004db9448cc282f575dc18b257db5.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/6e5004db9448cc282f575dc18b257db5.webp
rename to src/tutorial/idea/assets/20220105-git/6e5004db9448cc282f575dc18b257db5.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/84bcc3c8135e869a6f0d2028e5afa08b.webp b/src/tutorial/idea/assets/20220105-git/84bcc3c8135e869a6f0d2028e5afa08b.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/84bcc3c8135e869a6f0d2028e5afa08b.webp
rename to src/tutorial/idea/assets/20220105-git/84bcc3c8135e869a6f0d2028e5afa08b.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/89cb90523386ecd4e293cdd1fcd22e90.webp b/src/tutorial/idea/assets/20220105-git/89cb90523386ecd4e293cdd1fcd22e90.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/89cb90523386ecd4e293cdd1fcd22e90.webp
rename to src/tutorial/idea/assets/20220105-git/89cb90523386ecd4e293cdd1fcd22e90.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/a2bb37fe9b5a72983a07285fcc412a5c.webp b/src/tutorial/idea/assets/20220105-git/a2bb37fe9b5a72983a07285fcc412a5c.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/a2bb37fe9b5a72983a07285fcc412a5c.webp
rename to src/tutorial/idea/assets/20220105-git/a2bb37fe9b5a72983a07285fcc412a5c.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/adbb782dcb8dd7e9720bc83a47ba5e7a.webp b/src/tutorial/idea/assets/20220105-git/adbb782dcb8dd7e9720bc83a47ba5e7a.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/adbb782dcb8dd7e9720bc83a47ba5e7a.webp
rename to src/tutorial/idea/assets/20220105-git/adbb782dcb8dd7e9720bc83a47ba5e7a.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/b11e03e3f142077f97f6c929ede92a44.webp b/src/tutorial/idea/assets/20220105-git/b11e03e3f142077f97f6c929ede92a44.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/b11e03e3f142077f97f6c929ede92a44.webp
rename to src/tutorial/idea/assets/20220105-git/b11e03e3f142077f97f6c929ede92a44.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/b3da00d95934ca40ec17f705167a69db.webp b/src/tutorial/idea/assets/20220105-git/b3da00d95934ca40ec17f705167a69db.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/b3da00d95934ca40ec17f705167a69db.webp
rename to src/tutorial/idea/assets/20220105-git/b3da00d95934ca40ec17f705167a69db.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/b4aafa7057da549304cd6afc53ba6631.webp b/src/tutorial/idea/assets/20220105-git/b4aafa7057da549304cd6afc53ba6631.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/b4aafa7057da549304cd6afc53ba6631.webp
rename to src/tutorial/idea/assets/20220105-git/b4aafa7057da549304cd6afc53ba6631.webp
diff --git a/docs/src/tutorial/idea/assets/20220105-git/fbfe7ea85d32c6bf6412798d0232c44f.webp b/src/tutorial/idea/assets/20220105-git/fbfe7ea85d32c6bf6412798d0232c44f.webp
similarity index 100%
rename from docs/src/tutorial/idea/assets/20220105-git/fbfe7ea85d32c6bf6412798d0232c44f.webp
rename to src/tutorial/idea/assets/20220105-git/fbfe7ea85d32c6bf6412798d0232c44f.webp
diff --git a/docs/src/tutorial/idea/assets/ali-code-analyze.png b/src/tutorial/idea/assets/ali-code-analyze.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/ali-code-analyze.png
rename to src/tutorial/idea/assets/ali-code-analyze.png
diff --git a/docs/src/tutorial/idea/assets/appearance.png b/src/tutorial/idea/assets/appearance.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/appearance.png
rename to src/tutorial/idea/assets/appearance.png
diff --git a/docs/src/tutorial/idea/assets/auto-import.png b/src/tutorial/idea/assets/auto-import.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/auto-import.png
rename to src/tutorial/idea/assets/auto-import.png
diff --git a/docs/src/tutorial/idea/assets/before-commit.png b/src/tutorial/idea/assets/before-commit.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/before-commit.png
rename to src/tutorial/idea/assets/before-commit.png
diff --git a/docs/src/tutorial/idea/assets/build-auto.png b/src/tutorial/idea/assets/build-auto.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/build-auto.png
rename to src/tutorial/idea/assets/build-auto.png
diff --git a/docs/src/tutorial/idea/assets/class-temp.png b/src/tutorial/idea/assets/class-temp.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/class-temp.png
rename to src/tutorial/idea/assets/class-temp.png
diff --git a/docs/src/tutorial/idea/assets/code-analysis-res.png b/src/tutorial/idea/assets/code-analysis-res.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/code-analysis-res.png
rename to src/tutorial/idea/assets/code-analysis-res.png
diff --git a/docs/src/tutorial/idea/assets/code-analysis.png b/src/tutorial/idea/assets/code-analysis.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/code-analysis.png
rename to src/tutorial/idea/assets/code-analysis.png
diff --git a/docs/src/tutorial/idea/assets/compiler.png b/src/tutorial/idea/assets/compiler.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/compiler.png
rename to src/tutorial/idea/assets/compiler.png
diff --git a/docs/src/tutorial/idea/assets/console-ali.png b/src/tutorial/idea/assets/console-ali.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/console-ali.png
rename to src/tutorial/idea/assets/console-ali.png
diff --git a/docs/src/tutorial/idea/assets/console.png b/src/tutorial/idea/assets/console.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/console.png
rename to src/tutorial/idea/assets/console.png
diff --git a/docs/src/tutorial/idea/assets/download.png b/src/tutorial/idea/assets/download.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/download.png
rename to src/tutorial/idea/assets/download.png
diff --git a/docs/src/tutorial/idea/assets/encode-setting.png b/src/tutorial/idea/assets/encode-setting.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/encode-setting.png
rename to src/tutorial/idea/assets/encode-setting.png
diff --git a/docs/src/tutorial/idea/assets/export.png b/src/tutorial/idea/assets/export.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/export.png
rename to src/tutorial/idea/assets/export.png
diff --git a/docs/src/tutorial/idea/assets/finish.png b/src/tutorial/idea/assets/finish.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/finish.png
rename to src/tutorial/idea/assets/finish.png
diff --git a/docs/src/tutorial/idea/assets/fix-setting.png b/src/tutorial/idea/assets/fix-setting.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/fix-setting.png
rename to src/tutorial/idea/assets/fix-setting.png
diff --git a/docs/src/tutorial/idea/assets/flatten-pkg-off.png b/src/tutorial/idea/assets/flatten-pkg-off.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/flatten-pkg-off.png
rename to src/tutorial/idea/assets/flatten-pkg-off.png
diff --git a/docs/src/tutorial/idea/assets/flatten-pkg-on.png b/src/tutorial/idea/assets/flatten-pkg-on.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/flatten-pkg-on.png
rename to src/tutorial/idea/assets/flatten-pkg-on.png
diff --git a/docs/src/tutorial/idea/assets/font.png b/src/tutorial/idea/assets/font.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/font.png
rename to src/tutorial/idea/assets/font.png
diff --git a/docs/src/tutorial/idea/assets/gene-res.png b/src/tutorial/idea/assets/gene-res.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/gene-res.png
rename to src/tutorial/idea/assets/gene-res.png
diff --git a/docs/src/tutorial/idea/assets/import.png b/src/tutorial/idea/assets/import.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/import.png
rename to src/tutorial/idea/assets/import.png
diff --git a/docs/src/tutorial/idea/assets/install-options.png b/src/tutorial/idea/assets/install-options.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/install-options.png
rename to src/tutorial/idea/assets/install-options.png
diff --git a/docs/src/tutorial/idea/assets/installing.png b/src/tutorial/idea/assets/installing.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/installing.png
rename to src/tutorial/idea/assets/installing.png
diff --git a/docs/src/tutorial/idea/assets/license.png b/src/tutorial/idea/assets/license.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/license.png
rename to src/tutorial/idea/assets/license.png
diff --git a/docs/src/tutorial/idea/assets/line-num.png b/src/tutorial/idea/assets/line-num.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/line-num.png
rename to src/tutorial/idea/assets/line-num.png
diff --git a/docs/src/tutorial/idea/assets/match-case.png b/src/tutorial/idea/assets/match-case.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/match-case.png
rename to src/tutorial/idea/assets/match-case.png
diff --git a/docs/src/tutorial/idea/assets/maven-setting.png b/src/tutorial/idea/assets/maven-setting.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/maven-setting.png
rename to src/tutorial/idea/assets/maven-setting.png
diff --git a/docs/src/tutorial/idea/assets/mouse-wheel.png b/src/tutorial/idea/assets/mouse-wheel.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/mouse-wheel.png
rename to src/tutorial/idea/assets/mouse-wheel.png
diff --git a/docs/src/tutorial/idea/assets/mul-row.png b/src/tutorial/idea/assets/mul-row.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/mul-row.png
rename to src/tutorial/idea/assets/mul-row.png
diff --git a/docs/src/tutorial/idea/assets/offcial-website.png b/src/tutorial/idea/assets/offcial-website.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/offcial-website.png
rename to src/tutorial/idea/assets/offcial-website.png
diff --git a/docs/src/tutorial/idea/assets/para-fill.png b/src/tutorial/idea/assets/para-fill.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/para-fill.png
rename to src/tutorial/idea/assets/para-fill.png
diff --git a/docs/src/tutorial/idea/assets/para-setting.png b/src/tutorial/idea/assets/para-setting.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/para-setting.png
rename to src/tutorial/idea/assets/para-setting.png
diff --git a/docs/src/tutorial/idea/assets/path-set.png b/src/tutorial/idea/assets/path-set.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/path-set.png
rename to src/tutorial/idea/assets/path-set.png
diff --git a/docs/src/tutorial/idea/assets/review-sonar-res.png b/src/tutorial/idea/assets/review-sonar-res.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/review-sonar-res.png
rename to src/tutorial/idea/assets/review-sonar-res.png
diff --git a/docs/src/tutorial/idea/assets/review.png b/src/tutorial/idea/assets/review.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/review.png
rename to src/tutorial/idea/assets/review.png
diff --git a/docs/src/tutorial/idea/assets/sonar-res.png b/src/tutorial/idea/assets/sonar-res.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/sonar-res.png
rename to src/tutorial/idea/assets/sonar-res.png
diff --git a/docs/src/tutorial/idea/assets/start-menu.png b/src/tutorial/idea/assets/start-menu.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/start-menu.png
rename to src/tutorial/idea/assets/start-menu.png
diff --git a/docs/src/tutorial/idea/assets/theme.png b/src/tutorial/idea/assets/theme.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/theme.png
rename to src/tutorial/idea/assets/theme.png
diff --git a/docs/src/tutorial/idea/assets/todo.png b/src/tutorial/idea/assets/todo.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/todo.png
rename to src/tutorial/idea/assets/todo.png
diff --git a/docs/src/tutorial/idea/assets/ui.png b/src/tutorial/idea/assets/ui.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/ui.png
rename to src/tutorial/idea/assets/ui.png
diff --git a/docs/src/tutorial/idea/assets/welcome.png b/src/tutorial/idea/assets/welcome.png
similarity index 100%
rename from docs/src/tutorial/idea/assets/welcome.png
rename to src/tutorial/idea/assets/welcome.png
diff --git a/docs/src/tutorial/software-designer/20221024-computer-system.md b/src/tutorial/software-designer/20221024-computer-system.md
similarity index 96%
rename from docs/src/tutorial/software-designer/20221024-computer-system.md
rename to src/tutorial/software-designer/20221024-computer-system.md
index 0c2036d5cd..3723d938b9 100644
--- a/docs/src/tutorial/software-designer/20221024-computer-system.md
+++ b/src/tutorial/software-designer/20221024-computer-system.md
@@ -10,19 +10,9 @@ date: 2022-10-24
 
 # 计算机系统
 
-> 作者：[村雨遥](https://github.com/cunyu1943)
-> 
-> 不要哀求，学会争取，若是如此，终有所获
-> 
->
-
-## 🎈 号外
-
-最近，公众号之外，建立了微信交流群，不定期会在群里分享各种资源（影视、IT 编程、考试提升……）&知识。如果有需要，可以**扫码或者后台添加小编微信备注入群**。进群后**优先看群公告**，**呼叫群中【资源分享小助手】**，还能免费帮找资源哦～
-
-<center>
-<img src="/contact/wxgroup.jpg" width="150"> 
-</center>
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
 
 ## CPU
 
@@ -243,7 +233,7 @@ $$2^k>= n + k + 1$$
 
 扫一扫，探索另一个全新的世界。
 
-<center>
-<img src="/contact/contact.png" width="300">
-</center>
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
 
diff --git a/src/tutorial/software-designer/README.md b/src/tutorial/software-designer/README.md
new file mode 100644
index 0000000000..af6ca7c19e
--- /dev/null
+++ b/src/tutorial/software-designer/README.md
@@ -0,0 +1,7 @@
+---
+title: 软件设计师
+index: false
+icon: fa-solid fa-user-ninja
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/docs/src/tutorial/software-designer/assets/05e053d26fec47c0886cb4839ca49c6d.webp b/src/tutorial/software-designer/assets/05e053d26fec47c0886cb4839ca49c6d.webp
similarity index 100%
rename from docs/src/tutorial/software-designer/assets/05e053d26fec47c0886cb4839ca49c6d.webp
rename to src/tutorial/software-designer/assets/05e053d26fec47c0886cb4839ca49c6d.webp
diff --git a/docs/src/tutorial/software-designer/assets/723bfe1551fe469da4c91eb4cd7caad5.webp b/src/tutorial/software-designer/assets/723bfe1551fe469da4c91eb4cd7caad5.webp
similarity index 100%
rename from docs/src/tutorial/software-designer/assets/723bfe1551fe469da4c91eb4cd7caad5.webp
rename to src/tutorial/software-designer/assets/723bfe1551fe469da4c91eb4cd7caad5.webp
diff --git a/docs/src/tutorial/software-designer/assets/b9cf4906aaf944b5a12996b3f5f3a5de.webp b/src/tutorial/software-designer/assets/b9cf4906aaf944b5a12996b3f5f3a5de.webp
similarity index 100%
rename from docs/src/tutorial/software-designer/assets/b9cf4906aaf944b5a12996b3f5f3a5de.webp
rename to src/tutorial/software-designer/assets/b9cf4906aaf944b5a12996b3f5f3a5de.webp
diff --git a/docs/src/tutorial/software-designer/assets/e216c374cc7347749c5cdbdb6c7013a3.webp b/src/tutorial/software-designer/assets/e216c374cc7347749c5cdbdb6c7013a3.webp
similarity index 100%
rename from docs/src/tutorial/software-designer/assets/e216c374cc7347749c5cdbdb6c7013a3.webp
rename to src/tutorial/software-designer/assets/e216c374cc7347749c5cdbdb6c7013a3.webp
diff --git a/src/weekly/2023/0415-0421.md b/src/weekly/2023/0415-0421.md
new file mode 100644
index 0000000000..cb4e3a5705
--- /dev/null
+++ b/src/weekly/2023/0415-0421.md
@@ -0,0 +1,340 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#1：提示工程师养成指南
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/tRCcFjolMuXqunWRQDgxGQ
+:::
+
+## 一、项目
+
+### 1. [ddrun](https://gitee.com/landalfyao/ddrun)
+
+后端采用 `midway3.0`，后台采用 `nuxt2.x`，小程序采用 `uniapp` 实现的一套跑腿下单接单系统。
+
+适用于校园、社区、城市等场景，可提供打印服务、跑腿服务、搬家服务、清洁服务、维修服务、活动组织、快递代取、代买代送、软件安装、陪玩陪练等服务。
+
+![](assets/ddrun.png)
+
+### 2. [tiny-vue](https://github.com/opentiny/tiny-vue)
+
+`TinyVue` 是华为云出品的企业级设计体系，一个基于 `Vue` 的 `UI` 组件库，可以同时支持 `Vue 2.0` 和 `Vue 3.0`。
+
+组件丰富，主要提供以下组件：
+
+-   框架风格
+-   导航组件
+-   容器组件
+-   表单组件
+-   表格组件
+-   数据组件
+-   提示组件
+-   其他组件
+
+![](assets/1693144296484.webp)
+
+### 3. [netease-recent-profile](https://github.com/zonemeen/netease-recent-profile)
+
+通过使用该组件，可以在 `Github Profile` 上显示你在网易云音乐上的听歌记录。
+
+![](assets/netease-recent-profile.png)
+
+## 二、软件
+
+### 1. [Bob](https://bobtranslate.com/)
+
+1.   **使用场景**
+
+仅适用于 `macOS`，学习工作中需要用到 `OCR` 的场景。
+
+2.   **常用功能**
+
+-   **划词翻译**：选中需要翻译的文本，按下划词翻译快捷键（默认 `⌥ + D`）即可翻译。
+-   **截图翻译**：按下截图翻译快捷键（默认 `⌥ + S`），截取需要翻译的区域即可翻译。
+-   **输入翻译**：按下输入翻译快捷键（默认 `⌥ + A`），输入需要翻译的文本，`Enter` 键翻译。
+-   **截图 OCR**：按下截图 `OCR` 快捷键（默认 `⇧ + ⌥ + S`），截取需要识别的区域即可识别文本。
+-   **静默截图 OCR**：按下静默截图 `OCR` 快捷键（无默认快捷键），截取需要识别的区域即可后台识别文本。
+-   **访达选图 OCR**：按下访达选图 `OCR` 快捷键（无默认快捷键），在访达窗口选中图片文件即可识别文本。
+
+![](assets/bob.png)
+
+### 2. [ScreenToGif](https://www.screentogif.com/)
+
+一款非常好用的免费开源 `Gif` 动画录制工具，集 `GIF` 录制、制作、编辑等多种功能为一身。具有录制屏幕、录制摄像头、录制画板、编辑器等功能，软件小巧、界面简洁但功能却很强大，而且操作也很简单。不过需要注意一点，它目前只支持在 `Windows` 系统中使用。
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2023/assets/1693144871919.webp)
+
+### 3. [Snipaste](https://www.snipaste.com/)
+
+一款强大的免费截图 + 贴图软件，目前支持 `Windows` 和 `macOS` 系统。免费版功能对于日常截图贴图已经完全足够，同时还推出了专业版，比起免费版更为强大。
+
+专业版与免费版功能对比如下表，专业版目前定价 `99` 元，有需要的看官可以入手。
+
+| 功能                                           | 免费版     | 专业版             |
+| ---------------------------------------------- | ---------- | ------------------ |
+| **截屏**                                       |            |                    |
+| 自由矩形区域截屏                               | ✔️          | ✔️                  |
+| 窗口检测                                       | ✔️          | ✔️                  |
+| 界面元素检测                                   | ✔️          | ✔️                  |
+| 延时截屏                                       | ✔️          | ✔️                  |
+| 自定义尺寸截屏                                 | ✔️          | ✔️                  |
+| 白板模式                                       | ✔️          | ✔️                  |
+| 捕捉光标图案                                   | ✔️          | ✔️                  |
+| 重复上一次截屏区域                             | ✔️          | ✔️                  |
+| 精确控制光标移动                               | ✔️          | ✔️                  |
+| 重放截图历史                                   | ✔️          | ✔️                  |
+| 自动保存                                       | ✔️          | ✔️                  |
+| 快速保存                                       | ✔️          | ✔️                  |
+| 超级截屏                                       | ❌          | ✔️                  |
+| 检测界面父/子元素                              | ❌          | ✔️                  |
+| 识别二维码/条形码                              | ❌          | ✔️                  |
+| 刷新截图                                       | ❌          | ✔️                  |
+| 输入截屏区域尺寸                               | ❌          | ✔️                  |
+| 切换截屏尺寸单位 (`px`/`dip`)                  | ❌          | ✔️                  |
+| 活动窗口截屏                                   | ❌          | ✔️                  |
+| 固定截图区域长宽比                             | ❌          | ✔️                  |
+| 透明白板模式                                   | ❌          | ✔️                  |
+| 带阴影/边框保存                                | ❌          | ✔️                  |
+| 原生分享 (`Windows` 10+)                       | ❌          | ✔️                  |
+| 配合 Listary 使用 (手动保存文件时隐藏截图窗口) | ❌          | ✔️                  |
+| 发送截图到其他应用程序（通过自定义命令行参数） | ❌          | ✔️                  |
+| **贴图**                                       |            |                    |
+| 将剪贴板内容(文字/图像/文件)粘贴为置顶窗口     | ✔️          | ✔️                  |
+| 调整大小/透明度                                | ✔️          | ✔️                  |
+| 旋转/镜像                                      | ✔️          | ✔️                  |
+| 以固定尺寸快速缩略图                           | ✔️          | ✔️                  |
+| 贴图分组                                       | ✔️          | ✔️                  |
+| 取消/启用贴图窗口置顶                          | ❌          | ✔️                  |
+| 自由尺寸缩略图                                 | ❌          | ✔️                  |
+| 贴图裁剪                                       | ❌          | ✔️                  |
+| 灰度转换                                       | ❌          | ✔️                  |
+| 反色                                           | ❌          | ✔️                  |
+| 支持虚拟桌面                                   | ❌          | ✔️                  |
+| `Solo` 模式                                    | ❌          | ✔️                  |
+| 多选贴图窗口                                   | ❌          | ✔️                  |
+| 背景模式 (对于有透明通道的贴图)                | ❌          | ✔️                  |
+| 支持粘贴/拖拽网页图片                          | ❌          | ✔️                  |
+| 贴图组管理                                     | ❌          | ✔️                  |
+| 输入贴图尺寸/缩放比例                          | ❌          | ✔️                  |
+| 可编辑的颜色卡片                               | ❌          | ✔️                  |
+| **标注**                                       |            |                    |
+| 矩形/椭圆                                      | ✔️          | ✔️                  |
+| 直线/折线/箭头                                 | ✔️          | ✔️                  |
+| 画笔                                           | ✔️          | ✔️                  |
+| 记号笔                                         | ✔️          | ✔️                  |
+| 马赛克/模糊                                    | ✔️          | ✔️                  |
+| 文本标注                                       | ✔️          | ✔️                  |
+| 橡皮擦                                         | ✔️          | ✔️                  |
+| 序号标注                                       | ❌          | ✔️                  |
+| 放大镜标注                                     | ❌          | ✔️                  |
+| 圆角矩形标注                                   | ❌          | ✔️                  |
+| 虚线/点线 (矩形/椭圆/直线/折线/箭头/画笔)      | ❌          | ✔️                  |
+| 记号笔/马赛克/模糊/橡皮擦 支持 椭圆/圆形 形状  | ❌          | ✔️                  |
+| 双向/反向箭头                                  | ❌          | ✔️                  |
+| 更多箭头样式                                   | ❌          | ✔️                  |
+| 文字背景填充                                   | ❌          | ✔️                  |
+| 自定义文字描边的颜色/宽度                      | ❌          | ✔️                  |
+| 旋转标注图形                                   | 仅文字标注 | 除线条标注外都支持 |
+| 二次编辑                                       | ❌          | ✔️                  |
+| 自由选中                                       | ❌          | ✔️                  |
+| 笔尖数量                                       | 1          | 1-5                |
+| 拖拽调色板以重新排序颜色                       | ❌          | ✔️                  |
+| 滚轮调整颜色透明度                             | ❌          | ✔️                  |
+| 为不同标注形状分别记忆颜色                     | ❌          | ✔️                  |
+| 自定义调色板，分享调色板                       | ❌          | ✔️                  |
+| **其他功能**                                   |            |                    |
+| 屏幕触发角                                     | ❌          | ✔️                  |
+| 复制截图为文件                                 | ❌          | ✔️                  |
+| 命令行选项                                     | 基础       | 丰富               |
+| **自定义选项**                                 |            |                    |
+| 为任意功能绑定全局快捷键                       | ❌          | ✔️                  |
+| 自定义放大镜样式                               | ❌          | ✔️                  |
+| 完全隐藏放大镜                                 | ❌          | ✔️                  |
+| 自定义托盘图图标的鼠标动作                     | ❌          | ✔️                  |
+| 主题色跟随系统主题                             | ❌          | ✔️                  |
+| **授权**                                       |            |                    |
+| 使用限制                                       | 仅个人使用 | 没有限制           |
+| 使用期限(但不包含大版本更新，如 `Snipaste` 3)  |            | 永久               |
+| 小版本更新                                     | 仅缺陷修复 | 包含新功能         |
+| 授权价格                                       | 免费       | `99` 人民币        |
+
+![](assets/1693144474524.webp)
+
+## 三、网站
+
+### 1. [BrowserFrame](https://browserframe.com/)
+
+通过该网站，可以模拟在各大浏览器框架中的屏幕截图，支持 `Chrome`、`Safari`、`Firefox`、`Edge`、`Opera`等浏览器、`macOS`、`Windows` 系统以及 `Dark`、`Light` 主题。
+
+![](assets/browserframe.png)
+
+### 2. [docsmall](https://docsmall.com/)
+
+一个提供图片压缩、`Gif` 压缩、`PDF` 压缩、`PDF` 合并、`PDF` 分隔等功能的在线网站，最重要的一点，完全免费！
+
+就像我文章里的图片，基本都是在这里压缩的。
+
+![](assets/docsmall.png)
+
+### 3. [Dimmy.club](https://dimmy.club/)
+
+模拟生成在各种设备模上的带壳屏幕截图，主要支持笔记本（`MacBook、Surface Book`）、一体机（`iMac`）、手机（`iPhone、Pixel、Nokia、Samsung`）、平板（`iPad、Nexus`）等设备。
+
+![](assets/dimmyclub.png)
+
+## 四、插件
+
+### 1. [AdGuard](https://adguard.com/zh_cn/welcome.html)
+
+号称世界上最高级的广告拦截器，具有如下特点：
+
+- 拦截所有种类的广告
+- 移除烦人的网络元素
+- 节省流量并加速页面载入
+- 工作于浏览器与应用程序
+- 保持网站功能和外观
+
+![AdGuard](assets/adguard.png)
+
+### 2. [Global Speed: 视频速度控制](https://microsoftedge.microsoft.com/addons/detail/global-speed-视频速度控制/mjhlabbcmjflkpjknnicihkfnmbdfced)
+
+1. **速度控制**
+
+- 与几乎所有视频和音频流媒体站点兼容，包括 `Youtube`，`Netflix`，哔哩哔哩，腾讯视频，百度网盘，爱奇艺等。
+- 如果固定，标签可以有自己的播放速率。
+- `URL` 规则，可根据网站自动设置自定义播放速率。
+- 可选的快捷键来控制速度。
+
+2. **媒体热键**
+
+- 倒带/前进，逐帧分析，调整音量，设置标记，转到标记，`AB` 重复等。
+- 选择您要优先用于媒体热键的视频/音频。
+- 热键可以处于全局模式，该模式允许您在使用其他程序时控制背景音乐或 `PiP` 视频。
+
+3. **筛选器**
+
+- 在视频甚至整个页面上应用滤镜（反转，灰度，亮度，对比度，镜像等）。
+- 配置热键以切换反转，调整亮度或对比度等。
+
+4. **音效**
+
+- 效果包括音高变化，音量增强，`EQ` 等。
+- 可以延迟音频以解决同步问题。
+- 配置热键来调整音调，音量增强等。
+
+5. **隐私**
+
+- 无数据收集，无追踪器。
+
+6.   **使用场景**
+
+-   快速刷课
+-   学习教程视频时加速等
+
+![Global Speed：视频速度控制](assets/global-speed.png)
+
+### 3. [SuperCopy 超级复制](https://microsoftedge.microsoft.com/addons/detail/supercopy-超级复制/nhiheekdcnmfbapkmpbhmplfddenhjic?hl=zh-CN)
+
+1.   **主要功能**
+
+-   解除禁止复制
+-   解除禁止右键
+-   解除禁止全选
+-   解除禁止粘贴
+
+2.   **常用场景**
+
+复制百度文库、腾讯文档、金山文档、起点文学、豆瓣读书等网页禁止复制的内容。 
+
+3.   **插件特色**
+
+点亮图标即可复制，操作简单，需复制的网站具有记忆功能。
+
+4.   **使用方法**
+
+在访问被禁止右键或禁止复制的网站上，点击 `SuperCopy` 图标解除禁止即可。当插件图标灰色表示未启用解除功能，当图标彩色表示解除生效。
+
+5.   **可复制的常用网站**
+
+-   百度文库
+-   起点中文网、起点文学、起点女生网
+-   创始中文网
+-   磨铁中文网、磨铁文学、锦文小说网、墨墨言情网、逸云书院
+-   纵横中文网、纵横文学
+-   网易云阅读
+-   腾讯原创馆
+-   豆瓣阅读、豆瓣读书
+-   熊猫看书
+-   哔哩哔哩
+-   微博
+-   `Story Bird`、`Beetify`
+-   刺猬猫
+-   站酷
+-   链家
+-   环球人力资源智库
+-   老烤鸭雅思等
+
+![SuperCopy 超级复制](assets/supercopy.png)
+
+## 五、资料
+
+### 1. [JavaPark](https://cunyu1943.site/JavaPark/)
+
+这里有 `Java` 学习保姆级教程、面试总结、计算机基础、数据库、实战实践、效率工具、资源分享、程序人生等诸多内容，学习 `Java` 的小伙伴不容错过。
+
+![](assets/JavaPark.png)
+
+### 2. [提示工程指南](https://www.promptingguide.ai/zh)
+
+`ChatGPT` 的横空出世，造就了一种新的职业 - **人工智能提示工程师**。而如何学习相关知识就很重要了，此刻你肯定无比需要一份入门指南，指引你学习的方向。
+
+而这个项目就提供了这样一份指南，介绍了大语言模型相关的论文研究、学习指南、模型、讲座、参考资料、大语言模型能力以及与其他与提示工程相关的工具。
+
+![](assets/prompt-engineering-guide.png)
+
+### 3. [Learn Prompting](https://learnprompting.org/zh-Hans/docs/intro)
+
+随着 `ChatGPT` 的发布，人工智能不断进步，提示工程技能变得越来越重要。
+
+这套教程聚焦于如何使用提示工程，甚至学习者都不需要储备很多机器学习相关的知识。通过学习如何与人工智能交流，从而得到我们想要的结果。
+
+![](assets/learn-prompting.png)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0422-0428.md b/src/weekly/2023/0422-0428.md
new file mode 100644
index 0000000000..249bfab56d
--- /dev/null
+++ b/src/weekly/2023/0422-0428.md
@@ -0,0 +1,293 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#2：AI 写作助手
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/PjyWCciDJoxW83N_MY92Dw
+:::
+
+
+## 一、项目
+
+### 1. [vue-fabric-editor](https://github.com/nihaojob/vue-fabric-editor)
+
+基于 `fabric.js` 和 `Vue` 的图片编辑器，可自定义字体、素材、设计模板。
+
+目前已支持以下功能：
+
+-   导入 `JSON` 文件
+-   保存为 `PNG`、`SVG`、`JSON` 文件
+-   插入 `SVG`、图片文件
+-   多元素水平、垂直对齐方式
+-   字体模板
+-   组合/拆分组合
+-   图层及顺序调整
+-   撤销/重做
+-   背景属性设置
+-   外观属性/字体属性/描边/阴影
+-   自定义字体
+-   自定义模板素材
+-   快捷键
+-   右键菜单
+-   辅助线
+-   标尺
+-   图片替换
+-   图片滤镜
+-   国际化
+
+![](assets/1693139631522.webp)
+
+### 2. [starfish-vue3-lowcode](https://github.com/haixin-fang/starfish-vue3-lowcode)
+
+`Vue3` 可视化低代码表单设计器，方便快捷的完成各类表单设计！
+
+基于 `TypeScript` 开发，支持 `Vue3.0 API`。
+
+![](assets/starfish-vue3-lowcode.gif)
+
+### 3. [vuepress-theme-hope](https://github.com/vuepress-theme-hope/vuepress-theme-hope)
+
+一个功能强大的 `vuepress` 主题，支持 `vuepress V1.0` 和 `V2.0` 版本，支持文档站和博客两种形式，目前仍在活跃更新中。除开支持 `vuepress` 默认功能之外，还具备以下特色功能：
+
+-   `Markdown` 增强
+-   幻灯片页面
+-   布局增强
+-   浏览量和评论
+-   文章信息
+-   博客支持
+-   主题色切换
+-   深色模式
+-   无障碍支持
+-   文章加密
+-   搜索支持
+-   代码复制
+-   图片预览
+-   `SEO` 增强
+-   `Sitemap`
+-   `Feed` 支持
+-   `PWA` 支持
+-   ……
+
+![](assets/vuepress-theme-hope.png)
+
+## 二、软件
+
+### 1. [Typora](https://typoraio.cn/)
+
+一款跨平台 `Markdown` 编辑器和阅读器，支持 `macOS`，`Windows` 及 `Linux` 三大平台，也是我写作文章时的软件。毫不夸张地说，它是目前本地 `Markdown` 编辑器的天花板。测试阶段免费，目前已转入收费阶段，89 元买断制，支持三台设备，而且后续升级免费。
+
+具有以下特点：
+
+-   风格极简
+-   主题丰富
+-   实时预览
+-   图片与文字
+-   代码块
+-   数学公式
+-   图表
+-   目录大纲
+-   文件管理
+-   导入与导出 
+-   ……
+
+![](assets/typora.png)
+
+### 2. [diagrams.net](https://app.diagrams.net/)
+
+一个免费的拖放式在线图表工具，允许用户创建流程图、生成网络和实体关系 (`ER`) 图，甚至设计数据库模式。包括其易用性以及与 `GitHub`、`OneDrive` 和 `Google Drive` 等常见平台的无缝集成。全平台支持，同时支持 `Web` 在线，而且支持导出到本地，不用担心数据隐私问题。在我其他文章中的一些图，基本都是用它来画的。
+
+![](assets/1693138973601.webp)
+
+### 3. [ShareX](https://getsharex.com/)
+
+一款支持截图、文件分享、图片上传的生产力工具，不过目前仅支持 `Windows` 平台。
+
+具有如下特点：
+
+-   完全开源免费
+-   轻巧却不失强大
+-   无广告
+-   支持录制 `Gif`
+-   支持多种截图方式（全屏、活动窗口、自定义、窗口菜单、滚动……）
+-   支持截图后的后续任务（贴图、打印、编辑、保存到文件、上传、`OCR`、粘贴到剪贴板、扫描二维码……）
+-   ……
+
+![](assets/ShareX_Screenshot.png)
+
+## 三、网站
+
+### 1. [白描](https://web.baimiaoapp.com/)
+
+一个高效准确的 `OCR` 文字识别、翻译与文件扫描工具，主要支持以下功能：
+
+-   图片文字提取
+-   数字公式识别
+-   电子表格识别
+-   扫描 `PDF` 转文字
+-   证件扫描
+-   ……
+
+目前普通用户每日限制 5 次识别次数，批量识别次数限制为 1 次，每日翻译不超过 3 次且每次翻译字数不超过 1000 字。而普通会员（付费 30 元）识别次数无限制，批量识别次数限制为 3 次，每日翻译不超过 3 次且每次翻译字数不超过 1000 字，而且一次付费永久有效，多设备同步。黄金会员（付费 40 元）则无以上限制。
+
+![](assets/white-scan.png)
+
+### 2. [火山写作](https://www.writingo.net/)
+
+字节跳动最新推出的写作助手，致力于帮助用户提升英语写作能力，更好地与世界沟通。
+
+支持学术论文、邮件、用户手册、个人陈述、学校申请、活动通知等类型的文章。点击一键优化还能让你选择目前在写作的文章类型、文章受众、修改风格、修改篇幅等类型，从而实现更精确的改写。目前，不登录情况下限制免费使用 3 次，有需要的小伙伴可以去试一下效果！
+
+![](assets/writingo.png)
+
+![](assets/writingo-enhance.png)
+
+### 3. [Bigjpg](https://bigjpg.com/)
+
+`AI` 人工智能图片无损放大工具。利用最新的人工智能深度学习技术，将图片噪点和锯齿部分进行补充，从而实现图片的无损放大。目前免费版可以上传 `3000 x 3000px` 图片, `5M` 以内，而付费版最大可支持 `50M`。而且登录后还提供 `API`，可以基于它来开发自己的应用。
+
+![](assets/bigjpg.png)
+
+## 四、插件
+
+### 1. [沙拉查词](https://saladict.crimx.com/)
+
+浏览器聚合词典专业划词翻译插件，具有以下特点：
+
+1.   **词典丰富**
+
+-   精选大量词典，手工打磨排版，涵盖几乎所有领域
+-   自动发音，可选不同词典、英美音
+-   各个词典支持个性化调整
+-   整个网页翻译，谷歌和有道分级网页翻译
+-   右键支持更多词典页面直达
+
+2.   **划词方式组合变幻无穷**
+
+- 支持四种划词方式，支持鼠标悬浮取词
+- 查词面板可钉住可拖动可输入
+- 钉住可以配置不同划词方式
+
+3.   **情境模式快速切换词典组合**
+
+- 每个情境模式下设置相互独立，快速切换
+
+4.   **全键盘操作亦可**
+
+- 支持设置浏览器快捷键
+- 兼容 Vimium 全键盘操作
+- 三按 ctrl 打开快捷查词
+- 点击地址栏图标快速查词（可设快捷键）
+
+5.   **单词管理**
+
+- 保存上下文以及翻译，准确理解单词
+
+6.   **支持添加生词**
+
+- 可保存查词历史
+
+7.   **支持黑白名单**
+8.   **支持 PDF 划词**
+
+- 支持 PDF 黑白名单
+
+9.   **可显示当前页面二维码**
+
+![](assets/1693144718679.webp)
+
+### 2. [简悦](https://simpread.pro/)
+
+提供如杂志版沉浸式阅读体验的浏览器插件，提供以下特色功能：
+
+-   阅读模式
+-   聚焦模式
+-   丰富的导出功能
+-   快捷键
+-   定制化
+-   同步
+-   主题丰富
+-   标注
+-   ……
+
+![](assets/simple-read.png)
+
+### 3. [Markdown Here](https://markdown-here.com/get.html)
+
+通过使用该插件，可以用 `Markdown` 来写一封漂亮的电子邮件。通常邮件都是没有格式的，通过该插件，可以实现将 `Markdown` 语法的邮件转换为想要的效果。
+
+而使用步骤也很简单：
+
+1.   在邮件客户端的富文本编辑器中编写 `Markdown` 格式的邮件内容。
+2.   接着在编辑区右键后选择 `Markdown 转换` 即可。
+
+![](assets/Markdown-here.png)
+
+## 五、资料
+
+### 1. [Kuboard](https://kuboard.cn/)
+
+`Kubernetes` 多集群管理界面，同时提供了 `Kubernetes` 教程，为使用 `Kubernetes`  落地 `Cloud` 微服务的任务提供实战经验。
+
+![](assets/kuboard.png)
+
+### 2. [PyCharm 中文指南](https://pycharm.iswbm.com/)
+
+作者使用 `PyCharm` 的多年经验总结，既包含面向初学者零基础的入门使用技巧，也提供了大量案例来讲解可提高工作效率的高级技巧。
+
+![](assets/pycharm-guide.png)
+
+### 3. [toBeTopJavaer](https://github.com/hollischuang/toBeTopJavaer)
+
+`Java` 工程师成神之路，作者是阿里巴巴技术专家 `Hollis`。总结了作为 `Java` 开发者需要掌握的基础知识点，主要包括面向对象、基础数据类型、自动拆装箱、字符串、序列化、反射等知识点，较为全面地覆盖了 `Java` 开发者日常工作中需要用到的大部分基础知识。
+
+目前也已经正式出版，在豆瓣开出了 `8.5` 的评分， 非常值得一读！
+
+![](assets/tobetopjavaer.png)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+## 🎬️ 广告
+
+作为程序员，掌握数据结构与算法的重要性就不言而喻了。掌握了数据结构与算法，可以说你的编程能力就会有质的飞跃。任凭各种热门技术的如何变化，只要掌握了核心技能，那都可以见招拆招，做一个“赢家”。
+
+专栏共分为 4 个由浅入深的模块：
+
+-   入门篇
+-   基础篇
+-   高级篇
+-   实战篇
+
+作者采用最适合工程师的学习方式，不拘泥于某一特定编程语言，从实际开发场景出发，由浅入深教你学习数据结构与算法的方法，帮你搞懂基本概念和核心理论，深入理解算法精髓，帮你提升使用数据结构和算法思维解决问题的能力。
+
+想要进一步提升自己的竞争力么，那就赶紧加入和我一起学习吧！
+
+![](assets/datastructure-algo.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0429-0505.md b/src/weekly/2023/0429-0505.md
new file mode 100644
index 0000000000..f5714f0f02
--- /dev/null
+++ b/src/weekly/2023/0429-0505.md
@@ -0,0 +1,219 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#3：Java 学习面试指南
+
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/vNyT3cSSxUMy9LuD6t91ag
+:::
+
+## 一、项目
+
+### 1. [ChatGPT-Next-Web](https://github.com/Yidadaa/ChatGPT-Next-Web)
+
+只要能申请到 `OpenAI API` 的 `key`，就能够通过该项目一键拥有你自己的 `ChatGPT` 网页服务，主要有以下功能：
+
+-   在 1 分钟内使用 `Vercel` **免费一键部署**
+-   精心设计的 `UI`，响应式设计，支持深色模式，支持 `PWA`
+-   极快的首屏加载速度（~`100kb`），支持流式响应
+-   隐私安全，所有数据保存在用户浏览器本地
+-   海量的内置 `prompt` 列表
+-   自动压缩上下文聊天记录，在节省 `Token` 的同时支持超长对话
+-   一键导出聊天记录，完整的 `Markdown` 支持
+-   拥有自己的域名？好上加好，绑定后即可在任何地方无障碍快速访问
+
+![](assets/chatgpt-next-web.png)
+
+### 2. [Auto-GPT](https://github.com/Significant-Gravitas/Auto-GPT)
+
+一个实验性的开源项目，展示了 `GPT-4` 语言的模型。该项目由 `GPT-4` 驱动，将 `LLM` 的“思想”链接在一起，以自主地实现设定的任何目标。作为 `GPT-4` 完全自主运行的第一个例子，拓展了 `AI` 的可能性。
+
+主要特性如下：
+
+- 可用于搜索和信息收集的网络接入
+- `LSTM` 管理
+- 基于 `GPT-4` 的文本生成实例
+- 接入主流网站和平台
+- 利用 `GPT-3.5` 进行文件存储和摘要
+
+![](assets/auto-gpt.gif)
+
+### 3. [AgentGPT](https://github.com/reworkd/AgentGPT)
+
+类似于 `ChatGPT-Next-Web`，拥有自己的 `OpenAI API` 的 `key` 之后，就能通部署自己的 `AI` 助理。该项目基于 `NextJs` + `Typescript` 技术栈开发，不仅支持自己手动部署，还支持 `Docker`，可以说是十分方便了！
+
+![](assets/agent-gpt.png)
+
+## 二、软件
+
+### 1. [语雀](https://www.yuque.com/)
+
+新一代知识构建与分享工具。「语雀」是蚂蚁集团旗下的文档与知识库工具，源自蚂蚁集团和阿里巴巴内部文档协同需求，2018 年 1 月 8 日正式对外提供服务，现已服务于数十万企业组织和数百万个人用户。
+
+官方愿景从最初的为了给开发者提供一个好用的工具来撰写技术文档，逐渐发展为致力为每个人和团队提供一款顺手的工具，让知识得以记录、沉淀和交流，让大家都能在语雀中平等快乐地创作与交流知识。
+
+![](assets/yuque.png)
+
+### 2. [EV 录屏](https://www.ieway.cn/evcapture.html)
+
+一款免费无水印，集视频录制与直播功能于一身的桌面录屏软件。
+
+官方号称无水印、无限制，想录就录！承诺以下功能使用无限制，永久免费：
+
+1.   组合录制
+2.   音频采集
+3.   场景编辑
+4.   直播推流
+5.   定时录制
+
+![](assets/ev-capture.png)
+
+### 3. [极简笔记](https://minnote.v8cloud.cn/index.html)
+
+一款现代化的 `Markdown` 笔记软件，能够在 `Windows`、`Linux`、`Mac` 系统、`iPhone` 以及安卓平台进行数据同步。
+
+分为基础版和 `Pro` 版，`Pro` 版本订阅一个月需 `$1.5` ，订阅一年仅需 `$15`.相比于基础版，提供更好的数据安全服务，具体功能如下：
+
+1.  提供数据自动保存、笔记快照功能。
+2.  提供笔记导入导出功能，一键导出所有笔记到本地。
+3.  多样化的主题功能，能够选择更多的主题，并能够定制主题。
+4.  使用插件功能，能够自己编写插件，且能够使用别人共享的插件。
+
+![](assets/minnote.png)
+
+## 三、网站
+
+### 1. [唐人街影视](https://www.tangrenjie.tv/)
+
+致力于为海外华人提供影视观看的网站，站点不提供任何视听上传服务，所有内容均来自互联网其他分享站所提供的公开引用资源。
+
+![](assets/1693139529284.webp)
+
+### 2. [JSON Crack](https://jsoncrack.com/editor)
+
+`JSON Crack` 是一个很方便的 `JSON` 数据可视化工具。该项目并非简单的展示 `JSON` 数据，而是将其转化为类似思维导图的形式，支持放大/缩小、展开/收缩、搜索节点、导出图片等操作，对于经常和 `JSON` 格式的数据打交道的人会非常有帮助。
+
+![](assets/json-crack.png)
+
+### 3. [jsDelivr](https://www.jsdelivr.com/)
+
+`JSDelivr` 是一款开源的免费公共 `CDN`，是目前第二受欢迎的公共 `CDN`，并在 2020 年 10 月 14 日称为 `Bootstrap` 的官方 `CDN`，其稳定性不言而喻。
+
+![](assets/jsdelivr.png)
+
+## 四、插件
+
+### 1. [Tampermonkey](https://microsoftedge.microsoft.com/addons/detail/tampermonkey/iikmkjmpaadaobahmlepeloendndfphd)
+
+中文名又叫油猴，是一个用户脚本管理器。它本身是无法为我们发挥什么作用的，它主要依靠各大社区编写的扩展脚本（`JavaScript` 代码）运行在浏览器上，来改变被访问网页的功能，提升我们的网页浏览体验 。
+
+![](assets/tampermonkey.png)
+
+### 2. [Violentmonkey](https://violentmonkey.github.io/)
+
+暴力猴是一款与 `Tampermonkey` 齐名的浏览器插件管理工具，为浏览器提供用户脚本支持。 它适用于支持 `WebExtensions` 的浏览器。支持 `Userscripts.org`、`GreasyFork`、`OpenUserJS` 三大脚本下载源，拥有丰富实用的油猴脚本。
+
+插件特点：
+
+1.   脚本根据元数据自动更新。
+2.   脚本将按照列表中所示的顺序执行。
+3.   支持 `GM` 功能。
+4.   支持从 `zip` 文件导入和导出。
+5.   同步到 `Dropbox` 和 `OneDrive`！
+
+![](assets/1693144437276.webp)
+
+### 3. [蔚蓝主页](https://microsoftedge.microsoft.com/addons/detail/蔚蓝主页/epgghbgfoacieppkngapakodnbkhpldj)
+
+蔚蓝主页是一款浏览器主页/新标签页，主要为用户提供搜索服务、网址导航服务。
+
+区别于传统的主页或网址导航，是一款独特、有所分别的产品。产品核心理念是简洁、存粹，采用了简洁的页面设计，对主要功能加以提炼，让用户能更纯粹的享受该浏览器主页插件所带来的便利。
+
+![](assets/1693139224051.webp)
+
+## 五、资料
+
+### 1. [CS-Notes](https://github.com/CyC2018/CS-Notes)
+
+技术面试必备，囊括算法、操作系统、网络、面向对象、数据库、`Java`、系统设计、工具、编码实践等诸多方面的内容，截止本文发布时在 `Github` 已经收获了 163k `star`，足以见得大家对它的认可。
+
+![](assets/cs-notes.png)
+
+### 2. [JavaGuide](https://github.com/Snailclimb/JavaGuide)
+
+`Java` 学习+面试指南，一份涵盖大部分 `Java` 程序员所需要掌握的核心知识。主要有以下方面的知识点总结：
+
+-   Java
+-   计算机基础
+-   数据库
+-   开发工具
+-   常用框架
+-   系统设计
+-   分布式
+-   高性能
+-   高可用
+-   ……
+
+截止本文发布时，已经在 `Github` 收获 133k `star`，比起 `CS-Notes` 也是不遑多让。
+
+![](assets/1693144718679.webp)
+
+### 3. [advanced-java](https://github.com/doocs/advanced-java)
+
+互联网 `Java` 工程师进阶知识完全扫盲：涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识。截止本文发布时，已经在 `Github` 收获 69k `star`。
+
+![](assets/advanced-java.png)
+
+---
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+
+
+## 🎬️ 广告
+
+作为程序员，掌握数据结构与算法的重要性就不言而喻了。掌握了数据结构与算法，可以说你的编程能力就会有质的飞跃。任凭各种热门技术的如何变化，只要掌握了核心技能，那都可以见招拆招，做一个“赢家”。
+
+专栏共分为 4 个由浅入深的模块：
+
+-   入门篇
+-   基础篇
+-   高级篇
+-   实战篇
+
+作者采用最适合工程师的学习方式，不拘泥于某一特定编程语言，从实际开发场景出发，由浅入深教你学习数据结构与算法的方法，帮你搞懂基本概念和核心理论，深入理解算法精髓，帮你提升使用数据结构和算法思维解决问题的能力。
+
+想要进一步提升自己的竞争力么，那就赶紧加入和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0506-0512.md b/src/weekly/2023/0506-0512.md
new file mode 100644
index 0000000000..9f2435b576
--- /dev/null
+++ b/src/weekly/2023/0506-0512.md
@@ -0,0 +1,214 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#4：每天一条 JS 小技巧
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/Tg3n71-R2ya4go_W1imIgw
+:::
+
+## 一、项目
+
+### 1. [hexo-theme-butterfly](https://github.com/jerryc127/hexo-theme-butterfly)
+
+一款基于 `Hexo` 的主题，美观而又不失强大，支持以下功能：
+
+-   卡片化设计
+-   支持二级目录
+-   双栏设计
+-   夜间模式
+-   阅读模式
+-   简繁体切换
+-   `Pjax`
+-   搜索
+-   ……
+
+![](assets/1693144675827.webp)
+
+### 2. [ECharts](https://echarts.apache.org/zh/index.html)
+
+最初由百度开源的一个基于 `JavaScript` 的开源可视化图表库，后于 2018 年捐赠给 `Apache` 基金会。最新推出的 `Apache ECharts 5` 通过五大模块、十五项特性的全面升级，围绕可视化作品的叙事表达能力，让图“表”更能传“达”数据背后的故事，帮助开发者更轻松地创造满足各种场景需求的可视化作品。
+
+五大模块，十五项特性分别是：
+
+1.   **动态叙事**
+     -   动态排序图
+     -   自定义系列动画
+2.   **视觉设计**
+     -   默认设计
+     -   标签
+     -   时间轴
+     -   提示框
+     -   仪表盘
+     -   扇形圆角
+3.   **交互能力**
+     -   状态管理
+     -   性能提升
+4.   **开发体验**
+     -   数据集
+     -   国际化
+     -   `TypeScript` 重构
+5.   可访问性
+     -   主题配色
+     -   贴花图案
+
+![](assets/1693139064735.webp)
+
+### 3. [Magic Coder](http://www.magicalcoder.com/)
+
+低代码应用开发平台，面向零基础、拖拽式、可视化，甚至零基础的人员都能搭建出想要的效果。
+
+![](assets/magiccoder.png)
+
+## 二、软件
+
+### 1. [SuperCom](https://github.com/SuperStudio/SuperCom)
+
+超级串口调试工具，用于 `Window` 串口日志的采集、存储、可视化等功能，最重要的是免费开源，具有以下特点：
+
+-   可同时打开多个串口监听
+-   串口日志自动保存
+-   串口日志支持滚屏/固定
+-   波特率、位大小等串口设置可设置
+-   可发送各种 `AT` 指令
+-   ……
+
+![](assets/1693144786483.webp)
+
+### 2. [Alfred](https://www.alfredapp.com/)
+
+`Alfred` 是一款屡获殊荣的 `macOS` 应用程序，它通过热键、关键字、文本扩展等提高您的效率。搜索您的 `Mac` 和网络，并通过自定义操作来控制您的 `Mac`，从而提高工作效率。
+
+![](assets/1693139461978.webp)
+
+### 3. [Microsoft Todo](https://todo.microsoft.com/)
+
+微软 `Todo` 是微软官方出品的一款轻量和智能的待办清单应用，它是 `Wunderlist` 的继任者，无论是工作计划，个人生活或家庭学习，它都一样可以帮助你更轻松地完成既定的计划。应用还支持 `iPhone`、安卓、`Windows` 和网页间无缝同步，多个设备也不必担心。
+
+![](assets/microsoft-todo.png)
+
+## 三、网站
+
+### 1. [校园网联合镜像站](https://mirrors.cernet.edu.cn/)
+
+站点提供对校园网镜像站的索引和跳转服务，仅索引各镜像站的元数据信息，具体内容由各镜像站提供，而且站点还获得了中国教育和科研计算机网网络中心的支持和帮助。
+
+主要包含了操作系统、应用以及字体三方面资源的镜像，让下载更快一步！
+
+![](assets/edu-mirror.png)
+
+### 2. [Web 前端导航](http://www.alloyteam.com/nav/)
+
+汇集了众多前端资源的导航，主要包含了以下资源：
+
+-   `IDE`
+-   图标字体
+-   在线工具
+-   框架类库
+-   前端门户
+-   前端大会
+-   开发平台
+-   设计资源
+-   ……
+
+![](assets/web-nav.png)
+
+### 3. [Badger](https://badges.toozhao.com/)
+
+为你的网站生成独一无二的 `SVG` 图片，只要将该图片放到你网站的对应界面，就能通过它统计出该页面被访问的次数，一般用在 `Github` 主页统计访客数。
+
+![](assets/badger.png)
+
+## 四、插件
+
+### 1. [Microsoft 编辑器](https://microsoftedge.microsoft.com/addons/detail/microsoft-编辑器拼写和语法检查器/hokifickgkhplphjiodbggjmoafhignh?hl=zh-CN)
+
+你的智能写作助手。编辑器跨多个网站提供语法、拼写和风格建议，帮助你自信地写出清晰、简洁的文章和电子邮件。
+
+- 新增功能: 多语言校对、忽略选项。同时检查最多三种语言的拼写和语法。此外，拼写检查现在可用于泰语。还可通过选择“全部忽略”来轻松跳过所有拼写更正，或通过选择“忽略”跳过不需要的语法建议。
+- 智能写作助手：提供免费的语法、拼写和标点校对基础支持。通过高级版(需要 `Microsoft 365` 订阅)，可在清晰度、简洁性、正式性、词汇等问题上获得高级语法建议和风格检查。
+- 随时随地写作：在 `LinkedIn`、`Gmail`、`Facebook` 以及诸多其他你喜欢的带有此浏览器扩展的网站上获取写作助手。如果希望在 `Web` 之外获得编辑器的帮助，请打开 `Word` 并查找编辑器图标，以了解编辑器如何在你撰写文档和电子邮件时提供帮助。
+- 提供多种语言：编辑器检查 `80` 多种语言的拼写，并提供以这些语言的语法检查和书写风格改进。
+
+![](assets/microsoft-editor.png)
+
+### 2. [Infinity Pro](https://microsoftedge.microsoft.com/addons/detail/infinity-新标签页-pro/hajlmbnnniemimmaehcefkamdadpjlfa?hl=zh-CN)
+
+全球上百万用户选择的最佳新标签页，功能包括：网站图标，搜索引擎，高清壁纸，书签管理、天气、笔记、待办事项、扩展管理、历史记录等。
+`Infinity` 新标签页 (`Pro`) 是一款基于 `html5` 开发的扩展程序，它能够替换浏览器的起始页与新标签页，提升其美观性与生产力。
+
+`Infinity` 独创了多种强大且实用的功能，可以让您以任何喜欢的方式来打造新标签页。
+
+![](assets/1693144805646.webp)
+
+### 3. [Dark Reader](https://microsoftedge.microsoft.com/addons/detail/dark-reader/ifoakfbpdcdoeenechcleahebpibofpc?hl=zh-CN)
+
+一个护眼扩展程序，通过实时生成黑暗主题，为每一个网站启用夜间模式。`Dark Reader` 反转明亮的颜色，使网页内容具有高对比度并易于在夜间阅读。
+
+可以调整亮度、对比度，应用棕褐色滤镜、黑暗模式，设置字体和忽略的网站列表。
+
+最重要的一点，`Dark Reader` 无广告，也不会向任何地方发送用户的数据。
+
+![](assets/1693139180624.webp)
+
+## 五、资料
+
+### 1. [Js Tips](https://www.jstips.co/)
+
+每天一条 `JavaScript` 小技巧。只需要花上两分钟的时间，就能读到性能、框架、约定、技巧、面试问题等有助于提高编写代码效率的小技巧。
+
+![](assets/js-tips.png)
+
+### 2. [MDN Web Docs](https://developer.mozilla.org/zh-CN/docs/Learn)
+
+为零基础 `Web` 开发初学者提供指导和开始编写网站代码所需要掌握的所有内容。内容更偏向于帮助你入门，如果想要学习更加深入的内容，那就需要靠自己去钻研了。
+
+![](assets/mdn-web-docs.png)
+
+### 3. [JavaFamily](https://github.com/AobingJava/JavaFamily)
+
+【`Java` 面试 + `Java` 学习指南】 一份涵盖大部分 `Java` 程序员所需要掌握的核心知识。包含学习路线、`Java` 基础、计算机操作系统、计算机网络、框架、数据库等多方面的内容。
+
+![](assets/javafamily.png)
+
+---
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/datastructure-algo.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0513-0519.md b/src/weekly/2023/0513-0519.md
new file mode 100644
index 0000000000..6b89ce7f2f
--- /dev/null
+++ b/src/weekly/2023/0513-0519.md
@@ -0,0 +1,194 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#5：前端开发必备资源站
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/kbKCzyn7OtG4iuJEWtQkWA
+:::
+
+## 一、项目
+
+### 1. [FastAPI](https://fastapi.tiangolo.com/zh/)
+
+`FastAPI` 是一个用于构建 `API` 的现代、快速（高性能）的 `web` 框架，使用 `Python` 3.6+ 并基于标准的 `Python` 类型提示。关键特性如下:
+
+-   **快速**：可与 `NodeJS` 和 `Go` 并肩的极高性能（归功于 `Starlette` 和 `Pydantic`），是最快的 `Python web` 框架之一。
+-   **高效编码**：提高功能开发速度约 `200％` 至 `300％`。
+-   **更少 `bug`**：减少约 40％ 的人为（开发者）导致错误。
+-   **智能**：极佳的编辑器支持。处处皆可自动补全，减少调试时间。
+-   **简单**：设计的易于使用和学习，阅读文档的时间更短。
+-   **简短**：使代码重复最小化。通过不同的参数声明实现丰富功能，`bug` 更少。
+-   **健壮**：生产可用级别的代码。还有自动生成的交互式文档。
+-   **标准化**：基于（并完全兼容）`API` 的相关开放标准。
+
+![](assets/fastapi.png)
+
+### 2. [Smart-Doc](https://github.com/smart-doc-group/smart-doc)
+
+`smart-doc` 是一款同时支持 `JAVA REST API`和 `Apache Dubbo RPC` 接口文档生成的工具，在业内率先提出基于 `Java` 泛型定义推导的理念， 完全基于接口源码来分析生成接口文档，不采用任何注解侵入到业务代码中。你只需要按照 `java-doc` 标准编写注释， `smart-doc` 就能帮你生成一个简易明了的 `Markdown`、`HTML5`、`Postman Collection2.0+`、`OpenAPI 3.0+` 的文档。
+
+![](assets/smart-docs.png)
+
+### 3. [vuepress-theme-voding](https://github.com/xugaoyi/vuepress-theme-vdoing)
+
+一款简洁高效的 `VuePress` 知识管理 & 博客主题，具有以下三大特点：
+
+1.   **知识管理**：包含三种典型的知识管理形态：结构化、碎片化、体系化。轻松打造属于你自己的知识管理平台。
+2.   **简洁高效**：以 `Markdown` 为中心的项目结构，内置自动化工具，以更少的配置完成更多的事。配合多维索引快速定位每个知识点。
+3.   **沉浸式阅读**：专为阅读设计的 `UI`，配合多种颜色模式、可关闭的侧边栏和导航栏，带给你一种沉浸式阅读体验。
+
+![](assets/vuepress-theme-vdoing.png)
+
+## 二、软件
+
+### 1. [fnm](https://github.com/Schniz/fnm)
+
+`fnm` 是一个基于 `Rust` 的 `Node.js` 版本管理工具，可用于替换 `Node Version Manager（nvm）`，跨平台支持（`macOS`、`Linux`、`Windows`）。
+
+![](assets/fnm.svg)
+
+### 2. [Inkscape](https://inkscape.org/zh-hans/)
+
+一个强大，免费的设计工具
+无论你是插画师，设计师，网页设计者还是仅想创作一些矢量图的新手，`Inkscape` 都适合你。
+
+该软件的开发目标是成为强大的绘图软件，且能完全遵循与支持 `XML`、`SVG` 及 `CSS` 等开放性的标准格式，而且是跨平台的应用程序，支持`Windows`、`macOS`、`Linux` 及类 `UNIX` 版等操作系统，具有以下特点：
+
+- 灵活的绘图工具
+- 支持多种文件格式
+- 强大的文本工具
+- 贝塞尔曲线和螺旋线
+
+![](assets/inkscape.png)
+
+### 3. [Cubox](https://cubox.pro/)
+
+在信息碎片中，重获专注。
+一站式信息收集、阅读、管理和回顾，善用网络碎片构建个人知识库。
+适用于网页, `iOS`, `iPadOS`, `macOS`, `Android`, `Windows`, 微信等多个终端。
+
+![](assets/1693139064735.webp)
+
+## 三、网站
+
+### 1. [iconfont](https://www.iconfont.cn/)
+
+阿里巴巴矢量图标库。阿里妈妈 `MUX` 倾力打造的矢量图标管理、交流平台，设计师将图标上传到 `iconfont` 平台，用户可以自定义下载多种格式的 `icon`，平台也可将图标转换为字体，便于前端工程师自由调整与调用。
+
+![](assets/iconfont.png)
+
+### 2. [IconPark](https://iconpark.oceanengine.com/)
+
+`IconPark` 图标库是一个通过技术驱动矢量图标样式的开源图标库，由字节开源，可以实现根据单一 `SVG` 源文件变换出多种主题，具备丰富的分类、更轻量的代码和更灵活的使用场景；致力于构建高质量、统一化、可定义的图标资源，让大多数人都能够选择适合自己的风格图标。
+
+![](assets/iconpark.png)
+
+### 3. [Font Awesome](https://fontawesome.com/)
+
+`Font Awesome` 是一个基于 `CSS` 和 `LESS` 的字体和图标工具包。它由 `Dave Gandy` 制作，用于 `Twitter Bootstrap`，后来被集成到`BootstrapCDN` 中。`Font Awesome` 在使用第三方 `Font Scripts` 的网站中占有 `20％` 的市场份额，排在 `Google` 字体之后的第二位。
+
+![](assets/fontawesome.png)
+
+## 四、插件
+
+### 1. [火山翻译](https://microsoftedge.microsoft.com/addons/detail/火山翻译-划词和网页翻译/jmnhemdajboodicneejdlpanmijclhef)
+
+字节跳动旗下机器翻译产品，支持网页全文翻译、划词翻译、英语词典、管理生词本、吐司弹词记忆等丰富能力。
+
+![](assets/volcengine.png)
+
+### 2. [WeTab 新标签页](https://microsoftedge.microsoft.com/addons/detail/wetab新标签页/bpelnogcookhocnaokfpoeinibimbeff)
+
+`WeTab` 新标签页整合了 `ChatGPT`,自由使用 `ChatGPT`。
+`Wetab` 是一款可以亲手打造属于自己的高颜值主页的小组件新标签页插件，跟 `Infinity New Tab` 新标签页一样美观大气，跟 `iTab` 新标签页一样主打小组件功能。`iOS` 苹果小组件卡片设计，内置倒计时、纪念日、天气、热搜、计算器、等超酷小组件，让信息一目了然，标签页整洁美观。
+`Wetab` 好看、好用，还好玩，让你的标签页充满无限可能。
+
+![](assets/1693139598028.webp)
+
+### 3. [MONKNOW 新标签页](https://www.monknow.com/zh-CN)
+
+这是您梦寐以求的新标签页。支持网站网址 `URL` 分组管理，数据实时云同步，黑暗深色夜间主题模式。支持的功能如下：
+
+- 搜索 & 快速拨号。
+- 自动同步，只要创建一个账号就能自动同步。
+- 图标分组，根据您的需要对您的图标分组。
+- 添加自定义图标时，根据网页链接自动匹配官方图标图片。
+- 自定义图标，您可以上传 `jpg`，`png`，`svg`，甚至 `gif` 作为您的图标图片。
+- 自定义图标布局，您可以设置图标大小，间距，不透明度等等。
+- 自定义壁纸，您可以上传 `jpg`，`png` 作为您的壁纸。
+- 官方图标库包含数以千计的图标。
+- 官方壁纸库包含数以千计的高清壁纸。
+- 当您不活跃或每次打开新标签页时，展示待机页。
+- 支持浅色和深色两种主题模式。
+- 待办事项让您随时保持专注。
+
+![](assets/1693144652561.webp)
+
+## 五、资料
+
+### 1. [DesignPatterns](https://github.com/landy8530/DesignPatterns)
+
+经典设计模式讲解以及项目实战（`Java` 版），主要内容有以下两方面：
+
+1.  设计模式简介：主要介绍各种设计模式的概念和运用场景等。
+2.  设计模式综合运用：主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼。
+
+![](assets/design-patterns.png)
+
+### 2. [Java-learning](https://github.com/Tyson0314/Java-learning)
+
+`Java` 相关知识总结，包括 `Java` 基础、`MySQL`、`SpringBoot`、`Mybatis`、`Redis`、`RabbitMQ` 等等，面试必备！
+
+![](assets/java-learning.png)
+
+### 3. [深度学习500问](https://github.com/scutan90/DeepLearning-500-questions)
+
+深度学习 `500` 问，以问答形式对常用的概率知识、线性代数、机器学习、深度学习、计算机视觉等热点问题进行阐述，以帮助自己及有需要的读者。 全书分为 `18` 个章节，共计 `50` 余万字。
+
+项目系统地描述了深度学习的基本理论算法及应用，先是论述了数学基础、机器学习基础和深度学习基础，接着介绍了一些经典网络及计算机视觉领域中常用的 `CNN`、`RNN`、`GAN` 等网络结构技术，然后介绍了深度学习在计算机视觉领域的目标检测及图像分割两大应用，最后则是介绍了计算机视觉领域主要的优化方法及思路等，包括迁移学习、网络架构及训练、网络优化技巧、超参数调整及模型的压缩和加速等。
+
+![](assets/deep-learning-500.png)
+
+---
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0520-0526.md b/src/weekly/2023/0520-0526.md
new file mode 100644
index 0000000000..ffd84e575b
--- /dev/null
+++ b/src/weekly/2023/0520-0526.md
@@ -0,0 +1,192 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#6：系统下载最优解
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/o6aLSsEfFcwgzbwQrKxqYg
+:::
+
+
+## 一、项目
+
+### 1. [Halo](https://halo.run/)
+
+强大易用的开源建站工具，配合上丰富的模板与插件，帮助你构建你心中的理想站点。如果想搭建属于自己的博客，那它不失为一个好的选择。
+
+![](assets/1693144995723.webp)
+
+### 2. [yudao-cloud](https://github.com/YunaiV/yudao-cloud)
+
+`ruoyi-vue-pro` 全新 `Cloud` 版本，优化重构所有功能。基于 `Spring Cloud Alibaba + MyBatis Plus + Vue & Element` 实现的后台管理系统 + 用户小程序，支持 `RBAC` 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。
+
+![](assets/image-20230522101434664.png)
+
+### 3. [ruoyi-vue-pro](https://github.com/YunaiV/ruoyi-vue-pro)
+
+`RuoYi-Vue` 全新 `Pro` 版本，优化重构所有功能。基于 `Spring Boot + MyBatis Plus + Vue & Element` 实现的后台管理系统 + 微信小程序，支持 `RBAC` 动态权限、数据权限、`SaaS` 多租户、`Flowable` 工作流、三方登录、支付、短信、商城等功能。
+
+![](assets/image-20230522101905531.png)
+
+## 二、软件
+
+### 1. [LightShot](https://app.prntscr.com/zh-cn/)
+
+`LightShot` 是一款跨平台屏幕截图工具，支持 `macOS` 和 `Windows`。使用它，轻点一下按键，便能存储屏幕上的一切内容。
+
+除了能将图片保存在电脑硬盘中，软件还支持通过 `LightShot` 服务器（免费提供）将截图上传至互联网。
+
+除了自定义截图和图片上传外，软件还支持 `Photoshop` 相类似的工具（支持图层、滤镜、色彩校正、笔刷等功能）在线编辑截图。
+
+![](assets/image-20230522105819679.png)
+
+### 2. [FastStone Capture](https://www.faststonecapture.cn/)
+
+一款超强大的截图软件，支持多种截图形式，包括捕获活动窗口、捕获窗口/对象、捕获矩形区域、捕获手绘区域、捕获全屏、滚动截屏。
+
+除了截图功能外，软件的图片编辑功能也非常丰富，支持调整大小、绘图、添加标题、图片裁剪、重点突出、模糊等。
+
+![](assets/image-20230522110141816.png)
+
+### 3. [PicPick](https://picpick.app/zh/)
+
+一款全能的设计工具，并且这款工具适宜每个人使用。
+
+一个全功能的屏幕截图工具,直观的图像编辑器,颜色选择器,颜色调色板,像素标尺,量角器,瞄准线和白板等等。
+
+![](assets/image-20230522110255001.png)
+
+## 三、网站
+
+### 1. [Hello Windows](https://hellowindows.cn/#)
+
+一个无广告、无登录限制、无收费下载的 `Windows` 系统仓储站，更简单，更直观，更极致。
+
+在这里可以找到全版本的 `Windows` 系统，而且均为官方原版，不用担心携带病毒等其它危害用户的问题。
+
+![](assets/image-20230522145650333.png)
+
+### 2. [TechBench](https://tb.rg-adguard.net/public.php)
+
+该项目将帮助您无需繁琐的搜索和注册即可直接从 `Microsoft` 服务器下载 `Windows` 操作系统、`Office` 应用程序、语言包和虚拟机。
+
+![](assets/1693144546217.webp)
+
+### 3. [rg-adguard](https://files.rg-adguard.net/)
+
+`TechBench` 的后续版，截止目前 `TechBench` 已不再更新，后续更新都会到这里。除开提供了 `TechBench` 的功能外，还提供了主题、设计工具、应用等方面内容的下载。
+
+![](assets/image-20230522152418286.png)
+
+## 四、插件
+
+### 1. [听悟](https://www.tingwu.cn/)
+
+实时双语翻译字幕，一键高亮要点，智能提炼总结，高效记录、整理和共享音视频内容。
+多种字幕形态随心切换，自动区分发言人，总结关键词、议程、摘要、待办事项和问题。支持一键导出和公开分享。
+
+丰富场景，皆可听悟
+
+-   线上会议：清晰记录沟通细节，智能总结待办、议程，会议信息无损传递
+-   面试访谈：自动记录会话内容，智能总结问答、摘要，总结整理高效轻松
+-   课程学习：双语课程完整记录，自动提取要点、问答，随时回顾知识点
+-   视频浏览：实时双语翻译字幕，英文视频随心看，信息获取更高效
+
+![](assets/1693144403780.webp)
+
+### 2. [AiTuTu ChatGPT侧边栏智能助手](https://chrome.google.com/webstore/detail/aitutu-chatgpt-sidebar-as/emlhccamlobhceppbjdaikinbamncbcl)
+
+`AiTuTu` 是由 `OpenAI` 的 `ChatGPT` 提供支持，支持浏览网站可快速唤醒的人工智能助手；在网页侧边显示，支持自由提问，选中内容一键改写成不同类型文案。
+
+✅ 国内可用，无需科学，无需 `KEY`，欢迎推荐安装！
+
+聊天：在浏览网页时，遇到任何问题，都可以向它提问，包括文案写作、代码生成、问题查找等。 
+选中文本快捷操作：浏览网页时，支持将选中的网页文本内容进行以下快捷操作：
+
+1.   在不改变原意的前提下改成新的版本；
+2.   翻译成英文；
+3.   改写成小红书风格文案；
+4.   改写成微博风格文案；
+5.   将商品标题、介绍生成新的商品标题简介。
+
+![](assets/aitutu.png)
+
+### 3. [字幕精灵](https://microsoftedge.microsoft.com/addons/detail/%E5%AD%97%E5%B9%95%E7%B2%BE%E7%81%B5-%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E3%80%81ai%E5%AD%97%E5%B9%95%E7%BF%BB%E8%AF%91/hodednmbnoemidigafhfpbfcafhjlkki?hl=zh-CN)
+
+看海外网剧、学习两不误，新译字幕精灵来相助，基于浏览器的字幕翻译神器。
+您是否遭遇过这些烦恼：
+
+1.   想要学习国际前沿的技术提升自我，却苦于听不懂外语视频教程/资料？
+2.   终于等来了心爱产品的发布会，可惜没有中文字幕？
+3.   苦苦等到美剧、国外综艺、日漫更新，还要等中文字幕版？
+
+以上烦恼，字幕精灵-AI 字幕翻译插件都能帮您解决！
+
+字幕精灵由新译科技推出，可实时识别语音，自动翻译并展示双语字幕。
+
+借助先进的语音识别和 `AI` 翻译技术，无论是听演讲、看课程，还是追剧、听歌，字幕精灵都能快速识别、翻译，并自动生成字幕，让您无惧外语，不再不知所云。
+
+![](assets/1693144622188.webp)
+
+
+## 五、资料
+
+### 1. [Spring 中文文档](https://springdoc.cn/)
+
+提供最新的 `Spring Boot`, `Spring Cloud`, `Spring Security` 等 `Spring` 框架的官方中文文档。对于想及时追踪 `Spring` 最新更新，但英语基础不太好的同学是一个绝佳的选择。
+
+![](assets/springdoc.png)
+
+### 2. [莫烦 Python](https://mofanpy.com/)
+
+汇聚了 `Python` 基础、机器学习、数据处理、效率工具等多方面内容。
+
+![](assets/image-20230522112931667.png)
+
+### 3. [Hello 算法](https://www.hello-algo.com/)
+
+《Hello 算法》是一本动画图解、能运行、可提问的数据结构与算法入门书，支持 `Java`, `C++`, `Python`, `Go`, `JS`, `TS`, `C#`, `Swift`, `Zig` 等语言。
+
+![](assets/image-20230522132710708.png)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/datastructure-algo.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0527-0602.md b/src/weekly/2023/0527-0602.md
new file mode 100644
index 0000000000..57d9f05bd3
--- /dev/null
+++ b/src/weekly/2023/0527-0602.md
@@ -0,0 +1,212 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#7：炫酷的浏览器标签页
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/s3NpyL6JeybdJfHurlOakw
+:::
+
+
+## 一、项目
+
+### 1. [Qexo](https://github.com/Qexo/Qexo)
+
+一个快速、强大、漂亮的在线 `Hexo` 编辑器，支持以下功能：
+
+-   自定义图床上传图片
+-   在线配置编辑
+-   在线页面管理
+-   开放 `API`
+-   自动检查更新
+-   在线一键更新
+-   快速接入友情链接
+-   简单的说说短文
+-   类似不算子的统计
+-   自动填文章模板
+
+![](assets/image.720gte6usvc0.webp)
+
+### 2. [Twikoo](https://github.com/imaegoo/twikoo)
+
+一个简洁、安全、免费的静态网站评论系统，具有以下特点：
+
+-   简单
+-   易用
+-   安全
+-   即时
+-   个性
+-   便捷管理
+
+![](assets/image.2c847t45ah7o.webp)
+
+### 3. [ILLA Builder](https://github.com/illacloud/illa-builder)
+
+`ILLA` 是一个强大的开源低代码平台，供开发人员构建内部工具。 通过使用 `ILLA` 的组件和操作库，开发人员可以节省大量构建工具的时间，具有以下特色功能：
+
+-   ⚽ 实时协作： 我们可以一起实时创建内容。
+-   🛠 自定义插件： 构建自定义插件来完成你的任务。
+-   🤖 自动化支持： 连接一切组件，并在 5 秒内实现自动化。
+-   🖥 本地部署： 支持 `Docker` 和 `k8s`
+-   📝 `Page`支持： 创建内容丰富且 `UI` 友好的工具的基础。
+
+![](assets/image.4yf7tsxh05g0.webp)
+
+## 二、软件
+
+### 1. [IINA](https://iina.io/)
+
+一款类 `macOS` 原生视频播放器，简洁优雅而不失强大。无论是视频解码还是字幕渲染，`IINA` 都无可挑剔。此外，`IINA` 支持在线字幕下载、画中画、视频串流等丰富的功能，充分满足你对一款视频播放器所有的幻想。而且最重要的一点，`IINA` 是完全免费的。
+
+![](assets/iina.webp)
+
+### 2. [PP 鸭](http://ppduck.com/)
+
+PP鸭整合了业内最优秀的数种开源的图片压缩算法，会自动根据图片特征自动选择压缩参数。只需要将图片拖入 PP鸭，就能自动批量压缩，省时省心。
+
+![](assets/image.3lffjiyvqvk0.webp)
+
+### 3. [PhotoBulk](https://photobulkeditor.com/)
+
+PhotoBulk 是一款 `Mac` 平台的图片批量水印工具，无论是文字类还是图片类的水印，`PhotoBulk` 都能替你加上，通过两侧写着 `text` 和 `image` 的开关就能调节。对于水印，软件提供了一些最基本的设置，比如文字的字体、大小，图片的分辨率、透明度等。
+
+![](assets/image.6vit8eoks5k0.webp)
+
+## 三、网站
+
+### 1. [简视频](https://www.aewz.com/)
+
+致力打造好用的视频创作导航，汇聚了视频创作时所需的视频素材、图片素材、制作工具、字幕配音、音乐素材等众多实用性网站。
+
+![](assets/1693144904313.webp)
+
+### 2. [Star Charts](https://starchart.cc/)
+
+根据输入的 `Github` 账户及仓库名，生成随时间推移绘制仓库收获的 `star` 数量。
+
+![](assets/image-20230524082925195.png)
+
+### 3. [Simple Icons](https://simpleicons.org/)
+
+包含 2461 种流行品牌的免费 `SVG` 图标库，在我们前端开发需要找对应品牌 `Logo` 时绝对是不二之选。
+
+![](assets/image-20230524082836203.png)
+
+## 四、插件
+
+### 1. [Washbaidu](https://toast.pub/washbaidu/)
+
+优化百度搜索界面，移除过度广告，提升百度体验。
+
+简洁，隐私安全，无数据及网络权限要求。
+
+百度作为老牌搜索引擎，在中文搜索内容和可达性上还是有优势。但界面太复杂、广告偏多。
+
+插件简化了界面，轻度移除了广告，支持自定义头图，提升搜索体验。 
+
+![](assets/image.mbaakouf9xs.webp)
+
+### 2. [青柠起始页](https://microsoftedge.microsoft.com/addons/detail/青柠起始页/pcpnigdkpcgemocnjhebmajldpjlbeom)
+
+青柠起始页是一个简洁、美观、实用的浏览器起始页，以优雅的界面容纳了多引擎搜索、网站捷径、便笺、壁纸、天气等诸多功能。
+您可依据喜好对青柠起始页进行高度自定义，让您的网上冲浪体验更加随心所欲。
+
+此扩展由青柠起始页官方开发，主要功能包括：
+
+-   新标签页：将您的浏览器新标签页替换为青柠起始页。
+-   多引擎搜索：使用您喜欢的任意搜索引擎，或在百度、必应、谷歌等主流搜索引擎之间一键切换。
+-   网站捷径：添加您的常用网站，一键快捷访问。
+-   便笺：随时记录您的灵感、待办事项和备忘清单。还可将便笺固定到主屏幕，或创建倒数日计时。
+-   壁纸：将您喜爱的任意图片设为壁纸，或使用我们精心挑选的静态 / 动态风景壁纸、每日更新的必应壁纸。
+-   一言：每次打开新标签页时，随机显示一句诗词 / 格言。
+-   个性化设置：多达 30 余项自定义项目，打造专属于您的新标签页。
+-   云同步：网站捷径、便笺、个性化设置等支持跨设备云同步，帮助您在不同设备间流畅切换。
+-   美化百度搜索结果页面：为百度使用经过精心设计的界面样式和夜间模式 / 深色主题（默认关闭，可在扩展设置中开启）。
+
+![](assets/image.491gz1gt3ok0.webp)
+
+### 3. [iTab](https://itab.link/?from=jjcj)
+
+`iTab` 是新一代组件式标签页的首创者，是您打造个人学习工作台的浏览器必备插件。简洁美观高效无广，获得了数百万用户的一致好评，支持如下功能：
+
+-    `iOS` 式小组件
+-   聚合搜索
+-    自定义功能
+-   极简模式
+-   多端数据即时同步与备份
+-   海量精美壁纸
+-   海量精选网站资源
+-   浏览器书签管理
+-   ……
+
+![](assets/image.zm7qg7r4pyo.webp)
+
+## 五、资料
+
+### 1. [OI Wiki](https://oi-wiki.org/)
+
+致力于成为一个免费开放且持续更新的 **编程竞赛（competitive programming）** 知识整合站点，大家可以在这里获取与竞赛相关的、有趣又实用的知识。我们为大家准备了竞赛中的基础知识、常见题型、解题思路以及常用工具等内容，帮助大家更快速深入地学习编程竞赛中涉及到的知识。
+
+![](assets/image-20230523084803909.png)
+
+### 2. [CTF Wiki](https://ctf-wiki.org/)
+
+**CTF Wiki** 主要包含 **CTF** 各大范畴的基础知识，并正在着力完善以下内容：
+
+-   CTF 竞赛中的进阶知识
+-   CTF 竞赛中的优质题目
+
+后续将探索提供以下方面的内容：
+
+-   介绍安全研究中的工具
+-   更多地与安全实战结合
+
+![](assets/image-20230523111717973.png)
+
+### 3. [菜鸟教程](https://www.runoob.com/)
+
+菜鸟教程提供了编程的基础技术教程, 介绍了 `HTML`、`CSS`、`Javascript`、`Python`、`Java`、`Ruby`、`C`、`PHP`、`MySQL` 等各种编程语言的基础知识。
+
+![](assets/image-20230524083135688.png)
+
+---
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0603-0609.md b/src/weekly/2023/0603-0609.md
new file mode 100644
index 0000000000..95019fc8cf
--- /dev/null
+++ b/src/weekly/2023/0603-0609.md
@@ -0,0 +1,198 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#8：开源镜像站
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/4TMrFj2BR43zRIQ7H-8t2w
+:::
+
+## 一、项目
+
+### 1. [ChatGPT Web](https://github.com/Chanzhaoyu/chatgpt-web)
+
+用 `Express` 和 `Vue3` 搭建的 `ChatGPT` 演示网页，支持双模型，提供了两种非官方 `ChatGPT API` 方法。
+
+-   `ChatGPTAPI` 使用 `gpt-3.5-turbo` 通过 `OpenAI` 官方 `API` 调用 `ChatGPT`
+
+-   `ChatGPTUnofficialProxyAPI` 使用非官方代理服务器访问 `ChatGPT` 的后端`API`，绕过`Cloudflare`（依赖于第三方服务器，并且有速率限制）
+
+![](assets/image.vjlo51iydtc.webp)
+
+### 2. [ChatGLM-6B](https://github.com/THUDM/ChatGLM-6B)
+
+一个开源的、支持中英双语的对话语言模型，基于 [General Language Model (GLM)](https://github.com/THUDM/GLM) 架构，具有 62 亿参数。结合模型量化技术，用户可以在消费级的显卡上进行本地部署（`INT4` 量化级别下最低只需 6GB 显存）。 `ChatGLM-6B` 使用了和 `ChatGPT` 相似的技术，针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练，辅以监督微调、反馈自助、人类反馈强化学习等技术的加持，62 亿参数的 `ChatGLM-6B` 已经能生成相当符合人类偏好的回答。
+
+为了方便下游开发者针对自己的应用场景定制模型，同时实现了基于 [P-Tuning v2](https://github.com/THUDM/P-tuning-v2) 的高效参数微调方法使用指南 ，`INT4` 量化级别下最低只需 7GB 显存即可启动微调。
+
+![](assets/image.hfbwof03ij4.webp)
+
+### 3. [chatgpt-on-wechat](https://github.com/zhayujie/chatgpt-on-wechat)
+
+使用 `ChatGPT` 搭建微信聊天机器人，基于 `GPT3.5/4.0` `API` 实现，支持个人微信、公众号、企业微信部署，能处理文本、语音和图片，访问操作系统和互联网。目前，最新版本支持如下功能：
+
+-    **多端部署：** 有多种部署方式可选择且功能完备，目前已支持个人微信，微信公众号和企业微信应用等部署方式
+-    **基础对话：** 私聊及群聊的消息智能回复，支持多轮会话上下文记忆，支持 `GPT-3`，`GPT-3.5`，`GPT-4` 模型
+-    **语音识别：** 可识别语音消息，通过文字或语音回复，支持 `azure`, `baidu`, `google`, `openai` 等多种语音模型
+-    **图片生成：** 支持图片生成 和 图生图（如照片修复），可选择 `Dell-E`, `stable diffusion`, `replicate` 模型
+-    **丰富插件：** 支持个性化插件扩展，已实现多角色切换、文字冒险、敏感词过滤、聊天记录总结等插件
+-    **Tool工具：** 与操作系统和互联网交互，支持最新信息搜索、数学计算、天气和资讯查询、网页总结，基于 `chatgpt-tool-hub` 实现
+
+![](assets/image.gk0owl1ko88.webp)
+
+## 二、软件
+
+### 1. [Everything](https://www.voidtools.com/zh-cn/)
+
+本地文件搜索神器，本地文件名搜索软件战力天花板，不过当前仅支持 `Windows` 平台，具有如下特点：
+
+-   轻量安装文件
+-   干净简洁的用户界面
+-   快速文件索引
+-   快速搜索
+-   最小资源使用
+-   便于文件分享
+-   实时更新
+
+![JavaPark-image](assets/JavaPark-image.366htex06yw0.webp)
+
+### 2. [Listary](https://www.listary.com/)
+
+`Listary` 是一款实用的搜索工具，专注于文件搜索管理 & 快速启动程序。它能给“我的电脑”（资源管理器）加上许多智能命令，含有收藏文件夹，快速打开最近浏览的文件夹，快速显示/隐藏文件扩展名等等实用功能。给你日常的收藏和整理文件提高效率。
+
+![](assets/image.5e1cjl8qd6o0.webp)
+
+### 3. [Sumatra PDF](https://www.sumatrapdfreader.org/free-pdf-reader)
+
+一款开源、免费、体积小巧、启动极为迅速的 `Windows` 平台上经典的电子书阅读器软件。它不仅支持阅读 `PDF` 格式文档，同时还能支持 `ePub`、`Mobi`、`CHM`、`XPS`、`DjVu` 文档，`CBZ`、`CBR` 漫画等众多主流电子书格式。
+
+![](assets/image.6zgaz1xgh2k0.webp)
+
+## 三、网站
+
+### 1. [华为开源镜像站](https://mirrors.huaweicloud.com/home)
+
+华为云 `DevCloud` 团队提供的全类型镜像站服务，提供主流开发语言组件、操作系统、常用工具和库等镜像，极速下载，全站 `CDN`。
+
+![](assets/JavaPark-image.5mf528ww6ss0.webp)
+
+### 2. [阿里巴巴开源镜像站](https://developer.aliyun.com/mirror/)
+
+![](assets/image.43w5u996vqa0.webp)
+
+阿里巴巴开源镜像站，免费提供 `Linux` 镜像下载服务，拥有 `Ubuntu`、`CentOS`、`Deepin`、`MongoDB`、`Apache`、`Maven`、`Composer` 等多种开源软件镜像源。
+
+### 3. [清华大学开源软件镜像站](https://mirrors.tuna.tsinghua.edu.cn/)
+
+![](assets/image.7eadg5zqpno0.webp)
+
+清华大学开源软件镜像站，致力于为国内和校内用户提供高质量的开源软件镜像、`Linux` 镜像源服务，帮助用户更方便地获取开源软件。
+
+## 四、插件
+
+### 1. [腾讯翻译](https://microsoftedge.microsoft.com/addons/detail/腾讯翻译/bcgpmkngbhpgdgbjgbaoddljkbabdkmm?hl=zh-CN)
+
+腾讯发布的一款浏览器扩展，支持划词翻译、网页翻译、双语对照等功能。
+
+![](assets/image.52qhtrbgb4g0.webp)
+
+### 2. [智译](https://microsoftedge.microsoft.com/addons/detail/智译网页翻译插件/eejfecdbpopckihnmmcncghifajgcegh)
+
+一款网页翻译插件，支持 `17` 种主流外语/少数民族语言，自动识别网页语言并翻译，带你享受前所未有的实时高效翻译体验！
+浏览网页时，它可以自动检测页面的语言，并快速地翻译为您设置的目标语言，让您在浏览外文网站时，不再不知所云。
+
+智译支持十几种语言与中文的互译，既包括英语、俄语、德语、法语、西班牙语等欧美语言，也支持粤语、日语、韩语、越南语、阿拉伯语等亚洲语言；最最绝的，它还支持维语、藏语、蒙古语、壮语等少数民族语言。
+
+通过使用该插件，无论是查阅资料、浏览新闻，还是网上购物，相信一定会帮你节省大量时间，提升效率。
+
+![](assets/image.3krstalf07i0.webp)
+
+### 3. [可可翻译](https://microsoftedge.microsoft.com/addons/detail/可可翻译/ebkimaahhkeiplegpghijhgmlcdkeppf)
+
+一款多合一的翻译扩展，支持多个翻译源翻译所选择的文本，可以同时展示原文与译文的网页翻译，具有以下特性：
+
+-   多翻译源同时翻译
+-   丰富的快捷键
+-   记录单个网页内的翻译历史
+-   独立翻译窗口
+-   自定义主题
+-   文本预处理
+-   翻译收藏
+-   网页翻译
+
+![](assets/image.1hj203a2ojuo.webp)
+
+## 五、资料
+
+### 1. [AiLearning](https://github.com/apachecn/ailearning)
+
+数据分析 + 机器学习实战 + 线性代数 + `PyTorch` + `NLTK` + `TF2` 学习指南。
+
+![](assets/image.3csdtlpltoo0.webp)
+
+### 2. [Spring 实战（第 5 版）](https://potoyang.gitbook.io/spring-in-action-v5/)
+
+`Spring` 实战第五版中文翻译。
+
+![](assets/image.2eank3ifa874.webp)
+
+### 3. [Docker 从入门到实践](https://vuepress.mirror.docker-practice.com/)
+
+本书既适用于具备基础 `Linux` 知识的 `Docker` 初学者，也可供理解原理和实现的高级用户参考。同时，书中给出的实践案例，可供在进行实际部署时借鉴，大致内容如下：
+
+-   前 6 章为基础内容，供用户理解 `Docker` 的基本概念和操作；
+-   7 ~ 9 章介绍包括数据管理、网络等高级操作；
+-   10 ~ 12 章介绍了容器生态中的几个核心项目；
+-   13、14 章讨论了关于 `Docker` 安全和实现技术等高级话题。
+-   后续章节则分别介绍包括 `Etcd`、`Fedora` `CoreOS`、`Kubernetes`、容器云等相关热门开源项目。最后，还展示了使用容器技术的典型的应用场景和实践案例。
+
+![](assets/image.54160lg12k00.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+作为程序员，掌握数据结构与算法的重要性就不言而喻了。掌握了数据结构与算法，可以说你的编程能力就会有质的飞跃。任凭各种热门技术的如何变化，只要掌握了核心技能，那都可以见招拆招，做一个“赢家”。
+
+专栏共分为 4 个由浅入深的模块：
+
+-   入门篇
+-   基础篇
+-   高级篇
+-   实战篇
+
+作者采用最适合工程师的学习方式，不拘泥于某一特定编程语言，从实际开发场景出发，由浅入深教你学习数据结构与算法的方法，帮你搞懂基本概念和核心理论，深入理解算法精髓，帮你提升使用数据结构和算法思维解决问题的能力。
+
+想要进一步提升自己的竞争力么，那就赶紧加入和我一起学习吧！
+
+![](assets/datastructure-algo.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0610-0616.md b/src/weekly/2023/0610-0616.md
new file mode 100644
index 0000000000..6c5f85f02a
--- /dev/null
+++ b/src/weekly/2023/0610-0616.md
@@ -0,0 +1,190 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#9：AI 学习必备资料
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/qgnhS4UUnWWuKonROqMA7g
+:::
+
+
+
+## 一、项目
+
+### 1. [PicX](https://github.com/XPoet/picx)
+
+一款基于 `GitHub` `API` 开发的图床工具，提供图片上传托管、生成图片链接和常用图片工具箱服务。只需要申请一个 `Github Token`，即可完成图床配置。
+
+![](assets/image.3nq8n01cbm40.webp)
+
+### 2. [Cloudreve](https://github.com/cloudreve/Cloudreve)
+
+支持多家云存储驱动的公有云文件系统，具有以下特性：
+
+-   ☁️ 支持本机、从机、七牛、阿里云 `OSS`、腾讯云 `COS`、又拍云、`OneDrive` (包括世纪互联版) 、`S3` 兼容协议 作为存储端
+-   📤 上传/下载 支持客户端直传，支持下载限速
+-   💾 可对接 `Aria2` 离线下载，可使用多个从机节点分担下载任务
+-   📚 在线 压缩/解压缩、多文件打包下载
+-   💻 覆盖全部存储策略的 `WebDAV` 协议支持
+-   ⚡ 拖拽上传、目录上传、流式上传处理
+-   🗃️ 文件拖拽管理
+-   👩‍👧‍👦 多用户、用户组、多存储策略
+-   🔗 创建文件、目录的分享链接，可设定自动过期
+-   👁️‍🗨️ 视频、图像、音频、 `ePub` 在线预览，文本、`Office` 文档在线编辑
+-   🎨 自定义配色、黑暗模式、`PWA` 应用、全站单页应用、国际化支持
+-   🚀 `All-In-One` 打包，开箱即用
+
+![](assets/image.5abc79kwe1g0.webp)
+
+### 3. [pinyin-pro](https://github.com/zh-lx/pinyin-pro)
+
+一个专业的 `js` 汉字拼音转换库，功能丰富、准确率高、性能优异，具有以下特色功能：
+
+-   支持拼音/声母/韵母/首字母/音调/全部信息
+-   支持人名姓氏模式
+-   支持文本和拼音匹配
+-   支持自定义拼音
+-   支持获取带拼音汉字的 `HTML` 字符串
+-   支持获取汉字的所有拼音
+-   极致的性能和极高的拼音识别准确率
+
+![](assets/image.4y3zqcri4ig0.webp)
+
+## 二、软件
+
+### 1. [PDDON](https://pddon.com/)
+
+免费多功能专业在线画图(`Low Code`)工具，怕画不好图就用 `PDDON`，可用于绘制流程图、架构图、思维导图、`UML`、`BPMN`、网络拓扑图、韦恩图、鱼骨图等，并且支持对象建模、数据库建模、代码/脚本生成，提供了丰富的定制化绘图功能组件库，带来更贴心易用的设计体验。
+
+![](assets/image.6edjheo1bo00.webp)
+
+### 2. [Kap](https://getkap.co/)
+
+一款基于 `Web` 技术构建的开源录屏软件，不过仅支持 `macOS` 系统。支持以下功能：
+
+-   录制某个窗口
+-   全屏录制
+-   自定义录制区域
+-   显示鼠标点击位置
+-   支持导出 `Gif`、`MP4`、`WebM` 等格式
+
+![](assets/image.56bz424c1ns0.webp)
+
+### 3. [班迪录屏](https://www.bandicam.cn/)
+
+一款简单好用的电脑屏幕录制软件，录屏幕，录游戏，录视频的功能强大的录屏工具，比起其他软件其性能更加卓越。 与其他软件相比，用 `Bandicam` 录制的视频大小更小，同时保证了原文件的质量。
+
+![](assets/bandicam_cn.gif)
+
+## 三、网站
+
+### 1. [TXT 文本处理工具](http://www.txttool.com/)
+
+在线高级文本工具箱，专注于各种文本处理。如果你的工作涉及到文本处理，不妨去这里试试这些小工具来提升下你的效率。
+
+![](assets/image.4yal86iga6g0.webp)
+
+### 2. [Text-Image](https://www.text-image.com/convert/ascii.html)
+
+在这里，只要上传一张图片，就能轻松地生成很酷的文本图像。
+
+
+![](assets/image.3jbikqgz5m80.webp)
+
+### 3. [一个工具箱](http://www.atoolbox.net/)
+
+众多在线工具集合网站，汇聚了视频音频、图形图像、日期时间、文本编辑、加密解密、编程开发、计算换算、金融理财、日常生活等方面共计 448 个在线工具。
+
+![](assets/image.1o2dufwo66hs.webp)
+
+## 四、插件
+
+### 1. [Grammarly](https://www.grammarly.com/)
+
+一款智能语法工具，可以帮助您在网上编写的任何其他地方避免书写错误，`Grammarly` 会智能分析语段中的错误用法，并用红色下划线标记所有待完善的词组，供你一键纠正。对于英语写作能力不太好的同学，简直是写论文必备。工具特色：
+
+-   上下文拼写检查
+-   语法检查
+-   ……
+
+![](assets/image.548cs2tt65g0.webp)
+
+### 2. [Smart TOC](https://chrome.google.com/webstore/detail/smart-toc/lifgeihcfpkmmlfjbailfpfhbahhibba)
+
+根据打开网页的内容自动生成目录，便于我们浏览与跳转。
+
+-   按需使用
+-   生成的目录面板支持拖动
+-   点击标题可跳转对应位置
+-   高亮当前标题
+-   ……
+
+![](assets/image.2ysxr06oyjm0.webp)
+
+### 3. [FeHelper](https://www.baidufe.com/fehelper/index/index.html)
+
+一款为开发者开发的浏览器扩展，包括 `JSON` 自动/手动格式化、`JSON` 内容比对、代码美化与压缩、信息编解码转换、二维码生成与解码、图片 `Base64` 编解码转换、`Markdown`、 网页油猴、网页取色器、脑图(`Xmind`)等贴心工具。
+
+![](assets/image.4g05sglqu1e0.webp)
+
+## 五、资料
+
+### 1. [机器学习 100 天](https://github.com/MLEveryday/100-Days-Of-ML-Code)
+
+`100-Days-Of-ML-Code` 中文版，包括了有监督学习和无监督学习两方面的内容，对于想要学习机器学习的同学是一个不错的入门教程。
+
+![](assets/image.6nxkoh5ihlw0.webp)
+
+### 2. [强化学习 100 题](https://p100.koki-saitoh.com/zh-CN)
+
+日本的 `AI` 畅销书作者斋藤康毅为其深度学习系列书籍创建的一个网站，最近推出了中文版。对于学习了强化学习的同学，可以用来对强化学习知识查漏补缺。
+
+![](assets/image.1nvrzzktlc7.webp)
+
+### 3. [深度学习 500 问](https://github.com/scutan90/DeepLearning-500-questions)
+
+深度学习 `500` 问，以问答形式对常用的概率知识、线性代数、机器学习、深度学习、计算机视觉等热点问题进行阐述，以帮助自己及有需要的读者。 全书分为 `18 `个章节，`50 `余万字。
+
+本书系统地描述了深度学习的基本理论算法及应用。全书共 14 章，第 1-3 章论述了数学基础、机器学习基础和深度学习基础；第 4-7 章介绍了一些经典网络及计算机视觉领域中常用的 `CNN`、`RNN`、`GAN` 等网络结构技术；第 8-9 章介绍了深度学习在计算机视觉领域的目标检测及图像分割两大应用；第 10-14 章介绍了计算机视觉领域主要的优化方法及思路等，包括迁移学习、网络架构及训练、网络优化技巧、超参数调整及模型的压缩和加速等。本书凝聚了众多一线科研人员及工程师的经验，旨在培养读者发现问题、解决问题、扩展问题的能力。
+
+![](assets/image.5snfwchkiv80.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0617-0623.md b/src/weekly/2023/0617-0623.md
new file mode 100644
index 0000000000..814c70f12e
--- /dev/null
+++ b/src/weekly/2023/0617-0623.md
@@ -0,0 +1,194 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#10：算法学习必备
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/LHDwyFupkXWcEvVhOQb36A
+:::
+
+## 一、项目
+
+### 1. [ChatGPT-Midjourney](https://github.com/Licoy/ChatGPT-Midjourney)
+
+该项目基于 `ChatGPT-Next-Web` 开发，只要拥有自己的秘钥，就可以一键免费部署你的私人 `ChatGPT` + `Midjourney` 网页应用，支持以下功能：
+
+-   原 `ChatGPT-Next-Web` 所有功能
+-   `midjourney` `imagin` 想象
+-   `midjourney` `upscale` 放大
+-   `midjourney` `variation` 变幻
+-   `midjourney` `describe` 识图
+-   `midjourney` `blend` 混图
+-   `midjourney` 垫图
+-   绘图进度百分比、实时图像显示
+
+![](assets/image.6vutorv5e140.webp)
+
+### 2. [GPT4-Free](https://github.com/xtekky/gpt4free)
+
+提供免费的 `OpenAI` `GPT-4` `API`。
+
+![](assets/image.6rxmkyt5b3w0.webp)
+
+### 3. [GPT4Free TypeScript Version](https://github.com/xiangsx/gpt4free-ts)
+
+GPT4-Free 项目的 `TypeScript` 版本，同样提供了免费的 `API`。
+
+![](assets/image.4obsbpxghpm0.webp)
+
+## 二、软件
+
+### 1. [PotPlayer](https://potplayer.daum.net/?lang=zh_CN)
+
+拥有强大的硬件加速、全面支持高清影片流畅播放、界面整洁、操作简单、使用轻松、皮肤丰富多彩。能够满足不同用户的使用需求。
+
+![](assets/image.12wr7xqp5df.webp)
+
+### 2. [BookxNote](http://www.bookxnote.com/)
+
+支持打开 `PDF` 和 `EPUB` 两种格式的电子书，自动导入书籍目录，还能自定义阅读书签，被当作是 `Windows` 端的 `MarginNote`。主要包含以下五方面的的功能：
+
+1.   导入书籍
+2.   标注与摘录
+3.   支持思维导图
+4.   使用 `Anki` 进行复习
+5.   辅助学习工具（康奈尔比较、学习卡片、取词翻译）
+
+![](assets/image.33e27w56y720.webp)
+
+### 3. [PowerToys](https://github.com/microsoft/PowerToys)
+
+`Microsoft PowerToys` 是一组免费的系统工具软件，由微软为 `Windows` 操作系统上的系统管理员设计。这些程序为系统加入或变更了一些功能，并加入更多自定义选项以提高生产力。
+
+![](assets/image.57mxxq6mssg0.webp)
+
+## 三、网站
+
+### 1. [爱学术](https://www.ixueshu.com/)
+
+参考文献资料，毕业论文范文免费下载的网站。
+
+![](assets/image.4idmle023ta0.webp)
+
+### 2. [中国免费论文网](https://www.lunwendata.com/)
+
+可以免费下载论文的网站，涵括了以下类别的论文：
+
+-   经济论文
+-   证券金融
+-   管理论文
+-   会计审计
+-   法学论文
+-   医药论文
+-   社会论文
+-   教育论文
+-   计算机论文
+-   艺术论文
+-   哲学论文
+
+![](assets/image.a0vxsoqjymo.webp)
+
+### 3. [知网](https://www.cnki.net/)
+
+想必每个国内的大学生都不会陌生，没准儿你的毕业论文就在这里。集文献，资料，论文查找于一体的网站。
+
+不足的一点就是针对个人收费较贵，如果还学校购买了相关数据库倒还好。
+
+![](assets/image.2fgi237b21lw.webp)
+
+## 四、插件
+
+### 1. [flomoplus](https://microsoftedge.microsoft.com/addons/detail/flomoplus/edhipjmahjlkocleppfjoepmjnhjiokb)
+
+-   支持从第三方网页圈选内容快速输入到 `flomo`（包含内容、网址、`tag`）
+-   支持一键存储网页标题及链接到 `flomo`（网站标题、网址、`tag`）
+-   支持 `flomoapp.com` 的黑暗模式
+-   支持 `flomoapp.com` 的 `memo` 字数统计（实验功能）
+-   支持 `flomoapp.com` 的快捷发送切换功能（`enter` 或 `enter + shift`）
+-   支持从「微信读书」「得到」「`Kindle`」中导入划线标记
+-   支持从「即刻」「微博」「饭否」「豆瓣」导入个人动态
+
+![](assets/image.s1kg6vhlpa8.webp)
+
+### 2. [Abcd PDF](https://microsoftedge.microsoft.com/addons/detail/abcd-pdf/kpmjajlmlpoindnjiajfhnmnboajakog)
+
+`Abcd PDF` 扩展是在线将 `PDF` 转换为 `Word` 和 `Excel`、`PPT` 和 `PDF` 编辑器 - 100% 免费。提高您的生产力。
+`AbcdPDF` 扩展是一个 100% 免费的一体化 `PDF` 工具
+我们将使用我们有用的 `PDF` 转换器工具包和在线办公套件来提高您的工作效率。
+
+![](assets/image.5kb4juhp4vk0.webp)
+
+### 3. [Smallpdf](https://chrome.google.com/webstore/detail/smallpdf-edit-compress-an/ohfgljdgelakfkefopgklcohadegdpjf)
+
+轻松易用的 `PDF` 工具，可用于编辑、转换、合并、拆分和压缩 `PDF` 文件。
+
+![](assets/image.78iikuhnlq40.webp)
+
+## 五、资料
+
+### 1. [虫洞栈](https://bugstack.cn/)
+
+包含: `Java` 基础，面经手册，`Netty4.x`，手写 `Spring`，用 `Java` 实现 `JVM`，重学 `Java` 设计模式，`SpringBoot` 中间件开发，`IDEA` 插件开发，`DDD` 系统架构项目开发，字节码编程等方面的内容。
+
+![](assets/image.453dys16rmi0.webp)
+
+### 2. [labuladong 的算法小抄](https://labuladong.github.io/algo/)
+
+包含总共 60 多篇原创文章，都是基于 `LeetCode` 的题目，涵盖了所有题型和技巧，而且一定要做到举一反三，通俗易懂。
+
+![](assets/web_intro1.yrsf6v2pohc.webp)
+
+### 3. [代码随想录](https://github.com/youngyangyang04/leetcode-master)
+
+`LeetCode` 刷题攻略：200 道经典题目刷题顺序，共 60w 字的详细图解，视频难点剖析，50 余张思维导图，支持 `C++`，`Java`，`Python`，`Go`，`JavaScript` 等多语言版本。
+
+![](assets/image.4sg670hmkh00.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+作为程序员，掌握数据结构与算法的重要性就不言而喻了。掌握了数据结构与算法，可以说你的编程能力就会有质的飞跃。任凭各种热门技术的如何变化，只要掌握了核心技能，那都可以见招拆招，做一个“赢家”。
+
+专栏共分为 4 个由浅入深的模块：
+
+-   入门篇
+-   基础篇
+-   高级篇
+-   实战篇
+
+作者采用最适合工程师的学习方式，不拘泥于某一特定编程语言，从实际开发场景出发，由浅入深教你学习数据结构与算法的方法，帮你搞懂基本概念和核心理论，深入理解算法精髓，帮你提升使用数据结构和算法思维解决问题的能力。
+
+想要进一步提升自己的竞争力么，那就赶紧加入和我一起学习吧！
+
+![](assets/datastructure-algo.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0624-0630.md b/src/weekly/2023/0624-0630.md
new file mode 100644
index 0000000000..939792ee07
--- /dev/null
+++ b/src/weekly/2023/0624-0630.md
@@ -0,0 +1,227 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#11：远程桌面软件
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/4az9STvM2jiwHhRa_k060Q
+:::
+
+## 一、项目
+
+### 1. [live](https://github.com/fanmingming/live)
+
+ 一个国内可直连的直播源分享项目，具有以下特点：
+
+-   永久免费 
+-   直连访问 
+-   完整开源 
+-   不含广告 
+-   完善的台标 
+-   直播源支持 `IPv4`/`IPv6` 双栈访问
+
+![](assets/image.7c8ix67gwz40.webp)
+
+### 2. [蓝鲸直播源](https://github.com/Cyril0563/lanjing_live)
+
+长期维护的电视直播源接口、`TVBox`、`Pluto Player`、猫影视 `TV`、`IPTV`、`BIUBIU TV`、`IPTV` 源、直播源、源享家、蓝鲸直播源、等影视及 `m3u8` 播放器通用接口都可观看。
+
+![](assets/image.74s0ih5jufw0.webp)
+
+### 3. [wtv](https://github.com/biancangming/wtv)
+
+解决电脑、手机看电视直播的苦恼，收集各种直播源，电视直播网站。
+
+最新 `IPTV` 直播源 `m3u8` 下载，电视直播网站推荐，以中文频道为主。
+
+![](assets/image.7gmr9efor5w0.webp)
+
+## 二、软件
+
+### 1. [ToDesk](https://www.todesk.com/)
+
+一款稳定流畅的远程控制电脑手机连接软件，可远程桌面办公，远程协助运维。会话采用端对端加密，让每一次远程访问都安全可靠。
+
+![](assets/202305191620335fc079845a0c44.53mhutj32ew0.webp)
+
+### 2. [向日葵](https://sunlogin.oray.com/download?categ=personal)
+
+一款免费远程桌面工具，既支持控制手机，也支持控制电脑，简单易用。
+
+软件还支持市面上的各种主流系统，如 `Windows`、`macOS`、`Linux`、`Android`、`iOS` 等。除了免费的远程桌面功能外，还有付费使用的摄像头、远程文件、桌面录像、远程开机等功能。
+
+![](assets/image.5hgtlqk7ong0.webp)
+
+### 3. [TeamViewer](https://www.teamviewer.cn/cn/)
+
+一个能在任何防火墙和 `NAT` 代理的后台用于远程控制，桌面共享和文件传输的简单且快速的解决方案。为了连接到另一台计算机，只需要在两台计算机上同时运行 `TeamViewer` 即可，而不需要进行安装。该软件第一次启动在两台计算机上自动生成 `ID`。只需要输入对方 `ID` 到 `TeamViewer` 即可建立连接。
+
+目前，该软件面向个人使用免费，不过有广告弹窗，而且如果长期使用还会判定为商业行为，会在 5 分钟内强制断连。
+
+![](assets/image.74xq3tmbi0o0.webp)
+
+## 三、网站
+
+### 1. [在线工具](https://tool.lu/)
+
+主要有工具、文库、码库、软件、网址、话题等方面的内容。而其中，在线工具又可以分为以下类别：
+
+-   文本类
+-   文档类
+-   图像类
+-   音频类
+-   视频类
+-   开发类
+-   运维类
+-   设计类
+-   学术类
+-   查询类
+-   其他
+
+![](assets/image.3ih39gox03c0.webp)
+
+### 2. [百度脑图](https://naotu.baidu.com/)
+
+百度旗下的一个在线思维导图工具，具有以下特点：
+
+-   免安装
+-   云存储
+-   易分享
+-   舒适的体验
+-   丰富的功能
+
+![](assets/image.4yxc1yhib8g0.webp)
+
+### 3. [网易见外](https://sight.youdao.com/)
+
+网易旗下 `AI` 智能语音转写听翻平台，主要提供以下服务：
+
+-   视频智能字幕
+-   音频转写翻译
+-   文档翻译
+-   字幕文件翻译
+-   图像识别
+-   会议同传
+-   图像识别翻译
+
+![](assets/image.4b1uby2vdnc0.webp)
+
+
+
+## 四、插件
+
+### 1. [屏幕录像机](https://chrome.google.com/webstore/detail/screen-recorder/jdopnakmnlnccgpfpmjmdjjohmcdgabp)
+
+免费的简单工具，用于从选项卡，页面区域和全屏捕获高质量视频，并带有麦克风，网络摄像头和系统音频。
+
+录制屏幕，镶边选项卡，色度选项卡区域，网络摄像头，语音和麦克风。
+
+一种智能屏幕录像机，可捕获台式机，浏览器/网络摄像头以及系统声音和/或麦克风。
+
+无论您是否要制作教育视频，展示游戏玩法，录制会议，保存直播，或任何其他常规用途。
+
+主要有以下特点：
+
+-   无水印
+-   无录制时间限制
+-   控件易使用
+-   录像即时保存
+-   ……
+
+![](assets/image.47mnwnf1ii00.webp)
+
+### 2. [Screenity](https://chrome.google.com/webstore/detail/screenity-screen-recorder/kbbdabhdfibnancpjfhlkhafgdilcnji)
+
+`Chrome` 最强大的屏幕录像机。 捕获，注释，编辑等。
+借助 `Screenity`，您可以前所未有地录制和标注屏幕, 更好地录制工作、教育等内容，为学生提供情景反馈、详细的解释，或者只是向潜在客户展示您的产品。产品具有以下特点：
+
+-   无限制的录制您的标签页、桌面、任何应用程序和摄像头
+-   在屏幕任意位置绘画、添加文本和箭头进行标注
+-   高亮您的点击，聚焦您的鼠标，或者在录制时隐藏
+-   单独的麦克风和电脑音频控制，一键通（`PTT`）等
+-   可定义倒计时，悬停时显示控制栏，以及更多自定义选项
+    导出为 `mp4`、`gif` 和 `webm`，也可以保存视频到谷歌云盘
+-   对您的录制做修剪或者移除片段
+
+![](assets/image.4haxix3n4mq0.webp)
+
+### 3. [Vimeo Record](https://chrome.google.com/webstore/detail/vimeo-record-screen-webca/ejfmffkmeigkphomnpabpdabfddeadcb)
+
+可以在浏览器网页直接录制和分享无限制的视频。无论是产品演示、设计反馈，还是知识传授，通过 `Vimeo` 的屏幕录像机，就能快速录制和分享无限的视频信息。
+
+不仅如此，还可以选择录制你的声音、脸部或组合。一旦你完成录制，立即就可以用私人链接分享你的视频。
+
+每个录制的视频都会自动上传到 `Vimeo`，它为你提供了各种工具，如组织和替换视频，定制播放器，与你的团队分享视频，添加章节标记，以及更多。全球加入超过 2 亿用户选择 `Vimeo` 作为他们视频录制软件。
+
+![](assets/image.2xeiv1a2ays0.webp)
+
+
+## 五、资料
+
+### 1. [前端精读周刊](https://github.com/ascoders/weekly)
+
+前端精读周刊。帮你理解最前沿、实用的技术。主要包含以下方面的内容：
+
+-   前沿技术
+-   `TS` 类型实操
+-   设计模式
+-   编译原理
+-   源码解读
+-   商业思考
+-   算法
+-   可视化搭建
+-   `SQL`
+
+![](assets/image.4texh44s9ns0.webp)
+
+### 2. [科技爱好者周刊](https://github.com/ruanyf/weekly)
+
+科技大牛阮一峰创建的开源项目，记录每周值得分享的科技内容，周五发布。
+
+![](assets/image.5d87b8puydo0.webp)
+
+### 3. [iOS 周报](https://github.com/SwiftOldDriver/iOS-Weekly)
+
+老司机 `iOS` 周报，只为你呈现有价值的信息。汇聚有关 `iOS` 开发相关的信息、文章、工具等。
+
+![](assets/image.31929e1pm0g0.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0701-0707.md b/src/weekly/2023/0701-0707.md
new file mode 100644
index 0000000000..d10bbc5ff1
--- /dev/null
+++ b/src/weekly/2023/0701-0707.md
@@ -0,0 +1,190 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#12：计算机考研资料
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/-flJ1uEH5IPhxWp5J6Bexg
+:::
+
+## 一、项目
+
+### 1. [JEECG BOOT 低代码开发平台](https://github.com/jeecgboot/jeecg-boot)
+
+一款基于代码生成器的低代码开发平台！前后端分离架构 `SpringBoot2.x`，`SpringCloud`，`Ant Design` & `Vue`，`Mybatis-plus`，`Shiro`，`JWT`，支持微服务。强大的代码生成器让前后端代码一键生成，实现低代码开发! `JeecgBoot` 引领新的低代码开发模式(`OnlineCoding`-> 代码生成器-> 手工 `MERGE`)， 帮助解决 `Java` 项目 70% 的重复工作，让开发更多关注业务。既能快速提高效率，节省研发成本，同时又不失灵活性！
+
+![](assets/image.7bu5e82bs740.webp)
+
+### 2. [mini-spring](https://github.com/DerekYRC/mini-spring)
+
+简化版的 `Spring` 框架，能帮助你快速熟悉 `Spring` 源码和掌握 `Spring` 的核心原理。抽取了 `Spring` 的核心逻辑，代码极度简化，保留 `Spring` 的核心功能，如 `IoC` 和 `AOP`、资源加载器、事件监听器、类型转换、容器扩展点、`Bean` 生命周期和作用域、应用上下文等核心功能。
+
+![](assets/image.215c5zn82tfk.webp)
+
+### 3. [云帆培训考试系统](https://github.com/qiutiandefeng/yfexam-exam)
+
+在线考试系统 云帆在线学习 `Vue` 培训 `Java` 考试系统是一款基于 `Java` 开发的，使用 `SpringBoot` + `Vue` 开发的一款多角色在线培训考试系统平台，系统集成了用户管理、角色管理、部门管理、题库管理、试题管理、试题导入导出、考试管理、在线考试、错题训练等功能。
+
+![](assets/image.2dhb8jomtmo0.webp)
+
+
+
+## 二、软件
+
+### 1. [福昕 PDF 阅读器](https://www.foxitsoftware.cn/pdf-reader/)
+
+全球用户超 7.5 亿，阅读 `PDF` 文档的最佳选择，具有以下特点：
+
+-   文档阅读
+-   `PDF` 注释
+-   格式转换
+-   `PDF` 打印
+-   页面管理
+-   `PDF` 云服务
+-   文字提取
+-   划词翻译
+
+![](assets/image.tewchebdai8.webp)
+
+### 2. [极速 PDF](https://jisupdf.com/)
+
+一款闪电般好用的 `PDF` 阅读器。
+
+![](assets/image.6jqc0jftx200.webp)
+
+### 3. [Koodo Reader](https://github.com/troyeguo/koodo-reader)
+
+一个跨平台的电子书阅读器，具有以下特点：
+
+-   支持多种阅读格式：
+    -   `EPUB` (**.epub**)
+    -   扫描文档 (**.pdf**, **.djvu**)
+    -   `Kindle` (**.azw3**, **.mobi**, **.azw**)
+    -   纯文本 (**.txt**)
+    -   漫画 (**.cbr**, **.cbz**, **.cbt**, **.cb7**)
+    -   富文本 (**.md**, **.docx**, **.rtf**)
+    -   `FB2` (**.fb2**)
+    -   超文本 (**.html**, **.xml**, **.xhtml**, **.mhtml**, **.htm**, **.htm**)
+-   支持 `Windows`，`macOS`，`Linux` 和网页版
+-   备份数据到 `Dropbox` 和 `Webdav`
+-   自定义源文件夹，利用 `OneDrive`、百度网盘、`iCloud`、`Dropbox` 等进行多设备同步
+-   双页模式，单页模式，滚动模式
+-   听书功能，翻译功能，触控屏支持，批量导入图书
+-   支持目录，书签，笔记，高亮，书架，标签
+-   自定义字体，字体大小，行间距，段落间距，阅读背景色，文字颜色，屏幕亮度，文字下划线、斜体、文字阴影、字体粗细
+-   黑夜模式和主题色设置
+
+![](assets/image.3muc5lj7uky0.webp)
+
+## 三、网站
+
+### 1. [Github](https://github.com/)
+
+一个在线软件源代码托管服务平台，使用 `Git` 作为版本控制软件。想必每个开发者对它都不陌生，还亲切的称为“世界上最大的同性交友网站”。在这里，你不仅能找到各种各样的宝藏资源，还能结交各种好友，在开发的道路上一起远行。
+
+![](assets/image.7fftrqjfk040.webp)
+
+### 2. [Gitee](https://gitee.com/)
+
+`Gitee` 是开源中国（`OSChina`）推出的基于 `Git` 的代码托管服务。
+共包括三个版本，分别是：社区版、企业版和高校版。可以看做是国内的 `Github`，对于难以访问 `Github` 的用户不失为另一种好的选择。
+
+![](assets/image.4xeoqs4xcqc0.webp)
+
+### 3. [Gitlab](https://about.gitlab.com/)
+
+一个用于仓库管理系统的开源项目，使用 `Git` 作为代码管理工具，并在此基础上搭建起来的 `Web` 服务。另外，`GitLab` 还具有 `wiki` 以及在线编辑、`issue` 跟踪功能、`CI`/`CD` 等功能。
+
+![](assets/image.6dcm7xq6jng0.webp)
+
+## 四、插件
+
+### 1. [User-Agent Switcher](https://chrome.google.com/webstore/detail/user-agent-switcher/kchfmpdcejfkipopnolndinkeoipnoia)
+
+在你的浏览器中切换 `User-Agents` 的最简单的方法!
+`User-Agents` 切换器插件操作简单，功能强大。而且上网体验更丝滑，不再受到哪种浏览器或操作系统的限制。它增加了一个工具条按钮，你可以用它在不同的常用 `User-Agents` 字符串之间切换。
+
+![](assets/image.3j9ube6qcqk0.webp)
+
+### 2. [Magic CSS](https://www.webextensions.org/)
+
+允许用户在任意页面编写 `CSS`/`Less`/`Sass `代码，代码会立即生效，并将保存在浏览器扩展的存储空间或站点的本地存储中。
+
+您可以发挥您的脑洞，给任意网站改写样式！此外还提供各种快速选择等调试功能，更轻松上手。
+
+![](assets/image.46ecsfyy6em0.webp)
+
+### 3. [JSON Viewer](https://chrome.google.com/webstore/detail/json-viewer/efknglbfhoddmmfabeihlemgekhhnabb)
+
+一款实用的 `JSON` 格式数据查看器。
+
+![](assets/image.1jezukcvzme8.webp)
+
+## 五、资料
+
+### 1. [CSPostgraduate-408](https://github.com/CodePanda66/CSPostgraduate-408)
+
+计算机考研 408 专业课资料及真题资源。
+
+![](assets/image.1iwdwecdljz4.webp)
+
+### 2. [cs-408](https://github.com/ddy-ddy/cs-408)
+
+计算机考研专业课程 408 相关的复习经验，资源和 `OneNote` 笔记。
+
+![](assets/image.vdlfzr7vpls.webp)
+
+### 3. [cs-kaoyan](https://github.com/csseky/cskaoyan)
+
+提供各个学校计算机考研和软件工程考研专业的考研真题。
+
+![](assets/image.6sgtssrk9nc0.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+作为程序员，掌握数据结构与算法的重要性就不言而喻了。掌握了数据结构与算法，可以说你的编程能力就会有质的飞跃。任凭各种热门技术的如何变化，只要掌握了核心技能，那都可以见招拆招，做一个“赢家”。
+
+专栏共分为 4 个由浅入深的模块：
+
+-   入门篇
+-   基础篇
+-   高级篇
+-   实战篇
+
+作者采用最适合工程师的学习方式，不拘泥于某一特定编程语言，从实际开发场景出发，由浅入深教你学习数据结构与算法的方法，帮你搞懂基本概念和核心理论，深入理解算法精髓，帮你提升使用数据结构和算法思维解决问题的能力。
+
+想要进一步提升自己的竞争力么，那就赶紧加入和我一起学习吧！
+
+![](assets/datastructure-algo.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0708-0714.md b/src/weekly/2023/0708-0714.md
new file mode 100644
index 0000000000..8fda73f4ab
--- /dev/null
+++ b/src/weekly/2023/0708-0714.md
@@ -0,0 +1,192 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#13：免费下载软件
+
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/mGTQR1wyFWauahQ3PJ6jPA
+:::
+
+## 一、项目
+### 1. [Github Profile Summary Cards](https://github.com/vn7n24fzkq/github-profile-summary-cards)
+
+一个为个人资料自述文件生成 `Github` 摘要卡的工具。只需输入你的 `Github` 用户名，选择主题后就能生成关于 `Github` 的 `Commit`、`Top Languages`、`Stats` 等信息。
+
+![](assets/image.3mbtr209h0m0.webp)
+
+### 2. [Profile Summary](https://github.com/tipsy/profile-summary-for-github)
+
+一个统计 `Github Profile` 的可视化工具。
+
+![](assets/image.jr4g9y9yhs0.webp)
+
+### 3. [GitHub Profile Trophy](https://github.com/ryo-ma/github-profile-trophy)
+
+在自述文件中添加动态生成的 `GitHub Stat` 奖杯，支持多种主题，还支持自定义大小。
+
+![](assets/image.3f55tam17940.webp)
+
+## 二、软件
+
+### 1. [Motrix](https://motrix.app/zh-CN/)
+
+一款全能的下载工具，支持下载 `HTTP`、`FTP`、`BT`、磁力链接等资源。最最重要的是，他完全跨平台且免费。
+
+软件界面设计简约清新，方便实用。用户可轻松监控、管理下载任务，并自由更改下载路径和速度限制。此外，还支持多点续传和流媒体下载，同时提供暂停、恢复、取消等快捷功能。
+
+![](assets/image.6t70owhdbt40.webp)
+
+### 2. [Xdown](https://www.xdown.org/)
+
+专业的文件下载与分享工具(`BitTorrent`/`HTTP`/`FTP`)，具有以下功能：
+
+-   支持浏览器(`Chrome`/`Edge Chromium`/百分浏览器)接管下载
+-   支持 `torrent` 下载文件与做种
+-   支持 `torrent` 自动屏蔽吸血客户端
+-   支持断线重连
+-   支持标准 `FTP`/`HTTP`/`HTTPS`/`HTTP2` 协议下载
+-   支持 `http header` 自定义字段
+-   支持手动设置并发数(最大 128)
+    支持多 `IP` 轮询节点下载
+-   支持 `BitTorrent` 内置 `tracker list` 设置
+-   支持 tls1.0/1.1/1.2/1.3-sni
+-   支持磁力链接
+-   支持 `DHT` ipv4 + ipv6
+-   支持全局限速
+-   支持自定义全局代理设置
+
+![](assets/image.ziyre4uf5m8.webp)
+
+### 3. [Free Download Manager](https://www.freedownloadmanager.org/zh/download.htm)
+
+强大的下载工具，可以看做是免费版的 `IDM`，不过功能也比 `IDM` 功能略弱。
+
+-   支持 `FTP`，`HTTPS`，还有 `BT` 下载，当然你也可以添加代理。
+-   还支持定时下载任务，也支持多线程下载，同时还可以查看多线程的进度。
+-   支持远程控制下载，还支持断点续传功能。
+-   支持国外视频网站下载，支持浏览器插件，自动捕捉可下载文件，右键即可下载。
+
+![](assets/image.5vm6cx38rv40.webp)
+
+## 三、网站
+
+### 1. [Color Hunt](https://www.colorhunt.co/)
+
+一个在线色彩搭配方案分享网站，在这里可以看到大家分享出来的各种配色方案，如果你是一个设计师，那你绝对不要错过！
+
+![](assets/image.6pwgv8u8zgo0.webp)
+
+### 2. [WebGradients](https://webgradients.com/)
+
+汇聚了 180 个线性渐变的配色方案，可以将其用作网站任何部分的内容背景，只需要通过 `Copy CSS` 即可将渐变赋值为一段 `CSS` 代码，而且免费供商业或者个人使用。
+
+![](assets/image.38cruvy28n40.webp)
+
+### 3. [ColorDrop](https://colordrop.io/)
+
+和 `Color Hunt` 类似的一个网站，只需要点击配色就会显示各个颜色的色值，但不同于 `Color Hunt` 的是，它不支持用户自己上传配色方案。
+
+![](assets/image.34vmjejwqkc0.webp)
+
+## 四、插件
+
+### 1. [Octotree](https://chrome.google.com/webstore/detail/octotree-github-code-tree/bkhaagjahfmjljalopjnoealnfndnagc?utm_campaign=en&utm_source=en-et-na-us-oc-webstrext&utm_medium=et)
+
+一款增强 `Github` 代码 `Review` 的浏览器插件。
+
+具有以下特性：
+
+-   树形结构的快递 `IDE`。
+-   支持快速搜索。
+-   可对仓库、`issues`、`PR`、文件等加书签。
+-   支持 `Github` 主题。
+-   支持私有化的仓库。
+-   高性能，适用于各种大小的仓库。
+
+![](assets/image.35mpbz41xpc0.webp)
+
+### 2. [Copy as Markdown](https://chrome.google.com/webstore/detail/copy-as-markdown/nlaionblcaejecbkcillglodmmfhjhfi?utm_campaign=en&utm_source=en-et-na-us-oc-webstrext&utm_medium=et)
+
+通过该插件，以将超链接、图像和文本复制为 `Markdown` 格式，具有以下特点：
+
+- 能够将链接、图像和选定的文本复制为 `Markdown`。
+- 对于图像将具有单独选择链接或图像的选项。
+- 格式化文本，例如斜体、粗体、删除线和内联代码。
+- 支持无序列表、有序列表、任务列表。
+- 表格遵循 `GFM` 规范。
+- 可复制代码块，而且可识别对应编程语言
+
+![](assets/image.4hevbb622l40.webp)
+
+### 3. [Sourcegraph](https://chrome.google.com/webstore/detail/sourcegraph/dgjhfomjieaadpoljlnidmbgkdffpack?utm_campaign=en&utm_source=en-et-na-us-oc-webstrext&utm_medium=et)
+
+向 `GitHub`、`GitLab` 和其他主机添加代码智能：悬停、定义、引用。适用于 20 多种语言。
+
+开源 `Sourcegraph` 扩展为 `GitHub`、`GitHub Enterprise`、`GitLab`、`Bitbucket Server` 和 `Phabricator` 添加了代码导航和代码智能。
+
+* 带有文档和类型信息的悬停工具提示
+* 转到定义
+* 查找参考资料
+
+![](assets/image.3dv9zc3f5vs0.webp)
+
+## 五、资料
+
+### 1. [现代 C++ 教程](https://changkun.de/modern-cpp/)
+
+从内容上对二十一世纪二十年代之前产生 `C++` 的相关特性做了非常相对全面的介绍，读者可以自行根据下面的目录选取感兴趣的内容进行学习，快速熟悉需要了解的内容。这些特性并不需要全部掌握，只需针对自己的使用需求和特定的应用场景，学习、查阅最适合自己的新特性即可。
+
+![](assets/image.2omujh7oswa0.webp)
+
+### 2. [小林 coding](https://xiaolincoding.com/)
+
+图解计算机网络、操作系统、计算机组成、数据库，共 1000 张图 + 50 万字，破除晦涩难懂的计算机基础知识，让天下没有难懂的八股文！
+
+![](assets/image.43wqsndtnke.webp)
+
+### 3. [inteview](https://interview.huihut.com/#/)
+
+`C/C++` 技术面试基础知识总结，包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息。
+
+![](assets/image.194o7th62ups.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0715-0721.md b/src/weekly/2023/0715-0721.md
new file mode 100644
index 0000000000..972a29b718
--- /dev/null
+++ b/src/weekly/2023/0715-0721.md
@@ -0,0 +1,197 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#14：壁纸下载网站
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/RZeCM4qnAinMzC94SZupMg
+:::
+
+## 一、项目
+
+### 1. [k-form-design](https://github.com/Kchengz/k-form-design)
+
+基于 `Vue` 和 `Ant-design-Vue` 实现的表单设计器，样式使用 `less` 作为开发语言，主要功能是能通过简单操作来生成配置表单，生成可保存的 `JSON` 数据，并能将 `JSON` 还原成表单，使表单开发更简单更快速。
+
+![](assets/687474703a2f2f63646e2e6b637a36362e636f6d2f64656d6f2e676966.gif)
+
+### 2. [lodash](https://github.com/lodash/lodash)
+
+`Lodash` 是一个一致性、模块化、高性能的 `JavaScript` 实用工具库。遵循 `MIT` 开源协议发布，并且支持最新的运行环境。
+
+![](assets/image.zgzv7knvh68.webp)
+
+### 3. [vite-vue3-lowcode](https://github.com/buqiyuan/vite-vue3-lowcode)
+
+`vue3.x` + `vite2.x` + `vant` + `element-plus` `H5` 移动端低代码平台。可视化拖拽，可视化编辑器。类似易企秀的 `H5` 制作、建站工具、可视化搭建工具。
+
+![](assets/image.jywhf1e59q8.webp)
+
+## 二、软件
+
+### 1. [JookDB](https://jookdb.com/)
+
+免费通用的数据库管理工具，支持多种数据库：`MySQL`, `MariaDB`, `Oracle`, `PostgreSQL`, `SQLite`, `MongoDB`, 达梦, `OceanBase` 和 `SQLServer`。
+
+软件具有以下特性：
+
+-   轻便的图像程序
+-   表数据编辑
+-   数据传输
+-   生成或执行 `SQL` 脚本
+-   代码自动完成
+-   暗色主题模式
+
+![](assets/image.5kh4s1ecm7k0.webp)
+
+### 2. [DBeaver](https://dbeaver.io/)
+
+一款免费的跨平台数据库工具，适用于开发人员、数据库管理员、分析师和所有处理数据的人。它支持所有流行的 `SQL` 数据库，如 `MySQL`、`MariaDB`、`PostgreSQL`、`SQLite`、`Apache` 系列等。
+
+![](assets/image.4byj69mf79k0.webp)
+
+### 3. [Beekeeper](https://www.beekeeperstudio.io/)
+
+您梦想中的 `SQL` 编辑器和数据库管理器
+一个现代、易于使用且美观的 `SQL` 客户端，适用于 `MySQL`、`Postgres`、`SQLite`、`SQL Server` 等。
+
+![](assets/image.5i5jbp8q00s0.webp)
+
+## 三、网站
+
+### 1. [彼岸图网](http://pic.netbian.com/)
+
+提供高清免费壁纸下载，而且网站无广告，但每天仅提供一张壁纸免费下载额度，有更多下载需求的可以对站点进行赞助，从而获取网站会员。
+
+![](assets/image.2t4tkuzq3520.webp)
+
+### 2. [Wallpaper Abyss](https://wall.alphacoders.com/?lang=Chinese)
+
+1008233 张壁纸的聚集地，提供免费壁纸下载，种类齐全，高清大图。
+
+![](assets/image.v2ym7b0p7a8.webp)
+
+### 3. [HDQwalls](https://hdqwalls.com/)
+
+高质量壁纸汇聚地，有 `4K`、`5K`、`8K` 等清晰度的壁纸下载，而且完全免费，更有各种尺寸壁纸供你选择。
+
+![](assets/image.7endcn4oges0.webp)
+
+## 四、插件
+
+### 1. [V2EX Polish](https://chrome.google.com/webstore/detail/v2ex-polish/onnepejgdiojhiflfoemillegpgpabdm?utm_source=ext_app_menu)
+
+专为 `V2EX` 用户设计，提供了丰富的扩展功能。
+为原网站添加了众多便捷的功能，让你的 `V2EX` 页面焕然一新！插件具有以下特点：
+
+-   界面美化
+    `UI` 设计更现代化，为你带来愉悦的视觉体验。
+-   评论回复嵌套层级，主题下的评论回复支持层级展示，更轻松地跟踪和回复其他用户的评论。
+-   热门回复展示，自动筛选出最受欢迎的回复，第一时间了解热评。
+-   表情回复支持，评论输入框可以选择表情，让回复更加生动和有趣。
+-   长回复优化，智能折叠长篇回复，一键展开查看完整内容。
+-   内置主题列表，无需打开网页，插件内即可快速获取最热、最新的主题列表和消息通知。
+-   便捷回复操作：文字转 `Base64`、上传图片
+-   添加用户信息卡片，快捷查看用户信息。
+-   右键菜单扩展：支持解析页面中 `Base64` 编码内容。
+-   “稍后阅读”功能：添加感兴趣的主题，方便日后浏览。
+
+![](assets/image.65kl2yiijro0.webp)
+
+### 2. [CrxMouse](https://crxmouse.com/zh-hans/)
+
+使用鼠标手势的轻松浏览器导航，通过直观和可自定义的鼠标手势提高您的效率。
+
+鼠标手势内置动作：按 + 按住右键（在屏幕上的任意位置）并拖动以执行以下操作： 
+
+-   ↓→：关闭当前选项卡
+-   ↓→↑：打开一个新窗口
+-   ←：返回
+-   ←↑：重新打开关闭的标签页
+-   →：前进
+-   →↓：滚动到底部
+-   →↑：滚动到顶部
+-   ↑：向上滚动一页
+-   ↑↓：刷新
+-   ↑↓↑：强制刷新
+-   ↑←：移至左侧标签
+-   ↑→：移至右侧标签
+-   ↓→↓：关闭当前窗口
+
+![](assets/image.4dmozl5bgcy0.webp)
+
+### 3. [SimilarSites](https://www.similarsites.com/)
+
+立即发现与您当前正在浏览的网站类似的网站。探索网络，了解更多信息。
+
+我们每天都有数以百万计的网站浏览，并且经常会发现自己正在寻找类似的网站来消费内容，购物或仅仅进行浏览。使用 `SimilarSites`，您可以在几秒钟内找到与您当前正在浏览的网站相关的网站！
+
+![](assets/image.4hcep30um3a0.webp)
+
+## 五、资料
+
+### 1. [百度前端技术学园](http://ife.baidu.com/)
+
+面向所有自驱成长，终身学习，热爱生活的人，打造的 `Web` 前端技术学习园地。由百度创办的免费前端技术学习实践、交流、分享平台。
+
+![](assets/image.26edzyar1r5s.webp)
+
+### 2. [网道](https://wangdoc.com/)
+
+一个互联网开发文档网站，提供各种软件文档。目标是提供高质量、自主版权、可自由使用的中文软件文档。目前已有 `HTML`、`JavaScript`、`ES6`、`Web API`、`C 语言`、`Bash`、`SSH` 等诸多内容。
+
+![](assets/image.4uiewhpvwgi0.webp)
+
+### 3. [前端之家](https://www.f2er.com/)
+
+提供各种基础教程的网站，包括 `Bootstrap`、`Node`、`Angular`、`ReactJs`、`JavaScript` 等各种前端开发编程语言。
+
+![](assets/image.2812n4i0dmsk.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+作为程序员，掌握数据结构与算法的重要性就不言而喻了。掌握了数据结构与算法，可以说你的编程能力就会有质的飞跃。任凭各种热门技术的如何变化，只要掌握了核心技能，那都可以见招拆招，做一个“赢家”。
+
+专栏共分为 4 个由浅入深的模块：
+
+-   入门篇
+-   基础篇
+-   高级篇
+-   实战篇
+
+作者采用最适合工程师的学习方式，不拘泥于某一特定编程语言，从实际开发场景出发，由浅入深教你学习数据结构与算法的方法，帮你搞懂基本概念和核心理论，深入理解算法精髓，帮你提升使用数据结构和算法思维解决问题的能力。
+
+想要进一步提升自己的竞争力么，那就赶紧加入和我一起学习吧！
+
+![](assets/datastructure-algo.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0722-0728.md b/src/weekly/2023/0722-0728.md
new file mode 100644
index 0000000000..49ac5c367f
--- /dev/null
+++ b/src/weekly/2023/0722-0728.md
@@ -0,0 +1,179 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#15：远程控制软件
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/XmW-JmHxZh8X9yiGvmWfqg
+:::
+
+## 一、项目
+
+### 1. [vue–pure-admin](https://github.com/pure-admin/vue-pure-admin)
+
+`Vue3` + `Vite4` + `Element-Plus` + `TypeScript` 编写的一款后台管理系统（兼容移动端）。
+
+![](assets/image.3bapyjvky0k0.webp)
+
+### 2. [Fay](https://github.com/TheRamU/Fay)
+
+一个完整的开源项目，包含 `Fay` 控制器及数字人模型，可灵活组合出不同的应用场景：虚拟主播、现场推销货、商品导购、语音助理、远程语音助理、数字人互动、数字人面试官及心理测评、贾维斯、`Her`。
+
+![](assets/image.60dwbmnnm940.webp)
+
+### 3. [Higress](https://github.com/alibaba/higress)
+
+基于阿里内部两年多的 `Envoy` `Gateway` 实践沉淀，以开源 `Istio` 与 `Envoy` 为核心构建的下一代云原生网关。`Higress` 实现了安全防护网关、流量网关、微服务网关三层网关合一，可以显著降低网关的部署和运维成本。
+
+![](assets/image.45vxxil68vs0.webp)
+
+## 二、软件
+
+### 1. [RayLink](https://www.raylink.live/)
+
+一款免费的远程控制软件，专为视觉行业打造的真高清、超流畅远程控制软件！支持 `Windows`、`macOS`、`Linux`、`Android`、`iOS` 等主流操作系统。
+
+![](assets/image.7f9mgcoekso0.webp)
+
+### 2. [File Converter](https://file-converter.org/)
+
+支持批量文件转换和压缩的软件，可集成到系统右键菜单中，支持电子书、视频、图片、文档、音频等多种类型文件转换。而且同时支持转换云端和离线文件，耗能少，速度也快，最重要的一点，完全免费！
+
+![](assets/file-converter-usage.gif)
+
+### 3. [Wallpaper Engine](https://www.wallpaperengine.io/zh-hans)
+
+让你的桌面变“好看”！在你的 `Windows` 桌面使用精美绝伦的动态壁纸，既可以将您自己的图像制作成动画以创建新壁纸或导入视频和网站，同时还可以分享给他人！具有以下特点：
+
+- 性能优化
+- 广泛的显示支持
+- 海量壁纸供选择
+- 自定义调整
+- 播放列表和幻灯片
+- `LED` 硬件支持
+
+![](assets/image.7cseyaowsn40.webp)
+
+## 三、网站
+
+### 1. [Postcat](https://postcat.com/zh/)
+
+在线 `API` 开发测试工具，一款国产开源免费跨平台的开源 `API` 开发测试工具，超轻量级的接口测试工具，扩展性强。支持 `REST`、`Websocket` 等协议，加速完成 `API` 开发测试工作，十分适合个人及小团队使用。
+
+![](assets/image.5vw7x366dkk0.webp)
+
+### 2. [Carbon](https://carbon.now.sh/)
+
+一个免费的在线代码截图工具，能够将你的代码生成各种主题的图片并分享，支持自动识别代码编程语言类型。
+
+![](assets/image.z84udnspna8.webp)
+
+### 3. [here it is](https://www.hereitis.cn/)
+
+一个资源站，免费下载软件、`PPT`、图片素材、精品小工具、小插件等超多资源。
+
+![](assets/image.llzb1d68svk.webp)
+
+## 四、插件
+
+### 1. [滴答清单](https://chrome.google.com/webstore/detail/ticktick-todo-task-list/diankknpkndanachmlckaikddgcehkod?utm_source=ext_app_menu)
+
+滴答清单是 `Todo` 管理神器 `TickTick` 的中文版，能帮您随时随地记录和管理所有事项。您可以用它制定学习、工作计划，生成读书、购物、旅行清单，设置生日、约会、还款提醒等。
+
+具有以下特点：
+
+- 使用 `QQ`、微博、微信一键登录
+- 与 `Android`、`iOS`、网页版完美同步、无缝切换
+- 集成微信公众号，随时随地记录想法
+- 清单分类、优先级、任务标签等，让任务清晰有条理
+- 强大且灵活的提醒备忘功能
+- 支持在列表模式下创建子任务
+- 可以在日历视图中安排您的计划
+- 与家人/朋友/同事分享协作完成重要任务
+
+![](assets/image.4gpkbq1xfc80.webp)
+
+### 2. [专注清单](https://chrome.google.com/webstore/detail/focus-to-do-pomodoro-time/ngceodoilcgpmkijopinlkmohnfifjfb?utm_source=ext_app_menu)
+
+帮助您专注于当前的工作和学习，基于番茄工作法，待办任务清单结合番茄钟计时器，绝佳的时间管理效率工具，帮助提高自律，摆脱拖延。
+
+![](assets/image.bpfxl1s6k20.webp)
+
+### 3. [New Tab Todo List](https://chrome.google.com/webstore/detail/new-tab-todo-list-checkli/hdkbnhcgfcokjhlfiicbphafdnipnhjf?utm_source=ext_app_menu)
+
+一个闪电般的新标签生产力页面和仪表板与惊人的背景，待办事项，任务，列表，等等。按照应有的方式制作新的标签页/开始页：快速，可定制，美观而高效！
+
+制作清单，轮廓，待办事项等。随着 `Chrome` 的新标签待办事项列表扩展，只需打开一个新的标签来捕捉你的想法，目标和日常任务。
+
+![](assets/image.6vlgxxe11as0.webp)
+
+## 五、资料
+
+### 1. [Python-Weekly](https://github.com/chinesehuazhou/python-weekly)
+
+`Python` 潮流周刊，分享文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。
+
+![](assets/image.1bxljf1ukqo0.webp)
+
+### 2. [《利用Python进行数据分析·第2版》](https://github.com/iamseancheney/python_for_data_analysis_2nd_chinese_version)
+
+内容主要是利用 `Python` 进行数据控制、处理、整理、分析等方面的具体细节和基本要点。作者的目标是介绍 `Python` 编程和用于数据处理的库和工具环境，掌握这些，可以让你成为一个数据分析专家。虽然书的标题是“数据分析”，重点却是 `Python` 编程、库，以及用于数据分析的工具。这就是数据分析要用到的 `Python` 编程。
+
+![](assets/image.11by9kv858dc.webp)
+
+### 3. [矩阵力量](https://github.com/Visualize-ML/Book4_Power-of-Matrix)
+
+全书共 25 章内容，可以归纳为 7 大板块：
+
+- 向量
+- 矩阵
+- 向量空间
+- 矩阵分解
+- 微积分
+- 空间几何
+- 数据
+
+书中在讲解线性代数工具时，会穿插介绍其在数据科学和机器学习领域的应用场景，让大家学以致用。本书读者群包括所有在工作中应用数学的朋友，尤其适用于初级程序员进阶，大学本科数学开窍，高级数据分析师，人工智能开发者。
+
+![](assets/image.4837f1ybsjs0.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0729-0804.md b/src/weekly/2023/0729-0804.md
new file mode 100644
index 0000000000..0bc9784eea
--- /dev/null
+++ b/src/weekly/2023/0729-0804.md
@@ -0,0 +1,254 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#16：别致的二维码
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/ERos0gfETiyjIpqNE_jBsA
+:::
+
+## 一、项目
+
+### 1. [Hydro](https://github.com/hydro-dev/Hydro)
+
+
+新一代高效强大的信息学在线测评系统，易安装，跨平台，多功能，可扩展，有题库。系统有如下特点：
+
+- 模块化设计，插件系统，功能热插拔
+- 跨平台兼容，数据一键备份/导入
+- 单系统多空间，不同班级/院校，分开管理
+- 粒度精细的权限系统，灵活调节
+- 规模化支持，上千用户无压力，伸缩组秒级自动扩展
+- 全题型支持，跟随时代潮流
+- 丰富的题库
+- ……
+
+![](assets/1690762544377.webp)
+
+### 2. [kkFileView](https://gitee.com/kekingcn/file-online-preview)
+
+
+文档在线预览项目解决方案，项目使用流行的 Spring Boot 搭建，易上手和部署。万能的文件预览开源项目，基本支持主流文档格式预览。
+
+- 支持 doc, docx, xls, xlsx, xlsm, ppt, pptx, csv, tsv, dotm, xlt, xltm, dot, dotx, xlam, xla, pages 等 Office 办公文档
+- 支持 wps, dps, et, ett, wpt 等国产 WPS Office 办公文档
+- 支持 odt, ods, ots, odp, otp, six, ott, fodt, fods 等OpenOffice、LibreOffice 办公文档
+- 支持 vsd, vsdx 等 Visio 流程图文件
+-   支持 wmf, emf 等 Windows 系统图像文件
+-   支持 psd, eps 等 Photoshop 软件模型文件
+-   支持 pdf ,ofd, rtf 等文档
+-   支持 xmind 软件模型文件
+-   支持 bpmn 工作流文件
+-   支持 eml 邮件文件
+-   支持 epub 图书文档
+-   支持 obj, 3ds, stl, ply, gltf, glb, off, 3dm, fbx, dae, wrl, 3mf, ifc, brep, step, iges, fcstd, bim 等 3D 模型文件
+-   支持 dwg, dxf, dwf, iges , igs, dwt, dng, ifc, dwfx, stl, cf2, plt 等 CAD 模型文件
+-   支持 txt, xml(渲染), md(渲染), java, php, py, js, css 等所有纯文本
+-   支持 zip, rar, jar, tar, gzip, 7z 等压缩包
+-   支持 jpg, jpeg, png, gif, bmp, ico, jfif, webp 等图片预览（翻转，缩放，镜像）
+-   支持 tif, tiff 图信息模型文件
+-   支持 tga 图像格式文件
+-   支持 svg 矢量图像格式文件
+-   支持 mp3,wav,mp4,flv 等音视频格式文件
+-   支持 avi,mov,rm,webm,ts,rm,mkv,mpeg,ogg,mpg,rmvb,wmv,3gp,ts,swf 等视频格式转码预览
+-   支持 dcm 等医疗数位影像预览
+-   支持 drawio 绘图预览
+
+![](assets/1690894829840.webp)
+
+### 3. [觅思文档](https://gitee.com/zmister/MrDoc)
+
+适合作为个人和中小型团队的私有云文档、云笔记和知识管理工具，致力于成为优秀的私有化在线文档部署方案。
+
+全系产品目前涵盖以下终端：
+
+-   `Web` 端：开源版、专业版
+-   浏览器扩展：支持 `Chromium` 系列浏览器、`Firefox` 浏览器
+-   桌面客户端：支持 `Windows`、`macOS`、`Linux`
+-   移动客户端：支持 `Android`
+
+![](assets/1690898424564.webp)
+
+## 二、软件
+
+### 1. [微信输入法](https://z.weixin.qq.com/)
+
+
+微信团队出品的输入法，主打简洁、好用、打字快，目前还处于测试阶段，但是已经支持各大主流平台。具有以下特点：
+
+- 语音转文字
+- 智能推荐书影音
+- 表情推荐
+- 智能拼写
+- 手写找字
+- 边写边译
+- 拼写检查
+
+![](assets/image.33i3jx3o8ek0.webp)
+
+### 2. [Lively Wallpaper](https://www.rocksdanister.com/lively/)
+
+免费开源软件，允许用户设置基于 `WinUI3` 制作的动画桌面壁纸和屏幕保护程序。
+
+![](assets/image.55uuc312tm80.webp)
+
+### 3. [妙记多](https://mojidoc.com/login?from=n58Zwp)
+
+致力于为新一代知识工作者提供服务，协助个人和团队提升协作效率，大幅解放生产力。
+
+![](assets/image.21ifm209r8ao.webp)
+
+## 三、网站
+
+### 1. [艺码](https://yima.me/)
+
+一款基于 `AI` 的二维码美化工具，能生成跟二维码深度融合的各种艺术风格的绘画，并且扫码后能跳转到指定的任意二维码/网站/公众号等。
+
+
+
+![](assets/image.6te7ge7dq440.webp)
+
+### 2. [MewXAI 星月熊](https://qr.mewx.art/)
+
+由 `AI` 驱动的下一代艺术二维码，通过该网站，能在短短数秒内创建出令人惊叹的下一代艺术二维码。从此告别单调的黑白二维码，给人留下深刻的印象！
+
+支持微信码、收款码、网站引流、广告 `ROI`、产品包装、展览引导、品牌推广、个人名片、扫描点餐、邀请函、二维码防伪等诸多使用场景。
+
+支持以下两种方式方式创建：
+- 上传原始二维码
+- 直接输入文本内容/链接
+
+
+
+![](assets/image.473d58sto8s0.webp)
+
+### 3. [Quick QR Art](https://quickqr.art/)
+
+
+
+一款借助 `AI` 模型来生成艺术二维码的工具，原理是利用了 `Stable Diffusion` 中的 `Control Net` 模型。仅需几步，就能创建属于自己定制的艺术二维码。
+
+
+
+![](assets/image.6zovd484t3k0.webp)
+
+## 四、插件
+
+### 1. [YouTube 双字幕](https://chrome.google.com/webstore/detail/youtube-dual-subtitles/hkbdddpiemdeibjoknnofflfgbgnebcm?utm_source=ext_app_menu)
+
+自动切换到本地语言，双语字幕，字幕下载，字幕配音，自定义字幕样式。
+
+默认字幕可设置为翻译语言，而且卡在双语字幕和单字幕之间切换。
+
+可下载视频字幕和翻译字幕，支持 .txt，.srt。
+
+还可以自定义字幕样式，字号，字体，颜色，背景，顺序，文字描边，间距等。
+
+![](assets/1690899690008.webp)
+
+### 2. [扩展管理器](https://chrome.google.com/webstore/detail/extension-manager/gjldcdngmdknpinoemndlidpcabkggco?utm_source=ext_app_menu)
+
+一键管理所有扩展，快速开启/禁用、批量闪电管理，智能排序，右键卸载、锁定、选项配置，角标提醒，大小布局随心配。快捷、简单、安全。
+一键开启/禁用扩展
+1. 闪电分组：根据场景快速开启/禁用扩展组（被锁定或主题类扩展除外）
+2. 智能排序：可根据您的使用频率智能排序（默认根据名称排序）
+3. 右键菜单：提供锁定、卸载、选项配置、主页、APP运行等快捷功能
+4. 智能搜索：通过关键字或词组快速找到需要的扩展
+5. 角标提醒：实时显示扩展状态，用完后提醒重置，减少资源占用（被锁定或主题类扩展除外）
+6. 视图选择：提供列表视图和网格视图，符合用户习惯
+7. 分组管理：普通分组和固定分组，灵活管理
+8. 扩展命名：给扩展起一个你喜欢的别名
+9. 自动匹配：可以根据不同的网站开启和关闭扩展
+
+![](assets/1690900732729.webp)
+
+### 3. [Eagle for Chrome](https://chrome.google.com/webstore/detail/eagle-for-chrome/lieogkinebikhdchceieedcigeafdkid?utm_source=ext_app_menu)
+
+此扩展程序可以轻松保存图像并将屏幕截图保存到 Eagle App。逛网站时看到感兴趣的图片就能立即收藏到 Eagle 里，并迅速完成分类整理。
+
+1. 拖拽收藏：拖曳网页图片立即收藏。
+2. Alt + 右键：轻点一下，立即保存。
+3. 批量保存：一键收集网页所有图片。
+4. 网页截图：快速将整页网页保存下来。
+
+![](assets/1690900859692.webp)
+
+## 五、资料
+
+### 1. [程序员做饭指南](https://github.com/Anduin2017/HowToCook)
+
+
+网上找菜谱和做法，菜谱往往写法千奇百怪，经常中间莫名出来一些材料。对于习惯了形式语言的程序员来说极其不友好。于是作者自己搜寻菜谱并结合实际做菜的经验，用更清晰精准的描述来整理常见菜的做法，以方便程序员在家做饭。
+
+这是一个由社区驱动和维护的开源项目，使更多人能够一起做一个有趣的仓库。
+
+![](assets/image.2q5shigdmd40.webp)
+
+### 2. [猴子都能懂的 Git 入门](https://backlog.com/git-tutorial/cn/)
+
+从名字就知道，一个超简单的 `Git` 入门教程。主要分为针对 `Git` 初学者的入门篇和有 `Git` 使用经验的高级篇。此外，还提供了 `Git` 索引，方便通过 `Git` 的操作来查找期具体方法。
+
+![](assets/image.3aghqhtnm540.webp)
+
+### 3. [TeachYourselfCS-CN](https://github.com/izackwu/TeachYourselfCS-CN)
+
+如果你是一个自学成才的工程师，或者从编程培训班毕业，那么你很有必要学习计算机科学。幸运的是，不必为此花上数年光阴和不菲费用去攻读一个学位：仅仅依靠自己，你就可以获得世界一流水平的教育。
+
+互联网上，到处都有许多的学习资源，然而精华与糟粕并存。
+
+我们时常疑惑应当学习哪些科目，为什么？
+
+对于这些科目，最好的书籍或者视频课程 是什么？
+
+在这份指引中，尝试对这些问题做出确定的回答。
+
+![](assets/1690762623467.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+作为程序员，掌握数据结构与算法的重要性就不言而喻了。掌握了数据结构与算法，可以说你的编程能力就会有质的飞跃。任凭各种热门技术的如何变化，只要掌握了核心技能，那都可以见招拆招，做一个“赢家”。
+
+专栏共分为 4 个由浅入深的模块：
+
+-   入门篇
+-   基础篇
+-   高级篇
+-   实战篇
+
+作者采用最适合工程师的学习方式，不拘泥于某一特定编程语言，从实际开发场景出发，由浅入深教你学习数据结构与算法的方法，帮你搞懂基本概念和核心理论，深入理解算法精髓，帮你提升使用数据结构和算法思维解决问题的能力。
+
+想要进一步提升自己的竞争力么，那就赶紧加入和我一起学习吧！
+
+![](assets/datastructure-algo.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0805-0811.md b/src/weekly/2023/0805-0811.md
new file mode 100644
index 0000000000..28bb7ece07
--- /dev/null
+++ b/src/weekly/2023/0805-0811.md
@@ -0,0 +1,178 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#17：美图合集 App
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/bPh_VRqv_y1fFZUxfOT_GQ
+:::
+
+## 一、项目
+
+### 1. [RxDrag](https://github.com/codebdy/rxdrag)
+
+一款开源企业级可视化低代码前端，目标是可以编辑所有 HTML 基础的组件。比如支持 React、VUE、小程序等，目前仅实现了 React 版。
+
+![](assets/1691368474003.webp)
+
+### 2. [paint-board](https://github.com/LHRUN/paint-board)
+
+一款 Canvas 画板，功能包括动态画笔、橡皮擦、文本绘制、元素框选、画板拖拽、图层操作、撤销反撤销保存等内容。
+
+![](assets/1691371798481.webp)
+
+### 3. [V3 Admin Vite](https://github.com/un-pany/v3-admin-vite)
+
+一个免费开源的中后台管理系统基础解决方案，基于 Vue3. TypeScript、Element Plus、Pinia 和 Vite 等主流技术。
+
+![](assets/1691373398652.webp)
+
+## 二、软件
+
+### 1. [集美美图](https://jmmt.mmkj.tech/)
+
+一款简单纯粹主打每日高清美女写真纸精选的应用，每一张美图均为人工精心挑选和审核，每天只更新 10 张，我们觉得壁纸不在多而在精，我们不用机器操作，也不用算法推荐，我们希望做一款精致、克制、纯粹的超高品质应用。同时支持 `Android` 和 `iOS` 端。
+
+![](assets/image.6jm01rd10eo0.webp)
+
+### 2. [汽水音乐](https://www.douyin.com/qishui/)
+
+汽水音乐是抖音官方出品的一款音乐 APP，可以帮你发现更多好音乐。汽水音乐 APP 产品拥有千万量级曲库，支持海量音乐随心听，同时具备个性化推荐、分类电台、特色榜单等功能，汽水音乐官网帮助你发现小众好音乐拒绝千篇一律。用户还可以同步抖音音乐收藏，彰显个人音乐品味，下次听歌更方便。
+
+![](assets/image.16ess55u5lkw.webp)
+
+### 3. [BoardOS](https://boardos.online/)
+
+一款强大、免费且易于使用的在线多人实时白板协作系统，帮助您随时随地将团队聚集在一起。
+
+基于白板的在线实时协作系统，拥有多种扩展应用和插件，适用于团队协作、线上教学、在线会议、头脑风暴、在线设计等众多场景，一切为了高效!
+
+![](assets/image.40y7qnjn3840.webp)
+
+## 三、网站
+
+### 1. [QR-艺术二维码](https://chenyating.github.io/art-qrcode/)
+
+只需输入你要生成二维码的内容，点击开始生成即可生成你的艺术二维码。
+
+![](assets/image.2mwptzvlxtq0.webp)
+
+### 2. [中国色彩](https://chinese-colors.heyfe.org/)
+
+按照选择的颜色一键生成网站配色，懒人配色必备工具。
+
+![](assets/image.28uwornzz1us.webp)
+
+### 3. [BMM](https://bmm.lccl.cc/)
+
+一个设计精美的网址导航网站，收集了众多优质视频、图片、设计、编程、学习等网站；登录后可通过站点独有的标签系统，管理属于自己的网络书签。
+
+![](assets/image.9narqvbwdyw.webp)
+
+## 四、插件
+
+### 1. [ChatHub](https://chrome.google.com/webstore/detail/chathub-all-in-one-chatbo/iaakpnchhognanibcahlpcplchdfmgma?hl=zh-CN)
+
+一个 ChatBot 聚合客户端，可同时使用 ChatGPT、Bing、Bard 和更多机器人，支持如下功能：
+
+- 在一个应用里使用多种 ChatBot，目前支持 ChatGPT, Bing Chat, Google Bard, Claude, 讯飞星火及一些开源模型，并在持续集成更多机器人
+- 同时和多个 ChatBot 聊天，方便对比回答
+- 支持 ChatGPT API、Azure OpenAI service
+- 支持 GPT-4
+- Prompt Library
+- 快捷键一键唤起
+- Markdown 及代码高亮
+- Dark mode
+- 联网搜索
+
+![](assets/1691483842679.webp)
+
+### 2. [Google Keep](https://chrome.google.com/webstore/detail/google-keep-chrome-extens/lpcaedmchfhocbbapmcbpinfpgnhiddi?hl=zh-CN)
+
+想把特定的网页、图片或引用文字保存起来，方便日后使用吗？有了 Google Keep Chrome 扩展程序，您可以轻松将所需内容保存到 Keep，并可在您使用的所有平台同步，包括网页、Android 设备、iOS 设备和 Wear 设备。您还可以通过记事功能记录详细信息，并利用标签快速将记事分门别类，方便日后查找相关记事。
+
+插件支持如下功能：
+
+-   保存网页链接、文本和图片
+-   针对已保存的内容创建记事
+-   为记事添加标签
+-   自动保存到 Google Keep
+
+![](assets/1691483810886.webp)
+
+### 3. [ImTranslator](https://chrome.google.com/webstore/detail/imtranslator-translator-d/noaijdpnepcgjemiklgfkcfbkokogabh?hl=zh-CN)
+
+支持选定文本、单词、短语和网页翻译，支持阅读高达 10 种语言的文字，主要有如下特点：
+
+-   在 91 种语言之间翻译
+- 每次翻译 5000 个字符
+* 翻译历史
+* 整个网页翻译，带鼠标悬停翻译选项
+* 30 种语言文本-语音转换
+* 自动源语言检测
+* 回译
+* 热键自定义
+* 对各种翻译工具的完全自定义
+* 本地化的用户界面
+
+![](assets/1691482575399.webp)
+
+## 五、资料
+
+### 1. [TypeScript 教程](https://github.com/wangdoc/typescript-tutorial)
+
+TypeScript 开源教程，介绍基本概念和用法，面向初学者。
+
+![](assets/1691367319148.webp)
+
+### 2. [陌溪的学习笔记](https://gitee.com/moxi159753/LearningNotes)
+
+陌溪的学习笔记，面试突击宝典，主要来源于 B 站上视频的学习，同时会记录平时一些学习和项目中遇到的问题。
+
+![](assets/1691453595915.webp)
+
+### 3. [从零学 Python](https://gitee.com/52itstyle/Python)
+
+从零学 Python，各种开发案例，不定期更新。
+
+![](assets/1691454036958.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0812-0818.md b/src/weekly/2023/0812-0818.md
new file mode 100644
index 0000000000..6d3caaab3d
--- /dev/null
+++ b/src/weekly/2023/0812-0818.md
@@ -0,0 +1,203 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#18：灵感收集器
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/6S1Lde5v64sI0R-UttKJgA
+:::
+
+
+## 一、项目
+
+### 1. [layui-vue](https://gitee.com/layui/layui-vue)
+
+一套 Vue 3.0 的桌面端组件库。
+
+![](assets/image.60xvwd1fbws0.webp)
+
+### 2. [Furion](https://gitee.com/dotnetchina/Furion)
+
+一个应用程序框架，您可以将它集成到任何 .NET/C# 应用程序中，让 .NET 开发更简单，更通用，更流行。
+
+![](assets/1692068786244.webp)
+
+### 3. [TLog](https://gitee.com/dromara/TLog)
+
+一个轻量级的分布式日志标记追踪神器，10 分钟即可接入，自动对日志打标签完成微服务的链路追踪。支持 `log4j`，`log4j2`，`logback` 三大日志框架，支持 `Dubbo`，`Dubbox`，`Spring Cloud` 三大 `RPC` 框架。
+
+![](assets/1692069223547.webp)
+
+## 二、软件
+
+### 1. [GitMind](https://gitmind.cn/)
+
+新一代 **免费** 思维导图协作软件，头脑风暴、思想共创，激发思想流动，让智慧自然涌现。
+
+一款全平台 在线思维导图脑图架构图制作软件工具，支持手机手机思维导图，`Windows`/`Mac`/`Linux` 多平台操作及内容同步。它提供有海量的架构图，流程图、思维导图模板可供用户直接使用，支持在线制作流程图、思维导图、组织结构图、类图、用例图、`ER` 图、网络拓扑图以及 `UML` 图等十多种图形。
+
+![](assets/1690762690062.webp)
+
+### 2. [Gridea](https://gridea.dev/)
+
+建造你的数字花园，让写作成为最佳谈话方式。
+
+提供撰写、托管、自定义域名的全功能 Blog 工具。
+
+![](assets/1690762795459.webp)
+
+### 3. [Pinbox](https://withpinbox.com/)
+
+一款跨平台的收藏工具，您可以用它来记录灵感，稍后阅读，保存资料甚至网络上的任何内容。
+
+登录输入邀请码 **9eb4d** 即可获得 7 天专业版免费使用权，还不快快行动起来！
+
+![](assets/1690762833699.webp)
+
+## 三、网站
+
+### 1. [Loading.io](https://loading.io/)
+
+一个简单好用的 loading 制作网站，提供基于各种形式（Ajax Loader, Animated Icons, Live Background）和各种格式（GIF/SVG/APNG/CSS）的loading过渡动画。既有免费内容，也有付费内容，不过免费内容已经足够日常设计使用。
+
+![](assets/1690762875324.webp)
+
+### 2. [unDraw](https://undraw.co/illustrations)
+
+免费可商用矢量插画图库，800 多张工作、生活原创插画。一键即可改变插画主色调，提供 png 和 svg 两种格式下载，目前仍在持续更新中。
+
+![](assets/1690763044389.webp)
+
+### 3. [ColorGG](https://www.colorgg.com/)
+
+一个免费的颜色工具，提供有关颜色信息，为您生成互补色、类似色、分裂补色、三元、四元、单色等配色方案。
+在搜索框中输入颜色值，提供关于该颜色的详细信息并自动生成十六进制、RGB、CMKY、HSL、HSV、CIE-LAB、LUV、LCH、Hunter-Lab、XYZ、xyY 等信息。
+
+![](assets/1690763071963.webp)
+
+## 四、插件
+
+### 1. [沉浸式翻译](https://immersivetranslate.com/)
+
+沉浸式网页双语翻译扩展，免费使用，支持 Deepl/Google/有道/腾讯翻译等多个翻译服务，支持 Firefox/Chrome/油猴脚本，亦可在 iOS Safari 上使用。
+
+一款免费的，好用的，没有废话的，革命性的，饱受赞誉的，AI 驱动的双语网页翻译扩展，帮助你有效地打破信息差，在手机上也可以用！
+
+主要特性：
+
+-   沉浸式阅读外文网站
+-   强大的输入框翻译
+-   高效的文件翻译
+-   创新的鼠标悬停翻译
+-   深度定制优化主流网站
+-   全平台支持
+-   支持 10+ 种翻译服务
+
+![](assets/1692145937305.webp)
+
+### 2. [Toucan](https://chrome.google.com/webstore/detail/toucan-language-learning/lokjgaehpcnlmkebpmjiofccpklbmoci?hl=zh-CN)
+
+当您访问网站时，Toucan 会自动将页面上的某些单词和短语翻译成您希望学习的语言。通过这种方式，您就可以在自己熟悉语言的语境中，学习新语言中的单词，支持以下语言：
+
+-   英语（适用于讲西班牙母语用户）
+-   西班牙语
+-   法语
+-   日语
+-   德语
+-   韩语
+-   葡萄牙语
+-   意大利语
+-   阿拉伯语
+-   中文（普通话）
+-   希伯来语
+-   印地语
+
+![](assets/1692146560656.webp)
+
+### 3. [BlockSite](https://chrome.google.com/webstore/detail/blocksite-block-websites/eiimnmioipafcokbfikbljfdeojpcgbh?hl=zh-CN)
+
+保持专注并提高生产力：自定义组织列表、计划的站点组织和密码保护，主要具有以下特点：
+
+-   保持专注扩展
+-   工作模式
+-   调度
+-   时间管理
+-   密码保护
+-   屏蔽成人内容
+-   定制阻止页
+-   站点重定向
+-   跨浏览器同步
+-   卸载预防
+
+![](assets/1692149410548.webp)
+
+## 五、资料
+
+### 1. [RedTeam_BlueTeam_HW](https://github.com/Mr-xn/RedTeam_BlueTeam_HW)
+
+红蓝对抗以及护网相关工具和资料，内存 shellcode（cs + msf）和内存马查杀工具。
+
+![](assets/1691550580602.webp)
+
+### 2. [Nginx 极简教程](https://github.com/dunwu/nginx-tutorial)
+
+一个 Nginx 极简教程，目的在于帮助新手快速入门 Nginx。
+
+而且仓库中模拟了工作中的一些常用实战场景，并且都可以通过脚本一键式启动，可以快速看到演示效果。
+
+![](assets/1691551021240.webp)
+
+### 3. [Linux 教程](https://github.com/dunwu/linux-tutorial)
+
+主要涵盖以下内容：Linux 命令、Linux 系统运维、软件运维、精选常用 Shell 脚本等。
+
+![](assets/1691551403076.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+作为程序员，掌握数据结构与算法的重要性就不言而喻了。掌握了数据结构与算法，可以说你的编程能力就会有质的飞跃。任凭各种热门技术的如何变化，只要掌握了核心技能，那都可以见招拆招，做一个“赢家”。
+
+专栏共分为 4 个由浅入深的模块：
+
+-   入门篇
+-   基础篇
+-   高级篇
+-   实战篇
+
+作者采用最适合工程师的学习方式，不拘泥于某一特定编程语言，从实际开发场景出发，由浅入深教你学习数据结构与算法的方法，帮你搞懂基本概念和核心理论，深入理解算法精髓，帮你提升使用数据结构和算法思维解决问题的能力。
+
+想要进一步提升自己的竞争力么，那就赶紧加入和我一起学习吧！
+
+![](assets/datastructure-algo.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0819-0825.md b/src/weekly/2023/0819-0825.md
new file mode 100644
index 0000000000..5cffc2c8c6
--- /dev/null
+++ b/src/weekly/2023/0819-0825.md
@@ -0,0 +1,183 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#19：开源指北
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/tqZW3qavO8WfYLAgHQANiA
+:::
+
+## 一、项目
+
+### 1. [Vditor](https://github.com/Vanessa219/vditor)
+
+一款浏览器端的 Markdown 编辑器，支持所见即所得、即时渲染（类似 Typora）和分屏预览模式。它使用 TypeScript 实现，支持原生 JavaScript 以及 Vue、React、Angular 和 Svelte 等框架。
+
+![](assets/1692576139146.webp)
+
+### 2. [小玄猪商城](https://gitee.com/jeffvon/xxzsource)
+
+小玄猪商城是一套基于前后端分离的 B2B、B2C 商城系统，支持微信小程序、支付宝小程序、H5 商城、APP 商城。支持多商户入驻、适用于直播商城、社交电商、团购、拼团、秒杀、砍价、活动报名、客户管理、知识付费、积分商城、抽奖活动、会员卡、权益卡、成长值、预售、任务中心等场景。商城采用 TP6、VUE、element-vue-admin、uniapp 等技术栈，代码简洁，易于二次开发。
+
+![](assets/1692576182234.webp)
+### 3. [godoDb](https://gitee.com/ruitao_admin/gododb)
+
+一款 MySQL 数据库管理工具，具有以下特性：
+
+-   支持数据库备份还原，支持添加数据库；
+-   支持自动生成数据库设计文档，md 格式以及实时预览，可以下载成 pdf/word 文件；
+-   支持数据表名/注释/autoid 的更改，支持优化表/修复表/删除表/清空表；
+-   可查看/编辑/新增/复制任意表数据；
+-   可执行 sql 文件，并查看执行后的数据结果；
+-   可更改字段名/注释/默认值/排序，可拖拽排序字段，可删除字段；
+-   支持连接/管理多个外部数据库，可通过 ssh 连接外部数据库，可导入 pem 文件连接；
+-   支持数据库表保护；
+-   精细化的权限控制，多角色多用户管理；
+-   可查询每个用户的操作记录，方便回查；
+
+![](assets/1692576228416.webp)
+
+## 二、软件
+
+### 1. [MarkText](https://github.com/marktext/marktext)
+
+一个简单优雅的开源 Markdown 编辑器，专注于速度和可用性。而且跨平台，在 Windows、macOS 以及 Linux 平台均可使用。
+
+![](assets/1690763237290.webp)
+
+### 2. [想天工作台](https://www.apps.vip/)
+
+你的副屏操作系统，集效率辅助、游戏娱乐、桌面美化于一身，让你的老设备再次就业，让屏幕解锁更多玩法。此外还支持以下特性：
+
+-   浅/暗色模式切换
+-   多屏联动
+-   内置浏览器
+-   启动器
+-   创意市场
+-   剪贴板
+-   弹幕
+-   壁纸
+-   轻聊
+
+![](assets/1690763277485.webp)
+
+### 3. [SimpleMindMap](https://wanglin2.github.io/mind-map/#/index)
+
+一个思维导图库，同时也是一个思维导图软件。开源、免费、强大...
+
+无论你是开发者，还是使用者，只要喜欢思维导图，都能在这个项目里找到你需要的。
+
+![](assets/1690763116429.webp)
+
+## 三、网站
+
+### 1. [改图神器](https://img.logosc.cn/)
+
+AI 万能图片编辑器，在线修改图片颜色尺寸、智能抠图去水印，AI/EPS/PSD/SVG 全格式支持的在线图片编辑器。
+
+![](assets/1690763944242.webp)
+
+### 2. [JSFiddle](https://jsfiddle.net/)
+
+一个在线 IDE 服务和在线社区，用于测试和展示用户创建的协作 HTML，CSS 和 JavaScript 代码段。
+
+![](assets/1690763993530.webp)
+
+### 3. [历史价格查询](http://www.lsjgcx.com/)
+
+输入商品对应网址链接，就能查询商品的历史价格走势，让你不再被商家的各种促销活动忽悠，更清晰的了解商家活动是否为虚假促销以及促销力度。
+
+![](assets/1690764029365.webp)
+
+## 四、插件
+
+### 1. [OneTab](https://chrome.google.com/webstore/detail/onetab/chphlpgkkbolifaimnlloiipkdnihall)
+
+当您发现自己有太多的标签页时，单击 OneTab 图标，将所有标签页转换成一个列表。当您需要再次访问这些标签页时，可以单独或全部恢复它们，从而节省高达 95％ 的内存。
+
+![](assets/1692576316116.webp)
+
+### 2. [FireShot](https://chrome.google.com/webstore/detail/take-webpage-screenshots/mcbpblocgmgfnpjjppndjkmgjaogfceg)
+
+捕捉网页截图，编辑并将它们保存为 PDF，JPEG，GIF，PNG 或 BMP。然后用于上传，打印，在 Photoshop 中打开，复制到剪贴板或电子邮件等操作。
+
+![](assets/1692576359483.webp)
+
+### 3. [Adobe Acrobat](https://chrome.google.com/webstore/detail/adobe-acrobat-pdf-edit-co/efaidnbmnnnibpcajpcglclefindmkaj?hl=zh-CN)
+
+利用 Adobe Acrobat PDF 工具在 Google Chrome 中完成更多任务：查看、填充、注释、签名，您还可以试试转换和压缩工具，支持如下功能：
+
+-   查看、下载、打印和存储 PDF
+-   免费添加备注编辑 PDF
+-   免费填写和签署表格
+-   ……
+
+![](assets/1693145603095.webp)
+
+## 五、资料
+
+### 1. [大圣前端进阶指南](https://github.com/shengxinjing/fe-advanced-interview)
+
+一份前端进阶面试指南，解决前端进阶的难点。囊括了以下内容：
+
+-   React + TS 企业级实战 + 组件库
+-   Vue3 + TS 企业级实战 + 组件库
+-   前端工程师的算法课
+-   源码漫游
+-   前端面试课
+-   大圣前端私教课
+
+![](assets/1692576465452.webp)
+
+### 2. [开源指北](https://gitee.com/gitee-community/opensource-guide)
+
+一份给开源新手的保姆级开源百科，如果你还不知道如何开源该从何做起，不妨参考下这份指南。
+
+![](assets/1692576558484.webp)
+
+### 3. [Vue3.x 知识图谱](https://gitee.com/jishupang/vue3-knowledge-map)
+
+Vue3.x 知识地图，使用这个图可以大大加快开发效率，轻松记忆知识点，对于学习 Vue3 很有帮助。
+
+![](assets/1692576602531.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
diff --git a/src/weekly/2023/0826-0901.md b/src/weekly/2023/0826-0901.md
new file mode 100644
index 0000000000..31079cac60
--- /dev/null
+++ b/src/weekly/2023/0826-0901.md
@@ -0,0 +1,199 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#20：写作辅助插件
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/zvn977rKj31sJ6QUvMOqwA
+:::
+
+## 一、项目
+
+### 1. [ForestBlog](https://github.com/saysky/ForestBlog)
+
+一个简单漂亮的博客系统，基于 SSM（Spring、Spring MVC、MyBatis）开发，适合初学 SSM 和想要制作个人博客的朋友学习。最新版本已经支持用户注册，包含用户和管理员两种角色。
+
+![](assets/1693200076553.webp)
+
+### 2. [hexo-theme-aurora](https://github.com/auroral-ui/hexo-theme-aurora)
+
+使用极光颜色和 UI 元素的下一代 Hexo 主题，基于 Vue3 开发，给你带来一种平滑流畅的色彩和未来感。
+
+![](assets/1693200183918.webp)
+
+### 3. [yft-design](https://github.com/more-strive/yft-design)
+
+使用 Vue3 + TypeScript + Fabric.js + Pinia + Element-Plus，支持 文字、图片、形状、线条、二维码 、条形码几种最常用的元素类型，每一种元素都拥有高度可编辑能力，缩略图显示，模板，支持导出 JSON、SVG、Image 文件。
+
+![](assets/1693138016247.webp)
+
+## 二、软件
+
+### 1. [NxShell](https://nxshell.github.io/)
+
+一款跨平台的 SSH 新终端工具,就像当下流行的 PuTTY 终端一样。但 NxShell 随着后期功能的迭代完善,会生长出自己独有的终端工具超能力。
+
+软件支持如下功能：
+
+-   支持 SSH/Sftp/ftp/Serial/VNC 协议
+-   支持 Linux/Windows/macOS 多端平台
+-   支持中文和英文两种语言
+-   支持 SSH 隧道 Socks v5，当前开启后默认监听在 localhost:10080
+-   支持会话管理,导入和导出功能等
+-   支持 SSH rz/sz 命令文件上传下载
+-   支持终端主题配置
+-   支持终端日志管理
+-   支持分组分屏展示
+-   支持全屏模式
+-   支持同时发送命令到多个打开的 SSH 会话中
+-   支持会话锁定
+-   支持快捷键操作
+-   支持 Sftp 在线编辑器
+-   支持 lrz/lsz 文件传输
+
+![](assets/image.1cpyex0565pc.webp)
+
+### 2. [TablePlus](https://tableplus.com/)
+
+让数据库管理变得更简单，适用于关系型数据库的现代、原生且友好的可视化管理工具，支持 MySQL、PostgreSQL、SQLite、SQLServer、Redis、mongoDB 等。
+
+![](assets/1690811656100.webp)
+
+### 3. [SciHubEVA](https://github.com/leovan/SciHubEVA)
+
+一款由 `Python` 和 `Qt` 提供支持的跨平台 `Sci-Hub GUI` 应用程序。想必每个被论文折磨的朋友都不陌生，主需要输入 `URL`、`PMID`、`DOI` 就能下载到绝大部分论文，妥妥地下载论文利器。
+
+![](assets/1693200234101.webp)
+
+## 三、网站
+
+### 1. [CodePen](https://codepen.io/)
+
+一个前端在线开发工具，能够直接在线实时渲染代码效果。而且可以免费托管前端代码，用于制作和测试页面。
+
+![](assets/1690768321171.webp)
+
+### 2. [JSRUN](https://jsrun.net/)
+
+创建于 2016 年，专注于在线代码运行，支持在移动端编写代码的编辑器，支持在线运行 `HTML`、`Node.JS`、`C`、`Python`、`PHP`、`Java`、`MySQL`、`C#`、`Go` 等语言。
+
+![](assets/1690768349594.webp)
+
+### 3. [CodeSandbox](https://codesandbox.io/)
+
+一个可以在线运行代码的编辑器，主要用于创建 `Web` 应用，支持 `JavaScript`、`TypeScript`、`CSS`、`Less`、`Sass`、`HTML` 等多种文件。
+
+![](assets/1690768437267.webp)
+
+## 四、插件
+
+### 1. [Linguix](https://linguix.com/)
+
+![](assets/1693354588749.webp)
+
+通过 `Linguix` 多语种语法检查和改写工具来提升您的写作水平并创作引人入胜的内容。其功能包括语法检查、标点符号检查、改写以及 `ChatGPT` 写作。
+
+提供实时语法检查和改写，以即时提高各大网站上的内容质量。从撰写电子邮件到准备大型文档，解决您的写作任务。生成式人工智能功能和 `OpenAI`/`ChatGPT` 集成还可以立即修复错误，让内容变短/长等。
+
+### 2. [LanguageTool](https://languagetool.org/)
+
+![](assets/1693354621982.webp)
+
+使用 LanguageTool 的语法检查器和释义工具立即增强您的文本，具有以下特点：
+
+-   无需注册
+-   支持超 25 种语言：英语、西班牙语、法语、德语、波兰语、俄语……
+-   应用范围广，几乎包含所有网站
+
+### 3. [Rememberry](https://chromewebstore.google.com/detail/rememberry-翻译和记住/dipiagiiohfljcicegpgffpbnjmgjcnf)
+
+![](assets/1693354558650.webp)
+
+在浏览网页时翻译单词和短语，并使用抽认卡轻松补充属于自己的外语词典，插件具有以下特点：
+
+-   简便但强大的翻译扩展
+-   支持几乎所有语言的翻译和阅读，且同时支持国内外的谷歌翻译
+-   划词即显示翻译结果，简单方便
+-   有道智能翻译
+-   文本翻译为任何语言
+-   单词释义详细精准
+-   ……
+
+## 五、资料
+
+### 1. [Thinking_in_Java_MindMapping](https://github.com/LjyYano/Thinking_in_Java_MindMapping)
+
+一个包含了博主的编程笔记、观影指南、读书笔记、生活感悟、Switch 游戏等内容的仓库。
+
+![](assets/1693200276259.webp)
+
+### 2. [JavaCore](https://github.com/dunwu/javacore)
+
+一个 Java 核心技术教程，包含以下方面内容：
+
+-   Java 基础特性
+-   Java 高级特性
+-   Java 容器
+-   Java IO
+-   Java 并发
+-   Java 虚拟机
+-   ……
+
+![](assets/1693200314558.webp)
+
+### 3. [Go 语言爱好者周刊](https://github.com/polaris1119/golangweekly)
+
+随着 Go 受到越来越多的关注，相关的文章、软件、资源也越来越多。Go 语言爱好者周刊旨在为大家分享一周值得了解、学习的 Go 语言相关内容。每周日发布。
+
+周刊自 2019 年开始发布，截止目前已经持续到了 198 期。
+
+![](assets/1693200352218.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+作为程序员，掌握数据结构与算法的重要性就不言而喻了。掌握了数据结构与算法，可以说你的编程能力就会有质的飞跃。任凭各种热门技术的如何变化，只要掌握了核心技能，那都可以见招拆招，做一个“赢家”。
+
+专栏共分为 4 个由浅入深的模块：
+
+-   入门篇
+-   基础篇
+-   高级篇
+-   实战篇
+
+作者采用最适合工程师的学习方式，不拘泥于某一特定编程语言，从实际开发场景出发，由浅入深教你学习数据结构与算法的方法，帮你搞懂基本概念和核心理论，深入理解算法精髓，帮你提升使用数据结构和算法思维解决问题的能力。
+
+想要进一步提升自己的竞争力么，那就赶紧加入和我一起学习吧！
+
+![](assets/datastructure-algo.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0902-0908.md b/src/weekly/2023/0902-0908.md
new file mode 100644
index 0000000000..e10819626f
--- /dev/null
+++ b/src/weekly/2023/0902-0908.md
@@ -0,0 +1,188 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+# 好物周刊#21：前端学习资料
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+
+::: tip 原文
+https://mp.weixin.qq.com/s/p-tN_OM8nbh6IbjF5d6nyw
+:::
+
+## 一、项目
+
+### 1. [Discovery](https://github.com/Nepxion/Discovery)
+
+云原生微服务解决方案，支持蓝绿灰度发布、路由、限流、熔断、降级、隔离、追踪、流量染色、故障转移、多活。
+
+![](assets/1693268061437.webp)
+
+### 2. [Tide](https://gitee.com/oschina/tide)
+
+开箱即用、扩展性强、支持 `Markdown` 语法、基础功能完善的 `React` 富文本编辑器。
+
+![](assets/1693635105652.webp)
+
+### 3. [VNote](https://gitee.com/tamlok/vnote)
+
+一个专注于 `Markdown` 的基于 `Qt` 的开源免费的笔记应用，愿景是希望能提供一个拥有完美编辑体验的舒适的笔记平台。支持 `macOS`、`Windows`、`Linux` 三大平台。
+
+![](assets/1693635519202.webp)
+
+## 二、软件
+
+### 1. [noMeiryoUI](https://github.com/Tatsu-syo/noMeiryoUI)
+
+Windows 系统字体修改工具，支持 Windows 8/8.1/10/11 系统的的字体修改，软件只是对主题字体风格设置进行修改，而不是对系统字体本身的渲染、修改，所以无风险，无占用，渲染美化系统字体风格。
+
+![](assets/1693268208239.webp)
+
+### 2. [Tabby](https://tabby.sh/)
+
+一个可高度配置的终端模拟器和 SSH 或串口客户端，支持 Windows，macOS 和 Linux，支持如下功能：
+
+-   集成 SSH，Telnet 客户端和连接管理器
+-   集成串行终端
+-   定制主题和配色方案
+-   完全可配置的快捷键和多键快捷键
+-   分体式窗格
+-   自动保存标签页
+-   支持 PowerShell（和 PS Core）、WSL、Git-Bash、Cygwin、MSYS2、Cmder 和 CMD
+-   在 SSH 会话中通过 Zmodem 进行直接文件传输
+-   完整的 Unicode 支持，包括双角字符
+-   不会因快速的输出而卡住
+-   Windows 上舒适的 shell 体验，包括 tab 自动补全（通过 Clink）
+-   为 SSH secrets 和设置集成了加密容器
+-   SSH、SFTP 和 Telnet 客户端可用作 Web 应用（也可托管）
+
+![](assets/1693227832276.webp)
+
+### 3. [PicGo](https://github.com/Molunerfinn/PicGo)
+
+一个用于快速上传图片并获取图片 URL 链接的工具，目前支持如下图床：
+
+-   七牛图床
+-   腾讯云 COS
+-   又拍云
+-   Github
+-   SM.MS
+-   阿里云 OSS
+-   Imgur
+
+![](assets/1693230661300.webp)
+
+## 三、网站
+
+### 1. [Wappalyzer](https://www.wappalyzer.com/)
+
+一个跨平台程序，能够发现网站上使用的技术。检测网站的内容管理系统、Web 框架、服务器软件、分析工具等等。
+
+![](assets/1690768605419.webp)
+
+### 2. [Photopea](https://www.photopea.com/)
+
+一个在线版的 PhotoShop，支持 PSD、AI、XD、sketch、PDF、XCF、RAW 等多种图片格式。
+
+![](assets/1690768504751.webp)
+
+### 3. [中国亲戚关系计算器](https://passer-by.com/relationship/)
+
+逢年过节遇到三姑六婆，拒绝叫不出口的尴尬！轻松搞定亲戚关系。当前亲戚称呼大全已收录约 **76602** 条亲戚关系。
+
+![](assets/1691367608073.webp)
+
+## 四、插件
+
+### 1. [YouTube Dubbing](https://www.youtube-dubbing.com/)
+
+一个帮你把外语视频变成中文视频的神奇插件，具有如下特点：
+
+-   **中文优化**
+-   **多语种支持**
+-   **更自然的声音**
+-   **多种语音风格**
+-   **多平台支持**
+-   **视频下载**
+
+![](assets/1693556784310.webp)
+
+### 2. [PT Plugin Plus](https://microsoftedge.microsoft.com/addons/detail/pt-plugin-plus/ekhingnlcjebipkdcgkkheigmljefepn)
+
+一款浏览器插件，主要用于辅助下载 `PT` 站的种子。适用于各 `PT` 站，可使下载种子等各项操作变化更简单、快捷。配合下载服务器（如 `Transmission`、`µTorrent` 等），可一键下载指定的种子。
+
+![](assets/1693557437416.webp)
+
+### 3. [网课小工具](https://chrome.google.com/webstore/detail/网课小工具/kkicgcijebblepmephnfganiiochecfl?hl=zh-CN)
+
+一个超星(学习通)/智慧树(知到)/中国大学 `mooc` 学习工具。支持火狐、谷歌油猴。全自动完成任务，视频倍速秒过，作业考试题库，验证码自动打码。
+
+![](assets/1693557757726.webp)
+
+## 五、资料
+
+### 1. [awesome-english-ebooks](https://github.com/hehonghui/awesome-english-ebooks)
+
+经济学人(含音频)、纽约客、卫报、连线、大西洋月刊等英语杂志免费下载,支持 epub、mobi、pdf 格式, 每周更新。
+
+![](assets/1693268253046.webp)
+
+### 2. [ChoDocs](https://github.com/chodocs/chodocs)
+
+一站式前端内容网站，包括学习路线、知识体系。用专栏形式更新，主要包含以下方面内容：
+
+-   面试专栏
+-   编程学习
+-   前端算法
+-   备忘录
+-   学习圈子
+-   编程工具
+-   技术视野
+-   拥抱开源
+-   ……
+
+![](assets/1693268778391.webp)
+
+### 3. [Web](https://github.com/qianguyihao/Web)
+
+千古前端图文教程，超详细的前端入门到进阶知识库。从零开始学前端，做一名精致优雅的前端工程师。
+
+![](assets/1693268832733.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2023/0909-0915.md b/src/weekly/2023/0909-0915.md
new file mode 100644
index 0000000000..ab62c57a7c
--- /dev/null
+++ b/src/weekly/2023/0909-0915.md
@@ -0,0 +1,175 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#22：代码阅读辅助工具
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/nxRy7y81YYbQwbvdWCVB_w
+:::
+
+## 一、项目
+
+### 1. [PaoPao](https://github.com/rocboss/paopao-ce)
+
+一个清新文艺的微社区。后端采用 `Go` + `Zinc` 框架搭建，前端则由 `Vue3` + `TS` 构建，整体布局类似 `Twitter` 的三栏设计。
+
+![](assets/1693879899895.webp)
+
+### 2. [documenso](https://github.com/documenso/documenso)
+
+一个电子签名、在线签约 `SaaS` 工具，可以当做 `DocuSign` 的开源替代方案。
+
+![](assets/1693880304431.webp)
+
+### 3. [One API](https://github.com/songquanpeng/one-api)
+
+`OpenAI` 接口管理 & 分发系统，支持 `Azure`、`Anthropic Claude`、`Google PaLM 2`、智谱 `ChatGLM`、百度文心一言、讯飞星火认知、阿里通义千问以及 360 智脑，可用于二次分发管理 `key`，仅单可执行文件，已打包好 `Docker` 镜像，一键部署，开箱即用
+
+![](assets/1693880680696.webp)
+
+## 二、软件
+
+### 1. [AIdea](https://github.com/mylxsw/aidea-server)
+
+一款支持 GPT 以及国产大语言模型通义千问、文心一言等，支持 Stable Diffusion 文生图、图生图、 SDXL1.0、超分辨率、图片上色的全能型 APP。
+
+![](assets/1693527566834.webp)
+
+### 2. [MindMaster](https://www.edrawsoft.cn/mindmaster/wb-zhihu.html)
+
+专业思维导图软件，云同步跨平台、海量脑图模板、功能全易上手。
+
+使用软件可以将纷繁复杂的想法、知识和信息，如学习笔记、会议纪要、项目需求等简化成一张张清晰的思维导图，以结构化有序化的方式呈现，提高归纳、学习和记忆的效率，方便展示和讲解。
+
+![](assets/mm10-ad-mian-banner.gif)
+
+### 3. [Codemap](https://codemap.info/index.html)
+
+一款辅助阅读源代码的工具，通过连线展示代码调用关系、高亮、备注、代码量统计、等一系列功能、方法帮助用户理解代码，解析软件项目结构。
+
+![](assets/1694128985102.webp)
+
+## 三、网站
+
+### 1. [PPChart](http://ppchart.com/#/)
+
+让图表更简单。PPChart 提供 Echarts 收录、图表制作等服务。
+
+![](assets/image.zns5lxxti7.webp)
+
+### 2. [Made A Pie](https://madeapie.com/#/)
+
+Echarts 图表制作、案例分享、教程分享。汇聚了超多 Echarts 绘制案例，主要有以下类别：
+
+![](assets/image.3au9zsyy08m0.webp)
+
+### 3. [ISQQW](https://www.isqqw.com/)
+
+一个 ECharts 图表集，ECharts demo 集，Echarts gallery 社区。同时，在这里还可以分享你的可视化作品。
+
+![](assets/1690768631894.webp)
+
+## 四、插件
+
+### 1. [终结农场内容](https://chrome.google.com/webstore/detail/content-farm-terminator/lcghoajegeldpfkfaejegfobkapnemjl)
+
+标示内容农场链接，防止误入内容农场，并封锁内容农场的广告与恶意程序，插件提供如下功能：
+
+-   自动侦测前往内容农场的连结并加以标示，让你在第一时间避开内容农场，同时免于将点击数回馈给搜寻引擎。
+-   在即将进入内容农场时予以封锁，让你能及时离开。
+-   若真的很想看一下被封锁的页面，可点击「检视」浏览去除广告与程式码的网页内容，如此既能满足好奇心又能封锁内容农场的收益。
+-   可自订黑名单、白名单、灰名单，也能订阅网路黑名单。
+-   可透过右键选单将网页、超连结、或选取文字对应的网域快速加入黑名单。
+
+![](assets/1694153285620.webp)
+
+### 2. [CSDN 浏览器助手](https://chrome.google.com/webstore/detail/csdn浏览器助手/kfkdboecolemdjodhmhmcibjocfopejo?hl=zh-CN)
+
+一款集成本地书签、历史记录与 `CSDN` 搜索的搜索工具。由 `CSDN` 官方打造，集成一键呼出搜索、万能快捷工具、个性化标签页和底层免广告四大核心功能。让您在工作学习场景中，告别繁琐复杂的切换，快速解决问题，打造专属你的效率神器！
+
+![](assets/1694356862230.webp)
+
+### 3. [稀土掘金](https://chromewebstore.google.com/detail/稀土掘金/lecdifefmmfjnjjinhaennhdlmcaeeeb)
+
+为程序员、设计师、产品经理每日发现优质内容。
+
+在新标签页展示聚合内容，包含前端、`Android`、`iOS`、后端、产品、设计六大频道，每个频道内都有一到多个内容源。此外，插件提供综合搜索及开发辅助小工具等能力为开发者的工作提效，浏览器激活状态下双击"j"键可快速唤起搜索框。用户可以根据自己的需求和喜好自定义页面布局、切换日间/深色模式。
+
+![](assets/1694356824401.webp)
+
+## 五、资料
+
+### 1. [English-level-up-tips](https://github.com/byoungd/English-level-up-tips)
+
+可能是让你受益匪浅的英语进阶指南，项目具有以下特点：
+
+-   结构化
+-   阶段化
+-   针对化
+-   实用性高
+-   操作性强
+-   低成本
+-   ……
+
+![](assets/1693527386371.webp)
+
+### 2. [汪图南的个人博客](https://github.com/wangtunan/blog)
+
+专注写作前端博客，记录日常所得。
+
+![](assets/1693959124809.webp)
+
+### 3. [JavaKeeper](https://github.com/Jstarfish/JavaKeeper)
+
+`Java` 工程师必备架构体系知识总结：涵盖分布式、微服务、`RPC` 等互联网公司常用架构，以及数据存储、缓存、搜索等必备技能。
+
+![](assets/1693959286821.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+作为程序员，掌握数据结构与算法的重要性就不言而喻了。掌握了数据结构与算法，可以说你的编程能力就会有质的飞跃。任凭各种热门技术的如何变化，只要掌握了核心技能，那都可以见招拆招，做一个“赢家”。
+
+专栏共分为 4 个由浅入深的模块：
+
+-   入门篇
+-   基础篇
+-   高级篇
+-   实战篇
+
+作者采用最适合工程师的学习方式，不拘泥于某一特定编程语言，从实际开发场景出发，由浅入深教你学习数据结构与算法的方法，帮你搞懂基本概念和核心理论，深入理解算法精髓，帮你提升使用数据结构和算法思维解决问题的能力。
+
+想要进一步提升自己的竞争力么，那就赶紧加入和我一起学习吧！
+
+![](assets/datastructure-algo.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/0916-0922.md b/src/weekly/2023/0916-0922.md
new file mode 100644
index 0000000000..02200d2fe0
--- /dev/null
+++ b/src/weekly/2023/0916-0922.md
@@ -0,0 +1,166 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#23：Win 12 来了！
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/gbYeoZNICI0TogjrBEBdQA
+:::
+
+## 一、项目
+
+### 1. [pnpm](https://github.com/pnpm/pnpm)
+
+快速的，节省磁盘空间的包管理工具，具有如下特点：
+
+- 快速：`pnpm` 比其他包管理器快 2 倍
+- 高效：`node_modules` 中的文件为复制或链接自特定的内容寻址存储库
+- 支持 `monorepos`：`pnpm` 内置支持单仓多包
+- 严格：`pnpm` 默认创建了一个非平铺的 `node_modules`，因此代码无法访问任意包
+
+![](assets/1693989839748.webp)
+
+### 2. [雷池](https://github.com/chaitin/SafeLine)
+
+一款足够简单、足够好用、足够强的免费 `WAF`。基于业界领先的语义引擎检测技术，作为反向代理接入，保护你的网站不受黑客攻击。
+
+核心检测能力由智能语义分析算法驱动，专为社区而生，不让黑客越雷池半步。
+
+![](assets/1694007548056.webp)
+
+### 3. [win12](https://github.com/tjy-gitnub/win12)
+
+开发者看到 `Windows 12` 概念版后深受启发，决定做一个 `Windows12` 网页版。最重要的是，几个开发者还是初中生！
+
+![](assets/1694152475926.webp)
+
+## 二、软件
+
+### 1. [弹窗广告拦截器](http://adkiller.360drm.com/index.html)
+
+弹窗广告拦截器是一款完全免费的弹窗广告拦截软件,智能屏蔽各种弹窗广告！
+
+![](assets/1694129504604.webp)
+
+### 2. [Cmder](https://cmder.app/)
+
+`Windows` 平台下美观又强劲的一款利器，为 `CMD` / `PowerShell` 提供绝佳用户体验。
+
+![](assets/1694129558790.webp)
+
+### 3. [XShell](https://www.xshell.com/zh/xshell/)
+
+非常优秀的终端软件，连接服务器必备，自称业界最强大的 `SHH` 客户机。
+
+![](assets/1694129639443.webp)
+
+## 三、网站
+
+### 1. [视觉效果集合](http://hepengwei.cn/#/html/visualDesign)
+
+一个专注于前端视觉效果的集合应用，里面包含各种丰富的 `css` 动效、`canvas` 动画等上百个案例，而且是开源免费的。
+
+![](assets/1691368138312-20230825231206012.webp)
+
+### 2. [FileHorse](https://www.filehorse.com/)
+
+提供了大量软件的下载和介绍，包括 `Windows` 和 `macOS` 平台。
+
+![](assets/1693806555043.webp)
+
+### 3. [Product Hunt](https://www.producthunt.com/)
+
+推荐每天新兴的移动应用程序、网站和技术产品等。
+
+![](assets/1693872900975.webp)
+
+## 四、插件
+
+### 1. [Momentum](https://chromewebstore.google.com/detail/laookkfknpbbblfpciffpaejjkokdgca)
+
+将新标签页替换为个人仪表板，以帮助您集中注意力、保持井井有条并保持动力来实现您的目标。
+
+页面包含待办事项列表、天气、每日照片和鼓舞人心的名言。
+
+![](assets/1694563407366.webp)
+
+### 2. [Adblock Plus](https://chromewebstore.google.com/detail/adblock-plus-免费的广告拦截器/cfhdojbkjhnklbpkdaibdccddilifddb)
+
+阻止 `YouTube™` 广告、弹出窗口并抵御恶意软件！
+
+享受没有恼人广告的网络世界，插件会屏蔽以下内容
+
+-   横幅 
+-   `YouTube` 视频广告
+-   `Facebook` 广告
+-   弹出窗口
+-   所有其他显眼的广告
+
+![](assets/1694563749220.webp)
+
+### 3. [LastPass](https://chromewebstore.google.com/detail/lastpass-free-password-ma/hdokiejnpimakedhajhdlcegeplioahd)
+
+全球知名在线密码管理工具之一，采用军事级加密算法，支持自动填充网站用户名和密码，与朋友分享登录信息等实用功能，且在全平台同步免费，无需订阅即可在手机、网页、电脑多端同步信息。
+
+![](assets/1694563887081.webp)
+
+## 五、资料
+
+### 1. [查尔斯的知识库](https://github.com/Charles7c/charles7c.github.io)
+
+基于 `VitePress` 构建的个人知识库/博客。查尔斯的个人技术知识库，记录 & 分享个人碎片化、结构化、体系化的技术知识内容。
+
+![](assets/1694388392866.webp)
+
+### 2. [Linux Command](https://github.com/jaywcjlove/linux-command)
+
+`Linux` 命令大全搜索工具，内容包含 `Linux` 命令手册、详解、学习。目前仓库搜集了 580 多个 `Linux` 命令，是一个非盈利性的仓库。
+
+![](assets/1694476451647.webp)
+
+### 3. [CPPInterview](https://github.com/SYaoJun/CPPInterview)
+
+C/C++ 高频面试题合集，包含面试篇、笔试篇、书单、课程、刷题网站、面试问题六大模块。既有面试时需要掌握的基础知识和行业知识，也有笔试时遇到的高频算法类型和笔试技巧。
+
+![](assets/1694476494321.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
diff --git a/src/weekly/2023/0923-0929.md b/src/weekly/2023/0923-0929.md
new file mode 100644
index 0000000000..f0404d92f7
--- /dev/null
+++ b/src/weekly/2023/0923-0929.md
@@ -0,0 +1,164 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#24：动手学深度学习
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/pYE7ZWfc9YpFG9YLyTwe5Q
+:::
+
+## 一、项目
+
+### 1. [x-easypdf](https://gitee.com/dromara/x-easypdf)
+
+一个基于 `pdfbox/fop` 二次封装的框架，目前拥有两大模块：`pdfbox` 模块与 `fop`模块。
+
+-   **pdfbox 模块**：主打 `pdf` 编辑功能，以组件化的形式进行 `pdf` 的构建。
+-   **fop 模块**：主打 `pdf` 导出功能，采用数据源的方式对 `xsl-fo` 模板进行转换，同时提供 `Java` 对象的方式构建 `dom` 模板文档，即使完全不懂 `xsl-fo` 的语法，也能轻松上手写出对应的模板。两个模块均可单独使用，也可以结合使用，帮助开发者快速生成 `pdf` 文档。
+
+![](assets/1694154328205.webp)
+
+### 2. [primihub](https://github.com/primihub/primihub)
+
+由密码学专家团队打造的开源隐私计算平台，支持多方安全计算、联邦学习、隐私求交、匿踪查询等。项目具有以下特点：
+
+-   开源：完全开源、免费
+-   安装简单：支持 `Docker` 一键部署
+-   开箱即用：拥有 `Web` 界面、命令行 和 `Python SDK` 多种使用方式
+-   功能丰富：支持隐匿查询、隐私求交、联合统计、数据资源管理等功能
+-   灵活配置：支持自定义扩展语法、语义、安全协议等
+-   自主研发：基于安全多方计算、联邦学习、同态加密、可信计算等隐私计算技术
+
+![](assets/1694388444840.webp)
+
+### 3. [NotionNext](https://github.com/tangly1024/NotionNext)
+
+使用 `NextJS` + `Notion API` 实现的，支持多种部署方案的静态博客，无需服务器、零门槛搭建网站，为`Notion` 和所有创作者设计。
+
+![](assets/1694388489782.webp)
+
+## 二、软件
+
+### 1. [33 台词](https://33-app.agilestudio.cn/)
+
+通过台词找影片素材，视频创作者、自媒体、英语/日语学习者的必备利器。
+
+![](assets/1694130232043.webp)
+
+### 2. [WGestures](https://www.yingdev.com/projects/wgestures2)
+
+优秀实用的全局鼠标手势应用，支持重新定义手势、自定义菜单、脚本支持、黑/白名单等多项功能。
+
+![](assets/1694130586104.webp)
+
+### 3. [One Note](https://www.onenote.com/)
+
+是 `Microsoft` 推出的一款数字笔记本软件，Office 365 包的一部分。最常用于笔记本电脑或台式电脑，但这套软件更适合用于支持手写笔操作的平板电脑，在这类设备上可使用触笔、声音或视频创建笔记。
+
+![](assets/1694130876606.webp)
+
+## 三、网站
+
+### 1. [小众软件](https://www.appinn.com/)
+
+一个分享、体验、评测电脑软件、手机应用、互联网产品的网站。
+
+![](assets/1693873231875.webp)
+
+### 2. [什么值得买](https://www.smzdm.com/)
+
+什么值得买是千万用户热爱的科学消费指南，以“独立思考、高效决策、利他共享、真知灼见”为核心价值，主张“科学消费，认真生活”。
+
+![](assets/1693873527795.webp)
+
+### 3. [异次元软件](https://www.iplaysoft.com/)
+
+极具人气和特色的软件网站！专注于推荐优秀软件、`APP` 应用和互联网资源，每篇图文评测都极其用心，并提供大量软件资源下载。
+
+![](assets/1693873680114.webp)
+
+## 四、插件
+
+### 1. [购物党自动比价工具](https://chromewebstore.google.com/detail/购物党自动比价工具/jgphnjokjhjlcnnajmfjlacjnjkhleah)
+
+浏览商品页面时，自动查询 180 天历史价格、比较同款商品的全网最低价、提示促销和隐藏优惠券、一旦降价还能通过微信提醒你，海淘、二手房和 `Steam` 游戏也能比价！插件具有以下特性：
+
+-   180 天历史价格跟踪，识别虚假促销（历史促销信息也能跟踪）
+-   自动货比三家，帮你找到全网最低价，防止买贵
+-   自动提示促销活动和隐藏优惠券，能省则省
+-   支持全网收藏，一旦降价可以通过微信提醒
+-   支持比价的网站包括淘宝、京东、天猫、苏宁、当当、亚马逊（含美亚日亚德亚英亚）、`Steam` 游戏、链家贝壳我爱我家二手房等数百家，网上能买的东西都能比！
+
+![](assets/1694564249865.webp)
+
+### 2. [为什么你们就是不能加个空格呢？](https://chromewebstore.google.com/detail/为什么你们就是不能加个空格呢？/paphcfdffjnbcgkokihcdjliihicmbpd)
+
+自动在网页中所有的中文字和半形的英文、数字、符号之间插入空白。
+
+![](assets/1694564655510.webp)
+
+### 3. [无名图书](https://chromewebstore.google.com/detail/无名图书/phdenkfgmlepeekcelnaijpophlbcnoa)
+
+图书搜索并下载，便捷的图书搜索平台，大部分图书基本都能搜到并且可以免费下载图书。
+
+![](assets/1695281733436.webp)
+
+## 五、资料
+
+### 1. [toBeBetterJavaer](https://github.com/itwanger/toBeBetterJavaer)
+
+一份通俗易懂、风趣幽默的 `Java` 学习指南，内容涵盖 `Java` 基础、`Java` 并发编程、`Java` 虚拟机、`Java` 企业级开发、`Java` 面试等核心知识点。
+
+![](assets/1694476546323.webp)
+
+### 2. [动手学深度学习](https://github.com/d2l-ai/d2l-zh)
+
+面向中文读者、能运行、可讨论。中英文版被 70 多个国家的 500 多所大学用于教学。
+
+![](assets/image.png)
+
+### 3. [DotNetGuide](https://github.com/YSGStudyHards/DotNetGuide)
+
+记录、收集和总结 `C#/.NET/.NET Core` 基础知识、学习路线、开发实战、学习视频、文章、书籍、项目框架、社区组织、开发必备工具、常见面试题、面试须知、简历模板、以及自己在学习和工作中的一些微薄见解。
+
+![](assets/1694518048137.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
diff --git a/src/weekly/2023/0930-1006.md b/src/weekly/2023/0930-1006.md
new file mode 100644
index 0000000000..2298c97182
--- /dev/null
+++ b/src/weekly/2023/0930-1006.md
@@ -0,0 +1,193 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#25：PPT 超级市场
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/vdKsUXuj5vdEDKso9OJ4eQ
+:::
+
+## 一、项目
+
+### 1. [study](https://github.com/bage2014/study)
+
+`Java` 全栈工程师学习笔记；`Spring`、`shiro`、`CAS`、`oauth2` 单点登录；`cache `、`Redis`; `web` 安全及解决思路；`mq`、`quartz`、`Docker`；`Docker` 各种组件实践等；`MyBatis`、`Spring`、`Spring Boot` 实践；分布式锁；基于分库分表等等。
+
+![](assets/1694391373421.webp)
+
+### 2. [MaaAssistantArknights](https://github.com/MaaAssistantArknights/MaaAssistantArknights)
+
+一款明日方舟游戏小助手，基于图像识别技术，一键完成全部日常任务！
+
+![](assets/1694476585427.webp)
+
+### 3. [Next Terminal](https://github.com/dushixiang/next-terminal)
+
+一个简单好用安全的开源交互审计系统，支持 `RDP`、`SSH`、`VNC`、`Telnet`、`Kubernetes` 协议。目前支持的功能有：
+
+-   授权凭证管理
+-   资产管理（支持 `RDP`、`SSH`、`VNC`、`TELNET` 协议）
+-   指令管理
+-   批量执行命令
+-   在线会话管理（监控、强制断开）
+-   离线会话管理（查看录屏）
+-   双因素认证
+-   资产标签
+-   资产授权
+-   多用户&用户分组
+-   计划任务
+-   `ssh server`
+-   登录策略
+-   系统监控
+
+![](assets/1694476618572.webp)
+
+## 二、软件
+
+### 1. [Flow Launcher](https://www.flowlauncher.com/)
+
+快搜搜索文件和启动 `app`，取代 `Windows` 自带搜索的必备神器，类似于 `macOS` 中的 `Alfred`。
+
+![](assets/1694388736952.webp)
+
+### 2. [Geek Uninstaller](https://geekuninstaller.com/)
+
+是一款 100% 免费且高效、快速、小而便携电脑清理卸载软件，易于使用的用户界面，执行深度和快速扫描并删除所有残留信息。保持你的电脑干净！支持卸载 `Windows` 8/8.1/10 上的 `Windows` 应用商店应用。
+
+![](assets/1694389024194.webp)
+
+### 3. [OpenHashTab](https://github.com/namazso/OpenHashTab)
+
+资源管理器右键文件->属性，即可查看文件 `MD5`、`SHA1` 等各类 `Hash` 信息。
+
+![](assets/1694389152477.webp)
+
+## 三、网站
+
+### 1. [第 1 PPT](https://www.1ppt.com/)
+
+这里有海量 `PPT` 素材，幻灯片背景图片，`PPT` 模板免费下载，专注 `PowerPoint` 素材下载！
+
+而且支持在线预览，不用登录即可免费下载。
+
+![](assets/1693958767707.webp)
+
+### 2. [PPT 超级市场](https://www.pptsupermarket.com/)
+
+免费下载 `PPT` 模板与 `PPT` 作品，提供免费的 `PPT` 代做服务，提供一站式 `PPT`(模板、定制、工具、教程)服务，有了它，一切制作 `PPT` 的烦恼都将成为过去！
+
+![](assets/1693958801945.webp)
+
+### 3. [爱给网](https://www.aigei.com/)
+
+中国最大的数字娱乐免费素材下载网站,免费提供免费的音效配乐、3D模型、视频、游戏素材资源下载。
+
+![](assets/1693958840698.webp)
+
+## 四、插件
+
+### 1. [Microsoft 365](https://chromewebstore.google.com/detail/microsoft-365/ndjpnladcallmjemlbaebfadecfhkepb)
+
+在浏览器中查看、编辑和创建文档。
+
+专用于 `Chrome` – 无需安装 `Microsoft` 365 应用即可使用 `Word`、`Excel`、`PowerPoint`、`OneNote` 和 `Sway Online`。
+
+熟练地创建文件 – 使用熟悉的格式和布局选项来完全忠实地表达你的想法。
+
+随时随地开展工作 – 与 `OneDrive` 和 `OneDrive for Business` 集成，可从任意位置获取文件。
+
+![](assets/1695607160427.webp)
+
+### 2. [关灯看视频](https://www.turnoffthelights.com/zh-cn/)
+
+一个免费的开源浏览器扩展，允许用户将除 `HTML5` 视频以外的所有部分变暗。适用于所有网络浏览器，例如 `Google Chrome`、`Microsoft Edge` 等。
+
+![](assets/1695607160706.webp)
+
+### 3. [Awesome Screenshot](https://www.awesomescreenshot.com/)
+
+超级截图录屏大师是一款录屏神器，也是一款截屏神器．屏幕截图 & 图片编辑，屏幕录像 ＆ 视频编辑，所有这些截图，录屏功能，都被一气呵成的集成到插件和对应的网站服务中。支持如下功能：
+
+-   **屏幕录像**
+
+1.   对网页内容进行屏幕录像 
+2.   对全桌面进行录屏
+3.   对某一个软件进行录屏
+4.   录摄像头
+5.   支持高清录制
+6.   支持下载为 `MP4` 格式
+7.   视频编辑功能
+8.   既可以保存到云端，也可以保存到本地
+
+-   **屏幕截图和抓屏**
+
+1.   截取网页全屏，不论网页多长，都可以将这个网页变成一张图片，方便编辑和分享
+2.   选择部分屏幕截取
+3.   对屏幕可视部分进行截图
+4.   不但帮助保存截图，还可以保存该截图对应的 `URL`
+
+-   **图片批注和编辑**
+
+1.   选择你所需要的尺寸
+2.   方框，圆圈，箭头等各种尺寸的批注
+
+![](assets/1695607160427.webp)
+## 五、资料
+
+### 1. [C# 文档](https://learn.microsoft.com/zh-cn/dotnet/csharp/)
+
+面向新手开发人员、刚开始接触 `C#` 的开发人员、以及经验丰富的 `C#/.NET` 开发人员。
+
+![](assets/1694518162388.webp)
+
+### 2. [.NET 文档](https://learn.microsoft.com/zh-cn/dotnet/)
+
+了解如何使用 `.NET` 在任何使用 `C#`、`F#` 和 `Visual Basic` 的平台上创建应用程序。 浏览 `API` 引用、代码示例、教程以及其他内容。
+
+![](assets/1694518376166.webp)
+
+### 3. [独立开发变现周刊](https://github.com/ljinkai/weekly)
+
+分享独立开发变现人物志、产品周刊、工具集，每周五发布。
+
+![](assets/1694518686460.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
diff --git a/src/weekly/2023/1007-1013.md b/src/weekly/2023/1007-1013.md
new file mode 100644
index 0000000000..b81a84d851
--- /dev/null
+++ b/src/weekly/2023/1007-1013.md
@@ -0,0 +1,156 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#26：程序员英语词汇宝典
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/UJ9eT3J2YNAUnY7uT9d_4Q
+:::
+
+## 一、项目
+
+### 1. [ChatGPT for Bot](https://github.com/lss233/chatgpt-mirai-qq-bot)
+
+一键部署！真正的 `AI` 聊天机器人！支持 `ChatGPT`、文心一言、讯飞星火、`Bing`、`Bard`、`ChatGLM`、`POE`，多账号，人设调教，虚拟女仆、图片渲染、语音发送 | 支持 `QQ`、`Telegram`、`Discord`、微信等平台。
+
+![](assets/1694476667904.webp)
+
+### 2. [JavaWeb-Project-Source-Share](https://github.com/coderzcr/JavaWeb-Project-Source-Share)
+
+分享基于 `Servlet`、`SSH`、`SSM`、`SpringBoot`、`SpringCloud` 等流行技术实现的 `JavaWeb` 项目，难度分为 5 个等级，帮助小白入门 `JavaWeb` 开发，协助 `JavaWeb` 开发者熟悉最新技术。
+
+![](assets/1694476703078.webp)
+
+### 3. [南生论坛](https://github.com/maliangnansheng/bbs-springboot)
+
+仿掘金之南生论坛基于 `SpringBoot` + `Vue` 框架实现前后端分离（大厂微服务架构设计；代码简洁、高效无冗余；注释详细易阅读），自适应手机端和电脑端，界面简洁美观，功能完善，性能高效。
+
+![](assets/1694476726541.webp)
+
+## 二、软件
+
+### 1. [GlassWire](https://www.glasswire.com/)
+
+用户体验优秀的全能网络流量监控工具，同时具备防火墙功能。
+
+![](assets/1694390519558.webp)
+
+### 2. [Beyond Compare](https://www.scootersoftware.com/)
+
+一款专业的文本文件对比工具，可以高效的针对文件、文件夹、表格、`mp3`、图片、数据、注册表等文件并进行比较、合并、同步分析，并把相差的每一个字节用颜色加以表示，查看方便。
+
+![](assets/1694390548096.webp)
+
+### 3. [BestTrace](https://www.ipip.net/product/client.html)
+
+集 `ping`、`traceroute`、`IP` 归属地、地图于一体的网络测试工具。
+
+![](assets/1694390769310.webp)
+
+## 三、网站
+
+### 1. [PPTer 吧](https://www.ppter8.com/)
+
+提供免费 `PPT` 模板、`PPT` 课件及国外 `PPT` 模版，相关 `PPT` 素材全部免费（`PNG` 免抠图、`PPT` 背景图片、`PPT` 专用的背景音乐、3D 模型、图标）。这里的 `PPT` 模板免费下载，致力成为受 `PPTer` 喜爱的 `PPT` 模板网站。
+
+![](assets/1693958880565.webp)
+
+### 2. [PPT 汇](https://www.ppthui.com/)
+
+`PPT` 模板网提供高品质 `PPT` 模板、`PPT` 背景、`PPT` 素材、`PPT` 课件等精美 `PPT` 模板免费下载资源。无需注册，完全免费，直接 `PPT` 模板免费下载。带来快速、高效、便捷的下载体验。
+
+![](assets/1693958907803.webp)
+
+### 3. [优品 PPT](https://www.ypppt.com/)
+
+一家专注于分享高质量的免费 `PPT` 模板下载网站，包括图表、背景图片、素材、教程等各类 `PPT` 模板相关资源。致力于打造国内最大最权威的 `PPT` 下载一站式服务平台。
+
+![169395897792](assets/1693958977192.webp)
+
+## 四、插件
+
+### 1. [Mote：语音笔记和反馈](https://chromewebstore.google.com/detail/mote：语音笔记和反馈/ajphlblkfpppdpkgokiejbjfohfohhmk)
+
+快速、友好的语音消息。使用 `Mote` 可以轻松地将语音评论和音频内容添加到共享文档、作业、电子邮件和表单中。已集成到 `Google Docs`、`Slides`、`Sheets`、`Forms`、`Classroom` 和 `Gmail` 中，更加便于录制和播放。
+
+![](assets/1697068442166.webp)
+
+### 2. [eJOY AI Dictionary](https://chromewebstore.google.com/detail/ejoy-ai-dictionary/amfojhdiedpdnlijjbhjnhokbnohfdfb)
+
+翻译 `Netflix`, `Youtube`, `iFlix` 上的字幕，查字典，藉由游戏学习英语字典。
+
+单击即可在看电影、短片、阅读新闻、浏览社交媒体或任何地方时获得译文。将新单词储存到字典，并且玩英文游戏牢记单词。
+
+`eJOY` 还能帮您定义单字、英语成语、常用片语、最新俚语和搭配用词。
+
+如果您正在加紧准备英文考试，`eJOY` 会帮您掌握字彙表。 `eJOY` 提供广泛主题字彙，包括托益、托福、雅思、`SAT`（学术能力检测）。当您加入新单词到字典后，您可以使用 `eJOY` 游戏永远记住您的字典，这都归功于最新的间隔重复演算法。
+
+![](assets/1697068601381.webp)
+
+### 3. [Liner ChatGPT](https://chromewebstore.google.com/detail/liner-chatgpt%EF%BC%9Awebyoutube%E7%9A%84/bmhcbmnbenmcecpmpepghooflbehcack)
+
+直接在页面上使用 `ChatGPT`，甚至在 `YouTube` 上！添加 `AI Copilot`，与您的个人 `AI` 助手/`AI` 伴侣一起完成更多工作。
+
+无论内容的长度或难度如何，`LINER AI Copilot` 都将帮助您在短时间内消化网络上的大量信息。
+
+![](assets/1697068683590.webp)
+
+## 五、资料
+
+### 1. [现代 JavaScript 教程](https://github.com/javascript-tutorial/zh.javascript.info/)
+
+依托于 `learn.javascript.ru` 而来，它是俄罗斯最大的 `JavaScript` 教程和学习平台之一，质量有保障，而且是在线学习，教程都是实时更新且免费的，不像书籍可能存在看的技术过时的问题。现代 `JavaScript` 教程是 `React` 官方文档中与 `MDN` 共同推荐的 `JavaScript` 学习教程，质量有保障。
+
+![](assets/1694648658881.webp)
+
+### 2. [程序员英语词汇宝典](https://github.com/Wei-Xia/most-frequent-technology-english-words)
+
+本列表中的单词是英语类计算机书籍、文档、文章中高频常见的技术词汇，也是程序员工作中常见的英语词汇，最终目的是希望程序员集合自身的英语基础，在掌握列表中的词汇后，可以无障碍阅读英语技术文章和文档。
+
+![](assets/1695021839312.webp)
+
+### 3. [30 天自制 C++ 服务器](https://github.com/yuesong-feng/30dayMakeCppServer)
+
+30 天自制 `C++` 服务器，包含教程和源代码。教程模仿《30 天自制操作系统》，面向零经验的新手，教你在 30 天内入门 `Linux` 服务器开发。教程更偏向实践，将会把重点放在如何写代码上，而不会花太多的篇幅讲解背后的计算机基础原理，涉及到的地方会给出相应书籍的具体章节。
+
+![](assets/1695081640931.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
diff --git a/src/weekly/2023/1014-1020.md b/src/weekly/2023/1014-1020.md
new file mode 100644
index 0000000000..ce6418413e
--- /dev/null
+++ b/src/weekly/2023/1014-1020.md
@@ -0,0 +1,179 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#27：音乐助手
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/c3pYaWXQQptNAYnuZFoGEQ
+:::
+
+## 一、项目
+
+### 1. [lamp 快速开发平台](https://github.com/dromara/lamp-cloud)
+
+`lamp-cloud` 基于 `Jdk11` + `SpringCloud` + `SpringBoot` 开发的微服务中后台快速开发平台，专注于多租户(`SaaS` 架构)解决方案，亦可作为普通项目（非 `SaaS` 架构）的基础开发框架使用，目前已实现插拔式数据库隔离、`SCHEMA` 隔离、字段隔离 等租户隔离方案。
+
+![](assets/1694476767200.webp)
+
+### 2. [AgileBoot](https://github.com/valarchie/AgileBoot-Back-End)
+
+规范易于二开的全栈基础快速开发脚手架。采用 `SpringBoot` + `Vue3` + `Typescript` + `Mybatis Plus` + `Redis` + 更面向对象的业务建模 + 面向生产的项目。
+
+![](assets/1694476838686.webp)
+
+### 3. [RuoYi-Vue-Plus](https://github.com/dromara/RuoYi-Vue-Plus)
+
+基于 `RuoYi-Vue` 集成 `Lombok` + `Mybatis-Plus` + `Undertow` + `knife4j` + `Hutool` + `Feign` 重写所有原生业务 定期与 `RuoYi-Vue` 同步。
+
+![](assets/1694476808383.webp)
+
+## 二、软件
+
+### 1. [MusicFree](https://github.com/maotoumao/MusicFree)
+
+一个插件化、定制化、无广告的免费音乐播放器，目前只支持 `Android` 和 `Harmony OS`。具有以下特性：
+
+-   插件化
+-   插件支持搜索、播放、查看专辑等功能
+-   定制化、无广告
+-   隐私
+-   歌词关联
+
+![](assets/1694476868291.webp)
+
+### 2. [RedisFront](https://gitee.com/dromara/redisfront)
+
+一款基于 `Java Swing` 开发的跨平台 `Redis` 桌面客户端工具，简单易用，功能完善，支持单机模式, 集群模式, 哨兵模式以及 `SSH` 隧道连接。
+
+![](assets/1694479428453.webp)
+
+### 3. [洛雪音乐助手](https://github.com/lyswhut/lx-music-desktop)
+
+一个基于 `Electron` + `Vue` 开发的音乐软件。使用到的技术栈：
+
+- `Electron 15+`
+- `Vue 3`
+
+已支持如下平台：
+
+- `Windows` 7 及以上
+- `macOS`
+- `Linux`
+
+![](assets/1695020246006.webp)
+
+## 三、网站
+
+### 1. [Google 指数](https://trends.google.com/trends/)
+
+基于 `Google` 搜索数据的数据分享平台，可以展示不同关键词、主题、时间段或区域的搜索热度和趋势，还能查看时下流行每日/实时搜索趋势。
+
+![](assets/1694045669849.webp)
+
+### 2. [百度指数](https://index.baidu.com/v2/index.html#/)
+
+百度指数是以百度海量网民行为数据为基础的数据分享平台。在这里，你可以研究关键词搜索趋势、洞察网民兴趣和需求、监测舆情动向、定位受众特征。
+
+![](assets/1694045709392.webp)
+
+### 3. [站长指数](https://index.chinaz.com/)
+
+站长全网指数查询是以各大搜索引擎海量网民搜索行为数据为基础的数据分享平台。在这里，你可以研究关键词在各大搜索引擎的趋势、洞察网民需求变化、监测媒体舆情趋势、定位数字消费者特征；还可以从行业的角度，分析市场特点。
+
+![](assets/1694045739609.webp)
+
+## 四、插件
+
+### 1. [VideoTogether](https://chromewebstore.google.com/detail/videotogether/dpjiaamadbcfheiamdaamhgpomlkohbn)
+
+一起看视频，和你的家人朋友一起在线看视频。插件特点：
+
+-   支持任意设备
+-   支持所有在线视频网站和本地视频
+-   通过一行代码即可为自己的网站添加一起看功能
+
+![](assets/image.webp)
+
+### 2. [Shazam](https://chromewebstore.google.com/detail/shazam%EF%BC%9A%E5%9C%A8%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E7%9B%B4%E6%8E%A5%E8%AF%86%E5%88%AB%E6%AD%8C%E6%9B%B2/mmioliijnhnoblpgimnlajmefafdfilb?utm_source=ext_app_menu)
+
+在浏览器中直接识别歌曲，只需轻轻一点即可识别。用它来发现艺人、歌词与视频无需任何费用。
+
+![](assets/0462c694-e4da-447f-8084-861728fae51c.webp)
+
+### 3. [PrintFriendly](https://chromewebstore.google.com/detail/printfriendly-print-and-p/ohlencieiipommannpdfcmfdpjjmeolj)
+
+一款网页打印或生成 `PDF` 的插件，会在打印之前删除垃圾广告，导航和无用浮窗从而实现页面优化，让你拥有最佳的打印阅读体验，如果经常需要打印网页，可以通过该插件让你的打印工作变得省时省力。
+
+![](assets/3a7bc998-f11b-4db2-93df-f566eb974d24.webp)
+
+## 五、资料
+
+### 1. [算法竞赛模板库](https://github.com/EndlessCheng/codeforces-go)
+
+`Golang` 算法竞赛模板库，涵盖以下知识：
+
+-   对该算法的基本介绍（核心思想、复杂度等）
+-   参考链接或书籍章节（讲的比较好的资料）
+-   模板代码（可以包含一些注释、使用说明）
+-   模板补充内容（常见题型中的额外代码、建模技巧等）
+-   相关题目链接（模板题、经典题、思维转换题等）
+
+![](assets/1695167550597.webp)
+
+### 2. [AI_Tutorial](https://github.com/cbamls/AI_Tutorial)
+
+全面整理高质量的人工智能、机器学习、大数据等技术资料。内容主要来自开源项目官网、综合技术网站（`AIQ` 、`InfoQ`、`Stackoverflow`、`Github` 等、国内外知名互联网公司技术博客 (`FAANG`、`Alibaba`、`Meituan etc`)、知名技术公众号 (`DatafunTalk`、阿里技术等)。
+
+![](assets/1695167590367.webp)
+
+### 3. [数学要素](https://github.com/Visualize-ML/Book3_Elements-of-Mathematics)
+
+为了让大家学数学、用数学，甚至爱上数学，作者颇费心机。尽量克服了传统数学教材的各种弊端，让大家学习时有兴趣、能看懂、有思考、更自信。丛书内容具有以下特点：
+
+-   数学 + 艺术
+-   零基础
+-   知识网络
+-   理论 + 实践
+-   学习生态
+
+![](assets/1695168676584.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
diff --git a/src/weekly/2023/1021-1027.md b/src/weekly/2023/1021-1027.md
new file mode 100644
index 0000000000..26140399c5
--- /dev/null
+++ b/src/weekly/2023/1021-1027.md
@@ -0,0 +1,164 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#28：免费离线图片 OCR
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/ZbFmBZ3z1uy6Ee1wnBy6kQ
+:::
+
+## 一、项目
+
+### 1. [github-readme-activity-graph](https://github.com/ashutosh00710/github-readme-activity-graph)
+
+动态生成的活动图表，显示您过去 31 天的 `GitHub` 活动。
+
+![](assets/1694477896036.webp)
+
+### 2. [FastGithub](https://github.com/dotnetcore/FastGithub)
+
+访问 `Github` 的加速神器，解决 `Github` 打不开、用户头像无法加载、`releases` 无法上传下载、`git-clone`、`git-pull`、`git-push` 失败等问题。
+
+![](assets/1694478496664.webp)
+
+### 3. [bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect)
+
+对 B 站 `WEB`、`APP`、`TV` 等客户端中，散落在世界各地的野生 `API` 进行收集整理，研究使用方法并对其进行说明，运用了黑箱法、控制变量法、代码逆向分析、拆包及反编译法、网络抓包法等研究办法。
+
+![](assets/1694488059398.webp)
+
+## 二、软件
+
+### 1. [TAICHI-flet](https://github.com/cuifengcn/TAICHI-flet)
+
+基于 `flet` 的一款 `Windows` 桌面应用，实现了浏览图片、音乐、小说、漫画、各种资源的功能。
+
+![](assets/1695082724336.webp)
+
+### 2. [TikTokDownloader](https://github.com/JoeanAmier/TikTokDownloader)
+
+完全开源，基于 `Requests` 模块实现；批量下载抖音账号发布、喜欢、收藏的作品；单独下载抖音链接或 TikTok 链接对应的作品；获取抖音直播推流地址；下载抖音直播视频；采集抖音作品评论数据；批量下载抖音合集作品；采集抖音账号详细数据；采集抖音用户 / 作品搜索结果；采集抖音热榜数据。
+
+![](assets/1695132672885.webp)
+
+### 3. [Umi-OCR](https://github.com/hiroi-sora/Umi-OCR)
+
+`OCR` 图片转文字识别软件，完全离线。截屏/批量导入图片，支持多国语言、合并段落、竖排文字。可排除水印区域，提取干净的文本，基于 `PaddleOCR` 。
+
+![](assets/1695177438928.webp)
+
+## 三、网站
+
+### 1. [国家数据](https://data.stats.gov.cn/)
+
+数据源于国家统计局，包含了我国经济民生等多个方面的数据，包含普查数据、地区数据、部门数据、国际数据等多方面内容，并且在月度、季度、年度都有覆盖，十分全面。
+
+![](assets/1694045793670.webp)
+
+### 2. [CEIC](https://www.ceicdata.com/zh-hans)
+
+前所未有地覆盖全球超过 213 个国家和地区的经济数据（宏观经济、`GDP`、进出口、能源等）。`CEIC` 帮助您一站式获取来自上千个数据源的百万级的时间序列数据，客服团队帮助您寻找或解释您想要的数据信息。
+
+![](assets/1694045837586.webp)
+
+### 3. [联合国数据库](https://www.un.org/zh/library/page/databases)
+
+包含发展、裁军、经济和金融、国际法、国际关系、和平与安全、社会事务等多个方面的内容。
+
+![](assets/1694045873807.webp)
+
+## 四、插件
+
+### 1. [Magical](https://chromewebstore.google.com/detail/magical-ai-writer-autofil/iibninhmiggehlcdolcilmhacighjamp)
+
+免费 `AI` 写作工具、文本扩展和自动填充扩展通过 `OpenAI` 工具（`ChatGPT`，`GPT4`）自动化重复任务。
+
+使用 `AI` 和 `GPT4` 的强大力量自动化重复性任务。让 `Magical` 为您从任何站点或应用程序编写AI生成的消息、电子邮件和客户回复，所有这些都由 `GPT4` 提示驱动。保存您喜欢的消息作为模板，并使用我们的免费文本扩展器即可立即扩展它们。
+
+告别在选项卡或应用程序之间切换以访问 `AI` 和 `GPT4`，欢迎使用轻松快捷的消息（电子邮件、聊天、内部邮件等）与客户、候选人或前景联系。
+
+![](assets/1698219897662.webp)
+
+### 2. [uBlacklist](https://chromewebstore.google.com/detail/ublacklist/pncfbmialoiaghdehhbnbhkkgmjanfhe)
+
+此浏览器扩展可以帮你在谷歌搜索结果中屏蔽一些你不想看到的网站。
+
+你可以通过在搜索结果页面中直接屏蔽某个网站，也可以通过点击本扩展的图标将当前网站添加到黑名单。屏蔽规则同时支持「匹配模式」（比如 `*://*.example.com/*`）和「正则表达式」（比如 `/example\.(net|org)/`）的语法。
+
+本浏览器扩展还提供了黑名单的同步功能，可以通过 `Google Drive` 和 `Dropbox` 将黑名单列表在不同设备之间同步。除此之外，你还可以通过订阅一些公开的黑名单列表，随时获取最新的网站黑名单。
+
+![](assets/1698225838203.webp)
+
+### 3. [Proxy SwitchyOmega](https://chromewebstore.google.com/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif)
+
+轻松快捷地管理和切换多个代理设置，支持如下功能：
+
+* 自动检测未加载的元素，并可通过弹出菜单一键设置使用代理。
+* 支持需要用户名密码验证的代理服务器。
+* 更灵活的代理配置：代理情景模式、多个自动切换模式以及多个规则列表。
+* 新增多种切换条件类型，并改进原有的切换条件。
+* PAC 脚本生成和切换的性能优化。
+* 崭新的选项页面和下拉菜单，用户体验更佳。
+* 许多错误修复以及改进。测试更充分。
+
+![](assets/1698231645558.webp)
+
+## 五、资料
+
+### 1. [WTF Solidity](https://github.com/AmazingAng/WTF-Solidity)
+
+`Solidity` 极简入门教程，供小白们使用，每周更新 1-3 讲。
+
+![](assets/1695168807414.webp)
+
+### 2. [Zotero 中文文档仓库](https://github.com/zotero-chinese/wiki)
+
+`Zotero` 中文用户文档、中文开发文档、`CSL` 文档中文译文。
+
+![](assets/1695254544777.webp)
+
+### 3. [打造超人笔记](https://github.com/xdite/note-hack)
+
+一本关于如何有效记录和整理笔记的书籍。作者认为，笔记是一个看起来复杂但实际上比学习和阅读更简单的问题。通过拆解笔记的流程，作者发现主要问题的结构变得非常简单。此外，随着科技的发展，许多快速记录工具和笔记整理软件已经被发明出来，使笔记搜索变得更加容易。在本书中，作者探讨了如何通过做笔记和整理笔记来挖掘和整理自己对一个领域的各种答案。通过阅读本书，读者可以学习到如何使用各种工具和方法来提高自己的笔记能力，成为一个笔记超人。
+
+![](assets/1695278993808.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
diff --git a/src/weekly/2023/1028-1103.md b/src/weekly/2023/1028-1103.md
new file mode 100644
index 0000000000..d72517c590
--- /dev/null
+++ b/src/weekly/2023/1028-1103.md
@@ -0,0 +1,189 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#29：项目管理软件
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/EPSGzmGdT7j55A8Vuf9nGw
+:::
+
+## 一、项目
+
+### 1. [HelloGithub](https://github.com/521xueweihan/HelloGitHub)
+
+分享 `GitHub` 上有趣、入门级的开源项目。每月 28 号以月刊的形式更新发布，内容包括：有趣、入门级的开源项目、开源书籍、实战项目、企业级项目等，让你用很短时间感受到开源的魅力，爱上开源！
+
+![](assets/1694488288681.webp)
+
+### 2. [knife4j](https://gitee.com/xiaoym/knife4j)
+
+为 `Java` `MVC` 框架集成 `Swagger` 生成 `Api` 文档的增强解决方案，前身是 `swagger-bootstrap-ui`，取名 `knife4j` 是希望她能像一把匕首一样小巧，轻量，并且功能强悍！主要提供如下功能：
+
+-   前后端 `Java` 代码以及前端 `UI` 模块进行分离,在微服务架构下使用更加灵活
+-   提供专注于 `Swagger` 的增强解决方案,不同于只是改善增强前端 `UI` 部分
+-   提供更多灵活的中间件方案\工具
+
+![](assets/1694517818971.webp)
+
+### 3. [ChatGPT 中文调教指南](https://github.com/PlexPt/awesome-chatgpt-prompts-zh)
+
+`ChatGPT` 中文调教指南。各种场景使用指南，学习怎么让它听你的话。支持如下功能：
+
+![](assets/1694518963641.webp)
+
+## 二、软件
+
+### 1. [PingCode](https://pingcode.com/)
+
+简单易用的新一代研发管理工具，覆盖敏捷开发、测试管理、项目集和知识库，让研发管理自动化、数据化、智能化，帮助企业提升研发效能。
+
+![](assets/1695275359711.webp)
+
+### 2. [Trello](https://trello.com/)
+
+终极的项目管理工具，在几秒钟内启动看板，自动执行繁琐的任务，并在任何地方（甚至在移动设备上）进行协作。
+
+![](assets/1695275910133.webp)
+
+
+### 3. [Worktile](https://worktile.com/)
+
+深度整合项目与任务管理、`OKR`、网盘、在线沟通等应用，支持丰富的自定义功能，满足各行业各场景的个性化工作需求，助力企业提高管理效能。
+
+![](assets/1695276074424.webp)
+
+## 三、网站
+
+### 1. [人人影视](https://yyets.com/)
+
+由爱好者成员成立的网站，免费提供最新影视剧介绍和影评，发布最新的字幕包括美剧、日剧、电影、动漫等。
+
+![](assets/1694046035369.webp)
+
+### 2. [筷子视频](https://kuaizi.cc/)
+
+筷子视频，为您提供最新电影、美剧天堂、电影排行榜、最新美剧、韩剧、日剧、泰剧、最快最全的美剧在线视频网站，为广大美剧迷推荐精彩的美剧视频，是广大美剧迷必收藏的美剧网站！
+
+![](assets/1694046003402.webp)
+
+### 3. [MVCAT](https://www.mvcat.com/)
+
+一个专门的电影推荐平台，通过收集经典电影，电影专题以及网友互动分享好看电影，为广大电影爱好者提供优质的电影推荐服务。不过要注意，这里仅仅是推荐，如果你想观看/下载相关影视资源，还请移步其他平台。
+
+![](assets/1694045950763.webp)
+
+## 四、插件
+
+### 1. [二维码生成器](https://chromewebstore.google.com/detail/二维码生成器-quick-qr/afpbjjgbdimpioenaedcjgkaigggcdpp?hl=zh-CN)
+
+既可以方便地把当前页面转化成二维码，也可以把网页上任何文本或链接，甚至是您输入的任意内容都转化成二维码。
+
+主要功能如下：
+
+- 为当前页面生成二维码
+- 为页面上任一链接生成二维码（右键点击即可）
+- 输入任何内容生成二维码
+- 无需联网、无需授权、代码不加密（安全可靠，童叟无欺）
+- 二维码分辨率可自行设置，支持高清二维码
+- 支持 `Logo`、批量生成（点击相应按钮）
+- 支持快捷键（可设置）
+- 支持右键菜单（可设置）
+- 可解析网页上的描任何二维码图片：6.3 后新增功能，请在『设置』-『`Advanced`』中开启，之后便可在二维码图片上按右键，进行『解析』（也叫『扫描』）
+- 可下载二维码图片，下载图片文件名中会包含尺寸信息
+
+![](assets/1698710853463.webp)
+
+### 2. [Simple Allow Copy](https://chromewebstore.google.com/detail/simple-allow-copy/aefehdhdciieocakfobpaaolhipkcpgc?hl=zh-CN)
+
+
+使用该插件，可以复制任意网站上的内容。
+
+![](assets/1698711069092.webp)
+
+### 3. [IE-Tab](https://chromewebstore.google.com/detail/ie-tab/hehijbfgiekmjfkfjpbkbammjbdenadd?hl=zh-CN)
+
+在 `Chrome` 中使用 `IE` 显示网页。使用 `Java`、`Silverlight`、`ActiveX`、`Sharepoint` 等。
+`IE Tab` 完全模拟 `Internet Explorer`，并使您能够使用不同版本的 `IE` (`IE7` - `IE11`) 加载您的网页。
+
+具有以下特点：
+
+* 创建将在 `IE` 选项卡中自动打开的 `URL` 列表
+
+* 对企业部署的组策略支持
+
+* 安全地使用旧的 `IE` 渲染引擎
+
+* 编辑 `Sharepoint` 文件而不是打开只读文件
+
+* 在 `Chrome` 中无缝使用 `Java`、`Silverlight` 和 `ActiveX`
+
+![](assets/1698711246187.webp)
+
+## 五、资料
+
+### 1. [强化学习教程](https://github.com/datawhalechina/easy-rl)
+
+本书结合了李宏毅老师的 “深度强化学习”、周博磊老师的 “强化学习纲要”、李科浇老师的 “世界冠军带你从零实践强化学习” 公开课的精华内容，在理论严谨的基础上深入浅出地介绍马尔可夫决策过程、蒙特卡洛方法、时序差分方法、`Sarsa`、Q 学习等传统强化学习算法，以及策略梯度、近端策略优化、深度 Q 网络、深度确定性策略梯度等常见深度强化学习算法的基本概念和方法，并以大量生动有趣的例子帮助读者理解强化学习问题的建模过程以及核心算法的细节。
+
+此外，本书还提供较为全面的习题解答以及 `Python` 代码实现，可以让读者进行端到端、从理论到轻松实践的全生态学习，充分掌握强化学习算法的原理并能进行实战。
+
+![](assets/1695708301057.webp)
+
+### 2. [PyTorch 中文手册](https://github.com/zergtant/pytorch-handbook)
+
+一本开源的书籍，目标是帮助那些希望和使用 `PyTorch` 进行深度学习开发和研究的朋友快速入门，其中包含的 `Pytorch` 教程全部通过测试保证可以成功运行。
+
+![](assets/1695708618216.webp)
+
+### 3. [pandas 中文教程](https://github.com/datawhalechina/joyful-pandas)
+
+教程共有十章，可分为三大模块：基础知识、四类操作、四类数据，涵盖了 `pandas` 的所有核心操作与特性。
+
+在第一个模块中，包含了 `python` 基础、`numpy` 基础和 `pandas` 基础三大部分。其中，`python` 基础将回顾列表推导式、匿名函数、`map` 对象以及 `zip` 对象的概念与应用；`numpy` 基础包含了常见的数组操作，如：数组构造、数组变形与合并、数组切片、数组函数以及广播机制。`pandas` 基础中涵盖了文件 `IO`、数据存储结构、滑窗对象、以及 `pandas` 中的所有基本函数。
+
+在第二个模块中，包含了索引、分组、变形、连接四类操作的介绍。其中，第三章索引涵盖了单层索引、多层索引、索引设定以及索引运算的内容；第四章分组介绍了分组对象的基本概念、聚合函数的使用、变换函数与过滤函数的用法，以及跨列分组的相关内容；第五章变形将讨论长宽表的变形、索引间的变形，以及类变形函数；第六章连接将涉及关系连接与方向连接的区别于使用方法，以及类变形函数的相关内容。
+
+在第三个模块中，包含了缺失数据、文本数据、分类数据和时序数据的介绍。其中，第七章缺失数据将涉及其四大操作 ———— 汇总、删除、填充、插值，以及 `Nullable` 类型的详细介绍；第八章文本数据中将涵盖 `str` 对象，正则基础，文本的五大操作 ———— 拆分、合并、匹配、替换、提取，以及常用字符串函数；第九章分类数据将涉及 `cat` 对象、有序类别以及区间类别；第十章时序数据将涵盖时间戳对象、时间差对象、日期偏置、时序滑窗以及时序分组的内容。
+
+![](assets/1695709746411.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/1104-1110.md b/src/weekly/2023/1104-1110.md
new file mode 100644
index 0000000000..3d29620e48
--- /dev/null
+++ b/src/weekly/2023/1104-1110.md
@@ -0,0 +1,195 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#30：我在 Github 上名校
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/8g2nIilC2CZFlGVq-US_gw
+:::
+
+## 一、项目
+
+### 1. [Fighting Design](https://github.com/FightingDesign/fighting-design)
+
+一款灵活、优质的组件库，可在 `vue3` 应用程序中快速构建交互界面。
+
+![](assets/1694653832104.webp)
+
+### 2. [青龙](https://github.com/whyour/qinglong)
+
+支持 `Python3`、`JavaScript`、`Shell`、`Typescript` 的定时任务管理平台，支持如下功能：
+
+-   支持多种脚本语言
+-   支持在线管理脚本、环境变量、配置文件
+-   支持在线查看任务日志
+-   支持秒级任务设置
+-   支持系统级通知
+-   支持暗黑模式
+-   支持手机端操作
+
+![](assets/1695081830349.webp)
+
+### 3.[LAMDA](https://github.com/rev1si0n/lamda)
+
+`LAMDA` 是一个用于逆向及自动化的辅助框架，它设计为减少安全分析以及应用测试人员的时间及琐碎问题，以编程化的接口替代大量手动操作，它并不是一个单一功能的框架。
+
+![](assets/demo.gif)
+
+## 二、软件
+
+### 1. [极速图片压缩器](https://github.com/Dreamer365/topspeed-image-compressor)
+
+压缩速度极快的图片压缩软件，具有以下特点：
+
+- 具有超快的压缩速度
+- 支持压缩 `GB` 级别的超大体积的图片
+- 支持 7 种图片格式
+- 支持深、浅色主题模式
+- 可对原始图片进行预览
+- 可通过【鼠标拖拽】【点击选择】【`ctrl + v` 粘贴】 等多种方式添加图片
+- 支持添加文件夹，可自动解析文件夹内所有符合要求的图片
+- 实时显示压缩进度
+- 完全在本地执行压缩，有无网络均可，不上传图片，充分保证隐私安全
+
+![](assets/1695279363267.webp)
+
+### 2. [SKIP](https://github.com/GuoXiCheng/SKIP)
+
+一款免费开源的安卓应用，旨在利用 `Android` 无障碍服务帮助用户快速点击 `APP` 开屏广告的跳过按钮，让你的使用体验更加流畅。
+
+![](assets/1695689051489.webp)
+
+### 3. [LunaTranslator](https://github.com/HIllya51/LunaTranslator)
+
+`Galgame` 翻译工具，支持剪贴板、`OCR`、`HOOK`，支持 40 余种翻译引擎。
+
+![](assets/1695706914976.webp)
+
+## 三、网站
+
+### 1. [FreeCodeCamp](https://www.freecodecamp.org/chinese/learn)
+
+免费学习编程 - `Python`、`JavaScript`、`Java`、`Git` 等。
+
+![](assets/1694650845929.webp)
+
+### 2. [Online-Toolz](https://online-toolz.cc/zh/)
+
+简洁、友好的开发者在线工具。具有以下功能：
+
+- `Base64` 编解码
+- `JSON` 格式化
+- 时间戳转换工具
+- `UUID` 生成器
+- 在线生成二维码
+- 图片在线裁剪
+- `URL` 编码
+- 随机密码说生成器
+- 在线 `Markdown` 编辑器
+
+![](assets/1697414223005.webp)
+
+### 3. [qrGPT](https://github.com/Nutlope/qrGPT)
+
+输入链接，输入提示关键词，就能在短短几秒能帮你生成漂亮的 `AI` 二维码。
+
+![](assets/1698024568506.webp)
+
+## 四、插件
+
+### 1. [ModHeader](https://chromewebstore.google.com/detail/modheader-modify-http-hea/idgpnmonknjnojddfkpgkljpfnnfcklj?hl=zh-CN)
+
+用来自定义 `HTTP` 请求头或重写响应头，包含覆盖 `Chrome` 浏览器请求头的默认值。
+
+![](assets/1699315176826.webp)
+
+### 2. [猫抓](https://chromewebstore.google.com/detail/猫抓/jfedfbgedapdagkghmgibemcoggfppbb?hl=zh-CN)
+
+源嗅探扩展，能够帮助你筛选列出当前页面的资源。提供嗅探、缓存捕捉、视频录制等各种工具帮助抓取资源。可以在设置内添加想要抓取的资源类型，包括图片等资源。
+
+![](assets/1699315408680.webp)
+
+### 3. [文档翻译](https://chromewebstore.google.com/detail/文档翻译-在线翻译-pdf、ppt/ekgbhhaimaahdlaiplkafkomhoblilel?hl=zh-CN)
+
+只需一键即可翻译 `PDF`、`Word`、`Excel`、`PowerPoint` 和其他文档。
+
+适用于办公和教育场景中的多种文档，如论文、合同、行业报告、产品文档、书籍、文件、演示文稿等，并提供高精度文档布局恢复能力。
+
+- 支持上传翻译文件，并保存到 `Google Drive` 或下载到本地。
+- 支持 `Word/PPT/Excel/PDF/PowerPoint` 等格式。
+- 200 多种语言之间的互译，包括英语、西班牙语、法语、德语、阿拉伯语、俄语等等。 翻译准确，操作快捷。
+- 该服务将保留所述文档的原始格式和布局。 即时结果。
+- `PDF` 翻译器，`PPT` 翻译器，`PowerPoint` 翻译器，`Word` 翻译器，`Excel` 翻译器，翻译 `PPT`，翻译 `PowerPoint`，翻译 `Word`，翻译 `Excel`，未来将支持批处理模式。
+
+
+![](assets/1699315673860.webp)
+
+## 五、资料
+
+### 1. [武汉大学课程资料整理](https://github.com/openwhu/OpenWHU)
+
+武汉大学课程资料整理，项目愿景：
+
+1. 一定程度上消除信息不对称所带来的不公平现象。
+2. 尊重并保护知识产权。
+3. 以成为同学们学习中的辅助与参考为出发点，坚决反对抄袭。
+3. 保持团队由在校生管理，定期维护。
+4. 计划存活期间永久保证：公益、免费、开源。
+
+![](assets/1697500895032.webp)
+
+### 2. [广东工业大学计算机学院课程攻略](https://github.com/brenner8023/gdut-course)
+
+广东工业大学计算机学院课程攻略 - 毕业设计、校招、课程设计、实验、经验分享、论文模板、试卷、习题解答等等。
+
+![](assets/1697414116651.webp)
+
+### 3. [北航课程作业资料共享平台](https://github.com/TheBloodthirster/BUAA_Course_Sharing)
+
+北京航空航天大学 (北航) 课程作业资料共享计划。
+
+![](assets/1697500683908.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/1111-1117.md b/src/weekly/2023/1111-1117.md
new file mode 100644
index 0000000000..2aecc9b8c9
--- /dev/null
+++ b/src/weekly/2023/1111-1117.md
@@ -0,0 +1,190 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#31：在线格式转换
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/yOy20HjK9HC396ZjPgv5sg
+:::
+
+![](https://www.yuque.com/api/filetransfer/images?url=https%3A%2F%2Fs1.ax1x.com%2F2020%2F08%2F21%2FdNPfJ0.png&sign=b68d5c2ac5f385ee0e4d33e74ba96dc307e6d87eb415b9df62f3167e4c4d67fd)
+
+## 一、项目
+
+### 1. [Soybean Admin](https://github.com/honghuangdc/soybean-admin)
+
+一个基于 `Vue3`、`Vite3`、`TypeScript`、`NaiveUI`、`Pinia` 和 `UnoCSS` 的清新优雅的中后台模版，它使用了最新流行的前端技术栈，内置丰富的主题配置，有着极高的代码规范，基于文件的路由系统以及基于 `Mock` 的动态权限路由，开箱即用的中后台前端解决方案，也可用于学习参考。
+
+![](assets/1695133235107.webp)
+
+### 2. [vue-vite](https://github.com/chao921125/vue-vite)
+
+`vue3` + `vite4` + `vue-router` + `pinia`，动态路由、权限管理、`vw` 适配，路由切换 `PC` 与移动端，学习商用均可，配置简单，各种实用的插件库及对应示例。
+
+![](assets/1695168150961.webp)
+
+### 3. [Pake](https://github.com/tw93/Pake)
+
+利用 `Rust` 轻松构建轻量级多端桌面应用，支持 `Mac`/ `Windows`/`Linux`，具有以下特性：
+
+-    相比传统的 `Electron` 套壳打包，要小将近 20 倍，5M 上下。
+-   `Pake` 的底层使用的 `Rust Tauri` 框架，性能体验较 `JS` 框架要轻快不少，内存小很多。
+-   不是单纯打包，实现了快捷键的透传、沉浸式的窗口、拖动、样式改写、去广告、产品的极简风格定制。
+-   只是一个很简单的小玩具，用 `Rust` 替代之前套壳网页打包的老思路，其实 `PWA` 也很好。
+
+![](assets/1695175329694.webp)
+
+## 二、软件
+
+### 1. [Chat2DB](https://github.com/chat2db/Chat2DB)
+
+一款开源免费的多数据库客户端工具，支持 `windows`、mac 本地安装，也支持服务器端部署，web 网页访问。 和传统的数据库客户端软件 Navicat、DBeaver 相比 Chat2DB 集成了 AIGC 的能力，能够将自然语言转换为 SQL， 也可以将 SQL 转换为自然语言，可以给出研发人员 SQL 的优化建议，极大的提升人员的效率，是 AI 时代数据库研发人员的利器， 不懂 SQL 的运营或业务也可以轻松使用快速查询业务数据、生成报表的能力。
+
+![](assets/1696648457125.webp)
+
+### 2. [学无止下载器](https://github.com/PyJun/Mooc_Downloader)
+
+学无止下载器，慕课下载器，`Mooc` 网课下载，慕课网，中国大学，网易云课堂，有道精品课，腾讯课堂，中公网校，学浪，抖音课堂，小鹅通，千聊，超星学习通，学银在线，智慧职教，智慧树，学堂在线，爱课程，B 站下载；支持视频，课件同时下载。
+
+![](assets/1696754415579.webp)
+
+### 3. [Dash](https://kapeli.com/dash)
+
+强大到你无法想象的 `API` 离线文档软件，目前仅支持 `macOS`，程序员居家必备神器。
+
+![](assets/1696814760761.webp)
+
+## 三、网站
+
+### 1. [MSDN](https://msdn.itellyou.cn/)
+
+提供了纯净的原版 `Windows` 系统惊喜，而且版本齐全，支持免费下载。除此之外，还有开发者工具、工具和资源、开发人员工具、服务器、设计人员工具等诸多资源提供下载。
+
+![](assets/1699833915226.webp)
+
+### 2. [大学资源网](https://www.dxzy163.com/)
+
+大学资源网致力于为每个希望提升自己能力的人提供学习平台，通过这个平台每个人都有平等提高自己能力的机会，主要学习资源有：大学课程、中学课程、小学课程、管理课程培训等视频教程！
+
+![](assets/1699834119840.webp)
+
+### 3. [Convertio](https://convertio.co/zh/)
+
+在线转换文件的简单工具。支持超过 309 种不同的文档、图像、电子表格、电子书、文档、演示文稿、音频和视频格式。具有以下特点：
+
+-   支持超 300 种格式
+-   快速简便
+-   云端处理
+-   自定义设置
+-   安全保障
+-   支持所有设备
+
+![](assets/1699834571341.webp)
+
+## 四、插件
+
+### 1. [全文书签](https://chromewebstore.google.com/detail/全文书签/nemjnpfmngeipdjjjecgjgeognbcmkbl?hl=zh-CN)
+
+可以全文搜索的书签和历史记录。
+
+-   🔍 更好的浏览历史搜索工具。 
+-   💾 存储并索引所有访问记录，并全文检索，再也不怕找不到看过的某个网页。 
+-   🦉 给微博加书签并且可以被搜索！ 
+-   🥇 全文检索结果展示在搜索引擎结果页面（支持 `baidu`/`bing`/`google`）。 
+-   📎 同时支持在浏览器地址栏搜索（输入关键字 `kw` 后输入你想要搜索的东西） 
+-   📜 你也可以点击地址栏右侧的拓展小图标在 `popup` 界面进行搜索以获得更多结果，并对结果进行排序。 
+-   😺 所有东西存储在本地，没有账号，没有云存储，没有隐私问题，完全免费。（当你使用 `Ask GPT` 功能时会发送数据给 `OpenAI API`） 
+-   ✉️ 支持发送书签页面或浏览历史到自定义 `API`。
+
+![](assets/1699834518561.webp)
+
+### 2. [极速翻译](https://chromewebstore.google.com/detail/极速翻译/pmjagijikomfjjoafjbdeojcinngkcpe?hl=zh-CN)
+
+一款专业的翻译扩展，支持划词翻译、全文翻译、在线翻译、截图翻译、翻译发音，修复谷歌翻译在中国大陆无法使用的问题，自动识别语言，支持上百种语言互译，帮助用户无障碍阅读外文文献。
+
+![](assets/1699834459487.webp)
+
+### 3. [新简录屏](https://chromewebstore.google.com/detail/新简录屏-新一代在线录屏演示工具/dihjfiakmdjknpoejlnocicebohlijpg?hl=zh-CN)
+
+新一代在线录屏演示工具，支持人像模式的屏幕录制，适合团队、销售、电商、在线课堂等各种类型场景！并且提供超长的使用时长，以及几乎无限的存储空间！而这些目前仅需要您现在安装插件即可享用，无需付费以及更多繁琐的订阅操作！支持如下核心功能：
+
+-   流畅使用，一键开始
+-   云端录制，内存无忧
+-   自由水印，谨防盗版
+-   多种格式，快速标注
+-   异步协作，加速理解
+
+![](assets/1699834120129.webp)
+
+## 五、资料
+
+### 1. [深入浅出 Webpack](https://github.com/gwuhaolin/dive-into-webpack)
+
+本书是国内第一本系统全面讲解 `Webpack` 的图书，涵盖了 `Webpack` 的入门、配置、实战、优化、原理。
+
+-   第 1 章教你从 0 开始学会使用 `Webpack`；
+-   第 2 章详细的讲解了 `Webpack` 提供的常用配置项；
+-   第 3 章结合实际项目中常见的场景给出最佳实践；
+-   第 4 章罗列出了各种优化 `Webpack` 的手段；
+-   第 5 章剖析了 `Webpack` 原理以及如何开发 `Plugin` 和 `Loader`。
+
+除了深入讲解 `Webpack`，本书还附带介绍了 `ES6`、`TypeScript`、`PostCSS`、`Prepack`、离线缓存、单页应用、`CDN` 等 `Web` 开发相关的技能。
+
+无论是对 `Webpack` 一无所知的初学者，还是经验丰富的工程师，相信都能通过本书进一步提高对 `Webpack` 的理解，让你在 `Web` 开发中更加熟练的运用 `Webpack`。
+
+![](assets/1695709833569.webp)
+
+### 2. [PassJava 学习教程](https://github.com/Jackson0714/PassJava-Platform)
+
+一款面试刷题的 `Spring Cloud` 开源系统。零碎时间利用小程序查看常见面试题，夯实 `Java` 基础。 该项目可以教会你如何搭建 `SpringBoot` 项目，`Spring Cloud` 项目。 采用流行的技术，如 `SpringBoot`、`MyBatis`、`Redis`、 `MySql`、 `MongoDB`、 `RabbitMQ`、`Elasticsearch`，采用 `Docker` 容器化部署。
+
+![](assets/1699833990352.webp)
+
+### 3. [Go 语言圣经](https://github.com/gopl-zh/gopl-zh.github.com)
+
+《The Go Programming Language》 中文版本，仅供学习交流之用。
+
+![](assets/1699833915230.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/1118-1124.md b/src/weekly/2023/1118-1124.md
new file mode 100644
index 0000000000..88f6563db1
--- /dev/null
+++ b/src/weekly/2023/1118-1124.md
@@ -0,0 +1,167 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#32：Go 学习指南
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/JcLZJSKOJow9Ug0ZStsv-Q
+:::
+
+## 一、项目
+
+### 1. [抖音/TikTok API](https://github.com/Evil0ctal/Douyin_TikTok_Download_API)
+
+一个开箱即用的高性能异步抖音 | `TikTok` 数据爬取工具，支持 `API` 调用，在线批量解析及下载。
+
+![](assets/weekly2023-32-1.webp)
+
+### 2. [LogicFlow](https://github.com/didi/LogicFlow)
+
+一款流程图编辑框架，提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。`LogicFlow` 支持前端研发自定义开发各种逻辑编排场景，如流程图、`ER` 图、`BPMN` 流程等。在工作审批配置、机器人逻辑编排、无代码平台流程配置都有较好的应用。
+
+![](assets/weekly2023-32-2.webp)
+
+### 3. [VPet](https://github.com/LorisYounger/VPet)
+
+一个开源的桌宠软件，可以内置到任何 `WPF` 应用程序。支持各种互动投喂，开源免费并且支持创意工坊。
+
+![](assets/weekly2023-32-3.webp)
+
+## 二、软件
+
+### 1. [Lattics](https://lattics.zineapi.com/zh-CN)
+
+「类脑式」知识管理笔记与卡片式写作。增强人类知识、提升知识创造效率。
+
+![](assets/1698018989642.webp)
+
+### 2. [葫芦笔记](https://www.hulunote.com/)
+
+葫芦笔记，多人超级大脑：微信聊天整理神器，下一代多人协作办公，兼容 `Roam Research`，支持大纲编辑、双向链接、块引用、自动生成思维导图、链接图、`Zotero` 文献管理等功能，实践卡片笔记写作法、卢曼卡片盒的利器。
+
+![](assets/1698019044967.webp)
+
+### 3. [滴墨书摘](https://www.shimonote.net/)
+
+前所未有的笔记体验。只需要拍摄即可瞬间将书本中的笔记转换为电子文字，识别准确度达 90% 以上。
+
+![](assets/1698019068536.webp)
+
+## 三、网站
+
+### 1. [oeasy 教程](http://oeasy.org/)
+
+一个完全免费的综合性视频教程网站，包括 `PS` 教程、手机摄影教程、`AI` 作图教程、`Excel` 教程、`PPT` 教程、`Word` 教程、`AE` 教程等。而且所有视频教程支持免费下载，还支持下载对应的素材和软件。
+
+![](assets/1699834659664.webp)
+
+### 2. [考试酷](https://www.examcoo.com/)
+
+永久免费的电子作业与在线考试系统云平台。专为各类学校和培训机构提供考试系统，包括自测练习、组织统一考试、开展知识竞赛、布置课外作业或假期作业、智能组卷、答卷评阅与成绩管理等众多功能；也可用于政府机构、企事业单位内部的入职考试、员工考核、内部培训考试等。
+
+![](assets/1699834704985.webp)
+
+### 3. [第一教程网](https://www.diyijc.com/)
+
+第一教程网，免费的技能、特长、综合知识学习网站，专注于提供最全最实用的教育教学教程。主要栏目有：优质课视频、视频教程、学习方法、实用范文、生活常识、百科知识、阅读分享、教程下载。
+
+![](assets/1699834725615.webp)
+
+## 四、插件
+
+### 1. [火苗日历](https://chromewebstore.google.com/detail/火苗日历/aeghnecfboaaiahloenjabomdmodhpla?hl=zh-CN)
+
+一款可以方便查看公历，农历，节假日的万年历，`MV3` 全新升级。
+
+可以方便查看公历、农历、节假日及二十四节气的一款界面清爽，功能齐备的万年历插件，你值得拥有。
+
+![](assets/1699834917816.webp)
+
+### 2. [身份验证器](https://chromewebstore.google.com/detail/身份验证器/bhghoamapcdpbohphigoooaddinpkbai?hl=zh-CN)
+
+用于在浏览器中生成两步认证代码。如果你开启了 `Github` 的 `2FA` 验证，相信它对你一定有帮助。
+
+![](assets/1699834898649.webp)
+
+### 3. [隐私獾](https://chromewebstore.google.com/detail/隐私獾/pkehgijcmpdhfbdbbnkijodmdjhbjlgp?hl=zh-CN)
+
+一个浏览器扩展程序，它可以阻止广告商和其他第三方跟踪器秘密跟踪您去哪里，以及您在网上看什么网页。 如果一个广告商似乎在未经您允许的情况下在多个网站上跟踪您，隐私獾会自动阻止该广告商在您的浏览器中加载更多内容。 对广告商来说，您就像突然消失了一样。
+
+![](assets/1699834875204.webp)
+
+## 五、资料
+
+### 1. [Go 语言中文文档](https://www.topgoer.com/)
+
+作者个人随笔，汇聚了关于 `Go` 语言的学习、框架、面试、资料、插件等内容。
+
+![](assets/1699834855036.webp)
+
+### 2. [Go 指南](https://tour.go-zh.org/list)
+
+涵盖 `Go` 语言的大部分重要特性，主要包括基础、方法和接口、并发三大方面的内容。
+
+![](assets/1699834829456.webp)
+
+### 3. [Go 语言设计与实现](https://draveness.me/golang/)
+
+书中结合近 200 幅生动的全彩图片，配上详尽的文字剖析与精选源代码段，为读者奉上了异彩纷呈、系统完善的 `Go` 语言解读。本书内容分为 9 章：
+
+-   调试源代码
+-   编译原理
+-   数据结构
+-   语言特性
+-   常用关键字
+-   并发编程
+-   内存管理
+-   元编程
+-   标准库
+
+几乎涵盖了 `Go` 语言从编译到运行的方方面面。书中的代码片段基于 Go 1.15。
+
+通过阅读本书，读者不仅能够深入理解 `Go` 语言的实现细节，而且可以深刻认识设计背后的原理，同时提升阅读源代码的技能。
+
+![](assets/1699834784205.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/1125-1201.md b/src/weekly/2023/1125-1201.md
new file mode 100644
index 0000000000..cd361e472b
--- /dev/null
+++ b/src/weekly/2023/1125-1201.md
@@ -0,0 +1,181 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#33：手写公式识别
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/fmmb_1yKUPediAcJkM3L3A
+:::
+
+## 一、项目
+
+### 1. [森林](https://github.com/rymcu/forest)
+
+一款现代化的知识社区后台项目，使用 `SpringBoot` + `Shiro` + `MyBatis` + `JWT` + `Redis` 实现。支持如下特性：
+
+- 浏览帖子
+- 回帖
+- 货币
+- 发帖
+- 登录
+- 注册
+- 内容编辑器
+
+![](assets/be25c6fb-fcd2-4bbc-802d-38dbab24054e.webp)
+
+
+### 2. [星云](https://github.com/rymcu/nebula)
+
+一款现代化的知识社区前台项目，使用 `Vue` + `NuxtJS` + `Element-UI` 实现，和森林是互为前后端的关系，两者搭配使用效果更佳。
+
+![](assets/53be3506-b9c5-4227-8b8d-aaca7eb85ae4.webp)
+
+### 3. [GB/T 7714—2015 相关的 CSL 样式](https://github.com/redleafnew/Chinese-STD-GB-T-7714-related-csl)
+
+GB/T 7714 相关的 `csl` 以及 `Zotero` 使用技巧及教程，写论文文献管理必备！
+
+![](assets/8c1cedfd-e1c4-42aa-bbf6-f634b41eac08.webp)
+
+## 二、软件
+
+### 1. [AnyTXT Searcher](https://anytxt.net/)
+
+一款功能强大的文件内容搜索应用程序，就像本地磁盘 `Google` 搜索引擎一样，并且比 `Windows` 搜索和 `Windows findstr` 命令快得多。`Anytxt` 是您最好的桌面文件内容全文搜索引擎和最好的 `Google` 桌面搜索替代品。
+
+
+![](assets/a56bcb6c-fd16-4fd4-9aab-4ae228c9de6b.webp)
+
+### 2. [Bandizip](https://cn.bandisoft.com/bandizip/)
+
+一个强大的多功能压缩文件管理工具，可提供很快的解压缩速度和其他各种实用功能。
+
+支持的主要功能如下：
+- 支持的操作系统: `Windows 7/8/8.1/10/11 (32bit/64bit/arm64)`
+- 集压缩/解压/浏览/编辑为一体的压缩包管理器
+- 可以提取包括 `RAR/ISO/7Z/ZIP` 在内的 30 多种格式
+- 可以创建拥有密码和压缩分卷的压缩包
+- 支持多个的处理器核心进行高速的解压缩操作
+- 对 `Windows` 11 上下文菜单的支持
+
+
+![](assets/e0420dc4-d4f7-450c-bbd8-2e8d2496dccb.webp)
+
+### 3. [Honeyview](https://cn.bandisoft.com/honeyview/)
+
+一款快速的图片查看器，主要功能有：
+
+- 轻量而快速
+- 可以显示包括 `GPS` 信息在内的 `JPEG` 格式的 `EXIF` 信息
+- 对图像格式进行批量转换和调整大小
+- 支持显示 `GIF` 和 `WebP` 动图
+- 无需解压即可直接查看压缩包中的图像
+
+
+![](assets/099fa940-f027-4dde-bd0b-e3bac6347e71.webp)
+
+## 三、网站
+
+### 1. [你注册过哪些网站](https://www.reg007.com/)
+
+手机换号，如何保护您的数据？只需输入手机号，就能找回您使用原手机号注册或绑定过的各种应用，进行注销或解绑操作。
+![1700439707593](assets/1700439707593.webp)
+
+### 2. [MyScript](https://webdemo.myscript.com/)
+
+你还在苦恼复杂的数学公式和化学方程式没办法用电脑打出来吗？有了这个神器，就可以轻松地以手绘的方式画出来，交给电脑自动帮你转化。
+
+![](assets/1700439870917.webp)
+
+### 3. [网络威胁](https://cybermap.kaspersky.com/cn)
+
+通过该网站，能够直观看到全球黑客的攻击活动情况，查看各个国家被攻击的数据。
+
+![](assets/1700439707947.webp)
+
+
+## 四、插件
+
+### 1. [1Block](https://chromewebstore.google.com/detail/1block-best-adblocker-for/jajikjbellknnfcomfjjinfjokihcfoi?hl=zh-CN)
+
+快速、高效、注重隐私的广告拦截器。
+
+旨在与最新的 `Manifest V3` 架构无缝协作，是您的一站式解决方案，可提供更干净、更快、更愉快的浏览体验。
+
+![](assets/1701161707973.webp)
+
+
+### 2. [网站拦截器](https://chromewebstore.google.com/detail/网站拦截器-拦截站点和焦点模式/pgoeobojimoocdnilcajmjihiabcmabn)
+
+阻止网站，专注于网站拦截器。 设置自定义阻止列表和密码保护。
+
+用网站拦截器防止分心并保持注意力! 使用自定义封锁列表和密码保护来控制你的互联网使用。
+
+![](assets/1701161653798.webp)
+
+### 3. [Adblock](https://chromewebstore.google.com/detail/adblock-免费广告拦截器/dgjbaljgolmlcmmklmmeafecikidmjpi)
+
+适用于 `Chrome`、`Firefox` 和 `Edge` 的最佳广告拦截器。在 `YouTube`、网站上屏蔽广告，享受无广告的浏览体验。
+
+与其他广告拦截器相比，`Adblock` 使用的内存更少，并能处理大多数广告拦截的规避脚本。其时尚和现代的界面使其易于使用，其跟踪保护功能通过阻止常见的第三方跟踪系统来确保你的隐私。社交媒体过滤器甚至可以帮助你从网页上删除不需要的社交媒体小部件。
+
+![](assets/1701161594214.webp)
+
+## 五、资料
+
+### 1. [BypassAntiVirus](https://github.com/TideSec/BypassAntiVirus)
+
+远控免杀系列文章及配套工具，汇总测试了互联网上的几十种免杀工具、113 种白名单免杀方式、8 种代码编译免杀、若干免杀实战技术，并对免杀效果进行了一一测试，为远控的免杀和杀软对抗免杀提供参考。
+
+![](assets/1700093161251.webp)
+
+### 2. [Nerf 学习笔记](https://github.com/yangkang2021/nerf-learn)
+
+记录了作者对于 `Nerf（神经辐射场）` 各种算法、应用、软件等的学习过程。
+
+![](assets/1700180409419.webp)
+
+### 3. [Web](https://github.com/Daotin/Web)
+
+从零开始学 `Web` 前端系列图文教程，从零开始一步步带你进入前端的世界。
+
+![](assets/1700525288808.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+想必作为一名程序猿，多多少少会接触到语雀，在这里有许多优秀的内容，如果你还没有注册，那赶紧去注册一个吧。
+而且现在官方送福利了，只要你是新注册的用户，注册后在会员信息页填写邀请码 **`VUFNKN`** 即可领取 30 天语雀会员。
+> 🚩 [注册地址](https://www.yuque.com/about)
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/1202-1208.md b/src/weekly/2023/1202-1208.md
new file mode 100644
index 0000000000..5466d8bb93
--- /dev/null
+++ b/src/weekly/2023/1202-1208.md
@@ -0,0 +1,208 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#34：超级复制神器
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/2vrjZvW4gT_EqMpzEx6kNg
+:::
+
+## 一、项目
+
+### 1. [Solon](https://github.com/noear/solon)
+
+`Java` 新的生态型应用开发框架，更小、更快、更简单！
+
+从零开始构建。有自己的标准规范与开放生态。组合不同的生态插件应对不同需求，方便定制，快速开发：
+
+- 克制、简洁、高效、开放、生态
+- 支持 `JDK8`、`JDK11`、`JDK17`、`JDK21`
+- `Http`、`WebSocket`、`Socket` 三种信号统一的开发体验（俗称：三源合一）
+- 支持 “注解” 与 “手动” 两种模式，按需自由操控
+- `Not Servlet`，可以适配任何基础通讯框架（最小 0.3m 运行 `rpc` 架构）
+- 独特的 `IOC/AOP` 容器设计。不会因为插件变多而启动变很慢
+- 支持 `Web`、`Data`、`Job`、`Remoting`、`Cloud` 等任何开发场景
+- 兼顾 `Handler` + `Context` 和 `Listener` + `Message` 两种架构模式
+- 强调插件式扩展，可扩展可切换；适应不同的应用场景
+- 支持 `GraalVm Native Image` 打包
+允许业务插件 “热插”、“热拔”、“热管理”
+
+![](assets/6d86af63-0185-433f-8a04-12bb70b1bc84.webp)
+
+### 2. [敏感词检测](https://github.com/bosnzt/wordscheck)
+
+敏感词检测，违禁词过滤，敏感词过滤，敏感词库，一键启动，本地运行，私有化部署，1 分钟接入完成，支持 `docker`，支持在线 `api`。
+
+![](assets/92fa3ef3-fe08-4613-877d-90880a8709c8.webp)
+
+### 3. [wechatDownload](https://github.com/xiaoguyu/wechatDownload)
+
+微信公号文章下载工具，使用 `Electron` + `Typescript` 技术栈搭建。支持如下功能：
+
+- 单篇文章下载
+- 批量下载
+- 监控下载
+- 保存到 `MySQL`
+- 线程配置
+
+![](assets/7fbebd15-a814-47b9-b2e9-9ef78589e7b7.webp)
+
+## 二、软件
+
+### 1. [CopyTranslator](https://github.com/CopyTranslator/CopyTranslator)
+
+复制即翻译的外文辅助阅读翻译解决方案，具有如下特点：
+
+- **复制翻译**：只需复制文本到剪贴板，下一秒即可查看翻译结果，享受所见即所得的快感。
+- **优化翻译**：解决多余的断句和换行带来的乱码问题，翻译结果更符合阅读习惯。
+- **拖拽复制**：无限接近划译的系统级开源实现，拖拽选中即可复制翻译。 
+
+
+![](assets/c72a7e17-8661-4393-89bb-0954d6fb51ac.webp)
+
+### 2. [Rubick](https://github.com/rubickCenter/rubick)
+
+使用 electron 构建的开源、免费效率工具。更轻便、更简洁、更安全的插件化桌面端工具箱。具有以下特点：
+
+- 更加轻量：仅仅包含插件运行所需 `API`
+- 更加安全：支持基于 `webdav` 的多端数据同步，支持内网部署，从不获取任何用户数据，插件使用更加安全
+- 更加便捷：插件托管于 `npm` 仓库
+- 更加自由：代码完全开源，可以二次开发定制化
+
+![](assets/cf2b85f9-53ab-426d-ba99-b7f957198c2d.webp)
+
+### 3. [火绒安全](https://www.huorong.cn/person5.html)
+
+一款 `Windows` 操作系统下的个人电脑安全软件。主要功能有清除恶意软件、扫描电脑病毒、修补系统漏洞、清理系统垃圾、火绒剑、安全防护功能、自定义规则等。
+
+产品具有以下特点：
+- 干净：无任何具有广告推广性质的弹窗和捆绑等打扰用户行为
+- 轻巧：占用资源少，不影响日常办公、游戏
+- 简单：一键下载，安装后使用默认配置即可获得安全防护
+- 易用：产品性能历经数次优化，兼容性好，运行流畅
+
+
+![](assets/963a47eb-f74f-41fa-b4d2-7c3b0bd853cb.webp)
+
+## 三、网站
+
+### 1. [西部落](https://www.xibuluo.com/)
+
+西部落软件搜索平台通过收录各类优质的软件下载网站索引，让用户快速找到对的软件的同时，也让用户告别流氓全家桶软件和捆绑安装广告软件的困扰。
+
+![](assets/1700526083607.webp)
+
+### 2. [多搜搜](https://duososo.com/)
+
+多搜搜为您提供搜索工具聚合，包括无版权图片搜索、人工智能图片搜索，`Gif` 搜索，图标搜索，电影海报搜索，无版权免费图片搜索，学习搜索，课程搜索，学术搜索，图书搜索，问答搜索，乐谱搜索，娱乐搜索，视频搜索，影视搜索，购物搜索，直播搜索，网盘搜索，企业查询，政府搜索，域名搜索，招聘搜索。
+
+![](assets/1700526145306.webp)
+
+### 3. [OmoFun 动漫](https://www.omofun.xyz/)
+
+每日动漫更新在线观看 `omofun` 动漫番剧，追番二次元 `omofun` 传送门。
+
+![](assets/1700526084251.webp)
+
+## 四、插件
+
+### 1. [智能网页大纲](https://chromewebstore.google.com/detail/simple-outliner-智能网页大纲/ppdjhggfcaenclmimmdigbcglfoklgaf)
+
+自动生成网页大纲、目录，支持 `Inoreader` 和 `Feedly`。
+
+![](assets/1701172174852.webp)
+
+### 2. [QR 码生成与识别](https://chromewebstore.google.com/detail/qr码生成与识别/cbimgpnbgalffiohilfglgkkhpegpjlo)
+
+轻松为网址、链接、文本生成 `QR` 码，同时支持右键菜单、本地文件和摄像头扫码。
+
+核心功能：生成与识别 `QR` 码。所有功能完全在浏览器本地执行，扩展不会将任何数据发送到服务器，不收集任何信息。
+
+![](assets/1701172218653.webp)
+
+### 3. [超级复制](https://chromewebstore.google.com/detail/supercopy-超级复制/onepmapfbjohnegdmfhndpefjkppbjkm)
+
+在禁止复制、禁止右键、禁止选择的站点，一键复制，一键粘贴，一键选择，启用右键，启用复制，启用选择，启用粘贴。
+
+主要特性：
+
+1、一键破解 `js` 方式的禁止复制网站。
+
+2、一键破解 `css` 方式的禁止复制网站。
+
+3、具有记忆功能，下次打开相同页面自动破解禁止复制。
+
+4、具有联想功能，打开同站点其他页面自动破解禁止复制。
+
+![](assets/1701172656126.webp)
+
+## 五、资料
+
+### 1. [Front End Roadmap](https://github.com/objtube/front-end-roadmap)
+
+一个帮助新手、初级、中级前端开发者不断精进学习的网站，前端学习路上，不再迷茫。
+
+![](assets/1700525289123.webp)
+
+
+### 2. [leetcode](https://github.com/doocs/leetcode)
+
+项目包含 `LeetCode`、《剑指 Offer（第 2 版）》、《剑指 Offer（专项突击版）》、《程序员面试金典（第 6 版）》等题目的相关题解。所有题解均由多种编程语言实现，包括但不限于：`Java`、`Python`、`C++`、`Go`、`TypeScript`、`Rust`，日常更新。
+
+![](assets/1700612920217.webp)
+
+### 3. [LeetcodeTop](https://github.com/afatcoder/LeetcodeTop)
+
+汇总各大互联网公司容易考察的高频 `leetcode` 题。
+
+相对于力扣官方企业题库，本仓库有以下优点
+
+- 免费开放：汇总的高频题目免费分享给大家
+- 分类精细：按公司、部门、岗位进行分类，方便大家更针对性地准备面试
+- 题源可靠：全网收录题目考察情况，渠道不限于牛客、`CSDN` 博客、热心网友分享等
+- 本土特色：汇总办公地位于中国大陆的互联网企业
+
+![](assets/1700613542669.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/1209-1215.md b/src/weekly/2023/1209-1215.md
new file mode 100644
index 0000000000..fb9bb7a964
--- /dev/null
+++ b/src/weekly/2023/1209-1215.md
@@ -0,0 +1,190 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#35：图标资源获取
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/55LRHMH2lnOTXJOc173NDg
+:::
+
+
+
+## 一、项目
+
+### 1. [正则大全](https://github.com/any86/any-rule)
+
+常用正则大全，支持 `web`/`vscode`/`idea`/`Alfred Workflow` 多平台。
+
+![](assets/1bf3089c-6bae-4a2c-93d1-26d63e2b735e.webp)
+
+### 2. [X-SpringBoot](https://github.com/yzcheng90/X-SpringBoot)
+
+一个轻量级的 `Java` 快速开发平台，基于各大开源项目组合而来，用于快速构建中小型 `API`、`RESTful API` 项目，该项目已经有过多个真实项目的实践，稳定、简单、快速，使我们摆脱那些重复劳动。具有以下特点：
+
+- 本项目已大量重构，精简了大量代码减少第三方依赖，最干净的脚手架。
+- 引入了 `Lombok` 大量简化了代码
+- 引入了 `MyBatis Plus` 大量简化了 `SQL`
+- 引入 `Hutool` 工具包 规范工具类
+- 引入 `minio` 分布式文件系统
+- 引入 `autoFull` 自动填充绑定框架，多表关联不用写 `sql`
+- 前后端完全脱离，前端代码可单独部署
+- 自定义 `Spring Security` 支持获取 `token`
+
+![](assets/38a7dcc3-57e4-484f-91a5-3063c415a215.webp)
+
+### 3. [hexo-theme-redefine](https://github.com/EvanNotFound/hexo-theme-redefine)
+
+基于 `Keep` 早期版本，改了样式以及增加了各种功能，主打现代设计 / 简洁界面，让你可以专注于文章创作。
+
+![](assets/1697414801784-1700093744491-3.webp)
+
+## 二、软件
+
+### 1. [Pot](https://github.com/pot-app/pot-desktop)
+
+一个跨平台的划词翻译和 `OCR` 软件，支持如下功能：
+
+- 划词翻译	
+- 输入翻译	
+- 外部调用
+- 剪切板监听模式	
+- 截图 `OCR`	
+- 截图翻译
+
+![](assets/1700094045165.webp)
+
+
+
+### 2. [Easydict](https://github.com/tisfeng/Easydict)
+
+一个简洁优雅的词典翻译 `macOS App`。开箱即用，支持离线 `OCR` 识别，支持有道词典，苹果系统词典，苹果系统翻译，`ChatGPT`，`DeepL`，`Google`，`Bing`，百度和火山翻译。
+
+![](assets/1700094007510.webp)
+
+### 3. [方方格子](http://www.ffcell.com/)
+
+`Excel` 工具箱，包含了上百个使用功能：文本处理、批量录入、删除工具、合并转换、重复值工具、数据对比、高级排序、颜色排序、合并单元格排序、 聚光灯、宏收纳箱等。
+
+![](assets/1700093824758.webp)
+
+## 三、网站
+
+### 1. [StrawBerry Icon](https://chuangzaoshi.com/icon/)
+
+一款为开发者和创造者设计的免费开源小众图标库，设计师独立绘制，免费开源。
+
+![](assets/1701044207270.webp)
+
+### 2. [图标搜索网](https://www.easyicon.cc/)
+
+提供超过六十万个 `SVG`、`PNG`、`ICO`、`ICNS` 图标搜索、图标下载服务。
+
+![](assets/1701044155334.webp)
+
+### 3. [IconStore](https://iconstore.co/)
+
+`IconStore` 是一个由才华横溢的设计师创建的免费矢量(`SVG`)图标库，可供下载用于商业用途。
+
+![](assets/1701044183959.webp)
+
+## 四、插件
+
+### 1. [语雀浏览器插件](https://chrome.google.com/webstore/detail/语雀浏览器插件/hnbdgfongnkfgnbpamndfiiedhapfecn?hl=zh-CN)
+
+语雀浏览器知识管理插件，支持剪藏页面文本和图片，截图 `OCR` 识别文字，可划词剪藏、翻译，侧边栏写笔记，并存到语雀。
+
+![](assets/1701649151563.webp)
+
+### 2. [批量图片下载器](https://chromewebstore.google.com/detail/批量图片下载器-imageye/agionbommeaifngbhincahgmoflcikhm)
+
+一款用于嗅探、分析网页图片并提供批量下载等功能的浏览器扩展程序。
+
+使用批量图片下载器在网页上查找并下载所有图像。
+使用此批量图片下载器，您可以在网页上查找，浏览并下载所有图像。此外，您还可以：
+
+- 根据像素宽度和高度进行过滤
+- 根据 `URL` 进行过滤
+- 一次性下载所有图像
+- 选择您想要下载的图像
+- 检查每个图像的大小
+- 复制原始图像的 `URL`
+- 在各种布局选项中进行选择
+- 支持所有主要网站（`Instagram`，`Facebook`，`Twitter`...）
+- 执行反向图像搜索
+- 将 `.webp` 转换为 `.png`（测试版）
+
+![](assets/1701649527248.webp)
+
+### 3. [YouTube 视频摘要](https://chromewebstore.google.com/detail/youtube视频摘要chatgpt生成-快速笔记/baecjmoceaobpnffgnlkloccenkoibbb)
+
+使用 `ChatGPT` 对 `YouTube` 视频进行总结。在 `YouTube` 视频上一键截屏和记录笔记。插件具有以下特点：
+
+- 节省时间：快速找到视频字幕里的 `YouTube` 视频具体位置
+- 快速加载：视频摘要快速加载
+- 易于使用：一键复制副本和摘要
+- 快捷记录带时间戳的笔记和屏幕截图
+
+![](assets/1701669145924.webp)
+
+## 五、资料
+
+### 1. [nlp_paper_study](https://github.com/km1994/nlp_paper_study)
+
+主要记录 `NLP` 算法工程师相关的顶会论文研读笔记。
+
+![](assets/1700650259960.webp)
+
+### 2. [C++ 那些事](https://github.com/Light-City/CPlusPlusThings)
+
+一个适合初学者从入门到进阶的仓库，解决了面试者与学习者想要深入 `C++` 及如何入坑 `C++` 的问题。除此之外，本仓库拓展了更加深入的源码分析，多线程并发等的知识，是一个比较全面的 `C++` 学习从入门到进阶提升的仓库。
+
+![](assets/1700650468361.webp)
+
+### 3. [interview](https://github.com/huihut/interview)
+
+`C/C++` 技术面试基础知识总结，包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息。
+
+![](assets/1700651901784.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/1216-1222.md b/src/weekly/2023/1216-1222.md
new file mode 100644
index 0000000000..a8008aac3d
--- /dev/null
+++ b/src/weekly/2023/1216-1222.md
@@ -0,0 +1,178 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#36：程序员简历
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/z2ahY98Jwq-O8sBxTz9oTw
+:::
+
+
+
+## 一、项目
+
+### 1. [SmartDNS](https://github.com/pymumu/smartdns)
+
+一个运行在本地的 `DNS` 服务器，它接受来自本地客户端的 `DNS` 查询请求，然后从多个上游 `DNS` 服务器获取 `DNS` 查询结果，并将访问速度最快的结果返回给客户端，以此提高网络访问速度。 `SmartDNS` 同时支持指定特定域名 `IP` 地址，并高性匹配，可达到过滤广告的效果；支持 `DOT` (`DNS over TLS`) 和 `DOH` (`DNS over HTTPS`)，更好的保护隐私。
+
+
+![](assets/1b39fdfb-c506-43b8-85fd-ae33b1e66dbf.webp)
+
+### 2. [Github520](https://github.com/521xueweihan/GitHub520)
+
+让你 “爱” 上 `GitHub`，无需安装即可解决访问时图裂、加载慢的问题。
+
+![](assets/20a958d4-175f-413a-8afb-8759ce6506c9.webp)
+
+### 3. [Screw](https://github.com/pingfangushi/screw)
+
+简洁好用的数据库表结构文档生成器。具有以下特点：
+- 简洁、轻量、设计良好
+- 多数据库支持
+- 多种格式文档
+- 灵活扩展
+- 支持自定义模板
+
+目前已支持如下数据库：
+ - `MySQL`
+ - `MariaDB`
+ - `TIDB`
+ - `Oracle`
+ - `SqlServer`
+ - `PostgreSQL`
+ - `Cache DB（2016）`
+
+![](assets/cb285baf-3ea9-43ca-ac8f-34532fc9f1d9.webp)
+
+## 二、软件
+
+### 1. [树图](https://shutu.cn/)
+
+新一代 “AI 智能” 思维导图。上传文档，AI 一键总结归纳为导图；输入想法，AI 一键生成思维导图；海量导图模板与素材的应用、文件跨平台云同步、多人同时在线协作，助力学习、工作的效率提升。
+
+![](assets/1700180196054.webp)
+
+### 2. [NextSSH](https://codemutex.com/)
+
+一款简洁直观的 `SSH` 客户端， 支持 `Windows`、`macOS` 与 `Linux`。 并且集成了 `SFTP`、远程文件编辑、数据同步等辅助功能。
+
+![](assets/1700180196380.webp)
+
+### 3. [IDM](https://www.internetdownloadmanager.com/)
+
+一款独特的下载工具，它不仅拥有续传功能并且可以提升你的下载速度最多达 5 倍。`IDM` 可以充分利用您的下载速度快速下载资源，支持所有的浏览器下载！
+
+![](assets/1700438906241.webp)
+
+## 三、网站
+
+### 1. [CloudConvert](https://cloudconvert.com/)
+
+云端在线图片格式转换网站，支持 200+ 种格式，具有数据安全、转换质量高、功能强大的特点。
+
+![](assets/1701044263852.webp)
+
+### 2. [360 查字体](https://fonts.safe.360.cn/)
+
+查询字体版权，能否用于商业用途，避免侵权纠纷。
+
+![](assets/1701044292822.webp)
+
+### 3. [MyFonts](https://www.myfonts.com/)
+
+世界上最大的字体市场，这里有最新时尚的商业英文字体，能为任何项目提供专业字体，超过 270000 种可用字体，而且还在不断增加。
+
+![](assets/1701044315505.webp)
+
+## 四、插件
+
+### 1. [AI 绘图专业版（免费）](https://chromewebstore.google.com/detail/ai绘图专业版（免费）-diffusiondraw/cmjfnhommnnaihollaikfdblblpmibep)
+
+专注 `AI` 图像生成，内置 `Midjourney` 等多种图像模型，两步快速得到创意图像，适用于艺术设计、品牌推广、广告创意、电商展示等领域。主要具有如下功能：
+
+-   文生图：利用智能算法将文本转化为艺术风格图像，实现快速创作。
+-   图生图：通过先进 `AI` 技术，重新组合、融合图像，创造全新的创意图像。
+-   图像变形：利用 `AI` 技术对图像进行变形处理，赋予作品独特的视觉效果。
+-   图像无损放大：使用高级放大算法，实现图像的无损放大，保持高质量细节。
+-   图像局部重绘：通过 `AI` 技术局部绘制图像，修复损坏区域或增添细节。
+-   图像内容去除：智能识别并自动移除图像中不需要的元素，简化编辑过程。
+-   自带提示语生成器：内置生成器产生创作灵感，助您开启创意之旅。
+-   `AI` 图像生成高级参数设置：提供丰富的参数设置，让您更精准地掌控图像生成过程。
+-   `AI` 引擎类型丰富：支持多种风格的图像生成，包括彩色动漫、写实、油墨风、二次元、动画风、AI生成 `APP` 图标等。
+
+![](assets/1702858071180.webp)
+
+### 2. [Gifs for Github](https://chromewebstore.google.com/detail/gifs-for-github/dkgjnpbipbdaoaadbdhpiokaemhlphep)
+
+轻松搜索 `GIPHY`，将 `GIF` 添加到任何 `GitHub` 评论框中。
+
+![](assets/1702858039400.webp)
+
+### 3. [浮图秀](https://chromewebstore.google.com/detail/浮图秀/mgpdnhlllbpncjpgokgfogidhoegebod)
+
+一款帮助用户快速查看页面中缩略图对应“大图”的浏览器插件。对于所支持的网站，用户鼠标悬停在缩略图时即可看到相应的高分辨率图片。目前支持的网站包括京东、天猫、淘宝、知乎、微博等 140 余个网站/域名并在不断扩展中。
+
+![](assets/1702857917761.webp)
+
+## 五、资料
+
+### 1. [ResumeSample](https://github.com/geekcompany/ResumeSample)
+
+程序员简历模板系列。包括 `PHP` 程序员简历模板、`iOS` 程序员简历模板、`Android` 程序员简历模板、`Web` 前端程序员简历模板、`Java` 程序员简历模板、`C/C++` 程序员简历模板、`NodeJS` 程序员简历模板、架构师简历模板以及通用程序员简历模板。
+
+![](assets/1700653238916.webp)
+
+### 2. [fe-interview](https://github.com/haizlin/fe-interview)
+
+前端面试每日 3+1，以面试题来驱动学习，提倡每日学习与思考，每天进步一点！每天早上 5 点纯手工发布面试题（死磕自己，愉悦大家），6000+ 道前端面试题全面覆盖。
+
+![](assets/1700654862398.webp)
+
+### 3. [Rust 语言圣经](https://github.com/sunface/rust-course)
+
+涵盖从入门到精通所需的 `Rust` 知识，目录及内容都经过深思熟虑的设计，同时语言生动幽默，行文流畅自如，摆脱技术书籍常有的机器味和晦涩感。
+
+![](assets/1700655034001.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/1223-1229.md b/src/weekly/2023/1223-1229.md
new file mode 100644
index 0000000000..40cbeb714e
--- /dev/null
+++ b/src/weekly/2023/1223-1229.md
@@ -0,0 +1,200 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#37：元气桌面
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/duZJFrIONlf2oZQsY4pd7w
+:::
+
+
+
+## 一、项目
+
+### 1. [MallChat](https://github.com/zongzibinbin/MallChat)
+
+一个既能购物又能聊天的电商系统。以互联网企业级开发规范的要求来实现它，电商该有的购物车，订单，支付，推荐，搜索，拉新，促活，推送，物流，客服，它都必须有。
+
+![](assets/1700180327504.webp)
+
+### 2. [DormitoryManagement](https://github.com/EsunR/DormitoryManagement)
+
+基于 `Koa` 以及 `VueJS` 的宿舍管理系统，主要具有以下功能：
+
+-   学生信息录入、修改、删除、查询
+-   宿舍管理评分
+-   学生早起率、懒床率
+-   学生宿舍打扫频率
+-   学生晚归情况
+-   楼层管理
+
+![](assets/1700180327504.webp)
+
+### 3. [fscan](https://github.com/shadow1ng/fscan)
+
+一款内网综合扫描工具，方便一键自动化、全方位漏扫扫描。
+支持主机存活探测、端口扫描、常见服务的爆破、`ms17010`、`redis` 批量写公钥、计划任务反弹 `shell`、读取 `win` 网卡信息、`web` 指纹识别、`web` 漏洞扫描、`netbios` 探测、域控识别等功能。
+
+![](assets/1700180327839.webp)
+
+## 二、软件
+
+### 1. [Windows Auto Dark Mode](https://github.com/AutoDarkMode/Windows-Auto-Night-Mode)
+
+一款能够自动帮助用户随着时间自动切换电脑主题的软件，使用软件后用户的 `Windows` 系统会随着时间的变化，自动切换当前系统主题。
+
+![](assets/1701216514698.webp)
+
+### 2. [元气桌面](https://desk.duba.com/)
+
+元气桌面（原猎豹轻桌面）包含元气壁纸和桌面整理，是一款免费桌面美化软件。独家自研动态壁纸引擎，利用图像算法、粒子特效，让静态壁纸动起来，像游戏画面一样炫酷。桌面图标一键收纳，双击隐藏桌面图标，让电脑桌面整洁有序。海量超清 4K 视频桌面壁纸，每日更新风景护眼美女清新萌宠游戏动漫壁纸图片。深度的性能优化，自定义的高性能壁纸播放器和游戏免打扰模式，让动态壁纸的性能消耗可以忽略不计。
+
+![](assets/1701216467867.webp)
+
+### 3. [Eagle](https://eagle.cool/)
+
+帮助你轻松管理大量图片、视频、音频素材，满足素材「收藏、整理、查找」的各种场景，支持 `Mac` 与 `Windows` 系统。
+
+![](assets/1700438907224.webp)
+
+## 三、网站
+
+### 1. [FreeSSL](https://freessl.cn/)
+
+一个申请免费 `HTTPS` 证书的网站。
+
+![](assets/1701216557313.webp)
+
+### 2. [SEO 外链工具](https://www.zui5.com/seo)
+
+网站自动化宣传机器(超级外链工具)可以轻轻松松提高网站曝光率,可以批量增加外链,快速增高世界排名，全部实现自动化外链群发，全部免费，无需人工操作，网络推广必备工具。
+
+![](assets/1701216731016.webp)
+
+### 3. [PDF24 Tools](https://tools.pdf24.org/zh/)
+
+合并、压缩、创建、编辑和转换PDF文件的免费在线PDF工具。快捷方便，无需安装，无需注册。
+
+![](assets/1701216835527.webp)
+
+## 四、插件
+
+### 1. [Talent](https://chromewebstore.google.com/detail/talent-划词翻译和ai沉浸式翻译/lbcbipoloacjakecofjkohgllhojdhhp)
+
+专业划词翻译，聚合翻译，沉浸式翻译，支持谷歌翻译、百度翻译、`Deepl`、`OpenAI` 等多个翻译源，可双语对照和截图翻译。
+
+`Talanet` 划词翻译可以让你在任意网页选中文本，即可翻译成你想要的语言。
+*  聚合翻译，可以对照显示各种翻译源的结果，从而适合您的最佳内容；
+*  沉浸式翻译，智能识别网页主内容进行双语对照翻译，提供更好的阅读体验；
+*  `PDF` 翻译，内置 `PDF` 阅读器，提供更好的翻译体验；
+*  `Youtube` 双语字幕;
+*  支持自动朗读，并可以对朗读进行自定义设置；
+*  支持词组、音标、例句等多种展示结果，您可以把它当作英语学习工具；
+*  支持多种用户自定义配置，用户可以自行去翻译平台申请接口；
+*  完全免费；
+
+![](assets/1702858177282.webp)
+
+### 2. [扩展管理器](https://chromewebstore.google.com/detail/扩展管理器/efolofldmcajcobffimbnokcnfcicooc)
+
+快速轻松的开启、关闭、卸载扩展程序，查看卸载记录；自定义分组、设置别称或备注；支持置顶或收藏插件，并支持导出 `CSV`。最好用的插件管理工具，具有以下特色功能：
+
+- 插件列表：漂亮的 `UI` 设计，列表展示所有插件内容、版本、分组、别称。同时显示一共有多少插件，多少开启和关闭的以及卸载的插件数量；
+- 一键启用：在列表页，可以一键启用插件；
+- 一键禁用：在列表页，可以一键禁用插件，同时也支持一键关闭所有的插件；
+- 一键卸载：在列表页，可以一键卸载不需要的插件；
+- 智能搜索：可以根据插件名称或者别称匹配到想要的插件；
+- 卸载记录：可以查看已经卸载过的历史记录，并支持重新安装；
+- 智能跳转：支持一键跳转官方主页、系统选项页；
+- 备注别称：支持给插件设置别称或备注，方便查找，也可以通过搜索快速定位；
+- 喜欢搜藏：支持收藏自己喜欢的插件，并在最前面显示；
+- 更多点击：可以点击管理插件、快速去商城地址等；
+- 智能分组：可以自定义创建分组，并且分组会在插件列表页展示；
+
+![](assets/1702858154497.webp)
+
+### 3. [自动刷新页面](https://chromewebstore.google.com/detail/自動刷新頁面-重新加載頁面/nagebjgefhenmjbjhjmdifchbnbmjgpa)
+
+
+该插件可在指定的秒数后自动刷新和重新加载任何页面或选项卡。只需输入页面刷新之间的秒数，然后单击“开始”按钮。
+
+这个插件最好的一点是不需要设置 - 它使用起来简单易行，安装它并让您的空闲页面自动重新加载。只需选择您希望页面刷新的时间即可发挥其魔力。
+
+- 为每个域或网页保存无限的手动首选项。
+- 默认时间间隔为 5 秒、10 秒、15 秒、5 分钟、10 分钟和 15 分钟。
+- 以秒、分钟和小时为单位设置自动刷新。
+- 单击网页上的任意位置以停止自动重新加载。
+- 在网页上显示可视计时器。
+- 强制刷新以清除缓存和 `cookie`
+
+![](assets/1702858118855.webp)
+
+## 五、资料
+
+### 1. [408CSFamily](https://github.com/142vip/408CSFamily)
+
+408 计算机专业课“全家桶”复习资料，收录的大部分内容源于作者的学习输出和相关资料的整理。
+
+![](assets/1701044365947.webp)
+
+### 2. [Spring 源码阅读](https://github.com/seaswalker/spring-analysis)
+
+汇集 `Spring` 相关组件阅读笔记，主要包括以下方面内容：
+- `Spring Core`
+- `Spring Aop`
+- `Spring Context`
+- `Spring task`
+- `Spring transaction`
+- `Spring MVC`
+- `guava cache`
+
+![](assets/1701044396509.webp)
+
+### 3. [blockchain-course](https://github.com/biquanlibai/blockchain-course)
+
+区块链课程资源分享，主要包含初级、中级、新技术分享、零知识证明等方面内容。
+
+![](assets/1701044420284.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## 🎬️ 广告
+
+当前大环境下，就业形势严峻，尤其针对即将毕业的大学生。作为一个技术求职者，求职前应该做好哪些准备呢，一些面试实战技巧也十分有必要！而刚好最近掘金出了一本《技术人求职指南》小册，相信一定会对在找工作的你有所帮助。
+
+从求职到拿下 `Offer`，一本职场的全方位攻略，快来和我一起学习吧！
+
+![](assets/programmer-offer-guide.png =250x)
+
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2023/README.md b/src/weekly/2023/README.md
new file mode 100644
index 0000000000..377d3f4eff
--- /dev/null
+++ b/src/weekly/2023/README.md
@@ -0,0 +1,7 @@
+---
+title: 2023 年刊
+index: false
+icon: fa-solid fa-newspaper
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/src/weekly/2023/assets/0462c694-e4da-447f-8084-861728fae51c.webp b/src/weekly/2023/assets/0462c694-e4da-447f-8084-861728fae51c.webp
new file mode 100644
index 0000000000..c42dd2a1a7
Binary files /dev/null and b/src/weekly/2023/assets/0462c694-e4da-447f-8084-861728fae51c.webp differ
diff --git a/src/weekly/2023/assets/099fa940-f027-4dde-bd0b-e3bac6347e71.webp b/src/weekly/2023/assets/099fa940-f027-4dde-bd0b-e3bac6347e71.webp
new file mode 100644
index 0000000000..b47cba7cec
Binary files /dev/null and b/src/weekly/2023/assets/099fa940-f027-4dde-bd0b-e3bac6347e71.webp differ
diff --git a/src/weekly/2023/assets/1690762544377.webp b/src/weekly/2023/assets/1690762544377.webp
new file mode 100644
index 0000000000..14598ce8f2
Binary files /dev/null and b/src/weekly/2023/assets/1690762544377.webp differ
diff --git a/src/weekly/2023/assets/1690762623467.webp b/src/weekly/2023/assets/1690762623467.webp
new file mode 100644
index 0000000000..a03a9c5cb9
Binary files /dev/null and b/src/weekly/2023/assets/1690762623467.webp differ
diff --git a/src/weekly/2023/assets/1690762690062.webp b/src/weekly/2023/assets/1690762690062.webp
new file mode 100644
index 0000000000..95922174fd
Binary files /dev/null and b/src/weekly/2023/assets/1690762690062.webp differ
diff --git a/src/weekly/2023/assets/1690762795459.webp b/src/weekly/2023/assets/1690762795459.webp
new file mode 100644
index 0000000000..13f296d650
Binary files /dev/null and b/src/weekly/2023/assets/1690762795459.webp differ
diff --git a/src/weekly/2023/assets/1690762833699.webp b/src/weekly/2023/assets/1690762833699.webp
new file mode 100644
index 0000000000..f407eda20b
Binary files /dev/null and b/src/weekly/2023/assets/1690762833699.webp differ
diff --git a/src/weekly/2023/assets/1690762875324.webp b/src/weekly/2023/assets/1690762875324.webp
new file mode 100644
index 0000000000..0c10604316
Binary files /dev/null and b/src/weekly/2023/assets/1690762875324.webp differ
diff --git a/src/weekly/2023/assets/1690763044389.webp b/src/weekly/2023/assets/1690763044389.webp
new file mode 100644
index 0000000000..b5bb3e9f5a
Binary files /dev/null and b/src/weekly/2023/assets/1690763044389.webp differ
diff --git a/src/weekly/2023/assets/1690763071963.webp b/src/weekly/2023/assets/1690763071963.webp
new file mode 100644
index 0000000000..6ad65bb8f4
Binary files /dev/null and b/src/weekly/2023/assets/1690763071963.webp differ
diff --git a/src/weekly/2023/assets/1690763116429.webp b/src/weekly/2023/assets/1690763116429.webp
new file mode 100644
index 0000000000..34f9d71f74
Binary files /dev/null and b/src/weekly/2023/assets/1690763116429.webp differ
diff --git a/src/weekly/2023/assets/1690763237290.webp b/src/weekly/2023/assets/1690763237290.webp
new file mode 100644
index 0000000000..b39995caff
Binary files /dev/null and b/src/weekly/2023/assets/1690763237290.webp differ
diff --git a/src/weekly/2023/assets/1690763277485.webp b/src/weekly/2023/assets/1690763277485.webp
new file mode 100644
index 0000000000..2a06f646b5
Binary files /dev/null and b/src/weekly/2023/assets/1690763277485.webp differ
diff --git a/src/weekly/2023/assets/1690763944242.webp b/src/weekly/2023/assets/1690763944242.webp
new file mode 100644
index 0000000000..36efbf8ac5
Binary files /dev/null and b/src/weekly/2023/assets/1690763944242.webp differ
diff --git a/src/weekly/2023/assets/1690763993530.webp b/src/weekly/2023/assets/1690763993530.webp
new file mode 100644
index 0000000000..4961b49df4
Binary files /dev/null and b/src/weekly/2023/assets/1690763993530.webp differ
diff --git a/src/weekly/2023/assets/1690764029365.webp b/src/weekly/2023/assets/1690764029365.webp
new file mode 100644
index 0000000000..28c839924e
Binary files /dev/null and b/src/weekly/2023/assets/1690764029365.webp differ
diff --git a/src/weekly/2023/assets/1690768321171.webp b/src/weekly/2023/assets/1690768321171.webp
new file mode 100644
index 0000000000..c2abd7c5d3
Binary files /dev/null and b/src/weekly/2023/assets/1690768321171.webp differ
diff --git a/src/weekly/2023/assets/1690768349594.webp b/src/weekly/2023/assets/1690768349594.webp
new file mode 100644
index 0000000000..a0d44d5be9
Binary files /dev/null and b/src/weekly/2023/assets/1690768349594.webp differ
diff --git a/src/weekly/2023/assets/1690768437267.webp b/src/weekly/2023/assets/1690768437267.webp
new file mode 100644
index 0000000000..59602cb91c
Binary files /dev/null and b/src/weekly/2023/assets/1690768437267.webp differ
diff --git a/src/weekly/2023/assets/1690768504751.webp b/src/weekly/2023/assets/1690768504751.webp
new file mode 100644
index 0000000000..bcecabb2e6
Binary files /dev/null and b/src/weekly/2023/assets/1690768504751.webp differ
diff --git a/src/weekly/2023/assets/1690768605419.webp b/src/weekly/2023/assets/1690768605419.webp
new file mode 100644
index 0000000000..cd455c076b
Binary files /dev/null and b/src/weekly/2023/assets/1690768605419.webp differ
diff --git a/src/weekly/2023/assets/1690768631894.webp b/src/weekly/2023/assets/1690768631894.webp
new file mode 100644
index 0000000000..00a84e83b1
Binary files /dev/null and b/src/weekly/2023/assets/1690768631894.webp differ
diff --git a/src/weekly/2023/assets/1690811656100.webp b/src/weekly/2023/assets/1690811656100.webp
new file mode 100644
index 0000000000..d24fd97ad6
Binary files /dev/null and b/src/weekly/2023/assets/1690811656100.webp differ
diff --git a/src/weekly/2023/assets/1690894829840.webp b/src/weekly/2023/assets/1690894829840.webp
new file mode 100644
index 0000000000..00a4860c61
Binary files /dev/null and b/src/weekly/2023/assets/1690894829840.webp differ
diff --git a/src/weekly/2023/assets/1690898424564.webp b/src/weekly/2023/assets/1690898424564.webp
new file mode 100644
index 0000000000..f121f64491
Binary files /dev/null and b/src/weekly/2023/assets/1690898424564.webp differ
diff --git a/src/weekly/2023/assets/1690899690008.webp b/src/weekly/2023/assets/1690899690008.webp
new file mode 100644
index 0000000000..57047e4e3b
Binary files /dev/null and b/src/weekly/2023/assets/1690899690008.webp differ
diff --git a/src/weekly/2023/assets/1690900732729.webp b/src/weekly/2023/assets/1690900732729.webp
new file mode 100644
index 0000000000..9ad316edc6
Binary files /dev/null and b/src/weekly/2023/assets/1690900732729.webp differ
diff --git a/src/weekly/2023/assets/1690900859692.webp b/src/weekly/2023/assets/1690900859692.webp
new file mode 100644
index 0000000000..8e3ee72cc2
Binary files /dev/null and b/src/weekly/2023/assets/1690900859692.webp differ
diff --git a/src/weekly/2023/assets/1691367319148.webp b/src/weekly/2023/assets/1691367319148.webp
new file mode 100644
index 0000000000..1340c67525
Binary files /dev/null and b/src/weekly/2023/assets/1691367319148.webp differ
diff --git a/src/weekly/2023/assets/1691367608073.webp b/src/weekly/2023/assets/1691367608073.webp
new file mode 100644
index 0000000000..fae0b94070
Binary files /dev/null and b/src/weekly/2023/assets/1691367608073.webp differ
diff --git a/src/weekly/2023/assets/1691368138312-20230825231206012.webp b/src/weekly/2023/assets/1691368138312-20230825231206012.webp
new file mode 100644
index 0000000000..f0e5fcf110
Binary files /dev/null and b/src/weekly/2023/assets/1691368138312-20230825231206012.webp differ
diff --git a/src/weekly/2023/assets/1691368474003.webp b/src/weekly/2023/assets/1691368474003.webp
new file mode 100644
index 0000000000..6cb368774b
Binary files /dev/null and b/src/weekly/2023/assets/1691368474003.webp differ
diff --git a/src/weekly/2023/assets/1691371798481.webp b/src/weekly/2023/assets/1691371798481.webp
new file mode 100644
index 0000000000..21b146fc5a
Binary files /dev/null and b/src/weekly/2023/assets/1691371798481.webp differ
diff --git a/src/weekly/2023/assets/1691373398652.webp b/src/weekly/2023/assets/1691373398652.webp
new file mode 100644
index 0000000000..5dd29e338f
Binary files /dev/null and b/src/weekly/2023/assets/1691373398652.webp differ
diff --git a/src/weekly/2023/assets/1691453595915.webp b/src/weekly/2023/assets/1691453595915.webp
new file mode 100644
index 0000000000..5420b3c4c0
Binary files /dev/null and b/src/weekly/2023/assets/1691453595915.webp differ
diff --git a/src/weekly/2023/assets/1691454036958.webp b/src/weekly/2023/assets/1691454036958.webp
new file mode 100644
index 0000000000..b262f906e6
Binary files /dev/null and b/src/weekly/2023/assets/1691454036958.webp differ
diff --git a/src/weekly/2023/assets/1691482575399.webp b/src/weekly/2023/assets/1691482575399.webp
new file mode 100644
index 0000000000..778694ebfc
Binary files /dev/null and b/src/weekly/2023/assets/1691482575399.webp differ
diff --git a/src/weekly/2023/assets/1691483810886.webp b/src/weekly/2023/assets/1691483810886.webp
new file mode 100644
index 0000000000..9c322aa7de
Binary files /dev/null and b/src/weekly/2023/assets/1691483810886.webp differ
diff --git a/src/weekly/2023/assets/1691483842679.webp b/src/weekly/2023/assets/1691483842679.webp
new file mode 100644
index 0000000000..f2c23558cd
Binary files /dev/null and b/src/weekly/2023/assets/1691483842679.webp differ
diff --git a/src/weekly/2023/assets/1691550580602.webp b/src/weekly/2023/assets/1691550580602.webp
new file mode 100644
index 0000000000..d80c8401d5
Binary files /dev/null and b/src/weekly/2023/assets/1691550580602.webp differ
diff --git a/src/weekly/2023/assets/1691551021240.webp b/src/weekly/2023/assets/1691551021240.webp
new file mode 100644
index 0000000000..5e2241ceea
Binary files /dev/null and b/src/weekly/2023/assets/1691551021240.webp differ
diff --git a/src/weekly/2023/assets/1691551403076.webp b/src/weekly/2023/assets/1691551403076.webp
new file mode 100644
index 0000000000..3f67b07e99
Binary files /dev/null and b/src/weekly/2023/assets/1691551403076.webp differ
diff --git a/src/weekly/2023/assets/1692068786244.webp b/src/weekly/2023/assets/1692068786244.webp
new file mode 100644
index 0000000000..20ed746a64
Binary files /dev/null and b/src/weekly/2023/assets/1692068786244.webp differ
diff --git a/src/weekly/2023/assets/1692069223547.webp b/src/weekly/2023/assets/1692069223547.webp
new file mode 100644
index 0000000000..b5dc757a0f
Binary files /dev/null and b/src/weekly/2023/assets/1692069223547.webp differ
diff --git a/src/weekly/2023/assets/1692145937305.webp b/src/weekly/2023/assets/1692145937305.webp
new file mode 100644
index 0000000000..ee52d42bbd
Binary files /dev/null and b/src/weekly/2023/assets/1692145937305.webp differ
diff --git a/src/weekly/2023/assets/1692146560656.webp b/src/weekly/2023/assets/1692146560656.webp
new file mode 100644
index 0000000000..c6ac07ee47
Binary files /dev/null and b/src/weekly/2023/assets/1692146560656.webp differ
diff --git a/src/weekly/2023/assets/1692149410548.webp b/src/weekly/2023/assets/1692149410548.webp
new file mode 100644
index 0000000000..b038e35c02
Binary files /dev/null and b/src/weekly/2023/assets/1692149410548.webp differ
diff --git a/src/weekly/2023/assets/1692576139146.webp b/src/weekly/2023/assets/1692576139146.webp
new file mode 100644
index 0000000000..c60c024c75
Binary files /dev/null and b/src/weekly/2023/assets/1692576139146.webp differ
diff --git a/src/weekly/2023/assets/1692576182234.webp b/src/weekly/2023/assets/1692576182234.webp
new file mode 100644
index 0000000000..0010dbb2f0
Binary files /dev/null and b/src/weekly/2023/assets/1692576182234.webp differ
diff --git a/src/weekly/2023/assets/1692576228416.webp b/src/weekly/2023/assets/1692576228416.webp
new file mode 100644
index 0000000000..7bf2371e33
Binary files /dev/null and b/src/weekly/2023/assets/1692576228416.webp differ
diff --git a/src/weekly/2023/assets/1692576316116.webp b/src/weekly/2023/assets/1692576316116.webp
new file mode 100644
index 0000000000..02320d9704
Binary files /dev/null and b/src/weekly/2023/assets/1692576316116.webp differ
diff --git a/src/weekly/2023/assets/1692576359483.webp b/src/weekly/2023/assets/1692576359483.webp
new file mode 100644
index 0000000000..525b2ea972
Binary files /dev/null and b/src/weekly/2023/assets/1692576359483.webp differ
diff --git a/src/weekly/2023/assets/1692576465452.webp b/src/weekly/2023/assets/1692576465452.webp
new file mode 100644
index 0000000000..72329fc5d6
Binary files /dev/null and b/src/weekly/2023/assets/1692576465452.webp differ
diff --git a/src/weekly/2023/assets/1692576558484.webp b/src/weekly/2023/assets/1692576558484.webp
new file mode 100644
index 0000000000..edb0824e56
Binary files /dev/null and b/src/weekly/2023/assets/1692576558484.webp differ
diff --git a/src/weekly/2023/assets/1692576602531.webp b/src/weekly/2023/assets/1692576602531.webp
new file mode 100644
index 0000000000..34a62e9953
Binary files /dev/null and b/src/weekly/2023/assets/1692576602531.webp differ
diff --git a/src/weekly/2023/assets/1693138016247.webp b/src/weekly/2023/assets/1693138016247.webp
new file mode 100644
index 0000000000..497b5dd29a
Binary files /dev/null and b/src/weekly/2023/assets/1693138016247.webp differ
diff --git a/src/weekly/2023/assets/1693138973601.webp b/src/weekly/2023/assets/1693138973601.webp
new file mode 100644
index 0000000000..cb5f39d76d
Binary files /dev/null and b/src/weekly/2023/assets/1693138973601.webp differ
diff --git a/src/weekly/2023/assets/1693139064735.webp b/src/weekly/2023/assets/1693139064735.webp
new file mode 100644
index 0000000000..ad96006ff2
Binary files /dev/null and b/src/weekly/2023/assets/1693139064735.webp differ
diff --git a/src/weekly/2023/assets/1693139142680.webp b/src/weekly/2023/assets/1693139142680.webp
new file mode 100644
index 0000000000..070014f015
Binary files /dev/null and b/src/weekly/2023/assets/1693139142680.webp differ
diff --git a/src/weekly/2023/assets/1693139180624.webp b/src/weekly/2023/assets/1693139180624.webp
new file mode 100644
index 0000000000..c4ca20392b
Binary files /dev/null and b/src/weekly/2023/assets/1693139180624.webp differ
diff --git a/src/weekly/2023/assets/1693139224051.webp b/src/weekly/2023/assets/1693139224051.webp
new file mode 100644
index 0000000000..261d87e485
Binary files /dev/null and b/src/weekly/2023/assets/1693139224051.webp differ
diff --git a/src/weekly/2023/assets/1693139461978.webp b/src/weekly/2023/assets/1693139461978.webp
new file mode 100644
index 0000000000..e8dd1819ec
Binary files /dev/null and b/src/weekly/2023/assets/1693139461978.webp differ
diff --git a/src/weekly/2023/assets/1693139529284.webp b/src/weekly/2023/assets/1693139529284.webp
new file mode 100644
index 0000000000..3f8318b86a
Binary files /dev/null and b/src/weekly/2023/assets/1693139529284.webp differ
diff --git a/src/weekly/2023/assets/1693139598028.webp b/src/weekly/2023/assets/1693139598028.webp
new file mode 100644
index 0000000000..875c76ba66
Binary files /dev/null and b/src/weekly/2023/assets/1693139598028.webp differ
diff --git a/src/weekly/2023/assets/1693139631522.webp b/src/weekly/2023/assets/1693139631522.webp
new file mode 100644
index 0000000000..c9a17f6fa7
Binary files /dev/null and b/src/weekly/2023/assets/1693139631522.webp differ
diff --git a/src/weekly/2023/assets/1693144296484.webp b/src/weekly/2023/assets/1693144296484.webp
new file mode 100644
index 0000000000..e44078ba89
Binary files /dev/null and b/src/weekly/2023/assets/1693144296484.webp differ
diff --git a/src/weekly/2023/assets/1693144403780.webp b/src/weekly/2023/assets/1693144403780.webp
new file mode 100644
index 0000000000..36babddd7e
Binary files /dev/null and b/src/weekly/2023/assets/1693144403780.webp differ
diff --git a/src/weekly/2023/assets/1693144437276.webp b/src/weekly/2023/assets/1693144437276.webp
new file mode 100644
index 0000000000..005d371c42
Binary files /dev/null and b/src/weekly/2023/assets/1693144437276.webp differ
diff --git a/src/weekly/2023/assets/1693144474524.webp b/src/weekly/2023/assets/1693144474524.webp
new file mode 100644
index 0000000000..efe4fa357a
Binary files /dev/null and b/src/weekly/2023/assets/1693144474524.webp differ
diff --git a/src/weekly/2023/assets/1693144546217.webp b/src/weekly/2023/assets/1693144546217.webp
new file mode 100644
index 0000000000..dcaebe99e7
Binary files /dev/null and b/src/weekly/2023/assets/1693144546217.webp differ
diff --git a/src/weekly/2023/assets/1693144567525.webp b/src/weekly/2023/assets/1693144567525.webp
new file mode 100644
index 0000000000..cb8dd0a881
Binary files /dev/null and b/src/weekly/2023/assets/1693144567525.webp differ
diff --git a/src/weekly/2023/assets/1693144622188.webp b/src/weekly/2023/assets/1693144622188.webp
new file mode 100644
index 0000000000..7f7fb16000
Binary files /dev/null and b/src/weekly/2023/assets/1693144622188.webp differ
diff --git a/src/weekly/2023/assets/1693144652561.webp b/src/weekly/2023/assets/1693144652561.webp
new file mode 100644
index 0000000000..ea2c56cd92
Binary files /dev/null and b/src/weekly/2023/assets/1693144652561.webp differ
diff --git a/src/weekly/2023/assets/1693144675827.webp b/src/weekly/2023/assets/1693144675827.webp
new file mode 100644
index 0000000000..ecfe51343f
Binary files /dev/null and b/src/weekly/2023/assets/1693144675827.webp differ
diff --git a/src/weekly/2023/assets/1693144718679.webp b/src/weekly/2023/assets/1693144718679.webp
new file mode 100644
index 0000000000..91ce52a8d5
Binary files /dev/null and b/src/weekly/2023/assets/1693144718679.webp differ
diff --git a/src/weekly/2023/assets/1693144768535.webp b/src/weekly/2023/assets/1693144768535.webp
new file mode 100644
index 0000000000..656486c4c9
Binary files /dev/null and b/src/weekly/2023/assets/1693144768535.webp differ
diff --git a/src/weekly/2023/assets/1693144786483.webp b/src/weekly/2023/assets/1693144786483.webp
new file mode 100644
index 0000000000..0440285c00
Binary files /dev/null and b/src/weekly/2023/assets/1693144786483.webp differ
diff --git a/src/weekly/2023/assets/1693144805646.webp b/src/weekly/2023/assets/1693144805646.webp
new file mode 100644
index 0000000000..cbe4f5759f
Binary files /dev/null and b/src/weekly/2023/assets/1693144805646.webp differ
diff --git a/src/weekly/2023/assets/1693144871919.webp b/src/weekly/2023/assets/1693144871919.webp
new file mode 100644
index 0000000000..09623d9254
Binary files /dev/null and b/src/weekly/2023/assets/1693144871919.webp differ
diff --git a/src/weekly/2023/assets/1693144904313.webp b/src/weekly/2023/assets/1693144904313.webp
new file mode 100644
index 0000000000..7de58cf466
Binary files /dev/null and b/src/weekly/2023/assets/1693144904313.webp differ
diff --git a/src/weekly/2023/assets/1693144995723.webp b/src/weekly/2023/assets/1693144995723.webp
new file mode 100644
index 0000000000..04548bff9a
Binary files /dev/null and b/src/weekly/2023/assets/1693144995723.webp differ
diff --git a/src/weekly/2023/assets/1693145603095.webp b/src/weekly/2023/assets/1693145603095.webp
new file mode 100644
index 0000000000..6e7dbb2c6c
Binary files /dev/null and b/src/weekly/2023/assets/1693145603095.webp differ
diff --git a/src/weekly/2023/assets/1693200076553.webp b/src/weekly/2023/assets/1693200076553.webp
new file mode 100644
index 0000000000..76cc7d8023
Binary files /dev/null and b/src/weekly/2023/assets/1693200076553.webp differ
diff --git a/src/weekly/2023/assets/1693200183918.webp b/src/weekly/2023/assets/1693200183918.webp
new file mode 100644
index 0000000000..8c7c314bfb
Binary files /dev/null and b/src/weekly/2023/assets/1693200183918.webp differ
diff --git a/src/weekly/2023/assets/1693200234101.webp b/src/weekly/2023/assets/1693200234101.webp
new file mode 100644
index 0000000000..15e65e8f86
Binary files /dev/null and b/src/weekly/2023/assets/1693200234101.webp differ
diff --git a/src/weekly/2023/assets/1693200276259.webp b/src/weekly/2023/assets/1693200276259.webp
new file mode 100644
index 0000000000..f281aadfb2
Binary files /dev/null and b/src/weekly/2023/assets/1693200276259.webp differ
diff --git a/src/weekly/2023/assets/1693200314558.webp b/src/weekly/2023/assets/1693200314558.webp
new file mode 100644
index 0000000000..5d08d3b98d
Binary files /dev/null and b/src/weekly/2023/assets/1693200314558.webp differ
diff --git a/src/weekly/2023/assets/1693200352218.webp b/src/weekly/2023/assets/1693200352218.webp
new file mode 100644
index 0000000000..5716fc44c4
Binary files /dev/null and b/src/weekly/2023/assets/1693200352218.webp differ
diff --git a/src/weekly/2023/assets/1693227832276.webp b/src/weekly/2023/assets/1693227832276.webp
new file mode 100644
index 0000000000..46705cf0f8
Binary files /dev/null and b/src/weekly/2023/assets/1693227832276.webp differ
diff --git a/src/weekly/2023/assets/1693230661300.webp b/src/weekly/2023/assets/1693230661300.webp
new file mode 100644
index 0000000000..95bda2d334
Binary files /dev/null and b/src/weekly/2023/assets/1693230661300.webp differ
diff --git a/src/weekly/2023/assets/1693268061437.webp b/src/weekly/2023/assets/1693268061437.webp
new file mode 100644
index 0000000000..1a288591e8
Binary files /dev/null and b/src/weekly/2023/assets/1693268061437.webp differ
diff --git a/src/weekly/2023/assets/1693268208239.webp b/src/weekly/2023/assets/1693268208239.webp
new file mode 100644
index 0000000000..0e25d42376
Binary files /dev/null and b/src/weekly/2023/assets/1693268208239.webp differ
diff --git a/src/weekly/2023/assets/1693268253046.webp b/src/weekly/2023/assets/1693268253046.webp
new file mode 100644
index 0000000000..c2782b8183
Binary files /dev/null and b/src/weekly/2023/assets/1693268253046.webp differ
diff --git a/src/weekly/2023/assets/1693268778391.webp b/src/weekly/2023/assets/1693268778391.webp
new file mode 100644
index 0000000000..aff612dec0
Binary files /dev/null and b/src/weekly/2023/assets/1693268778391.webp differ
diff --git a/src/weekly/2023/assets/1693268832733.webp b/src/weekly/2023/assets/1693268832733.webp
new file mode 100644
index 0000000000..b8d7a5e5ba
Binary files /dev/null and b/src/weekly/2023/assets/1693268832733.webp differ
diff --git a/src/weekly/2023/assets/1693354558650.webp b/src/weekly/2023/assets/1693354558650.webp
new file mode 100644
index 0000000000..040519251f
Binary files /dev/null and b/src/weekly/2023/assets/1693354558650.webp differ
diff --git a/src/weekly/2023/assets/1693354588749.webp b/src/weekly/2023/assets/1693354588749.webp
new file mode 100644
index 0000000000..8d2224197c
Binary files /dev/null and b/src/weekly/2023/assets/1693354588749.webp differ
diff --git a/src/weekly/2023/assets/1693354621982.webp b/src/weekly/2023/assets/1693354621982.webp
new file mode 100644
index 0000000000..600f3b7077
Binary files /dev/null and b/src/weekly/2023/assets/1693354621982.webp differ
diff --git a/src/weekly/2023/assets/1693527386371.webp b/src/weekly/2023/assets/1693527386371.webp
new file mode 100644
index 0000000000..08f909caf8
Binary files /dev/null and b/src/weekly/2023/assets/1693527386371.webp differ
diff --git a/src/weekly/2023/assets/1693527566834.webp b/src/weekly/2023/assets/1693527566834.webp
new file mode 100644
index 0000000000..88937bc9bc
Binary files /dev/null and b/src/weekly/2023/assets/1693527566834.webp differ
diff --git a/src/weekly/2023/assets/1693556784310.webp b/src/weekly/2023/assets/1693556784310.webp
new file mode 100644
index 0000000000..37fe682513
Binary files /dev/null and b/src/weekly/2023/assets/1693556784310.webp differ
diff --git a/src/weekly/2023/assets/1693557437416.webp b/src/weekly/2023/assets/1693557437416.webp
new file mode 100644
index 0000000000..6f35f5ad21
Binary files /dev/null and b/src/weekly/2023/assets/1693557437416.webp differ
diff --git a/src/weekly/2023/assets/1693557757726.webp b/src/weekly/2023/assets/1693557757726.webp
new file mode 100644
index 0000000000..b3f8453a3b
Binary files /dev/null and b/src/weekly/2023/assets/1693557757726.webp differ
diff --git a/src/weekly/2023/assets/1693635105652.webp b/src/weekly/2023/assets/1693635105652.webp
new file mode 100644
index 0000000000..b39041b596
Binary files /dev/null and b/src/weekly/2023/assets/1693635105652.webp differ
diff --git a/src/weekly/2023/assets/1693635519202.webp b/src/weekly/2023/assets/1693635519202.webp
new file mode 100644
index 0000000000..63e342bd4c
Binary files /dev/null and b/src/weekly/2023/assets/1693635519202.webp differ
diff --git a/src/weekly/2023/assets/1693806555043.webp b/src/weekly/2023/assets/1693806555043.webp
new file mode 100644
index 0000000000..0be4649410
Binary files /dev/null and b/src/weekly/2023/assets/1693806555043.webp differ
diff --git a/src/weekly/2023/assets/1693872900975.webp b/src/weekly/2023/assets/1693872900975.webp
new file mode 100644
index 0000000000..552cdbfb3a
Binary files /dev/null and b/src/weekly/2023/assets/1693872900975.webp differ
diff --git a/src/weekly/2023/assets/1693873231875.webp b/src/weekly/2023/assets/1693873231875.webp
new file mode 100644
index 0000000000..c3ff7e1eb5
Binary files /dev/null and b/src/weekly/2023/assets/1693873231875.webp differ
diff --git a/src/weekly/2023/assets/1693873527795.webp b/src/weekly/2023/assets/1693873527795.webp
new file mode 100644
index 0000000000..78b597aa9a
Binary files /dev/null and b/src/weekly/2023/assets/1693873527795.webp differ
diff --git a/src/weekly/2023/assets/1693873680114.webp b/src/weekly/2023/assets/1693873680114.webp
new file mode 100644
index 0000000000..00f73e6f6e
Binary files /dev/null and b/src/weekly/2023/assets/1693873680114.webp differ
diff --git a/src/weekly/2023/assets/1693879899895.webp b/src/weekly/2023/assets/1693879899895.webp
new file mode 100644
index 0000000000..b87b79c3e7
Binary files /dev/null and b/src/weekly/2023/assets/1693879899895.webp differ
diff --git a/src/weekly/2023/assets/1693880304431.webp b/src/weekly/2023/assets/1693880304431.webp
new file mode 100644
index 0000000000..5dbb7d5830
Binary files /dev/null and b/src/weekly/2023/assets/1693880304431.webp differ
diff --git a/src/weekly/2023/assets/1693880680696.webp b/src/weekly/2023/assets/1693880680696.webp
new file mode 100644
index 0000000000..62c7d5f068
Binary files /dev/null and b/src/weekly/2023/assets/1693880680696.webp differ
diff --git a/src/weekly/2023/assets/1693958767707.webp b/src/weekly/2023/assets/1693958767707.webp
new file mode 100644
index 0000000000..5fed6cefb7
Binary files /dev/null and b/src/weekly/2023/assets/1693958767707.webp differ
diff --git a/src/weekly/2023/assets/1693958801945.webp b/src/weekly/2023/assets/1693958801945.webp
new file mode 100644
index 0000000000..e13474dc13
Binary files /dev/null and b/src/weekly/2023/assets/1693958801945.webp differ
diff --git a/src/weekly/2023/assets/1693958840698.webp b/src/weekly/2023/assets/1693958840698.webp
new file mode 100644
index 0000000000..65f9370b1f
Binary files /dev/null and b/src/weekly/2023/assets/1693958840698.webp differ
diff --git a/src/weekly/2023/assets/1693958880565.webp b/src/weekly/2023/assets/1693958880565.webp
new file mode 100644
index 0000000000..948d2c72ca
Binary files /dev/null and b/src/weekly/2023/assets/1693958880565.webp differ
diff --git a/src/weekly/2023/assets/1693958907803.webp b/src/weekly/2023/assets/1693958907803.webp
new file mode 100644
index 0000000000..36dcdd3dfc
Binary files /dev/null and b/src/weekly/2023/assets/1693958907803.webp differ
diff --git a/src/weekly/2023/assets/1693958977192.webp b/src/weekly/2023/assets/1693958977192.webp
new file mode 100644
index 0000000000..56c13ee6f5
Binary files /dev/null and b/src/weekly/2023/assets/1693958977192.webp differ
diff --git a/src/weekly/2023/assets/1693959124809.webp b/src/weekly/2023/assets/1693959124809.webp
new file mode 100644
index 0000000000..fdfdc7acc7
Binary files /dev/null and b/src/weekly/2023/assets/1693959124809.webp differ
diff --git a/src/weekly/2023/assets/1693959286821.webp b/src/weekly/2023/assets/1693959286821.webp
new file mode 100644
index 0000000000..2e172392ec
Binary files /dev/null and b/src/weekly/2023/assets/1693959286821.webp differ
diff --git a/src/weekly/2023/assets/1693989839748.webp b/src/weekly/2023/assets/1693989839748.webp
new file mode 100644
index 0000000000..d9a80daf5d
Binary files /dev/null and b/src/weekly/2023/assets/1693989839748.webp differ
diff --git a/src/weekly/2023/assets/1694007548056.webp b/src/weekly/2023/assets/1694007548056.webp
new file mode 100644
index 0000000000..06aa733ffd
Binary files /dev/null and b/src/weekly/2023/assets/1694007548056.webp differ
diff --git a/src/weekly/2023/assets/1694045669849.webp b/src/weekly/2023/assets/1694045669849.webp
new file mode 100644
index 0000000000..81fdb14bba
Binary files /dev/null and b/src/weekly/2023/assets/1694045669849.webp differ
diff --git a/src/weekly/2023/assets/1694045709392.webp b/src/weekly/2023/assets/1694045709392.webp
new file mode 100644
index 0000000000..7777778f10
Binary files /dev/null and b/src/weekly/2023/assets/1694045709392.webp differ
diff --git a/src/weekly/2023/assets/1694045739609.webp b/src/weekly/2023/assets/1694045739609.webp
new file mode 100644
index 0000000000..24fe3f962a
Binary files /dev/null and b/src/weekly/2023/assets/1694045739609.webp differ
diff --git a/src/weekly/2023/assets/1694045793670.webp b/src/weekly/2023/assets/1694045793670.webp
new file mode 100644
index 0000000000..30ff700a35
Binary files /dev/null and b/src/weekly/2023/assets/1694045793670.webp differ
diff --git a/src/weekly/2023/assets/1694045837586.webp b/src/weekly/2023/assets/1694045837586.webp
new file mode 100644
index 0000000000..9108c51057
Binary files /dev/null and b/src/weekly/2023/assets/1694045837586.webp differ
diff --git a/src/weekly/2023/assets/1694045873807.webp b/src/weekly/2023/assets/1694045873807.webp
new file mode 100644
index 0000000000..13461420d6
Binary files /dev/null and b/src/weekly/2023/assets/1694045873807.webp differ
diff --git a/src/weekly/2023/assets/1694045950763.webp b/src/weekly/2023/assets/1694045950763.webp
new file mode 100644
index 0000000000..08d52517f9
Binary files /dev/null and b/src/weekly/2023/assets/1694045950763.webp differ
diff --git a/src/weekly/2023/assets/1694046003402.webp b/src/weekly/2023/assets/1694046003402.webp
new file mode 100644
index 0000000000..787bed0b49
Binary files /dev/null and b/src/weekly/2023/assets/1694046003402.webp differ
diff --git a/src/weekly/2023/assets/1694046035369.webp b/src/weekly/2023/assets/1694046035369.webp
new file mode 100644
index 0000000000..078ba8c750
Binary files /dev/null and b/src/weekly/2023/assets/1694046035369.webp differ
diff --git a/src/weekly/2023/assets/1694128985102.webp b/src/weekly/2023/assets/1694128985102.webp
new file mode 100644
index 0000000000..1a8ffcd28e
Binary files /dev/null and b/src/weekly/2023/assets/1694128985102.webp differ
diff --git a/src/weekly/2023/assets/1694129504604.webp b/src/weekly/2023/assets/1694129504604.webp
new file mode 100644
index 0000000000..f3051e9311
Binary files /dev/null and b/src/weekly/2023/assets/1694129504604.webp differ
diff --git a/src/weekly/2023/assets/1694129558790.webp b/src/weekly/2023/assets/1694129558790.webp
new file mode 100644
index 0000000000..cb92c7aa19
Binary files /dev/null and b/src/weekly/2023/assets/1694129558790.webp differ
diff --git a/src/weekly/2023/assets/1694129639443.webp b/src/weekly/2023/assets/1694129639443.webp
new file mode 100644
index 0000000000..3890cb06c5
Binary files /dev/null and b/src/weekly/2023/assets/1694129639443.webp differ
diff --git a/src/weekly/2023/assets/1694130232043.webp b/src/weekly/2023/assets/1694130232043.webp
new file mode 100644
index 0000000000..7b4fe2c4cb
Binary files /dev/null and b/src/weekly/2023/assets/1694130232043.webp differ
diff --git a/src/weekly/2023/assets/1694130586104.webp b/src/weekly/2023/assets/1694130586104.webp
new file mode 100644
index 0000000000..245a5588aa
Binary files /dev/null and b/src/weekly/2023/assets/1694130586104.webp differ
diff --git a/src/weekly/2023/assets/1694130876606.webp b/src/weekly/2023/assets/1694130876606.webp
new file mode 100644
index 0000000000..520487543d
Binary files /dev/null and b/src/weekly/2023/assets/1694130876606.webp differ
diff --git a/src/weekly/2023/assets/1694152475926.webp b/src/weekly/2023/assets/1694152475926.webp
new file mode 100644
index 0000000000..b715e4b23f
Binary files /dev/null and b/src/weekly/2023/assets/1694152475926.webp differ
diff --git a/src/weekly/2023/assets/1694153285620.webp b/src/weekly/2023/assets/1694153285620.webp
new file mode 100644
index 0000000000..da33c5d66e
Binary files /dev/null and b/src/weekly/2023/assets/1694153285620.webp differ
diff --git a/src/weekly/2023/assets/1694154328205.webp b/src/weekly/2023/assets/1694154328205.webp
new file mode 100644
index 0000000000..3d162d73ea
Binary files /dev/null and b/src/weekly/2023/assets/1694154328205.webp differ
diff --git a/src/weekly/2023/assets/1694356824401.webp b/src/weekly/2023/assets/1694356824401.webp
new file mode 100644
index 0000000000..8d6f9bd290
Binary files /dev/null and b/src/weekly/2023/assets/1694356824401.webp differ
diff --git a/src/weekly/2023/assets/1694356862230.webp b/src/weekly/2023/assets/1694356862230.webp
new file mode 100644
index 0000000000..5ccd04d711
Binary files /dev/null and b/src/weekly/2023/assets/1694356862230.webp differ
diff --git a/src/weekly/2023/assets/1694388392866.webp b/src/weekly/2023/assets/1694388392866.webp
new file mode 100644
index 0000000000..cc8ed70338
Binary files /dev/null and b/src/weekly/2023/assets/1694388392866.webp differ
diff --git a/src/weekly/2023/assets/1694388444840.webp b/src/weekly/2023/assets/1694388444840.webp
new file mode 100644
index 0000000000..16795c740c
Binary files /dev/null and b/src/weekly/2023/assets/1694388444840.webp differ
diff --git a/src/weekly/2023/assets/1694388489782.webp b/src/weekly/2023/assets/1694388489782.webp
new file mode 100644
index 0000000000..325385cee4
Binary files /dev/null and b/src/weekly/2023/assets/1694388489782.webp differ
diff --git a/src/weekly/2023/assets/1694388736952.webp b/src/weekly/2023/assets/1694388736952.webp
new file mode 100644
index 0000000000..d2a0a6a774
Binary files /dev/null and b/src/weekly/2023/assets/1694388736952.webp differ
diff --git a/src/weekly/2023/assets/1694389024194.webp b/src/weekly/2023/assets/1694389024194.webp
new file mode 100644
index 0000000000..a06a128bfd
Binary files /dev/null and b/src/weekly/2023/assets/1694389024194.webp differ
diff --git a/src/weekly/2023/assets/1694389152477.webp b/src/weekly/2023/assets/1694389152477.webp
new file mode 100644
index 0000000000..50be2c653c
Binary files /dev/null and b/src/weekly/2023/assets/1694389152477.webp differ
diff --git a/src/weekly/2023/assets/1694390519558.webp b/src/weekly/2023/assets/1694390519558.webp
new file mode 100644
index 0000000000..7abcc777f1
Binary files /dev/null and b/src/weekly/2023/assets/1694390519558.webp differ
diff --git a/src/weekly/2023/assets/1694390548096.webp b/src/weekly/2023/assets/1694390548096.webp
new file mode 100644
index 0000000000..b21902021c
Binary files /dev/null and b/src/weekly/2023/assets/1694390548096.webp differ
diff --git a/src/weekly/2023/assets/1694390769310.webp b/src/weekly/2023/assets/1694390769310.webp
new file mode 100644
index 0000000000..9fa655481b
Binary files /dev/null and b/src/weekly/2023/assets/1694390769310.webp differ
diff --git a/src/weekly/2023/assets/1694391373421.webp b/src/weekly/2023/assets/1694391373421.webp
new file mode 100644
index 0000000000..3092948fd0
Binary files /dev/null and b/src/weekly/2023/assets/1694391373421.webp differ
diff --git a/src/weekly/2023/assets/1694476451647.webp b/src/weekly/2023/assets/1694476451647.webp
new file mode 100644
index 0000000000..4b758feb79
Binary files /dev/null and b/src/weekly/2023/assets/1694476451647.webp differ
diff --git a/src/weekly/2023/assets/1694476494321.webp b/src/weekly/2023/assets/1694476494321.webp
new file mode 100644
index 0000000000..f6893e703d
Binary files /dev/null and b/src/weekly/2023/assets/1694476494321.webp differ
diff --git a/src/weekly/2023/assets/1694476546323.webp b/src/weekly/2023/assets/1694476546323.webp
new file mode 100644
index 0000000000..999ad91f62
Binary files /dev/null and b/src/weekly/2023/assets/1694476546323.webp differ
diff --git a/src/weekly/2023/assets/1694476585427.webp b/src/weekly/2023/assets/1694476585427.webp
new file mode 100644
index 0000000000..2cf2892a0c
Binary files /dev/null and b/src/weekly/2023/assets/1694476585427.webp differ
diff --git a/src/weekly/2023/assets/1694476618572.webp b/src/weekly/2023/assets/1694476618572.webp
new file mode 100644
index 0000000000..c3faa4b1ac
Binary files /dev/null and b/src/weekly/2023/assets/1694476618572.webp differ
diff --git a/src/weekly/2023/assets/1694476667904.webp b/src/weekly/2023/assets/1694476667904.webp
new file mode 100644
index 0000000000..d2af64dc4f
Binary files /dev/null and b/src/weekly/2023/assets/1694476667904.webp differ
diff --git a/src/weekly/2023/assets/1694476703078.webp b/src/weekly/2023/assets/1694476703078.webp
new file mode 100644
index 0000000000..65670f5b82
Binary files /dev/null and b/src/weekly/2023/assets/1694476703078.webp differ
diff --git a/src/weekly/2023/assets/1694476726541.webp b/src/weekly/2023/assets/1694476726541.webp
new file mode 100644
index 0000000000..bc10a0703e
Binary files /dev/null and b/src/weekly/2023/assets/1694476726541.webp differ
diff --git a/src/weekly/2023/assets/1694476767200.webp b/src/weekly/2023/assets/1694476767200.webp
new file mode 100644
index 0000000000..d8eef3b252
Binary files /dev/null and b/src/weekly/2023/assets/1694476767200.webp differ
diff --git a/src/weekly/2023/assets/1694476808383.webp b/src/weekly/2023/assets/1694476808383.webp
new file mode 100644
index 0000000000..bd331f3f75
Binary files /dev/null and b/src/weekly/2023/assets/1694476808383.webp differ
diff --git a/src/weekly/2023/assets/1694476838686.webp b/src/weekly/2023/assets/1694476838686.webp
new file mode 100644
index 0000000000..aa8398498c
Binary files /dev/null and b/src/weekly/2023/assets/1694476838686.webp differ
diff --git a/src/weekly/2023/assets/1694476868291.webp b/src/weekly/2023/assets/1694476868291.webp
new file mode 100644
index 0000000000..efd648937d
Binary files /dev/null and b/src/weekly/2023/assets/1694476868291.webp differ
diff --git a/src/weekly/2023/assets/1694477896036.webp b/src/weekly/2023/assets/1694477896036.webp
new file mode 100644
index 0000000000..502a831949
Binary files /dev/null and b/src/weekly/2023/assets/1694477896036.webp differ
diff --git a/src/weekly/2023/assets/1694478496664.webp b/src/weekly/2023/assets/1694478496664.webp
new file mode 100644
index 0000000000..4f67eb4a8f
Binary files /dev/null and b/src/weekly/2023/assets/1694478496664.webp differ
diff --git a/src/weekly/2023/assets/1694479428453.webp b/src/weekly/2023/assets/1694479428453.webp
new file mode 100644
index 0000000000..1b57efae1c
Binary files /dev/null and b/src/weekly/2023/assets/1694479428453.webp differ
diff --git a/src/weekly/2023/assets/1694488059398.webp b/src/weekly/2023/assets/1694488059398.webp
new file mode 100644
index 0000000000..03a3bcea77
Binary files /dev/null and b/src/weekly/2023/assets/1694488059398.webp differ
diff --git a/src/weekly/2023/assets/1694488288681.webp b/src/weekly/2023/assets/1694488288681.webp
new file mode 100644
index 0000000000..566dbe5cc0
Binary files /dev/null and b/src/weekly/2023/assets/1694488288681.webp differ
diff --git a/src/weekly/2023/assets/1694517818971.webp b/src/weekly/2023/assets/1694517818971.webp
new file mode 100644
index 0000000000..43e7b54dde
Binary files /dev/null and b/src/weekly/2023/assets/1694517818971.webp differ
diff --git a/src/weekly/2023/assets/1694518048137.webp b/src/weekly/2023/assets/1694518048137.webp
new file mode 100644
index 0000000000..f12226a687
Binary files /dev/null and b/src/weekly/2023/assets/1694518048137.webp differ
diff --git a/src/weekly/2023/assets/1694518162388.webp b/src/weekly/2023/assets/1694518162388.webp
new file mode 100644
index 0000000000..e62666f711
Binary files /dev/null and b/src/weekly/2023/assets/1694518162388.webp differ
diff --git a/src/weekly/2023/assets/1694518376166.webp b/src/weekly/2023/assets/1694518376166.webp
new file mode 100644
index 0000000000..5feeb777d8
Binary files /dev/null and b/src/weekly/2023/assets/1694518376166.webp differ
diff --git a/src/weekly/2023/assets/1694518686460.webp b/src/weekly/2023/assets/1694518686460.webp
new file mode 100644
index 0000000000..0575b8ee27
Binary files /dev/null and b/src/weekly/2023/assets/1694518686460.webp differ
diff --git a/src/weekly/2023/assets/1694518963641.webp b/src/weekly/2023/assets/1694518963641.webp
new file mode 100644
index 0000000000..a7a7b4b172
Binary files /dev/null and b/src/weekly/2023/assets/1694518963641.webp differ
diff --git a/src/weekly/2023/assets/1694563407366.webp b/src/weekly/2023/assets/1694563407366.webp
new file mode 100644
index 0000000000..aa6063656f
Binary files /dev/null and b/src/weekly/2023/assets/1694563407366.webp differ
diff --git a/src/weekly/2023/assets/1694563749220.webp b/src/weekly/2023/assets/1694563749220.webp
new file mode 100644
index 0000000000..53ba4aa452
Binary files /dev/null and b/src/weekly/2023/assets/1694563749220.webp differ
diff --git a/src/weekly/2023/assets/1694563887081.webp b/src/weekly/2023/assets/1694563887081.webp
new file mode 100644
index 0000000000..17627f24b3
Binary files /dev/null and b/src/weekly/2023/assets/1694563887081.webp differ
diff --git a/src/weekly/2023/assets/1694564249865.webp b/src/weekly/2023/assets/1694564249865.webp
new file mode 100644
index 0000000000..ab952095f2
Binary files /dev/null and b/src/weekly/2023/assets/1694564249865.webp differ
diff --git a/src/weekly/2023/assets/1694564655510.webp b/src/weekly/2023/assets/1694564655510.webp
new file mode 100644
index 0000000000..b7797d1aa9
Binary files /dev/null and b/src/weekly/2023/assets/1694564655510.webp differ
diff --git a/src/weekly/2023/assets/1694648658881.webp b/src/weekly/2023/assets/1694648658881.webp
new file mode 100644
index 0000000000..5e64025083
Binary files /dev/null and b/src/weekly/2023/assets/1694648658881.webp differ
diff --git a/src/weekly/2023/assets/1694650845929.webp b/src/weekly/2023/assets/1694650845929.webp
new file mode 100644
index 0000000000..71f8820551
Binary files /dev/null and b/src/weekly/2023/assets/1694650845929.webp differ
diff --git a/src/weekly/2023/assets/1694653832104.webp b/src/weekly/2023/assets/1694653832104.webp
new file mode 100644
index 0000000000..798beacbc3
Binary files /dev/null and b/src/weekly/2023/assets/1694653832104.webp differ
diff --git a/src/weekly/2023/assets/1695020246006.webp b/src/weekly/2023/assets/1695020246006.webp
new file mode 100644
index 0000000000..e7f3e86dd3
Binary files /dev/null and b/src/weekly/2023/assets/1695020246006.webp differ
diff --git a/src/weekly/2023/assets/1695021839312.webp b/src/weekly/2023/assets/1695021839312.webp
new file mode 100644
index 0000000000..dfe06e26f6
Binary files /dev/null and b/src/weekly/2023/assets/1695021839312.webp differ
diff --git a/src/weekly/2023/assets/1695081640931.webp b/src/weekly/2023/assets/1695081640931.webp
new file mode 100644
index 0000000000..307b511bf3
Binary files /dev/null and b/src/weekly/2023/assets/1695081640931.webp differ
diff --git a/src/weekly/2023/assets/1695081830349.webp b/src/weekly/2023/assets/1695081830349.webp
new file mode 100644
index 0000000000..5b27a221fa
Binary files /dev/null and b/src/weekly/2023/assets/1695081830349.webp differ
diff --git a/src/weekly/2023/assets/1695082724336.webp b/src/weekly/2023/assets/1695082724336.webp
new file mode 100644
index 0000000000..eed24a463a
Binary files /dev/null and b/src/weekly/2023/assets/1695082724336.webp differ
diff --git a/src/weekly/2023/assets/1695132672885.webp b/src/weekly/2023/assets/1695132672885.webp
new file mode 100644
index 0000000000..4ee014689a
Binary files /dev/null and b/src/weekly/2023/assets/1695132672885.webp differ
diff --git a/src/weekly/2023/assets/1695133235107.webp b/src/weekly/2023/assets/1695133235107.webp
new file mode 100644
index 0000000000..f437847252
Binary files /dev/null and b/src/weekly/2023/assets/1695133235107.webp differ
diff --git a/src/weekly/2023/assets/1695167550597.webp b/src/weekly/2023/assets/1695167550597.webp
new file mode 100644
index 0000000000..cb861e60d3
Binary files /dev/null and b/src/weekly/2023/assets/1695167550597.webp differ
diff --git a/src/weekly/2023/assets/1695167590367.webp b/src/weekly/2023/assets/1695167590367.webp
new file mode 100644
index 0000000000..7c05b5b920
Binary files /dev/null and b/src/weekly/2023/assets/1695167590367.webp differ
diff --git a/src/weekly/2023/assets/1695168150961.webp b/src/weekly/2023/assets/1695168150961.webp
new file mode 100644
index 0000000000..b61861331f
Binary files /dev/null and b/src/weekly/2023/assets/1695168150961.webp differ
diff --git a/src/weekly/2023/assets/1695168676584.webp b/src/weekly/2023/assets/1695168676584.webp
new file mode 100644
index 0000000000..1de6385297
Binary files /dev/null and b/src/weekly/2023/assets/1695168676584.webp differ
diff --git a/src/weekly/2023/assets/1695168807414.webp b/src/weekly/2023/assets/1695168807414.webp
new file mode 100644
index 0000000000..daeaf16dd1
Binary files /dev/null and b/src/weekly/2023/assets/1695168807414.webp differ
diff --git a/src/weekly/2023/assets/1695175329694.webp b/src/weekly/2023/assets/1695175329694.webp
new file mode 100644
index 0000000000..b4b2f99c2d
Binary files /dev/null and b/src/weekly/2023/assets/1695175329694.webp differ
diff --git a/src/weekly/2023/assets/1695177438928.webp b/src/weekly/2023/assets/1695177438928.webp
new file mode 100644
index 0000000000..9c3110bff0
Binary files /dev/null and b/src/weekly/2023/assets/1695177438928.webp differ
diff --git a/src/weekly/2023/assets/1695254544777.webp b/src/weekly/2023/assets/1695254544777.webp
new file mode 100644
index 0000000000..6d0fc95c07
Binary files /dev/null and b/src/weekly/2023/assets/1695254544777.webp differ
diff --git a/src/weekly/2023/assets/1695275359711.webp b/src/weekly/2023/assets/1695275359711.webp
new file mode 100644
index 0000000000..e892e8debb
Binary files /dev/null and b/src/weekly/2023/assets/1695275359711.webp differ
diff --git a/src/weekly/2023/assets/1695275910133.webp b/src/weekly/2023/assets/1695275910133.webp
new file mode 100644
index 0000000000..9dd0a8f2e0
Binary files /dev/null and b/src/weekly/2023/assets/1695275910133.webp differ
diff --git a/src/weekly/2023/assets/1695276074424.webp b/src/weekly/2023/assets/1695276074424.webp
new file mode 100644
index 0000000000..d952d98eec
Binary files /dev/null and b/src/weekly/2023/assets/1695276074424.webp differ
diff --git a/src/weekly/2023/assets/1695278993808.webp b/src/weekly/2023/assets/1695278993808.webp
new file mode 100644
index 0000000000..33bb6722a6
Binary files /dev/null and b/src/weekly/2023/assets/1695278993808.webp differ
diff --git a/src/weekly/2023/assets/1695279363267.webp b/src/weekly/2023/assets/1695279363267.webp
new file mode 100644
index 0000000000..3b7dd9ff15
Binary files /dev/null and b/src/weekly/2023/assets/1695279363267.webp differ
diff --git a/src/weekly/2023/assets/1695281733436.webp b/src/weekly/2023/assets/1695281733436.webp
new file mode 100644
index 0000000000..d9848e98a3
Binary files /dev/null and b/src/weekly/2023/assets/1695281733436.webp differ
diff --git a/src/weekly/2023/assets/1695607160427.webp b/src/weekly/2023/assets/1695607160427.webp
new file mode 100644
index 0000000000..60dd3f3609
Binary files /dev/null and b/src/weekly/2023/assets/1695607160427.webp differ
diff --git a/src/weekly/2023/assets/1695607160706.webp b/src/weekly/2023/assets/1695607160706.webp
new file mode 100644
index 0000000000..b32b301819
Binary files /dev/null and b/src/weekly/2023/assets/1695607160706.webp differ
diff --git a/src/weekly/2023/assets/1695689051489.webp b/src/weekly/2023/assets/1695689051489.webp
new file mode 100644
index 0000000000..f9693eef9a
Binary files /dev/null and b/src/weekly/2023/assets/1695689051489.webp differ
diff --git a/src/weekly/2023/assets/1695706914976.webp b/src/weekly/2023/assets/1695706914976.webp
new file mode 100644
index 0000000000..84829d1377
Binary files /dev/null and b/src/weekly/2023/assets/1695706914976.webp differ
diff --git a/src/weekly/2023/assets/1695708292480.webp b/src/weekly/2023/assets/1695708292480.webp
new file mode 100644
index 0000000000..74356cfb77
Binary files /dev/null and b/src/weekly/2023/assets/1695708292480.webp differ
diff --git a/src/weekly/2023/assets/1695708292796.webp b/src/weekly/2023/assets/1695708292796.webp
new file mode 100644
index 0000000000..74356cfb77
Binary files /dev/null and b/src/weekly/2023/assets/1695708292796.webp differ
diff --git a/src/weekly/2023/assets/1695708301057.webp b/src/weekly/2023/assets/1695708301057.webp
new file mode 100644
index 0000000000..74356cfb77
Binary files /dev/null and b/src/weekly/2023/assets/1695708301057.webp differ
diff --git a/src/weekly/2023/assets/1695708618216.webp b/src/weekly/2023/assets/1695708618216.webp
new file mode 100644
index 0000000000..0ab2c7076b
Binary files /dev/null and b/src/weekly/2023/assets/1695708618216.webp differ
diff --git a/src/weekly/2023/assets/1695709746411.webp b/src/weekly/2023/assets/1695709746411.webp
new file mode 100644
index 0000000000..e004740da1
Binary files /dev/null and b/src/weekly/2023/assets/1695709746411.webp differ
diff --git a/src/weekly/2023/assets/1695709833569.webp b/src/weekly/2023/assets/1695709833569.webp
new file mode 100644
index 0000000000..d99e1280b9
Binary files /dev/null and b/src/weekly/2023/assets/1695709833569.webp differ
diff --git a/src/weekly/2023/assets/1696648457125.webp b/src/weekly/2023/assets/1696648457125.webp
new file mode 100644
index 0000000000..e02b74a7e7
Binary files /dev/null and b/src/weekly/2023/assets/1696648457125.webp differ
diff --git a/src/weekly/2023/assets/1696754415579.webp b/src/weekly/2023/assets/1696754415579.webp
new file mode 100644
index 0000000000..bef4027f41
Binary files /dev/null and b/src/weekly/2023/assets/1696754415579.webp differ
diff --git a/src/weekly/2023/assets/1696814760761.webp b/src/weekly/2023/assets/1696814760761.webp
new file mode 100644
index 0000000000..a6699373f4
Binary files /dev/null and b/src/weekly/2023/assets/1696814760761.webp differ
diff --git a/src/weekly/2023/assets/1697068442166.webp b/src/weekly/2023/assets/1697068442166.webp
new file mode 100644
index 0000000000..1de97e9b07
Binary files /dev/null and b/src/weekly/2023/assets/1697068442166.webp differ
diff --git a/src/weekly/2023/assets/1697068601381.webp b/src/weekly/2023/assets/1697068601381.webp
new file mode 100644
index 0000000000..44427b2b70
Binary files /dev/null and b/src/weekly/2023/assets/1697068601381.webp differ
diff --git a/src/weekly/2023/assets/1697068683590.webp b/src/weekly/2023/assets/1697068683590.webp
new file mode 100644
index 0000000000..a5d4ab66ae
Binary files /dev/null and b/src/weekly/2023/assets/1697068683590.webp differ
diff --git a/src/weekly/2023/assets/1697414116651.webp b/src/weekly/2023/assets/1697414116651.webp
new file mode 100644
index 0000000000..060948eae8
Binary files /dev/null and b/src/weekly/2023/assets/1697414116651.webp differ
diff --git a/src/weekly/2023/assets/1697414223005.webp b/src/weekly/2023/assets/1697414223005.webp
new file mode 100644
index 0000000000..2d5cbaf526
Binary files /dev/null and b/src/weekly/2023/assets/1697414223005.webp differ
diff --git a/src/weekly/2023/assets/1697414801784-1700093744491-3.webp b/src/weekly/2023/assets/1697414801784-1700093744491-3.webp
new file mode 100644
index 0000000000..ba3b54d291
Binary files /dev/null and b/src/weekly/2023/assets/1697414801784-1700093744491-3.webp differ
diff --git a/src/weekly/2023/assets/1697414801784.webp b/src/weekly/2023/assets/1697414801784.webp
new file mode 100644
index 0000000000..ba3b54d291
Binary files /dev/null and b/src/weekly/2023/assets/1697414801784.webp differ
diff --git a/src/weekly/2023/assets/1697500683908.webp b/src/weekly/2023/assets/1697500683908.webp
new file mode 100644
index 0000000000..f9f709b3a1
Binary files /dev/null and b/src/weekly/2023/assets/1697500683908.webp differ
diff --git a/src/weekly/2023/assets/1697500895032.webp b/src/weekly/2023/assets/1697500895032.webp
new file mode 100644
index 0000000000..053a0dc4a8
Binary files /dev/null and b/src/weekly/2023/assets/1697500895032.webp differ
diff --git a/src/weekly/2023/assets/1698018989642.webp b/src/weekly/2023/assets/1698018989642.webp
new file mode 100644
index 0000000000..ea7a14ea2b
Binary files /dev/null and b/src/weekly/2023/assets/1698018989642.webp differ
diff --git a/src/weekly/2023/assets/1698019044967.webp b/src/weekly/2023/assets/1698019044967.webp
new file mode 100644
index 0000000000..2fce6a6368
Binary files /dev/null and b/src/weekly/2023/assets/1698019044967.webp differ
diff --git a/src/weekly/2023/assets/1698019068536.webp b/src/weekly/2023/assets/1698019068536.webp
new file mode 100644
index 0000000000..c93d28828c
Binary files /dev/null and b/src/weekly/2023/assets/1698019068536.webp differ
diff --git a/src/weekly/2023/assets/1698024568506.webp b/src/weekly/2023/assets/1698024568506.webp
new file mode 100644
index 0000000000..6d41a80f1e
Binary files /dev/null and b/src/weekly/2023/assets/1698024568506.webp differ
diff --git a/src/weekly/2023/assets/1698219897662.webp b/src/weekly/2023/assets/1698219897662.webp
new file mode 100644
index 0000000000..1d633f8aa0
Binary files /dev/null and b/src/weekly/2023/assets/1698219897662.webp differ
diff --git a/src/weekly/2023/assets/1698225838203.webp b/src/weekly/2023/assets/1698225838203.webp
new file mode 100644
index 0000000000..344e5ed1f7
Binary files /dev/null and b/src/weekly/2023/assets/1698225838203.webp differ
diff --git a/src/weekly/2023/assets/1698231645558.webp b/src/weekly/2023/assets/1698231645558.webp
new file mode 100644
index 0000000000..82dd156569
Binary files /dev/null and b/src/weekly/2023/assets/1698231645558.webp differ
diff --git a/src/weekly/2023/assets/1698710853463.webp b/src/weekly/2023/assets/1698710853463.webp
new file mode 100644
index 0000000000..9ede07090b
Binary files /dev/null and b/src/weekly/2023/assets/1698710853463.webp differ
diff --git a/src/weekly/2023/assets/1698711069092.webp b/src/weekly/2023/assets/1698711069092.webp
new file mode 100644
index 0000000000..8712d01261
Binary files /dev/null and b/src/weekly/2023/assets/1698711069092.webp differ
diff --git a/src/weekly/2023/assets/1698711246187.webp b/src/weekly/2023/assets/1698711246187.webp
new file mode 100644
index 0000000000..c6b329effb
Binary files /dev/null and b/src/weekly/2023/assets/1698711246187.webp differ
diff --git a/src/weekly/2023/assets/1699315176826.webp b/src/weekly/2023/assets/1699315176826.webp
new file mode 100644
index 0000000000..cb54b46e66
Binary files /dev/null and b/src/weekly/2023/assets/1699315176826.webp differ
diff --git a/src/weekly/2023/assets/1699315408680.webp b/src/weekly/2023/assets/1699315408680.webp
new file mode 100644
index 0000000000..f3a690ebe0
Binary files /dev/null and b/src/weekly/2023/assets/1699315408680.webp differ
diff --git a/src/weekly/2023/assets/1699315673860.webp b/src/weekly/2023/assets/1699315673860.webp
new file mode 100644
index 0000000000..ec99004354
Binary files /dev/null and b/src/weekly/2023/assets/1699315673860.webp differ
diff --git a/src/weekly/2023/assets/1699833915226.webp b/src/weekly/2023/assets/1699833915226.webp
new file mode 100644
index 0000000000..f2c488e330
Binary files /dev/null and b/src/weekly/2023/assets/1699833915226.webp differ
diff --git a/src/weekly/2023/assets/1699833915230.webp b/src/weekly/2023/assets/1699833915230.webp
new file mode 100644
index 0000000000..0a59f02a51
Binary files /dev/null and b/src/weekly/2023/assets/1699833915230.webp differ
diff --git a/src/weekly/2023/assets/1699833990352.webp b/src/weekly/2023/assets/1699833990352.webp
new file mode 100644
index 0000000000..f84d77caa2
Binary files /dev/null and b/src/weekly/2023/assets/1699833990352.webp differ
diff --git a/src/weekly/2023/assets/1699834119840.webp b/src/weekly/2023/assets/1699834119840.webp
new file mode 100644
index 0000000000..549c6208f0
Binary files /dev/null and b/src/weekly/2023/assets/1699834119840.webp differ
diff --git a/src/weekly/2023/assets/1699834120129.webp b/src/weekly/2023/assets/1699834120129.webp
new file mode 100644
index 0000000000..f4d174bb58
Binary files /dev/null and b/src/weekly/2023/assets/1699834120129.webp differ
diff --git a/src/weekly/2023/assets/1699834459487.webp b/src/weekly/2023/assets/1699834459487.webp
new file mode 100644
index 0000000000..b505c40bb4
Binary files /dev/null and b/src/weekly/2023/assets/1699834459487.webp differ
diff --git a/src/weekly/2023/assets/1699834518561.webp b/src/weekly/2023/assets/1699834518561.webp
new file mode 100644
index 0000000000..2bb98af2e4
Binary files /dev/null and b/src/weekly/2023/assets/1699834518561.webp differ
diff --git a/src/weekly/2023/assets/1699834571341.webp b/src/weekly/2023/assets/1699834571341.webp
new file mode 100644
index 0000000000..499bddeb02
Binary files /dev/null and b/src/weekly/2023/assets/1699834571341.webp differ
diff --git a/src/weekly/2023/assets/1699834659664.webp b/src/weekly/2023/assets/1699834659664.webp
new file mode 100644
index 0000000000..0ff467f57b
Binary files /dev/null and b/src/weekly/2023/assets/1699834659664.webp differ
diff --git a/src/weekly/2023/assets/1699834704985.webp b/src/weekly/2023/assets/1699834704985.webp
new file mode 100644
index 0000000000..2895431f19
Binary files /dev/null and b/src/weekly/2023/assets/1699834704985.webp differ
diff --git a/src/weekly/2023/assets/1699834725615.webp b/src/weekly/2023/assets/1699834725615.webp
new file mode 100644
index 0000000000..1edd999402
Binary files /dev/null and b/src/weekly/2023/assets/1699834725615.webp differ
diff --git a/src/weekly/2023/assets/1699834784205.webp b/src/weekly/2023/assets/1699834784205.webp
new file mode 100644
index 0000000000..a1a8bf95c6
Binary files /dev/null and b/src/weekly/2023/assets/1699834784205.webp differ
diff --git a/src/weekly/2023/assets/1699834829456.webp b/src/weekly/2023/assets/1699834829456.webp
new file mode 100644
index 0000000000..75f1999637
Binary files /dev/null and b/src/weekly/2023/assets/1699834829456.webp differ
diff --git a/src/weekly/2023/assets/1699834855036.webp b/src/weekly/2023/assets/1699834855036.webp
new file mode 100644
index 0000000000..f52f2b4c72
Binary files /dev/null and b/src/weekly/2023/assets/1699834855036.webp differ
diff --git a/src/weekly/2023/assets/1699834875204.webp b/src/weekly/2023/assets/1699834875204.webp
new file mode 100644
index 0000000000..ab0467bc06
Binary files /dev/null and b/src/weekly/2023/assets/1699834875204.webp differ
diff --git a/src/weekly/2023/assets/1699834898649.webp b/src/weekly/2023/assets/1699834898649.webp
new file mode 100644
index 0000000000..b254fcd980
Binary files /dev/null and b/src/weekly/2023/assets/1699834898649.webp differ
diff --git a/src/weekly/2023/assets/1699834917816.webp b/src/weekly/2023/assets/1699834917816.webp
new file mode 100644
index 0000000000..2fa70af8b7
Binary files /dev/null and b/src/weekly/2023/assets/1699834917816.webp differ
diff --git a/src/weekly/2023/assets/1700093161251.webp b/src/weekly/2023/assets/1700093161251.webp
new file mode 100644
index 0000000000..870dc222cb
Binary files /dev/null and b/src/weekly/2023/assets/1700093161251.webp differ
diff --git a/src/weekly/2023/assets/1700093824758.webp b/src/weekly/2023/assets/1700093824758.webp
new file mode 100644
index 0000000000..adb054ce10
Binary files /dev/null and b/src/weekly/2023/assets/1700093824758.webp differ
diff --git a/src/weekly/2023/assets/1700094007510.webp b/src/weekly/2023/assets/1700094007510.webp
new file mode 100644
index 0000000000..5722ffc342
Binary files /dev/null and b/src/weekly/2023/assets/1700094007510.webp differ
diff --git a/src/weekly/2023/assets/1700094045165.webp b/src/weekly/2023/assets/1700094045165.webp
new file mode 100644
index 0000000000..ba2ce54a12
Binary files /dev/null and b/src/weekly/2023/assets/1700094045165.webp differ
diff --git a/src/weekly/2023/assets/1700180196054.webp b/src/weekly/2023/assets/1700180196054.webp
new file mode 100644
index 0000000000..5c96311ebb
Binary files /dev/null and b/src/weekly/2023/assets/1700180196054.webp differ
diff --git a/src/weekly/2023/assets/1700180196380.webp b/src/weekly/2023/assets/1700180196380.webp
new file mode 100644
index 0000000000..2dfbbd6758
Binary files /dev/null and b/src/weekly/2023/assets/1700180196380.webp differ
diff --git a/src/weekly/2023/assets/1700180327504.webp b/src/weekly/2023/assets/1700180327504.webp
new file mode 100644
index 0000000000..af1a179e93
Binary files /dev/null and b/src/weekly/2023/assets/1700180327504.webp differ
diff --git a/src/weekly/2023/assets/1700180327839.webp b/src/weekly/2023/assets/1700180327839.webp
new file mode 100644
index 0000000000..6b45fa2951
Binary files /dev/null and b/src/weekly/2023/assets/1700180327839.webp differ
diff --git a/src/weekly/2023/assets/1700180409419.webp b/src/weekly/2023/assets/1700180409419.webp
new file mode 100644
index 0000000000..a48242879c
Binary files /dev/null and b/src/weekly/2023/assets/1700180409419.webp differ
diff --git a/src/weekly/2023/assets/1700438906241.webp b/src/weekly/2023/assets/1700438906241.webp
new file mode 100644
index 0000000000..c922be7d66
Binary files /dev/null and b/src/weekly/2023/assets/1700438906241.webp differ
diff --git a/src/weekly/2023/assets/1700438907224.webp b/src/weekly/2023/assets/1700438907224.webp
new file mode 100644
index 0000000000..e5905bb805
Binary files /dev/null and b/src/weekly/2023/assets/1700438907224.webp differ
diff --git a/src/weekly/2023/assets/1700439290948.webp b/src/weekly/2023/assets/1700439290948.webp
new file mode 100644
index 0000000000..cb9879126f
Binary files /dev/null and b/src/weekly/2023/assets/1700439290948.webp differ
diff --git a/src/weekly/2023/assets/1700439707593.webp b/src/weekly/2023/assets/1700439707593.webp
new file mode 100644
index 0000000000..02a047313a
Binary files /dev/null and b/src/weekly/2023/assets/1700439707593.webp differ
diff --git a/src/weekly/2023/assets/1700439707947.webp b/src/weekly/2023/assets/1700439707947.webp
new file mode 100644
index 0000000000..a9ca1d8088
Binary files /dev/null and b/src/weekly/2023/assets/1700439707947.webp differ
diff --git a/src/weekly/2023/assets/1700439870917.webp b/src/weekly/2023/assets/1700439870917.webp
new file mode 100644
index 0000000000..4b6b0be65b
Binary files /dev/null and b/src/weekly/2023/assets/1700439870917.webp differ
diff --git a/src/weekly/2023/assets/1700525288808.webp b/src/weekly/2023/assets/1700525288808.webp
new file mode 100644
index 0000000000..741265a2ed
Binary files /dev/null and b/src/weekly/2023/assets/1700525288808.webp differ
diff --git a/src/weekly/2023/assets/1700525289123.webp b/src/weekly/2023/assets/1700525289123.webp
new file mode 100644
index 0000000000..023c9b757b
Binary files /dev/null and b/src/weekly/2023/assets/1700525289123.webp differ
diff --git a/src/weekly/2023/assets/1700526083607.webp b/src/weekly/2023/assets/1700526083607.webp
new file mode 100644
index 0000000000..46a78b8237
Binary files /dev/null and b/src/weekly/2023/assets/1700526083607.webp differ
diff --git a/src/weekly/2023/assets/1700526084251.webp b/src/weekly/2023/assets/1700526084251.webp
new file mode 100644
index 0000000000..2cf925b1e4
Binary files /dev/null and b/src/weekly/2023/assets/1700526084251.webp differ
diff --git a/src/weekly/2023/assets/1700526145306.webp b/src/weekly/2023/assets/1700526145306.webp
new file mode 100644
index 0000000000..f3e01af7a6
Binary files /dev/null and b/src/weekly/2023/assets/1700526145306.webp differ
diff --git a/src/weekly/2023/assets/1700612920217.webp b/src/weekly/2023/assets/1700612920217.webp
new file mode 100644
index 0000000000..3611b26007
Binary files /dev/null and b/src/weekly/2023/assets/1700612920217.webp differ
diff --git a/src/weekly/2023/assets/1700613542669.webp b/src/weekly/2023/assets/1700613542669.webp
new file mode 100644
index 0000000000..b2938bd066
Binary files /dev/null and b/src/weekly/2023/assets/1700613542669.webp differ
diff --git a/src/weekly/2023/assets/1700650259960.webp b/src/weekly/2023/assets/1700650259960.webp
new file mode 100644
index 0000000000..925d7e5c7c
Binary files /dev/null and b/src/weekly/2023/assets/1700650259960.webp differ
diff --git a/src/weekly/2023/assets/1700650468361.webp b/src/weekly/2023/assets/1700650468361.webp
new file mode 100644
index 0000000000..17fa268e68
Binary files /dev/null and b/src/weekly/2023/assets/1700650468361.webp differ
diff --git a/src/weekly/2023/assets/1700651901784.webp b/src/weekly/2023/assets/1700651901784.webp
new file mode 100644
index 0000000000..942d635570
Binary files /dev/null and b/src/weekly/2023/assets/1700651901784.webp differ
diff --git a/src/weekly/2023/assets/1700653238916.webp b/src/weekly/2023/assets/1700653238916.webp
new file mode 100644
index 0000000000..4ea89e5cea
Binary files /dev/null and b/src/weekly/2023/assets/1700653238916.webp differ
diff --git a/src/weekly/2023/assets/1700654862398.webp b/src/weekly/2023/assets/1700654862398.webp
new file mode 100644
index 0000000000..cf21b57c1f
Binary files /dev/null and b/src/weekly/2023/assets/1700654862398.webp differ
diff --git a/src/weekly/2023/assets/1700655034001.webp b/src/weekly/2023/assets/1700655034001.webp
new file mode 100644
index 0000000000..4c828a8a8f
Binary files /dev/null and b/src/weekly/2023/assets/1700655034001.webp differ
diff --git a/src/weekly/2023/assets/1701044155334.webp b/src/weekly/2023/assets/1701044155334.webp
new file mode 100644
index 0000000000..d48df08a0f
Binary files /dev/null and b/src/weekly/2023/assets/1701044155334.webp differ
diff --git a/src/weekly/2023/assets/1701044183959.webp b/src/weekly/2023/assets/1701044183959.webp
new file mode 100644
index 0000000000..cecb4ef9cd
Binary files /dev/null and b/src/weekly/2023/assets/1701044183959.webp differ
diff --git a/src/weekly/2023/assets/1701044207270.webp b/src/weekly/2023/assets/1701044207270.webp
new file mode 100644
index 0000000000..2f991f9e4b
Binary files /dev/null and b/src/weekly/2023/assets/1701044207270.webp differ
diff --git a/src/weekly/2023/assets/1701044263852.webp b/src/weekly/2023/assets/1701044263852.webp
new file mode 100644
index 0000000000..d504871d5a
Binary files /dev/null and b/src/weekly/2023/assets/1701044263852.webp differ
diff --git a/src/weekly/2023/assets/1701044292822.webp b/src/weekly/2023/assets/1701044292822.webp
new file mode 100644
index 0000000000..44f84a95aa
Binary files /dev/null and b/src/weekly/2023/assets/1701044292822.webp differ
diff --git a/src/weekly/2023/assets/1701044315505.webp b/src/weekly/2023/assets/1701044315505.webp
new file mode 100644
index 0000000000..e4674494b6
Binary files /dev/null and b/src/weekly/2023/assets/1701044315505.webp differ
diff --git a/src/weekly/2023/assets/1701044365947.webp b/src/weekly/2023/assets/1701044365947.webp
new file mode 100644
index 0000000000..a5f39d2ff8
Binary files /dev/null and b/src/weekly/2023/assets/1701044365947.webp differ
diff --git a/src/weekly/2023/assets/1701044396509.webp b/src/weekly/2023/assets/1701044396509.webp
new file mode 100644
index 0000000000..5e1818b1da
Binary files /dev/null and b/src/weekly/2023/assets/1701044396509.webp differ
diff --git a/src/weekly/2023/assets/1701044420284.webp b/src/weekly/2023/assets/1701044420284.webp
new file mode 100644
index 0000000000..9fb0c10dc1
Binary files /dev/null and b/src/weekly/2023/assets/1701044420284.webp differ
diff --git a/src/weekly/2023/assets/1701161594214.webp b/src/weekly/2023/assets/1701161594214.webp
new file mode 100644
index 0000000000..3eed1bb592
Binary files /dev/null and b/src/weekly/2023/assets/1701161594214.webp differ
diff --git a/src/weekly/2023/assets/1701161653798.webp b/src/weekly/2023/assets/1701161653798.webp
new file mode 100644
index 0000000000..eef7aa19aa
Binary files /dev/null and b/src/weekly/2023/assets/1701161653798.webp differ
diff --git a/src/weekly/2023/assets/1701161707973.webp b/src/weekly/2023/assets/1701161707973.webp
new file mode 100644
index 0000000000..f6430eda59
Binary files /dev/null and b/src/weekly/2023/assets/1701161707973.webp differ
diff --git a/src/weekly/2023/assets/1701172174852.webp b/src/weekly/2023/assets/1701172174852.webp
new file mode 100644
index 0000000000..81ab49407c
Binary files /dev/null and b/src/weekly/2023/assets/1701172174852.webp differ
diff --git a/src/weekly/2023/assets/1701172218653.webp b/src/weekly/2023/assets/1701172218653.webp
new file mode 100644
index 0000000000..4d695d3f1c
Binary files /dev/null and b/src/weekly/2023/assets/1701172218653.webp differ
diff --git a/src/weekly/2023/assets/1701172656126.webp b/src/weekly/2023/assets/1701172656126.webp
new file mode 100644
index 0000000000..d04bb7eb9d
Binary files /dev/null and b/src/weekly/2023/assets/1701172656126.webp differ
diff --git a/src/weekly/2023/assets/1701216467867.webp b/src/weekly/2023/assets/1701216467867.webp
new file mode 100644
index 0000000000..c1b774d2f8
Binary files /dev/null and b/src/weekly/2023/assets/1701216467867.webp differ
diff --git a/src/weekly/2023/assets/1701216514698.webp b/src/weekly/2023/assets/1701216514698.webp
new file mode 100644
index 0000000000..4674d3f39f
Binary files /dev/null and b/src/weekly/2023/assets/1701216514698.webp differ
diff --git a/src/weekly/2023/assets/1701216557313.webp b/src/weekly/2023/assets/1701216557313.webp
new file mode 100644
index 0000000000..dd3605664a
Binary files /dev/null and b/src/weekly/2023/assets/1701216557313.webp differ
diff --git a/src/weekly/2023/assets/1701216731016.webp b/src/weekly/2023/assets/1701216731016.webp
new file mode 100644
index 0000000000..b69838fe29
Binary files /dev/null and b/src/weekly/2023/assets/1701216731016.webp differ
diff --git a/src/weekly/2023/assets/1701216835527.webp b/src/weekly/2023/assets/1701216835527.webp
new file mode 100644
index 0000000000..9f50f6f5e1
Binary files /dev/null and b/src/weekly/2023/assets/1701216835527.webp differ
diff --git a/src/weekly/2023/assets/1701649151563.webp b/src/weekly/2023/assets/1701649151563.webp
new file mode 100644
index 0000000000..cbd0ebda40
Binary files /dev/null and b/src/weekly/2023/assets/1701649151563.webp differ
diff --git a/src/weekly/2023/assets/1701649527248.webp b/src/weekly/2023/assets/1701649527248.webp
new file mode 100644
index 0000000000..10be03a0ed
Binary files /dev/null and b/src/weekly/2023/assets/1701649527248.webp differ
diff --git a/src/weekly/2023/assets/1701669145924.webp b/src/weekly/2023/assets/1701669145924.webp
new file mode 100644
index 0000000000..2ec23447b2
Binary files /dev/null and b/src/weekly/2023/assets/1701669145924.webp differ
diff --git a/src/weekly/2023/assets/1702857917761.webp b/src/weekly/2023/assets/1702857917761.webp
new file mode 100644
index 0000000000..d74499f817
Binary files /dev/null and b/src/weekly/2023/assets/1702857917761.webp differ
diff --git a/src/weekly/2023/assets/1702858039400.webp b/src/weekly/2023/assets/1702858039400.webp
new file mode 100644
index 0000000000..228f08aeb1
Binary files /dev/null and b/src/weekly/2023/assets/1702858039400.webp differ
diff --git a/src/weekly/2023/assets/1702858071180.webp b/src/weekly/2023/assets/1702858071180.webp
new file mode 100644
index 0000000000..a31e1e1513
Binary files /dev/null and b/src/weekly/2023/assets/1702858071180.webp differ
diff --git a/src/weekly/2023/assets/1702858118855.webp b/src/weekly/2023/assets/1702858118855.webp
new file mode 100644
index 0000000000..a69b373fe2
Binary files /dev/null and b/src/weekly/2023/assets/1702858118855.webp differ
diff --git a/src/weekly/2023/assets/1702858154497.webp b/src/weekly/2023/assets/1702858154497.webp
new file mode 100644
index 0000000000..d578f9aa8c
Binary files /dev/null and b/src/weekly/2023/assets/1702858154497.webp differ
diff --git a/src/weekly/2023/assets/1702858177282.webp b/src/weekly/2023/assets/1702858177282.webp
new file mode 100644
index 0000000000..be0fee7932
Binary files /dev/null and b/src/weekly/2023/assets/1702858177282.webp differ
diff --git a/src/weekly/2023/assets/1b39fdfb-c506-43b8-85fd-ae33b1e66dbf.webp b/src/weekly/2023/assets/1b39fdfb-c506-43b8-85fd-ae33b1e66dbf.webp
new file mode 100644
index 0000000000..710739699c
Binary files /dev/null and b/src/weekly/2023/assets/1b39fdfb-c506-43b8-85fd-ae33b1e66dbf.webp differ
diff --git a/src/weekly/2023/assets/1bf3089c-6bae-4a2c-93d1-26d63e2b735e.webp b/src/weekly/2023/assets/1bf3089c-6bae-4a2c-93d1-26d63e2b735e.webp
new file mode 100644
index 0000000000..52be13cd80
Binary files /dev/null and b/src/weekly/2023/assets/1bf3089c-6bae-4a2c-93d1-26d63e2b735e.webp differ
diff --git a/src/weekly/2023/assets/202305191620335fc079845a0c44.53mhutj32ew0.webp b/src/weekly/2023/assets/202305191620335fc079845a0c44.53mhutj32ew0.webp
new file mode 100644
index 0000000000..8812a8de55
Binary files /dev/null and b/src/weekly/2023/assets/202305191620335fc079845a0c44.53mhutj32ew0.webp differ
diff --git a/src/weekly/2023/assets/20a958d4-175f-413a-8afb-8759ce6506c9.webp b/src/weekly/2023/assets/20a958d4-175f-413a-8afb-8759ce6506c9.webp
new file mode 100644
index 0000000000..3b5dfb367c
Binary files /dev/null and b/src/weekly/2023/assets/20a958d4-175f-413a-8afb-8759ce6506c9.webp differ
diff --git a/src/weekly/2023/assets/38a7dcc3-57e4-484f-91a5-3063c415a215.webp b/src/weekly/2023/assets/38a7dcc3-57e4-484f-91a5-3063c415a215.webp
new file mode 100644
index 0000000000..b639733ecd
Binary files /dev/null and b/src/weekly/2023/assets/38a7dcc3-57e4-484f-91a5-3063c415a215.webp differ
diff --git a/src/weekly/2023/assets/3a7bc998-f11b-4db2-93df-f566eb974d24.webp b/src/weekly/2023/assets/3a7bc998-f11b-4db2-93df-f566eb974d24.webp
new file mode 100644
index 0000000000..84236649e9
Binary files /dev/null and b/src/weekly/2023/assets/3a7bc998-f11b-4db2-93df-f566eb974d24.webp differ
diff --git a/src/weekly/2023/assets/53be3506-b9c5-4227-8b8d-aaca7eb85ae4.png b/src/weekly/2023/assets/53be3506-b9c5-4227-8b8d-aaca7eb85ae4.png
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/weekly/2023/assets/53be3506-b9c5-4227-8b8d-aaca7eb85ae4.webp b/src/weekly/2023/assets/53be3506-b9c5-4227-8b8d-aaca7eb85ae4.webp
new file mode 100644
index 0000000000..e237876100
Binary files /dev/null and b/src/weekly/2023/assets/53be3506-b9c5-4227-8b8d-aaca7eb85ae4.webp differ
diff --git a/src/weekly/2023/assets/687474703a2f2f63646e2e6b637a36362e636f6d2f64656d6f2e676966.gif b/src/weekly/2023/assets/687474703a2f2f63646e2e6b637a36362e636f6d2f64656d6f2e676966.gif
new file mode 100644
index 0000000000..46e5ae8c25
Binary files /dev/null and b/src/weekly/2023/assets/687474703a2f2f63646e2e6b637a36362e636f6d2f64656d6f2e676966.gif differ
diff --git a/src/weekly/2023/assets/6d86af63-0185-433f-8a04-12bb70b1bc84.webp b/src/weekly/2023/assets/6d86af63-0185-433f-8a04-12bb70b1bc84.webp
new file mode 100644
index 0000000000..174bcdabba
Binary files /dev/null and b/src/weekly/2023/assets/6d86af63-0185-433f-8a04-12bb70b1bc84.webp differ
diff --git a/src/weekly/2023/assets/7fbebd15-a814-47b9-b2e9-9ef78589e7b7.webp b/src/weekly/2023/assets/7fbebd15-a814-47b9-b2e9-9ef78589e7b7.webp
new file mode 100644
index 0000000000..98c0d7db4a
Binary files /dev/null and b/src/weekly/2023/assets/7fbebd15-a814-47b9-b2e9-9ef78589e7b7.webp differ
diff --git a/src/weekly/2023/assets/8c1cedfd-e1c4-42aa-bbf6-f634b41eac08.webp b/src/weekly/2023/assets/8c1cedfd-e1c4-42aa-bbf6-f634b41eac08.webp
new file mode 100644
index 0000000000..062ca0d237
Binary files /dev/null and b/src/weekly/2023/assets/8c1cedfd-e1c4-42aa-bbf6-f634b41eac08.webp differ
diff --git a/src/weekly/2023/assets/92fa3ef3-fe08-4613-877d-90880a8709c8.webp b/src/weekly/2023/assets/92fa3ef3-fe08-4613-877d-90880a8709c8.webp
new file mode 100644
index 0000000000..0495c5be8e
Binary files /dev/null and b/src/weekly/2023/assets/92fa3ef3-fe08-4613-877d-90880a8709c8.webp differ
diff --git a/src/weekly/2023/assets/963a47eb-f74f-41fa-b4d2-7c3b0bd853cb.webp b/src/weekly/2023/assets/963a47eb-f74f-41fa-b4d2-7c3b0bd853cb.webp
new file mode 100644
index 0000000000..83072a95db
Binary files /dev/null and b/src/weekly/2023/assets/963a47eb-f74f-41fa-b4d2-7c3b0bd853cb.webp differ
diff --git a/src/weekly/2023/assets/JavaPark-image.366htex06yw0.webp b/src/weekly/2023/assets/JavaPark-image.366htex06yw0.webp
new file mode 100644
index 0000000000..1ab3f0771c
Binary files /dev/null and b/src/weekly/2023/assets/JavaPark-image.366htex06yw0.webp differ
diff --git a/src/weekly/2023/assets/JavaPark-image.5mf528ww6ss0.webp b/src/weekly/2023/assets/JavaPark-image.5mf528ww6ss0.webp
new file mode 100644
index 0000000000..18cca26683
Binary files /dev/null and b/src/weekly/2023/assets/JavaPark-image.5mf528ww6ss0.webp differ
diff --git a/src/weekly/2023/assets/JavaPark.png b/src/weekly/2023/assets/JavaPark.png
new file mode 100644
index 0000000000..30df07026a
Binary files /dev/null and b/src/weekly/2023/assets/JavaPark.png differ
diff --git a/src/weekly/2023/assets/Markdown-here.png b/src/weekly/2023/assets/Markdown-here.png
new file mode 100644
index 0000000000..139eeae632
Binary files /dev/null and b/src/weekly/2023/assets/Markdown-here.png differ
diff --git a/src/weekly/2023/assets/ShareX_Screenshot.png b/src/weekly/2023/assets/ShareX_Screenshot.png
new file mode 100644
index 0000000000..2114c84133
Binary files /dev/null and b/src/weekly/2023/assets/ShareX_Screenshot.png differ
diff --git a/src/weekly/2023/assets/a56bcb6c-fd16-4fd4-9aab-4ae228c9de6b.png b/src/weekly/2023/assets/a56bcb6c-fd16-4fd4-9aab-4ae228c9de6b.png
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/weekly/2023/assets/a56bcb6c-fd16-4fd4-9aab-4ae228c9de6b.webp b/src/weekly/2023/assets/a56bcb6c-fd16-4fd4-9aab-4ae228c9de6b.webp
new file mode 100644
index 0000000000..d1e799e315
Binary files /dev/null and b/src/weekly/2023/assets/a56bcb6c-fd16-4fd4-9aab-4ae228c9de6b.webp differ
diff --git a/src/weekly/2023/assets/adguard.png b/src/weekly/2023/assets/adguard.png
new file mode 100644
index 0000000000..439fae1855
Binary files /dev/null and b/src/weekly/2023/assets/adguard.png differ
diff --git a/src/weekly/2023/assets/advanced-java.png b/src/weekly/2023/assets/advanced-java.png
new file mode 100644
index 0000000000..9367aac700
Binary files /dev/null and b/src/weekly/2023/assets/advanced-java.png differ
diff --git a/src/weekly/2023/assets/agent-gpt.png b/src/weekly/2023/assets/agent-gpt.png
new file mode 100644
index 0000000000..a74e64780c
Binary files /dev/null and b/src/weekly/2023/assets/agent-gpt.png differ
diff --git a/src/weekly/2023/assets/aitutu.png b/src/weekly/2023/assets/aitutu.png
new file mode 100644
index 0000000000..11f5371f09
Binary files /dev/null and b/src/weekly/2023/assets/aitutu.png differ
diff --git a/src/weekly/2023/assets/auto-gpt.gif b/src/weekly/2023/assets/auto-gpt.gif
new file mode 100644
index 0000000000..7415e3f508
Binary files /dev/null and b/src/weekly/2023/assets/auto-gpt.gif differ
diff --git a/src/weekly/2023/assets/badger.png b/src/weekly/2023/assets/badger.png
new file mode 100644
index 0000000000..d45986e235
Binary files /dev/null and b/src/weekly/2023/assets/badger.png differ
diff --git a/src/weekly/2023/assets/bandicam_cn.gif b/src/weekly/2023/assets/bandicam_cn.gif
new file mode 100644
index 0000000000..85730a84ab
Binary files /dev/null and b/src/weekly/2023/assets/bandicam_cn.gif differ
diff --git a/src/weekly/2023/assets/be25c6fb-fcd2-4bbc-802d-38dbab24054e.webp b/src/weekly/2023/assets/be25c6fb-fcd2-4bbc-802d-38dbab24054e.webp
new file mode 100644
index 0000000000..f84533cf93
Binary files /dev/null and b/src/weekly/2023/assets/be25c6fb-fcd2-4bbc-802d-38dbab24054e.webp differ
diff --git a/src/weekly/2023/assets/bigjpg.png b/src/weekly/2023/assets/bigjpg.png
new file mode 100644
index 0000000000..6d0a4bb381
Binary files /dev/null and b/src/weekly/2023/assets/bigjpg.png differ
diff --git a/src/weekly/2023/assets/bob.png b/src/weekly/2023/assets/bob.png
new file mode 100644
index 0000000000..a8dcabaaa3
Binary files /dev/null and b/src/weekly/2023/assets/bob.png differ
diff --git a/src/weekly/2023/assets/browserframe.png b/src/weekly/2023/assets/browserframe.png
new file mode 100644
index 0000000000..4c700e6b2e
Binary files /dev/null and b/src/weekly/2023/assets/browserframe.png differ
diff --git a/src/weekly/2023/assets/c72a7e17-8661-4393-89bb-0954d6fb51ac.webp b/src/weekly/2023/assets/c72a7e17-8661-4393-89bb-0954d6fb51ac.webp
new file mode 100644
index 0000000000..53118aac1b
Binary files /dev/null and b/src/weekly/2023/assets/c72a7e17-8661-4393-89bb-0954d6fb51ac.webp differ
diff --git a/src/weekly/2023/assets/cb285baf-3ea9-43ca-ac8f-34532fc9f1d9.webp b/src/weekly/2023/assets/cb285baf-3ea9-43ca-ac8f-34532fc9f1d9.webp
new file mode 100644
index 0000000000..5f3b6441c8
Binary files /dev/null and b/src/weekly/2023/assets/cb285baf-3ea9-43ca-ac8f-34532fc9f1d9.webp differ
diff --git a/src/weekly/2023/assets/cf2b85f9-53ab-426d-ba99-b7f957198c2d.webp b/src/weekly/2023/assets/cf2b85f9-53ab-426d-ba99-b7f957198c2d.webp
new file mode 100644
index 0000000000..9d3e059bbf
Binary files /dev/null and b/src/weekly/2023/assets/cf2b85f9-53ab-426d-ba99-b7f957198c2d.webp differ
diff --git a/src/weekly/2023/assets/chatgpt-next-web.png b/src/weekly/2023/assets/chatgpt-next-web.png
new file mode 100644
index 0000000000..55d1477396
Binary files /dev/null and b/src/weekly/2023/assets/chatgpt-next-web.png differ
diff --git a/src/weekly/2023/assets/cs-notes.png b/src/weekly/2023/assets/cs-notes.png
new file mode 100644
index 0000000000..886fc472b6
Binary files /dev/null and b/src/weekly/2023/assets/cs-notes.png differ
diff --git a/src/weekly/2023/assets/datastructure-algo.png b/src/weekly/2023/assets/datastructure-algo.png
new file mode 100644
index 0000000000..612ed3e34a
Binary files /dev/null and b/src/weekly/2023/assets/datastructure-algo.png differ
diff --git a/src/weekly/2023/assets/ddrun.png b/src/weekly/2023/assets/ddrun.png
new file mode 100644
index 0000000000..8cbcef0161
Binary files /dev/null and b/src/weekly/2023/assets/ddrun.png differ
diff --git a/src/weekly/2023/assets/deep-learning-500.png b/src/weekly/2023/assets/deep-learning-500.png
new file mode 100644
index 0000000000..bdb0da0fa6
Binary files /dev/null and b/src/weekly/2023/assets/deep-learning-500.png differ
diff --git a/src/weekly/2023/assets/demo.gif b/src/weekly/2023/assets/demo.gif
new file mode 100644
index 0000000000..0bd77b8c7a
Binary files /dev/null and b/src/weekly/2023/assets/demo.gif differ
diff --git a/src/weekly/2023/assets/design-patterns.png b/src/weekly/2023/assets/design-patterns.png
new file mode 100644
index 0000000000..b9cc9b693b
Binary files /dev/null and b/src/weekly/2023/assets/design-patterns.png differ
diff --git a/src/weekly/2023/assets/dimmyclub.png b/src/weekly/2023/assets/dimmyclub.png
new file mode 100644
index 0000000000..8822516a8f
Binary files /dev/null and b/src/weekly/2023/assets/dimmyclub.png differ
diff --git a/src/weekly/2023/assets/docsmall.png b/src/weekly/2023/assets/docsmall.png
new file mode 100644
index 0000000000..c090ae62ff
Binary files /dev/null and b/src/weekly/2023/assets/docsmall.png differ
diff --git a/src/weekly/2023/assets/e0420dc4-d4f7-450c-bbd8-2e8d2496dccb.webp b/src/weekly/2023/assets/e0420dc4-d4f7-450c-bbd8-2e8d2496dccb.webp
new file mode 100644
index 0000000000..7fac8af0b9
Binary files /dev/null and b/src/weekly/2023/assets/e0420dc4-d4f7-450c-bbd8-2e8d2496dccb.webp differ
diff --git a/src/weekly/2023/assets/edu-mirror.png b/src/weekly/2023/assets/edu-mirror.png
new file mode 100644
index 0000000000..4d4fc2cbc9
Binary files /dev/null and b/src/weekly/2023/assets/edu-mirror.png differ
diff --git a/src/weekly/2023/assets/ev-capture.png b/src/weekly/2023/assets/ev-capture.png
new file mode 100644
index 0000000000..eb2c087c0a
Binary files /dev/null and b/src/weekly/2023/assets/ev-capture.png differ
diff --git a/src/weekly/2023/assets/fastapi.png b/src/weekly/2023/assets/fastapi.png
new file mode 100644
index 0000000000..d9503f8893
Binary files /dev/null and b/src/weekly/2023/assets/fastapi.png differ
diff --git a/src/weekly/2023/assets/file-converter-usage.gif b/src/weekly/2023/assets/file-converter-usage.gif
new file mode 100644
index 0000000000..de4af49b64
Binary files /dev/null and b/src/weekly/2023/assets/file-converter-usage.gif differ
diff --git a/src/weekly/2023/assets/fnm.svg b/src/weekly/2023/assets/fnm.svg
new file mode 100644
index 0000000000..42c6cd3131
--- /dev/null
+++ b/src/weekly/2023/assets/fnm.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="740" height="429.07"><rect width="740" height="429.07" rx="5" ry="5" class="a"/><svg y="0%" x="0%"><circle cx="20" cy="20" r="6" fill="#ff5f58"/><circle cx="40" cy="20" r="6" fill="#ffbd2e"/><circle cx="60" cy="20" r="6" fill="#18c132"/></svg><svg height="369.07" viewBox="0 0 70 36.907" width="700" x="15" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="50"><style>@keyframes k{0%{transform:translateX(0)}.1%{transform:translateX(-70px)}.5%{transform:translateX(-140px)}1%{transform:translateX(-210px)}1.9%{transform:translateX(-280px)}2.4%{transform:translateX(-350px)}2.7%{transform:translateX(-420px)}3.7%{transform:translateX(-490px)}4.1%{transform:translateX(-560px)}5.1%{transform:translateX(-630px)}5.5%{transform:translateX(-700px)}6.4%{transform:translateX(-770px)}7%{transform:translateX(-840px)}7.4%{transform:translateX(-910px)}7.6%{transform:translateX(-980px)}7.9%{transform:translateX(-1050px)}8.6%{transform:translateX(-1120px)}9.5%{transform:translateX(-1190px)}10%{transform:translateX(-1260px)}10.4%{transform:translateX(-1330px)}11.6%{transform:translateX(-1400px)}12%{transform:translateX(-1470px)}12.8%{transform:translateX(-1540px)}13.4%{transform:translateX(-1610px)}14.1%{transform:translateX(-1680px)}14.7%{transform:translateX(-1750px)}15.1%{transform:translateX(-1820px)}15.9%{transform:translateX(-1890px)}16.7%{transform:translateX(-1960px)}17.6%{transform:translateX(-2030px)}18.5%{transform:translateX(-2100px)}19.6%{transform:translateX(-2170px)}20.1%{transform:translateX(-2240px)}20.7%{transform:translateX(-2310px)}20.9%{transform:translateX(-2380px)}21.2%{transform:translateX(-2590px)}21.6%{transform:translateX(-2660px)}21.8%{transform:translateX(-2730px)}22.5%{transform:translateX(-2800px)}23%{transform:translateX(-2870px)}23.9%{transform:translateX(-2940px)}24.8%{transform:translateX(-3010px)}25%{transform:translateX(-3080px)}25.3%{transform:translateX(-3150px)}26.4%{transform:translateX(-3220px)}27.1%{transform:translateX(-3290px)}27.6%{transform:translateX(-3360px)}28.7%{transform:translateX(-3430px)}29.4%{transform:translateX(-3500px)}29.7%{transform:translateX(-3570px)}30%{transform:translateX(-3640px)}31%{transform:translateX(-3710px)}32.1%{transform:translateX(-3780px)}32.8%{transform:translateX(-3850px)}33.5%{transform:translateX(-3990px)}33.9%{transform:translateX(-4060px)}34.9%{transform:translateX(-4130px)}35.6%{transform:translateX(-4200px)}36.5%{transform:translateX(-4270px)}36.8%{transform:translateX(-4340px)}37.1%{transform:translateX(-4410px)}38%{transform:translateX(-4480px)}39%{transform:translateX(-4550px)}39.7%{transform:translateX(-4620px)}40.7%{transform:translateX(-4690px)}41%{transform:translateX(-4760px)}41.9%{transform:translateX(-4830px)}42.5%{transform:translateX(-4900px)}67.5%{transform:translateX(-4970px)}68%{transform:translateX(-5040px)}68.7%{transform:translateX(-5110px)}69.2%{transform:translateX(-5180px)}70.1%{transform:translateX(-5250px)}71.2%{transform:translateX(-5320px)}72.1%{transform:translateX(-5390px)}73%{transform:translateX(-5460px)}73.4%{transform:translateX(-5530px)}74.3%{transform:translateX(-5670px)}74.8%{transform:translateX(-5740px)}75.5%{transform:translateX(-5810px)}76.5%{transform:translateX(-5880px)}77.4%{transform:translateX(-5950px)}78.3%{transform:translateX(-6020px)}78.7%{transform:translateX(-6090px)}79.1%{transform:translateX(-6160px)}79.9%{transform:translateX(-6230px)}81.1%{transform:translateX(-6300px)}to{transform:translateX(-6370px)}}.a{fill:#282d35}.f,.g,.h{fill:#71bef2;white-space:pre}.g,.h{fill:#b9c0cb}.h{fill:#66c2cd}</style><g font-family="Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace" font-size="1.67"><defs><symbol id="1"><text y="1.67" class="f">✡</text></symbol><symbol id="2"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eval</text></symbol><symbol id="3"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eval</text><text x="7.014" y="1.67" class="g">&quot;$(fnm</text></symbol><symbol id="4"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eval</text><text x="7.014" y="1.67" class="g">&quot;$(fnm</text><text x="14.028" y="1.67" class="g">env)&quot;</text></symbol><symbol id="5"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">f</text></symbol><symbol id="6"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">fn</text></symbol><symbol id="7"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">fnm</text></symbol><symbol id="8"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">fnm</text><text x="6.012" y="1.67" class="g">--version</text></symbol><symbol id="9"><text y="1.67" class="g">fnm</text><text x="4.008" y="1.67" class="g">1.33.1</text></symbol><symbol id="10"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">cat</text></symbol><symbol id="11"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">cat</text><text x="6.012" y="1.67" class="g">.node-version</text></symbol><symbol id="12"><text y="1.67" class="g">18.12.1</text></symbol><symbol id="13"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">fnm</text><text x="6.012" y="1.67" class="g">install</text></symbol><symbol id="14"><text y="1.67" class="g">Installing</text><text x="11.022" y="1.67" class="h">Node</text><text x="16.032" y="1.67" class="h">v18.12.1</text><text x="25.05" y="1.67" class="g">(x64)</text></symbol><symbol id="15"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">fnm</text><text x="6.012" y="1.67" class="g">use</text></symbol><symbol id="16"><text y="1.67" class="g">Using</text><text x="6.012" y="1.67" class="g">Node</text><text x="11.022" y="1.67" class="h">v18.12.1</text></symbol><symbol id="17"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">node</text></symbol><symbol id="18"><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">node</text><text x="7.014" y="1.67" class="g">-v</text></symbol><symbol id="19"><text y="1.67" class="g">v18.12.1</text></symbol><symbol id="a"><path fill="transparent" d="M0 0h70v18H0z"/></symbol><symbol id="b"><path fill="#6f7683" d="M0 0h1.102v2.171H0z"/></symbol></defs><path class="a" d="M0 0h70v36.907H0z"/><g style="animation-duration:10.605937s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)"><svg width="6440"><svg><use xlink:href="#a"/><use xlink:href="#b" x="-.004"/></svg><svg x="70"><use xlink:href="#a"/><use xlink:href="#b" x="1.996"/><use xlink:href="#1"/></svg><svg x="140"><use xlink:href="#a"/><use xlink:href="#b" x="2.996"/><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">e</text></svg><svg x="210"><use xlink:href="#a"/><use xlink:href="#b" x="3.996"/><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">ev</text></svg><svg x="280"><use xlink:href="#a"/><use xlink:href="#b" x="4.996"/><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eva</text></svg><svg x="350"><use xlink:href="#a"/><use xlink:href="#b" x="5.996"/><use xlink:href="#2"/></svg><svg x="420"><use xlink:href="#a"/><use xlink:href="#b" x="6.996"/><use xlink:href="#2"/></svg><svg x="490"><use xlink:href="#a"/><use xlink:href="#b" x="7.996"/><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eval</text><text x="7.014" y="1.67" class="g">&quot;</text></svg><svg x="560"><use xlink:href="#a"/><use xlink:href="#b" x="8.996"/><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eval</text><text x="7.014" y="1.67" class="g">&quot;$</text></svg><svg x="630"><use xlink:href="#a"/><use xlink:href="#b" x="9.996"/><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eval</text><text x="7.014" y="1.67" class="g">&quot;$(</text></svg><svg x="700"><use xlink:href="#a"/><use xlink:href="#b" x="10.996"/><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eval</text><text x="7.014" y="1.67" class="g">&quot;$(f</text></svg><svg x="770"><use xlink:href="#a"/><use xlink:href="#b" x="11.996"/><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eval</text><text x="7.014" y="1.67" class="g">&quot;$(fn</text></svg><svg x="840"><use xlink:href="#a"/><use xlink:href="#b" x="12.996"/><use xlink:href="#3"/></svg><svg x="910"><use xlink:href="#a"/><use xlink:href="#b" x="13.996"/><use xlink:href="#3"/></svg><svg x="980"><use xlink:href="#a"/><use xlink:href="#b" x="14.996"/><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eval</text><text x="7.014" y="1.67" class="g">&quot;$(fnm</text><text x="14.028" y="1.67" class="g">e</text></svg><svg x="1050"><use xlink:href="#a"/><use xlink:href="#b" x="15.996"/><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eval</text><text x="7.014" y="1.67" class="g">&quot;$(fnm</text><text x="14.028" y="1.67" class="g">en</text></svg><svg x="1120"><use xlink:href="#a"/><use xlink:href="#b" x="16.996"/><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eval</text><text x="7.014" y="1.67" class="g">&quot;$(fnm</text><text x="14.028" y="1.67" class="g">env</text></svg><svg x="1190"><use xlink:href="#a"/><use xlink:href="#b" x="17.996"/><text y="1.67" class="f">✡</text><text x="2.004" y="1.67" class="g">eval</text><text x="7.014" y="1.67" class="g">&quot;$(fnm</text><text x="14.028" y="1.67" class="g">env)</text></svg><svg x="1260"><use xlink:href="#a"/><use xlink:href="#b" x="18.996"/><use xlink:href="#4"/></svg><svg x="1330"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="2.146"/><use xlink:href="#4"/></svg><svg x="1400"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="2.146"/><use xlink:href="#4"/><use xlink:href="#1" y="2.171"/></svg><svg x="1470"><use xlink:href="#a"/><use xlink:href="#b" x="2.996" y="2.146"/><use xlink:href="#4"/><use xlink:href="#5" y="2.171"/></svg><svg x="1540"><use xlink:href="#a"/><use xlink:href="#b" x="3.996" y="2.146"/><use xlink:href="#4"/><use xlink:href="#6" y="2.171"/></svg><svg x="1610"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="2.146"/><use xlink:href="#4"/><use xlink:href="#7" y="2.171"/></svg><svg x="1680"><use xlink:href="#a"/><use xlink:href="#b" x="5.996" y="2.146"/><use xlink:href="#4"/><use xlink:href="#7" y="2.171"/></svg><svg x="1750"><use xlink:href="#a"/><use xlink:href="#b" x="6.996" y="2.146"/><use xlink:href="#4"/><text y="3.841" class="f">✡</text><text x="2.004" y="3.841" class="g">fnm</text><text x="6.012" y="3.841" class="g">-</text></svg><svg x="1820"><use xlink:href="#a"/><use xlink:href="#b" x="7.996" y="2.146"/><use xlink:href="#4"/><text y="3.841" class="f">✡</text><text x="2.004" y="3.841" class="g">fnm</text><text x="6.012" y="3.841" class="g">--</text></svg><svg x="1890"><use xlink:href="#a"/><use xlink:href="#b" x="8.996" y="2.146"/><use xlink:href="#4"/><text y="3.841" class="f">✡</text><text x="2.004" y="3.841" class="g">fnm</text><text x="6.012" y="3.841" class="g">--v</text></svg><svg x="1960"><use xlink:href="#a"/><use xlink:href="#b" x="9.996" y="2.146"/><use xlink:href="#4"/><text y="3.841" class="f">✡</text><text x="2.004" y="3.841" class="g">fnm</text><text x="6.012" y="3.841" class="g">--ve</text></svg><svg x="2030"><use xlink:href="#a"/><use xlink:href="#b" x="10.996" y="2.146"/><use xlink:href="#4"/><text y="3.841" class="f">✡</text><text x="2.004" y="3.841" class="g">fnm</text><text x="6.012" y="3.841" class="g">--ver</text></svg><svg x="2100"><use xlink:href="#a"/><use xlink:href="#b" x="11.996" y="2.146"/><use xlink:href="#4"/><text y="3.841" class="f">✡</text><text x="2.004" y="3.841" class="g">fnm</text><text x="6.012" y="3.841" class="g">--vers</text></svg><svg x="2170"><use xlink:href="#a"/><use xlink:href="#b" x="12.996" y="2.146"/><use xlink:href="#4"/><text y="3.841" class="f">✡</text><text x="2.004" y="3.841" class="g">fnm</text><text x="6.012" y="3.841" class="g">--versi</text></svg><svg x="2240"><use xlink:href="#a"/><use xlink:href="#b" x="13.996" y="2.146"/><use xlink:href="#4"/><text y="3.841" class="f">✡</text><text x="2.004" y="3.841" class="g">fnm</text><text x="6.012" y="3.841" class="g">--versio</text></svg><svg x="2310"><use xlink:href="#a"/><use xlink:href="#b" x="14.996" y="2.146"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/></svg><svg x="2380"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="4.317"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/></svg><svg x="2450"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/></svg><svg x="2520"><use xlink:href="#a"/><use xlink:href="#b" x=".996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#1" y="6.513"/></svg><svg x="2590"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#1" y="6.513"/></svg><svg x="2660"><use xlink:href="#a"/><use xlink:href="#b" x="2.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">c</text></svg><svg x="2730"><use xlink:href="#a"/><use xlink:href="#b" x="3.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">ca</text></svg><svg x="2800"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#10" y="6.513"/></svg><svg x="2870"><use xlink:href="#a"/><use xlink:href="#b" x="5.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#10" y="6.513"/></svg><svg x="2940"><use xlink:href="#a"/><use xlink:href="#b" x="6.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">cat</text><text x="6.012" y="8.183" class="g">.</text></svg><svg x="3010"><use xlink:href="#a"/><use xlink:href="#b" x="7.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">cat</text><text x="6.012" y="8.183" class="g">.n</text></svg><svg x="3080"><use xlink:href="#a"/><use xlink:href="#b" x="8.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">cat</text><text x="6.012" y="8.183" class="g">.no</text></svg><svg x="3150"><use xlink:href="#a"/><use xlink:href="#b" x="9.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">cat</text><text x="6.012" y="8.183" class="g">.nod</text></svg><svg x="3220"><use xlink:href="#a"/><use xlink:href="#b" x="10.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">cat</text><text x="6.012" y="8.183" class="g">.node</text></svg><svg x="3290"><use xlink:href="#a"/><use xlink:href="#b" x="11.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">cat</text><text x="6.012" y="8.183" class="g">.node-</text></svg><svg x="3360"><use xlink:href="#a"/><use xlink:href="#b" x="12.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">cat</text><text x="6.012" y="8.183" class="g">.node-v</text></svg><svg x="3430"><use xlink:href="#a"/><use xlink:href="#b" x="13.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">cat</text><text x="6.012" y="8.183" class="g">.node-ve</text></svg><svg x="3500"><use xlink:href="#a"/><use xlink:href="#b" x="14.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">cat</text><text x="6.012" y="8.183" class="g">.node-ver</text></svg><svg x="3570"><use xlink:href="#a"/><use xlink:href="#b" x="15.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">cat</text><text x="6.012" y="8.183" class="g">.node-vers</text></svg><svg x="3640"><use xlink:href="#a"/><use xlink:href="#b" x="16.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">cat</text><text x="6.012" y="8.183" class="g">.node-versi</text></svg><svg x="3710"><use xlink:href="#a"/><use xlink:href="#b" x="17.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><text y="8.183" class="f">✡</text><text x="2.004" y="8.183" class="g">cat</text><text x="6.012" y="8.183" class="g">.node-versio</text></svg><svg x="3780"><use xlink:href="#a"/><use xlink:href="#b" x="18.996" y="6.488"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/></svg><svg x="3850"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/></svg><svg x="3920"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/></svg><svg x="3990"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#1" y="10.855"/></svg><svg x="4060"><use xlink:href="#a"/><use xlink:href="#b" x="2.996" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#5" y="10.855"/></svg><svg x="4130"><use xlink:href="#a"/><use xlink:href="#b" x="3.996" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#6" y="10.855"/></svg><svg x="4200"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#7" y="10.855"/></svg><svg x="4270"><use xlink:href="#a"/><use xlink:href="#b" x="5.996" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#7" y="10.855"/></svg><svg x="4340"><use xlink:href="#a"/><use xlink:href="#b" x="6.996" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><text y="12.525" class="f">✡</text><text x="2.004" y="12.525" class="g">fnm</text><text x="6.012" y="12.525" class="g">i</text></svg><svg x="4410"><use xlink:href="#a"/><use xlink:href="#b" x="7.996" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><text y="12.525" class="f">✡</text><text x="2.004" y="12.525" class="g">fnm</text><text x="6.012" y="12.525" class="g">in</text></svg><svg x="4480"><use xlink:href="#a"/><use xlink:href="#b" x="8.996" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><text y="12.525" class="f">✡</text><text x="2.004" y="12.525" class="g">fnm</text><text x="6.012" y="12.525" class="g">ins</text></svg><svg x="4550"><use xlink:href="#a"/><use xlink:href="#b" x="9.996" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><text y="12.525" class="f">✡</text><text x="2.004" y="12.525" class="g">fnm</text><text x="6.012" y="12.525" class="g">inst</text></svg><svg x="4620"><use xlink:href="#a"/><use xlink:href="#b" x="10.996" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><text y="12.525" class="f">✡</text><text x="2.004" y="12.525" class="g">fnm</text><text x="6.012" y="12.525" class="g">insta</text></svg><svg x="4690"><use xlink:href="#a"/><use xlink:href="#b" x="11.996" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><text y="12.525" class="f">✡</text><text x="2.004" y="12.525" class="g">fnm</text><text x="6.012" y="12.525" class="g">instal</text></svg><svg x="4760"><use xlink:href="#a"/><use xlink:href="#b" x="12.996" y="10.83"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/></svg><svg x="4830"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="13.001"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/></svg><svg x="4900"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/></svg><svg x="4970"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="15.172"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#1" y="15.197"/></svg><svg x="5040"><use xlink:href="#a"/><use xlink:href="#b" x="2.996" y="15.172"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#5" y="15.197"/></svg><svg x="5110"><use xlink:href="#a"/><use xlink:href="#b" x="3.996" y="15.172"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#6" y="15.197"/></svg><svg x="5180"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="15.172"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#7" y="15.197"/></svg><svg x="5250"><use xlink:href="#a"/><use xlink:href="#b" x="5.996" y="15.172"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#7" y="15.197"/></svg><svg x="5320"><use xlink:href="#a"/><use xlink:href="#b" x="6.996" y="15.172"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><text y="16.867" class="f">✡</text><text x="2.004" y="16.867" class="g">fnm</text><text x="6.012" y="16.867" class="g">u</text></svg><svg x="5390"><use xlink:href="#a"/><use xlink:href="#b" x="7.996" y="15.172"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><text y="16.867" class="f">✡</text><text x="2.004" y="16.867" class="g">fnm</text><text x="6.012" y="16.867" class="g">us</text></svg><svg x="5460"><use xlink:href="#a"/><use xlink:href="#b" x="8.996" y="15.172"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/></svg><svg x="5530"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="17.343"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/></svg><svg x="5600"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="19.514"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/><use xlink:href="#16" y="17.368"/></svg><svg x="5670"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="19.514"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/><use xlink:href="#16" y="17.368"/><use xlink:href="#1" y="19.539"/></svg><svg x="5740"><use xlink:href="#a"/><use xlink:href="#b" x="2.996" y="19.514"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/><use xlink:href="#16" y="17.368"/><text y="21.209" class="f">✡</text><text x="2.004" y="21.209" class="g">n</text></svg><svg x="5810"><use xlink:href="#a"/><use xlink:href="#b" x="3.996" y="19.514"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/><use xlink:href="#16" y="17.368"/><text y="21.209" class="f">✡</text><text x="2.004" y="21.209" class="g">no</text></svg><svg x="5880"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="19.514"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/><use xlink:href="#16" y="17.368"/><text y="21.209" class="f">✡</text><text x="2.004" y="21.209" class="g">nod</text></svg><svg x="5950"><use xlink:href="#a"/><use xlink:href="#b" x="5.996" y="19.514"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/><use xlink:href="#16" y="17.368"/><use xlink:href="#17" y="19.539"/></svg><svg x="6020"><use xlink:href="#a"/><use xlink:href="#b" x="6.996" y="19.514"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/><use xlink:href="#16" y="17.368"/><use xlink:href="#17" y="19.539"/></svg><svg x="6090"><use xlink:href="#a"/><use xlink:href="#b" x="7.996" y="19.514"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/><use xlink:href="#16" y="17.368"/><text y="21.209" class="f">✡</text><text x="2.004" y="21.209" class="g">node</text><text x="7.014" y="21.209" class="g">-</text></svg><svg x="6160"><use xlink:href="#a"/><use xlink:href="#b" x="8.996" y="19.514"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/><use xlink:href="#16" y="17.368"/><use xlink:href="#18" y="19.539"/></svg><svg x="6230"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="21.685"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/><use xlink:href="#16" y="17.368"/><use xlink:href="#18" y="19.539"/></svg><svg x="6300"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="23.856"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/><use xlink:href="#16" y="17.368"/><use xlink:href="#18" y="19.539"/><use xlink:href="#19" y="21.71"/></svg><svg x="6370"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="26.027"/><use xlink:href="#4"/><use xlink:href="#8" y="2.171"/><use xlink:href="#9" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#12" y="8.684"/><use xlink:href="#13" y="10.855"/><use xlink:href="#14" y="13.026"/><use xlink:href="#15" y="15.197"/><use xlink:href="#16" y="17.368"/><use xlink:href="#18" y="19.539"/><use xlink:href="#19" y="21.71"/></svg></svg></g></g></svg></svg>
\ No newline at end of file
diff --git a/src/weekly/2023/assets/fontawesome.png b/src/weekly/2023/assets/fontawesome.png
new file mode 100644
index 0000000000..b318f7c764
Binary files /dev/null and b/src/weekly/2023/assets/fontawesome.png differ
diff --git a/src/weekly/2023/assets/global-speed.png b/src/weekly/2023/assets/global-speed.png
new file mode 100644
index 0000000000..8dd32d1e0b
Binary files /dev/null and b/src/weekly/2023/assets/global-speed.png differ
diff --git a/src/weekly/2023/assets/iconfont.png b/src/weekly/2023/assets/iconfont.png
new file mode 100644
index 0000000000..f5f3cc2f2d
Binary files /dev/null and b/src/weekly/2023/assets/iconfont.png differ
diff --git a/src/weekly/2023/assets/iconpark.png b/src/weekly/2023/assets/iconpark.png
new file mode 100644
index 0000000000..e96da049cc
Binary files /dev/null and b/src/weekly/2023/assets/iconpark.png differ
diff --git a/src/weekly/2023/assets/iina.webp b/src/weekly/2023/assets/iina.webp
new file mode 100644
index 0000000000..f9aa3fb172
Binary files /dev/null and b/src/weekly/2023/assets/iina.webp differ
diff --git a/src/weekly/2023/assets/image-20230522101434664.png b/src/weekly/2023/assets/image-20230522101434664.png
new file mode 100644
index 0000000000..e248590a10
Binary files /dev/null and b/src/weekly/2023/assets/image-20230522101434664.png differ
diff --git a/src/weekly/2023/assets/image-20230522101905531.png b/src/weekly/2023/assets/image-20230522101905531.png
new file mode 100644
index 0000000000..0b6bce4bf2
Binary files /dev/null and b/src/weekly/2023/assets/image-20230522101905531.png differ
diff --git a/src/weekly/2023/assets/image-20230522105819679.png b/src/weekly/2023/assets/image-20230522105819679.png
new file mode 100644
index 0000000000..983f393cae
Binary files /dev/null and b/src/weekly/2023/assets/image-20230522105819679.png differ
diff --git a/src/weekly/2023/assets/image-20230522110141816.png b/src/weekly/2023/assets/image-20230522110141816.png
new file mode 100644
index 0000000000..6c1c95c730
Binary files /dev/null and b/src/weekly/2023/assets/image-20230522110141816.png differ
diff --git a/src/weekly/2023/assets/image-20230522110255001.png b/src/weekly/2023/assets/image-20230522110255001.png
new file mode 100644
index 0000000000..b5846e369b
Binary files /dev/null and b/src/weekly/2023/assets/image-20230522110255001.png differ
diff --git a/src/weekly/2023/assets/image-20230522112931667.png b/src/weekly/2023/assets/image-20230522112931667.png
new file mode 100644
index 0000000000..29b5713c73
Binary files /dev/null and b/src/weekly/2023/assets/image-20230522112931667.png differ
diff --git a/src/weekly/2023/assets/image-20230522132710708.png b/src/weekly/2023/assets/image-20230522132710708.png
new file mode 100644
index 0000000000..2067210c79
Binary files /dev/null and b/src/weekly/2023/assets/image-20230522132710708.png differ
diff --git a/src/weekly/2023/assets/image-20230522145650333.png b/src/weekly/2023/assets/image-20230522145650333.png
new file mode 100644
index 0000000000..ffabca2126
Binary files /dev/null and b/src/weekly/2023/assets/image-20230522145650333.png differ
diff --git a/src/weekly/2023/assets/image-20230522152418286.png b/src/weekly/2023/assets/image-20230522152418286.png
new file mode 100644
index 0000000000..481ab3df2b
Binary files /dev/null and b/src/weekly/2023/assets/image-20230522152418286.png differ
diff --git a/src/weekly/2023/assets/image-20230523084803909.png b/src/weekly/2023/assets/image-20230523084803909.png
new file mode 100644
index 0000000000..4c82ea74e7
Binary files /dev/null and b/src/weekly/2023/assets/image-20230523084803909.png differ
diff --git a/src/weekly/2023/assets/image-20230523111717973.png b/src/weekly/2023/assets/image-20230523111717973.png
new file mode 100644
index 0000000000..5d28d563a8
Binary files /dev/null and b/src/weekly/2023/assets/image-20230523111717973.png differ
diff --git a/src/weekly/2023/assets/image-20230524082836203.png b/src/weekly/2023/assets/image-20230524082836203.png
new file mode 100644
index 0000000000..6139e518ea
Binary files /dev/null and b/src/weekly/2023/assets/image-20230524082836203.png differ
diff --git a/src/weekly/2023/assets/image-20230524082925195.png b/src/weekly/2023/assets/image-20230524082925195.png
new file mode 100644
index 0000000000..876fb0925e
Binary files /dev/null and b/src/weekly/2023/assets/image-20230524082925195.png differ
diff --git a/src/weekly/2023/assets/image-20230524083135688.png b/src/weekly/2023/assets/image-20230524083135688.png
new file mode 100644
index 0000000000..e95a759c63
Binary files /dev/null and b/src/weekly/2023/assets/image-20230524083135688.png differ
diff --git a/src/weekly/2023/assets/image.11by9kv858dc.webp b/src/weekly/2023/assets/image.11by9kv858dc.webp
new file mode 100644
index 0000000000..9886e0697b
Binary files /dev/null and b/src/weekly/2023/assets/image.11by9kv858dc.webp differ
diff --git a/src/weekly/2023/assets/image.12wr7xqp5df.webp b/src/weekly/2023/assets/image.12wr7xqp5df.webp
new file mode 100644
index 0000000000..974cf0fda3
Binary files /dev/null and b/src/weekly/2023/assets/image.12wr7xqp5df.webp differ
diff --git a/src/weekly/2023/assets/image.16ess55u5lkw.webp b/src/weekly/2023/assets/image.16ess55u5lkw.webp
new file mode 100644
index 0000000000..0f8dd85c5a
Binary files /dev/null and b/src/weekly/2023/assets/image.16ess55u5lkw.webp differ
diff --git a/src/weekly/2023/assets/image.194o7th62ups.webp b/src/weekly/2023/assets/image.194o7th62ups.webp
new file mode 100644
index 0000000000..dbbabb7a5a
Binary files /dev/null and b/src/weekly/2023/assets/image.194o7th62ups.webp differ
diff --git a/src/weekly/2023/assets/image.1bxljf1ukqo0.webp b/src/weekly/2023/assets/image.1bxljf1ukqo0.webp
new file mode 100644
index 0000000000..7c2210926f
Binary files /dev/null and b/src/weekly/2023/assets/image.1bxljf1ukqo0.webp differ
diff --git a/src/weekly/2023/assets/image.1cpyex0565pc.webp b/src/weekly/2023/assets/image.1cpyex0565pc.webp
new file mode 100644
index 0000000000..a764f63332
Binary files /dev/null and b/src/weekly/2023/assets/image.1cpyex0565pc.webp differ
diff --git a/src/weekly/2023/assets/image.1hj203a2ojuo.webp b/src/weekly/2023/assets/image.1hj203a2ojuo.webp
new file mode 100644
index 0000000000..128c971f53
Binary files /dev/null and b/src/weekly/2023/assets/image.1hj203a2ojuo.webp differ
diff --git a/src/weekly/2023/assets/image.1iwdwecdljz4.webp b/src/weekly/2023/assets/image.1iwdwecdljz4.webp
new file mode 100644
index 0000000000..e65d34b346
Binary files /dev/null and b/src/weekly/2023/assets/image.1iwdwecdljz4.webp differ
diff --git a/src/weekly/2023/assets/image.1jezukcvzme8.webp b/src/weekly/2023/assets/image.1jezukcvzme8.webp
new file mode 100644
index 0000000000..1ede63f7a6
Binary files /dev/null and b/src/weekly/2023/assets/image.1jezukcvzme8.webp differ
diff --git a/src/weekly/2023/assets/image.1nvrzzktlc7.webp b/src/weekly/2023/assets/image.1nvrzzktlc7.webp
new file mode 100644
index 0000000000..02bc1b1487
Binary files /dev/null and b/src/weekly/2023/assets/image.1nvrzzktlc7.webp differ
diff --git a/src/weekly/2023/assets/image.1o2dufwo66hs.webp b/src/weekly/2023/assets/image.1o2dufwo66hs.webp
new file mode 100644
index 0000000000..b314238e7f
Binary files /dev/null and b/src/weekly/2023/assets/image.1o2dufwo66hs.webp differ
diff --git a/src/weekly/2023/assets/image.215c5zn82tfk.webp b/src/weekly/2023/assets/image.215c5zn82tfk.webp
new file mode 100644
index 0000000000..0bd1a1356b
Binary files /dev/null and b/src/weekly/2023/assets/image.215c5zn82tfk.webp differ
diff --git a/src/weekly/2023/assets/image.21ifm209r8ao.webp b/src/weekly/2023/assets/image.21ifm209r8ao.webp
new file mode 100644
index 0000000000..269744ae42
Binary files /dev/null and b/src/weekly/2023/assets/image.21ifm209r8ao.webp differ
diff --git a/src/weekly/2023/assets/image.26edzyar1r5s.webp b/src/weekly/2023/assets/image.26edzyar1r5s.webp
new file mode 100644
index 0000000000..254481a9ed
Binary files /dev/null and b/src/weekly/2023/assets/image.26edzyar1r5s.webp differ
diff --git a/src/weekly/2023/assets/image.2812n4i0dmsk.webp b/src/weekly/2023/assets/image.2812n4i0dmsk.webp
new file mode 100644
index 0000000000..e0edf7d1b8
Binary files /dev/null and b/src/weekly/2023/assets/image.2812n4i0dmsk.webp differ
diff --git a/src/weekly/2023/assets/image.28uwornzz1us.webp b/src/weekly/2023/assets/image.28uwornzz1us.webp
new file mode 100644
index 0000000000..7b206f8dea
Binary files /dev/null and b/src/weekly/2023/assets/image.28uwornzz1us.webp differ
diff --git a/src/weekly/2023/assets/image.2c847t45ah7o.webp b/src/weekly/2023/assets/image.2c847t45ah7o.webp
new file mode 100644
index 0000000000..46f64c50fd
Binary files /dev/null and b/src/weekly/2023/assets/image.2c847t45ah7o.webp differ
diff --git a/src/weekly/2023/assets/image.2dhb8jomtmo0.webp b/src/weekly/2023/assets/image.2dhb8jomtmo0.webp
new file mode 100644
index 0000000000..71ae80cd6a
Binary files /dev/null and b/src/weekly/2023/assets/image.2dhb8jomtmo0.webp differ
diff --git a/src/weekly/2023/assets/image.2eank3ifa874.webp b/src/weekly/2023/assets/image.2eank3ifa874.webp
new file mode 100644
index 0000000000..5fa1034758
Binary files /dev/null and b/src/weekly/2023/assets/image.2eank3ifa874.webp differ
diff --git a/src/weekly/2023/assets/image.2fgi237b21lw.webp b/src/weekly/2023/assets/image.2fgi237b21lw.webp
new file mode 100644
index 0000000000..89edf1eeae
Binary files /dev/null and b/src/weekly/2023/assets/image.2fgi237b21lw.webp differ
diff --git a/src/weekly/2023/assets/image.2mwptzvlxtq0.webp b/src/weekly/2023/assets/image.2mwptzvlxtq0.webp
new file mode 100644
index 0000000000..fa0244acdf
Binary files /dev/null and b/src/weekly/2023/assets/image.2mwptzvlxtq0.webp differ
diff --git a/src/weekly/2023/assets/image.2omujh7oswa0.webp b/src/weekly/2023/assets/image.2omujh7oswa0.webp
new file mode 100644
index 0000000000..b684aa1e65
Binary files /dev/null and b/src/weekly/2023/assets/image.2omujh7oswa0.webp differ
diff --git a/src/weekly/2023/assets/image.2q5shigdmd40.webp b/src/weekly/2023/assets/image.2q5shigdmd40.webp
new file mode 100644
index 0000000000..2345f45e17
Binary files /dev/null and b/src/weekly/2023/assets/image.2q5shigdmd40.webp differ
diff --git a/src/weekly/2023/assets/image.2t4tkuzq3520.webp b/src/weekly/2023/assets/image.2t4tkuzq3520.webp
new file mode 100644
index 0000000000..d6b9906758
Binary files /dev/null and b/src/weekly/2023/assets/image.2t4tkuzq3520.webp differ
diff --git a/src/weekly/2023/assets/image.2xeiv1a2ays0.webp b/src/weekly/2023/assets/image.2xeiv1a2ays0.webp
new file mode 100644
index 0000000000..36f978fee4
Binary files /dev/null and b/src/weekly/2023/assets/image.2xeiv1a2ays0.webp differ
diff --git a/src/weekly/2023/assets/image.2ysxr06oyjm0.webp b/src/weekly/2023/assets/image.2ysxr06oyjm0.webp
new file mode 100644
index 0000000000..e4adc797f8
Binary files /dev/null and b/src/weekly/2023/assets/image.2ysxr06oyjm0.webp differ
diff --git a/src/weekly/2023/assets/image.31929e1pm0g0.webp b/src/weekly/2023/assets/image.31929e1pm0g0.webp
new file mode 100644
index 0000000000..4eb71c5f26
Binary files /dev/null and b/src/weekly/2023/assets/image.31929e1pm0g0.webp differ
diff --git a/src/weekly/2023/assets/image.33e27w56y720.webp b/src/weekly/2023/assets/image.33e27w56y720.webp
new file mode 100644
index 0000000000..88ff1c4191
Binary files /dev/null and b/src/weekly/2023/assets/image.33e27w56y720.webp differ
diff --git a/src/weekly/2023/assets/image.33i3jx3o8ek0.webp b/src/weekly/2023/assets/image.33i3jx3o8ek0.webp
new file mode 100644
index 0000000000..c88dc111ce
Binary files /dev/null and b/src/weekly/2023/assets/image.33i3jx3o8ek0.webp differ
diff --git a/src/weekly/2023/assets/image.34vmjejwqkc0.webp b/src/weekly/2023/assets/image.34vmjejwqkc0.webp
new file mode 100644
index 0000000000..57836e2b4b
Binary files /dev/null and b/src/weekly/2023/assets/image.34vmjejwqkc0.webp differ
diff --git a/src/weekly/2023/assets/image.35mpbz41xpc0.webp b/src/weekly/2023/assets/image.35mpbz41xpc0.webp
new file mode 100644
index 0000000000..2d1fa31b2f
Binary files /dev/null and b/src/weekly/2023/assets/image.35mpbz41xpc0.webp differ
diff --git a/src/weekly/2023/assets/image.38cruvy28n40.webp b/src/weekly/2023/assets/image.38cruvy28n40.webp
new file mode 100644
index 0000000000..f51dd26e35
Binary files /dev/null and b/src/weekly/2023/assets/image.38cruvy28n40.webp differ
diff --git a/src/weekly/2023/assets/image.3aghqhtnm540.webp b/src/weekly/2023/assets/image.3aghqhtnm540.webp
new file mode 100644
index 0000000000..b0fed80e80
Binary files /dev/null and b/src/weekly/2023/assets/image.3aghqhtnm540.webp differ
diff --git a/src/weekly/2023/assets/image.3au9zsyy08m0.webp b/src/weekly/2023/assets/image.3au9zsyy08m0.webp
new file mode 100644
index 0000000000..cc1b0759c0
Binary files /dev/null and b/src/weekly/2023/assets/image.3au9zsyy08m0.webp differ
diff --git a/src/weekly/2023/assets/image.3bapyjvky0k0.webp b/src/weekly/2023/assets/image.3bapyjvky0k0.webp
new file mode 100644
index 0000000000..1c63ed4874
Binary files /dev/null and b/src/weekly/2023/assets/image.3bapyjvky0k0.webp differ
diff --git a/src/weekly/2023/assets/image.3csdtlpltoo0.webp b/src/weekly/2023/assets/image.3csdtlpltoo0.webp
new file mode 100644
index 0000000000..64926d4f1f
Binary files /dev/null and b/src/weekly/2023/assets/image.3csdtlpltoo0.webp differ
diff --git a/src/weekly/2023/assets/image.3dv9zc3f5vs0.webp b/src/weekly/2023/assets/image.3dv9zc3f5vs0.webp
new file mode 100644
index 0000000000..7165d4b489
Binary files /dev/null and b/src/weekly/2023/assets/image.3dv9zc3f5vs0.webp differ
diff --git a/src/weekly/2023/assets/image.3f55tam17940.webp b/src/weekly/2023/assets/image.3f55tam17940.webp
new file mode 100644
index 0000000000..507a5893b8
Binary files /dev/null and b/src/weekly/2023/assets/image.3f55tam17940.webp differ
diff --git a/src/weekly/2023/assets/image.3ih39gox03c0.webp b/src/weekly/2023/assets/image.3ih39gox03c0.webp
new file mode 100644
index 0000000000..a45de20b25
Binary files /dev/null and b/src/weekly/2023/assets/image.3ih39gox03c0.webp differ
diff --git a/src/weekly/2023/assets/image.3j9ube6qcqk0.webp b/src/weekly/2023/assets/image.3j9ube6qcqk0.webp
new file mode 100644
index 0000000000..f17c25933b
Binary files /dev/null and b/src/weekly/2023/assets/image.3j9ube6qcqk0.webp differ
diff --git a/src/weekly/2023/assets/image.3jbikqgz5m80.webp b/src/weekly/2023/assets/image.3jbikqgz5m80.webp
new file mode 100644
index 0000000000..bbdc80db94
Binary files /dev/null and b/src/weekly/2023/assets/image.3jbikqgz5m80.webp differ
diff --git a/src/weekly/2023/assets/image.3krstalf07i0.webp b/src/weekly/2023/assets/image.3krstalf07i0.webp
new file mode 100644
index 0000000000..fb0c2ac4d2
Binary files /dev/null and b/src/weekly/2023/assets/image.3krstalf07i0.webp differ
diff --git a/src/weekly/2023/assets/image.3lffjiyvqvk0.webp b/src/weekly/2023/assets/image.3lffjiyvqvk0.webp
new file mode 100644
index 0000000000..36f370ff8e
Binary files /dev/null and b/src/weekly/2023/assets/image.3lffjiyvqvk0.webp differ
diff --git a/src/weekly/2023/assets/image.3mbtr209h0m0.webp b/src/weekly/2023/assets/image.3mbtr209h0m0.webp
new file mode 100644
index 0000000000..e2f5d9d9f0
Binary files /dev/null and b/src/weekly/2023/assets/image.3mbtr209h0m0.webp differ
diff --git a/src/weekly/2023/assets/image.3muc5lj7uky0.webp b/src/weekly/2023/assets/image.3muc5lj7uky0.webp
new file mode 100644
index 0000000000..2f93448a42
Binary files /dev/null and b/src/weekly/2023/assets/image.3muc5lj7uky0.webp differ
diff --git a/src/weekly/2023/assets/image.3nq8n01cbm40.webp b/src/weekly/2023/assets/image.3nq8n01cbm40.webp
new file mode 100644
index 0000000000..db1b8ee01e
Binary files /dev/null and b/src/weekly/2023/assets/image.3nq8n01cbm40.webp differ
diff --git a/src/weekly/2023/assets/image.40y7qnjn3840.webp b/src/weekly/2023/assets/image.40y7qnjn3840.webp
new file mode 100644
index 0000000000..6541695e63
Binary files /dev/null and b/src/weekly/2023/assets/image.40y7qnjn3840.webp differ
diff --git a/src/weekly/2023/assets/image.43w5u996vqa0.webp b/src/weekly/2023/assets/image.43w5u996vqa0.webp
new file mode 100644
index 0000000000..c1fb74d56c
Binary files /dev/null and b/src/weekly/2023/assets/image.43w5u996vqa0.webp differ
diff --git a/src/weekly/2023/assets/image.43wqsndtnke.webp b/src/weekly/2023/assets/image.43wqsndtnke.webp
new file mode 100644
index 0000000000..fdeddc6e90
Binary files /dev/null and b/src/weekly/2023/assets/image.43wqsndtnke.webp differ
diff --git a/src/weekly/2023/assets/image.453dys16rmi0.webp b/src/weekly/2023/assets/image.453dys16rmi0.webp
new file mode 100644
index 0000000000..d64b329139
Binary files /dev/null and b/src/weekly/2023/assets/image.453dys16rmi0.webp differ
diff --git a/src/weekly/2023/assets/image.45vxxil68vs0.webp b/src/weekly/2023/assets/image.45vxxil68vs0.webp
new file mode 100644
index 0000000000..29add22c1c
Binary files /dev/null and b/src/weekly/2023/assets/image.45vxxil68vs0.webp differ
diff --git a/src/weekly/2023/assets/image.46ecsfyy6em0.webp b/src/weekly/2023/assets/image.46ecsfyy6em0.webp
new file mode 100644
index 0000000000..6cd3afa92d
Binary files /dev/null and b/src/weekly/2023/assets/image.46ecsfyy6em0.webp differ
diff --git a/src/weekly/2023/assets/image.473d58sto8s0.webp b/src/weekly/2023/assets/image.473d58sto8s0.webp
new file mode 100644
index 0000000000..bd5b45cfeb
Binary files /dev/null and b/src/weekly/2023/assets/image.473d58sto8s0.webp differ
diff --git a/src/weekly/2023/assets/image.47mnwnf1ii00.webp b/src/weekly/2023/assets/image.47mnwnf1ii00.webp
new file mode 100644
index 0000000000..8ab35cfe57
Binary files /dev/null and b/src/weekly/2023/assets/image.47mnwnf1ii00.webp differ
diff --git a/src/weekly/2023/assets/image.4837f1ybsjs0.webp b/src/weekly/2023/assets/image.4837f1ybsjs0.webp
new file mode 100644
index 0000000000..b4e63e5942
Binary files /dev/null and b/src/weekly/2023/assets/image.4837f1ybsjs0.webp differ
diff --git a/src/weekly/2023/assets/image.491gz1gt3ok0.webp b/src/weekly/2023/assets/image.491gz1gt3ok0.webp
new file mode 100644
index 0000000000..feb4b0be11
Binary files /dev/null and b/src/weekly/2023/assets/image.491gz1gt3ok0.webp differ
diff --git a/src/weekly/2023/assets/image.4b1uby2vdnc0.webp b/src/weekly/2023/assets/image.4b1uby2vdnc0.webp
new file mode 100644
index 0000000000..469910b093
Binary files /dev/null and b/src/weekly/2023/assets/image.4b1uby2vdnc0.webp differ
diff --git a/src/weekly/2023/assets/image.4byj69mf79k0.webp b/src/weekly/2023/assets/image.4byj69mf79k0.webp
new file mode 100644
index 0000000000..ed0241d8a6
Binary files /dev/null and b/src/weekly/2023/assets/image.4byj69mf79k0.webp differ
diff --git a/src/weekly/2023/assets/image.4dmozl5bgcy0.webp b/src/weekly/2023/assets/image.4dmozl5bgcy0.webp
new file mode 100644
index 0000000000..ec33be04e9
Binary files /dev/null and b/src/weekly/2023/assets/image.4dmozl5bgcy0.webp differ
diff --git a/src/weekly/2023/assets/image.4g05sglqu1e0.webp b/src/weekly/2023/assets/image.4g05sglqu1e0.webp
new file mode 100644
index 0000000000..7e2df3d78e
Binary files /dev/null and b/src/weekly/2023/assets/image.4g05sglqu1e0.webp differ
diff --git a/src/weekly/2023/assets/image.4gpkbq1xfc80.webp b/src/weekly/2023/assets/image.4gpkbq1xfc80.webp
new file mode 100644
index 0000000000..dbbd3065de
Binary files /dev/null and b/src/weekly/2023/assets/image.4gpkbq1xfc80.webp differ
diff --git a/src/weekly/2023/assets/image.4haxix3n4mq0.webp b/src/weekly/2023/assets/image.4haxix3n4mq0.webp
new file mode 100644
index 0000000000..ffbcec06ce
Binary files /dev/null and b/src/weekly/2023/assets/image.4haxix3n4mq0.webp differ
diff --git a/src/weekly/2023/assets/image.4hcep30um3a0.webp b/src/weekly/2023/assets/image.4hcep30um3a0.webp
new file mode 100644
index 0000000000..785c0f4149
Binary files /dev/null and b/src/weekly/2023/assets/image.4hcep30um3a0.webp differ
diff --git a/src/weekly/2023/assets/image.4hevbb622l40.webp b/src/weekly/2023/assets/image.4hevbb622l40.webp
new file mode 100644
index 0000000000..108cf98136
Binary files /dev/null and b/src/weekly/2023/assets/image.4hevbb622l40.webp differ
diff --git a/src/weekly/2023/assets/image.4idmle023ta0.webp b/src/weekly/2023/assets/image.4idmle023ta0.webp
new file mode 100644
index 0000000000..0dd211bdb4
Binary files /dev/null and b/src/weekly/2023/assets/image.4idmle023ta0.webp differ
diff --git a/src/weekly/2023/assets/image.4obsbpxghpm0.webp b/src/weekly/2023/assets/image.4obsbpxghpm0.webp
new file mode 100644
index 0000000000..9fc7fc293a
Binary files /dev/null and b/src/weekly/2023/assets/image.4obsbpxghpm0.webp differ
diff --git a/src/weekly/2023/assets/image.4sg670hmkh00.webp b/src/weekly/2023/assets/image.4sg670hmkh00.webp
new file mode 100644
index 0000000000..a9321613f1
Binary files /dev/null and b/src/weekly/2023/assets/image.4sg670hmkh00.webp differ
diff --git a/src/weekly/2023/assets/image.4texh44s9ns0.webp b/src/weekly/2023/assets/image.4texh44s9ns0.webp
new file mode 100644
index 0000000000..fd612ba304
Binary files /dev/null and b/src/weekly/2023/assets/image.4texh44s9ns0.webp differ
diff --git a/src/weekly/2023/assets/image.4uiewhpvwgi0.webp b/src/weekly/2023/assets/image.4uiewhpvwgi0.webp
new file mode 100644
index 0000000000..8bede9dc7d
Binary files /dev/null and b/src/weekly/2023/assets/image.4uiewhpvwgi0.webp differ
diff --git a/src/weekly/2023/assets/image.4xeoqs4xcqc0.webp b/src/weekly/2023/assets/image.4xeoqs4xcqc0.webp
new file mode 100644
index 0000000000..87ac686789
Binary files /dev/null and b/src/weekly/2023/assets/image.4xeoqs4xcqc0.webp differ
diff --git a/src/weekly/2023/assets/image.4y3zqcri4ig0.webp b/src/weekly/2023/assets/image.4y3zqcri4ig0.webp
new file mode 100644
index 0000000000..6db4d9260b
Binary files /dev/null and b/src/weekly/2023/assets/image.4y3zqcri4ig0.webp differ
diff --git a/src/weekly/2023/assets/image.4yal86iga6g0.webp b/src/weekly/2023/assets/image.4yal86iga6g0.webp
new file mode 100644
index 0000000000..418d44aaf7
Binary files /dev/null and b/src/weekly/2023/assets/image.4yal86iga6g0.webp differ
diff --git a/src/weekly/2023/assets/image.4yf7tsxh05g0.webp b/src/weekly/2023/assets/image.4yf7tsxh05g0.webp
new file mode 100644
index 0000000000..1061243577
Binary files /dev/null and b/src/weekly/2023/assets/image.4yf7tsxh05g0.webp differ
diff --git a/src/weekly/2023/assets/image.4yxc1yhib8g0.webp b/src/weekly/2023/assets/image.4yxc1yhib8g0.webp
new file mode 100644
index 0000000000..6fadd7cc63
Binary files /dev/null and b/src/weekly/2023/assets/image.4yxc1yhib8g0.webp differ
diff --git a/src/weekly/2023/assets/image.52qhtrbgb4g0.webp b/src/weekly/2023/assets/image.52qhtrbgb4g0.webp
new file mode 100644
index 0000000000..413b827e3c
Binary files /dev/null and b/src/weekly/2023/assets/image.52qhtrbgb4g0.webp differ
diff --git a/src/weekly/2023/assets/image.54160lg12k00.webp b/src/weekly/2023/assets/image.54160lg12k00.webp
new file mode 100644
index 0000000000..1331b3af7f
Binary files /dev/null and b/src/weekly/2023/assets/image.54160lg12k00.webp differ
diff --git a/src/weekly/2023/assets/image.548cs2tt65g0.webp b/src/weekly/2023/assets/image.548cs2tt65g0.webp
new file mode 100644
index 0000000000..9b7f6b5530
Binary files /dev/null and b/src/weekly/2023/assets/image.548cs2tt65g0.webp differ
diff --git a/src/weekly/2023/assets/image.55uuc312tm80.webp b/src/weekly/2023/assets/image.55uuc312tm80.webp
new file mode 100644
index 0000000000..a033d56c75
Binary files /dev/null and b/src/weekly/2023/assets/image.55uuc312tm80.webp differ
diff --git a/src/weekly/2023/assets/image.56bz424c1ns0.webp b/src/weekly/2023/assets/image.56bz424c1ns0.webp
new file mode 100644
index 0000000000..b0af1a06c8
Binary files /dev/null and b/src/weekly/2023/assets/image.56bz424c1ns0.webp differ
diff --git a/src/weekly/2023/assets/image.57mxxq6mssg0.webp b/src/weekly/2023/assets/image.57mxxq6mssg0.webp
new file mode 100644
index 0000000000..1025f3807f
Binary files /dev/null and b/src/weekly/2023/assets/image.57mxxq6mssg0.webp differ
diff --git a/src/weekly/2023/assets/image.5abc79kwe1g0.webp b/src/weekly/2023/assets/image.5abc79kwe1g0.webp
new file mode 100644
index 0000000000..36f6e469d4
Binary files /dev/null and b/src/weekly/2023/assets/image.5abc79kwe1g0.webp differ
diff --git a/src/weekly/2023/assets/image.5d87b8puydo0.webp b/src/weekly/2023/assets/image.5d87b8puydo0.webp
new file mode 100644
index 0000000000..6cfbacc400
Binary files /dev/null and b/src/weekly/2023/assets/image.5d87b8puydo0.webp differ
diff --git a/src/weekly/2023/assets/image.5e1cjl8qd6o0.webp b/src/weekly/2023/assets/image.5e1cjl8qd6o0.webp
new file mode 100644
index 0000000000..329f761e26
Binary files /dev/null and b/src/weekly/2023/assets/image.5e1cjl8qd6o0.webp differ
diff --git a/src/weekly/2023/assets/image.5hgtlqk7ong0.webp b/src/weekly/2023/assets/image.5hgtlqk7ong0.webp
new file mode 100644
index 0000000000..a60e21b997
Binary files /dev/null and b/src/weekly/2023/assets/image.5hgtlqk7ong0.webp differ
diff --git a/src/weekly/2023/assets/image.5i5jbp8q00s0.webp b/src/weekly/2023/assets/image.5i5jbp8q00s0.webp
new file mode 100644
index 0000000000..db66a66945
Binary files /dev/null and b/src/weekly/2023/assets/image.5i5jbp8q00s0.webp differ
diff --git a/src/weekly/2023/assets/image.5kb4juhp4vk0.webp b/src/weekly/2023/assets/image.5kb4juhp4vk0.webp
new file mode 100644
index 0000000000..004dc41109
Binary files /dev/null and b/src/weekly/2023/assets/image.5kb4juhp4vk0.webp differ
diff --git a/src/weekly/2023/assets/image.5kh4s1ecm7k0.webp b/src/weekly/2023/assets/image.5kh4s1ecm7k0.webp
new file mode 100644
index 0000000000..29619ac6b5
Binary files /dev/null and b/src/weekly/2023/assets/image.5kh4s1ecm7k0.webp differ
diff --git a/src/weekly/2023/assets/image.5snfwchkiv80.webp b/src/weekly/2023/assets/image.5snfwchkiv80.webp
new file mode 100644
index 0000000000..20d0f92a5b
Binary files /dev/null and b/src/weekly/2023/assets/image.5snfwchkiv80.webp differ
diff --git a/src/weekly/2023/assets/image.5vm6cx38rv40.webp b/src/weekly/2023/assets/image.5vm6cx38rv40.webp
new file mode 100644
index 0000000000..15921029ae
Binary files /dev/null and b/src/weekly/2023/assets/image.5vm6cx38rv40.webp differ
diff --git a/src/weekly/2023/assets/image.5vw7x366dkk0.webp b/src/weekly/2023/assets/image.5vw7x366dkk0.webp
new file mode 100644
index 0000000000..a6e76e7f3a
Binary files /dev/null and b/src/weekly/2023/assets/image.5vw7x366dkk0.webp differ
diff --git a/src/weekly/2023/assets/image.60dwbmnnm940.webp b/src/weekly/2023/assets/image.60dwbmnnm940.webp
new file mode 100644
index 0000000000..b6ba1fd982
Binary files /dev/null and b/src/weekly/2023/assets/image.60dwbmnnm940.webp differ
diff --git a/src/weekly/2023/assets/image.60xvwd1fbws0.webp b/src/weekly/2023/assets/image.60xvwd1fbws0.webp
new file mode 100644
index 0000000000..8fa5b4cad7
Binary files /dev/null and b/src/weekly/2023/assets/image.60xvwd1fbws0.webp differ
diff --git a/src/weekly/2023/assets/image.65kl2yiijro0.webp b/src/weekly/2023/assets/image.65kl2yiijro0.webp
new file mode 100644
index 0000000000..57c12fff3f
Binary files /dev/null and b/src/weekly/2023/assets/image.65kl2yiijro0.webp differ
diff --git a/src/weekly/2023/assets/image.6dcm7xq6jng0.webp b/src/weekly/2023/assets/image.6dcm7xq6jng0.webp
new file mode 100644
index 0000000000..8d2edb6c01
Binary files /dev/null and b/src/weekly/2023/assets/image.6dcm7xq6jng0.webp differ
diff --git a/src/weekly/2023/assets/image.6edjheo1bo00.webp b/src/weekly/2023/assets/image.6edjheo1bo00.webp
new file mode 100644
index 0000000000..12ed398d7a
Binary files /dev/null and b/src/weekly/2023/assets/image.6edjheo1bo00.webp differ
diff --git a/src/weekly/2023/assets/image.6jm01rd10eo0.webp b/src/weekly/2023/assets/image.6jm01rd10eo0.webp
new file mode 100644
index 0000000000..896cf045ef
Binary files /dev/null and b/src/weekly/2023/assets/image.6jm01rd10eo0.webp differ
diff --git a/src/weekly/2023/assets/image.6jqc0jftx200.webp b/src/weekly/2023/assets/image.6jqc0jftx200.webp
new file mode 100644
index 0000000000..3556ccbac7
Binary files /dev/null and b/src/weekly/2023/assets/image.6jqc0jftx200.webp differ
diff --git a/src/weekly/2023/assets/image.6nxkoh5ihlw0.webp b/src/weekly/2023/assets/image.6nxkoh5ihlw0.webp
new file mode 100644
index 0000000000..8a920fb3a8
Binary files /dev/null and b/src/weekly/2023/assets/image.6nxkoh5ihlw0.webp differ
diff --git a/src/weekly/2023/assets/image.6pwgv8u8zgo0.webp b/src/weekly/2023/assets/image.6pwgv8u8zgo0.webp
new file mode 100644
index 0000000000..ce6f1733d0
Binary files /dev/null and b/src/weekly/2023/assets/image.6pwgv8u8zgo0.webp differ
diff --git a/src/weekly/2023/assets/image.6rxmkyt5b3w0.webp b/src/weekly/2023/assets/image.6rxmkyt5b3w0.webp
new file mode 100644
index 0000000000..489e5721c9
Binary files /dev/null and b/src/weekly/2023/assets/image.6rxmkyt5b3w0.webp differ
diff --git a/src/weekly/2023/assets/image.6sgtssrk9nc0.webp b/src/weekly/2023/assets/image.6sgtssrk9nc0.webp
new file mode 100644
index 0000000000..dc7b865f73
Binary files /dev/null and b/src/weekly/2023/assets/image.6sgtssrk9nc0.webp differ
diff --git a/src/weekly/2023/assets/image.6t70owhdbt40.webp b/src/weekly/2023/assets/image.6t70owhdbt40.webp
new file mode 100644
index 0000000000..5bfd13ff75
Binary files /dev/null and b/src/weekly/2023/assets/image.6t70owhdbt40.webp differ
diff --git a/src/weekly/2023/assets/image.6te7ge7dq440.webp b/src/weekly/2023/assets/image.6te7ge7dq440.webp
new file mode 100644
index 0000000000..ceb9727c0e
Binary files /dev/null and b/src/weekly/2023/assets/image.6te7ge7dq440.webp differ
diff --git a/src/weekly/2023/assets/image.6vit8eoks5k0.webp b/src/weekly/2023/assets/image.6vit8eoks5k0.webp
new file mode 100644
index 0000000000..3f712c5897
Binary files /dev/null and b/src/weekly/2023/assets/image.6vit8eoks5k0.webp differ
diff --git a/src/weekly/2023/assets/image.6vlgxxe11as0.webp b/src/weekly/2023/assets/image.6vlgxxe11as0.webp
new file mode 100644
index 0000000000..fb2f409a4c
Binary files /dev/null and b/src/weekly/2023/assets/image.6vlgxxe11as0.webp differ
diff --git a/src/weekly/2023/assets/image.6vutorv5e140.webp b/src/weekly/2023/assets/image.6vutorv5e140.webp
new file mode 100644
index 0000000000..b2413b5c43
Binary files /dev/null and b/src/weekly/2023/assets/image.6vutorv5e140.webp differ
diff --git a/src/weekly/2023/assets/image.6zgaz1xgh2k0.webp b/src/weekly/2023/assets/image.6zgaz1xgh2k0.webp
new file mode 100644
index 0000000000..5fe8066e09
Binary files /dev/null and b/src/weekly/2023/assets/image.6zgaz1xgh2k0.webp differ
diff --git a/src/weekly/2023/assets/image.6zovd484t3k0.webp b/src/weekly/2023/assets/image.6zovd484t3k0.webp
new file mode 100644
index 0000000000..90023b9b07
Binary files /dev/null and b/src/weekly/2023/assets/image.6zovd484t3k0.webp differ
diff --git a/src/weekly/2023/assets/image.720gte6usvc0.webp b/src/weekly/2023/assets/image.720gte6usvc0.webp
new file mode 100644
index 0000000000..b08fc87a31
Binary files /dev/null and b/src/weekly/2023/assets/image.720gte6usvc0.webp differ
diff --git a/src/weekly/2023/assets/image.74s0ih5jufw0.webp b/src/weekly/2023/assets/image.74s0ih5jufw0.webp
new file mode 100644
index 0000000000..b0f59b8a71
Binary files /dev/null and b/src/weekly/2023/assets/image.74s0ih5jufw0.webp differ
diff --git a/src/weekly/2023/assets/image.74xq3tmbi0o0.webp b/src/weekly/2023/assets/image.74xq3tmbi0o0.webp
new file mode 100644
index 0000000000..f240e0a7ab
Binary files /dev/null and b/src/weekly/2023/assets/image.74xq3tmbi0o0.webp differ
diff --git a/src/weekly/2023/assets/image.78iikuhnlq40.webp b/src/weekly/2023/assets/image.78iikuhnlq40.webp
new file mode 100644
index 0000000000..0504e7827f
Binary files /dev/null and b/src/weekly/2023/assets/image.78iikuhnlq40.webp differ
diff --git a/src/weekly/2023/assets/image.7bu5e82bs740.webp b/src/weekly/2023/assets/image.7bu5e82bs740.webp
new file mode 100644
index 0000000000..56b77b74f8
Binary files /dev/null and b/src/weekly/2023/assets/image.7bu5e82bs740.webp differ
diff --git a/src/weekly/2023/assets/image.7c8ix67gwz40.webp b/src/weekly/2023/assets/image.7c8ix67gwz40.webp
new file mode 100644
index 0000000000..2ef0b810ab
Binary files /dev/null and b/src/weekly/2023/assets/image.7c8ix67gwz40.webp differ
diff --git a/src/weekly/2023/assets/image.7cseyaowsn40.webp b/src/weekly/2023/assets/image.7cseyaowsn40.webp
new file mode 100644
index 0000000000..45ca73dc3d
Binary files /dev/null and b/src/weekly/2023/assets/image.7cseyaowsn40.webp differ
diff --git a/src/weekly/2023/assets/image.7eadg5zqpno0.webp b/src/weekly/2023/assets/image.7eadg5zqpno0.webp
new file mode 100644
index 0000000000..63fd61e008
Binary files /dev/null and b/src/weekly/2023/assets/image.7eadg5zqpno0.webp differ
diff --git a/src/weekly/2023/assets/image.7endcn4oges0.webp b/src/weekly/2023/assets/image.7endcn4oges0.webp
new file mode 100644
index 0000000000..5aa72af0ea
Binary files /dev/null and b/src/weekly/2023/assets/image.7endcn4oges0.webp differ
diff --git a/src/weekly/2023/assets/image.7f9mgcoekso0.webp b/src/weekly/2023/assets/image.7f9mgcoekso0.webp
new file mode 100644
index 0000000000..36a73434f5
Binary files /dev/null and b/src/weekly/2023/assets/image.7f9mgcoekso0.webp differ
diff --git a/src/weekly/2023/assets/image.7fftrqjfk040.webp b/src/weekly/2023/assets/image.7fftrqjfk040.webp
new file mode 100644
index 0000000000..8c98972ed5
Binary files /dev/null and b/src/weekly/2023/assets/image.7fftrqjfk040.webp differ
diff --git a/src/weekly/2023/assets/image.7gmr9efor5w0.webp b/src/weekly/2023/assets/image.7gmr9efor5w0.webp
new file mode 100644
index 0000000000..fb5bf12748
Binary files /dev/null and b/src/weekly/2023/assets/image.7gmr9efor5w0.webp differ
diff --git a/src/weekly/2023/assets/image.9narqvbwdyw.webp b/src/weekly/2023/assets/image.9narqvbwdyw.webp
new file mode 100644
index 0000000000..f853f07a8c
Binary files /dev/null and b/src/weekly/2023/assets/image.9narqvbwdyw.webp differ
diff --git a/src/weekly/2023/assets/image.a0vxsoqjymo.webp b/src/weekly/2023/assets/image.a0vxsoqjymo.webp
new file mode 100644
index 0000000000..53e6a4306f
Binary files /dev/null and b/src/weekly/2023/assets/image.a0vxsoqjymo.webp differ
diff --git a/src/weekly/2023/assets/image.bpfxl1s6k20.webp b/src/weekly/2023/assets/image.bpfxl1s6k20.webp
new file mode 100644
index 0000000000..0df425a6a1
Binary files /dev/null and b/src/weekly/2023/assets/image.bpfxl1s6k20.webp differ
diff --git a/src/weekly/2023/assets/image.gk0owl1ko88.webp b/src/weekly/2023/assets/image.gk0owl1ko88.webp
new file mode 100644
index 0000000000..aa6eec6c2b
Binary files /dev/null and b/src/weekly/2023/assets/image.gk0owl1ko88.webp differ
diff --git a/src/weekly/2023/assets/image.hfbwof03ij4.webp b/src/weekly/2023/assets/image.hfbwof03ij4.webp
new file mode 100644
index 0000000000..ccaec5b91d
Binary files /dev/null and b/src/weekly/2023/assets/image.hfbwof03ij4.webp differ
diff --git a/src/weekly/2023/assets/image.jr4g9y9yhs0.webp b/src/weekly/2023/assets/image.jr4g9y9yhs0.webp
new file mode 100644
index 0000000000..9791d58e14
Binary files /dev/null and b/src/weekly/2023/assets/image.jr4g9y9yhs0.webp differ
diff --git a/src/weekly/2023/assets/image.jywhf1e59q8.webp b/src/weekly/2023/assets/image.jywhf1e59q8.webp
new file mode 100644
index 0000000000..214c2dea9d
Binary files /dev/null and b/src/weekly/2023/assets/image.jywhf1e59q8.webp differ
diff --git a/src/weekly/2023/assets/image.llzb1d68svk.webp b/src/weekly/2023/assets/image.llzb1d68svk.webp
new file mode 100644
index 0000000000..37c382a2bd
Binary files /dev/null and b/src/weekly/2023/assets/image.llzb1d68svk.webp differ
diff --git a/src/weekly/2023/assets/image.mbaakouf9xs.webp b/src/weekly/2023/assets/image.mbaakouf9xs.webp
new file mode 100644
index 0000000000..62437325f1
Binary files /dev/null and b/src/weekly/2023/assets/image.mbaakouf9xs.webp differ
diff --git a/src/weekly/2023/assets/image.png b/src/weekly/2023/assets/image.png
new file mode 100644
index 0000000000..e12581aa11
Binary files /dev/null and b/src/weekly/2023/assets/image.png differ
diff --git a/src/weekly/2023/assets/image.s1kg6vhlpa8.webp b/src/weekly/2023/assets/image.s1kg6vhlpa8.webp
new file mode 100644
index 0000000000..3043743996
Binary files /dev/null and b/src/weekly/2023/assets/image.s1kg6vhlpa8.webp differ
diff --git a/src/weekly/2023/assets/image.tewchebdai8.webp b/src/weekly/2023/assets/image.tewchebdai8.webp
new file mode 100644
index 0000000000..08cecd885f
Binary files /dev/null and b/src/weekly/2023/assets/image.tewchebdai8.webp differ
diff --git a/src/weekly/2023/assets/image.v2ym7b0p7a8.webp b/src/weekly/2023/assets/image.v2ym7b0p7a8.webp
new file mode 100644
index 0000000000..994c00a194
Binary files /dev/null and b/src/weekly/2023/assets/image.v2ym7b0p7a8.webp differ
diff --git a/src/weekly/2023/assets/image.vdlfzr7vpls.webp b/src/weekly/2023/assets/image.vdlfzr7vpls.webp
new file mode 100644
index 0000000000..fa421081db
Binary files /dev/null and b/src/weekly/2023/assets/image.vdlfzr7vpls.webp differ
diff --git a/src/weekly/2023/assets/image.vjlo51iydtc.webp b/src/weekly/2023/assets/image.vjlo51iydtc.webp
new file mode 100644
index 0000000000..097006aaf2
Binary files /dev/null and b/src/weekly/2023/assets/image.vjlo51iydtc.webp differ
diff --git a/src/weekly/2023/assets/image.webp b/src/weekly/2023/assets/image.webp
new file mode 100644
index 0000000000..27eccc9587
Binary files /dev/null and b/src/weekly/2023/assets/image.webp differ
diff --git a/src/weekly/2023/assets/image.z84udnspna8.webp b/src/weekly/2023/assets/image.z84udnspna8.webp
new file mode 100644
index 0000000000..5633a270a3
Binary files /dev/null and b/src/weekly/2023/assets/image.z84udnspna8.webp differ
diff --git a/src/weekly/2023/assets/image.zgzv7knvh68.webp b/src/weekly/2023/assets/image.zgzv7knvh68.webp
new file mode 100644
index 0000000000..9cad8f2c93
Binary files /dev/null and b/src/weekly/2023/assets/image.zgzv7knvh68.webp differ
diff --git a/src/weekly/2023/assets/image.ziyre4uf5m8.webp b/src/weekly/2023/assets/image.ziyre4uf5m8.webp
new file mode 100644
index 0000000000..1083947532
Binary files /dev/null and b/src/weekly/2023/assets/image.ziyre4uf5m8.webp differ
diff --git a/src/weekly/2023/assets/image.zm7qg7r4pyo.webp b/src/weekly/2023/assets/image.zm7qg7r4pyo.webp
new file mode 100644
index 0000000000..b1a2f9d72f
Binary files /dev/null and b/src/weekly/2023/assets/image.zm7qg7r4pyo.webp differ
diff --git a/src/weekly/2023/assets/image.zns5lxxti7.webp b/src/weekly/2023/assets/image.zns5lxxti7.webp
new file mode 100644
index 0000000000..2ebe6814a8
Binary files /dev/null and b/src/weekly/2023/assets/image.zns5lxxti7.webp differ
diff --git a/src/weekly/2023/assets/inkscape.png b/src/weekly/2023/assets/inkscape.png
new file mode 100644
index 0000000000..e4b038ee3e
Binary files /dev/null and b/src/weekly/2023/assets/inkscape.png differ
diff --git a/src/weekly/2023/assets/java-learning.png b/src/weekly/2023/assets/java-learning.png
new file mode 100644
index 0000000000..0225de9341
Binary files /dev/null and b/src/weekly/2023/assets/java-learning.png differ
diff --git a/src/weekly/2023/assets/javafamily.png b/src/weekly/2023/assets/javafamily.png
new file mode 100644
index 0000000000..4a6d5b6ce0
Binary files /dev/null and b/src/weekly/2023/assets/javafamily.png differ
diff --git a/src/weekly/2023/assets/js-tips.png b/src/weekly/2023/assets/js-tips.png
new file mode 100644
index 0000000000..224f217e93
Binary files /dev/null and b/src/weekly/2023/assets/js-tips.png differ
diff --git a/src/weekly/2023/assets/jsdelivr.png b/src/weekly/2023/assets/jsdelivr.png
new file mode 100644
index 0000000000..e8cbaf2d82
Binary files /dev/null and b/src/weekly/2023/assets/jsdelivr.png differ
diff --git a/src/weekly/2023/assets/json-crack.png b/src/weekly/2023/assets/json-crack.png
new file mode 100644
index 0000000000..b0551326aa
Binary files /dev/null and b/src/weekly/2023/assets/json-crack.png differ
diff --git a/src/weekly/2023/assets/kuboard.png b/src/weekly/2023/assets/kuboard.png
new file mode 100644
index 0000000000..34b1402f87
Binary files /dev/null and b/src/weekly/2023/assets/kuboard.png differ
diff --git a/src/weekly/2023/assets/learn-prompting.png b/src/weekly/2023/assets/learn-prompting.png
new file mode 100644
index 0000000000..875f25ae69
Binary files /dev/null and b/src/weekly/2023/assets/learn-prompting.png differ
diff --git a/src/weekly/2023/assets/magiccoder.png b/src/weekly/2023/assets/magiccoder.png
new file mode 100644
index 0000000000..1021468c0b
Binary files /dev/null and b/src/weekly/2023/assets/magiccoder.png differ
diff --git a/src/weekly/2023/assets/mdn-web-docs.png b/src/weekly/2023/assets/mdn-web-docs.png
new file mode 100644
index 0000000000..1ded0a1339
Binary files /dev/null and b/src/weekly/2023/assets/mdn-web-docs.png differ
diff --git a/src/weekly/2023/assets/microsoft-editor.png b/src/weekly/2023/assets/microsoft-editor.png
new file mode 100644
index 0000000000..da57748d50
Binary files /dev/null and b/src/weekly/2023/assets/microsoft-editor.png differ
diff --git a/src/weekly/2023/assets/microsoft-todo.png b/src/weekly/2023/assets/microsoft-todo.png
new file mode 100644
index 0000000000..6f1b41589f
Binary files /dev/null and b/src/weekly/2023/assets/microsoft-todo.png differ
diff --git a/src/weekly/2023/assets/minnote.png b/src/weekly/2023/assets/minnote.png
new file mode 100644
index 0000000000..57802d7f53
Binary files /dev/null and b/src/weekly/2023/assets/minnote.png differ
diff --git a/src/weekly/2023/assets/mm10-ad-mian-banner.gif b/src/weekly/2023/assets/mm10-ad-mian-banner.gif
new file mode 100644
index 0000000000..9a2fdd46ff
Binary files /dev/null and b/src/weekly/2023/assets/mm10-ad-mian-banner.gif differ
diff --git a/src/weekly/2023/assets/netease-recent-profile.png b/src/weekly/2023/assets/netease-recent-profile.png
new file mode 100644
index 0000000000..6bbad37b84
Binary files /dev/null and b/src/weekly/2023/assets/netease-recent-profile.png differ
diff --git a/src/weekly/2023/assets/programmer-offer-guide.png b/src/weekly/2023/assets/programmer-offer-guide.png
new file mode 100644
index 0000000000..9e4e99cd64
Binary files /dev/null and b/src/weekly/2023/assets/programmer-offer-guide.png differ
diff --git a/src/weekly/2023/assets/prompt-engineering-guide.png b/src/weekly/2023/assets/prompt-engineering-guide.png
new file mode 100644
index 0000000000..961d780e5b
Binary files /dev/null and b/src/weekly/2023/assets/prompt-engineering-guide.png differ
diff --git a/src/weekly/2023/assets/pycharm-guide.png b/src/weekly/2023/assets/pycharm-guide.png
new file mode 100644
index 0000000000..eb6b5760f9
Binary files /dev/null and b/src/weekly/2023/assets/pycharm-guide.png differ
diff --git a/src/weekly/2023/assets/simple-read.png b/src/weekly/2023/assets/simple-read.png
new file mode 100644
index 0000000000..b6233da597
Binary files /dev/null and b/src/weekly/2023/assets/simple-read.png differ
diff --git a/src/weekly/2023/assets/smart-docs.png b/src/weekly/2023/assets/smart-docs.png
new file mode 100644
index 0000000000..dd2536174f
Binary files /dev/null and b/src/weekly/2023/assets/smart-docs.png differ
diff --git a/src/weekly/2023/assets/springdoc.png b/src/weekly/2023/assets/springdoc.png
new file mode 100644
index 0000000000..c8db435866
Binary files /dev/null and b/src/weekly/2023/assets/springdoc.png differ
diff --git a/src/weekly/2023/assets/starfish-vue3-lowcode.gif b/src/weekly/2023/assets/starfish-vue3-lowcode.gif
new file mode 100644
index 0000000000..6a917174e8
Binary files /dev/null and b/src/weekly/2023/assets/starfish-vue3-lowcode.gif differ
diff --git a/src/weekly/2023/assets/supercopy.png b/src/weekly/2023/assets/supercopy.png
new file mode 100644
index 0000000000..dca1ca87a8
Binary files /dev/null and b/src/weekly/2023/assets/supercopy.png differ
diff --git a/src/weekly/2023/assets/tampermonkey.png b/src/weekly/2023/assets/tampermonkey.png
new file mode 100644
index 0000000000..c348dd88c2
Binary files /dev/null and b/src/weekly/2023/assets/tampermonkey.png differ
diff --git a/src/weekly/2023/assets/tobetopjavaer.png b/src/weekly/2023/assets/tobetopjavaer.png
new file mode 100644
index 0000000000..59ea067cf9
Binary files /dev/null and b/src/weekly/2023/assets/tobetopjavaer.png differ
diff --git a/src/weekly/2023/assets/typora.png b/src/weekly/2023/assets/typora.png
new file mode 100644
index 0000000000..4fb21aa80a
Binary files /dev/null and b/src/weekly/2023/assets/typora.png differ
diff --git a/src/weekly/2023/assets/volcengine.png b/src/weekly/2023/assets/volcengine.png
new file mode 100644
index 0000000000..b136bdddf5
Binary files /dev/null and b/src/weekly/2023/assets/volcengine.png differ
diff --git a/src/weekly/2023/assets/vuepress-theme-hope.png b/src/weekly/2023/assets/vuepress-theme-hope.png
new file mode 100644
index 0000000000..40cf1af94d
Binary files /dev/null and b/src/weekly/2023/assets/vuepress-theme-hope.png differ
diff --git a/src/weekly/2023/assets/vuepress-theme-vdoing.png b/src/weekly/2023/assets/vuepress-theme-vdoing.png
new file mode 100644
index 0000000000..d45ea45810
Binary files /dev/null and b/src/weekly/2023/assets/vuepress-theme-vdoing.png differ
diff --git a/src/weekly/2023/assets/web-nav.png b/src/weekly/2023/assets/web-nav.png
new file mode 100644
index 0000000000..37c662d590
Binary files /dev/null and b/src/weekly/2023/assets/web-nav.png differ
diff --git a/src/weekly/2023/assets/web_intro1.yrsf6v2pohc.webp b/src/weekly/2023/assets/web_intro1.yrsf6v2pohc.webp
new file mode 100644
index 0000000000..e28666d878
Binary files /dev/null and b/src/weekly/2023/assets/web_intro1.yrsf6v2pohc.webp differ
diff --git a/src/weekly/2023/assets/weekly2023-32-1.webp b/src/weekly/2023/assets/weekly2023-32-1.webp
new file mode 100644
index 0000000000..a533624a3a
Binary files /dev/null and b/src/weekly/2023/assets/weekly2023-32-1.webp differ
diff --git a/src/weekly/2023/assets/weekly2023-32-2.webp b/src/weekly/2023/assets/weekly2023-32-2.webp
new file mode 100644
index 0000000000..7081defb18
Binary files /dev/null and b/src/weekly/2023/assets/weekly2023-32-2.webp differ
diff --git a/src/weekly/2023/assets/weekly2023-32-3.webp b/src/weekly/2023/assets/weekly2023-32-3.webp
new file mode 100644
index 0000000000..aea7a873ee
Binary files /dev/null and b/src/weekly/2023/assets/weekly2023-32-3.webp differ
diff --git a/src/weekly/2023/assets/white-scan.png b/src/weekly/2023/assets/white-scan.png
new file mode 100644
index 0000000000..299503ba07
Binary files /dev/null and b/src/weekly/2023/assets/white-scan.png differ
diff --git a/src/weekly/2023/assets/writingo-enhance.png b/src/weekly/2023/assets/writingo-enhance.png
new file mode 100644
index 0000000000..ad051561a4
Binary files /dev/null and b/src/weekly/2023/assets/writingo-enhance.png differ
diff --git a/src/weekly/2023/assets/writingo.png b/src/weekly/2023/assets/writingo.png
new file mode 100644
index 0000000000..56fe0241d1
Binary files /dev/null and b/src/weekly/2023/assets/writingo.png differ
diff --git a/src/weekly/2023/assets/yuque.png b/src/weekly/2023/assets/yuque.png
new file mode 100644
index 0000000000..11ae525024
Binary files /dev/null and b/src/weekly/2023/assets/yuque.png differ
diff --git a/src/weekly/2024/0101-0105.md b/src/weekly/2024/0101-0105.md
new file mode 100644
index 0000000000..83b0aee192
--- /dev/null
+++ b/src/weekly/2024/0101-0105.md
@@ -0,0 +1,163 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#38：在线图片处理
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/jy6pfjLa5Jfp9rZVGem3pg
+:::
+
+
+## 一、项目
+
+### 1. [AiEditor](https://gitee.com/aieditor-team/aieditor)
+
+一个面向 `AI` 的下一代富文本编辑器，她基于 `Web Component`，因此支持 `Layui`、`Vue`、`React`、`Angular` 等几乎任何前端框架。她适配了 `PC Web` 端和手机端，并提供了亮色和暗色两个主题。除此之外，还提供了灵活的配置，开发者可以方便的使用其开发任何文字编辑的应用。
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/1701774383285.webp)
+
+### 2. [GoView](https://gitee.com/dromara/go-view)
+
+一个 `Vue3` 搭建的低代码数据可视化开发平台，将图表或页面元素封装为基础组件，无需编写代码即可完成业务需求。
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/1701774668856.webp)
+
+### 3. [hexo-theme-stellar](https://github.com/xaoxuu/hexo-theme-stellar)
+
+一个内置文档系统的简约商务风 `Hexo` 主题，支持丰富的标签和动态数据组件。
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/1704240568952.webp)
+
+## 二、软件
+
+### 1. [酷呆桌面](https://www.coodesker.com/)
+
+自动分类整理桌面上的快捷方式、目录、图片等文件。
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/image-20231127082315331.webp)
+
+### 2. [Notepad--](https://github.com/cxasm/notepad--)
+
+一个使用 `C++` 编写的文本编辑器 `Notepad--`, 可以支持 `Win/Linux/Mac` 平台。
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/image-20231127082606541.webp)
+
+### 3. [PxCook](https://fancynode.com.cn/pxcook)
+
+高效易用的自动标注工具，生成前端代码，设计研发协作利器。
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/image-20231127082530531.webp)
+
+## 三、网站
+
+### 1. [太美工具箱](https://tiomg.org/)
+
+在线工具，免费图片压缩工具，在线图片工具，在线 `PDF` 工具，程序开发者工具。
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/1701217723634.webp)
+
+### 2. [改图鸭](https://www.gaituya.com/)
+
+改图鸭作为在线版图片格式处理工具，提供图片编辑、图片格式转换、图片压缩等大量的图片处理功能，用户不用下载任何软件，只需将图片上传到官网即可对图片进行编辑，方便快捷。
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/1701218686283.webp)
+
+### 3. [去去去](https://quququ.cn/)
+
+一款图片在线去水印网站，永久免费，使用人工智能技术，支持批量去除图片中的文字、标志，多余物体等多种水印，去水印不留痕，不压画质，高质不糊图！
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/1701218832636.webp)
+
+## 四、插件
+
+### 1. [ColorZilla](https://chromewebstore.google.com/detail/colorzilla/bhlhnicpbhignbdhedgjhgdocnmhomnp)
+
+高级吸管、拾色器、渐变生成器和其他与颜色相关的实用工具。
+
+最用户友好、功能齐全、安全且可靠的颜色选择器和与颜色相关的工具套件。
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/1704240655799.webp)
+
+### 2. [Stylus](https://chromewebstore.google.com/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne)
+
+一个调整网页外观的用户样式管理器。
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/1704240681938.webp)
+
+### 3. [Feedly Notifier](https://chromewebstore.google.com/detail/feedly-notifier/egikgfbhipinieabdmcpigejkaomgjgb)
+
+一个精巧的扩展，可让您随时了解 `Feedly` 订阅。支持如下功能：
+
+-   显示未读新闻数
+-   未读新闻标题(直链新闻站点)
+-   文章预览在弹窗显示
+-   设置更新类别 
+-   HTTPS支持
+-   将新闻标记为已读
+-   保存以便稍后阅读
+-   单击按钮即可打开网站(作为计数器)
+-   桌面通知
+-   后台模式
+
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/1704240718582.webp)
+
+## 五、资料
+
+### 1. [BingheGuide](https://github.com/binghe001/BingheGuide)
+
+包含：编程语言，开发技术，分布式，微服务，高并发，高可用，高可扩展，高可维护，`JVM` 技术，`MySQL`，分布式数据库，分布式事务，云原生，大数据，云计算，渗透技术，各种面试题，面试技巧等方面内容。
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/1701389750846.webp)
+
+### 2. [JavaSecurityLearning](https://github.com/Drun1baby/JavaSecurityLearning)
+
+记录了作者 `Java` 安全的学习历程，主要包含以下方面的内容：
+
+- 基础开发
+- `Java` 安全基础
+- `Java` 反序列化基础
+- `Java` 反序列化进阶
+- `Weblogic`
+- 内存马
+- ……
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/1702552267661.webp)
+
+### 3. [threadandjuc](https://github.com/qiurunze123/threadandjuc)
+
+项目利用多线程进行千万级别导入，实现可扩展，高性能、高可用、高可靠三个高，本项目可以在千万级别数据实现无差别高性能数据上报与导入，与普通导入相比性能提高 10 倍左右，而且规避风险在偶尔的机器宕机，网络波动等情况出现时，仍能够实现数据一致，数据可靠，数据重试，数据报警等功能。
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0101-0105/1702552755528.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2024/0106-0112.md b/src/weekly/2024/0106-0112.md
new file mode 100644
index 0000000000..94da7b559b
--- /dev/null
+++ b/src/weekly/2024/0106-0112.md
@@ -0,0 +1,145 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#39：IT 人必备神器
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/7cYV6BHlCXgCSjnPqWe_cg
+:::
+
+
+## 一、项目
+
+### 1. [Powerlevel10k](https://github.com/romkatv/powerlevel10k)
+
+最好看，方便，实用的 zsh 命令行主题。
+
+![](assets/0106-0112/1704327242436.webp)
+
+### 2. [WebStack-Guns-NKT](https://github.com/Nikati/WebStack-Guns-NKT)
+
+一个开源的网址导航网站项目，具备完整的前后台，后端使用 SpringBoot 搭建，可以拿来制作自己的网址导航。
+
+![](assets/0106-0112/1704328390116.webp)
+
+### 3. [Gfriends](https://github.com/gfriends/gfriends)
+
+媒体服务器演员头像仓库。旨在满足数量需求前提下，尽可能收集和处理高质量女友头像，并提供导入媒体服务器方案。
+
+![](assets/0106-0112/1704328314135.webp)
+
+## 二、软件
+
+### 1. [ZhiMap](https://zhimap.com/)
+
+好用、好看的在线思维导图工具，帮助你提高工作效率、学习效率。
+
+![](assets/0106-0112/image-20231127082853724.webp)
+
+### 2. [Legado](https://github.com/gedoor/legado)
+
+一款可以自定义来源阅读网络内容的工具，为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。
+
+![](assets/0106-0112/image-20231127082821478.webp)
+
+### 3. [日事清](https://www.rishiqing.com/)
+
+日事清是高效能团队管理专家，为追求高效、有序的工作方式的团队管理者，提供专业、有效的团队管理工具和方法，让工作变得井井有条。
+
+
+![](assets/0106-0112/1701303273272.webp)
+
+## 三、网站
+
+### 1. [国图公开课](http://open.nlc.cn/onlineedu/client/index.htm)
+
+中国国家图书馆推出的高质量免费在线学习网站。
+
+![](assets/0106-0112/1701302673299.webp)
+
+### 2. [办公资源网](https://www.bangongziyuan.com/)
+
+一家专注海量办公资源下载的网站，提供各种精美创意 `PPT` 模板、`Excel` 模板、`Word` 模板、免费音效资源及大量办公素材，包括个人简历 `Word` 模板、工作总结 `PPT`、教育培训课件等大量办公模板，来办公资源网，办公不求人。
+
+![](assets/0106-0112/1701302644938.webp)
+
+### 3. [好知](http://www.howzhi.com/)
+
+一个综合性在线学习平台。这里有大量的在线课程，课程涵盖计算机知识、企业管理、摄影、`photoshop`、职业技能、运动、外语、美食、时尚、手工艺、公开课、职业资格考试等。
+
+![](assets/0106-0112/1701302616603.webp)
+
+## 四、插件
+
+### 1. [闪记](https://kjeek.com/)
+
+ALL IN ONE，包括但不止于万级书签管理、沉浸式网页笔记、双语沉浸式翻译、智能网页大纲等 10+ 项高频功能/操作。
+
+![](assets/0106-0112/1704797860819.webp)
+
+### 2. [迅雷下载支持](https://chromewebstore.google.com/detail/迅雷下载支持/ncennffkjdiamlpmcbajkmaiiiddgioo?hl=zh-CN)
+
+用于实现迅雷 X 接管 Chrome 浏览器的下载请求，方便的“多选下载”模式可以快速下载网页中的多个链接，并支持下载网页中的在线视频。
+
+![](assets/0106-0112/1704798224153.webp)
+
+
+### 3. [会译](https://chromewebstore.google.com/detail/会译·对照式翻译/dgeiaiglmhdhajbpfbmajaajdlfdinpi?hl=zh-CN)
+
+
+一款 AI 翻译浏览器插件，采用 AI 智能翻译，你的专属 AI 翻译专家。会译沉浸式的帮你翻译网上的任何语言内容，支持多语种对照式翻译，在线翻译，文档翻译，英汉互译，智能识别网页内容，降低语言障碍门槛，一键极速翻译，支持所有网站。
+
+![](assets/0106-0112/1704798495508.webp)
+
+## 五、资料
+
+### 1.[JavaScript Guidebook](https://github.com/tsejx/javascript-guidebook)
+
+JavaScript 前端知识图谱，整理自各大技术社区和权威书籍的前端技术图谱。
+
+![](assets/0106-0112/1704672431647.webp)
+
+### 2. [鱼皮的编程宝典](https://github.com/liyupi/codefather)
+
+程序员鱼皮的编程宝典。原创编程学习路线，包括经验分享、技术知识、学习资源、学习建议、项目等，适用于所有学习编程 & 求职的同学。
+
+![](assets/0106-0112/1704672386119.webp)
+
+### 3. [cpp_new_features](https://github.com/0voice/cpp_new_features)
+
+C++ 学习资料，含 C++ 11/14/17/20/23 新特性、入门教程、推荐书籍、优质文章、学习笔记、教学视频等。
+
+![](assets/0106-0112/1704672353730.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2024/0113-0119.md b/src/weekly/2024/0113-0119.md
new file mode 100644
index 0000000000..aa5643c966
--- /dev/null
+++ b/src/weekly/2024/0113-0119.md
@@ -0,0 +1,151 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#40：多功能文件管理器
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/AF-a6ZtK84lIgYyKmgumxA
+:::
+
+
+## 一、项目
+
+### 1. [中国节假日补班日历](https://github.com/lanceliao/china-holiday-calender)
+
+中国节假日、调休、补班日历，ICS 格式，支持 IPhone、Google Calendar、Outlook 等客户端订阅。
+
+![](assets/0113-0119/1704672561667.webp)
+
+### 2. [Material Design User Interface](https://github.com/zdhxiong/mdui)
+
+使用 Web Components 实现，遵循 Material You 设计规范的 Web 前端组件库。
+
+![](assets/0113-0119/1704672540557.webp)
+
+### 3. [Single](https://github.com/Dreamer-Paul/Single)
+
+一个简洁大气，含夜间模式的 Typecho 博客主题。具有简洁大气、夜间模式、文章目录、图片灯箱、代码高亮、平滑滚动、无 JQ 库的特点。
+
+![](assets/0113-0119/1704672500281.webp)
+
+## 二、软件
+
+### 1. [Allen Explorer](https://www.allenxiang.com/)
+
+一款能够替代“我的电脑”的文件管理软件。类 `Chrome` 界面设计，简洁美观。
+- 支持多标签页、双工作区、收藏夹等功能
+- 可对文件/文件夹进行预览、置顶、标记、备注等操作
+- 集成多个功能强大的内置及第三方功能插件
+- 极大优化文件操作体验
+
+![](assets/0113-0119/1702512381210.webp)
+
+### 2. [XYplorer](https://www.xyplorer.com/)
+
+`Windows` 下的文件管理器。它具有选项卡式浏览、强大的文件搜索、多功能预览、高度可定制的界面、可选的双窗格以及许多有效自动化重复任务的独特方法。快速、轻便且便携。
+
+![](assets/0113-0119/1702512465083.webp)
+
+### 3. [WeChatMsg](https://github.com/LC044/WeChatMsg)
+
+提取微信聊天记录，将其导出成 `HTML`、`Word`、`CSV` 文档永久保存，对聊天记录进行分析生成年度聊天报告。
+
+![](assets/0113-0119/1701773578459.webp)
+
+## 三、网站
+
+### 1. [MSDN-山己几子木](https://msdn.sjjzm.com/)
+
+站内提供 `Windows 11`、`Windows 10`、`Windows 8.1`、`Windows 8`、`Windows 7`、`Windows XP` 的 `MSDN` 镜像资源展示及下载。
+
+![](assets/0113-0119/image-20231201081936486.webp)
+
+### 2. [字体天下](https://www.fonts.net.cn/)
+
+提供中文字体、手写字体、英文字体、图形字体等各种字体的高速免费下载和在线预览服务。
+
+![](assets/0113-0119/image-20231201080341645.webp)
+
+### 3. [逗比表情包](https://www.dbbqb.com/)
+
+专业的表情包搜索网站，不仅有精选表情，还有精选套图以及表情自定义。
+
+![](assets/0113-0119/image-20231201080504953.webp)
+
+## 四、插件
+
+### 1. [YouTube-繁体自动翻译修正](https://chromewebstore.google.com/detail/youtube-繁体自动翻译修正/nghlhmhjdlbcgnmjffpeialapbcnajig)
+
+修正 YouTube 繁体中文自动翻译无法正确显示的错误。
+
+字幕设定选单中的选项会在 YouTube 语言为中文（繁体）时进行更动，修改选项为「『修复』中文（繁体）」。若 YouTube 语言并非繁体，则不会添加「修复」标签，但修复字幕的功能仍然有效。
+
+![](assets/0113-0119/1704888680945.webp)
+
+### 2. [视频下载器](https://videodownloaderbest.com/)
+
+一款终极工具，可以从 Twitter、Instagram、Facebook、TikTok、Vimeo、VK、DailyMotion、Reddit 等众多平台下载视频。旨在提供触手可及的无缝、高效的下载体验。
+
+![](assets/0113-0119/1704888926344.webp)
+
+### 3. [MD Reader](https://chromewebstore.google.com/detail/md-reader/medapdbncneneejhbgcjceippjlfkmkg?hl=zh-CN)
+
+一个可以使 Chrome 预览 markdown 文件的浏览器扩展。
+
+支持浏览 file://、http://、https:// 协议，以及 *.md、*.mkd、*.markdown 扩展名。
+
+![](assets/0113-0119/1704889139393.webp)
+
+## 五、资料
+
+### 1. [30s 学 JavaScript](https://github.com/Chalarangelo/30-seconds-of-code)
+
+项目收集了实用的 JavaScript 代码片段，让你在 30 秒内就能掌握并运用。
+
+![](assets/0113-0119/1704672800110.webp)
+
+### 2. [Rails Girls 教程](https://rgcn.github.io/)
+
+教程的宗旨是给女性提供一个交流技术和实现理想的工具和社区，您可以在这里学习怎样自行组织活动、上传更多原创教程，当然也可以仅仅专注于学习 Rails。
+
+![](assets/0113-0119/1704672770872.webp)
+
+### 3. [RailsBridge Docs](https://docs.railsbridge.org/docs/)
+
+网站普通用户搭建一道连接技术的桥梁，帮助人们更好的学习新技术。
+
+主要有 Rails、Ruby、HTML、CSS 等方面的内容。
+
+![](assets/0113-0119/1704672740961.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2024/0120-0126.md b/src/weekly/2024/0120-0126.md
new file mode 100644
index 0000000000..6207960884
--- /dev/null
+++ b/src/weekly/2024/0120-0126.md
@@ -0,0 +1,162 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#41：新一代截图神器
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/sjPIgXpigiJdAKMHWvbm9A
+:::
+
+
+## 一、项目
+
+### 1. [LiteFlow](https://gitee.com/dromara/liteFlow)
+
+轻量，快速，稳定，可编排的组件式规则引擎 / 流程引擎。 拥有全新设计的 DSL 规则表达式。 组件复用，同步 / 异步编排，动态编排，支持超多语言脚本，复杂嵌套规则，热部署，平滑刷新规则等等功能，让你加快开发效率！
+
+![](assets/0120-0126/1705129496377.webp)
+
+### 2. [Restful Fast Request](https://github.com/dromara/fast-request)
+
+一个类似于 Postman 的 IDEA 插件。它是一个强大的 restful api 工具包插件，可以根据已有的方法帮助您快速生成 url 和 params。 Restful Fast Request = API调试工具 + API管理工具 + API搜索工具。 它有一个漂亮的界面来完成请求、检查服务器响应、存储你的 api 请求和导出 api 请求。插件帮助你在 IDEA 界面内更快更高效得调试你的 API。
+
+对比于 HTTP Client，Fast Request 不仅拥有 HTTP Client 内置的功能，还提供了友好易懂直观的界面，让使用者调试 API 的时候能够更加方便、简捷。同时各种类型参数也提供了不同的定制方式，更加灵活。而且集成了搜索、Postman 集成，Swagger 支持等额外的功能。
+
+![](assets/0120-0126/1705129660484.webp)
+
+### 3. [Sa-Token](https://github.com/dromara/sa-token)
+
+一个轻量级 Java 权限认证框架，主要解决：登录认证、权限认证、单点登录、OAuth2.0、分布式 Session 会话、微服务网关鉴权等一系列权限相关问题。
+
+![](assets/0120-0126/1705129937999.webp)
+
+## 二、软件
+
+### 1. [PixPin](https://pixpinapp.com/)
+
+集截图/贴图/长截图/文字识别/标注功能于一身。
+
+功能强大使用简单的截图/贴图工具，帮助你提高效率。
+
+![](assets/0120-0126/1704709171041.webp)
+
+### 2. [团子翻译器](https://github.com/PantsuDango/Dango-Translator)
+
+一款生肉翻译软件，通过 OCR 识别屏幕特定范围内的文字，然后将识别到的文字调取各种翻译源，并实时输出翻译结果。
+
+软件具有如下特点：
+
+- 搭载了离线 OCR
+- 搭载了在线 OCR 和漫画 OCR
+- 实现自动模式，实时识别区域内的文本并翻译
+- 配置了 15 种翻译源
+- 账号系统，能够自动云端保存配置
+- 另有图片翻译功能，实现对生肉漫画图片自动识别、翻译、消字、嵌字
+
+![](assets/0120-0126/1704709214595.webp)
+
+### 3. [Apipost](https://www.apipost.cn/)
+
+集 API 设计、API 调试、API 文档、自动化测试为一体的 API 研发协同平台，支持 grpc、http、websocket、socketio、socketjs 类型接口调试，支持私有化部署。
+
+![](assets/0120-0126/1704709242796.webp)
+
+## 三、网站
+
+### 1. [熊猫搜索](https://xmsoushu.com/)
+
+熊猫搜索，熊猫搜书，聚合电子书、文档搜索引擎，一站式搜索导航，方便快速导航搜索全网资源，读书学习必备导航站。
+
+![](assets/0120-0126/1704709277288.webp)
+
+### 2. [ChatPaper](https://github.com/kaixindelele/ChatPaper)
+
+全流程加速科研，利用 chatgpt 进行论文全文总结 + 专业翻译 + 润色 + 审稿 + 审稿回复。
+
+![](assets/0120-0126/1704709381142.webp)
+
+### 3. [MACYY](https://www.macyy.cn/)
+
+Mac 破解软件分享中心。
+
+![](assets/0120-0126/1704709441848.webp)
+
+## 四、插件
+
+### 1. [Zoom](https://chromewebstore.google.com/detail/zoom-chrome-extension/kgjfgplpablkjnlkjmjdecgdpfankdle)
+
+只需单击按钮，您就可以直接通过 Google 日历开始即时会议或安排未来的会议。会议 URL 和信息通过 Google 日历邀请发送，参会者只需单击一下即可加入。
+
+![](assets/0120-0126/1705132569378.webp)
+
+### 2. [Screencastify](https://chromewebstore.google.com/detail/screencastify-screen-vide/mmeijimgabbpbgpdklnllpncmdofkcpn)
+
+Chrome 最简单的免费屏幕录像机和视频创建平台之一，使任何人都可以通过在几秒钟内录制、编辑、共享和评估视频来成为更好的沟通者。
+
+![](assets/0120-0126/1705132688421.webp)
+
+
+### 3. [Honey](https://chromewebstore.google.com/detail/honey-automatic-coupons-r/bmnlcjabgnpnenekpadlanbbkooimhnj)
+
+Honey 是一个浏览器扩展，只需点击一下，就能在结账时自动找到并应用优惠券折扣码。
+
+![](assets/0120-0126/1705132774785.webp)
+
+## 五、资料
+
+### 1. [开源世界旅行手册](https://i.linuxtoy.org/docs/guide/index.html)
+
+本书分为四个部分：气候、地理、景观、地质。
+
+气候篇中的内容为课外读物，包括一些杂谈随笔，可以增长知识。
+
+地理篇为必修课，它是这本书的核心，包含一些基本教程。这一部分的内容，建议熟读。
+
+景观篇为选修课，里面的内容为实用的解决方案，但并不是每个人都需要。
+
+地质篇的内容为开源运动史。
+
+![](assets/0120-0126/image-20240108081450137.webp)
+
+### 2. [Zephyr OS 文档](https://github.com/chunhuajiang/zephyr-doc)
+
+Zephyr Project 官方文档的中文翻译版。
+
+![](assets/0120-0126/1704708979286.webp)
+
+### 3. [Go 程序员面试笔试宝典](https://github.com/golang-design/go-questions)
+
+从问题切入，串连 Go 语言相关的所有知识，融会贯通。
+
+![](assets/0120-0126/1704887357815.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
\ No newline at end of file
diff --git a/src/weekly/2024/0127-0202.md b/src/weekly/2024/0127-0202.md
new file mode 100644
index 0000000000..6d93764112
--- /dev/null
+++ b/src/weekly/2024/0127-0202.md
@@ -0,0 +1,143 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#42：国产项目管理软件
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/eb3hIteDTlG0gb7vNug9eg
+:::
+
+
+## 一、项目
+
+### 1. [菠萝博客](https://github.com/adlered/bolo-solo)
+
+基于 Java 的菠萝博客系统，简单易部署，精致主题，贴心服务，专为程序员设计。
+
+![](assets/0127-0202/1705491918451.webp)
+
+### 2. [Picuang](https://github.com/adlered/Picuang)
+
+本地存储图床，使用 SpringBoot 开发，RESTful 前后端分离，面向用户的网络图床服务。
+
+![](assets/0127-0202/1705491966874.webp)
+
+### 3. [CRMEB 开源商城系统 Java 版](https://gitee.com/ZhongBangKeJi/crmeb_java)
+
+CRMEB 开源商城系统 Java 版，基于 Java+Vue+Uni-app 开发，在微信公众号、小程序、H5 移动端都能使用，代码全开源无加密，独立部署，二开很方便，还支持免费商用，能满足企业新零售、分销推广、拼团、砍价、秒杀等多种经营需求，自用、做二开项目都很合适。
+
+![](assets/0127-0202/1705492056083.webp)
+
+## 二、软件
+
+### 1. [Fluent Search](https://fluentsearch.net/)
+
+一款快速启动器，融合了 Windows 11 Fluent Design 风格，当前仅支持 Windows 10 和 Windows 11。
+
+![](assets/0127-0202/image-20240108081722437.webp)
+
+### 2. [微力同步](https://www.verysync.com/)
+
+一款高效的数据传输工具，简单易用的多平台文件同步软件，惊人的传输速度是不同于其他产品的最大优势， 微力同步 的智能 P2P 技术加速同步，会将文件分割成若干份仅 KB 的数据同步，而文件都会进行 AES 加密处理。
+
+![](assets/0127-0202/1704709528680.webp)
+
+### 3. [禅道](https://www.zentao.net/)
+
+国产的开源项目管理软件，专注研发项目管理，内置需求管理、任务管理、bug 管理、缺陷管理、用例管理、计划发布等功能，实现了软件的完整生命周期管理。
+
+![](assets/0127-0202/1704709657035.webp)
+
+## 三、网站
+
+### 1. [菜鸟图库](https://www.sucai999.com/)
+
+菜鸟图库汇集了各种免费高清广告图片设计、电商淘宝、企业办公模板、视频、配乐、音效、字体、插画动图、装饰模型等素材，由顶尖的设计师供稿，满足各个行业的商用需求，下载高品质免费素材就到菜鸟图库。
+
+![](assets/0127-0202/1704709704174.webp)
+
+### 2. [觅元素](https://www.51yuansu.com/)
+
+觅元素专注于提供高质量版权素材图片免费下载的网站，提供优质 png 素材、高清背景素材、图片素材、设计素材，找高质量版权素材就来觅元素。
+
+![](assets/0127-0202/1704709747360.webp)
+
+### 3. [图精灵](https://616pic.com/)
+
+图精灵专注提供用户配图背景素材,网站提供海量免费 PNG 图片素材、背景图片素材、广告设计模板、摄影图片、免费字体等,各类高清精品免抠元素和背景图片,让设计从此变得简单！
+
+![](assets/0127-0202/1704709803622.webp)
+
+## 四、插件
+
+### 1. [NeatDownloadManager](https://chromewebstore.google.com/detail/neatdownloadmanager-exten/cpcifbdmkopohnnofedkjghjiclmhdah)
+
+将 NeatDownloadManager 应用程序与 Chrome 浏览器集成。主动接管下载链接发送到 NeatDownloadManager，帮助我们从许多网站下载视频/音频。
+
+![](assets/0127-0202/1705715412458.webp)
+
+### 2. [Leaf](https://chromewebstore.google.com/detail/fobdcbnndmloacbikchffcpjinbkadei)
+
+提供了一种简单、快速、直观的方式来创建和管理笔记。非常适合那些一天大部分时间都在使用计算机同时需要一个地方来快速记下灵感的人。
+
+![](assets/0127-0202/1705715698136.webp)
+
+### 3. [音量控制器](https://chromewebstore.google.com/detail/volume-master-音量控制器/jghecgabfgfdldnmbfkhmffcabddioke)
+
+最简单，最可靠的音量增强器，最高可以将音量提高 6 倍，而且可以做到精细化到标签控制。
+
+![](assets/0127-0202/1705715901785.webp)
+
+## 五、资料
+
+### 1. [K8S 快速上手](https://k8s.easydoc.net/)
+
+利用易文档搭建的一套 k8s 文档教程，配套视频教程。
+
+![](assets/0127-0202/1705400562386.webp)
+
+### 2. [Docker 快速上手](https://docker.easydoc.net/)
+
+利用易文档搭建的一套 Docker 文档教程，从安装、部署、迁移、挂载、通信等多方面介绍了关于 Docker 的内容。
+
+![](assets/0127-0202/1705400526824.webp)
+
+### 3. [k8s 教程](https://github.com/guangzhengli/k8s-tutorials)
+
+教程侧重于实战引导，以渐进式修改代码的方式，将从最基础的 container 容器的定义开始，经过 pod, deployment, service, ingress, configmap, secret 等资源直到用 helm 来打包部署一套完整服务。
+
+![](assets/0127-0202/1705400778312.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
diff --git a/src/weekly/2024/0203-0209.md b/src/weekly/2024/0203-0209.md
new file mode 100644
index 0000000000..87cfcb4ced
--- /dev/null
+++ b/src/weekly/2024/0203-0209.md
@@ -0,0 +1,152 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#43：设计素材下载
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/3bGCHHkwOObr60X5yh2pLA
+:::
+
+
+## 一、项目
+
+### 1. [frp](https://github.com/fatedier/frp/)
+
+一个专注于内网穿透的高性能的反向代理应用，支持 TCP、UDP、HTTP、HTTPS 等多种协议，且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
+
+![](assets/0203-0209/1705492131368.webp)
+
+### 2. [刚果商城](https://gitee.com/nageoffer/congomall)
+
+一个从零到一的 C 端商城项目，包含商城核心业务和基础架构两大模块。
+
+参照商城系统原型，推出用户、消息、商品、订单、优惠券、支付、网关、购物车等业务模块，通过商城系统中复杂场景，给出对应解决方案。使用 DDD 模型开发系统功能，帮助对 DDD 一知半解的开发者树立正确地开发思路。
+
+![](assets/0203-0209/1705492212568.webp)
+
+### 3. [newbee-mall-pro](https://github.com/wayn111/newbee-mall-pro)
+
+在 newbee-mall 项目的基础上改造而来，使用 mybatis-plus 作为 orm 层框架，并添加了一系列高级功能以及代码优化。对商城样式了进行大量美化，提升交互性。实现了推荐算法、商品秒杀、优惠卷使用，滑块验证码，支付宝支付，中文分词检索等高级功能。
+
+![](assets/0203-0209/1705492247835.webp)
+
+## 二、软件
+
+### 1. [RIME](https://rime.im/)
+
+高度可定制化的输入法框架，完全无广告，适合喜欢折腾的朋友。
+
+![](assets/0203-0209/image-20240108081856658.webp)
+
+### 2. [VirtualBox](https://www.virtualbox.org/)
+
+一款开源免费的虚拟机管理软件，支持但不限于 Windows（NT 4.0、2000、XP、Server 2003、Vista、7、8、Windows 10 和 Windows 11)、DOS/Windows 3.x、Linux（2.4、2.6、3.x、4.x、5.x 和 6.x）、Solaris 和 OpenSolaris、OS/2、OpenBSD、NetBSD 和 FreeBSD 等系统中运行。
+
+![](assets/0203-0209/1704710624981.webp)
+
+### 3. [VMware](https://www.vmware.com/)
+
+使用针对现代应用、多云、数字化工作空间、安全和网络的 VMware 解决方案构建数字化基础，以在任何设备和任何云环境中运行任何应用。
+
+![](assets/0203-0209/1704710669081.webp)
+
+## 三、网站
+
+### 1. [搜图神器](https://www.logosc.cn/so/)
+
+一键搜索多家免版权图库，再也不用担心商用图片侵权了。
+
+![](assets/0203-0209/1705660684110.webp)
+
+### 2. [朋友圈素材库](https://www.apptu.cn/)
+
+设计师、运营、市场、营销、产品经理找朋友圈推广素材的必备网站。
+
+![](assets/0203-0209/1705660919863.webp)
+
+### 3. [新 CG 儿](https://www.newcger.com/)
+
+致力于为广大影视后期设计师打造相互交流、分享作品与经验的互动平台。同时还提供了免费 AE 模板素材下载和国内外 CG 佳作供 CG 儿学习与参考。
+
+![](assets/0203-0209/1705661001147.webp)
+
+## 四、插件
+
+### 1. [XSwitch](https://chromewebstore.google.com/detail/xswitch/idkjhjggpffolpidfkikidcokdkdaogg?hl=zh-CN)
+
+可以使用它将在线 CDN 或任意其他 URL 重定向到其他 URL，如本地文件/CDN 地址/行内 JavaScript 等，使得本地开发更为简单！
+
+![](assets/0203-0209/1705728969492.webp)
+
+### 2. [二管家](https://chromewebstore.google.com/detail/二管家/aajodjghehmlpahhboidcpfjcncmcklf)
+
+一个全能的扩展管理和用户脚本管理扩展。
+
+支持拓展更新通知并记录拓展历史，自动开启/关闭拓展，根据当前网站获取二管家社区推荐。
+
+
+![](assets/0203-0209/1705729326272.webp)
+
+
+### 3. [Super Dark Mode](https://chromewebstore.google.com/detail/super-dark-mode/nlgphodeccebbcnkgmokeegopgpnjfkc)
+
+支持给任意网站切换黑暗模式，有助于节省电量，降低眼睛压力。不过对于以下页面暂不支持：
+
+- 新标签页
+- Chrome 商店页面
+
+![](assets/0203-0209/1705729680958.webp)
+
+## 五、资料
+
+### 1. [从 Docker 到 Kubernetes 进阶课程](https://github.com/cnych/kubernetes-learning)
+
+从 Docker 入门一步步迁移到 Kubernetes 的进阶课程。
+
+![](assets/0203-0209/1705400950175.webp)
+
+### 2. [cs-wiki](https://gitee.com/veal98/cs-wiki)
+
+博主考研时建立并一直维护，旨在用于记录学习过程中博主的所思所想，并力图构建一个完善的后端知识体系。
+
+![](assets/0203-0209/1705712064109.webp)
+
+### 3. [Elasticsearch 权威指南](https://github.com/elasticsearch-cn/elasticsearch-definitive-guide)
+
+Elasticsearch 权威指南翻译中文版。
+
+![](assets/0203-0209/1705712458189.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
diff --git a/src/weekly/2024/0210-0216.md b/src/weekly/2024/0210-0216.md
new file mode 100644
index 0000000000..69ed5aeed6
--- /dev/null
+++ b/src/weekly/2024/0210-0216.md
@@ -0,0 +1,152 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#44：现代终端工具
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/O-D0FH2PXkv_FScrAft8oA
+:::
+
+
+## 一、项目
+
+### 1. [Github-Hosts](https://github.com/maxiaof/github-hosts)
+
+通过修改 Hosts 解决国内 Github 经常抽风访问不到，每日更新。
+
+![](assets/0210-0216/1705710149057.webp)
+
+### 2. [餐饮点餐商城](https://github.com/woniudiancang/bee)
+
+针对餐饮行业推出的一套完整的餐饮解决方案，实现了用户在线点餐下单、外卖、叫号排队、支付、配送等功能，完美的使餐饮行业更高效便捷！
+
+![](assets/0210-0216/1705710336079.webp)
+
+### 3. [霞鹜文楷](https://github.com/lxgw/LxgwWenKai)
+
+一款开源中文字体，基于 FONTWORKS 出品字体 Klee One 衍生。
+
+![](assets/0210-0216/1705710528783.webp)
+
+## 二、软件
+
+### 1. [Termius](https://termius.com/)
+
+一款跨平台的开源 SSH 连接客户端软件。 提供包括状态栏显示、自动保存密码、URL 超链接、可移植会话、会话过滤器、DLL 前端、时间戳、窗口透明度等功能。
+
+![](assets/0210-0216/image-20240108082005617.webp)
+
+### 2. [iTerm2](https://iterm2.com/)
+
+一款功能强大的终端工具，仅适用于 macOS 系统。支持分窗口操作、自动补齐、粘贴历史、回放功能、全屏等功能。
+
+![](assets/0210-0216/1704780768136.webp)
+
+### 3. [MobaXterm](https://mobaxterm.mobatek.net/)
+
+集多项功能于一身的终端工具，支持如下功能：
+
+- 支持 SSH，FTP，串口，VNC，X server 等功能
+- 支持标签，切换也十分方便
+- 众多快捷键，操作方便
+- 有丰富的插件可以免费安装
+- 直接的便携版，不用安装
+- 内建多标签和多终端分屏
+
+![](assets/0210-0216/1704780701979.webp)
+
+## 三、网站
+
+### 1. [MyFreeMP3](https://tool.liumingye.cn/music/)
+
+让音乐下载变得容易，快速而免费。只需点击两步，就能下载到想要的音乐，同时还支持搜索功能！
+
+![](assets/0210-0216/1705493256306.webp)
+
+### 2. [音乐磁场](https://www.hifini.com/)
+
+一个由音乐爱好者维护的分享平台，旨在解决问题互帮互助，如果有需求，注册账号并发布信息、详细描述歌曲信息等，网站就会尽力帮您寻找。
+
+![](assets/0210-0216/1705493410248.webp)
+
+### 3. [中华诗库](http://www.shiku.org/)
+
+中华诗库是免费提供中国诗歌作品的网络资料库及在线阅读公益图书馆。收藏有古今中外数万名诗人的数十万首诗歌作品。
+
+![](assets/0210-0216/1705493553068.webp)
+
+
+## 四、插件
+
+### 1. [JSON-handle](https://chromewebstore.google.com/detail/json-handle/iahnhfdhidomcpggpaimmmahffihkfnj)
+
+对 JSON 格式的内容进行浏览和编辑，以树形图样式展现 JSON 文档，并可实时编辑。
+
+![](assets/0210-0216/1705730536622.webp)
+
+### 2. [自定义光标](https://chromewebstore.google.com/detail/自定義光標/anflghppebdhjipndogapfagemgnlblh)
+
+使用酷炫的免费鼠标光标自定义您使用 Chrome 浏览器的体验。所有自定义光标均采用矢量图片，可确保能在任何屏幕上以任何光标大小获得完美的显示质量。在扩展弹出窗口中，还可以更改光标的大小，将其添加到收藏夹或将其从列表中完全删除，十分简单方便。
+
+![](assets/0210-0216/1705730722675.webp)
+
+### 3. [书签侧边栏](https://chromewebstore.google.com/detail/书签侧边栏/jdbnofccmhefkmjbkkdkfiicjkgofkdh)
+
+此扩展允许通过单击屏幕的左侧或右侧来访问书签。可以通过拖放来编辑、删除或重新排列书签，只需用鼠标左键单击书签即可查看相关信息。
+
+![](assets/0210-0216/1705730973475.webp)
+
+## 五、资料
+
+### 1. [qdleader](https://github.com/qdleader/qdleader)
+
+关于前端面试 + 知识点的总结型资料库，包含 js、vue、react、node、git、element、typescript、ts、next 方面的内容。
+
+![](assets/0210-0216/1705709724563.webp)
+
+### 2. [前端知识图谱](https://github.com/jishupang/web_atlas)
+
+前端知识图谱，包含脑图、png 和 md 文档，方便在不同场景下使用学习。
+
+![](assets/0210-0216/1705711011696.webp)
+
+### 3. [lemon-guide](https://gitee.com/yu120/lemon-guide)
+
+仓库收纳了操作系统、Java、算法、数据库、中间件、解决方案、架构、DevOps 和大数据等技术栈总结！
+
+![](assets/0210-0216/1705711329245.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2024/0217-0223.md b/src/weekly/2024/0217-0223.md
new file mode 100644
index 0000000000..7b784485d3
--- /dev/null
+++ b/src/weekly/2024/0217-0223.md
@@ -0,0 +1,182 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#45：系统激活工具
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/gY9Dd1wBb0A0zJj48wGSdw
+:::
+
+
+## 一、项目
+
+### 1. [OJ 判题系统微服务版](https://github.com/z-h-u-a-i/oj-backend-microservice)
+
+这是一个 OJ 系统，用户可以在此系统中编写代码，提交代码，查看执行结果是否正确。同时，项目集成了 API 开放平台，制作了 SDK 来简化程序员调用 API 的程序。主要分为四个部分：
+- 前端
+- 微服务后端
+- 开放平台 SDK
+- 代码沙箱
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1706315246203.webp)
+
+### 2. [咩咩单词](https://github.com/airingursb/miemie)
+
+一款简易背单词的微信小程序。
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1706316330573.webp)
+
+### 3. [我的电视](https://github.com/lizongying/my-tv)
+
+安卓电视直播软件，内置直播源。
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1706317228811.webp)
+
+## 二、软件
+
+### 1. [7-Zip](https://sparanoid.com/lab/7z/)
+
+一款开源免费软件。大多数源代码都基于 GNU LGPL 许可协议下发布。部分代码基于 BSD 3 句条款（BSD 3-clause）许可协议发布。并且，部分代码受到了 unRAR 许可协议的限制。主要具有以下特性：
+
+-   使用了 LZMA 与 LZMA2 算法的 7z 格式 拥有极高的压缩比
+-   支持格式：
+    -   压缩 / 解压缩：7z、XZ、BZIP2、GZIP、TAR、ZIP 以及 WIM
+    -   仅解压缩：AR、ARJ、CAB、CHM、CPIO、CramFS、DMG、EXT、FAT、GPT、HFS、IHEX、ISO、LZH、LZMA、MBR、MSI、NSIS、NTFS、QCOW2、RAR、RPM、SquashFS、UDF、UEFI、VDI、VHD、VMDK、WIM、XAR 以及 Z
+-   与 ZIP 及 GZIP 格式相比，7-Zip 能提供比使用 PKZip 及 WinZip 高 2-10% 的压缩比
+-   为 7z 与 ZIP 提供更完善的 AES-256 加密算法
+-   7z 格式支持创建自释放压缩包
+-   Windows 资源管理器集成
+-   强大的文件管理器
+-   强大的命令行版本
+-   支持 FAR Manager 插件
+-   支持 87 种语言
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/image-20240109135809370.webp)
+
+### 2. [LKY Office Tools](https://github.com/OdysseusYuan/LKY_OfficeTools)
+
+一键自动化 下载、安装、激活 Office 的利器。绿色、开源、安全、无毒。目前支持以下功能：
+
+- 一键快速下载、安装、激活最新版 Microsoft Office 软件。
+- 用户可在安装 Word、PPT、Excel 的同时，根据软件提示，自助安装其它组件，包括： Outlook、OneNote、Access、Visio、Project、Publisher、Teams、OneDrive、Lync/Skype。
+- 工具可自动识别不同的操作系统架构，自动下载适配版本的 Office。
+- 本工具激活 Office 的方式为正版激活模式，不会篡改任何系统文件。
+- 当系统中存在多个冗余 Office 版本时，本工具在用户同意的情况下，可实现自动升级。
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1704887762613.webp)
+
+### 3. [云萌](https://github.com/TGSAN/CMWTAT_Digital_Edition)
+
+Windows 10+ 激活工具，一键免费终身激活，享受正版相同服务，每次重装自动激活，更换硬件支持 Microsoft 账户迁移激活。
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1704887895189.webp)
+
+## 三、网站
+
+### 1. [53 报刊](http://www.53bk.com/Baokan/)
+
+全国报刊大全和国内报刊大全，在线看报系统，在线读报，报纸在线阅读系统，无论国内和国外。
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1706318297753.webp)
+
+### 2. [书摘天下](http://www.shuzhai.org/)
+
+书摘天下提供古诗词赏析，励志名言，作文写作指导，范文参考，包括名人名言，励志名言，工作总结，优秀作文，诗词鉴赏等资料。
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1706318430011.webp)
+
+### 3. [汉典重光](https://wenyuan.aliyun.com)
+
+汉典重光古籍数字化平台，收录海外回归古籍，基于达摩院文字识别技术进行数字化古籍识别，方便古籍爱好者查阅使用。
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1706318690051.webp)
+
+## 四、插件
+
+### 1. [oscnews](https://chromewebstore.google.com/detail/oscnews/iheapfheanfjcemgneblljhaebonakbg)
+
+查看开源中国软件更新资讯，内置文档导航，GitHub 趋势榜，Linux 命令索引，浏览历史记录和时钟页面。
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1705909747975.webp)
+
+### 2. [Replace Google CDN](https://chromewebstore.google.com/detail/replace-google-cdn/kpampjmfiopfpkkepbllemkibefkiice)
+
+将 Google CDN 替换为国内镜像，加速网站访问速度。
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1705910486872.webp)
+
+### 3. [野草书签](https://chromewebstore.google.com/detail/野草书签/agboddkglokgkojmbjefdpccdopckjnp?hl=zh-CN)
+
+基于 Chrome 的书签管理器，启用插件后会提示是否覆盖默认页面，点确定后插件会接管默认首页，插件具有如下特性：
+
+- 基于 Chrome 自身收藏夹数据。
+- 支持 mp4, webm, m8u3 等音视频后缀直接播放。
+- 支持第三方独立播放器在线播放。（只要包含【?url=】等特征即可。）
+- 支持上传本地文件到图床服务器。
+- 支持暗黑模式。
+- 支持拖动排序书签顺序。
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1705910706490.webp)
+
+## 五、资料
+
+### 1. [值得一看的技术类书籍列表](https://github.com/doocs/technical-books)
+
+国内外互联网技术大牛们都写了哪些书籍：计算机基础、网络、前端、后端、数据库、架构、大数据、深度学习……
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1706314865295.webp)
+
+### 2. [VimWiki](https://github.com/vimwiki/vimwiki)
+
+Vim 中的个人 Wiki —— 一组链接起来的、有独特语法高亮的文本文件。
+
+通过 Vimwiki，你可以:
+
+- 组织笔记和想法
+- 管理待办事项
+- 编写文档
+- 坚持写日记
+- 将这一切导出成 HTML 网页
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1706315443885.webp)
+
+### 3. [The Book of Secret Knowledge](https://github.com/trimstray/the-book-of-secret-knowledge)
+
+作者收集的一系列提升效率的清单，包含手册、备忘录、博客、cli/web 工具等，截止目前已经收获了 120k 的 star。
+
+![](https://jsd.cdn.zzko.cn/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0217-0223/1706316902705.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2024/0224-0301.md b/src/weekly/2024/0224-0301.md
new file mode 100644
index 0000000000..28c8f79b0c
--- /dev/null
+++ b/src/weekly/2024/0224-0301.md
@@ -0,0 +1,168 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#46：在线工具箱
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/l6eUlS8wltgbKHcWTKdSdQ
+:::
+
+## 一、项目
+
+### 1. [twelvet](https://github.com/twelvet-projects/twelvet)
+
+一款基于 `Spring Cloud Alibaba` 的权限管理系统，集成市面上流行库，可以作用为快速开发的一个框架使用。
+
+一套以微服务架构的脚手架，使用 `Spring Cloud Alibaba` 系列进行架构，学习并了解它将能快速掌握微服务核心基础。 此项目是为了减少业务代码的重复轮子，它具有一个系统该有的通用性核心业务代码，无论是微服务还是单体，都是通用的业务 但更多的，是为了学习微服务的理念以及开发 您可以使用它进行网站管理后台，网站会员中心，`CMS`，`CRM`，`OA` 等待系统的开发。
+
+![](assets/0224-0301/20240220-1708394383.webp)
+
+### 2. [SpringBlade](https://gitee.com/smallc/SpringBlade)
+
+一个由商业级项目升级优化而来的微服务架构，采用 `Spring Boot 2.7` 、`Spring Cloud 2021` 等核心技术构建，完全遵循阿里巴巴编码规范。提供基于 `React` 和 `Vue` 的两个前端框架用于快速搭建企业级的 `SaaS` 多租户微服务平台。
+
+![](assets/0224-0301/20240226-1708905859.webp)
+
+### 3. [EasyPoi](https://gitee.com/lemur/easypoi)
+
+主打的功能就是容易，让一个没见接触过 `poi` 的人员 就可以方便的写出 `Excel` 导出，`Excel` 模板导出，`Excel` 导入，`Word` 模板导出，通过简单的注解和模板 语言 (熟悉的表达式语法), 完成以前复杂的写法。
+
+![](assets/0224-0301/20240226-1708905915.webp)
+
+## 二、软件
+
+### 1. [VSCodium](https://vscodium.com/)
+
+基于 `VS Code`，由社区驱动、授权免费许可的二进制发行版。
+
+![](assets/0224-0301/image-20240204085949546.webp)
+
+### 2. [Tiny RDM](https://github.com/tiny-craft/tiny-rdm)
+
+有颜也有料，多彩更出彩，一个更加现代化的 `Redis` 桌面管理客户端，具有以下特点：
+
+-   极致轻量
+-   外观体验友好
+-   跨平台
+-   代码开源
+
+![](assets/0224-0301/1707029427389.webp)
+
+### 3. [MacType](https://www.mactype.net/)
+
+通过该软件，可以使得 `Windows` 的文字显示效果类似于 `macOS` 更加清晰锐利。
+
+![](assets/0224-0301/20240226-1708906091.webp)
+
+## 三、网站
+
+### 1. [一个工具箱](https://www.a.tools/)
+
+方便易用的免费在线工具集合，主要有：
+
+-   图形图像
+-   时间处理
+-   文本编辑器
+-   加解密
+-   编程
+-   ……
+
+![](assets/0224-0301/20240226-1708906071.webp)
+
+### 2. [九蛙工具箱](https://www.jiuwa.net/)
+
+提供简单、有趣、好用的在线工具大全，主要有：
+
+-   文字工具
+-   图片工具
+-   昵称工具
+-   特殊符号
+-   娱乐工具
+
+![](assets/0224-0301/20240226-1708906130.webp)
+
+### 3. [万能兔](https://www.wntool.com/)
+
+提供各种在线工具，为站长和互联网从业者提供免费的工具。工具有在线 `JSON` 工具，在线加密工具，在线解密工具，代码格式化工具，正则工具等。
+
+![](assets/0224-0301/20240226-1708906044.webp)
+
+## 四、插件
+
+### 1. [Cookie Editor](https://chromewebstore.google.com/detail/cookie-editor/iphcomljdfghbkdcfndaijbokpgddeno?hl=zh-CN)
+
+功能强大的 Cookie 管理器，支持编辑、新增、导入、导出 Cookie。
+
+![](assets/0224-0301/image-20240204090826335.webp)
+
+### 2. [Download All Images](https://chromewebstore.google.com/detail/download-all-images/ifipmflagepipjokmbdecpmjbibjnakm?hl=zh-CN)
+
+安装后，一键点击即可自动将当前页面的所有图片打包成 zip 下载到本地，无需单独操作。
+
+![](assets/0224-0301/image-20240204090756810.webp)
+
+### 3. [Bitwarden-免费密码管理器](https://chromewebstore.google.com/detail/bitwarden-免费密码管理器/nngceckbapebfimnlniiiahkandclblb)
+
+安全且免费的跨平台密码管理器，`Bitwarden` 将您的登录信息保存在加密的密码库，可以在您的所有设备上同步。由于信息在发送出您的设备之前，就已经完全加密，因此只有您可以访问这些数据。甚至，就算 `Bitwarden` 的团队成员有这个想法，也没办法读取您的数据。您的数据采用 `AES-256` 位、加盐的哈希以及 `PBKDF2` `SHA-256` 加密。
+
+![](assets/0224-0301/20240226-1708905953.webp)
+
+## 五、资料
+
+### 1. [小浩算法](https://github.com/geekxh/hello-algorithm)
+
+一套针对小白的完整算法训练流程，主要包括以下四部分：
+
+- 大厂面经
+- 力扣图解
+- 技术图谱
+- 开源电子书
+
+![](https://cdn.jsdelivr.net/gh/cunyu1943/JavaPark@main/src/weekly/2024/assets/0224-0301/image.6w9w19vrubg0.webp)
+
+### 2. [Spring Reading](https://github.com/xuchengsheng/spring-reading)
+
+涵盖了 `Spring` 框架的核心概念和关键功能，包括控制反转（`IOC`）容器的使用，面向切面编程（`AOP`）的原理与实践，事务管理的方式与实现，`Spring MVC` 的流程与控制器工作机制，以及 `Spring` 中数据访问、安全、`Boot` 自动配置等方面的深入研究。此外，它还包含了 `Spring` 事件机制的应用、高级主题如缓存抽象和响应式编程，以及对 `Spring` 源码的编程风格与设计模式的深入探讨。
+
+![](assets/0224-0301/20240219-1708324870.webp)
+
+### 3. [大数据入门指南](https://github.com/heibaiying/BigData-Notes)
+
+大数据学习相关知识文章汇总，囊括了学习路线、技术栈思维导图、常用软件安装、`Hadoop`、`Hive`、`Spark`、`Storm`、`Flink`、`HBase`、`Kafka`、`Zookeeper` 等方面的文章。
+
+![](assets/0224-0301/20240219-1708325429.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2024/0302-0308.md b/src/weekly/2024/0302-0308.md
new file mode 100644
index 0000000000..2b48c51c0a
--- /dev/null
+++ b/src/weekly/2024/0302-0308.md
@@ -0,0 +1,146 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+---
+
+# 好物周刊#47：快捷启动器
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/MpM92h9ejra3cL6-gOCUaQ
+:::
+
+## 一、项目
+
+### 1. [Tianji](https://github.com/msgbyte/tianji)
+
+`All-in-One` 的数据洞察中心，同时具备网站分析器 + 状态监控器 + 服务状态上报的功能。
+
+![](assets/0302-0308/20240226-1708937114.webp)
+
+### 2. [Ip2regin](https://gitee.com/lionsoul/ip2region)
+
+一个离线 `IP` 地址定位库和 `IP` 定位数据管理框架，10 微秒级别的查询效率，提供了众多主流编程语言的 `xdb` 数据生成和查询客户端实现。
+
+![](assets/0302-0308/20240229-1709203757.webp)
+
+### 3. [asyncTool](https://gitee.com/jd-platform-opensource/asyncTool)
+
+解决任意的多线程并行、串行、阻塞、依赖、回调的并行框架，可以任意组合各线程的执行顺序，带全链路执行结果回调。多线程编排一站式解决方案。
+
+![](assets/0302-0308/20240229-1709203839.webp)
+
+## 二、软件
+
+### 1. [uTools](https://u.tools/)
+
+新一代效率工具平台，自由组合插件应用，打造专属你的趁手工具集。
+
+![](assets/0302-0308/20240228-1709078961.webp)
+
+### 2. [Wox](https://github.com/Wox-launcher/Wox)
+
+一款快捷启动工具软件，可以搜索你电脑上的程序/文件。。通过快捷键呼出搜索框，输入关键词快速匹配出对应软件并启动。配合插件甚至可以打开网页、翻译单词等。
+
+![](assets/0302-0308/20240228-1709079188.webp)
+
+### 3. [Raycast](https://www.raycast.com/)
+
+`macOS` 下的一款应用程序启动器和生产力软件。提供对应用程序、词典、文件、文本片段、剪贴板等的快速访问。
+
+![](assets/0302-0308/20240228-1709079466.webp)
+
+## 三、网站
+
+### 1. [All To All](https://www.alltoall.net/)
+
+国最全面的格式转换平台。支持约 200 多种格式的文件转换，包括：视频、音频、图片、字体等多媒体文件，以及常见的 `office` 文件、`PDF`、电子书等文档。
+
+![](assets/0302-0308/20240226-1708906734.webp)
+
+### 2. [致美化](https://zhutix.com/)
+
+致美化是国内最专业的视觉美化研究平台，聚集了超过 50 万的活跃用户，你可以在此个性化你的设备，探索及下载丰富多彩的电脑主题、壁纸、图标、皮肤等酷炫的美化素材及教程。
+
+![](assets/0302-0308/20240226-1708906647.webp)
+
+### 3. [Win 7](https://www.newxitong.com/)
+
+专注于 `Win7` 系列作品是吻妻出品，一直专注于 `win7`，致力于分享最新最好用的 `Windows7` 纯净旗舰版系统下载，而吻妻是一位有态度，有原则的不随波逐流的系统爱好者。
+
+![](assets/0302-0308/20240226-1708906680.webp)
+
+## 四、插件
+
+### 1. [翻译侠](https://chromewebstore.google.com/detail/翻译侠（translate-man）/fapgabkkfcaejckbfmfcdgnfefbmlion)
+
+支持划词翻译，即指即译，自动识别语言，支持上百种语言，专为国内用户优化，采用谷歌翻译接口，人性化界面。
+
+![](assets/0302-0308/20240226-1708936338.webp)
+
+### 2. [FetchV](https://chromewebstore.google.com/detail/fetchv-m3u8hls视频下载器/imleiiaoeclikefimmcdkjabjbpcdgaj)
+
+通用的网页视频下载器，免费、安全、简单易用。帮助你轻松将 `m3u8`、直播、`mp4`、`webm` 等在线视频下载到本地。支持多线程下载模式，在视频服务器和你的带宽条件允许之下，一个约 `1GB` 的视频可以在约十分钟内下载完成。
+
+![](assets/0302-0308/20240228-1709079828.webp)
+
+### 3. [easyScholar](https://chromewebstore.google.com/detail/easyscholar/njgedjcccpcfmjecccaajkjiphpddfji)
+
+显示各种文献排名，并且提供翻译、文献收藏功能，助力科研。具有以下功能：
+
+-   显示期刊登记
+-   在线翻译
+-   文献管理
+
+![](assets/0302-0308/20240228-1709080062.webp)
+
+## 五、资料
+
+### 1. [掘金翻译计划](https://github.com/xitu/gold-miner)
+
+可能是世界最大最好的英译中技术社区，最懂读者和译者的翻译平台。
+
+![](assets/0302-0308/20240229-1709165032.webp)
+
+### 2. [955.WLB](https://github.com/formulahendry/955.WLB)
+
+955 不加班的公司名单，旨在让更多的人逃离 996，加入 955 的行列。
+
+![](assets/0302-0308/20240229-1709165119.webp)
+
+### 3. [996.ICU](https://github.com/996icu/996.ICU)
+
+与 995.WLB 相对应，需要 996 加班的公司名单。旨在让更多人在找工作时尽量规避，远离 996。
+
+![](assets/0302-0308/20240229-1709165243.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2024/0309-0315.md b/src/weekly/2024/0309-0315.md
new file mode 100644
index 0000000000..367bef5188
--- /dev/null
+++ b/src/weekly/2024/0309-0315.md
@@ -0,0 +1,162 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#48：Golang 学习资料
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/bAe4CE1jrv9r763uRoaQVA
+:::
+
+## 一、项目
+
+### 1. [vfox](https://github.com/version-fox/vfox)
+
+一个跨平台版本管理器（类似于 `nvm`、`fvm`、`sdkman`、`asdf-vm` 等），可通过插件扩展。允许快速安装和切换需要的环境。
+
+![](assets/0309-0315/chrome_1710202083.webp)
+
+### 2. [智能微秘书](https://github.com/leochen-g/wechat-assistant-pro)
+
+一个全能的微信机器人管理平台，最简单的方式接入 `ChatGPT`，`FastGPT`，`Dify` 知识库，支持绘图，联网查询，语音识别，各种定时任务，支持企微、个微、公众号、`5G` 消息、`WhatsApp`。
+
+![](assets/0309-0315/chrome_1710202054.webp)
+
+### 3. [invoice](https://github.com/guanshuicheng/invoice)
+
+增值税发票 `OCR` 识别，使用 `flask` 微服务架构。支持识别：增值税电子普通发票、增值税普通发票、增值税专用发票。主要识别发票中的字段为：发票代码、发票号码、开票日期、校验码、税后金额等。
+
+![](assets/0309-0315/chrome_1710201957.webp)
+
+## 二、软件
+
+### 1. [Gopeed](https://gopeed.com/zh-CN)
+
+一款现代化的下载器。开源、轻量、原生，支持（`HTTP`、`BitTorrent`、`Magnet` 等）协议下载。
+
+![](assets/0309-0315/20240305-1709596845.webp)
+
+### 2. [Yaak](https://yaak.app/)
+
+`API` 调试工具，具有以下特点：
+
+-   支持多种请求类型
+-   定义环境变量
+-   批量请求
+-   `Cookie` 管理
+-   数据本地化
+-   ……
+
+![](assets/0309-0315/chrome_1710202155.webp)
+
+### 3. [小书匠](https://github.com/suziwen/markdownxiaoshujiang)
+
+一款本地优先，去中心化，分布式，支持选择性同步的全平台覆盖知识管理笔记软件。
+
+![](assets/0309-0315/chrome_1710202176.webp)
+
+## 三、网站
+
+### 1. [AutoDraw](https://www.autodraw.com/)
+
+随意画一个图形，就会自动联想出相关的图形供你选择。
+
+![](assets/0309-0315/20240226-1708936970.webp)
+
+### 2. [LookSSL](https://www.lookssl.com/)
+
+`SSL` 证书申请网站，既可以申请免费的，也可以支持单主域名和多个扩展域名的标准证书，还支持申请泛主域名和多个扩展域名的泛域名证书。
+
+![](assets/0309-0315/20240227-1708991973.webp)
+
+### 3. [51LA](https://www.51.la/)
+
+专注网站统计与数据分析行业 20 年，以数据统计分析为核心，驱动产品设计与运营策略，深入挖掘用户和产品需求，赋能商业决策。旗下拥有 51.LA  网站统计等多个数据分析平台，目前累计超过千万应用提供流量统计服务，致力于为开发者及中小企业提供专业的数据服务工具和解决方案。
+
+![](assets/0309-0315/20240227-1708991901.webp)
+
+## 四、插件
+
+### 1. [哔哩哔哩字幕列表](https://chromewebstore.google.com/detail/哔哩哔哩字幕列表/bciglihaegkdhoogebcdblfhppoilclp)
+
+显示 B 站视频的字幕列表，可点击跳转与下载字幕，同时支持翻译和总结字幕！具有以下特点：
+
+-   显示视频的字幕列表
+-   点击字幕跳转视频对应位置
+-   多种格式复制与下载字幕(点击面板左上方三个点) 
+-   多种方式总结字幕
+-   翻译字幕
+-   搜索字幕
+-   支持深色主题(设置界面)
+
+![](assets/0309-0315/20240305-1709596794.webp)
+
+### 2. [Stay](https://chromewebstore.google.com/detail/stay-连接浏览器世界！/hpbebebpjajeiadiakgckpahmhkbkpoa?hl=zh-CN)
+
+一款浏览器增强插件，极大程度上提升浏览器的浏览体验和可玩性。兼容油猴/暴力猴的用户脚本管理器，能够为每个网站提供深色模式，而且还能在`Chrome`/`Safari`/`Firefox` 上保持同步。
+
+![](assets/0309-0315/20240305-1709596737.webp)
+
+### 3. [暗色阅读器](https://chromewebstore.google.com/detail/暗色阅读器-chrome的暗色模式/akpkoodohacdmlddblgnaahbbfjplcig)
+
+为 `Chrome` 开启暗色模式，使用暗色主题进行夜间和日常浏览，保护你的眼睛。
+
+通过为网站动态创建深色主题来启用夜间模式。 深色阅读器会反转明亮的颜色，使它们具有高对比度并且在夜间易于阅读。
+
+![](assets/0309-0315/20240305-1709596810.webp)
+
+## 五、资料
+
+### 1. [吴恩达机器学习笔记](https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes)
+
+吴恩达老师的机器学习课程个人笔记。
+
+![](assets/0309-0315/20240229-1709165478.webp)
+
+### 2. [Golang-Guide](https://github.com/mao888/golang-guide)
+
+「`Golang` 学习 + 面试指南」一份涵盖大部分 `Golang` 程序员所需要掌握的核心知识。
+
+![](assets/0309-0315/chrome_1710202276.webp)
+
+### 3. [GolangStudy](https://github.com/cnymw/GolangStudy)
+
+指导程序员们如何从基础开始系统的学习 `Go` 语言，并学习开发时所需知识点。
+
+通过短视频、文字、思维导图、面试真题等方面来学习，而且还支持移动端，让你随时随地打开手机就能学。
+
+![](assets/0309-0315/chrome_1710202231.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2024/0316-0322.md b/src/weekly/2024/0316-0322.md
new file mode 100644
index 0000000000..0a875b3e9f
--- /dev/null
+++ b/src/weekly/2024/0316-0322.md
@@ -0,0 +1,153 @@
+---
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#49：字幕交流网站
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+https://mp.weixin.qq.com/s/aBki6pNYWQLL_AIg2TcGIw
+:::
+
+## 一、项目
+
+### 1. [Starship](https://github.com/starship/starship)
+
+轻量、迅速、可无限定制的高颜值终端，可用于各种 `Shell` 的提示符。
+
+![](assets/0316-0322/chrome_1710328246.webp)
+
+### 2. [spring cloud shop](https://github.com/SiGuiyang/spring-cloud-shop)
+
+`Spring Cloud` 版分布式电商项目，全力打造顶级多模块，高可用，高扩展电商项目。
+
+![](assets/0316-0322/chrome_1710374180.webp)
+
+### 3. [JavaVul](https://github.com/lokerxx/JavaVul)
+
+`Java` 安全漏洞靶场，用于测试 `IAST` 和扫描器的被动扫描功能，集合了多个安全漏洞，利用 `docker` 镜像为每个靶场独立环境运行。
+
+![](assets/0316-0322/chrome_1710374150.webp)
+
+## 二、软件
+
+### 1. [Mounty](https://mounty.app/)
+
+`macOS` 中挂载 `NTFS` 格式硬盘的工具，方便在 `macOS` 中读写 `Windows` 格式硬盘。
+
+![](assets/0316-0322/chrome_1710330200.webp)
+
+### 2. [Cerebro](https://github.com/cerebroapp/cerebro)
+
+一个开源启动器，类似于 `macOS` 中的 `Alfred`，用于提高生产力和效率。
+
+![](assets/0316-0322/chrome_1710330376.webp)
+
+### 3. [showDoc](https://github.com/star7th/showdoc)
+
+一个非常适合 `IT` 团队的在线 `API` 文档、技术文档工具。你可以使用 `Showdoc` 来编写在线 `API` 文档、技术文档、数据字典、在线手册。
+
+![](assets/0316-0322/chrome_1710330778.webp)
+
+## 三、网站
+
+### 1. [字幕库](https://srtku.com/)
+
+字幕下载网站，提供中文、美剧、韩剧字幕下载。
+
+![](assets/0316-0322/20240227-1708992014.webp)
+
+### 2. [SubHD](https://subhd.tv/)
+
+分享交流下载字幕平台，绝对是美剧、韩剧、日剧等爱好者但又看不懂生肉朋友的福地。
+
+![](assets/0316-0322/20240227-1708992031.webp)
+
+### 3. [R3 字幕网](https://r3sub.com/)
+
+`R3` 字幕网提供最方便的字幕搜索、电影简介、电影剧照、电影评分。
+
+![](assets/0316-0322/20240227-1708992069.webp)
+
+## 四、插件
+
+### 1. [什么字体](https://chromewebstore.google.com/detail/什么字体-找字体/acpcapnaopbhbelhmbbmppghilclpkep)
+
+通过该插件，能够知道自己当前正在浏览的网站所用的字体。
+
+![](assets/0316-0322/20240306-1709684117.webp)
+
+### 2. [Bonjourr](https://chromewebstore.google.com/detail/dlnejlppicbjfcfcedcflplfjajinajd)
+
+一个美观，轻量，可自定义的主页。
+
+每当你打开一个新的窗口或标签，迎接你的将是这个看起来很简约的页面，这将有助于你的宁静和生产力。由于其华丽的高质量背景根据一天的心情而变化，你的新标签将永远感到新鲜。
+
+![](assets/0316-0322/20240306-1709684303.webp)
+
+### 3. [DeepL 翻译](https://chromewebstore.google.com/detail/cofdbpoegempjloogbagkncekinflcnj)
+
+无需离开浏览器，你便可以享受 `DeepL` 无与伦比的翻译质量。 轻松翻译你在 `Chrome` 浏览器内阅读或输入的任何内容。如果你是 `DeepL Pro` 用户，还可以进行全网页翻译。 如果你需要翻译任何文本，请先选择该文本，并点击随之出现的 `DeepL` 图标。如果你想在 `Chrome` 浏览器上使用 `DeepL` 更快捷地翻译你所读写的内容，还可以在设置中自定义快捷方式。
+
+![](assets/0316-0322/20240306-1709684503.webp)
+
+## 五、资料
+
+### 1. [Comflowy](https://github.com/6174/comflowy)
+
+探索 `ComfyUI` 的无限可能，致力于以 `ComfyUI` 和 `Stable Diffusion` 为核心，打造更优质的生产工具、构建开发者与用户内容社区。
+
+![](assets/0316-0322/chrome_1710208599.webp)
+
+### 2. [Linux 101](https://github.com/ustclug/Linux101-docs)
+
+一份 `Linux` 的基础教程，目标是引导不了解 `Linux` 的读者掌握基础且实用的知识并领略社区开源文化的魅力。通过阅读本书，你能：
+
+- 了解 `Linux` 历史和开源社区文化
+- 安装 `Linux` 发行版并利用内置实用手册
+- 在体验中亲自感受 `Linux` 的专业能力
+- 自如地操作与配置你的 `Linux` 系统
+- 理解 `Linux` 操作系统的思想
+- 使用 `Linux` 生态高效编程开发
+- 以及灵活运用其它 `Linux` 生态中十分流行的各类工具等等
+
+![](assets/0316-0322/chrome_1710208574.webp)
+
+### 3. [数据库教程](https://www.sjkjc.com/)
+
+一个数据库相关的技术学习网站，定期发布数据相关的文章、教程、资讯等。教程包括 `MySQL`，`PostgreSQL`，`Oracle`，`SQL Server`, `SQLite`，`MongoDB`，`Redis` 等关系数据库和非关系数据库。本站所有的教程都是基于实例的，都带有可以运行的代码及实操的截图，助您更快的进入数据库的世界。
+
+![](assets/0316-0322/chrome_1710287927.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2024/0323-0329.md b/src/weekly/2024/0323-0329.md
new file mode 100644
index 0000000000..d7286b5d02
--- /dev/null
+++ b/src/weekly/2024/0323-0329.md
@@ -0,0 +1,154 @@
+---
+index: false
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#50：Sora 学习手册
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+
+:::
+
+## 一、项目
+
+### 1. [Springboot-Notebook](https://github.com/chengxy-nds/Springboot-Notebook)
+
+ 一个以 `Spring Boot` 为基础开发框架， 整合 `Redis` 、`Mysql` 、 `Rabbitmq` 、`ES` 、`MongoDB`、`sharding-jdbc` 分库分表、`Zookeeper` 、`web` 人脸识别 、实时消息推送 、`SQL` 优化、注册中心 、数据脱敏 等互联网主流技术， 文章图解理论配合实战案例，实现开发中常见功能点的综合项目。 本着开箱即用的原则，助力于减少开发者在工作中的学习成本。
+
+![](assets/0323-0329/chrome_1710719764.webp)
+
+### 2. [MediaCrawler](https://github.com/NanmiCoder/MediaCrawler)
+
+利用 `playwright` 搭桥，保留登录成功后的上下文浏览器环境，通过执行 `JS` 表达式获取一些加密参数 通过使用此方式，免去了复现核心加密 `JS` 代码，逆向难度大大降低。目前能够抓取小红书、抖音、快手、B 站、微博的视频、图片、评论、点赞、转发等信息。
+
+![](assets/0323-0329/chrome_1710719737.webp)
+
+### 3. [TCC-TRANSACTION](https://github.com/changmingxie/tcc-transaction)
+
+一款开源的微服务架构下的 `TCC` 型分布式事务解决方案，致力于提供高性能和简单易用的分布式事务服务。
+
+![](assets/0323-0329/CUNYU1943_1710719704.webp)
+
+## 二、软件
+
+### 1. [Pngyu](https://nukesaq88.github.io/Pngyu/)
+
+免费 `png` 图片压缩工具，同时支持 `Windows` 和 `macOS` 平台。
+
+![](assets/0323-0329/chrome_1710460998.webp)
+
+### 2. [Radished](https://github.com/radishes-music/radishes)
+
+跨平台的无版权的音乐平台，支持 `Windows`/`macOS`/`Linux`/`Web` 多端。界面表现和功能参考 `Windows` 网易云音乐界面和 `IOS` 的网易云音乐，此外，在这里还能试听下载某些“置灰”歌曲。
+
+![](assets/0323-0329/chrome_1710461046.webp)
+
+### 3. [GitUp](https://github.com/git-up/GitUp)
+
+一款简洁高效的 `Git` 客户端，让你安全无忧。
+
+![](assets/0323-0329/chrome_1710461459.webp)
+
+## 三、网站
+
+### 1. [面试狗](https://interview.dog)
+
+面试神器|辅助面试|面试助手，史上最强面试辅助工具。实时面试助手，快速识别面试官问题，自动回答。
+
+![](assets/0323-0329/20240227-1708993240.webp)
+
+### 2. [3D 卡通头像](https://peeps.ui8.net/)
+
+![](assets/0323-0329/20240227-1708993574.webp)
+
+### 3. [搬书匠](http://www.banshujiang.cn/)
+
+汇聚国内外计算机类图书，主要有编程语言、移动开发、操作系统、数据库、开源软件等类目。
+
+![](assets/0323-0329/20240228-1709078766.webp)
+
+## 四、插件
+
+### 1. [Imagus](https://chromewebstore.google.com/detail/imagus/immpkjjlgappgfkkfieppnmlhakdmaab)
+
+浏览网站时，通过鼠标指针悬停在链接或者缩略图上即可在当前页弹出展示图片、`HTML5` 视频/音频和内容专辑。
+
+![](assets/0323-0329/chrome_1710979763.webp)
+
+### 2. [Picture-in-Picture Extension](https://chromewebstore.google.com/detail/picture-in-picture-extens/hkgfoiooedgoejojocmhlaklaeopbecg)
+
+画中画插件，当上班摸鱼浏览到好看的时候的或者直播，但又不敢明目张胆放大看的时候，就可以通过这个插件将内容缩放到屏幕的一个小框里观看。既不会引起别人的注意，也不影响工作。
+
+![](assets/0323-0329/chrome_1710980235.webp)
+
+### 3. [绿色搜索](https://chromewebstore.google.com/detail/aeajloomjeoncelkceelhhpkgbcgafek)
+
+屏蔽百度搜索结果列表中的广告信息，将移除或者弱化显示，还你的搜索结果一份干净。
+
+![](assets/0323-0329/chrome_1711065450.webp)
+
+## 五、资料
+
+### 1. [LLM-Action](https://github.com/liguodongiot/llm-action)
+
+分享大模型相关技术原理以及实战经验，`Slogan` 是让天下没有难学的大模型。
+
+![](assets/0323-0329/chrome_1710287832.webp)
+
+### 2. [Just Laws](https://github.com/ImCa0/just-laws)
+
+一个简洁、便捷的中国法律文库。具有如下特点：
+
+-   简洁至上
+
+    以文档的风格展示每一部法律，结构清晰、界面整洁，带来优雅、纯净、极致的阅读体验。
+
+-   访问便捷
+
+    一个网址，适配 `PC` 和移动端，随时随地触手可及，自带搜索功能，使法律条文的查询更加简单、快速。
+
+-   动态更新
+
+    保持每周一到两部法律的新增收录，并且在已收录法律完成修正或修订后及时进行更新，保证内容的时效性。
+
+![](assets/0323-0329/chrome_1710287861.webp)
+
+### 3. [Sora 学习手册](https://yunyinghui.feishu.cn/wiki/BaCEwe3AliqYERkc9dVcfW0BnXg)
+
+基于飞书文档发布，持续更新 `Sora` 模型的相关资讯动态、研究报告、实用场景等模块内容，承诺永久免费在线查看。
+
+![](assets/0323-0329/chrome_1710287898.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2024/0330-0405.md b/src/weekly/2024/0330-0405.md
new file mode 100644
index 0000000000..f8a502afea
--- /dev/null
+++ b/src/weekly/2024/0330-0405.md
@@ -0,0 +1,154 @@
+---
+index: false
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#51：诗词学习
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+
+:::
+
+## 一、项目
+
+### 1. [novel-cloud](https://github.com/201206030/novel-cloud)
+
+一套基于时下最新 Java 技术栈 `Spring Boot 3` + `Vue 3` 开发的前后端分离学习型小说项目，配备保姆级教程手把手教你从零开始开发上线一套生产级别的 `Java` 系统，由小说门户系统、作家后台管理系统、平台后台管理系统等多个子系统构成。包括小说推荐、作品检索、小说排行榜、小说阅读、小说评论、会员中心、作家专区、充值订阅、新闻发布等功能。
+
+`novel-cloud` 是 `novel` 项目的微服务版本，基于 `Spring Cloud 2022` & `Spring Cloud Alibaba 2022` 构建，数据结构、后端接口和 `novel` 项目保持完全一致，`Vue 3` 开发的前端能无缝对接这两个项目。
+
+![](assets/0330-0405/chrome_1710743013.webp)
+
+### 2. [迅排设计](https://github.com/palxiao/poster-design)
+
+一款漂亮且功能强大的在线海报设计器，图片编辑器，仿稿定设计，适用于多种场景：海报生成、电商产品图、文章长图、视频 / 公众号封面等。
+
+![](assets/0330-0405/chrome_1710979429.webp)
+
+### 3. [CodeRun](https://github.com/wanglin2/code-run)
+
+一个纯前端实现的在线代码运行预览工具，类似 `codepen`、`jsbin`、`jsfiddle` 等网站。
+
+![](assets/0330-0405/chrome_1710979611.webp)
+
+## 二、软件
+
+### 1. [Notesnook](https://github.com/streetwriters/notesnook)
+
+一款开源的，支持端到端加密的的笔记软件，可以把它当作开源版本的 `Evernote`。
+
+![](assets/0330-0405/chrome_1710807153.webp)
+
+### 2. [Uncle 小说](https://github.com/uncle-novel/uncle-novel)
+
+一个全网小说下载器及阅读器，目录解析与书源结合，支持有声小说与文本小说，可下载 `mobi`、`epub`、`txt` 格式文本小说。
+
+![](assets/0330-0405/chrome_1710807783.webp)
+
+### 3. [Pine](https://github.com/lukakerr/Pine)
+
+一个轻量级的 `macOS` `Markdown` 编辑器,不同于传统文档编辑器，它更专注于写作者本身，在保持简洁的同时，它还通过以文档为核心的设计理念和兼具灵活性与专业性的数十项功能，赋予用户极高的效率与最大的可能性，同时还与 `Apple` 的原生设计风格融会贯通。
+
+![](assets/0330-0405/chrome_1710819547.webp)
+
+## 三、网站
+
+### 1. [软仓](https://www.ruancang.net/)
+
+软件收录仓库，截至目前已收录 **416** 个专业软件，提供免费学习，免费下载。
+
+![](assets/0330-0405/20240305-1709597462.webp)
+
+### 2. [读者阁](https://duzhege.cn/)
+
+`PDF` 原貌版电子杂志免费在线阅读、下载。
+
+![](assets/0330-0405/chrome_1710287532.webp)
+
+### 3. [AsPoem](https://aspoem.com/zh-Hans)
+
+现代化的中国诗词学习网站，提供全站搜索、拼音标注、注释和白话文翻译等功能。无论您对唐诗宋词感兴趣还是想深入学习，都是您的理想选择，从这里开始您的诗歌之旅！
+
+![](assets/0330-0405/chrome_1710287619.webp)
+
+## 四、插件
+
+### 1. [iCG 谷歌学术助手](https://chromewebstore.google.com/detail/ncldcbhpeplkfijdhnoepdgdnmjkckij?utm_source=chrome-ntp-icon)
+
+为广大科研及医务工作者、高校学生提供谷歌学术文献、期刊等资料产品的查询与加速访问。方便从一个位置搜索众多学科和资料来源：来自学术著作出版商、专业性社团、预印本、各大学及其他学术组织的经同行评论的文章、论文、图书、摘要和文章，帮助您在整个学术领域中确定相关性最强的研究。
+
+![](assets/0330-0405/chrome_1711065482.webp)
+
+### 2. [Stream Recorder](https://chromewebstore.google.com/detail/stream-recorder-download/iogidnfllpdhagebkblkgbfijkbkjdmm)
+
+最受欢迎的 `HLS` 格式发布的视频文件下载器，能直接拦截直播流、`flv`、`m3u8` 等格式。
+
+![](assets/0330-0405/chrome_1711065493.webp)
+
+### 3. [百度广告屏蔽](https://chromewebstore.google.com/detail/bdkobfnbgkbemcfgopfollaikdlknlkm)
+
+屏蔽百度线上产品页面广告，点击扩展图标，可当书签用，省去每次输入百度地址的麻烦。
+
+![](assets/0330-0405/chrome_1711065509.webp)
+
+## 五、资料
+
+### 1. [动手学大模型应用开发](https://github.com/datawhalechina/llm-universe)
+
+一个面向小白开发者的大模型应用开发教程，旨在结合个人知识库助手项目，通过一个课程完成大模型开发的重点入门，主要内容包括：
+
+-   大模型简介
+-   如何调用大模型 `API`
+-   大模型开发流程及架构
+-   数据库搭建
+-   `Prompt` 设计
+-   迭代验证
+-   前后端开发
+
+![](assets/0330-0405/chrome_1710287698.webp)
+
+### 2. [统计学自学指南](https://github.com/XuankaiWang/XuankaiWang.github.io)
+
+一本统计的自学指南，也是作者对自己在数院自学生涯的一个纪念。
+
+![](assets/0330-0405/chrome_1710287728.webp)
+
+### 3. [Next.js 中文教程](https://github.com/qufei1993/nextjs-learn-cn)
+
+基于官方教程的一个中文翻译版本。在翻译、整理的过程中，每个章节对应的 `Example` 代码，笔者也都进行了测试，有问题的部分也进行了修改。
+
+![](assets/0330-0405/chrome_1710287775.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2024/0406-0412.md b/src/weekly/2024/0406-0412.md
new file mode 100644
index 0000000000..1dd325a033
--- /dev/null
+++ b/src/weekly/2024/0406-0412.md
@@ -0,0 +1,84 @@
+---
+index: false
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#52：
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+
+:::
+
+## 一、项目
+
+### 1. [MeterSphere](https://github.com/metersphere/metersphere)
+
+一站式开源持续测试平台，涵盖测试跟踪、接口测试、`UI` 测试和性能测试等功能，全面兼容 `JMeter`、`Selenium` 等主流开源标准，有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试，加速高质量的软件交付，推动中国测试行业整体效率的提升。
+
+![](assets/0406-0412/chrome_1710991100.webp)
+
+### 2. [MateCloud](https://github.com/matevip/matecloud)
+
+一款基于 `Spring Cloud Alibaba` 的微服务架构。目前已经整合 `Spring Boot 2.7.0`、 `Spring Cloud 2021`、`Spring Cloud Alibaba 2021`、`Spring Security Oauth2`、`Feign`、`Dubbo`、`JetCache`、`RocketMQ` 等，支持多租户的低代码平台，`Saas` 平台开发套件。
+
+![](assets/0406-0412/chrome_1710990997.webp)
+
+## 二、软件
+
+## 三、网站
+
+## 四、插件
+
+## 五、资料
+
+### 1. [JavaScript 工程师的 Python 指南](https://github.com/luckrnx09/python-guide-for-javascript-engineers)
+
+一本基于 `abook` 编写的开源电子书，涵盖了从 `Python` 环境安装到项目开发的方方面面。本书通过大量案例对比 `JavaScript` 和 `Python` 语言的异同，帮助 `JavaScript` 工程师快速掌握 `Python` 语言。
+
+![](assets/0406-0412/chrome_1710461948.webp)
+
+### 2. [云安全攻防入门](https://lzcloudsecurity.gitbook.io/yun-an-quan-gong-fang-ru-men)
+
+关于云安全攻防的基础知识，适用于初中级安全从业人员，乙方安全测试，甲方安全自检，网络安全爱好者等，企业安全防护与提高。
+
+![](assets/0406-0412/chrome_1710462105.webp)
+
+### 3. [Easy 搞定 Golang 设计模式](https://www.yuque.com/aceld/lfhu8y/rg6nsf)
+
+一份 `Golang` 设计模式教程，涵盖创建型、结构型、行为型模式。
+
+![](assets/0406-0412/chrome_1710462265.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2024/0413-0419.md b/src/weekly/2024/0413-0419.md
new file mode 100644
index 0000000000..4d3f8c5933
--- /dev/null
+++ b/src/weekly/2024/0413-0419.md
@@ -0,0 +1,77 @@
+---
+index: false
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#53：
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+
+:::
+
+
+## 一、项目
+
+## 二、软件
+
+## 三、网站
+
+## 四、插件
+
+## 五、资料
+
+### 1. [Transformers 快速入门](https://github.com/jsksxs360/How-to-use-Transformers)
+
+教程旨在帮助 `NLP` 初学者快速熟悉 `Transformers` 库的使用方法，并通过实例带领读者一步一步构建自己的模型，完成各种 `NLP` 任务。而且读者只需熟悉 `Python` 语言即可，并不需要提前掌握 `Keras`、`Pytorch` 等深度学习包的使用。
+
+![](assets/0413-0419/chrome_1710752767.webp)
+
+### 2. [Notion 中文用户指南](https://notionchina.co/guide/)
+
+了解 `Notion` 的基础概念，帮助中文用户更好的使用 `Notion`。
+
+![](assets/0413-0419/CUNYU1943_1710806588.webp)
+
+### 3. [剑指前端 Offer](https://github.com/hzfe/awesome-interview)
+
+本书的受众群体：
+
+- 有意冲刺互联网大厂的前端开发者，可参考本书题目和答案提纲，自主深入学习，查漏补缺。
+- 短时间内参加面试的前端开发者，可借助本书快速了解面试高频的技术问题和相关解答。
+- 前端面试官可参考本书的题型和题目，按岗位需求对候选人进行有梯度的考察。
+
+![](assets/0413-0419/chrome_1710806875.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2024/0420-0426.md b/src/weekly/2024/0420-0426.md
new file mode 100644
index 0000000000..129df5c4b6
--- /dev/null
+++ b/src/weekly/2024/0420-0426.md
@@ -0,0 +1,73 @@
+---
+index: false
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#54：
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+
+:::
+
+
+## 一、项目
+
+## 二、软件
+
+## 三、网站
+
+## 四、插件
+
+## 五、资料
+
+### 1. [Rust 语言开源杂志（2021）](https://github.com/RustMagazine/rust_magazine_2021)
+
+为了丰富 `Rust` 社区成员的学习生活而推出的杂志。
+
+![](assets/0420-0426/chrome_1710807558.webp)
+
+### 2. [游戏开发-技术图谱](https://github.com/gonglei007/GameDevMind)
+
+最全面的游戏开发技术图谱。帮助游戏开发者们在已知问题上节省时间，省出更多的精力投入到更有创造性的工作中去。
+
+![](assets/0420-0426/chrome_1710979127.webp)
+
+### 3. [learning-note](https://github.com/rbmonster/learning-note)
+
+`Java` 开发及个人面试、工作总结、资料收集站。
+
+![](assets/0420-0426/chrome_1711012999.webp)
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2024/0427-0503.md b/src/weekly/2024/0427-0503.md
new file mode 100644
index 0000000000..6217360c1d
--- /dev/null
+++ b/src/weekly/2024/0427-0503.md
@@ -0,0 +1,59 @@
+---
+index: false
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#55：
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+
+:::
+
+
+## 一、项目
+
+## 二、软件
+
+## 三、网站
+
+## 四、插件
+
+## 五、资料
+
+### 1. [Java-Interview-Tutorial](https://github.com/Java-Edge/Java-Interview-Tutorial)
+
+涵盖互联网大厂数据库、缓存、`DDD`、设计模式、微服务架构、主流中间件框架原理及真实业务最佳实践。
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/2024/README.md b/src/weekly/2024/README.md
new file mode 100644
index 0000000000..7b4963771d
--- /dev/null
+++ b/src/weekly/2024/README.md
@@ -0,0 +1,7 @@
+---
+title: 2024 年刊
+index: false
+icon: fa-solid fa-newspaper
+---
+
+<AutoCatalog />
\ No newline at end of file
diff --git a/src/weekly/2024/assets/0101-0105/1701217723634.webp b/src/weekly/2024/assets/0101-0105/1701217723634.webp
new file mode 100644
index 0000000000..d02663e6b6
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/1701217723634.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/1701218686283.webp b/src/weekly/2024/assets/0101-0105/1701218686283.webp
new file mode 100644
index 0000000000..cf5aa7e81b
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/1701218686283.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/1701218832636.webp b/src/weekly/2024/assets/0101-0105/1701218832636.webp
new file mode 100644
index 0000000000..5535b3e2fb
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/1701218832636.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/1701389750846.webp b/src/weekly/2024/assets/0101-0105/1701389750846.webp
new file mode 100644
index 0000000000..aac338dd88
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/1701389750846.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/1701774383285.webp b/src/weekly/2024/assets/0101-0105/1701774383285.webp
new file mode 100644
index 0000000000..69c042f238
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/1701774383285.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/1701774668856.webp b/src/weekly/2024/assets/0101-0105/1701774668856.webp
new file mode 100644
index 0000000000..9d8f094a39
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/1701774668856.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/1702552267661.webp b/src/weekly/2024/assets/0101-0105/1702552267661.webp
new file mode 100644
index 0000000000..837f3d6a52
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/1702552267661.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/1702552755528.webp b/src/weekly/2024/assets/0101-0105/1702552755528.webp
new file mode 100644
index 0000000000..734b9d9ab2
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/1702552755528.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/1704240568952.webp b/src/weekly/2024/assets/0101-0105/1704240568952.webp
new file mode 100644
index 0000000000..64f137fad5
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/1704240568952.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/1704240655799.webp b/src/weekly/2024/assets/0101-0105/1704240655799.webp
new file mode 100644
index 0000000000..f9e9bbb058
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/1704240655799.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/1704240681938.webp b/src/weekly/2024/assets/0101-0105/1704240681938.webp
new file mode 100644
index 0000000000..7eeb116282
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/1704240681938.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/1704240718582.webp b/src/weekly/2024/assets/0101-0105/1704240718582.webp
new file mode 100644
index 0000000000..167d90112c
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/1704240718582.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/image-20231127082315331.webp b/src/weekly/2024/assets/0101-0105/image-20231127082315331.webp
new file mode 100644
index 0000000000..f522a18f2f
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/image-20231127082315331.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/image-20231127082530531.webp b/src/weekly/2024/assets/0101-0105/image-20231127082530531.webp
new file mode 100644
index 0000000000..6266e1ddfb
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/image-20231127082530531.webp differ
diff --git a/src/weekly/2024/assets/0101-0105/image-20231127082606541.webp b/src/weekly/2024/assets/0101-0105/image-20231127082606541.webp
new file mode 100644
index 0000000000..0dcec9a2b9
Binary files /dev/null and b/src/weekly/2024/assets/0101-0105/image-20231127082606541.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1701302616603.webp b/src/weekly/2024/assets/0106-0112/1701302616603.webp
new file mode 100644
index 0000000000..e9b71b299d
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1701302616603.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1701302644938.webp b/src/weekly/2024/assets/0106-0112/1701302644938.webp
new file mode 100644
index 0000000000..d038016296
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1701302644938.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1701302673299.webp b/src/weekly/2024/assets/0106-0112/1701302673299.webp
new file mode 100644
index 0000000000..d892a41cc8
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1701302673299.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1701303273272.webp b/src/weekly/2024/assets/0106-0112/1701303273272.webp
new file mode 100644
index 0000000000..3e6035af30
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1701303273272.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1704327242436.webp b/src/weekly/2024/assets/0106-0112/1704327242436.webp
new file mode 100644
index 0000000000..992c5ff528
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1704327242436.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1704328314135.webp b/src/weekly/2024/assets/0106-0112/1704328314135.webp
new file mode 100644
index 0000000000..350dbeb18b
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1704328314135.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1704328390116.webp b/src/weekly/2024/assets/0106-0112/1704328390116.webp
new file mode 100644
index 0000000000..b395bc29c5
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1704328390116.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1704672353730.webp b/src/weekly/2024/assets/0106-0112/1704672353730.webp
new file mode 100644
index 0000000000..b8c6e5b06c
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1704672353730.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1704672386119.webp b/src/weekly/2024/assets/0106-0112/1704672386119.webp
new file mode 100644
index 0000000000..1293cc376e
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1704672386119.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1704672431647.webp b/src/weekly/2024/assets/0106-0112/1704672431647.webp
new file mode 100644
index 0000000000..5f1466597b
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1704672431647.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1704797860819.webp b/src/weekly/2024/assets/0106-0112/1704797860819.webp
new file mode 100644
index 0000000000..6510c99987
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1704797860819.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1704798224153.webp b/src/weekly/2024/assets/0106-0112/1704798224153.webp
new file mode 100644
index 0000000000..331b2278b2
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1704798224153.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/1704798495508.webp b/src/weekly/2024/assets/0106-0112/1704798495508.webp
new file mode 100644
index 0000000000..c06659a47a
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/1704798495508.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/image-20231127082821478.webp b/src/weekly/2024/assets/0106-0112/image-20231127082821478.webp
new file mode 100644
index 0000000000..59a419c4f5
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/image-20231127082821478.webp differ
diff --git a/src/weekly/2024/assets/0106-0112/image-20231127082853724.webp b/src/weekly/2024/assets/0106-0112/image-20231127082853724.webp
new file mode 100644
index 0000000000..09f17b9850
Binary files /dev/null and b/src/weekly/2024/assets/0106-0112/image-20231127082853724.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/1701773578459.webp b/src/weekly/2024/assets/0113-0119/1701773578459.webp
new file mode 100644
index 0000000000..632903160a
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/1701773578459.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/1702512381210.webp b/src/weekly/2024/assets/0113-0119/1702512381210.webp
new file mode 100644
index 0000000000..3cb49de841
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/1702512381210.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/1702512465083.webp b/src/weekly/2024/assets/0113-0119/1702512465083.webp
new file mode 100644
index 0000000000..0b40979700
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/1702512465083.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/1704672500281.webp b/src/weekly/2024/assets/0113-0119/1704672500281.webp
new file mode 100644
index 0000000000..3b9e2e4be0
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/1704672500281.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/1704672540557.webp b/src/weekly/2024/assets/0113-0119/1704672540557.webp
new file mode 100644
index 0000000000..7ae3e58e48
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/1704672540557.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/1704672561667.webp b/src/weekly/2024/assets/0113-0119/1704672561667.webp
new file mode 100644
index 0000000000..c43559a0da
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/1704672561667.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/1704672740961.webp b/src/weekly/2024/assets/0113-0119/1704672740961.webp
new file mode 100644
index 0000000000..940a3c2325
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/1704672740961.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/1704672770872.webp b/src/weekly/2024/assets/0113-0119/1704672770872.webp
new file mode 100644
index 0000000000..e29bb1faff
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/1704672770872.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/1704672800110.webp b/src/weekly/2024/assets/0113-0119/1704672800110.webp
new file mode 100644
index 0000000000..a694161c72
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/1704672800110.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/1704888680945.webp b/src/weekly/2024/assets/0113-0119/1704888680945.webp
new file mode 100644
index 0000000000..2195017255
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/1704888680945.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/1704888926344.webp b/src/weekly/2024/assets/0113-0119/1704888926344.webp
new file mode 100644
index 0000000000..636bbc68ff
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/1704888926344.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/1704889139393.webp b/src/weekly/2024/assets/0113-0119/1704889139393.webp
new file mode 100644
index 0000000000..ddda9c341c
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/1704889139393.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/image-20231201080341645.webp b/src/weekly/2024/assets/0113-0119/image-20231201080341645.webp
new file mode 100644
index 0000000000..6134750697
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/image-20231201080341645.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/image-20231201080504953.webp b/src/weekly/2024/assets/0113-0119/image-20231201080504953.webp
new file mode 100644
index 0000000000..3aacbafdd6
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/image-20231201080504953.webp differ
diff --git a/src/weekly/2024/assets/0113-0119/image-20231201081936486.webp b/src/weekly/2024/assets/0113-0119/image-20231201081936486.webp
new file mode 100644
index 0000000000..b1fb80a03f
Binary files /dev/null and b/src/weekly/2024/assets/0113-0119/image-20231201081936486.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1704708979286.webp b/src/weekly/2024/assets/0120-0126/1704708979286.webp
new file mode 100644
index 0000000000..12338a302a
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1704708979286.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1704709171041.webp b/src/weekly/2024/assets/0120-0126/1704709171041.webp
new file mode 100644
index 0000000000..243503f833
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1704709171041.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1704709214595.webp b/src/weekly/2024/assets/0120-0126/1704709214595.webp
new file mode 100644
index 0000000000..4ae7dbb29f
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1704709214595.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1704709242796.webp b/src/weekly/2024/assets/0120-0126/1704709242796.webp
new file mode 100644
index 0000000000..9d21984655
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1704709242796.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1704709277288.webp b/src/weekly/2024/assets/0120-0126/1704709277288.webp
new file mode 100644
index 0000000000..0fcabf1eeb
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1704709277288.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1704709381142.webp b/src/weekly/2024/assets/0120-0126/1704709381142.webp
new file mode 100644
index 0000000000..f5ff958fb7
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1704709381142.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1704709441848.webp b/src/weekly/2024/assets/0120-0126/1704709441848.webp
new file mode 100644
index 0000000000..21de425759
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1704709441848.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1704887357815.webp b/src/weekly/2024/assets/0120-0126/1704887357815.webp
new file mode 100644
index 0000000000..e4e1132ed9
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1704887357815.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1705129496377.webp b/src/weekly/2024/assets/0120-0126/1705129496377.webp
new file mode 100644
index 0000000000..84b5eb5567
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1705129496377.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1705129660484.webp b/src/weekly/2024/assets/0120-0126/1705129660484.webp
new file mode 100644
index 0000000000..be274c6ac2
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1705129660484.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1705129937999.webp b/src/weekly/2024/assets/0120-0126/1705129937999.webp
new file mode 100644
index 0000000000..d08220606c
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1705129937999.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1705132569378.webp b/src/weekly/2024/assets/0120-0126/1705132569378.webp
new file mode 100644
index 0000000000..fbc9e21bd5
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1705132569378.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1705132688421.webp b/src/weekly/2024/assets/0120-0126/1705132688421.webp
new file mode 100644
index 0000000000..02f96e2a32
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1705132688421.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/1705132774785.webp b/src/weekly/2024/assets/0120-0126/1705132774785.webp
new file mode 100644
index 0000000000..35108fdc48
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/1705132774785.webp differ
diff --git a/src/weekly/2024/assets/0120-0126/image-20240108081450137.webp b/src/weekly/2024/assets/0120-0126/image-20240108081450137.webp
new file mode 100644
index 0000000000..dc63d53bf8
Binary files /dev/null and b/src/weekly/2024/assets/0120-0126/image-20240108081450137.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1704709528680.webp b/src/weekly/2024/assets/0127-0202/1704709528680.webp
new file mode 100644
index 0000000000..1790843227
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1704709528680.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1704709657035.webp b/src/weekly/2024/assets/0127-0202/1704709657035.webp
new file mode 100644
index 0000000000..39746b65fa
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1704709657035.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1704709704174.webp b/src/weekly/2024/assets/0127-0202/1704709704174.webp
new file mode 100644
index 0000000000..3ff1779d03
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1704709704174.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1704709747360.webp b/src/weekly/2024/assets/0127-0202/1704709747360.webp
new file mode 100644
index 0000000000..bb50a2faa9
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1704709747360.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1704709803622.webp b/src/weekly/2024/assets/0127-0202/1704709803622.webp
new file mode 100644
index 0000000000..f66e77cd16
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1704709803622.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1705400526824.webp b/src/weekly/2024/assets/0127-0202/1705400526824.webp
new file mode 100644
index 0000000000..6c5a34d20f
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1705400526824.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1705400562386.webp b/src/weekly/2024/assets/0127-0202/1705400562386.webp
new file mode 100644
index 0000000000..1742a549fb
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1705400562386.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1705400778312.webp b/src/weekly/2024/assets/0127-0202/1705400778312.webp
new file mode 100644
index 0000000000..b64748f74d
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1705400778312.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1705491918451.webp b/src/weekly/2024/assets/0127-0202/1705491918451.webp
new file mode 100644
index 0000000000..8b2db77bdf
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1705491918451.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1705491966874.webp b/src/weekly/2024/assets/0127-0202/1705491966874.webp
new file mode 100644
index 0000000000..bc315cef45
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1705491966874.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1705492056083.webp b/src/weekly/2024/assets/0127-0202/1705492056083.webp
new file mode 100644
index 0000000000..27d8446eac
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1705492056083.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1705715412458.webp b/src/weekly/2024/assets/0127-0202/1705715412458.webp
new file mode 100644
index 0000000000..13337f3495
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1705715412458.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1705715698136.webp b/src/weekly/2024/assets/0127-0202/1705715698136.webp
new file mode 100644
index 0000000000..24a92ce53b
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1705715698136.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/1705715901785.webp b/src/weekly/2024/assets/0127-0202/1705715901785.webp
new file mode 100644
index 0000000000..40ed41a881
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/1705715901785.webp differ
diff --git a/src/weekly/2024/assets/0127-0202/image-20240108081722437.webp b/src/weekly/2024/assets/0127-0202/image-20240108081722437.webp
new file mode 100644
index 0000000000..d0e824582f
Binary files /dev/null and b/src/weekly/2024/assets/0127-0202/image-20240108081722437.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1704710624981.webp b/src/weekly/2024/assets/0203-0209/1704710624981.webp
new file mode 100644
index 0000000000..99a3c0751b
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1704710624981.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1704710669081.webp b/src/weekly/2024/assets/0203-0209/1704710669081.webp
new file mode 100644
index 0000000000..d9c57c3967
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1704710669081.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1705400950175.webp b/src/weekly/2024/assets/0203-0209/1705400950175.webp
new file mode 100644
index 0000000000..4778e4bb04
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1705400950175.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1705492131368.webp b/src/weekly/2024/assets/0203-0209/1705492131368.webp
new file mode 100644
index 0000000000..dbf145fd2c
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1705492131368.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1705492212568.webp b/src/weekly/2024/assets/0203-0209/1705492212568.webp
new file mode 100644
index 0000000000..51ad3fc5a1
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1705492212568.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1705492247835.webp b/src/weekly/2024/assets/0203-0209/1705492247835.webp
new file mode 100644
index 0000000000..ca9f25cd5c
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1705492247835.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1705660684110.webp b/src/weekly/2024/assets/0203-0209/1705660684110.webp
new file mode 100644
index 0000000000..b7e5a66253
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1705660684110.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1705660919863.webp b/src/weekly/2024/assets/0203-0209/1705660919863.webp
new file mode 100644
index 0000000000..f958bfd640
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1705660919863.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1705661001147.webp b/src/weekly/2024/assets/0203-0209/1705661001147.webp
new file mode 100644
index 0000000000..b804bed992
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1705661001147.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1705712064109.webp b/src/weekly/2024/assets/0203-0209/1705712064109.webp
new file mode 100644
index 0000000000..f62a19acb4
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1705712064109.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1705712458189.webp b/src/weekly/2024/assets/0203-0209/1705712458189.webp
new file mode 100644
index 0000000000..1b3892b53b
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1705712458189.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1705728969492.webp b/src/weekly/2024/assets/0203-0209/1705728969492.webp
new file mode 100644
index 0000000000..df779a484b
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1705728969492.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1705729326272.webp b/src/weekly/2024/assets/0203-0209/1705729326272.webp
new file mode 100644
index 0000000000..7e325c2576
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1705729326272.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/1705729680958.webp b/src/weekly/2024/assets/0203-0209/1705729680958.webp
new file mode 100644
index 0000000000..3cbeac0b72
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/1705729680958.webp differ
diff --git a/src/weekly/2024/assets/0203-0209/image-20240108081856658.webp b/src/weekly/2024/assets/0203-0209/image-20240108081856658.webp
new file mode 100644
index 0000000000..51ef2d5441
Binary files /dev/null and b/src/weekly/2024/assets/0203-0209/image-20240108081856658.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1704780701979.webp b/src/weekly/2024/assets/0210-0216/1704780701979.webp
new file mode 100644
index 0000000000..b47f5d7278
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1704780701979.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1704780768136.webp b/src/weekly/2024/assets/0210-0216/1704780768136.webp
new file mode 100644
index 0000000000..668309ff95
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1704780768136.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1705493256306.webp b/src/weekly/2024/assets/0210-0216/1705493256306.webp
new file mode 100644
index 0000000000..5e9f866117
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1705493256306.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1705493410248.webp b/src/weekly/2024/assets/0210-0216/1705493410248.webp
new file mode 100644
index 0000000000..f5400ff7a8
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1705493410248.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1705493553068.webp b/src/weekly/2024/assets/0210-0216/1705493553068.webp
new file mode 100644
index 0000000000..2680d3e00d
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1705493553068.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1705709724563.webp b/src/weekly/2024/assets/0210-0216/1705709724563.webp
new file mode 100644
index 0000000000..c71d3cdbde
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1705709724563.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1705710149057.webp b/src/weekly/2024/assets/0210-0216/1705710149057.webp
new file mode 100644
index 0000000000..e5f1bf5aba
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1705710149057.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1705710336079.webp b/src/weekly/2024/assets/0210-0216/1705710336079.webp
new file mode 100644
index 0000000000..3565bd9448
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1705710336079.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1705710528783.webp b/src/weekly/2024/assets/0210-0216/1705710528783.webp
new file mode 100644
index 0000000000..1665fc58a7
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1705710528783.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1705711011696.webp b/src/weekly/2024/assets/0210-0216/1705711011696.webp
new file mode 100644
index 0000000000..eb29076190
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1705711011696.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1705711329245.webp b/src/weekly/2024/assets/0210-0216/1705711329245.webp
new file mode 100644
index 0000000000..8304c98928
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1705711329245.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1705730536622.webp b/src/weekly/2024/assets/0210-0216/1705730536622.webp
new file mode 100644
index 0000000000..40e230c2d1
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1705730536622.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1705730722675.webp b/src/weekly/2024/assets/0210-0216/1705730722675.webp
new file mode 100644
index 0000000000..b3b66b6322
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1705730722675.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/1705730973475.webp b/src/weekly/2024/assets/0210-0216/1705730973475.webp
new file mode 100644
index 0000000000..126d6ca702
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/1705730973475.webp differ
diff --git a/src/weekly/2024/assets/0210-0216/image-20240108082005617.webp b/src/weekly/2024/assets/0210-0216/image-20240108082005617.webp
new file mode 100644
index 0000000000..58cd9aa45a
Binary files /dev/null and b/src/weekly/2024/assets/0210-0216/image-20240108082005617.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1704887762613.webp b/src/weekly/2024/assets/0217-0223/1704887762613.webp
new file mode 100644
index 0000000000..8b794bb7b4
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1704887762613.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1704887895189.webp b/src/weekly/2024/assets/0217-0223/1704887895189.webp
new file mode 100644
index 0000000000..7c9ef82b7d
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1704887895189.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1705909747975.webp b/src/weekly/2024/assets/0217-0223/1705909747975.webp
new file mode 100644
index 0000000000..0d1f05ddd3
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1705909747975.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1705910486872.webp b/src/weekly/2024/assets/0217-0223/1705910486872.webp
new file mode 100644
index 0000000000..910fb3ee23
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1705910486872.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1705910706490.webp b/src/weekly/2024/assets/0217-0223/1705910706490.webp
new file mode 100644
index 0000000000..02ec991470
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1705910706490.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1706314865295.webp b/src/weekly/2024/assets/0217-0223/1706314865295.webp
new file mode 100644
index 0000000000..082255ed7f
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1706314865295.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1706315246203.webp b/src/weekly/2024/assets/0217-0223/1706315246203.webp
new file mode 100644
index 0000000000..96e4f7c985
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1706315246203.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1706315443885.webp b/src/weekly/2024/assets/0217-0223/1706315443885.webp
new file mode 100644
index 0000000000..65d80052c3
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1706315443885.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1706316330573.webp b/src/weekly/2024/assets/0217-0223/1706316330573.webp
new file mode 100644
index 0000000000..2f31e28b76
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1706316330573.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1706316902705.webp b/src/weekly/2024/assets/0217-0223/1706316902705.webp
new file mode 100644
index 0000000000..eb89203e6f
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1706316902705.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1706317228811.webp b/src/weekly/2024/assets/0217-0223/1706317228811.webp
new file mode 100644
index 0000000000..da833cf501
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1706317228811.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1706318297753.webp b/src/weekly/2024/assets/0217-0223/1706318297753.webp
new file mode 100644
index 0000000000..aa93a12cc8
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1706318297753.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1706318430011.webp b/src/weekly/2024/assets/0217-0223/1706318430011.webp
new file mode 100644
index 0000000000..e8b7a8e210
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1706318430011.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/1706318690051.webp b/src/weekly/2024/assets/0217-0223/1706318690051.webp
new file mode 100644
index 0000000000..3fc11409dd
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/1706318690051.webp differ
diff --git a/src/weekly/2024/assets/0217-0223/image-20240109135809370.webp b/src/weekly/2024/assets/0217-0223/image-20240109135809370.webp
new file mode 100644
index 0000000000..86b58b08e2
Binary files /dev/null and b/src/weekly/2024/assets/0217-0223/image-20240109135809370.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/1707029427389.webp b/src/weekly/2024/assets/0224-0301/1707029427389.webp
new file mode 100644
index 0000000000..9700fa92e1
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/1707029427389.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/20240219-1708324870.webp b/src/weekly/2024/assets/0224-0301/20240219-1708324870.webp
new file mode 100644
index 0000000000..6cf1656c09
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/20240219-1708324870.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/20240219-1708325429.webp b/src/weekly/2024/assets/0224-0301/20240219-1708325429.webp
new file mode 100644
index 0000000000..e9d1bc71af
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/20240219-1708325429.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/20240220-1708394383.webp b/src/weekly/2024/assets/0224-0301/20240220-1708394383.webp
new file mode 100644
index 0000000000..e5f883711d
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/20240220-1708394383.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/20240226-1708905859.webp b/src/weekly/2024/assets/0224-0301/20240226-1708905859.webp
new file mode 100644
index 0000000000..5f9c4cf1b1
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/20240226-1708905859.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/20240226-1708905915.webp b/src/weekly/2024/assets/0224-0301/20240226-1708905915.webp
new file mode 100644
index 0000000000..fac52678bd
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/20240226-1708905915.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/20240226-1708905953.webp b/src/weekly/2024/assets/0224-0301/20240226-1708905953.webp
new file mode 100644
index 0000000000..525540f0e1
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/20240226-1708905953.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/20240226-1708906044.webp b/src/weekly/2024/assets/0224-0301/20240226-1708906044.webp
new file mode 100644
index 0000000000..1706225b78
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/20240226-1708906044.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/20240226-1708906071.webp b/src/weekly/2024/assets/0224-0301/20240226-1708906071.webp
new file mode 100644
index 0000000000..a1427d4327
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/20240226-1708906071.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/20240226-1708906091.webp b/src/weekly/2024/assets/0224-0301/20240226-1708906091.webp
new file mode 100644
index 0000000000..9b687f6da1
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/20240226-1708906091.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/20240226-1708906130.webp b/src/weekly/2024/assets/0224-0301/20240226-1708906130.webp
new file mode 100644
index 0000000000..87060bb1ec
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/20240226-1708906130.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/image-20240204085949546.webp b/src/weekly/2024/assets/0224-0301/image-20240204085949546.webp
new file mode 100644
index 0000000000..92cc5a237a
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/image-20240204085949546.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/image-20240204090756810.webp b/src/weekly/2024/assets/0224-0301/image-20240204090756810.webp
new file mode 100644
index 0000000000..6d63a14c09
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/image-20240204090756810.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/image-20240204090826335.webp b/src/weekly/2024/assets/0224-0301/image-20240204090826335.webp
new file mode 100644
index 0000000000..756cc9453f
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/image-20240204090826335.webp differ
diff --git a/src/weekly/2024/assets/0224-0301/image.6w9w19vrubg0.webp b/src/weekly/2024/assets/0224-0301/image.6w9w19vrubg0.webp
new file mode 100644
index 0000000000..ed122c2aad
Binary files /dev/null and b/src/weekly/2024/assets/0224-0301/image.6w9w19vrubg0.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240226-1708906647.webp b/src/weekly/2024/assets/0302-0308/20240226-1708906647.webp
new file mode 100644
index 0000000000..d4b2e83ac2
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240226-1708906647.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240226-1708906680.webp b/src/weekly/2024/assets/0302-0308/20240226-1708906680.webp
new file mode 100644
index 0000000000..9a55382373
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240226-1708906680.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240226-1708906734.webp b/src/weekly/2024/assets/0302-0308/20240226-1708906734.webp
new file mode 100644
index 0000000000..cebe207ae3
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240226-1708906734.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240226-1708936338.webp b/src/weekly/2024/assets/0302-0308/20240226-1708936338.webp
new file mode 100644
index 0000000000..62ea973a5e
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240226-1708936338.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240226-1708937114.webp b/src/weekly/2024/assets/0302-0308/20240226-1708937114.webp
new file mode 100644
index 0000000000..b5aca40268
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240226-1708937114.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240228-1709078961.webp b/src/weekly/2024/assets/0302-0308/20240228-1709078961.webp
new file mode 100644
index 0000000000..6a8b65c1da
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240228-1709078961.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240228-1709079188.webp b/src/weekly/2024/assets/0302-0308/20240228-1709079188.webp
new file mode 100644
index 0000000000..e3b778aa5a
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240228-1709079188.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240228-1709079466.webp b/src/weekly/2024/assets/0302-0308/20240228-1709079466.webp
new file mode 100644
index 0000000000..930691c22f
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240228-1709079466.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240228-1709079828.webp b/src/weekly/2024/assets/0302-0308/20240228-1709079828.webp
new file mode 100644
index 0000000000..2d4a6396f8
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240228-1709079828.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240228-1709080062.webp b/src/weekly/2024/assets/0302-0308/20240228-1709080062.webp
new file mode 100644
index 0000000000..ab68b54b9f
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240228-1709080062.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240229-1709165032.webp b/src/weekly/2024/assets/0302-0308/20240229-1709165032.webp
new file mode 100644
index 0000000000..9f19d53911
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240229-1709165032.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240229-1709165119.webp b/src/weekly/2024/assets/0302-0308/20240229-1709165119.webp
new file mode 100644
index 0000000000..e0d46a536c
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240229-1709165119.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240229-1709165243.webp b/src/weekly/2024/assets/0302-0308/20240229-1709165243.webp
new file mode 100644
index 0000000000..ad0722f6d4
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240229-1709165243.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240229-1709203757.webp b/src/weekly/2024/assets/0302-0308/20240229-1709203757.webp
new file mode 100644
index 0000000000..5a7910f725
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240229-1709203757.webp differ
diff --git a/src/weekly/2024/assets/0302-0308/20240229-1709203839.webp b/src/weekly/2024/assets/0302-0308/20240229-1709203839.webp
new file mode 100644
index 0000000000..6587d0b3a0
Binary files /dev/null and b/src/weekly/2024/assets/0302-0308/20240229-1709203839.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/20240226-1708936970.webp b/src/weekly/2024/assets/0309-0315/20240226-1708936970.webp
new file mode 100644
index 0000000000..5c8d265e68
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/20240226-1708936970.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/20240227-1708991901.webp b/src/weekly/2024/assets/0309-0315/20240227-1708991901.webp
new file mode 100644
index 0000000000..31e173495f
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/20240227-1708991901.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/20240227-1708991973.webp b/src/weekly/2024/assets/0309-0315/20240227-1708991973.webp
new file mode 100644
index 0000000000..46f717a768
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/20240227-1708991973.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/20240229-1709165478.webp b/src/weekly/2024/assets/0309-0315/20240229-1709165478.webp
new file mode 100644
index 0000000000..43ae26275f
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/20240229-1709165478.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/20240305-1709596737.webp b/src/weekly/2024/assets/0309-0315/20240305-1709596737.webp
new file mode 100644
index 0000000000..5287b9c90a
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/20240305-1709596737.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/20240305-1709596794.webp b/src/weekly/2024/assets/0309-0315/20240305-1709596794.webp
new file mode 100644
index 0000000000..7ab4db040f
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/20240305-1709596794.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/20240305-1709596810.webp b/src/weekly/2024/assets/0309-0315/20240305-1709596810.webp
new file mode 100644
index 0000000000..a76bf0ac9a
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/20240305-1709596810.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/20240305-1709596845.webp b/src/weekly/2024/assets/0309-0315/20240305-1709596845.webp
new file mode 100644
index 0000000000..6dcea1905e
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/20240305-1709596845.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/chrome_1710201957.webp b/src/weekly/2024/assets/0309-0315/chrome_1710201957.webp
new file mode 100644
index 0000000000..3424602a81
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/chrome_1710201957.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/chrome_1710202054.webp b/src/weekly/2024/assets/0309-0315/chrome_1710202054.webp
new file mode 100644
index 0000000000..f10b718a15
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/chrome_1710202054.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/chrome_1710202083.webp b/src/weekly/2024/assets/0309-0315/chrome_1710202083.webp
new file mode 100644
index 0000000000..6555dc1924
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/chrome_1710202083.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/chrome_1710202155.webp b/src/weekly/2024/assets/0309-0315/chrome_1710202155.webp
new file mode 100644
index 0000000000..da0f2f0462
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/chrome_1710202155.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/chrome_1710202176.webp b/src/weekly/2024/assets/0309-0315/chrome_1710202176.webp
new file mode 100644
index 0000000000..ca2617396a
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/chrome_1710202176.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/chrome_1710202231.webp b/src/weekly/2024/assets/0309-0315/chrome_1710202231.webp
new file mode 100644
index 0000000000..e87be918c9
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/chrome_1710202231.webp differ
diff --git a/src/weekly/2024/assets/0309-0315/chrome_1710202276.webp b/src/weekly/2024/assets/0309-0315/chrome_1710202276.webp
new file mode 100644
index 0000000000..82dab2e280
Binary files /dev/null and b/src/weekly/2024/assets/0309-0315/chrome_1710202276.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/20240227-1708992014.webp b/src/weekly/2024/assets/0316-0322/20240227-1708992014.webp
new file mode 100644
index 0000000000..6eb61b16cf
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/20240227-1708992014.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/20240227-1708992031.webp b/src/weekly/2024/assets/0316-0322/20240227-1708992031.webp
new file mode 100644
index 0000000000..961f4b8250
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/20240227-1708992031.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/20240227-1708992069.webp b/src/weekly/2024/assets/0316-0322/20240227-1708992069.webp
new file mode 100644
index 0000000000..3d1ef4e065
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/20240227-1708992069.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/20240306-1709684117.webp b/src/weekly/2024/assets/0316-0322/20240306-1709684117.webp
new file mode 100644
index 0000000000..acfc49c27d
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/20240306-1709684117.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/20240306-1709684303.webp b/src/weekly/2024/assets/0316-0322/20240306-1709684303.webp
new file mode 100644
index 0000000000..5fc260c7d6
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/20240306-1709684303.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/20240306-1709684503.webp b/src/weekly/2024/assets/0316-0322/20240306-1709684503.webp
new file mode 100644
index 0000000000..f0c91c02b7
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/20240306-1709684503.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/chrome_1710208574.webp b/src/weekly/2024/assets/0316-0322/chrome_1710208574.webp
new file mode 100644
index 0000000000..fdc9a9606d
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/chrome_1710208574.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/chrome_1710208599.webp b/src/weekly/2024/assets/0316-0322/chrome_1710208599.webp
new file mode 100644
index 0000000000..297214db51
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/chrome_1710208599.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/chrome_1710287927.webp b/src/weekly/2024/assets/0316-0322/chrome_1710287927.webp
new file mode 100644
index 0000000000..bead216641
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/chrome_1710287927.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/chrome_1710328246.webp b/src/weekly/2024/assets/0316-0322/chrome_1710328246.webp
new file mode 100644
index 0000000000..1b493fa9bc
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/chrome_1710328246.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/chrome_1710330200.webp b/src/weekly/2024/assets/0316-0322/chrome_1710330200.webp
new file mode 100644
index 0000000000..ac3e3c4e19
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/chrome_1710330200.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/chrome_1710330376.webp b/src/weekly/2024/assets/0316-0322/chrome_1710330376.webp
new file mode 100644
index 0000000000..7b31dac48e
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/chrome_1710330376.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/chrome_1710330778.webp b/src/weekly/2024/assets/0316-0322/chrome_1710330778.webp
new file mode 100644
index 0000000000..3984a73ee8
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/chrome_1710330778.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/chrome_1710374150.webp b/src/weekly/2024/assets/0316-0322/chrome_1710374150.webp
new file mode 100644
index 0000000000..34599bcf70
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/chrome_1710374150.webp differ
diff --git a/src/weekly/2024/assets/0316-0322/chrome_1710374180.webp b/src/weekly/2024/assets/0316-0322/chrome_1710374180.webp
new file mode 100644
index 0000000000..1dd8d0d610
Binary files /dev/null and b/src/weekly/2024/assets/0316-0322/chrome_1710374180.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/20240227-1708993240.webp b/src/weekly/2024/assets/0323-0329/20240227-1708993240.webp
new file mode 100644
index 0000000000..cbf87d1bd6
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/20240227-1708993240.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/20240227-1708993574.webp b/src/weekly/2024/assets/0323-0329/20240227-1708993574.webp
new file mode 100644
index 0000000000..1d476b844a
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/20240227-1708993574.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/20240228-1709078766.webp b/src/weekly/2024/assets/0323-0329/20240228-1709078766.webp
new file mode 100644
index 0000000000..66cd8645a9
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/20240228-1709078766.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/CUNYU1943_1710719704.webp b/src/weekly/2024/assets/0323-0329/CUNYU1943_1710719704.webp
new file mode 100644
index 0000000000..110c4e8166
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/CUNYU1943_1710719704.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/chrome_1710287832.webp b/src/weekly/2024/assets/0323-0329/chrome_1710287832.webp
new file mode 100644
index 0000000000..10eb4ec5ac
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/chrome_1710287832.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/chrome_1710287861.webp b/src/weekly/2024/assets/0323-0329/chrome_1710287861.webp
new file mode 100644
index 0000000000..5d84957a9b
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/chrome_1710287861.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/chrome_1710287898.webp b/src/weekly/2024/assets/0323-0329/chrome_1710287898.webp
new file mode 100644
index 0000000000..dd85183208
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/chrome_1710287898.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/chrome_1710460998.webp b/src/weekly/2024/assets/0323-0329/chrome_1710460998.webp
new file mode 100644
index 0000000000..bbd19bf830
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/chrome_1710460998.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/chrome_1710461046.webp b/src/weekly/2024/assets/0323-0329/chrome_1710461046.webp
new file mode 100644
index 0000000000..39b6ba3451
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/chrome_1710461046.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/chrome_1710461459.webp b/src/weekly/2024/assets/0323-0329/chrome_1710461459.webp
new file mode 100644
index 0000000000..4153e60537
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/chrome_1710461459.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/chrome_1710719737.webp b/src/weekly/2024/assets/0323-0329/chrome_1710719737.webp
new file mode 100644
index 0000000000..86f20c03cb
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/chrome_1710719737.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/chrome_1710719764.webp b/src/weekly/2024/assets/0323-0329/chrome_1710719764.webp
new file mode 100644
index 0000000000..5187af1899
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/chrome_1710719764.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/chrome_1710979763.webp b/src/weekly/2024/assets/0323-0329/chrome_1710979763.webp
new file mode 100644
index 0000000000..9b8bb218cf
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/chrome_1710979763.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/chrome_1710980235.webp b/src/weekly/2024/assets/0323-0329/chrome_1710980235.webp
new file mode 100644
index 0000000000..222cb2bb4c
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/chrome_1710980235.webp differ
diff --git a/src/weekly/2024/assets/0323-0329/chrome_1711065450.webp b/src/weekly/2024/assets/0323-0329/chrome_1711065450.webp
new file mode 100644
index 0000000000..0becebff42
Binary files /dev/null and b/src/weekly/2024/assets/0323-0329/chrome_1711065450.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/20240305-1709597462.webp b/src/weekly/2024/assets/0330-0405/20240305-1709597462.webp
new file mode 100644
index 0000000000..dddc4954f7
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/20240305-1709597462.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1710287532.webp b/src/weekly/2024/assets/0330-0405/chrome_1710287532.webp
new file mode 100644
index 0000000000..09b611c430
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1710287532.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1710287619.webp b/src/weekly/2024/assets/0330-0405/chrome_1710287619.webp
new file mode 100644
index 0000000000..61b2c673b9
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1710287619.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1710287698.webp b/src/weekly/2024/assets/0330-0405/chrome_1710287698.webp
new file mode 100644
index 0000000000..3fb7edf5ba
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1710287698.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1710287728.webp b/src/weekly/2024/assets/0330-0405/chrome_1710287728.webp
new file mode 100644
index 0000000000..32276f5ada
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1710287728.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1710287775.webp b/src/weekly/2024/assets/0330-0405/chrome_1710287775.webp
new file mode 100644
index 0000000000..121bb4d105
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1710287775.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1710743013.webp b/src/weekly/2024/assets/0330-0405/chrome_1710743013.webp
new file mode 100644
index 0000000000..5b7002f8ca
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1710743013.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1710807153.webp b/src/weekly/2024/assets/0330-0405/chrome_1710807153.webp
new file mode 100644
index 0000000000..4cd389efca
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1710807153.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1710807783.webp b/src/weekly/2024/assets/0330-0405/chrome_1710807783.webp
new file mode 100644
index 0000000000..b04b1c2717
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1710807783.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1710819547.webp b/src/weekly/2024/assets/0330-0405/chrome_1710819547.webp
new file mode 100644
index 0000000000..ab1d9fd355
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1710819547.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1710979429.webp b/src/weekly/2024/assets/0330-0405/chrome_1710979429.webp
new file mode 100644
index 0000000000..aade571940
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1710979429.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1710979611.webp b/src/weekly/2024/assets/0330-0405/chrome_1710979611.webp
new file mode 100644
index 0000000000..7c3ff52f6a
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1710979611.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1711065482.webp b/src/weekly/2024/assets/0330-0405/chrome_1711065482.webp
new file mode 100644
index 0000000000..079752d5d8
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1711065482.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1711065493.webp b/src/weekly/2024/assets/0330-0405/chrome_1711065493.webp
new file mode 100644
index 0000000000..457074e68d
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1711065493.webp differ
diff --git a/src/weekly/2024/assets/0330-0405/chrome_1711065509.webp b/src/weekly/2024/assets/0330-0405/chrome_1711065509.webp
new file mode 100644
index 0000000000..415ccf5a7c
Binary files /dev/null and b/src/weekly/2024/assets/0330-0405/chrome_1711065509.webp differ
diff --git a/src/weekly/2024/assets/0406-0412/chrome_1710461948.webp b/src/weekly/2024/assets/0406-0412/chrome_1710461948.webp
new file mode 100644
index 0000000000..dfca92ccb2
Binary files /dev/null and b/src/weekly/2024/assets/0406-0412/chrome_1710461948.webp differ
diff --git a/src/weekly/2024/assets/0406-0412/chrome_1710462105.webp b/src/weekly/2024/assets/0406-0412/chrome_1710462105.webp
new file mode 100644
index 0000000000..431ff405c6
Binary files /dev/null and b/src/weekly/2024/assets/0406-0412/chrome_1710462105.webp differ
diff --git a/src/weekly/2024/assets/0406-0412/chrome_1710462265.webp b/src/weekly/2024/assets/0406-0412/chrome_1710462265.webp
new file mode 100644
index 0000000000..1eed6a4e02
Binary files /dev/null and b/src/weekly/2024/assets/0406-0412/chrome_1710462265.webp differ
diff --git a/src/weekly/2024/assets/0406-0412/chrome_1710990997.webp b/src/weekly/2024/assets/0406-0412/chrome_1710990997.webp
new file mode 100644
index 0000000000..09542a65e7
Binary files /dev/null and b/src/weekly/2024/assets/0406-0412/chrome_1710990997.webp differ
diff --git a/src/weekly/2024/assets/0406-0412/chrome_1710991100.webp b/src/weekly/2024/assets/0406-0412/chrome_1710991100.webp
new file mode 100644
index 0000000000..89f566f01f
Binary files /dev/null and b/src/weekly/2024/assets/0406-0412/chrome_1710991100.webp differ
diff --git a/src/weekly/2024/assets/0413-0419/CUNYU1943_1710806588.webp b/src/weekly/2024/assets/0413-0419/CUNYU1943_1710806588.webp
new file mode 100644
index 0000000000..6be4f26e30
Binary files /dev/null and b/src/weekly/2024/assets/0413-0419/CUNYU1943_1710806588.webp differ
diff --git a/src/weekly/2024/assets/0413-0419/chrome_1710752767.webp b/src/weekly/2024/assets/0413-0419/chrome_1710752767.webp
new file mode 100644
index 0000000000..feee9107d1
Binary files /dev/null and b/src/weekly/2024/assets/0413-0419/chrome_1710752767.webp differ
diff --git a/src/weekly/2024/assets/0413-0419/chrome_1710806875.webp b/src/weekly/2024/assets/0413-0419/chrome_1710806875.webp
new file mode 100644
index 0000000000..dec7e16108
Binary files /dev/null and b/src/weekly/2024/assets/0413-0419/chrome_1710806875.webp differ
diff --git a/src/weekly/2024/assets/0420-0426/chrome_1710807558.webp b/src/weekly/2024/assets/0420-0426/chrome_1710807558.webp
new file mode 100644
index 0000000000..0e400226f0
Binary files /dev/null and b/src/weekly/2024/assets/0420-0426/chrome_1710807558.webp differ
diff --git a/src/weekly/2024/assets/0420-0426/chrome_1710979127.webp b/src/weekly/2024/assets/0420-0426/chrome_1710979127.webp
new file mode 100644
index 0000000000..c828aeeb3b
Binary files /dev/null and b/src/weekly/2024/assets/0420-0426/chrome_1710979127.webp differ
diff --git a/src/weekly/2024/assets/0420-0426/chrome_1711012999.webp b/src/weekly/2024/assets/0420-0426/chrome_1711012999.webp
new file mode 100644
index 0000000000..88c2e4946b
Binary files /dev/null and b/src/weekly/2024/assets/0420-0426/chrome_1711012999.webp differ
diff --git a/src/weekly/2024/model.md b/src/weekly/2024/model.md
new file mode 100644
index 0000000000..ab98681be9
--- /dev/null
+++ b/src/weekly/2024/model.md
@@ -0,0 +1,55 @@
+---
+index: false
+isOriginal: true
+category:
+  - 好物周刊
+tag:
+  - 项目
+  - 软件
+  - 网站
+  - 资料
+  - 插件
+
+---
+
+# 好物周刊#：
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+::: tip 原文
+
+:::
+
+
+## 一、项目
+
+## 二、软件
+
+## 三、网站
+
+## 四、插件
+
+## 五、资料
+
+## ✍️ 说明
+
+周刊专栏相关信息：
+
+- **项目地址**：[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) ，觉得不错麻烦给我一个**Star**，感谢 ❤️
+- **浏览地址**：公众号 | [电子书](https://cunyu1943.github.io/) | [电子书（国内）](https://cunyu1943.gitee.io/) | [语雀](https://yuque.com/cunyu1943)
+
+如果你阅读到这里，说明我的工作没有白费。如果你想推荐项目/网站/软件/资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **个人微信：cunyu1943** 与我交流。
+
+---
+
+## ⏳ 联系
+
+想解锁更多知识？不妨关注我的微信公众号：**村雨遥（id：JavaPark）**。
+
+扫一扫，探索另一个全新的世界。
+
+![](/contact/wechatpublic.png =150x)
+
+<Share colorful />
+
diff --git a/src/weekly/README.md b/src/weekly/README.md
new file mode 100644
index 0000000000..39d650d791
--- /dev/null
+++ b/src/weekly/README.md
@@ -0,0 +1,59 @@
+---
+icon: fa-solid fa-lightbulb
+index: false
+isOriginal: true
+---
+# 创刊寄语
+
+::: info 共勉
+不要哀求，学会争取。若是如此，终有所获。
+:::
+
+## 一、前言
+
+
+
+村雨遥的好物周刊，记录每周看到的有价值的信息，主要针对计算机领域，每周五发布。专栏目的在于记录让自己有印象的信息做一个备份及分享，阅读渠道如下：
+
+- [博客](https://cunyu1943.github.io/) | [博客(国内)](https://cunyu1943.gitee.io/)
+- [JavaPark](https://github.com/cunyu1943/JavaPark)
+- [公众号](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIyNTg2MjkzNw==&action=getalbum&album_id=2501145320567963650&scene=173&from_msgid=2247497779&from_itemidx=1&count=3&nolastread=1#wechat_redirect)：移动端推荐
+
+如果你想推荐或自荐项目/网站/软件/插件/资料等任何资源，欢迎提交 **[issue](https://github.com/cunyu1943/JavaPark/issues)** 或者添加我 **[个人微信：cunyu1943](/contact/wechat.png)** 和我交流。
+
+<center>
+<img src="/contact/wechat.png" width="150" />
+</center>
+
+## 二、介绍
+
+互联网时代，各种信息层出不穷。而从众多信息中过滤出需要的，并将这些信息聚合起来就是一项十分重要的技能。
+
+作为一名程序员，每天在网上冲浪时经常会浏览到各种好玩的项目、资源、软件以及资源等。而久而久之，一些好的资源渐渐就淹没在信息流中了，后来想再去找也不知道该去哪儿查。
+
+针对这个问题，给我个人感觉非常不好，不知道你是否也会有这样的感觉呢？于是 **好物周刊** 诞生了，周刊于我而言既是一种留存，也是一种分享，希望我能一直坚持下去，欢迎大家监督。
+
+如果大家感兴趣，请持续关注我的的周刊专栏[电子书](https://cunyu1943.github.io/)，也请移步[Github](https://github.com/cunyu1943/JavaPark/) | [Gitee](https://gitee.com/cunyu1943/JavaPark/) 给我一个`Star`支持下吧。
+
+好物周刊开始于 **2023.04.15**，如果看到这篇文章时我依旧在坚持更新，那就是最好的消息。
+
+## 三、交流
+
+欢迎关注[公众号](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIyNTg2MjkzNw==&action=getalbum&album_id=2501145320567963650&scene=173&from_msgid=2247497779&from_itemidx=1&count=3&nolastread=1#wechat_redirect)|[博客](https://cunyu1943.github.io/)一起交流（每周在公众号首发）：
+
+<center>
+<img src="/contact/wechatpublic.png" width="150" />
+</center>
+
+
+## 四、赞助
+
+开源不易，如果你觉得本仓库对你有帮助，或许可以请我喝杯咖啡，不靠它生存但仍希望得到你的鼓励。
+
+![](/award/donate.svg =150x)
+
+## 五、贡献
+
+1.  如果您对本项目有任何建议或者发现文中内容有错误的，欢迎私信我或者提交 [`issues`](https://github.com/cunyu1943/JavaPark/issues) 指正。
+
+2.  对于项目中未涉及到的知识点，欢迎提交 `PR`。
