diff --git a/404.html b/404.html index e6f292ac..aeb1f2f1 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._4o58JZB.js b/assets/guide_concept.md.XKbnx-Es.js similarity index 99% rename from assets/guide_concept.md._4o58JZB.js rename to assets/guide_concept.md.XKbnx-Es.js index 7c844cad..98d6dd80 100644 --- a/assets/guide_concept.md._4o58JZB.js +++ b/assets/guide_concept.md.XKbnx-Es.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":1702192371000}'),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":1702192817000}'),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._4o58JZB.lean.js b/assets/guide_concept.md.XKbnx-Es.lean.js
similarity index 84%
rename from assets/guide_concept.md._4o58JZB.lean.js
rename to assets/guide_concept.md.XKbnx-Es.lean.js
index 39df5db2..e647f36a 100644
--- a/assets/guide_concept.md._4o58JZB.lean.js
+++ b/assets/guide_concept.md.XKbnx-Es.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":1702192371000}'),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":1702192817000}'),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.Xnln2f6x.js b/assets/guide_other_donation.md.aD6dE-h3.js
similarity index 98%
rename from assets/guide_other_donation.md.Xnln2f6x.js
rename to assets/guide_other_donation.md.aD6dE-h3.js
index 3c4d855a..8cc5b142 100644
--- a/assets/guide_other_donation.md.Xnln2f6x.js
+++ b/assets/guide_other_donation.md.aD6dE-h3.js
@@ -1 +1 @@
-import{_ as s,c as a,k as e,a as t,R as o,o as i}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",d="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",c="/Shmily/assets/red-panda.-_1nL8ud.jpg",A=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1702192371000}'),_={name:"guide/other/donation.md"},p=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 字样
门票公示


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

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

red-panda

',10);function f(x,u,y,S,k,E){return i(),a("div",null,[p,e("div",h,[m,(i(),a("div",g,b)),w])])}const C=s(_,[["render",f]]);export{A as __pageData,C as default}; +import{_ as s,c as a,k as e,a as t,R as o,o as i}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",d="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",c="/Shmily/assets/red-panda.-_1nL8ud.jpg",A=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1702192817000}'),_={name:"guide/other/donation.md"},p=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 字样
门票公示


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

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

red-panda

',10);function f(x,u,y,S,k,E){return i(),a("div",null,[p,e("div",h,[m,(i(),a("div",g,b)),w])])}const C=s(_,[["render",f]]);export{A as __pageData,C as default}; diff --git a/assets/guide_other_donation.md.Xnln2f6x.lean.js b/assets/guide_other_donation.md.aD6dE-h3.lean.js similarity index 97% rename from assets/guide_other_donation.md.Xnln2f6x.lean.js rename to assets/guide_other_donation.md.aD6dE-h3.lean.js index 019c9121..ec3b1bca 100644 --- a/assets/guide_other_donation.md.Xnln2f6x.lean.js +++ b/assets/guide_other_donation.md.aD6dE-h3.lean.js @@ -1 +1 @@ -import{_ as s,c as a,k as e,a as t,R as o,o as i}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",d="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",c="/Shmily/assets/red-panda.-_1nL8ud.jpg",A=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1702192371000}'),_={name:"guide/other/donation.md"},p=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("",10);function f(x,u,y,S,k,E){return i(),a("div",null,[p,e("div",h,[m,(i(),a("div",g,b)),w])])}const C=s(_,[["render",f]]);export{A as __pageData,C as default}; +import{_ as s,c as a,k as e,a as t,R as o,o as i}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",d="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",c="/Shmily/assets/red-panda.-_1nL8ud.jpg",A=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1702192817000}'),_={name:"guide/other/donation.md"},p=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("",10);function f(x,u,y,S,k,E){return i(),a("div",null,[p,e("div",h,[m,(i(),a("div",g,b)),w])])}const C=s(_,[["render",f]]);export{A as __pageData,C as default}; diff --git a/assets/guide_other_donation_list.md.BhpUX07r.js b/assets/guide_other_donation_list.md.ZVE6fqkR.js similarity index 97% rename from assets/guide_other_donation_list.md.BhpUX07r.js rename to assets/guide_other_donation_list.md.ZVE6fqkR.js index 63d96531..381d3d5e 100644 --- a/assets/guide_other_donation_list.md.BhpUX07r.js +++ b/assets/guide_other_donation_list.md.ZVE6fqkR.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":1702192371000}'),d={name:"guide/other/donation_list.md"},a=n('
门票公示

TIP

请在备注内包含 Shmily 字样

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


时间姓名金额来源
2023/09/03 17:12:36*门10Wechat
2023/11/02 14:56:02**勇15Alipay
2023/11/18 14:51:42*翔10Alipay
2023/11/18 17:08:15*畅11.11Alipay
2023/11/19 01:39:48A*s5Wechat
2023/11/22 10:17:50*羊5.61Wechat
2023/11/24 19:18:28*生20Wechat
2023/12/08 09:51:19**焜50Alipay
',4),r=[a];function i(s,c,o,y,g,x){return l(),e("div",null,r)}const p=t(d,[["render",i]]);export{_ as __pageData,p 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":1702192817000}'),d={name:"guide/other/donation_list.md"},a=n('
门票公示

TIP

请在备注内包含 Shmily 字样

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


时间姓名金额来源
2023/09/03 17:12:36*门10Wechat
2023/11/02 14:56:02**勇15Alipay
2023/11/18 14:51:42*翔10Alipay
2023/11/18 17:08:15*畅11.11Alipay
2023/11/19 01:39:48A*s5Wechat
2023/11/22 10:17:50*羊5.61Wechat
2023/11/24 19:18:28*生20Wechat
2023/12/08 09:51:19**焜50Alipay
',4),r=[a];function i(s,c,o,y,g,x){return l(),e("div",null,r)}const p=t(d,[["render",i]]);export{_ as __pageData,p as default}; diff --git a/assets/guide_other_donation_list.md.BhpUX07r.lean.js b/assets/guide_other_donation_list.md.ZVE6fqkR.lean.js similarity index 85% rename from assets/guide_other_donation_list.md.BhpUX07r.lean.js rename to assets/guide_other_donation_list.md.ZVE6fqkR.lean.js index ccb5d689..f4142581 100644 --- a/assets/guide_other_donation_list.md.BhpUX07r.lean.js +++ b/assets/guide_other_donation_list.md.ZVE6fqkR.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":1702192371000}'),d={name:"guide/other/donation_list.md"},a=n("",4),r=[a];function i(s,c,o,y,g,x){return l(),e("div",null,r)}const p=t(d,[["render",i]]);export{_ as __pageData,p 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":1702192817000}'),d={name:"guide/other/donation_list.md"},a=n("",4),r=[a];function i(s,c,o,y,g,x){return l(),e("div",null,r)}const p=t(d,[["render",i]]);export{_ as __pageData,p as default}; diff --git a/assets/guide_other_thanks.md.-lolqK_o.js b/assets/guide_other_thanks.md.M7wrP5zY.js similarity index 97% rename from assets/guide_other_thanks.md.-lolqK_o.js rename to assets/guide_other_thanks.md.M7wrP5zY.js index 844bcdcb..7c5c590b 100644 --- a/assets/guide_other_thanks.md.-lolqK_o.js +++ b/assets/guide_other_thanks.md.M7wrP5zY.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":1702192371000}'),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":1702192817000}'),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.-lolqK_o.lean.js b/assets/guide_other_thanks.md.M7wrP5zY.lean.js similarity index 85% rename from assets/guide_other_thanks.md.-lolqK_o.lean.js rename to assets/guide_other_thanks.md.M7wrP5zY.lean.js index a237961f..3679eaf8 100644 --- a/assets/guide_other_thanks.md.-lolqK_o.lean.js +++ b/assets/guide_other_thanks.md.M7wrP5zY.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":1702192371000}'),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":1702192817000}'),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.BeGyi1h8.js b/assets/guide_setup-runtime_Android-copy-backup.md.0ZweHvZn.js similarity index 94% rename from assets/guide_setup-runtime_Android-copy-backup.md.BeGyi1h8.js rename to assets/guide_setup-runtime_Android-copy-backup.md.0ZweHvZn.js index 8b464c99..7f7c2dac 100644 --- a/assets/guide_setup-runtime_Android-copy-backup.md.BeGyi1h8.js +++ b/assets/guide_setup-runtime_Android-copy-backup.md.0ZweHvZn.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":1702192371000}'),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":1702192817000}'),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.BeGyi1h8.lean.js b/assets/guide_setup-runtime_Android-copy-backup.md.0ZweHvZn.lean.js similarity index 94% rename from assets/guide_setup-runtime_Android-copy-backup.md.BeGyi1h8.lean.js rename to assets/guide_setup-runtime_Android-copy-backup.md.0ZweHvZn.lean.js index 8b464c99..7f7c2dac 100644 --- a/assets/guide_setup-runtime_Android-copy-backup.md.BeGyi1h8.lean.js +++ b/assets/guide_setup-runtime_Android-copy-backup.md.0ZweHvZn.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":1702192371000}'),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":1702192817000}'),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.gzAUWgPb.js b/assets/guide_setup-runtime_Android-copy-root.md.tB4ZWOiX.js similarity index 95% rename from assets/guide_setup-runtime_Android-copy-root.md.gzAUWgPb.js rename to assets/guide_setup-runtime_Android-copy-root.md.tB4ZWOiX.js index 9b3c0d3d..b1ea75bf 100644 --- a/assets/guide_setup-runtime_Android-copy-root.md.gzAUWgPb.js +++ b/assets/guide_setup-runtime_Android-copy-root.md.tB4ZWOiX.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":1702192371000}'),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":1702192817000}'),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.gzAUWgPb.lean.js b/assets/guide_setup-runtime_Android-copy-root.md.tB4ZWOiX.lean.js similarity index 87% rename from assets/guide_setup-runtime_Android-copy-root.md.gzAUWgPb.lean.js rename to assets/guide_setup-runtime_Android-copy-root.md.tB4ZWOiX.lean.js index 8059062d..13fa16e1 100644 --- a/assets/guide_setup-runtime_Android-copy-root.md.gzAUWgPb.lean.js +++ b/assets/guide_setup-runtime_Android-copy-root.md.tB4ZWOiX.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":1702192371000}'),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":1702192817000}'),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.dmSWPBfF.js b/assets/guide_setup-runtime_Android-copy.md.XCzMKgqd.js similarity index 97% rename from assets/guide_setup-runtime_Android-copy.md.dmSWPBfF.js rename to assets/guide_setup-runtime_Android-copy.md.XCzMKgqd.js index 8bee1064..9ec8937e 100644 --- a/assets/guide_setup-runtime_Android-copy.md.dmSWPBfF.js +++ b/assets/guide_setup-runtime_Android-copy.md.XCzMKgqd.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":1702192371000}'),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":1702192817000}'),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.dmSWPBfF.lean.js b/assets/guide_setup-runtime_Android-copy.md.XCzMKgqd.lean.js
similarity index 87%
rename from assets/guide_setup-runtime_Android-copy.md.dmSWPBfF.lean.js
rename to assets/guide_setup-runtime_Android-copy.md.XCzMKgqd.lean.js
index a0d1b098..16eb25bf 100644
--- a/assets/guide_setup-runtime_Android-copy.md.dmSWPBfF.lean.js
+++ b/assets/guide_setup-runtime_Android-copy.md.XCzMKgqd.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":1702192371000}'),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":1702192817000}'),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.KHqO750E.js b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.QjGCMzcn.js
similarity index 98%
rename from assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.KHqO750E.js
rename to assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.QjGCMzcn.js
index 9845af8c..4230fe7b 100644
--- a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.KHqO750E.js
+++ b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.QjGCMzcn.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":1702192371000}'),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":1702192817000}'),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.KHqO750E.lean.js b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.QjGCMzcn.lean.js
similarity index 89%
rename from assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.KHqO750E.lean.js
rename to assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.QjGCMzcn.lean.js
index b99c2c95..e268b61f 100644
--- a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.KHqO750E.lean.js
+++ b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.QjGCMzcn.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":1702192371000}'),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":1702192817000}'),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.obumttRb.js b/assets/guide_setup-runtime_Q_A.md.SeNafG9L.js
similarity index 98%
rename from assets/guide_setup-runtime_Q_A.md.obumttRb.js
rename to assets/guide_setup-runtime_Q_A.md.SeNafG9L.js
index 92bc7450..fda05059 100644
--- a/assets/guide_setup-runtime_Q_A.md.obumttRb.js
+++ b/assets/guide_setup-runtime_Q_A.md.SeNafG9L.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":1702192371000}'),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":1702192817000}'),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.obumttRb.lean.js b/assets/guide_setup-runtime_Q_A.md.SeNafG9L.lean.js similarity index 98% rename from assets/guide_setup-runtime_Q_A.md.obumttRb.lean.js rename to assets/guide_setup-runtime_Q_A.md.SeNafG9L.lean.js index 92bc7450..fda05059 100644 --- a/assets/guide_setup-runtime_Q_A.md.obumttRb.lean.js +++ b/assets/guide_setup-runtime_Q_A.md.SeNafG9L.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":1702192371000}'),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":1702192817000}'),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.64tmJ242.js b/assets/guide_setup-runtime_docker.md.F_tRXq6m.js similarity index 93% rename from assets/guide_setup-runtime_docker.md.64tmJ242.js rename to assets/guide_setup-runtime_docker.md.F_tRXq6m.js index 2d0467fb..da8c0a6b 100644 --- a/assets/guide_setup-runtime_docker.md.64tmJ242.js +++ b/assets/guide_setup-runtime_docker.md.F_tRXq6m.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":1702192371000}'),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":1702192817000}'),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.64tmJ242.lean.js b/assets/guide_setup-runtime_docker.md.F_tRXq6m.lean.js similarity index 85% rename from assets/guide_setup-runtime_docker.md.64tmJ242.lean.js rename to assets/guide_setup-runtime_docker.md.F_tRXq6m.lean.js index 562f5ee1..c9f696ec 100644 --- a/assets/guide_setup-runtime_docker.md.64tmJ242.lean.js +++ b/assets/guide_setup-runtime_docker.md.F_tRXq6m.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":1702192371000}'),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":1702192817000}'),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.dN5FEw5U.js b/assets/guide_setup-runtime_explain.md.obtaY2Kt.js similarity index 92% rename from assets/guide_setup-runtime_explain.md.dN5FEw5U.js rename to assets/guide_setup-runtime_explain.md.obtaY2Kt.js index ae1d4cb8..76eeffe6 100644 --- a/assets/guide_setup-runtime_explain.md.dN5FEw5U.js +++ b/assets/guide_setup-runtime_explain.md.obtaY2Kt.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":1702192371000}'),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":1702192817000}'),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.dN5FEw5U.lean.js b/assets/guide_setup-runtime_explain.md.obtaY2Kt.lean.js similarity index 92% rename from assets/guide_setup-runtime_explain.md.dN5FEw5U.lean.js rename to assets/guide_setup-runtime_explain.md.obtaY2Kt.lean.js index ae1d4cb8..76eeffe6 100644 --- a/assets/guide_setup-runtime_explain.md.dN5FEw5U.lean.js +++ b/assets/guide_setup-runtime_explain.md.obtaY2Kt.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":1702192371000}'),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":1702192817000}'),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.Mo9K82iK.js b/assets/guide_setup-runtime_github-down-repo.md.HblZ_HL9.js similarity index 91% rename from assets/guide_setup-runtime_github-down-repo.md.Mo9K82iK.js rename to assets/guide_setup-runtime_github-down-repo.md.HblZ_HL9.js index fdfa78df..513a62d6 100644 --- a/assets/guide_setup-runtime_github-down-repo.md.Mo9K82iK.js +++ b/assets/guide_setup-runtime_github-down-repo.md.HblZ_HL9.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":1702192371000}'),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":1702192817000}'),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.Mo9K82iK.lean.js b/assets/guide_setup-runtime_github-down-repo.md.HblZ_HL9.lean.js similarity index 91% rename from assets/guide_setup-runtime_github-down-repo.md.Mo9K82iK.lean.js rename to assets/guide_setup-runtime_github-down-repo.md.HblZ_HL9.lean.js index fdfa78df..513a62d6 100644 --- a/assets/guide_setup-runtime_github-down-repo.md.Mo9K82iK.lean.js +++ b/assets/guide_setup-runtime_github-down-repo.md.HblZ_HL9.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":1702192371000}'),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":1702192817000}'),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.F1kLtu_m.js b/assets/guide_setup-runtime_java.md.-2bWJLpz.js similarity index 94% rename from assets/guide_setup-runtime_java.md.F1kLtu_m.js rename to assets/guide_setup-runtime_java.md.-2bWJLpz.js index c16040e9..9dcfbccf 100644 --- a/assets/guide_setup-runtime_java.md.F1kLtu_m.js +++ b/assets/guide_setup-runtime_java.md.-2bWJLpz.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":1702192371000}'),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":1702192817000}'),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.F1kLtu_m.lean.js b/assets/guide_setup-runtime_java.md.-2bWJLpz.lean.js similarity index 86% rename from assets/guide_setup-runtime_java.md.F1kLtu_m.lean.js rename to assets/guide_setup-runtime_java.md.-2bWJLpz.lean.js index 45f3fcba..ab517609 100644 --- a/assets/guide_setup-runtime_java.md.F1kLtu_m.lean.js +++ b/assets/guide_setup-runtime_java.md.-2bWJLpz.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":1702192371000}'),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":1702192817000}'),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.yzvurhFh.js b/assets/guide_setup-runtime_nodejs-dependencies.md.t9B2vBG3.js similarity index 97% rename from assets/guide_setup-runtime_nodejs-dependencies.md.yzvurhFh.js rename to assets/guide_setup-runtime_nodejs-dependencies.md.t9B2vBG3.js index cba9bb7a..f5204b0f 100644 --- a/assets/guide_setup-runtime_nodejs-dependencies.md.yzvurhFh.js +++ b/assets/guide_setup-runtime_nodejs-dependencies.md.t9B2vBG3.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":1702192371000}'),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":1702192817000}'),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.yzvurhFh.lean.js b/assets/guide_setup-runtime_nodejs-dependencies.md.t9B2vBG3.lean.js
similarity index 90%
rename from assets/guide_setup-runtime_nodejs-dependencies.md.yzvurhFh.lean.js
rename to assets/guide_setup-runtime_nodejs-dependencies.md.t9B2vBG3.lean.js
index fceffa5e..2e185e38 100644
--- a/assets/guide_setup-runtime_nodejs-dependencies.md.yzvurhFh.lean.js
+++ b/assets/guide_setup-runtime_nodejs-dependencies.md.t9B2vBG3.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":1702192371000}'),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":1702192817000}'),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.bEHJVbwF.js b/assets/guide_setup-runtime_nodejs-start.md.Tuhtuxwq.js
similarity index 98%
rename from assets/guide_setup-runtime_nodejs-start.md.bEHJVbwF.js
rename to assets/guide_setup-runtime_nodejs-start.md.Tuhtuxwq.js
index b85aa31e..70d625bb 100644
--- a/assets/guide_setup-runtime_nodejs-start.md.bEHJVbwF.js
+++ b/assets/guide_setup-runtime_nodejs-start.md.Tuhtuxwq.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":1702192371000}'),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":1702192817000}'),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.bEHJVbwF.lean.js b/assets/guide_setup-runtime_nodejs-start.md.Tuhtuxwq.lean.js
      similarity index 86%
      rename from assets/guide_setup-runtime_nodejs-start.md.bEHJVbwF.lean.js
      rename to assets/guide_setup-runtime_nodejs-start.md.Tuhtuxwq.lean.js
      index 1782c4a2..9b3514ed 100644
      --- a/assets/guide_setup-runtime_nodejs-start.md.bEHJVbwF.lean.js
      +++ b/assets/guide_setup-runtime_nodejs-start.md.Tuhtuxwq.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":1702192371000}'),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":1702192817000}'),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.sKn_vrfb.js b/assets/guide_setup-runtime_nodejs.md.bIEot6Ib.js
      similarity index 96%
      rename from assets/guide_setup-runtime_nodejs.md.sKn_vrfb.js
      rename to assets/guide_setup-runtime_nodejs.md.bIEot6Ib.js
      index 2f22d1ad..e6b875de 100644
      --- a/assets/guide_setup-runtime_nodejs.md.sKn_vrfb.js
      +++ b/assets/guide_setup-runtime_nodejs.md.bIEot6Ib.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":1702192371000}'),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":1702192817000}'),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.sKn_vrfb.lean.js b/assets/guide_setup-runtime_nodejs.md.bIEot6Ib.lean.js similarity index 86% rename from assets/guide_setup-runtime_nodejs.md.sKn_vrfb.lean.js rename to assets/guide_setup-runtime_nodejs.md.bIEot6Ib.lean.js index cb79a818..040d3621 100644 --- a/assets/guide_setup-runtime_nodejs.md.sKn_vrfb.lean.js +++ b/assets/guide_setup-runtime_nodejs.md.bIEot6Ib.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":1702192371000}'),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":1702192817000}'),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.83_a4nIU.js b/assets/guide_setup-runtime_php.md.lU3b74NT.js similarity index 95% rename from assets/guide_setup-runtime_php.md.83_a4nIU.js rename to assets/guide_setup-runtime_php.md.lU3b74NT.js index ee513c5d..e5008dcd 100644 --- a/assets/guide_setup-runtime_php.md.83_a4nIU.js +++ b/assets/guide_setup-runtime_php.md.lU3b74NT.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":1702192371000}'),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":1702192817000}'),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.83_a4nIU.lean.js b/assets/guide_setup-runtime_php.md.lU3b74NT.lean.js similarity index 86% rename from assets/guide_setup-runtime_php.md.83_a4nIU.lean.js rename to assets/guide_setup-runtime_php.md.lU3b74NT.lean.js index ca640651..beff72e1 100644 --- a/assets/guide_setup-runtime_php.md.83_a4nIU.lean.js +++ b/assets/guide_setup-runtime_php.md.lU3b74NT.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":1702192371000}'),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":1702192817000}'),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.u1n8ey84.js b/assets/guide_setup-runtime_python.md.zGQ1ss4b.js similarity index 97% rename from assets/guide_setup-runtime_python.md.u1n8ey84.js rename to assets/guide_setup-runtime_python.md.zGQ1ss4b.js index 9e4e88cc..827d292b 100644 --- a/assets/guide_setup-runtime_python.md.u1n8ey84.js +++ b/assets/guide_setup-runtime_python.md.zGQ1ss4b.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":1702192371000}'),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":1702192817000}'),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.u1n8ey84.lean.js b/assets/guide_setup-runtime_python.md.zGQ1ss4b.lean.js similarity index 88% rename from assets/guide_setup-runtime_python.md.u1n8ey84.lean.js rename to assets/guide_setup-runtime_python.md.zGQ1ss4b.lean.js index f3b2b1f5..77865657 100644 --- a/assets/guide_setup-runtime_python.md.u1n8ey84.lean.js +++ b/assets/guide_setup-runtime_python.md.zGQ1ss4b.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":1702192371000}'),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":1702192817000}'),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.FnA55IlU.js b/assets/guide_setup-runtime_snippets_open_cmd.md.nGgW5a4q.js similarity index 91% rename from assets/guide_setup-runtime_snippets_open_cmd.md.FnA55IlU.js rename to assets/guide_setup-runtime_snippets_open_cmd.md.nGgW5a4q.js index 610800fe..f5cf6a84 100644 --- a/assets/guide_setup-runtime_snippets_open_cmd.md.FnA55IlU.js +++ b/assets/guide_setup-runtime_snippets_open_cmd.md.nGgW5a4q.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":1702192371000}'),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":1702192817000}'),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.FnA55IlU.lean.js b/assets/guide_setup-runtime_snippets_open_cmd.md.nGgW5a4q.lean.js similarity index 91% rename from assets/guide_setup-runtime_snippets_open_cmd.md.FnA55IlU.lean.js rename to assets/guide_setup-runtime_snippets_open_cmd.md.nGgW5a4q.lean.js index 610800fe..f5cf6a84 100644 --- a/assets/guide_setup-runtime_snippets_open_cmd.md.FnA55IlU.lean.js +++ b/assets/guide_setup-runtime_snippets_open_cmd.md.nGgW5a4q.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":1702192371000}'),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":1702192817000}'),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.r8HlJUwP.js b/assets/guide_tools_Github_visit.md.r8HlJUwP.js new file mode 100644 index 00000000..4b7f2ffa --- /dev/null +++ b/assets/guide_tools_Github_visit.md.r8HlJUwP.js @@ -0,0 +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":1702192817000}'),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.r8HlJUwP.lean.js b/assets/guide_tools_Github_visit.md.r8HlJUwP.lean.js new file mode 100644 index 00000000..4b7f2ffa --- /dev/null +++ b/assets/guide_tools_Github_visit.md.r8HlJUwP.lean.js @@ -0,0 +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":1702192817000}'),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.MRcIfc4v.js b/assets/guide_tools_Wechat_calc-wechat-key.md.aROZqAYL.js similarity index 99% rename from assets/guide_tools_Wechat_calc-wechat-key.md.MRcIfc4v.js rename to assets/guide_tools_Wechat_calc-wechat-key.md.aROZqAYL.js index d179dcb1..a3256166 100644 --- a/assets/guide_tools_Wechat_calc-wechat-key.md.MRcIfc4v.js +++ b/assets/guide_tools_Wechat_calc-wechat-key.md.aROZqAYL.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":1702192371000}'),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":1702192817000}'),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.MRcIfc4v.lean.js b/assets/guide_tools_Wechat_calc-wechat-key.md.aROZqAYL.lean.js similarity index 99% rename from assets/guide_tools_Wechat_calc-wechat-key.md.MRcIfc4v.lean.js rename to assets/guide_tools_Wechat_calc-wechat-key.md.aROZqAYL.lean.js index d179dcb1..a3256166 100644 --- a/assets/guide_tools_Wechat_calc-wechat-key.md.MRcIfc4v.lean.js +++ b/assets/guide_tools_Wechat_calc-wechat-key.md.aROZqAYL.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":1702192371000}'),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":1702192817000}'),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.mtndb5GR.js b/assets/guide_use_begin.md.KUHnKCyH.js similarity index 99% rename from assets/guide_use_begin.md.mtndb5GR.js rename to assets/guide_use_begin.md.KUHnKCyH.js index b2215b2a..6f123275 100644 --- a/assets/guide_use_begin.md.mtndb5GR.js +++ b/assets/guide_use_begin.md.KUHnKCyH.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":1702192371000}'),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":1702192817000}'),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.mtndb5GR.lean.js b/assets/guide_use_begin.md.KUHnKCyH.lean.js
          similarity index 79%
          rename from assets/guide_use_begin.md.mtndb5GR.lean.js
          rename to assets/guide_use_begin.md.KUHnKCyH.lean.js
          index b4e5f9f5..fd591a71 100644
          --- a/assets/guide_use_begin.md.mtndb5GR.lean.js
          +++ b/assets/guide_use_begin.md.KUHnKCyH.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":1702192371000}'),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":1702192817000}'),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.TgLVOkHY.js b/assets/guide_use_data.md.lp4-RPiZ.js
          similarity index 96%
          rename from assets/guide_use_data.md.TgLVOkHY.js
          rename to assets/guide_use_data.md.lp4-RPiZ.js
          index 664c6485..84c8ee21 100644
          --- a/assets/guide_use_data.md.TgLVOkHY.js
          +++ b/assets/guide_use_data.md.lp4-RPiZ.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":1702192371000}'),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":1702192817000}'),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.TgLVOkHY.lean.js b/assets/guide_use_data.md.lp4-RPiZ.lean.js similarity index 84% rename from assets/guide_use_data.md.TgLVOkHY.lean.js rename to assets/guide_use_data.md.lp4-RPiZ.lean.js index b1761b3b..90bc50c9 100644 --- a/assets/guide_use_data.md.TgLVOkHY.lean.js +++ b/assets/guide_use_data.md.lp4-RPiZ.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":1702192371000}'),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":1702192817000}'),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.5N2U2W95.js b/assets/guide_use_draft.md.VoaDaMU0.js similarity index 94% rename from assets/guide_use_draft.md.5N2U2W95.js rename to assets/guide_use_draft.md.VoaDaMU0.js index fadeb528..07c0b906 100644 --- a/assets/guide_use_draft.md.5N2U2W95.js +++ b/assets/guide_use_draft.md.VoaDaMU0.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":1702192371000}'),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":1702192817000}'),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.5N2U2W95.lean.js b/assets/guide_use_draft.md.VoaDaMU0.lean.js similarity index 86% rename from assets/guide_use_draft.md.5N2U2W95.lean.js rename to assets/guide_use_draft.md.VoaDaMU0.lean.js index 4fc7d41d..83b8a6a0 100644 --- a/assets/guide_use_draft.md.5N2U2W95.lean.js +++ b/assets/guide_use_draft.md.VoaDaMU0.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":1702192371000}'),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":1702192817000}'),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.IB3eyKnB.js b/assets/guide_use_get.md.zqXN2hYZ.js similarity index 98% rename from assets/guide_use_get.md.IB3eyKnB.js rename to assets/guide_use_get.md.zqXN2hYZ.js index 1af11dff..839fe238 100644 --- a/assets/guide_use_get.md.IB3eyKnB.js +++ b/assets/guide_use_get.md.zqXN2hYZ.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":1702192371000}'),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":1702192817000}'),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.IB3eyKnB.lean.js b/assets/guide_use_get.md.zqXN2hYZ.lean.js
          similarity index 84%
          rename from assets/guide_use_get.md.IB3eyKnB.lean.js
          rename to assets/guide_use_get.md.zqXN2hYZ.lean.js
          index 90c4401d..6d7b8976 100644
          --- a/assets/guide_use_get.md.IB3eyKnB.lean.js
          +++ b/assets/guide_use_get.md.zqXN2hYZ.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":1702192371000}'),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":1702192817000}'),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.akV1s7Le.js b/assets/guide_use_merger.md.pNFOh5DD.js
          similarity index 95%
          rename from assets/guide_use_merger.md.akV1s7Le.js
          rename to assets/guide_use_merger.md.pNFOh5DD.js
          index 1f8f59ba..3ab4fbd0 100644
          --- a/assets/guide_use_merger.md.akV1s7Le.js
          +++ b/assets/guide_use_merger.md.pNFOh5DD.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":1702192371000}'),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":1702192817000}'),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.akV1s7Le.lean.js b/assets/guide_use_merger.md.pNFOh5DD.lean.js similarity index 84% rename from assets/guide_use_merger.md.akV1s7Le.lean.js rename to assets/guide_use_merger.md.pNFOh5DD.lean.js index d900a57a..1a155f60 100644 --- a/assets/guide_use_merger.md.akV1s7Le.lean.js +++ b/assets/guide_use_merger.md.pNFOh5DD.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":1702192371000}'),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":1702192817000}'),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.Wsm5mYTV.js b/assets/guide_use_msg_custom.md.EjOA-Pyh.js similarity index 99% rename from assets/guide_use_msg_custom.md.Wsm5mYTV.js rename to assets/guide_use_msg_custom.md.EjOA-Pyh.js index 0faa4890..1068f132 100644 --- a/assets/guide_use_msg_custom.md.Wsm5mYTV.js +++ b/assets/guide_use_msg_custom.md.EjOA-Pyh.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":1702192371000}'),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":1702192817000}'),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.Wsm5mYTV.lean.js b/assets/guide_use_msg_custom.md.EjOA-Pyh.lean.js
              similarity index 85%
              rename from assets/guide_use_msg_custom.md.Wsm5mYTV.lean.js
              rename to assets/guide_use_msg_custom.md.EjOA-Pyh.lean.js
              index 2cd583b1..11ab42b1 100644
              --- a/assets/guide_use_msg_custom.md.Wsm5mYTV.lean.js
              +++ b/assets/guide_use_msg_custom.md.EjOA-Pyh.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":1702192371000}'),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":1702192817000}'),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.0X9WgT6z.js b/assets/guide_use_msg_other_emotion.md.px_kIZro.js
              similarity index 99%
              rename from assets/guide_use_msg_other_emotion.md.0X9WgT6z.js
              rename to assets/guide_use_msg_other_emotion.md.px_kIZro.js
              index 9026f47b..38f82264 100644
              --- a/assets/guide_use_msg_other_emotion.md.0X9WgT6z.js
              +++ b/assets/guide_use_msg_other_emotion.md.px_kIZro.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":1702192371000}'),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":1702192817000}'),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.0X9WgT6z.lean.js b/assets/guide_use_msg_other_emotion.md.px_kIZro.lean.js
              similarity index 85%
              rename from assets/guide_use_msg_other_emotion.md.0X9WgT6z.lean.js
              rename to assets/guide_use_msg_other_emotion.md.px_kIZro.lean.js
              index 42a0e1f2..5a480dfa 100644
              --- a/assets/guide_use_msg_other_emotion.md.0X9WgT6z.lean.js
              +++ b/assets/guide_use_msg_other_emotion.md.px_kIZro.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":1702192371000}'),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":1702192817000}'),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.Zjq7by3M.js b/assets/guide_use_msg_schema.md.k4BTPNY4.js
              similarity index 99%
              rename from assets/guide_use_msg_schema.md.Zjq7by3M.js
              rename to assets/guide_use_msg_schema.md.k4BTPNY4.js
              index 087d339e..4b5870f2 100644
              --- a/assets/guide_use_msg_schema.md.Zjq7by3M.js
              +++ b/assets/guide_use_msg_schema.md.k4BTPNY4.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":1702192371000}'),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":1702192817000}'),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.Zjq7by3M.lean.js b/assets/guide_use_msg_schema.md.k4BTPNY4.lean.js
              similarity index 85%
              rename from assets/guide_use_msg_schema.md.Zjq7by3M.lean.js
              rename to assets/guide_use_msg_schema.md.k4BTPNY4.lean.js
              index 0a1e4014..3bceb0aa 100644
              --- a/assets/guide_use_msg_schema.md.Zjq7by3M.lean.js
              +++ b/assets/guide_use_msg_schema.md.k4BTPNY4.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":1702192371000}'),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":1702192817000}'),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.ScTjHR4c.js b/assets/guide_use_msg_template_index.md.H_hTVmGI.js
              similarity index 99%
              rename from assets/guide_use_msg_template_index.md.ScTjHR4c.js
              rename to assets/guide_use_msg_template_index.md.H_hTVmGI.js
              index c7159eca..a29ab30b 100644
              --- a/assets/guide_use_msg_template_index.md.ScTjHR4c.js
              +++ b/assets/guide_use_msg_template_index.md.H_hTVmGI.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":1702192371000}'),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":1702192817000}'),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.ScTjHR4c.lean.js b/assets/guide_use_msg_template_index.md.H_hTVmGI.lean.js similarity index 99% rename from assets/guide_use_msg_template_index.md.ScTjHR4c.lean.js rename to assets/guide_use_msg_template_index.md.H_hTVmGI.lean.js index 9ddd4755..b47c5d75 100644 --- a/assets/guide_use_msg_template_index.md.ScTjHR4c.lean.js +++ b/assets/guide_use_msg_template_index.md.H_hTVmGI.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":1702192371000}'),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":1702192817000}'),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.x0WVk5S7.js b/assets/guide_use_show.md.0AWPkoJE.js similarity index 94% rename from assets/guide_use_show.md.x0WVk5S7.js rename to assets/guide_use_show.md.0AWPkoJE.js index 4d84d345..01fb6d34 100644 --- a/assets/guide_use_show.md.x0WVk5S7.js +++ b/assets/guide_use_show.md.0AWPkoJE.js @@ -1 +1 @@ -import{_ as e,c as o,o as a,R as t}from"./chunks/framework.xvtSDt2M.js";const f=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1702192371000}'),r={name:"guide/use/show.md"},h=t('

              Show

              显示 和 ModifyServer

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

              Show

              显示 和 ModifyServer

              Demo
              ',5),i=[h];function s(l,d,n,c,_,m){return a(),o("div",null,i)}const S=e(r,[["render",s]]);export{f as __pageData,S as default}; diff --git a/assets/guide_use_show.md.x0WVk5S7.lean.js b/assets/guide_use_show.md.0AWPkoJE.lean.js similarity index 84% rename from assets/guide_use_show.md.x0WVk5S7.lean.js rename to assets/guide_use_show.md.0AWPkoJE.lean.js index ae4c5b05..bee40170 100644 --- a/assets/guide_use_show.md.x0WVk5S7.lean.js +++ b/assets/guide_use_show.md.0AWPkoJE.lean.js @@ -1 +1 @@ -import{_ as e,c as o,o as a,R as t}from"./chunks/framework.xvtSDt2M.js";const f=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1702192371000}'),r={name:"guide/use/show.md"},h=t("",5),i=[h];function s(l,d,n,c,_,m){return a(),o("div",null,i)}const S=e(r,[["render",s]]);export{f as __pageData,S as default}; +import{_ as e,c as o,o as a,R as t}from"./chunks/framework.xvtSDt2M.js";const f=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1702192817000}'),r={name:"guide/use/show.md"},h=t("",5),i=[h];function s(l,d,n,c,_,m){return a(),o("div",null,i)}const S=e(r,[["render",s]]);export{f as __pageData,S as default}; diff --git a/assets/guide_what-is.md.mXpmV1kq.js b/assets/guide_what-is.md.Fv3wZk8v.js similarity index 97% rename from assets/guide_what-is.md.mXpmV1kq.js rename to assets/guide_what-is.md.Fv3wZk8v.js index 70095176..a3ad3012 100644 --- a/assets/guide_what-is.md.mXpmV1kq.js +++ b/assets/guide_what-is.md.Fv3wZk8v.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":1702192371000}'),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":1702192817000}'),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.mXpmV1kq.lean.js b/assets/guide_what-is.md.Fv3wZk8v.lean.js similarity index 84% rename from assets/guide_what-is.md.mXpmV1kq.lean.js rename to assets/guide_what-is.md.Fv3wZk8v.lean.js index f17e42c1..ec8231f7 100644 --- a/assets/guide_what-is.md.mXpmV1kq.lean.js +++ b/assets/guide_what-is.md.Fv3wZk8v.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":1702192371000}'),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":1702192817000}'),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.5l8E-Lw-.js b/assets/index.md.5l8E-Lw-.js new file mode 100644 index 00000000..f0fdd3f5 --- /dev/null +++ b/assets/index.md.5l8E-Lw-.js @@ -0,0 +1 @@ +import{_ as c,D as l,c as n,k as t,I as i,w as d,R as _,o as v,a as o,p,q as h}from"./chunks/framework.xvtSDt2M.js";const f="/Shmily/assets/f1.3NEygoYJ.png",r="/Shmily/assets/f2.KmeCDYiN.png",m="/Shmily/assets/f3.BX_mJhSv.png",S="/Shmily/assets/f4.XBUdr08V.png",g="/Shmily/assets/f5.P7gBLjNP.png",x="/Shmily/assets/f6.Q6EQ9VbO.jpg",tt=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":1702192817000}'),u={name:"index.md"},s=a=>(p("data-v-fe240535"),a=a(),h(),a),T={id:"features"},w={class:"row"},y={class:"info"},P={class:"content"},I=s(()=>t("h2",{class:"title"},"类型多 平台全",-1)),N=s(()=>t("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),V=s(()=>t("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1)),b=s(()=>t("div",{class:"cover"},[t("img",{src:f,style:{"max-width":"240px"}})],-1)),A=_('

              以前导出的能合并

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

              历史不再断代

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

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

              还有评论和引用

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

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

              * 评论也可以搜索哦

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

              开发

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

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

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

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

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

              ',1);function X(a,G,H,K,W,F){const e=l("P");return v(),n("div",null,[t("div",T,[t("div",w,[t("div",y,[t("div",P,[I,t("div",null,[N,i(e,null,{default:d(()=>[o("PC、Android、iOS 等各种平台")]),_:1}),V])])]),b]),A,t("div",C,[t("div",Q,[t("div",E,[k,t("div",null,[D,i(e,null,{default:d(()=>[o("时间、类型、设备、人物、通话时长等筛选")]),_:1}),B,M])])]),R]),$,t("div",q,[t("div",J,[t("div",L,[O,t("div",null,[Y,i(e,null,{default:d(()=>[o("纯表情回复的数量与对比都有哦!")]),_:1}),j])])]),z]),U])])}const st=c(u,[["render",X],["__scopeId","data-v-fe240535"]]);export{tt as __pageData,st as default}; diff --git a/assets/index.md.5l8E-Lw-.lean.js b/assets/index.md.5l8E-Lw-.lean.js new file mode 100644 index 00000000..3d7aa8df --- /dev/null +++ b/assets/index.md.5l8E-Lw-.lean.js @@ -0,0 +1 @@ +import{_ as c,D as l,c as n,k as t,I as i,w as d,R as _,o as v,a as o,p,q as h}from"./chunks/framework.xvtSDt2M.js";const f="/Shmily/assets/f1.3NEygoYJ.png",r="/Shmily/assets/f2.KmeCDYiN.png",m="/Shmily/assets/f3.BX_mJhSv.png",S="/Shmily/assets/f4.XBUdr08V.png",g="/Shmily/assets/f5.P7gBLjNP.png",x="/Shmily/assets/f6.Q6EQ9VbO.jpg",tt=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":1702192817000}'),u={name:"index.md"},s=a=>(p("data-v-fe240535"),a=a(),h(),a),T={id:"features"},w={class:"row"},y={class:"info"},P={class:"content"},I=s(()=>t("h2",{class:"title"},"类型多 平台全",-1)),N=s(()=>t("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),V=s(()=>t("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1)),b=s(()=>t("div",{class:"cover"},[t("img",{src:f,style:{"max-width":"240px"}})],-1)),A=_("",1),C={class:"row"},Q={class:"info"},E={class:"content"},k=s(()=>t("h2",{class:"title"},"支持搜索和筛选",-1)),D=s(()=>t("p",null,"关键词(支持正则)搜索",-1)),B=s(()=>t("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),M=s(()=>t("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1)),R=s(()=>t("div",{class:"cover"},[t("img",{src:m,style:{"max-width":"600px"}})],-1)),$=_("",1),q={class:"row"},J={class:"info"},L={class:"content"},O=s(()=>t("h2",{class:"title"},"图表与统计",-1)),Y=s(()=>t("p",null,"不想看看各种维度的大数据么?",-1)),j=s(()=>t("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1)),z=s(()=>t("div",{class:"cover"},[t("img",{src:g,style:{"max-width":"600px"}})],-1)),U=_("",1);function X(a,G,H,K,W,F){const e=l("P");return v(),n("div",null,[t("div",T,[t("div",w,[t("div",y,[t("div",P,[I,t("div",null,[N,i(e,null,{default:d(()=>[o("PC、Android、iOS 等各种平台")]),_:1}),V])])]),b]),A,t("div",C,[t("div",Q,[t("div",E,[k,t("div",null,[D,i(e,null,{default:d(()=>[o("时间、类型、设备、人物、通话时长等筛选")]),_:1}),B,M])])]),R]),$,t("div",q,[t("div",J,[t("div",L,[O,t("div",null,[Y,i(e,null,{default:d(()=>[o("纯表情回复的数量与对比都有哦!")]),_:1}),j])])]),z]),U])])}const st=c(u,[["render",X],["__scopeId","data-v-fe240535"]]);export{tt as __pageData,st as default}; diff --git a/assets/index.md.QWZzrb_V.js b/assets/index.md.QWZzrb_V.js deleted file mode 100644 index ec43dca3..00000000 --- a/assets/index.md.QWZzrb_V.js +++ /dev/null @@ -1 +0,0 @@ -import{_,D as l,c as n,k as a,I as c,w as i,R as o,o as v,a as d,p,q as h}from"./chunks/framework.xvtSDt2M.js";const f="/Shmily/assets/f1.3NEygoYJ.png",r="/Shmily/assets/f2.KmeCDYiN.png",m="/Shmily/assets/f3.BX_mJhSv.png",S="/Shmily/assets/f4.XBUdr08V.png",g="/Shmily/assets/f5.P7gBLjNP.png",x="/Shmily/assets/f6.Q6EQ9VbO.jpg",aa=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":1702192371000}'),u={name:"index.md"},t=s=>(p("data-v-15a3c7fe"),s=s(),h(),s),T={id:"features"},w={class:"row"},y={class:"info"},P={class:"content"},I=t(()=>a("h2",{class:"title"},"类型多 平台全",-1)),N=t(()=>a("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),V=t(()=>a("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1)),b=t(()=>a("div",{class:"cover"},[a("img",{src:f,style:{"max-width":"240px"}})],-1)),A=o('

              以前导出的能合并

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

              历史不再断代

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

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

              还有评论和引用

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

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

              * 评论也可以搜索哦

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

              开发

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

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

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

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

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

              ',1);function X(s,G,H,K,W,F){const e=l("P");return v(),n("div",null,[a("div",T,[a("div",w,[a("div",y,[a("div",P,[I,a("div",null,[N,c(e,null,{default:i(()=>[d("PC、Android、iOS 等各种平台")]),_:1}),V])])]),b]),A,a("div",C,[a("div",Q,[a("div",E,[k,a("div",null,[D,c(e,null,{default:i(()=>[d("时间、类型、设备、人物、通话时长等筛选")]),_:1}),B,M])])]),R]),$,a("div",q,[a("div",J,[a("div",L,[O,a("div",null,[Y,c(e,null,{default:i(()=>[d("纯表情回复的数量与对比都有哦!")]),_:1}),j])])]),z]),U])])}const ta=_(u,[["render",X],["__scopeId","data-v-15a3c7fe"]]);export{aa as __pageData,ta as default}; diff --git a/assets/index.md.QWZzrb_V.lean.js b/assets/index.md.QWZzrb_V.lean.js deleted file mode 100644 index 78962106..00000000 --- a/assets/index.md.QWZzrb_V.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_,D as l,c as n,k as a,I as c,w as i,R as o,o as v,a as d,p,q as h}from"./chunks/framework.xvtSDt2M.js";const f="/Shmily/assets/f1.3NEygoYJ.png",r="/Shmily/assets/f2.KmeCDYiN.png",m="/Shmily/assets/f3.BX_mJhSv.png",S="/Shmily/assets/f4.XBUdr08V.png",g="/Shmily/assets/f5.P7gBLjNP.png",x="/Shmily/assets/f6.Q6EQ9VbO.jpg",aa=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":1702192371000}'),u={name:"index.md"},t=s=>(p("data-v-15a3c7fe"),s=s(),h(),s),T={id:"features"},w={class:"row"},y={class:"info"},P={class:"content"},I=t(()=>a("h2",{class:"title"},"类型多 平台全",-1)),N=t(()=>a("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),V=t(()=>a("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1)),b=t(()=>a("div",{class:"cover"},[a("img",{src:f,style:{"max-width":"240px"}})],-1)),A=o("",1),C={class:"row"},Q={class:"info"},E={class:"content"},k=t(()=>a("h2",{class:"title"},"支持搜索和筛选",-1)),D=t(()=>a("p",null,"关键词(支持正则)搜索",-1)),B=t(()=>a("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),M=t(()=>a("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1)),R=t(()=>a("div",{class:"cover"},[a("img",{src:m,style:{"max-width":"600px"}})],-1)),$=o("",1),q={class:"row"},J={class:"info"},L={class:"content"},O=t(()=>a("h2",{class:"title"},"图表与统计",-1)),Y=t(()=>a("p",null,"不想看看各种维度的大数据么?",-1)),j=t(()=>a("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1)),z=t(()=>a("div",{class:"cover"},[a("img",{src:g,style:{"max-width":"600px"}})],-1)),U=o("",1);function X(s,G,H,K,W,F){const e=l("P");return v(),n("div",null,[a("div",T,[a("div",w,[a("div",y,[a("div",P,[I,a("div",null,[N,c(e,null,{default:i(()=>[d("PC、Android、iOS 等各种平台")]),_:1}),V])])]),b]),A,a("div",C,[a("div",Q,[a("div",E,[k,a("div",null,[D,c(e,null,{default:i(()=>[d("时间、类型、设备、人物、通话时长等筛选")]),_:1}),B,M])])]),R]),$,a("div",q,[a("div",J,[a("div",L,[O,a("div",null,[Y,c(e,null,{default:i(()=>[d("纯表情回复的数量与对比都有哦!")]),_:1}),j])])]),z]),U])])}const ta=_(u,[["render",X],["__scopeId","data-v-15a3c7fe"]]);export{aa as __pageData,ta as default}; diff --git a/assets/style.tATcFliF.css b/assets/style.V1o5KWdo.css similarity index 98% rename from assets/style.tATcFliF.css rename to assets/style.V1o5KWdo.css index 93fb5b77..437ee95f 100644 --- a/assets/style.tATcFliF.css +++ b/assets/style.V1o5KWdo.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-15a3c7fe]{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-15a3c7fe]{justify-content:center;display:flex;padding:20px 0;border-bottom:1px solid #aaa}#features .row[data-v-15a3c7fe]:nth-child(2n){flex-direction:row-reverse}#features .row:nth-child(2n) .info[data-v-15a3c7fe]{text-align:right}#features .row[data-v-15a3c7fe]:last-child{border-bottom:none}#features .row .info[data-v-15a3c7fe]{flex:1 1 auto;display:flex;align-items:center}#features .row .info .title[data-v-15a3c7fe]{font-weight:700;font-size:18px}#features .row .info .content[data-v-15a3c7fe]{margin-bottom:20px;width:100%}#features .row .info .content p[data-v-15a3c7fe]{font-size:16px;margin:10px 0}#features .row .info .content .tips[data-v-15a3c7fe]{font-size:12px;color:#333;font-style:italic}#features .row .info .content a[data-v-15a3c7fe]{color:#3451b2;text-decoration:underline;padding:0 5px;font-weight:700;font-style:italic}#features .row .cover[data-v-15a3c7fe]{flex:0 0 auto}#features .row .cover img[data-v-15a3c7fe]{display:inline-block;width:100%}@media (max-width: 960px){#features .row[data-v-15a3c7fe]{flex-direction:column!important}#features .row .info[data-v-15a3c7fe],#features .row .cover[data-v-15a3c7fe]{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-fe240535]{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-fe240535]{justify-content:center;display:flex;padding:20px 0;border-bottom:1px solid #aaa}#features .row[data-v-fe240535]:nth-child(2n){flex-direction:row-reverse}#features .row:nth-child(2n) .info[data-v-fe240535]{text-align:right}#features .row[data-v-fe240535]:last-child{border-bottom:none}#features .row .info[data-v-fe240535]{flex:1 1 auto;display:flex;align-items:center}#features .row .info .title[data-v-fe240535]{font-weight:700;font-size:18px}#features .row .info .content[data-v-fe240535]{margin-bottom:20px;width:100%}#features .row .info .content p[data-v-fe240535]{font-size:16px;margin:10px 0}#features .row .info .content .tips[data-v-fe240535]{font-size:12px;color:#333;font-style:italic}#features .row .info .content a[data-v-fe240535]{color:#3451b2;text-decoration:underline;padding:0 5px;font-weight:700;font-style:italic}#features .row .cover[data-v-fe240535]{flex:0 0 auto}#features .row .cover img[data-v-fe240535]{display:inline-block;width:100%}@media (max-width: 960px){#features .row[data-v-fe240535]{flex-direction:column!important}#features .row .info[data-v-fe240535],#features .row .cover[data-v-fe240535]{text-align:center!important;padding:0!important}} diff --git a/guide/concept.html b/guide/concept.html index bd666467..5e482484 100644 --- a/guide/concept.html +++ b/guide/concept.html @@ -6,20 +6,20 @@ 理念 | Shmily - + - + -
              Skip to content

              理念

              why

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

              
              +    
              Skip to content

              理念

              why

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

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

              在此流程中有很多弊端

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

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

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

              架构

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

              |---------|----------------------- Get -----------------------|------------------------ Show -------------------------|
               |---------|------- ExportDB ------|----------- ToMsg ---------|------- ModifyServer ------|---------- Web ------------|
               
              @@ -29,8 +29,8 @@
                                                             /                        \            /            \
               MobileQQ: 导出数据库 ->              解密资源(图片等)                       数据预处理                 大数据图表
               
              -更多来源...

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

              • Get
                • ExportDB 从设备导出原始数据(库)并解密
                • ToMsg 从解密数据库导出为标准数据 ${Shmily-Msg}, 并解密资源(图片等)
                  • 导出的数据为 json 格式, 并尽可能导出所有数据, 不管用没用,历史不嫌多
              • 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 格式, 并尽可能导出所有数据, 不管用没用,历史不嫌多
              • 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 b1c04b98..23bd9b60 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 字样
              门票公示


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

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

              red-panda

              GPLv3 License.

              - +
              Skip to content

              捐赠

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

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


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

                                          

              请在备注内包含 Shmily 字样
              门票公示


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

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

              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 8320397d..428a38b3 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


              时间姓名金额来源
              2023/09/03 17:12:36*门10Wechat
              2023/11/02 14:56:02**勇15Alipay
              2023/11/18 14:51:42*翔10Alipay
              2023/11/18 17:08:15*畅11.11Alipay
              2023/11/19 01:39:48A*s5Wechat
              2023/11/22 10:17:50*羊5.61Wechat
              2023/11/24 19:18:28*生20Wechat
              2023/12/08 09:51:19**焜50Alipay

              GPLv3 License.

              - +
              Skip to content
              门票公示

              TIP

              请在备注内包含 Shmily 字样

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


              时间姓名金额来源
              2023/09/03 17:12:36*门10Wechat
              2023/11/02 14:56:02**勇15Alipay
              2023/11/18 14:51:42*翔10Alipay
              2023/11/18 17:08:15*畅11.11Alipay
              2023/11/19 01:39:48A*s5Wechat
              2023/11/22 10:17:50*羊5.61Wechat
              2023/11/24 19:18:28*生20Wechat
              2023/12/08 09:51:19**焜50Alipay

              GPLv3 License.

              + \ No newline at end of file diff --git a/guide/other/thanks.html b/guide/other/thanks.html index 72e520de..d5347a12 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 cc16358c..ae537d31 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 fcb4489f..5fb8e2d7 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 bfca09b7..043c777a 100644 --- a/guide/setup-runtime/Android-copy.html +++ b/guide/setup-runtime/Android-copy.html @@ -6,20 +6,20 @@ Android 复制文件到电脑 | Shmily - + - + -
              Skip to content

              Android 复制文件到电脑

              说明

              Android 手机的文件夹大致如下

              - data // 保护区, 需要 root 权限
              +    
              Skip to content

              Android 复制文件到电脑

              说明

              Android 手机的文件夹大致如下

              - data // 保护区, 需要 root 权限
                   - data
                      - com.tencent.mm 
                      - ...
              @@ -31,8 +31,8 @@
                   - tencent
                       - MicroMsg
                       - ...
              -    - ...

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

              🎞️ 视频教程

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

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

              保护区文件

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

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

              GPLv3 License.

              - + - ...

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

              🎞️ 视频教程

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

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

              保护区文件

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

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

              GPLv3 License.

              + \ 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 30c4d371..90004031 100644 --- a/guide/setup-runtime/Q&A-detail/cannot-find-module.html +++ b/guide/setup-runtime/Q&A-detail/cannot-find-module.html @@ -6,20 +6,20 @@ Cannot find module ‘xxxxxx’ | Shmily - + - + -
              Skip to content

              DANGER

              Cannot find module ‘xxxxxx’

              报错详情
              Error: Cannot find module 'fs-extra'
              +    
              Skip to content

              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
              @@ -40,8 +40,8 @@
                 ]
               }
               
              -Node.js v18.14.0
              解决办法

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

              GPLv3 License.

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

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

              GPLv3 License.

              + \ No newline at end of file diff --git a/guide/setup-runtime/Q&A.html b/guide/setup-runtime/Q&A.html index 06c355ff..3c73b6bf 100644 --- a/guide/setup-runtime/Q&A.html +++ b/guide/setup-runtime/Q&A.html @@ -6,20 +6,20 @@ Q & A | Shmily - + - + -
              Skip to content

              Q & A

              如需新增, 请新建 docs/guide/setup-runtime/Q&A-detail/{新问题}.md

              内容参考模板 docs/guide/setup-runtime/Q&A-detail/template.md.tpl

              常见问题

              by @appinn.com F124nk1e

              DANGER

              +
              Skip to content

              Q & A

              如需新增, 请新建 docs/guide/setup-runtime/Q&A-detail/{新问题}.md

              内容参考模板 docs/guide/setup-runtime/Q&A-detail/template.md.tpl

              常见问题

              by @appinn.com F124nk1e

              DANGER

              Cannot find module ‘xxxxxx’

              报错详情 @@ -48,8 +48,8 @@
              解决办法

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

              -

              GPLv3 License.

              - +

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/docker.html b/guide/setup-runtime/docker.html index 5ea0844c..4412dfce 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 42a55f0d..097a978d 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 3fb97387..4f2d566f 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 d2445d24..335f0472 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 295db44e..f438d55d 100644 --- a/guide/setup-runtime/nodejs-dependencies.html +++ b/guide/setup-runtime/nodejs-dependencies.html @@ -6,21 +6,21 @@ 安装 nodejs 项目依赖 | Shmily - + - + -
Skip to content

安装 nodejs 项目依赖

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

从项目下载 (建议)

从项目下载依赖

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

// 解压后项目文件夹结构
+    
Skip to content

安装 nodejs 项目依赖

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

从项目下载 (建议)

从项目下载依赖

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

// 解压后项目文件夹结构
 
 -\
   - node_modules
@@ -28,8 +28,8 @@
     - ...
   - package.json
   - README.md
-  - ...

从本地安装

  • 命令行打开项目目录

    • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd
  • 执行命令安装依赖 npm i

    npm i

    WARNING

    如果安装以来过程中大量报错,特别是有 node-gyp 字样的,建议使用 [从项目下载] 的方式解决

    其他的参考报错提示处理

GPLv3 License.

- + - ...

从本地安装

  • 命令行打开项目目录

    • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd
  • 执行命令安装依赖 npm i

    npm i

    WARNING

    如果安装以来过程中大量报错,特别是有 node-gyp 字样的,建议使用 [从项目下载] 的方式解决

    其他的参考报错提示处理

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/nodejs-start.html b/guide/setup-runtime/nodejs-start.html index aaf23cce..9652f1d9 100644 --- a/guide/setup-runtime/nodejs-start.html +++ b/guide/setup-runtime/nodejs-start.html @@ -6,20 +6,20 @@ 启动 nodejs 程序 | Shmily - + - + -
Skip to content

启动 nodejs 程序

WARNING

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

优先级从高到低

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

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

    json
    {
    +    
    Skip to content

    启动 nodejs 程序

    WARNING

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

    优先级从高到低

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

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

      json
      {
           ...
           "scripts": {
               "dev": "vitepress dev docs",
      @@ -31,8 +31,8 @@
       
       若 `script` 中有多个脚本名称(如上图), 一般来说,`build` 代表生产(正式),`dev` 代表测试
       
      -执行 `npm run build` 即可
    • 若项目 package.json 中没有 script 字段, 则大多数情况下, index.js 为入口文件, 执行:

      shell
          node index.js

    GPLv3 License.

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

    shell
        node index.js

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/nodejs.html b/guide/setup-runtime/nodejs.html index d0610317..09e7de77 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 e0214198..d2f98904 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 5d1eedc7..ce5bef78 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 e4165800..6eb728c4 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 new file mode 100644 index 00000000..ed059aed --- /dev/null +++ b/guide/tools/Github/visit.html @@ -0,0 +1,26 @@ + + + + + + 访问 Github | Shmily + + + + + + + + + + + + + + + +
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 a71de61c..2739e6bf 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 3907c624..a76d6a3f 100644 --- a/guide/use/begin.html +++ b/guide/use/begin.html @@ -6,7 +6,7 @@ 开始吧 | Shmily - + @@ -15,14 +15,14 @@ - + -
Skip to content

开始吧

概述

对于用户来说, 希望一个软件足够简单,打开一个窗口,点击一个按钮, 就可以得到最终的 结果 . 这称为黑盒, 所有的事情都被这个按钮挡住的了,不利于 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 文件夹(如没有则新建)

    // 文件夹结构
    +    
    Skip to content

    开始吧

    概述

    对于用户来说, 希望一个软件足够简单,打开一个窗口,点击一个按钮, 就可以得到最终的 结果 . 这称为黑盒, 所有的事情都被这个按钮挡住的了,不利于 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
      @@ -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 文档

    GPLv3 License.

    - + - 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 文档

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/data.html b/guide/use/data.html index f626a882..2be520fe 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 04954079..bf4a54b5 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 715c9b33..1512fbb1 100644 --- a/guide/use/get.html +++ b/guide/use/get.html @@ -6,20 +6,20 @@ Get | Shmily - + - + -
Skip to content

Get

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

支持列表

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

TIP

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

产物结构

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

// 示例
+    
Skip to content

Get

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

支持列表

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

TIP

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

产物结构

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

// 示例
 
 - dist
     - MobileQQ-lqzh-20230101.json  <--- 数据文件
@@ -35,8 +35,8 @@
       - XXXX.json
  • 数据文件

    Shmily-Msg 格式的 JSON 文件,内容是从数据(库)导出的消息内容。

    给开发者的一些建议
    -   尽量导出消息相关的所有数据而非所需数据, 这样会给其他人带来帮助, 也便于丰富更多信息
     -   尽量补充完整信息, 如 自定义表情, 补充 表情包名称 与 描述, 对于统计来说更准确全面
     
  • 资源文件

    消息相关的静态资源文件,如图片、表情、视频等

    给开发者的一些建议
    -   对于外链的资源,建议能爬下来的资源(如图片)都本地化, 过个几年这些 URL 都打不开了
    -

GPLv3 License.

- +

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/merger.html b/guide/use/merger.html index 78e0b67c..8a1b3f05 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 8cc1114f..5084dc0a 100644 --- a/guide/use/msg/custom.html +++ b/guide/use/msg/custom.html @@ -6,20 +6,20 @@ 自定义 | Shmily - + - + -
Skip to content

自定义

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

  • A: 按以下步骤即可

    简单模式

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

    此方式不利于数据统计

    js
        {
    +    
    Skip to content

    自定义

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

    • A: 按以下步骤即可

      简单模式

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

      此方式不利于数据统计

      js
          {
               // 通用字段都是必填 参考 [标准]
               "source": "SMS",
               "content": "你好,钉钉", // 用于搜索
      @@ -40,8 +40,8 @@
           }
       
           $Dev: {} // 开发中需要用到的数据,Show 生成数据时会被删除
      -}
      1. 标准 格式之外,将数据放入 $source
      2. Shmily-Show 项目 memoryweb/src/components/Msg/source 下新增前端组件用于显示数据
        • 如果您对前端不熟悉,可以在 issue 中提出并提供样本 Msg 我来代劳~

    GPLv3 License.

    - +}
    1. 标准 格式之外,将数据放入 $source
    2. Shmily-Show 项目 memoryweb/src/components/Msg/source 下新增前端组件用于显示数据
      • 如果您对前端不熟悉,可以在 issue 中提出并提供样本 Msg 我来代劳~

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/msg/other/emotion.html b/guide/use/msg/other/emotion.html index a396be38..bcdb9bac 100644 --- a/guide/use/msg/other/emotion.html +++ b/guide/use/msg/other/emotion.html @@ -6,20 +6,20 @@ 表情 | Shmily - + - + -
Skip to content

表情

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

约定

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

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

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

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

js
{
+    
Skip to content

表情

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

约定

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: "我是简单的一个表情,[阿狸过新年-饺子]"
@@ -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 辅助的实现。

GPLv3 License.

- +}

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

新类型

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

表情数据的一些说明

正向导出

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

反向匹配

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

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

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

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/msg/schema.html b/guide/use/msg/schema.html index 6f5405e5..5e41468e 100644 --- a/guide/use/msg/schema.html +++ b/guide/use/msg/schema.html @@ -6,20 +6,20 @@ 数据文件-Msg | Shmily - + - + -
Skip to content

数据文件-Msg

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

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

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

v2.0

json
[{
+    
Skip to content

数据文件-Msg

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

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

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

v2.0

json
[{
 
     ⬇⬇⬇⬇⬇⬇  通用字段 ⬇⬇⬇⬇⬇⬇⬇
 
@@ -115,8 +115,8 @@
     "id": "camera.json_2009-09-25_10-33-02_g_11e351_1",
     // 所有消息合并后, 按时间线排序第几条消息
     "index": 123
-}]

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

GPLv3 License.

- +}]

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

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/msg/template/index.html b/guide/use/msg/template/index.html index 1c3a16fc..9e0111ae 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 c6be24c5..30195f0d 100644 --- a/guide/use/show.html +++ b/guide/use/show.html @@ -6,21 +6,21 @@ Show | Shmily - + - + -
Skip to content

GPLv3 License.

- +
Skip to content

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/what-is.html b/guide/what-is.html index ed56a09b..027a84b5 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 96569d0c..a4a83d5d 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"guide_setup-runtime_android-copy-backup.md":"BeGyi1h8","guide_setup-runtime_q_a-detail_cannot-find-module.md":"KHqO750E","guide_setup-runtime_java.md":"F1kLtu_m","guide_use_draft.md":"5N2U2W95","guide_other_thanks.md":"-lolqK_o","guide_setup-runtime_nodejs-dependencies.md":"yzvurhFh","guide_setup-runtime_nodejs-start.md":"bEHJVbwF","guide_setup-runtime_android-copy-root.md":"gzAUWgPb","guide_setup-runtime_php.md":"83_a4nIU","guide_setup-runtime_python.md":"u1n8ey84","guide_setup-runtime_snippets_open_cmd.md":"FnA55IlU","guide_use_data.md":"TgLVOkHY","guide_setup-runtime_explain.md":"dN5FEw5U","guide_setup-runtime_q_a.md":"obumttRb","guide_use_begin.md":"mtndb5GR","index.md":"QWZzrb_V","guide_setup-runtime_android-copy.md":"dmSWPBfF","guide_other_donation_list.md":"BhpUX07r","guide_tools_wechat_calc-wechat-key.md":"MRcIfc4v","guide_concept.md":"_4o58JZB","guide_use_show.md":"x0WVk5S7","guide_use_merger.md":"akV1s7Le","guide_setup-runtime_github-down-repo.md":"Mo9K82iK","guide_use_msg_schema.md":"Zjq7by3M","guide_other_donation.md":"Xnln2f6x","guide_use_get.md":"IB3eyKnB","guide_setup-runtime_docker.md":"64tmJ242","guide_use_msg_other_emotion.md":"0X9WgT6z","guide_use_msg_custom.md":"Wsm5mYTV","guide_setup-runtime_nodejs.md":"sKn_vrfb","guide_what-is.md":"mXpmV1kq","guide_use_msg_template_index.md":"ScTjHR4c"} +{"guide_setup-runtime_nodejs.md":"bIEot6Ib","guide_setup-runtime_android-copy-backup.md":"0ZweHvZn","guide_setup-runtime_github-down-repo.md":"HblZ_HL9","guide_setup-runtime_q_a.md":"SeNafG9L","guide_setup-runtime_java.md":"-2bWJLpz","guide_setup-runtime_python.md":"zGQ1ss4b","guide_setup-runtime_php.md":"lU3b74NT","guide_setup-runtime_docker.md":"F_tRXq6m","guide_other_donation_list.md":"ZVE6fqkR","guide_tools_github_visit.md":"r8HlJUwP","guide_use_begin.md":"KUHnKCyH","guide_use_msg_schema.md":"k4BTPNY4","guide_setup-runtime_snippets_open_cmd.md":"nGgW5a4q","guide_what-is.md":"Fv3wZk8v","guide_use_show.md":"0AWPkoJE","index.md":"5l8E-Lw-","guide_other_thanks.md":"M7wrP5zY","guide_setup-runtime_nodejs-dependencies.md":"t9B2vBG3","guide_tools_wechat_calc-wechat-key.md":"aROZqAYL","guide_use_data.md":"lp4-RPiZ","guide_use_msg_custom.md":"EjOA-Pyh","guide_use_get.md":"zqXN2hYZ","guide_setup-runtime_nodejs-start.md":"Tuhtuxwq","guide_other_donation.md":"aD6dE-h3","guide_use_merger.md":"pNFOh5DD","guide_setup-runtime_android-copy.md":"XCzMKgqd","guide_setup-runtime_explain.md":"obtaY2Kt","guide_setup-runtime_q_a-detail_cannot-find-module.md":"QjGCMzcn","guide_concept.md":"XKbnx-Es","guide_use_draft.md":"VoaDaMU0","guide_setup-runtime_android-copy-root.md":"tB4ZWOiX","guide_use_msg_other_emotion.md":"px_kIZro","guide_use_msg_template_index.md":"H_hTVmGI"} diff --git a/index.html b/index.html index a081c7dd..8f1a5ac8 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)合并
在同一时间线查看

支持搜索和筛选

关键词(支持正则)搜索

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

* 极致优化,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)合并
在同一时间线查看

支持搜索和筛选

关键词(支持正则)搜索

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

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

还有评论和引用

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

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

* 评论也可以搜索哦

图表与统计

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

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

开发

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

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

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

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

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

GPLv3 License.

+ \ No newline at end of file