diff --git a/404.html b/404.html index ffbad67..ebd1a0a 100644 --- a/404.html +++ b/404.html @@ -6,7 +6,7 @@ 404 | Shmily - + @@ -17,7 +17,7 @@
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.

GPLv3 License.

- + \ No newline at end of file diff --git a/assets/guide_concept.md.xcgmQ1Wf.js b/assets/guide_concept.md.QMf-232B.js similarity index 99% rename from assets/guide_concept.md.xcgmQ1Wf.js rename to assets/guide_concept.md.QMf-232B.js index 4d18f5b..84c20f6 100644 --- a/assets/guide_concept.md.xcgmQ1Wf.js +++ b/assets/guide_concept.md.QMf-232B.js @@ -1,4 +1,4 @@ -import{_ as a,c as e,o as l,R as s}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"理念","description":"","frontmatter":{},"headers":[],"relativePath":"guide/concept.md","filePath":"guide/concept.md","lastUpdated":1709878346000}'),i={name:"guide/concept.md"},t=s(`

理念

why

现有的聊天记录导出归档项目主要分为以下几步, 以 Wechat 为例


+import{_ as a,c as e,o as l,R as s}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"理念","description":"","frontmatter":{},"headers":[],"relativePath":"guide/concept.md","filePath":"guide/concept.md","lastUpdated":1713155566000}'),i={name:"guide/concept.md"},t=s(`

理念

why

现有的聊天记录导出归档项目主要分为以下几步, 以 Wechat 为例


 导出数据库 --> 解密数据库 --> 解密资源(图片等) --> 生成 HTML (多为模板直出)

在此流程中有很多弊端

  • 使用上
    • 大都为 HTML 模板直出,无分页,几百兆的 HTML 不可用
    • 导出的归档数据无法查询, 筛选、评论等. 失去了归档数据的意义
    • 没有图表统计,数据未体现额外价值
    • 显示数据单一, 无法多项目如 QQ Wechat 按时间线合并查看
    • 多次导出的数据 (如 2020 年导出的数据和 2021 年导出的数据) 不能累计查看并分析
  • 程序上
    • 获取数据不完整,只能拿到当前 HTML 所需导出的数据, 无法拿到数据库中完整的额外字段
    • 全流程耦合,如果对产物不满意, 只能从头开始造轮子, 难以从中间(如解密后的数据库)开始
  基于以上问题,Shimly 的亮点在于
  • 使用上

    • Show 基于 Vue 组件化开发,纯前端实现,240M 数据文件浏览搜索无压力
    • 支持筛选、搜索(支持正则)、评论(支持双向引用链接且显示)
    • 支持我能想到所有维度的数据图表统计
    • 支持多种类、多批次数据合并显示与统计
  • 程序上

    • 完整的数据导出、不管是否 Show 有使用,能导尽导,万一别人需要呢
    • 架构 (见下)

架构

基于以上问题, 我提出以下架构进行 "前后端" "功能化" 拆分, 减少后人的 轮子

|---------|----------------------- Get -----------------------|------------------------ Show -------------------------|
 |---------|------- ExportDB ------|----------- ToMsg ---------|------- ModifyServer ------|---------- Web ------------|
 
diff --git a/assets/guide_concept.md.xcgmQ1Wf.lean.js b/assets/guide_concept.md.QMf-232B.lean.js
similarity index 84%
rename from assets/guide_concept.md.xcgmQ1Wf.lean.js
rename to assets/guide_concept.md.QMf-232B.lean.js
index 3daddb3..ad28cc9 100644
--- a/assets/guide_concept.md.xcgmQ1Wf.lean.js
+++ b/assets/guide_concept.md.QMf-232B.lean.js
@@ -1 +1 @@
-import{_ as a,c as e,o as l,R as s}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"理念","description":"","frontmatter":{},"headers":[],"relativePath":"guide/concept.md","filePath":"guide/concept.md","lastUpdated":1709878346000}'),i={name:"guide/concept.md"},t=s("",21),n=[t];function o(p,h,r,c,d,u){return l(),e("div",null,n)}const b=a(i,[["render",o]]);export{m as __pageData,b as default};
+import{_ as a,c as e,o as l,R as s}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"理念","description":"","frontmatter":{},"headers":[],"relativePath":"guide/concept.md","filePath":"guide/concept.md","lastUpdated":1713155566000}'),i={name:"guide/concept.md"},t=s("",21),n=[t];function o(p,h,r,c,d,u){return l(),e("div",null,n)}const b=a(i,[["render",o]]);export{m as __pageData,b as default};
diff --git a/assets/guide_other_donation.md.KYLIh3rR.js b/assets/guide_other_donation.md.JOGUXPp_.js
similarity index 98%
rename from assets/guide_other_donation.md.KYLIh3rR.js
rename to assets/guide_other_donation.md.JOGUXPp_.js
index c7327b7..37f028c 100644
--- a/assets/guide_other_donation.md.KYLIh3rR.js
+++ b/assets/guide_other_donation.md.JOGUXPp_.js
@@ -1 +1 @@
-import{_ as s,c as i,k as e,a as t,R as o,o as a}from"./chunks/framework.xvtSDt2M.js";const r="/Shmily/assets/Ailurus.SiFWyxGE.mp4",n="/Shmily/assets/pay_al.vEIg12O3.png",l="/Shmily/assets/pay_wx.z7n4utdb.png",c="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1688964239119'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3140'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M228.96%20172.16a76.64%2076.64%200%201%200%2075.84%2076.64%2076.32%2076.32%200%200%200-75.84-76.64zM317.76%20535.52C307.52%20458.24%20160%20360.48%20160%20360.48l-57.6%2082.24s123.84%2061.92%20134.08%20112S66.56%20753.28%2066.56%20753.28l128%2094.4s133.28-235.04%20123.2-312.16z'%20fill='%23FC8848'%20p-id='3141'%3e%3c/path%3e%3cpath%20d='M957.44%20380.96c0-66.88-66.4-152.32-174.72-171.52s-263.04%2060-286.88%2064-30.56-3.52-30.56-3.52l27.2-53.12L400%20178.56A416%20416%200%200%201%20355.04%20288a425.28%20425.28%200%200%201-74.72%2092.64L338.08%20432l76.32-90.88%2050.88%205.12L372%20464s3.36%2039.52%2032%2041.28%2072.96-67.04%2072.96-67.04l52.48%2010.4%201.76%2068.64H360.16v46.24l169.6%205.12v145.92s-48.96%207.36-70.56-23.2-12.96-78.72-12.96-78.72L336%20609.28s-6.88%2084.64%2022.56%20126.88%2090.24%2057.12%20152%2051.84%20215.84-70.72%20215.84-70.72l10.08%2046.4%2081.44-37.76-49.12-130.4-66.24%2013.76%206.88%2056.64-81.6%2036v-130.4L800%20564.64v-48H624.8V448h168v-54.88H517.92l40.8-80A562.88%20562.88%200%200%201%20679.2%20272c48-6.88%2069.44-10.24%20113.6%2017.12a108.48%20108.48%200%200%201%2050.88%2067.04v381.76a96%2096%200%200%201-60.96%2053.12c-48%2016-124-1.6-124-1.6l-6.72%2053.12s128%2025.76%20210.4-8.48%2095.04-132.16%2095.04-132.16z'%20fill='%23FC8848'%20p-id='3142'%3e%3c/path%3e%3c/svg%3e",d="/Shmily/assets/red-panda.-_1nL8ud.jpg",A=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1709878346000}'),p={name:"guide/other/donation.md"},_=e("h1",{id:"捐赠",tabindex:"-1"},[t("捐赠 "),e("a",{class:"header-anchor",href:"#捐赠","aria-label":'Permalink to "捐赠"'},"​")],-1),h={align:"center"},m=e("p",null,[t("!!! "),e("a",{href:"https://baike.baidu.com/item/%E5%B0%8F%E7%86%8A%E7%8C%AB/22379",target:"_blank",rel:"noreferrer"},[e("em",null,"小熊猫")]),t(" 是世界上最可爱的动物 !!! XD")],-1),g={key:0},v=e("video",{src:r,controls:""},null,-1),b=[v],w=o('

https://www.bilibili.com/video/BV1qy4y1s7SJ/


如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                            

请在备注内包含 Shmily 字样
有问题请请发 Email 或 issues, 我没法通过收款码联系你的


门票公示


如果觉得太麻烦,可以付费代劳。淘宝店地址

贱的那个是 小浣熊, 萌的那个是 小熊猫

red-panda

',12);function f(u,x,y,S,k,E){return a(),i("div",null,[_,e("div",h,[m,(a(),i("div",g,b)),w])])}const C=s(p,[["render",f]]);export{A as __pageData,C as default}; +import{_ as s,c as i,k as e,a as t,R as o,o as a}from"./chunks/framework.xvtSDt2M.js";const r="/Shmily/assets/Ailurus.SiFWyxGE.mp4",n="/Shmily/assets/pay_al.vEIg12O3.png",l="/Shmily/assets/pay_wx.z7n4utdb.png",c="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1688964239119'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3140'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M228.96%20172.16a76.64%2076.64%200%201%200%2075.84%2076.64%2076.32%2076.32%200%200%200-75.84-76.64zM317.76%20535.52C307.52%20458.24%20160%20360.48%20160%20360.48l-57.6%2082.24s123.84%2061.92%20134.08%20112S66.56%20753.28%2066.56%20753.28l128%2094.4s133.28-235.04%20123.2-312.16z'%20fill='%23FC8848'%20p-id='3141'%3e%3c/path%3e%3cpath%20d='M957.44%20380.96c0-66.88-66.4-152.32-174.72-171.52s-263.04%2060-286.88%2064-30.56-3.52-30.56-3.52l27.2-53.12L400%20178.56A416%20416%200%200%201%20355.04%20288a425.28%20425.28%200%200%201-74.72%2092.64L338.08%20432l76.32-90.88%2050.88%205.12L372%20464s3.36%2039.52%2032%2041.28%2072.96-67.04%2072.96-67.04l52.48%2010.4%201.76%2068.64H360.16v46.24l169.6%205.12v145.92s-48.96%207.36-70.56-23.2-12.96-78.72-12.96-78.72L336%20609.28s-6.88%2084.64%2022.56%20126.88%2090.24%2057.12%20152%2051.84%20215.84-70.72%20215.84-70.72l10.08%2046.4%2081.44-37.76-49.12-130.4-66.24%2013.76%206.88%2056.64-81.6%2036v-130.4L800%20564.64v-48H624.8V448h168v-54.88H517.92l40.8-80A562.88%20562.88%200%200%201%20679.2%20272c48-6.88%2069.44-10.24%20113.6%2017.12a108.48%20108.48%200%200%201%2050.88%2067.04v381.76a96%2096%200%200%201-60.96%2053.12c-48%2016-124-1.6-124-1.6l-6.72%2053.12s128%2025.76%20210.4-8.48%2095.04-132.16%2095.04-132.16z'%20fill='%23FC8848'%20p-id='3142'%3e%3c/path%3e%3c/svg%3e",d="/Shmily/assets/red-panda.-_1nL8ud.jpg",A=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1713155566000}'),p={name:"guide/other/donation.md"},_=e("h1",{id:"捐赠",tabindex:"-1"},[t("捐赠 "),e("a",{class:"header-anchor",href:"#捐赠","aria-label":'Permalink to "捐赠"'},"​")],-1),h={align:"center"},m=e("p",null,[t("!!! "),e("a",{href:"https://baike.baidu.com/item/%E5%B0%8F%E7%86%8A%E7%8C%AB/22379",target:"_blank",rel:"noreferrer"},[e("em",null,"小熊猫")]),t(" 是世界上最可爱的动物 !!! XD")],-1),g={key:0},v=e("video",{src:r,controls:""},null,-1),b=[v],w=o('

https://www.bilibili.com/video/BV1qy4y1s7SJ/


如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                            

请在备注内包含 Shmily 字样
有问题请请发 Email 或 issues, 我没法通过收款码联系你的


门票公示


如果觉得太麻烦,可以付费代劳。淘宝店地址

贱的那个是 小浣熊, 萌的那个是 小熊猫

red-panda

',12);function f(u,x,y,S,k,E){return a(),i("div",null,[_,e("div",h,[m,(a(),i("div",g,b)),w])])}const C=s(p,[["render",f]]);export{A as __pageData,C as default}; diff --git a/assets/guide_other_donation.md.KYLIh3rR.lean.js b/assets/guide_other_donation.md.JOGUXPp_.lean.js similarity index 97% rename from assets/guide_other_donation.md.KYLIh3rR.lean.js rename to assets/guide_other_donation.md.JOGUXPp_.lean.js index f99e8fa..e134a3a 100644 --- a/assets/guide_other_donation.md.KYLIh3rR.lean.js +++ b/assets/guide_other_donation.md.JOGUXPp_.lean.js @@ -1 +1 @@ -import{_ as s,c as i,k as e,a as t,R as o,o as a}from"./chunks/framework.xvtSDt2M.js";const r="/Shmily/assets/Ailurus.SiFWyxGE.mp4",n="/Shmily/assets/pay_al.vEIg12O3.png",l="/Shmily/assets/pay_wx.z7n4utdb.png",c="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1688964239119'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3140'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M228.96%20172.16a76.64%2076.64%200%201%200%2075.84%2076.64%2076.32%2076.32%200%200%200-75.84-76.64zM317.76%20535.52C307.52%20458.24%20160%20360.48%20160%20360.48l-57.6%2082.24s123.84%2061.92%20134.08%20112S66.56%20753.28%2066.56%20753.28l128%2094.4s133.28-235.04%20123.2-312.16z'%20fill='%23FC8848'%20p-id='3141'%3e%3c/path%3e%3cpath%20d='M957.44%20380.96c0-66.88-66.4-152.32-174.72-171.52s-263.04%2060-286.88%2064-30.56-3.52-30.56-3.52l27.2-53.12L400%20178.56A416%20416%200%200%201%20355.04%20288a425.28%20425.28%200%200%201-74.72%2092.64L338.08%20432l76.32-90.88%2050.88%205.12L372%20464s3.36%2039.52%2032%2041.28%2072.96-67.04%2072.96-67.04l52.48%2010.4%201.76%2068.64H360.16v46.24l169.6%205.12v145.92s-48.96%207.36-70.56-23.2-12.96-78.72-12.96-78.72L336%20609.28s-6.88%2084.64%2022.56%20126.88%2090.24%2057.12%20152%2051.84%20215.84-70.72%20215.84-70.72l10.08%2046.4%2081.44-37.76-49.12-130.4-66.24%2013.76%206.88%2056.64-81.6%2036v-130.4L800%20564.64v-48H624.8V448h168v-54.88H517.92l40.8-80A562.88%20562.88%200%200%201%20679.2%20272c48-6.88%2069.44-10.24%20113.6%2017.12a108.48%20108.48%200%200%201%2050.88%2067.04v381.76a96%2096%200%200%201-60.96%2053.12c-48%2016-124-1.6-124-1.6l-6.72%2053.12s128%2025.76%20210.4-8.48%2095.04-132.16%2095.04-132.16z'%20fill='%23FC8848'%20p-id='3142'%3e%3c/path%3e%3c/svg%3e",d="/Shmily/assets/red-panda.-_1nL8ud.jpg",A=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1709878346000}'),p={name:"guide/other/donation.md"},_=e("h1",{id:"捐赠",tabindex:"-1"},[t("捐赠 "),e("a",{class:"header-anchor",href:"#捐赠","aria-label":'Permalink to "捐赠"'},"​")],-1),h={align:"center"},m=e("p",null,[t("!!! "),e("a",{href:"https://baike.baidu.com/item/%E5%B0%8F%E7%86%8A%E7%8C%AB/22379",target:"_blank",rel:"noreferrer"},[e("em",null,"小熊猫")]),t(" 是世界上最可爱的动物 !!! XD")],-1),g={key:0},v=e("video",{src:r,controls:""},null,-1),b=[v],w=o("",12);function f(u,x,y,S,k,E){return a(),i("div",null,[_,e("div",h,[m,(a(),i("div",g,b)),w])])}const C=s(p,[["render",f]]);export{A as __pageData,C as default}; +import{_ as s,c as i,k as e,a as t,R as o,o as a}from"./chunks/framework.xvtSDt2M.js";const r="/Shmily/assets/Ailurus.SiFWyxGE.mp4",n="/Shmily/assets/pay_al.vEIg12O3.png",l="/Shmily/assets/pay_wx.z7n4utdb.png",c="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1688964239119'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3140'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M228.96%20172.16a76.64%2076.64%200%201%200%2075.84%2076.64%2076.32%2076.32%200%200%200-75.84-76.64zM317.76%20535.52C307.52%20458.24%20160%20360.48%20160%20360.48l-57.6%2082.24s123.84%2061.92%20134.08%20112S66.56%20753.28%2066.56%20753.28l128%2094.4s133.28-235.04%20123.2-312.16z'%20fill='%23FC8848'%20p-id='3141'%3e%3c/path%3e%3cpath%20d='M957.44%20380.96c0-66.88-66.4-152.32-174.72-171.52s-263.04%2060-286.88%2064-30.56-3.52-30.56-3.52l27.2-53.12L400%20178.56A416%20416%200%200%201%20355.04%20288a425.28%20425.28%200%200%201-74.72%2092.64L338.08%20432l76.32-90.88%2050.88%205.12L372%20464s3.36%2039.52%2032%2041.28%2072.96-67.04%2072.96-67.04l52.48%2010.4%201.76%2068.64H360.16v46.24l169.6%205.12v145.92s-48.96%207.36-70.56-23.2-12.96-78.72-12.96-78.72L336%20609.28s-6.88%2084.64%2022.56%20126.88%2090.24%2057.12%20152%2051.84%20215.84-70.72%20215.84-70.72l10.08%2046.4%2081.44-37.76-49.12-130.4-66.24%2013.76%206.88%2056.64-81.6%2036v-130.4L800%20564.64v-48H624.8V448h168v-54.88H517.92l40.8-80A562.88%20562.88%200%200%201%20679.2%20272c48-6.88%2069.44-10.24%20113.6%2017.12a108.48%20108.48%200%200%201%2050.88%2067.04v381.76a96%2096%200%200%201-60.96%2053.12c-48%2016-124-1.6-124-1.6l-6.72%2053.12s128%2025.76%20210.4-8.48%2095.04-132.16%2095.04-132.16z'%20fill='%23FC8848'%20p-id='3142'%3e%3c/path%3e%3c/svg%3e",d="/Shmily/assets/red-panda.-_1nL8ud.jpg",A=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1713155566000}'),p={name:"guide/other/donation.md"},_=e("h1",{id:"捐赠",tabindex:"-1"},[t("捐赠 "),e("a",{class:"header-anchor",href:"#捐赠","aria-label":'Permalink to "捐赠"'},"​")],-1),h={align:"center"},m=e("p",null,[t("!!! "),e("a",{href:"https://baike.baidu.com/item/%E5%B0%8F%E7%86%8A%E7%8C%AB/22379",target:"_blank",rel:"noreferrer"},[e("em",null,"小熊猫")]),t(" 是世界上最可爱的动物 !!! XD")],-1),g={key:0},v=e("video",{src:r,controls:""},null,-1),b=[v],w=o("",12);function f(u,x,y,S,k,E){return a(),i("div",null,[_,e("div",h,[m,(a(),i("div",g,b)),w])])}const C=s(p,[["render",f]]);export{A as __pageData,C as default}; diff --git a/assets/guide_other_donation_list.md.E4_4IpF4.js b/assets/guide_other_donation_list.md.E4_4IpF4.js deleted file mode 100644 index a2999d3..0000000 --- a/assets/guide_other_donation_list.md.E4_4IpF4.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o as l,R as n}from"./chunks/framework.xvtSDt2M.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation_list.md","filePath":"guide/other/donation_list.md","lastUpdated":1709878346000}'),d={name:"guide/other/donation_list.md"},a=n('
门票公示

TIP

请在备注内包含 Shmily 字样

如有遗漏或疑问,请发送截图至 i@lqzh.me

有问题请请发 Email 或 issues, 我没法通过收款码联系你的


时间姓名金额来源项目
2024/03/06 18:08:09*寒10WechatShmily
2024/02/24 18:15:43a*s2Wechatwechat-need-web
2024/01/11 23:47:09*晨10AlipayShmily
2023/12/29 23:34:10*赢10WechatShmily
2023/12/12 18:48:50t*b18.88WechatShmily
2023/12/08 09:51:19**焜50AlipayShmily
2023/11/24 19:18:28*生20WechatShmily
2023/11/22 10:17:50*羊5.61WechatShmily
2023/11/19 01:39:48A*s5WechatShmily
2023/11/18 17:08:15*畅11.11AlipayShmily
2023/11/18 14:51:42*翔10AlipayShmily
2023/11/02 14:56:02**勇15AlipayShmily
2023/09/03 17:12:36*门10WechatShmily
',5),r=[a];function i(s,c,y,g,x,h){return l(),e("div",null,r)}const m=t(d,[["render",i]]);export{_ as __pageData,m as default}; diff --git a/assets/guide_other_donation_list.md.JFJl5Vz8.js b/assets/guide_other_donation_list.md.JFJl5Vz8.js new file mode 100644 index 0000000..db030a7 --- /dev/null +++ b/assets/guide_other_donation_list.md.JFJl5Vz8.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as l,R as n}from"./chunks/framework.xvtSDt2M.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation_list.md","filePath":"guide/other/donation_list.md","lastUpdated":1713155566000}'),d={name:"guide/other/donation_list.md"},a=n('
门票公示

TIP

请在备注内包含 Shmily 字样

如有遗漏或疑问,请发送截图至 i@lqzh.me

有问题请请发 Email 或 issues, 我没法通过收款码联系你的


时间姓名金额来源项目
2024/04/15 11:34:26A*n88WechatShmily
2024/04/15 09:25:28$*f88WechatShmily
2024/03/06 18:08:09*寒10WechatShmily
2024/02/24 18:15:43a*s2Wechatwechat-need-web
2024/01/11 23:47:09*晨10AlipayShmily
2023/12/29 23:34:10*赢10WechatShmily
2023/12/12 18:48:50t*b18.88WechatShmily
2023/12/08 09:51:19**焜50AlipayShmily
2023/11/24 19:18:28*生20WechatShmily
2023/11/22 10:17:50*羊5.61WechatShmily
2023/11/19 01:39:48A*s5WechatShmily
2023/11/18 17:08:15*畅11.11AlipayShmily
2023/11/18 14:51:42*翔10AlipayShmily
2023/11/02 14:56:02**勇15AlipayShmily
2023/09/03 17:12:36*门10WechatShmily
',5),r=[a];function i(c,s,y,g,x,h){return l(),e("div",null,r)}const m=t(d,[["render",i]]);export{_ as __pageData,m as default}; diff --git a/assets/guide_other_donation_list.md.E4_4IpF4.lean.js b/assets/guide_other_donation_list.md.JFJl5Vz8.lean.js similarity index 56% rename from assets/guide_other_donation_list.md.E4_4IpF4.lean.js rename to assets/guide_other_donation_list.md.JFJl5Vz8.lean.js index 8dfe0a4..56601a4 100644 --- a/assets/guide_other_donation_list.md.E4_4IpF4.lean.js +++ b/assets/guide_other_donation_list.md.JFJl5Vz8.lean.js @@ -1 +1 @@ -import{_ as t,c as e,o as l,R as n}from"./chunks/framework.xvtSDt2M.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation_list.md","filePath":"guide/other/donation_list.md","lastUpdated":1709878346000}'),d={name:"guide/other/donation_list.md"},a=n("",5),r=[a];function i(s,c,y,g,x,h){return l(),e("div",null,r)}const m=t(d,[["render",i]]);export{_ as __pageData,m as default}; +import{_ as t,c as e,o as l,R as n}from"./chunks/framework.xvtSDt2M.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation_list.md","filePath":"guide/other/donation_list.md","lastUpdated":1713155566000}'),d={name:"guide/other/donation_list.md"},a=n("",5),r=[a];function i(c,s,y,g,x,h){return l(),e("div",null,r)}const m=t(d,[["render",i]]);export{_ as __pageData,m as default}; diff --git a/assets/guide_other_thanks.md.YwFN6rJl.js b/assets/guide_other_thanks.md.bJRpnWDg.js similarity index 97% rename from assets/guide_other_thanks.md.YwFN6rJl.js rename to assets/guide_other_thanks.md.bJRpnWDg.js index f6cfac1..eeebc3b 100644 --- a/assets/guide_other_thanks.md.YwFN6rJl.js +++ b/assets/guide_other_thanks.md.bJRpnWDg.js @@ -1 +1 @@ -import{_ as e,c as t,o as r,R as a}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"感谢","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/thanks.md","filePath":"guide/other/thanks.md","lastUpdated":1709878346000}'),o={name:"guide/other/thanks.md"},h=a('

感谢

这 3 年的开发中受到了各种开源库的启发与帮助, 在此感谢

Adun toridas

神圣的 Ctrl_C 连接着我们每个人的思想!让我们在绝望之中团结一致。

恩人

开发周期有点长, 名单不完整, 会逐步补充

',6),i=[h];function l(s,c,n,p,u,g){return r(),t("div",null,i)}const d=e(o,[["render",l]]);export{m as __pageData,d as default}; +import{_ as e,c as t,o as r,R as a}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"感谢","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/thanks.md","filePath":"guide/other/thanks.md","lastUpdated":1713155566000}'),o={name:"guide/other/thanks.md"},h=a('

感谢

这 3 年的开发中受到了各种开源库的启发与帮助, 在此感谢

Adun toridas

神圣的 Ctrl_C 连接着我们每个人的思想!让我们在绝望之中团结一致。

恩人

开发周期有点长, 名单不完整, 会逐步补充

',6),i=[h];function l(s,c,n,p,u,g){return r(),t("div",null,i)}const d=e(o,[["render",l]]);export{m as __pageData,d as default}; diff --git a/assets/guide_other_thanks.md.YwFN6rJl.lean.js b/assets/guide_other_thanks.md.bJRpnWDg.lean.js similarity index 85% rename from assets/guide_other_thanks.md.YwFN6rJl.lean.js rename to assets/guide_other_thanks.md.bJRpnWDg.lean.js index 132e840..6f3b8b7 100644 --- a/assets/guide_other_thanks.md.YwFN6rJl.lean.js +++ b/assets/guide_other_thanks.md.bJRpnWDg.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as r,R as a}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"感谢","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/thanks.md","filePath":"guide/other/thanks.md","lastUpdated":1709878346000}'),o={name:"guide/other/thanks.md"},h=a("",6),i=[h];function l(s,c,n,p,u,g){return r(),t("div",null,i)}const d=e(o,[["render",l]]);export{m as __pageData,d as default}; +import{_ as e,c as t,o as r,R as a}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"感谢","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/thanks.md","filePath":"guide/other/thanks.md","lastUpdated":1713155566000}'),o={name:"guide/other/thanks.md"},h=a("",6),i=[h];function l(s,c,n,p,u,g){return r(),t("div",null,i)}const d=e(o,[["render",l]]);export{m as __pageData,d as default}; diff --git a/assets/guide_setup-runtime_Android-copy-backup.md.gK7HF23q.js b/assets/guide_setup-runtime_Android-copy-backup.md.K8IGl4hb.js similarity index 94% rename from assets/guide_setup-runtime_Android-copy-backup.md.gK7HF23q.js rename to assets/guide_setup-runtime_Android-copy-backup.md.K8IGl4hb.js index 1794c4c..f6cfd46 100644 --- a/assets/guide_setup-runtime_Android-copy-backup.md.gK7HF23q.js +++ b/assets/guide_setup-runtime_Android-copy-backup.md.K8IGl4hb.js @@ -1 +1 @@ -import{_ as r,c as a,o,k as e,a as t}from"./chunks/framework.xvtSDt2M.js";const f=JSON.parse('{"title":"通过 备份 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-backup.md","filePath":"guide/setup-runtime/Android-copy-backup.md","lastUpdated":1709878346000}'),n={name:"guide/setup-runtime/Android-copy-backup.md"},d=e("h1",{id:"通过-备份-将-android-文件复制到电脑",tabindex:"-1"},[t("通过 备份 将 Android 文件复制到电脑 "),e("a",{class:"header-anchor",href:"#通过-备份-将-android-文件复制到电脑","aria-label":'Permalink to "通过 备份 将 Android 文件复制到电脑"'},"​")],-1),s=e("ul",null,[e("li",null,[t("MIUI 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://github.com/Heyxk/notes/issues/1",target:"_blank",rel:"noreferrer"},"https://github.com/Heyxk/notes/issues/1")]),e("li",null,[t("华为 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://1248.ink/?p=8",target:"_blank",rel:"noreferrer"},"https://1248.ink/?p=8")])],-1),i=[d,s];function c(l,p,u,h,_,m){return o(),a("div",null,i)}const b=r(n,[["render",c]]);export{f as __pageData,b as default}; +import{_ as r,c as a,o,k as e,a as t}from"./chunks/framework.xvtSDt2M.js";const f=JSON.parse('{"title":"通过 备份 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-backup.md","filePath":"guide/setup-runtime/Android-copy-backup.md","lastUpdated":1713155566000}'),n={name:"guide/setup-runtime/Android-copy-backup.md"},d=e("h1",{id:"通过-备份-将-android-文件复制到电脑",tabindex:"-1"},[t("通过 备份 将 Android 文件复制到电脑 "),e("a",{class:"header-anchor",href:"#通过-备份-将-android-文件复制到电脑","aria-label":'Permalink to "通过 备份 将 Android 文件复制到电脑"'},"​")],-1),s=e("ul",null,[e("li",null,[t("MIUI 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://github.com/Heyxk/notes/issues/1",target:"_blank",rel:"noreferrer"},"https://github.com/Heyxk/notes/issues/1")]),e("li",null,[t("华为 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://1248.ink/?p=8",target:"_blank",rel:"noreferrer"},"https://1248.ink/?p=8")])],-1),i=[d,s];function c(l,p,u,h,_,m){return o(),a("div",null,i)}const b=r(n,[["render",c]]);export{f as __pageData,b as default}; diff --git a/assets/guide_setup-runtime_Android-copy-backup.md.gK7HF23q.lean.js b/assets/guide_setup-runtime_Android-copy-backup.md.K8IGl4hb.lean.js similarity index 94% rename from assets/guide_setup-runtime_Android-copy-backup.md.gK7HF23q.lean.js rename to assets/guide_setup-runtime_Android-copy-backup.md.K8IGl4hb.lean.js index 1794c4c..f6cfd46 100644 --- a/assets/guide_setup-runtime_Android-copy-backup.md.gK7HF23q.lean.js +++ b/assets/guide_setup-runtime_Android-copy-backup.md.K8IGl4hb.lean.js @@ -1 +1 @@ -import{_ as r,c as a,o,k as e,a as t}from"./chunks/framework.xvtSDt2M.js";const f=JSON.parse('{"title":"通过 备份 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-backup.md","filePath":"guide/setup-runtime/Android-copy-backup.md","lastUpdated":1709878346000}'),n={name:"guide/setup-runtime/Android-copy-backup.md"},d=e("h1",{id:"通过-备份-将-android-文件复制到电脑",tabindex:"-1"},[t("通过 备份 将 Android 文件复制到电脑 "),e("a",{class:"header-anchor",href:"#通过-备份-将-android-文件复制到电脑","aria-label":'Permalink to "通过 备份 将 Android 文件复制到电脑"'},"​")],-1),s=e("ul",null,[e("li",null,[t("MIUI 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://github.com/Heyxk/notes/issues/1",target:"_blank",rel:"noreferrer"},"https://github.com/Heyxk/notes/issues/1")]),e("li",null,[t("华为 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://1248.ink/?p=8",target:"_blank",rel:"noreferrer"},"https://1248.ink/?p=8")])],-1),i=[d,s];function c(l,p,u,h,_,m){return o(),a("div",null,i)}const b=r(n,[["render",c]]);export{f as __pageData,b as default}; +import{_ as r,c as a,o,k as e,a as t}from"./chunks/framework.xvtSDt2M.js";const f=JSON.parse('{"title":"通过 备份 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-backup.md","filePath":"guide/setup-runtime/Android-copy-backup.md","lastUpdated":1713155566000}'),n={name:"guide/setup-runtime/Android-copy-backup.md"},d=e("h1",{id:"通过-备份-将-android-文件复制到电脑",tabindex:"-1"},[t("通过 备份 将 Android 文件复制到电脑 "),e("a",{class:"header-anchor",href:"#通过-备份-将-android-文件复制到电脑","aria-label":'Permalink to "通过 备份 将 Android 文件复制到电脑"'},"​")],-1),s=e("ul",null,[e("li",null,[t("MIUI 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://github.com/Heyxk/notes/issues/1",target:"_blank",rel:"noreferrer"},"https://github.com/Heyxk/notes/issues/1")]),e("li",null,[t("华为 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://1248.ink/?p=8",target:"_blank",rel:"noreferrer"},"https://1248.ink/?p=8")])],-1),i=[d,s];function c(l,p,u,h,_,m){return o(),a("div",null,i)}const b=r(n,[["render",c]]);export{f as __pageData,b as default}; diff --git a/assets/guide_setup-runtime_Android-copy-root.md.WrHGF5UH.js b/assets/guide_setup-runtime_Android-copy-root.md.YE2j-XMi.js similarity index 95% rename from assets/guide_setup-runtime_Android-copy-root.md.WrHGF5UH.js rename to assets/guide_setup-runtime_Android-copy-root.md.YE2j-XMi.js index a8999f8..2c19a65 100644 --- a/assets/guide_setup-runtime_Android-copy-root.md.WrHGF5UH.js +++ b/assets/guide_setup-runtime_Android-copy-root.md.YE2j-XMi.js @@ -1 +1 @@ -import{_ as o,c as e,o as d,R as t}from"./chunks/framework.xvtSDt2M.js";const A=JSON.parse('{"title":"通过 root 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-root.md","filePath":"guide/setup-runtime/Android-copy-root.md","lastUpdated":1709878346000}'),r={name:"guide/setup-runtime/Android-copy-root.md"},i=t('

通过 root 将 Android 文件复制到电脑

  • 如果手机已 root ,通过 ftp 复制到电脑

  • 没有 root

    主体思路是通过 微信/QQ 等官方数据迁移功能把本机数据迁移到带 rootAndroid 系统内

    • 借一台有 root 的手机
    • 使用 Android 模拟器 / 虚拟机 (一般均自带 root)
      • 在手机上安装模拟器 / 虚拟机
        • 安卓虚拟机有 vmos 光速虚拟机 等
      • 在电脑上安装模拟器 / 虚拟机
',2),c=[i];function l(a,n,s,_,p,u){return d(),e("div",null,c)}const h=o(r,[["render",l]]);export{A as __pageData,h as default}; +import{_ as o,c as e,o as d,R as t}from"./chunks/framework.xvtSDt2M.js";const A=JSON.parse('{"title":"通过 root 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-root.md","filePath":"guide/setup-runtime/Android-copy-root.md","lastUpdated":1713155566000}'),r={name:"guide/setup-runtime/Android-copy-root.md"},i=t('

通过 root 将 Android 文件复制到电脑

  • 如果手机已 root ,通过 ftp 复制到电脑

  • 没有 root

    主体思路是通过 微信/QQ 等官方数据迁移功能把本机数据迁移到带 rootAndroid 系统内

    • 借一台有 root 的手机
    • 使用 Android 模拟器 / 虚拟机 (一般均自带 root)
      • 在手机上安装模拟器 / 虚拟机
        • 安卓虚拟机有 vmos 光速虚拟机 等
      • 在电脑上安装模拟器 / 虚拟机
',2),c=[i];function l(a,n,s,_,p,u){return d(),e("div",null,c)}const h=o(r,[["render",l]]);export{A as __pageData,h as default}; diff --git a/assets/guide_setup-runtime_Android-copy-root.md.WrHGF5UH.lean.js b/assets/guide_setup-runtime_Android-copy-root.md.YE2j-XMi.lean.js similarity index 87% rename from assets/guide_setup-runtime_Android-copy-root.md.WrHGF5UH.lean.js rename to assets/guide_setup-runtime_Android-copy-root.md.YE2j-XMi.lean.js index ca0f0b9..2e9e3fb 100644 --- a/assets/guide_setup-runtime_Android-copy-root.md.WrHGF5UH.lean.js +++ b/assets/guide_setup-runtime_Android-copy-root.md.YE2j-XMi.lean.js @@ -1 +1 @@ -import{_ as o,c as e,o as d,R as t}from"./chunks/framework.xvtSDt2M.js";const A=JSON.parse('{"title":"通过 root 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-root.md","filePath":"guide/setup-runtime/Android-copy-root.md","lastUpdated":1709878346000}'),r={name:"guide/setup-runtime/Android-copy-root.md"},i=t("",2),c=[i];function l(a,n,s,_,p,u){return d(),e("div",null,c)}const h=o(r,[["render",l]]);export{A as __pageData,h as default}; +import{_ as o,c as e,o as d,R as t}from"./chunks/framework.xvtSDt2M.js";const A=JSON.parse('{"title":"通过 root 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-root.md","filePath":"guide/setup-runtime/Android-copy-root.md","lastUpdated":1713155566000}'),r={name:"guide/setup-runtime/Android-copy-root.md"},i=t("",2),c=[i];function l(a,n,s,_,p,u){return d(),e("div",null,c)}const h=o(r,[["render",l]]);export{A as __pageData,h as default}; diff --git a/assets/guide_setup-runtime_Android-copy.md.BUdCbwDN.js b/assets/guide_setup-runtime_Android-copy.md.88hMEFP_.js similarity index 97% rename from assets/guide_setup-runtime_Android-copy.md.BUdCbwDN.js rename to assets/guide_setup-runtime_Android-copy.md.88hMEFP_.js index 89d76a2..9205e68 100644 --- a/assets/guide_setup-runtime_Android-copy.md.BUdCbwDN.js +++ b/assets/guide_setup-runtime_Android-copy.md.88hMEFP_.js @@ -1,4 +1,4 @@ -import{_ as a,c as n,o as s,R as e}from"./chunks/framework.xvtSDt2M.js";const _=JSON.parse('{"title":"Android 复制文件到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy.md","filePath":"guide/setup-runtime/Android-copy.md","lastUpdated":1709878346000}'),p={name:"guide/setup-runtime/Android-copy.md"},o=e(`

Android 复制文件到电脑

说明

Android 手机的文件夹大致如下

- data // 保护区, 需要 root 权限
+import{_ as a,c as n,o as s,R as e}from"./chunks/framework.xvtSDt2M.js";const _=JSON.parse('{"title":"Android 复制文件到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy.md","filePath":"guide/setup-runtime/Android-copy.md","lastUpdated":1713155566000}'),p={name:"guide/setup-runtime/Android-copy.md"},o=e(`

Android 复制文件到电脑

说明

Android 手机的文件夹大致如下

- data // 保护区, 需要 root 权限
     - data
        - com.tencent.mm 
        - ...
diff --git a/assets/guide_setup-runtime_Android-copy.md.BUdCbwDN.lean.js b/assets/guide_setup-runtime_Android-copy.md.88hMEFP_.lean.js
similarity index 87%
rename from assets/guide_setup-runtime_Android-copy.md.BUdCbwDN.lean.js
rename to assets/guide_setup-runtime_Android-copy.md.88hMEFP_.lean.js
index c0cacfd..474b979 100644
--- a/assets/guide_setup-runtime_Android-copy.md.BUdCbwDN.lean.js
+++ b/assets/guide_setup-runtime_Android-copy.md.88hMEFP_.lean.js
@@ -1 +1 @@
-import{_ as a,c as n,o as s,R as e}from"./chunks/framework.xvtSDt2M.js";const _=JSON.parse('{"title":"Android 复制文件到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy.md","filePath":"guide/setup-runtime/Android-copy.md","lastUpdated":1709878346000}'),p={name:"guide/setup-runtime/Android-copy.md"},o=e("",10),t=[o];function i(d,c,l,r,h,u){return s(),n("div",null,t)}const b=a(p,[["render",i]]);export{_ as __pageData,b as default};
+import{_ as a,c as n,o as s,R as e}from"./chunks/framework.xvtSDt2M.js";const _=JSON.parse('{"title":"Android 复制文件到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy.md","filePath":"guide/setup-runtime/Android-copy.md","lastUpdated":1713155566000}'),p={name:"guide/setup-runtime/Android-copy.md"},o=e("",10),t=[o];function i(d,c,l,r,h,u){return s(),n("div",null,t)}const b=a(p,[["render",i]]);export{_ as __pageData,b as default};
diff --git a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.RQRMWlXt.js b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.LkgaY2MT.js
similarity index 98%
rename from assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.RQRMWlXt.js
rename to assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.LkgaY2MT.js
index 842e1c6..cf477f5 100644
--- a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.RQRMWlXt.js
+++ b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.LkgaY2MT.js
@@ -1,4 +1,4 @@
-import{_ as n,c as s,o as a,R as e}from"./chunks/framework.xvtSDt2M.js";const h=JSON.parse('{"title":"Cannot find module ‘xxxxxx’","description":"","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"headers":[],"relativePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","filePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","lastUpdated":1709878346000}'),l={name:"guide/setup-runtime/Q&A-detail/cannot-find-module.md"},d=e(`

DANGER

Cannot find module ‘xxxxxx’

报错详情
Error: Cannot find module 'fs-extra'
+import{_ as n,c as s,o as a,R as e}from"./chunks/framework.xvtSDt2M.js";const h=JSON.parse('{"title":"Cannot find module ‘xxxxxx’","description":"","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"headers":[],"relativePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","filePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","lastUpdated":1713155566000}'),l={name:"guide/setup-runtime/Q&A-detail/cannot-find-module.md"},d=e(`

DANGER

Cannot find module ‘xxxxxx’

报错详情
Error: Cannot find module 'fs-extra'
 Require stack:
 - D:\\transfer_redmi\\AndroidQQ_MIUI\\Shmily-Get-MobileQQ-Andriod\\decode\\utils\\db.js
 - D:\\transfer_redmi\\AndroidQQ_MIUI\\Shmily-Get-MobileQQ-Andriod\\tools\\exportTable.js
diff --git a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.RQRMWlXt.lean.js b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.LkgaY2MT.lean.js
similarity index 89%
rename from assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.RQRMWlXt.lean.js
rename to assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.LkgaY2MT.lean.js
index 773104f..96c30e3 100644
--- a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.RQRMWlXt.lean.js
+++ b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.LkgaY2MT.lean.js
@@ -1 +1 @@
-import{_ as n,c as s,o as a,R as e}from"./chunks/framework.xvtSDt2M.js";const h=JSON.parse('{"title":"Cannot find module ‘xxxxxx’","description":"","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"headers":[],"relativePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","filePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","lastUpdated":1709878346000}'),l={name:"guide/setup-runtime/Q&A-detail/cannot-find-module.md"},d=e("",4),o=[d];function p(t,i,r,c,u,m){return a(),s("div",null,o)}const x=n(l,[["render",p]]);export{h as __pageData,x as default};
+import{_ as n,c as s,o as a,R as e}from"./chunks/framework.xvtSDt2M.js";const h=JSON.parse('{"title":"Cannot find module ‘xxxxxx’","description":"","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"headers":[],"relativePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","filePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","lastUpdated":1713155566000}'),l={name:"guide/setup-runtime/Q&A-detail/cannot-find-module.md"},d=e("",4),o=[d];function p(t,i,r,c,u,m){return a(),s("div",null,o)}const x=n(l,[["render",p]]);export{h as __pageData,x as default};
diff --git a/assets/guide_setup-runtime_Q_A.md.l4uo_75b.js b/assets/guide_setup-runtime_Q_A.md.TYOnaMq7.js
similarity index 98%
rename from assets/guide_setup-runtime_Q_A.md.l4uo_75b.js
rename to assets/guide_setup-runtime_Q_A.md.TYOnaMq7.js
index 3d8c182..ff9a6c0 100644
--- a/assets/guide_setup-runtime_Q_A.md.l4uo_75b.js
+++ b/assets/guide_setup-runtime_Q_A.md.TYOnaMq7.js
@@ -1 +1 @@
-import{d as o,c as s,k as n,F as t,E as i,m as r,a as e,o as l,t as d}from"./chunks/framework.xvtSDt2M.js";const p=JSON.parse(`[{"src":"---\\ntitle: Cannot find module ‘xxxxxx’\\nauthor: '@appinn.com F124nk1e'\\n---\\n\\n::: danger\\nCannot find module ‘xxxxxx’\\n:::\\n\\n
报错详情\\n\\n\`\`\`\\nError: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n at Module._load (node:internal/modules/cjs/loader:893:27)\\n at Module.require (node:internal/modules/cjs/loader:1113:19)\\n at require (node:internal/modules/cjs/helpers:103:18)\\n at Object. (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n at Module.load (node:internal/modules/cjs/loader:1089:32)\\n at Module._load (node:internal/modules/cjs/loader:930:12)\\n at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n code: 'MODULE_NOT_FOUND',\\n requireStack: [\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n ]\\n}\\n\\nNode.js v18.14.0\\n\`\`\`\\n\\n
\\n\\n##### 解决办法\\n\\n\`nodejs\` 没有安装依赖, 参考 [nodejs](./nodejs.md) \`2.安装依赖\`\\n","html":"

DANGER

\\n

Cannot find module ‘xxxxxx’

\\n
\\n
报错详情\\n
Error: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n    at Module._load (node:internal/modules/cjs/loader:893:27)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19)\\n    at require (node:internal/modules/cjs/helpers:103:18)\\n    at Object.<anonymous> (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n    at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n    at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n    at Module.load (node:internal/modules/cjs/loader:1089:32)\\n    at Module._load (node:internal/modules/cjs/loader:930:12)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n  code: 'MODULE_NOT_FOUND',\\n  requireStack: [\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n  ]\\n}\\n\\nNode.js v18.14.0
\\n
\\n
解决办法
\\n

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

\\n","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"excerpt":"","url":"/guide/setup-runtime/Q&A-detail/cannot-find-module.html"}]`),c=n("h1",{id:"q-a",tabindex:"-1"},[e("Q & A "),n("a",{class:"header-anchor",href:"#q-a","aria-label":'Permalink to "Q & A"'},"​")],-1),u=n("blockquote",null,[n("p",null,[e("如需新增, 请新建 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/{新问题}.md")]),n("p",null,[e("内容参考模板 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/template.md.tpl")])],-1),m=n("h2",{id:"常见问题",tabindex:"-1"},[e("常见问题 "),n("a",{class:"header-anchor",href:"#常见问题","aria-label":'Permalink to "常见问题"'},"​")],-1),_={class:"qa-list"},h={class:"title"},Q={class:"link",target:"_blank"},j={class:"author"},x=["innerHTML"],k=JSON.parse('{"title":"Q & A","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Q&A.md","filePath":"guide/setup-runtime/Q&A.md","lastUpdated":1709878346000}'),M={name:"guide/setup-runtime/Q&A.md"},I=o({...M,setup(b){return(f,A)=>(l(),s("div",null,[c,u,m,n("div",null,[(l(!0),s(t,null,i(r(p),a=>(l(),s("details",_,[n("summary",h,[n("h4",Q,d(a.frontmatter.title),1),n("span",j,"by "+d(a.frontmatter.author),1)]),n("div",{class:"detail",innerHTML:a.html},null,8,x)]))),256))])]))}});export{k as __pageData,I as default}; +import{d as o,c as s,k as n,F as t,E as i,m as r,a as e,o as l,t as d}from"./chunks/framework.xvtSDt2M.js";const p=JSON.parse(`[{"src":"---\\ntitle: Cannot find module ‘xxxxxx’\\nauthor: '@appinn.com F124nk1e'\\n---\\n\\n::: danger\\nCannot find module ‘xxxxxx’\\n:::\\n\\n
报错详情\\n\\n\`\`\`\\nError: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n at Module._load (node:internal/modules/cjs/loader:893:27)\\n at Module.require (node:internal/modules/cjs/loader:1113:19)\\n at require (node:internal/modules/cjs/helpers:103:18)\\n at Object. (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n at Module.load (node:internal/modules/cjs/loader:1089:32)\\n at Module._load (node:internal/modules/cjs/loader:930:12)\\n at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n code: 'MODULE_NOT_FOUND',\\n requireStack: [\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n ]\\n}\\n\\nNode.js v18.14.0\\n\`\`\`\\n\\n
\\n\\n##### 解决办法\\n\\n\`nodejs\` 没有安装依赖, 参考 [nodejs](./nodejs.md) \`2.安装依赖\`\\n","html":"

DANGER

\\n

Cannot find module ‘xxxxxx’

\\n
\\n
报错详情\\n
Error: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n    at Module._load (node:internal/modules/cjs/loader:893:27)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19)\\n    at require (node:internal/modules/cjs/helpers:103:18)\\n    at Object.<anonymous> (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n    at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n    at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n    at Module.load (node:internal/modules/cjs/loader:1089:32)\\n    at Module._load (node:internal/modules/cjs/loader:930:12)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n  code: 'MODULE_NOT_FOUND',\\n  requireStack: [\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n  ]\\n}\\n\\nNode.js v18.14.0
\\n
\\n
解决办法
\\n

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

\\n","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"excerpt":"","url":"/guide/setup-runtime/Q&A-detail/cannot-find-module.html"}]`),c=n("h1",{id:"q-a",tabindex:"-1"},[e("Q & A "),n("a",{class:"header-anchor",href:"#q-a","aria-label":'Permalink to "Q & A"'},"​")],-1),u=n("blockquote",null,[n("p",null,[e("如需新增, 请新建 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/{新问题}.md")]),n("p",null,[e("内容参考模板 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/template.md.tpl")])],-1),m=n("h2",{id:"常见问题",tabindex:"-1"},[e("常见问题 "),n("a",{class:"header-anchor",href:"#常见问题","aria-label":'Permalink to "常见问题"'},"​")],-1),_={class:"qa-list"},h={class:"title"},Q={class:"link",target:"_blank"},j={class:"author"},x=["innerHTML"],k=JSON.parse('{"title":"Q & A","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Q&A.md","filePath":"guide/setup-runtime/Q&A.md","lastUpdated":1713155566000}'),M={name:"guide/setup-runtime/Q&A.md"},I=o({...M,setup(b){return(f,A)=>(l(),s("div",null,[c,u,m,n("div",null,[(l(!0),s(t,null,i(r(p),a=>(l(),s("details",_,[n("summary",h,[n("h4",Q,d(a.frontmatter.title),1),n("span",j,"by "+d(a.frontmatter.author),1)]),n("div",{class:"detail",innerHTML:a.html},null,8,x)]))),256))])]))}});export{k as __pageData,I as default}; diff --git a/assets/guide_setup-runtime_Q_A.md.l4uo_75b.lean.js b/assets/guide_setup-runtime_Q_A.md.TYOnaMq7.lean.js similarity index 98% rename from assets/guide_setup-runtime_Q_A.md.l4uo_75b.lean.js rename to assets/guide_setup-runtime_Q_A.md.TYOnaMq7.lean.js index 3d8c182..ff9a6c0 100644 --- a/assets/guide_setup-runtime_Q_A.md.l4uo_75b.lean.js +++ b/assets/guide_setup-runtime_Q_A.md.TYOnaMq7.lean.js @@ -1 +1 @@ -import{d as o,c as s,k as n,F as t,E as i,m as r,a as e,o as l,t as d}from"./chunks/framework.xvtSDt2M.js";const p=JSON.parse(`[{"src":"---\\ntitle: Cannot find module ‘xxxxxx’\\nauthor: '@appinn.com F124nk1e'\\n---\\n\\n::: danger\\nCannot find module ‘xxxxxx’\\n:::\\n\\n
报错详情\\n\\n\`\`\`\\nError: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n at Module._load (node:internal/modules/cjs/loader:893:27)\\n at Module.require (node:internal/modules/cjs/loader:1113:19)\\n at require (node:internal/modules/cjs/helpers:103:18)\\n at Object. (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n at Module.load (node:internal/modules/cjs/loader:1089:32)\\n at Module._load (node:internal/modules/cjs/loader:930:12)\\n at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n code: 'MODULE_NOT_FOUND',\\n requireStack: [\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n ]\\n}\\n\\nNode.js v18.14.0\\n\`\`\`\\n\\n
\\n\\n##### 解决办法\\n\\n\`nodejs\` 没有安装依赖, 参考 [nodejs](./nodejs.md) \`2.安装依赖\`\\n","html":"

DANGER

\\n

Cannot find module ‘xxxxxx’

\\n
\\n
报错详情\\n
Error: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n    at Module._load (node:internal/modules/cjs/loader:893:27)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19)\\n    at require (node:internal/modules/cjs/helpers:103:18)\\n    at Object.<anonymous> (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n    at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n    at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n    at Module.load (node:internal/modules/cjs/loader:1089:32)\\n    at Module._load (node:internal/modules/cjs/loader:930:12)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n  code: 'MODULE_NOT_FOUND',\\n  requireStack: [\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n  ]\\n}\\n\\nNode.js v18.14.0
\\n
\\n
解决办法
\\n

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

\\n","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"excerpt":"","url":"/guide/setup-runtime/Q&A-detail/cannot-find-module.html"}]`),c=n("h1",{id:"q-a",tabindex:"-1"},[e("Q & A "),n("a",{class:"header-anchor",href:"#q-a","aria-label":'Permalink to "Q & A"'},"​")],-1),u=n("blockquote",null,[n("p",null,[e("如需新增, 请新建 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/{新问题}.md")]),n("p",null,[e("内容参考模板 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/template.md.tpl")])],-1),m=n("h2",{id:"常见问题",tabindex:"-1"},[e("常见问题 "),n("a",{class:"header-anchor",href:"#常见问题","aria-label":'Permalink to "常见问题"'},"​")],-1),_={class:"qa-list"},h={class:"title"},Q={class:"link",target:"_blank"},j={class:"author"},x=["innerHTML"],k=JSON.parse('{"title":"Q & A","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Q&A.md","filePath":"guide/setup-runtime/Q&A.md","lastUpdated":1709878346000}'),M={name:"guide/setup-runtime/Q&A.md"},I=o({...M,setup(b){return(f,A)=>(l(),s("div",null,[c,u,m,n("div",null,[(l(!0),s(t,null,i(r(p),a=>(l(),s("details",_,[n("summary",h,[n("h4",Q,d(a.frontmatter.title),1),n("span",j,"by "+d(a.frontmatter.author),1)]),n("div",{class:"detail",innerHTML:a.html},null,8,x)]))),256))])]))}});export{k as __pageData,I as default}; +import{d as o,c as s,k as n,F as t,E as i,m as r,a as e,o as l,t as d}from"./chunks/framework.xvtSDt2M.js";const p=JSON.parse(`[{"src":"---\\ntitle: Cannot find module ‘xxxxxx’\\nauthor: '@appinn.com F124nk1e'\\n---\\n\\n::: danger\\nCannot find module ‘xxxxxx’\\n:::\\n\\n
报错详情\\n\\n\`\`\`\\nError: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n at Module._load (node:internal/modules/cjs/loader:893:27)\\n at Module.require (node:internal/modules/cjs/loader:1113:19)\\n at require (node:internal/modules/cjs/helpers:103:18)\\n at Object. (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n at Module.load (node:internal/modules/cjs/loader:1089:32)\\n at Module._load (node:internal/modules/cjs/loader:930:12)\\n at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n code: 'MODULE_NOT_FOUND',\\n requireStack: [\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n ]\\n}\\n\\nNode.js v18.14.0\\n\`\`\`\\n\\n
\\n\\n##### 解决办法\\n\\n\`nodejs\` 没有安装依赖, 参考 [nodejs](./nodejs.md) \`2.安装依赖\`\\n","html":"

DANGER

\\n

Cannot find module ‘xxxxxx’

\\n
\\n
报错详情\\n
Error: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n    at Module._load (node:internal/modules/cjs/loader:893:27)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19)\\n    at require (node:internal/modules/cjs/helpers:103:18)\\n    at Object.<anonymous> (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n    at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n    at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n    at Module.load (node:internal/modules/cjs/loader:1089:32)\\n    at Module._load (node:internal/modules/cjs/loader:930:12)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n  code: 'MODULE_NOT_FOUND',\\n  requireStack: [\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n  ]\\n}\\n\\nNode.js v18.14.0
\\n
\\n
解决办法
\\n

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

\\n","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"excerpt":"","url":"/guide/setup-runtime/Q&A-detail/cannot-find-module.html"}]`),c=n("h1",{id:"q-a",tabindex:"-1"},[e("Q & A "),n("a",{class:"header-anchor",href:"#q-a","aria-label":'Permalink to "Q & A"'},"​")],-1),u=n("blockquote",null,[n("p",null,[e("如需新增, 请新建 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/{新问题}.md")]),n("p",null,[e("内容参考模板 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/template.md.tpl")])],-1),m=n("h2",{id:"常见问题",tabindex:"-1"},[e("常见问题 "),n("a",{class:"header-anchor",href:"#常见问题","aria-label":'Permalink to "常见问题"'},"​")],-1),_={class:"qa-list"},h={class:"title"},Q={class:"link",target:"_blank"},j={class:"author"},x=["innerHTML"],k=JSON.parse('{"title":"Q & A","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Q&A.md","filePath":"guide/setup-runtime/Q&A.md","lastUpdated":1713155566000}'),M={name:"guide/setup-runtime/Q&A.md"},I=o({...M,setup(b){return(f,A)=>(l(),s("div",null,[c,u,m,n("div",null,[(l(!0),s(t,null,i(r(p),a=>(l(),s("details",_,[n("summary",h,[n("h4",Q,d(a.frontmatter.title),1),n("span",j,"by "+d(a.frontmatter.author),1)]),n("div",{class:"detail",innerHTML:a.html},null,8,x)]))),256))])]))}});export{k as __pageData,I as default}; diff --git a/assets/guide_setup-runtime_docker.md.UwPrAXMm.js b/assets/guide_setup-runtime_docker.md.zp9VLW4i.js similarity index 93% rename from assets/guide_setup-runtime_docker.md.UwPrAXMm.js rename to assets/guide_setup-runtime_docker.md.zp9VLW4i.js index 9345c8e..f7c0c32 100644 --- a/assets/guide_setup-runtime_docker.md.UwPrAXMm.js +++ b/assets/guide_setup-runtime_docker.md.zp9VLW4i.js @@ -1 +1 @@ -import{_ as e,c as t,o,R as r}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"开始 docker","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/docker.md","filePath":"guide/setup-runtime/docker.md","lastUpdated":1709878346000}'),a={name:"guide/setup-runtime/docker.md"},i=r('

开始 docker

  • 官网下载 docker desktop
  • 全默认下一步完成
',3),c=[i];function d(s,l,n,_,p,k){return o(),t("div",null,c)}const h=e(a,[["render",d]]);export{m as __pageData,h as default}; +import{_ as e,c as t,o,R as r}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"开始 docker","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/docker.md","filePath":"guide/setup-runtime/docker.md","lastUpdated":1713155566000}'),a={name:"guide/setup-runtime/docker.md"},i=r('

开始 docker

  • 官网下载 docker desktop
  • 全默认下一步完成
',3),c=[i];function d(s,l,n,_,p,k){return o(),t("div",null,c)}const h=e(a,[["render",d]]);export{m as __pageData,h as default}; diff --git a/assets/guide_setup-runtime_docker.md.UwPrAXMm.lean.js b/assets/guide_setup-runtime_docker.md.zp9VLW4i.lean.js similarity index 85% rename from assets/guide_setup-runtime_docker.md.UwPrAXMm.lean.js rename to assets/guide_setup-runtime_docker.md.zp9VLW4i.lean.js index eb715ae..f5f6166 100644 --- a/assets/guide_setup-runtime_docker.md.UwPrAXMm.lean.js +++ b/assets/guide_setup-runtime_docker.md.zp9VLW4i.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o,R as r}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"开始 docker","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/docker.md","filePath":"guide/setup-runtime/docker.md","lastUpdated":1709878346000}'),a={name:"guide/setup-runtime/docker.md"},i=r("",3),c=[i];function d(s,l,n,_,p,k){return o(),t("div",null,c)}const h=e(a,[["render",d]]);export{m as __pageData,h as default}; +import{_ as e,c as t,o,R as r}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"开始 docker","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/docker.md","filePath":"guide/setup-runtime/docker.md","lastUpdated":1713155566000}'),a={name:"guide/setup-runtime/docker.md"},i=r("",3),c=[i];function d(s,l,n,_,p,k){return o(),t("div",null,c)}const h=e(a,[["render",d]]);export{m as __pageData,h as default}; diff --git a/assets/guide_setup-runtime_explain.md.ST2bHcw6.js b/assets/guide_setup-runtime_explain.md.Qgd3Bei5.js similarity index 92% rename from assets/guide_setup-runtime_explain.md.ST2bHcw6.js rename to assets/guide_setup-runtime_explain.md.Qgd3Bei5.js index e7cd083..4ef9a0c 100644 --- a/assets/guide_setup-runtime_explain.md.ST2bHcw6.js +++ b/assets/guide_setup-runtime_explain.md.Qgd3Bei5.js @@ -1 +1 @@ -import{_ as t,c as a,o as s,k as e,a as n}from"./chunks/framework.xvtSDt2M.js";const k=JSON.parse('{"title":"说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/explain.md","filePath":"guide/setup-runtime/explain.md","lastUpdated":1709878346000}'),o={name:"guide/setup-runtime/explain.md"},i=e("h1",{id:"说明",tabindex:"-1"},[n("说明 "),e("a",{class:"header-anchor",href:"#说明","aria-label":'Permalink to "说明"'},"​")],-1),r=e("p",null,"这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行",-1),d=e("p",null,"每个项目有自己所需要的运行时, 按照项目文档进行即可.",-1),c=e("p",null,"不是说这里的运行时你需要全部安装",-1),l=[i,r,d,c];function p(_,u,h,m,f,x){return s(),a("div",null,l)}const $=t(o,[["render",p]]);export{k as __pageData,$ as default}; +import{_ as t,c as a,o as s,k as e,a as n}from"./chunks/framework.xvtSDt2M.js";const k=JSON.parse('{"title":"说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/explain.md","filePath":"guide/setup-runtime/explain.md","lastUpdated":1713155566000}'),o={name:"guide/setup-runtime/explain.md"},i=e("h1",{id:"说明",tabindex:"-1"},[n("说明 "),e("a",{class:"header-anchor",href:"#说明","aria-label":'Permalink to "说明"'},"​")],-1),r=e("p",null,"这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行",-1),d=e("p",null,"每个项目有自己所需要的运行时, 按照项目文档进行即可.",-1),c=e("p",null,"不是说这里的运行时你需要全部安装",-1),l=[i,r,d,c];function p(_,u,h,m,f,x){return s(),a("div",null,l)}const $=t(o,[["render",p]]);export{k as __pageData,$ as default}; diff --git a/assets/guide_setup-runtime_explain.md.ST2bHcw6.lean.js b/assets/guide_setup-runtime_explain.md.Qgd3Bei5.lean.js similarity index 92% rename from assets/guide_setup-runtime_explain.md.ST2bHcw6.lean.js rename to assets/guide_setup-runtime_explain.md.Qgd3Bei5.lean.js index e7cd083..4ef9a0c 100644 --- a/assets/guide_setup-runtime_explain.md.ST2bHcw6.lean.js +++ b/assets/guide_setup-runtime_explain.md.Qgd3Bei5.lean.js @@ -1 +1 @@ -import{_ as t,c as a,o as s,k as e,a as n}from"./chunks/framework.xvtSDt2M.js";const k=JSON.parse('{"title":"说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/explain.md","filePath":"guide/setup-runtime/explain.md","lastUpdated":1709878346000}'),o={name:"guide/setup-runtime/explain.md"},i=e("h1",{id:"说明",tabindex:"-1"},[n("说明 "),e("a",{class:"header-anchor",href:"#说明","aria-label":'Permalink to "说明"'},"​")],-1),r=e("p",null,"这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行",-1),d=e("p",null,"每个项目有自己所需要的运行时, 按照项目文档进行即可.",-1),c=e("p",null,"不是说这里的运行时你需要全部安装",-1),l=[i,r,d,c];function p(_,u,h,m,f,x){return s(),a("div",null,l)}const $=t(o,[["render",p]]);export{k as __pageData,$ as default}; +import{_ as t,c as a,o as s,k as e,a as n}from"./chunks/framework.xvtSDt2M.js";const k=JSON.parse('{"title":"说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/explain.md","filePath":"guide/setup-runtime/explain.md","lastUpdated":1713155566000}'),o={name:"guide/setup-runtime/explain.md"},i=e("h1",{id:"说明",tabindex:"-1"},[n("说明 "),e("a",{class:"header-anchor",href:"#说明","aria-label":'Permalink to "说明"'},"​")],-1),r=e("p",null,"这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行",-1),d=e("p",null,"每个项目有自己所需要的运行时, 按照项目文档进行即可.",-1),c=e("p",null,"不是说这里的运行时你需要全部安装",-1),l=[i,r,d,c];function p(_,u,h,m,f,x){return s(),a("div",null,l)}const $=t(o,[["render",p]]);export{k as __pageData,$ as default}; diff --git a/assets/guide_setup-runtime_github-down-repo.md.vVBJk8U5.js b/assets/guide_setup-runtime_github-down-repo.md.cqEZEarE.js similarity index 91% rename from assets/guide_setup-runtime_github-down-repo.md.vVBJk8U5.js rename to assets/guide_setup-runtime_github-down-repo.md.cqEZEarE.js index ed6ac3b..ce8735e 100644 --- a/assets/guide_setup-runtime_github-down-repo.md.vVBJk8U5.js +++ b/assets/guide_setup-runtime_github-down-repo.md.cqEZEarE.js @@ -1 +1 @@ -import{_ as t}from"./chunks/down_repo.IpAN7Bl0.js";import{_ as o,c as a,o as r,k as e,a as i}from"./chunks/framework.xvtSDt2M.js";const w=JSON.parse('{"title":"Github 下载项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/github-down-repo.md","filePath":"guide/setup-runtime/github-down-repo.md","lastUpdated":1709878346000}'),s={name:"guide/setup-runtime/github-down-repo.md"},n=e("h1",{id:"github-下载项目",tabindex:"-1"},[i("Github 下载项目 "),e("a",{class:"header-anchor",href:"#github-下载项目","aria-label":'Permalink to "Github 下载项目"'},"​")],-1),d=e("p",null,[e("img",{src:t,alt:"download repo"})],-1),u=[n,d];function c(p,h,_,l,m,b){return r(),a("div",null,u)}const x=o(s,[["render",c]]);export{w as __pageData,x as default}; +import{_ as t}from"./chunks/down_repo.IpAN7Bl0.js";import{_ as o,c as a,o as r,k as e,a as i}from"./chunks/framework.xvtSDt2M.js";const w=JSON.parse('{"title":"Github 下载项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/github-down-repo.md","filePath":"guide/setup-runtime/github-down-repo.md","lastUpdated":1713155566000}'),s={name:"guide/setup-runtime/github-down-repo.md"},n=e("h1",{id:"github-下载项目",tabindex:"-1"},[i("Github 下载项目 "),e("a",{class:"header-anchor",href:"#github-下载项目","aria-label":'Permalink to "Github 下载项目"'},"​")],-1),d=e("p",null,[e("img",{src:t,alt:"download repo"})],-1),u=[n,d];function c(p,h,_,l,m,b){return r(),a("div",null,u)}const x=o(s,[["render",c]]);export{w as __pageData,x as default}; diff --git a/assets/guide_setup-runtime_github-down-repo.md.vVBJk8U5.lean.js b/assets/guide_setup-runtime_github-down-repo.md.cqEZEarE.lean.js similarity index 91% rename from assets/guide_setup-runtime_github-down-repo.md.vVBJk8U5.lean.js rename to assets/guide_setup-runtime_github-down-repo.md.cqEZEarE.lean.js index ed6ac3b..ce8735e 100644 --- a/assets/guide_setup-runtime_github-down-repo.md.vVBJk8U5.lean.js +++ b/assets/guide_setup-runtime_github-down-repo.md.cqEZEarE.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/down_repo.IpAN7Bl0.js";import{_ as o,c as a,o as r,k as e,a as i}from"./chunks/framework.xvtSDt2M.js";const w=JSON.parse('{"title":"Github 下载项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/github-down-repo.md","filePath":"guide/setup-runtime/github-down-repo.md","lastUpdated":1709878346000}'),s={name:"guide/setup-runtime/github-down-repo.md"},n=e("h1",{id:"github-下载项目",tabindex:"-1"},[i("Github 下载项目 "),e("a",{class:"header-anchor",href:"#github-下载项目","aria-label":'Permalink to "Github 下载项目"'},"​")],-1),d=e("p",null,[e("img",{src:t,alt:"download repo"})],-1),u=[n,d];function c(p,h,_,l,m,b){return r(),a("div",null,u)}const x=o(s,[["render",c]]);export{w as __pageData,x as default}; +import{_ as t}from"./chunks/down_repo.IpAN7Bl0.js";import{_ as o,c as a,o as r,k as e,a as i}from"./chunks/framework.xvtSDt2M.js";const w=JSON.parse('{"title":"Github 下载项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/github-down-repo.md","filePath":"guide/setup-runtime/github-down-repo.md","lastUpdated":1713155566000}'),s={name:"guide/setup-runtime/github-down-repo.md"},n=e("h1",{id:"github-下载项目",tabindex:"-1"},[i("Github 下载项目 "),e("a",{class:"header-anchor",href:"#github-下载项目","aria-label":'Permalink to "Github 下载项目"'},"​")],-1),d=e("p",null,[e("img",{src:t,alt:"download repo"})],-1),u=[n,d];function c(p,h,_,l,m,b){return r(),a("div",null,u)}const x=o(s,[["render",c]]);export{w as __pageData,x as default}; diff --git a/assets/guide_setup-runtime_java.md.STJGxBMs.js b/assets/guide_setup-runtime_java.md.l1rsPpNz.js similarity index 94% rename from assets/guide_setup-runtime_java.md.STJGxBMs.js rename to assets/guide_setup-runtime_java.md.l1rsPpNz.js index 05cd1ef..342ec13 100644 --- a/assets/guide_setup-runtime_java.md.STJGxBMs.js +++ b/assets/guide_setup-runtime_java.md.l1rsPpNz.js @@ -1 +1 @@ -import{_ as a,c as e,o as t,R as o}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"开始 java 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/java.md","filePath":"guide/setup-runtime/java.md","lastUpdated":1709878346000}'),r={name:"guide/setup-runtime/java.md"},l=o('

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

',4),i=[l];function c(s,n,d,_,u,h){return t(),e("div",null,i)}const f=a(r,[["render",c]]);export{m as __pageData,f as default}; +import{_ as a,c as e,o as t,R as o}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"开始 java 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/java.md","filePath":"guide/setup-runtime/java.md","lastUpdated":1713155566000}'),r={name:"guide/setup-runtime/java.md"},l=o('

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

',4),i=[l];function c(s,n,d,_,u,h){return t(),e("div",null,i)}const f=a(r,[["render",c]]);export{m as __pageData,f as default}; diff --git a/assets/guide_setup-runtime_java.md.STJGxBMs.lean.js b/assets/guide_setup-runtime_java.md.l1rsPpNz.lean.js similarity index 86% rename from assets/guide_setup-runtime_java.md.STJGxBMs.lean.js rename to assets/guide_setup-runtime_java.md.l1rsPpNz.lean.js index 6e3003f..cb7f617 100644 --- a/assets/guide_setup-runtime_java.md.STJGxBMs.lean.js +++ b/assets/guide_setup-runtime_java.md.l1rsPpNz.lean.js @@ -1 +1 @@ -import{_ as a,c as e,o as t,R as o}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"开始 java 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/java.md","filePath":"guide/setup-runtime/java.md","lastUpdated":1709878346000}'),r={name:"guide/setup-runtime/java.md"},l=o("",4),i=[l];function c(s,n,d,_,u,h){return t(),e("div",null,i)}const f=a(r,[["render",c]]);export{m as __pageData,f as default}; +import{_ as a,c as e,o as t,R as o}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"开始 java 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/java.md","filePath":"guide/setup-runtime/java.md","lastUpdated":1713155566000}'),r={name:"guide/setup-runtime/java.md"},l=o("",4),i=[l];function c(s,n,d,_,u,h){return t(),e("div",null,i)}const f=a(r,[["render",c]]);export{m as __pageData,f as default}; diff --git a/assets/guide_setup-runtime_nodejs-dependencies.md.Z4JdV86O.js b/assets/guide_setup-runtime_nodejs-dependencies.md.L2YJEKK-.js similarity index 95% rename from assets/guide_setup-runtime_nodejs-dependencies.md.Z4JdV86O.js rename to assets/guide_setup-runtime_nodejs-dependencies.md.L2YJEKK-.js index 0723c62..549673d 100644 --- a/assets/guide_setup-runtime_nodejs-dependencies.md.Z4JdV86O.js +++ b/assets/guide_setup-runtime_nodejs-dependencies.md.L2YJEKK-.js @@ -1,4 +1,4 @@ -import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as e,c as a,o as n,R as p}from"./chunks/framework.xvtSDt2M.js";const i="/Shmily/assets/node-dependencies.A7ijJX1J.png",t="/Shmily/assets/npm i.o9ROlmrI.png",f=JSON.parse('{"title":"安装 nodejs 项目依赖","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-dependencies.md","filePath":"guide/setup-runtime/nodejs-dependencies.md","lastUpdated":1709878346000}'),o={name:"guide/setup-runtime/nodejs-dependencies.md"},l=p('

安装 nodejs 项目依赖

下面提供 从项目下载从本地安装 两种方式, 二选一即可

从项目下载 (建议)

从项目下载依赖

可以查看项目是否有 node_modules 分支, 如果有, 可以直接下载其中的压缩包并解压到项目目录

// 解压后项目文件夹结构
+import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as e,c as a,o as n,R as p}from"./chunks/framework.xvtSDt2M.js";const i="/Shmily/assets/node-dependencies.A7ijJX1J.png",t="/Shmily/assets/npm i.o9ROlmrI.png",f=JSON.parse('{"title":"安装 nodejs 项目依赖","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-dependencies.md","filePath":"guide/setup-runtime/nodejs-dependencies.md","lastUpdated":1713155566000}'),o={name:"guide/setup-runtime/nodejs-dependencies.md"},l=p('

安装 nodejs 项目依赖

下面提供 从项目下载从本地安装 两种方式, 二选一即可

从项目下载 (建议)

从项目下载依赖

可以查看项目是否有 node_modules 分支, 如果有, 可以直接下载其中的压缩包并解压到项目目录

// 解压后项目文件夹结构
 
 -\\
   - node_modules
diff --git a/assets/guide_setup-runtime_nodejs-dependencies.md.Z4JdV86O.lean.js b/assets/guide_setup-runtime_nodejs-dependencies.md.L2YJEKK-.lean.js
similarity index 80%
rename from assets/guide_setup-runtime_nodejs-dependencies.md.Z4JdV86O.lean.js
rename to assets/guide_setup-runtime_nodejs-dependencies.md.L2YJEKK-.lean.js
index c50f64d..b689609 100644
--- a/assets/guide_setup-runtime_nodejs-dependencies.md.Z4JdV86O.lean.js
+++ b/assets/guide_setup-runtime_nodejs-dependencies.md.L2YJEKK-.lean.js
@@ -1 +1 @@
-import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as e,c as a,o as n,R as p}from"./chunks/framework.xvtSDt2M.js";const i="/Shmily/assets/node-dependencies.A7ijJX1J.png",t="/Shmily/assets/npm i.o9ROlmrI.png",f=JSON.parse('{"title":"安装 nodejs 项目依赖","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-dependencies.md","filePath":"guide/setup-runtime/nodejs-dependencies.md","lastUpdated":1709878346000}'),o={name:"guide/setup-runtime/nodejs-dependencies.md"},l=p("",7),d=[l];function c(r,m,_,u,h,b){return n(),a("div",null,d)}const k=e(o,[["render",c]]);export{f as __pageData,k as default};
+import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as e,c as a,o as n,R as p}from"./chunks/framework.xvtSDt2M.js";const i="/Shmily/assets/node-dependencies.A7ijJX1J.png",t="/Shmily/assets/npm i.o9ROlmrI.png",f=JSON.parse('{"title":"安装 nodejs 项目依赖","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-dependencies.md","filePath":"guide/setup-runtime/nodejs-dependencies.md","lastUpdated":1713155566000}'),o={name:"guide/setup-runtime/nodejs-dependencies.md"},l=p("",7),d=[l];function c(r,m,_,u,h,b){return n(),a("div",null,d)}const k=e(o,[["render",c]]);export{f as __pageData,k as default};
diff --git a/assets/guide_setup-runtime_nodejs-start.md.luR8yRl8.js b/assets/guide_setup-runtime_nodejs-start.md.VZqVV6_a.js
similarity index 98%
rename from assets/guide_setup-runtime_nodejs-start.md.luR8yRl8.js
rename to assets/guide_setup-runtime_nodejs-start.md.VZqVV6_a.js
index de5e3dc..5f60720 100644
--- a/assets/guide_setup-runtime_nodejs-start.md.luR8yRl8.js
+++ b/assets/guide_setup-runtime_nodejs-start.md.VZqVV6_a.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,R as n}from"./chunks/framework.xvtSDt2M.js";const E=JSON.parse('{"title":"启动 nodejs 程序","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-start.md","filePath":"guide/setup-runtime/nodejs-start.md","lastUpdated":1709878346000}'),t={name:"guide/setup-runtime/nodejs-start.md"},e=n(`

启动 nodejs 程序

WARNING

启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

优先级从高到低

  • 按照项目说明启动程序 (一般为 npm run xxx)

  • 若项目无说明, 从 package.json 文件中的 scripts 字段获取执行脚本名称, 通过 npm run {script} 启动程序

    json
    {
    +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.xvtSDt2M.js";const E=JSON.parse('{"title":"启动 nodejs 程序","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-start.md","filePath":"guide/setup-runtime/nodejs-start.md","lastUpdated":1713155566000}'),t={name:"guide/setup-runtime/nodejs-start.md"},e=n(`

    启动 nodejs 程序

    WARNING

    启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

    优先级从高到低

    • 按照项目说明启动程序 (一般为 npm run xxx)

    • 若项目无说明, 从 package.json 文件中的 scripts 字段获取执行脚本名称, 通过 npm run {script} 启动程序

      json
      {
           ...
           "scripts": {
               "dev": "vitepress dev docs",
      diff --git a/assets/guide_setup-runtime_nodejs-start.md.luR8yRl8.lean.js b/assets/guide_setup-runtime_nodejs-start.md.VZqVV6_a.lean.js
      similarity index 86%
      rename from assets/guide_setup-runtime_nodejs-start.md.luR8yRl8.lean.js
      rename to assets/guide_setup-runtime_nodejs-start.md.VZqVV6_a.lean.js
      index 5baeb4b..0141036 100644
      --- a/assets/guide_setup-runtime_nodejs-start.md.luR8yRl8.lean.js
      +++ b/assets/guide_setup-runtime_nodejs-start.md.VZqVV6_a.lean.js
      @@ -1 +1 @@
      -import{_ as s,c as i,o as a,R as n}from"./chunks/framework.xvtSDt2M.js";const E=JSON.parse('{"title":"启动 nodejs 程序","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-start.md","filePath":"guide/setup-runtime/nodejs-start.md","lastUpdated":1709878346000}'),t={name:"guide/setup-runtime/nodejs-start.md"},e=n("",4),l=[e];function p(d,h,o,c,k,r){return a(),i("div",null,l)}const g=s(t,[["render",p]]);export{E as __pageData,g as default};
      +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.xvtSDt2M.js";const E=JSON.parse('{"title":"启动 nodejs 程序","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-start.md","filePath":"guide/setup-runtime/nodejs-start.md","lastUpdated":1713155566000}'),t={name:"guide/setup-runtime/nodejs-start.md"},e=n("",4),l=[e];function p(d,h,o,c,k,r){return a(),i("div",null,l)}const g=s(t,[["render",p]]);export{E as __pageData,g as default};
      diff --git a/assets/guide_setup-runtime_nodejs.md.3nlQkkDT.js b/assets/guide_setup-runtime_nodejs.md.oXnWLWOT.js
      similarity index 96%
      rename from assets/guide_setup-runtime_nodejs.md.3nlQkkDT.js
      rename to assets/guide_setup-runtime_nodejs.md.oXnWLWOT.js
      index 7d99391..2153b1e 100644
      --- a/assets/guide_setup-runtime_nodejs.md.3nlQkkDT.js
      +++ b/assets/guide_setup-runtime_nodejs.md.oXnWLWOT.js
      @@ -1 +1 @@
      -import{_ as e,c as o,o as d,R as t}from"./chunks/framework.xvtSDt2M.js";const h=JSON.parse('{"title":"安装 nodejs","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs.md","filePath":"guide/setup-runtime/nodejs.md","lastUpdated":1709878346000}'),i={name:"guide/setup-runtime/nodejs.md"},c=t('

      安装 nodejs

      • 查看项目中 package.jsonengines 字段获取项目所需 nodejs 版本

        • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
      • https://nodejs.org/dist/ 下载相应版本的 nodejs

        • Windows 平台
          • (推荐) node-v99.99.9-x64.msi 标准安装程序
          • (不推荐) node-v99.9.9-win-x64.7z / .zip 绿色版, 需要自己配置 Path 环境变量
          • (不推荐) ./win-x64/node.exe 绿色单文件, 不含 npm
      • 安装过程,选项全部默认

      ',3),s=[c];function n(l,a,r,p,_,u){return d(),o("div",null,s)}const j=e(i,[["render",n]]);export{h as __pageData,j as default}; +import{_ as e,c as o,o as d,R as t}from"./chunks/framework.xvtSDt2M.js";const h=JSON.parse('{"title":"安装 nodejs","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs.md","filePath":"guide/setup-runtime/nodejs.md","lastUpdated":1713155566000}'),i={name:"guide/setup-runtime/nodejs.md"},c=t('

      安装 nodejs

      • 查看项目中 package.jsonengines 字段获取项目所需 nodejs 版本

        • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
      • https://nodejs.org/dist/ 下载相应版本的 nodejs

        • Windows 平台
          • (推荐) node-v99.99.9-x64.msi 标准安装程序
          • (不推荐) node-v99.9.9-win-x64.7z / .zip 绿色版, 需要自己配置 Path 环境变量
          • (不推荐) ./win-x64/node.exe 绿色单文件, 不含 npm
      • 安装过程,选项全部默认

      ',3),s=[c];function n(l,a,r,p,_,u){return d(),o("div",null,s)}const j=e(i,[["render",n]]);export{h as __pageData,j as default}; diff --git a/assets/guide_setup-runtime_nodejs.md.3nlQkkDT.lean.js b/assets/guide_setup-runtime_nodejs.md.oXnWLWOT.lean.js similarity index 86% rename from assets/guide_setup-runtime_nodejs.md.3nlQkkDT.lean.js rename to assets/guide_setup-runtime_nodejs.md.oXnWLWOT.lean.js index e6e3348..7e89a17 100644 --- a/assets/guide_setup-runtime_nodejs.md.3nlQkkDT.lean.js +++ b/assets/guide_setup-runtime_nodejs.md.oXnWLWOT.lean.js @@ -1 +1 @@ -import{_ as e,c as o,o as d,R as t}from"./chunks/framework.xvtSDt2M.js";const h=JSON.parse('{"title":"安装 nodejs","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs.md","filePath":"guide/setup-runtime/nodejs.md","lastUpdated":1709878346000}'),i={name:"guide/setup-runtime/nodejs.md"},c=t("",3),s=[c];function n(l,a,r,p,_,u){return d(),o("div",null,s)}const j=e(i,[["render",n]]);export{h as __pageData,j as default}; +import{_ as e,c as o,o as d,R as t}from"./chunks/framework.xvtSDt2M.js";const h=JSON.parse('{"title":"安装 nodejs","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs.md","filePath":"guide/setup-runtime/nodejs.md","lastUpdated":1713155566000}'),i={name:"guide/setup-runtime/nodejs.md"},c=t("",3),s=[c];function n(l,a,r,p,_,u){return d(),o("div",null,s)}const j=e(i,[["render",n]]);export{h as __pageData,j as default}; diff --git a/assets/guide_setup-runtime_php.md.P6lsKn93.js b/assets/guide_setup-runtime_php.md.CTcSRowo.js similarity index 95% rename from assets/guide_setup-runtime_php.md.P6lsKn93.js rename to assets/guide_setup-runtime_php.md.CTcSRowo.js index 2056c85..e9bb519 100644 --- a/assets/guide_setup-runtime_php.md.P6lsKn93.js +++ b/assets/guide_setup-runtime_php.md.CTcSRowo.js @@ -1 +1 @@ -import{_ as e,c as o,o as t,R as i}from"./chunks/framework.xvtSDt2M.js";const p="/Shmily/assets/php.jJW9nwie.png",f=JSON.parse('{"title":"开始 PHP 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/php.md","filePath":"guide/setup-runtime/php.md","lastUpdated":1709878346000}'),c={name:"guide/setup-runtime/php.md"},d=i('

      开始 PHP 项目

      1. 官网 下载 PHP

        Windows 下载 VS16 x64 Thread Safe .zip 就行了

      2. 解压 .zipD:\\php
      3. 确认 D:\\php\\php.exe 存在
      4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
      5. 选择 高级 环境变量
      6. 选择 Path,新增一行 D:\\php
      7. 确认关闭窗口

      php

      ',4),a=[d];function l(s,r,n,h,_,m){return t(),o("div",null,a)}const P=e(c,[["render",l]]);export{f as __pageData,P as default}; +import{_ as e,c as o,o as t,R as i}from"./chunks/framework.xvtSDt2M.js";const p="/Shmily/assets/php.jJW9nwie.png",f=JSON.parse('{"title":"开始 PHP 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/php.md","filePath":"guide/setup-runtime/php.md","lastUpdated":1713155566000}'),c={name:"guide/setup-runtime/php.md"},d=i('

      开始 PHP 项目

      1. 官网 下载 PHP

        Windows 下载 VS16 x64 Thread Safe .zip 就行了

      2. 解压 .zipD:\\php
      3. 确认 D:\\php\\php.exe 存在
      4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
      5. 选择 高级 环境变量
      6. 选择 Path,新增一行 D:\\php
      7. 确认关闭窗口

      php

      ',4),a=[d];function l(s,r,n,h,_,m){return t(),o("div",null,a)}const P=e(c,[["render",l]]);export{f as __pageData,P as default}; diff --git a/assets/guide_setup-runtime_php.md.P6lsKn93.lean.js b/assets/guide_setup-runtime_php.md.CTcSRowo.lean.js similarity index 86% rename from assets/guide_setup-runtime_php.md.P6lsKn93.lean.js rename to assets/guide_setup-runtime_php.md.CTcSRowo.lean.js index ad7241c..6c8b2b9 100644 --- a/assets/guide_setup-runtime_php.md.P6lsKn93.lean.js +++ b/assets/guide_setup-runtime_php.md.CTcSRowo.lean.js @@ -1 +1 @@ -import{_ as e,c as o,o as t,R as i}from"./chunks/framework.xvtSDt2M.js";const p="/Shmily/assets/php.jJW9nwie.png",f=JSON.parse('{"title":"开始 PHP 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/php.md","filePath":"guide/setup-runtime/php.md","lastUpdated":1709878346000}'),c={name:"guide/setup-runtime/php.md"},d=i("",4),a=[d];function l(s,r,n,h,_,m){return t(),o("div",null,a)}const P=e(c,[["render",l]]);export{f as __pageData,P as default}; +import{_ as e,c as o,o as t,R as i}from"./chunks/framework.xvtSDt2M.js";const p="/Shmily/assets/php.jJW9nwie.png",f=JSON.parse('{"title":"开始 PHP 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/php.md","filePath":"guide/setup-runtime/php.md","lastUpdated":1713155566000}'),c={name:"guide/setup-runtime/php.md"},d=i("",4),a=[d];function l(s,r,n,h,_,m){return t(),o("div",null,a)}const P=e(c,[["render",l]]);export{f as __pageData,P as default}; diff --git a/assets/guide_setup-runtime_python.md.B_WTY-Li.js b/assets/guide_setup-runtime_python.md.HH6TyOeb.js similarity index 97% rename from assets/guide_setup-runtime_python.md.B_WTY-Li.js rename to assets/guide_setup-runtime_python.md.HH6TyOeb.js index 9d4bf3a..c43814b 100644 --- a/assets/guide_setup-runtime_python.md.B_WTY-Li.js +++ b/assets/guide_setup-runtime_python.md.HH6TyOeb.js @@ -1 +1 @@ -import{_ as t}from"./chunks/open_cmd.sSnH096g.js";import{_ as a,c as e,o as s,R as i}from"./chunks/framework.xvtSDt2M.js";const l="/Shmily/assets/python-setup.uz-aeYAo.png",g=JSON.parse('{"title":"开始 Python 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/python.md","filePath":"guide/setup-runtime/python.md","lastUpdated":1709878346000}'),p={name:"guide/setup-runtime/python.md"},n=i('

      开始 Python 项目

      1. 安装 python

      • 进入官网下载

      • 勾选 Add python.exe to PATH

        python add path

      • 全默认 下一步 完成

      2. 安装项目依赖

      • 命令行打开项目目录
        • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

        • 执行命令安装依赖

        shell
        pip install -r requirements.txt

      3.启动程序

      WARNING

      项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

      • 按照项目说明启动程序

      • 若无说明, 一般 main.py 为入口文件

        shell
            python main.py
      ',8),o=[n];function h(r,d,c,u,_,m){return s(),e("div",null,o)}const b=a(p,[["render",h]]);export{g as __pageData,b as default}; +import{_ as t}from"./chunks/open_cmd.sSnH096g.js";import{_ as a,c as e,o as s,R as i}from"./chunks/framework.xvtSDt2M.js";const l="/Shmily/assets/python-setup.uz-aeYAo.png",g=JSON.parse('{"title":"开始 Python 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/python.md","filePath":"guide/setup-runtime/python.md","lastUpdated":1713155566000}'),p={name:"guide/setup-runtime/python.md"},n=i('

      开始 Python 项目

      1. 安装 python

      • 进入官网下载

      • 勾选 Add python.exe to PATH

        python add path

      • 全默认 下一步 完成

      2. 安装项目依赖

      • 命令行打开项目目录
        • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

        • 执行命令安装依赖

        shell
        pip install -r requirements.txt

      3.启动程序

      WARNING

      项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

      • 按照项目说明启动程序

      • 若无说明, 一般 main.py 为入口文件

        shell
            python main.py
      ',8),o=[n];function h(r,d,c,u,_,m){return s(),e("div",null,o)}const b=a(p,[["render",h]]);export{g as __pageData,b as default}; diff --git a/assets/guide_setup-runtime_python.md.B_WTY-Li.lean.js b/assets/guide_setup-runtime_python.md.HH6TyOeb.lean.js similarity index 88% rename from assets/guide_setup-runtime_python.md.B_WTY-Li.lean.js rename to assets/guide_setup-runtime_python.md.HH6TyOeb.lean.js index 837de55..ea0215c 100644 --- a/assets/guide_setup-runtime_python.md.B_WTY-Li.lean.js +++ b/assets/guide_setup-runtime_python.md.HH6TyOeb.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/open_cmd.sSnH096g.js";import{_ as a,c as e,o as s,R as i}from"./chunks/framework.xvtSDt2M.js";const l="/Shmily/assets/python-setup.uz-aeYAo.png",g=JSON.parse('{"title":"开始 Python 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/python.md","filePath":"guide/setup-runtime/python.md","lastUpdated":1709878346000}'),p={name:"guide/setup-runtime/python.md"},n=i("",8),o=[n];function h(r,d,c,u,_,m){return s(),e("div",null,o)}const b=a(p,[["render",h]]);export{g as __pageData,b as default}; +import{_ as t}from"./chunks/open_cmd.sSnH096g.js";import{_ as a,c as e,o as s,R as i}from"./chunks/framework.xvtSDt2M.js";const l="/Shmily/assets/python-setup.uz-aeYAo.png",g=JSON.parse('{"title":"开始 Python 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/python.md","filePath":"guide/setup-runtime/python.md","lastUpdated":1713155566000}'),p={name:"guide/setup-runtime/python.md"},n=i("",8),o=[n];function h(r,d,c,u,_,m){return s(),e("div",null,o)}const b=a(p,[["render",h]]);export{g as __pageData,b as default}; diff --git a/assets/guide_setup-runtime_snippets_open_cmd.md.ckn76Gy4.js b/assets/guide_setup-runtime_snippets_open_cmd.md.LKrXZml4.js similarity index 91% rename from assets/guide_setup-runtime_snippets_open_cmd.md.ckn76Gy4.js rename to assets/guide_setup-runtime_snippets_open_cmd.md.LKrXZml4.js index 591ee83..0aef959 100644 --- a/assets/guide_setup-runtime_snippets_open_cmd.md.ckn76Gy4.js +++ b/assets/guide_setup-runtime_snippets_open_cmd.md.LKrXZml4.js @@ -1 +1 @@ -import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as n,c as o,o as a,k as e,a as t}from"./chunks/framework.xvtSDt2M.js";const x=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/snippets/open_cmd.md","filePath":"guide/setup-runtime/snippets/open_cmd.md","lastUpdated":1709878346000}'),p={name:"guide/setup-runtime/snippets/open_cmd.md"},i=e("ul",null,[e("li",null,[t("命令行打开项目目录 "),e("ul",null,[e("li",null,[t("Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 "),e("img",{src:s,alt:"open cmd"})])])])],-1),r=[i];function c(d,l,m,_,u,f){return a(),o("div",null,r)}const $=n(p,[["render",c]]);export{x as __pageData,$ as default}; +import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as n,c as o,o as a,k as e,a as t}from"./chunks/framework.xvtSDt2M.js";const x=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/snippets/open_cmd.md","filePath":"guide/setup-runtime/snippets/open_cmd.md","lastUpdated":1713155566000}'),p={name:"guide/setup-runtime/snippets/open_cmd.md"},i=e("ul",null,[e("li",null,[t("命令行打开项目目录 "),e("ul",null,[e("li",null,[t("Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 "),e("img",{src:s,alt:"open cmd"})])])])],-1),r=[i];function c(d,l,m,_,u,f){return a(),o("div",null,r)}const $=n(p,[["render",c]]);export{x as __pageData,$ as default}; diff --git a/assets/guide_setup-runtime_snippets_open_cmd.md.ckn76Gy4.lean.js b/assets/guide_setup-runtime_snippets_open_cmd.md.LKrXZml4.lean.js similarity index 91% rename from assets/guide_setup-runtime_snippets_open_cmd.md.ckn76Gy4.lean.js rename to assets/guide_setup-runtime_snippets_open_cmd.md.LKrXZml4.lean.js index 591ee83..0aef959 100644 --- a/assets/guide_setup-runtime_snippets_open_cmd.md.ckn76Gy4.lean.js +++ b/assets/guide_setup-runtime_snippets_open_cmd.md.LKrXZml4.lean.js @@ -1 +1 @@ -import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as n,c as o,o as a,k as e,a as t}from"./chunks/framework.xvtSDt2M.js";const x=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/snippets/open_cmd.md","filePath":"guide/setup-runtime/snippets/open_cmd.md","lastUpdated":1709878346000}'),p={name:"guide/setup-runtime/snippets/open_cmd.md"},i=e("ul",null,[e("li",null,[t("命令行打开项目目录 "),e("ul",null,[e("li",null,[t("Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 "),e("img",{src:s,alt:"open cmd"})])])])],-1),r=[i];function c(d,l,m,_,u,f){return a(),o("div",null,r)}const $=n(p,[["render",c]]);export{x as __pageData,$ as default}; +import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as n,c as o,o as a,k as e,a as t}from"./chunks/framework.xvtSDt2M.js";const x=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/snippets/open_cmd.md","filePath":"guide/setup-runtime/snippets/open_cmd.md","lastUpdated":1713155566000}'),p={name:"guide/setup-runtime/snippets/open_cmd.md"},i=e("ul",null,[e("li",null,[t("命令行打开项目目录 "),e("ul",null,[e("li",null,[t("Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 "),e("img",{src:s,alt:"open cmd"})])])])],-1),r=[i];function c(d,l,m,_,u,f){return a(),o("div",null,r)}const $=n(p,[["render",c]]);export{x as __pageData,$ as default}; diff --git a/assets/guide_tools_Github_visit.md.cnWPUz1A.js b/assets/guide_tools_Github_visit.md.FxV3mWoj.js similarity index 93% rename from assets/guide_tools_Github_visit.md.cnWPUz1A.js rename to assets/guide_tools_Github_visit.md.FxV3mWoj.js index 25c4e5a..8b37f00 100644 --- a/assets/guide_tools_Github_visit.md.cnWPUz1A.js +++ b/assets/guide_tools_Github_visit.md.FxV3mWoj.js @@ -1 +1 @@ -import{_ as a,c as o,o as r,k as t,a as e}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"访问 Github","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Github/visit.md","filePath":"guide/tools/Github/visit.md","lastUpdated":1709878346000}'),s={name:"guide/tools/Github/visit.md"},i=t("h1",{id:"访问-github",tabindex:"-1"},[e("访问 Github "),t("a",{class:"header-anchor",href:"#访问-github","aria-label":'Permalink to "访问 Github"'},"​")],-1),n=t("p",null,[e("如果 "),t("code",null,"Github"),e(" 访问不顺畅, 可以在 "),t("a",{href:"https://www.microsoft.com/store/productId/9MTCFHS560NG?ocid=pdpshare",target:"_blank",rel:"noreferrer"},"微软商店"),e(" 搜索 "),t("a",{href:"https://steampp.net/",target:"_blank",rel:"noreferrer"},[t("code",null,"Watt Toolkit")])],-1),d=[i,n];function c(l,h,u,p,_,f){return r(),o("div",null,d)}const g=a(s,[["render",c]]);export{m as __pageData,g as default}; +import{_ as a,c as o,o as r,k as t,a as e}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"访问 Github","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Github/visit.md","filePath":"guide/tools/Github/visit.md","lastUpdated":1713155566000}'),s={name:"guide/tools/Github/visit.md"},i=t("h1",{id:"访问-github",tabindex:"-1"},[e("访问 Github "),t("a",{class:"header-anchor",href:"#访问-github","aria-label":'Permalink to "访问 Github"'},"​")],-1),n=t("p",null,[e("如果 "),t("code",null,"Github"),e(" 访问不顺畅, 可以在 "),t("a",{href:"https://www.microsoft.com/store/productId/9MTCFHS560NG?ocid=pdpshare",target:"_blank",rel:"noreferrer"},"微软商店"),e(" 搜索 "),t("a",{href:"https://steampp.net/",target:"_blank",rel:"noreferrer"},[t("code",null,"Watt Toolkit")])],-1),d=[i,n];function c(l,h,u,p,_,f){return r(),o("div",null,d)}const g=a(s,[["render",c]]);export{m as __pageData,g as default}; diff --git a/assets/guide_tools_Github_visit.md.cnWPUz1A.lean.js b/assets/guide_tools_Github_visit.md.FxV3mWoj.lean.js similarity index 93% rename from assets/guide_tools_Github_visit.md.cnWPUz1A.lean.js rename to assets/guide_tools_Github_visit.md.FxV3mWoj.lean.js index 25c4e5a..8b37f00 100644 --- a/assets/guide_tools_Github_visit.md.cnWPUz1A.lean.js +++ b/assets/guide_tools_Github_visit.md.FxV3mWoj.lean.js @@ -1 +1 @@ -import{_ as a,c as o,o as r,k as t,a as e}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"访问 Github","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Github/visit.md","filePath":"guide/tools/Github/visit.md","lastUpdated":1709878346000}'),s={name:"guide/tools/Github/visit.md"},i=t("h1",{id:"访问-github",tabindex:"-1"},[e("访问 Github "),t("a",{class:"header-anchor",href:"#访问-github","aria-label":'Permalink to "访问 Github"'},"​")],-1),n=t("p",null,[e("如果 "),t("code",null,"Github"),e(" 访问不顺畅, 可以在 "),t("a",{href:"https://www.microsoft.com/store/productId/9MTCFHS560NG?ocid=pdpshare",target:"_blank",rel:"noreferrer"},"微软商店"),e(" 搜索 "),t("a",{href:"https://steampp.net/",target:"_blank",rel:"noreferrer"},[t("code",null,"Watt Toolkit")])],-1),d=[i,n];function c(l,h,u,p,_,f){return r(),o("div",null,d)}const g=a(s,[["render",c]]);export{m as __pageData,g as default}; +import{_ as a,c as o,o as r,k as t,a as e}from"./chunks/framework.xvtSDt2M.js";const m=JSON.parse('{"title":"访问 Github","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Github/visit.md","filePath":"guide/tools/Github/visit.md","lastUpdated":1713155566000}'),s={name:"guide/tools/Github/visit.md"},i=t("h1",{id:"访问-github",tabindex:"-1"},[e("访问 Github "),t("a",{class:"header-anchor",href:"#访问-github","aria-label":'Permalink to "访问 Github"'},"​")],-1),n=t("p",null,[e("如果 "),t("code",null,"Github"),e(" 访问不顺畅, 可以在 "),t("a",{href:"https://www.microsoft.com/store/productId/9MTCFHS560NG?ocid=pdpshare",target:"_blank",rel:"noreferrer"},"微软商店"),e(" 搜索 "),t("a",{href:"https://steampp.net/",target:"_blank",rel:"noreferrer"},[t("code",null,"Watt Toolkit")])],-1),d=[i,n];function c(l,h,u,p,_,f){return r(),o("div",null,d)}const g=a(s,[["render",c]]);export{m as __pageData,g as default}; diff --git a/assets/guide_tools_Wechat_calc-wechat-key.md.Xs98kn1Q.js b/assets/guide_tools_Wechat_calc-wechat-key.md.o7Qvxqrh.js similarity index 99% rename from assets/guide_tools_Wechat_calc-wechat-key.md.Xs98kn1Q.js rename to assets/guide_tools_Wechat_calc-wechat-key.md.o7Qvxqrh.js index 0b782b6..64ede50 100644 --- a/assets/guide_tools_Wechat_calc-wechat-key.md.Xs98kn1Q.js +++ b/assets/guide_tools_Wechat_calc-wechat-key.md.o7Qvxqrh.js @@ -3,4 +3,4 @@ import{g as w}from"./chunks/commonjsHelpers.5-cIlDoe.js";import{_ as C,c as U,k * * @author Feross Aboukhadijeh * @license MIT - */var N=function(f){return f!=null&&(k(f)||V(f)||!!f._isBuffer)};function k(f){return!!f.constructor&&typeof f.constructor.isBuffer=="function"&&f.constructor.isBuffer(f)}function V(f){return typeof f.readFloatLE=="function"&&typeof f.slice=="function"&&k(f.slice(0,0))}(function(){var f=H,h=B.utf8,a=N,l=B.bin,c=function(i,s){i.constructor==String?s&&s.encoding==="binary"?i=l.stringToBytes(i):i=h.stringToBytes(i):a(i)?i=Array.prototype.slice.call(i,0):!Array.isArray(i)&&i.constructor!==Uint8Array&&(i=i.toString());for(var o=f.bytesToWords(i),_=i.length*8,n=1732584193,t=-271733879,e=-1732584194,r=271733878,u=0;u>>24)&16711935|(o[u]<<24|o[u]>>>8)&4278255360;o[_>>>5]|=128<<_%32,o[(_+64>>>9<<4)+14]=_;for(var d=c._ff,p=c._gg,v=c._hh,y=c._ii,u=0;u>>0,t=t+S>>>0,e=e+m>>>0,r=r+A>>>0}return f.endian([n,t,e,r])};c._ff=function(i,s,o,_,n,t,e){var r=i+(s&o|~s&_)+(n>>>0)+e;return(r<>>32-t)+s},c._gg=function(i,s,o,_,n,t,e){var r=i+(s&_|o&~_)+(n>>>0)+e;return(r<>>32-t)+s},c._hh=function(i,s,o,_,n,t,e){var r=i+(s^o^_)+(n>>>0)+e;return(r<>>32-t)+s},c._ii=function(i,s,o,_,n,t,e){var r=i+(o^(s|~_))+(n>>>0)+e;return(r<>>32-t)+s},c._blocksize=16,c._digestsize=16,T.exports=function(i,s){if(i==null)throw new Error("Illegal argument "+i);var o=f.wordsToBytes(c(i,s));return s&&s.asBytes?o:s&&s.asString?l.bytesToString(o):f.bytesToHex(o)}})();var O=T.exports;const P=w(O),G={data:()=>({_IMEI:"",uni:""}),computed:{IMEI:{get(){return this._IMEI},set(f){this._IMEI=f.toUpperCase()}},key(){if(!this.IMEI||!this.uni)return"";const f=this.IMEI+""+this.uni;return P(f).substring(0,7).toLowerCase()}}},j=JSON.parse('{"title":"计算微信数据库 key","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Wechat/calc-wechat-key.md","filePath":"guide/tools/Wechat/calc-wechat-key.md","lastUpdated":1709878346000}'),L=g("h1",{id:"计算微信数据库-key",tabindex:"-1"},[W("计算微信数据库 key "),g("a",{class:"header-anchor",href:"#计算微信数据库-key","aria-label":'Permalink to "计算微信数据库 key"'},"​")],-1),R={class:"form"},$={for:"IMEI"},J=g("span",null,"IMEI: ",-1),K=g("br",null,null,-1),Z={for:"uni"},q=g("span",null,"uni: ",-1);function Q(f,h,a,l,c,i){return z(),U("div",null,[L,g("div",null,[g("div",R,[g("label",$,[J,x(g("input",{type:"text",name:"IMEI","onUpdate:modelValue":h[0]||(h[0]=s=>i.IMEI=s),placeholder:"请输入 IMEI"},null,512),[[F,i.IMEI,void 0,{lazy:!0,trim:!0}]])]),K,g("label",Z,[q,x(g("input",{type:"text",name:"uni","onUpdate:modelValue":h[1]||(h[1]=s=>f.uni=s),placeholder:"请输入 uni"},null,512),[[F,f.uni,void 0,{lazy:!0,trim:!0}]])])]),g("p",null,"key: "+D(i.key),1)])])}const b=C(G,[["render",Q]]);export{j as __pageData,b as default}; + */var N=function(f){return f!=null&&(k(f)||V(f)||!!f._isBuffer)};function k(f){return!!f.constructor&&typeof f.constructor.isBuffer=="function"&&f.constructor.isBuffer(f)}function V(f){return typeof f.readFloatLE=="function"&&typeof f.slice=="function"&&k(f.slice(0,0))}(function(){var f=H,h=B.utf8,a=N,l=B.bin,c=function(i,s){i.constructor==String?s&&s.encoding==="binary"?i=l.stringToBytes(i):i=h.stringToBytes(i):a(i)?i=Array.prototype.slice.call(i,0):!Array.isArray(i)&&i.constructor!==Uint8Array&&(i=i.toString());for(var o=f.bytesToWords(i),_=i.length*8,n=1732584193,t=-271733879,e=-1732584194,r=271733878,u=0;u>>24)&16711935|(o[u]<<24|o[u]>>>8)&4278255360;o[_>>>5]|=128<<_%32,o[(_+64>>>9<<4)+14]=_;for(var d=c._ff,p=c._gg,v=c._hh,y=c._ii,u=0;u>>0,t=t+S>>>0,e=e+m>>>0,r=r+A>>>0}return f.endian([n,t,e,r])};c._ff=function(i,s,o,_,n,t,e){var r=i+(s&o|~s&_)+(n>>>0)+e;return(r<>>32-t)+s},c._gg=function(i,s,o,_,n,t,e){var r=i+(s&_|o&~_)+(n>>>0)+e;return(r<>>32-t)+s},c._hh=function(i,s,o,_,n,t,e){var r=i+(s^o^_)+(n>>>0)+e;return(r<>>32-t)+s},c._ii=function(i,s,o,_,n,t,e){var r=i+(o^(s|~_))+(n>>>0)+e;return(r<>>32-t)+s},c._blocksize=16,c._digestsize=16,T.exports=function(i,s){if(i==null)throw new Error("Illegal argument "+i);var o=f.wordsToBytes(c(i,s));return s&&s.asBytes?o:s&&s.asString?l.bytesToString(o):f.bytesToHex(o)}})();var O=T.exports;const P=w(O),G={data:()=>({_IMEI:"",uni:""}),computed:{IMEI:{get(){return this._IMEI},set(f){this._IMEI=f.toUpperCase()}},key(){if(!this.IMEI||!this.uni)return"";const f=this.IMEI+""+this.uni;return P(f).substring(0,7).toLowerCase()}}},j=JSON.parse('{"title":"计算微信数据库 key","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Wechat/calc-wechat-key.md","filePath":"guide/tools/Wechat/calc-wechat-key.md","lastUpdated":1713155566000}'),L=g("h1",{id:"计算微信数据库-key",tabindex:"-1"},[W("计算微信数据库 key "),g("a",{class:"header-anchor",href:"#计算微信数据库-key","aria-label":'Permalink to "计算微信数据库 key"'},"​")],-1),R={class:"form"},$={for:"IMEI"},J=g("span",null,"IMEI: ",-1),K=g("br",null,null,-1),Z={for:"uni"},q=g("span",null,"uni: ",-1);function Q(f,h,a,l,c,i){return z(),U("div",null,[L,g("div",null,[g("div",R,[g("label",$,[J,x(g("input",{type:"text",name:"IMEI","onUpdate:modelValue":h[0]||(h[0]=s=>i.IMEI=s),placeholder:"请输入 IMEI"},null,512),[[F,i.IMEI,void 0,{lazy:!0,trim:!0}]])]),K,g("label",Z,[q,x(g("input",{type:"text",name:"uni","onUpdate:modelValue":h[1]||(h[1]=s=>f.uni=s),placeholder:"请输入 uni"},null,512),[[F,f.uni,void 0,{lazy:!0,trim:!0}]])])]),g("p",null,"key: "+D(i.key),1)])])}const b=C(G,[["render",Q]]);export{j as __pageData,b as default}; diff --git a/assets/guide_tools_Wechat_calc-wechat-key.md.Xs98kn1Q.lean.js b/assets/guide_tools_Wechat_calc-wechat-key.md.o7Qvxqrh.lean.js similarity index 99% rename from assets/guide_tools_Wechat_calc-wechat-key.md.Xs98kn1Q.lean.js rename to assets/guide_tools_Wechat_calc-wechat-key.md.o7Qvxqrh.lean.js index 0b782b6..64ede50 100644 --- a/assets/guide_tools_Wechat_calc-wechat-key.md.Xs98kn1Q.lean.js +++ b/assets/guide_tools_Wechat_calc-wechat-key.md.o7Qvxqrh.lean.js @@ -3,4 +3,4 @@ import{g as w}from"./chunks/commonjsHelpers.5-cIlDoe.js";import{_ as C,c as U,k * * @author Feross Aboukhadijeh * @license MIT - */var N=function(f){return f!=null&&(k(f)||V(f)||!!f._isBuffer)};function k(f){return!!f.constructor&&typeof f.constructor.isBuffer=="function"&&f.constructor.isBuffer(f)}function V(f){return typeof f.readFloatLE=="function"&&typeof f.slice=="function"&&k(f.slice(0,0))}(function(){var f=H,h=B.utf8,a=N,l=B.bin,c=function(i,s){i.constructor==String?s&&s.encoding==="binary"?i=l.stringToBytes(i):i=h.stringToBytes(i):a(i)?i=Array.prototype.slice.call(i,0):!Array.isArray(i)&&i.constructor!==Uint8Array&&(i=i.toString());for(var o=f.bytesToWords(i),_=i.length*8,n=1732584193,t=-271733879,e=-1732584194,r=271733878,u=0;u>>24)&16711935|(o[u]<<24|o[u]>>>8)&4278255360;o[_>>>5]|=128<<_%32,o[(_+64>>>9<<4)+14]=_;for(var d=c._ff,p=c._gg,v=c._hh,y=c._ii,u=0;u>>0,t=t+S>>>0,e=e+m>>>0,r=r+A>>>0}return f.endian([n,t,e,r])};c._ff=function(i,s,o,_,n,t,e){var r=i+(s&o|~s&_)+(n>>>0)+e;return(r<>>32-t)+s},c._gg=function(i,s,o,_,n,t,e){var r=i+(s&_|o&~_)+(n>>>0)+e;return(r<>>32-t)+s},c._hh=function(i,s,o,_,n,t,e){var r=i+(s^o^_)+(n>>>0)+e;return(r<>>32-t)+s},c._ii=function(i,s,o,_,n,t,e){var r=i+(o^(s|~_))+(n>>>0)+e;return(r<>>32-t)+s},c._blocksize=16,c._digestsize=16,T.exports=function(i,s){if(i==null)throw new Error("Illegal argument "+i);var o=f.wordsToBytes(c(i,s));return s&&s.asBytes?o:s&&s.asString?l.bytesToString(o):f.bytesToHex(o)}})();var O=T.exports;const P=w(O),G={data:()=>({_IMEI:"",uni:""}),computed:{IMEI:{get(){return this._IMEI},set(f){this._IMEI=f.toUpperCase()}},key(){if(!this.IMEI||!this.uni)return"";const f=this.IMEI+""+this.uni;return P(f).substring(0,7).toLowerCase()}}},j=JSON.parse('{"title":"计算微信数据库 key","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Wechat/calc-wechat-key.md","filePath":"guide/tools/Wechat/calc-wechat-key.md","lastUpdated":1709878346000}'),L=g("h1",{id:"计算微信数据库-key",tabindex:"-1"},[W("计算微信数据库 key "),g("a",{class:"header-anchor",href:"#计算微信数据库-key","aria-label":'Permalink to "计算微信数据库 key"'},"​")],-1),R={class:"form"},$={for:"IMEI"},J=g("span",null,"IMEI: ",-1),K=g("br",null,null,-1),Z={for:"uni"},q=g("span",null,"uni: ",-1);function Q(f,h,a,l,c,i){return z(),U("div",null,[L,g("div",null,[g("div",R,[g("label",$,[J,x(g("input",{type:"text",name:"IMEI","onUpdate:modelValue":h[0]||(h[0]=s=>i.IMEI=s),placeholder:"请输入 IMEI"},null,512),[[F,i.IMEI,void 0,{lazy:!0,trim:!0}]])]),K,g("label",Z,[q,x(g("input",{type:"text",name:"uni","onUpdate:modelValue":h[1]||(h[1]=s=>f.uni=s),placeholder:"请输入 uni"},null,512),[[F,f.uni,void 0,{lazy:!0,trim:!0}]])])]),g("p",null,"key: "+D(i.key),1)])])}const b=C(G,[["render",Q]]);export{j as __pageData,b as default}; + */var N=function(f){return f!=null&&(k(f)||V(f)||!!f._isBuffer)};function k(f){return!!f.constructor&&typeof f.constructor.isBuffer=="function"&&f.constructor.isBuffer(f)}function V(f){return typeof f.readFloatLE=="function"&&typeof f.slice=="function"&&k(f.slice(0,0))}(function(){var f=H,h=B.utf8,a=N,l=B.bin,c=function(i,s){i.constructor==String?s&&s.encoding==="binary"?i=l.stringToBytes(i):i=h.stringToBytes(i):a(i)?i=Array.prototype.slice.call(i,0):!Array.isArray(i)&&i.constructor!==Uint8Array&&(i=i.toString());for(var o=f.bytesToWords(i),_=i.length*8,n=1732584193,t=-271733879,e=-1732584194,r=271733878,u=0;u>>24)&16711935|(o[u]<<24|o[u]>>>8)&4278255360;o[_>>>5]|=128<<_%32,o[(_+64>>>9<<4)+14]=_;for(var d=c._ff,p=c._gg,v=c._hh,y=c._ii,u=0;u>>0,t=t+S>>>0,e=e+m>>>0,r=r+A>>>0}return f.endian([n,t,e,r])};c._ff=function(i,s,o,_,n,t,e){var r=i+(s&o|~s&_)+(n>>>0)+e;return(r<>>32-t)+s},c._gg=function(i,s,o,_,n,t,e){var r=i+(s&_|o&~_)+(n>>>0)+e;return(r<>>32-t)+s},c._hh=function(i,s,o,_,n,t,e){var r=i+(s^o^_)+(n>>>0)+e;return(r<>>32-t)+s},c._ii=function(i,s,o,_,n,t,e){var r=i+(o^(s|~_))+(n>>>0)+e;return(r<>>32-t)+s},c._blocksize=16,c._digestsize=16,T.exports=function(i,s){if(i==null)throw new Error("Illegal argument "+i);var o=f.wordsToBytes(c(i,s));return s&&s.asBytes?o:s&&s.asString?l.bytesToString(o):f.bytesToHex(o)}})();var O=T.exports;const P=w(O),G={data:()=>({_IMEI:"",uni:""}),computed:{IMEI:{get(){return this._IMEI},set(f){this._IMEI=f.toUpperCase()}},key(){if(!this.IMEI||!this.uni)return"";const f=this.IMEI+""+this.uni;return P(f).substring(0,7).toLowerCase()}}},j=JSON.parse('{"title":"计算微信数据库 key","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Wechat/calc-wechat-key.md","filePath":"guide/tools/Wechat/calc-wechat-key.md","lastUpdated":1713155566000}'),L=g("h1",{id:"计算微信数据库-key",tabindex:"-1"},[W("计算微信数据库 key "),g("a",{class:"header-anchor",href:"#计算微信数据库-key","aria-label":'Permalink to "计算微信数据库 key"'},"​")],-1),R={class:"form"},$={for:"IMEI"},J=g("span",null,"IMEI: ",-1),K=g("br",null,null,-1),Z={for:"uni"},q=g("span",null,"uni: ",-1);function Q(f,h,a,l,c,i){return z(),U("div",null,[L,g("div",null,[g("div",R,[g("label",$,[J,x(g("input",{type:"text",name:"IMEI","onUpdate:modelValue":h[0]||(h[0]=s=>i.IMEI=s),placeholder:"请输入 IMEI"},null,512),[[F,i.IMEI,void 0,{lazy:!0,trim:!0}]])]),K,g("label",Z,[q,x(g("input",{type:"text",name:"uni","onUpdate:modelValue":h[1]||(h[1]=s=>f.uni=s),placeholder:"请输入 uni"},null,512),[[F,f.uni,void 0,{lazy:!0,trim:!0}]])])]),g("p",null,"key: "+D(i.key),1)])])}const b=C(G,[["render",Q]]);export{j as __pageData,b as default}; diff --git a/assets/guide_use_begin.md.GPQCyDFB.js b/assets/guide_use_begin.md.ORAVx-nL.js similarity index 99% rename from assets/guide_use_begin.md.GPQCyDFB.js rename to assets/guide_use_begin.md.ORAVx-nL.js index 8ac8a1a..b20901c 100644 --- a/assets/guide_use_begin.md.GPQCyDFB.js +++ b/assets/guide_use_begin.md.ORAVx-nL.js @@ -1,4 +1,4 @@ -import{_ as e}from"./chunks/down_repo.IpAN7Bl0.js";import{_ as a}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as o}from"./chunks/open_cmd.sSnH096g.js";import{_ as t,c as s,o as d,R as n}from"./chunks/framework.xvtSDt2M.js";const c="/Shmily/assets/cmd_run.oYJ7fYXP.png",y=JSON.parse('{"title":"开始吧","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/begin.md","filePath":"guide/use/begin.md","lastUpdated":1709878346000}'),p={name:"guide/use/begin.md"},l=n('

      开始吧

      概述

      对于用户来说, 希望一个软件足够简单,打开一个窗口,点击一个按钮, 就可以得到最终的 结果 . 这称为黑盒, 所有的事情都被这个按钮挡住的了,不利于 debug 与 程序的解耦.

      若有些人只希望导出 MobileQQ 的数据做一个自己的 Ai 机器人 ,并不需要Show(展示数据). 如果按照以上的设计,他还需要从上述按钮获取的展示 结果 逆向为数据.

      所以 Shmily 的使用是在 程序解耦使用便利 之间取舍. 我希望 Shmily 对于不懂编程的人能简单使用, 同时也能足够解耦拆分足够细, 不让开发者 重造轮子, 中间的纽带就是文档了.

      因为我自身是 Shimly 的开发者,很容易一叶障目, 所以我也很希望你们从各种角度对文档提出各方面的问题来完善文档. 欢迎 提出建议

      基于以上 Shmily 的使用会被拆分为很多个步骤, 而且没有 GUI 界面, 这会让人看起来感觉很复杂, 但我保证, 每个步骤基本都是拷贝文件, 执行一行命令 完了~ 别担心~

      学前班 ( 如何开始一个项目 )

      大部分项目并不会打包为有界面的 "exe", 而是需要从源码运行, Github 是一个存储源码的网站, 本章介绍如何开始一个存储在 Github 项目

      实操

      Windows11https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT(电脑QQ聊天记录) 为例

      在每个章节最后均有实操示例

      如果你非程序员, 可以展开这里获取一些基本知识来开始一个项目

      学前班教程

      1. 下载源码

      在 Github 项目中, 点击下图中 Download ZIP 即可下载当前项目源码 down repo

      实操

      打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT 并下载
      下载后解压缩 Shmily-Get-QQ-PC_MHT-main.zipD:\\Shmily-Get-QQ-PC_MHT-main

      2. 安装项目运行时环境

      什么是运行时环境?

      顾名思义: 运行这个 "东西" 所需要的 "环境"

      例如你有一个 风景.mp4 的视频, 如果你要播放出来, 那么你需要一个 视频播放器
      那么运行 风景.mp4 所需要环境就是 视频播放器

      下载的 源码 也需要对应的 (运行时)环境

      项目的源码可能是由不同 编程语言 书写的, 相应的 编程语言 需要对应的 运行时, 如 C++源代码 需要 C++运行时, Java源代码 需要 Java运行时

      2.1 如何判断项目的 编程语言

      2.1.1 按照项目的特征(推荐)
      编程语言特征
      nodejspackage.json 文件, 或大量 .js .ts 后缀文件
      pythonrequirements.txt 文件, 或大量 .py 后缀文件
      java大量 .java 后缀文件
      2.1.2 Github 会自动标注主要语言(并不准确)

      what-languages

      2.2 根据 编程语言 安装对应的 运行时

      编程语言安装运行时
      nodejs教程
      python教程
      java教程
      php教程
      docker教程

      实操

      打开 D:\\Shmily-Get-QQ-PC_MHT-main, 项目中有 package.json 文件, 所以这是一个 nodejs 项目
      按照 nodejs 教程,
      下载 Windows 平台 https://nodejs.org/dist/v18.18.2/node-v18.18.2-x64.msi 并安装
      在项目目录 D:\\Shmily-Get-QQ-PC_MHT-main 执行 npm i 安装依赖

      3. 使用

      参照具体项目中的文档继续

      实操

      打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT, 参照项目文档中的 使用 部分

      1. 安装 node 环境

        上述 2.2 已经安装

      2. 安装 php 环境

        参照2.2 安装 php 环境

      3. 导出的 .mht 文件放入 input

        从 PC QQ 的聊天管理器中导出 .mht 格式的聊天记录, 并放入 input 文件夹(如没有则新建)

        // 文件夹结构
        +import{_ as e}from"./chunks/down_repo.IpAN7Bl0.js";import{_ as a}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as o}from"./chunks/open_cmd.sSnH096g.js";import{_ as t,c as s,o as d,R as n}from"./chunks/framework.xvtSDt2M.js";const c="/Shmily/assets/cmd_run.oYJ7fYXP.png",y=JSON.parse('{"title":"开始吧","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/begin.md","filePath":"guide/use/begin.md","lastUpdated":1713155566000}'),p={name:"guide/use/begin.md"},l=n('

        开始吧

        概述

        对于用户来说, 希望一个软件足够简单,打开一个窗口,点击一个按钮, 就可以得到最终的 结果 . 这称为黑盒, 所有的事情都被这个按钮挡住的了,不利于 debug 与 程序的解耦.

        若有些人只希望导出 MobileQQ 的数据做一个自己的 Ai 机器人 ,并不需要Show(展示数据). 如果按照以上的设计,他还需要从上述按钮获取的展示 结果 逆向为数据.

        所以 Shmily 的使用是在 程序解耦使用便利 之间取舍. 我希望 Shmily 对于不懂编程的人能简单使用, 同时也能足够解耦拆分足够细, 不让开发者 重造轮子, 中间的纽带就是文档了.

        因为我自身是 Shimly 的开发者,很容易一叶障目, 所以我也很希望你们从各种角度对文档提出各方面的问题来完善文档. 欢迎 提出建议

        基于以上 Shmily 的使用会被拆分为很多个步骤, 而且没有 GUI 界面, 这会让人看起来感觉很复杂, 但我保证, 每个步骤基本都是拷贝文件, 执行一行命令 完了~ 别担心~

        学前班 ( 如何开始一个项目 )

        大部分项目并不会打包为有界面的 "exe", 而是需要从源码运行, Github 是一个存储源码的网站, 本章介绍如何开始一个存储在 Github 项目

        实操

        Windows11https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT(电脑QQ聊天记录) 为例

        在每个章节最后均有实操示例

        如果你非程序员, 可以展开这里获取一些基本知识来开始一个项目

        学前班教程

        1. 下载源码

        在 Github 项目中, 点击下图中 Download ZIP 即可下载当前项目源码 down repo

        实操

        打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT 并下载
        下载后解压缩 Shmily-Get-QQ-PC_MHT-main.zipD:\\Shmily-Get-QQ-PC_MHT-main

        2. 安装项目运行时环境

        什么是运行时环境?

        顾名思义: 运行这个 "东西" 所需要的 "环境"

        例如你有一个 风景.mp4 的视频, 如果你要播放出来, 那么你需要一个 视频播放器
        那么运行 风景.mp4 所需要环境就是 视频播放器

        下载的 源码 也需要对应的 (运行时)环境

        项目的源码可能是由不同 编程语言 书写的, 相应的 编程语言 需要对应的 运行时, 如 C++源代码 需要 C++运行时, Java源代码 需要 Java运行时

        2.1 如何判断项目的 编程语言

        2.1.1 按照项目的特征(推荐)
        编程语言特征
        nodejspackage.json 文件, 或大量 .js .ts 后缀文件
        pythonrequirements.txt 文件, 或大量 .py 后缀文件
        java大量 .java 后缀文件
        2.1.2 Github 会自动标注主要语言(并不准确)

        what-languages

        2.2 根据 编程语言 安装对应的 运行时

        编程语言安装运行时
        nodejs教程
        python教程
        java教程
        php教程
        docker教程

        实操

        打开 D:\\Shmily-Get-QQ-PC_MHT-main, 项目中有 package.json 文件, 所以这是一个 nodejs 项目
        按照 nodejs 教程,
        下载 Windows 平台 https://nodejs.org/dist/v18.18.2/node-v18.18.2-x64.msi 并安装
        在项目目录 D:\\Shmily-Get-QQ-PC_MHT-main 执行 npm i 安装依赖

        3. 使用

        参照具体项目中的文档继续

        实操

        打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT, 参照项目文档中的 使用 部分

        1. 安装 node 环境

          上述 2.2 已经安装

        2. 安装 php 环境

          参照2.2 安装 php 环境

        3. 导出的 .mht 文件放入 input

          从 PC QQ 的聊天管理器中导出 .mht 格式的聊天记录, 并放入 input 文件夹(如没有则新建)

          // 文件夹结构
           
           -\\
             - node_modules
          diff --git a/assets/guide_use_begin.md.GPQCyDFB.lean.js b/assets/guide_use_begin.md.ORAVx-nL.lean.js
          similarity index 89%
          rename from assets/guide_use_begin.md.GPQCyDFB.lean.js
          rename to assets/guide_use_begin.md.ORAVx-nL.lean.js
          index 9ff79d0..faa1013 100644
          --- a/assets/guide_use_begin.md.GPQCyDFB.lean.js
          +++ b/assets/guide_use_begin.md.ORAVx-nL.lean.js
          @@ -1 +1 @@
          -import{_ as e}from"./chunks/down_repo.IpAN7Bl0.js";import{_ as a}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as o}from"./chunks/open_cmd.sSnH096g.js";import{_ as t,c as s,o as d,R as n}from"./chunks/framework.xvtSDt2M.js";const c="/Shmily/assets/cmd_run.oYJ7fYXP.png",y=JSON.parse('{"title":"开始吧","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/begin.md","filePath":"guide/use/begin.md","lastUpdated":1709878346000}'),p={name:"guide/use/begin.md"},l=n("",25),i=[l];function r(h,u,m,b,_,g){return d(),s("div",null,i)}const v=t(p,[["render",r]]);export{y as __pageData,v as default};
          +import{_ as e}from"./chunks/down_repo.IpAN7Bl0.js";import{_ as a}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as o}from"./chunks/open_cmd.sSnH096g.js";import{_ as t,c as s,o as d,R as n}from"./chunks/framework.xvtSDt2M.js";const c="/Shmily/assets/cmd_run.oYJ7fYXP.png",y=JSON.parse('{"title":"开始吧","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/begin.md","filePath":"guide/use/begin.md","lastUpdated":1713155566000}'),p={name:"guide/use/begin.md"},l=n("",25),i=[l];function r(h,u,m,b,_,g){return d(),s("div",null,i)}const v=t(p,[["render",r]]);export{y as __pageData,v as default};
          diff --git a/assets/guide_use_data.md.pry9YiGb.js b/assets/guide_use_data.md.Hfkuy3e4.js
          similarity index 96%
          rename from assets/guide_use_data.md.pry9YiGb.js
          rename to assets/guide_use_data.md.Hfkuy3e4.js
          index d5b8be1..e05c070 100644
          --- a/assets/guide_use_data.md.pry9YiGb.js
          +++ b/assets/guide_use_data.md.Hfkuy3e4.js
          @@ -1 +1 @@
          -import{_ as e,c as a,o as t,R as o}from"./chunks/framework.xvtSDt2M.js";const u=JSON.parse('{"title":"资源文件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/data.md","filePath":"guide/use/data.md","lastUpdated":1709878346000}'),d={name:"guide/use/data.md"},c=o('

          资源文件

          路径说明

          资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

          其中 $rootPath 可以在 Get 项目的 config.js 配置.

          修改补充

          如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

          评论资源

          评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

          ',8),r=[c];function i(s,n,h,l,_,p){return t(),a("div",null,r)}const f=e(d,[["render",i]]);export{u as __pageData,f as default}; +import{_ as e,c as a,o as t,R as o}from"./chunks/framework.xvtSDt2M.js";const u=JSON.parse('{"title":"资源文件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/data.md","filePath":"guide/use/data.md","lastUpdated":1713155566000}'),d={name:"guide/use/data.md"},c=o('

          资源文件

          路径说明

          资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

          其中 $rootPath 可以在 Get 项目的 config.js 配置.

          修改补充

          如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

          评论资源

          评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

          ',8),r=[c];function i(s,n,h,l,_,p){return t(),a("div",null,r)}const f=e(d,[["render",i]]);export{u as __pageData,f as default}; diff --git a/assets/guide_use_data.md.pry9YiGb.lean.js b/assets/guide_use_data.md.Hfkuy3e4.lean.js similarity index 84% rename from assets/guide_use_data.md.pry9YiGb.lean.js rename to assets/guide_use_data.md.Hfkuy3e4.lean.js index 6ddf13b..9451196 100644 --- a/assets/guide_use_data.md.pry9YiGb.lean.js +++ b/assets/guide_use_data.md.Hfkuy3e4.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,R as o}from"./chunks/framework.xvtSDt2M.js";const u=JSON.parse('{"title":"资源文件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/data.md","filePath":"guide/use/data.md","lastUpdated":1709878346000}'),d={name:"guide/use/data.md"},c=o("",8),r=[c];function i(s,n,h,l,_,p){return t(),a("div",null,r)}const f=e(d,[["render",i]]);export{u as __pageData,f as default}; +import{_ as e,c as a,o as t,R as o}from"./chunks/framework.xvtSDt2M.js";const u=JSON.parse('{"title":"资源文件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/data.md","filePath":"guide/use/data.md","lastUpdated":1713155566000}'),d={name:"guide/use/data.md"},c=o("",8),r=[c];function i(s,n,h,l,_,p){return t(),a("div",null,r)}const f=e(d,[["render",i]]);export{u as __pageData,f as default}; diff --git a/assets/guide_use_draft.md.DRh9i-Yq.js b/assets/guide_use_draft.md.EAs2n47E.js similarity index 94% rename from assets/guide_use_draft.md.DRh9i-Yq.js rename to assets/guide_use_draft.md.EAs2n47E.js index 420d2dc..249a908 100644 --- a/assets/guide_use_draft.md.DRh9i-Yq.js +++ b/assets/guide_use_draft.md.EAs2n47E.js @@ -1 +1 @@ -import{_ as e}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as a,c as t,o,R as r}from"./chunks/framework.xvtSDt2M.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/draft.md","filePath":"guide/use/draft.md","lastUpdated":1709878346000}'),s={name:"guide/use/draft.md"},d=r('

          2. 安装项目运行时环境

          根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

          也可以按照下面列出的特性, 安装对应语言的运行时

          • nodejs (项目中有 package.json 文件)

          • python (大量 .py 后缀文件)

          • java (大量 .java 后缀文件)

          ',4),i=[d];function _(c,p,n,l,u,h){return o(),t("div",null,i)}const j=a(s,[["render",_]]);export{g as __pageData,j as default}; +import{_ as e}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as a,c as t,o,R as r}from"./chunks/framework.xvtSDt2M.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/draft.md","filePath":"guide/use/draft.md","lastUpdated":1713155566000}'),s={name:"guide/use/draft.md"},d=r('

          2. 安装项目运行时环境

          根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

          也可以按照下面列出的特性, 安装对应语言的运行时

          • nodejs (项目中有 package.json 文件)

          • python (大量 .py 后缀文件)

          • java (大量 .java 后缀文件)

          ',4),i=[d];function _(c,p,n,l,u,h){return o(),t("div",null,i)}const j=a(s,[["render",_]]);export{g as __pageData,j as default}; diff --git a/assets/guide_use_draft.md.DRh9i-Yq.lean.js b/assets/guide_use_draft.md.EAs2n47E.lean.js similarity index 86% rename from assets/guide_use_draft.md.DRh9i-Yq.lean.js rename to assets/guide_use_draft.md.EAs2n47E.lean.js index 7f02866..1eaafc4 100644 --- a/assets/guide_use_draft.md.DRh9i-Yq.lean.js +++ b/assets/guide_use_draft.md.EAs2n47E.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as a,c as t,o,R as r}from"./chunks/framework.xvtSDt2M.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/draft.md","filePath":"guide/use/draft.md","lastUpdated":1709878346000}'),s={name:"guide/use/draft.md"},d=r("",4),i=[d];function _(c,p,n,l,u,h){return o(),t("div",null,i)}const j=a(s,[["render",_]]);export{g as __pageData,j as default}; +import{_ as e}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as a,c as t,o,R as r}from"./chunks/framework.xvtSDt2M.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/draft.md","filePath":"guide/use/draft.md","lastUpdated":1713155566000}'),s={name:"guide/use/draft.md"},d=r("",4),i=[d];function _(c,p,n,l,u,h){return o(),t("div",null,i)}const j=a(s,[["render",_]]);export{g as __pageData,j as default}; diff --git a/assets/guide_use_get.md.Ojb69h_p.js b/assets/guide_use_get.md.B69av6ys.js similarity index 98% rename from assets/guide_use_get.md.Ojb69h_p.js rename to assets/guide_use_get.md.B69av6ys.js index ee68bc4..ac92278 100644 --- a/assets/guide_use_get.md.Ojb69h_p.js +++ b/assets/guide_use_get.md.B69av6ys.js @@ -1,4 +1,4 @@ -import{_ as e,c as a,o as l,R as t}from"./chunks/framework.xvtSDt2M.js";const u=JSON.parse('{"title":"Get","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/get.md","filePath":"guide/use/get.md","lastUpdated":1709878346000}'),s={name:"guide/use/get.md"},n=t(`

          Get

          支持列表 中选择所需项目, 按照相应的文档操作

          支持列表

          下面列出现有已知的 Get 项目, 更多项目可在 Github 搜索 Shmily-Get-

          TIP

          有 🎞️ 标记的在项目文档中均包含视频教程

          产物结构

          最终可以在输出目录(一般是 dist)获得 数据文件资源文件

          // 示例
          +import{_ as e,c as a,o as l,R as t}from"./chunks/framework.xvtSDt2M.js";const u=JSON.parse('{"title":"Get","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/get.md","filePath":"guide/use/get.md","lastUpdated":1713155566000}'),s={name:"guide/use/get.md"},n=t(`

          Get

          支持列表 中选择所需项目, 按照相应的文档操作

          支持列表

          下面列出现有已知的 Get 项目, 更多项目可在 Github 搜索 Shmily-Get-

          TIP

          有 🎞️ 标记的在项目文档中均包含视频教程

          产物结构

          最终可以在输出目录(一般是 dist)获得 数据文件资源文件

          // 示例
           
           - dist
               - MobileQQ-lqzh-20230101.json  <--- 数据文件
          diff --git a/assets/guide_use_get.md.Ojb69h_p.lean.js b/assets/guide_use_get.md.B69av6ys.lean.js
          similarity index 84%
          rename from assets/guide_use_get.md.Ojb69h_p.lean.js
          rename to assets/guide_use_get.md.B69av6ys.lean.js
          index b4f0c62..7017697 100644
          --- a/assets/guide_use_get.md.Ojb69h_p.lean.js
          +++ b/assets/guide_use_get.md.B69av6ys.lean.js
          @@ -1 +1 @@
          -import{_ as e,c as a,o as l,R as t}from"./chunks/framework.xvtSDt2M.js";const u=JSON.parse('{"title":"Get","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/get.md","filePath":"guide/use/get.md","lastUpdated":1709878346000}'),s={name:"guide/use/get.md"},n=t("",10),i=[n];function o(r,p,c,h,d,m){return l(),a("div",null,i)}const _=e(s,[["render",o]]);export{u as __pageData,_ as default};
          +import{_ as e,c as a,o as l,R as t}from"./chunks/framework.xvtSDt2M.js";const u=JSON.parse('{"title":"Get","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/get.md","filePath":"guide/use/get.md","lastUpdated":1713155566000}'),s={name:"guide/use/get.md"},n=t("",10),i=[n];function o(r,p,c,h,d,m){return l(),a("div",null,i)}const _=e(s,[["render",o]]);export{u as __pageData,_ as default};
          diff --git a/assets/guide_use_merger.md.-LYKHZlq.js b/assets/guide_use_merger.md.AA8cbFs8.js
          similarity index 95%
          rename from assets/guide_use_merger.md.-LYKHZlq.js
          rename to assets/guide_use_merger.md.AA8cbFs8.js
          index 4e06a16..e8c1861 100644
          --- a/assets/guide_use_merger.md.-LYKHZlq.js
          +++ b/assets/guide_use_merger.md.AA8cbFs8.js
          @@ -1 +1 @@
          -import{_ as e,c as r,o as a,R as o}from"./chunks/framework.xvtSDt2M.js";const h=JSON.parse('{"title":"Merger","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/merger.md","filePath":"guide/use/merger.md","lastUpdated":1709878346000}'),t={name:"guide/use/merger.md"},c=o('

          Merger

          用来对 不同来源(Get), 相同内容数据文件 合并去重

          如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

          可以通过此工具去重 2013-2015 年的部分.

          DANGER

          !!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

          支持列表

          • SMS CallLog 短信与通话记录
          ',7),d=[c];function l(s,i,n,_,p,u){return a(),r("div",null,d)}const m=e(t,[["render",l]]);export{h as __pageData,m as default}; +import{_ as e,c as r,o as a,R as o}from"./chunks/framework.xvtSDt2M.js";const h=JSON.parse('{"title":"Merger","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/merger.md","filePath":"guide/use/merger.md","lastUpdated":1713155566000}'),t={name:"guide/use/merger.md"},c=o('

          Merger

          用来对 不同来源(Get), 相同内容数据文件 合并去重

          如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

          可以通过此工具去重 2013-2015 年的部分.

          DANGER

          !!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

          支持列表

          • SMS CallLog 短信与通话记录
          ',7),d=[c];function l(s,i,n,_,p,u){return a(),r("div",null,d)}const m=e(t,[["render",l]]);export{h as __pageData,m as default}; diff --git a/assets/guide_use_merger.md.-LYKHZlq.lean.js b/assets/guide_use_merger.md.AA8cbFs8.lean.js similarity index 84% rename from assets/guide_use_merger.md.-LYKHZlq.lean.js rename to assets/guide_use_merger.md.AA8cbFs8.lean.js index d41084c..0e578df 100644 --- a/assets/guide_use_merger.md.-LYKHZlq.lean.js +++ b/assets/guide_use_merger.md.AA8cbFs8.lean.js @@ -1 +1 @@ -import{_ as e,c as r,o as a,R as o}from"./chunks/framework.xvtSDt2M.js";const h=JSON.parse('{"title":"Merger","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/merger.md","filePath":"guide/use/merger.md","lastUpdated":1709878346000}'),t={name:"guide/use/merger.md"},c=o("",7),d=[c];function l(s,i,n,_,p,u){return a(),r("div",null,d)}const m=e(t,[["render",l]]);export{h as __pageData,m as default}; +import{_ as e,c as r,o as a,R as o}from"./chunks/framework.xvtSDt2M.js";const h=JSON.parse('{"title":"Merger","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/merger.md","filePath":"guide/use/merger.md","lastUpdated":1713155566000}'),t={name:"guide/use/merger.md"},c=o("",7),d=[c];function l(s,i,n,_,p,u){return a(),r("div",null,d)}const m=e(t,[["render",l]]);export{h as __pageData,m as default}; diff --git a/assets/guide_use_msg_custom.md.x_5wVIRa.js b/assets/guide_use_msg_custom.md.Pqy9nrKs.js similarity index 98% rename from assets/guide_use_msg_custom.md.x_5wVIRa.js rename to assets/guide_use_msg_custom.md.Pqy9nrKs.js index accd055..ed45ff1 100644 --- a/assets/guide_use_msg_custom.md.x_5wVIRa.js +++ b/assets/guide_use_msg_custom.md.Pqy9nrKs.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,R as n}from"./chunks/framework.xvtSDt2M.js";const g=JSON.parse('{"title":"自定义","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/custom.md","filePath":"guide/use/msg/custom.md","lastUpdated":1709878346000}'),t={name:"guide/use/msg/custom.md"},l=n(`

          自定义

          • Q: 如果我想新增 Msg 类型,如 钉钉 怎么办?

          • A: 按以下步骤即可

            简单模式

            适用于和 短信 一样的简单数据,html 就够了,不需要用到复杂组件,只需要提供 html 即可

            此方式不利于数据统计

            js
                {
            +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.xvtSDt2M.js";const g=JSON.parse('{"title":"自定义","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/custom.md","filePath":"guide/use/msg/custom.md","lastUpdated":1713155566000}'),t={name:"guide/use/msg/custom.md"},l=n(`

            自定义

            • Q: 如果我想新增 Msg 类型,如 钉钉 怎么办?

            • A: 按以下步骤即可

              简单模式

              适用于和 短信 一样的简单数据,html 就够了,不需要用到复杂组件,只需要提供 html 即可

              此方式不利于数据统计

              js
                  {
                       // 通用字段都是必填 参考 [标准]
                       "source": "SMS",
                       "content": "你好,钉钉", // 用于搜索
              diff --git a/assets/guide_use_msg_custom.md.x_5wVIRa.lean.js b/assets/guide_use_msg_custom.md.Pqy9nrKs.lean.js
              similarity index 70%
              rename from assets/guide_use_msg_custom.md.x_5wVIRa.lean.js
              rename to assets/guide_use_msg_custom.md.Pqy9nrKs.lean.js
              index 4c74a7d..1d71734 100644
              --- a/assets/guide_use_msg_custom.md.x_5wVIRa.lean.js
              +++ b/assets/guide_use_msg_custom.md.Pqy9nrKs.lean.js
              @@ -1 +1 @@
              -import{_ as s,c as i,o as a,R as n}from"./chunks/framework.xvtSDt2M.js";const g=JSON.parse('{"title":"自定义","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/custom.md","filePath":"guide/use/msg/custom.md","lastUpdated":1709878346000}'),t={name:"guide/use/msg/custom.md"},l=n("",3),h=[l];function e(p,k,o,r,d,E){return a(),i("div",null,h)}const u=s(t,[["render",e]]);export{g as __pageData,u as default};
              +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.xvtSDt2M.js";const g=JSON.parse('{"title":"自定义","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/custom.md","filePath":"guide/use/msg/custom.md","lastUpdated":1713155566000}'),t={name:"guide/use/msg/custom.md"},l=n("",3),h=[l];function e(p,k,o,r,d,E){return a(),i("div",null,h)}const u=s(t,[["render",e]]);export{g as __pageData,u as default};
              diff --git a/assets/guide_use_msg_other_emotion.md.ZYEf4vIx.js b/assets/guide_use_msg_other_emotion.md.Tj1SUFuT.js
              similarity index 99%
              rename from assets/guide_use_msg_other_emotion.md.ZYEf4vIx.js
              rename to assets/guide_use_msg_other_emotion.md.Tj1SUFuT.js
              index a7c30fa..09e5350 100644
              --- a/assets/guide_use_msg_other_emotion.md.ZYEf4vIx.js
              +++ b/assets/guide_use_msg_other_emotion.md.Tj1SUFuT.js
              @@ -1,4 +1,4 @@
              -import{_ as s,c as a,o as i,R as t}from"./chunks/framework.xvtSDt2M.js";const E=JSON.parse('{"title":"表情","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/other/emotion.md","filePath":"guide/use/msg/other/emotion.md","lastUpdated":1709878346000}'),e={name:"guide/use/msg/other/emotion.md"},n=t(`

              表情

              如果您要对表情进行统计,根据数据模式不同,需要遵循以下规则

              约定

              keyvalue举例备注
              packName表情包 名称阿狸过新年如果不知道或不想写,需要硬编码为 "其他"
              desc表情 名称饺子如果不知道或不想写,需要硬编码为 "未知"
              mark表情包 描述温暖可爱的阿狸新年新装扮,让我们一起把春节、情人节和元宵节都变得萌萌哒可选, MobileQQ 官方提供这个值

              文件名使用 MD5 小写,这样可以减少重复文件占用的空间,而且如果消息类型是图片,也可以通过 md5 修正类型为表情

              ./data/qq-android-lqzh-20230101/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif

              简单模式 (从 HTML 字段统计)

              js
              {
              +import{_ as s,c as a,o as i,R as t}from"./chunks/framework.xvtSDt2M.js";const E=JSON.parse('{"title":"表情","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/other/emotion.md","filePath":"guide/use/msg/other/emotion.md","lastUpdated":1713155566000}'),e={name:"guide/use/msg/other/emotion.md"},n=t(`

              表情

              如果您要对表情进行统计,根据数据模式不同,需要遵循以下规则

              约定

              keyvalue举例备注
              packName表情包 名称阿狸过新年如果不知道或不想写,需要硬编码为 "其他"
              desc表情 名称饺子如果不知道或不想写,需要硬编码为 "未知"
              mark表情包 描述温暖可爱的阿狸新年新装扮,让我们一起把春节、情人节和元宵节都变得萌萌哒可选, MobileQQ 官方提供这个值

              文件名使用 MD5 小写,这样可以减少重复文件占用的空间,而且如果消息类型是图片,也可以通过 md5 修正类型为表情

              ./data/qq-android-lqzh-20230101/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif

              简单模式 (从 HTML 字段统计)

              js
              {
                   ...
                   html: "我是简单的一个表情,<img title='[阿狸过新年-饺子]' alt='[阿狸过新年-饺子]' src='./data/qq-android/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif' />"
                   content: "我是简单的一个表情,[阿狸过新年-饺子]"
              diff --git a/assets/guide_use_msg_other_emotion.md.ZYEf4vIx.lean.js b/assets/guide_use_msg_other_emotion.md.Tj1SUFuT.lean.js
              similarity index 85%
              rename from assets/guide_use_msg_other_emotion.md.ZYEf4vIx.lean.js
              rename to assets/guide_use_msg_other_emotion.md.Tj1SUFuT.lean.js
              index f26d9e0..9a02611 100644
              --- a/assets/guide_use_msg_other_emotion.md.ZYEf4vIx.lean.js
              +++ b/assets/guide_use_msg_other_emotion.md.Tj1SUFuT.lean.js
              @@ -1 +1 @@
              -import{_ as s,c as a,o as i,R as t}from"./chunks/framework.xvtSDt2M.js";const E=JSON.parse('{"title":"表情","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/other/emotion.md","filePath":"guide/use/msg/other/emotion.md","lastUpdated":1709878346000}'),e={name:"guide/use/msg/other/emotion.md"},n=t("",21),h=[n];function l(o,p,r,d,k,c){return i(),a("div",null,h)}const m=s(e,[["render",l]]);export{E as __pageData,m as default};
              +import{_ as s,c as a,o as i,R as t}from"./chunks/framework.xvtSDt2M.js";const E=JSON.parse('{"title":"表情","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/other/emotion.md","filePath":"guide/use/msg/other/emotion.md","lastUpdated":1713155566000}'),e={name:"guide/use/msg/other/emotion.md"},n=t("",21),h=[n];function l(o,p,r,d,k,c){return i(),a("div",null,h)}const m=s(e,[["render",l]]);export{E as __pageData,m as default};
              diff --git a/assets/guide_use_msg_schema.md.Y9dAINJT.js b/assets/guide_use_msg_schema.md.CQgQWdGO.js
              similarity index 99%
              rename from assets/guide_use_msg_schema.md.Y9dAINJT.js
              rename to assets/guide_use_msg_schema.md.CQgQWdGO.js
              index d9dadb5..73ac5f4 100644
              --- a/assets/guide_use_msg_schema.md.Y9dAINJT.js
              +++ b/assets/guide_use_msg_schema.md.CQgQWdGO.js
              @@ -1,4 +1,4 @@
              -import{_ as s,c as i,o as a,R as n}from"./chunks/framework.xvtSDt2M.js";const o=JSON.parse('{"title":"数据文件-Msg","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/schema.md","filePath":"guide/use/msg/schema.md","lastUpdated":1709878346000}'),t={name:"guide/use/msg/schema.md"},l=n(`

              数据文件-Msg

              为了 GetShow 的良好沟通, 所以需要标准化数据格式

              建议开发 Get 时按以下数据标准导出.

              • 可导尽导,为以后的历史留下余量。冗余数据在 Show 中再选择性删除

              v2.0

              json
              [{
              +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.xvtSDt2M.js";const o=JSON.parse('{"title":"数据文件-Msg","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/schema.md","filePath":"guide/use/msg/schema.md","lastUpdated":1713155566000}'),t={name:"guide/use/msg/schema.md"},l=n(`

              数据文件-Msg

              为了 GetShow 的良好沟通, 所以需要标准化数据格式

              建议开发 Get 时按以下数据标准导出.

              • 可导尽导,为以后的历史留下余量。冗余数据在 Show 中再选择性删除

              v2.0

              json
              [{
               
                   ⬇⬇⬇⬇⬇⬇  通用字段 ⬇⬇⬇⬇⬇⬇⬇
               
              diff --git a/assets/guide_use_msg_schema.md.Y9dAINJT.lean.js b/assets/guide_use_msg_schema.md.CQgQWdGO.lean.js
              similarity index 85%
              rename from assets/guide_use_msg_schema.md.Y9dAINJT.lean.js
              rename to assets/guide_use_msg_schema.md.CQgQWdGO.lean.js
              index 42f6056..7cd9dd1 100644
              --- a/assets/guide_use_msg_schema.md.Y9dAINJT.lean.js
              +++ b/assets/guide_use_msg_schema.md.CQgQWdGO.lean.js
              @@ -1 +1 @@
              -import{_ as s,c as i,o as a,R as n}from"./chunks/framework.xvtSDt2M.js";const o=JSON.parse('{"title":"数据文件-Msg","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/schema.md","filePath":"guide/use/msg/schema.md","lastUpdated":1709878346000}'),t={name:"guide/use/msg/schema.md"},l=n("",7),h=[l];function k(p,e,E,r,d,g){return a(),i("div",null,h)}const c=s(t,[["render",k]]);export{o as __pageData,c as default};
              +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.xvtSDt2M.js";const o=JSON.parse('{"title":"数据文件-Msg","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/schema.md","filePath":"guide/use/msg/schema.md","lastUpdated":1713155566000}'),t={name:"guide/use/msg/schema.md"},l=n("",7),h=[l];function k(p,e,E,r,d,g){return a(),i("div",null,h)}const c=s(t,[["render",k]]);export{o as __pageData,c as default};
              diff --git a/assets/guide_use_msg_template_index.md.OWf2I5C3.js b/assets/guide_use_msg_template_index.md.yQDEtNnb.js
              similarity index 99%
              rename from assets/guide_use_msg_template_index.md.OWf2I5C3.js
              rename to assets/guide_use_msg_template_index.md.yQDEtNnb.js
              index f565e01..324d2d0 100644
              --- a/assets/guide_use_msg_template_index.md.OWf2I5C3.js
              +++ b/assets/guide_use_msg_template_index.md.yQDEtNnb.js
              @@ -26,4 +26,4 @@ function print() { __p += __j.call(arguments, '') }
               `)+v+`return __p
               }`;var R=bs(function(){return M(o,x+"return "+v).apply(s,l)});if(R.source=v,Si(R))throw R;return R}function $d(n){return W(n).toLowerCase()}function Ud(n){return W(n).toUpperCase()}function Nd(n,e,t){if(n=W(n),n&&(t||e===s))return Iu(n);if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Dn(e),o=Ru(r,i),l=Pu(r,i)+1;return de(r,o,l).join("")}function qd(n,e,t){if(n=W(n),n&&(t||e===s))return n.slice(0,Du(n)+1);if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Pu(r,Dn(e))+1;return de(r,0,i).join("")}function Gd(n,e,t){if(n=W(n),n&&(t||e===s))return n.replace(Sr,"");if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Ru(r,Dn(e));return de(r,i).join("")}function Hd(n,e){var t=Fs,r=Ms;if(Y(e)){var i="separator"in e?e.separator:i;t="length"in e?I(e.length):t,r="omission"in e?vn(e.omission):r}n=W(n);var o=n.length;if(Be(n)){var l=Dn(n);o=l.length}if(t>=o)return n;var f=t-De(r);if(f<1)return r;var h=l?de(l,0,f).join(""):n.slice(0,f);if(i===s)return h+r;if(l&&(f+=h.length-f),Ci(i)){if(n.slice(f).search(i)){var g,_=h;for(i.global||(i=Gr(i.source,W(ki.exec(i))+"g")),i.lastIndex=0;g=i.exec(_);)var v=g.index;h=h.slice(0,v===s?f:v)}}else if(n.indexOf(vn(i),f)!=f){var m=h.lastIndexOf(i);m>-1&&(h=h.slice(0,m))}return h+r}function Kd(n){return n=W(n),n&&nl.test(n)?n.replace(Ji,mf):n}var Vd=qe(function(n,e,t){return n+(t?" ":"")+e.toUpperCase()}),Ei=Ao("toUpperCase");function xs(n,e,t){return n=W(n),e=t?s:e,e===s?df(n)?bf(n):uf(n):n.match(e)||[]}var bs=P(function(n,e){try{return gn(n,s,e)}catch(t){return Si(t)?t:new T(t)}}),zd=ne(function(n,e){return On(e,function(t){t=Vn(t),kn(n,t,Ai(n[t],n))}),n});function Yd(n){var e=n==null?0:n.length,t=b();return n=e?z(n,function(r){if(typeof r[1]!="function")throw new Sn(K);return[t(r[0]),r[1]]}):[],P(function(r){for(var i=-1;++ioe)return[];var t=Gn,r=rn(n,Gn);e=b(e),n-=Gn;for(var i=Ur(r,e);++t0||e<0)?new D(t):(n<0?t=t.takeRight(-n):n&&(t=t.drop(n)),e!==s&&(e=I(e),t=e<0?t.dropRight(-e):t.take(e-n)),t)},D.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},D.prototype.toArray=function(){return this.take(Gn)},Hn(D.prototype,function(n,e){var t=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),i=u[r?"take"+(e=="last"?"Right":""):e],o=r||/^find/.test(e);i&&(u.prototype[e]=function(){var l=this.__wrapped__,f=r?[1]:arguments,h=l instanceof D,g=f[0],_=h||E(l),v=function(B){var F=i.apply(u,le([B],f));return r&&m?F[0]:F};_&&t&&typeof g=="function"&&g.length!=1&&(h=_=!1);var m=this.__chain__,x=!!this.__actions__.length,O=o&&!m,R=h&&!x;if(!o&&_){l=R?l:new D(this);var S=n.apply(l,f);return S.__actions__.push({func:ir,args:[v],thisArg:s}),new Cn(S,m)}return O&&R?n.apply(this,f):(S=this.thru(v),O?r?S.value()[0]:S.value():S)})}),On(["pop","push","shift","sort","splice","unshift"],function(n){var e=It[n],t=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",r=/^(?:pop|shift)$/.test(n);u.prototype[n]=function(){var i=arguments;if(r&&!this.__chain__){var o=this.value();return e.apply(E(o)?o:[],i)}return this[t](function(l){return e.apply(E(l)?l:[],i)})}}),Hn(D.prototype,function(n,e){var t=u[e];if(t){var r=t.name+"";U.call($e,r)||($e[r]=[]),$e[r].push({name:e,func:t})}}),$e[Qt(s,_e).name]=[{name:"wrapper",func:s}],D.prototype.clone=Kf,D.prototype.reverse=Vf,D.prototype.value=zf,u.prototype.at=xh,u.prototype.chain=bh,u.prototype.commit=Ah,u.prototype.next=Oh,u.prototype.plant=Ch,u.prototype.reverse=Lh,u.prototype.toJSON=u.prototype.valueOf=u.prototype.value=Th,u.prototype.first=u.prototype.head,rt&&(u.prototype[rt]=Sh),u},Fe=Af();we?((we.exports=Fe)._=Fe,Rr._=Fe):nn._=Fe}).call(vt)})(pr,pr.exports);var Ng=pr.exports;const qg=Rg(Ng);var Gg=Object.defineProperty,Hg=Object.defineProperties,Kg=Object.getOwnPropertyDescriptors,Rs=Object.getOwnPropertySymbols,Vg=Object.prototype.hasOwnProperty,zg=Object.prototype.propertyIsEnumerable,Ps=(a,w,s)=>w in a?Gg(a,w,{enumerable:!0,configurable:!0,writable:!0,value:s}):a[w]=s,Ve=(a,w)=>{for(var s in w||(w={}))Vg.call(w,s)&&Ps(a,s,w[s]);if(Rs)for(var s of Rs(w))zg.call(w,s)&&Ps(a,s,w[s]);return a},Bs=(a,w)=>Hg(a,Kg(w));const Yg={props:{autoscroll:{type:Boolean,default:!0}},watch:{typeAheadPointer(){this.autoscroll&&this.maybeAdjustScroll()},open(a){this.autoscroll&&a&&this.$nextTick(()=>this.maybeAdjustScroll())}},methods:{maybeAdjustScroll(){var a;const w=((a=this.$refs.dropdownMenu)==null?void 0:a.children[this.typeAheadPointer])||!1;if(w){const s=this.getDropdownViewport(),{top:A,bottom:G,height:L}=w.getBoundingClientRect();if(As.bottom)return this.$refs.dropdownMenu.scrollTop=w.offsetTop-(s.height-L)}},getDropdownViewport(){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.getBoundingClientRect():{height:0,top:0,bottom:0}}}},Zg={data(){return{typeAheadPointer:-1}},watch:{filteredOptions(){for(let a=0;a=0;a--)if(this.selectable(this.filteredOptions[a])){this.typeAheadPointer=a;break}},typeAheadDown(){for(let a=this.typeAheadPointer+1;a{const s=a.__vccOpts||a;for(const[A,G]of w)s[A]=G;return s},Xg={},Qg={xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10"},kg=N("path",{d:"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z"},null,-1),jg=[kg];function n_(a,w){return fn(),Rn("svg",Qg,jg)}const e_=Ki(Xg,[["render",n_]]),t_={},r_={xmlns:"http://www.w3.org/2000/svg",width:"14",height:"10"},i_=N("path",{d:"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z"},null,-1),u_=[i_];function o_(a,w){return fn(),Rn("svg",r_,u_)}const s_=Ki(t_,[["render",o_]]),Ds={Deselect:e_,OpenIndicator:s_},l_={mounted(a,{instance:w}){if(w.appendToBody){const{height:s,top:A,left:G,width:L}=w.$refs.toggle.getBoundingClientRect();let K=window.scrollX||window.pageXOffset,C=window.scrollY||window.pageYOffset;a.unbindPosition=w.calculatePosition(a,w,{width:L+"px",left:K+G+"px",top:C+A+s+"px"}),document.body.appendChild(a)}},unmounted(a,{instance:w}){w.appendToBody&&(a.unbindPosition&&typeof a.unbindPosition=="function"&&a.unbindPosition(),a.parentNode&&a.parentNode.removeChild(a))}};function f_(a){const w={};return Object.keys(a).sort().forEach(s=>{w[s]=a[s]}),JSON.stringify(w)}let a_=0;function c_(){return++a_}const h_={components:Ve({},Ds),directives:{appendToBody:l_},mixins:[Yg,Zg,Jg],compatConfig:{MODE:3},emits:["open","close","update:modelValue","search","search:compositionstart","search:compositionend","search:keydown","search:blur","search:focus","search:input","option:created","option:selecting","option:selected","option:deselecting","option:deselected"],props:{modelValue:{},components:{type:Object,default:()=>({})},options:{type:Array,default(){return[]}},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},deselectFromDropdown:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},placeholder:{type:String,default:""},transition:{type:String,default:"vs__fade"},clearSearchOnSelect:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},label:{type:String,default:"label"},autocomplete:{type:String,default:"off"},reduce:{type:Function,default:a=>a},selectable:{type:Function,default:a=>!0},getOptionLabel:{type:Function,default(a){return typeof a=="object"?a.hasOwnProperty(this.label)?a[this.label]:console.warn(`[vue-select warn]: Label key "option.${this.label}" does not exist in options object ${JSON.stringify(a)}.
               https://vue-select.org/api/props.html#getoptionlabel`):a}},getOptionKey:{type:Function,default(a){if(typeof a!="object")return a;try{return a.hasOwnProperty("id")?a.id:f_(a)}catch(w){return console.warn(`[vue-select warn]: Could not stringify this option to generate unique key. Please provide'getOptionKey' prop to return a unique key for each option.
              -https://vue-select.org/api/props.html#getoptionkey`,a,w)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default(a,w,s){return(w||"").toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1}},filter:{type:Function,default(a,w){return a.filter(s=>{let A=this.getOptionLabel(s);return typeof A=="number"&&(A=A.toString()),this.filterBy(s,A,w)})}},createOption:{type:Function,default(a){return typeof this.optionList[0]=="object"?{[this.label]:a}:a}},resetOnOptionsChange:{default:!1,validator:a=>["function","boolean"].includes(typeof a)},clearSearchOnBlur:{type:Function,default:function({clearSearchOnSelect:a,multiple:w}){return a&&!w}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:()=>[13]},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:(a,w)=>a},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default(a,w,{width:s,top:A,left:G}){a.style.top=A,a.style.left=G,a.style.width=s}},dropdownShouldOpen:{type:Function,default({noDrop:a,open:w,mutableLoading:s}){return a?!1:w&&!s}},uid:{type:[String,Number],default:()=>c_()}},data(){return{search:"",open:!1,isComposing:!1,pushedTags:[],_value:[],deselectButtons:[]}},computed:{isReducingValues(){return this.$props.reduce!==this.$options.props.reduce.default},isTrackingValues(){return typeof this.modelValue>"u"||this.isReducingValues},selectedValue(){let a=this.modelValue;return this.isTrackingValues&&(a=this.$data._value),a!=null&&a!==""?[].concat(a):[]},optionList(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl(){return this.$slots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope(){const a={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:Ve({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":`vs${this.uid}__combobox`,"aria-controls":`vs${this.uid}__listbox`,ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":`vs${this.uid}__option-${this.typeAheadPointer}`}:{}),events:{compositionstart:()=>this.isComposing=!0,compositionend:()=>this.isComposing=!1,keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:w=>this.search=w.target.value}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:a,listFooter:a,header:Bs(Ve({},a),{deselect:this.deselect}),footer:Bs(Ve({},a),{deselect:this.deselect})}},childComponents(){return Ve(Ve({},Ds),this.components)},stateClasses(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching(){return!!this.search},dropdownOpen(){return this.dropdownShouldOpen(this)},searchPlaceholder(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions(){const a=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return a;const w=this.search.length?this.filter(a,this.search,this):a;if(this.taggable&&this.search.length){const s=this.createOption(this.search);this.optionExists(s)||w.unshift(s)}return w},isValueEmpty(){return this.selectedValue.length===0},showClearButton(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options(a,w){const s=()=>typeof this.resetOnOptionsChange=="function"?this.resetOnOptionsChange(a,w,this.selectedValue):this.resetOnOptionsChange;!this.taggable&&s()&&this.clearSelection(),this.modelValue&&this.isTrackingValues&&this.setInternalValueFromOptions(this.modelValue)},modelValue:{immediate:!0,handler(a){this.isTrackingValues&&this.setInternalValueFromOptions(a)}},multiple(){this.clearSelection()},open(a){this.$emit(a?"open":"close")}},created(){this.mutableLoading=this.loading},methods:{setInternalValueFromOptions(a){Array.isArray(a)?this.$data._value=a.map(w=>this.findOptionFromReducedValue(w)):this.$data._value=this.findOptionFromReducedValue(a)},select(a){this.$emit("option:selecting",a),this.isOptionSelected(a)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(a):(this.taggable&&!this.optionExists(a)&&(this.$emit("option:created",a),this.pushTag(a)),this.multiple&&(a=this.selectedValue.concat(a)),this.updateValue(a),this.$emit("option:selected",a)),this.onAfterSelect(a)},deselect(a){this.$emit("option:deselecting",a),this.updateValue(this.selectedValue.filter(w=>!this.optionComparator(w,a))),this.$emit("option:deselected",a)},clearSelection(){this.updateValue(this.multiple?[]:null)},onAfterSelect(a){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search="")},updateValue(a){typeof this.modelValue>"u"&&(this.$data._value=a),a!==null&&(Array.isArray(a)?a=a.map(w=>this.reduce(w)):a=this.reduce(a)),this.$emit("update:modelValue",a)},toggleDropdown(a){const w=a.target!==this.searchEl;w&&a.preventDefault();const s=[...this.deselectButtons||[],this.$refs.clearButton];if(this.searchEl===void 0||s.filter(Boolean).some(A=>A.contains(a.target)||A===a.target)){a.preventDefault();return}this.open&&w?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected(a){return this.selectedValue.some(w=>this.optionComparator(w,a))},isOptionDeselectable(a){return this.isOptionSelected(a)&&this.deselectFromDropdown},optionComparator(a,w){return this.getOptionKey(a)===this.getOptionKey(w)},findOptionFromReducedValue(a){const w=A=>JSON.stringify(this.reduce(A))===JSON.stringify(a),s=[...this.options,...this.pushedTags].filter(w);return s.length===1?s[0]:s.find(A=>this.optionComparator(A,this.$data._value))||a},closeSearchOptions(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){let a=null;this.multiple&&(a=[...this.selectedValue.slice(0,this.selectedValue.length-1)]),this.updateValue(a)}},optionExists(a){return this.optionList.some(w=>this.optionComparator(w,a))},normalizeOptionForSlot(a){return typeof a=="object"?a:{[this.label]:a}},pushTag(a){this.pushedTags.push(a)},onEscape(){this.search.length?this.search="":this.searchEl.blur()},onSearchBlur(){if(this.mousedown&&!this.searching)this.mousedown=!1;else{const{clearSearchOnSelect:a,multiple:w}=this;this.clearSearchOnBlur({clearSearchOnSelect:a,multiple:w})&&(this.search=""),this.closeSearchOptions();return}if(this.search.length===0&&this.options.length===0){this.closeSearchOptions();return}},onSearchFocus(){this.open=!0,this.$emit("search:focus")},onMousedown(){this.mousedown=!0},onMouseUp(){this.mousedown=!1},onSearchKeyDown(a){const w=G=>(G.preventDefault(),!this.isComposing&&this.typeAheadSelect()),s={8:G=>this.maybeDeleteValue(),9:G=>this.onTab(),27:G=>this.onEscape(),38:G=>(G.preventDefault(),this.typeAheadUp()),40:G=>(G.preventDefault(),this.typeAheadDown())};this.selectOnKeyCodes.forEach(G=>s[G]=w);const A=this.mapKeydown(s,this);if(typeof A[a.keyCode]=="function")return A[a.keyCode](a)}}},p_=["dir"],d_=["id","aria-expanded","aria-owns"],g_={ref:"selectedOptions",class:"vs__selected-options"},__=["disabled","title","aria-label","onClick"],v_={ref:"actions",class:"vs__actions"},w_=["disabled"],m_={class:"vs__spinner"},y_=["id"],x_=["id","aria-selected","onMouseover","onClick"],b_={key:0,class:"vs__no-options"},A_=ze(" Sorry, no matching options. "),O_=["id"];function S_(a,w,s,A,G,L){const K=Pg("append-to-body");return fn(),Rn("div",{dir:s.dir,class:Hi(["v-select",L.stateClasses])},[$n(a.$slots,"header",Un(zn(L.scope.header))),N("div",{id:`vs${s.uid}__combobox`,ref:"toggle",class:"vs__dropdown-toggle",role:"combobox","aria-expanded":L.dropdownOpen.toString(),"aria-owns":`vs${s.uid}__listbox`,"aria-label":"Search for option",onMousedown:w[1]||(w[1]=C=>L.toggleDropdown(C))},[N("div",g_,[(fn(!0),Rn(Ss,null,Cs(L.selectedValue,(C,$)=>$n(a.$slots,"selected-option-container",{option:L.normalizeOptionForSlot(C),deselect:L.deselect,multiple:s.multiple,disabled:s.disabled},()=>[(fn(),Rn("span",{key:s.getOptionKey(C),class:"vs__selected"},[$n(a.$slots,"selected-option",Un(zn(L.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)]),s.multiple?(fn(),Rn("button",{key:0,ref_for:!0,ref:xn=>G.deselectButtons[$]=xn,disabled:s.disabled,type:"button",class:"vs__deselect",title:`Deselect ${s.getOptionLabel(C)}`,"aria-label":`Deselect ${s.getOptionLabel(C)}`,onClick:xn=>L.deselect(C)},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,__)):$i("",!0)]))])),256)),$n(a.$slots,"search",Un(zn(L.scope.search)),()=>[N("input",Ls({class:"vs__search"},L.scope.search.attributes,Bg(L.scope.search.events)),null,16)])],512),N("div",v_,[Ui(N("button",{ref:"clearButton",disabled:s.disabled,type:"button",class:"vs__clear",title:"Clear Selected","aria-label":"Clear Selected",onClick:w[0]||(w[0]=(...C)=>L.clearSelection&&L.clearSelection(...C))},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,w_),[[Ts,L.showClearButton]]),$n(a.$slots,"open-indicator",Un(zn(L.scope.openIndicator)),()=>[s.noDrop?$i("",!0):(fn(),Mi(Wi(L.childComponents.OpenIndicator),Un(Ls({key:0},L.scope.openIndicator.attributes)),null,16))]),$n(a.$slots,"spinner",Un(zn(L.scope.spinner)),()=>[Ui(N("div",m_,"Loading...",512),[[Ts,a.mutableLoading]])])],512)],40,d_),hr(Fg,{name:s.transition},{default:Dg(()=>[L.dropdownOpen?Ui((fn(),Rn("ul",{id:`vs${s.uid}__listbox`,ref:"dropdownMenu",key:`vs${s.uid}__listbox`,class:"vs__dropdown-menu",role:"listbox",tabindex:"-1",onMousedown:w[2]||(w[2]=Es((...C)=>L.onMousedown&&L.onMousedown(...C),["prevent"])),onMouseup:w[3]||(w[3]=(...C)=>L.onMouseUp&&L.onMouseUp(...C))},[$n(a.$slots,"list-header",Un(zn(L.scope.listHeader))),(fn(!0),Rn(Ss,null,Cs(L.filteredOptions,(C,$)=>(fn(),Rn("li",{id:`vs${s.uid}__option-${$}`,key:s.getOptionKey(C),role:"option",class:Hi(["vs__dropdown-option",{"vs__dropdown-option--deselect":L.isOptionDeselectable(C)&&$===a.typeAheadPointer,"vs__dropdown-option--selected":L.isOptionSelected(C),"vs__dropdown-option--highlight":$===a.typeAheadPointer,"vs__dropdown-option--disabled":!s.selectable(C)}]),"aria-selected":$===a.typeAheadPointer?!0:null,onMouseover:xn=>s.selectable(C)?a.typeAheadPointer=$:null,onClick:Es(xn=>s.selectable(C)?L.select(C):null,["prevent","stop"])},[$n(a.$slots,"option",Un(zn(L.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)])],42,x_))),128)),L.filteredOptions.length===0?(fn(),Rn("li",b_,[$n(a.$slots,"no-options",Un(zn(L.scope.noOptions)),()=>[A_])])):$i("",!0),$n(a.$slots,"list-footer",Un(zn(L.scope.listFooter)))],40,y_)),[[K]]):(fn(),Rn("ul",{key:1,id:`vs${s.uid}__listbox`,role:"listbox",style:{display:"none",visibility:"hidden"}},null,8,O_))]),_:3},8,["name"]),$n(a.$slots,"footer",Un(zn(L.scope.footer)))],10,p_)}const qi=Ki(h_,[["render",S_]]),C_=$g('

              数据文件-Msg 示例

              示例有以下几种查看方式

              源码 (推荐)

              最及时最可靠

              Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

              Demo

              更新不及时

              ',7),L_={id:"msg-template"},T_={class:"row"},E_={class:"col"},I_=N("label",null,"source",-1),R_={class:"col"},P_=N("label",null,"type",-1),B_=N("label",null,"$source.os",-1),D_={class:"language-js vp-adaptive-theme"},F_=N("button",{title:"Copy Code",class:"copy"},null,-1),M_=N("span",{class:"lang"},"js",-1),W_={class:"shiki shiki-themes github-light github-dark vp-code"},$_={class:"line"},U_={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},N_=N("p",null,[ze("从 "),N("code",null,"Demo"),ze(),N("a",{href:"http://demo.shmily.lqzh.me/#/query?searchType=%E6%B6%88%E6%81%AF&searchKey=-Reg:/*/",target:"_blank",rel:"noreferrer"},"链接"),ze(" 筛选查看")],-1),q_=N("p",null,[N("img",{src:Ug,alt:"from demo web"})],-1),V_=JSON.parse('{"title":"数据文件-Msg 示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/template/index.md","filePath":"guide/use/msg/template/index.md","lastUpdated":1709878346000}'),G_={name:"guide/use/msg/template/index.md"},z_=Object.assign(G_,{setup(a){Mg(async()=>{w=await fetch("https://demo.shmily.lqzh.me/json/msg/msg.json").then(C=>C.json());const K=w.reduce((C,$,xn,Ye)=>{let an=C.find(tn=>tn.source===$.source);an||(an={source:$.source,type:[]},C.push(an));let ue=an.type.find(tn=>tn.type===$.type);ue||(ue={type:$.type,os:[]},an.type.push(ue));const Yn=Object.keys($).find(tn=>tn.startsWith("$"));if(Yn){let tn=qg.get($,`${Yn}.os`);tn&&!ue.os.includes(tn)&&ue.os.push(tn)}return C},[]);s.push(...K)});let w=[];const s=Is([]),A=Is({source:"",type:"",os:""}),G=Wg(()=>{if(!A.source||!A.type)return[];const K=A.source.source,C=A.type.type,$=w.filter(xn=>xn.source===K&&xn.type===C);return A.type.os.length===0?$:$.filter(xn=>xn[`$${K}`].os===A.os)});function L(K){K==="source"?(A.type="",A.os=""):K==="type"&&(A.type.os.length===1?A.os=A.type.os[0]:A.os="")}return(K,C)=>(fn(),Rn("div",null,[C_,N("div",L_,[N("div",T_,[N("div",E_,[I_,hr(Ni(qi),{options:s,label:"source",modelValue:A.source,"onUpdate:modelValue":C[0]||(C[0]=$=>A.source=$),"onOption:selected":C[1]||(C[1]=$=>L("source"))},null,8,["options","modelValue"])]),N("div",R_,[P_,hr(Ni(qi),{options:A.source?A.source.type:[],label:"type",modelValue:A.type,"onUpdate:modelValue":C[2]||(C[2]=$=>A.type=$),"onOption:selected":C[3]||(C[3]=$=>L("type"))},null,8,["options","modelValue"])]),N("div",{class:Hi(["col",{disable:!A.type||A.type.os.length===0}])},[B_,hr(Ni(qi),{options:A.type?A.type.os:[],modelValue:A.os,"onUpdate:modelValue":C[4]||(C[4]=$=>A.os=$)},null,8,["options","modelValue"])],2)])]),N("div",D_,[F_,M_,N("pre",W_,[N("code",null,[N("span",$_,[N("span",U_,Gi(G.value.slice(0,1)),1)])])])]),N_,q_]))}});export{V_ as __pageData,z_ as default}; +https://vue-select.org/api/props.html#getoptionkey`,a,w)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default(a,w,s){return(w||"").toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1}},filter:{type:Function,default(a,w){return a.filter(s=>{let A=this.getOptionLabel(s);return typeof A=="number"&&(A=A.toString()),this.filterBy(s,A,w)})}},createOption:{type:Function,default(a){return typeof this.optionList[0]=="object"?{[this.label]:a}:a}},resetOnOptionsChange:{default:!1,validator:a=>["function","boolean"].includes(typeof a)},clearSearchOnBlur:{type:Function,default:function({clearSearchOnSelect:a,multiple:w}){return a&&!w}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:()=>[13]},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:(a,w)=>a},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default(a,w,{width:s,top:A,left:G}){a.style.top=A,a.style.left=G,a.style.width=s}},dropdownShouldOpen:{type:Function,default({noDrop:a,open:w,mutableLoading:s}){return a?!1:w&&!s}},uid:{type:[String,Number],default:()=>c_()}},data(){return{search:"",open:!1,isComposing:!1,pushedTags:[],_value:[],deselectButtons:[]}},computed:{isReducingValues(){return this.$props.reduce!==this.$options.props.reduce.default},isTrackingValues(){return typeof this.modelValue>"u"||this.isReducingValues},selectedValue(){let a=this.modelValue;return this.isTrackingValues&&(a=this.$data._value),a!=null&&a!==""?[].concat(a):[]},optionList(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl(){return this.$slots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope(){const a={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:Ve({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":`vs${this.uid}__combobox`,"aria-controls":`vs${this.uid}__listbox`,ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":`vs${this.uid}__option-${this.typeAheadPointer}`}:{}),events:{compositionstart:()=>this.isComposing=!0,compositionend:()=>this.isComposing=!1,keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:w=>this.search=w.target.value}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:a,listFooter:a,header:Bs(Ve({},a),{deselect:this.deselect}),footer:Bs(Ve({},a),{deselect:this.deselect})}},childComponents(){return Ve(Ve({},Ds),this.components)},stateClasses(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching(){return!!this.search},dropdownOpen(){return this.dropdownShouldOpen(this)},searchPlaceholder(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions(){const a=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return a;const w=this.search.length?this.filter(a,this.search,this):a;if(this.taggable&&this.search.length){const s=this.createOption(this.search);this.optionExists(s)||w.unshift(s)}return w},isValueEmpty(){return this.selectedValue.length===0},showClearButton(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options(a,w){const s=()=>typeof this.resetOnOptionsChange=="function"?this.resetOnOptionsChange(a,w,this.selectedValue):this.resetOnOptionsChange;!this.taggable&&s()&&this.clearSelection(),this.modelValue&&this.isTrackingValues&&this.setInternalValueFromOptions(this.modelValue)},modelValue:{immediate:!0,handler(a){this.isTrackingValues&&this.setInternalValueFromOptions(a)}},multiple(){this.clearSelection()},open(a){this.$emit(a?"open":"close")}},created(){this.mutableLoading=this.loading},methods:{setInternalValueFromOptions(a){Array.isArray(a)?this.$data._value=a.map(w=>this.findOptionFromReducedValue(w)):this.$data._value=this.findOptionFromReducedValue(a)},select(a){this.$emit("option:selecting",a),this.isOptionSelected(a)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(a):(this.taggable&&!this.optionExists(a)&&(this.$emit("option:created",a),this.pushTag(a)),this.multiple&&(a=this.selectedValue.concat(a)),this.updateValue(a),this.$emit("option:selected",a)),this.onAfterSelect(a)},deselect(a){this.$emit("option:deselecting",a),this.updateValue(this.selectedValue.filter(w=>!this.optionComparator(w,a))),this.$emit("option:deselected",a)},clearSelection(){this.updateValue(this.multiple?[]:null)},onAfterSelect(a){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search="")},updateValue(a){typeof this.modelValue>"u"&&(this.$data._value=a),a!==null&&(Array.isArray(a)?a=a.map(w=>this.reduce(w)):a=this.reduce(a)),this.$emit("update:modelValue",a)},toggleDropdown(a){const w=a.target!==this.searchEl;w&&a.preventDefault();const s=[...this.deselectButtons||[],this.$refs.clearButton];if(this.searchEl===void 0||s.filter(Boolean).some(A=>A.contains(a.target)||A===a.target)){a.preventDefault();return}this.open&&w?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected(a){return this.selectedValue.some(w=>this.optionComparator(w,a))},isOptionDeselectable(a){return this.isOptionSelected(a)&&this.deselectFromDropdown},optionComparator(a,w){return this.getOptionKey(a)===this.getOptionKey(w)},findOptionFromReducedValue(a){const w=A=>JSON.stringify(this.reduce(A))===JSON.stringify(a),s=[...this.options,...this.pushedTags].filter(w);return s.length===1?s[0]:s.find(A=>this.optionComparator(A,this.$data._value))||a},closeSearchOptions(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){let a=null;this.multiple&&(a=[...this.selectedValue.slice(0,this.selectedValue.length-1)]),this.updateValue(a)}},optionExists(a){return this.optionList.some(w=>this.optionComparator(w,a))},normalizeOptionForSlot(a){return typeof a=="object"?a:{[this.label]:a}},pushTag(a){this.pushedTags.push(a)},onEscape(){this.search.length?this.search="":this.searchEl.blur()},onSearchBlur(){if(this.mousedown&&!this.searching)this.mousedown=!1;else{const{clearSearchOnSelect:a,multiple:w}=this;this.clearSearchOnBlur({clearSearchOnSelect:a,multiple:w})&&(this.search=""),this.closeSearchOptions();return}if(this.search.length===0&&this.options.length===0){this.closeSearchOptions();return}},onSearchFocus(){this.open=!0,this.$emit("search:focus")},onMousedown(){this.mousedown=!0},onMouseUp(){this.mousedown=!1},onSearchKeyDown(a){const w=G=>(G.preventDefault(),!this.isComposing&&this.typeAheadSelect()),s={8:G=>this.maybeDeleteValue(),9:G=>this.onTab(),27:G=>this.onEscape(),38:G=>(G.preventDefault(),this.typeAheadUp()),40:G=>(G.preventDefault(),this.typeAheadDown())};this.selectOnKeyCodes.forEach(G=>s[G]=w);const A=this.mapKeydown(s,this);if(typeof A[a.keyCode]=="function")return A[a.keyCode](a)}}},p_=["dir"],d_=["id","aria-expanded","aria-owns"],g_={ref:"selectedOptions",class:"vs__selected-options"},__=["disabled","title","aria-label","onClick"],v_={ref:"actions",class:"vs__actions"},w_=["disabled"],m_={class:"vs__spinner"},y_=["id"],x_=["id","aria-selected","onMouseover","onClick"],b_={key:0,class:"vs__no-options"},A_=ze(" Sorry, no matching options. "),O_=["id"];function S_(a,w,s,A,G,L){const K=Pg("append-to-body");return fn(),Rn("div",{dir:s.dir,class:Hi(["v-select",L.stateClasses])},[$n(a.$slots,"header",Un(zn(L.scope.header))),N("div",{id:`vs${s.uid}__combobox`,ref:"toggle",class:"vs__dropdown-toggle",role:"combobox","aria-expanded":L.dropdownOpen.toString(),"aria-owns":`vs${s.uid}__listbox`,"aria-label":"Search for option",onMousedown:w[1]||(w[1]=C=>L.toggleDropdown(C))},[N("div",g_,[(fn(!0),Rn(Ss,null,Cs(L.selectedValue,(C,$)=>$n(a.$slots,"selected-option-container",{option:L.normalizeOptionForSlot(C),deselect:L.deselect,multiple:s.multiple,disabled:s.disabled},()=>[(fn(),Rn("span",{key:s.getOptionKey(C),class:"vs__selected"},[$n(a.$slots,"selected-option",Un(zn(L.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)]),s.multiple?(fn(),Rn("button",{key:0,ref_for:!0,ref:xn=>G.deselectButtons[$]=xn,disabled:s.disabled,type:"button",class:"vs__deselect",title:`Deselect ${s.getOptionLabel(C)}`,"aria-label":`Deselect ${s.getOptionLabel(C)}`,onClick:xn=>L.deselect(C)},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,__)):$i("",!0)]))])),256)),$n(a.$slots,"search",Un(zn(L.scope.search)),()=>[N("input",Ls({class:"vs__search"},L.scope.search.attributes,Bg(L.scope.search.events)),null,16)])],512),N("div",v_,[Ui(N("button",{ref:"clearButton",disabled:s.disabled,type:"button",class:"vs__clear",title:"Clear Selected","aria-label":"Clear Selected",onClick:w[0]||(w[0]=(...C)=>L.clearSelection&&L.clearSelection(...C))},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,w_),[[Ts,L.showClearButton]]),$n(a.$slots,"open-indicator",Un(zn(L.scope.openIndicator)),()=>[s.noDrop?$i("",!0):(fn(),Mi(Wi(L.childComponents.OpenIndicator),Un(Ls({key:0},L.scope.openIndicator.attributes)),null,16))]),$n(a.$slots,"spinner",Un(zn(L.scope.spinner)),()=>[Ui(N("div",m_,"Loading...",512),[[Ts,a.mutableLoading]])])],512)],40,d_),hr(Fg,{name:s.transition},{default:Dg(()=>[L.dropdownOpen?Ui((fn(),Rn("ul",{id:`vs${s.uid}__listbox`,ref:"dropdownMenu",key:`vs${s.uid}__listbox`,class:"vs__dropdown-menu",role:"listbox",tabindex:"-1",onMousedown:w[2]||(w[2]=Es((...C)=>L.onMousedown&&L.onMousedown(...C),["prevent"])),onMouseup:w[3]||(w[3]=(...C)=>L.onMouseUp&&L.onMouseUp(...C))},[$n(a.$slots,"list-header",Un(zn(L.scope.listHeader))),(fn(!0),Rn(Ss,null,Cs(L.filteredOptions,(C,$)=>(fn(),Rn("li",{id:`vs${s.uid}__option-${$}`,key:s.getOptionKey(C),role:"option",class:Hi(["vs__dropdown-option",{"vs__dropdown-option--deselect":L.isOptionDeselectable(C)&&$===a.typeAheadPointer,"vs__dropdown-option--selected":L.isOptionSelected(C),"vs__dropdown-option--highlight":$===a.typeAheadPointer,"vs__dropdown-option--disabled":!s.selectable(C)}]),"aria-selected":$===a.typeAheadPointer?!0:null,onMouseover:xn=>s.selectable(C)?a.typeAheadPointer=$:null,onClick:Es(xn=>s.selectable(C)?L.select(C):null,["prevent","stop"])},[$n(a.$slots,"option",Un(zn(L.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)])],42,x_))),128)),L.filteredOptions.length===0?(fn(),Rn("li",b_,[$n(a.$slots,"no-options",Un(zn(L.scope.noOptions)),()=>[A_])])):$i("",!0),$n(a.$slots,"list-footer",Un(zn(L.scope.listFooter)))],40,y_)),[[K]]):(fn(),Rn("ul",{key:1,id:`vs${s.uid}__listbox`,role:"listbox",style:{display:"none",visibility:"hidden"}},null,8,O_))]),_:3},8,["name"]),$n(a.$slots,"footer",Un(zn(L.scope.footer)))],10,p_)}const qi=Ki(h_,[["render",S_]]),C_=$g('

              数据文件-Msg 示例

              示例有以下几种查看方式

              源码 (推荐)

              最及时最可靠

              Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

              Demo

              更新不及时

              ',7),L_={id:"msg-template"},T_={class:"row"},E_={class:"col"},I_=N("label",null,"source",-1),R_={class:"col"},P_=N("label",null,"type",-1),B_=N("label",null,"$source.os",-1),D_={class:"language-js vp-adaptive-theme"},F_=N("button",{title:"Copy Code",class:"copy"},null,-1),M_=N("span",{class:"lang"},"js",-1),W_={class:"shiki shiki-themes github-light github-dark vp-code"},$_={class:"line"},U_={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},N_=N("p",null,[ze("从 "),N("code",null,"Demo"),ze(),N("a",{href:"http://demo.shmily.lqzh.me/#/query?searchType=%E6%B6%88%E6%81%AF&searchKey=-Reg:/*/",target:"_blank",rel:"noreferrer"},"链接"),ze(" 筛选查看")],-1),q_=N("p",null,[N("img",{src:Ug,alt:"from demo web"})],-1),V_=JSON.parse('{"title":"数据文件-Msg 示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/template/index.md","filePath":"guide/use/msg/template/index.md","lastUpdated":1713155566000}'),G_={name:"guide/use/msg/template/index.md"},z_=Object.assign(G_,{setup(a){Mg(async()=>{w=await fetch("https://demo.shmily.lqzh.me/json/msg/msg.json").then(C=>C.json());const K=w.reduce((C,$,xn,Ye)=>{let an=C.find(tn=>tn.source===$.source);an||(an={source:$.source,type:[]},C.push(an));let ue=an.type.find(tn=>tn.type===$.type);ue||(ue={type:$.type,os:[]},an.type.push(ue));const Yn=Object.keys($).find(tn=>tn.startsWith("$"));if(Yn){let tn=qg.get($,`${Yn}.os`);tn&&!ue.os.includes(tn)&&ue.os.push(tn)}return C},[]);s.push(...K)});let w=[];const s=Is([]),A=Is({source:"",type:"",os:""}),G=Wg(()=>{if(!A.source||!A.type)return[];const K=A.source.source,C=A.type.type,$=w.filter(xn=>xn.source===K&&xn.type===C);return A.type.os.length===0?$:$.filter(xn=>xn[`$${K}`].os===A.os)});function L(K){K==="source"?(A.type="",A.os=""):K==="type"&&(A.type.os.length===1?A.os=A.type.os[0]:A.os="")}return(K,C)=>(fn(),Rn("div",null,[C_,N("div",L_,[N("div",T_,[N("div",E_,[I_,hr(Ni(qi),{options:s,label:"source",modelValue:A.source,"onUpdate:modelValue":C[0]||(C[0]=$=>A.source=$),"onOption:selected":C[1]||(C[1]=$=>L("source"))},null,8,["options","modelValue"])]),N("div",R_,[P_,hr(Ni(qi),{options:A.source?A.source.type:[],label:"type",modelValue:A.type,"onUpdate:modelValue":C[2]||(C[2]=$=>A.type=$),"onOption:selected":C[3]||(C[3]=$=>L("type"))},null,8,["options","modelValue"])]),N("div",{class:Hi(["col",{disable:!A.type||A.type.os.length===0}])},[B_,hr(Ni(qi),{options:A.type?A.type.os:[],modelValue:A.os,"onUpdate:modelValue":C[4]||(C[4]=$=>A.os=$)},null,8,["options","modelValue"])],2)])]),N("div",D_,[F_,M_,N("pre",W_,[N("code",null,[N("span",$_,[N("span",U_,Gi(G.value.slice(0,1)),1)])])])]),N_,q_]))}});export{V_ as __pageData,z_ as default}; diff --git a/assets/guide_use_msg_template_index.md.OWf2I5C3.lean.js b/assets/guide_use_msg_template_index.md.yQDEtNnb.lean.js similarity index 99% rename from assets/guide_use_msg_template_index.md.OWf2I5C3.lean.js rename to assets/guide_use_msg_template_index.md.yQDEtNnb.lean.js index a6fbbf8..20bc75b 100644 --- a/assets/guide_use_msg_template_index.md.OWf2I5C3.lean.js +++ b/assets/guide_use_msg_template_index.md.yQDEtNnb.lean.js @@ -26,4 +26,4 @@ function print() { __p += __j.call(arguments, '') } `)+v+`return __p }`;var R=bs(function(){return M(o,x+"return "+v).apply(s,l)});if(R.source=v,Si(R))throw R;return R}function $d(n){return W(n).toLowerCase()}function Ud(n){return W(n).toUpperCase()}function Nd(n,e,t){if(n=W(n),n&&(t||e===s))return Iu(n);if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Dn(e),o=Ru(r,i),l=Pu(r,i)+1;return de(r,o,l).join("")}function qd(n,e,t){if(n=W(n),n&&(t||e===s))return n.slice(0,Du(n)+1);if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Pu(r,Dn(e))+1;return de(r,0,i).join("")}function Gd(n,e,t){if(n=W(n),n&&(t||e===s))return n.replace(Sr,"");if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Ru(r,Dn(e));return de(r,i).join("")}function Hd(n,e){var t=Fs,r=Ms;if(Y(e)){var i="separator"in e?e.separator:i;t="length"in e?I(e.length):t,r="omission"in e?vn(e.omission):r}n=W(n);var o=n.length;if(Be(n)){var l=Dn(n);o=l.length}if(t>=o)return n;var f=t-De(r);if(f<1)return r;var h=l?de(l,0,f).join(""):n.slice(0,f);if(i===s)return h+r;if(l&&(f+=h.length-f),Ci(i)){if(n.slice(f).search(i)){var g,_=h;for(i.global||(i=Gr(i.source,W(ki.exec(i))+"g")),i.lastIndex=0;g=i.exec(_);)var v=g.index;h=h.slice(0,v===s?f:v)}}else if(n.indexOf(vn(i),f)!=f){var m=h.lastIndexOf(i);m>-1&&(h=h.slice(0,m))}return h+r}function Kd(n){return n=W(n),n&&nl.test(n)?n.replace(Ji,mf):n}var Vd=qe(function(n,e,t){return n+(t?" ":"")+e.toUpperCase()}),Ei=Ao("toUpperCase");function xs(n,e,t){return n=W(n),e=t?s:e,e===s?df(n)?bf(n):uf(n):n.match(e)||[]}var bs=P(function(n,e){try{return gn(n,s,e)}catch(t){return Si(t)?t:new T(t)}}),zd=ne(function(n,e){return On(e,function(t){t=Vn(t),kn(n,t,Ai(n[t],n))}),n});function Yd(n){var e=n==null?0:n.length,t=b();return n=e?z(n,function(r){if(typeof r[1]!="function")throw new Sn(K);return[t(r[0]),r[1]]}):[],P(function(r){for(var i=-1;++ioe)return[];var t=Gn,r=rn(n,Gn);e=b(e),n-=Gn;for(var i=Ur(r,e);++t0||e<0)?new D(t):(n<0?t=t.takeRight(-n):n&&(t=t.drop(n)),e!==s&&(e=I(e),t=e<0?t.dropRight(-e):t.take(e-n)),t)},D.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},D.prototype.toArray=function(){return this.take(Gn)},Hn(D.prototype,function(n,e){var t=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),i=u[r?"take"+(e=="last"?"Right":""):e],o=r||/^find/.test(e);i&&(u.prototype[e]=function(){var l=this.__wrapped__,f=r?[1]:arguments,h=l instanceof D,g=f[0],_=h||E(l),v=function(B){var F=i.apply(u,le([B],f));return r&&m?F[0]:F};_&&t&&typeof g=="function"&&g.length!=1&&(h=_=!1);var m=this.__chain__,x=!!this.__actions__.length,O=o&&!m,R=h&&!x;if(!o&&_){l=R?l:new D(this);var S=n.apply(l,f);return S.__actions__.push({func:ir,args:[v],thisArg:s}),new Cn(S,m)}return O&&R?n.apply(this,f):(S=this.thru(v),O?r?S.value()[0]:S.value():S)})}),On(["pop","push","shift","sort","splice","unshift"],function(n){var e=It[n],t=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",r=/^(?:pop|shift)$/.test(n);u.prototype[n]=function(){var i=arguments;if(r&&!this.__chain__){var o=this.value();return e.apply(E(o)?o:[],i)}return this[t](function(l){return e.apply(E(l)?l:[],i)})}}),Hn(D.prototype,function(n,e){var t=u[e];if(t){var r=t.name+"";U.call($e,r)||($e[r]=[]),$e[r].push({name:e,func:t})}}),$e[Qt(s,_e).name]=[{name:"wrapper",func:s}],D.prototype.clone=Kf,D.prototype.reverse=Vf,D.prototype.value=zf,u.prototype.at=xh,u.prototype.chain=bh,u.prototype.commit=Ah,u.prototype.next=Oh,u.prototype.plant=Ch,u.prototype.reverse=Lh,u.prototype.toJSON=u.prototype.valueOf=u.prototype.value=Th,u.prototype.first=u.prototype.head,rt&&(u.prototype[rt]=Sh),u},Fe=Af();we?((we.exports=Fe)._=Fe,Rr._=Fe):nn._=Fe}).call(vt)})(pr,pr.exports);var Ng=pr.exports;const qg=Rg(Ng);var Gg=Object.defineProperty,Hg=Object.defineProperties,Kg=Object.getOwnPropertyDescriptors,Rs=Object.getOwnPropertySymbols,Vg=Object.prototype.hasOwnProperty,zg=Object.prototype.propertyIsEnumerable,Ps=(a,w,s)=>w in a?Gg(a,w,{enumerable:!0,configurable:!0,writable:!0,value:s}):a[w]=s,Ve=(a,w)=>{for(var s in w||(w={}))Vg.call(w,s)&&Ps(a,s,w[s]);if(Rs)for(var s of Rs(w))zg.call(w,s)&&Ps(a,s,w[s]);return a},Bs=(a,w)=>Hg(a,Kg(w));const Yg={props:{autoscroll:{type:Boolean,default:!0}},watch:{typeAheadPointer(){this.autoscroll&&this.maybeAdjustScroll()},open(a){this.autoscroll&&a&&this.$nextTick(()=>this.maybeAdjustScroll())}},methods:{maybeAdjustScroll(){var a;const w=((a=this.$refs.dropdownMenu)==null?void 0:a.children[this.typeAheadPointer])||!1;if(w){const s=this.getDropdownViewport(),{top:A,bottom:G,height:L}=w.getBoundingClientRect();if(As.bottom)return this.$refs.dropdownMenu.scrollTop=w.offsetTop-(s.height-L)}},getDropdownViewport(){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.getBoundingClientRect():{height:0,top:0,bottom:0}}}},Zg={data(){return{typeAheadPointer:-1}},watch:{filteredOptions(){for(let a=0;a=0;a--)if(this.selectable(this.filteredOptions[a])){this.typeAheadPointer=a;break}},typeAheadDown(){for(let a=this.typeAheadPointer+1;a{const s=a.__vccOpts||a;for(const[A,G]of w)s[A]=G;return s},Xg={},Qg={xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10"},kg=N("path",{d:"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z"},null,-1),jg=[kg];function n_(a,w){return fn(),Rn("svg",Qg,jg)}const e_=Ki(Xg,[["render",n_]]),t_={},r_={xmlns:"http://www.w3.org/2000/svg",width:"14",height:"10"},i_=N("path",{d:"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z"},null,-1),u_=[i_];function o_(a,w){return fn(),Rn("svg",r_,u_)}const s_=Ki(t_,[["render",o_]]),Ds={Deselect:e_,OpenIndicator:s_},l_={mounted(a,{instance:w}){if(w.appendToBody){const{height:s,top:A,left:G,width:L}=w.$refs.toggle.getBoundingClientRect();let K=window.scrollX||window.pageXOffset,C=window.scrollY||window.pageYOffset;a.unbindPosition=w.calculatePosition(a,w,{width:L+"px",left:K+G+"px",top:C+A+s+"px"}),document.body.appendChild(a)}},unmounted(a,{instance:w}){w.appendToBody&&(a.unbindPosition&&typeof a.unbindPosition=="function"&&a.unbindPosition(),a.parentNode&&a.parentNode.removeChild(a))}};function f_(a){const w={};return Object.keys(a).sort().forEach(s=>{w[s]=a[s]}),JSON.stringify(w)}let a_=0;function c_(){return++a_}const h_={components:Ve({},Ds),directives:{appendToBody:l_},mixins:[Yg,Zg,Jg],compatConfig:{MODE:3},emits:["open","close","update:modelValue","search","search:compositionstart","search:compositionend","search:keydown","search:blur","search:focus","search:input","option:created","option:selecting","option:selected","option:deselecting","option:deselected"],props:{modelValue:{},components:{type:Object,default:()=>({})},options:{type:Array,default(){return[]}},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},deselectFromDropdown:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},placeholder:{type:String,default:""},transition:{type:String,default:"vs__fade"},clearSearchOnSelect:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},label:{type:String,default:"label"},autocomplete:{type:String,default:"off"},reduce:{type:Function,default:a=>a},selectable:{type:Function,default:a=>!0},getOptionLabel:{type:Function,default(a){return typeof a=="object"?a.hasOwnProperty(this.label)?a[this.label]:console.warn(`[vue-select warn]: Label key "option.${this.label}" does not exist in options object ${JSON.stringify(a)}. https://vue-select.org/api/props.html#getoptionlabel`):a}},getOptionKey:{type:Function,default(a){if(typeof a!="object")return a;try{return a.hasOwnProperty("id")?a.id:f_(a)}catch(w){return console.warn(`[vue-select warn]: Could not stringify this option to generate unique key. Please provide'getOptionKey' prop to return a unique key for each option. -https://vue-select.org/api/props.html#getoptionkey`,a,w)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default(a,w,s){return(w||"").toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1}},filter:{type:Function,default(a,w){return a.filter(s=>{let A=this.getOptionLabel(s);return typeof A=="number"&&(A=A.toString()),this.filterBy(s,A,w)})}},createOption:{type:Function,default(a){return typeof this.optionList[0]=="object"?{[this.label]:a}:a}},resetOnOptionsChange:{default:!1,validator:a=>["function","boolean"].includes(typeof a)},clearSearchOnBlur:{type:Function,default:function({clearSearchOnSelect:a,multiple:w}){return a&&!w}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:()=>[13]},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:(a,w)=>a},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default(a,w,{width:s,top:A,left:G}){a.style.top=A,a.style.left=G,a.style.width=s}},dropdownShouldOpen:{type:Function,default({noDrop:a,open:w,mutableLoading:s}){return a?!1:w&&!s}},uid:{type:[String,Number],default:()=>c_()}},data(){return{search:"",open:!1,isComposing:!1,pushedTags:[],_value:[],deselectButtons:[]}},computed:{isReducingValues(){return this.$props.reduce!==this.$options.props.reduce.default},isTrackingValues(){return typeof this.modelValue>"u"||this.isReducingValues},selectedValue(){let a=this.modelValue;return this.isTrackingValues&&(a=this.$data._value),a!=null&&a!==""?[].concat(a):[]},optionList(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl(){return this.$slots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope(){const a={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:Ve({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":`vs${this.uid}__combobox`,"aria-controls":`vs${this.uid}__listbox`,ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":`vs${this.uid}__option-${this.typeAheadPointer}`}:{}),events:{compositionstart:()=>this.isComposing=!0,compositionend:()=>this.isComposing=!1,keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:w=>this.search=w.target.value}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:a,listFooter:a,header:Bs(Ve({},a),{deselect:this.deselect}),footer:Bs(Ve({},a),{deselect:this.deselect})}},childComponents(){return Ve(Ve({},Ds),this.components)},stateClasses(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching(){return!!this.search},dropdownOpen(){return this.dropdownShouldOpen(this)},searchPlaceholder(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions(){const a=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return a;const w=this.search.length?this.filter(a,this.search,this):a;if(this.taggable&&this.search.length){const s=this.createOption(this.search);this.optionExists(s)||w.unshift(s)}return w},isValueEmpty(){return this.selectedValue.length===0},showClearButton(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options(a,w){const s=()=>typeof this.resetOnOptionsChange=="function"?this.resetOnOptionsChange(a,w,this.selectedValue):this.resetOnOptionsChange;!this.taggable&&s()&&this.clearSelection(),this.modelValue&&this.isTrackingValues&&this.setInternalValueFromOptions(this.modelValue)},modelValue:{immediate:!0,handler(a){this.isTrackingValues&&this.setInternalValueFromOptions(a)}},multiple(){this.clearSelection()},open(a){this.$emit(a?"open":"close")}},created(){this.mutableLoading=this.loading},methods:{setInternalValueFromOptions(a){Array.isArray(a)?this.$data._value=a.map(w=>this.findOptionFromReducedValue(w)):this.$data._value=this.findOptionFromReducedValue(a)},select(a){this.$emit("option:selecting",a),this.isOptionSelected(a)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(a):(this.taggable&&!this.optionExists(a)&&(this.$emit("option:created",a),this.pushTag(a)),this.multiple&&(a=this.selectedValue.concat(a)),this.updateValue(a),this.$emit("option:selected",a)),this.onAfterSelect(a)},deselect(a){this.$emit("option:deselecting",a),this.updateValue(this.selectedValue.filter(w=>!this.optionComparator(w,a))),this.$emit("option:deselected",a)},clearSelection(){this.updateValue(this.multiple?[]:null)},onAfterSelect(a){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search="")},updateValue(a){typeof this.modelValue>"u"&&(this.$data._value=a),a!==null&&(Array.isArray(a)?a=a.map(w=>this.reduce(w)):a=this.reduce(a)),this.$emit("update:modelValue",a)},toggleDropdown(a){const w=a.target!==this.searchEl;w&&a.preventDefault();const s=[...this.deselectButtons||[],this.$refs.clearButton];if(this.searchEl===void 0||s.filter(Boolean).some(A=>A.contains(a.target)||A===a.target)){a.preventDefault();return}this.open&&w?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected(a){return this.selectedValue.some(w=>this.optionComparator(w,a))},isOptionDeselectable(a){return this.isOptionSelected(a)&&this.deselectFromDropdown},optionComparator(a,w){return this.getOptionKey(a)===this.getOptionKey(w)},findOptionFromReducedValue(a){const w=A=>JSON.stringify(this.reduce(A))===JSON.stringify(a),s=[...this.options,...this.pushedTags].filter(w);return s.length===1?s[0]:s.find(A=>this.optionComparator(A,this.$data._value))||a},closeSearchOptions(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){let a=null;this.multiple&&(a=[...this.selectedValue.slice(0,this.selectedValue.length-1)]),this.updateValue(a)}},optionExists(a){return this.optionList.some(w=>this.optionComparator(w,a))},normalizeOptionForSlot(a){return typeof a=="object"?a:{[this.label]:a}},pushTag(a){this.pushedTags.push(a)},onEscape(){this.search.length?this.search="":this.searchEl.blur()},onSearchBlur(){if(this.mousedown&&!this.searching)this.mousedown=!1;else{const{clearSearchOnSelect:a,multiple:w}=this;this.clearSearchOnBlur({clearSearchOnSelect:a,multiple:w})&&(this.search=""),this.closeSearchOptions();return}if(this.search.length===0&&this.options.length===0){this.closeSearchOptions();return}},onSearchFocus(){this.open=!0,this.$emit("search:focus")},onMousedown(){this.mousedown=!0},onMouseUp(){this.mousedown=!1},onSearchKeyDown(a){const w=G=>(G.preventDefault(),!this.isComposing&&this.typeAheadSelect()),s={8:G=>this.maybeDeleteValue(),9:G=>this.onTab(),27:G=>this.onEscape(),38:G=>(G.preventDefault(),this.typeAheadUp()),40:G=>(G.preventDefault(),this.typeAheadDown())};this.selectOnKeyCodes.forEach(G=>s[G]=w);const A=this.mapKeydown(s,this);if(typeof A[a.keyCode]=="function")return A[a.keyCode](a)}}},p_=["dir"],d_=["id","aria-expanded","aria-owns"],g_={ref:"selectedOptions",class:"vs__selected-options"},__=["disabled","title","aria-label","onClick"],v_={ref:"actions",class:"vs__actions"},w_=["disabled"],m_={class:"vs__spinner"},y_=["id"],x_=["id","aria-selected","onMouseover","onClick"],b_={key:0,class:"vs__no-options"},A_=ze(" Sorry, no matching options. "),O_=["id"];function S_(a,w,s,A,G,L){const K=Pg("append-to-body");return fn(),Rn("div",{dir:s.dir,class:Hi(["v-select",L.stateClasses])},[$n(a.$slots,"header",Un(zn(L.scope.header))),N("div",{id:`vs${s.uid}__combobox`,ref:"toggle",class:"vs__dropdown-toggle",role:"combobox","aria-expanded":L.dropdownOpen.toString(),"aria-owns":`vs${s.uid}__listbox`,"aria-label":"Search for option",onMousedown:w[1]||(w[1]=C=>L.toggleDropdown(C))},[N("div",g_,[(fn(!0),Rn(Ss,null,Cs(L.selectedValue,(C,$)=>$n(a.$slots,"selected-option-container",{option:L.normalizeOptionForSlot(C),deselect:L.deselect,multiple:s.multiple,disabled:s.disabled},()=>[(fn(),Rn("span",{key:s.getOptionKey(C),class:"vs__selected"},[$n(a.$slots,"selected-option",Un(zn(L.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)]),s.multiple?(fn(),Rn("button",{key:0,ref_for:!0,ref:xn=>G.deselectButtons[$]=xn,disabled:s.disabled,type:"button",class:"vs__deselect",title:`Deselect ${s.getOptionLabel(C)}`,"aria-label":`Deselect ${s.getOptionLabel(C)}`,onClick:xn=>L.deselect(C)},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,__)):$i("",!0)]))])),256)),$n(a.$slots,"search",Un(zn(L.scope.search)),()=>[N("input",Ls({class:"vs__search"},L.scope.search.attributes,Bg(L.scope.search.events)),null,16)])],512),N("div",v_,[Ui(N("button",{ref:"clearButton",disabled:s.disabled,type:"button",class:"vs__clear",title:"Clear Selected","aria-label":"Clear Selected",onClick:w[0]||(w[0]=(...C)=>L.clearSelection&&L.clearSelection(...C))},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,w_),[[Ts,L.showClearButton]]),$n(a.$slots,"open-indicator",Un(zn(L.scope.openIndicator)),()=>[s.noDrop?$i("",!0):(fn(),Mi(Wi(L.childComponents.OpenIndicator),Un(Ls({key:0},L.scope.openIndicator.attributes)),null,16))]),$n(a.$slots,"spinner",Un(zn(L.scope.spinner)),()=>[Ui(N("div",m_,"Loading...",512),[[Ts,a.mutableLoading]])])],512)],40,d_),hr(Fg,{name:s.transition},{default:Dg(()=>[L.dropdownOpen?Ui((fn(),Rn("ul",{id:`vs${s.uid}__listbox`,ref:"dropdownMenu",key:`vs${s.uid}__listbox`,class:"vs__dropdown-menu",role:"listbox",tabindex:"-1",onMousedown:w[2]||(w[2]=Es((...C)=>L.onMousedown&&L.onMousedown(...C),["prevent"])),onMouseup:w[3]||(w[3]=(...C)=>L.onMouseUp&&L.onMouseUp(...C))},[$n(a.$slots,"list-header",Un(zn(L.scope.listHeader))),(fn(!0),Rn(Ss,null,Cs(L.filteredOptions,(C,$)=>(fn(),Rn("li",{id:`vs${s.uid}__option-${$}`,key:s.getOptionKey(C),role:"option",class:Hi(["vs__dropdown-option",{"vs__dropdown-option--deselect":L.isOptionDeselectable(C)&&$===a.typeAheadPointer,"vs__dropdown-option--selected":L.isOptionSelected(C),"vs__dropdown-option--highlight":$===a.typeAheadPointer,"vs__dropdown-option--disabled":!s.selectable(C)}]),"aria-selected":$===a.typeAheadPointer?!0:null,onMouseover:xn=>s.selectable(C)?a.typeAheadPointer=$:null,onClick:Es(xn=>s.selectable(C)?L.select(C):null,["prevent","stop"])},[$n(a.$slots,"option",Un(zn(L.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)])],42,x_))),128)),L.filteredOptions.length===0?(fn(),Rn("li",b_,[$n(a.$slots,"no-options",Un(zn(L.scope.noOptions)),()=>[A_])])):$i("",!0),$n(a.$slots,"list-footer",Un(zn(L.scope.listFooter)))],40,y_)),[[K]]):(fn(),Rn("ul",{key:1,id:`vs${s.uid}__listbox`,role:"listbox",style:{display:"none",visibility:"hidden"}},null,8,O_))]),_:3},8,["name"]),$n(a.$slots,"footer",Un(zn(L.scope.footer)))],10,p_)}const qi=Ki(h_,[["render",S_]]),C_=$g("",7),L_={id:"msg-template"},T_={class:"row"},E_={class:"col"},I_=N("label",null,"source",-1),R_={class:"col"},P_=N("label",null,"type",-1),B_=N("label",null,"$source.os",-1),D_={class:"language-js vp-adaptive-theme"},F_=N("button",{title:"Copy Code",class:"copy"},null,-1),M_=N("span",{class:"lang"},"js",-1),W_={class:"shiki shiki-themes github-light github-dark vp-code"},$_={class:"line"},U_={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},N_=N("p",null,[ze("从 "),N("code",null,"Demo"),ze(),N("a",{href:"http://demo.shmily.lqzh.me/#/query?searchType=%E6%B6%88%E6%81%AF&searchKey=-Reg:/*/",target:"_blank",rel:"noreferrer"},"链接"),ze(" 筛选查看")],-1),q_=N("p",null,[N("img",{src:Ug,alt:"from demo web"})],-1),V_=JSON.parse('{"title":"数据文件-Msg 示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/template/index.md","filePath":"guide/use/msg/template/index.md","lastUpdated":1709878346000}'),G_={name:"guide/use/msg/template/index.md"},z_=Object.assign(G_,{setup(a){Mg(async()=>{w=await fetch("https://demo.shmily.lqzh.me/json/msg/msg.json").then(C=>C.json());const K=w.reduce((C,$,xn,Ye)=>{let an=C.find(tn=>tn.source===$.source);an||(an={source:$.source,type:[]},C.push(an));let ue=an.type.find(tn=>tn.type===$.type);ue||(ue={type:$.type,os:[]},an.type.push(ue));const Yn=Object.keys($).find(tn=>tn.startsWith("$"));if(Yn){let tn=qg.get($,`${Yn}.os`);tn&&!ue.os.includes(tn)&&ue.os.push(tn)}return C},[]);s.push(...K)});let w=[];const s=Is([]),A=Is({source:"",type:"",os:""}),G=Wg(()=>{if(!A.source||!A.type)return[];const K=A.source.source,C=A.type.type,$=w.filter(xn=>xn.source===K&&xn.type===C);return A.type.os.length===0?$:$.filter(xn=>xn[`$${K}`].os===A.os)});function L(K){K==="source"?(A.type="",A.os=""):K==="type"&&(A.type.os.length===1?A.os=A.type.os[0]:A.os="")}return(K,C)=>(fn(),Rn("div",null,[C_,N("div",L_,[N("div",T_,[N("div",E_,[I_,hr(Ni(qi),{options:s,label:"source",modelValue:A.source,"onUpdate:modelValue":C[0]||(C[0]=$=>A.source=$),"onOption:selected":C[1]||(C[1]=$=>L("source"))},null,8,["options","modelValue"])]),N("div",R_,[P_,hr(Ni(qi),{options:A.source?A.source.type:[],label:"type",modelValue:A.type,"onUpdate:modelValue":C[2]||(C[2]=$=>A.type=$),"onOption:selected":C[3]||(C[3]=$=>L("type"))},null,8,["options","modelValue"])]),N("div",{class:Hi(["col",{disable:!A.type||A.type.os.length===0}])},[B_,hr(Ni(qi),{options:A.type?A.type.os:[],modelValue:A.os,"onUpdate:modelValue":C[4]||(C[4]=$=>A.os=$)},null,8,["options","modelValue"])],2)])]),N("div",D_,[F_,M_,N("pre",W_,[N("code",null,[N("span",$_,[N("span",U_,Gi(G.value.slice(0,1)),1)])])])]),N_,q_]))}});export{V_ as __pageData,z_ as default}; +https://vue-select.org/api/props.html#getoptionkey`,a,w)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default(a,w,s){return(w||"").toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1}},filter:{type:Function,default(a,w){return a.filter(s=>{let A=this.getOptionLabel(s);return typeof A=="number"&&(A=A.toString()),this.filterBy(s,A,w)})}},createOption:{type:Function,default(a){return typeof this.optionList[0]=="object"?{[this.label]:a}:a}},resetOnOptionsChange:{default:!1,validator:a=>["function","boolean"].includes(typeof a)},clearSearchOnBlur:{type:Function,default:function({clearSearchOnSelect:a,multiple:w}){return a&&!w}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:()=>[13]},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:(a,w)=>a},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default(a,w,{width:s,top:A,left:G}){a.style.top=A,a.style.left=G,a.style.width=s}},dropdownShouldOpen:{type:Function,default({noDrop:a,open:w,mutableLoading:s}){return a?!1:w&&!s}},uid:{type:[String,Number],default:()=>c_()}},data(){return{search:"",open:!1,isComposing:!1,pushedTags:[],_value:[],deselectButtons:[]}},computed:{isReducingValues(){return this.$props.reduce!==this.$options.props.reduce.default},isTrackingValues(){return typeof this.modelValue>"u"||this.isReducingValues},selectedValue(){let a=this.modelValue;return this.isTrackingValues&&(a=this.$data._value),a!=null&&a!==""?[].concat(a):[]},optionList(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl(){return this.$slots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope(){const a={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:Ve({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":`vs${this.uid}__combobox`,"aria-controls":`vs${this.uid}__listbox`,ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":`vs${this.uid}__option-${this.typeAheadPointer}`}:{}),events:{compositionstart:()=>this.isComposing=!0,compositionend:()=>this.isComposing=!1,keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:w=>this.search=w.target.value}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:a,listFooter:a,header:Bs(Ve({},a),{deselect:this.deselect}),footer:Bs(Ve({},a),{deselect:this.deselect})}},childComponents(){return Ve(Ve({},Ds),this.components)},stateClasses(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching(){return!!this.search},dropdownOpen(){return this.dropdownShouldOpen(this)},searchPlaceholder(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions(){const a=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return a;const w=this.search.length?this.filter(a,this.search,this):a;if(this.taggable&&this.search.length){const s=this.createOption(this.search);this.optionExists(s)||w.unshift(s)}return w},isValueEmpty(){return this.selectedValue.length===0},showClearButton(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options(a,w){const s=()=>typeof this.resetOnOptionsChange=="function"?this.resetOnOptionsChange(a,w,this.selectedValue):this.resetOnOptionsChange;!this.taggable&&s()&&this.clearSelection(),this.modelValue&&this.isTrackingValues&&this.setInternalValueFromOptions(this.modelValue)},modelValue:{immediate:!0,handler(a){this.isTrackingValues&&this.setInternalValueFromOptions(a)}},multiple(){this.clearSelection()},open(a){this.$emit(a?"open":"close")}},created(){this.mutableLoading=this.loading},methods:{setInternalValueFromOptions(a){Array.isArray(a)?this.$data._value=a.map(w=>this.findOptionFromReducedValue(w)):this.$data._value=this.findOptionFromReducedValue(a)},select(a){this.$emit("option:selecting",a),this.isOptionSelected(a)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(a):(this.taggable&&!this.optionExists(a)&&(this.$emit("option:created",a),this.pushTag(a)),this.multiple&&(a=this.selectedValue.concat(a)),this.updateValue(a),this.$emit("option:selected",a)),this.onAfterSelect(a)},deselect(a){this.$emit("option:deselecting",a),this.updateValue(this.selectedValue.filter(w=>!this.optionComparator(w,a))),this.$emit("option:deselected",a)},clearSelection(){this.updateValue(this.multiple?[]:null)},onAfterSelect(a){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search="")},updateValue(a){typeof this.modelValue>"u"&&(this.$data._value=a),a!==null&&(Array.isArray(a)?a=a.map(w=>this.reduce(w)):a=this.reduce(a)),this.$emit("update:modelValue",a)},toggleDropdown(a){const w=a.target!==this.searchEl;w&&a.preventDefault();const s=[...this.deselectButtons||[],this.$refs.clearButton];if(this.searchEl===void 0||s.filter(Boolean).some(A=>A.contains(a.target)||A===a.target)){a.preventDefault();return}this.open&&w?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected(a){return this.selectedValue.some(w=>this.optionComparator(w,a))},isOptionDeselectable(a){return this.isOptionSelected(a)&&this.deselectFromDropdown},optionComparator(a,w){return this.getOptionKey(a)===this.getOptionKey(w)},findOptionFromReducedValue(a){const w=A=>JSON.stringify(this.reduce(A))===JSON.stringify(a),s=[...this.options,...this.pushedTags].filter(w);return s.length===1?s[0]:s.find(A=>this.optionComparator(A,this.$data._value))||a},closeSearchOptions(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){let a=null;this.multiple&&(a=[...this.selectedValue.slice(0,this.selectedValue.length-1)]),this.updateValue(a)}},optionExists(a){return this.optionList.some(w=>this.optionComparator(w,a))},normalizeOptionForSlot(a){return typeof a=="object"?a:{[this.label]:a}},pushTag(a){this.pushedTags.push(a)},onEscape(){this.search.length?this.search="":this.searchEl.blur()},onSearchBlur(){if(this.mousedown&&!this.searching)this.mousedown=!1;else{const{clearSearchOnSelect:a,multiple:w}=this;this.clearSearchOnBlur({clearSearchOnSelect:a,multiple:w})&&(this.search=""),this.closeSearchOptions();return}if(this.search.length===0&&this.options.length===0){this.closeSearchOptions();return}},onSearchFocus(){this.open=!0,this.$emit("search:focus")},onMousedown(){this.mousedown=!0},onMouseUp(){this.mousedown=!1},onSearchKeyDown(a){const w=G=>(G.preventDefault(),!this.isComposing&&this.typeAheadSelect()),s={8:G=>this.maybeDeleteValue(),9:G=>this.onTab(),27:G=>this.onEscape(),38:G=>(G.preventDefault(),this.typeAheadUp()),40:G=>(G.preventDefault(),this.typeAheadDown())};this.selectOnKeyCodes.forEach(G=>s[G]=w);const A=this.mapKeydown(s,this);if(typeof A[a.keyCode]=="function")return A[a.keyCode](a)}}},p_=["dir"],d_=["id","aria-expanded","aria-owns"],g_={ref:"selectedOptions",class:"vs__selected-options"},__=["disabled","title","aria-label","onClick"],v_={ref:"actions",class:"vs__actions"},w_=["disabled"],m_={class:"vs__spinner"},y_=["id"],x_=["id","aria-selected","onMouseover","onClick"],b_={key:0,class:"vs__no-options"},A_=ze(" Sorry, no matching options. "),O_=["id"];function S_(a,w,s,A,G,L){const K=Pg("append-to-body");return fn(),Rn("div",{dir:s.dir,class:Hi(["v-select",L.stateClasses])},[$n(a.$slots,"header",Un(zn(L.scope.header))),N("div",{id:`vs${s.uid}__combobox`,ref:"toggle",class:"vs__dropdown-toggle",role:"combobox","aria-expanded":L.dropdownOpen.toString(),"aria-owns":`vs${s.uid}__listbox`,"aria-label":"Search for option",onMousedown:w[1]||(w[1]=C=>L.toggleDropdown(C))},[N("div",g_,[(fn(!0),Rn(Ss,null,Cs(L.selectedValue,(C,$)=>$n(a.$slots,"selected-option-container",{option:L.normalizeOptionForSlot(C),deselect:L.deselect,multiple:s.multiple,disabled:s.disabled},()=>[(fn(),Rn("span",{key:s.getOptionKey(C),class:"vs__selected"},[$n(a.$slots,"selected-option",Un(zn(L.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)]),s.multiple?(fn(),Rn("button",{key:0,ref_for:!0,ref:xn=>G.deselectButtons[$]=xn,disabled:s.disabled,type:"button",class:"vs__deselect",title:`Deselect ${s.getOptionLabel(C)}`,"aria-label":`Deselect ${s.getOptionLabel(C)}`,onClick:xn=>L.deselect(C)},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,__)):$i("",!0)]))])),256)),$n(a.$slots,"search",Un(zn(L.scope.search)),()=>[N("input",Ls({class:"vs__search"},L.scope.search.attributes,Bg(L.scope.search.events)),null,16)])],512),N("div",v_,[Ui(N("button",{ref:"clearButton",disabled:s.disabled,type:"button",class:"vs__clear",title:"Clear Selected","aria-label":"Clear Selected",onClick:w[0]||(w[0]=(...C)=>L.clearSelection&&L.clearSelection(...C))},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,w_),[[Ts,L.showClearButton]]),$n(a.$slots,"open-indicator",Un(zn(L.scope.openIndicator)),()=>[s.noDrop?$i("",!0):(fn(),Mi(Wi(L.childComponents.OpenIndicator),Un(Ls({key:0},L.scope.openIndicator.attributes)),null,16))]),$n(a.$slots,"spinner",Un(zn(L.scope.spinner)),()=>[Ui(N("div",m_,"Loading...",512),[[Ts,a.mutableLoading]])])],512)],40,d_),hr(Fg,{name:s.transition},{default:Dg(()=>[L.dropdownOpen?Ui((fn(),Rn("ul",{id:`vs${s.uid}__listbox`,ref:"dropdownMenu",key:`vs${s.uid}__listbox`,class:"vs__dropdown-menu",role:"listbox",tabindex:"-1",onMousedown:w[2]||(w[2]=Es((...C)=>L.onMousedown&&L.onMousedown(...C),["prevent"])),onMouseup:w[3]||(w[3]=(...C)=>L.onMouseUp&&L.onMouseUp(...C))},[$n(a.$slots,"list-header",Un(zn(L.scope.listHeader))),(fn(!0),Rn(Ss,null,Cs(L.filteredOptions,(C,$)=>(fn(),Rn("li",{id:`vs${s.uid}__option-${$}`,key:s.getOptionKey(C),role:"option",class:Hi(["vs__dropdown-option",{"vs__dropdown-option--deselect":L.isOptionDeselectable(C)&&$===a.typeAheadPointer,"vs__dropdown-option--selected":L.isOptionSelected(C),"vs__dropdown-option--highlight":$===a.typeAheadPointer,"vs__dropdown-option--disabled":!s.selectable(C)}]),"aria-selected":$===a.typeAheadPointer?!0:null,onMouseover:xn=>s.selectable(C)?a.typeAheadPointer=$:null,onClick:Es(xn=>s.selectable(C)?L.select(C):null,["prevent","stop"])},[$n(a.$slots,"option",Un(zn(L.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)])],42,x_))),128)),L.filteredOptions.length===0?(fn(),Rn("li",b_,[$n(a.$slots,"no-options",Un(zn(L.scope.noOptions)),()=>[A_])])):$i("",!0),$n(a.$slots,"list-footer",Un(zn(L.scope.listFooter)))],40,y_)),[[K]]):(fn(),Rn("ul",{key:1,id:`vs${s.uid}__listbox`,role:"listbox",style:{display:"none",visibility:"hidden"}},null,8,O_))]),_:3},8,["name"]),$n(a.$slots,"footer",Un(zn(L.scope.footer)))],10,p_)}const qi=Ki(h_,[["render",S_]]),C_=$g("",7),L_={id:"msg-template"},T_={class:"row"},E_={class:"col"},I_=N("label",null,"source",-1),R_={class:"col"},P_=N("label",null,"type",-1),B_=N("label",null,"$source.os",-1),D_={class:"language-js vp-adaptive-theme"},F_=N("button",{title:"Copy Code",class:"copy"},null,-1),M_=N("span",{class:"lang"},"js",-1),W_={class:"shiki shiki-themes github-light github-dark vp-code"},$_={class:"line"},U_={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},N_=N("p",null,[ze("从 "),N("code",null,"Demo"),ze(),N("a",{href:"http://demo.shmily.lqzh.me/#/query?searchType=%E6%B6%88%E6%81%AF&searchKey=-Reg:/*/",target:"_blank",rel:"noreferrer"},"链接"),ze(" 筛选查看")],-1),q_=N("p",null,[N("img",{src:Ug,alt:"from demo web"})],-1),V_=JSON.parse('{"title":"数据文件-Msg 示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/template/index.md","filePath":"guide/use/msg/template/index.md","lastUpdated":1713155566000}'),G_={name:"guide/use/msg/template/index.md"},z_=Object.assign(G_,{setup(a){Mg(async()=>{w=await fetch("https://demo.shmily.lqzh.me/json/msg/msg.json").then(C=>C.json());const K=w.reduce((C,$,xn,Ye)=>{let an=C.find(tn=>tn.source===$.source);an||(an={source:$.source,type:[]},C.push(an));let ue=an.type.find(tn=>tn.type===$.type);ue||(ue={type:$.type,os:[]},an.type.push(ue));const Yn=Object.keys($).find(tn=>tn.startsWith("$"));if(Yn){let tn=qg.get($,`${Yn}.os`);tn&&!ue.os.includes(tn)&&ue.os.push(tn)}return C},[]);s.push(...K)});let w=[];const s=Is([]),A=Is({source:"",type:"",os:""}),G=Wg(()=>{if(!A.source||!A.type)return[];const K=A.source.source,C=A.type.type,$=w.filter(xn=>xn.source===K&&xn.type===C);return A.type.os.length===0?$:$.filter(xn=>xn[`$${K}`].os===A.os)});function L(K){K==="source"?(A.type="",A.os=""):K==="type"&&(A.type.os.length===1?A.os=A.type.os[0]:A.os="")}return(K,C)=>(fn(),Rn("div",null,[C_,N("div",L_,[N("div",T_,[N("div",E_,[I_,hr(Ni(qi),{options:s,label:"source",modelValue:A.source,"onUpdate:modelValue":C[0]||(C[0]=$=>A.source=$),"onOption:selected":C[1]||(C[1]=$=>L("source"))},null,8,["options","modelValue"])]),N("div",R_,[P_,hr(Ni(qi),{options:A.source?A.source.type:[],label:"type",modelValue:A.type,"onUpdate:modelValue":C[2]||(C[2]=$=>A.type=$),"onOption:selected":C[3]||(C[3]=$=>L("type"))},null,8,["options","modelValue"])]),N("div",{class:Hi(["col",{disable:!A.type||A.type.os.length===0}])},[B_,hr(Ni(qi),{options:A.type?A.type.os:[],modelValue:A.os,"onUpdate:modelValue":C[4]||(C[4]=$=>A.os=$)},null,8,["options","modelValue"])],2)])]),N("div",D_,[F_,M_,N("pre",W_,[N("code",null,[N("span",$_,[N("span",U_,Gi(G.value.slice(0,1)),1)])])])]),N_,q_]))}});export{V_ as __pageData,z_ as default}; diff --git a/assets/guide_use_show.md.CVtyhI9-.js b/assets/guide_use_show.md.H4WpUCzs.js similarity index 95% rename from assets/guide_use_show.md.CVtyhI9-.js rename to assets/guide_use_show.md.H4WpUCzs.js index 346db99..5c84de3 100644 --- a/assets/guide_use_show.md.CVtyhI9-.js +++ b/assets/guide_use_show.md.H4WpUCzs.js @@ -1 +1 @@ -import{_ as e,c as o,o as t,R as a}from"./chunks/framework.xvtSDt2M.js";const p=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1709878346000}'),h={name:"guide/use/show.md"},r=a('

              Show

              TIP

              有 🎞️ 标记的在项目文档中均包含视频教程

              显示 和 修改

              加工前面 Get 到的所有数据, 用于 显示 / 搜索 / 图表 / 统计 / 评论等~


              Demo

              这是演示站~ 上面加工完就是这个效果~

              ',9),l=[r];function s(i,c,d,n,_,m){return t(),o("div",null,l)}const S=e(h,[["render",s]]);export{p as __pageData,S as default}; +import{_ as e,c as o,o as t,R as a}from"./chunks/framework.xvtSDt2M.js";const p=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1713155566000}'),h={name:"guide/use/show.md"},r=a('

              Show

              TIP

              有 🎞️ 标记的在项目文档中均包含视频教程

              显示 和 修改

              加工前面 Get 到的所有数据, 用于 显示 / 搜索 / 图表 / 统计 / 评论等~


              Demo

              这是演示站~ 上面加工完就是这个效果~

              ',9),l=[r];function s(i,c,d,n,_,m){return t(),o("div",null,l)}const S=e(h,[["render",s]]);export{p as __pageData,S as default}; diff --git a/assets/guide_use_show.md.CVtyhI9-.lean.js b/assets/guide_use_show.md.H4WpUCzs.lean.js similarity index 84% rename from assets/guide_use_show.md.CVtyhI9-.lean.js rename to assets/guide_use_show.md.H4WpUCzs.lean.js index c9739da..4b6800c 100644 --- a/assets/guide_use_show.md.CVtyhI9-.lean.js +++ b/assets/guide_use_show.md.H4WpUCzs.lean.js @@ -1 +1 @@ -import{_ as e,c as o,o as t,R as a}from"./chunks/framework.xvtSDt2M.js";const p=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1709878346000}'),h={name:"guide/use/show.md"},r=a("",9),l=[r];function s(i,c,d,n,_,m){return t(),o("div",null,l)}const S=e(h,[["render",s]]);export{p as __pageData,S as default}; +import{_ as e,c as o,o as t,R as a}from"./chunks/framework.xvtSDt2M.js";const p=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1713155566000}'),h={name:"guide/use/show.md"},r=a("",9),l=[r];function s(i,c,d,n,_,m){return t(),o("div",null,l)}const S=e(h,[["render",s]]);export{p as __pageData,S as default}; diff --git a/assets/guide_what-is.md.Sn6yWt-N.js b/assets/guide_what-is.md.LSKobG2r.js similarity index 97% rename from assets/guide_what-is.md.Sn6yWt-N.js rename to assets/guide_what-is.md.LSKobG2r.js index 01c7b06..ed40166 100644 --- a/assets/guide_what-is.md.Sn6yWt-N.js +++ b/assets/guide_what-is.md.LSKobG2r.js @@ -1 +1 @@ -import{_ as t,c as e,o as a,R as o}from"./chunks/framework.xvtSDt2M.js";const u=JSON.parse('{"title":"这是啥","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is.md","filePath":"guide/what-is.md","lastUpdated":1709878346000}'),s={name:"guide/what-is.md"},i=o('

              这是啥

              一个悲伤的故事

              我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

              • QQ 微信 等记录能融合, 并用时间线查看
              • 支持搜索过滤查询
              • 可以给消息评论
              • 有图表分析

              然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

              吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

              手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

              总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

              少啰嗦,先看Demo

               

              最后

              不支持用户数据导出的公司都是耍流氓~

              Adun Toridas

              今天,我们将夺回我们的家园,夺回我们的遗产!

              ',13),l=[i];function h(r,p,c,m,d,n){return a(),e("div",null,l)}const g=t(s,[["render",h]]);export{u as __pageData,g as default}; +import{_ as t,c as e,o as a,R as o}from"./chunks/framework.xvtSDt2M.js";const u=JSON.parse('{"title":"这是啥","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is.md","filePath":"guide/what-is.md","lastUpdated":1713155566000}'),s={name:"guide/what-is.md"},i=o('

              这是啥

              一个悲伤的故事

              我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

              • QQ 微信 等记录能融合, 并用时间线查看
              • 支持搜索过滤查询
              • 可以给消息评论
              • 有图表分析

              然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

              吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

              手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

              总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

              少啰嗦,先看Demo

               

              最后

              不支持用户数据导出的公司都是耍流氓~

              Adun Toridas

              今天,我们将夺回我们的家园,夺回我们的遗产!

              ',13),l=[i];function h(r,p,c,m,d,n){return a(),e("div",null,l)}const g=t(s,[["render",h]]);export{u as __pageData,g as default}; diff --git a/assets/guide_what-is.md.Sn6yWt-N.lean.js b/assets/guide_what-is.md.LSKobG2r.lean.js similarity index 84% rename from assets/guide_what-is.md.Sn6yWt-N.lean.js rename to assets/guide_what-is.md.LSKobG2r.lean.js index 6f16e71..c96eb14 100644 --- a/assets/guide_what-is.md.Sn6yWt-N.lean.js +++ b/assets/guide_what-is.md.LSKobG2r.lean.js @@ -1 +1 @@ -import{_ as t,c as e,o as a,R as o}from"./chunks/framework.xvtSDt2M.js";const u=JSON.parse('{"title":"这是啥","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is.md","filePath":"guide/what-is.md","lastUpdated":1709878346000}'),s={name:"guide/what-is.md"},i=o("",13),l=[i];function h(r,p,c,m,d,n){return a(),e("div",null,l)}const g=t(s,[["render",h]]);export{u as __pageData,g as default}; +import{_ as t,c as e,o as a,R as o}from"./chunks/framework.xvtSDt2M.js";const u=JSON.parse('{"title":"这是啥","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is.md","filePath":"guide/what-is.md","lastUpdated":1713155566000}'),s={name:"guide/what-is.md"},i=o("",13),l=[i];function h(r,p,c,m,d,n){return a(),e("div",null,l)}const g=t(s,[["render",h]]);export{u as __pageData,g as default}; diff --git a/assets/index.md.8_rCL-V6.js b/assets/index.md.8_rCL-V6.js new file mode 100644 index 0000000..7a983ff --- /dev/null +++ b/assets/index.md.8_rCL-V6.js @@ -0,0 +1 @@ +import{_,D as v,c as l,k as t,I as i,w as o,R as c,o as b,a as e,p as n,q as p}from"./chunks/framework.xvtSDt2M.js";const h="/Shmily/assets/f1.3NEygoYJ.png",r="/Shmily/assets/f2.KmeCDYiN.png",m="/Shmily/assets/f7.GDLfM3mV.jpg",S="/Shmily/assets/f3.BX_mJhSv.png",f="/Shmily/assets/f4.XBUdr08V.png",g="/Shmily/assets/f5.P7gBLjNP.png",x="/Shmily/assets/f6.Q6EQ9VbO.jpg",st=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"SHMILY","text":"历史的归档","tagline":"QQ、Wechat、SMS、CallLog、Email……","image":{"src":"./favicon.png","alt":"icon"},"actions":[{"theme":"brand","text":"开始文档","link":"/guide/what-is"},{"theme":"alt","text":"Demo演示","link":"http://demo.shmily.lqzh.me/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1713155566000}'),u={name:"index.md"},s=d=>(n("data-v-660d4b0b"),d=d(),p(),d),T={id:"features"},w={class:"row"},y={class:"info"},P={class:"content"},V=s(()=>t("h2",{class:"title"},"类型多 平台全",-1)),I=s(()=>t("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),N=s(()=>t("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1)),A=s(()=>t("div",{class:"cover"},[t("img",{src:h,style:{"max-width":"240px"}})],-1)),C=c('

              以前导出的能合并

              支持将以前导出的数据和现在合并

              历史不再断代

              * 如2013年导出记录(2000-2013)可以
              和2020年导出记录(2007-2020)合并
              在同一时间线查看

              数据全

              记录中的图片、表情、视频等全下载到本地永留存

              数据库字段全导出, 不限于你看到的

              * 消息头像上点击右键, 即可在 F12 开发者模式中看到完整数据

              ',2),Q={class:"row"},D={class:"info"},E={class:"content"},k=s(()=>t("h2",{class:"title"},"支持搜索和筛选",-1)),M=s(()=>t("p",null,"关键词(支持正则)搜索",-1)),B=s(()=>t("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),L=s(()=>t("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1)),R=s(()=>t("div",{class:"cover"},[t("img",{src:S,style:{"max-width":"600px"}})],-1)),$=c('

              还有评论和引用

              时间的长河有感而发?添加一条评论或打上一个Tag吧

              引用的消息也会转化为双向链接可快速跳转

              * 评论也可以搜索哦

              ',1),j={class:"row"},q={class:"info"},J={class:"content"},O=s(()=>t("h2",{class:"title"},"图表与统计",-1)),Y=s(()=>t("p",null,"不想看看各种维度的大数据么?",-1)),z=s(()=>t("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1)),G=s(()=>t("div",{class:"cover"},[t("img",{src:g,style:{"max-width":"600px"}})],-1)),U=c('

              开发

              深入底层优化,240M数据纯前端静态处理

              你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

              标准化、模块化、组件化,开发更容易

              数据字段全导出,总有你能用上的

              数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

              ',1);function X(d,F,H,K,W,Z){const a=v("P");return b(),l("div",null,[t("div",T,[t("div",w,[t("div",y,[t("div",P,[V,t("div",null,[I,i(a,null,{default:o(()=>[e("PC、Android、iOS 等各种平台")]),_:1}),N])])]),A]),C,t("div",Q,[t("div",D,[t("div",E,[k,t("div",null,[M,i(a,null,{default:o(()=>[e("时间、类型、设备、人物、通话时长等筛选")]),_:1}),B,L])])]),R]),$,t("div",j,[t("div",q,[t("div",J,[O,t("div",null,[Y,i(a,null,{default:o(()=>[e("纯表情回复的数量与对比都有哦!")]),_:1}),z])])]),G]),U])])}const dt=_(u,[["render",X],["__scopeId","data-v-660d4b0b"]]);export{st as __pageData,dt as default}; diff --git a/assets/index.md.8_rCL-V6.lean.js b/assets/index.md.8_rCL-V6.lean.js new file mode 100644 index 0000000..5fc284d --- /dev/null +++ b/assets/index.md.8_rCL-V6.lean.js @@ -0,0 +1 @@ +import{_,D as v,c as l,k as t,I as i,w as o,R as c,o as b,a as e,p as n,q as p}from"./chunks/framework.xvtSDt2M.js";const h="/Shmily/assets/f1.3NEygoYJ.png",r="/Shmily/assets/f2.KmeCDYiN.png",m="/Shmily/assets/f7.GDLfM3mV.jpg",S="/Shmily/assets/f3.BX_mJhSv.png",f="/Shmily/assets/f4.XBUdr08V.png",g="/Shmily/assets/f5.P7gBLjNP.png",x="/Shmily/assets/f6.Q6EQ9VbO.jpg",st=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"SHMILY","text":"历史的归档","tagline":"QQ、Wechat、SMS、CallLog、Email……","image":{"src":"./favicon.png","alt":"icon"},"actions":[{"theme":"brand","text":"开始文档","link":"/guide/what-is"},{"theme":"alt","text":"Demo演示","link":"http://demo.shmily.lqzh.me/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1713155566000}'),u={name:"index.md"},s=d=>(n("data-v-660d4b0b"),d=d(),p(),d),T={id:"features"},w={class:"row"},y={class:"info"},P={class:"content"},V=s(()=>t("h2",{class:"title"},"类型多 平台全",-1)),I=s(()=>t("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),N=s(()=>t("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1)),A=s(()=>t("div",{class:"cover"},[t("img",{src:h,style:{"max-width":"240px"}})],-1)),C=c("",2),Q={class:"row"},D={class:"info"},E={class:"content"},k=s(()=>t("h2",{class:"title"},"支持搜索和筛选",-1)),M=s(()=>t("p",null,"关键词(支持正则)搜索",-1)),B=s(()=>t("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),L=s(()=>t("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1)),R=s(()=>t("div",{class:"cover"},[t("img",{src:S,style:{"max-width":"600px"}})],-1)),$=c("",1),j={class:"row"},q={class:"info"},J={class:"content"},O=s(()=>t("h2",{class:"title"},"图表与统计",-1)),Y=s(()=>t("p",null,"不想看看各种维度的大数据么?",-1)),z=s(()=>t("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1)),G=s(()=>t("div",{class:"cover"},[t("img",{src:g,style:{"max-width":"600px"}})],-1)),U=c("",1);function X(d,F,H,K,W,Z){const a=v("P");return b(),l("div",null,[t("div",T,[t("div",w,[t("div",y,[t("div",P,[V,t("div",null,[I,i(a,null,{default:o(()=>[e("PC、Android、iOS 等各种平台")]),_:1}),N])])]),A]),C,t("div",Q,[t("div",D,[t("div",E,[k,t("div",null,[M,i(a,null,{default:o(()=>[e("时间、类型、设备、人物、通话时长等筛选")]),_:1}),B,L])])]),R]),$,t("div",j,[t("div",q,[t("div",J,[O,t("div",null,[Y,i(a,null,{default:o(()=>[e("纯表情回复的数量与对比都有哦!")]),_:1}),z])])]),G]),U])])}const dt=_(u,[["render",X],["__scopeId","data-v-660d4b0b"]]);export{st as __pageData,dt as default}; diff --git a/assets/index.md.uVSKw9vd.js b/assets/index.md.uVSKw9vd.js deleted file mode 100644 index 1bc4489..0000000 --- a/assets/index.md.uVSKw9vd.js +++ /dev/null @@ -1 +0,0 @@ -import{_,D as v,c as l,k as a,I as c,w as i,R as e,o as n,a as o,p,q as h}from"./chunks/framework.xvtSDt2M.js";const r="/Shmily/assets/f1.3NEygoYJ.png",m="/Shmily/assets/f2.KmeCDYiN.png",S="/Shmily/assets/f7.GDLfM3mV.jpg",f="/Shmily/assets/f3.BX_mJhSv.png",g="/Shmily/assets/f4.XBUdr08V.png",x="/Shmily/assets/f5.P7gBLjNP.png",u="/Shmily/assets/f6.Q6EQ9VbO.jpg",ta=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"SHMILY","text":"历史的归档","tagline":"QQ、Wechat、SMS、CallLog、Email……","image":{"src":"./favicon.png","alt":"icon"},"actions":[{"theme":"brand","text":"开始文档","link":"/guide/what-is"},{"theme":"alt","text":"Demo演示","link":"http://demo.shmily.lqzh.me/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1709878346000}'),T={name:"index.md"},t=s=>(p("data-v-d2ca7849"),s=s(),h(),s),w={id:"features"},y={class:"row"},P={class:"info"},V={class:"content"},I=t(()=>a("h2",{class:"title"},"类型多 平台全",-1)),N=t(()=>a("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),b=t(()=>a("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1)),A=t(()=>a("div",{class:"cover"},[a("img",{src:r,style:{"max-width":"240px"}})],-1)),C=e('

              以前导出的能合并

              支持将以前导出的数据和现在合并

              历史不再断代

              * 如2013年导出记录(2000-2013)可以
              和2020年导出记录(2007-2020)合并
              在同一时间线查看

              数据全

              记录中的图片、表情、视频等全下载到本地永留存

              数据库字段全导出, 不限于你看到的

              * 消息头像上点击右键, 即可在 F12 开发者模式中看到完整数据

              ',2),Q={class:"row"},D={class:"info"},E={class:"content"},k=t(()=>a("h2",{class:"title"},"支持搜索和筛选",-1)),M=t(()=>a("p",null,"关键词(支持正则)搜索",-1)),B=t(()=>a("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),L=t(()=>a("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1)),R=t(()=>a("div",{class:"cover"},[a("img",{src:f,style:{"max-width":"600px"}})],-1)),$=e('

              还有评论和引用

              时间的长河有感而发?添加一条评论或打上一个Tag吧

              引用的消息也会转化为双向链接可快速跳转

              * 评论也可以搜索哦

              ',1),j={class:"row"},q={class:"info"},J={class:"content"},O=t(()=>a("h2",{class:"title"},"图表与统计",-1)),Y=t(()=>a("p",null,"不想看看各种维度的大数据么?",-1)),z=t(()=>a("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1)),G=t(()=>a("div",{class:"cover"},[a("img",{src:x,style:{"max-width":"600px"}})],-1)),U=e('

              开发

              深入底层优化,240M数据纯前端静态处理

              你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

              标准化、模块化、组件化,开发更容易

              数据字段全导出,总有你能用上的

              数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

              ',1);function X(s,F,H,K,W,Z){const d=v("P");return n(),l("div",null,[a("div",w,[a("div",y,[a("div",P,[a("div",V,[I,a("div",null,[N,c(d,null,{default:i(()=>[o("PC、Android、iOS 等各种平台")]),_:1}),b])])]),A]),C,a("div",Q,[a("div",D,[a("div",E,[k,a("div",null,[M,c(d,null,{default:i(()=>[o("时间、类型、设备、人物、通话时长等筛选")]),_:1}),B,L])])]),R]),$,a("div",j,[a("div",q,[a("div",J,[O,a("div",null,[Y,c(d,null,{default:i(()=>[o("纯表情回复的数量与对比都有哦!")]),_:1}),z])])]),G]),U])])}const sa=_(T,[["render",X],["__scopeId","data-v-d2ca7849"]]);export{ta as __pageData,sa as default}; diff --git a/assets/index.md.uVSKw9vd.lean.js b/assets/index.md.uVSKw9vd.lean.js deleted file mode 100644 index 3fc76da..0000000 --- a/assets/index.md.uVSKw9vd.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_,D as v,c as l,k as a,I as c,w as i,R as e,o as n,a as o,p,q as h}from"./chunks/framework.xvtSDt2M.js";const r="/Shmily/assets/f1.3NEygoYJ.png",m="/Shmily/assets/f2.KmeCDYiN.png",S="/Shmily/assets/f7.GDLfM3mV.jpg",f="/Shmily/assets/f3.BX_mJhSv.png",g="/Shmily/assets/f4.XBUdr08V.png",x="/Shmily/assets/f5.P7gBLjNP.png",u="/Shmily/assets/f6.Q6EQ9VbO.jpg",ta=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"SHMILY","text":"历史的归档","tagline":"QQ、Wechat、SMS、CallLog、Email……","image":{"src":"./favicon.png","alt":"icon"},"actions":[{"theme":"brand","text":"开始文档","link":"/guide/what-is"},{"theme":"alt","text":"Demo演示","link":"http://demo.shmily.lqzh.me/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1709878346000}'),T={name:"index.md"},t=s=>(p("data-v-d2ca7849"),s=s(),h(),s),w={id:"features"},y={class:"row"},P={class:"info"},V={class:"content"},I=t(()=>a("h2",{class:"title"},"类型多 平台全",-1)),N=t(()=>a("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),b=t(()=>a("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1)),A=t(()=>a("div",{class:"cover"},[a("img",{src:r,style:{"max-width":"240px"}})],-1)),C=e("",2),Q={class:"row"},D={class:"info"},E={class:"content"},k=t(()=>a("h2",{class:"title"},"支持搜索和筛选",-1)),M=t(()=>a("p",null,"关键词(支持正则)搜索",-1)),B=t(()=>a("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),L=t(()=>a("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1)),R=t(()=>a("div",{class:"cover"},[a("img",{src:f,style:{"max-width":"600px"}})],-1)),$=e("",1),j={class:"row"},q={class:"info"},J={class:"content"},O=t(()=>a("h2",{class:"title"},"图表与统计",-1)),Y=t(()=>a("p",null,"不想看看各种维度的大数据么?",-1)),z=t(()=>a("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1)),G=t(()=>a("div",{class:"cover"},[a("img",{src:x,style:{"max-width":"600px"}})],-1)),U=e("",1);function X(s,F,H,K,W,Z){const d=v("P");return n(),l("div",null,[a("div",w,[a("div",y,[a("div",P,[a("div",V,[I,a("div",null,[N,c(d,null,{default:i(()=>[o("PC、Android、iOS 等各种平台")]),_:1}),b])])]),A]),C,a("div",Q,[a("div",D,[a("div",E,[k,a("div",null,[M,c(d,null,{default:i(()=>[o("时间、类型、设备、人物、通话时长等筛选")]),_:1}),B,L])])]),R]),$,a("div",j,[a("div",q,[a("div",J,[O,a("div",null,[Y,c(d,null,{default:i(()=>[o("纯表情回复的数量与对比都有哦!")]),_:1}),z])])]),G]),U])])}const sa=_(T,[["render",X],["__scopeId","data-v-d2ca7849"]]);export{ta as __pageData,sa as default}; diff --git a/assets/style.fnZCZpVu.css b/assets/style.IqS_0XHY.css similarity index 98% rename from assets/style.fnZCZpVu.css rename to assets/style.IqS_0XHY.css index 5d74aec..fa63806 100644 --- a/assets/style.fnZCZpVu.css +++ b/assets/style.IqS_0XHY.css @@ -1 +1 @@ -@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-cyrillic.jIZ9REo5.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-cyrillic-ext.8T9wMG5w.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-greek.Cb5wWeGA.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-greek-ext.9JiNzaSO.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-latin.bvIUbFQP.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-latin-ext.GZWE-KO4.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-vietnamese.paY3CzEB.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-cyrillic.-nLMcIwj.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-cyrillic-ext.OVycGSDq.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-greek.PSfer2Kc.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-greek-ext.hznxWNZO.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-latin.27E69YJn.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-latin-ext.RnFly65-.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-vietnamese.xzQHe1q1.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}: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-brand: var(--vp-c-brand-1);--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)}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-green-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-green-1);--vp-code-line-diff-remove-color: var(--vp-c-red-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red-1);--vp-code-line-warning-color: var(--vp-c-yellow-soft);--vp-code-line-error-color: var(--vp-c-red-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}: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);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--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);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-gray-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-brand-1);--vp-badge-tip-bg: var(--vp-c-brand-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);direction:ltr;font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-brand-1)}.custom-block.tip a:hover{color:var(--vp-c-brand-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge[data-v-9613cc9f]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.vp-doc h1>.VPBadge[data-v-9613cc9f]{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge[data-v-9613cc9f]{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge[data-v-9613cc9f]{vertical-align:middle}.vp-doc h4>.VPBadge[data-v-9613cc9f],.vp-doc h5>.VPBadge[data-v-9613cc9f],.vp-doc h6>.VPBadge[data-v-9613cc9f]{vertical-align:middle;line-height:18px}.VPBadge.info[data-v-9613cc9f]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-9613cc9f]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-9613cc9f]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-9613cc9f]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-f87ff6e4]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-f87ff6e4]{padding:96px 32px 168px}}.code[data-v-f87ff6e4]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-f87ff6e4]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-f87ff6e4]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-f87ff6e4]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-f87ff6e4]{padding-top:20px}.link[data-v-f87ff6e4]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-f87ff6e4]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-d0ee3533]{position:relative;z-index:1}.nested[data-v-d0ee3533]{padding-left:16px}.outline-link[data-v-d0ee3533]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:400}.outline-link[data-v-d0ee3533]:hover,.outline-link.active[data-v-d0ee3533]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-d0ee3533]{padding-left:13px}.VPDocAsideOutline[data-v-d330b1bb]{display:none}.VPDocAsideOutline.has-outline[data-v-d330b1bb]{display:block}.content[data-v-d330b1bb]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-d330b1bb]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-d330b1bb]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-7e05ebdb]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7e05ebdb]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-48f9bb55]{margin-top:64px}.edit-info[data-v-48f9bb55]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-48f9bb55]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-48f9bb55]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-48f9bb55]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-48f9bb55]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-48f9bb55]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-48f9bb55]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-48f9bb55]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-48f9bb55]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-48f9bb55]{margin-left:auto;text-align:right}.desc[data-v-48f9bb55]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-48f9bb55]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDocOutlineDropdown[data-v-eadfb36b]{margin-bottom:48px}.VPDocOutlineDropdown button[data-v-eadfb36b]{display:block;font-size:14px;font-weight:500;line-height:24px;border:1px solid var(--vp-c-border);padding:4px 12px;color:var(--vp-c-text-2);background-color:var(--vp-c-default-soft);border-radius:8px;transition:color .5s}.VPDocOutlineDropdown button[data-v-eadfb36b]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-eadfb36b]{color:var(--vp-c-text-1)}.icon[data-v-eadfb36b]{display:inline-block;vertical-align:middle;width:16px;height:16px;fill:currentColor}[data-v-eadfb36b] .outline-link{font-size:14px;font-weight:400}.open>.icon[data-v-eadfb36b]{transform:rotate(90deg)}.items[data-v-eadfb36b]{margin-top:12px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-6b87e69f]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-6b87e69f]{display:none}@media (min-width: 960px) and (max-width: 1279px){.VPDoc .VPDocOutlineDropdown[data-v-6b87e69f]{display:block}}@media (min-width: 768px){.VPDoc[data-v-6b87e69f]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-6b87e69f]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-6b87e69f]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-6b87e69f]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-6b87e69f]{display:flex;justify-content:center}.VPDoc .aside[data-v-6b87e69f]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-6b87e69f]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-6b87e69f]{max-width:1104px}}.container[data-v-6b87e69f]{margin:0 auto;width:100%}.aside[data-v-6b87e69f]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-6b87e69f]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-6b87e69f]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-6b87e69f]::-webkit-scrollbar{display:none}.aside-curtain[data-v-6b87e69f]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-6b87e69f]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-6b87e69f]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-6b87e69f]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-6b87e69f]{order:1;margin:0;min-width:640px}}.content-container[data-v-6b87e69f]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-6b87e69f]{max-width:688px}.external-link-icon-enabled[data-v-6b87e69f] :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.VPButton[data-v-c1c5efc1]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-c1c5efc1]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-c1c5efc1]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-c1c5efc1]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-c1c5efc1]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-c1c5efc1]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-c1c5efc1]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-c1c5efc1]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-c1c5efc1]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-c1c5efc1]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-c1c5efc1]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-c1c5efc1]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-c1c5efc1]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-da5d1713]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-da5d1713]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-da5d1713]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-da5d1713]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-da5d1713]{flex-direction:row}}.main[data-v-da5d1713]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-da5d1713]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-da5d1713]{text-align:left}}@media (min-width: 960px){.main[data-v-da5d1713]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-da5d1713]{max-width:592px}}.name[data-v-da5d1713],.text[data-v-da5d1713]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-da5d1713],.VPHero.has-image .text[data-v-da5d1713]{margin:0 auto}.name[data-v-da5d1713]{color:var(--vp-home-hero-name-color)}.clip[data-v-da5d1713]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-da5d1713],.text[data-v-da5d1713]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-da5d1713],.text[data-v-da5d1713]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-da5d1713],.VPHero.has-image .text[data-v-da5d1713]{margin:0}}.tagline[data-v-da5d1713]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-da5d1713]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-da5d1713]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-da5d1713]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-da5d1713]{margin:0}}.actions[data-v-da5d1713]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-da5d1713]{justify-content:center}@media (min-width: 640px){.actions[data-v-da5d1713]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-da5d1713]{justify-content:flex-start}}.action[data-v-da5d1713]{flex-shrink:0;padding:6px}.image[data-v-da5d1713]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-da5d1713]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-da5d1713]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-da5d1713]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-da5d1713]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-da5d1713]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-da5d1713]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-da5d1713]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-da5d1713]{width:320px;height:320px}}[data-v-da5d1713] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-da5d1713] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-da5d1713] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-33204567]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-33204567]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-33204567]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-33204567]>.VPImage{margin-bottom:20px}.icon[data-v-33204567]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-33204567]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-33204567]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-33204567]{padding-top:8px}.link-text-value[data-v-33204567]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-33204567]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.VPHome[data-v-d82743a8]{padding-bottom:96px}.VPHome[data-v-d82743a8] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-d82743a8]{padding-bottom:128px}}.VPContent[data-v-669faec9]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-669faec9]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-669faec9]{margin:0}@media (min-width: 960px){.VPContent[data-v-669faec9]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-669faec9]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-669faec9]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-1c15a60a]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-1c15a60a]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-1c15a60a]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-1c15a60a]{color:var(--vp-c-text-1)}.icon[data-v-1c15a60a]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-1c15a60a] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-1c15a60a]{transform:rotate(90deg)}.items[data-v-1c15a60a]{position:absolute;top:64px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}.header[data-v-1c15a60a]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-1c15a60a]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-1c15a60a]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-1c15a60a]{transition:all .2s ease-out}.flyout-leave-active[data-v-1c15a60a]{transition:all .15s ease-in}.flyout-enter-from[data-v-1c15a60a],.flyout-leave-to[data-v-1c15a60a]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-f84a0989]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--vp-c-gutter);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-f84a0989]{position:fixed}.VPLocalNav.reached-top[data-v-f84a0989]{border-top-color:transparent}@media (min-width: 960px){.VPLocalNav[data-v-f84a0989]{display:none}}.menu[data-v-f84a0989]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-f84a0989]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-f84a0989]{padding:0 32px}}.menu-icon[data-v-f84a0989]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-f84a0989]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-f84a0989]{padding:12px 32px 11px}}.VPSwitch[data-v-b1685198]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-b1685198]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b1685198]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-b1685198]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b1685198] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-b1685198] svg{fill:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-cbbe1149]{opacity:1}.moon[data-v-cbbe1149],.dark .sun[data-v-cbbe1149]{opacity:0}.dark .moon[data-v-cbbe1149]{opacity:1}.dark .VPSwitchAppearance[data-v-cbbe1149] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-e6aabb21]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-e6aabb21]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e7ea1737]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-9c007e85]{position:relative}.VPFlyout[data-v-9c007e85]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-9c007e85]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-9c007e85]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-9c007e85]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-9c007e85]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-9c007e85],.button[aria-expanded=true]+.menu[data-v-9c007e85]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-9c007e85]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-9c007e85]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-9c007e85]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-9c007e85]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-9c007e85]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-9c007e85]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-9c007e85]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-f80f8133]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-f80f8133]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-f80f8133]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-d0bd9dde]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-d0bd9dde]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-d0bd9dde]{display:none}}.trans-title[data-v-d0bd9dde]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-d0bd9dde],.item.social-links[data-v-d0bd9dde]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-d0bd9dde]{min-width:176px}.appearance-action[data-v-d0bd9dde]{margin-right:-2px}.social-links-list[data-v-d0bd9dde]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-42ef59de]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-42ef59de],.VPNavBarMenuLink[data-v-42ef59de]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}/*! @docsearch/css 3.5.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-86d1bed8]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-86d1bed8]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-86d1bed8]{border-bottom-color:var(--vp-c-divider)}}[data-v-86d1bed8] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-74abcbb9]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-74abcbb9]{display:flex;align-items:center}}.title[data-v-74abcbb9]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-d83f3580]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap}@media (min-width: 768px){.VPNavBar[data-v-d83f3580]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-d83f3580]{padding:0}.VPNavBar[data-v-d83f3580]:not(.has-sidebar):not(.top){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-d83f3580]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-d83f3580],.container>.content[data-v-d83f3580]{pointer-events:none}.container[data-v-d83f3580] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-d83f3580]{max-width:100%}}.title[data-v-d83f3580]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-d83f3580]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-d83f3580]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-d83f3580]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-d83f3580]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-d83f3580]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-d83f3580]{display:flex;justify-content:flex-end;align-items:center;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.top) .content-body[data-v-d83f3580]{position:relative;background-color:var(--vp-nav-bg-color)}}@media (max-width: 767px){.content-body[data-v-d83f3580]{column-gap:.5rem}}.menu+.translations[data-v-d83f3580]:before,.menu+.appearance[data-v-d83f3580]:before,.menu+.social-links[data-v-d83f3580]:before,.translations+.appearance[data-v-d83f3580]:before,.appearance+.social-links[data-v-d83f3580]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-d83f3580]:before,.translations+.appearance[data-v-d83f3580]:before{margin-right:16px}.appearance+.social-links[data-v-d83f3580]:before{margin-left:16px}.social-links[data-v-d83f3580]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-d83f3580]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-d83f3580]:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}@media (min-width: 1440px){.VPNavBar.has-sidebar .curtain[data-v-d83f3580]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenAppearance[data-v-2d7af913]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-2d7af913]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-05f27b2a]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-05f27b2a]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-65ef89ca]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-65ef89ca]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-65ef89ca]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-65ef89ca]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-65ef89ca]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-65ef89ca]{transform:rotate(45deg)}.button[data-v-65ef89ca]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-65ef89ca]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-65ef89ca]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-65ef89ca]:first-child{padding-top:0}.group+.group[data-v-65ef89ca],.group+.item[data-v-65ef89ca]{padding-top:4px}.VPNavScreenTranslations[data-v-d72aa483]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-d72aa483]{height:auto}.title[data-v-d72aa483]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-d72aa483]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-d72aa483]{margin-right:8px}.icon.chevron[data-v-d72aa483]{margin-left:4px}.list[data-v-d72aa483]{padding:4px 0 0 24px}.link[data-v-d72aa483]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-cc5739dd]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-cc5739dd],.VPNavScreen.fade-leave-active[data-v-cc5739dd]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-cc5739dd],.VPNavScreen.fade-leave-active .container[data-v-cc5739dd]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-cc5739dd],.VPNavScreen.fade-leave-to[data-v-cc5739dd]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-cc5739dd],.VPNavScreen.fade-leave-to .container[data-v-cc5739dd]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-cc5739dd]{display:none}}.container[data-v-cc5739dd]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-cc5739dd],.menu+.appearance[data-v-cc5739dd],.translations+.appearance[data-v-cc5739dd]{margin-top:24px}.menu+.social-links[data-v-cc5739dd]{margin-top:16px}.appearance+.social-links[data-v-cc5739dd]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-e31bd47b]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-e31bd47b]{padding-bottom:10px}.item[data-v-e31bd47b]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-e31bd47b]{cursor:pointer}.indicator[data-v-e31bd47b]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-e31bd47b]{background-color:var(--vp-c-brand-1)}.link[data-v-e31bd47b]{display:flex;align-items:center;flex-grow:1}.text[data-v-e31bd47b]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-e31bd47b]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-e31bd47b],.VPSidebarItem.level-2 .text[data-v-e31bd47b],.VPSidebarItem.level-3 .text[data-v-e31bd47b],.VPSidebarItem.level-4 .text[data-v-e31bd47b],.VPSidebarItem.level-5 .text[data-v-e31bd47b]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-e31bd47b]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.caret[data-v-e31bd47b]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-e31bd47b]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-e31bd47b]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-e31bd47b]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-e31bd47b]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-e31bd47b],.VPSidebarItem.level-2 .items[data-v-e31bd47b],.VPSidebarItem.level-3 .items[data-v-e31bd47b],.VPSidebarItem.level-4 .items[data-v-e31bd47b],.VPSidebarItem.level-5 .items[data-v-e31bd47b]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-e31bd47b]{display:none}.VPSidebar[data-v-7f44e717]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-7f44e717]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-7f44e717]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-7f44e717]{z-index:1;padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-7f44e717]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-7f44e717]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-7f44e717]{outline:0}.group+.group[data-v-7f44e717]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-7f44e717]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5a346dfe]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-96bd69d5]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-96bd69d5]{margin:0 auto;max-width:1152px}.love[data-v-96bd69d5]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-96bd69d5]{width:28px;height:28px;fill:currentColor}.message[data-v-96bd69d5]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-96bd69d5]{padding-top:32px}.action[data-v-96bd69d5]{padding-top:40px;text-align:center}.VPTeamPage[data-v-10b00018]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-10b00018]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-10b00018-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-10b00018-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:96px}}.VPTeamMembers[data-v-10b00018-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-10b00018-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-10b00018-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-28528e42]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-28528e42]{padding:32px}.VPTeamMembersItem.small .data[data-v-28528e42]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-28528e42]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-28528e42]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-28528e42]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-28528e42]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-28528e42]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-28528e42]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-28528e42]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-28528e42]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-28528e42]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-28528e42]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-28528e42]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-28528e42]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-28528e42]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-28528e42]{text-align:center}.avatar[data-v-28528e42]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-28528e42]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-28528e42]{margin:0;font-weight:600}.affiliation[data-v-28528e42]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-28528e42]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-28528e42]:hover{color:var(--vp-c-brand-1)}.desc[data-v-28528e42]{margin:0 auto}.desc[data-v-28528e42] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-28528e42]{display:flex;justify-content:center;height:56px}.sp-link[data-v-28528e42]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-28528e42]:hover,.sp .sp-link.link[data-v-28528e42]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-28528e42]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.qa-list .title{display:flex}.qa-list .title:before{content:">";margin-right:10px}.qa-list .title .link{flex:1;cursor:pointer}.qa-list .title .author{font-size:12px}.qa-list .detail{margin-left:20px;background:aliceblue;padding:5px 10px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.form input{border:1px solid #333}:root{--vs-colors--lightest: rgba(60, 60, 60, .26);--vs-colors--light: rgba(60, 60, 60, .5);--vs-colors--dark: #333;--vs-colors--darkest: rgba(0, 0, 0, .15);--vs-search-input-color: inherit;--vs-search-input-placeholder-color: inherit;--vs-font-size: 1rem;--vs-line-height: 1.4;--vs-state-disabled-bg: rgb(248, 248, 248);--vs-state-disabled-color: var(--vs-colors--light);--vs-state-disabled-controls-color: var(--vs-colors--light);--vs-state-disabled-cursor: not-allowed;--vs-border-color: var(--vs-colors--lightest);--vs-border-width: 1px;--vs-border-style: solid;--vs-border-radius: 4px;--vs-actions-padding: 4px 6px 0 3px;--vs-controls-color: var(--vs-colors--light);--vs-controls-size: 1;--vs-controls--deselect-text-shadow: 0 1px 0 #fff;--vs-selected-bg: #f0f0f0;--vs-selected-color: var(--vs-colors--dark);--vs-selected-border-color: var(--vs-border-color);--vs-selected-border-style: var(--vs-border-style);--vs-selected-border-width: var(--vs-border-width);--vs-dropdown-bg: #fff;--vs-dropdown-color: inherit;--vs-dropdown-z-index: 1000;--vs-dropdown-min-width: 160px;--vs-dropdown-max-height: 350px;--vs-dropdown-box-shadow: 0px 3px 6px 0px var(--vs-colors--darkest);--vs-dropdown-option-bg: #000;--vs-dropdown-option-color: var(--vs-dropdown-color);--vs-dropdown-option-padding: 3px 20px;--vs-dropdown-option--active-bg: #5897fb;--vs-dropdown-option--active-color: #fff;--vs-dropdown-option--deselect-bg: #fb5858;--vs-dropdown-option--deselect-color: #fff;--vs-transition-timing-function: cubic-bezier(1, -.115, .975, .855);--vs-transition-duration: .15s}.v-select{position:relative;font-family:inherit}.v-select,.v-select *{box-sizing:border-box}:root{--vs-transition-timing-function: cubic-bezier(1, .5, .8, 1);--vs-transition-duration: .15s}@-webkit-keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vs__fade-enter-active,.vs__fade-leave-active{pointer-events:none;transition:opacity var(--vs-transition-duration) var(--vs-transition-timing-function)}.vs__fade-enter,.vs__fade-leave-to{opacity:0}:root{--vs-disabled-bg: var(--vs-state-disabled-bg);--vs-disabled-color: var(--vs-state-disabled-color);--vs-disabled-cursor: var(--vs-state-disabled-cursor)}.vs--disabled .vs__dropdown-toggle,.vs--disabled .vs__clear,.vs--disabled .vs__search,.vs--disabled .vs__selected,.vs--disabled .vs__open-indicator{cursor:var(--vs-disabled-cursor);background-color:var(--vs-disabled-bg)}.v-select[dir=rtl] .vs__actions{padding:0 3px 0 6px}.v-select[dir=rtl] .vs__clear{margin-left:6px;margin-right:0}.v-select[dir=rtl] .vs__deselect{margin-left:0;margin-right:2px}.v-select[dir=rtl] .vs__dropdown-menu{text-align:right}.vs__dropdown-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;padding:0 0 4px;background:none;border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:var(--vs-border-radius);white-space:normal}.vs__selected-options{display:flex;flex-basis:100%;flex-grow:1;flex-wrap:wrap;padding:0 2px;position:relative}.vs__actions{display:flex;align-items:center;padding:var(--vs-actions-padding)}.vs--searchable .vs__dropdown-toggle{cursor:text}.vs--unsearchable .vs__dropdown-toggle{cursor:pointer}.vs--open .vs__dropdown-toggle{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.vs__open-indicator{fill:var(--vs-controls-color);transform:scale(var(--vs-controls-size));transition:transform var(--vs-transition-duration) var(--vs-transition-timing-function);transition-timing-function:var(--vs-transition-timing-function)}.vs--open .vs__open-indicator{transform:rotate(180deg) scale(var(--vs-controls-size))}.vs--loading .vs__open-indicator{opacity:0}.vs__clear{fill:var(--vs-controls-color);padding:0;border:0;background-color:transparent;cursor:pointer;margin-right:8px}.vs__dropdown-menu{display:block;box-sizing:border-box;position:absolute;top:calc(100% - var(--vs-border-width));left:0;z-index:var(--vs-dropdown-z-index);padding:5px 0;margin:0;width:100%;max-height:var(--vs-dropdown-max-height);min-width:var(--vs-dropdown-min-width);overflow-y:auto;box-shadow:var(--vs-dropdown-box-shadow);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-top-style:none;border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);text-align:left;list-style:none;background:var(--vs-dropdown-bg);color:var(--vs-dropdown-color)}.vs__no-options{text-align:center}.vs__dropdown-option{line-height:1.42857143;display:block;padding:var(--vs-dropdown-option-padding);clear:both;color:var(--vs-dropdown-option-color);white-space:nowrap;cursor:pointer}.vs__dropdown-option--highlight{background:var(--vs-dropdown-option--active-bg);color:var(--vs-dropdown-option--active-color)}.vs__dropdown-option--deselect{background:var(--vs-dropdown-option--deselect-bg);color:var(--vs-dropdown-option--deselect-color)}.vs__dropdown-option--disabled{background:var(--vs-state-disabled-bg);color:var(--vs-state-disabled-color);cursor:var(--vs-state-disabled-cursor)}.vs__selected{display:flex;align-items:center;background-color:var(--vs-selected-bg);border:var(--vs-selected-border-width) var(--vs-selected-border-style) var(--vs-selected-border-color);border-radius:var(--vs-border-radius);color:var(--vs-selected-color);line-height:var(--vs-line-height);margin:4px 2px 0;padding:0 .25em;z-index:0}.vs__deselect{display:inline-flex;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-left:4px;padding:0;border:0;cursor:pointer;background:none;fill:var(--vs-controls-color);text-shadow:var(--vs-controls--deselect-text-shadow)}.vs--single .vs__selected{background-color:transparent;border-color:transparent}.vs--single.vs--open .vs__selected,.vs--single.vs--loading .vs__selected{position:absolute;opacity:.4}.vs--single.vs--searching .vs__selected{display:none}.vs__search::-webkit-search-cancel-button{display:none}.vs__search::-webkit-search-decoration,.vs__search::-webkit-search-results-button,.vs__search::-webkit-search-results-decoration,.vs__search::-ms-clear{display:none}.vs__search,.vs__search:focus{color:var(--vs-search-input-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:var(--vs-line-height);font-size:var(--vs-font-size);border:1px solid transparent;border-left:none;outline:none;margin:4px 0 0;padding:0 7px;background:none;box-shadow:none;width:0;max-width:100%;flex-grow:1;z-index:1}.vs__search::-moz-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search::placeholder{color:var(--vs-search-input-placeholder-color)}.vs--unsearchable .vs__search{opacity:1}.vs--unsearchable:not(.vs--disabled) .vs__search{cursor:pointer}.vs--single.vs--searching:not(.vs--open):not(.vs--loading) .vs__search{opacity:.2}.vs__spinner{align-self:center;opacity:0;font-size:5px;text-indent:-9999em;overflow:hidden;border-top:.9em solid rgba(100,100,100,.1);border-right:.9em solid rgba(100,100,100,.1);border-bottom:.9em solid rgba(100,100,100,.1);border-left:.9em solid rgba(60,60,60,.45);transform:translateZ(0) scale(var(--vs-controls--spinner-size, var(--vs-controls-size)));-webkit-animation:vSelectSpinner 1.1s infinite linear;animation:vSelectSpinner 1.1s infinite linear;transition:opacity .1s}.vs__spinner,.vs__spinner:after{border-radius:50%;width:5em;height:5em;transform:scale(var(--vs-controls--spinner-size, var(--vs-controls-size)))}.vs--loading .vs__spinner{opacity:1}#msg-template .row{width:100%;display:flex}#msg-template .row .col{flex:1 0 33%}#msg-template .row .col.disable{opacity:0}.VPHome{background:radial-gradient(transparent,rgba(0,0,0,.3)),url(/Shmily/assets/bg.csZ5PfZW.jpg);background-attachment:fixed;background-size:cover}#features[data-v-d2ca7849]{margin:0 auto;max-width:1000px;background:rgba(255,255,255,.7);padding:0 20px;box-sizing:content-box;border-radius:10px;box-shadow:0 2px 12px #0000001a}#features .row[data-v-d2ca7849]{justify-content:center;display:flex;padding:20px 0;border-bottom:1px solid #aaa}#features .row[data-v-d2ca7849]:nth-child(2n){flex-direction:row-reverse}#features .row:nth-child(2n) .info[data-v-d2ca7849]{text-align:right}#features .row[data-v-d2ca7849]:last-child{border-bottom:none}#features .row .info[data-v-d2ca7849]{flex:1 1 auto;display:flex;align-items:center}#features .row .info .title[data-v-d2ca7849]{font-weight:700;font-size:18px}#features .row .info .content[data-v-d2ca7849]{margin-bottom:20px;width:100%}#features .row .info .content p[data-v-d2ca7849]{font-size:16px;margin:10px 0}#features .row .info .content .tips[data-v-d2ca7849]{font-size:12px;color:#333;font-style:italic}#features .row .info .content a[data-v-d2ca7849]{color:#3451b2;text-decoration:underline;padding:0 5px;font-weight:700;font-style:italic}#features .row .cover[data-v-d2ca7849]{flex:0 0 auto}#features .row .cover img[data-v-d2ca7849]{display:inline-block;width:100%}@media (max-width: 960px){#features .row[data-v-d2ca7849]{flex-direction:column!important}#features .row .info[data-v-d2ca7849],#features .row .cover[data-v-d2ca7849]{text-align:center!important;padding:0!important}} +@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-cyrillic.jIZ9REo5.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-cyrillic-ext.8T9wMG5w.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-greek.Cb5wWeGA.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-greek-ext.9JiNzaSO.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-latin.bvIUbFQP.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-latin-ext.GZWE-KO4.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-vietnamese.paY3CzEB.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-cyrillic.-nLMcIwj.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-cyrillic-ext.OVycGSDq.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-greek.PSfer2Kc.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-greek-ext.hznxWNZO.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-latin.27E69YJn.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-latin-ext.RnFly65-.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Shmily/assets/inter-italic-vietnamese.xzQHe1q1.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}: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-brand: var(--vp-c-brand-1);--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)}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-green-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-green-1);--vp-code-line-diff-remove-color: var(--vp-c-red-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red-1);--vp-code-line-warning-color: var(--vp-c-yellow-soft);--vp-code-line-error-color: var(--vp-c-red-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}: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);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--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);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-gray-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-brand-1);--vp-badge-tip-bg: var(--vp-c-brand-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);direction:ltr;font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-brand-1)}.custom-block.tip a:hover{color:var(--vp-c-brand-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge[data-v-9613cc9f]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.vp-doc h1>.VPBadge[data-v-9613cc9f]{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge[data-v-9613cc9f]{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge[data-v-9613cc9f]{vertical-align:middle}.vp-doc h4>.VPBadge[data-v-9613cc9f],.vp-doc h5>.VPBadge[data-v-9613cc9f],.vp-doc h6>.VPBadge[data-v-9613cc9f]{vertical-align:middle;line-height:18px}.VPBadge.info[data-v-9613cc9f]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-9613cc9f]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-9613cc9f]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-9613cc9f]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-f87ff6e4]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-f87ff6e4]{padding:96px 32px 168px}}.code[data-v-f87ff6e4]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-f87ff6e4]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-f87ff6e4]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-f87ff6e4]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-f87ff6e4]{padding-top:20px}.link[data-v-f87ff6e4]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-f87ff6e4]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-d0ee3533]{position:relative;z-index:1}.nested[data-v-d0ee3533]{padding-left:16px}.outline-link[data-v-d0ee3533]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:400}.outline-link[data-v-d0ee3533]:hover,.outline-link.active[data-v-d0ee3533]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-d0ee3533]{padding-left:13px}.VPDocAsideOutline[data-v-d330b1bb]{display:none}.VPDocAsideOutline.has-outline[data-v-d330b1bb]{display:block}.content[data-v-d330b1bb]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-d330b1bb]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-d330b1bb]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-7e05ebdb]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7e05ebdb]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-48f9bb55]{margin-top:64px}.edit-info[data-v-48f9bb55]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-48f9bb55]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-48f9bb55]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-48f9bb55]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-48f9bb55]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-48f9bb55]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-48f9bb55]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-48f9bb55]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-48f9bb55]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-48f9bb55]{margin-left:auto;text-align:right}.desc[data-v-48f9bb55]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-48f9bb55]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDocOutlineDropdown[data-v-eadfb36b]{margin-bottom:48px}.VPDocOutlineDropdown button[data-v-eadfb36b]{display:block;font-size:14px;font-weight:500;line-height:24px;border:1px solid var(--vp-c-border);padding:4px 12px;color:var(--vp-c-text-2);background-color:var(--vp-c-default-soft);border-radius:8px;transition:color .5s}.VPDocOutlineDropdown button[data-v-eadfb36b]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-eadfb36b]{color:var(--vp-c-text-1)}.icon[data-v-eadfb36b]{display:inline-block;vertical-align:middle;width:16px;height:16px;fill:currentColor}[data-v-eadfb36b] .outline-link{font-size:14px;font-weight:400}.open>.icon[data-v-eadfb36b]{transform:rotate(90deg)}.items[data-v-eadfb36b]{margin-top:12px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-6b87e69f]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-6b87e69f]{display:none}@media (min-width: 960px) and (max-width: 1279px){.VPDoc .VPDocOutlineDropdown[data-v-6b87e69f]{display:block}}@media (min-width: 768px){.VPDoc[data-v-6b87e69f]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-6b87e69f]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-6b87e69f]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-6b87e69f]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-6b87e69f]{display:flex;justify-content:center}.VPDoc .aside[data-v-6b87e69f]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-6b87e69f]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-6b87e69f]{max-width:1104px}}.container[data-v-6b87e69f]{margin:0 auto;width:100%}.aside[data-v-6b87e69f]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-6b87e69f]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-6b87e69f]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-6b87e69f]::-webkit-scrollbar{display:none}.aside-curtain[data-v-6b87e69f]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-6b87e69f]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-6b87e69f]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-6b87e69f]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-6b87e69f]{order:1;margin:0;min-width:640px}}.content-container[data-v-6b87e69f]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-6b87e69f]{max-width:688px}.external-link-icon-enabled[data-v-6b87e69f] :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.VPButton[data-v-c1c5efc1]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-c1c5efc1]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-c1c5efc1]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-c1c5efc1]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-c1c5efc1]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-c1c5efc1]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-c1c5efc1]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-c1c5efc1]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-c1c5efc1]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-c1c5efc1]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-c1c5efc1]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-c1c5efc1]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-c1c5efc1]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-da5d1713]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-da5d1713]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-da5d1713]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-da5d1713]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-da5d1713]{flex-direction:row}}.main[data-v-da5d1713]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-da5d1713]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-da5d1713]{text-align:left}}@media (min-width: 960px){.main[data-v-da5d1713]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-da5d1713]{max-width:592px}}.name[data-v-da5d1713],.text[data-v-da5d1713]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-da5d1713],.VPHero.has-image .text[data-v-da5d1713]{margin:0 auto}.name[data-v-da5d1713]{color:var(--vp-home-hero-name-color)}.clip[data-v-da5d1713]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-da5d1713],.text[data-v-da5d1713]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-da5d1713],.text[data-v-da5d1713]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-da5d1713],.VPHero.has-image .text[data-v-da5d1713]{margin:0}}.tagline[data-v-da5d1713]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-da5d1713]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-da5d1713]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-da5d1713]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-da5d1713]{margin:0}}.actions[data-v-da5d1713]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-da5d1713]{justify-content:center}@media (min-width: 640px){.actions[data-v-da5d1713]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-da5d1713]{justify-content:flex-start}}.action[data-v-da5d1713]{flex-shrink:0;padding:6px}.image[data-v-da5d1713]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-da5d1713]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-da5d1713]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-da5d1713]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-da5d1713]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-da5d1713]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-da5d1713]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-da5d1713]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-da5d1713]{width:320px;height:320px}}[data-v-da5d1713] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-da5d1713] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-da5d1713] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-33204567]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-33204567]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-33204567]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-33204567]>.VPImage{margin-bottom:20px}.icon[data-v-33204567]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-33204567]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-33204567]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-33204567]{padding-top:8px}.link-text-value[data-v-33204567]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-33204567]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.VPHome[data-v-d82743a8]{padding-bottom:96px}.VPHome[data-v-d82743a8] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-d82743a8]{padding-bottom:128px}}.VPContent[data-v-669faec9]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-669faec9]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-669faec9]{margin:0}@media (min-width: 960px){.VPContent[data-v-669faec9]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-669faec9]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-669faec9]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-1c15a60a]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-1c15a60a]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-1c15a60a]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-1c15a60a]{color:var(--vp-c-text-1)}.icon[data-v-1c15a60a]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-1c15a60a] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-1c15a60a]{transform:rotate(90deg)}.items[data-v-1c15a60a]{position:absolute;top:64px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}.header[data-v-1c15a60a]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-1c15a60a]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-1c15a60a]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-1c15a60a]{transition:all .2s ease-out}.flyout-leave-active[data-v-1c15a60a]{transition:all .15s ease-in}.flyout-enter-from[data-v-1c15a60a],.flyout-leave-to[data-v-1c15a60a]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-f84a0989]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--vp-c-gutter);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-f84a0989]{position:fixed}.VPLocalNav.reached-top[data-v-f84a0989]{border-top-color:transparent}@media (min-width: 960px){.VPLocalNav[data-v-f84a0989]{display:none}}.menu[data-v-f84a0989]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-f84a0989]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-f84a0989]{padding:0 32px}}.menu-icon[data-v-f84a0989]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-f84a0989]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-f84a0989]{padding:12px 32px 11px}}.VPSwitch[data-v-b1685198]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-b1685198]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b1685198]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-b1685198]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b1685198] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-b1685198] svg{fill:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-cbbe1149]{opacity:1}.moon[data-v-cbbe1149],.dark .sun[data-v-cbbe1149]{opacity:0}.dark .moon[data-v-cbbe1149]{opacity:1}.dark .VPSwitchAppearance[data-v-cbbe1149] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-e6aabb21]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-e6aabb21]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e7ea1737]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-9c007e85]{position:relative}.VPFlyout[data-v-9c007e85]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-9c007e85]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-9c007e85]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-9c007e85]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-9c007e85]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-9c007e85],.button[aria-expanded=true]+.menu[data-v-9c007e85]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-9c007e85]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-9c007e85]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-9c007e85]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-9c007e85]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-9c007e85]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-9c007e85]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-9c007e85]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-f80f8133]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-f80f8133]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-f80f8133]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-d0bd9dde]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-d0bd9dde]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-d0bd9dde]{display:none}}.trans-title[data-v-d0bd9dde]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-d0bd9dde],.item.social-links[data-v-d0bd9dde]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-d0bd9dde]{min-width:176px}.appearance-action[data-v-d0bd9dde]{margin-right:-2px}.social-links-list[data-v-d0bd9dde]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-42ef59de]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-42ef59de],.VPNavBarMenuLink[data-v-42ef59de]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}/*! @docsearch/css 3.5.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-86d1bed8]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-86d1bed8]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-86d1bed8]{border-bottom-color:var(--vp-c-divider)}}[data-v-86d1bed8] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-74abcbb9]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-74abcbb9]{display:flex;align-items:center}}.title[data-v-74abcbb9]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-d83f3580]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap}@media (min-width: 768px){.VPNavBar[data-v-d83f3580]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-d83f3580]{padding:0}.VPNavBar[data-v-d83f3580]:not(.has-sidebar):not(.top){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-d83f3580]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-d83f3580],.container>.content[data-v-d83f3580]{pointer-events:none}.container[data-v-d83f3580] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-d83f3580]{max-width:100%}}.title[data-v-d83f3580]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-d83f3580]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-d83f3580]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-d83f3580]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-d83f3580]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-d83f3580]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-d83f3580]{display:flex;justify-content:flex-end;align-items:center;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.top) .content-body[data-v-d83f3580]{position:relative;background-color:var(--vp-nav-bg-color)}}@media (max-width: 767px){.content-body[data-v-d83f3580]{column-gap:.5rem}}.menu+.translations[data-v-d83f3580]:before,.menu+.appearance[data-v-d83f3580]:before,.menu+.social-links[data-v-d83f3580]:before,.translations+.appearance[data-v-d83f3580]:before,.appearance+.social-links[data-v-d83f3580]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-d83f3580]:before,.translations+.appearance[data-v-d83f3580]:before{margin-right:16px}.appearance+.social-links[data-v-d83f3580]:before{margin-left:16px}.social-links[data-v-d83f3580]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-d83f3580]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-d83f3580]:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}@media (min-width: 1440px){.VPNavBar.has-sidebar .curtain[data-v-d83f3580]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenAppearance[data-v-2d7af913]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-2d7af913]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-05f27b2a]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-05f27b2a]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-65ef89ca]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-65ef89ca]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-65ef89ca]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-65ef89ca]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-65ef89ca]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-65ef89ca]{transform:rotate(45deg)}.button[data-v-65ef89ca]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-65ef89ca]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-65ef89ca]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-65ef89ca]:first-child{padding-top:0}.group+.group[data-v-65ef89ca],.group+.item[data-v-65ef89ca]{padding-top:4px}.VPNavScreenTranslations[data-v-d72aa483]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-d72aa483]{height:auto}.title[data-v-d72aa483]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-d72aa483]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-d72aa483]{margin-right:8px}.icon.chevron[data-v-d72aa483]{margin-left:4px}.list[data-v-d72aa483]{padding:4px 0 0 24px}.link[data-v-d72aa483]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-cc5739dd]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-cc5739dd],.VPNavScreen.fade-leave-active[data-v-cc5739dd]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-cc5739dd],.VPNavScreen.fade-leave-active .container[data-v-cc5739dd]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-cc5739dd],.VPNavScreen.fade-leave-to[data-v-cc5739dd]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-cc5739dd],.VPNavScreen.fade-leave-to .container[data-v-cc5739dd]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-cc5739dd]{display:none}}.container[data-v-cc5739dd]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-cc5739dd],.menu+.appearance[data-v-cc5739dd],.translations+.appearance[data-v-cc5739dd]{margin-top:24px}.menu+.social-links[data-v-cc5739dd]{margin-top:16px}.appearance+.social-links[data-v-cc5739dd]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-e31bd47b]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-e31bd47b]{padding-bottom:10px}.item[data-v-e31bd47b]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-e31bd47b]{cursor:pointer}.indicator[data-v-e31bd47b]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-e31bd47b]{background-color:var(--vp-c-brand-1)}.link[data-v-e31bd47b]{display:flex;align-items:center;flex-grow:1}.text[data-v-e31bd47b]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-e31bd47b]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-e31bd47b],.VPSidebarItem.level-2 .text[data-v-e31bd47b],.VPSidebarItem.level-3 .text[data-v-e31bd47b],.VPSidebarItem.level-4 .text[data-v-e31bd47b],.VPSidebarItem.level-5 .text[data-v-e31bd47b]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-e31bd47b]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.caret[data-v-e31bd47b]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-e31bd47b]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-e31bd47b]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-e31bd47b]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-e31bd47b]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-e31bd47b],.VPSidebarItem.level-2 .items[data-v-e31bd47b],.VPSidebarItem.level-3 .items[data-v-e31bd47b],.VPSidebarItem.level-4 .items[data-v-e31bd47b],.VPSidebarItem.level-5 .items[data-v-e31bd47b]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-e31bd47b]{display:none}.VPSidebar[data-v-7f44e717]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-7f44e717]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-7f44e717]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-7f44e717]{z-index:1;padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-7f44e717]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-7f44e717]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-7f44e717]{outline:0}.group+.group[data-v-7f44e717]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-7f44e717]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5a346dfe]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-96bd69d5]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-96bd69d5]{margin:0 auto;max-width:1152px}.love[data-v-96bd69d5]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-96bd69d5]{width:28px;height:28px;fill:currentColor}.message[data-v-96bd69d5]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-96bd69d5]{padding-top:32px}.action[data-v-96bd69d5]{padding-top:40px;text-align:center}.VPTeamPage[data-v-10b00018]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-10b00018]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-10b00018-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-10b00018-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:96px}}.VPTeamMembers[data-v-10b00018-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-10b00018-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-10b00018-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-28528e42]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-28528e42]{padding:32px}.VPTeamMembersItem.small .data[data-v-28528e42]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-28528e42]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-28528e42]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-28528e42]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-28528e42]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-28528e42]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-28528e42]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-28528e42]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-28528e42]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-28528e42]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-28528e42]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-28528e42]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-28528e42]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-28528e42]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-28528e42]{text-align:center}.avatar[data-v-28528e42]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-28528e42]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-28528e42]{margin:0;font-weight:600}.affiliation[data-v-28528e42]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-28528e42]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-28528e42]:hover{color:var(--vp-c-brand-1)}.desc[data-v-28528e42]{margin:0 auto}.desc[data-v-28528e42] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-28528e42]{display:flex;justify-content:center;height:56px}.sp-link[data-v-28528e42]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-28528e42]:hover,.sp .sp-link.link[data-v-28528e42]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-28528e42]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.qa-list .title{display:flex}.qa-list .title:before{content:">";margin-right:10px}.qa-list .title .link{flex:1;cursor:pointer}.qa-list .title .author{font-size:12px}.qa-list .detail{margin-left:20px;background:aliceblue;padding:5px 10px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.form input{border:1px solid #333}:root{--vs-colors--lightest: rgba(60, 60, 60, .26);--vs-colors--light: rgba(60, 60, 60, .5);--vs-colors--dark: #333;--vs-colors--darkest: rgba(0, 0, 0, .15);--vs-search-input-color: inherit;--vs-search-input-placeholder-color: inherit;--vs-font-size: 1rem;--vs-line-height: 1.4;--vs-state-disabled-bg: rgb(248, 248, 248);--vs-state-disabled-color: var(--vs-colors--light);--vs-state-disabled-controls-color: var(--vs-colors--light);--vs-state-disabled-cursor: not-allowed;--vs-border-color: var(--vs-colors--lightest);--vs-border-width: 1px;--vs-border-style: solid;--vs-border-radius: 4px;--vs-actions-padding: 4px 6px 0 3px;--vs-controls-color: var(--vs-colors--light);--vs-controls-size: 1;--vs-controls--deselect-text-shadow: 0 1px 0 #fff;--vs-selected-bg: #f0f0f0;--vs-selected-color: var(--vs-colors--dark);--vs-selected-border-color: var(--vs-border-color);--vs-selected-border-style: var(--vs-border-style);--vs-selected-border-width: var(--vs-border-width);--vs-dropdown-bg: #fff;--vs-dropdown-color: inherit;--vs-dropdown-z-index: 1000;--vs-dropdown-min-width: 160px;--vs-dropdown-max-height: 350px;--vs-dropdown-box-shadow: 0px 3px 6px 0px var(--vs-colors--darkest);--vs-dropdown-option-bg: #000;--vs-dropdown-option-color: var(--vs-dropdown-color);--vs-dropdown-option-padding: 3px 20px;--vs-dropdown-option--active-bg: #5897fb;--vs-dropdown-option--active-color: #fff;--vs-dropdown-option--deselect-bg: #fb5858;--vs-dropdown-option--deselect-color: #fff;--vs-transition-timing-function: cubic-bezier(1, -.115, .975, .855);--vs-transition-duration: .15s}.v-select{position:relative;font-family:inherit}.v-select,.v-select *{box-sizing:border-box}:root{--vs-transition-timing-function: cubic-bezier(1, .5, .8, 1);--vs-transition-duration: .15s}@-webkit-keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vs__fade-enter-active,.vs__fade-leave-active{pointer-events:none;transition:opacity var(--vs-transition-duration) var(--vs-transition-timing-function)}.vs__fade-enter,.vs__fade-leave-to{opacity:0}:root{--vs-disabled-bg: var(--vs-state-disabled-bg);--vs-disabled-color: var(--vs-state-disabled-color);--vs-disabled-cursor: var(--vs-state-disabled-cursor)}.vs--disabled .vs__dropdown-toggle,.vs--disabled .vs__clear,.vs--disabled .vs__search,.vs--disabled .vs__selected,.vs--disabled .vs__open-indicator{cursor:var(--vs-disabled-cursor);background-color:var(--vs-disabled-bg)}.v-select[dir=rtl] .vs__actions{padding:0 3px 0 6px}.v-select[dir=rtl] .vs__clear{margin-left:6px;margin-right:0}.v-select[dir=rtl] .vs__deselect{margin-left:0;margin-right:2px}.v-select[dir=rtl] .vs__dropdown-menu{text-align:right}.vs__dropdown-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;padding:0 0 4px;background:none;border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:var(--vs-border-radius);white-space:normal}.vs__selected-options{display:flex;flex-basis:100%;flex-grow:1;flex-wrap:wrap;padding:0 2px;position:relative}.vs__actions{display:flex;align-items:center;padding:var(--vs-actions-padding)}.vs--searchable .vs__dropdown-toggle{cursor:text}.vs--unsearchable .vs__dropdown-toggle{cursor:pointer}.vs--open .vs__dropdown-toggle{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.vs__open-indicator{fill:var(--vs-controls-color);transform:scale(var(--vs-controls-size));transition:transform var(--vs-transition-duration) var(--vs-transition-timing-function);transition-timing-function:var(--vs-transition-timing-function)}.vs--open .vs__open-indicator{transform:rotate(180deg) scale(var(--vs-controls-size))}.vs--loading .vs__open-indicator{opacity:0}.vs__clear{fill:var(--vs-controls-color);padding:0;border:0;background-color:transparent;cursor:pointer;margin-right:8px}.vs__dropdown-menu{display:block;box-sizing:border-box;position:absolute;top:calc(100% - var(--vs-border-width));left:0;z-index:var(--vs-dropdown-z-index);padding:5px 0;margin:0;width:100%;max-height:var(--vs-dropdown-max-height);min-width:var(--vs-dropdown-min-width);overflow-y:auto;box-shadow:var(--vs-dropdown-box-shadow);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-top-style:none;border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);text-align:left;list-style:none;background:var(--vs-dropdown-bg);color:var(--vs-dropdown-color)}.vs__no-options{text-align:center}.vs__dropdown-option{line-height:1.42857143;display:block;padding:var(--vs-dropdown-option-padding);clear:both;color:var(--vs-dropdown-option-color);white-space:nowrap;cursor:pointer}.vs__dropdown-option--highlight{background:var(--vs-dropdown-option--active-bg);color:var(--vs-dropdown-option--active-color)}.vs__dropdown-option--deselect{background:var(--vs-dropdown-option--deselect-bg);color:var(--vs-dropdown-option--deselect-color)}.vs__dropdown-option--disabled{background:var(--vs-state-disabled-bg);color:var(--vs-state-disabled-color);cursor:var(--vs-state-disabled-cursor)}.vs__selected{display:flex;align-items:center;background-color:var(--vs-selected-bg);border:var(--vs-selected-border-width) var(--vs-selected-border-style) var(--vs-selected-border-color);border-radius:var(--vs-border-radius);color:var(--vs-selected-color);line-height:var(--vs-line-height);margin:4px 2px 0;padding:0 .25em;z-index:0}.vs__deselect{display:inline-flex;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-left:4px;padding:0;border:0;cursor:pointer;background:none;fill:var(--vs-controls-color);text-shadow:var(--vs-controls--deselect-text-shadow)}.vs--single .vs__selected{background-color:transparent;border-color:transparent}.vs--single.vs--open .vs__selected,.vs--single.vs--loading .vs__selected{position:absolute;opacity:.4}.vs--single.vs--searching .vs__selected{display:none}.vs__search::-webkit-search-cancel-button{display:none}.vs__search::-webkit-search-decoration,.vs__search::-webkit-search-results-button,.vs__search::-webkit-search-results-decoration,.vs__search::-ms-clear{display:none}.vs__search,.vs__search:focus{color:var(--vs-search-input-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:var(--vs-line-height);font-size:var(--vs-font-size);border:1px solid transparent;border-left:none;outline:none;margin:4px 0 0;padding:0 7px;background:none;box-shadow:none;width:0;max-width:100%;flex-grow:1;z-index:1}.vs__search::-moz-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search::placeholder{color:var(--vs-search-input-placeholder-color)}.vs--unsearchable .vs__search{opacity:1}.vs--unsearchable:not(.vs--disabled) .vs__search{cursor:pointer}.vs--single.vs--searching:not(.vs--open):not(.vs--loading) .vs__search{opacity:.2}.vs__spinner{align-self:center;opacity:0;font-size:5px;text-indent:-9999em;overflow:hidden;border-top:.9em solid rgba(100,100,100,.1);border-right:.9em solid rgba(100,100,100,.1);border-bottom:.9em solid rgba(100,100,100,.1);border-left:.9em solid rgba(60,60,60,.45);transform:translateZ(0) scale(var(--vs-controls--spinner-size, var(--vs-controls-size)));-webkit-animation:vSelectSpinner 1.1s infinite linear;animation:vSelectSpinner 1.1s infinite linear;transition:opacity .1s}.vs__spinner,.vs__spinner:after{border-radius:50%;width:5em;height:5em;transform:scale(var(--vs-controls--spinner-size, var(--vs-controls-size)))}.vs--loading .vs__spinner{opacity:1}#msg-template .row{width:100%;display:flex}#msg-template .row .col{flex:1 0 33%}#msg-template .row .col.disable{opacity:0}.VPHome{background:radial-gradient(transparent,rgba(0,0,0,.3)),url(/Shmily/assets/bg.csZ5PfZW.jpg);background-attachment:fixed;background-size:cover}#features[data-v-660d4b0b]{margin:0 auto;max-width:1000px;background:rgba(255,255,255,.7);padding:0 20px;box-sizing:content-box;border-radius:10px;box-shadow:0 2px 12px #0000001a}#features .row[data-v-660d4b0b]{justify-content:center;display:flex;padding:20px 0;border-bottom:1px solid #aaa}#features .row[data-v-660d4b0b]:nth-child(2n){flex-direction:row-reverse}#features .row:nth-child(2n) .info[data-v-660d4b0b]{text-align:right}#features .row[data-v-660d4b0b]:last-child{border-bottom:none}#features .row .info[data-v-660d4b0b]{flex:1 1 auto;display:flex;align-items:center}#features .row .info .title[data-v-660d4b0b]{font-weight:700;font-size:18px}#features .row .info .content[data-v-660d4b0b]{margin-bottom:20px;width:100%}#features .row .info .content p[data-v-660d4b0b]{font-size:16px;margin:10px 0}#features .row .info .content .tips[data-v-660d4b0b]{font-size:12px;color:#333;font-style:italic}#features .row .info .content a[data-v-660d4b0b]{color:#3451b2;text-decoration:underline;padding:0 5px;font-weight:700;font-style:italic}#features .row .cover[data-v-660d4b0b]{flex:0 0 auto}#features .row .cover img[data-v-660d4b0b]{display:inline-block;width:100%}@media (max-width: 960px){#features .row[data-v-660d4b0b]{flex-direction:column!important}#features .row .info[data-v-660d4b0b],#features .row .cover[data-v-660d4b0b]{text-align:center!important;padding:0!important}} diff --git a/guide/concept.html b/guide/concept.html index beaabf5..80747e4 100644 --- a/guide/concept.html +++ b/guide/concept.html @@ -6,13 +6,13 @@ 理念 | Shmily - + - + @@ -29,8 +29,8 @@ / \ / \ MobileQQ: 导出数据库 -> 解密资源(图片等) 数据预处理 大数据图表 -更多来源...

              将过程分为 Get(后端采集) 和 Show(前端展示), 并细化为 4 个部分(库), 中间使用 Shimly-Msg 标准格式进行融合

              • Get
                • ExportDB 从设备导出原始数据(库)并解密
                • ToMsg 从解密数据库导出为标准数据 ${Shmily-Msg}, 并解密资源(图片等)
                  • 导出的数据为 json 格式, 并尽可能导出所有数据, 不管用没用,历史不嫌多
                  • 能存尽存, 远程的图片及资源使用爬虫本地静态化, 以免以后 URL 失效
              • Show
                • ModifyServer 用于手动修改 数据文件添加评论
                • Web 用于最终显示 时间线大数据图表

              让过程变为 4 个部分后

              • 完全解耦, 便于各种二开造轮子, 便于各个阶段变为轮子
              • 使用现代 Web 框架组件化开发,展示上有了更多可能性. 更多 Show 的问答参考 Shmily-Show/docs/Q_A.md
              • 多种类、多批次的 Get 都可以融合在一个 Show 中时间线展示

              问题

              拆分后势必增加运行成本, 我希望通过批处理等脚本方式粘合各个库之间的运行, 尽量做到开箱即用. 也会完善文档让非程序员也能阅读明白, 如有不懂之处, 欢迎 Github 提 issues.

              感想

              花了近 3 年用 JS 写了一大堆的 Get, 我发现还是原生语言开发最方便, 如 MobileQQ 中 Java Serializable问题JS 太难了, 所以以后我还是希望由开源社区贡献与维护 Get, 我会尽力维护 Show 部分.

              数据本身就归属用户, 不提供数据导出的都是耍流氓.

          GPLv3 License.

        - +更多来源...

        将过程分为 Get(后端采集) 和 Show(前端展示), 并细化为 4 个部分(库), 中间使用 Shimly-Msg 标准格式进行融合

        • Get
          • ExportDB 从设备导出原始数据(库)并解密
          • ToMsg 从解密数据库导出为标准数据 ${Shmily-Msg}, 并解密资源(图片等)
            • 导出的数据为 json 格式, 并尽可能导出所有数据, 不管用没用,历史不嫌多
            • 能存尽存, 远程的图片及资源使用爬虫本地静态化, 以免以后 URL 失效
        • Show
          • ModifyServer 用于手动修改 数据文件添加评论
          • Web 用于最终显示 时间线大数据图表

        让过程变为 4 个部分后

        • 完全解耦, 便于各种二开造轮子, 便于各个阶段变为轮子
        • 使用现代 Web 框架组件化开发,展示上有了更多可能性. 更多 Show 的问答参考 Shmily-Show/docs/Q_A.md
        • 多种类、多批次的 Get 都可以融合在一个 Show 中时间线展示

        问题

        拆分后势必增加运行成本, 我希望通过批处理等脚本方式粘合各个库之间的运行, 尽量做到开箱即用. 也会完善文档让非程序员也能阅读明白, 如有不懂之处, 欢迎 Github 提 issues.

        感想

        花了近 3 年用 JS 写了一大堆的 Get, 我发现还是原生语言开发最方便, 如 MobileQQ 中 Java Serializable问题JS 太难了, 所以以后我还是希望由开源社区贡献与维护 Get, 我会尽力维护 Show 部分.

        数据本身就归属用户, 不提供数据导出的都是耍流氓.

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/other/donation.html b/guide/other/donation.html index 15b5988..d11e8d4 100644 --- a/guide/other/donation.html +++ b/guide/other/donation.html @@ -6,21 +6,21 @@ 捐赠 | Shmily - + - + -
Skip to content

捐赠

!!! 小熊猫 是世界上最可爱的动物 !!! XD

https://www.bilibili.com/video/BV1qy4y1s7SJ/


如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                            

请在备注内包含 Shmily 字样
有问题请请发 Email 或 issues, 我没法通过收款码联系你的


门票公示


如果觉得太麻烦,可以付费代劳。淘宝店地址

贱的那个是 小浣熊, 萌的那个是 小熊猫

red-panda

GPLv3 License.

- +
Skip to content

捐赠

!!! 小熊猫 是世界上最可爱的动物 !!! XD

https://www.bilibili.com/video/BV1qy4y1s7SJ/


如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                            

请在备注内包含 Shmily 字样
有问题请请发 Email 或 issues, 我没法通过收款码联系你的


门票公示


如果觉得太麻烦,可以付费代劳。淘宝店地址

贱的那个是 小浣熊, 萌的那个是 小熊猫

red-panda

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/other/donation_list.html b/guide/other/donation_list.html index 1a92f4e..b897157 100644 --- a/guide/other/donation_list.html +++ b/guide/other/donation_list.html @@ -6,21 +6,21 @@ Shmily | Shmily - + - + -
Skip to content
门票公示

TIP

请在备注内包含 Shmily 字样

如有遗漏或疑问,请发送截图至 i@lqzh.me

有问题请请发 Email 或 issues, 我没法通过收款码联系你的


时间姓名金额来源项目
2024/03/06 18:08:09*寒10WechatShmily
2024/02/24 18:15:43a*s2Wechatwechat-need-web
2024/01/11 23:47:09*晨10AlipayShmily
2023/12/29 23:34:10*赢10WechatShmily
2023/12/12 18:48:50t*b18.88WechatShmily
2023/12/08 09:51:19**焜50AlipayShmily
2023/11/24 19:18:28*生20WechatShmily
2023/11/22 10:17:50*羊5.61WechatShmily
2023/11/19 01:39:48A*s5WechatShmily
2023/11/18 17:08:15*畅11.11AlipayShmily
2023/11/18 14:51:42*翔10AlipayShmily
2023/11/02 14:56:02**勇15AlipayShmily
2023/09/03 17:12:36*门10WechatShmily

GPLv3 License.

- +
Skip to content
门票公示

TIP

请在备注内包含 Shmily 字样

如有遗漏或疑问,请发送截图至 i@lqzh.me

有问题请请发 Email 或 issues, 我没法通过收款码联系你的


时间姓名金额来源项目
2024/04/15 11:34:26A*n88WechatShmily
2024/04/15 09:25:28$*f88WechatShmily
2024/03/06 18:08:09*寒10WechatShmily
2024/02/24 18:15:43a*s2Wechatwechat-need-web
2024/01/11 23:47:09*晨10AlipayShmily
2023/12/29 23:34:10*赢10WechatShmily
2023/12/12 18:48:50t*b18.88WechatShmily
2023/12/08 09:51:19**焜50AlipayShmily
2023/11/24 19:18:28*生20WechatShmily
2023/11/22 10:17:50*羊5.61WechatShmily
2023/11/19 01:39:48A*s5WechatShmily
2023/11/18 17:08:15*畅11.11AlipayShmily
2023/11/18 14:51:42*翔10AlipayShmily
2023/11/02 14:56:02**勇15AlipayShmily
2023/09/03 17:12:36*门10WechatShmily

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/other/thanks.html b/guide/other/thanks.html index 0c84acc..dc9ae6d 100644 --- a/guide/other/thanks.html +++ b/guide/other/thanks.html @@ -6,21 +6,21 @@ 感谢 | Shmily - + - + -
Skip to content

GPLv3 License.

- +
Skip to content

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/Android-copy-backup.html b/guide/setup-runtime/Android-copy-backup.html index 824d7b3..946d633 100644 --- a/guide/setup-runtime/Android-copy-backup.html +++ b/guide/setup-runtime/Android-copy-backup.html @@ -6,21 +6,21 @@ 通过 备份 将 Android 文件复制到电脑 | Shmily - + - + -
Skip to content

通过 备份 将 Android 文件复制到电脑

GPLv3 License.

- +
Skip to content

通过 备份 将 Android 文件复制到电脑

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/Android-copy-root.html b/guide/setup-runtime/Android-copy-root.html index 871a239..a65af25 100644 --- a/guide/setup-runtime/Android-copy-root.html +++ b/guide/setup-runtime/Android-copy-root.html @@ -6,21 +6,21 @@ 通过 root 将 Android 文件复制到电脑 | Shmily - + - + -
Skip to content

通过 root 将 Android 文件复制到电脑

  • 如果手机已 root ,通过 ftp 复制到电脑

  • 没有 root

    主体思路是通过 微信/QQ 等官方数据迁移功能把本机数据迁移到带 rootAndroid 系统内

    • 借一台有 root 的手机
    • 使用 Android 模拟器 / 虚拟机 (一般均自带 root)
      • 在手机上安装模拟器 / 虚拟机
        • 安卓虚拟机有 vmos 光速虚拟机 等
      • 在电脑上安装模拟器 / 虚拟机

GPLv3 License.

- +
Skip to content

通过 root 将 Android 文件复制到电脑

  • 如果手机已 root ,通过 ftp 复制到电脑

  • 没有 root

    主体思路是通过 微信/QQ 等官方数据迁移功能把本机数据迁移到带 rootAndroid 系统内

    • 借一台有 root 的手机
    • 使用 Android 模拟器 / 虚拟机 (一般均自带 root)
      • 在手机上安装模拟器 / 虚拟机
        • 安卓虚拟机有 vmos 光速虚拟机 等
      • 在电脑上安装模拟器 / 虚拟机

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/Android-copy.html b/guide/setup-runtime/Android-copy.html index b66606a..33e0c85 100644 --- a/guide/setup-runtime/Android-copy.html +++ b/guide/setup-runtime/Android-copy.html @@ -6,13 +6,13 @@ Android 复制文件到电脑 | Shmily - + - + @@ -31,8 +31,8 @@ - tencent - MicroMsg - ... - - ...

在不考虑权限的情况下, 可以在手机与电脑在同一个局域网的情况下, 电脑通过 FTP 服务访问手机上的文件

🎞️ 视频教程

// Android 通过 ftp 复制文件到电脑

https://www.bilibili.com/video/BV1o94y1P7zo/

保护区文件

大部分应用会将自己的 数据 存放在手机的 保护区, 只有手机的最高管理员 root 可以访问

所以获取 保护区 文件的方式有两种

- + - ...

在不考虑权限的情况下, 可以在手机与电脑在同一个局域网的情况下, 电脑通过 FTP 服务访问手机上的文件

🎞️ 视频教程

// Android 通过 ftp 复制文件到电脑

https://www.bilibili.com/video/BV1o94y1P7zo/

保护区文件

大部分应用会将自己的 数据 存放在手机的 保护区, 只有手机的最高管理员 root 可以访问

所以获取 保护区 文件的方式有两种

+ \ No newline at end of file diff --git a/guide/setup-runtime/Q&A-detail/cannot-find-module.html b/guide/setup-runtime/Q&A-detail/cannot-find-module.html index 6251d03..4d64be5 100644 --- a/guide/setup-runtime/Q&A-detail/cannot-find-module.html +++ b/guide/setup-runtime/Q&A-detail/cannot-find-module.html @@ -6,13 +6,13 @@ Cannot find module ‘xxxxxx’ | Shmily - + - + @@ -40,8 +40,8 @@ ] } -Node.js v18.14.0
解决办法

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

- +Node.js v18.14.0
解决办法

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

+ \ No newline at end of file diff --git a/guide/setup-runtime/Q&A.html b/guide/setup-runtime/Q&A.html index 531324a..86e8658 100644 --- a/guide/setup-runtime/Q&A.html +++ b/guide/setup-runtime/Q&A.html @@ -6,13 +6,13 @@ Q & A | Shmily - + - + @@ -48,8 +48,8 @@
解决办法

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

- - + + \ No newline at end of file diff --git a/guide/setup-runtime/docker.html b/guide/setup-runtime/docker.html index bc298e1..d307237 100644 --- a/guide/setup-runtime/docker.html +++ b/guide/setup-runtime/docker.html @@ -6,21 +6,21 @@ 开始 docker | Shmily - + - + -
Skip to content

开始 docker

  • 官网下载 docker desktop
  • 全默认下一步完成

GPLv3 License.

- +
Skip to content

开始 docker

  • 官网下载 docker desktop
  • 全默认下一步完成

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/explain.html b/guide/setup-runtime/explain.html index 3275bd7..e17568c 100644 --- a/guide/setup-runtime/explain.html +++ b/guide/setup-runtime/explain.html @@ -6,21 +6,21 @@ 说明 | Shmily - + - + -
Skip to content

说明

这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行

每个项目有自己所需要的运行时, 按照项目文档进行即可.

不是说这里的运行时你需要全部安装

GPLv3 License.

- +
Skip to content

说明

这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行

每个项目有自己所需要的运行时, 按照项目文档进行即可.

不是说这里的运行时你需要全部安装

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/github-down-repo.html b/guide/setup-runtime/github-down-repo.html index 3fdc7be..d324251 100644 --- a/guide/setup-runtime/github-down-repo.html +++ b/guide/setup-runtime/github-down-repo.html @@ -6,22 +6,22 @@ Github 下载项目 | Shmily - + - + -
Skip to content

GPLv3 License.

- +
Skip to content

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/java.html b/guide/setup-runtime/java.html index 7636d33..c1343e8 100644 --- a/guide/setup-runtime/java.html +++ b/guide/setup-runtime/java.html @@ -6,21 +6,21 @@ 开始 java 项目 | Shmily - + - + -
Skip to content

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

GPLv3 License.

- +
Skip to content

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/nodejs-dependencies.html b/guide/setup-runtime/nodejs-dependencies.html index a216403..b722b9e 100644 --- a/guide/setup-runtime/nodejs-dependencies.html +++ b/guide/setup-runtime/nodejs-dependencies.html @@ -6,14 +6,14 @@ 安装 nodejs 项目依赖 | Shmily - + - + @@ -28,8 +28,8 @@ - ... - package.json - README.md - - ...

从本地安装

- + - ...

从本地安装

+ \ No newline at end of file diff --git a/guide/setup-runtime/nodejs-start.html b/guide/setup-runtime/nodejs-start.html index 595549f..94a1ece 100644 --- a/guide/setup-runtime/nodejs-start.html +++ b/guide/setup-runtime/nodejs-start.html @@ -6,13 +6,13 @@ 启动 nodejs 程序 | Shmily - + - + @@ -31,8 +31,8 @@ 若 `script` 中有多个脚本名称(如上图), 一般来说,`build` 代表生产(正式),`dev` 代表测试 -执行 `npm run build` 即可
  • 若项目 package.json 中没有 script 字段, 则大多数情况下, index.js 为入口文件, 执行:

    shell
        node index.js
  • - +执行 `npm run build` 即可
  • 若项目 package.json 中没有 script 字段, 则大多数情况下, index.js 为入口文件, 执行:

    shell
        node index.js
  • + \ No newline at end of file diff --git a/guide/setup-runtime/nodejs.html b/guide/setup-runtime/nodejs.html index 34e8975..d39ba63 100644 --- a/guide/setup-runtime/nodejs.html +++ b/guide/setup-runtime/nodejs.html @@ -6,21 +6,21 @@ 安装 nodejs | Shmily - + - + -
    Skip to content

    安装 nodejs

    • 查看项目中 package.jsonengines 字段获取项目所需 nodejs 版本

      • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
    • https://nodejs.org/dist/ 下载相应版本的 nodejs

      • Windows 平台
        • (推荐) node-v99.99.9-x64.msi 标准安装程序
        • (不推荐) node-v99.9.9-win-x64.7z / .zip 绿色版, 需要自己配置 Path 环境变量
        • (不推荐) ./win-x64/node.exe 绿色单文件, 不含 npm
    • 安装过程,选项全部默认

    GPLv3 License.

    - +
    Skip to content

    安装 nodejs

    • 查看项目中 package.jsonengines 字段获取项目所需 nodejs 版本

      • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
    • https://nodejs.org/dist/ 下载相应版本的 nodejs

      • Windows 平台
        • (推荐) node-v99.99.9-x64.msi 标准安装程序
        • (不推荐) node-v99.9.9-win-x64.7z / .zip 绿色版, 需要自己配置 Path 环境变量
        • (不推荐) ./win-x64/node.exe 绿色单文件, 不含 npm
    • 安装过程,选项全部默认

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/setup-runtime/php.html b/guide/setup-runtime/php.html index a5ce9a8..23de440 100644 --- a/guide/setup-runtime/php.html +++ b/guide/setup-runtime/php.html @@ -6,21 +6,21 @@ 开始 PHP 项目 | Shmily - + - + -
    Skip to content

    开始 PHP 项目

    1. 官网 下载 PHP

      Windows 下载 VS16 x64 Thread Safe .zip 就行了

    2. 解压 .zipD:\php
    3. 确认 D:\php\php.exe 存在
    4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
    5. 选择 高级 环境变量
    6. 选择 Path,新增一行 D:\php
    7. 确认关闭窗口

    php

    GPLv3 License.

    - +
    Skip to content

    开始 PHP 项目

    1. 官网 下载 PHP

      Windows 下载 VS16 x64 Thread Safe .zip 就行了

    2. 解压 .zipD:\php
    3. 确认 D:\php\php.exe 存在
    4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
    5. 选择 高级 环境变量
    6. 选择 Path,新增一行 D:\php
    7. 确认关闭窗口

    php

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/setup-runtime/python.html b/guide/setup-runtime/python.html index 038486c..684643f 100644 --- a/guide/setup-runtime/python.html +++ b/guide/setup-runtime/python.html @@ -6,22 +6,22 @@ 开始 Python 项目 | Shmily - + - + -
    Skip to content

    开始 Python 项目

    1. 安装 python

    • 进入官网下载

    • 勾选 Add python.exe to PATH

      python add path

    • 全默认 下一步 完成

    2. 安装项目依赖

    • 命令行打开项目目录
      • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

      • 执行命令安装依赖

      shell
      pip install -r requirements.txt

    3.启动程序

    WARNING

    项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

    • 按照项目说明启动程序

    • 若无说明, 一般 main.py 为入口文件

      shell
          python main.py

    GPLv3 License.

    - +
    Skip to content

    开始 Python 项目

    1. 安装 python

    • 进入官网下载

    • 勾选 Add python.exe to PATH

      python add path

    • 全默认 下一步 完成

    2. 安装项目依赖

    • 命令行打开项目目录
      • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

      • 执行命令安装依赖

      shell
      pip install -r requirements.txt

    3.启动程序

    WARNING

    项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

    • 按照项目说明启动程序

    • 若无说明, 一般 main.py 为入口文件

      shell
          python main.py

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/setup-runtime/snippets/open_cmd.html b/guide/setup-runtime/snippets/open_cmd.html index 78c54f9..84ccfe0 100644 --- a/guide/setup-runtime/snippets/open_cmd.html +++ b/guide/setup-runtime/snippets/open_cmd.html @@ -6,22 +6,22 @@ Shmily | Shmily - + - + -
    Skip to content
    • 命令行打开项目目录
      • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

    GPLv3 License.

    - +
    Skip to content
    • 命令行打开项目目录
      • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/tools/Github/visit.html b/guide/tools/Github/visit.html index 27af7dd..915bde4 100644 --- a/guide/tools/Github/visit.html +++ b/guide/tools/Github/visit.html @@ -6,21 +6,21 @@ 访问 Github | Shmily - + - + -
    Skip to content

    访问 Github

    如果 Github 访问不顺畅, 可以在 微软商店 搜索 Watt Toolkit

    GPLv3 License.

    - +
    Skip to content

    访问 Github

    如果 Github 访问不顺畅, 可以在 微软商店 搜索 Watt Toolkit

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/tools/Wechat/calc-wechat-key.html b/guide/tools/Wechat/calc-wechat-key.html index 1576850..a417783 100644 --- a/guide/tools/Wechat/calc-wechat-key.html +++ b/guide/tools/Wechat/calc-wechat-key.html @@ -6,22 +6,22 @@ 计算微信数据库 key | Shmily - + - + -
    Skip to content

    计算微信数据库 key


    key:

    GPLv3 License.

    - +
    Skip to content

    计算微信数据库 key


    key:

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/use/begin.html b/guide/use/begin.html index 8bdf65d..19e4c86 100644 --- a/guide/use/begin.html +++ b/guide/use/begin.html @@ -6,7 +6,7 @@ 开始吧 | Shmily - + @@ -15,7 +15,7 @@ - + @@ -43,8 +43,8 @@ - ... <-- 其他过程文件及日志 - index.js - package.json - - README.md

    4. 其他说明

    以上是一个 Github 项目运行的完整流程

    以通过 Shmily 导出 电脑QQ聊天记录 为例, 至少需要运行两个 Github 项目,

    1. Get 获取数据, https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT

      得到 数据文件(data)资源文件(QQ_PC_MHT-12345678-20230101.json)

    2. Show 显示数据, https://github.com/lqzhgood/Shmily-Show/

      使用 Get 得到的 "文件" 生成最后的 "显示" 结果

    你可通过多个 Get 获取多个 "文件", 同时导入 Show 获得集中 "显示" 结果

    视频教程

    施工中....

    9 / 43 // 2023-12-10

    开始项目

    大致步骤

    Get(获取数据) ---> Merger(合并数据) ---> Show(展示数据)

    TIP

    大多数情况下 Merger(合并数据) 可以跳过

    1. Get-获取数据

    参考 Get 文档

    2. Merger-合并数据 (可选)

    参考 Merger 文档

    3. Show-展示数据

    参考 Show 文档

    - + - README.md

    4. 其他说明

    以上是一个 Github 项目运行的完整流程

    以通过 Shmily 导出 电脑QQ聊天记录 为例, 至少需要运行两个 Github 项目,

    1. Get 获取数据, https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT

      得到 数据文件(data)资源文件(QQ_PC_MHT-12345678-20230101.json)

    2. Show 显示数据, https://github.com/lqzhgood/Shmily-Show/

      使用 Get 得到的 "文件" 生成最后的 "显示" 结果

    你可通过多个 Get 获取多个 "文件", 同时导入 Show 获得集中 "显示" 结果

    视频教程

    施工中....

    9 / 43 // 2023-12-10

    开始项目

    大致步骤

    Get(获取数据) ---> Merger(合并数据) ---> Show(展示数据)

    TIP

    大多数情况下 Merger(合并数据) 可以跳过

    1. Get-获取数据

    参考 Get 文档

    2. Merger-合并数据 (可选)

    参考 Merger 文档

    3. Show-展示数据

    参考 Show 文档

    + \ No newline at end of file diff --git a/guide/use/data.html b/guide/use/data.html index 329d1bc..56f7bdd 100644 --- a/guide/use/data.html +++ b/guide/use/data.html @@ -6,21 +6,21 @@ 资源文件 | Shmily - + - + -
    Skip to content

    资源文件

    路径说明

    资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

    其中 $rootPath 可以在 Get 项目的 config.js 配置.

    修改补充

    如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

    评论资源

    评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

    GPLv3 License.

    - +
    Skip to content

    资源文件

    路径说明

    资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

    其中 $rootPath 可以在 Get 项目的 config.js 配置.

    修改补充

    如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

    评论资源

    评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/use/draft.html b/guide/use/draft.html index cb2852b..16fc619 100644 --- a/guide/use/draft.html +++ b/guide/use/draft.html @@ -6,22 +6,22 @@ Shmily | Shmily - + - + -
    Skip to content

    2. 安装项目运行时环境

    根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

    也可以按照下面列出的特性, 安装对应语言的运行时

    • nodejs (项目中有 package.json 文件)

    • python (大量 .py 后缀文件)

    • java (大量 .java 后缀文件)

    GPLv3 License.

    - +
    Skip to content

    2. 安装项目运行时环境

    根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

    也可以按照下面列出的特性, 安装对应语言的运行时

    • nodejs (项目中有 package.json 文件)

    • python (大量 .py 后缀文件)

    • java (大量 .java 后缀文件)

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/use/get.html b/guide/use/get.html index af806a3..299237d 100644 --- a/guide/use/get.html +++ b/guide/use/get.html @@ -6,13 +6,13 @@ Get | Shmily - + - + @@ -35,8 +35,8 @@ - XXXX.json - + + \ No newline at end of file diff --git a/guide/use/merger.html b/guide/use/merger.html index fdd4dc8..cbddb61 100644 --- a/guide/use/merger.html +++ b/guide/use/merger.html @@ -6,21 +6,21 @@ Merger | Shmily - + - + -
    Skip to content

    Merger

    用来对 不同来源(Get), 相同内容数据文件 合并去重

    如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

    可以通过此工具去重 2013-2015 年的部分.

    DANGER

    !!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

    支持列表

    • SMS CallLog 短信与通话记录

    GPLv3 License.

    - +
    Skip to content

    Merger

    用来对 不同来源(Get), 相同内容数据文件 合并去重

    如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

    可以通过此工具去重 2013-2015 年的部分.

    DANGER

    !!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

    支持列表

    • SMS CallLog 短信与通话记录

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/use/msg/custom.html b/guide/use/msg/custom.html index 57618eb..bf6f315 100644 --- a/guide/use/msg/custom.html +++ b/guide/use/msg/custom.html @@ -6,13 +6,13 @@ 自定义 | Shmily - + - + @@ -40,8 +40,8 @@ } $Dev: {} // 开发中需要用到的数据,Show 生成数据时会被删除 -}
    1. 标准 格式之外,将数据放入 $source
    2. Shmily-Show 项目 memoryweb/src/components/Msg/source 下新增前端组件用于显示数据

    - +}
    1. 标准 格式之外,将数据放入 $source
    2. Shmily-Show 项目 memoryweb/src/components/Msg/source 下新增前端组件用于显示数据

    + \ No newline at end of file diff --git a/guide/use/msg/other/emotion.html b/guide/use/msg/other/emotion.html index 6f6c143..5b4732d 100644 --- a/guide/use/msg/other/emotion.html +++ b/guide/use/msg/other/emotion.html @@ -6,13 +6,13 @@ 表情 | Shmily - + - + @@ -37,8 +37,8 @@ "rootPath": 'qq-android-lqzh-20230101' ... } -}

    可以参考 wechat 的函数进行统计

    新类型

    如果是新的 Get 类型,需要在 这里 补充统计函数

    表情数据的一些说明

    正向导出

    Wechat、MobileQQ 可以直接从数据库中获取表情的 packNamedesc 等值,这样的就很简单,直接导出即可。

    反向匹配

    如 PC-QQ 无法导出表情类型的消息,更无法获取 packNamedesc,所以所有表情都被视为图片类型被导出

    这种情况可以自己收集表情包,根据表情的 MD5 去匹配导出的图片,从而修正图片类型并补充 packNamedesc

    这是个苦力活,可以参考 Shmily-Get-QQ-PC-MHT 的表情文件集合,和 Show-Modify-msg 辅助的实现。

    - +}

    可以参考 wechat 的函数进行统计

    新类型

    如果是新的 Get 类型,需要在 这里 补充统计函数

    表情数据的一些说明

    正向导出

    Wechat、MobileQQ 可以直接从数据库中获取表情的 packNamedesc 等值,这样的就很简单,直接导出即可。

    反向匹配

    如 PC-QQ 无法导出表情类型的消息,更无法获取 packNamedesc,所以所有表情都被视为图片类型被导出

    这种情况可以自己收集表情包,根据表情的 MD5 去匹配导出的图片,从而修正图片类型并补充 packNamedesc

    这是个苦力活,可以参考 Shmily-Get-QQ-PC-MHT 的表情文件集合,和 Show-Modify-msg 辅助的实现。

    + \ No newline at end of file diff --git a/guide/use/msg/schema.html b/guide/use/msg/schema.html index 6bd6a82..c63815d 100644 --- a/guide/use/msg/schema.html +++ b/guide/use/msg/schema.html @@ -6,13 +6,13 @@ 数据文件-Msg | Shmily - + - + @@ -115,8 +115,8 @@ "id": "camera.json_2009-09-25_10-33-02_g_11e351_1", // 所有消息合并后, 按时间线排序第几条消息 "index": 123 -}]

    因为项目持续了近 3 年, 所以我写的很多早期 Get 并未遵循以上标准, 我会慢慢重构的.

    - +}]

    因为项目持续了近 3 年, 所以我写的很多早期 Get 并未遵循以上标准, 我会慢慢重构的.

    + \ No newline at end of file diff --git a/guide/use/msg/template/index.html b/guide/use/msg/template/index.html index 3e50741..db46fcb 100644 --- a/guide/use/msg/template/index.html +++ b/guide/use/msg/template/index.html @@ -6,22 +6,22 @@ 数据文件-Msg 示例 | Shmily - + - + -
    Skip to content

    数据文件-Msg 示例

    示例有以下几种查看方式

    源码 (推荐)

    最及时最可靠

    Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

    Demo

    更新不及时

    js
    []

    Demo 链接 筛选查看

    from demo web

    GPLv3 License.

    - +
    Skip to content

    数据文件-Msg 示例

    示例有以下几种查看方式

    源码 (推荐)

    最及时最可靠

    Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

    Demo

    更新不及时

    js
    []

    Demo 链接 筛选查看

    from demo web

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/use/show.html b/guide/use/show.html index d12bc95..6a04b4f 100644 --- a/guide/use/show.html +++ b/guide/use/show.html @@ -6,21 +6,21 @@ Show | Shmily - + - + -
    Skip to content

    Show

    TIP

    有 🎞️ 标记的在项目文档中均包含视频教程

    显示 和 修改

    加工前面 Get 到的所有数据, 用于 显示 / 搜索 / 图表 / 统计 / 评论等~


    Demo

    这是演示站~ 上面加工完就是这个效果~

    GPLv3 License.

    - +
    Skip to content

    Show

    TIP

    有 🎞️ 标记的在项目文档中均包含视频教程

    显示 和 修改

    加工前面 Get 到的所有数据, 用于 显示 / 搜索 / 图表 / 统计 / 评论等~


    Demo

    这是演示站~ 上面加工完就是这个效果~

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/what-is.html b/guide/what-is.html index bb335c7..edae9a8 100644 --- a/guide/what-is.html +++ b/guide/what-is.html @@ -6,21 +6,21 @@ 这是啥 | Shmily - + - + -
    Skip to content

    这是啥

    一个悲伤的故事

    我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

    • QQ 微信 等记录能融合, 并用时间线查看
    • 支持搜索过滤查询
    • 可以给消息评论
    • 有图表分析

    然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

    吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

    手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

    总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

    少啰嗦,先看Demo

     

    最后

    不支持用户数据导出的公司都是耍流氓~

    Adun Toridas

    今天,我们将夺回我们的家园,夺回我们的遗产!

    GPLv3 License.

    - +
    Skip to content

    这是啥

    一个悲伤的故事

    我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

    • QQ 微信 等记录能融合, 并用时间线查看
    • 支持搜索过滤查询
    • 可以给消息评论
    • 有图表分析

    然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

    吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

    手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

    总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

    少啰嗦,先看Demo

     

    最后

    不支持用户数据导出的公司都是耍流氓~

    Adun Toridas

    今天,我们将夺回我们的家园,夺回我们的遗产!

    GPLv3 License.

    + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index d5c1d6a..d158b68 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"guide_setup-runtime_python.md":"B_WTY-Li","guide_setup-runtime_java.md":"STJGxBMs","guide_setup-runtime_nodejs-dependencies.md":"Z4JdV86O","guide_setup-runtime_github-down-repo.md":"vVBJk8U5","guide_setup-runtime_nodejs-start.md":"luR8yRl8","guide_setup-runtime_q_a-detail_cannot-find-module.md":"RQRMWlXt","guide_what-is.md":"Sn6yWt-N","guide_setup-runtime_php.md":"P6lsKn93","guide_setup-runtime_nodejs.md":"3nlQkkDT","guide_setup-runtime_android-copy-backup.md":"gK7HF23q","guide_setup-runtime_snippets_open_cmd.md":"ckn76Gy4","index.md":"uVSKw9vd","guide_use_msg_other_emotion.md":"ZYEf4vIx","guide_other_thanks.md":"YwFN6rJl","guide_other_donation.md":"KYLIh3rR","guide_setup-runtime_q_a.md":"l4uo_75b","guide_other_donation_list.md":"E4_4IpF4","guide_setup-runtime_android-copy-root.md":"WrHGF5UH","guide_setup-runtime_android-copy.md":"BUdCbwDN","guide_use_msg_schema.md":"Y9dAINJT","guide_concept.md":"xcgmQ1Wf","guide_tools_wechat_calc-wechat-key.md":"Xs98kn1Q","guide_tools_github_visit.md":"cnWPUz1A","guide_use_msg_custom.md":"x_5wVIRa","guide_use_data.md":"pry9YiGb","guide_use_begin.md":"GPQCyDFB","guide_setup-runtime_explain.md":"ST2bHcw6","guide_use_draft.md":"DRh9i-Yq","guide_use_show.md":"CVtyhI9-","guide_use_get.md":"Ojb69h_p","guide_use_merger.md":"-LYKHZlq","guide_setup-runtime_docker.md":"UwPrAXMm","guide_use_msg_template_index.md":"OWf2I5C3"} +{"guide_setup-runtime_nodejs.md":"oXnWLWOT","guide_concept.md":"QMf-232B","guide_use_merger.md":"AA8cbFs8","guide_use_msg_custom.md":"Pqy9nrKs","guide_setup-runtime_github-down-repo.md":"cqEZEarE","guide_setup-runtime_explain.md":"Qgd3Bei5","guide_setup-runtime_android-copy-root.md":"YE2j-XMi","guide_other_thanks.md":"bJRpnWDg","guide_setup-runtime_android-copy-backup.md":"K8IGl4hb","guide_setup-runtime_nodejs-start.md":"VZqVV6_a","guide_tools_github_visit.md":"FxV3mWoj","guide_setup-runtime_docker.md":"zp9VLW4i","guide_setup-runtime_snippets_open_cmd.md":"LKrXZml4","guide_setup-runtime_php.md":"CTcSRowo","guide_other_donation.md":"JOGUXPp_","guide_setup-runtime_python.md":"HH6TyOeb","guide_other_donation_list.md":"JFJl5Vz8","guide_use_draft.md":"EAs2n47E","guide_setup-runtime_android-copy.md":"88hMEFP_","guide_use_data.md":"Hfkuy3e4","guide_setup-runtime_nodejs-dependencies.md":"L2YJEKK-","guide_setup-runtime_java.md":"l1rsPpNz","guide_setup-runtime_q_a-detail_cannot-find-module.md":"LkgaY2MT","guide_use_msg_other_emotion.md":"Tj1SUFuT","guide_use_msg_schema.md":"CQgQWdGO","guide_use_get.md":"B69av6ys","guide_setup-runtime_q_a.md":"TYOnaMq7","guide_tools_wechat_calc-wechat-key.md":"o7Qvxqrh","guide_what-is.md":"LSKobG2r","guide_use_begin.md":"ORAVx-nL","guide_use_show.md":"H4WpUCzs","index.md":"8_rCL-V6","guide_use_msg_template_index.md":"yQDEtNnb"} diff --git a/index.html b/index.html index f260d3a..886444a 100644 --- a/index.html +++ b/index.html @@ -6,21 +6,21 @@ Shmily | Shmily - + - + -
    Skip to content

    SHMILY

    历史的归档

    QQ、Wechat、SMS、CallLog、Email……

    icon

    类型多 平台全

    QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型

    * 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!

    以前导出的能合并

    支持将以前导出的数据和现在合并

    历史不再断代

    * 如2013年导出记录(2000-2013)可以
    和2020年导出记录(2007-2020)合并
    在同一时间线查看

    数据全

    记录中的图片、表情、视频等全下载到本地永留存

    数据库字段全导出, 不限于你看到的

    * 消息头像上点击右键, 即可在 F12 开发者模式中看到完整数据

    支持搜索和筛选

    关键词(支持正则)搜索

    * 搜索支持正则,人物支持分组

    * 极致优化,240M数据复杂搜索100ms内出结果

    还有评论和引用

    时间的长河有感而发?添加一条评论或打上一个Tag吧

    引用的消息也会转化为双向链接可快速跳转

    * 评论也可以搜索哦

    图表与统计

    不想看看各种维度的大数据么?

    * 评论里的 Tag 也有统计,开心的次数不能少

    开发

    深入底层优化,240M数据纯前端静态处理

    你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

    标准化、模块化、组件化,开发更容易

    数据字段全导出,总有你能用上的

    数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

    GPLv3 License.

    - +
    Skip to content

    SHMILY

    历史的归档

    QQ、Wechat、SMS、CallLog、Email……

    icon

    类型多 平台全

    QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型

    * 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!

    以前导出的能合并

    支持将以前导出的数据和现在合并

    历史不再断代

    * 如2013年导出记录(2000-2013)可以
    和2020年导出记录(2007-2020)合并
    在同一时间线查看

    数据全

    记录中的图片、表情、视频等全下载到本地永留存

    数据库字段全导出, 不限于你看到的

    * 消息头像上点击右键, 即可在 F12 开发者模式中看到完整数据

    支持搜索和筛选

    关键词(支持正则)搜索

    * 搜索支持正则,人物支持分组

    * 极致优化,240M数据复杂搜索100ms内出结果

    还有评论和引用

    时间的长河有感而发?添加一条评论或打上一个Tag吧

    引用的消息也会转化为双向链接可快速跳转

    * 评论也可以搜索哦

    图表与统计

    不想看看各种维度的大数据么?

    * 评论里的 Tag 也有统计,开心的次数不能少

    开发

    深入底层优化,240M数据纯前端静态处理

    你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

    标准化、模块化、组件化,开发更容易

    数据字段全导出,总有你能用上的

    数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

    GPLv3 License.

    + \ No newline at end of file