commit a8c467261254793d7817045a74c58f24f54631e2 Author: xiongxiao Date: Tue Oct 7 12:38:24 2025 +0800 ijit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..96b2809 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +node_modules + +pdf + +.vitepress/cache +.vitepress/dist \ No newline at end of file diff --git a/.vitepress/config.mts b/.vitepress/config.mts new file mode 100644 index 0000000..848c198 --- /dev/null +++ b/.vitepress/config.mts @@ -0,0 +1,80 @@ +import { defineConfig } from 'vitepress' +import { dailySidebar } from './daily.mts' +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: "形容力提升训练手册", + description: "唤醒意识,理解形容的本质与障碍", + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + nav: [ + { text: '主页', link: '/' }, + // { text: '开始', link: '/preface' } + { text: '下载', link: '/pdf/book.pdf' } + ], + + sidebar: { + "/daily/": dailySidebar, + "/": [ + { text: '自序', link: '/preface' }, + { text: '自我介绍', link: '/self-introduction' }, + { + text: '第一部分 形容力的本质——你为什么“形容不出来”', + link: '/book/0-1', + items: [ + { text: '第1章:我们为什么需要“形容力”?', link: '/book/01' }, + { text: '第2章:形容力的三大障碍', link: '/book/02' }, + { text: '第3章:形容力的底层逻辑', link: '/book/03' } + ] + }, + + { + text: '第二部分 形容力的四大训练系统', + link: '/book/0-2', + items: [ + { text: '第4章:训练眼睛——如何“看见细节”?', link: '/book/04' }, + { text: '第5章:激活感官——让描述“有味道、有声音”', link: '/book/05' }, + { text: '第6章:丰富词汇——建立你的“形容词库”', link: '/book/06' }, + { text: '第7章:学会比喻——让语言“活”起来', link: '/book/07' }, + { text: '第8章:结构化表达——从碎片到完整描述', link: '/book/08' }, + { text: '第9章:情感注入——让形容“打动人”', link: '/book/09' } + ] + }, + + { + text: '第三部分 形容力的实战应用与长期提升', + link: '/book/0-3', + items: [ + { text: '第10章:在写作中应用形容力', link: '/book/10' }, + { text: '第11章:在口语中应用形容力', link: '/book/11' }, + { text: '第12章:养成形容习惯,持续进步', link: '/book/12' } + ] + }, + + { + text: '附录', + items: [ + { text: '附录A:形容词分类速查表', link: '/appendix/a', target: '_blank', rel: 'noopener' }, + { text: '附录B:经典描写句摘录50例', link: '/appendix/b', target: '_blank', rel: 'noopener' }, + { text: '附录C:30天形容力训练打卡表', link: '/appendix/c', target: '_blank', rel: 'noopener' }, + { text: '附录D:观察与描写练习题100道', link: '/appendix/d', target: '_blank', rel: 'noopener' }, + { text: '附录E:推荐阅读书单', link: '/appendix/e', target: '_blank', rel: 'noopener' } + ] + } + ], + }, + + socialLinks: [ + // { icon: 'github', link: 'https://github.com/vuejs/vitepress' }, + { icon: 'github', link: 'https://vitepress.dev/zh/reference/site-config' }, + { icon: 'gitea', link: "https://git.xiongxiao.me/abearxiong/look-good" }, + // { + // icon: { + // svg: '' + // }, + // link: 'https://vitepress.dev/zh/reference/site-config', + // // 也可以为无障碍添加一个自定义标签 (可选但推荐): + // ariaLabel: 'cool link' + // } + ] + } +}) diff --git a/.vitepress/daily.mts b/.vitepress/daily.mts new file mode 100644 index 0000000..1dc7f1b --- /dev/null +++ b/.vitepress/daily.mts @@ -0,0 +1,32 @@ +export const dailySidebar = [ + { text: '观察并描述一只水果', link: '/daily/1' }, + { text: '形容今天的天气', link: '/daily/2' }, + { text: '描写一位路人', link: '/daily/3' }, + { text: '形容一只鸟的羽毛', link: '/daily/4' }, + { text: '描写一处山的风景', link: '/daily/5' }, + { text: '形容一件衣服的质感', link: '/daily/6' }, + { text: '描述一杯饮料的味道', link: '/daily/7' }, + { text: '形容一本书的封面', link: '/daily/8' }, + { text: '描写一只动物的动作', link: '/daily/9' }, + { text: '形容一位小孩的动作', link: '/daily/10' }, + { text: '描述一双鞋子的外观', link: '/daily/11' }, + { text: '形容一位朋友的笑容', link: '/daily/12' }, + { text: '描写一处你熟悉的房间', link: '/daily/13' }, + { text: '形容一朵花的颜色和形状', link: '/daily/14' }, + { text: '描述一次交通工具的体验', link: '/daily/15' }, + { text: '形容一件小饰品', link: '/daily/16' }, + { text: '描写一段你喜欢的电影片段', link: '/daily/17' }, + { text: '形容一只宠物的性格', link: '/daily/18' }, + { text: '描述一条街道的氛围', link: '/daily/19' }, + { text: '形容一面镜子的反射感', link: '/daily/20' }, + { text: '描写一次下雨的场景', link: '/daily/21' }, + { text: '形容一件童年玩具', link: '/daily/22' }, + { text: '描述一位老师', link: '/daily/23' }, + { text: '形容一张照片的内容', link: '/daily/24' }, + { text: '描写一次旅行的感受', link: '/daily/25' }, + { text: '形容一件艺术品', link: '/daily/26' }, + { text: '描写一次野餐的场景', link: '/daily/27' }, + { text: '形容一顿美食', link: '/daily/28' }, + { text: '描写一次特别的相遇', link: '/daily/29' }, + { text: '形容一杯茶的香气', link: '/daily/30' }, +] \ No newline at end of file diff --git a/.vitepress/theme/Show.vue b/.vitepress/theme/Show.vue new file mode 100644 index 0000000..33cf267 --- /dev/null +++ b/.vitepress/theme/Show.vue @@ -0,0 +1,48 @@ + + + + + \ No newline at end of file diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts new file mode 100644 index 0000000..64a58b8 --- /dev/null +++ b/.vitepress/theme/index.ts @@ -0,0 +1,17 @@ +// https://vitepress.dev/guide/custom-theme +import { h } from 'vue' +import type { Theme } from 'vitepress' +import DefaultTheme from 'vitepress/theme' +import './style.css' +import './print.css' +export default { + extends: DefaultTheme, + Layout: () => { + return h(DefaultTheme.Layout, null, { + // https://vitepress.dev/guide/extending-default-theme#layout-slots + }) + }, + enhanceApp({ app, router, siteData }) { + // ... + } +} satisfies Theme diff --git a/.vitepress/theme/print.css b/.vitepress/theme/print.css new file mode 100644 index 0000000..f8dcd32 --- /dev/null +++ b/.vitepress/theme/print.css @@ -0,0 +1,17 @@ + + +@media print { + .VPLocalNav.has-sidebar, + .VPDocFooter { + display: none !important; + } + .VPButton.medium.brand { + display: none !important; + } + .VPNavBarHamburger.hamburger { + display: none !important; + } + .VPHome { + margin-bottom: 0px !important; + } +} \ No newline at end of file diff --git a/.vitepress/theme/style.css b/.vitepress/theme/style.css new file mode 100644 index 0000000..9a0e5ab --- /dev/null +++ b/.vitepress/theme/style.css @@ -0,0 +1,151 @@ +/** + * 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 attached 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; +} + + + +/* @media (min-width: 640px) { + + .VPHomeHero .heading .text { + max-width: 850px; + } +} */ + +.author { + text-align: right; + font-size: 14px; + margin-top: 10px; + color: var(--vp-c-text-2); + margin-bottom: 20px; +} \ No newline at end of file diff --git a/api-examples.md b/api-examples.md new file mode 100644 index 0000000..6bd8bb5 --- /dev/null +++ b/api-examples.md @@ -0,0 +1,49 @@ +--- +outline: deep +--- + +# Runtime API Examples + +This page demonstrates usage of some of the runtime APIs provided by VitePress. + +The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: + +```md + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+``` + + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+ +## More + +Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/appendix/a.md b/appendix/a.md new file mode 100644 index 0000000..e7af743 --- /dev/null +++ b/appendix/a.md @@ -0,0 +1,33 @@ +# 附录A:形容词分类速查表 + +| 分类 | 示例 | +| ---- | ---- | +| 颜色 | 红、碧绿、黝黑、雪白、金黄、湛蓝、橙黄、银白、紫罗兰、淡青、墨绿、乳白、绯红、深蓝、浅灰 | +| 气味 | 清香、腥臭、芬芳、刺鼻、淡雅、浓烈、清新、腐臭、甜腻、焦糊、泥土味、药香、油腻、烟熏、霉味 | +| 声音 | 清脆、嘹亮、低沉、沙哑、洪亮、尖锐、柔和、沉闷、悦耳、刺耳、嘈杂、细微、浑厚、空灵、哀怨 | +| 质地 | 柔软、粗糙、光滑、坚硬、细腻、松软、绵密、滑腻、干燥、湿润、蓬松、结实、脆弱、弹性、黏稠 | +| 情感 | 温暖、冷漠、激动、忧伤、愉快、愤怒、平静、焦虑、羞涩、狂喜、悲痛、满足、失落、感动、恐惧 | +| 形状 | 圆形、方形、椭圆、弯曲、笔直、扁平、尖锐、棱角分明、曲折、螺旋、锯齿、流线型、不规则、对称、细长 | +| 大小 | 巨大、微小、宽广、狭窄、庞大、细微、宏伟、矮小、宽敞、狭小、深远、浅薄、厚重、轻盈、庞然 | +| 温度 | 炽热、冰冷、温暖、寒冷、微凉、酷热、清凉、温和、灼热、凛冽、闷热、刺骨、暖洋洋、寒气袭人、热辣 | +| 速度 | 飞快、缓慢、迅速、迟缓、急促、平稳、疾驰、缓行、闪电般、龟速、疾速、慢吞吞、急剧、匆忙、悠然 | +| 数量 | 众多、稀少、无数、寥寥、满满、空空、成群、零星、密集、稀疏、单一、繁多、极少、众寡、满盈 | +| 年龄 | 年轻、年迈、年幼、苍老、青春、稚嫩、老成、幼小、成熟、衰老、童稚、壮年、老态、少壮、暮年 | +| 状态 | 健康、虚弱、疲惫、精神、亢奋、萎靡、清醒、昏沉、饱满、枯竭、活跃、呆滞、充沛、衰竭、旺盛 | +| 位置 | 靠前、居中、偏左、右侧、顶部、底部、中央、外围、角落、边缘、内部、外部、近处、远方、正中 | +| 关系 | 亲密、疏远、敌对、友好、合作、对立、依赖、独立、互助、竞争、团结、分裂、和谐、冲突、紧张 | +| 其他 | 奇特、普通、罕见、常见、独特、典型、特殊、普遍、复杂、简单、丰富、单调、精致、粗糙、完美 | +| 光线 | 明亮、昏暗、耀眼、柔和、幽暗、闪烁、微弱、刺眼、暗淡、清晰、朦胧、通透、晦涩、透明、半明半暗 | +| 天气 | 晴朗、阴沉、闷热、凉爽、潮湿、干燥、暴雨、微风、狂风、炎热、寒冷、雾蒙蒙、雷鸣、电闪、霜冻 | +| 心理 | 紧张、放松、疑惑、坚定、犹豫、专注、分心、安心、恐慌、释然、焦躁、淡定、欣慰、羞愧、满足 | +| 体貌 | 高大、矮小、瘦弱、健壮、肥胖、苗条、魁梧、清秀、俊朗、苍老、稚嫩、丰满、消瘦、敦实、挺拔 | +| 习惯 | 勤奋、懒惰、细心、粗心、守时、拖延、节俭、浪费、谨慎、冒失、果断、犹豫、谦虚、自负、随和 | +| 文化 | 传统、现代、古老、时尚、保守、开放、包容、排外、创新、守旧、独立、依赖、融合、分裂、典雅 | +| 价值 | 宝贵、廉价、昂贵、无价、稀有、常见、重要、次要、核心、边缘、优质、劣质、珍贵、普通、独一无二 | +| 伦理 | 正直、善良、邪恶、诚实、虚伪、忠诚、背叛、宽容、苛刻、仁慈、冷酷、公正、偏私、谦逊、傲慢 | +| 发展 | 快速、缓慢、稳定、波动、持续、断断续续、突飞猛进、停滞、渐进、剧烈、平稳、起伏、递增、递减、爆发 | +| 运动 | 激烈、缓慢、迅猛、平稳、剧烈、轻柔、猛烈、悠闲、快速、迟缓、灵活、笨拙、协调、僵硬、流畅 | +| 触感 | 滑腻、粗糙、柔软、坚硬、温热、冰凉、湿润、干燥、刺痛、酥麻、绵密、蓬松、油腻、清爽、扎手 | +| 视觉 | 鲜明、暗淡、模糊、清晰、耀眼、柔和、斑斓、单调、绚丽、朴素、明快、沉闷、亮丽、灰暗、缤纷 | +| 口感 | 酥脆、柔滑、黏稠、爽口、细腻、粗糙、弹牙、绵软、香甜、清淡、浓郁、油腻、干涩、滑嫩、脆弱 | +| 习性 | 活泼、安静、好动、懒散、机警、迟钝、顺从、倔强、温顺、暴躁、胆小、勇敢、谨慎、冒失、敏感 | diff --git a/appendix/b.md b/appendix/b.md new file mode 100644 index 0000000..56e7197 --- /dev/null +++ b/appendix/b.md @@ -0,0 +1,52 @@ +# 附录B:经典描写句摘录50例 + +1. 晨曦像一层轻纱,温柔地笼罩着大地。 +2. 她的笑声如银铃般清脆悦耳。 +3. 老屋的木门吱呀作响,仿佛在诉说着岁月的故事。 +4. 空气中弥漫着淡淡的桂花香。 +5. 他的目光如寒星般锐利。 +6. 雨丝如牛毛般细密,悄然洒落人间。 +7. 远山在薄雾中若隐若现,宛如水墨画。 +8. 她的眼眸清澈如湖水,倒映着蓝天白云。 +9. 微风拂过,柳枝轻轻摇曳。 +10. 夕阳染红了半边天,云霞灿烂如锦。 +11. 他的话语温暖如春风,抚慰人心。 +12. 星光点缀夜空,仿佛撒下无数钻石。 +13. 雪花在空中翩翩起舞,像精灵般轻盈。 +14. 她的长发如瀑布般垂落肩头。 +15. 老人的皱纹里藏着岁月的沧桑。 +16. 小溪潺潺流淌,发出悦耳的叮咚声。 +17. 他的背影在夕阳下被拉得很长。 +18. 春天的田野一片翠绿,生机勃勃。 +19. 她的微笑像阳光一样温暖。 +20. 夜色如墨,万籁俱寂。 +21. 雨后的空气格外清新,带着泥土的芬芳。 +22. 他的话语如利剑,直刺人心。 +23. 窗外的梧桐叶沙沙作响,像在低语。 +24. 她的皮肤白皙如玉,吹弹可破。 +25. 山间云雾缭绕,宛如仙境。 +26. 他的步伐坚定有力,充满自信。 +27. 夏日的阳光炙烤着大地。 +28. 她的眼神中闪烁着希望的光芒。 +29. 秋风扫落叶,带来一丝凉意。 +30. 他沉默如山,难以捉摸。 +31. 清晨的露珠在叶尖闪烁。 +32. 她的声音柔和如水,令人陶醉。 +33. 夜空中传来阵阵犬吠,打破寂静。 +34. 他的笑容灿烂如阳光。 +35. 冬日的寒风刺骨,让人瑟瑟发抖。 +36. 她的身影在灯光下拉得细长。 +37. 远处传来悠扬的笛声。 +38. 他的双手粗糙有力,布满老茧。 +39. 春雨滋润着大地,万物复苏。 +40. 她的泪水如断线的珍珠滑落。 +41. 夜色中,灯火点点,如繁星闪烁。 +42. 他的声音低沉有磁性。 +43. 夏夜的蝉鸣此起彼伏。 +44. 她的裙摆随风飘扬,宛如花瓣飞舞。 +45. 老树枝干虬曲,见证着岁月流转。 +46. 他的眼神深邃,仿佛藏着故事。 +47. 秋天的果实挂满枝头,沉甸甸的。 +48. 她的指尖纤细修长,灵巧灵动。 +49. 雪地上留下串串脚印,延伸向远方。 +50. 他的微笑中带着一丝忧郁。 \ No newline at end of file diff --git a/appendix/c-1.md b/appendix/c-1.md new file mode 100644 index 0000000..3be3f32 --- /dev/null +++ b/appendix/c-1.md @@ -0,0 +1,17 @@ +对当前文档的30条记录中,每一条训练内容的进行丰富一个描述场景,描述内容不具备感情色彩和感官,只是对应的常见的 内容,生成30-100字的详细描述,这是需要去生成图片的描述,需要比较细节和内容。然后根据当前的代码,生成具体的序号的 1.md ,2.md等的内容。同时标题是训练内容,text是详细的生成场景的咒语内容,img需要对应修改为序号。生成的文件夹到daily当中,比如 daily/1.md。当前的30条生成30个文本的内容。 +``` + + + +# demo标题 + + + +## 图片 + + +``` \ No newline at end of file diff --git a/appendix/c.md b/appendix/c.md new file mode 100644 index 0000000..f68b65f --- /dev/null +++ b/appendix/c.md @@ -0,0 +1,41 @@ +# 附录C:30天形容力训练打卡表 + +> 网页的链接内容只具备参考性,大概的关键咒语和生成的图形内容, 简单的自对比。 + +| 天数 | 训练内容 | +| ---- | -------- | +| [1](/daily/1) | 观察并描述一只水果 | +| [2](/daily/2) | 形容今天的天气 | +| [3](/daily/3) | 描写一位路人 | +| [4](/daily/4) | 形容一只鸟的羽毛| +| [5](/daily/5) | 描写一处山的风景 | +| [6](/daily/6) | 形容一件衣服的质感 | +| [7](/daily/7) | 描述一杯饮料的味道 | +| [8](/daily/8) | 形容一本书的封面 | +| [9](/daily/9) | 描写一只动物的动作 | +| [10](/daily/10) | 形容一位小孩的动作 | +| [11](/daily/11) | 描述一双鞋子的外观 | +| [12](/daily/12) | 形容一位朋友的笑容 | +| [13](/daily/13) | 描写一处你熟悉的房间 | +| [14](/daily/14) | 形容一朵花的颜色和形状 | +| [15](/daily/15) | 描述一次交通工具的体验 | +| [16](/daily/16) | 形容一件小饰品 | +| [17](/daily/17) | 描写一段你喜欢的电影片段 | +| [18](/daily/18) | 形容一只宠物的性格 | +| [19](/daily/19) | 描述一条街道的氛围 | +| [20](/daily/20) | 形容一面镜子的反射感 | +| [21](/daily/21) | 描写一次下雨的场景 | +| [22](/daily/22) | 形容一件童年玩具 | +| [23](/daily/23) | 描述一位老师 | +| [24](/daily/24) | 形容一张照片的内容 | +| [25](/daily/25) | 描写一次旅行的感受 | +| [26](/daily/26) | 形容一件艺术品 | +| [27](/daily/27) | 描写一次野餐的场景 | +| [28](/daily/28) | 形容一顿美食 | +| [29](/daily/29) | 描写一次特别的相遇 | +| [30](/daily/30) | 形容一杯茶的香气 | + + +总结30天收获 + +可根据实际情况调整训练内容。 diff --git a/appendix/d.md b/appendix/d.md new file mode 100644 index 0000000..06f53f0 --- /dev/null +++ b/appendix/d.md @@ -0,0 +1,102 @@ +# 附录D:观察与描写练习题100道 + +1. 描写一只猫的外貌和动作。 +2. 形容一杯热茶的气味和口感。 +3. 描写雨后的街道。 +4. 形容一位老人微笑的神情。 +5. 描写夜晚的城市灯光。 +6. 描写清晨校园的景色。 +7. 形容一棵大树在风中的姿态。 +8. 描写夏日午后的天空。 +9. 形容一只小狗的调皮动作。 +10. 描写冬天清晨的空气。 +11. 形容一位同学专注学习的神情。 +12. 描写一条小河的流水声。 +13. 形容一间教室的安静氛围。 +14. 描写一位母亲照顾孩子的情景。 +15. 形容一辆自行车飞驰而过的样子。 +16. 描写春天花开的景象。 +17. 形容一只鸟儿在枝头歌唱。 +18. 描写夜晚星空的美丽。 +19. 形容一场大雨来临前的气氛。 +20. 描写秋天落叶的情景。 +21. 形容一位老师讲课时的神态。 +22. 描写一只乌龟慢慢爬行的样子。 +23. 形容一杯冰水带来的清凉感。 +24. 描写一场足球比赛的激烈场面。 +25. 形容一只蝴蝶在花丛中飞舞。 +26. 描写一位小朋友画画时的专注。 +27. 形容一条马路上的车水马龙。 +28. 描写一只金鱼在水中游动。 +29. 形容一位朋友开心大笑的样子。 +30. 描写一间图书馆的安静与秩序。 +31. 形容一只松鼠采集松果的动作。 +32. 描写一场日出时的景象。 +33. 形容一位运动员冲刺的瞬间。 +34. 描写一只蜜蜂采蜜的过程。 +35. 形容一片草地上的露珠。 +36. 描写一位同学帮助别人的情景。 +37. 形容一只小兔子吃草的样子。 +38. 描写一场春雨的细腻。 +39. 形容一位父亲修理东西的专注。 +40. 描写一只孔雀开屏的美丽。 +41. 形容一间厨房的烟火气息。 +42. 描写一位小朋友第一次上学的心情。 +43. 形容一只小猫打盹的样子。 +44. 描写一场雪后的世界。 +45. 形容一位同学参加比赛的紧张。 +46. 描写一只青蛙在池塘边跳跃。 +47. 形容一位母亲织毛衣的动作。 +48. 描写一只小鸟学飞的情景。 +49. 形容一间卧室的温馨。 +50. 描写一位同学读书时的神情。 +51. 形容一只狗在雨中奔跑。 +52. 描写一位老人散步的步伐。 +53. 形容一只蝉在夏日鸣叫。 +54. 描写一场风暴来临时的景象。 +55. 形容一位同学写作业的认真。 +56. 描写一只小鸭子游泳的样子。 +57. 形容一间教室下课后的热闹。 +58. 描写一位同学生气时的表情。 +59. 形容一只猫咪晒太阳的惬意。 +60. 描写一场春游的快乐。 +61. 形容一位同学获奖时的喜悦。 +62. 描写一只小鸟在雨中避雨。 +63. 形容一位老师批改作业的专注。 +64. 描写一只小狗追逐球的情景。 +65. 形容一间教室晨读时的氛围。 +66. 描写一位同学参加运动会的激动。 +67. 形容一只小猫玩毛线球的样子。 +68. 描写一场秋天的丰收景象。 +69. 形容一位同学帮助老师的情景。 +70. 描写一只小鸟在天空中翱翔。 +71. 形容一位同学下雨天打伞的样子。 +72. 描写一只小狗闻花香的动作。 +73. 形容一间教室午休时的安静。 +74. 描写一位同学参加合唱的情景。 +75. 形容一只小猫喝水的样子。 +76. 描写一场夏日的暴雨。 +77. 形容一位同学做实验的专注。 +78. 描写一只小鸟在树上筑巢。 +79. 形容一位同学参加演讲的紧张。 +80. 描写一只小狗撒娇的动作。 +81. 形容一间教室放学后的安静。 +82. 描写一位同学参加绘画比赛的情景。 +83. 形容一只小猫追逐蝴蝶的样子。 +84. 描写一场冬天的雪景。 +85. 形容一位同学参加跳绳比赛的情景。 +86. 描写一只小鸟在窗台上歇息。 +87. 形容一位同学参加朗诵比赛的神情。 +88. 描写一只小狗在草地上打滚。 +89. 形容一间教室早自习的氛围。 +90. 描写一位同学参加书法比赛的情景。 +91. 形容一只小猫在沙发上打盹。 +92. 描写一场春天的细雨。 +93. 形容一位同学参加拔河比赛的情景。 +94. 描写一只小鸟在清晨歌唱。 +95. 形容一位同学参加篮球比赛的激烈。 +96. 描写一只小狗在雪地里奔跑。 +97. 形容一间教室考试时的紧张气氛。 +98. 描写一位同学参加科技展的情景。 +99. 形容一只小猫在窗边看风景。 +100. 描写一位同学毕业时的心情。 \ No newline at end of file diff --git a/appendix/e.md b/appendix/e.md new file mode 100644 index 0000000..edaf112 --- /dev/null +++ b/appendix/e.md @@ -0,0 +1,16 @@ + +# 附录E:推荐阅读书单 + +1. 《写作这回事》——史蒂芬·金 +2. 《故事》——罗伯特·麦基 +3. 《成为作家》——多萝西娅·布兰德 +4. 《如何有效阅读一本书》——奥野宣之 +5. 《文学回忆录》——木心 +6. 《如何成为一个有趣的人》——朱德庸 +7. 《如何描写情感》——安琪拉·阿克曼与贝卡·帕格利希 +8. 《活着为了讲述》——加西亚·马尔克斯 +9. 《写作风格的意识》——史蒂芬·平克 +10. 《看不见的城市》——伊塔洛·卡尔维诺 +11. 《文心》——叶圣陶 +12. 《学会提问》——尼尔·布朗、斯图尔特·基利 +13. 《如何描写情感》——安琪拉·阿克曼与贝卡·帕格利希 \ No newline at end of file diff --git a/book/0-1.md b/book/0-1.md new file mode 100644 index 0000000..ca1f268 --- /dev/null +++ b/book/0-1.md @@ -0,0 +1,21 @@ +# 第一部分:形容力的本质——你为什么“形容不出来”? + +**目标:唤醒意识,理解形容的本质与障碍** + +## 章节概述 + +本部分将带你深入理解“形容力”这一表达能力的核心。我们会探讨形容力在沟通、写作、表达中的重要作用,分析导致“形容不出来”的常见障碍,并梳理形容力背后的底层逻辑。通过理论认知和案例分析,帮助你扫清认知障碍,为后续训练打下坚实基础。 + +## 什么是形容力? + +形容力,是指在描述一个事物时,能够准确、鲜明、生动地展现其内容和特征的能力。它不仅包括对事物的介绍、展示、表达,还能美化、贬低、突出核心要点,让信息传递更清晰、更具感染力。形容力强的人,能够抓住事物的本质,用恰当的语言让听者或读者产生具体、深刻的感受。 + +形容力的提升,意味着你能更好地表达所见所感,让描述变得有画面、有温度、有力量。这是沟通、写作、演讲等多种场景下不可或缺的能力,也是个人表达力的重要组成部分。 + +## 为什么形容不出来? + +1. 观察力不足,未能捕捉事物的细节和特征; +2. 词汇量有限,缺乏合适的表达工具; +3. 缺乏联想和比喻能力,难以将抽象内容具体化; +4. 表达习惯单一,惯用简单、平淡的描述方式; +5. 缺乏练习和积累,未形成生动表达的思维模式。 \ No newline at end of file diff --git a/book/0-2.md b/book/0-2.md new file mode 100644 index 0000000..1d52e57 --- /dev/null +++ b/book/0-2.md @@ -0,0 +1,7 @@ +# 第二部分:形容力的系统训练方法 + +**目标:提供可操作的方法论与每日练习** + +## 章节概述 + +本部分将系统讲解如何通过科学训练,逐步提升你的形容力。内容涵盖观察力的培养、感官激活、词汇积累、比喻技巧、结构化表达、情感注入等多个维度。每一章不仅有理论方法,还配有针对性的练习,帮助你在实际生活和写作、口语表达中灵活运用。你将学会如何细致观察事物、调动五感丰富描述、积累并活用形容词、巧妙运用比喻让语言更生动、通过结构化表达让内容有条理,并在表达中注入真实情感,打动听众或读者。通过持续训练和复盘总结,最终养成高效的形容习惯,让你的表达能力实现质的飞跃。 \ No newline at end of file diff --git a/book/0-3.md b/book/0-3.md new file mode 100644 index 0000000..7b55458 --- /dev/null +++ b/book/0-3.md @@ -0,0 +1,9 @@ +# 第三部分:形容力的实战应用与长期提升 + +**目标:将能力迁移到真实场景,形成习惯** + +## 章节概述 + +本部分将系统讲解如何通过科学训练,逐步提升你的形容力。内容涵盖观察力的培养、感官激活、词汇积累、比喻技巧、结构化表达、情感注入等多个维度。每一章不仅有理论方法,还配有针对性的练习,帮助你在实际生活和写作、口语表达中灵活运用。你将学会如何细致观察事物、调动五感丰富描述、积累并活用形容词、巧妙运用比喻让语言更生动、通过结构化表达让内容有条理,并在表达中注入真实情感,打动听众或读者。通过持续训练和复盘总结,最终养成高效的形容习惯,让你的表达能力实现质的飞跃。 + +第三部分将聚焦于形容力在实际表达中的应用,包括写作和口语两个主要场景。你将学习如何在写作中用形容力营造氛围、刻画人物、推动情节发展,让文字更具生命力和感染力;同时掌握在日常口语交流和演讲中,运用生动具体的形容词、比喻和细节描写,使表达更有画面感和说服力。最后,还将介绍如何通过每日打卡、复盘总结和持续输入,养成形容习惯,实现表达能力的持续进步。通过理论与实践结合,你将真正把形容力转化为个人表达的核心竞争力。 diff --git a/book/01.md b/book/01.md new file mode 100644 index 0000000..f83c2c1 --- /dev/null +++ b/book/01.md @@ -0,0 +1,13 @@ +# 第1章:我们为什么需要“形容力”? + +**形容力是表达力的核心 +生活中的应用场景:写作、沟通、教学、演讲、创作 +案例对比:平淡描述 vs. 生动描述的感染力差异** + +形容力是表达力的核心,它决定了我们在各种交流场合中能否准确、生动地传达自己的思想和情感。无论是写作、沟通、教学、演讲还是创作,形容力都扮演着至关重要的角色。它不仅仅是对事物的简单描述,更是通过细致入微的刻画,让信息变得具体、鲜活,能够激发听众或读者的共鸣和想象力。 + +在日常生活中,形容力的应用场景非常广泛。例如,在写作时,拥有良好的形容力可以让文章内容更加丰富和有层次,读者能够身临其境地感受到作者想要表达的情感和氛围。在沟通交流中,形容力能够帮助我们更清楚地表达观点,减少误解,提高交流效率。对于教师来说,形容力是教学的重要工具,通过生动的语言和形象的比喻,可以让学生更容易理解抽象的知识点。在演讲和创作领域,形容力则是感染力和说服力的关键,使听众能够产生情感上的共鸣,进而接受和认同演讲者的观点。 + +案例对比可以清楚地展现形容力的作用。比如,平淡的描述往往只是简单地陈述事实,缺乏情感和细节,容易让人感到乏味。而生动的描述则能够通过具体的细节、形象的比喻和丰富的感官体验,把抽象的内容变得具体,让人产生强烈的代入感。例如,“今天的天气很好”是一种平淡的描述,而“阳光像金色的瀑布洒满大地,微风轻拂脸颊,空气中弥漫着花草的清香”则是一种生动的描述,能够让人感受到美好的氛围。 + +因此,提升形容力不仅能够增强个人的表达能力,还能在各种场合中提升沟通效果和影响力。无论是日常交流还是专业创作,形容力都是我们不可或缺的能力。通过不断练习和积累,我们可以让自己的语言更加有力,让表达变得更加精彩和有感染力。 \ No newline at end of file diff --git a/book/02.md b/book/02.md new file mode 100644 index 0000000..e71fb94 --- /dev/null +++ b/book/02.md @@ -0,0 +1,18 @@ +# 第2章:形容力的三大障碍 + +## 1. 词汇贫乏 +**很多人觉得自己不会形容,其实是因为词汇量有限,表达时总是“好、很、非常”等简单词汇,缺乏细腻的描述。** +词汇是表达的基石。缺乏丰富的词汇,往往只能用模糊、笼统的词语来表达感受,难以传递细腻的情感和具体的画面。例如,“天气很好”远不如“阳光温柔地洒在树叶上,空气中带着淡淡的花香”来得生动。词汇贫乏不仅限制了表达的深度,也让交流变得单调乏味。 + +## 2. 感官迟钝 +**形容力的基础是感知力。感官不敏锐,观察不到细节,就难以有生动的形容。** +形容力的提升离不开对世界的细致观察。许多人习惯于粗略地看待事物,忽略了色彩、声音、气味、触感等细节。只有用心体会,才能捕捉到那些微妙的变化,从而用更丰富的语言去描绘。例如,描述一杯咖啡,不只是“好喝”,而是“入口微苦,回甘悠长,带着淡淡的坚果香气”。 + +## 3. 结构混乱 +**即使有感受和词汇,表达时没有条理,容易碎片化,难以让人理解和共鸣。** +表达不仅仅是词汇的堆砌,更需要有逻辑和结构。很多人在描述时想到什么说什么,导致内容杂乱无章,难以让听众或读者抓住重点。合理的结构能帮助信息有序传递,让形容更具说服力和感染力。例如,先描述整体印象,再补充细节,最后表达感受,这样更容易让人产生共鸣。 + +--- + +**本章小结:** +形容力的障碍主要来自词汇、感官和结构三个方面。只有不断积累词汇、提升感官敏锐度,并学习有条理地表达,才能突破形容力的瓶颈。后续章节将针对性训练,逐步帮助你提升这三方面的能力,让你的表达更加生动、细腻和有感染力。 \ No newline at end of file diff --git a/book/03.md b/book/03.md new file mode 100644 index 0000000..c2692ef --- /dev/null +++ b/book/03.md @@ -0,0 +1,20 @@ +# 第3章:形容力的底层逻辑 + +形容力不仅仅是“多用形容词”,而是对世界的细致感知、精准捕捉和有序表达。真正的形容力,是将内心的感受转化为外在的语言,让听者或读者能够身临其境地感受到你所描述的画面和情绪。这种能力不仅体现在文学创作中,也贯穿于日常交流、工作汇报、甚至自我表达的方方面面。 + +## 1. 感知——发现细节 +**主动观察、用心体验,是形容力的起点。** +感知力决定了你能捕捉到多少细节。比如,观察一朵花,不仅仅是“漂亮”,而是注意到花瓣的纹理、色彩的渐变、花香的浓淡,甚至是微风拂过时的轻微颤动。只有不断训练自己的感官,才能在表达时有丰富的素材可用。 + +## 2. 词汇——精准选择 +**丰富的词汇库,能让表达更细腻、准确。** +词汇是表达的工具。不同的词汇能传递不同的情感和画面。例如,“温暖”与“炽热”虽然都描述热,但前者更柔和,后者更强烈。积累词汇不仅要记住词语本身,更要理解它们的语境和细微差别,才能在表达时做到恰如其分。 + +## 3. 结构——有序表达 +**将感受和词汇,按照逻辑结构组织起来,才能让描述有条理、有感染力。** +结构是表达的骨架。无论是长篇描述还是简短表达,都需要有清晰的层次和顺序。可以先整体描绘,再逐步细化,最后点明感受或观点。这样不仅让内容更易理解,也能增强表达的说服力和感染力。 + +--- + +**本章小结:** +形容力的提升,是感知、词汇和结构三者协同进步的过程。只有不断训练观察力、积累词汇,并学习有条理地组织语言,才能让你的表达更加生动、细腻和有力量。后续章节将结合实际方法,帮助你逐步掌握和运用这些底层逻辑,让形容力成为你的核心表达能力。 \ No newline at end of file diff --git a/book/04.md b/book/04.md new file mode 100644 index 0000000..989301f --- /dev/null +++ b/book/04.md @@ -0,0 +1,22 @@ +# 第4章:训练眼睛——如何“看见细节”? + +细致入微的观察,是提升形容力的第一步。很多人习惯于用“好看”“漂亮”等笼统词语来描述事物,实际上,真正的生动表达源于对细节的敏锐捕捉。训练自己的“观察力”,不仅能丰富表达,也能提升审美和感知能力。 + +## 1. 观察训练 +**每天选一个物品,仔细观察其颜色、形状、质地、光影等细节。** +比如,观察一只苹果,不仅仅是“红色”,而是注意到它表皮的光泽、红中带黄的渐变、微微凸起的果点,以及在阳光下投下的柔和阴影。可以尝试从不同角度、不同光线下去观察,发现更多细节。 + +## 2. 记录细节 +**用文字记录下观察到的所有细节,越具体越好。用语音描述下来。** +将观察到的内容详细写下来,比如“苹果表面有细小的斑点,靠近果柄处颜色更深,摸起来有一层细腻的蜡质感”。也可以用手机录音,把自己的描述说出来,锻炼口头表达能力。坚持记录,会发现自己的语言越来越丰富,表达越来越具体。 + +## 3. 练习对比 +**对比同类物品的不同之处,提升辨别力。** +比如,比较两只苹果的颜色、形状、气味和手感,找出它们的差异。可以扩展到生活中的其他物品,如不同品牌的笔、不同品种的花,甚至是不同天气下的天空。通过对比,能更敏锐地捕捉细微变化,提升观察和表达的深度。 + +--- + +**本章小结:** +“看见”是形容的第一步。细致的观察,是一切生动描述的基础。通过持续训练观察力、记录细节和练习对比,你会发现世界变得更加丰富多彩,表达也更加具体生动。后续章节将继续带你深入感官训练,让你的形容力不断提升。 + +练习:描述一杯咖啡/一个路人/一片落叶 \ No newline at end of file diff --git a/book/05.md b/book/05.md new file mode 100644 index 0000000..c98245f --- /dev/null +++ b/book/05.md @@ -0,0 +1,22 @@ +# 第5章:激活感官——让描述“有味道、有声音” + +在日常表达中,很多人习惯于用视觉词汇来描述事物,忽略了其他感官的参与。其实,真正生动的描写,往往是多种感官共同作用的结果。通过激活五感,可以让你的语言更具画面感和感染力,让读者仿佛身临其境。 + +## 1. 五感联动 +**描述时尝试调动视觉、听觉、嗅觉、味觉、触觉,让画面更立体。** +比如,描写一杯咖啡,不仅可以说它“颜色深褐”,还可以补充“有淡淡的坚果香气,入口微苦,余味回甘,杯壁微微温热,轻轻搅拌时发出清脆的声响”。通过五感联动,能让简单的事物变得丰富多彩。 + +## 2. 具体化练习 +**用具体的感官词汇替代抽象词,如“清脆的笑声”“温热的阳光”。** +抽象词汇容易让表达变得空泛,而具体的感官词汇则能让描述更具象。例如,“美丽的花”可以具体化为“花瓣柔软细腻,散发着淡淡的甜香,阳光下色彩斑斓”。建议平时多积累各类感官词汇,并在表达时主动替换抽象词,让语言更有质感。 + +## 3. 多维度描写 +**同一事物,从不同感官角度反复描写,丰富表达层次。** +比如,描写一场春雨,可以从视觉上写“细密的雨丝在空中织成轻纱”,从听觉上写“雨点敲打窗台,发出柔和的节奏”,从嗅觉上写“空气中弥漫着泥土和青草的清新气息”,从触觉上写“雨滴落在皮肤上,带来微凉的触感”,甚至从味觉上写“嘴角偶尔尝到一丝清甜”。通过多维度描写,不仅让表达更丰富,也能激发读者的联想和共鸣。 + +--- + +**本章小结:** +调动感官,是让形容生动、鲜活的关键。多练习感官描写,表达会更有画面感。无论是写作还是口头表达,都可以尝试从五感入手,具体化、立体化地呈现事物,让你的语言真正“有味道、有声音”,让听者或读者感受到你所描绘的世界的丰富与细腻。 + +练习:闭眼听一段声音,写下你的感受 \ No newline at end of file diff --git a/book/06.md b/book/06.md new file mode 100644 index 0000000..225f76f --- /dev/null +++ b/book/06.md @@ -0,0 +1,23 @@ +# 第6章:丰富词汇——建立你的“形容词库” + +形容词是让表达变得具体、生动的关键。很多时候,我们觉得表达单调,往往是因为词汇储备有限,无法精准地传达感受和画面。建立属于自己的“形容词库”,不仅能提升表达力,还能让你的语言更具吸引力和感染力。 + +## 1. 分类积累 +**将形容词按颜色、气味、声音、质地、情感等分类,便于记忆和调用。** +比如,颜色可以细分为“湛蓝、黛绿、绯红、乳白”,气味有“清新、辛辣、甜腻、淡雅”,声音有“低沉、清脆、沙哑、悠扬”,质地有“粗糙、细腻、柔软、坚硬”,情感有“温暖、冷漠、激动、平静”。分类积累不仅方便查找,也能帮助你在表达时快速选用最贴切的词汇。 + +## 2. 读写结合 +**多读优美描写,多写多用,词汇才能真正变成自己的。** +阅读优秀的文学作品、散文、诗歌,注意作者如何用形容词刻画细节和情感。遇到喜欢的表达,可以摘录下来,尝试在自己的写作或口头表达中模仿和运用。只有不断实践,词汇才能从“认识”变成“会用”。 + +## 3. 制作词表 +**自己动手整理常用形容词表,随时查阅和补充。** +可以用笔记本、手机备忘录或电子表格,把常用和新学的形容词按分类记录下来。每次遇到新词或有趣的表达,都及时补充。定期复习和更新,让你的词汇库不断扩展,表达也会越来越丰富。 + +--- + +**本章小结:** +词汇是形容力的“弹药库”。积累和运用并重,才能让表达更丰富。通过分类积累、读写结合和制作词表,你会发现自己的表达能力不断提升,语言也变得更加细腻和有层次。 + + +工具:[个人“形容本”模板](/appendix/a) \ No newline at end of file diff --git a/book/07.md b/book/07.md new file mode 100644 index 0000000..f9bba38 --- /dev/null +++ b/book/07.md @@ -0,0 +1,22 @@ +# 第7章:学会比喻——让语言“活”起来 + +比喻是一种将抽象或陌生的事物,通过熟悉的形象来表达的方法。它不仅能让语言更生动,还能帮助读者迅速理解和感受你的描述。恰当的比喻,能让表达充满画面感和情感张力,使文字仿佛有了生命。 + +## 1. 常见比喻手法 +**如明喻、暗喻、拟人等,能让描述更有画面和情感。** +明喻是用“像”“如同”等词直接进行比较,如“她的笑容像春天的阳光”;暗喻则不出现比较词,直接把事物当作另一事物,如“时间是流淌的河”;拟人则赋予事物人的动作或情感,如“风在耳边低语”。这些手法能让抽象的感受变得具体,让表达更具感染力。 + +## 2. 练习造句 +**尝试用比喻造句,把抽象的感受变成具体的画面。** +比如,把“紧张”比喻为“心跳像小鹿在草丛中乱撞”;把“安静”比喻为“夜晚的湖面,平静得像一面镜子”。可以每天练习用比喻表达自己的心情、观察到的事物或场景,逐步提升比喻的运用能力。 + +## 3. 借鉴经典 +**多读名家比喻句,模仿其表达方式。** +阅读文学作品、诗歌、散文时,注意作者如何巧妙地使用比喻。例如,朱自清的《春》中“像刚落地的娃娃,从头到脚都是新的”,或冰心的“夜色像一层轻纱,悄悄地笼罩着大地”。摘录喜欢的比喻句,分析其结构和表达效果,并尝试在自己的写作中模仿和创新。 + +--- + +**本章小结:** +比喻是形容力的“魔法棒”。善用比喻,能让语言更具感染力和表现力。通过学习常见手法、练习造句和借鉴经典,你会发现自己的表达变得更加生动、形象,让读者在你的文字中感受到丰富的画面和情感。 + +练习:给“孤独”“压力”“快乐”找三个比喻 \ No newline at end of file diff --git a/book/08.md b/book/08.md new file mode 100644 index 0000000..48e84e8 --- /dev/null +++ b/book/08.md @@ -0,0 +1,22 @@ +# 第8章:结构化表达——从碎片到完整描述 + +结构化表达是让你的描述从零散、杂乱变得有条理和有层次的关键。很多人在表达时,想到什么说什么,导致内容碎片化,难以让人抓住重点。通过合理的结构安排,可以让信息有序传递,让读者更容易理解和产生共鸣。 + +## 1. 描写顺序 +**可按空间、时间、感官顺序组织内容,让表达有条理。** +空间顺序适合描写场景,如从远到近、从上到下;时间顺序适合叙述事件发展,如早晨到夜晚;感官顺序则可以依次调动视觉、听觉、嗅觉等,让描写更丰富。选择合适的顺序,有助于让读者跟随你的思路,逐步进入描写的世界。 + +## 2. 层层递进 +**从整体到局部、从外到内,逐步展开细节。** +先给出整体印象,再补充细节,让表达更有层次。例如,先描述一个房间的整体氛围,再细致描写墙上的画、窗外的风景、桌上的物品。层层递进能让读者逐步深入,感受到描写的丰富和细腻。 + +## 3. 模板训练 +**尝试用“总-分-总”结构写一段描写。** +“总-分-总”结构即先概括整体,再分述细节,最后总结感受。例如:“这座花园充满生机(总)。花坛里盛开着五彩缤纷的花朵,空气中弥漫着淡淡的花香,小径两旁绿草如茵(分)。置身其中,仿佛进入了一个童话世界(总)。”通过模板训练,可以快速提升表达的条理性和完整性。 + +--- + +**本章小结:** +结构化表达,让形容不再杂乱无章,而是有序、易懂。掌握描写顺序、层层递进和结构模板,你的语言会更加清晰、有力,读者也能更好地理解和感受你的表达。 + +练习:用300字描写“一个清晨的菜市场” \ No newline at end of file diff --git a/book/09.md b/book/09.md new file mode 100644 index 0000000..fa4af81 --- /dev/null +++ b/book/09.md @@ -0,0 +1,22 @@ +# 第9章:情感注入——让形容“打动人” + +在表达中,情感是让文字有温度、有力量的核心。很多时候,真正打动人心的不是华丽的辞藻,而是那些源自真实体验的细腻情感。只有将自己的感受融入描述,才能让读者产生共鸣,感受到你的真诚和温度。 + +## 1. 真实体验 +**用自己的真实感受去描写,避免空洞和套路。** +表达时,不要害怕暴露自己的情绪,无论是喜悦、悲伤、激动还是失落,都可以成为生动的素材。比如,描述一次分别,不只是说“很难过”,而是写出“离别时心里像被什么揪着,眼眶不自觉地湿润”。真实的体验能让文字更有感染力。 + +## 2. 情感词汇 +**恰当使用表达情绪的词,让读者共鸣。** +积累并善用情感词汇,如“温暖、感动、愤怒、欣慰、焦虑”等,可以让情感表达更丰富。注意根据场景和氛围选择最贴切的词语,避免滥用或夸张,让情感自然流露。 + +## 3. 细节承载情感 +**通过细节描写传递情感,而非直接说“我很感动”。** +细节是情感的载体。比如,描述感动时,可以写“听到那句话,手指不由自主地攥紧了衣角,心里泛起一阵暖流”,而不是简单地说“我很感动”。通过动作、表情、环境等细节,让情感在读者心中慢慢浮现。 + +--- + +**本章小结:** +情感是形容的灵魂。用心体会、用细节表达,才能打动人心。只有将真实体验和细腻情感融入文字,才能让你的表达真正触动读者的内心,让语言变得有温度、有力量。 + +练习:用“悲伤”“惊喜”“怀念”语气描述一个旧物 \ No newline at end of file diff --git a/book/10.md b/book/10.md new file mode 100644 index 0000000..b05ab7d --- /dev/null +++ b/book/10.md @@ -0,0 +1,18 @@ +# 第10章:在写作中应用形容力 + +## 1. 场景描写 +**用形容力营造氛围,让读者身临其境。** +场景描写不仅仅是简单地交代环境,更是通过细腻的形容词和感官词汇,让读者仿佛置身其中。比如,描写一个清晨,可以写“晨雾轻轻地笼罩着田野,阳光透过薄雾洒下温柔的光线,空气中弥漫着青草的清香”。通过调动视觉、听觉、嗅觉等多种感官,场景变得立体而生动。 + +## 2. 人物刻画 +**通过细致描写人物外貌、动作、心理,塑造鲜明形象。** +人物的形象不仅靠外貌,更要通过动作和心理活动来丰富。例如,“她的眼神里闪烁着坚定的光芒,手指微微颤抖,却始终没有退缩”。细致的形容可以让人物更加真实、有层次,读者也更容易产生情感共鸣。 + +## 3. 情节推进 +**用生动的形容推动故事发展,增强故事张力。** +在故事发展过程中,形容力可以让情节更具张力和吸引力。比如,描述冲突时,不只是“他们吵架了”,而是“他的声音像雷鸣般炸响,屋内的空气仿佛凝固,彼此的目光交锋中带着火花”。通过生动的细节和感官描写,故事的紧张感和节奏感被有效提升,读者也更容易被情节牵引。 + +--- + +**本章小结:** +写作中,形容力让文字更有生命力和感染力。无论是场景、人物还是情节,细腻而生动的形容都能让故事更加丰富和动人,让读者沉浸在你的文字世界中。 \ No newline at end of file diff --git a/book/11.md b/book/11.md new file mode 100644 index 0000000..13db662 --- /dev/null +++ b/book/11.md @@ -0,0 +1,20 @@ +# 第11章:在口语中应用形容力 + +口语表达是我们日常交流最常用的方式,形容力不仅能让你的话语更有吸引力,还能帮助你更好地传递情感和信息。无论是与家人朋友的闲聊,还是在工作场合的沟通,生动具体的表达都能让你的观点更容易被理解和接受。 + +## 1. 生活表达 +**日常交流中,尝试用具体、生动的形容词替代“好、很、棒”。** +比如,描述一道菜时,不只是说“很好吃”,而是说“这道菜香气扑鼻,口感细腻,入口后有淡淡的甜味”。在表达天气时,可以说“今天的阳光温暖,微风轻拂,让人心情愉快”。通过具体的形容词和感官词汇,让日常对话更有画面感和感染力。 + +## 2. 演讲表达 +**演讲时用形象的比喻和细节,让听众产生画面感。** +在演讲或汇报中,适当加入比喻和细节描写,可以让内容更生动。例如,“我们的团队像一艘在风浪中前行的船,每个人都在奋力划桨”,或“这个项目就像春天的种子,正在慢慢发芽”。细腻的形容能帮助听众更好地理解你的观点,增强演讲的说服力。 + +## 3. 互动练习 +**和朋友互相描述同一事物,比较表达的丰富度。** +可以选择一个物品或场景,轮流用不同的方式进行描述,看看谁的表达更具体、更有感染力。通过互动练习,不仅能发现自己的表达习惯,还能学习他人的表达技巧,逐步提升口语中的形容力。 + +--- + +**本章小结:** +口语表达同样需要形容力。多练习具体、生动的描述,无论在生活还是工作中,你的表达都会更有魅力、更具影响力,让交流变得更加有趣和高效。 \ No newline at end of file diff --git a/book/12.md b/book/12.md new file mode 100644 index 0000000..0238626 --- /dev/null +++ b/book/12.md @@ -0,0 +1,18 @@ +# 第12章:养成形容习惯,持续进步 + +## 1. 每日打卡 +**每天坚持做形容训练,记录进步。** +可以设定每天的形容目标,比如用五个不同的形容词描写身边的事物,或用多感官词汇描述当天的一个场景。坚持打卡,不仅能积累素材,还能让表达能力逐步提升。建议用笔记本或手机记录每日训练内容,定期回顾自己的成长轨迹。 + +## 2. 复盘总结 +**定期回顾自己的描写,发现不足并改进。** +每隔一段时间,可以把之前的描写拿出来重新审视,看看哪些地方可以更具体、更生动。对比不同阶段的表达,发现自己的进步和不足。可以请朋友或老师帮忙点评,获得外部反馈,帮助自己不断完善表达方式。 + +## 3. 持续输入 +**多读优美描写,持续积累灵感和词汇。** +阅读优秀的文学作品、散文、诗歌,关注作者如何用形容词和比喻刻画细节和情感。遇到喜欢的表达方式,可以摘录下来,尝试模仿和创新。不断扩充自己的词汇库和表达技巧,让灵感源源不断地涌现。还可以关注影视、音乐等多种艺术形式,丰富自己的感官体验和表达素材。 + +--- + +**本章小结:** +形容力的提升是长期过程。坚持训练,持续复盘和输入,必有收获。只要养成习惯,表达会越来越生动细腻,让你的语言真正具备感染力和表现力。 \ No newline at end of file diff --git a/book/supply.md b/book/supply.md new file mode 100644 index 0000000..e69de29 diff --git a/daily/0.md b/daily/0.md new file mode 100644 index 0000000..2f5d3f0 --- /dev/null +++ b/daily/0.md @@ -0,0 +1,14 @@ + + + +# demo标题 + + + +## 图片 + + \ No newline at end of file diff --git a/daily/1.md b/daily/1.md new file mode 100644 index 0000000..af6d34a --- /dev/null +++ b/daily/1.md @@ -0,0 +1,13 @@ + + +# 观察并描述一只水果 + + + +## 图片 + + diff --git a/daily/10.md b/daily/10.md new file mode 100644 index 0000000..1ace885 --- /dev/null +++ b/daily/10.md @@ -0,0 +1,13 @@ + + +# 形容一位小孩的动作 + + + +## 图片 + + diff --git a/daily/11.md b/daily/11.md new file mode 100644 index 0000000..382553a --- /dev/null +++ b/daily/11.md @@ -0,0 +1,13 @@ + + +# 描述一双鞋子的外观 + + + +## 图片 + + diff --git a/daily/12.md b/daily/12.md new file mode 100644 index 0000000..08be75d --- /dev/null +++ b/daily/12.md @@ -0,0 +1,13 @@ + + +# 形容一位朋友的笑容 + + + +## 图片 + + diff --git a/daily/13.md b/daily/13.md new file mode 100644 index 0000000..f3849c4 --- /dev/null +++ b/daily/13.md @@ -0,0 +1,13 @@ + + +# 描写一处你熟悉的房间 + + + +## 图片 + + diff --git a/daily/14.md b/daily/14.md new file mode 100644 index 0000000..c0de987 --- /dev/null +++ b/daily/14.md @@ -0,0 +1,13 @@ + + +# 形容一朵花的颜色和形状 + + + +## 图片 + + diff --git a/daily/15.md b/daily/15.md new file mode 100644 index 0000000..56fc3eb --- /dev/null +++ b/daily/15.md @@ -0,0 +1,13 @@ + + +# 描述一次交通工具的体验 + + + +## 图片 + + diff --git a/daily/16.md b/daily/16.md new file mode 100644 index 0000000..99c14df --- /dev/null +++ b/daily/16.md @@ -0,0 +1,13 @@ + + +# 形容一件小饰品 + + + +## 图片 + + diff --git a/daily/17.md b/daily/17.md new file mode 100644 index 0000000..543460e --- /dev/null +++ b/daily/17.md @@ -0,0 +1,13 @@ + + +# 描写一段你喜欢的电影片段 + + + +## 图片 + + diff --git a/daily/18.md b/daily/18.md new file mode 100644 index 0000000..f1ab551 --- /dev/null +++ b/daily/18.md @@ -0,0 +1,13 @@ + + +# 形容一只宠物的性格 + + + +## 图片 + + diff --git a/daily/19.md b/daily/19.md new file mode 100644 index 0000000..0d76720 --- /dev/null +++ b/daily/19.md @@ -0,0 +1,13 @@ + + +# 描述一条街道的氛围 + + + +## 图片 + + diff --git a/daily/2.md b/daily/2.md new file mode 100644 index 0000000..8f57556 --- /dev/null +++ b/daily/2.md @@ -0,0 +1,13 @@ + + +# 形容今天的天气 + + + +## 图片 + + diff --git a/daily/20.md b/daily/20.md new file mode 100644 index 0000000..68c5a8e --- /dev/null +++ b/daily/20.md @@ -0,0 +1,13 @@ + + +# 形容一面镜子的反射感 + + + +## 图片 + + diff --git a/daily/21.md b/daily/21.md new file mode 100644 index 0000000..72d176d --- /dev/null +++ b/daily/21.md @@ -0,0 +1,13 @@ + + +# 描写一次下雨的场景 + + + +## 图片 + + diff --git a/daily/22.md b/daily/22.md new file mode 100644 index 0000000..b0bb67d --- /dev/null +++ b/daily/22.md @@ -0,0 +1,13 @@ + + +# 形容一件童年玩具 + + + +## 图片 + + diff --git a/daily/23.md b/daily/23.md new file mode 100644 index 0000000..9dcd051 --- /dev/null +++ b/daily/23.md @@ -0,0 +1,13 @@ + + +# 描述一位老师 + + + +## 图片 + + diff --git a/daily/24.md b/daily/24.md new file mode 100644 index 0000000..7e05ecd --- /dev/null +++ b/daily/24.md @@ -0,0 +1,13 @@ + + +# 形容一张照片的内容 + + + +## 图片 + + diff --git a/daily/25.md b/daily/25.md new file mode 100644 index 0000000..1d02fee --- /dev/null +++ b/daily/25.md @@ -0,0 +1,13 @@ + + +# 描写一次旅行的感受 + + + +## 图片 + + diff --git a/daily/26.md b/daily/26.md new file mode 100644 index 0000000..a64eae1 --- /dev/null +++ b/daily/26.md @@ -0,0 +1,13 @@ + + +# 形容一件艺术品 + + + +## 图片 + + diff --git a/daily/27.md b/daily/27.md new file mode 100644 index 0000000..7031eab --- /dev/null +++ b/daily/27.md @@ -0,0 +1,13 @@ + + +# 描写一次野餐的场景 + + + +## 图片 + + diff --git a/daily/28.md b/daily/28.md new file mode 100644 index 0000000..0082008 --- /dev/null +++ b/daily/28.md @@ -0,0 +1,13 @@ + + +# 形容一顿美食 + + + +## 图片 + + diff --git a/daily/29.md b/daily/29.md new file mode 100644 index 0000000..7531ee9 --- /dev/null +++ b/daily/29.md @@ -0,0 +1,13 @@ + + +# 描写一次特别的相遇 + + + +## 图片 + + diff --git a/daily/3.md b/daily/3.md new file mode 100644 index 0000000..9d7d0cd --- /dev/null +++ b/daily/3.md @@ -0,0 +1,13 @@ + + +# 描写一位路人 + + + +## 图片 + + diff --git a/daily/30.md b/daily/30.md new file mode 100644 index 0000000..f6e12a2 --- /dev/null +++ b/daily/30.md @@ -0,0 +1,13 @@ + + +# 形容一杯茶的香气 + + + +## 图片 + + diff --git a/daily/4.md b/daily/4.md new file mode 100644 index 0000000..f9c0929 --- /dev/null +++ b/daily/4.md @@ -0,0 +1,13 @@ + + +# 形容一只鸟的羽毛 + + + +## 图片 + + diff --git a/daily/5.md b/daily/5.md new file mode 100644 index 0000000..6d4eb73 --- /dev/null +++ b/daily/5.md @@ -0,0 +1,13 @@ + + +# 描写一处山的风景 + + + +## 图片 + + diff --git a/daily/6.md b/daily/6.md new file mode 100644 index 0000000..9da4349 --- /dev/null +++ b/daily/6.md @@ -0,0 +1,13 @@ + + +# 形容一件衣服的质感 + + + +## 图片 + + diff --git a/daily/7.md b/daily/7.md new file mode 100644 index 0000000..1d05f33 --- /dev/null +++ b/daily/7.md @@ -0,0 +1,13 @@ + + +# 描述一杯饮料的味道 + + + +## 图片 + + diff --git a/daily/8.md b/daily/8.md new file mode 100644 index 0000000..da37209 --- /dev/null +++ b/daily/8.md @@ -0,0 +1,13 @@ + + +# 形容一本书的封面 + + + +## 图片 + + diff --git a/daily/9.md b/daily/9.md new file mode 100644 index 0000000..39b0739 --- /dev/null +++ b/daily/9.md @@ -0,0 +1,13 @@ + + +# 描写一只动物的动作 + + + +## 图片 + + diff --git a/index.md b/index.md new file mode 100644 index 0000000..5195f30 --- /dev/null +++ b/index.md @@ -0,0 +1,30 @@ +--- + +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "形容力提升训练手册" + text: "唤醒意识,理解形容的本质与障碍" + tagline: "发现形容的力量,提升表达的艺术" + actions: + - theme: brand + text: 开始阅读 + link: /preface + # 你可以添加更多按钮 + + +features: + - title: 说不清 + details: 明明有感觉,却总是表达不出来?帮你梳理思路,找到合适的形容词,让表达更准确。 + - title: 说不好 + details: 词不达意、描述平淡?教你用丰富的修辞和联想,让语言更生动有感染力。 + - title: 不会联想 + details: 缺乏联想,表达单一?训练你的联想力,激发更多表达灵感,让描述更有层次和画面感。 + +author: 小熊猫呜呜呜 +--- + +
+作者: 小熊猫呜呜呜 +
\ No newline at end of file diff --git a/mindmap.json b/mindmap.json new file mode 100644 index 0000000..7dd2693 --- /dev/null +++ b/mindmap.json @@ -0,0 +1,49 @@ +{ + "name": "形容力提升训练手册", + "children": [ + { + "name": "自序", + "link": "/preface" + }, + { + "name": "第一部分 形容力的本质——你为什么“形容不出来”", + "link": "/book/0-1", + "children": [ + { "name": "第1章:我们为什么需要“形容力”?", "link": "/book/01" }, + { "name": "第2章:形容力的三大障碍", "link": "/book/02" }, + { "name": "第3章:形容力的底层逻辑", "link": "/book/03" } + ] + }, + { + "name": "第二部分 形容力的四大训练系统", + "link": "/book/0-2", + "children": [ + { "name": "第4章:训练眼睛——如何“看见细节”?", "link": "/book/04" }, + { "name": "第5章:激活感官——让描述“有味道、有声音”", "link": "/book/05" }, + { "name": "第6章:丰富词汇——建立你的“形容词库”", "link": "/book/06" }, + { "name": "第7章:学会比喻——让语言“活”起来", "link": "/book/07" }, + { "name": "第8章:结构化表达——从碎片到完整描述", "link": "/book/08" }, + { "name": "第9章:情感注入——让形容“打动人”", "link": "/book/09" } + ] + }, + { + "name": "第三部分 形容力的实战应用与长期提升", + "link": "/book/0-3", + "children": [ + { "name": "第10章:在写作中应用形容力", "link": "/book/10" }, + { "name": "第11章:在口语中应用形容力", "link": "/book/11" }, + { "name": "第12章:养成形容习惯,持续进步", "link": "/book/12" } + ] + }, + { + "name": "附录", + "children": [ + { "name": "附录A:形容词分类速查表", "link": "/appendix/a" }, + { "name": "附录B:经典描写句摘录50例", "link": "/appendix/b" }, + { "name": "附录C:30天形容力训练打卡表", "link": "/appendix/c" }, + { "name": "附录D:观察与描写练习题100道", "link": "/appendix/d" }, + { "name": "附录E:推荐阅读书单", "link": "/appendix/e" } + ] + } + ] +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..4c31a6d --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "scripts": { + "docs:dev": "vitepress dev", + "docs:build": "vitepress build", + "docs:preview": "vitepress preview", + "dev": "pnpm docs:dev", + "pub": "rsync -av --delete .vitepress/dist/ light:/var/www/book/look-good", + "copy": "bun scripts/copy.ts", + "build": "pnpm docs:build", + "book": "bun scripts/export-pdf.ts && pnpm copy" + }, + "devDependencies": { + "pdf-lib": "^1.17.1", + "puppeteer": "^24.23.0", + "sharp": "^0.34.4", + "vitepress": "^1.6.4" + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..d46b0b8 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,2697 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + pdf-lib: + specifier: ^1.17.1 + version: 1.17.1 + puppeteer: + specifier: ^24.23.0 + version: 24.23.0 + sharp: + specifier: ^0.34.4 + version: 0.34.4 + vitepress: + specifier: ^1.6.4 + version: 1.6.4(@algolia/client-search@5.39.0)(@types/node@24.7.0)(postcss@8.5.6)(search-insights@2.17.3) + +packages: + + '@algolia/abtesting@1.5.0': + resolution: {integrity: sha512-W/ohRkbKQsqDWALJg28X15KF7Tcyg53L1MfdOkLgvkcCcofdzGHSimHHeNG05ojjFw9HK8+VPhe/Vwq4MozIJg==} + engines: {node: '>= 14.0.0'} + + '@algolia/autocomplete-core@1.17.7': + resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} + + '@algolia/autocomplete-plugin-algolia-insights@1.17.7': + resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==} + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-preset-algolia@1.17.7': + resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/autocomplete-shared@1.17.7': + resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/client-abtesting@5.39.0': + resolution: {integrity: sha512-Vf0ZVe+qo3sHDrCinouJqlg8VoxM4Qo/KxNIqMYybkuctutfnp3kIY9OmESplOQ/9NGBthU9EG+4d5fBibWK/A==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-analytics@5.39.0': + resolution: {integrity: sha512-V16ITZxYIwcv1arNce65JZmn94Ft6vKlBZ//gXw8AvIH32glJz1KcbaVAUr9p7PYlGZ/XVHP6LxDgrpNdtwgcA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-common@5.39.0': + resolution: {integrity: sha512-UCJTuwySEQeiKPWV3wruhuI/wHbDYenHzgL9pYsvh6r/u5Z+g61ip1iwdAlFp02CnywzI9O7+AQPh2ManYyHmQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-insights@5.39.0': + resolution: {integrity: sha512-s0ia8M/ZZR+iO2uLNTBrlQdEb6ZMAMcKMHckp5mcoglxrf8gHifL4LmdhGKdAxAn3UIagtqIP0RCnIymHUbm7A==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-personalization@5.39.0': + resolution: {integrity: sha512-vZPIt7Lw+toNsHZUiPhNIc1Z3vUjDp7nzn6AMOaPC73gEuTq2iLPNvM06CSB6aHePo5eMeJIP5YEKBUQUA/PJA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-query-suggestions@5.39.0': + resolution: {integrity: sha512-jcPQr3iKTWNVli2NYHPv02aNLwixDjPCpOgMp9CZTvEiPI6Ec4jHX+oFr3LDZagOFY9e1xJhc/JrgMGGW1sHnw==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-search@5.39.0': + resolution: {integrity: sha512-/IYpF10BpthGZEJQZMhMqV4AqWr5avcWfZm/SIKK1RvUDmzGqLoW/+xeJVX9C8ZnNkIC8hivbIQFaNaRw0BFZQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/ingestion@1.39.0': + resolution: {integrity: sha512-IgSHKUiuecqLfBlXiuCSdRTdsO3/yvpmXrMFz8fAJ8M4QmDtHkOuD769dmybRYqsbYMHivw+lir4BgbRGMtOIQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/monitoring@1.39.0': + resolution: {integrity: sha512-8Xnd4+609SKC/hqVsuFc4evFBmvA2765/4NcH+Dpr756SKPbL1BY0X8kVxlmM3YBLNqnduSQxHxpDJUK58imCA==} + engines: {node: '>= 14.0.0'} + + '@algolia/recommend@5.39.0': + resolution: {integrity: sha512-D7Ye2Ss/5xqUkQUxKm/VqEJLt5kARd9IMmjdzlxaKhGgNlOemTay0lwBmOVFuJRp7UODjp5c9+K+B8g0ORObIw==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-browser-xhr@5.39.0': + resolution: {integrity: sha512-mgPte1ZJqpk9dkVs44J3wKAbHATvHZNlSpzhMdjMLIg/3qTycSZyDiomLiSlxE8CLsxyBAOJWnyKRHfom+Z1rg==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-fetch@5.39.0': + resolution: {integrity: sha512-LIrCkrxu1WnO3ev1+w6NnZ12JZL/o+2H9w6oWnZAjQZIlA/Ym6M9QHkt+OQ/SwkuoiNkW3DAo+Pi4A2V9FPtqg==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-node-http@5.39.0': + resolution: {integrity: sha512-6beG+egPwXmvhAg+m0STCj+ZssDcjrLzf4L05aKm2nGglMXSSPz0cH/rM+kVD9krNfldiMctURd4wjojW1fV0w==} + engines: {node: '>= 14.0.0'} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + + '@docsearch/css@3.8.2': + resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==} + + '@docsearch/js@3.8.2': + resolution: {integrity: sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==} + + '@docsearch/react@3.8.2': + 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 + + '@emnapi/runtime@1.5.0': + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + + '@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] + + '@iconify-json/simple-icons@1.2.54': + resolution: {integrity: sha512-OQQYl8yC5j3QklZOYnK31QYe5h47IhyCoxSLd53f0e0nA4dgi8VOZS30SgSAbsecQ+S0xlGJMjXIHTIqZ+ML3w==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.4': + resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.4': + resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.3': + resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.3': + resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.3': + resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.2.3': + resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.2.3': + resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.3': + resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.2.3': + resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.2.3': + resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.34.4': + resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.34.4': + resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.34.4': + resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.4': + resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.34.4': + resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.4': + resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.4': + resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.4': + resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.4': + resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.4': + resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.4': + resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@pdf-lib/standard-fonts@1.0.0': + resolution: {integrity: sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==} + + '@pdf-lib/upng@1.0.1': + resolution: {integrity: sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==} + + '@puppeteer/browsers@2.10.10': + resolution: {integrity: sha512-3ZG500+ZeLql8rE0hjfhkycJjDj0pI/btEh3L9IkWUYcOrgP0xCNRq3HbtbqOPbvDhFaAWD88pDFtlLv8ns8gA==} + engines: {node: '>=18'} + hasBin: true + + '@rollup/rollup-android-arm-eabi@4.52.4': + resolution: {integrity: sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.52.4': + resolution: {integrity: sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.52.4': + resolution: {integrity: sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.52.4': + resolution: {integrity: sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.52.4': + resolution: {integrity: sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.52.4': + resolution: {integrity: sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.52.4': + resolution: {integrity: sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.52.4': + resolution: {integrity: sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.52.4': + resolution: {integrity: sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.52.4': + resolution: {integrity: sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.52.4': + resolution: {integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.52.4': + resolution: {integrity: sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.52.4': + resolution: {integrity: sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.52.4': + resolution: {integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.52.4': + resolution: {integrity: sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.52.4': + resolution: {integrity: sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.52.4': + resolution: {integrity: sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openharmony-arm64@4.52.4': + resolution: {integrity: sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.52.4': + resolution: {integrity: sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.52.4': + resolution: {integrity: sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.52.4': + resolution: {integrity: sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.52.4': + resolution: {integrity: sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==} + cpu: [x64] + os: [win32] + + '@shikijs/core@2.5.0': + resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} + + '@shikijs/engine-javascript@2.5.0': + resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==} + + '@shikijs/engine-oniguruma@2.5.0': + resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==} + + '@shikijs/langs@2.5.0': + resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==} + + '@shikijs/themes@2.5.0': + resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==} + + '@shikijs/transformers@2.5.0': + resolution: {integrity: sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==} + + '@shikijs/types@2.5.0': + resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + + '@types/node@24.7.0': + resolution: {integrity: sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vitejs/plugin-vue@5.2.4': + 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 + + '@vue/compiler-core@3.5.22': + resolution: {integrity: sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==} + + '@vue/compiler-dom@3.5.22': + resolution: {integrity: sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==} + + '@vue/compiler-sfc@3.5.22': + resolution: {integrity: sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==} + + '@vue/compiler-ssr@3.5.22': + resolution: {integrity: sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==} + + '@vue/devtools-api@7.7.7': + resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==} + + '@vue/devtools-kit@7.7.7': + resolution: {integrity: sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==} + + '@vue/devtools-shared@7.7.7': + resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==} + + '@vue/reactivity@3.5.22': + resolution: {integrity: sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==} + + '@vue/runtime-core@3.5.22': + resolution: {integrity: sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==} + + '@vue/runtime-dom@3.5.22': + resolution: {integrity: sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==} + + '@vue/server-renderer@3.5.22': + resolution: {integrity: sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==} + peerDependencies: + vue: 3.5.22 + + '@vue/shared@3.5.22': + resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==} + + '@vueuse/core@12.8.2': + resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} + + '@vueuse/integrations@12.8.2': + 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 + + '@vueuse/metadata@12.8.2': + resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} + + '@vueuse/shared@12.8.2': + resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + algoliasearch@5.39.0: + resolution: {integrity: sha512-DzTfhUxzg9QBNGzU/0kZkxEV72TeA4MmPJ7RVfLnQwHNhhliPo7ynglEWJS791rNlLFoTyrKvkapwr/P3EXV9A==} + engines: {node: '>= 14.0.0'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + + b4a@1.7.3: + resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true + + bare-events@2.7.0: + resolution: {integrity: sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==} + + bare-fs@4.4.5: + resolution: {integrity: sha512-TCtu93KGLu6/aiGWzMr12TmSRS6nKdfhAnzTQRbXoSWxkbb9eRd53jQ51jG7g1gYjjtto3hbBrrhzg6djcgiKg==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-os@3.6.2: + resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==} + engines: {bare: '>=1.14.0'} + + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} + + bare-stream@2.7.0: + resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==} + peerDependencies: + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true + + bare-url@2.2.2: + resolution: {integrity: sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==} + + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + + birpc@2.6.1: + resolution: {integrity: sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + chromium-bidi@9.1.0: + resolution: {integrity: sha512-rlUzQ4WzIAWdIbY/viPShhZU2n21CxDUgazXVbw4Hu1MwaeUSEksSeM6DqPgpRjCLXRk702AVRxJxoOz0dw4OA==} + peerDependencies: + devtools-protocol: '*' + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + devtools-protocol@0.0.1508733: + resolution: {integrity: sha512-QJ1R5gtck6nDcdM+nlsaJXcelPEI7ZxSMw1ujHpO1c4+9l+Nue5qlebi9xO1Z2MGr92bFOQTW7/rrheh5hHxDg==} + + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + events-universal@1.0.1: + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + focus-trap@7.6.5: + resolution: {integrity: sha512-7Ke1jyybbbPZyZXFxEftUtxFGLMpE2n6A+z//m4CRDlj0hW+o3iYSmh8nFlYMurOiJVDmJRilUQtJr08KfIxlg==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-uri@6.0.5: + resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} + engines: {node: '>= 14'} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + ip-address@10.0.1: + resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} + engines: {node: '>= 12'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + + mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + minisearch@7.2.0: + resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + oniguruma-to-es@3.1.1: + resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} + + pac-proxy-agent@7.2.0: + resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + pdf-lib@1.17.1: + resolution: {integrity: sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + preact@10.27.2: + resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + proxy-agent@6.5.0: + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} + engines: {node: '>= 14'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + + puppeteer-core@24.23.0: + resolution: {integrity: sha512-yl25C59gb14sOdIiSnJ08XiPP+O2RjuyZmEG+RjYmCXO7au0jcLf7fRiyii96dXGUBW7Zwei/mVKfxMx/POeFw==} + engines: {node: '>=18'} + + puppeteer@24.23.0: + resolution: {integrity: sha512-BVR1Lg8sJGKXY79JARdIssFWK2F6e1j+RyuJP66w4CUmpaXjENicmA3nNpUXA8lcTdDjAndtP+oNdni3T/qQqA==} + engines: {node: '>=18'} + hasBin: true + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rollup@4.52.4: + resolution: {integrity: sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + search-insights@2.17.3: + resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + sharp@0.34.4: + resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shiki@2.5.0: + resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + streamx@2.23.0: + resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + superjson@2.2.2: + resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} + engines: {node: '>=16'} + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + tar-fs@3.1.1: + resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + typed-query-selector@2.12.0: + resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} + + undici-types@7.14.0: + resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite@5.4.20: + resolution: {integrity: sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==} + 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: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitepress@1.6.4: + resolution: {integrity: sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4 + postcss: ^8 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true + + vue@3.5.22: + resolution: {integrity: sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + webdriver-bidi-protocol@0.3.6: + resolution: {integrity: sha512-mlGndEOA9yK9YAbvtxaPTqdi/kaCWYYfwrZvGzcmkr/3lWM+tQj53BxtpVd6qbC6+E5OnHXgCcAhre6AkXzxjA==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@algolia/abtesting@1.5.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0) + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)': + dependencies: + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0) + '@algolia/client-search': 5.39.0 + algoliasearch: 5.39.0 + + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)': + dependencies: + '@algolia/client-search': 5.39.0 + algoliasearch: 5.39.0 + + '@algolia/client-abtesting@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/client-analytics@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/client-common@5.39.0': {} + + '@algolia/client-insights@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/client-personalization@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/client-query-suggestions@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/client-search@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/ingestion@1.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/monitoring@1.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/recommend@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + '@algolia/requester-browser-xhr@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + + '@algolia/requester-fetch@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + + '@algolia/requester-node-http@5.39.0': + dependencies: + '@algolia/client-common': 5.39.0 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/parser@7.28.4': + dependencies: + '@babel/types': 7.28.4 + + '@babel/types@7.28.4': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@docsearch/css@3.8.2': {} + + '@docsearch/js@3.8.2(@algolia/client-search@5.39.0)(search-insights@2.17.3)': + dependencies: + '@docsearch/react': 3.8.2(@algolia/client-search@5.39.0)(search-insights@2.17.3) + preact: 10.27.2 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + + '@docsearch/react@3.8.2(@algolia/client-search@5.39.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.39.0)(algoliasearch@5.39.0) + '@docsearch/css': 3.8.2 + algoliasearch: 5.39.0 + optionalDependencies: + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + + '@emnapi/runtime@1.5.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@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 + + '@iconify-json/simple-icons@1.2.54': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@img/colour@1.0.0': {} + + '@img/sharp-darwin-arm64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.3 + optional: true + + '@img/sharp-darwin-x64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.3 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.3': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.3': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.3': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.3': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.3': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.3': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.3': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.3': + optional: true + + '@img/sharp-linux-arm64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.3 + optional: true + + '@img/sharp-linux-arm@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.3 + optional: true + + '@img/sharp-linux-ppc64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.3 + optional: true + + '@img/sharp-linux-s390x@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.3 + optional: true + + '@img/sharp-linux-x64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.3 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + optional: true + + '@img/sharp-wasm32@0.34.4': + dependencies: + '@emnapi/runtime': 1.5.0 + optional: true + + '@img/sharp-win32-arm64@0.34.4': + optional: true + + '@img/sharp-win32-ia32@0.34.4': + optional: true + + '@img/sharp-win32-x64@0.34.4': + optional: true + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@pdf-lib/standard-fonts@1.0.0': + dependencies: + pako: 1.0.11 + + '@pdf-lib/upng@1.0.1': + dependencies: + pako: 1.0.11 + + '@puppeteer/browsers@2.10.10': + dependencies: + debug: 4.4.3 + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.5.0 + semver: 7.7.2 + tar-fs: 3.1.1 + yargs: 17.7.2 + transitivePeerDependencies: + - bare-buffer + - react-native-b4a + - supports-color + + '@rollup/rollup-android-arm-eabi@4.52.4': + optional: true + + '@rollup/rollup-android-arm64@4.52.4': + optional: true + + '@rollup/rollup-darwin-arm64@4.52.4': + optional: true + + '@rollup/rollup-darwin-x64@4.52.4': + optional: true + + '@rollup/rollup-freebsd-arm64@4.52.4': + optional: true + + '@rollup/rollup-freebsd-x64@4.52.4': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.52.4': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.52.4': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.52.4': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.52.4': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.52.4': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.52.4': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.52.4': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.52.4': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.52.4': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.52.4': + optional: true + + '@rollup/rollup-linux-x64-musl@4.52.4': + optional: true + + '@rollup/rollup-openharmony-arm64@4.52.4': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.52.4': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.52.4': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.52.4': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.52.4': + optional: true + + '@shikijs/core@2.5.0': + dependencies: + '@shikijs/engine-javascript': 2.5.0 + '@shikijs/engine-oniguruma': 2.5.0 + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 3.1.1 + + '@shikijs/engine-oniguruma@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 + + '@shikijs/themes@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 + + '@shikijs/transformers@2.5.0': + dependencies: + '@shikijs/core': 2.5.0 + '@shikijs/types': 2.5.0 + + '@shikijs/types@2.5.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@tootallnate/quickjs-emscripten@0.23.0': {} + + '@types/estree@1.0.8': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdurl@2.0.0': {} + + '@types/node@24.7.0': + dependencies: + undici-types: 7.14.0 + optional: true + + '@types/unist@3.0.3': {} + + '@types/web-bluetooth@0.0.21': {} + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 24.7.0 + optional: true + + '@ungap/structured-clone@1.3.0': {} + + '@vitejs/plugin-vue@5.2.4(vite@5.4.20(@types/node@24.7.0))(vue@3.5.22)': + dependencies: + vite: 5.4.20(@types/node@24.7.0) + vue: 3.5.22 + + '@vue/compiler-core@3.5.22': + dependencies: + '@babel/parser': 7.28.4 + '@vue/shared': 3.5.22 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.22': + dependencies: + '@vue/compiler-core': 3.5.22 + '@vue/shared': 3.5.22 + + '@vue/compiler-sfc@3.5.22': + dependencies: + '@babel/parser': 7.28.4 + '@vue/compiler-core': 3.5.22 + '@vue/compiler-dom': 3.5.22 + '@vue/compiler-ssr': 3.5.22 + '@vue/shared': 3.5.22 + estree-walker: 2.0.2 + magic-string: 0.30.19 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.22': + dependencies: + '@vue/compiler-dom': 3.5.22 + '@vue/shared': 3.5.22 + + '@vue/devtools-api@7.7.7': + dependencies: + '@vue/devtools-kit': 7.7.7 + + '@vue/devtools-kit@7.7.7': + dependencies: + '@vue/devtools-shared': 7.7.7 + birpc: 2.6.1 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.2 + + '@vue/devtools-shared@7.7.7': + dependencies: + rfdc: 1.4.1 + + '@vue/reactivity@3.5.22': + dependencies: + '@vue/shared': 3.5.22 + + '@vue/runtime-core@3.5.22': + dependencies: + '@vue/reactivity': 3.5.22 + '@vue/shared': 3.5.22 + + '@vue/runtime-dom@3.5.22': + dependencies: + '@vue/reactivity': 3.5.22 + '@vue/runtime-core': 3.5.22 + '@vue/shared': 3.5.22 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.22(vue@3.5.22)': + dependencies: + '@vue/compiler-ssr': 3.5.22 + '@vue/shared': 3.5.22 + vue: 3.5.22 + + '@vue/shared@3.5.22': {} + + '@vueuse/core@12.8.2': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 12.8.2 + '@vueuse/shared': 12.8.2 + vue: 3.5.22 + transitivePeerDependencies: + - typescript + + '@vueuse/integrations@12.8.2(focus-trap@7.6.5)': + dependencies: + '@vueuse/core': 12.8.2 + '@vueuse/shared': 12.8.2 + vue: 3.5.22 + optionalDependencies: + focus-trap: 7.6.5 + transitivePeerDependencies: + - typescript + + '@vueuse/metadata@12.8.2': {} + + '@vueuse/shared@12.8.2': + dependencies: + vue: 3.5.22 + transitivePeerDependencies: + - typescript + + agent-base@7.1.4: {} + + algoliasearch@5.39.0: + dependencies: + '@algolia/abtesting': 1.5.0 + '@algolia/client-abtesting': 5.39.0 + '@algolia/client-analytics': 5.39.0 + '@algolia/client-common': 5.39.0 + '@algolia/client-insights': 5.39.0 + '@algolia/client-personalization': 5.39.0 + '@algolia/client-query-suggestions': 5.39.0 + '@algolia/client-search': 5.39.0 + '@algolia/ingestion': 1.39.0 + '@algolia/monitoring': 1.39.0 + '@algolia/recommend': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + ast-types@0.13.4: + dependencies: + tslib: 2.8.1 + + b4a@1.7.3: {} + + bare-events@2.7.0: {} + + bare-fs@4.4.5: + dependencies: + bare-events: 2.7.0 + bare-path: 3.0.0 + bare-stream: 2.7.0(bare-events@2.7.0) + bare-url: 2.2.2 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - react-native-b4a + optional: true + + bare-os@3.6.2: + optional: true + + bare-path@3.0.0: + dependencies: + bare-os: 3.6.2 + optional: true + + bare-stream@2.7.0(bare-events@2.7.0): + dependencies: + streamx: 2.23.0 + optionalDependencies: + bare-events: 2.7.0 + transitivePeerDependencies: + - react-native-b4a + optional: true + + bare-url@2.2.2: + dependencies: + bare-path: 3.0.0 + optional: true + + basic-ftp@5.0.5: {} + + birpc@2.6.1: {} + + buffer-crc32@0.2.13: {} + + callsites@3.1.0: {} + + ccount@2.0.1: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + chromium-bidi@9.1.0(devtools-protocol@0.0.1508733): + dependencies: + devtools-protocol: 0.0.1508733 + mitt: 3.0.1 + zod: 3.25.76 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + comma-separated-tokens@2.0.3: {} + + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + + cosmiconfig@9.0.0: + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + + csstype@3.1.3: {} + + data-uri-to-buffer@6.0.2: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + + dequal@2.0.3: {} + + detect-libc@2.1.2: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + devtools-protocol@0.0.1508733: {} + + emoji-regex-xs@1.0.0: {} + + emoji-regex@8.0.0: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + 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 + + escalade@3.2.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + esprima@4.0.1: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + events-universal@1.0.1: + dependencies: + bare-events: 2.7.0 + + extract-zip@2.0.1: + dependencies: + debug: 4.4.3 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + fast-fifo@1.3.2: {} + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + focus-trap@7.6.5: + dependencies: + tabbable: 6.2.0 + + fsevents@2.3.3: + optional: true + + get-caller-file@2.0.5: {} + + get-stream@5.2.0: + dependencies: + pump: 3.0.3 + + get-uri@6.0.5: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + hast-util-to-html@9.0.5: + 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 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hookable@5.5.3: {} + + html-void-elements@3.0.0: {} + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + ip-address@10.0.1: {} + + is-arrayish@0.2.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-what@4.1.16: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-parse-even-better-errors@2.3.1: {} + + lines-and-columns@1.2.4: {} + + lru-cache@7.18.3: {} + + magic-string@0.30.19: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + mark.js@8.11.1: {} + + mdast-util-to-hast@13.2.0: + 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 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + minisearch@7.2.0: {} + + mitt@3.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + netmask@2.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + oniguruma-to-es@3.1.1: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 6.0.1 + regex-recursion: 6.0.2 + + pac-proxy-agent@7.2.0: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.4 + debug: 4.4.3 + get-uri: 6.0.5 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + + pako@1.0.11: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + pdf-lib@1.17.1: + dependencies: + '@pdf-lib/standard-fonts': 1.0.0 + '@pdf-lib/upng': 1.0.1 + pako: 1.0.11 + tslib: 1.14.1 + + pend@1.2.0: {} + + perfect-debounce@1.0.0: {} + + picocolors@1.1.1: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + preact@10.27.2: {} + + progress@2.0.3: {} + + property-information@7.1.0: {} + + proxy-agent@6.5.0: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 7.18.3 + pac-proxy-agent: 7.2.0 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + proxy-from-env@1.1.0: {} + + pump@3.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + puppeteer-core@24.23.0: + dependencies: + '@puppeteer/browsers': 2.10.10 + chromium-bidi: 9.1.0(devtools-protocol@0.0.1508733) + debug: 4.4.3 + devtools-protocol: 0.0.1508733 + typed-query-selector: 2.12.0 + webdriver-bidi-protocol: 0.3.6 + ws: 8.18.3 + transitivePeerDependencies: + - bare-buffer + - bufferutil + - react-native-b4a + - supports-color + - utf-8-validate + + puppeteer@24.23.0: + dependencies: + '@puppeteer/browsers': 2.10.10 + chromium-bidi: 9.1.0(devtools-protocol@0.0.1508733) + cosmiconfig: 9.0.0 + devtools-protocol: 0.0.1508733 + puppeteer-core: 24.23.0 + typed-query-selector: 2.12.0 + transitivePeerDependencies: + - bare-buffer + - bufferutil + - react-native-b4a + - supports-color + - typescript + - utf-8-validate + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.0.1: + dependencies: + regex-utilities: 2.3.0 + + require-directory@2.1.1: {} + + resolve-from@4.0.0: {} + + rfdc@1.4.1: {} + + rollup@4.52.4: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.52.4 + '@rollup/rollup-android-arm64': 4.52.4 + '@rollup/rollup-darwin-arm64': 4.52.4 + '@rollup/rollup-darwin-x64': 4.52.4 + '@rollup/rollup-freebsd-arm64': 4.52.4 + '@rollup/rollup-freebsd-x64': 4.52.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.4 + '@rollup/rollup-linux-arm-musleabihf': 4.52.4 + '@rollup/rollup-linux-arm64-gnu': 4.52.4 + '@rollup/rollup-linux-arm64-musl': 4.52.4 + '@rollup/rollup-linux-loong64-gnu': 4.52.4 + '@rollup/rollup-linux-ppc64-gnu': 4.52.4 + '@rollup/rollup-linux-riscv64-gnu': 4.52.4 + '@rollup/rollup-linux-riscv64-musl': 4.52.4 + '@rollup/rollup-linux-s390x-gnu': 4.52.4 + '@rollup/rollup-linux-x64-gnu': 4.52.4 + '@rollup/rollup-linux-x64-musl': 4.52.4 + '@rollup/rollup-openharmony-arm64': 4.52.4 + '@rollup/rollup-win32-arm64-msvc': 4.52.4 + '@rollup/rollup-win32-ia32-msvc': 4.52.4 + '@rollup/rollup-win32-x64-gnu': 4.52.4 + '@rollup/rollup-win32-x64-msvc': 4.52.4 + fsevents: 2.3.3 + + search-insights@2.17.3: {} + + semver@7.7.2: {} + + sharp@0.34.4: + dependencies: + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.2 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.4 + '@img/sharp-darwin-x64': 0.34.4 + '@img/sharp-libvips-darwin-arm64': 1.2.3 + '@img/sharp-libvips-darwin-x64': 1.2.3 + '@img/sharp-libvips-linux-arm': 1.2.3 + '@img/sharp-libvips-linux-arm64': 1.2.3 + '@img/sharp-libvips-linux-ppc64': 1.2.3 + '@img/sharp-libvips-linux-s390x': 1.2.3 + '@img/sharp-libvips-linux-x64': 1.2.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + '@img/sharp-linux-arm': 0.34.4 + '@img/sharp-linux-arm64': 0.34.4 + '@img/sharp-linux-ppc64': 0.34.4 + '@img/sharp-linux-s390x': 0.34.4 + '@img/sharp-linux-x64': 0.34.4 + '@img/sharp-linuxmusl-arm64': 0.34.4 + '@img/sharp-linuxmusl-x64': 0.34.4 + '@img/sharp-wasm32': 0.34.4 + '@img/sharp-win32-arm64': 0.34.4 + '@img/sharp-win32-ia32': 0.34.4 + '@img/sharp-win32-x64': 0.34.4 + + shiki@2.5.0: + dependencies: + '@shikijs/core': 2.5.0 + '@shikijs/engine-javascript': 2.5.0 + '@shikijs/engine-oniguruma': 2.5.0 + '@shikijs/langs': 2.5.0 + '@shikijs/themes': 2.5.0 + '@shikijs/types': 2.5.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + smart-buffer@4.2.0: {} + + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + socks: 2.8.7 + transitivePeerDependencies: + - supports-color + + socks@2.8.7: + dependencies: + ip-address: 10.0.1 + smart-buffer: 4.2.0 + + source-map-js@1.2.1: {} + + source-map@0.6.1: + optional: true + + space-separated-tokens@2.0.2: {} + + speakingurl@14.0.1: {} + + streamx@2.23.0: + dependencies: + events-universal: 1.0.1 + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + transitivePeerDependencies: + - react-native-b4a + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + superjson@2.2.2: + dependencies: + copy-anything: 3.0.5 + + tabbable@6.2.0: {} + + tar-fs@3.1.1: + dependencies: + pump: 3.0.3 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.4.5 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-buffer + - react-native-b4a + + tar-stream@3.1.7: + dependencies: + b4a: 1.7.3 + fast-fifo: 1.3.2 + streamx: 2.23.0 + transitivePeerDependencies: + - react-native-b4a + + text-decoder@1.2.3: + dependencies: + b4a: 1.7.3 + transitivePeerDependencies: + - react-native-b4a + + trim-lines@3.0.1: {} + + tslib@1.14.1: {} + + tslib@2.8.1: {} + + typed-query-selector@2.12.0: {} + + undici-types@7.14.0: + optional: true + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + vite@5.4.20(@types/node@24.7.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.6 + rollup: 4.52.4 + optionalDependencies: + '@types/node': 24.7.0 + fsevents: 2.3.3 + + vitepress@1.6.4(@algolia/client-search@5.39.0)(@types/node@24.7.0)(postcss@8.5.6)(search-insights@2.17.3): + dependencies: + '@docsearch/css': 3.8.2 + '@docsearch/js': 3.8.2(@algolia/client-search@5.39.0)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.54 + '@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.20(@types/node@24.7.0))(vue@3.5.22) + '@vue/devtools-api': 7.7.7 + '@vue/shared': 3.5.22 + '@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 + minisearch: 7.2.0 + shiki: 2.5.0 + vite: 5.4.20(@types/node@24.7.0) + vue: 3.5.22 + optionalDependencies: + postcss: 8.5.6 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - react + - react-dom + - sass + - sass-embedded + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + + vue@3.5.22: + dependencies: + '@vue/compiler-dom': 3.5.22 + '@vue/compiler-sfc': 3.5.22 + '@vue/runtime-dom': 3.5.22 + '@vue/server-renderer': 3.5.22(vue@3.5.22) + '@vue/shared': 3.5.22 + + webdriver-bidi-protocol@0.3.6: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + ws@8.18.3: {} + + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + zod@3.25.76: {} + + zwitch@2.0.4: {} diff --git a/preface-2.md b/preface-2.md new file mode 100644 index 0000000..b91f5b5 --- /dev/null +++ b/preface-2.md @@ -0,0 +1,13 @@ +# 自序 + +写一本关于提升形容能力的书籍,是一个非常有价值且具有实用性的选题。这本书面向学生、写作爱好者、职场人士、教师、内容创作者等广泛人群。无论你是希望在写作中表达更生动,还是在日常交流中更有说服力,形容能力的提升都将为你带来切实的改变。 + +形容,不仅仅是词汇的堆砌,更是观察力、想象力与共情力的综合体现。它让我们能够捕捉生活的细节,赋予平凡以色彩,让思想和情感更精准地传递给他人。 + +在当下AI广泛应用的时代,无论是让AI为你写作、生成图片,还是协助完成各类任务,形容力都扮演着桥梁的角色。它不仅决定了你能否精准、细致地表达需求,还直接影响AI理解和实现你想法的效果。拥有出色的形容能力,能让你与AI的互动更加高效,创作出更具个性和感染力的内容,让你的每一个想法都能被清晰、立体地呈现出来。 + +本书定位为“实用性+启发性+训练性”,风格轻松易懂,案例丰富,注重互动。我们将通过大量真实案例、趣味练习和实用方法,帮助你从“说不清”到“说得好”,逐步掌握观察、联想、词汇与表达的完整链条。 + +希望你在阅读和练习的过程中,能够发现表达的乐趣,提升语言的力量,让你的每一次描述都更有画面感和感染力。 + +让我们一起开启形容力的成长之旅! \ No newline at end of file diff --git a/preface.md b/preface.md new file mode 100644 index 0000000..db649f6 --- /dev/null +++ b/preface.md @@ -0,0 +1,15 @@ +# 自序 + +大模型融合了所有的人类的知识,我想要获取某一个体系的知识,我就只需要把对应的内容给提取出来为对应的知识库,这就能当我去记忆的一个桥梁。AI不仅是信息的整合者,更是自己学习的超级老师。通过与AI的互动,我们可以将庞杂的知识结构拆解为易于理解和记忆的片段,形成属于自己的知识体系。**无论是学习新领域、构建个人知识库,还是解决实际问题,AI都能帮助我们高效筛选、归纳和总结信息,让知识的获取和应用变得更加智能和个性化**。未来,随着人工智能技术的不断进步,这种“桥梁式记忆”和智能辅助学习将成为每个人提升认知和表达能力的重要工具,让我们能够更好地驾驭信息洪流,实现持续成长与突破。 + +## 为什么写这个一系列的文档? + +我是那一类不会描述,不会形容某一件事情,词语容易枯竭的人。在表达时,总觉得自己的语言单调、苍白,难以准确传达内心的感受和所见所闻。但随着智能化场景的普及,我越来越意识到,形容力不仅是个人表达的加分项,**更是与人工智能高效互动、获取信息、沟通协作的必备能力**。幸运的是,如今有了更好的方法和工具,可以系统地训练和提升这项能力。通过学习和实践,我逐渐发现,形容力其实可以像技能一样被锻炼和积累。写下这一系列文档,就是希望把我的探索和成长过程分享出来,帮助更多像我一样容易词穷的人,找到提升表达力的路径,让语言变得丰富、生动、有力量。 + +### Vibe Coding, 自动化 和 AI 生图的场景 + +在日常交互中,人工智能已经逐渐融入我们的生活和工作,无论是**写代码、生成图片,还是信息检索和自动化处理,只要我们能够清晰、具体地表达自己的需求,AI 就能更高效地帮助我们实现目标**。形容力的提升,不仅让我们与人沟通时更具说服力和感染力,也让我们在与 AI 互动时能够精准传达意图,获得更理想的结果。无论是 Vibe Coding 还是 AI 生图等新兴场景,丰富的形容力都是实现高效协作和创新表达的关键。因此,持续锻炼和积累形容力,已经成为现代人不可或缺的能力之一。 + +### 练习方法思路 + +我想做一个应用,AI 图形反推描述词,然后和生成图形的描述词进行对比打分优化。**这样不仅可以帮助用户更精准地表达自己的需求,还能通过不断反馈和调整,提升个人的形容力和表达能力**。比如,用户输入一段描述词,AI 生成相应的图形,再由 AI 或用户反向分析图形,提取新的描述词,最后将两组词汇进行对比,找出表达上的差异和不足,并给出优化建议。这种训练方式既有趣又高效,能够让形容力的提升变得可视化和可量化,帮助大家在实际应用中不断进步,最终实现与 AI 的高质量互动和协作。 diff --git a/public/assets/daily/0.png b/public/assets/daily/0.png new file mode 100644 index 0000000..c635f5d Binary files /dev/null and b/public/assets/daily/0.png differ diff --git a/public/assets/daily/1.png b/public/assets/daily/1.png new file mode 100644 index 0000000..d637ae5 Binary files /dev/null and b/public/assets/daily/1.png differ diff --git a/public/assets/daily/10.png b/public/assets/daily/10.png new file mode 100644 index 0000000..c610bd7 Binary files /dev/null and b/public/assets/daily/10.png differ diff --git a/public/assets/daily/11.png b/public/assets/daily/11.png new file mode 100644 index 0000000..11f2b24 Binary files /dev/null and b/public/assets/daily/11.png differ diff --git a/public/assets/daily/12.png b/public/assets/daily/12.png new file mode 100644 index 0000000..dc4633d Binary files /dev/null and b/public/assets/daily/12.png differ diff --git a/public/assets/daily/13.png b/public/assets/daily/13.png new file mode 100644 index 0000000..bfca5f7 Binary files /dev/null and b/public/assets/daily/13.png differ diff --git a/public/assets/daily/14.png b/public/assets/daily/14.png new file mode 100644 index 0000000..9d387d7 Binary files /dev/null and b/public/assets/daily/14.png differ diff --git a/public/assets/daily/15.png b/public/assets/daily/15.png new file mode 100644 index 0000000..32e914f Binary files /dev/null and b/public/assets/daily/15.png differ diff --git a/public/assets/daily/16.png b/public/assets/daily/16.png new file mode 100644 index 0000000..19ee905 Binary files /dev/null and b/public/assets/daily/16.png differ diff --git a/public/assets/daily/17.png b/public/assets/daily/17.png new file mode 100644 index 0000000..84729b1 Binary files /dev/null and b/public/assets/daily/17.png differ diff --git a/public/assets/daily/18.png b/public/assets/daily/18.png new file mode 100644 index 0000000..78d36db Binary files /dev/null and b/public/assets/daily/18.png differ diff --git a/public/assets/daily/19.png b/public/assets/daily/19.png new file mode 100644 index 0000000..cb65b2f Binary files /dev/null and b/public/assets/daily/19.png differ diff --git a/public/assets/daily/2.png b/public/assets/daily/2.png new file mode 100644 index 0000000..b1ce4c5 Binary files /dev/null and b/public/assets/daily/2.png differ diff --git a/public/assets/daily/20.png b/public/assets/daily/20.png new file mode 100644 index 0000000..cc359de Binary files /dev/null and b/public/assets/daily/20.png differ diff --git a/public/assets/daily/21.png b/public/assets/daily/21.png new file mode 100644 index 0000000..3325d75 Binary files /dev/null and b/public/assets/daily/21.png differ diff --git a/public/assets/daily/22.png b/public/assets/daily/22.png new file mode 100644 index 0000000..a9169e7 Binary files /dev/null and b/public/assets/daily/22.png differ diff --git a/public/assets/daily/23.png b/public/assets/daily/23.png new file mode 100644 index 0000000..42d8581 Binary files /dev/null and b/public/assets/daily/23.png differ diff --git a/public/assets/daily/24.png b/public/assets/daily/24.png new file mode 100644 index 0000000..cc06ae6 Binary files /dev/null and b/public/assets/daily/24.png differ diff --git a/public/assets/daily/25.png b/public/assets/daily/25.png new file mode 100644 index 0000000..e876433 Binary files /dev/null and b/public/assets/daily/25.png differ diff --git a/public/assets/daily/26.png b/public/assets/daily/26.png new file mode 100644 index 0000000..b6667f7 Binary files /dev/null and b/public/assets/daily/26.png differ diff --git a/public/assets/daily/27.png b/public/assets/daily/27.png new file mode 100644 index 0000000..fafe2d4 Binary files /dev/null and b/public/assets/daily/27.png differ diff --git a/public/assets/daily/28.png b/public/assets/daily/28.png new file mode 100644 index 0000000..57c645f Binary files /dev/null and b/public/assets/daily/28.png differ diff --git a/public/assets/daily/29.png b/public/assets/daily/29.png new file mode 100644 index 0000000..98d2ac7 Binary files /dev/null and b/public/assets/daily/29.png differ diff --git a/public/assets/daily/3.png b/public/assets/daily/3.png new file mode 100644 index 0000000..af581c6 Binary files /dev/null and b/public/assets/daily/3.png differ diff --git a/public/assets/daily/30.png b/public/assets/daily/30.png new file mode 100644 index 0000000..c7d2989 Binary files /dev/null and b/public/assets/daily/30.png differ diff --git a/public/assets/daily/4.png b/public/assets/daily/4.png new file mode 100644 index 0000000..367c146 Binary files /dev/null and b/public/assets/daily/4.png differ diff --git a/public/assets/daily/5.png b/public/assets/daily/5.png new file mode 100644 index 0000000..7e4fbca Binary files /dev/null and b/public/assets/daily/5.png differ diff --git a/public/assets/daily/6.png b/public/assets/daily/6.png new file mode 100644 index 0000000..2da28b6 Binary files /dev/null and b/public/assets/daily/6.png differ diff --git a/public/assets/daily/7.png b/public/assets/daily/7.png new file mode 100644 index 0000000..489f240 Binary files /dev/null and b/public/assets/daily/7.png differ diff --git a/public/assets/daily/8.png b/public/assets/daily/8.png new file mode 100644 index 0000000..4f94c69 Binary files /dev/null and b/public/assets/daily/8.png differ diff --git a/public/assets/daily/9.png b/public/assets/daily/9.png new file mode 100644 index 0000000..56bdb70 Binary files /dev/null and b/public/assets/daily/9.png differ diff --git a/public/assets/supply.jpg b/public/assets/supply.jpg new file mode 100644 index 0000000..8ec2baf Binary files /dev/null and b/public/assets/supply.jpg differ diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..14267e9 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Allow: / \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..fd9212a --- /dev/null +++ b/readme.md @@ -0,0 +1,2 @@ +# 形容力提升训练手册 + diff --git a/scripts/copy.ts b/scripts/copy.ts new file mode 100644 index 0000000..71f67cb --- /dev/null +++ b/scripts/copy.ts @@ -0,0 +1,16 @@ +import * as fs from 'fs'; +import * as path from 'path'; + +const targetDir = path.join('.vitepress', 'dist', 'pdf'); +const sourceFile = path.join('pdf', 'book.pdf'); +const targetFile = path.join(targetDir, 'book.pdf'); + +// 创建目标文件夹(如果不存在) +if (!fs.existsSync(targetDir)) { + fs.mkdirSync(targetDir, { recursive: true }); +} + +// 复制文件 +fs.copyFileSync(sourceFile, targetFile); + +console.log('PDF 已复制到 .vitepress/dist/pdf/book.pdf'); \ No newline at end of file diff --git a/scripts/export-pdf.ts b/scripts/export-pdf.ts new file mode 100644 index 0000000..6a903c5 --- /dev/null +++ b/scripts/export-pdf.ts @@ -0,0 +1,89 @@ +import puppeteer from 'puppeteer'; +import fs from 'node:fs'; +import path from 'node:path'; +import { PDFDocument } from 'pdf-lib'; + +async function exportPDF(): Promise { + const browser = await puppeteer.launch(); + const page = await browser.newPage(); + + // 设置页面样式适应 PDF + await page.setViewport({ width: 1200, height: 800 }); + + // const baseUrl = 'http://localhost:5173'; // VitePress 开发服务器地址 + const baseUrl = 'https://look-good.xiongxiao.me'; // VitePress 开发服务器生产地址 + const outputPath = path.resolve(process.cwd(), 'pdf'); + + if (!fs.existsSync(outputPath)) { + fs.mkdirSync(outputPath); + } + + // 根据 sidebar 配置,导出的路径列表 + const routes: string[] = [ + '/', + '/preface', + '/self-introduction', + '/book/0-1', + '/book/01', + '/book/02', + '/book/03', + '/book/0-2', + '/book/04', + '/book/05', + '/book/06', + '/book/07', + '/book/08', + '/book/09', + '/book/0-3', + '/book/10', + '/book/11', + '/book/12', + '/appendix/a', + '/appendix/b', + '/appendix/c', + '/appendix/d', + '/appendix/e' + ]; + + const pdfFiles: string[] = []; + + for (const route of routes) { + const url = baseUrl + route; + const fileName = route === '/' ? 'index' : route.slice(1).replace(/\//g, '_'); + const pdfPath = path.join(outputPath, `${fileName}.pdf`); + console.log(`⏳ 正在生成: ${fileName}.pdf from ${url}`); + await page.goto(url, { waitUntil: 'networkidle0' }); + + await page.pdf({ + path: pdfPath, + format: 'A4', + printBackground: true, + margin: { + top: '20mm', + right: '20mm', + bottom: '20mm', + left: '20mm', + }, + }); + + pdfFiles.push(pdfPath); + console.log(`✅ 已生成: ${fileName}.pdf`); + } + + await browser.close(); + + // 合并所有 PDF + const mergedPdf = await PDFDocument.create(); + for (const pdfFile of pdfFiles) { + const pdfBytes = fs.readFileSync(pdfFile); + const pdf = await PDFDocument.load(pdfBytes); + const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices()); + copiedPages.forEach((page) => mergedPdf.addPage(page)); + } + const mergedPdfBytes = await mergedPdf.save(); + const bookPdfPath = path.join(outputPath, 'book.pdf'); + fs.writeFileSync(bookPdfPath, mergedPdfBytes); + console.log(`🎉 已合并为: book.pdf`); +} + +exportPDF(); diff --git a/scripts/picture.ts b/scripts/picture.ts new file mode 100644 index 0000000..9bac027 --- /dev/null +++ b/scripts/picture.ts @@ -0,0 +1,41 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import sharp from 'sharp'; + +const root = path.join(process.cwd(), 'public','assets', 'daily'); + +// 获取 root 目录下的所有图片,然后把图片的大小调整小一点,在 500k-1M 之间,放回原名。 +const zipPicture = async (root: string) => { + const files = fs.readdirSync(root); + for (const file of files) { + const filePath = path.join(root, file); + const stat = fs.statSync(filePath); + if (stat.isFile() && /\.(jpg|jpeg|png)$/i.test(file)) { + let buffer = fs.readFileSync(filePath); + let size = buffer.length; + if (size > 1024 * 1024) { // 超过1M才压缩 + let quality = 80; + let compressedBuffer; + do { + compressedBuffer = await sharp(buffer) + .jpeg({ quality }) + .toBuffer(); + size = compressedBuffer.length; + quality -= 10; + } while (size > 1024 * 1024 && quality > 30); + + if (size < 500 * 1024) { + // 如果压缩后小于500k,适当提高质量 + quality += 5; + compressedBuffer = await sharp(buffer) + .jpeg({ quality }) + .toBuffer(); + } + fs.writeFileSync(filePath, compressedBuffer); + console.log(`${file} 压缩后大小: ${(compressedBuffer.length / 1024).toFixed(2)} KB`); + } + } + } +}; + +zipPicture(root); \ No newline at end of file diff --git a/self-introduction.md b/self-introduction.md new file mode 100644 index 0000000..54077df --- /dev/null +++ b/self-introduction.md @@ -0,0 +1,3 @@ +# 自我介绍 + +我叫**小熊猫**,是一名程序开发者,热衷于探索和研究创新性的技术。喜欢在代码世界中不断挑战自我,追求高效与优雅的解决方案。平时关注人工智能、前端开发、自动化工具等领域,乐于分享技术心得和学习经验。希望通过持续学习和实践,不断提升自己的专业能力,也愿意与更多志同道合的伙伴一起交流成长,共同推动技术进步。 \ No newline at end of file