diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..75db0de --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,67 @@ +# 构建 VitePress 站点并将其部署到 GitHub Pages 的示例工作流程 +# +name: Deploy VitePress site to Pages + +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@v4 + with: + version: latest + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 18 + cache: pnpm # 或 pnpm / yarn + - name: Setup Pages + uses: actions/configure-pages@v4 + - name: Install dependencies + run: pnpm install # 或 pnpm install / yarn install / bun install + - name: Build with VitePress + run: pnpm docs:build # 或 pnpm docs:build / yarn docs:build / bun run docs:build + - name: Create CNAME file + run: echo 'aidiy.icu' > docs/.vitepress/dist/CNAME + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: docs/.vitepress/dist + + # 部署工作 + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + needs: build + runs-on: ubuntu-latest + name: Deploy + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..676d75c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +docs/.vitepress/cache \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..5750a28 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# ai-self-learning + +![](./docs/images/title.png) + +人工智能自学指南。 + +\[[在线阅读](https://aidiy.icu)\] diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts new file mode 100644 index 0000000..cac9089 --- /dev/null +++ b/docs/.vitepress/config.mts @@ -0,0 +1,90 @@ +import { defineConfig } from 'vitepress' +import { generateSidebar } from 'vitepress-sidebar'; + + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + markdown: { + image: { + lazyLoading: true + }, + math: true + }, + vite: { + optimizeDeps: { + exclude: [ + '@nolebase/vitepress-plugin-enhanced-readabilities/client', + ], + }, + ssr: { + noExternal: [ + // 如果还有别的依赖需要添加的话,并排填写和配置到这里即可 + '@nolebase/vitepress-plugin-enhanced-readabilities', + ], + }, + }, + lang: 'zh-CN', + base: '/ai-self-learning/', + title: "AIDIY", + description: "AIDIY,人工智能自学指南。", + themeConfig: { + logo: { + src: '/logo.svg', + alt: 'Logo: AIDIY', + }, + // https://vitepress.dev/reference/default-theme-config + nav: [ + { text: 'Home', link: '/' }, + { text: '前言', link: '/前言' }, + // { text: '贡献指南', link: '/前言/贡献指南' }, + { text: '常识', link: '/常识' }, + { text: '知识图谱', link: '/知识图谱' }, + { text: '科研技巧', link: '/科研技巧' } + ], + + sidebar: [ + { + text: '前言', + link: '/前言/', + collapsed: true, + items: [ + ] + }, + { + text: '常识', + link: '/常识/', + collapsed: true, + items: [ + { text: '顶刊与顶会', link: '/常识/顶刊与顶会' }, + { text: '课题组', link: '/常识/课题组' }, + { text: '名词对照表', link: '/常识/名词对照表' }, + ] + }, + { + text: '知识图谱', + link: '/知识图谱/', + collapsed: true, + items: [ + { text: '基础知识', link: '/知识图谱/基础知识' }, + { text: '基础技能', link: '/知识图谱/基础技能' }, + { text: '机器学习', link: '/知识图谱/机器学习' }, + { text: '深度学习', link: '/知识图谱/深度学习' }, + ] + }, + { + text: '科研技巧', + link: '/科研技巧/', + collapsed: true, + items: [ + { text: '思维模式', link: '/科研技巧/思维模式' }, + { text: 'Idea选择', link: '/科研技巧/Idea选择' }, + { text: '论文阅读', link: '/科研技巧/论文阅读' }, + ] + }, + ], + + socialLinks: [ + { icon: 'github', link: 'https://github.com/Axi404/ai-self-learning/' } + ] + } +}) diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts new file mode 100644 index 0000000..211e4cf --- /dev/null +++ b/docs/.vitepress/theme/index.ts @@ -0,0 +1,59 @@ +// https://vitepress.dev/guide/custom-theme +import { h } from 'vue' +import type { Theme } from 'vitepress' +import DefaultTheme from 'vitepress/theme' +import giscusTalk from 'vitepress-plugin-comment-with-giscus'; +import { useData, useRoute } from 'vitepress'; + +import { + NolebaseEnhancedReadabilitiesMenu, + NolebaseEnhancedReadabilitiesPlugin, + NolebaseEnhancedReadabilitiesScreenMenu, +} from '@nolebase/vitepress-plugin-enhanced-readabilities/client' + +import '@nolebase/vitepress-plugin-enhanced-readabilities/client/style.css' + +import './style.css' + +export default { + extends: DefaultTheme, + setup() { + // Get frontmatter and route + const { frontmatter } = useData(); + const route = useRoute(); + + // giscus配置 + giscusTalk({ + repo: 'Axi404/ai-self-learning', //仓库 + repoId: 'R_kgDOMGuZsQ', //仓库ID + category: 'Announcements', // 讨论分类 + categoryId: 'DIC_kwDOMGuZsc4CgjtA', //讨论分类ID + mapping: 'pathname', + inputPosition: 'bottom', + lang: 'zh-CN', + }, + { + frontmatter, route + }, + //默认值为true,表示已启用,此参数可以忽略; + //如果为false,则表示未启用 + //您可以使用“comment:true”序言在页面上单独启用它 + true + ); + }, + Layout: () => { + return h(DefaultTheme.Layout, null, { + // https://vitepress.dev/guide/extending-default-theme#layout-slots + 'nav-bar-content-after': () => h(NolebaseEnhancedReadabilitiesMenu), + // 为较窄的屏幕(通常是小于 iPad Mini)添加阅读增强菜单 + 'nav-screen-content-after': () => h(NolebaseEnhancedReadabilitiesScreenMenu) + }) + }, + enhanceApp({ app, router, siteData }) { + app.use(NolebaseEnhancedReadabilitiesPlugin, { + spotlight: { + defaultToggle: true, + }, + }) + } +} satisfies Theme diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css new file mode 100644 index 0000000..d63aee8 --- /dev/null +++ b/docs/.vitepress/theme/style.css @@ -0,0 +1,139 @@ +/** + * 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/images/title.png b/docs/images/title.png new file mode 100644 index 0000000..a93b9ac Binary files /dev/null and b/docs/images/title.png differ diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..9bdc845 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,23 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "AI自学指南" + text: "从零开始,到精通。" + tagline: A simple yet effective way to learn AI. + actions: + - theme: brand + text: 前言 + link: /前言 + image: + src: /logo.png + alt: AIDIY logo + +features: + - title: 快速入门 + details: 关于AI,关于科研,关于思维,关于知识。 + - title: 领域速通 + details: 领域研究者提供的必读 Paper List。 +--- + diff --git a/docs/public/logo.png b/docs/public/logo.png new file mode 100644 index 0000000..3f246ee Binary files /dev/null and b/docs/public/logo.png differ diff --git a/docs/public/logo.svg b/docs/public/logo.svg new file mode 100644 index 0000000..95511ba --- /dev/null +++ b/docs/public/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/docs/\345\211\215\350\250\200/index.md" "b/docs/\345\211\215\350\250\200/index.md" new file mode 100644 index 0000000..bf469d6 --- /dev/null +++ "b/docs/\345\211\215\350\250\200/index.md" @@ -0,0 +1,57 @@ +
+ title +
+ +# 前言 + +> The key is not how to learn, is how to learn fast. + +本教程受到 [CS自学指南](https://csdiy.wiki) 的启发。CS自学指南是一个全面而丰富的计算机领域的自学指南,提供了一系列供人学习的计算机领域的优质课程,本内容的静态网页创建也参考了其部分的配置。 + +本指南的内容不止在于如何学习,也在于如何更好的学习。 + +感谢@[Axi404](https://github.com/Axi404)在写作中为内容提供的帮助。 + +## 为什么写这本书 + +从开始科研,直到第一篇论文的发表,笔者用时一年时间,这个时间说长不长,但是说短也不短,甚至对于诸多的读者来说,在学习生涯中的一年是无比宝贵的。要是从接触人工智能开始谈起,那么时间更是要向前推到两年之前。两年时间,一篇论文发表,在同龄人之间已经是傲人的成绩,但是伴随着领域内的内卷现状,这种担忧还是在不断地提升:对于新的初学者,如何更好更快的接触并了解人工智能领域的基础知识,并且快速开始自己的科研,拥有自己的科研成果发布,对于每一位读者来说,毫无疑问,是至关重要的。 + +回顾两年的自学生涯,出于专业的培养方案,课内的知识确实很难对科研相关的内容进行覆盖,因而在无人指导的情况下,笔者也走了不少的弯路。不少当初消磨了时间的知识,在如今已经极少提及,但是又常常成为初学者学习路上的绊脚之石。笔者常常思考,假如说自己在入门的时候,有一位好心的学长/学姐或者老师,可以给予自己一些帮助,那么会不会一切会变得不一样,但是遗憾的是,这种事情并没有发生在笔者的身上,可能也大概率不会发生在大多数读者的身上:一位负责任的领路人是一种幸运,但是出于机遇或者只是单纯羞于开口请教,大多数人并不会拥有这种幸运。 + +于是一个全面的、系统的并且饱含捷径的人工智能自学指南的诞生便具有其必要性了,这也是笔者写这一教程的初衷,希望后来人少走一些弯路,更好更快的掌握基础知识,投身于科研的实践之中,为大家带来这种有人领路的幸运。 + +## 这本书能为你带来什么 + +人工智能,随着Stable Diffusion以及ChatGPT的横空出世,广泛地出现在大众的视野中,而在此之前,人工智能领域已经取得了长足的发展。对于一名刚刚踏入大学的同学(或者对相关领域一无所知的新手)来说,人工智能只是一种浮于表象的热潮,但是无论出于什么原因(e.g. 科研/升学/就业/教职),你决定从一无所有开始踏足人工智能领域,开启这一次冒险。 + +当读者真正踏入人工智能领域之后,便不免发现其自学的困难性。人工智能的自学,其困难并非因为相关教程的稀缺,正相反,人工智能作为热门领域,其教程之数量浩如烟海,然而找到真正高效的途径却并不简单,无数的教程停留在人工智能早期的技术发展以及繁琐的数学推导,这些内容令初学者望而却步,而又使前进者付出了大量的时间成本。 + +从功利角度上来看,在如今科研环境越发内卷的当下(e.g. 本科保研,在大三之前在人工智能领域发表一篇CCF-A论文(也就是通常说的顶刊/会)已经成为了最高学府的入场券),一些人工智能内容的学习并不是必须的,尽快进入高速科研的赛道成为了一种必需品。 + +诚然一些基础的知识会提升你的科研品味,并且让你具有更好的insight(可以理解为*见解*),但是我们最后都会深耕于某一细分领域,对于相关领域的针对性学习与在此之前对于通识领域快速入手可以带来更高的回报率。 + +笔者在入门深度学习的过程中,走过了许多的弯路,并且总结了一些经验,这也是本教程写作的初衷:告诉读者如何自学人工智能,哪些教材/课程/视频可供参考或需要舍弃部分,如何提高自己的科研品味,如何快速入门某一领域等。 + +与此同时,本教程依然保持正常的教程功能,即在提供学习的快速通道的基础上,依然为想要按部就班/扎实学习人工智能领域相关知识的同学提供一条属于自己的道路。敬畏知识的人同样是可敬的,一条远路并非是一条歧路。 + +## 如何使用这本书 + +本书的全部内容均使用Markdown进行渲染,其中的部分格式是你需要注意的: + +- 对于下划线内容,意味着当你学习这些内容的时候,并未走在最短路径上,但是笔者依然给出这些介绍与选项,因为远路不是歧路,扎实的知识同样可以为读者带来提升。 + +- 对于**加粗**内容,意味着这些内容或许是重点,但也许仅来自作者随手的添加。 + +本教程具有诸多的受众,按照面向的层级进行递减。 + +1. 本教程首先面对有志于人工智能领域的本科新生,事实上在如今的趋势下,本科新生已经有必要在第一时间接触科研,本教程写作之初也是为这一部分的学生设立的。 +2. 本教程其次面对有志于人工智能领域的本科生/研究生/直博生,这部分读者已经具备了数理基础,但是本文中关于入门机器学习/深度学习的部分依然具备参考价值。 +3. 本教程最后面向已经在AI领域中进行过研究并有志于改变科研方向的科研工作者,这部分读者已经了解了人工智能领域的全貌,但是对于全新的领域依然无从下手,本教程中会给出细分领域的介绍与建议,这或许是有帮助的。 + +本书的常识部分主要讲述了一些人工智能领域的常识,在正式学习人工智能领域之前,或许这些知识是你有必要了解的,包括课题组、论文以及一些领域中的专业词汇,我们建立了一个优雅的专业词汇对照表,并且会持续的进行更新,这或许对于你会有帮助。 + +本书的知识图谱部分主要讲述了如何学习某方面的知识的宏观学习方法,在这其中,我们指出了哪些知识是必须的,哪些知识是可选的,以及如何学习这些知识。对于已经经过系统学习的科研工作者来说,这一部分的知识或许并非必须的。 + +## 假如你也想成为贡献者 + +假如你也想成为贡献者,为后来之人指引一分方向,可以直接在项目中发起Pull Request,也欢迎和我邮件联系(2221110582@stu.xjtu.edu.cn)。 \ No newline at end of file diff --git "a/docs/\345\270\270\350\257\206/index.md" "b/docs/\345\270\270\350\257\206/index.md" new file mode 100644 index 0000000..129d7ee --- /dev/null +++ "b/docs/\345\270\270\350\257\206/index.md" @@ -0,0 +1,3 @@ +# 前言 + +在常识板块中,本指南主要介绍一些在人工智能领域科研的常识性问题。 \ No newline at end of file diff --git "a/docs/\345\270\270\350\257\206/\345\220\215\350\257\215\345\257\271\347\205\247\350\241\250.md" "b/docs/\345\270\270\350\257\206/\345\220\215\350\257\215\345\257\271\347\205\247\350\241\250.md" new file mode 100644 index 0000000..0bd4a79 --- /dev/null +++ "b/docs/\345\270\270\350\257\206/\345\220\215\350\257\215\345\257\271\347\205\247\350\241\250.md" @@ -0,0 +1,3 @@ +# 名词对照表 + +还未创建。 \ No newline at end of file diff --git "a/docs/\345\270\270\350\257\206/\350\257\276\351\242\230\347\273\204.md" "b/docs/\345\270\270\350\257\206/\350\257\276\351\242\230\347\273\204.md" new file mode 100644 index 0000000..f49e439 --- /dev/null +++ "b/docs/\345\270\270\350\257\206/\350\257\276\351\242\230\347\273\204.md" @@ -0,0 +1,20 @@ +# 课题组 + +一般来说,人工智能的科研以课题组的形式进行展开,也就是通常一个导师带领若干学生进行科研,假如说课题组具有一定的体积,则可能出现大导师带领小导师一类的嵌套结构。绝大多数的课题组会具有自己所熟悉的领域,这通常取决于导师的方向,假如说你打算参加一个课题组,那么提前了解导师的方向会有助于你选择到自己感兴趣的方向。 + +## 先下手为强 + +在面对课题组的选择以及申请的过程中,常有人出现犹豫的心理,这往往出于一种对舒适区的依赖以及对科研的敬畏,并伴随着诸如以下顾虑: + +- **现在申请课题组是否太早了**:按照当前的规划来说,大一新生在了解了基本知识之后,完全有能力在大一下进行科研实习的任务。毫无疑问,科研环境的内卷是肉眼可见的,可以预见的不久之后的将来,极有可能出现大量大一的新生有高质量的论文的发表,因此我们几乎可以说申请课题组永远不算早。同时考虑课题组的培养制度。课题组的导师通常会保留若干低年级新生在组中进行科研实习,以确保将来稳定的生源,这使得提前的占坑进组是有必要,而且可以带来巨大的竞争优势(因为竞争对手的缺乏)。 +- **我并不具有深度学习的知识,是不是太冒进了**:事实上,绝大多数的人都不是天才,也都并不具有在一开始便独当一面的能力。在正常的课题组中,往往申请是基于你的学科成绩作为筛选标准的,换句话说,老师看重的是你的学习能力,或者说将来的科研潜力。科研实习的开始阶段,导师通常会安排师兄师姐带领你进行课题。因此,只要具备下方我们所提及的基础知识,便不难进行科研了。 + +正如上文所说到的,课题组的申请需要你具备一定的课内成绩。一方面,这是你的学习能力的证明;另一方面,足够的成绩也可以确保你在将来的保研排名中依然具有优势地位。因为科研往往会消耗你学习的精力,从而导致成绩的下滑,因此需要留有足够的余量空间,才可以保证一切的顺利进行。 + +## 本校与外校 + +通常课题组的申请也分为本校与外校。对于本校与外校的学生,导师在进行选择的时候,也有所不同的着重。对于处于学科能力较强的大学的同学来说,他们往往可以便捷地加入自己学校的课题组,不得不承认的是,在科研实习的申请过程中,往往作为同一学校或同一专业的老师会更容易通过你的申请。这也便产生了第一条科研路线,也就是先在本校具有科研能力的课题组进行科研实习,在培养了科研素养或者具有了相关的学术成果发表之后,再去申请更好的外校的课题组。而对于自己所在的学校并不存在知名或具有出色学术能力的实验室的读者来说,或许也只能通过大量的申请以及自己优异的成绩来争取外校的科研实习。值得一提的是,多数的外校科研实习都是允许进行远程实习的,因此无需对时间或者地域的适配具有太多的焦虑。 + +## 多问多学 + +在科研实习的过程中,假如读者是科研领域的新手,往往会存在巨大的信息壁垒,因此寻找对于相关领域较为了解的导师或者师兄师姐进行请教往往是必须的。这可以帮助你更好地了解相关领域中强组或者牛导的分布,以及可以帮助读者更加明确且快速地确定自己的目标。对于信息壁垒的破除,是一件长期的事情,无法操之过急,而是需要时刻保持对于信息的敏感性。 \ No newline at end of file diff --git "a/docs/\345\270\270\350\257\206/\351\241\266\345\210\212\344\270\216\351\241\266\344\274\232.md" "b/docs/\345\270\270\350\257\206/\351\241\266\345\210\212\344\270\216\351\241\266\344\274\232.md" new file mode 100644 index 0000000..c0f99f1 --- /dev/null +++ "b/docs/\345\270\270\350\257\206/\351\241\266\345\210\212\344\270\216\351\241\266\344\274\232.md" @@ -0,0 +1,15 @@ +# 顶刊与顶会 + +在人工智能领域。通常对于学术成果的评判,并不在于,如生化环材领域的,SCI期刊。事实上,中国计算机协会公布了一套对于计算机领域相关期刊与会议的评级标准,被称为CCF,其中具有三个等级,也就是A、B、C。一般来说,我们认为绝大多数的A刊以及少数的B刊可以被称为顶刊或者顶会,而其中值得一提的是不同于在其他领域中对于学术会议含金量的贬低,在计算机或者人工智能领域中,学术会议往往也具有很高的含金量,甚至往往大于期刊。这是出于人工智能领域以及计算机领域发展的日新月异,因此,期刊这种具有长审稿周期的学术发表形式。往往不被那些知名学者所青睐。 + +在这里列举一些常见的期刊与会议,他们是具有代表性的顶级会议/期刊: + +- 机器学习三大会:ICLR,NIPS和ICML。 +- CV(计算机视觉)三大会:CVPR,ICCV和ECCV。 +- NLP(自然语言处理)三大会:ACL,EMNLP和NAACL。 + +当然,大量的具有含金量的会议(e.g., KDD)以及期刊(e.g., TPAMI)并不经常出现在所谓某某领域X大会中,但是依然在机器学习与人工智能中含金量极高。 + +详细的CCF评级可以前往其[官网](https://www.ccf.org.cn/Academic_Evaluation/By_category/)进行查看。同时,在另一方面有必要说明的是,CCF评级并非评判论文好坏的唯一标准,许多极具含金量的会议/期刊虽然在CCF评级中表现不佳,但是依然具备超越大多数A的含金量(e.g., ICLR/ECCV/IROS)。 + +## 评分机制 \ No newline at end of file diff --git "a/docs/\347\237\245\350\257\206\345\233\276\350\260\261/index.md" "b/docs/\347\237\245\350\257\206\345\233\276\350\260\261/index.md" new file mode 100644 index 0000000..280e9cf --- /dev/null +++ "b/docs/\347\237\245\350\257\206\345\233\276\350\260\261/index.md" @@ -0,0 +1,3 @@ +# 前言 + +在知识图谱中,主要介绍人工智能相关的知识的知识脉络,以及如何学习的学习路线规划。 \ No newline at end of file diff --git "a/docs/\347\237\245\350\257\206\345\233\276\350\260\261/\345\237\272\347\241\200\346\212\200\350\203\275.md" "b/docs/\347\237\245\350\257\206\345\233\276\350\260\261/\345\237\272\347\241\200\346\212\200\350\203\275.md" new file mode 100644 index 0000000..31d2a42 --- /dev/null +++ "b/docs/\347\237\245\350\257\206\345\233\276\350\260\261/\345\237\272\347\241\200\346\212\200\350\203\275.md" @@ -0,0 +1,15 @@ +# 基础技能 + +相较于基础知识,描述一些在人工智能领域学习过程中你需要了解的理论知识,基础技能方面我们更加倾向于添加一些你需要学会的实践相关的技能。 + +科研是一门实践的学问,尽管在一切情况下可能会伴随着理论的推导,但是在绝大多数时候,人工智能领域的科研总在代码/论文写作/绘图等内容中度过。其中有一些的知识过于的基础,以至于向前辈进行请教都显得有些难以启齿,但是假如说无人指导又难以学会。而另外的一些知识则是在科研中你必须了解的技能,我们在这部分中也会详细的为你说明。 + +## Markdown + +## Linux + +## SSH + +## 代理镜像设置 + +## 提问的智慧 \ No newline at end of file diff --git "a/docs/\347\237\245\350\257\206\345\233\276\350\260\261/\345\237\272\347\241\200\347\237\245\350\257\206.md" "b/docs/\347\237\245\350\257\206\345\233\276\350\260\261/\345\237\272\347\241\200\347\237\245\350\257\206.md" new file mode 100644 index 0000000..8269320 --- /dev/null +++ "b/docs/\347\237\245\350\257\206\345\233\276\350\260\261/\345\237\272\347\241\200\347\237\245\350\257\206.md" @@ -0,0 +1,25 @@ +# 基础知识 + +在正式开始深度学习的学习之前,很遗憾,你依然需要了解一些基础知识,尽管如今深度学习的学术界部分的领域对于基础知识的要求已经低到令人发指,但是为了避免将来的迷茫,适当的基础是必要的。 + +## 线性代数/矩阵论 + +线性代数作为深度学习领域中最重要的知识,是每一位读者都需要掌握的内容,大学的教材已经足够覆盖大多数的内容,尽管网络上的一些人对于国内线性代数的教材与课程设置颇为诟病,但是这完全不等价于学习不好的理由,更何况线性代数的简单知识仅需要几个惬意的上午便可以全部解决。同时关于高等数学中多元微分的内容也是需要了解的。 + +对于想要进一步提升的读者,可以了解矩阵论相关的相关知识,在系统的课程学习之外,[矩阵力量](https://github.com/Visualize-ML/Book4_Power-of-Matrix)是一本关于线性代数与部分矩阵论知识的优秀书籍,可以供读者进行自学。 + +## 概率论 + +概率论作为人工智能领域的常见知识,在数学的推导以及公式的表达中经常出现,理解一些偏向数学的理论的时候通常也偏向于概率论相关的计算。对于一般的使用来说,了解本科所教学的内容即可。大多数的概率论相关的公式总是离不开条件概率等内容,但是随着变量的增多,这些公式的变换形式往往变得复杂,耐心的理解有时候大于知识的掌握。 + +同样来自矩阵力量的作者著有[统计至简](https://github.com/Visualize-ML/Book5_Essentials-of-Probability-and-Statistics),同样值得一读。 + +## ChatGPT + +随着人工智能技术的快速发展,ChatGPT已经成为了大多数科研工作者不可或缺的协作者,对于初学者来说尤甚。了解如何连接ChatGPT,或者使用转发站调用API,是一项必备的技能,尤其在自学中,往往老师不是经常存在的,而GPT如今已经具有了理解复杂数学公式推导的能力,加上其代码能力一直是强项,可以极大的提升每一个人的效率。 + +## 编程(Python) + +编程能力毫无疑问在人工智能领域同样至关重要,对于一个算法来说,实现与相关的实验往往占据了科研的绝大多数时间,而代码能力也是科研工作者的核心能力之一。在人工智能领域中,一般来说,Python是唯一使用的语言,因此假如说在受教育过程中没有接受过Python语言的课程,自学Python是很重要的。幸运的是,你已经多半学习过了编程,而编程思维是可以泛化的,因此Python的速成是很快的,甚至在ChatGPT的辅助下,你可以立刻上手。 + +假如说想要系统的学习Python,那么[官方的文档](https://docs.python.org/zh-cn/3/tutorial/index.html)毫无疑问是最为扎实的学习方法,与此同时,[廖雪峰的Python教程](https://www.liaoxuefeng.com/wiki/1016959663602400)同样质量不错。 \ No newline at end of file diff --git "a/docs/\347\237\245\350\257\206\345\233\276\350\260\261/\346\234\272\345\231\250\345\255\246\344\271\240.md" "b/docs/\347\237\245\350\257\206\345\233\276\350\260\261/\346\234\272\345\231\250\345\255\246\344\271\240.md" new file mode 100644 index 0000000..7328315 --- /dev/null +++ "b/docs/\347\237\245\350\257\206\345\233\276\350\260\261/\346\234\272\345\231\250\345\255\246\344\271\240.md" @@ -0,0 +1,29 @@ +# 机器学习 + +## 基本概念 + +在开始一切的学习之前,你有必要了解一些基本的概念,这些概念会贯穿你在人工智能领域的始终,其中包括: + +- 数据集 +- 模型 +- 训练/优化 +- 拟合/过拟合/欠拟合 +- ...... + +上述是一个会随补充不断更新的列表,其中大多数的内容你可以直接通过ChatGPT获得确切的答案,要是进行严谨的分类,这些内容属于人工智能领域中的“八股”,既是基本概念,在将来也多半会无处不在。 + +## 反向传播 + +反向传播作为深度学习领域最为常见的优化算法,基本是现代人工智能领域中优化的唯一方法,相关的原理无需详细了解,但是需要对其具有一个基本的概念,这很重要。 + +## 机器学习算法 + +传统的机器学习算法往往可以为现代的算法带来一定的启发,甚至说一些取得了较高性能的方法可能完全是过去方法的炒冷饭。 + +网络上充斥着大量的机器学习算法的教程,这些教程繁多,而往往营造了一种焦虑,在此对此类焦虑的核心观点进行总结与驳斥,或许可以帮助读者认清这一领域中的真相: + +- **必须先学好机器学习才可以学好深度学习**:完全不是。正如上文所说,唯一需要了解的便是反向传播算法,除此之外,机器学习的学习仅可以帮助你对于人工智能的知识版图带来一种全面的认知,以及为深度学习的算法设计带来一些启发。这些优点看似诱人,但是在实际的科研过程中,事实上依然罕有派上用场的机会。 +- **机器学习算法必须要学全**:完全不是。网上存在大量的教程,诸如“12种主流机器学习算法”、“9种常见机器学习算法”,或者不同的教材中给出的算法种类与数量也并不相同,往往容易令读者产生*集邮心理*,也就是必须全部学完才好。这往往使得读者将精力放在了资料的收集与整理,而对于大量的资料,心生畏惧而没有动力进一步学习。事实上,假如一个算法足够重要,那么其一定会出现在每一个教材中,因此无需担心错过重要的算法等。 +- ...... + +假如希望系统的学习,[白板推导](https://www.bilibili.com/video/BV1aE411o7qd/)是中文视频教程中质量较高的内容,国外的知名课程CS229(by Andrew Ng)也是广受赞誉的课程,在国内视频网站也可以找到压制字幕的汉化版本。对于书籍,《机器学习》(周志华)是被读者广泛推荐的数据,又名西瓜书。同时笔者则对《统计学习方法》(李航)青睐有加,私以为其提供了更加优秀的学习曲线,知识的讲解也十分的详尽。 \ No newline at end of file diff --git "a/docs/\347\237\245\350\257\206\345\233\276\350\260\261/\346\267\261\345\272\246\345\255\246\344\271\240.md" "b/docs/\347\237\245\350\257\206\345\233\276\350\260\261/\346\267\261\345\272\246\345\255\246\344\271\240.md" new file mode 100644 index 0000000..b8db9a2 --- /dev/null +++ "b/docs/\347\237\245\350\257\206\345\233\276\350\260\261/\346\267\261\345\272\246\345\255\246\344\271\240.md" @@ -0,0 +1,36 @@ +# 深度学习 + +## 不动手学深度学习 + +**本段文字具有笔者极强主观看法,请酌情参考。** + +在bilibili.com上有李沐上传的一系列著名的深度学习课程,叫做动手学深度学习(d2l),其因为超高的质量以及详细的指导而广受好评,而这份教程的特色就在于,除了讲解知识点之外,李沐同时提供了详细的代码指导。可能确实在曾几何时,练习代码能力是必须的(事到如今,代码能力也是个人能力非常重要的一环),但是在具有ChatGPT的当下,一些合理的prompt就可以生成你所希望使用的代码,这极大地降低了书写代码的难度,也为在科研过程中代码的完成提供了一条捷径,伴随着人工智能领域的发展,这种趋势还将继续延续,也就是思想大于工程能力。 + +因此,笔者在这里将提出一种与传统学习方法相背离的思考,也就是或许不动手学深度学习是可以尝试的。 + +事实上,在学习的过程中,仅了解关键算法的关键思想,而不进行数学推导,在科研的前期是可以进行的。对于代码的实现以及数学的理解,往往在下游任务中并非必需,对于追求效率的读者来说,选择使用不动手的方式学习深度学习,可能是一种更好的选择,因为这不仅会降低你的学习成本,同时抽象的理解深度学习中的思想已经足够应付绝大多数在下游任务中的场景。具体的工程能力以及数学的理解则可以放在具体对于某一代码项目的修改以及改进之中。 + +当然,在这里依然要给出一些可供参考的系统性学习的教材。其中需要指出的是,一些传统的教材或许已经过时,而网络上大量的视频教程以及博客反而是具有很高参考价值的,因为人工智能领域的与时俱进,大多数的教材在出版之时,其中所蕴含的人工智能算法早已落后时代一至两年,而两年的代差足以诞生无数的算法迭代。对于某一具体领域的算法的理解,我们将在之后单独开设章节进行讨论,而在这里主要讨论的是对于通识性知识的掌握的教程。 + +对于视频教程,在这里还是要推荐李沐上传的动手学深度学习这门课程。笔者认为相对来说这门课程理解难度较低,而且学习曲线也较为平缓。假如说按照笔者的方案,可以选择不动手实现代码。同时动手实现代码也可以确实增强你的工程能力。对于想要扎实提升自己代码能力的读者来说,或许也是必须的。 + +更多的教程性的内容可能还要倾向于论文方面。这些内容才是科研一线的产物,也可以帮助你更好地理解那些著名算法的思想。在这里,我们将给出一些关键的算法以及它们所对应的论文,这些或许是已经有一定年头的内容,但是依然对于初学者来说十分必要。这里提及的绝大多数内容均来自于这些算法的原论文,而对于一些原论文难以追溯或者该算法来自一种领域内的共识的内容,一些恰当的视频教程以及博客也会被提及。 + +- 反向传播 +- 前馈网络/多层感知机 +- 卷积神经网络 +- 循环神经网络 +- Transformer +- ...... + +论文的阅读,对于初学者来说或许是困难的,而我们也将单独开设章节进行讨论,关于论文阅读中的技巧以及如何快速地理解一篇论文。 + +基础的深度学习的入门知识是十分简单的,在你具有本科数学基础的情况下,基本上使用恰当的方法,慢则一个星期可以入门,但是再次之后才是一切的开始,你需要开始正式接触人工智能领域中的细分领域,而这往往才是重头戏。 + +本指南计划寻找一些对于某一细分领域较为了解,有顶会论文发表的同学/科研工作者进行分享,之后再进行系统的整理,希望可以对你有帮助。 + +## 动手学深度学习 + +另一种方法则是通过动手的方式学习深度学习,这也是众人所推荐的较为常见的入门方式,通过系统的学习视频课程,你或许可以获得到你需要的知识。 + +有一些课程是值得推荐的,这其中包括李沐的动手学深度学习,其[官网](https://zh.d2l.ai)中不仅提供了对应书籍的开源版本,同时配套以Pytorch与其他深度学习库的代码实现。当然,推荐的课程中同样也包括经典的课程[CS231n](https://cs231n.stanford.edu),一方面,可以前往其官网进行观看,而对于英语听力存在困惑的同学,B站也存在其教程的对应 \ No newline at end of file diff --git "a/docs/\347\247\221\347\240\224\346\212\200\345\267\247/Idea\351\200\211\346\213\251.md" "b/docs/\347\247\221\347\240\224\346\212\200\345\267\247/Idea\351\200\211\346\213\251.md" new file mode 100644 index 0000000..896cc79 --- /dev/null +++ "b/docs/\347\247\221\347\240\224\346\212\200\345\267\247/Idea\351\200\211\346\213\251.md" @@ -0,0 +1,15 @@ +# Idea选择 + +在科研的道路中。一个科研课题的起始往往是出于一个idea的选择。而如何找到合适的idea,并且对此进行拓展,产生一片文章,便是每一个科研工作者的第一要务。在人工智能的科研领域中,绝大多数的文章着重于解决某一领域中的某一任务,而具体来说,这些文章则是提出了一种前人没有提出的方法,并且在这一任务的数据集中取得了更加优胜的性能。 + +一般来说,现在的人工智能领域在某种层面上可以说是苛刻的,这一点对于下游任务来说尤甚。一篇可以在顶刊或者顶会中发表的文章,不仅要具备一定的创新性(novelty),同时还需要达到最先进的性能(SOTA),这两点往往缺一不可,这使得一些可能基于远古方法而提出的极具创造性的idea或许难以被接收,因为即使基于远古方法提出的改进确实取得了巨大的进步,但是依然缺少大量的现代总结的提升性能的手段,这导致现如今的研究的性能均是”站在巨人的肩膀上“的研究,而单一的创新往往难以带来超越。 + +出于以上的考量,往往在idea的选择上时,大多数的工作会选择在近期的最新工作的基础之上进行改进,这种改进应该尽可能是替换性质的,也就是对于原有工作的一些结构或者方法进行替换,改为自己的方法,并达成更高的性能,这确实可以证明你的组件可以带来更好的优胜性,而同时并没有降低算法的优雅程度。 + +在另一方面,添加性工作的认可程度则不会过高,也就是在原有工作的基础之上添加了一些结构或者方法。这是显而易见的,没有免费的午餐定律告诉我们,当你在原有的工作的基础上增加的运算的复杂度,获得性能的提升是理所应当的,而对于部分审稿人来说,他们并不认可过于“工程”的工作,因此在对于这一类的工作中往往会质疑创新型。 + +通常来说,浑然天成的idea是十分少见的,这些idea可能已经属于一种全新的范式(如GAN),大多数的时候,idea的提出则是针对性的解决某一问题(强如ResNet在某种程度上来说也可以说是针对梯度问题而专门设计的),因此,一种考虑并且得到idea的方式也就不言而喻了。 + +首先,了解当前的任务,清楚这种任务面临的问题,已经当前的SOTA papers针对这些问题做了什么处理,这一部分可以通过大量的论文阅读来满足。其次,这些论文是否有一些部分做的不是很好,例如虽然性能提升了,但是仅仅解决了一部分的问题,或者说使用的范式过于的简单粗暴,有很多的因素没有考虑进去。然后,思考如何解决这些问题,假如说妙手偶得之,可以想到,自然是最好的,或者相似的领域中是否存在相似的问题,是否有人提出了合适的方法解决了这些问题,这也是可供参考的。最后,这种方法能否被融入在已有的SOTA范式中,这种融入可以是一些替换或者一些添加,而其余部分则保留SOTA范式本身的设定。 + +在此基础上,可以优先进行实验,看看自己的idea是否soild,能否带来性能的提升,假如说确实work了,那么接下来可以考虑直接包装一个故事或者再进行充分的打磨,如之前SOTA范式中的其他设定是否也可以进行替换,在故事性上得到更完整的描述。 \ No newline at end of file diff --git "a/docs/\347\247\221\347\240\224\346\212\200\345\267\247/index.md" "b/docs/\347\247\221\347\240\224\346\212\200\345\267\247/index.md" new file mode 100644 index 0000000..e8c8f08 --- /dev/null +++ "b/docs/\347\247\221\347\240\224\346\212\200\345\267\247/index.md" @@ -0,0 +1,3 @@ +# 前言 + +当我们已经学完了足够的基础知识之后,我们便可以开始初步的接触科研了。一般来说,在这一阶段会有师兄或者师姐的详细指导,而此时你多半也可以脱离本篇教程进行独立的学习了。但是事实上,科研旅程不一定一帆风顺,很可能出现类似没有师兄师姐的指导或者说指导并不详尽的情况,同时频繁地请教同辈或者略大于自己的同学,往往对于内向的读者来说也会带来心理压力。因此,本部分内容的产出,无论是从详细的指导还是在他人指导之外的补充来说,依然是有必要的。 \ No newline at end of file diff --git "a/docs/\347\247\221\347\240\224\346\212\200\345\267\247/\346\200\235\347\273\264\346\250\241\345\274\217.md" "b/docs/\347\247\221\347\240\224\346\212\200\345\267\247/\346\200\235\347\273\264\346\250\241\345\274\217.md" new file mode 100644 index 0000000..8b68f90 --- /dev/null +++ "b/docs/\347\247\221\347\240\224\346\212\200\345\267\247/\346\200\235\347\273\264\346\250\241\345\274\217.md" @@ -0,0 +1,7 @@ +# 思维模式 + +在科研的过程中,在一切的开始,是思维,也就是在面对科研领域的问题的时候应该用怎么样的逻辑去解决,又应该用怎样的逻辑去思考,一些常见的角度或者说现象是可以被总结的,在本部分中给出。 + +## 没有免费的午餐定律 + +没有免费的午餐定律描述的是,对于一切的任务的一切的指标的平均来说,每一种方法的性能都是相等的,而使用一种更为朴实的话语去描述,也可以被描述为有得必有失/有失必有得。尽管我们不排除存在一种究极烂算法在每一方面都差或者一种究极好算法在每一方面都好,但是对于通常的算法设计来说,当在某一部分取得了进步,必然是有所舍弃的,反之亦然。 \ No newline at end of file diff --git "a/docs/\347\247\221\347\240\224\346\212\200\345\267\247/\350\256\272\346\226\207\351\230\205\350\257\273.md" "b/docs/\347\247\221\347\240\224\346\212\200\345\267\247/\350\256\272\346\226\207\351\230\205\350\257\273.md" new file mode 100644 index 0000000..f539bbe --- /dev/null +++ "b/docs/\347\247\221\347\240\224\346\212\200\345\267\247/\350\256\272\346\226\207\351\230\205\350\257\273.md" @@ -0,0 +1,33 @@ +# 论文阅读 + +深度学习领域中,算法往往是与时俱进,当我们想要进行具体的科研的时候,往往需要聚焦于当前发表的最新算法,而与它们进行比较并且凸显自己算法的优胜性。在这一过程中不可避免的,大量的论文阅读是必须的,一方面,大多数的工作都是基于前人的改进而完成的,而从最新工作上进行的改进往往是距离先进性能最近的。在另一方面,频繁地了解领域内的最新动向也可以帮助你抓住这一领域的发展趋势,并且增加自己对于这些领域中任务的见解。 + +首先,对于英语能力不强的同学来说,使用合理的翻译软件永远是第一位的。事实上,不擅长英语并不意味着难以阅读学术论文,虽然一时间是用翻译软件,但是并没有必要因此而焦虑,例如”**使用翻译软件是否意味着我的基础不牢,专门练习英语是否是必要的?**”。尽管人工智能领域的论文中确实经常充斥着大量的专业词汇,但是一方面专业词汇意味着其本身的定义就在论文中,获得一个中文上信达雅的翻译往往不是必须的(也很好的解释了科研领域的大家为何经常中英文混杂),而另一方面,在长期的阅读之后,至少对于某一细分领域中的常见的专业词汇,读者也会比较眼熟,从而可以慢慢摆脱翻译工具。对于翻译工具的选择,一般来说选择可以划译的软件或者插件是最为优雅的方法,将不懂的词汇或者句子复制到翻译软件中是一件麻烦的事情,而且会破坏你的workflow。同时,假如说需要更加贴合领域中的内容的翻译,选择一些更加强大的翻译工具(e.g., DeepL/ChatGPT)也是可以的,假如说对于插件的配置不太了解,在这种场景下使用复制粘贴的方法也是可以接受的。 + +接下来便是论文的内容部分,在这里有必要先了解一下人工智能领域的学术论文的格式,同时在这部分中慢慢了解重点: + +## 摘要(Abstract) + +全文的摘要,也就是全文的内容的提炼,对于常见的解决任务的论文来说,大概内容为:在XX任务中,存在XX问题,我们提出了XX,效果是XX,获得了XX性能。通常来说,摘要可以让你对于全文的内容存在一个基本的了解,但是基本上也只是存在于一些故事下的名词以及一些故事之中,在接下里的阅读之中,有必要格外关注这些名词。 + +## 引言(Introduction) + +全文的引言,也是重中之重。我们常说,当今的人工智能领域中充斥着大量的“讲故事”行为,也就是通过一种没有经过数学严格论证(但是确实可以通过实验证明性能提升或者展示某现象来进行佐证)的对于自身提出的方法为何可以work的解释,而往往阅读一篇论文,第一步就是了解其故事线。 + +- 故事线:尽管我们称之为故事,但是既然可以中稿(一般我们选择阅读已经中稿的论文,也只有这些论文的SOTA通常具有效力),证明至少审稿人已经认可了其解释的合理性,那么了解作者如何看待这个任务中的问题,已经认为如何解决,自己的方法为什么可以解决,是很重要的一部分。同时,相同领域的论文中,method的motivation也是很值得参考的一部分。 +- 一般来说,在引言的最后也会存在一次的概括,这种概括类似于摘要,总结了自己的contribution,这是很重要的理解论文的内容的途径。 +- 通过了解引言,一般来说已经可以知道了这篇论文在这个任务中解决的是什么问题,以及是通过什么方法解决的这个问题,这种方法的合理性是什么。事实上,Method部分通常是对于方法的详细说明,而并不存在有效性的证明,也就是说通常读到这一部分就可以决定这篇论文对你来说是否具有启发性了,假如说是对于论文的速读的话,甚至说这篇论文的阅读已经可以到此为止了。 +- Pipeline图:通常来说,论文的引言部分会跟随着几张插图,其中Figure 1大概率是关于论文的motivation的直观展示(为什么要使用自己提出的方法,进行可视化),而Figure 2或者Figure 3则是论文中提出的方法的Pipeline图。所谓Pipeline图,也就是把论文中提出的方法通过流程图的方式表述出来。**有一种说法说,一篇好的论文,只看文字可以读懂,而只看插图也可以读懂。**一般来说Pipeline图中的信息量是很大的,也可以对论文中使用文字描述的method产生一种直观的理解。最后,不得不说的是,在自己进行科研产出的过程中,作图一直是考验审美的一环,遇到做工精细的Pipeline图可以进行保存,将来加以借鉴。 + +## 相关工作(Related Works) + +对于绝大多数的文章,相关工作这部分的内容均是阅读营养较低的,除了以下的两种情况: + +- 读者作为该领域的初学者,不了解该领域中的发展脉络。在这种情况之下,阅读相关工作可以帮助你从当今的SOTA的角度来审视这一领域的发展脉络。 +- 作者在文章中引入了本不属于该领域常用的其他方法。人工智能领域中的不同方法,尤其是不同的下游任务之间,方法是具有泛化性的,因此引入来自其他领域的方法也就不足为奇了,假如说读者对这些方法并不了解,相应的阅读还是有必要的,一方面可以了解作者的故事线,而另一方面也可以开拓自己的思路。 + +## 方法(Method) + +方法部分,看上去是整篇论文的精华所在,但是事实上其阅读价值也是有待商榷的。 + +正如上文说到 \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..f02391e --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "devDependencies": { + "@nolebase/vitepress-plugin-enhanced-readabilities": "^2.2.0", + "markdown-it-mathjax3": "^4.3.2", + "vitepress": "^1.2.3", + "vitepress-plugin-comment-with-giscus": "^1.1.15", + "vitepress-sidebar": "^1.23.2" + }, + "scripts": { + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:preview": "vitepress preview docs" + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..3609cf5 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1910 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@nolebase/vitepress-plugin-enhanced-readabilities': + specifier: ^2.2.0 + version: 2.2.0(@algolia/client-search@4.24.0)(markdown-it-mathjax3@4.3.2)(postcss@8.4.39)(search-insights@2.14.0) + markdown-it-mathjax3: + specifier: ^4.3.2 + version: 4.3.2 + vitepress: + specifier: ^1.2.3 + version: 1.2.3(@algolia/client-search@4.24.0)(less@4.2.0)(markdown-it-mathjax3@4.3.2)(postcss@8.4.39)(search-insights@2.14.0) + vitepress-plugin-comment-with-giscus: + specifier: ^1.1.15 + version: 1.1.15(vue@3.4.31) + vitepress-sidebar: + specifier: ^1.23.2 + version: 1.23.2 + +packages: + + '@algolia/autocomplete-core@1.9.3': + resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + + '@algolia/autocomplete-plugin-algolia-insights@1.9.3': + resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-preset-algolia@1.9.3': + resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/autocomplete-shared@1.9.3': + resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/cache-browser-local-storage@4.24.0': + resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==} + + '@algolia/cache-common@4.24.0': + resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==} + + '@algolia/cache-in-memory@4.24.0': + resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} + + '@algolia/client-account@4.24.0': + resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==} + + '@algolia/client-analytics@4.24.0': + resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} + + '@algolia/client-common@4.24.0': + resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} + + '@algolia/client-personalization@4.24.0': + resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} + + '@algolia/client-search@4.24.0': + resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} + + '@algolia/logger-common@4.24.0': + resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==} + + '@algolia/logger-console@4.24.0': + resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} + + '@algolia/recommend@4.24.0': + resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} + + '@algolia/requester-browser-xhr@4.24.0': + resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} + + '@algolia/requester-common@4.24.0': + resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} + + '@algolia/requester-node-http@4.24.0': + resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} + + '@algolia/transporter@4.24.0': + resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} + + '@babel/helper-string-parser@7.24.7': + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.24.7': + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/types@7.24.7': + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} + engines: {node: '>=6.9.0'} + + '@docsearch/css@3.6.0': + resolution: {integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==} + + '@docsearch/js@3.6.0': + resolution: {integrity: sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==} + + '@docsearch/react@3.6.0': + resolution: {integrity: sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==} + 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 + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@giscus/vue@2.4.0': + resolution: {integrity: sha512-QOxKHgsMT91myyQagP2v20YYAei1ByZuc3qcaYxbHx4AwOeyVrybDIuRFwG9YDv6OraC86jYnU4Ixd37ddC/0A==} + peerDependencies: + vue: '>=3.2.0' + + '@iconify-json/carbon@1.1.36': + resolution: {integrity: sha512-NC3VcqLtwLZpi7+LeXj+99/byv+asrnCQxiDNCZV6hKr9WcNh6C25kJguJYfN+dV54kOkw78e+6PitQi2Bppnw==} + + '@iconify-json/icon-park-outline@1.1.15': + resolution: {integrity: sha512-jQbk/ETARyYPjX6HolkdjSLJHsNCfSBfYUqcUQLXYK/1tfuVnQsUdWG2IM2a7VBpxJtrK7r4n1iwPOFaZ5T46g==} + + '@iconify-json/octicon@1.1.55': + resolution: {integrity: sha512-TWVO7olfquviijdmdrEbvpjPTxBmVvU0ZoR9BBx9pIhvEsG7emefrLg7eZm1CYGYM+9StkksDbqha8HCy/6kzQ==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@lit-labs/ssr-dom-shim@1.2.0': + resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} + + '@lit/reactive-element@2.0.4': + resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} + + '@nolebase/ui@2.2.0': + resolution: {integrity: sha512-i2OITf/g/3lpwib1X8NFzJNDOZC2rgUxG0gkwo8mBV2C9pq5WHixBybrwDM54QY1n38Rpg/ZXgoH1jiVuPQewQ==} + + '@nolebase/vitepress-plugin-enhanced-readabilities@2.2.0': + resolution: {integrity: sha512-qdE+yDs4Eso5LZ44vsCO7nG0IGOxmaBhXxrbAm58/vESer/V6/sTWNv5LyrsrQ+QUbLooBEK7PQwrQ5ClKe4fA==} + + '@rollup/rollup-android-arm-eabi@4.18.0': + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.18.0': + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.18.0': + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.18.0': + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.18.0': + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.18.0': + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.18.0': + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.18.0': + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.18.0': + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.18.0': + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.18.0': + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.18.0': + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} + cpu: [x64] + os: [win32] + + '@shikijs/core@1.10.0': + resolution: {integrity: sha512-BZcr6FCmPfP6TXaekvujZcnkFmJHZ/Yglu97r/9VjzVndQA56/F4WjUKtJRQUnK59Wi7p/UTAOekMfCJv7jnYg==} + + '@shikijs/transformers@1.10.0': + resolution: {integrity: sha512-5Eu/kuJu7/CzAjFlTJkyyPoLTLSVQZ31Ps81cjIeR/3PDJ2RUuX1/R8d0qFziBKToym1LXbNiXoJQq0mg5+Cwg==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/markdown-it@14.1.1': + resolution: {integrity: sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==} + + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/web-bluetooth@0.0.20': + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + + '@vitejs/plugin-vue@5.0.5': + resolution: {integrity: sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + + '@vue/compiler-core@3.4.31': + resolution: {integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==} + + '@vue/compiler-dom@3.4.31': + resolution: {integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==} + + '@vue/compiler-sfc@3.4.31': + resolution: {integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==} + + '@vue/compiler-ssr@3.4.31': + resolution: {integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==} + + '@vue/devtools-api@7.3.5': + resolution: {integrity: sha512-BSdBBu5hOIv+gBJC9jzYMh5bC27FQwjWLSb8fVAniqlL9gvsqvK27xTgczMf+hgctlszMYQnRm3bpY/j8vhPqw==} + + '@vue/devtools-kit@7.3.5': + resolution: {integrity: sha512-wwfi10gJ1HMtjzcd8aIOnzBHlIRqsYDgcDyrKvkeyc0Gbcoe7UrkXRVHZUOtcxxoplHA0PwpT6wFg0uUCmi8Ww==} + + '@vue/devtools-shared@7.3.5': + resolution: {integrity: sha512-Rqii3VazmWTi67a86rYopi61n5Ved05EybJCwyrfoO9Ok3MaS/4yRFl706ouoISMlyrASJFEzM0/AiDA6w4f9A==} + + '@vue/reactivity@3.4.31': + resolution: {integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==} + + '@vue/runtime-core@3.4.31': + resolution: {integrity: sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==} + + '@vue/runtime-dom@3.4.31': + resolution: {integrity: sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==} + + '@vue/server-renderer@3.4.31': + resolution: {integrity: sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==} + peerDependencies: + vue: 3.4.31 + + '@vue/shared@3.4.31': + resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} + + '@vueuse/core@10.11.0': + resolution: {integrity: sha512-x3sD4Mkm7PJ+pcq3HX8PLPBadXCAlSDR/waK87dz0gQE+qJnaaFhc/dZVfJz+IUYzTMVGum2QlR7ImiJQN4s6g==} + + '@vueuse/integrations@10.11.0': + resolution: {integrity: sha512-Pp6MtWEIr+NDOccWd8j59Kpjy5YDXogXI61Kb1JxvSfVBO8NzFQkmrKmSZz47i+ZqHnIzxaT38L358yDHTncZg==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^4 + drauu: ^0.3 + focus-trap: ^7 + fuse.js: ^6 + idb-keyval: ^6 + jwt-decode: ^3 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^6 + 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 + + '@vueuse/metadata@10.11.0': + resolution: {integrity: sha512-kQX7l6l8dVWNqlqyN3ePW3KmjCQO3ZMgXuBMddIu83CmucrsBfXlH+JoviYyRBws/yLTQO8g3Pbw+bdIoVm4oQ==} + + '@vueuse/shared@10.11.0': + resolution: {integrity: sha512-fyNoIXEq3PfX1L3NkNhtVQUSRtqYwJtJg+Bp9rIzculIZWHTkKSysujrOk2J+NrRulLTQH9+3gGSfYLWSEWU1A==} + + algoliasearch@4.24.0: + resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + birpc@0.2.17: + resolution: {integrity: sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + cheerio-select@1.6.0: + resolution: {integrity: sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==} + + cheerio@1.0.0-rc.10: + resolution: {integrity: sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==} + engines: {node: '>= 6'} + + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + + commander@9.2.0: + resolution: {integrity: sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==} + engines: {node: ^12.20.0 || >=14} + + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@3.3.0: + resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} + engines: {node: '>= 4'} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escape-goat@3.0.0: + resolution: {integrity: sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==} + engines: {node: '>=10'} + + esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + + 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==} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + focus-trap@7.5.4: + resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + giscus@1.5.0: + resolution: {integrity: sha512-t3LL0qbSO3JXq3uyQeKpF5CegstGfKX/0gI6eDe1cmnI7D56R7j52yLdzw4pdKrg3VnufwCgCM3FDz7G1Qr6lg==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + htmlparser2@5.0.1: + resolution: {integrity: sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==} + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + juice@8.1.0: + resolution: {integrity: sha512-FLzurJrx5Iv1e7CfBSZH68dC04EEvXvvVvPYB7Vx1WAuhCp1ZPIMtqxc+WTWxVkpTIC2Ach/GAv0rQbtGf6YMA==} + engines: {node: '>=10.0.0'} + hasBin: true + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} + engines: {node: '>=6'} + hasBin: true + + lit-element@4.0.6: + resolution: {integrity: sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==} + + lit-html@3.1.4: + resolution: {integrity: sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==} + + lit@3.1.4: + resolution: {integrity: sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==} + + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + + markdown-it-mathjax3@4.3.2: + resolution: {integrity: sha512-TX3GW5NjmupgFtMJGRauioMbbkGsOXAAt1DZ/rzzYmTHqzkO1rNAdiMD4NiruurToPApn2kYy76x02QN26qr2w==} + + mathjax-full@3.2.2: + resolution: {integrity: sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==} + + mensch@0.3.4: + resolution: {integrity: sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==} + + mhchemparser@4.2.1: + resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + minisearch@6.3.0: + resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mj-context-menu@0.6.1: + resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: 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 + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + engines: {node: ^10 || ^12 || >=14} + + preact@10.22.1: + resolution: {integrity: sha512-jRYbDDgMpIb5LHq3hkI0bbl+l/TQ9UnkdQ0ww+lp+4MMOdqaUYdFc5qeyP+IV8FAd/2Em7drVPeKdQxsiWCf/A==} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + search-insights@2.14.0: + resolution: {integrity: sha512-OLN6MsPMCghDOqlCtsIsYgtsC0pnwVTyT9Mu6A3ewOj1DxvzZF6COrn2g86E/c05xbktB0XN04m/t1Z+n+fTGw==} + + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + shiki@1.10.0: + resolution: {integrity: sha512-YD2sXQ+TMD/F9BimV9Jn0wj35pqOvywvOG/3PB6hGHyGKlM7TJ9tyJ02jOb2kF8F0HfJwKNYrh3sW7jEcuRlXA==} + + slick@1.12.2: + resolution: {integrity: sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + speech-rule-engine@4.0.7: + resolution: {integrity: sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==} + hasBin: true + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + + superjson@2.2.1: + resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} + engines: {node: '>=16'} + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + + valid-data-url@3.0.1: + resolution: {integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==} + engines: {node: '>=10'} + + vite@5.3.2: + resolution: {integrity: sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==} + 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 + + vitepress-plugin-comment-with-giscus@1.1.15: + resolution: {integrity: sha512-1DJjgN+7SYvn5ZkjuSXPmz7nlqfcrh4qCGGviiZghA2ELXnaO2m9WY7m+RisPSaqCn90xqe0JbO2T4NMq8iUBg==} + + vitepress-sidebar@1.23.2: + resolution: {integrity: sha512-CPkWbPypC/cjPCQ2T5T3cY6LlRb6sXUHVqSdOiwKAaHebYA1OgWRS5uUxVvR7CG5JtpxeIU9RPX91p1sQHVtsQ==} + engines: {node: '>=18.0.0'} + + vitepress@1.2.3: + resolution: {integrity: sha512-GvEsrEeNLiDE1+fuwDAYJCYLNZDAna+EtnXlPajhv/MYeTjbNK6Bvyg6NoTdO1sbwuQJ0vuJR99bOlH53bo6lg==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4 + postcss: ^8 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true + + vue-demi@0.14.8: + resolution: {integrity: sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue@3.4.31: + resolution: {integrity: sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + web-resource-inliner@6.0.1: + resolution: {integrity: sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==} + engines: {node: '>=10.0.0'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + wicked-good-xpath@1.3.0: + resolution: {integrity: sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==} + + xmldom-sre@0.1.31: + resolution: {integrity: sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==} + engines: {node: '>=0.1'} + +snapshots: + + '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.14.0)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.14.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.14.0)': + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + search-insights: 2.14.0 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + '@algolia/client-search': 4.24.0 + algoliasearch: 4.24.0 + + '@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': + dependencies: + '@algolia/client-search': 4.24.0 + algoliasearch: 4.24.0 + + '@algolia/cache-browser-local-storage@4.24.0': + dependencies: + '@algolia/cache-common': 4.24.0 + + '@algolia/cache-common@4.24.0': {} + + '@algolia/cache-in-memory@4.24.0': + dependencies: + '@algolia/cache-common': 4.24.0 + + '@algolia/client-account@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-analytics@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-common@4.24.0': + dependencies: + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-personalization@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/client-search@4.24.0': + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/logger-common@4.24.0': {} + + '@algolia/logger-console@4.24.0': + dependencies: + '@algolia/logger-common': 4.24.0 + + '@algolia/recommend@4.24.0': + dependencies: + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 + + '@algolia/requester-browser-xhr@4.24.0': + dependencies: + '@algolia/requester-common': 4.24.0 + + '@algolia/requester-common@4.24.0': {} + + '@algolia/requester-node-http@4.24.0': + dependencies: + '@algolia/requester-common': 4.24.0 + + '@algolia/transporter@4.24.0': + dependencies: + '@algolia/cache-common': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + + '@babel/helper-string-parser@7.24.7': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/parser@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/types@7.24.7': + dependencies: + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@docsearch/css@3.6.0': {} + + '@docsearch/js@3.6.0(@algolia/client-search@4.24.0)(search-insights@2.14.0)': + dependencies: + '@docsearch/react': 3.6.0(@algolia/client-search@4.24.0)(search-insights@2.14.0) + preact: 10.22.1 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + + '@docsearch/react@3.6.0(@algolia/client-search@4.24.0)(search-insights@2.14.0)': + dependencies: + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.14.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) + '@docsearch/css': 3.6.0 + algoliasearch: 4.24.0 + optionalDependencies: + search-insights: 2.14.0 + transitivePeerDependencies: + - '@algolia/client-search' + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@giscus/vue@2.4.0(vue@3.4.31)': + dependencies: + giscus: 1.5.0 + vue: 3.4.31 + + '@iconify-json/carbon@1.1.36': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/icon-park-outline@1.1.15': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/octicon@1.1.55': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@lit-labs/ssr-dom-shim@1.2.0': {} + + '@lit/reactive-element@2.0.4': + dependencies: + '@lit-labs/ssr-dom-shim': 1.2.0 + + '@nolebase/ui@2.2.0(@algolia/client-search@4.24.0)(markdown-it-mathjax3@4.3.2)(postcss@8.4.39)(search-insights@2.14.0)': + dependencies: + '@iconify-json/octicon': 1.1.55 + less: 4.2.0 + vitepress: 1.2.3(@algolia/client-search@4.24.0)(less@4.2.0)(markdown-it-mathjax3@4.3.2)(postcss@8.4.39)(search-insights@2.14.0) + vue: 3.4.31 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - lightningcss + - markdown-it-mathjax3 + - nprogress + - postcss + - qrcode + - react + - react-dom + - sass + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + '@nolebase/vitepress-plugin-enhanced-readabilities@2.2.0(@algolia/client-search@4.24.0)(markdown-it-mathjax3@4.3.2)(postcss@8.4.39)(search-insights@2.14.0)': + dependencies: + '@iconify-json/carbon': 1.1.36 + '@iconify-json/icon-park-outline': 1.1.15 + '@nolebase/ui': 2.2.0(@algolia/client-search@4.24.0)(markdown-it-mathjax3@4.3.2)(postcss@8.4.39)(search-insights@2.14.0) + less: 4.2.0 + vitepress: 1.2.3(@algolia/client-search@4.24.0)(less@4.2.0)(markdown-it-mathjax3@4.3.2)(postcss@8.4.39)(search-insights@2.14.0) + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - lightningcss + - markdown-it-mathjax3 + - nprogress + - postcss + - qrcode + - react + - react-dom + - sass + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + '@rollup/rollup-android-arm-eabi@4.18.0': + optional: true + + '@rollup/rollup-android-arm64@4.18.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.18.0': + optional: true + + '@rollup/rollup-darwin-x64@4.18.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.18.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.18.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.18.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.18.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.18.0': + optional: true + + '@shikijs/core@1.10.0': {} + + '@shikijs/transformers@1.10.0': + dependencies: + shiki: 1.10.0 + + '@types/estree@1.0.5': {} + + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@14.1.1': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdurl@2.0.0': {} + + '@types/trusted-types@2.0.7': {} + + '@types/web-bluetooth@0.0.20': {} + + '@vitejs/plugin-vue@5.0.5(vite@5.3.2(less@4.2.0))(vue@3.4.31)': + dependencies: + vite: 5.3.2(less@4.2.0) + vue: 3.4.31 + + '@vue/compiler-core@3.4.31': + dependencies: + '@babel/parser': 7.24.7 + '@vue/shared': 3.4.31 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + '@vue/compiler-dom@3.4.31': + dependencies: + '@vue/compiler-core': 3.4.31 + '@vue/shared': 3.4.31 + + '@vue/compiler-sfc@3.4.31': + dependencies: + '@babel/parser': 7.24.7 + '@vue/compiler-core': 3.4.31 + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 + estree-walker: 2.0.2 + magic-string: 0.30.10 + postcss: 8.4.39 + source-map-js: 1.2.0 + + '@vue/compiler-ssr@3.4.31': + dependencies: + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.31 + + '@vue/devtools-api@7.3.5': + dependencies: + '@vue/devtools-kit': 7.3.5 + + '@vue/devtools-kit@7.3.5': + dependencies: + '@vue/devtools-shared': 7.3.5 + birpc: 0.2.17 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.1 + + '@vue/devtools-shared@7.3.5': + dependencies: + rfdc: 1.4.1 + + '@vue/reactivity@3.4.31': + dependencies: + '@vue/shared': 3.4.31 + + '@vue/runtime-core@3.4.31': + dependencies: + '@vue/reactivity': 3.4.31 + '@vue/shared': 3.4.31 + + '@vue/runtime-dom@3.4.31': + dependencies: + '@vue/reactivity': 3.4.31 + '@vue/runtime-core': 3.4.31 + '@vue/shared': 3.4.31 + csstype: 3.1.3 + + '@vue/server-renderer@3.4.31(vue@3.4.31)': + dependencies: + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 + vue: 3.4.31 + + '@vue/shared@3.4.31': {} + + '@vueuse/core@10.11.0(vue@3.4.31)': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.11.0 + '@vueuse/shared': 10.11.0(vue@3.4.31) + vue-demi: 0.14.8(vue@3.4.31) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/integrations@10.11.0(focus-trap@7.5.4)(vue@3.4.31)': + dependencies: + '@vueuse/core': 10.11.0(vue@3.4.31) + '@vueuse/shared': 10.11.0(vue@3.4.31) + vue-demi: 0.14.8(vue@3.4.31) + optionalDependencies: + focus-trap: 7.5.4 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@10.11.0': {} + + '@vueuse/shared@10.11.0(vue@3.4.31)': + dependencies: + vue-demi: 0.14.8(vue@3.4.31) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + algoliasearch@4.24.0: + dependencies: + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-account': 4.24.0 + '@algolia/client-analytics': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-personalization': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/recommend': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 + + ansi-colors@4.1.3: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + birpc@0.2.17: {} + + boolbase@1.0.0: {} + + cheerio-select@1.6.0: + dependencies: + css-select: 4.3.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + + cheerio@1.0.0-rc.10: + 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.6.3 + + commander@6.2.1: {} + + commander@9.2.0: {} + + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-what@6.1.0: {} + + csstype@3.1.3: {} + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + domelementtype@2.3.0: {} + + domhandler@3.3.0: + dependencies: + domelementtype: 2.3.0 + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + entities@2.2.0: {} + + entities@4.5.0: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + esbuild@0.21.5: + 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: {} + + esm@3.2.25: {} + + esprima@4.0.1: {} + + estree-walker@2.0.2: {} + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + focus-trap@7.5.4: + dependencies: + tabbable: 6.2.0 + + fsevents@2.3.3: + optional: true + + giscus@1.5.0: + dependencies: + lit: 3.1.4 + + graceful-fs@4.2.11: + optional: true + + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + + hookable@5.5.3: {} + + htmlparser2@5.0.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 3.3.0 + domutils: 2.8.0 + entities: 2.2.0 + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + image-size@0.5.5: + optional: true + + is-extendable@0.1.1: {} + + is-what@3.14.1: {} + + is-what@4.1.16: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + juice@8.1.0: + 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 + + kind-of@6.0.3: {} + + less@4.2.0: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.6.3 + 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 + + lit-element@4.0.6: + dependencies: + '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit/reactive-element': 2.0.4 + lit-html: 3.1.4 + + lit-html@3.1.4: + dependencies: + '@types/trusted-types': 2.0.7 + + lit@3.1.4: + dependencies: + '@lit/reactive-element': 2.0.4 + lit-element: 4.0.6 + lit-html: 3.1.4 + + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + + mark.js@8.11.1: {} + + markdown-it-mathjax3@4.3.2: + dependencies: + juice: 8.1.0 + mathjax-full: 3.2.2 + transitivePeerDependencies: + - encoding + + mathjax-full@3.2.2: + dependencies: + esm: 3.2.25 + mhchemparser: 4.2.1 + mj-context-menu: 0.6.1 + speech-rule-engine: 4.0.7 + + mensch@0.3.4: {} + + mhchemparser@4.2.1: {} + + mime@1.6.0: + optional: true + + mime@2.6.0: {} + + minisearch@6.3.0: {} + + mitt@3.0.1: {} + + mj-context-menu@0.6.1: {} + + nanoid@3.3.7: {} + + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + optional: true + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + parse-node-version@1.0.1: {} + + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + + parse5@6.0.1: {} + + perfect-debounce@1.0.0: {} + + picocolors@1.0.1: {} + + pify@4.0.1: + optional: true + + postcss@8.4.39: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + preact@10.22.1: {} + + prr@1.0.1: + optional: true + + rfdc@1.4.1: {} + + rollup@4.18.0: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 + fsevents: 2.3.3 + + safer-buffer@2.1.2: + optional: true + + sax@1.4.1: + optional: true + + search-insights@2.14.0: {} + + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + + semver@5.7.2: + optional: true + + shiki@1.10.0: + dependencies: + '@shikijs/core': 1.10.0 + + slick@1.12.2: {} + + source-map-js@1.2.0: {} + + source-map@0.6.1: + optional: true + + speakingurl@14.0.1: {} + + speech-rule-engine@4.0.7: + dependencies: + commander: 9.2.0 + wicked-good-xpath: 1.3.0 + xmldom-sre: 0.1.31 + + sprintf-js@1.0.3: {} + + strip-bom-string@1.0.0: {} + + superjson@2.2.1: + dependencies: + copy-anything: 3.0.5 + + tabbable@6.2.0: {} + + to-fast-properties@2.0.0: {} + + tr46@0.0.3: {} + + tslib@2.6.3: {} + + valid-data-url@3.0.1: {} + + vite@5.3.2(less@4.2.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.39 + rollup: 4.18.0 + optionalDependencies: + fsevents: 2.3.3 + less: 4.2.0 + + vitepress-plugin-comment-with-giscus@1.1.15(vue@3.4.31): + dependencies: + '@giscus/vue': 2.4.0(vue@3.4.31) + transitivePeerDependencies: + - vue + + vitepress-sidebar@1.23.2: + dependencies: + gray-matter: 4.0.3 + + vitepress@1.2.3(@algolia/client-search@4.24.0)(less@4.2.0)(markdown-it-mathjax3@4.3.2)(postcss@8.4.39)(search-insights@2.14.0): + dependencies: + '@docsearch/css': 3.6.0 + '@docsearch/js': 3.6.0(@algolia/client-search@4.24.0)(search-insights@2.14.0) + '@shikijs/core': 1.10.0 + '@shikijs/transformers': 1.10.0 + '@types/markdown-it': 14.1.1 + '@vitejs/plugin-vue': 5.0.5(vite@5.3.2(less@4.2.0))(vue@3.4.31) + '@vue/devtools-api': 7.3.5 + '@vue/shared': 3.4.31 + '@vueuse/core': 10.11.0(vue@3.4.31) + '@vueuse/integrations': 10.11.0(focus-trap@7.5.4)(vue@3.4.31) + focus-trap: 7.5.4 + mark.js: 8.11.1 + minisearch: 6.3.0 + shiki: 1.10.0 + vite: 5.3.2(less@4.2.0) + vue: 3.4.31 + optionalDependencies: + markdown-it-mathjax3: 4.3.2 + postcss: 8.4.39 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - react + - react-dom + - sass + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + vue-demi@0.14.8(vue@3.4.31): + dependencies: + vue: 3.4.31 + + vue@3.4.31: + dependencies: + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-sfc': 3.4.31 + '@vue/runtime-dom': 3.4.31 + '@vue/server-renderer': 3.4.31(vue@3.4.31) + '@vue/shared': 3.4.31 + + web-resource-inliner@6.0.1: + 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 + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + wicked-good-xpath@1.3.0: {} + + xmldom-sre@0.1.31: {}