commit b90af147161c5b11a0b13135d57cdd3f88dbf151 Author: amtoaer Date: Thu Mar 26 12:40:12 2026 +0000 部署来自 main 的最新文档变更: 55dde84f96c03d98315ea2196adf9fbc192863e3 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..4859744 --- /dev/null +++ b/404.html @@ -0,0 +1,23 @@ + + + + + + 404 | bili-sync + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..af6a5a6 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +bili-sync.amto.cc diff --git a/args.html b/args.html new file mode 100644 index 0000000..9473bf4 --- /dev/null +++ b/args.html @@ -0,0 +1,36 @@ + + + + + + 命令行参数 | bili-sync + + + + + + + + + + + + + + + +
Skip to content

命令行参数

程序支持有限的命令行参数,可以通过执行 bili-sync-rs --help 查看说明。

shell
bili-sync/target/debug main*
+ ./bili-sync-rs --help
+ Rust & Tokio 驱动的哔哩哔哩同步工具
+
+Usage: bili-sync-rs [OPTIONS]
+
+Options:
+  -s, --scan-only              [env: SCAN_ONLY=]
+  -l, --log-level <LOG_LEVEL>  [env: RUST_LOG=] [default: None,bili_sync=info]
+  -h, --help                   Print help
+  -V, --version                Print version

可以看到除版本和帮助信息外,程序仅支持两个参数,参数除可以通过命令行设置外,还可通过环境变量设置。

--scan-only

--scan-only 参数用于仅扫描列表,而不实际执行下载操作。该参数的主要目的是方便用户从 v1 迁移,新用户不需要关注。

--log-level

--log-level 参数用于设置日志级别,一般可以维持默认。该参数与 Rust 程序中 RUST_LOG 的语义相同,可以查看相关文档获取详细信息。

+ + + + \ No newline at end of file diff --git a/assets/app.2qaO5HJc.js b/assets/app.2qaO5HJc.js new file mode 100644 index 0000000..3ecfacb --- /dev/null +++ b/assets/app.2qaO5HJc.js @@ -0,0 +1 @@ +import{U as o,a4 as p,a5 as u,a6 as l,a7 as c,a8 as f,a9 as d,aa as m,ab as h,ac as g,ad as A,d as P,u as v,y,x as w,ae as C,af as R,ag as b,ah as E}from"./chunks/framework.Bsyxd66g.js";import{R as S}from"./chunks/theme.BbeQe9Cr.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),R(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function _(){globalThis.__VITEPRESS__=!0;const e=D(),a=x();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function x(){return h(T)}function D(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&_().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{_ as createApp}; diff --git a/assets/args.md.Doc_9Vk9.js b/assets/args.md.Doc_9Vk9.js new file mode 100644 index 0000000..9654a43 --- /dev/null +++ b/assets/args.md.Doc_9Vk9.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.Bsyxd66g.js";const g=JSON.parse('{"title":"命令行参数","description":"","frontmatter":{},"headers":[],"relativePath":"args.md","filePath":"args.md","lastUpdated":1774528781000}'),l={name:"args.md"},e=n(`

命令行参数

程序支持有限的命令行参数,可以通过执行 bili-sync-rs --help 查看说明。

shell
bili-sync/target/debug main*
+ ./bili-sync-rs --help
+ Rust & Tokio 驱动的哔哩哔哩同步工具
+
+Usage: bili-sync-rs [OPTIONS]
+
+Options:
+  -s, --scan-only              [env: SCAN_ONLY=]
+  -l, --log-level <LOG_LEVEL>  [env: RUST_LOG=] [default: None,bili_sync=info]
+  -h, --help                   Print help
+  -V, --version                Print version

可以看到除版本和帮助信息外,程序仅支持两个参数,参数除可以通过命令行设置外,还可通过环境变量设置。

--scan-only

--scan-only 参数用于仅扫描列表,而不实际执行下载操作。该参数的主要目的是方便用户从 v1 迁移,新用户不需要关注。

--log-level

--log-level 参数用于设置日志级别,一般可以维持默认。该参数与 Rust 程序中 RUST_LOG 的语义相同,可以查看相关文档获取详细信息。

`,8),t=[e];function h(p,k,r,d,o,F){return a(),i("div",null,t)}const y=s(l,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/args.md.Doc_9Vk9.lean.js b/assets/args.md.Doc_9Vk9.lean.js new file mode 100644 index 0000000..3bbfb0c --- /dev/null +++ b/assets/args.md.Doc_9Vk9.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.Bsyxd66g.js";const g=JSON.parse('{"title":"命令行参数","description":"","frontmatter":{},"headers":[],"relativePath":"args.md","filePath":"args.md","lastUpdated":1774528781000}'),l={name:"args.md"},e=n("",8),t=[e];function h(p,k,r,d,o,F){return a(),i("div",null,t)}const y=s(l,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/bili_collection.DiWdQ_1C.webp b/assets/bili_collection.DiWdQ_1C.webp new file mode 100644 index 0000000..55af776 Binary files /dev/null and b/assets/bili_collection.DiWdQ_1C.webp differ diff --git a/assets/bili_video.AE-Vm7po.webp b/assets/bili_video.AE-Vm7po.webp new file mode 100644 index 0000000..b3dd381 Binary files /dev/null and b/assets/bili_video.AE-Vm7po.webp differ diff --git a/assets/chunks/@localSearchIndexroot.C1Kwf251.js b/assets/chunks/@localSearchIndexroot.C1Kwf251.js new file mode 100644 index 0000000..4891092 --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.C1Kwf251.js @@ -0,0 +1 @@ +const t='{"documentCount":74,"nextId":74,"documentIds":{"0":"/args#命令行参数","1":"/args#scan-only","2":"/args#log-level","3":"/collection#获取合集-列表信息","4":"/collection#配置形式与区分方法","5":"/collection#视频合集","6":"/collection#视频列表","7":"/configuration#配置说明","8":"/configuration#基本设置","9":"/configuration#绑定地址","10":"/configuration#同步间隔-秒","11":"/configuration#视频名称模板、分页名称模板","12":"/configuration#up-主头像保存路径","13":"/configuration#时间格式","14":"/configuration#后端-api-认证-token","15":"/configuration#启动-cdn-排序","16":"/configuration#b-站认证","17":"/configuration#视频质量","18":"/configuration#视频编码格式偏好","19":"/configuration#弹幕渲染","20":"/configuration#弹幕持续时间-秒","21":"/configuration#字体","22":"/configuration#字体大小","23":"/configuration#宽度比例","24":"/configuration#水平间距","25":"/configuration#轨道大小","26":"/configuration#滚动弹幕高度百分比","27":"/configuration#底部弹幕高度百分比","28":"/configuration#透明度-0-255","29":"/configuration#描边宽度","30":"/configuration#时间偏移-秒","31":"/configuration#粗体显示","32":"/configuration#高级设置","33":"/configuration#视频并发数、分页并发数","34":"/configuration#nfo-时间类型","35":"/configuration#请求频率限制","36":"/configuration#单文件分块下载","37":"/configuration#下载分块数","38":"/configuration#启动分块下载的文件大小阈值-字节","39":"/design#工作原理","40":"/design#b-站的视频结构","41":"/design#与-emby-媒体库的对应关系","42":"/design#单-page-的-video","43":"/design#多-page-的-video","44":"/design#数据库设计","45":"/design#video-source-表","46":"/design#video-表","47":"/design#page-表","48":"/design#执行过程","49":"/design#初始化","50":"/design#扫描-video-source-获取新视频","51":"/design#填充-video-详情","52":"/design#下载未处理的视频","53":"/favorite#获取收藏夹信息","54":"/frontend#管理页","55":"/introduction#bili-sync-是什么","56":"/introduction#使用截图","57":"/introduction#概览","58":"/introduction#详情","59":"/introduction#播放-使用-infuse","60":"/introduction#文件排布","61":"/introduction#功能与路线图","62":"/question#常见问题","63":"/question#各种文件找不到问题-如运行后找不到初始-data-sqlite、提示成功下载但看不到视频文件等。","64":"/question#下载视频出现-permission-denied、operation-not-permitted-等错误。","65":"/question#下载某个视频连续多次出现-error-decoding-response-body-错误","66":"/question#有些视频已经达到了最大重试次数还没有成功-我可以手动重试吗","67":"/quick-start#快速开始","68":"/quick-start#程序获取","69":"/quick-start#其一-下载平台二进制文件运行","70":"/quick-start#其二-使用-docker-compose-运行","71":"/quick-start#进行必要配置","72":"/quick-start#添加视频源订阅","73":"/submission#获取用户投稿信息"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,46],"1":[3,1,9],"2":[3,1,12],"3":[2,1,12],"4":[1,2,20],"5":[1,3,9],"6":[1,3,9],"7":[1,1,1],"8":[1,1,1],"9":[1,2,13],"10":[3,2,3],"11":[2,2,83],"12":[2,2,13],"13":[1,2,12],"14":[4,2,11],"15":[3,2,40],"16":[2,1,10],"17":[1,1,3],"18":[1,2,38],"19":[1,1,4],"20":[3,2,3],"21":[1,2,2],"22":[1,2,2],"23":[1,2,3],"24":[1,2,2],"25":[1,2,5],"26":[1,2,2],"27":[1,2,2],"28":[4,2,6],"29":[1,2,2],"30":[3,2,8],"31":[1,2,2],"32":[1,1,10],"33":[2,2,21],"34":[2,2,7],"35":[1,2,25],"36":[1,2,6],"37":[1,3,4],"38":[3,3,10],"39":[1,1,6],"40":[2,1,47],"41":[3,1,32],"42":[4,4,1],"43":[4,4,1],"44":[1,1,13],"45":[3,2,15],"46":[2,2,29],"47":[2,2,13],"48":[1,1,1],"49":[1,2,6],"50":[4,2,36],"51":[3,2,24],"52":[1,2,44],"53":[1,1,11],"54":[1,1,12],"55":[4,1,26],"56":[1,4,5],"57":[1,4,1],"58":[1,4,1],"59":[4,4,1],"60":[1,4,1],"61":[1,4,43],"62":[1,1,1],"63":[6,1,12],"64":[8,1,14],"65":[6,1,19],"66":[3,1,10],"67":[1,1,10],"68":[1,1,11],"69":[2,2,18],"70":[5,2,111],"71":[1,1,103],"72":[1,1,28],"73":[1,1,9]},"averageFieldLength":[2,1.8918918918918919,16.027027027027028],"storedFields":{"0":{"title":"命令行参数","titles":[]},"1":{"title":"--scan-only","titles":["命令行参数"]},"2":{"title":"--log-level","titles":["命令行参数"]},"3":{"title":"获取合集/列表信息","titles":[]},"4":{"title":"配置形式与区分方法","titles":["获取合集/列表信息"]},"5":{"title":"视频合集","titles":["获取合集/列表信息","配置形式与区分方法"]},"6":{"title":"视频列表","titles":["获取合集/列表信息","配置形式与区分方法"]},"7":{"title":"配置说明","titles":[]},"8":{"title":"基本设置","titles":["配置说明"]},"9":{"title":"绑定地址","titles":["配置说明","基本设置"]},"10":{"title":"同步间隔(秒)","titles":["配置说明","基本设置"]},"11":{"title":"视频名称模板、分页名称模板","titles":["配置说明","基本设置"]},"12":{"title":"UP 主头像保存路径","titles":["配置说明","基本设置"]},"13":{"title":"时间格式","titles":["配置说明","基本设置"]},"14":{"title":"后端 API 认证 Token","titles":["配置说明","基本设置"]},"15":{"title":"启动 CDN 排序","titles":["配置说明","基本设置"]},"16":{"title":"B 站认证","titles":["配置说明"]},"17":{"title":"视频质量","titles":["配置说明"]},"18":{"title":"视频编码格式偏好","titles":["配置说明","视频质量"]},"19":{"title":"弹幕渲染","titles":["配置说明"]},"20":{"title":"弹幕持续时间(秒)","titles":["配置说明","弹幕渲染"]},"21":{"title":"字体","titles":["配置说明","弹幕渲染"]},"22":{"title":"字体大小","titles":["配置说明","弹幕渲染"]},"23":{"title":"宽度比例","titles":["配置说明","弹幕渲染"]},"24":{"title":"水平间距","titles":["配置说明","弹幕渲染"]},"25":{"title":"轨道大小","titles":["配置说明","弹幕渲染"]},"26":{"title":"滚动弹幕高度百分比","titles":["配置说明","弹幕渲染"]},"27":{"title":"底部弹幕高度百分比","titles":["配置说明","弹幕渲染"]},"28":{"title":"透明度(0-255)","titles":["配置说明","弹幕渲染"]},"29":{"title":"描边宽度","titles":["配置说明","弹幕渲染"]},"30":{"title":"时间偏移(秒)","titles":["配置说明","弹幕渲染"]},"31":{"title":"粗体显示","titles":["配置说明","弹幕渲染"]},"32":{"title":"高级设置","titles":["配置说明"]},"33":{"title":"视频并发数、分页并发数","titles":["配置说明","高级设置"]},"34":{"title":"NFO 时间类型","titles":["配置说明","高级设置"]},"35":{"title":"请求频率限制","titles":["配置说明","高级设置"]},"36":{"title":"单文件分块下载","titles":["配置说明","高级设置"]},"37":{"title":"下载分块数","titles":["配置说明","高级设置","单文件分块下载"]},"38":{"title":"启动分块下载的文件大小阈值(字节)","titles":["配置说明","高级设置","单文件分块下载"]},"39":{"title":"工作原理","titles":[]},"40":{"title":"b 站的视频结构","titles":["工作原理"]},"41":{"title":"与 EMBY 媒体库的对应关系","titles":["工作原理"]},"42":{"title":"单 page 的 video","titles":["工作原理","与 EMBY 媒体库的对应关系"]},"43":{"title":"多 page 的 video","titles":["工作原理","与 EMBY 媒体库的对应关系"]},"44":{"title":"数据库设计","titles":["工作原理"]},"45":{"title":"video source 表","titles":["工作原理","数据库设计"]},"46":{"title":"video 表","titles":["工作原理","数据库设计"]},"47":{"title":"page 表","titles":["工作原理","数据库设计"]},"48":{"title":"执行过程","titles":["工作原理"]},"49":{"title":"初始化","titles":["工作原理","执行过程"]},"50":{"title":"扫描 video source 获取新视频","titles":["工作原理","执行过程"]},"51":{"title":"填充 video 详情","titles":["工作原理","执行过程"]},"52":{"title":"下载未处理的视频","titles":["工作原理","执行过程"]},"53":{"title":"获取收藏夹信息","titles":[]},"54":{"title":"管理页","titles":[]},"55":{"title":"bili-sync 是什么?","titles":[]},"56":{"title":"使用截图","titles":["bili-sync 是什么?"]},"57":{"title":"概览","titles":["bili-sync 是什么?","使用截图"]},"58":{"title":"详情","titles":["bili-sync 是什么?","使用截图"]},"59":{"title":"播放(使用 infuse)","titles":["bili-sync 是什么?","使用截图"]},"60":{"title":"文件排布","titles":["bili-sync 是什么?","使用截图"]},"61":{"title":"功能与路线图","titles":["bili-sync 是什么?"]},"62":{"title":"常见问题","titles":[]},"63":{"title":"各种文件找不到问题,如运行后找不到初始 data.sqlite、提示成功下载但看不到视频文件等。","titles":["常见问题"]},"64":{"title":"下载视频出现 Permission denied、Operation not permitted 等错误。","titles":["常见问题"]},"65":{"title":"下载某个视频连续多次出现 error decoding response body 错误","titles":["常见问题"]},"66":{"title":"有些视频已经达到了最大重试次数还没有成功,我可以手动重试吗?","titles":["常见问题"]},"67":{"title":"快速开始","titles":[]},"68":{"title":"程序获取","titles":["快速开始"]},"69":{"title":"其一:下载平台二进制文件运行","titles":["快速开始","程序获取"]},"70":{"title":"其二:使用 Docker Compose 运行","titles":["快速开始","程序获取"]},"71":{"title":"进行必要配置","titles":["快速开始"]},"72":{"title":"添加视频源订阅","titles":["快速开始"]},"73":{"title":"获取用户投稿信息","titles":[]}},"dirtCount":0,"index":[["刷新并下载启用的视频源",{"2":{"72":1}}],["决定",{"2":{"72":1}}],["添加完订阅就无需进行任何干预了",{"2":{"72":1}}],["添加视频源订阅",{"0":{"72":1}}],["页手动添加并管理",{"2":{"72":1}}],["页号",{"2":{"11":1}}],["也可以在",{"2":{"72":1}}],["也因此播放普遍流畅",{"2":{"18":1}}],["关注的合集与",{"2":{"72":1}}],["部分查看自己创建的收藏夹",{"2":{"72":1}}],["快捷订阅",{"2":{"72":1}}],["快速开始",{"0":{"67":1},"1":{"68":1,"69":1,"70":1,"71":1,"72":1}}],["建议将配置文件一次修改完毕后再点击保存",{"2":{"71":1}}],["建议查阅自己常用播放设备对这三种编码的硬件解码支持情况以选择合适的编码格式",{"2":{"18":1}}],["除绑定地址外的选项基本都会实时生效",{"2":{"71":1}}],["除支持",{"2":{"11":1}}],["点击认证",{"2":{"71":1}}],["点开你想要订阅的视频合集",{"2":{"4":1}}],["输入日志中打印的",{"2":{"71":1}}],["切换到设置页",{"2":{"71":1}}],["切换到你想要获取的收藏夹",{"2":{"53":1}}],["环境中",{"2":{"71":1}}],["开始运行管理页",{"2":{"71":1}}],["登录",{"2":{"71":1}}],["生成",{"2":{"71":1}}],["50",{"2":{"71":1}}],["521722088",{"2":{"5":1,"6":1}}],["项目地址",{"2":{"71":1}}],["欢迎使用",{"2":{"71":1}}],["应该可以在日志中看到",{"2":{"71":1}}],["进行必要配置",{"0":{"71":1}}],["执行",{"2":{"70":1}}],["执行过程",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1}}],["例如",{"2":{"70":1}}],["目录",{"2":{"70":1}}],["目前还不清楚原因",{"2":{"65":1}}],["目前",{"2":{"3":1}}],["保持一致即可",{"2":{"70":1}}],["只需要确保目标目录与",{"2":{"70":1}}],["右边的目标目录不固定",{"2":{"70":1}}],["正确挂载才能在",{"2":{"70":1}}],["正如上文所述",{"2":{"51":1}}],["你希望存储程序配置的目录",{"2":{"70":1}}],["变更服务运行的端口",{"2":{"70":1}}],["变成与电视剧同级的电影",{"2":{"41":1}}],["服务",{"2":{"70":1}}],["服务商",{"2":{"15":1}}],["`user`",{"2":{"70":1}}],["`",{"2":{"70":1}}],["`id",{"2":{"70":1}}],["`$uid",{"2":{"70":1}}],["github",{"2":{"71":1}}],["gid",{"2":{"70":2}}],["gt",{"2":{"15":1,"30":1}}],["及",{"2":{"70":2}}],["否则会导致日志不显示",{"2":{"70":1}}],["否则日志中可能会出现乱码",{"2":{"70":1}}],["否则可能导致多页视频无法正常显示",{"2":{"56":1}}],["最好直接指明版本号",{"2":{"70":1}}],["最显著的控制",{"2":{"35":1}}],["yamlservices",{"2":{"70":1}}],["运行程序",{"2":{"71":1}}],["运行",{"0":{"70":1},"2":{"70":2}}],["直接查看网址栏中的数字或页面中的个人信息即可",{"2":{"73":1}}],["直接双击执行",{"2":{"69":1}}],["直到发现第一个小于等于",{"2":{"50":1}}],["直到漏桶中有空间为止",{"2":{"35":1}}],["解压后会获取一个名为",{"2":{"69":1}}],["命令访问",{"2":{"69":1}}],["命令行参数",{"0":{"0":1},"1":{"1":1,"2":1}}],["已被正确安装且位于",{"2":{"69":1}}],["且内嵌",{"2":{"67":1}}],["编写",{"2":{"67":1}}],["编辑状态",{"2":{"66":1}}],["重置",{"2":{"66":1}}],["尽管如此",{"2":{"65":1}}],["允许其无限重试",{"2":{"65":1}}],["版本引入了一个改动",{"2":{"65":1}}],["版本开始",{"2":{"54":1,"71":1}}],["错误",{"0":{"65":1}}],["错误码则说明视频无法被正常访问",{"2":{"51":1}}],["无权写入宿主机上的原始路径",{"2":{"64":1}}],["无需干预自动识别",{"2":{"55":1}}],["导致执行出错",{"2":{"64":1}}],["非必需设置项",{"2":{"70":1}}],["非",{"2":{"64":2}}],["容器运行时指定了",{"2":{"64":1}}],["容器挂载是把宿主机的",{"2":{"63":1}}],["有不清楚的地方可以先继续往下看",{"2":{"70":1}}],["有些视频已经达到了最大重试次数还没有成功",{"0":{"66":1}}],["有两种可能的原因",{"2":{"64":1}}],["有关",{"2":{"63":1}}],["有更好的压缩率",{"2":{"18":1}}],["写入的目录只能是",{"2":{"63":1}}],["能够读取",{"2":{"63":1}}],["挂载到容器内的",{"2":{"63":1}}],["提示成功下载但看不到视频文件等",{"0":{"63":1}}],["提供多平台的二进制可执行文件",{"2":{"61":1}}],["各种文件找不到问题",{"0":{"63":1}}],["常见问题",{"0":{"62":1},"1":{"63":1,"64":1,"65":1,"66":1}}],["查看并管理视频",{"2":{"61":1}}],["查看说明",{"2":{"0":1}}],["内视频的自动扫描与下载",{"2":{"61":1}}],["内再并发处理多个",{"2":{"33":1}}],["镜像",{"2":{"61":1,"68":1}}],["平台提供了立即可用的",{"2":{"61":1}}],["打印日志",{"2":{"61":1}}],["避免对同个视频的多次请求",{"2":{"61":1}}],["避免潜在的冲突",{"2":{"16":1}}],["失败次数过多自动丢弃",{"2":{"61":1}}],["方便一键作为媒体库导入",{"2":{"61":1}}],["方便起见",{"2":{"41":1}}],["合并",{"2":{"61":1}}],["合集",{"2":{"5":2,"72":1}}],["功能与路线图",{"0":{"61":1}}],["info",{"2":{"71":5}}],["infuse",{"0":{"59":1}}],["image",{"2":{"70":1}}],["id",{"2":{"4":1,"5":2,"6":2,"11":2,"46":3,"53":1,"73":1}}],["播放",{"0":{"59":1}}],["概览",{"0":{"57":1}}],["使用该",{"2":{"70":1}}],["使用数据库保存媒体信息",{"2":{"61":1}}],["使用媒体服务器支持的文件命名",{"2":{"61":1}}],["使用用户填写的凭据认证",{"2":{"61":1}}],["使用",{"0":{"59":1,"70":1},"2":{"61":1}}],["使用截图",{"0":{"56":1},"1":{"57":1,"58":1,"59":1,"60":1}}],["使用漏桶算法实现",{"2":{"35":1}}],["使得目的文件夹可以直接被作为媒体库添加到这些软件中",{"2":{"55":1}}],["维持本地视频库与哔哩哔哩网站的同步",{"2":{"55":1}}],["它的基本的工作原理是使用用户填写的凭据定期扫描视频合集",{"2":{"55":1}}],["6",{"2":{"54":1,"71":1}}],["自动运行一次",{"2":{"72":1}}],["自动选择用户设置范围内最优的视频和音频流",{"2":{"61":1}}],["自",{"2":{"54":1,"71":1}}],["自建",{"2":{"15":1}}],["管理页进行",{"2":{"54":1}}],["管理页",{"0":{"54":1}}],["face",{"2":{"70":1}}],["favorite",{"2":{"45":1,"46":1}}],["fav",{"2":{"11":3,"13":1}}],["ffmpeg",{"2":{"61":1,"69":2}}],["fid",{"2":{"53":1}}],["地址栏中的",{"2":{"53":1}}],["然后查看",{"2":{"53":1}}],["以此来决定是否需要下载",{"2":{"52":1}}],["以支持在同个媒体库中同时显示电视剧与电影",{"2":{"41":1}}],["个任务同时下载",{"2":{"52":2}}],["个字符",{"2":{"11":1}}],["3",{"2":{"52":1}}],["387214",{"2":{"6":1}}],["层级最多允许",{"2":{"52":2}}],["成功填充详细信息",{"2":{"52":1}}],["成功后可通过",{"2":{"9":1}}],["未完全下载",{"2":{"52":1}}],["信息",{"2":{"52":1}}],["数据库文件存储于",{"2":{"71":1}}],["数据库初始化完成",{"2":{"71":1}}],["数据库中的",{"2":{"52":1}}],["数据库中已经包含了所有需要的",{"2":{"52":1}}],["数据库设计",{"0":{"44":1},"1":{"45":1,"46":1,"47":1}}],["经过上面处理后",{"2":{"52":1}}],["逐个获取",{"2":{"51":1}}],["详情",{"0":{"51":1,"58":1},"2":{"51":1}}],["填充",{"0":{"51":1}}],["更新为最新的视频时间",{"2":{"50":1}}],["拉取过程会逐页请求",{"2":{"50":1}}],["投稿按照投稿时间",{"2":{"50":1}}],["确保新视频位于前面",{"2":{"50":1}}],["列",{"2":{"50":1}}],["列表通常是不包含详细信息的",{"2":{"51":1}}],["列表通常是分页且不包含详细信息的",{"2":{"50":1}}],["列表",{"2":{"6":2,"72":1}}],["列表信息",{"0":{"3":1},"1":{"4":1,"5":1,"6":1}}],["具体到",{"2":{"50":1}}],["具体来说",{"2":{"46":1}}],["通过",{"2":{"50":1,"51":1}}],["扫描",{"0":{"50":1}}],["初始化日志等操作",{"2":{"49":1}}],["初始化",{"0":{"49":1}}],["类似但更简单",{"2":{"47":1}}],["类型为",{"2":{"5":1,"6":1}}],["就可以保证在同一个",{"2":{"46":1}}],["绑在一起建立唯一索引",{"2":{"46":1}}],["绑定地址",{"0":{"9":1}}],["接着打开",{"2":{"71":1}}],["接着在",{"2":{"70":1}}],["接着将",{"2":{"50":1}}],["接着将文件分成若干个大小相同的块",{"2":{"36":1}}],["接下来可以挂载一系列用于保存视频的目录",{"2":{"70":1}}],["接下来只需要筛选其中",{"2":{"52":1}}],["接下来将这些键与",{"2":{"46":1}}],["等错误",{"0":{"64":1}}],["等待下一轮执行",{"2":{"61":1}}],["等待下次扫描时重试",{"2":{"52":1}}],["等媒体服务器软件兼容的文件布局",{"2":{"55":1}}],["等",{"2":{"46":1,"51":1,"52":1}}],["指向的位置是",{"2":{"71":1}}],["指向",{"2":{"46":1}}],["每一种",{"2":{"46":1}}],["每个分页都有一个唯一的",{"2":{"40":1}}],["每个视频都有唯一的",{"2":{"40":1}}],["每个执行的任务内部都会发起若干",{"2":{"35":1}}],["每个",{"2":{"33":1,"50":1}}],["标签与简介信息等",{"2":{"55":1}}],["标签等",{"2":{"46":1}}],["标题",{"2":{"11":1,"46":1,"47":1}}],["封面等",{"2":{"47":1}}],["封面",{"2":{"46":1,"52":1,"55":1}}],["并且打包了",{"2":{"68":1}}],["并为各个平台提供了预编译的二进制文件",{"2":{"67":1}}],["并在有必要时自动刷新",{"2":{"71":1}}],["并在请求出现风控时自动终止",{"2":{"61":1}}],["并在下载完成后使用",{"2":{"61":1}}],["并在必要时自动刷新",{"2":{"61":1}}],["并发下载即可",{"2":{"52":1}}],["并填充到数据库中",{"2":{"51":1}}],["并不是一个具体的结构",{"2":{"45":1}}],["并包含了一个或多个分页",{"2":{"40":1}}],["从上面的介绍可以看出",{"2":{"45":1}}],["表仅包含了与",{"2":{"47":1}}],["表中的",{"2":{"46":1}}],["表中有一个对应的列",{"2":{"46":1}}],["表还包含了与",{"2":{"46":1}}],["表包含了",{"2":{"46":1,"47":1}}],["表",{"0":{"45":1,"46":1,"47":1}}],["表示当单个文件大小超过多少字节时",{"2":{"38":1}}],["表示单个文件分成多少个小块",{"2":{"37":1}}],["表示在视频",{"2":{"34":1}}],["表示调用程序管理",{"2":{"14":1}}],["表示视频会根据",{"2":{"11":1}}],["表示截取",{"2":{"11":1}}],["表示程序每次执行扫描下载的间隔时间",{"2":{"10":1}}],["引用的情况",{"2":{"44":1}}],["被多个",{"2":{"44":1}}],["那数据库表就很容易设计了",{"2":{"44":1}}],["那么视频会被标记为下载失败",{"2":{"52":1}}],["那么推荐将",{"2":{"18":1}}],["那么可以将其优先级调高",{"2":{"18":1}}],["那么程序不再使用默认顺序",{"2":{"15":1}}],["既然拥有着明显的层级关系",{"2":{"44":1}}],["多",{"0":{"43":1}}],["多页视频是由多个",{"2":{"40":1}}],["多页视频",{"2":{"11":1}}],["混合内容",{"2":{"41":1,"56":1}}],["展开到第二层级",{"2":{"41":1}}],["时",{"2":{"41":1}}],["时间间隔",{"2":{"35":1}}],["时间类型",{"0":{"34":1}}],["时间轴偏移",{"2":{"30":1}}],["时间偏移",{"0":{"30":1}}],["时间格式",{"0":{"13":1}}],["当前程序版本",{"2":{"71":1}}],["当前轮次下载失败会在下一轮下载时重试",{"2":{"61":1}}],["当前最新程序版本为",{"2":{"55":1}}],["当",{"2":{"41":1}}],["特别的",{"2":{"41":1,"71":1}}],["第一季的所有分集",{"2":{"41":1}}],["我们便可以随时添加视频源订阅",{"2":{"72":1}}],["我们需要先对",{"2":{"40":1}}],["我可以手动重试吗",{"0":{"66":1}}],["我过去下载失败的某个视频使用这个策略在多次尝试后成功了",{"2":{"65":1}}],["我选择将其特化实现为多张表",{"2":{"45":1}}],["我采用了如下的对应关系",{"2":{"41":1}}],["电视剧",{"2":{"41":2}}],["电影",{"2":{"41":1}}],["媒体库类型请选择",{"2":{"56":1}}],["媒体库",{"2":{"41":1}}],["媒体库的对应关系",{"0":{"41":1},"1":{"42":1,"43":1}}],["媒体服务器的用户",{"2":{"12":1}}],["组成的",{"2":{"40":2}}],["结合上面对",{"2":{"40":1}}],["上图是视频合集",{"2":{"40":1}}],["一个非常容易混淆的点是视频合集",{"2":{"40":1}}],["一般仅需修改",{"2":{"71":1}}],["一般风控发生时接下来的所有请求都会失败",{"2":{"52":1}}],["一般来说",{"2":{"32":1}}],["一般情况下",{"2":{"15":1}}],["一般可以维持默认",{"2":{"2":1}}],["不设置默认为",{"2":{"70":1}}],["不推荐使用",{"2":{"70":1}}],["不需要",{"2":{"67":1}}],["不将此错误计入错误次数",{"2":{"65":1}}],["不难看出这三者有着很明显的层级关系",{"2":{"40":1}}],["不再需要手动管理",{"2":{"16":1}}],["不再需要手动查看接口",{"2":{"4":1}}],["音频",{"2":{"40":1}}],["音频流提供一个",{"2":{"15":1}}],["描述",{"2":{"46":1}}],["描述和标签信息",{"2":{"40":1}}],["描边宽度",{"0":{"29":1}}],["包含在",{"2":{"52":1}}],["包含的",{"2":{"51":1}}],["包含若干",{"2":{"40":2}}],["包含了封面",{"2":{"40":2}}],["包裹的模板变量会被动态替换为对应的内容",{"2":{"11":1}}],["稍后再看这类结构统称为",{"2":{"40":1}}],["稍后再看",{"2":{"40":1,"45":1,"61":1}}],["收藏夹等",{"2":{"55":1}}],["收藏夹的",{"2":{"53":1}}],["收藏夹按收藏时间",{"2":{"50":1}}],["收藏夹",{"2":{"40":1,"45":1,"72":1}}],["简单来说",{"2":{"40":1}}],["让用户了解程序的整体执行过程",{"2":{"39":1}}],["本节会尽可能简单明了地介绍",{"2":{"39":1}}],["工作原理",{"0":{"39":1},"1":{"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["因此部署较为简单",{"2":{"67":1}}],["因此配置文件内填写的路径只能与",{"2":{"63":1}}],["因此程序检测到风控时不会认为是某个视频下载失败",{"2":{"52":1}}],["因此程序对其的处理方式也有着相当大的不同",{"2":{"40":1}}],["因此需要额外的请求来填充这些信息",{"2":{"51":1}}],["因此",{"2":{"41":1}}],["因此使用该阈值决定下载策略",{"2":{"38":1}}],["因此目前请求频率限制仅作用于主站的各类请求",{"2":{"35":1}}],["才会启动分块下载",{"2":{"38":1}}],["才能正常访问管理页面",{"2":{"14":1}}],["才能够正常在媒体服务器中显示",{"2":{"12":1}}],["字段会记录这些部分的失败次数",{"2":{"52":1}}],["字段用于标记",{"2":{"52":1}}],["字节",{"0":{"38":1}}],["字体大小",{"0":{"22":1}}],["字体",{"0":{"21":1}}],["404",{"2":{"51":1}}],["4",{"2":{"37":1,"65":1}}],["默认值为",{"2":{"37":1,"38":1}}],["下一次视频下载任务就会开始重试",{"2":{"66":1}}],["下一步会填充",{"2":{"51":1}}],["下载平台二进制文件运行",{"0":{"69":1}}],["下载某个视频连续多次出现",{"0":{"65":1}}],["下载视频出现",{"0":{"64":1}}],["下载的内容包括视频",{"2":{"55":1}}],["下载未处理的视频",{"0":{"52":1}}],["下载分块数",{"0":{"37":1}}],["下图是多页视频",{"2":{"40":1}}],["下为",{"2":{"11":2}}],["图片下载过程不做限制",{"2":{"35":1}}],["获取也很简单",{"2":{"73":1}}],["获取用户投稿信息",{"0":{"73":1}}],["获取",{"2":{"70":1}}],["获取到本地未下载过的内容并保存到本地",{"2":{"55":1}}],["获取到的",{"2":{"50":1,"51":1}}],["获取非常简单",{"2":{"53":1}}],["获取收藏夹信息",{"0":{"53":1}}],["获取其中包含的",{"2":{"50":1}}],["获取新视频",{"0":{"50":1}}],["获取流下载地址等",{"2":{"35":1}}],["获取合集",{"0":{"3":1},"1":{"4":1,"5":1,"6":1}}],["据观察",{"2":{"35":1}}],["调节这一项可以从微观上控制程序的并行度",{"2":{"35":1}}],["调节这两个参数可以宏观上控制程序的并发度",{"2":{"33":1}}],["毫秒",{"2":{"35":1}}],["超过这个频率的请求会被暂时阻塞",{"2":{"35":1}}],["文件",{"2":{"70":1}}],["文件与",{"2":{"70":1}}],["文件排布",{"0":{"60":1}}],["文件夹",{"2":{"41":2}}],["文件中使用的时间类型",{"2":{"34":1}}],["文档将始终与最新程序版本保持一致",{"2":{"55":1}}],["文档",{"2":{"13":1}}],["两个标签下的配置",{"2":{"71":1}}],["两个平台可直接使用",{"2":{"70":1}}],["两个平台的",{"2":{"68":1}}],["两个参数就是控制此处的",{"2":{"33":1}}],["两条弹幕之间最小的水平距离",{"2":{"24":1}}],["实际会更接近",{"2":{"33":1}}],["实际透明度百分比为",{"2":{"28":1}}],["都有一个",{"2":{"50":1}}],["都在",{"2":{"46":1}}],["都只有单个",{"2":{"33":1}}],["都是新一代的视频编码格式",{"2":{"18":1}}],["很多",{"2":{"33":1}}],["高级设置",{"0":{"32":1},"1":{"33":1,"34":1,"35":1,"36":1,"37":1,"38":1}}],["粗体显示",{"0":{"31":1}}],["会被展开为",{"2":{"71":1}}],["会将",{"2":{"41":1}}],["会让弹幕提前",{"2":{"30":1}}],["会让弹幕延后",{"2":{"30":1}}],["会在必要时自动刷新身份凭据",{"2":{"16":1}}],["取值范围为",{"2":{"28":1}}],["2",{"2":{"52":1,"54":1,"65":1,"71":1}}],["20",{"2":{"38":1}}],["20971520",{"2":{"38":1}}],["255",{"0":{"28":1},"2":{"28":2}}],["265",{"2":{"18":1}}],["264",{"2":{"18":1}}],["0",{"0":{"28":1},"2":{"28":1,"30":2,"54":1,"55":1,"65":1,"70":4,"71":5}}],["透明度",{"0":{"28":1},"2":{"28":2}}],["屏幕上底部弹幕最多高度百分比",{"2":{"27":1}}],["屏幕上滚动弹幕最多高度百分比",{"2":{"26":1}}],["底部弹幕高度百分比",{"0":{"27":1}}],["滚动弹幕高度百分比",{"0":{"26":1}}],["行间距",{"2":{"25":1}}],["行高度",{"2":{"25":1}}],["即可运行",{"2":{"70":1}}],["即可获取所需参数",{"2":{"4":1}}],["即程序会首先并发处理多个",{"2":{"33":1}}],["即",{"2":{"25":1}}],["轨道大小",{"0":{"25":1}}],["水平间距",{"0":{"24":1}}],["计算弹幕宽度的比例",{"2":{"23":1}}],["宽度比例",{"0":{"23":1}}],["几乎全部取自上游仓库",{"2":{"19":1}}],["弹幕",{"2":{"40":1,"55":1}}],["弹幕是否加粗",{"2":{"31":1}}],["弹幕所占据的高度",{"2":{"25":1}}],["弹幕的描边宽度",{"2":{"29":1}}],["弹幕的字体大小",{"2":{"22":1}}],["弹幕的设置选项",{"2":{"19":1}}],["弹幕使用的字体",{"2":{"21":1}}],["弹幕在屏幕上的持续时间",{"2":{"20":1}}],["弹幕持续时间",{"0":{"20":1}}],["弹幕渲染",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1}}],["放在第一位以获得最好的兼容性",{"2":{"18":1}}],["放到一起统一排序来决定请求顺序",{"2":{"15":1}}],["或者单纯懒得查询",{"2":{"18":1}}],["或",{"2":{"18":1,"70":3}}],["机器发热等问题",{"2":{"18":1}}],["广泛",{"2":{"18":1}}],["硬件解码支持不如",{"2":{"18":1}}],["同时也是最直接",{"2":{"35":1}}],["同等画质下视频体积更小",{"2":{"18":1}}],["同步间隔",{"0":{"10":1},"2":{"72":1}}],["与限制请求数共同表明的意思时",{"2":{"35":1}}],["与",{"0":{"41":1},"1":{"42":1,"43":1},"2":{"18":1,"47":1,"61":1,"68":1,"70":1,"71":1}}],["与多个",{"2":{"15":1}}],["绝大部分设备可以使用硬件解码播放该格式的视频",{"2":{"18":1}}],["是一款专为",{"2":{"55":1}}],["是什么",{"0":{"55":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1,"61":1}}],["是控制",{"2":{"33":1}}],["是目前使用最广泛的视频编码格式",{"2":{"18":1}}],["是古早的功能",{"2":{"3":1}}],["又称",{"2":{"18":2}}],["此时出现权限错误说明你为容器指定的",{"2":{"64":1}}],["此时目标路径只是一个普通的容器内路径",{"2":{"64":1}}],["此处以",{"2":{"70":1}}],["此处程序对风控做了额外的处理",{"2":{"52":1}}],["此处对编码格式做一个简单说明",{"2":{"18":1}}],["此外还可以进入视频详情点击",{"2":{"66":1}}],["此外",{"2":{"11":1,"46":1}}],["优先级按顺序从高到低",{"2":{"18":1}}],["选择视频编码的优先级顺序",{"2":{"18":1}}],["仅有一个",{"2":{"41":1}}],["仅收藏夹视频会对这两项进行区分",{"2":{"34":1}}],["仅收藏夹视频会区分",{"2":{"11":1}}],["仅对视频编码格式偏好进行说明",{"2":{"17":1}}],["推荐设置为宿主机用户的",{"2":{"70":1}}],["推荐使用匿名窗口获取",{"2":{"16":1}}],["推荐仅在",{"2":{"11":1}}],["请参考配置说明",{"2":{"71":1}}],["请参考凭据获取流程获取并对应填写",{"2":{"16":1}}],["请注意",{"2":{"71":1}}],["请注意其中的注释",{"2":{"70":1}}],["请移除最后的",{"2":{"70":1}}],["请确保",{"2":{"69":1}}],["请检查挂载位置与配置文件填写是否正确",{"2":{"63":1}}],["请求以获取信息",{"2":{"35":1}}],["请求频率的方法",{"2":{"35":1}}],["请求频率限制",{"0":{"35":1}}],["请求频率限制可以根据网络环境和",{"2":{"32":1}}],["请求频率进行调整",{"2":{"32":1}}],["请求进行身份验证",{"2":{"14":1}}],["哔哩哔哩账号的身份凭据",{"2":{"16":1}}],["网络环境而异",{"2":{"15":1}}],["但怀疑是",{"2":{"65":1}}],["但配置文件并未正确填写挂载后的路径",{"2":{"64":1}}],["但在结构上有相当大的不同",{"2":{"40":1}}],["但在接口层级是两个不同的概念",{"2":{"3":1}}],["但由于相对较新",{"2":{"18":1}}],["但是同等画质下视频体积较大",{"2":{"18":1}}],["但效果因地区",{"2":{"15":1}}],["可参考如下页面获取所需的参数",{"2":{"72":1}}],["可善用右侧导航在不同配置项间跳转",{"2":{"71":1}}],["可使用该",{"2":{"71":1}}],["可同时修改",{"2":{"70":1}}],["可直接通过",{"2":{"69":1}}],["可选值为收藏时间和发布时间",{"2":{"34":1}}],["可能会提高下载速度并增加成功率",{"2":{"15":1}}],["可以执行",{"2":{"70":1}}],["可以在",{"2":{"66":1}}],["可以前往此处实时查看当前版本的数据库表结构",{"2":{"44":1}}],["可以查看相关文档获取详细信息",{"2":{"2":1}}],["可以看到除版本和帮助信息外",{"2":{"0":1}}],["可以通过执行",{"2":{"0":1}}],["这种模糊的",{"2":{"70":1}}],["这种情况下可能导致播放卡顿",{"2":{"18":1}}],["这允许用户自行修改每个子任务的状态",{"2":{"66":1}}],["这会将所有失败的子任务重置为未下载状态",{"2":{"66":1}}],["这会让程序优先请求质量更高的",{"2":{"15":1}}],["这个问题我也出现过几次",{"2":{"65":1}}],["这个区别可以简单总结为",{"2":{"40":1}}],["这些文件整体保持与",{"2":{"55":1}}],["这些请求的整体频率受到请求频率的限制",{"2":{"35":1}}],["这一步会筛选出所有未完全填充信息的",{"2":{"51":1}}],["这说明它们是处于两个不同层级的结构",{"2":{"40":1}}],["这可能有助于提高下载速度",{"2":{"36":1}}],["这两者在展示上区别较小",{"2":{"40":1}}],["这两张图中",{"2":{"40":1}}],["这两种编码相比",{"2":{"18":1}}],["这两个模板参数会在运行时解析",{"2":{"11":1}}],["这是因为配置文件内容缺失导致视频下载任务未能运行",{"2":{"71":1}}],["这是",{"2":{"18":1}}],["dir",{"2":{"71":4}}],["d",{"2":{"70":1}}],["driver",{"2":{"70":1}}],["data",{"0":{"63":1},"2":{"71":1}}],["docker",{"0":{"70":1},"2":{"61":1,"68":1,"70":3,"71":1}}],["dx",{"2":{"15":1}}],["decoding",{"0":{"65":1}}],["denied",{"0":{"64":1}}],["default",{"2":{"0":1}}],["debug",{"2":{"0":1}}],["而是直接终止",{"2":{"52":1}}],["而是拥有多种实现的抽象概念",{"2":{"45":1}}],["而是简单的将其设计为了不交叉的层级结构",{"2":{"44":1}}],["而是将所有",{"2":{"15":1}}],["而如果你的设备不支持",{"2":{"18":1}}],["而不实际执行下载操作",{"2":{"1":1}}],["依次尝试下载",{"2":{"15":1}}],["排序依据的时间根据",{"2":{"50":1}}],["排序优先级从高到低为",{"2":{"15":1}}],["排序",{"0":{"15":1},"2":{"15":1}}],["启动分块下载的文件大小阈值",{"0":{"38":1}}],["启动",{"0":{"15":1}}],["后可以在",{"2":{"72":1}}],["后续直接忽略",{"2":{"52":1}}],["后续",{"2":{"16":1}}],["后需要对应修改前端保存的",{"2":{"14":1}}],["后端",{"0":{"14":1}}],["在网页端打开想要获取投稿的",{"2":{"73":1}}],["在网页端打开自己的收藏夹列表",{"2":{"53":1}}],["在一次填写后即可忽略",{"2":{"71":1}}],["在初次启动时是正常现象",{"2":{"71":1}}],["在程序发布页选择最新版本中对应机器架构的压缩包",{"2":{"69":1}}],["在",{"2":{"65":1,"71":1}}],["在这个过程中",{"2":{"51":1}}],["在实现时需要避免频繁的全量扫描",{"2":{"50":1}}],["在后文会将收藏夹",{"2":{"40":1}}],["在了解程序工作原理之前",{"2":{"40":1}}],["在修改该",{"2":{"14":1}}],["在视频名称模板",{"2":{"13":1}}],["身份验证不通过会拒绝访问",{"2":{"14":1}}],["需检查宿主机原始路径的文件权限",{"2":{"64":1}}],["需要将来能够查明具体原因再加以修复",{"2":{"65":1}}],["需要将媒体库类型设置为",{"2":{"41":1}}],["需要理解的是",{"2":{"63":1}}],["需要的身份凭据",{"2":{"14":1}}],["需确保此处路径指向",{"2":{"12":1}}],["认证后会看到一系列的配置",{"2":{"71":1}}],["认证",{"0":{"14":1}}],["alice",{"2":{"71":4}}],["auth",{"2":{"71":2}}],["application",{"2":{"71":1}}],["appdata",{"2":{"71":1}}],["app",{"2":{"70":2,"71":1}}],["api",{"0":{"14":1},"2":{"14":2,"32":1,"35":2}}],["amtoaer",{"2":{"70":3,"71":1}}],["amd64",{"2":{"68":1,"70":1}}],["arm64",{"2":{"68":1,"70":1}}],["a",{"2":{"63":1}}],["at",{"2":{"50":3}}],["av1",{"2":{"18":2}}],["avc",{"2":{"18":4}}],["address",{"2":{"9":1}}],["config",{"2":{"70":3,"71":7}}],["container",{"2":{"70":1}}],["collection",{"2":{"45":1,"46":1}}],["compose",{"0":{"70":1},"2":{"70":5}}],["com",{"2":{"15":4,"71":1}}],["cid",{"2":{"40":1,"47":1}}],["c",{"2":{"18":1,"71":1}}],["cn",{"2":{"15":1}}],["cdn",{"0":{"15":1},"2":{"15":4}}],["chrono",{"2":{"13":1}}],["caution",{"2":{"11":1,"69":1,"71":1}}],["支持使用",{"2":{"61":1}}],["支持单个文件的分块并行下载",{"2":{"61":1}}],["支持限制任务的并行度和接口请求频率",{"2":{"61":1}}],["支持对",{"2":{"61":2}}],["支持收藏夹与视频列表",{"2":{"61":1}}],["支持的格式符号可以参考",{"2":{"13":1}}],["支持设置",{"2":{"11":1}}],["jul",{"2":{"71":6}}],["jellyfin",{"2":{"12":2,"55":1,"70":2}}],["jpg",{"2":{"11":4}}],["error",{"0":{"65":1}}],["emby",{"0":{"41":1},"1":{"42":1,"43":1},"2":{"12":2,"41":1,"55":1,"70":2}}],["env",{"2":{"0":2}}],["win",{"2":{"71":1}}],["windows",{"2":{"11":1}}],["warn",{"2":{"71":1}}],["warning",{"2":{"50":1,"56":1}}],["watch",{"2":{"45":1}}],["webui",{"2":{"54":1,"66":1,"67":1,"71":1}}],["web",{"2":{"9":1,"61":1,"71":1}}],["路径分隔符在不同平台定义不同",{"2":{"11":1}}],["暂不清楚在",{"2":{"11":1}}],["其中",{"2":{"71":1}}],["其中用",{"2":{"11":1}}],["其二",{"0":{"70":1}}],["其一",{"0":{"69":1}}],["其它类型的视频这两者取值完全相同",{"2":{"34":1}}],["其它类型下载两者的取值是完全相同的",{"2":{"11":1}}],["和分页并发数",{"2":{"33":1}}],["和分页名称模板",{"2":{"11":1}}],["和",{"2":{"11":4,"13":1,"33":1,"52":2}}],["如无特殊需求",{"2":{"71":1}}],["如运行后找不到初始",{"0":{"63":1}}],["如标签",{"2":{"51":1}}],["如一个视频同时在收藏夹和稍后再看中",{"2":{"44":1}}],["如请求各类视频列表",{"2":{"35":1}}],["如果你使用的是群晖系统",{"2":{"70":1}}],["如果你使用这种方式运行",{"2":{"69":1}}],["如果你的播放设备不支持则只能使用软件解码播放",{"2":{"18":1}}],["如果重试次数超过了设定的阈值",{"2":{"52":1}}],["如果某些部分下载失败",{"2":{"52":1}}],["如果遇到",{"2":{"51":1}}],["如果发现需要的文件不存在",{"2":{"49":1}}],["如果文件过小",{"2":{"38":1}}],["如果经常遇到风控可以优先调小该值",{"2":{"32":1}}],["如果硬件支持",{"2":{"18":1}}],["如果启用",{"2":{"15":1}}],["如",{"2":{"11":2,"46":2,"47":1}}],["函数",{"2":{"11":1}}],["分集",{"2":{"41":1}}],["分季",{"2":{"41":1}}],["分块成本可能会超过分块下载带来的收益",{"2":{"38":1}}],["分页并发数",{"0":{"33":1}}],["分页的并发数不需要过大",{"2":{"32":1}}],["分页名称模板中使用时的显示格式",{"2":{"13":1}}],["分页名称模板",{"0":{"11":1}}],["分",{"2":{"11":2}}],["还支持使用路径分割符",{"2":{"11":1}}],["还支持",{"2":{"11":1}}],["还可通过环境变量设置",{"2":{"0":1}}],["主首页",{"2":{"73":1}}],["主一键订阅",{"2":{"72":1}}],["主投稿视频的自动扫描与下载",{"2":{"61":1}}],["主的头像",{"2":{"12":1}}],["主头像",{"2":{"70":1}}],["主头像和信息的保存位置",{"2":{"12":1}}],["主头像保存路径",{"0":{"12":1},"2":{"70":1}}],["主",{"2":{"11":2,"73":1}}],["主名称",{"2":{"11":1}}],["17",{"2":{"71":2}}],["16",{"2":{"71":5}}],["12",{"2":{"71":6}}],["12345",{"2":{"70":3,"71":1}}],["11",{"2":{"55":1,"71":5}}],["1000",{"2":{"70":2}}],["10",{"2":{"11":2,"71":5}}],["1",{"2":{"11":1,"33":1}}],["1987140",{"2":{"5":1}}],["└──",{"2":{"11":3}}],["├──",{"2":{"11":9}}],["│",{"2":{"11":18}}],["单",{"0":{"42":1}}],["单文件分块下载是指将单个视频文件分成多个小块进行下载",{"2":{"36":1}}],["单文件分块下载",{"0":{"36":1},"1":{"37":1,"38":1}}],["单页视频",{"2":{"11":1}}],["单位为秒",{"2":{"10":1,"20":1,"30":1}}],["将新增视频的简单信息写入数据库后",{"2":{"51":1}}],["将分页称为",{"2":{"40":1}}],["将视频称为",{"2":{"40":1}}],["将视频分到不同的文件夹中",{"2":{"11":1}}],["将会维持如下的目录结构",{"2":{"11":1}}],["将需要的参数展示在了视频合集",{"2":{"4":1}}],["对视频",{"2":{"61":1}}],["对应",{"2":{"41":3}}],["对实际的视频",{"2":{"35":1}}],["对于手动添加的视频源",{"2":{"72":1}}],["对于这些设置项的含义",{"2":{"71":1}}],["对于名为",{"2":{"71":1}}],["对于使用",{"2":{"12":1}}],["对于",{"2":{"11":2}}],["对于所有下载的内容",{"2":{"11":1}}],["对照查看",{"2":{"4":1}}],["用于记录处理过的最新视频时间",{"2":{"50":1}}],["用于设置下载弹幕的样式",{"2":{"19":1}}],["用于设置下载文件的命名规则",{"2":{"11":1}}],["用于设置",{"2":{"13":1}}],["用户投稿",{"2":{"72":1}}],["用户在正确填写",{"2":{"72":1}}],["用户的",{"2":{"70":1}}],["用户可以自行选择使用哪种方式运行",{"2":{"68":1}}],["用户无法修改",{"2":{"64":1}}],["用户编写的哔哩哔哩同步工具",{"2":{"55":1}}],["用户",{"2":{"5":1,"6":1}}],["ports",{"2":{"70":1}}],["poster",{"2":{"11":2}}],["path",{"2":{"69":1}}],["page",{"0":{"42":1,"43":1,"47":1},"2":{"11":13,"33":5,"40":4,"41":3,"47":3,"51":1,"52":3}}],["permitted",{"0":{"64":1}}],["permission",{"0":{"64":1}}],["people",{"2":{"12":1,"70":2}}],["pcdn",{"2":{"15":1}}],["pid",{"2":{"11":1}}],["p",{"2":{"11":2}}],["ptitle",{"2":{"11":1}}],["pubtime",{"2":{"11":4,"13":1}}],["print",{"2":{"0":2}}],["network",{"2":{"70":1}}],["nas",{"2":{"55":1}}],["name",{"2":{"11":20,"70":1}}],["not",{"0":{"64":1}}],["note",{"2":{"40":1,"44":1}}],["none",{"2":{"0":1}}],["nfo",{"0":{"34":1},"2":{"11":4,"34":1,"52":1}}],["秒",{"0":{"10":1,"20":1,"30":1}}],["该信息仅在首次运行时打印",{"2":{"71":1}}],["该选项请仅在日志终端支持彩色输出时启用",{"2":{"70":1}}],["该解决方案仍然比较玄学",{"2":{"65":1}}],["该页主要用于调整程序的请求与下载行为",{"2":{"32":1}}],["该页配置大部分都是显而易见的",{"2":{"17":1}}],["该配置会在程序重启时生效",{"2":{"9":1}}],["该参数与",{"2":{"2":1}}],["该参数的主要目的是方便用户从",{"2":{"1":1}}],["访问管理页",{"2":{"9":1}}],["$gid`",{"2":{"70":1}}],["$",{"2":{"9":1,"70":3,"71":1}}],["监听的地址",{"2":{"9":1}}],["基本设置",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1}}],["配置完毕后",{"2":{"72":1}}],["配置同样在数据库表中进行维护",{"2":{"71":1}}],["配置初始化完成",{"2":{"71":1}}],["配置下的",{"2":{"70":1}}],["配置文件正确填写了挂载后的路径",{"2":{"64":1}}],["配置",{"2":{"61":1,"70":1}}],["配置中的",{"2":{"12":1}}],["配置说明",{"0":{"7":1},"1":{"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1}}],["配置形式与区分方法",{"0":{"4":1},"1":{"5":1,"6":1}}],["为避免意料外的情况",{"2":{"71":1}}],["为避免重叠可以调大这个数值",{"2":{"23":1}}],["为例",{"2":{"70":1}}],["为了简化实现",{"2":{"44":1}}],["为了避免过多的层级",{"2":{"41":1}}],["为了描述方便",{"2":{"40":1}}],["为了解决文件名可能过长的问题",{"2":{"11":1}}],["为每个块启动单独的异步任务并行下载",{"2":{"36":1}}],["为",{"2":{"5":2,"6":2,"61":1}}],["mode",{"2":{"70":1}}],["mb",{"2":{"38":1}}],["mcdn",{"2":{"15":2}}],["mirrorxxxx",{"2":{"15":1}}],["mid",{"2":{"4":1,"11":2}}],["metadata",{"2":{"12":1,"70":2}}],["mac",{"2":{"71":1}}],["macos",{"2":{"11":1}}],["main",{"2":{"0":1}}],["mp4",{"2":{"11":3}}],["的用户",{"2":{"71":1}}],["的实际位置与操作系统和用户名有关",{"2":{"71":1}}],["的实现中",{"2":{"50":1}}],["的报错",{"2":{"71":1}}],["的可执行文件",{"2":{"69":1}}],["的配置文件已经完全迁移至数据库中",{"2":{"54":1}}],["的全部下载任务",{"2":{"52":1}}],["的全部参数外",{"2":{"11":1}}],["的不同位来判断视频的下载状态",{"2":{"52":1}}],["的不同位中",{"2":{"52":1}}],["的下载状态",{"2":{"52":1}}],["的所有视频",{"2":{"52":1}}],["的详细信息",{"2":{"51":1}}],["的视频时停止",{"2":{"50":1}}],["的类型而定",{"2":{"50":1}}],["的简单信息并填充到数据库",{"2":{"50":1}}],["的关联",{"2":{"46":1,"47":1}}],["的基本信息",{"2":{"46":1,"47":1}}],["的一般结构是",{"2":{"41":1}}],["的",{"0":{"42":1,"43":1},"2":{"40":1,"46":1,"73":1}}],["的工作原理",{"2":{"39":1}}],["的顺序请求",{"2":{"15":1}}],["的格式受时间格式控制",{"2":{"11":1}}],["的前",{"2":{"11":1}}],["的路径格式为",{"2":{"4":1}}],["的语义相同",{"2":{"2":1}}],["中间应该会穿插一条",{"2":{"71":1}}],["中配置将视频下载到这些目录即可",{"2":{"70":1}}],["中填写的",{"2":{"70":1}}],["中显示",{"2":{"70":1}}],["中查找对应的视频源并点击",{"2":{"66":1}}],["中不会有重复的",{"2":{"46":1}}],["中使用路径分割符导致分页存储到子文件夹后是否还能被媒体服务器正确识别",{"2":{"11":1}}],["中使用路径分割符",{"2":{"11":1}}],["中",{"2":{"4":1,"69":1}}],["unless",{"2":{"70":1}}],["users",{"2":{"71":2}}],["user",{"2":{"64":2,"70":2}}],["usage",{"2":{"0":1}}],["uid",{"2":{"70":2}}],["ui",{"2":{"61":1,"71":1}}],["upos",{"2":{"15":1}}],["up",{"0":{"12":1},"2":{"11":3,"12":2,"61":1,"70":3,"72":1,"73":2}}],["upper",{"2":{"11":3,"70":1}}],["url",{"2":{"4":3,"15":1,"53":1}}],["站服务器使用某种检测机制拒绝了响应",{"2":{"65":1}}],["站实现接口时为了节省资源",{"2":{"50":1}}],["站的",{"2":{"41":3}}],["站的视频结构",{"0":{"40":1}}],["站视频结构的介绍",{"2":{"40":1}}],["站视频的组织结构有一个大概的了解",{"2":{"40":1}}],["站风控限制大多集中在主站",{"2":{"35":1}}],["站认证",{"0":{"16":1},"2":{"71":2,"72":1}}],["站会为视频",{"2":{"15":1}}],["站网页端已经对两种类型做了初步整合",{"2":{"4":1}}],["站绝大部分内容都是视频合集",{"2":{"3":1}}],["新版本",{"2":{"4":1}}],["新用户不需要关注",{"2":{"1":1}}],["现在已经不常见了",{"2":{"3":1}}],["视频下载任务会在后台每隔特定时间",{"2":{"72":1}}],["视频下载任务并发度的配置项",{"2":{"33":1}}],["视频源",{"2":{"61":1,"72":1}}],["视频分页进行异步并发下载",{"2":{"61":1}}],["视频的各个部分",{"2":{"52":1}}],["视频信息",{"2":{"35":1}}],["视频并发数",{"0":{"33":1},"2":{"33":1}}],["视频",{"2":{"32":1,"40":1,"52":1}}],["视频编码格式偏好",{"0":{"18":1}}],["视频编号",{"2":{"11":1}}],["视频质量",{"0":{"17":1},"1":{"18":1},"2":{"71":1}}],["视频收藏时间",{"2":{"11":1}}],["视频发布时间",{"2":{"11":1}}],["视频标题",{"2":{"11":1}}],["视频名称模板",{"0":{"11":1},"2":{"11":1}}],["视频合集的下载",{"2":{"61":1}}],["视频合集是由多个仅包含单个",{"2":{"40":1}}],["视频合集",{"0":{"5":1},"2":{"40":1,"45":1}}],["视频合集和视频列表虽然在哔哩哔哩网站交互上行为类似",{"2":{"3":1}}],["视频列表与多页视频的区别",{"2":{"40":1}}],["视频列表等结构都是由一系列视频构成的列表",{"2":{"40":1}}],["视频列表详情",{"2":{"4":1}}],["视频列表的",{"2":{"4":1}}],["视频列表",{"0":{"6":1},"2":{"3":1,"45":1}}],["bridge",{"2":{"70":1}}],["body",{"0":{"65":1}}],["backupurl",{"2":{"15":2}}],["baseurl",{"2":{"15":2}}],["bash├──",{"2":{"11":2}}],["bvid",{"2":{"11":1,"40":1,"46":2}}],["bind",{"2":{"9":1}}],["bilibilis",{"2":{"70":2}}],["bilivideo",{"2":{"15":3}}],["bili",{"0":{"55":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1,"61":1},"2":{"0":4,"16":1,"18":1,"33":1,"39":1,"41":1,"50":1,"54":1,"55":1,"65":1,"69":1,"70":8,"71":3}}],["b",{"0":{"16":1,"40":1},"2":{"3":1,"4":1,"15":1,"35":1,"40":2,"41":3,"50":1,"63":3,"65":1,"71":2,"72":1}}],["迁移数据库",{"2":{"49":1}}],["迁移",{"2":{"1":1}}],["参数内容即可",{"2":{"53":1}}],["参数用于设置日志级别",{"2":{"2":1}}],["参数用于仅扫描列表",{"2":{"1":1}}],["参数除可以通过命令行设置外",{"2":{"0":1}}],["程序仅会创建一个数据库文件",{"2":{"71":1}}],["程序仅支持两个参数",{"2":{"0":1}}],["程序默认绑定",{"2":{"70":1}}],["程序默认会按照",{"2":{"15":1}}],["程序下载的所有文件权限将与此处的用户保持一致",{"2":{"70":1}}],["程序为各个平台提供了预构建的二进制文件",{"2":{"68":1}}],["程序为模板引入了",{"2":{"11":1}}],["程序获取",{"0":{"68":1},"1":{"69":1,"70":1}}],["程序使用",{"2":{"67":1}}],["程序运行在容器中",{"2":{"63":1}}],["程序在",{"2":{"52":1}}],["程序在请求接口时会设置按时间排序",{"2":{"50":1}}],["程序在每个时间间隔内最多允许多少个请求",{"2":{"35":1}}],["程序启动时会读取配置文件",{"2":{"49":1}}],["程序启动时会监听该地址",{"2":{"9":1}}],["程序没有额外考虑单个",{"2":{"44":1}}],["程序会在每日第一次运行视频下载任务时检查认证状态",{"2":{"71":1}}],["程序会在下次下载时重试",{"2":{"52":1}}],["程序会根据",{"2":{"52":1}}],["程序会将该视频标记为无效并跳过",{"2":{"51":1}}],["程序会不断将获取到的视频保存到数据库中",{"2":{"50":1}}],["程序会扫描所有配置文件中包含的",{"2":{"50":1}}],["程序会自动创建",{"2":{"49":1}}],["程序会首先为这个文件预分配空间",{"2":{"36":1}}],["程序会对",{"2":{"14":1}}],["程序的所有操作都可以通过",{"2":{"54":1}}],["程序的并发度可以简单衡量为",{"2":{"33":1}}],["程序的处理逻辑是严格从上到下的",{"2":{"33":1}}],["程序",{"2":{"9":1}}],["程序配置中需要对两者做出区分",{"2":{"3":1}}],["程序中",{"2":{"2":1}}],["程序支持有限的命令行参数",{"2":{"0":1}}],["volumes",{"2":{"70":1}}],["v2",{"2":{"55":1}}],["videos",{"2":{"70":2}}],["video",{"0":{"42":1,"43":1,"45":1,"46":1,"50":1,"51":1},"2":{"11":7,"33":7,"40":8,"41":3,"44":2,"45":1,"46":10,"47":2,"50":6,"51":5,"52":4}}],["v1d",{"2":{"15":1}}],["v1",{"2":{"1":1}}],["version",{"2":{"0":2}}],["v",{"2":{"0":1,"15":1}}],["hdds",{"2":{"70":2}}],["home",{"2":{"70":2,"71":1}}],["hostname",{"2":{"70":1}}],["hev",{"2":{"18":2}}],["help",{"2":{"0":4}}],["https",{"2":{"71":1}}],["http",{"2":{"9":1,"70":1,"71":1}}],["h",{"2":{"0":1,"18":2}}],["xxxxxxxx",{"2":{"71":1}}],["xxxxx",{"2":{"71":1}}],["xxxx",{"2":{"15":4}}],["x3c",{"2":{"0":1}}],["x26",{"2":{"0":1}}],["local",{"2":{"70":1}}],["logging",{"2":{"70":2}}],["log=",{"2":{"0":1}}],["log",{"0":{"2":1},"2":{"0":2,"2":2}}],["latest",{"2":{"50":3,"70":2}}],["later",{"2":{"45":1}}],["lt",{"2":{"30":1}}],["library",{"2":{"71":1}}],["lin",{"2":{"71":1}}],["linux",{"2":{"11":1,"61":1,"68":2,"70":2}}],["lists",{"2":{"4":1}}],["level>",{"2":{"0":1}}],["level",{"0":{"2":1},"2":{"0":1,"2":1}}],["l",{"2":{"0":1}}],["operation",{"0":{"64":1}}],["options",{"2":{"0":2}}],["only=",{"2":{"0":1}}],["only",{"0":{"1":1},"2":{"0":1,"1":1}}],["驱动的哔哩哔哩同步工具",{"2":{"0":1}}],["toml",{"2":{"70":1}}],["token",{"0":{"14":1},"2":{"14":2,"71":3}}],["tokio",{"2":{"0":1,"61":1}}],["true",{"2":{"70":1}}],["truncate",{"2":{"11":2}}],["tty",{"2":{"70":1}}],["tag",{"2":{"70":1}}],["target",{"2":{"0":1}}],["tip",{"2":{"11":1,"32":1,"55":1}}],["time",{"2":{"11":3,"13":1}}],["title",{"2":{"11":4}}],["tvshow",{"2":{"11":1}}],["thumb",{"2":{"11":2}}],["type=",{"2":{"4":1}}],["runtime",{"2":{"67":1}}],["rust",{"2":{"0":2,"2":2,"67":1}}],["restart",{"2":{"70":1}}],["response",{"0":{"65":1}}],["reqwest",{"2":{"61":1}}],["roaming",{"2":{"71":1}}],["root",{"2":{"64":2,"70":1}}],["row",{"2":{"50":3}}],["rs",{"2":{"0":3,"69":1,"70":4}}],["由配置中的",{"2":{"72":1}}],["由",{"2":{"0":1}}],["⇡",{"2":{"0":1}}],["support",{"2":{"71":1}}],["sqlite",{"0":{"63":1},"2":{"71":1}}],["stopped",{"2":{"70":1}}],["status",{"2":{"52":4}}],["strftime",{"2":{"13":1}}],["source",{"0":{"45":1,"50":1},"2":{"40":3,"41":1,"44":1,"45":1,"46":4,"50":4,"51":1,"52":1}}],["szbdyd",{"2":{"15":1}}],["sz",{"2":{"15":1}}],["s01e02",{"2":{"11":3}}],["s01e01",{"2":{"11":3}}],["server",{"2":{"9":1}}],["series",{"2":{"3":1,"4":1,"6":1}}],["season",{"2":{"3":1,"4":1,"5":1,"11":1}}],["scan",{"0":{"1":1},"2":{"0":2,"1":1}}],["s",{"2":{"0":1}}],["shellbili",{"2":{"0":1}}],["sync=info",{"2":{"0":1}}],["sync",{"0":{"55":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1,"61":1},"2":{"0":4,"16":1,"18":1,"33":1,"39":1,"41":1,"50":1,"54":1,"55":1,"65":1,"69":1,"70":8,"71":3}}]],"serializationVersion":2}';export{t as default}; diff --git a/assets/chunks/VPLocalSearchBox.BZie8BUK.js b/assets/chunks/VPLocalSearchBox.BZie8BUK.js new file mode 100644 index 0000000..4cab3af --- /dev/null +++ b/assets/chunks/VPLocalSearchBox.BZie8BUK.js @@ -0,0 +1,7 @@ +var Ct=Object.defineProperty;var It=(o,e,t)=>e in o?Ct(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>It(o,typeof e!="symbol"?e+"":e,t);import{X as Dt,s as oe,v as $e,ai as kt,aj as Ot,d as Rt,G as xe,ak as tt,h as Fe,al as _t,am as Mt,x as Lt,an as Pt,y as Re,R as de,Q as Ee,ao as zt,ap as Bt,Y as Vt,U as $t,aq as Wt,o as ee,b as Kt,j as k,a1 as Jt,k as j,ar as Ut,as as jt,at as Gt,c as re,n as rt,e as Se,E as at,F as nt,a as ve,t as pe,au as Qt,p as qt,l as Ht,av as it,aw as Yt,a7 as Zt,ad as Xt,ax as er,_ as tr}from"./framework.Bsyxd66g.js";import{u as rr,c as ar}from"./theme.BbeQe9Cr.js";const nr={root:()=>Dt(()=>import("./@localSearchIndexroot.C1Kwf251.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var yt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=yt.join(","),mt=typeof Element>"u",ue=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ce=!mt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ie=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},ir=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},gt=function(e,t,r){if(Ie(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ue.call(e,Ne)&&n.unshift(e),n=n.filter(r),n},bt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ie(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=ue.call(i,Ne);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ie(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||ir(e))&&!wt(e)?0:e.tabIndex},or=function(e,t){var r=se(e);return r<0&&t&&!wt(e)?0:r},sr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ur=function(e){return xt(e)&&e.type==="hidden"},lr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},cr=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(ue.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Ce(e);if(u&&!u.shadowRoot&&n(u)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(vr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return ot(e);return!1},yr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},gr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=or(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(sr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},br=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:mr}):r=gt(e,t.includeContainer,We.bind(null,t)),gr(r)},wr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:De.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=gt(e,t.includeContainer,De.bind(null,t)),r},le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,Ne)===!1?!1:We(t,e)},xr=yt.concat("iframe").join(","),_e=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,xr)===!1?!1:De(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function st(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),t.push.apply(t,r)}return t}function ut(o){for(var e=1;e0){var r=e[e.length-1];r!==t&&r.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var r=e.indexOf(t);r!==-1&&e.splice(r,1),e.length>0&&e[e.length-1].unpause()}},Ar=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Tr=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Nr=function(e){return ge(e)&&!e.shiftKey},Cr=function(e){return ge(e)&&e.shiftKey},ct=function(e){return setTimeout(e,0)},ft=function(e,t){var r=-1;return e.every(function(n,a){return t(n)?(r=a,!1):!0}),r},ye=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1?p-1:0),I=1;I=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||h("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=br(c,a.tabbableOptions),p=wr(c,a.tabbableOptions),C=f.length>0?f[0]:void 0,I=f.length>0?f[f.length-1]:void 0,M=p.find(function(m){return le(m)}),P=p.slice().reverse().find(function(m){return le(m)}),z=!!f.find(function(m){return se(m)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:z,firstTabbableNode:C,lastTabbableNode:I,firstDomTabbableNode:M,lastDomTabbableNode:P,nextTabbableNode:function(x){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,K=f.indexOf(x);return K<0?$?p.slice(p.indexOf(x)+1).find(function(Q){return le(Q)}):p.slice(0,p.indexOf(x)).reverse().find(function(Q){return le(Q)}):f[K+($?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},y=function w(c){var f=c.activeElement;if(f)return f.shadowRoot&&f.shadowRoot.activeElement!==null?w(f.shadowRoot):f},b=function w(c){if(c!==!1&&c!==y(document)){if(!c||!c.focus){w(d());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,Ar(c)&&c.select()}},E=function(c){var f=h("setReturnFocus",c);return f||(f===!1?!1:c)},g=function(c){var f=c.target,p=c.event,C=c.isBackward,I=C===void 0?!1:C;f=f||Ae(p),v();var M=null;if(i.tabbableGroups.length>0){var P=l(f,p),z=P>=0?i.containerGroups[P]:void 0;if(P<0)I?M=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:M=i.tabbableGroups[0].firstTabbableNode;else if(I){var m=ft(i.tabbableGroups,function(B){var U=B.firstTabbableNode;return f===U});if(m<0&&(z.container===f||_e(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!z.nextTabbableNode(f,!1))&&(m=P),m>=0){var x=m===0?i.tabbableGroups.length-1:m-1,$=i.tabbableGroups[x];M=se(f)>=0?$.lastTabbableNode:$.lastDomTabbableNode}else ge(p)||(M=z.nextTabbableNode(f,!1))}else{var K=ft(i.tabbableGroups,function(B){var U=B.lastTabbableNode;return f===U});if(K<0&&(z.container===f||_e(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!z.nextTabbableNode(f))&&(K=P),K>=0){var Q=K===i.tabbableGroups.length-1?0:K+1,q=i.tabbableGroups[Q];M=se(f)>=0?q.firstTabbableNode:q.firstDomTabbableNode}else ge(p)||(M=z.nextTabbableNode(f))}}else M=h("fallbackFocus");return M},S=function(c){var f=Ae(c);if(!(l(f,c)>=0)){if(ye(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}ye(a.allowOutsideClick,c)||c.preventDefault()}},T=function(c){var f=Ae(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var C,I=!0;if(i.mostRecentlyFocusedNode)if(se(i.mostRecentlyFocusedNode)>0){var M=l(i.mostRecentlyFocusedNode),P=i.containerGroups[M].tabbableNodes;if(P.length>0){var z=P.findIndex(function(m){return m===i.mostRecentlyFocusedNode});z>=0&&(a.isKeyForward(i.recentNavEvent)?z+1=0&&(C=P[z-1],I=!1))}}else i.containerGroups.some(function(m){return m.tabbableNodes.some(function(x){return se(x)>0})})||(I=!1);else I=!1;I&&(C=g({target:i.mostRecentlyFocusedNode,isBackward:a.isKeyBackward(i.recentNavEvent)})),b(C||i.mostRecentlyFocusedNode||d())}i.recentNavEvent=void 0},F=function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=c;var p=g({event:c,isBackward:f});p&&(ge(c)&&c.preventDefault(),b(p))},L=function(c){if(Tr(c)&&ye(a.escapeDeactivates,c)!==!1){c.preventDefault(),s.deactivate();return}(a.isKeyForward(c)||a.isKeyBackward(c))&&F(c,a.isKeyBackward(c))},_=function(c){var f=Ae(c);l(f,c)>=0||ye(a.clickOutsideDeactivates,c)||ye(a.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},V=function(){if(i.active)return lt.activateTrap(n,s),i.delayInitialFocusTimer=a.delayInitialFocus?ct(function(){b(d())}):b(d()),r.addEventListener("focusin",T,!0),r.addEventListener("mousedown",S,{capture:!0,passive:!1}),r.addEventListener("touchstart",S,{capture:!0,passive:!1}),r.addEventListener("click",_,{capture:!0,passive:!1}),r.addEventListener("keydown",L,{capture:!0,passive:!1}),s},N=function(){if(i.active)return r.removeEventListener("focusin",T,!0),r.removeEventListener("mousedown",S,!0),r.removeEventListener("touchstart",S,!0),r.removeEventListener("click",_,!0),r.removeEventListener("keydown",L,!0),s},R=function(c){var f=c.some(function(p){var C=Array.from(p.removedNodes);return C.some(function(I){return I===i.mostRecentlyFocusedNode})});f&&b(d())},A=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(R):void 0,O=function(){A&&(A.disconnect(),i.active&&!i.paused&&i.containers.map(function(c){A.observe(c,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(c){if(i.active)return this;var f=u(c,"onActivate"),p=u(c,"onPostActivate"),C=u(c,"checkCanFocusTrap");C||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,f==null||f();var I=function(){C&&v(),V(),O(),p==null||p()};return C?(C(i.containers.concat()).then(I,I),this):(I(),this)},deactivate:function(c){if(!i.active)return this;var f=ut({onDeactivate:a.onDeactivate,onPostDeactivate:a.onPostDeactivate,checkCanReturnFocus:a.checkCanReturnFocus},c);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,N(),i.active=!1,i.paused=!1,O(),lt.deactivateTrap(n,s);var p=u(f,"onDeactivate"),C=u(f,"onPostDeactivate"),I=u(f,"checkCanReturnFocus"),M=u(f,"returnFocus","returnFocusOnDeactivate");p==null||p();var P=function(){ct(function(){M&&b(E(i.nodeFocusedBeforeActivation)),C==null||C()})};return M&&I?(I(E(i.nodeFocusedBeforeActivation)).then(P,P),this):(P(),this)},pause:function(c){if(i.paused||!i.active)return this;var f=u(c,"onPause"),p=u(c,"onPostPause");return i.paused=!0,f==null||f(),N(),O(),p==null||p(),this},unpause:function(c){if(!i.paused||!i.active)return this;var f=u(c,"onUnpause"),p=u(c,"onPostUnpause");return i.paused=!1,f==null||f(),v(),V(),O(),p==null||p(),this},updateContainerElements:function(c){var f=[].concat(c).filter(Boolean);return i.containers=f.map(function(p){return typeof p=="string"?r.querySelector(p):p}),i.active&&v(),O(),this}},s.updateContainerElements(e),s};function kr(o,e={}){let t;const{immediate:r,...n}=e,a=oe(!1),i=oe(!1),s=d=>t&&t.activate(d),u=d=>t&&t.deactivate(d),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)};return $e(()=>kt(o),d=>{d&&(t=Dr(d,{...n,onActivate(){a.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){a.value=!1,e.onDeactivate&&e.onDeactivate()}}),r&&s())},{flush:"post"}),Ot(()=>u()),{hasFocus:a,isPaused:i,activate:s,deactivate:u,pause:l,unpause:h}}class fe{constructor(e,t=!0,r=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=n}static matches(e,t){const r=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let a=!1;return r.every(i=>n.call(e,i)?(a=!0,!1):!0),a}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(r=>{const n=t.filter(a=>a.contains(r)).length>0;t.indexOf(r)===-1&&!n&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let n;try{const a=e.contentWindow;if(n=a.document,!a||!n)throw new Error("iframe inaccessible")}catch{r()}n&&t(n)}isIframeBlank(e){const t="about:blank",r=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&r!==t&&r}observeIframeLoad(e,t,r){let n=!1,a=null;const i=()=>{if(!n){n=!0,clearTimeout(a);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,r){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,r):this.getIframeContents(e,t,r):this.observeIframeLoad(e,t,r)}catch{r()}}waitForIframes(e,t){let r=0;this.forEachIframe(e,()=>!0,n=>{r++,this.waitForIframes(n.querySelector("html"),()=>{--r||t()})},n=>{n||t()})}forEachIframe(e,t,r,n=()=>{}){let a=e.querySelectorAll("iframe"),i=a.length,s=0;a=Array.prototype.slice.call(a);const u=()=>{--i<=0&&n(s)};i||u(),a.forEach(l=>{fe.matches(l,this.exclude)?u():this.onIframeReady(l,h=>{t(l)&&(s++,r(h)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new fe(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const n=e.compareDocumentPosition(r),a=Node.DOCUMENT_POSITION_PRECEDING;if(n&a)if(t!==null){const i=t.compareDocumentPosition(r),s=Node.DOCUMENT_POSITION_FOLLOWING;if(i&s)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let r;return t===null?r=e.nextNode():r=e.nextNode()&&e.nextNode(),{prevNode:t,node:r}}checkIframeFilter(e,t,r,n){let a=!1,i=!1;return n.forEach((s,u)=>{s.val===r&&(a=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(a===!1&&!i?n.push({val:r,handled:!0}):a!==!1&&!i&&(n[a].handled=!0),!0):(a===!1&&n.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,n){e.forEach(a=>{a.handled||this.getIframeContents(a.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,n)})})}iterateThroughNodes(e,t,r,n,a){const i=this.createIterator(t,e,n);let s=[],u=[],l,h,d=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;d();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,h,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,y=>u.push(y),n)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,n),a()}forEachNode(e,t,r,n=()=>{}){const a=this.getContexts();let i=a.length;i||n(),a.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(s,u):u()})}}let Or=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new fe(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const r=this.opt.log;this.opt.debug&&typeof r=="object"&&typeof r[t]=="function"&&r[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,r=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let a in t)if(t.hasOwnProperty(a)){const i=t[a],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(a):this.escapeStr(a),u=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);s!==""&&u!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(s)}|${this.escapeStr(u)})`,`gm${r}`),n+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,r,n)=>{let a=n.charAt(r+1);return/[(|)\\]/.test(a)||a===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const r=this.opt.ignorePunctuation;return Array.isArray(r)&&r.length&&t.push(this.escapeStr(r.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",r=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(a=>{r.every(i=>{if(i.indexOf(a)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let r=this.opt.accuracy,n=typeof r=="string"?r:r.value,a=typeof r=="string"?[]:r.limiters,i="";switch(a.forEach(s=>{i+=`|${this.escapeStr(s)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(r=>{this.opt.separateWordSearch?r.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,n)=>n.length-r.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let r=0;return e.sort((n,a)=>n.start-a.start).forEach(n=>{let{start:a,end:i,valid:s}=this.callNoMatchOnInvalidRanges(n,r);s&&(n.start=a,n.length=i-a,t.push(n),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,n,a=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),n=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-r>0?a=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:r,end:n,valid:a}}checkWhitespaceRanges(e,t,r){let n,a=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,n=u+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||n-u<0||u>i||n>i?(a=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,n).replace(/\s+/g,"")===""&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:n,valid:a}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{r.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return fe.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const n=this.opt.element?this.opt.element:"mark",a=e.splitText(t),i=a.splitText(r-t);let s=document.createElement(n);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=a.textContent,a.parentNode.replaceChild(s,a),i}wrapRangeInMappedTextNode(e,t,r,n,a){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(r>i.end?i.end:r)-i.start,d=e.value.substr(0,i.start),v=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=d+v,e.nodes.forEach((y,b)=>{b>=s&&(e.nodes[b].start>0&&b!==s&&(e.nodes[b].start-=h),e.nodes[b].end-=h)}),r-=h,a(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,n,a){const i=t===0?0:t+1;this.getTextNodes(s=>{s.nodes.forEach(u=>{u=u.node;let l;for(;(l=e.exec(u.textContent))!==null&&l[i]!=="";){if(!r(l[i],u))continue;let h=l.index;if(i!==0)for(let d=1;d{let u;for(;(u=e.exec(s.value))!==null&&u[i]!=="";){let l=u.index;if(i!==0)for(let d=1;dr(u[i],d),(d,v)=>{e.lastIndex=v,n(d)})}a()})}wrapRangeFromIndex(e,t,r,n){this.getTextNodes(a=>{const i=a.value.length;e.forEach((s,u)=>{let{start:l,end:h,valid:d}=this.checkWhitespaceRanges(s,i,a.value);d&&this.wrapRangeInMappedTextNode(a,l,h,v=>t(v,s,a.value.substring(l,h),u),v=>{r(v,s)})}),n()})}unwrapMatches(e){const t=e.parentNode;let r=document.createDocumentFragment();for(;e.firstChild;)r.appendChild(e.removeChild(e.firstChild));t.replaceChild(r,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let r=0,n="wrapMatches";const a=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),a,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,n="wrapMatches";const{keywords:a,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let h=new RegExp(this.createRegExp(l),`gm${s}`),d=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(v,y)=>this.opt.filter(y,l,r,d),v=>{d++,r++,this.opt.each(v)},()=>{d===0&&this.opt.noMatch(l),a[i-1]===l?this.opt.done(r):u(a[a.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(a[0])}markRanges(e,t){this.opt=t;let r=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(a,i,s,u)=>this.opt.filter(a,i,s,u),(a,i)=>{r++,this.opt.each(a,i)},()=>{this.opt.done(r)})):this.opt.done(r)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,r=>{this.unwrapMatches(r)},r=>{const n=fe.matches(r,t),a=this.matchesExclude(r);return!n||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Rr(o){const e=new Or(o);return this.mark=(t,r)=>(e.mark(t,r),this),this.markRegExp=(t,r)=>(e.markRegExp(t,r),this),this.markRanges=(t,r)=>(e.markRanges(t,r),this),this.unmark=t=>(e.unmark(t),this),this}var W=function(){return W=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&a[a.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]=o.length&&(o=void 0),{value:o&&o[r++],done:!o}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function J(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),n,a=[],i;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(s){i={error:s}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return a}var Lr="ENTRIES",Ft="KEYS",Et="VALUES",G="",Me=function(){function o(e,t){var r=e._tree,n=Array.from(r.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:r,keys:n}]:[]}return o.prototype.next=function(){var e=this.dive();return this.backtrack(),e},o.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=ce(this._path),t=e.node,r=e.keys;if(ce(r)===G)return{done:!1,value:this.result()};var n=t.get(ce(r));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=ce(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},o.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var t=e.keys;return ce(t)}).filter(function(e){return e!==G}).join("")},o.prototype.value=function(){return ce(this._path).node.get(G)},o.prototype.result=function(){switch(this._type){case Et:return this.value();case Ft:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),ce=function(o){return o[o.length-1]},Pr=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var n=e.length+1,a=n+t,i=new Uint8Array(a*n).fill(t+1),s=0;st)continue e}St(o.get(y),e,t,r,n,E,i,s+y)}}}catch(f){u={error:f}}finally{try{v&&!v.done&&(l=d.return)&&l.call(d)}finally{if(u)throw u.error}}},Le=function(){function o(e,t){e===void 0&&(e=new Map),t===void 0&&(t=""),this._size=void 0,this._tree=e,this._prefix=t}return o.prototype.atPrefix=function(e){var t,r;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var n=J(ke(this._tree,e.slice(this._prefix.length)),2),a=n[0],i=n[1];if(a===void 0){var s=J(je(i),2),u=s[0],l=s[1];try{for(var h=D(u.keys()),d=h.next();!d.done;d=h.next()){var v=d.value;if(v!==G&&v.startsWith(l)){var y=new Map;return y.set(v.slice(l.length),u.get(v)),new o(y,e)}}}catch(b){t={error:b}}finally{try{d&&!d.done&&(r=h.return)&&r.call(h)}finally{if(t)throw t.error}}}return new o(a,e)},o.prototype.clear=function(){this._size=void 0,this._tree.clear()},o.prototype.delete=function(e){return this._size=void 0,zr(this._tree,e)},o.prototype.entries=function(){return new Me(this,Lr)},o.prototype.forEach=function(e){var t,r;try{for(var n=D(this),a=n.next();!a.done;a=n.next()){var i=J(a.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return Pr(this._tree,e,t)},o.prototype.get=function(e){var t=Ke(this._tree,e);return t!==void 0?t.get(G):void 0},o.prototype.has=function(e){var t=Ke(this._tree,e);return t!==void 0&&t.has(G)},o.prototype.keys=function(){return new Me(this,Ft)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Pe(this._tree,e);return r.set(G,t),this},Object.defineProperty(o.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),o.prototype.update=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Pe(this._tree,e);return r.set(G,t(r.get(G))),this},o.prototype.fetch=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Pe(this._tree,e),n=r.get(G);return n===void 0&&r.set(G,n=t()),n},o.prototype.values=function(){return new Me(this,Et)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,n=new o;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=J(i.value,2),u=s[0],l=s[1];n.set(u,l)}}catch(h){t={error:h}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return n},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),ke=function(o,e,t){var r,n;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var a=D(o.keys()),i=a.next();!i.done;i=a.next()){var s=i.value;if(s!==G&&e.startsWith(s))return t.push([o,s]),ke(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return t.push([o,e]),ke(void 0,"",t)},Ke=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var n=D(o.keys()),a=n.next();!a.done;a=n.next()){var i=a.value;if(i!==G&&e.startsWith(i))return Ke(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},Pe=function(o,e){var t,r,n=e.length;e:for(var a=0;o&&a0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Le,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},o.prototype.discard=function(e){var t=this,r=this._idToShortId.get(e);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(n,a){t.removeFieldLength(r,a,t._documentCount,n)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},o.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,t=e.minDirtFactor,r=e.minDirtCount,n=e.batchSize,a=e.batchWait;this.conditionalVacuum({batchSize:n,batchWait:a},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,n=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=n}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,n=t.extractField,a=n(e,r);this.discard(a),this.add(e)},o.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},o.prototype.conditionalVacuum=function(e,t){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var n=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=Ue,r.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return _r(this,void 0,void 0,function(){var r,n,a,i,s,u,l,h,d,v,y,b,E,g,S,T,F,L,_,V,N,R,A,O,w;return Mr(this,function(c){switch(c.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];n=e.batchSize||Je.batchSize,a=e.batchWait||Je.batchWait,i=1,c.label=1;case 1:c.trys.push([1,7,8,9]),s=D(this._index),u=s.next(),c.label=2;case 2:if(u.done)return[3,6];l=J(u.value,2),h=l[0],d=l[1];try{for(v=(R=void 0,D(d)),y=v.next();!y.done;y=v.next()){b=J(y.value,2),E=b[0],g=b[1];try{for(S=(O=void 0,D(g)),T=S.next();!T.done;T=S.next())F=J(T.value,1),L=F[0],!this._documentIds.has(L)&&(g.size<=1?d.delete(E):g.delete(L))}catch(f){O={error:f}}finally{try{T&&!T.done&&(w=S.return)&&w.call(S)}finally{if(O)throw O.error}}}}catch(f){R={error:f}}finally{try{y&&!y.done&&(A=v.return)&&A.call(v)}finally{if(R)throw R.error}}return this._index.get(h).size===0&&this._index.delete(h),i%n!==0?[3,4]:[4,new Promise(function(f){return setTimeout(f,a)})];case 3:c.sent(),c.label=4;case 4:i+=1,c.label=5;case 5:return u=s.next(),[3,2];case 6:return[3,9];case 7:return _=c.sent(),V={error:_},[3,9];case 8:try{u&&!u.done&&(N=s.return)&&N.call(s)}finally{if(V)throw V.error}return[7];case 9:this._dirtCount-=r,c.label=10;case 10:return[4,null];case 11:return c.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},o.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var t=e.minDirtCount,r=e.minDirtFactor;return t=t||Ve.minDirtCount,r=r||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=r},Object.defineProperty(o.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),o.prototype.has=function(e){return this._idToShortId.has(e)},o.prototype.getStoredFields=function(e){var t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)},o.prototype.search=function(e,t){var r,n;t===void 0&&(t={});var a=this.executeQuery(e,t),i=[];try{for(var s=D(a),u=s.next();!u.done;u=s.next()){var l=J(u.value,2),h=l[0],d=l[1],v=d.score,y=d.terms,b=d.match,E=y.length||1,g={id:this._documentIds.get(h),score:v*E,terms:Object.keys(b),queryTerms:y,match:b};Object.assign(g,this._storedFields.get(h)),(t.filter==null||t.filter(g))&&i.push(g)}}catch(S){r={error:S}}finally{try{u&&!u.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return e===o.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||i.sort(vt),i},o.prototype.autoSuggest=function(e,t){var r,n,a,i;t===void 0&&(t={}),t=W(W({},this._options.autoSuggestOptions),t);var s=new Map;try{for(var u=D(this.search(e,t)),l=u.next();!l.done;l=u.next()){var h=l.value,d=h.score,v=h.terms,y=v.join(" "),b=s.get(y);b!=null?(b.score+=d,b.count+=1):s.set(y,{score:d,terms:v,count:1})}}catch(_){r={error:_}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(r)throw r.error}}var E=[];try{for(var g=D(s),S=g.next();!S.done;S=g.next()){var T=J(S.value,2),b=T[0],F=T[1],d=F.score,v=F.terms,L=F.count;E.push({suggestion:b,terms:v,score:d/L})}}catch(_){a={error:_}}finally{try{S&&!S.done&&(i=g.return)&&i.call(g)}finally{if(a)throw a.error}}return E.sort(vt),E},Object.defineProperty(o.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),o.loadJSON=function(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)},o.getDefault=function(e){if(Be.hasOwnProperty(e))return ze(Be,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,n,a,i,s,u,l=e.index,h=e.documentCount,d=e.nextId,v=e.documentIds,y=e.fieldIds,b=e.fieldLength,E=e.averageFieldLength,g=e.storedFields,S=e.dirtCount,T=e.serializationVersion;if(T!==1&&T!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var F=new o(t);F._documentCount=h,F._nextId=d,F._documentIds=Te(v),F._idToShortId=new Map,F._fieldIds=y,F._fieldLength=Te(b),F._avgFieldLength=E,F._storedFields=Te(g),F._dirtCount=S||0,F._index=new Le;try{for(var L=D(F._documentIds),_=L.next();!_.done;_=L.next()){var V=J(_.value,2),N=V[0],R=V[1];F._idToShortId.set(R,N)}}catch(z){r={error:z}}finally{try{_&&!_.done&&(n=L.return)&&n.call(L)}finally{if(r)throw r.error}}try{for(var A=D(l),O=A.next();!O.done;O=A.next()){var w=J(O.value,2),c=w[0],f=w[1],p=new Map;try{for(var C=(s=void 0,D(Object.keys(f))),I=C.next();!I.done;I=C.next()){var M=I.value,P=f[M];T===1&&(P=P.ds),p.set(parseInt(M,10),Te(P))}}catch(z){s={error:z}}finally{try{I&&!I.done&&(u=C.return)&&u.call(C)}finally{if(s)throw s.error}}F._index.set(c,p)}}catch(z){a={error:z}}finally{try{O&&!O.done&&(i=A.return)&&i.call(A)}finally{if(a)throw a.error}}return F},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),e===o.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){var n=W(W(W({},t),e),{queries:void 0}),a=e.queries.map(function(g){return r.executeQuery(g,n)});return this.combineResults(a,n.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,h=W(W({tokenize:s,processTerm:u},l),t),d=h.tokenize,v=h.processTerm,y=d(e).flatMap(function(g){return v(g)}).filter(function(g){return!!g}),b=y.map(Jr(h)),E=b.map(function(g){return r.executeQuerySpec(g,h)});return this.combineResults(E,h.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,n,a,i,s=W(W({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(M,P){var z;return W(W({},M),(z={},z[P]=ze(s.boost,P)||1,z))},{}),l=s.boostDocument,h=s.weights,d=s.maxFuzzy,v=s.bm25,y=W(W({},ht.weights),h),b=y.fuzzy,E=y.prefix,g=this._index.get(e.term),S=this.termResults(e.term,e.term,1,g,u,l,v),T,F;if(e.prefix&&(T=this._index.atPrefix(e.term)),e.fuzzy){var L=e.fuzzy===!0?.2:e.fuzzy,_=L<1?Math.min(d,Math.round(e.term.length*L)):L;_&&(F=this._index.fuzzyGet(e.term,_))}if(T)try{for(var V=D(T),N=V.next();!N.done;N=V.next()){var R=J(N.value,2),A=R[0],O=R[1],w=A.length-e.term.length;if(w){F==null||F.delete(A);var c=E*A.length/(A.length+.3*w);this.termResults(e.term,A,c,O,u,l,v,S)}}}catch(M){r={error:M}}finally{try{N&&!N.done&&(n=V.return)&&n.call(V)}finally{if(r)throw r.error}}if(F)try{for(var f=D(F.keys()),p=f.next();!p.done;p=f.next()){var A=p.value,C=J(F.get(A),2),I=C[0],w=C[1];if(w){var c=b*A.length/(A.length+w);this.termResults(e.term,A,c,I,u,l,v,S)}}}catch(M){a={error:M}}finally{try{p&&!p.done&&(i=f.return)&&i.call(f)}finally{if(a)throw a.error}}return S},o.prototype.executeWildcardQuery=function(e){var t,r,n=new Map,a=W(W({},this._options.searchOptions),e);try{for(var i=D(this._documentIds),s=i.next();!s.done;s=i.next()){var u=J(s.value,2),l=u[0],h=u[1],d=a.boostDocument?a.boostDocument(h,"",this._storedFields.get(l)):1;n.set(l,{score:d,terms:[],match:{}})}}catch(v){t={error:v}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return n},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=Ge),e.length===0)return new Map;var r=t.toLowerCase();return e.reduce($r[r])||new Map},o.prototype.toJSON=function(){var e,t,r,n,a=[];try{for(var i=D(this._index),s=i.next();!s.done;s=i.next()){var u=J(s.value,2),l=u[0],h=u[1],d={};try{for(var v=(r=void 0,D(h)),y=v.next();!y.done;y=v.next()){var b=J(y.value,2),E=b[0],g=b[1];d[E]=Object.fromEntries(g)}}catch(S){r={error:S}}finally{try{y&&!y.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}a.push([l,d])}}catch(S){e={error:S}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:a,serializationVersion:2}},o.prototype.termResults=function(e,t,r,n,a,i,s,u){var l,h,d,v,y;if(u===void 0&&(u=new Map),n==null)return u;try{for(var b=D(Object.keys(a)),E=b.next();!E.done;E=b.next()){var g=E.value,S=a[g],T=this._fieldIds[g],F=n.get(T);if(F!=null){var L=F.size,_=this._avgFieldLength[T];try{for(var V=(d=void 0,D(F.keys())),N=V.next();!N.done;N=V.next()){var R=N.value;if(!this._documentIds.has(R)){this.removeTerm(T,R,t),L-=1;continue}var A=i?i(this._documentIds.get(R),t,this._storedFields.get(R)):1;if(A){var O=F.get(R),w=this._fieldLength.get(R)[T],c=Kr(O,L,this._documentCount,w,_,s),f=r*S*A*c,p=u.get(R);if(p){p.score+=f,jr(p.terms,e);var C=ze(p.match,t);C?C.push(g):p.match[t]=[g]}else u.set(R,{score:f,terms:[e],match:(y={},y[t]=[g],y)})}}}catch(I){d={error:I}}finally{try{N&&!N.done&&(v=V.return)&&v.call(V)}finally{if(d)throw d.error}}}}}catch(I){l={error:I}}finally{try{E&&!E.done&&(h=b.return)&&h.call(b)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var n=this._index.fetch(r,pt),a=n.get(e);if(a==null)a=new Map,a.set(t,1),n.set(e,a);else{var i=a.get(t);a.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var n=this._index.fetch(r,pt),a=n.get(e);a==null||a.get(t)==null?this.warnDocumentChanged(t,e,r):a.get(t)<=1?a.size<=1?n.delete(e):a.delete(t):a.set(t,a.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var n,a;try{for(var i=D(Object.keys(this._fieldIds)),s=i.next();!s.done;s=i.next()){var u=s.value;if(this._fieldIds[u]===t){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(r,'" was not present in field "').concat(u,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(l){n={error:l}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}},o.prototype.addDocumentId=function(e){var t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t},o.prototype.addFields=function(e){for(var t=0;t(qt("data-v-cb4e1afe"),o=o(),Ht(),o),qr=["aria-owns"],Hr={class:"shell"},Yr=["title"],Zr=Y(()=>k("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)),Xr=[Zr],ea={class:"search-actions before"},ta=["title"],ra=Y(()=>k("span",{class:"vpi-arrow-left local-search-icon"},null,-1)),aa=[ra],na=["placeholder"],ia={class:"search-actions"},oa=["title"],sa=Y(()=>k("span",{class:"vpi-layout-list local-search-icon"},null,-1)),ua=[sa],la=["disabled","title"],ca=Y(()=>k("span",{class:"vpi-delete local-search-icon"},null,-1)),fa=[ca],ha=["id","role","aria-labelledby"],da=["aria-selected"],va=["href","aria-label","onMouseenter","onFocusin"],pa={class:"titles"},ya=Y(()=>k("span",{class:"title-icon"},"#",-1)),ma=["innerHTML"],ga=Y(()=>k("span",{class:"vpi-chevron-right local-search-icon"},null,-1)),ba={class:"title main"},wa=["innerHTML"],xa={key:0,class:"excerpt-wrapper"},Fa={key:0,class:"excerpt",inert:""},Ea=["innerHTML"],Sa=Y(()=>k("div",{class:"excerpt-gradient-bottom"},null,-1)),Aa=Y(()=>k("div",{class:"excerpt-gradient-top"},null,-1)),Ta={key:0,class:"no-results"},Na={class:"search-keyboard-shortcuts"},Ca=["aria-label"],Ia=Y(()=>k("span",{class:"vpi-arrow-up navigate-icon"},null,-1)),Da=[Ia],ka=["aria-label"],Oa=Y(()=>k("span",{class:"vpi-arrow-down navigate-icon"},null,-1)),Ra=[Oa],_a=["aria-label"],Ma=Y(()=>k("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)),La=[Ma],Pa=["aria-label"],za=Rt({__name:"VPLocalSearchBox",emits:["close"],setup(o,{emit:e}){var P,z;const t=e,r=xe(),n=xe(),a=xe(nr),i=rr(),{activate:s}=kr(r,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:u,theme:l}=i,h=tt(async()=>{var m,x,$,K,Q,q,B,U,Z;return it(Vr.loadJSON(($=await((x=(m=a.value)[u.value])==null?void 0:x.call(m)))==null?void 0:$.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((K=l.value.search)==null?void 0:K.provider)==="local"&&((q=(Q=l.value.search.options)==null?void 0:Q.miniSearch)==null?void 0:q.searchOptions)},...((B=l.value.search)==null?void 0:B.provider)==="local"&&((Z=(U=l.value.search.options)==null?void 0:U.miniSearch)==null?void 0:Z.options)}))}),v=Fe(()=>{var m,x;return((m=l.value.search)==null?void 0:m.provider)==="local"&&((x=l.value.search.options)==null?void 0:x.disableQueryPersistence)===!0}).value?oe(""):_t("vitepress:local-search-filter",""),y=Mt("vitepress:local-search-detailed-list",((P=l.value.search)==null?void 0:P.provider)==="local"&&((z=l.value.search.options)==null?void 0:z.detailedView)===!0),b=Fe(()=>{var m,x,$;return((m=l.value.search)==null?void 0:m.provider)==="local"&&(((x=l.value.search.options)==null?void 0:x.disableDetailedView)===!0||(($=l.value.search.options)==null?void 0:$.detailedView)===!1)}),E=Fe(()=>{var x,$,K,Q,q,B,U;const m=((x=l.value.search)==null?void 0:x.options)??l.value.algolia;return((q=(Q=(K=($=m==null?void 0:m.locales)==null?void 0:$[u.value])==null?void 0:K.translations)==null?void 0:Q.button)==null?void 0:q.buttonText)||((U=(B=m==null?void 0:m.translations)==null?void 0:B.button)==null?void 0:U.buttonText)||"Search"});Lt(()=>{b.value&&(y.value=!1)});const g=xe([]),S=oe(!1);$e(v,()=>{S.value=!1});const T=tt(async()=>{if(n.value)return it(new Rr(n.value))},null),F=new Qr(16);Pt(()=>[h.value,v.value,y.value],async([m,x,$],K,Q)=>{var be,Qe,qe,He;(K==null?void 0:K[0])!==m&&F.clear();let q=!1;if(Q(()=>{q=!0}),!m)return;g.value=m.search(x).slice(0,16),S.value=!0;const B=$?await Promise.all(g.value.map(H=>L(H.id))):[];if(q)return;for(const{id:H,mod:ae}of B){const ne=H.slice(0,H.indexOf("#"));let te=F.get(ne);if(te)continue;te=new Map,F.set(ne,te);const X=ae.default??ae;if(X!=null&&X.render||X!=null&&X.setup){const ie=Yt(X);ie.config.warnHandler=()=>{},ie.provide(Zt,i),Object.defineProperties(ie.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");ie.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(he=>{var et;const we=(et=he.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(he=he.nextElementSibling)&&!/^h[1-6]$/i.test(he.tagName);)Xe+=he.outerHTML;te.set(Ze,Xe)}),ie.unmount()}if(q)return}const U=new Set;if(g.value=g.value.map(H=>{const[ae,ne]=H.id.split("#"),te=F.get(ae),X=(te==null?void 0:te.get(ne))??"";for(const ie in H.match)U.add(ie);return{...H,text:X}}),await de(),q)return;await new Promise(H=>{var ae;(ae=T.value)==null||ae.unmark({done:()=>{var ne;(ne=T.value)==null||ne.markRegExp(M(U),{done:H})}})});const Z=((be=r.value)==null?void 0:be.querySelectorAll(".result .excerpt"))??[];for(const H of Z)(Qe=H.querySelector('mark[data-markjs="true"]'))==null||Qe.scrollIntoView({block:"center"});(He=(qe=n.value)==null?void 0:qe.firstElementChild)==null||He.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function L(m){const x=Xt(m.slice(0,m.indexOf("#")));try{if(!x)throw new Error(`Cannot find file for id: ${m}`);return{id:m,mod:await import(x)}}catch($){return console.error($),{id:m,mod:{}}}}const _=oe(),V=Fe(()=>{var m;return((m=v.value)==null?void 0:m.length)<=0});function N(m=!0){var x,$;(x=_.value)==null||x.focus(),m&&(($=_.value)==null||$.select())}Re(()=>{N()});function R(m){m.pointerType==="mouse"&&N()}const A=oe(-1),O=oe(!1);$e(g,m=>{A.value=m.length?0:-1,w()});function w(){de(()=>{const m=document.querySelector(".result.selected");m==null||m.scrollIntoView({block:"nearest"})})}Ee("ArrowUp",m=>{m.preventDefault(),A.value--,A.value<0&&(A.value=g.value.length-1),O.value=!0,w()}),Ee("ArrowDown",m=>{m.preventDefault(),A.value++,A.value>=g.value.length&&(A.value=0),O.value=!0,w()});const c=zt();Ee("Enter",m=>{if(m.isComposing||m.target instanceof HTMLButtonElement&&m.target.type!=="submit")return;const x=g.value[A.value];if(m.target instanceof HTMLInputElement&&!x){m.preventDefault();return}x&&(c.go(x.id),t("close"))}),Ee("Escape",()=>{t("close")});const p=ar({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Re(()=>{window.history.pushState(null,"",null)}),Bt("popstate",m=>{m.preventDefault(),t("close")});const C=Vt($t?document.body:null);Re(()=>{de(()=>{C.value=!0,de().then(()=>s())})}),Wt(()=>{C.value=!1});function I(){v.value="",de().then(()=>N(!1))}function M(m){return new RegExp([...m].sort((x,$)=>$.length-x.length).map(x=>`(${er(x)})`).join("|"),"gi")}return(m,x)=>{var $,K,Q,q;return ee(),Kt(Qt,{to:"body"},[k("div",{ref_key:"el",ref:r,role:"button","aria-owns":($=g.value)!=null&&$.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[k("div",{class:"backdrop",onClick:x[0]||(x[0]=B=>m.$emit("close"))}),k("div",Hr,[k("form",{class:"search-bar",onPointerup:x[4]||(x[4]=B=>R(B)),onSubmit:x[5]||(x[5]=Jt(()=>{},["prevent"]))},[k("label",{title:E.value,id:"localsearch-label",for:"localsearch-input"},Xr,8,Yr),k("div",ea,[k("button",{class:"back-button",title:j(p)("modal.backButtonTitle"),onClick:x[1]||(x[1]=B=>m.$emit("close"))},aa,8,ta)]),Ut(k("input",{ref_key:"searchInput",ref:_,"onUpdate:modelValue":x[2]||(x[2]=B=>Gt(v)?v.value=B:null),placeholder:E.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,na),[[jt,j(v)]]),k("div",ia,[b.value?Se("",!0):(ee(),re("button",{key:0,class:rt(["toggle-layout-button",{"detailed-list":j(y)}]),type:"button",title:j(p)("modal.displayDetails"),onClick:x[3]||(x[3]=B=>A.value>-1&&(y.value=!j(y)))},ua,10,oa)),k("button",{class:"clear-button",type:"reset",disabled:V.value,title:j(p)("modal.resetButtonTitle"),onClick:I},fa,8,la)])],32),k("ul",{ref_key:"resultsEl",ref:n,id:(K=g.value)!=null&&K.length?"localsearch-list":void 0,role:(Q=g.value)!=null&&Q.length?"listbox":void 0,"aria-labelledby":(q=g.value)!=null&&q.length?"localsearch-label":void 0,class:"results",onMousemove:x[7]||(x[7]=B=>O.value=!1)},[(ee(!0),re(nt,null,at(g.value,(B,U)=>(ee(),re("li",{key:B.id,role:"option","aria-selected":A.value===U?"true":"false"},[k("a",{href:B.id,class:rt(["result",{selected:A.value===U}]),"aria-label":[...B.titles,B.title].join(" > "),onMouseenter:Z=>!O.value&&(A.value=U),onFocusin:Z=>A.value=U,onClick:x[6]||(x[6]=Z=>m.$emit("close"))},[k("div",null,[k("div",pa,[ya,(ee(!0),re(nt,null,at(B.titles,(Z,be)=>(ee(),re("span",{key:be,class:"title"},[k("span",{class:"text",innerHTML:Z},null,8,ma),ga]))),128)),k("span",ba,[k("span",{class:"text",innerHTML:B.title},null,8,wa)])]),j(y)?(ee(),re("div",xa,[B.text?(ee(),re("div",Fa,[k("div",{class:"vp-doc",innerHTML:B.text},null,8,Ea)])):Se("",!0),Sa,Aa])):Se("",!0)])],42,va)],8,da))),128)),j(v)&&!g.value.length&&S.value?(ee(),re("li",Ta,[ve(pe(j(p)("modal.noResultsText"))+' "',1),k("strong",null,pe(j(v)),1),ve('" ')])):Se("",!0)],40,ha),k("div",Na,[k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.navigateUpKeyAriaLabel")},Da,8,Ca),k("kbd",{"aria-label":j(p)("modal.footer.navigateDownKeyAriaLabel")},Ra,8,ka),ve(" "+pe(j(p)("modal.footer.navigateText")),1)]),k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.selectKeyAriaLabel")},La,8,_a),ve(" "+pe(j(p)("modal.footer.selectText")),1)]),k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.closeKeyAriaLabel")},"esc",8,Pa),ve(" "+pe(j(p)("modal.footer.closeText")),1)])])])],8,qr)])}}}),Ja=tr(za,[["__scopeId","data-v-cb4e1afe"]]);export{Ja as default}; diff --git a/assets/chunks/framework.Bsyxd66g.js b/assets/chunks/framework.Bsyxd66g.js new file mode 100644 index 0000000..b7f292c --- /dev/null +++ b/assets/chunks/framework.Bsyxd66g.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.31 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function wr(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const te={},mt=[],xe=()=>{},Ii=()=>!1,Kt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Er=e=>e.startsWith("onUpdate:"),le=Object.assign,Cr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Mi=Object.prototype.hasOwnProperty,z=(e,t)=>Mi.call(e,t),K=Array.isArray,yt=e=>Sn(e)==="[object Map]",zs=e=>Sn(e)==="[object Set]",k=e=>typeof e=="function",oe=e=>typeof e=="string",Ze=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Js=e=>(Z(e)||k(e))&&k(e.then)&&k(e.catch),Qs=Object.prototype.toString,Sn=e=>Qs.call(e),Pi=e=>Sn(e).slice(8,-1),Zs=e=>Sn(e)==="[object Object]",xr=e=>oe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=wr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Tn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ni=/-(\w)/g,$e=Tn(e=>e.replace(Ni,(t,n)=>n?n.toUpperCase():"")),Fi=/\B([A-Z])/g,ft=Tn(e=>e.replace(Fi,"-$1").toLowerCase()),An=Tn(e=>e.charAt(0).toUpperCase()+e.slice(1)),un=Tn(e=>e?`on${An(e)}`:""),Je=(e,t)=>!Object.is(e,t),fn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},cr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},$i=e=>{const t=oe(e)?Number(e):NaN;return isNaN(t)?e:t};let Jr;const to=()=>Jr||(Jr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Sr(e){if(K(e)){const t={};for(let n=0;n{if(n){const r=n.split(ji);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Tr(e){let t="";if(oe(e))t=e;else if(K(e))for(let n=0;n!!(e&&e.__v_isRef===!0),Ki=e=>oe(e)?e:e==null?"":K(e)||Z(e)&&(e.toString===Qs||!k(e.toString))?ro(e)?Ki(e.value):JSON.stringify(e,so,2):String(e),so=(e,t)=>ro(t)?so(e,t.value):yt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[Kn(r,o)+" =>"]=s,n),{})}:zs(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Kn(n))}:Ze(t)?Kn(t):Z(t)&&!K(t)&&!Zs(t)?String(t):t,Kn=(e,t="")=>{var n;return Ze(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.31 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let we;class ki{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=we;try{return we=this,t()}finally{we=n}}}on(){we=this}off(){we=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),tt()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ye,n=ct;try{return Ye=!0,ct=this,this._runnings++,Qr(this),this.fn()}finally{Zr(this),this._runnings--,ct=n,Ye=t}}stop(){this.active&&(Qr(this),Zr(this),this.onStop&&this.onStop(),this.active=!1)}}function Gi(e){return e.value}function Qr(e){e._trackId++,e._depsLength=0}function Zr(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},mn=new WeakMap,at=Symbol(""),fr=Symbol("");function ve(e,t,n){if(Ye&&ct){let r=mn.get(e);r||mn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=uo(()=>r.delete(n))),co(ct,s)}}function De(e,t,n,r,s,o){const i=mn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&K(e)){const c=Number(r);i.forEach((a,f)=>{(f==="length"||!Ze(f)&&f>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":K(e)?xr(n)&&l.push(i.get("length")):(l.push(i.get(at)),yt(e)&&l.push(i.get(fr)));break;case"delete":K(e)||(l.push(i.get(at)),yt(e)&&l.push(i.get(fr)));break;case"set":yt(e)&&l.push(i.get(at));break}Rr();for(const c of l)c&&ao(c,4);Or()}function Xi(e,t){const n=mn.get(e);return n&&n.get(t)}const Yi=wr("__proto__,__v_isRef,__isVue"),fo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ze)),es=zi();function zi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){et(),Rr();const r=J(this)[t].apply(this,n);return Or(),tt(),r}}),e}function Ji(e){Ze(e)||(e=String(e));const t=J(this);return ve(t,"has",e),t.hasOwnProperty(e)}class ho{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?ul:yo:o?mo:go).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=K(t);if(!s){if(i&&z(es,n))return Reflect.get(es,n,r);if(n==="hasOwnProperty")return Ji}const l=Reflect.get(t,n,r);return(Ze(n)?fo.has(n):Yi(n))||(s||ve(t,"get",n),o)?l:de(l)?i&&xr(n)?l:l.value:Z(l)?s?Ln(l):On(l):l}}class po extends ho{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=$t(o);if(!yn(r)&&!$t(r)&&(o=J(o),r=J(r)),!K(t)&&de(o)&&!de(r))return c?!1:(o.value=r,!0)}const i=K(t)&&xr(n)?Number(n)e,Rn=e=>Reflect.getPrototypeOf(e);function zt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(Je(t,o)&&ve(s,"get",t),ve(s,"get",o));const{has:i}=Rn(s),l=r?Lr:n?Pr:Ht;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Jt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(Je(e,s)&&ve(r,"has",e),ve(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Qt(e,t=!1){return e=e.__v_raw,!t&&ve(J(e),"iterate",at),Reflect.get(e,"size",e)}function ts(e){e=J(e);const t=J(this);return Rn(t).has.call(t,e)||(t.add(e),De(t,"add",e,e)),this}function ns(e,t){t=J(t);const n=J(this),{has:r,get:s}=Rn(n);let o=r.call(n,e);o||(e=J(e),o=r.call(n,e));const i=s.call(n,e);return n.set(e,t),o?Je(t,i)&&De(n,"set",e,t):De(n,"add",e,t),this}function rs(e){const t=J(this),{has:n,get:r}=Rn(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&De(t,"delete",e,void 0),o}function ss(){const e=J(this),t=e.size!==0,n=e.clear();return t&&De(e,"clear",void 0,void 0),n}function Zt(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Lr:e?Pr:Ht;return!e&&ve(l,"iterate",at),i.forEach((a,f)=>r.call(s,c(a),c(f),o))}}function en(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=yt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=s[e](...r),f=n?Lr:t?Pr:Ht;return!t&&ve(o,"iterate",c?fr:at),{next(){const{value:h,done:m}=a.next();return m?{value:h,done:m}:{value:l?[f(h[0]),f(h[1])]:f(h),done:m}},[Symbol.iterator](){return this}}}}function Be(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function nl(){const e={get(o){return zt(this,o)},get size(){return Qt(this)},has:Jt,add:ts,set:ns,delete:rs,clear:ss,forEach:Zt(!1,!1)},t={get(o){return zt(this,o,!1,!0)},get size(){return Qt(this)},has:Jt,add:ts,set:ns,delete:rs,clear:ss,forEach:Zt(!1,!0)},n={get(o){return zt(this,o,!0)},get size(){return Qt(this,!0)},has(o){return Jt.call(this,o,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:Zt(!0,!1)},r={get(o){return zt(this,o,!0,!0)},get size(){return Qt(this,!0)},has(o){return Jt.call(this,o,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:Zt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=en(o,!1,!1),n[o]=en(o,!0,!1),t[o]=en(o,!1,!0),r[o]=en(o,!0,!0)}),[e,n,t,r]}const[rl,sl,ol,il]=nl();function Ir(e,t){const n=t?e?il:ol:e?sl:rl;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(z(n,s)&&s in r?n:r,s,o)}const ll={get:Ir(!1,!1)},cl={get:Ir(!1,!0)},al={get:Ir(!0,!1)};const go=new WeakMap,mo=new WeakMap,yo=new WeakMap,ul=new WeakMap;function fl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function dl(e){return e.__v_skip||!Object.isExtensible(e)?0:fl(Pi(e))}function On(e){return $t(e)?e:Mr(e,!1,Zi,ll,go)}function hl(e){return Mr(e,!1,tl,cl,mo)}function Ln(e){return Mr(e,!0,el,al,yo)}function Mr(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=dl(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function Rt(e){return $t(e)?Rt(e.__v_raw):!!(e&&e.__v_isReactive)}function $t(e){return!!(e&&e.__v_isReadonly)}function yn(e){return!!(e&&e.__v_isShallow)}function _o(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function dn(e){return Object.isExtensible(e)&&eo(e,"__v_skip",!0),e}const Ht=e=>Z(e)?On(e):e,Pr=e=>Z(e)?Ln(e):e;class vo{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ar(()=>t(this._value),()=>Ot(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Je(t._value,t._value=t.effect.run())&&Ot(t,4),Nr(t),t.effect._dirtyLevel>=2&&Ot(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function pl(e,t,n=!1){let r,s;const o=k(e);return o?(r=e,s=xe):(r=e.get,s=e.set),new vo(r,s,o||!s,n)}function Nr(e){var t;Ye&&ct&&(e=J(e),co(ct,(t=e.dep)!=null?t:e.dep=uo(()=>e.dep=void 0,e instanceof vo?e:void 0)))}function Ot(e,t=4,n,r){e=J(e);const s=e.dep;s&&ao(s,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function se(e){return bo(e,!1)}function Fr(e){return bo(e,!0)}function bo(e,t){return de(e)?e:new gl(e,t)}class gl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Ht(t)}get value(){return Nr(this),this._value}set value(t){const n=this.__v_isShallow||yn(t)||$t(t);t=n?t:J(t),Je(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=n?t:Ht(t),Ot(this,4))}}function wo(e){return de(e)?e.value:e}const ml={get:(e,t,n)=>wo(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return de(s)&&!de(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Eo(e){return Rt(e)?e:new Proxy(e,ml)}class yl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Nr(this),()=>Ot(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function _l(e){return new yl(e)}class vl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Xi(J(this._object),this._key)}}class bl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function wl(e,t,n){return de(e)?e:k(e)?new bl(e):Z(e)&&arguments.length>1?El(e,t,n):se(e)}function El(e,t,n){const r=e[t];return de(r)?r:new vl(e,t,n)}/** +* @vue/runtime-core v3.4.31 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function ze(e,t,n,r){try{return r?e(...r):e()}catch(s){kt(s,t,n)}}function Se(e,t,n,r){if(k(e)){const s=ze(e,t,n,r);return s&&Js(s)&&s.catch(o=>{kt(o,t,n)}),s}if(K(e)){const s=[];for(let o=0;o>>1,s=pe[r],o=Vt(s);oPe&&pe.splice(t,1)}function Tl(e){K(e)?vt.push(...e):(!We||!We.includes(e,e.allowRecurse?it+1:it))&&vt.push(e),xo()}function os(e,t,n=jt?Pe+1:0){for(;nVt(n)-Vt(r));if(vt.length=0,We){We.push(...t);return}for(We=t,it=0;ite.id==null?1/0:e.id,Al=(e,t)=>{const n=Vt(e)-Vt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function So(e){dr=!1,jt=!0,pe.sort(Al);try{for(Pe=0;Peoe(_)?_.trim():_)),h&&(s=n.map(cr))}let l,c=r[l=un(t)]||r[l=un($e(t))];!c&&o&&(c=r[l=un(ft(t))]),c&&Se(c,e,6,s);const a=r[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Se(a,e,6,s)}}function To(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!k(e)){const c=a=>{const f=To(a,t,!0);f&&(l=!0,le(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(K(o)?o.forEach(c=>i[c]=null):le(i,o),Z(e)&&r.set(e,i),i)}function Pn(e,t){return!e||!Kt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,ft(t))||z(e,t))}let fe=null,Nn=null;function vn(e){const t=fe;return fe=e,Nn=e&&e.type.__scopeId||null,t}function su(e){Nn=e}function ou(){Nn=null}function Ol(e,t=fe,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&ws(-1);const o=vn(t);let i;try{i=e(...s)}finally{vn(o),r._d&&ws(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function kn(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:c,render:a,renderCache:f,props:h,data:m,setupState:_,ctx:C,inheritAttrs:I}=e,H=vn(e);let W,D;try{if(n.shapeFlag&4){const y=s||r,M=y;W=Ae(a.call(M,y,f,h,_,m,C)),D=l}else{const y=t;W=Ae(y.length>1?y(h,{attrs:l,slots:i,emit:c}):y(h,null)),D=t.props?l:Ll(l)}}catch(y){Nt.length=0,kt(y,e,1),W=ie(me)}let p=W;if(D&&I!==!1){const y=Object.keys(D),{shapeFlag:M}=p;y.length&&M&7&&(o&&y.some(Er)&&(D=Il(D,o)),p=Qe(p,D,!1,!0))}return n.dirs&&(p=Qe(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&(p.transition=n.transition),W=p,vn(H),W}const Ll=e=>{let t;for(const n in e)(n==="class"||n==="style"||Kt(n))&&((t||(t={}))[n]=e[n]);return t},Il=(e,t)=>{const n={};for(const r in e)(!Er(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Ml(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?is(r,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Lo(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):Tl(e)}function Fn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{et();const l=qt(n),c=Se(t,n,e,i);return l(),tt(),c});return r?s.unshift(o):s.push(o),o}}const Ue=e=>(t,n=ue)=>{(!Gt||e==="sp")&&Fn(e,(...r)=>t(...r),n)},Fl=Ue("bm"),xt=Ue("m"),$l=Ue("bu"),Hl=Ue("u"),Io=Ue("bum"),$n=Ue("um"),jl=Ue("sp"),Vl=Ue("rtg"),Dl=Ue("rtc");function Ul(e,t=ue){Fn("ec",e,t)}function cu(e,t){if(fe===null)return e;const n=Vn(fe),r=e.dirs||(e.dirs=[]);for(let s=0;st(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;l!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function uu(e){k(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,a,f=0;const h=()=>(f++,c=null,m()),m=()=>{let _;return c||(_=c=t().catch(C=>{if(C=C instanceof Error?C:new Error(String(C)),l)return new Promise((I,H)=>{l(C,()=>I(h()),()=>H(C),f+1)});throw C}).then(C=>_!==c&&c?c:(C&&(C.__esModule||C[Symbol.toStringTag]==="Module")&&(C=C.default),a=C,C)))};return Hr({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return a},setup(){const _=ue;if(a)return()=>Wn(a,_);const C=D=>{c=null,kt(D,_,13,!r)};if(i&&_.suspense||Gt)return m().then(D=>()=>Wn(D,_)).catch(D=>(C(D),()=>r?ie(r,{error:D}):null));const I=se(!1),H=se(),W=se(!!s);return s&&setTimeout(()=>{W.value=!1},s),o!=null&&setTimeout(()=>{if(!I.value&&!H.value){const D=new Error(`Async component timed out after ${o}ms.`);C(D),H.value=D}},o),m().then(()=>{I.value=!0,_.parent&&Wt(_.parent.vnode)&&(_.parent.effect.dirty=!0,Mn(_.parent.update))}).catch(D=>{C(D),H.value=D}),()=>{if(I.value&&a)return Wn(a,_);if(H.value&&r)return ie(r,{error:H.value});if(n&&!W.value)return ie(n)}}})}function Wn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=ie(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}function fu(e,t,n={},r,s){if(fe.isCE||fe.parent&&bt(fe.parent)&&fe.parent.isCE)return t!=="default"&&(n.name=t),ie("slot",n,r&&r());let o=e[t];o&&o._c&&(o._d=!1),Zo();const i=o&&Mo(o(n)),l=ti(_e,{key:n.key||i&&i.key||`_${t}`},i||(r?r():[]),i&&e._===1?64:-2);return!s&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function Mo(e){return e.some(t=>Cn(t)?!(t.type===me||t.type===_e&&!Mo(t.children)):!0)?e:null}function du(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:un(r)]=e[r];return n}const hr=e=>e?oi(e)?Vn(e):hr(e.parent):null,Lt=le(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>hr(e.parent),$root:e=>hr(e.root),$emit:e=>e.emit,$options:e=>jr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Mn(e.update)}),$nextTick:e=>e.n||(e.n=In.bind(e.proxy)),$watch:e=>fc.bind(e)}),qn=(e,t)=>e!==te&&!e.__isScriptSetup&&z(e,t),Bl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const _=i[t];if(_!==void 0)switch(_){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(qn(r,t))return i[t]=1,r[t];if(s!==te&&z(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&z(a,t))return i[t]=3,o[t];if(n!==te&&z(n,t))return i[t]=4,n[t];pr&&(i[t]=0)}}const f=Lt[t];let h,m;if(f)return t==="$attrs"&&ve(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==te&&z(n,t))return i[t]=4,n[t];if(m=c.config.globalProperties,z(m,t))return m[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return qn(s,t)?(s[t]=n,!0):r!==te&&z(r,t)?(r[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==te&&z(e,i)||qn(t,i)||(l=o[0])&&z(l,i)||z(r,i)||z(Lt,i)||z(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function hu(){return Kl().slots}function Kl(){const e=jn();return e.setupContext||(e.setupContext=li(e))}function cs(e){return K(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let pr=!0;function kl(e){const t=jr(e),n=e.proxy,r=e.ctx;pr=!1,t.beforeCreate&&as(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:m,beforeUpdate:_,updated:C,activated:I,deactivated:H,beforeDestroy:W,beforeUnmount:D,destroyed:p,unmounted:y,render:M,renderTracked:A,renderTriggered:F,errorCaptured:$,serverPrefetch:L,expose:w,inheritAttrs:N,components:T,directives:G,filters:ne}=t;if(a&&Wl(a,r,null),i)for(const Y in i){const V=i[Y];k(V)&&(r[Y]=V.bind(n))}if(s){const Y=s.call(n,n);Z(Y)&&(e.data=On(Y))}if(pr=!0,o)for(const Y in o){const V=o[Y],He=k(V)?V.bind(n,n):k(V.get)?V.get.bind(n,n):xe,Xt=!k(V)&&k(V.set)?V.set.bind(n):xe,nt=re({get:He,set:Xt});Object.defineProperty(r,Y,{enumerable:!0,configurable:!0,get:()=>nt.value,set:Le=>nt.value=Le})}if(l)for(const Y in l)Po(l[Y],r,n,Y);if(c){const Y=k(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(V=>{Jl(V,Y[V])})}f&&as(f,e,"c");function U(Y,V){K(V)?V.forEach(He=>Y(He.bind(n))):V&&Y(V.bind(n))}if(U(Fl,h),U(xt,m),U($l,_),U(Hl,C),U(dc,I),U(hc,H),U(Ul,$),U(Dl,A),U(Vl,F),U(Io,D),U($n,y),U(jl,L),K(w))if(w.length){const Y=e.exposed||(e.exposed={});w.forEach(V=>{Object.defineProperty(Y,V,{get:()=>n[V],set:He=>n[V]=He})})}else e.exposed||(e.exposed={});M&&e.render===xe&&(e.render=M),N!=null&&(e.inheritAttrs=N),T&&(e.components=T),G&&(e.directives=G)}function Wl(e,t,n=xe){K(e)&&(e=gr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=wt(s.from||r,s.default,!0):o=wt(s.from||r):o=wt(s),de(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function as(e,t,n){Se(K(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Po(e,t,n,r){const s=r.includes(".")?qo(n,r):()=>n[r];if(oe(e)){const o=t[e];k(o)&&Ne(s,o)}else if(k(e))Ne(s,e.bind(n));else if(Z(e))if(K(e))e.forEach(o=>Po(o,t,n,r));else{const o=k(e.handler)?e.handler.bind(n):t[e.handler];k(o)&&Ne(s,o,e)}}function jr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(a=>bn(c,a,i,!0)),bn(c,t,i)),Z(t)&&o.set(t,c),c}function bn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&bn(e,o,n,!0),s&&s.forEach(i=>bn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=ql[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const ql={data:us,props:fs,emits:fs,methods:At,computed:At,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:At,directives:At,watch:Xl,provide:us,inject:Gl};function us(e,t){return t?e?function(){return le(k(e)?e.call(this,this):e,k(t)?t.call(this,this):t)}:t:e}function Gl(e,t){return At(gr(e),gr(t))}function gr(e){if(K(e)){const t={};for(let n=0;n1)return n&&k(t)?t.call(r&&r.proxy):t}}const Fo={},$o=()=>Object.create(Fo),Ho=e=>Object.getPrototypeOf(e)===Fo;function Ql(e,t,n,r=!1){const s={},o=$o();e.propsDefaults=Object.create(null),jo(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:hl(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Zl(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let a=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,_]=Vo(h,t,!0);le(i,m),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,mt),mt;if(K(o))for(let f=0;f-1,_[1]=I<0||C-1||z(_,"default"))&&l.push(h)}}}const a=[i,l];return Z(e)&&r.set(e,a),a}function ds(e){return e[0]!=="$"&&!_t(e)}function hs(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function ps(e,t){return hs(e)===hs(t)}function gs(e,t){return K(t)?t.findIndex(n=>ps(n,e)):k(t)&&ps(t,e)?0:-1}const Do=e=>e[0]==="_"||e==="$stable",Vr=e=>K(e)?e.map(Ae):[Ae(e)],ec=(e,t,n)=>{if(t._n)return t;const r=Ol((...s)=>Vr(t(...s)),n);return r._c=!1,r},Uo=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Do(s))continue;const o=e[s];if(k(o))t[s]=ec(s,o,r);else if(o!=null){const i=Vr(o);t[s]=()=>i}}},Bo=(e,t)=>{const n=Vr(t);e.slots.default=()=>n},tc=(e,t)=>{const n=e.slots=$o();if(e.vnode.shapeFlag&32){const r=t._;r?(le(n,t),eo(n,"_",r,!0)):Uo(t,n)}else t&&Bo(e,t)},nc=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=te;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(le(s,t),!n&&l===1&&delete s._):(o=!t.$stable,Uo(t,s)),i=t}else t&&(Bo(e,t),i={default:1});if(o)for(const l in s)!Do(l)&&i[l]==null&&delete s[l]};function wn(e,t,n,r,s=!1){if(K(e)){e.forEach((m,_)=>wn(m,t&&(K(t)?t[_]:t),n,r,s));return}if(bt(r)&&!s)return;const o=r.shapeFlag&4?Vn(r.component):r.el,i=s?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===te?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(oe(a)?(f[a]=null,z(h,a)&&(h[a]=null)):de(a)&&(a.value=null)),k(c))ze(c,l,12,[i,f]);else{const m=oe(c),_=de(c);if(m||_){const C=()=>{if(e.f){const I=m?z(h,c)?h[c]:f[c]:c.value;s?K(I)&&Cr(I,o):K(I)?I.includes(o)||I.push(o):m?(f[c]=[o],z(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else m?(f[c]=i,z(h,c)&&(h[c]=i)):_&&(c.value=i,e.k&&(f[e.k]=i))};i?(C.id=-1,ye(C,n)):C()}}}let ms=!1;const pt=()=>{ms||(console.error("Hydration completed but contains mismatches."),ms=!0)},rc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",sc=e=>e.namespaceURI.includes("MathML"),tn=e=>{if(rc(e))return"svg";if(sc(e))return"mathml"},nn=e=>e.nodeType===8;function oc(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,f=(p,y)=>{if(!y.hasChildNodes()){n(null,p,y),_n(),y._vnode=p;return}h(y.firstChild,p,null,null,null),_n(),y._vnode=p},h=(p,y,M,A,F,$=!1)=>{$=$||!!y.dynamicChildren;const L=nn(p)&&p.data==="[",w=()=>I(p,y,M,A,F,L),{type:N,ref:T,shapeFlag:G,patchFlag:ne}=y;let ce=p.nodeType;y.el=p,ne===-2&&($=!1,y.dynamicChildren=null);let U=null;switch(N){case Et:ce!==3?y.children===""?(c(y.el=s(""),i(p),p),U=p):U=w():(p.data!==y.children&&(pt(),p.data=y.children),U=o(p));break;case me:D(p)?(U=o(p),W(y.el=p.content.firstChild,p,M)):ce!==8||L?U=w():U=o(p);break;case Pt:if(L&&(p=o(p),ce=p.nodeType),ce===1||ce===3){U=p;const Y=!y.children.length;for(let V=0;V{$=$||!!y.dynamicChildren;const{type:L,props:w,patchFlag:N,shapeFlag:T,dirs:G,transition:ne}=y,ce=L==="input"||L==="option";if(ce||N!==-1){G&&Me(y,null,M,"created");let U=!1;if(D(p)){U=ko(A,ne)&&M&&M.vnode.props&&M.vnode.props.appear;const V=p.content.firstChild;U&&ne.beforeEnter(V),W(V,p,M),y.el=p=V}if(T&16&&!(w&&(w.innerHTML||w.textContent))){let V=_(p.firstChild,y,p,M,A,F,$);for(;V;){pt();const He=V;V=V.nextSibling,l(He)}}else T&8&&p.textContent!==y.children&&(pt(),p.textContent=y.children);if(w)if(ce||!$||N&48)for(const V in w)(ce&&(V.endsWith("value")||V==="indeterminate")||Kt(V)&&!_t(V)||V[0]===".")&&r(p,V,null,w[V],void 0,void 0,M);else w.onClick&&r(p,"onClick",null,w.onClick,void 0,void 0,M);let Y;(Y=w&&w.onVnodeBeforeMount)&&Ce(Y,M,y),G&&Me(y,null,M,"beforeMount"),((Y=w&&w.onVnodeMounted)||G||U)&&Lo(()=>{Y&&Ce(Y,M,y),U&&ne.enter(p),G&&Me(y,null,M,"mounted")},A)}return p.nextSibling},_=(p,y,M,A,F,$,L)=>{L=L||!!y.dynamicChildren;const w=y.children,N=w.length;for(let T=0;T{const{slotScopeIds:L}=y;L&&(F=F?F.concat(L):L);const w=i(p),N=_(o(p),y,w,M,A,F,$);return N&&nn(N)&&N.data==="]"?o(y.anchor=N):(pt(),c(y.anchor=a("]"),w,N),N)},I=(p,y,M,A,F,$)=>{if(pt(),y.el=null,$){const N=H(p);for(;;){const T=o(p);if(T&&T!==N)l(T);else break}}const L=o(p),w=i(p);return l(p),n(null,y,w,L,M,A,tn(w),F),L},H=(p,y="[",M="]")=>{let A=0;for(;p;)if(p=o(p),p&&nn(p)&&(p.data===y&&A++,p.data===M)){if(A===0)return o(p);A--}return p},W=(p,y,M)=>{const A=y.parentNode;A&&A.replaceChild(p,y);let F=M;for(;F;)F.vnode.el===y&&(F.vnode.el=F.subTree.el=p),F=F.parent},D=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[f,h]}const ye=Lo;function ic(e){return Ko(e)}function lc(e){return Ko(e,oc)}function Ko(e,t){const n=to();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:m,setScopeId:_=xe,insertStaticContent:C}=e,I=(u,d,g,v=null,b=null,S=null,O=void 0,x=null,R=!!d.dynamicChildren)=>{if(u===d)return;u&&!lt(u,d)&&(v=Yt(u),Le(u,b,S,!0),u=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:E,ref:P,shapeFlag:B}=d;switch(E){case Et:H(u,d,g,v);break;case me:W(u,d,g,v);break;case Pt:u==null&&D(d,g,v,O);break;case _e:T(u,d,g,v,b,S,O,x,R);break;default:B&1?M(u,d,g,v,b,S,O,x,R):B&6?G(u,d,g,v,b,S,O,x,R):(B&64||B&128)&&E.process(u,d,g,v,b,S,O,x,R,dt)}P!=null&&b&&wn(P,u&&u.ref,S,d||u,!d)},H=(u,d,g,v)=>{if(u==null)r(d.el=l(d.children),g,v);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},W=(u,d,g,v)=>{u==null?r(d.el=c(d.children||""),g,v):d.el=u.el},D=(u,d,g,v)=>{[u.el,u.anchor]=C(u.children,d,g,v,u.el,u.anchor)},p=({el:u,anchor:d},g,v)=>{let b;for(;u&&u!==d;)b=m(u),r(u,g,v),u=b;r(d,g,v)},y=({el:u,anchor:d})=>{let g;for(;u&&u!==d;)g=m(u),s(u),u=g;s(d)},M=(u,d,g,v,b,S,O,x,R)=>{d.type==="svg"?O="svg":d.type==="math"&&(O="mathml"),u==null?A(d,g,v,b,S,O,x,R):L(u,d,b,S,O,x,R)},A=(u,d,g,v,b,S,O,x)=>{let R,E;const{props:P,shapeFlag:B,transition:j,dirs:q}=u;if(R=u.el=i(u.type,S,P&&P.is,P),B&8?f(R,u.children):B&16&&$(u.children,R,null,v,b,Gn(u,S),O,x),q&&Me(u,null,v,"created"),F(R,u,u.scopeId,O,v),P){for(const ee in P)ee!=="value"&&!_t(ee)&&o(R,ee,null,P[ee],S,u.children,v,b,je);"value"in P&&o(R,"value",null,P.value,S),(E=P.onVnodeBeforeMount)&&Ce(E,v,u)}q&&Me(u,null,v,"beforeMount");const X=ko(b,j);X&&j.beforeEnter(R),r(R,d,g),((E=P&&P.onVnodeMounted)||X||q)&&ye(()=>{E&&Ce(E,v,u),X&&j.enter(R),q&&Me(u,null,v,"mounted")},b)},F=(u,d,g,v,b)=>{if(g&&_(u,g),v)for(let S=0;S{for(let E=R;E{const x=d.el=u.el;let{patchFlag:R,dynamicChildren:E,dirs:P}=d;R|=u.patchFlag&16;const B=u.props||te,j=d.props||te;let q;if(g&&rt(g,!1),(q=j.onVnodeBeforeUpdate)&&Ce(q,g,d,u),P&&Me(d,u,g,"beforeUpdate"),g&&rt(g,!0),E?w(u.dynamicChildren,E,x,g,v,Gn(d,b),S):O||V(u,d,x,null,g,v,Gn(d,b),S,!1),R>0){if(R&16)N(x,d,B,j,g,v,b);else if(R&2&&B.class!==j.class&&o(x,"class",null,j.class,b),R&4&&o(x,"style",B.style,j.style,b),R&8){const X=d.dynamicProps;for(let ee=0;ee{q&&Ce(q,g,d,u),P&&Me(d,u,g,"updated")},v)},w=(u,d,g,v,b,S,O)=>{for(let x=0;x{if(g!==v){if(g!==te)for(const x in g)!_t(x)&&!(x in v)&&o(u,x,g[x],null,O,d.children,b,S,je);for(const x in v){if(_t(x))continue;const R=v[x],E=g[x];R!==E&&x!=="value"&&o(u,x,E,R,O,d.children,b,S,je)}"value"in v&&o(u,"value",g.value,v.value,O)}},T=(u,d,g,v,b,S,O,x,R)=>{const E=d.el=u?u.el:l(""),P=d.anchor=u?u.anchor:l("");let{patchFlag:B,dynamicChildren:j,slotScopeIds:q}=d;q&&(x=x?x.concat(q):q),u==null?(r(E,g,v),r(P,g,v),$(d.children||[],g,P,b,S,O,x,R)):B>0&&B&64&&j&&u.dynamicChildren?(w(u.dynamicChildren,j,g,b,S,O,x),(d.key!=null||b&&d===b.subTree)&&Dr(u,d,!0)):V(u,d,g,P,b,S,O,x,R)},G=(u,d,g,v,b,S,O,x,R)=>{d.slotScopeIds=x,u==null?d.shapeFlag&512?b.ctx.activate(d,g,v,O,R):ne(d,g,v,b,S,O,R):ce(u,d,R)},ne=(u,d,g,v,b,S,O)=>{const x=u.component=Ac(u,v,b);if(Wt(u)&&(x.ctx.renderer=dt),Rc(x),x.asyncDep){if(b&&b.registerDep(x,U,O),!u.el){const R=x.subTree=ie(me);W(null,R,d,g)}}else U(x,u,d,g,b,S,O)},ce=(u,d,g)=>{const v=d.component=u.component;if(Ml(u,d,g))if(v.asyncDep&&!v.asyncResolved){Y(v,d,g);return}else v.next=d,Sl(v.update),v.effect.dirty=!0,v.update();else d.el=u.el,v.vnode=d},U=(u,d,g,v,b,S,O)=>{const x=()=>{if(u.isMounted){let{next:P,bu:B,u:j,parent:q,vnode:X}=u;{const ht=Wo(u);if(ht){P&&(P.el=X.el,Y(u,P,O)),ht.asyncDep.then(()=>{u.isUnmounted||x()});return}}let ee=P,Q;rt(u,!1),P?(P.el=X.el,Y(u,P,O)):P=X,B&&fn(B),(Q=P.props&&P.props.onVnodeBeforeUpdate)&&Ce(Q,q,P,X),rt(u,!0);const ae=kn(u),Te=u.subTree;u.subTree=ae,I(Te,ae,h(Te.el),Yt(Te),u,b,S),P.el=ae.el,ee===null&&Pl(u,ae.el),j&&ye(j,b),(Q=P.props&&P.props.onVnodeUpdated)&&ye(()=>Ce(Q,q,P,X),b)}else{let P;const{el:B,props:j}=d,{bm:q,m:X,parent:ee}=u,Q=bt(d);if(rt(u,!1),q&&fn(q),!Q&&(P=j&&j.onVnodeBeforeMount)&&Ce(P,ee,d),rt(u,!0),B&&Bn){const ae=()=>{u.subTree=kn(u),Bn(B,u.subTree,u,b,null)};Q?d.type.__asyncLoader().then(()=>!u.isUnmounted&&ae()):ae()}else{const ae=u.subTree=kn(u);I(null,ae,g,v,u,b,S),d.el=ae.el}if(X&&ye(X,b),!Q&&(P=j&&j.onVnodeMounted)){const ae=d;ye(()=>Ce(P,ee,ae),b)}(d.shapeFlag&256||ee&&bt(ee.vnode)&&ee.vnode.shapeFlag&256)&&u.a&&ye(u.a,b),u.isMounted=!0,d=g=v=null}},R=u.effect=new Ar(x,xe,()=>Mn(E),u.scope),E=u.update=()=>{R.dirty&&R.run()};E.id=u.uid,rt(u,!0),E()},Y=(u,d,g)=>{d.component=u;const v=u.vnode.props;u.vnode=d,u.next=null,Zl(u,d.props,v,g),nc(u,d.children,g),et(),os(u),tt()},V=(u,d,g,v,b,S,O,x,R=!1)=>{const E=u&&u.children,P=u?u.shapeFlag:0,B=d.children,{patchFlag:j,shapeFlag:q}=d;if(j>0){if(j&128){Xt(E,B,g,v,b,S,O,x,R);return}else if(j&256){He(E,B,g,v,b,S,O,x,R);return}}q&8?(P&16&&je(E,b,S),B!==E&&f(g,B)):P&16?q&16?Xt(E,B,g,v,b,S,O,x,R):je(E,b,S,!0):(P&8&&f(g,""),q&16&&$(B,g,v,b,S,O,x,R))},He=(u,d,g,v,b,S,O,x,R)=>{u=u||mt,d=d||mt;const E=u.length,P=d.length,B=Math.min(E,P);let j;for(j=0;jP?je(u,b,S,!0,!1,B):$(d,g,v,b,S,O,x,R,B)},Xt=(u,d,g,v,b,S,O,x,R)=>{let E=0;const P=d.length;let B=u.length-1,j=P-1;for(;E<=B&&E<=j;){const q=u[E],X=d[E]=R?Ge(d[E]):Ae(d[E]);if(lt(q,X))I(q,X,g,null,b,S,O,x,R);else break;E++}for(;E<=B&&E<=j;){const q=u[B],X=d[j]=R?Ge(d[j]):Ae(d[j]);if(lt(q,X))I(q,X,g,null,b,S,O,x,R);else break;B--,j--}if(E>B){if(E<=j){const q=j+1,X=qj)for(;E<=B;)Le(u[E],b,S,!0),E++;else{const q=E,X=E,ee=new Map;for(E=X;E<=j;E++){const be=d[E]=R?Ge(d[E]):Ae(d[E]);be.key!=null&&ee.set(be.key,E)}let Q,ae=0;const Te=j-X+1;let ht=!1,Xr=0;const St=new Array(Te);for(E=0;E=Te){Le(be,b,S,!0);continue}let Ie;if(be.key!=null)Ie=ee.get(be.key);else for(Q=X;Q<=j;Q++)if(St[Q-X]===0&<(be,d[Q])){Ie=Q;break}Ie===void 0?Le(be,b,S,!0):(St[Ie-X]=E+1,Ie>=Xr?Xr=Ie:ht=!0,I(be,d[Ie],g,null,b,S,O,x,R),ae++)}const Yr=ht?cc(St):mt;for(Q=Yr.length-1,E=Te-1;E>=0;E--){const be=X+E,Ie=d[be],zr=be+1{const{el:S,type:O,transition:x,children:R,shapeFlag:E}=u;if(E&6){nt(u.component.subTree,d,g,v);return}if(E&128){u.suspense.move(d,g,v);return}if(E&64){O.move(u,d,g,dt);return}if(O===_e){r(S,d,g);for(let B=0;Bx.enter(S),b);else{const{leave:B,delayLeave:j,afterLeave:q}=x,X=()=>r(S,d,g),ee=()=>{B(S,()=>{X(),q&&q()})};j?j(S,X,ee):ee()}else r(S,d,g)},Le=(u,d,g,v=!1,b=!1)=>{const{type:S,props:O,ref:x,children:R,dynamicChildren:E,shapeFlag:P,patchFlag:B,dirs:j,memoIndex:q}=u;if(B===-2&&(b=!1),x!=null&&wn(x,null,g,u,!0),q!=null&&(d.renderCache[q]=void 0),P&256){d.ctx.deactivate(u);return}const X=P&1&&j,ee=!bt(u);let Q;if(ee&&(Q=O&&O.onVnodeBeforeUnmount)&&Ce(Q,d,u),P&6)Li(u.component,g,v);else{if(P&128){u.suspense.unmount(g,v);return}X&&Me(u,null,d,"beforeUnmount"),P&64?u.type.remove(u,d,g,dt,v):E&&(S!==_e||B>0&&B&64)?je(E,d,g,!1,!0):(S===_e&&B&384||!b&&P&16)&&je(R,d,g),v&&qr(u)}(ee&&(Q=O&&O.onVnodeUnmounted)||X)&&ye(()=>{Q&&Ce(Q,d,u),X&&Me(u,null,d,"unmounted")},g)},qr=u=>{const{type:d,el:g,anchor:v,transition:b}=u;if(d===_e){Oi(g,v);return}if(d===Pt){y(u);return}const S=()=>{s(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:O,delayLeave:x}=b,R=()=>O(g,S);x?x(u.el,S,R):R()}else S()},Oi=(u,d)=>{let g;for(;u!==d;)g=m(u),s(u),u=g;s(d)},Li=(u,d,g)=>{const{bum:v,scope:b,update:S,subTree:O,um:x,m:R,a:E}=u;ys(R),ys(E),v&&fn(v),b.stop(),S&&(S.active=!1,Le(O,u,d,g)),x&&ye(x,d),ye(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},je=(u,d,g,v=!1,b=!1,S=0)=>{for(let O=S;Ou.shapeFlag&6?Yt(u.component.subTree):u.shapeFlag&128?u.suspense.next():m(u.anchor||u.el);let Dn=!1;const Gr=(u,d,g)=>{u==null?d._vnode&&Le(d._vnode,null,null,!0):I(d._vnode||null,u,d,null,null,null,g),Dn||(Dn=!0,os(),_n(),Dn=!1),d._vnode=u},dt={p:I,um:Le,m:nt,r:qr,mt:ne,mc:$,pc:V,pbc:w,n:Yt,o:e};let Un,Bn;return t&&([Un,Bn]=t(dt)),{render:Gr,hydrate:Un,createApp:zl(Gr,Un)}}function Gn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function rt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ko(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Dr(e,t,n=!1){const r=e.children,s=t.children;if(K(r)&&K(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Wo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Wo(t)}function ys(e){if(e)for(let t=0;twt(ac);function Ur(e,t){return Hn(e,null,t)}function pu(e,t){return Hn(e,null,{flush:"post"})}const rn={};function Ne(e,t,n){return Hn(e,t,n)}function Hn(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=te){if(t&&o){const A=t;t=(...F)=>{A(...F),M()}}const c=ue,a=A=>r===!0?A:Xe(A,r===!1?1:void 0);let f,h=!1,m=!1;if(de(e)?(f=()=>e.value,h=yn(e)):Rt(e)?(f=()=>a(e),h=!0):K(e)?(m=!0,h=e.some(A=>Rt(A)||yn(A)),f=()=>e.map(A=>{if(de(A))return A.value;if(Rt(A))return a(A);if(k(A))return ze(A,c,2)})):k(e)?t?f=()=>ze(e,c,2):f=()=>(_&&_(),Se(e,c,3,[C])):f=xe,t&&r){const A=f;f=()=>Xe(A())}let _,C=A=>{_=p.onStop=()=>{ze(A,c,4),_=p.onStop=void 0}},I;if(Gt)if(C=xe,t?n&&Se(t,c,3,[f(),m?[]:void 0,C]):f(),s==="sync"){const A=uc();I=A.__watcherHandles||(A.__watcherHandles=[])}else return xe;let H=m?new Array(e.length).fill(rn):rn;const W=()=>{if(!(!p.active||!p.dirty))if(t){const A=p.run();(r||h||(m?A.some((F,$)=>Je(F,H[$])):Je(A,H)))&&(_&&_(),Se(t,c,3,[A,H===rn?void 0:m&&H[0]===rn?[]:H,C]),H=A)}else p.run()};W.allowRecurse=!!t;let D;s==="sync"?D=W:s==="post"?D=()=>ye(W,c&&c.suspense):(W.pre=!0,c&&(W.id=c.uid),D=()=>Mn(W));const p=new Ar(f,xe,D),y=oo(),M=()=>{p.stop(),y&&Cr(y.effects,p)};return t?n?W():H=p.run():s==="post"?ye(p.run.bind(p),c&&c.suspense):p.run(),I&&I.push(M),M}function fc(e,t,n){const r=this.proxy,s=oe(e)?e.includes(".")?qo(r,e):()=>r[e]:e.bind(r,r);let o;k(t)?o=t:(o=t.handler,n=t);const i=qt(this),l=Hn(s,o.bind(r),n);return i(),l}function qo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{Xe(r,t,n)});else if(Zs(e)){for(const r in e)Xe(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Xe(e[r],t,n)}return e}const Wt=e=>e.type.__isKeepAlive;function dc(e,t){Go(e,"a",t)}function hc(e,t){Go(e,"da",t)}function Go(e,t,n=ue){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Fn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)Wt(s.parent.vnode)&&pc(r,t,n,s),s=s.parent}}function pc(e,t,n,r){const s=Fn(t,e,r,!0);$n(()=>{Cr(r[t],s)},n)}const qe=Symbol("_leaveCb"),sn=Symbol("_enterCb");function gc(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return xt(()=>{e.isMounted=!0}),Io(()=>{e.isUnmounting=!0}),e}const Ee=[Function,Array],Xo={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ee,onEnter:Ee,onAfterEnter:Ee,onEnterCancelled:Ee,onBeforeLeave:Ee,onLeave:Ee,onAfterLeave:Ee,onLeaveCancelled:Ee,onBeforeAppear:Ee,onAppear:Ee,onAfterAppear:Ee,onAppearCancelled:Ee},Yo=e=>{const t=e.subTree;return t.component?Yo(t.component):t},mc={name:"BaseTransition",props:Xo,setup(e,{slots:t}){const n=jn(),r=gc();return()=>{const s=t.default&&Jo(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const m of s)if(m.type!==me){o=m;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return Xn(o);const c=_s(o);if(!c)return Xn(o);let a=yr(c,i,r,n,m=>a=m);En(c,a);const f=n.subTree,h=f&&_s(f);if(h&&h.type!==me&&!lt(c,h)&&Yo(n).type!==me){const m=yr(h,i,r,n);if(En(h,m),l==="out-in"&&c.type!==me)return r.isLeaving=!0,m.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Xn(o);l==="in-out"&&c.type!==me&&(m.delayLeave=(_,C,I)=>{const H=zo(r,h);H[String(h.key)]=h,_[qe]=()=>{C(),_[qe]=void 0,delete a.delayedLeave},a.delayedLeave=I})}return o}}},yc=mc;function zo(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function yr(e,t,n,r,s){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:a,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:m,onLeave:_,onAfterLeave:C,onLeaveCancelled:I,onBeforeAppear:H,onAppear:W,onAfterAppear:D,onAppearCancelled:p}=t,y=String(e.key),M=zo(n,e),A=(L,w)=>{L&&Se(L,r,9,w)},F=(L,w)=>{const N=w[1];A(L,w),K(L)?L.every(T=>T.length<=1)&&N():L.length<=1&&N()},$={mode:i,persisted:l,beforeEnter(L){let w=c;if(!n.isMounted)if(o)w=H||c;else return;L[qe]&&L[qe](!0);const N=M[y];N&<(e,N)&&N.el[qe]&&N.el[qe](),A(w,[L])},enter(L){let w=a,N=f,T=h;if(!n.isMounted)if(o)w=W||a,N=D||f,T=p||h;else return;let G=!1;const ne=L[sn]=ce=>{G||(G=!0,ce?A(T,[L]):A(N,[L]),$.delayedLeave&&$.delayedLeave(),L[sn]=void 0)};w?F(w,[L,ne]):ne()},leave(L,w){const N=String(e.key);if(L[sn]&&L[sn](!0),n.isUnmounting)return w();A(m,[L]);let T=!1;const G=L[qe]=ne=>{T||(T=!0,w(),ne?A(I,[L]):A(C,[L]),L[qe]=void 0,M[N]===e&&delete M[N])};M[N]=e,_?F(_,[L,G]):G()},clone(L){const w=yr(L,t,n,r,s);return s&&s(w),w}};return $}function Xn(e){if(Wt(e))return e=Qe(e),e.children=null,e}function _s(e){if(!Wt(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&k(n.default))return n.default()}}function En(e,t){e.shapeFlag&6&&e.component?En(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Jo(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;oe.__isTeleport,Mt=e=>e&&(e.disabled||e.disabled===""),vs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,bs=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,_r=(e,t)=>{const n=e&&e.to;return oe(n)?t?t(n):null:n},vc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,a){const{mc:f,pc:h,pbc:m,o:{insert:_,querySelector:C,createText:I,createComment:H}}=a,W=Mt(t.props);let{shapeFlag:D,children:p,dynamicChildren:y}=t;if(e==null){const M=t.el=I(""),A=t.anchor=I("");_(M,n,r),_(A,n,r);const F=t.target=_r(t.props,C),$=t.targetAnchor=I("");F&&(_($,F),i==="svg"||vs(F)?i="svg":(i==="mathml"||bs(F))&&(i="mathml"));const L=(w,N)=>{D&16&&f(p,w,N,s,o,i,l,c)};W?L(n,A):F&&L(F,$)}else{t.el=e.el;const M=t.anchor=e.anchor,A=t.target=e.target,F=t.targetAnchor=e.targetAnchor,$=Mt(e.props),L=$?n:A,w=$?M:F;if(i==="svg"||vs(A)?i="svg":(i==="mathml"||bs(A))&&(i="mathml"),y?(m(e.dynamicChildren,y,L,s,o,i,l),Dr(e,t,!0)):c||h(e,t,L,w,s,o,i,l,!1),W)$?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):on(t,n,M,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const N=t.target=_r(t.props,C);N&&on(t,N,null,a,0)}else $&&on(t,A,F,a,1)}Qo(t)},remove(e,t,n,{um:r,o:{remove:s}},o){const{shapeFlag:i,children:l,anchor:c,targetAnchor:a,target:f,props:h}=e;if(f&&s(a),o&&s(c),i&16){const m=o||!Mt(h);for(let _=0;_0?Re||mt:null,wc(),Dt>0&&Re&&Re.push(e),e}function mu(e,t,n,r,s,o){return ei(ri(e,t,n,r,s,o,!0))}function ti(e,t,n,r,s){return ei(ie(e,t,n,r,s,!0))}function Cn(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const ni=({key:e})=>e??null,hn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?oe(e)||de(e)||k(e)?{i:fe,r:e,k:t,f:!!n}:e:null);function ri(e,t=null,n=null,r=0,s=null,o=e===_e?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ni(t),ref:t&&hn(t),scopeId:Nn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:fe};return l?(Br(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=oe(n)?8:16),Dt>0&&!i&&Re&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Re.push(c),c}const ie=Ec;function Ec(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Ro)&&(e=me),Cn(e)){const l=Qe(e,t,!0);return n&&Br(l,n),Dt>0&&!o&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag=-2,l}if(Mc(e)&&(e=e.__vccOpts),t){t=Cc(t);let{class:l,style:c}=t;l&&!oe(l)&&(t.class=Tr(l)),Z(c)&&(_o(c)&&!K(c)&&(c=le({},c)),t.style=Sr(c))}const i=oe(e)?1:Nl(e)?128:_c(e)?64:Z(e)?4:k(e)?2:0;return ri(e,t,n,r,s,i,o,!0)}function Cc(e){return e?_o(e)||Ho(e)?le({},e):e:null}function Qe(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:c}=e,a=t?xc(s||{},t):s,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&ni(a),ref:t&&t.ref?n&&o?K(o)?o.concat(hn(t)):[o,hn(t)]:hn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==_e?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qe(e.ssContent),ssFallback:e.ssFallback&&Qe(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&En(f,c.clone(f)),f}function si(e=" ",t=0){return ie(Et,null,e,t)}function yu(e,t){const n=ie(Pt,null,e);return n.staticCount=t,n}function _u(e="",t=!1){return t?(Zo(),ti(me,null,e)):ie(me,null,e)}function Ae(e){return e==null||typeof e=="boolean"?ie(me):K(e)?ie(_e,null,e.slice()):typeof e=="object"?Ge(e):ie(Et,null,String(e))}function Ge(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Qe(e)}function Br(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(K(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Br(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Ho(t)?t._ctx=fe:s===3&&fe&&(fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else k(t)?(t={default:t,_ctx:fe},n=32):(t=String(t),r&64?(n=16,t=[si(t)]):n=8);e.children=t,e.shapeFlag|=n}function xc(...e){const t={};for(let n=0;nue||fe;let xn,vr;{const e=to(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};xn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),vr=t("__VUE_SSR_SETTERS__",n=>Gt=n)}const qt=e=>{const t=ue;return xn(e),e.scope.on(),()=>{e.scope.off(),xn(t)}},Es=()=>{ue&&ue.scope.off(),xn(null)};function oi(e){return e.vnode.shapeFlag&4}let Gt=!1;function Rc(e,t=!1){t&&vr(t);const{props:n,children:r}=e.vnode,s=oi(e);Ql(e,n,s,t),tc(e,r);const o=s?Oc(e,t):void 0;return t&&vr(!1),o}function Oc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Bl);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?li(e):null,o=qt(e);et();const i=ze(r,e,0,[e.props,s]);if(tt(),o(),Js(i)){if(i.then(Es,Es),t)return i.then(l=>{Cs(e,l,t)}).catch(l=>{kt(l,e,0)});e.asyncDep=i}else Cs(e,i,t)}else ii(e,t)}function Cs(e,t,n){k(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=Eo(t)),ii(e,n)}let xs;function ii(e,t,n){const r=e.type;if(!e.render){if(!t&&xs&&!r.render){const s=r.template||jr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,a=le(le({isCustomElement:o,delimiters:l},i),c);r.render=xs(s,a)}}e.render=r.render||xe}{const s=qt(e);et();try{kl(e)}finally{tt(),s()}}}const Lc={get(e,t){return ve(e,"get",""),e[t]}};function li(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Lc),slots:e.slots,emit:e.emit,expose:t}}function Vn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Eo(dn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Lt)return Lt[n](e)},has(t,n){return n in t||n in Lt}})):e.proxy}function Ic(e,t=!0){return k(e)?e.displayName||e.name:e.name||t&&e.__name}function Mc(e){return k(e)&&"__vccOpts"in e}const re=(e,t)=>pl(e,t,Gt);function br(e,t,n){const r=arguments.length;return r===2?Z(t)&&!K(t)?Cn(t)?ie(e,null,[t]):ie(e,t):ie(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Cn(n)&&(n=[n]),ie(e,t,n))}const Pc="3.4.31";/** +* @vue/runtime-dom v3.4.31 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Nc="http://www.w3.org/2000/svg",Fc="http://www.w3.org/1998/Math/MathML",Ve=typeof document<"u"?document:null,Ss=Ve&&Ve.createElement("template"),$c={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ve.createElementNS(Nc,e):t==="mathml"?Ve.createElementNS(Fc,e):n?Ve.createElement(e,{is:n}):Ve.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ve.createTextNode(e),createComment:e=>Ve.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ve.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Ss.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Ss.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ke="transition",Tt="animation",Ut=Symbol("_vtc"),ci=(e,{slots:t})=>br(yc,Hc(e),t);ci.displayName="Transition";const ai={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};ci.props=le({},Xo,ai);const st=(e,t=[])=>{K(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ts=e=>e?K(e)?e.some(t=>t.length>1):e.length>1:!1;function Hc(e){const t={};for(const T in e)T in ai||(t[T]=e[T]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,C=jc(s),I=C&&C[0],H=C&&C[1],{onBeforeEnter:W,onEnter:D,onEnterCancelled:p,onLeave:y,onLeaveCancelled:M,onBeforeAppear:A=W,onAppear:F=D,onAppearCancelled:$=p}=t,L=(T,G,ne)=>{ot(T,G?f:l),ot(T,G?a:i),ne&&ne()},w=(T,G)=>{T._isLeaving=!1,ot(T,h),ot(T,_),ot(T,m),G&&G()},N=T=>(G,ne)=>{const ce=T?F:D,U=()=>L(G,T,ne);st(ce,[G,U]),As(()=>{ot(G,T?c:o),ke(G,T?f:l),Ts(ce)||Rs(G,r,I,U)})};return le(t,{onBeforeEnter(T){st(W,[T]),ke(T,o),ke(T,i)},onBeforeAppear(T){st(A,[T]),ke(T,c),ke(T,a)},onEnter:N(!1),onAppear:N(!0),onLeave(T,G){T._isLeaving=!0;const ne=()=>w(T,G);ke(T,h),ke(T,m),Uc(),As(()=>{T._isLeaving&&(ot(T,h),ke(T,_),Ts(y)||Rs(T,r,H,ne))}),st(y,[T,ne])},onEnterCancelled(T){L(T,!1),st(p,[T])},onAppearCancelled(T){L(T,!0),st($,[T])},onLeaveCancelled(T){w(T),st(M,[T])}})}function jc(e){if(e==null)return null;if(Z(e))return[Yn(e.enter),Yn(e.leave)];{const t=Yn(e);return[t,t]}}function Yn(e){return $i(e)}function ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ut]||(e[Ut]=new Set)).add(t)}function ot(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Ut];n&&(n.delete(t),n.size||(e[Ut]=void 0))}function As(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Vc=0;function Rs(e,t,n,r){const s=e._endId=++Vc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Dc(e,t);if(!i)return r();const a=i+"end";let f=0;const h=()=>{e.removeEventListener(a,m),o()},m=_=>{_.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[C]||"").split(", "),s=r(`${Ke}Delay`),o=r(`${Ke}Duration`),i=Os(s,o),l=r(`${Tt}Delay`),c=r(`${Tt}Duration`),a=Os(l,c);let f=null,h=0,m=0;t===Ke?i>0&&(f=Ke,h=i,m=o.length):t===Tt?a>0&&(f=Tt,h=a,m=c.length):(h=Math.max(i,a),f=h>0?i>a?Ke:Tt:null,m=f?f===Ke?o.length:c.length:0);const _=f===Ke&&/\b(transform|all)(,|$)/.test(r(`${Ke}Property`).toString());return{type:f,timeout:h,propCount:m,hasTransform:_}}function Os(e,t){for(;e.lengthLs(n)+Ls(e[r])))}function Ls(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Uc(){return document.body.offsetHeight}function Bc(e,t,n){const r=e[Ut];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Is=Symbol("_vod"),Kc=Symbol("_vsh"),kc=Symbol(""),Wc=/(^|;)\s*display\s*:/;function qc(e,t,n){const r=e.style,s=oe(n);let o=!1;if(n&&!s){if(t)if(oe(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&pn(r,l,"")}else for(const i in t)n[i]==null&&pn(r,i,"");for(const i in n)i==="display"&&(o=!0),pn(r,i,n[i])}else if(s){if(t!==n){const i=r[kc];i&&(n+=";"+i),r.cssText=n,o=Wc.test(n)}}else t&&e.removeAttribute("style");Is in e&&(e[Is]=o?r.display:"",e[Kc]&&(r.display="none"))}const Ms=/\s*!important$/;function pn(e,t,n){if(K(n))n.forEach(r=>pn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Gc(e,t);Ms.test(n)?e.setProperty(ft(r),n.replace(Ms,""),"important"):e[r]=n}}const Ps=["Webkit","Moz","ms"],zn={};function Gc(e,t){const n=zn[t];if(n)return n;let r=$e(t);if(r!=="filter"&&r in e)return zn[t]=r;r=An(r);for(let s=0;sJn||(Qc.then(()=>Jn=0),Jn=Date.now());function ea(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Se(ta(r,n.value),t,5,[r])};return n.value=e,n.attached=Zc(),n}function ta(e,t){if(K(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const js=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,na=(e,t,n,r,s,o,i,l,c)=>{const a=s==="svg";t==="class"?Bc(e,r,a):t==="style"?qc(e,n,r):Kt(t)?Er(t)||zc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ra(e,t,r,a))?(Xc(e,t,r,o,i,l,c),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Fs(e,t,r,a,i,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Fs(e,t,r,a))};function ra(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&js(t)&&k(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return js(t)&&oe(n)?!1:t in e}const Vs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return K(t)?n=>fn(t,n):t};function sa(e){e.target.composing=!0}function Ds(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Qn=Symbol("_assign"),vu={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Qn]=Vs(s);const o=r||s.props&&s.props.type==="number";gt(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=cr(l)),e[Qn](l)}),n&>(e,"change",()=>{e.value=e.value.trim()}),t||(gt(e,"compositionstart",sa),gt(e,"compositionend",Ds),gt(e,"change",Ds))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[Qn]=Vs(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?cr(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===c)||(e.value=c))}},oa=["ctrl","shift","alt","meta"],ia={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>oa.some(n=>e[`${n}Key`]&&!t.includes(n))},bu=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=ft(s.key);if(t.some(i=>i===o||la[i]===o))return e(s)})},ui=le({patchProp:na},$c);let Ft,Us=!1;function ca(){return Ft||(Ft=ic(ui))}function aa(){return Ft=Us?Ft:lc(ui),Us=!0,Ft}const Eu=(...e)=>{const t=ca().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=di(r);if(!s)return;const o=t._component;!k(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,fi(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},Cu=(...e)=>{const t=aa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=di(r);if(s)return n(s,!0,fi(s))},t};function fi(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function di(e){return oe(e)?document.querySelector(e):e}const xu=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},ua="modulepreload",fa=function(e){return"/"+e},Bs={},Su=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=fa(l),l in Bs)return;Bs[l]=!0;const c=l.endsWith(".css"),a=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${a}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":ua,c||(f.as="script",f.crossOrigin=""),f.href=l,i&&f.setAttribute("nonce",i),document.head.appendChild(f),c)return new Promise((h,m)=>{f.addEventListener("load",h),f.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},da=window.__VP_SITE_DATA__;function Kr(e){return oo()?(qi(e),!0):!1}function Fe(e){return typeof e=="function"?e():wo(e)}const hi=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ha=Object.prototype.toString,pa=e=>ha.call(e)==="[object Object]",Bt=()=>{},Ks=ga();function ga(){var e,t;return hi&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function ma(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const pi=e=>e();function ya(e,t={}){let n,r,s=Bt;const o=l=>{clearTimeout(l),s(),s=Bt};return l=>{const c=Fe(e),a=Fe(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,a&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},a)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function _a(e=pi){const t=se(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Ln(t),pause:n,resume:r,eventFilter:s}}function va(e){return jn()}function gi(...e){if(e.length!==1)return wl(...e);const t=e[0];return typeof t=="function"?Ln(_l(()=>({get:t,set:Bt}))):se(t)}function mi(e,t,n={}){const{eventFilter:r=pi,...s}=n;return Ne(e,ma(r,t),s)}function ba(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=_a(r);return{stop:mi(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function kr(e,t=!0,n){va()?xt(e,n):t?e():In(e)}function Tu(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return mi(e,t,{...o,eventFilter:ya(r,{maxWait:s})})}function Au(e,t,n){let r;de(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=Bt}=r,c=se(!s),a=i?Fr(t):se(t);let f=0;return Ur(async h=>{if(!c.value)return;f++;const m=f;let _=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const C=await e(I=>{h(()=>{o&&(o.value=!1),_||I()})});m===f&&(a.value=C)}catch(C){l(C)}finally{o&&m===f&&(o.value=!1),_=!0}}),s?re(()=>(c.value=!0,a.value)):a}function yi(e){var t;const n=Fe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Oe=hi?window:void 0;function Ct(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Oe):[t,n,r,s]=e,!t)return Bt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,m,_)=>(f.addEventListener(h,m,_),()=>f.removeEventListener(h,m,_)),c=Ne(()=>[yi(t),Fe(s)],([f,h])=>{if(i(),!f)return;const m=pa(h)?{...h}:h;o.push(...n.flatMap(_=>r.map(C=>l(f,_,C,m))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return Kr(a),a}function wa(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Ru(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Oe,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=wa(t);return Ct(s,o,f=>{f.repeat&&Fe(l)||c(f)&&n(f)},i)}function Ea(){const e=se(!1),t=jn();return t&&xt(()=>{e.value=!0},t),e}function Ca(e){const t=Ea();return re(()=>(t.value,!!e()))}function _i(e,t={}){const{window:n=Oe}=t,r=Ca(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=se(!1),i=a=>{o.value=a.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Ur(()=>{r.value&&(l(),s=n.matchMedia(Fe(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return Kr(()=>{c(),l(),s=void 0}),o}const ln=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},cn="__vueuse_ssr_handlers__",xa=Sa();function Sa(){return cn in ln||(ln[cn]=ln[cn]||{}),ln[cn]}function vi(e,t){return xa[e]||t}function Ta(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Aa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},ks="vueuse-storage";function Wr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:f,window:h=Oe,eventFilter:m,onError:_=w=>{console.error(w)},initOnMounted:C}=r,I=(f?Fr:se)(typeof t=="function"?t():t);if(!n)try{n=vi("getDefaultStorage",()=>{var w;return(w=Oe)==null?void 0:w.localStorage})()}catch(w){_(w)}if(!n)return I;const H=Fe(t),W=Ta(H),D=(s=r.serializer)!=null?s:Aa[W],{pause:p,resume:y}=ba(I,()=>A(I.value),{flush:o,deep:i,eventFilter:m});h&&l&&kr(()=>{Ct(h,"storage",$),Ct(h,ks,L),C&&$()}),C||$();function M(w,N){h&&h.dispatchEvent(new CustomEvent(ks,{detail:{key:e,oldValue:w,newValue:N,storageArea:n}}))}function A(w){try{const N=n.getItem(e);if(w==null)M(N,null),n.removeItem(e);else{const T=D.write(w);N!==T&&(n.setItem(e,T),M(N,T))}}catch(N){_(N)}}function F(w){const N=w?w.newValue:n.getItem(e);if(N==null)return c&&H!=null&&n.setItem(e,D.write(H)),H;if(!w&&a){const T=D.read(N);return typeof a=="function"?a(T,H):W==="object"&&!Array.isArray(T)?{...H,...T}:T}else return typeof N!="string"?N:D.read(N)}function $(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){I.value=H;return}if(!(w&&w.key!==e)){p();try{(w==null?void 0:w.newValue)!==D.write(I.value)&&(I.value=F(w))}catch(N){_(N)}finally{w?In(y):y()}}}}function L(w){$(w.detail)}return I}function bi(e){return _i("(prefers-color-scheme: dark)",e)}function Ra(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Oe,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=bi({window:s}),_=re(()=>m.value?"dark":"light"),C=c||(i==null?gi(r):Wr(i,r,o,{window:s,listenToStorageChanges:l})),I=re(()=>C.value==="auto"?_.value:C.value),H=vi("updateHTMLAttrs",(y,M,A)=>{const F=typeof y=="string"?s==null?void 0:s.document.querySelector(y):yi(y);if(!F)return;let $;if(f&&($=s.document.createElement("style"),$.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild($)),M==="class"){const L=A.split(/\s/g);Object.values(h).flatMap(w=>(w||"").split(/\s/g)).filter(Boolean).forEach(w=>{L.includes(w)?F.classList.add(w):F.classList.remove(w)})}else F.setAttribute(M,A);f&&(s.getComputedStyle($).opacity,document.head.removeChild($))});function W(y){var M;H(t,n,(M=h[y])!=null?M:y)}function D(y){e.onChanged?e.onChanged(y,W):W(y)}Ne(I,D,{flush:"post",immediate:!0}),kr(()=>D(I.value));const p=re({get(){return a?C.value:I.value},set(y){C.value=y}});try{return Object.assign(p,{store:C,system:_,state:I})}catch{return p}}function Oa(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Oe}=e,s=Ra({...e,onChanged:(l,c)=>{var a;e.onChanged?(a=e.onChanged)==null||a.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=re(()=>s.system?s.system.value:bi({window:r}).value?"dark":"light");return re({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function Zn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Ou(e,t,n={}){const{window:r=Oe}=n;return Wr(e,t,r==null?void 0:r.localStorage,n)}function wi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const er=new WeakMap;function Lu(e,t=!1){const n=se(t);let r=null,s="";Ne(gi(e),l=>{const c=Zn(Fe(l));if(c){const a=c;if(er.get(a)||er.set(a,a.style.overflow),a.style.overflow!=="hidden"&&(s=a.style.overflow),a.style.overflow==="hidden")return n.value=!0;if(n.value)return a.style.overflow="hidden"}},{immediate:!0});const o=()=>{const l=Zn(Fe(e));!l||n.value||(Ks&&(r=Ct(l,"touchmove",c=>{La(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},i=()=>{const l=Zn(Fe(e));!l||!n.value||(Ks&&(r==null||r()),l.style.overflow=s,er.delete(l),n.value=!1)};return Kr(i),re({get(){return n.value},set(l){l?o():i()}})}function Iu(e,t,n={}){const{window:r=Oe}=n;return Wr(e,t,r==null?void 0:r.sessionStorage,n)}function Mu(e={}){const{window:t=Oe,behavior:n="auto"}=e;if(!t)return{x:se(0),y:se(0)};const r=se(t.scrollX),s=se(t.scrollY),o=re({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=re({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return Ct(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function Pu(e={}){const{window:t=Oe,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,i=se(n),l=se(r),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),kr(c),Ct("resize",c,{passive:!0}),s){const a=_i("(orientation: portrait)");Ne(a,()=>c())}return{width:i,height:l}}var tr={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},nr={};const Ei=/^(?:[a-z]+:|\/\/)/i,Ia="vitepress-theme-appearance",Ma=/#.*$/,Pa=/[?#].*$/,Na=/(?:(^|\/)index)?\.(?:md|html)$/,he=typeof document<"u",Ci={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Fa(e,t,n=!1){if(t===void 0)return!1;if(e=Ws(`/${e}`),n)return new RegExp(t).test(e);if(Ws(t)!==e)return!1;const r=t.match(Ma);return r?(he?location.hash:"")===r[0]:!0}function Ws(e){return decodeURI(e).replace(Pa,"").replace(Na,"$1")}function $a(e){return Ei.test(e)}function Ha(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!$a(n)&&Fa(t,`/${n}/`,!0))||"root"}function ja(e,t){var r,s,o,i,l,c,a;const n=Ha(e,t);return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Si(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function xi(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=Va(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Va(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Da(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function Si(e,t){return[...e.filter(n=>!Da(t,n)),...t]}const Ua=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Ba=/^[a-z]:/i;function qs(e){const t=Ba.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Ua,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const rr=new Set;function Ka(e){if(rr.size===0){const n=typeof process=="object"&&(nr==null?void 0:nr.VITE_EXTRA_EXTENSIONS)||(tr==null?void 0:tr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>rr.add(r))}const t=e.split(".").pop();return t==null||!rr.has(t.toLowerCase())}function Nu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const ka=Symbol(),ut=Fr(da);function Fu(e){const t=re(()=>ja(ut.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?se(!0):n?Oa({storageKey:Ia,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):se(!1),s=se(he?location.hash:"");return he&&window.addEventListener("hashchange",()=>{s.value=location.hash}),Ne(()=>e.data,()=>{s.value=he?location.hash:""}),{site:t,theme:re(()=>t.value.themeConfig),page:re(()=>e.data),frontmatter:re(()=>e.data.frontmatter),params:re(()=>e.data.params),lang:re(()=>t.value.lang),dir:re(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:re(()=>t.value.localeIndex||"root"),title:re(()=>xi(t.value,e.data)),description:re(()=>e.data.description||t.value.description),isDark:r,hash:re(()=>s.value)}}function Wa(){const e=wt(ka);if(!e)throw new Error("vitepress data not properly injected in app");return e}function qa(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Gs(e){return Ei.test(e)||!e.startsWith("/")?e:qa(ut.value.base,e)}function Ga(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),he){const n="/";t=qs(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${qs(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let gn=[];function $u(e){gn.push(e),$n(()=>{gn=gn.filter(t=>t!==e)})}function Xa(){let e=ut.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Xs(e,n);else if(Array.isArray(e))for(const r of e){const s=Xs(r,n);if(s){t=s;break}}return t}function Xs(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Ya=Symbol(),Ti="http://a.com",za=()=>({path:"/",component:null,data:Ci});function Hu(e,t){const n=On(za()),r={route:n,go:s};async function s(l=he?location.href:"/"){var c,a;l=sr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(he&&l!==sr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await((a=r.onAfterRouteChanged)==null?void 0:a.call(r,l)))}let o=null;async function i(l,c=0,a=!1){var m;if(await((m=r.onBeforePageLoad)==null?void 0:m.call(r,l))===!1)return;const f=new URL(l,Ti),h=o=f.pathname;try{let _=await e(h);if(!_)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:C,__pageData:I}=_;if(!C)throw new Error(`Invalid route component: ${C}`);n.path=he?h:Gs(h),n.component=dn(C),n.data=dn(I),he&&In(()=>{let H=ut.value.base+I.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ut.value.cleanUrls&&!H.endsWith("/")&&(H+=".html"),H!==f.pathname&&(f.pathname=H,l=H+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let W=null;try{W=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(D){console.warn(D)}if(W){Ys(W,f.hash);return}}window.scrollTo(0,c)})}}catch(_){if(!/fetch|Page not found/.test(_.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(_),!a)try{const C=await fetch(ut.value.base+"hashmap.json");window.__VP_HASH_MAP__=await C.json(),await i(l,c,!0);return}catch{}if(o===h){o=null,n.path=he?h:Gs(h),n.component=t?dn(t):null;const C=he?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Ci,relativePath:C}}}}return he&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:f}=a,{href:h,origin:m,pathname:_,hash:C,search:I}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),H=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&m===H.origin&&Ka(_)&&(l.preventDefault(),_===H.pathname&&I===H.search?(C!==H.hash&&(history.pushState({},"",h),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:H.href,newURL:h}))),C?Ys(a,C,a.classList.contains("header-anchor")):window.scrollTo(0,0)):s(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await i(sr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function Ja(){const e=wt(Ya);if(!e)throw new Error("useRouter() is called without provider.");return e}function Ai(){return Ja().route}function Ys(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-Xa()+o;requestAnimationFrame(s)}}function sr(e){const t=new URL(e,Ti);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ut.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const or=()=>gn.forEach(e=>e()),ju=Hr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Ai(),{site:n}=Wa();return()=>br(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?br(t.component,{onVnodeMounted:or,onVnodeUpdated:or,onVnodeUnmounted:or}):"404 Page Not Found"])}}),Vu=Hr({setup(e,{slots:t}){const n=se(!1);return xt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Du(){he&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(a=>a.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Uu(){if(he){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let a=c.textContent||"";i&&(a=a.replace(/^ *(\$|>) /gm,"").trim()),Qa(a).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function Qa(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function Bu(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=ir(l);for(const a of document.head.children)if(a.isEqualNode(c)){r.push(a);return}});return}const i=o.map(ir);r.forEach((l,c)=>{const a=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));a!==-1?delete i[a]:(l==null||l.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};Ur(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],a=xi(i,o);a!==document.title&&(document.title=a);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):ir(["meta",{name:"description",content:f}]),s(Si(i.head,eu(c)))})}function ir([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function Za(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function eu(e){return e.filter(t=>!Za(t))}const lr=new Set,Ri=()=>document.createElement("link"),tu=e=>{const t=Ri();t.rel="prefetch",t.href=e,document.head.appendChild(t)},nu=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let an;const ru=he&&(an=Ri())&&an.relList&&an.relList.supports&&an.relList.supports("prefetch")?tu:nu;function Ku(){if(!he||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!lr.has(c)){lr.add(c);const a=Ga(c);a&&ru(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):lr.add(l))})})};xt(r);const s=Ai();Ne(()=>s.path,r),$n(()=>{n&&n.disconnect()})}export{wu as $,pu as A,Hl as B,Xa as C,iu as D,au as E,_e as F,Fr as G,$u as H,ie as I,lu as J,Ei as K,Ai as L,xc as M,wt as N,Pu as O,Sr as P,Ru as Q,In as R,Mu as S,ci as T,he as U,Ln as V,uu as W,Su as X,Lu as Y,Jl as Z,xu as _,si as a,du as a0,bu as a1,hu as a2,yu as a3,Bu as a4,Ya as a5,Fu as a6,ka as a7,ju as a8,Vu as a9,ut as aa,Cu as ab,Hu as ac,Ga as ad,Ku as ae,Uu as af,Du as ag,br as ah,yi as ai,Kr as aj,Au as ak,Iu as al,Ou as am,Tu as an,Ja as ao,Ct as ap,Io as aq,cu as ar,vu as as,de as at,gu as au,dn as av,Eu as aw,Nu as ax,ti as b,mu as c,Hr as d,_u as e,Ka as f,Gs as g,re as h,$a as i,ri as j,wo as k,ou as l,Fa as m,Tr as n,Zo as o,su as p,_i as q,fu as r,se as s,Ki as t,Wa as u,Ne as v,Ol as w,Ur as x,xt as y,$n as z}; diff --git a/assets/chunks/metadata.ffcab0ab.js b/assets/chunks/metadata.ffcab0ab.js new file mode 100644 index 0000000..6662eee --- /dev/null +++ b/assets/chunks/metadata.ffcab0ab.js @@ -0,0 +1 @@ +window.__VP_HASH_MAP__=JSON.parse("{\"index.md\":\"C_L9eA6f\",\"args.md\":\"Doc_9Vk9\",\"submission.md\":\"GwBh5Gr1\",\"configuration.md\":\"CsuuCUAn\",\"favorite.md\":\"gPfjvyHT\",\"quick-start.md\":\"CWlth8zu\",\"frontend.md\":\"DzwsJqGp\",\"design.md\":\"BbdPHCak\",\"collection.md\":\"dbDkKkYg\",\"question.md\":\"DYI5h72W\",\"introduction.md\":\"ZetHVvoO\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"zh-Hans\",\"dir\":\"ltr\",\"title\":\"bili-sync\",\"description\":\"由 Rust & Tokio 驱动的哔哩哔哩同步工具\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"outline\":{\"label\":\"页面导航\",\"level\":\"deep\"},\"nav\":[{\"text\":\"主页\",\"link\":\"/\"},{\"text\":\"v2.11.0\",\"items\":[{\"text\":\"程序更新\",\"link\":\"https://github.com/amtoaer/bili-sync/releases\"},{\"text\":\"文档更新\",\"link\":\"https://github.com/search?q=repo:amtoaer/bili-sync+docs&type=commits\"}]}],\"sidebar\":[{\"text\":\"简介\",\"items\":[{\"text\":\"什么是 bili-sync?\",\"link\":\"/introduction\"},{\"text\":\"快速开始\",\"link\":\"/quick-start\"}]},{\"text\":\"细节\",\"items\":[{\"text\":\"配置说明\",\"link\":\"/configuration\"},{\"text\":\"命令行参数\",\"link\":\"/args\"},{\"text\":\"工作原理\",\"link\":\"/design\"}]},{\"text\":\"参考\",\"items\":[{\"text\":\"获取收藏夹信息\",\"link\":\"/favorite\"},{\"text\":\"获取合集/列表信息\",\"link\":\"/collection\"},{\"text\":\"获取用户投稿信息\",\"link\":\"/submission\"}]},{\"text\":\"其它\",\"items\":[{\"text\":\"常见问题\",\"link\":\"/question\"},{\"text\":\"管理页\",\"link\":\"/frontend\"}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/amtoaer/bili-sync\"}],\"search\":{\"provider\":\"local\"},\"notFound\":{\"title\":\"你来到了没有知识的荒原\",\"quote\":\"这里什么都没有\",\"linkText\":\"返回首页\"},\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"lastUpdated\":{\"text\":\"上次更新于\"},\"returnToTopLabel\":\"回到顶部\",\"sidebarMenuLabel\":\"菜单\",\"darkModeSwitchLabel\":\"主题\",\"lightModeSwitchTitle\":\"切换到浅色模式\",\"darkModeSwitchTitle\":\"切换到深色模式\"},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}"); \ No newline at end of file diff --git a/assets/chunks/theme.BbeQe9Cr.js b/assets/chunks/theme.BbeQe9Cr.js new file mode 100644 index 0000000..735976a --- /dev/null +++ b/assets/chunks/theme.BbeQe9Cr.js @@ -0,0 +1,4 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.BZie8BUK.js","assets/chunks/framework.Bsyxd66g.js"])))=>i.map(i=>d[i]); +import{d as _,o as s,c as u,r as l,n as A,a as x,t as C,b as y,w as v,e as h,T as Ae,_ as $,u as Vt,i as wt,f as Tt,g as Be,h as L,j as m,k as i,p as G,l as q,m as se,q as Ee,s as M,v as ee,x as $e,y as re,z as Oe,A as Ze,B as It,C as Nt,D as ie,F as B,E as K,G as Je,H as ye,I as g,J as ue,K as Qe,L as ve,M as _e,N as Le,O as Et,P as xe,Q as ze,R as et,S as tt,U as Pe,V as zt,W as Ct,X as Ht,Y as ot,Z as nt,$ as Mt,a0 as At,a1 as Bt,a2 as Ot}from"./framework.Bsyxd66g.js";const Ft=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(s(),u("span",{class:A(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[x(C(e.text),1)])],2))}}),Dt={key:0,class:"VPBackdrop"},Ut=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(s(),y(Ae,{name:"fade"},{default:v(()=>[e.show?(s(),u("div",Dt)):h("",!0)]),_:1}))}}),jt=$(Ut,[["__scopeId","data-v-54a304ca"]]),w=Vt;function Gt(o,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(o,e):(o(),(n=!0)&&setTimeout(()=>n=!1,e))}}function Ce(o){return/^\//.test(o)?o:`/${o}`}function Fe(o){const{pathname:e,search:t,hash:n,protocol:a}=new URL(o,"http://a.com");if(wt(o)||o.startsWith("#")||!a.startsWith("http")||!Tt(e))return o;const{site:r}=w(),c=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${n}`);return Be(c)}function me({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:n,theme:a,hash:r}=w(),c=L(()=>{var d,b;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:((b=e.value.locales[t.value])==null?void 0:b.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:L(()=>Object.entries(e.value.locales).flatMap(([d,b])=>c.value.label===b.label?[]:{text:b.label,link:qt(b.link||(d==="root"?"/":`/${d}/`),a.value.i18nRouting!==!1&&o,n.value.relativePath.slice(c.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:c}}function qt(o,e,t,n){return e?o.replace(/\/$/,"")+Ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):o}const Rt=o=>(G("data-v-6ff51ddd"),o=o(),q(),o),Wt={class:"NotFound"},Kt={class:"code"},Yt={class:"title"},Xt=Rt(()=>m("div",{class:"divider"},null,-1)),Zt={class:"quote"},Jt={class:"action"},Qt=["href","aria-label"],xt=_({__name:"NotFound",setup(o){const{theme:e}=w(),{currentLang:t}=me();return(n,a)=>{var r,c,p,d,b;return s(),u("div",Wt,[m("p",Kt,C(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),m("h1",Yt,C(((c=i(e).notFound)==null?void 0:c.title)??"PAGE NOT FOUND"),1),Xt,m("blockquote",Zt,C(((p=i(e).notFound)==null?void 0:p.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),m("div",Jt,[m("a",{class:"link",href:i(Be)(i(t).link),"aria-label":((d=i(e).notFound)==null?void 0:d.linkLabel)??"go to home"},C(((b=i(e).notFound)==null?void 0:b.linkText)??"Take me home"),9,Qt)])])}}}),eo=$(xt,[["__scopeId","data-v-6ff51ddd"]]);function at(o,e){if(Array.isArray(o))return ge(o);if(o==null)return[];e=Ce(e);const t=Object.keys(o).sort((a,r)=>r.split("/").length-a.split("/").length).find(a=>e.startsWith(Ce(a))),n=t?o[t]:[];return Array.isArray(n)?ge(n):ge(n.items,n.base)}function to(o){const e=[];let t=0;for(const n in o){const a=o[n];if(a.items){t=e.push(a);continue}e[t]||e.push({items:[]}),e[t].items.push(a)}return e}function oo(o){const e=[];function t(n){for(const a of n)a.text&&a.link&&e.push({text:a.text,link:a.link,docFooterText:a.docFooterText}),a.items&&t(a.items)}return t(o),e}function He(o,e){return Array.isArray(e)?e.some(t=>He(o,t)):se(o,e.link)?!0:e.items?He(o,e.items):!1}function ge(o,e){return[...o].map(t=>{const n={...t},a=n.base||e;return a&&n.link&&(n.link=a+n.link),n.items&&(n.items=ge(n.items,a)),n})}function te(){const{frontmatter:o,page:e,theme:t}=w(),n=Ee("(min-width: 960px)"),a=M(!1),r=L(()=>{const F=t.value.sidebar,z=e.value.relativePath;return F?at(F,z):[]}),c=M(r.value);ee(r,(F,z)=>{JSON.stringify(F)!==JSON.stringify(z)&&(c.value=r.value)});const p=L(()=>o.value.sidebar!==!1&&c.value.length>0&&o.value.layout!=="home"),d=L(()=>b?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),b=L(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),S=L(()=>p.value&&n.value),k=L(()=>p.value?to(c.value):[]);function V(){a.value=!0}function E(){a.value=!1}function N(){a.value?E():V()}return{isOpen:a,sidebar:c,sidebarGroups:k,hasSidebar:p,hasAside:b,leftAside:d,isSidebarEnabled:S,open:V,close:E,toggle:N}}function no(o,e){let t;$e(()=>{t=o.value?document.activeElement:void 0}),re(()=>{window.addEventListener("keyup",n)}),Oe(()=>{window.removeEventListener("keyup",n)});function n(a){a.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function ao(o){const{page:e,hash:t}=w(),n=M(!1),a=L(()=>o.value.collapsed!=null),r=L(()=>!!o.value.link),c=M(!1),p=()=>{c.value=se(e.value.relativePath,o.value.link)};ee([e,o,t],p),re(p);const d=L(()=>c.value?!0:o.value.items?He(e.value.relativePath,o.value.items):!1),b=L(()=>!!(o.value.items&&o.value.items.length));$e(()=>{n.value=!!(a.value&&o.value.collapsed)}),Ze(()=>{(c.value||d.value)&&(n.value=!1)});function S(){a.value&&(n.value=!n.value)}return{collapsed:n,collapsible:a,isLink:r,isActiveLink:c,hasActiveLink:d,hasChildren:b,toggle:S}}function so(){const{hasSidebar:o}=te(),e=Ee("(min-width: 960px)"),t=Ee("(min-width: 1280px)");return{isAsideEnabled:L(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const Me=[];function st(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function De(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:ro(t),link:"#"+t.id,level:n}});return io(e,o)}function ro(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function io(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,a]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(c=>c.level>=n&&c.level<=a),Me.length=0;for(const{element:c,link:p}of o)Me.push({element:c,link:p});const r=[];e:for(let c=0;c=0;d--){const b=o[d];if(b.level{requestAnimationFrame(r),window.addEventListener("scroll",n)}),It(()=>{c(location.hash)}),Oe(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const p=window.scrollY,d=window.innerHeight,b=document.body.offsetHeight,S=Math.abs(p+d-b)<1,k=Me.map(({element:E,link:N})=>({link:N,top:co(E)})).filter(({top:E})=>!Number.isNaN(E)).sort((E,N)=>E.top-N.top);if(!k.length){c(null);return}if(p<1){c(null);return}if(S){c(k[k.length-1].link);return}let V=null;for(const{link:E,top:N}of k){if(N>p+Nt()+4)break;V=E}c(V)}function c(p){a&&a.classList.remove("active"),p==null?a=null:a=o.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const d=a;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function co(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const uo=["href","title"],vo=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const n=t.href.split("#")[1],a=document.getElementById(decodeURIComponent(n));a==null||a.focus({preventScroll:!0})}return(t,n)=>{const a=ie("VPDocOutlineItem",!0);return s(),u("ul",{class:A(["VPDocOutlineItem",t.root?"root":"nested"])},[(s(!0),u(B,null,K(t.headers,({children:r,link:c,title:p})=>(s(),u("li",null,[m("a",{class:"outline-link",href:c,onClick:e,title:p},C(p),9,uo),r!=null&&r.length?(s(),y(a,{key:0,headers:r},null,8,["headers"])):h("",!0)]))),256))],2)}}}),rt=$(vo,[["__scopeId","data-v-53c99d69"]]),mo={class:"content"},po={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},fo=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=w(),n=Je([]);ye(()=>{n.value=De(e.value.outline??t.value.outline)});const a=M(),r=M();return lo(a,r),(c,p)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:A(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:a},[m("div",mo,[m("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),m("div",po,C(i(st)(i(t))),1),g(rt,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),ho=$(fo,[["__scopeId","data-v-f610f197"]]),_o={class:"VPDocAsideCarbonAds"},go=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,n)=>(s(),u("div",_o,[g(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),bo=o=>(G("data-v-cb998dce"),o=o(),q(),o),ko={class:"VPDocAside"},$o=bo(()=>m("div",{class:"spacer"},null,-1)),yo=_({__name:"VPDocAside",setup(o){const{theme:e}=w();return(t,n)=>(s(),u("div",ko,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),g(ho),l(t.$slots,"aside-outline-after",{},void 0,!0),$o,l(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(s(),y(go,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):h("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Lo=$(yo,[["__scopeId","data-v-cb998dce"]]);function Po(){const{theme:o,page:e}=w();return L(()=>{const{text:t="Edit this page",pattern:n=""}=o.value.editLink||{};let a;return typeof n=="function"?a=n(e.value):a=n.replace(/:path/g,e.value.filePath),{url:a,text:t}})}function So(){const{page:o,theme:e,frontmatter:t}=w();return L(()=>{var b,S,k,V,E,N,F,z;const n=at(e.value.sidebar,o.value.relativePath),a=oo(n),r=Vo(a,X=>X.link.replace(/[?#].*$/,"")),c=r.findIndex(X=>se(o.value.relativePath,X.link)),p=((b=e.value.docFooter)==null?void 0:b.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((S=e.value.docFooter)==null?void 0:S.next)===!1&&!t.value.next||t.value.next===!1;return{prev:p?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((k=r[c-1])==null?void 0:k.docFooterText)??((V=r[c-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((E=r[c-1])==null?void 0:E.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((N=r[c+1])==null?void 0:N.docFooterText)??((F=r[c+1])==null?void 0:F.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((z=r[c+1])==null?void 0:z.link)}}})}function Vo(o,e){const t=new Set;return o.filter(n=>{const a=e(n);return t.has(a)?!1:t.add(a)})}const Q=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=L(()=>e.tag??(e.href?"a":"span")),n=L(()=>e.href&&Qe.test(e.href)||e.target==="_blank");return(a,r)=>(s(),y(ue(t.value),{class:A(["VPLink",{link:a.href,"vp-external-link-icon":n.value,"no-icon":a.noIcon}]),href:a.href?i(Fe)(a.href):void 0,target:a.target??(n.value?"_blank":void 0),rel:a.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[l(a.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),wo={class:"VPLastUpdated"},To=["datetime"],Io=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,frontmatter:n,lang:a}=w(),r=L(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),c=L(()=>r.value.toISOString()),p=M("");return re(()=>{$e(()=>{var d,b,S;p.value=new Intl.DateTimeFormat((b=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&b.forceLocale?a.value:void 0,((S=e.value.lastUpdated)==null?void 0:S.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(r.value)})}),(d,b)=>{var S;return s(),u("p",wo,[x(C(((S=i(e).lastUpdated)==null?void 0:S.text)||i(e).lastUpdatedText||"Last updated")+": ",1),m("time",{datetime:c.value},C(p.value),9,To)])}}}),No=$(Io,[["__scopeId","data-v-19a7ae4e"]]),it=o=>(G("data-v-5941af80"),o=o(),q(),o),Eo={key:0,class:"VPDocFooter"},zo={key:0,class:"edit-info"},Co={key:0,class:"edit-link"},Ho=it(()=>m("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Mo={key:1,class:"last-updated"},Ao={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Bo=it(()=>m("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),Oo={class:"pager"},Fo=["innerHTML"],Do=["innerHTML"],Uo={class:"pager"},jo=["innerHTML"],Go=["innerHTML"],qo=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:n}=w(),a=Po(),r=So(),c=L(()=>e.value.editLink&&n.value.editLink!==!1),p=L(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),d=L(()=>c.value||p.value||r.value.prev||r.value.next);return(b,S)=>{var k,V,E,N;return d.value?(s(),u("footer",Eo,[l(b.$slots,"doc-footer-before",{},void 0,!0),c.value||p.value?(s(),u("div",zo,[c.value?(s(),u("div",Co,[g(Q,{class:"edit-link-button",href:i(a).url,"no-icon":!0},{default:v(()=>[Ho,x(" "+C(i(a).text),1)]),_:1},8,["href"])])):h("",!0),p.value?(s(),u("div",Mo,[g(No)])):h("",!0)])):h("",!0),(k=i(r).prev)!=null&&k.link||(V=i(r).next)!=null&&V.link?(s(),u("nav",Ao,[Bo,m("div",Oo,[(E=i(r).prev)!=null&&E.link?(s(),y(Q,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:v(()=>{var F;return[m("span",{class:"desc",innerHTML:((F=i(e).docFooter)==null?void 0:F.prev)||"Previous page"},null,8,Fo),m("span",{class:"title",innerHTML:i(r).prev.text},null,8,Do)]}),_:1},8,["href"])):h("",!0)]),m("div",Uo,[(N=i(r).next)!=null&&N.link?(s(),y(Q,{key:0,class:"pager-link next",href:i(r).next.link},{default:v(()=>{var F;return[m("span",{class:"desc",innerHTML:((F=i(e).docFooter)==null?void 0:F.next)||"Next page"},null,8,jo),m("span",{class:"title",innerHTML:i(r).next.text},null,8,Go)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),Ro=$(qo,[["__scopeId","data-v-5941af80"]]),Wo=o=>(G("data-v-e6f2a212"),o=o(),q(),o),Ko={class:"container"},Yo=Wo(()=>m("div",{class:"aside-curtain"},null,-1)),Xo={class:"aside-container"},Zo={class:"aside-content"},Jo={class:"content"},Qo={class:"content-container"},xo={class:"main"},en=_({__name:"VPDoc",setup(o){const{theme:e}=w(),t=ve(),{hasSidebar:n,hasAside:a,leftAside:r}=te(),c=L(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,d)=>{const b=ie("Content");return s(),u("div",{class:A(["VPDoc",{"has-sidebar":i(n),"has-aside":i(a)}])},[l(p.$slots,"doc-top",{},void 0,!0),m("div",Ko,[i(a)?(s(),u("div",{key:0,class:A(["aside",{"left-aside":i(r)}])},[Yo,m("div",Xo,[m("div",Zo,[g(Lo,null,{"aside-top":v(()=>[l(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[l(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[l(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),m("div",Jo,[m("div",Qo,[l(p.$slots,"doc-before",{},void 0,!0),m("main",xo,[g(b,{class:A(["vp-doc",[c.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),g(Ro,null,{"doc-footer-before":v(()=>[l(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(p.$slots,"doc-after",{},void 0,!0)])])]),l(p.$slots,"doc-bottom",{},void 0,!0)],2)}}}),tn=$(en,[["__scopeId","data-v-e6f2a212"]]),on=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=L(()=>e.href&&Qe.test(e.href)),n=L(()=>e.tag||e.href?"a":"button");return(a,r)=>(s(),y(ue(n.value),{class:A(["VPButton",[a.size,a.theme]]),href:a.href?i(Fe)(a.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[x(C(a.text),1)]),_:1},8,["class","href","target","rel"]))}}),nn=$(on,[["__scopeId","data-v-c9cf0e3c"]]),an=["src","alt"],sn=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const n=ie("VPImage",!0);return e.image?(s(),u(B,{key:0},[typeof e.image=="string"||"src"in e.image?(s(),u("img",_e({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(Be)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,an)):(s(),u(B,{key:1},[g(n,_e({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),g(n,_e({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),ke=$(sn,[["__scopeId","data-v-ab19afbb"]]),rn=o=>(G("data-v-b10c5094"),o=o(),q(),o),ln={class:"container"},cn={class:"main"},un={key:0,class:"name"},dn=["innerHTML"],vn=["innerHTML"],mn=["innerHTML"],pn={key:0,class:"actions"},fn={key:0,class:"image"},hn={class:"image-container"},_n=rn(()=>m("div",{class:"image-bg"},null,-1)),gn=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=Le("hero-image-slot-exists");return(t,n)=>(s(),u("div",{class:A(["VPHero",{"has-image":t.image||i(e)}])},[m("div",ln,[m("div",cn,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(s(),u("h1",un,[m("span",{innerHTML:t.name,class:"clip"},null,8,dn)])):h("",!0),t.text?(s(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,vn)):h("",!0),t.tagline?(s(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,mn)):h("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(s(),u("div",pn,[(s(!0),u(B,null,K(t.actions,a=>(s(),u("div",{key:a.link,class:"action"},[g(nn,{tag:"a",size:"medium",theme:a.theme,text:a.text,href:a.link,target:a.target,rel:a.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(s(),u("div",fn,[m("div",hn,[_n,l(t.$slots,"home-hero-image",{},()=>[t.image?(s(),y(ke,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),bn=$(gn,[["__scopeId","data-v-b10c5094"]]),kn=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=w();return(t,n)=>i(e).hero?(s(),y(bn,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":v(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),$n=o=>(G("data-v-bd37d1a2"),o=o(),q(),o),yn={class:"box"},Ln={key:0,class:"icon"},Pn=["innerHTML"],Sn=["innerHTML"],Vn=["innerHTML"],wn={key:4,class:"link-text"},Tn={class:"link-text-value"},In=$n(()=>m("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),Nn=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(s(),y(Q,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[m("article",yn,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",Ln,[g(ke,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(s(),y(ke,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(s(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Pn)):h("",!0),m("h2",{class:"title",innerHTML:e.title},null,8,Sn),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Vn)):h("",!0),e.linkText?(s(),u("div",wn,[m("p",Tn,[x(C(e.linkText)+" ",1),In])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),En=$(Nn,[["__scopeId","data-v-bd37d1a2"]]),zn={key:0,class:"VPFeatures"},Cn={class:"container"},Hn={class:"items"},Mn=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=L(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,a)=>n.features?(s(),u("div",zn,[m("div",Cn,[m("div",Hn,[(s(!0),u(B,null,K(n.features,r=>(s(),u("div",{key:r.title,class:A(["item",[t.value]])},[g(En,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),An=$(Mn,[["__scopeId","data-v-b1eea84a"]]),Bn=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=w();return(t,n)=>i(e).features?(s(),y(An,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):h("",!0)}}),On=_({__name:"VPHomeContent",setup(o){const{width:e}=Et({initialWidth:0,includeScrollbar:!1});return(t,n)=>(s(),u("div",{class:"vp-doc container",style:xe(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),Fn=$(On,[["__scopeId","data-v-c141a4bd"]]),Dn={class:"VPHome"},Un=_({__name:"VPHome",setup(o){const{frontmatter:e}=w();return(t,n)=>{const a=ie("Content");return s(),u("div",Dn,[l(t.$slots,"home-hero-before",{},void 0,!0),g(kn,null,{"home-hero-info-before":v(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),g(Bn),l(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(s(),y(Fn,{key:0},{default:v(()=>[g(a)]),_:1})):(s(),y(a,{key:1}))])}}}),jn=$(Un,[["__scopeId","data-v-07b1ad08"]]),Gn={},qn={class:"VPPage"};function Rn(o,e){const t=ie("Content");return s(),u("div",qn,[l(o.$slots,"page-top"),g(t),l(o.$slots,"page-bottom")])}const Wn=$(Gn,[["render",Rn]]),Kn=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=w(),{hasSidebar:n}=te();return(a,r)=>(s(),u("div",{class:A(["VPContent",{"has-sidebar":i(n),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?l(a.$slots,"not-found",{key:0},()=>[g(eo)],!0):i(t).layout==="page"?(s(),y(Wn,{key:1},{"page-top":v(()=>[l(a.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[l(a.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(s(),y(jn,{key:2},{"home-hero-before":v(()=>[l(a.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[l(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(a.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[l(a.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[l(a.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[l(a.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(s(),y(ue(i(t).layout),{key:3})):(s(),y(tn,{key:4},{"doc-top":v(()=>[l(a.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[l(a.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[l(a.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[l(a.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[l(a.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[l(a.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[l(a.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(a.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(a.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(a.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[l(a.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Yn=$(Kn,[["__scopeId","data-v-9a6c75ad"]]),Xn={class:"container"},Zn=["innerHTML"],Jn=["innerHTML"],Qn=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=w(),{hasSidebar:n}=te();return(a,r)=>i(e).footer&&i(t).footer!==!1?(s(),u("footer",{key:0,class:A(["VPFooter",{"has-sidebar":i(n)}])},[m("div",Xn,[i(e).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,Zn)):h("",!0),i(e).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,Jn)):h("",!0)])],2)):h("",!0)}}),xn=$(Qn,[["__scopeId","data-v-566314d4"]]);function ea(){const{theme:o,frontmatter:e}=w(),t=Je([]),n=L(()=>t.value.length>0);return ye(()=>{t.value=De(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:n}}const ta=o=>(G("data-v-883964e0"),o=o(),q(),o),oa={class:"menu-text"},na=ta(()=>m("span",{class:"vpi-chevron-right icon"},null,-1)),aa={class:"header"},sa={class:"outline"},ra=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=w(),n=M(!1),a=M(0),r=M(),c=M();function p(k){var V;(V=r.value)!=null&&V.contains(k.target)||(n.value=!1)}ee(n,k=>{if(k){document.addEventListener("click",p);return}document.removeEventListener("click",p)}),ze("Escape",()=>{n.value=!1}),ye(()=>{n.value=!1});function d(){n.value=!n.value,a.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function b(k){k.target.classList.contains("outline-link")&&(c.value&&(c.value.style.transition="none"),et(()=>{n.value=!1}))}function S(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(k,V)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:xe({"--vp-vh":a.value+"px"}),ref_key:"main",ref:r},[k.headers.length>0?(s(),u("button",{key:0,onClick:d,class:A({open:n.value})},[m("span",oa,C(i(st)(i(t))),1),na],2)):(s(),u("button",{key:1,onClick:S},C(i(t).returnToTopLabel||"Return to top"),1)),g(Ae,{name:"flyout"},{default:v(()=>[n.value?(s(),u("div",{key:0,ref_key:"items",ref:c,class:"items",onClick:b},[m("div",aa,[m("a",{class:"top-link",href:"#",onClick:S},C(i(t).returnToTopLabel||"Return to top"),1)]),m("div",sa,[g(rt,{headers:k.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),ia=$(ra,[["__scopeId","data-v-883964e0"]]),la=o=>(G("data-v-2488c25a"),o=o(),q(),o),ca={class:"container"},ua=["aria-expanded"],da=la(()=>m("span",{class:"vpi-align-left menu-icon"},null,-1)),va={class:"menu-text"},ma=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=w(),{hasSidebar:n}=te(),{headers:a}=ea(),{y:r}=tt(),c=M(0);re(()=>{c.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ye(()=>{a.value=De(t.value.outline??e.value.outline)});const p=L(()=>a.value.length===0),d=L(()=>p.value&&!n.value),b=L(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:p.value,fixed:d.value}));return(S,k)=>i(t).layout!=="home"&&(!d.value||i(r)>=c.value)?(s(),u("div",{key:0,class:A(b.value)},[m("div",ca,[i(n)?(s(),u("button",{key:0,class:"menu","aria-expanded":S.open,"aria-controls":"VPSidebarNav",onClick:k[0]||(k[0]=V=>S.$emit("open-menu"))},[da,m("span",va,C(i(e).sidebarMenuLabel||"Menu"),1)],8,ua)):h("",!0),g(ia,{headers:i(a),navHeight:c.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),pa=$(ma,[["__scopeId","data-v-2488c25a"]]);function fa(){const o=M(!1);function e(){o.value=!0,window.addEventListener("resize",a)}function t(){o.value=!1,window.removeEventListener("resize",a)}function n(){o.value?t():e()}function a(){window.outerWidth>=768&&t()}const r=ve();return ee(()=>r.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:n}}const ha={},_a={class:"VPSwitch",type:"button",role:"switch"},ga={class:"check"},ba={key:0,class:"icon"};function ka(o,e){return s(),u("button",_a,[m("span",ga,[o.$slots.default?(s(),u("span",ba,[l(o.$slots,"default",{},void 0,!0)])):h("",!0)])])}const $a=$(ha,[["render",ka],["__scopeId","data-v-b4ccac88"]]),lt=o=>(G("data-v-7df97737"),o=o(),q(),o),ya=lt(()=>m("span",{class:"vpi-sun sun"},null,-1)),La=lt(()=>m("span",{class:"vpi-moon moon"},null,-1)),Pa=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=w(),n=Le("toggle-appearance",()=>{e.value=!e.value}),a=L(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(r,c)=>(s(),y($a,{title:a.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(n)},{default:v(()=>[ya,La]),_:1},8,["title","aria-checked","onClick"]))}}),Ue=$(Pa,[["__scopeId","data-v-7df97737"]]),Sa={key:0,class:"VPNavBarAppearance"},Va=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=w();return(t,n)=>i(e).appearance&&i(e).appearance!=="force-dark"?(s(),u("div",Sa,[g(Ue)])):h("",!0)}}),wa=$(Va,[["__scopeId","data-v-283b26e9"]]),je=M();let ct=!1,Ne=0;function Ta(o){const e=M(!1);if(Pe){!ct&&Ia(),Ne++;const t=ee(je,n=>{var a,r,c;n===o.el.value||(a=o.el.value)!=null&&a.contains(n)?(e.value=!0,(r=o.onFocus)==null||r.call(o)):(e.value=!1,(c=o.onBlur)==null||c.call(o))});Oe(()=>{t(),Ne--,Ne||Na()})}return zt(e)}function Ia(){document.addEventListener("focusin",ut),ct=!0,je.value=document.activeElement}function Na(){document.removeEventListener("focusin",ut)}function ut(){je.value=document.activeElement}const Ea={class:"VPMenuLink"},za=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=w();return(t,n)=>(s(),u("div",Ea,[g(Q,{class:A({active:i(se)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[x(C(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),Se=$(za,[["__scopeId","data-v-f51f088d"]]),Ca={class:"VPMenuGroup"},Ha={key:0,class:"title"},Ma=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(s(),u("div",Ca,[e.text?(s(),u("p",Ha,C(e.text),1)):h("",!0),(s(!0),u(B,null,K(e.items,n=>(s(),u(B,null,["link"in n?(s(),y(Se,{key:0,item:n},null,8,["item"])):h("",!0)],64))),256))]))}}),Aa=$(Ma,[["__scopeId","data-v-a6b0397c"]]),Ba={class:"VPMenu"},Oa={key:0,class:"items"},Fa=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(s(),u("div",Ba,[e.items?(s(),u("div",Oa,[(s(!0),u(B,null,K(e.items,n=>(s(),u(B,{key:n.text},["link"in n?(s(),y(Se,{key:0,item:n},null,8,["item"])):(s(),y(Aa,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),Da=$(Fa,[["__scopeId","data-v-e42ed9b3"]]),Ua=o=>(G("data-v-af5898d3"),o=o(),q(),o),ja=["aria-expanded","aria-label"],Ga={key:0,class:"text"},qa=["innerHTML"],Ra=Ua(()=>m("span",{class:"vpi-chevron-down text-icon"},null,-1)),Wa={key:1,class:"vpi-more-horizontal icon"},Ka={class:"menu"},Ya=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=M(!1),t=M();Ta({el:t,onBlur:n});function n(){e.value=!1}return(a,r)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=c=>e.value=!0),onMouseleave:r[2]||(r[2]=c=>e.value=!1)},[m("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":a.label,onClick:r[0]||(r[0]=c=>e.value=!e.value)},[a.button||a.icon?(s(),u("span",Ga,[a.icon?(s(),u("span",{key:0,class:A([a.icon,"option-icon"])},null,2)):h("",!0),a.button?(s(),u("span",{key:1,innerHTML:a.button},null,8,qa)):h("",!0),Ra])):(s(),u("span",Wa))],8,ja),m("div",Ka,[g(Da,{items:a.items},{default:v(()=>[l(a.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),Ge=$(Ya,[["__scopeId","data-v-af5898d3"]]),Xa=["href","aria-label","innerHTML"],Za=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=L(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,a)=>(s(),u("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Xa))}}),Ja=$(Za,[["__scopeId","data-v-358b6670"]]),Qa={class:"VPSocialLinks"},xa=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(s(),u("div",Qa,[(s(!0),u(B,null,K(e.links,({link:n,icon:a,ariaLabel:r})=>(s(),y(Ja,{key:n,icon:a,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),qe=$(xa,[["__scopeId","data-v-e71e869c"]]),es={key:0,class:"group translations"},ts={class:"trans-title"},os={key:1,class:"group"},ns={class:"item appearance"},as={class:"label"},ss={class:"appearance-action"},rs={key:2,class:"group"},is={class:"item social-links"},ls=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=w(),{localeLinks:n,currentLang:a}=me({correspondingLink:!0}),r=L(()=>n.value.length&&a.value.label||e.value.appearance||t.value.socialLinks);return(c,p)=>r.value?(s(),y(Ge,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[i(n).length&&i(a).label?(s(),u("div",es,[m("p",ts,C(i(a).label),1),(s(!0),u(B,null,K(i(n),d=>(s(),y(Se,{key:d.link,item:d},null,8,["item"]))),128))])):h("",!0),i(e).appearance&&i(e).appearance!=="force-dark"?(s(),u("div",os,[m("div",ns,[m("p",as,C(i(t).darkModeSwitchLabel||"Appearance"),1),m("div",ss,[g(Ue)])])])):h("",!0),i(t).socialLinks?(s(),u("div",rs,[m("div",is,[g(qe,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),cs=$(ls,[["__scopeId","data-v-8e87c032"]]),us=o=>(G("data-v-6bee1efd"),o=o(),q(),o),ds=["aria-expanded"],vs=us(()=>m("span",{class:"container"},[m("span",{class:"top"}),m("span",{class:"middle"}),m("span",{class:"bottom"})],-1)),ms=[vs],ps=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(s(),u("button",{type:"button",class:A(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},ms,10,ds))}}),fs=$(ps,[["__scopeId","data-v-6bee1efd"]]),hs=["innerHTML"],_s=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=w();return(t,n)=>(s(),y(Q,{class:A({VPNavBarMenuLink:!0,active:i(se)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[m("span",{innerHTML:t.item.text},null,8,hs)]),_:1},8,["class","href","noIcon","target","rel"]))}}),gs=$(_s,[["__scopeId","data-v-08fbf4b6"]]),bs=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=w(),n=r=>"link"in r?se(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(n),a=L(()=>n(e.item));return(r,c)=>(s(),y(Ge,{class:A({VPNavBarMenuGroup:!0,active:i(se)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||a.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),ks=o=>(G("data-v-f732b5d0"),o=o(),q(),o),$s={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ys=ks(()=>m("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Ls=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=w();return(t,n)=>i(e).nav?(s(),u("nav",$s,[ys,(s(!0),u(B,null,K(i(e).nav,a=>(s(),u(B,{key:a.text},["link"in a?(s(),y(gs,{key:0,item:a},null,8,["item"])):(s(),y(bs,{key:1,item:a},null,8,["item"]))],64))),128))])):h("",!0)}}),Ps=$(Ls,[["__scopeId","data-v-f732b5d0"]]);function Ss(o){const{localeIndex:e,theme:t}=w();function n(a){var N,F,z;const r=a.split("."),c=(N=t.value.search)==null?void 0:N.options,p=c&&typeof c=="object",d=p&&((z=(F=c.locales)==null?void 0:F[e.value])==null?void 0:z.translations)||null,b=p&&c.translations||null;let S=d,k=b,V=o;const E=r.pop();for(const X of r){let Z=null;const D=V==null?void 0:V[X];D&&(Z=V=D);const oe=k==null?void 0:k[X];oe&&(Z=k=oe);const J=S==null?void 0:S[X];J&&(Z=S=J),D||(V=Z),oe||(k=Z),J||(S=Z)}return(S==null?void 0:S[E])??(k==null?void 0:k[E])??(V==null?void 0:V[E])??""}return n}const Vs=["aria-label"],ws={class:"DocSearch-Button-Container"},Ts=m("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Is={class:"DocSearch-Button-Placeholder"},Ns=m("span",{class:"DocSearch-Button-Keys"},[m("kbd",{class:"DocSearch-Button-Key"}),m("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Ke=_({__name:"VPNavBarSearchButton",setup(o){const t=Ss({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,a)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[m("span",ws,[Ts,m("span",Is,C(i(t)("button.buttonText")),1)]),Ns],8,Vs))}}),Es={class:"VPNavBarSearch"},zs={id:"local-search"},Cs={key:1,id:"docsearch"},Hs=_({__name:"VPNavBarSearch",setup(o){const e=Ct(()=>Ht(()=>import("./VPLocalSearchBox.BZie8BUK.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=w(),a=M(!1),r=M(!1);re(()=>{});function c(){a.value||(a.value=!0,setTimeout(p,16))}function p(){const k=new Event("keydown");k.key="k",k.metaKey=!0,window.dispatchEvent(k),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||p()},16)}function d(k){const V=k.target,E=V.tagName;return V.isContentEditable||E==="INPUT"||E==="SELECT"||E==="TEXTAREA"}const b=M(!1);ze("k",k=>{(k.ctrlKey||k.metaKey)&&(k.preventDefault(),b.value=!0)}),ze("/",k=>{d(k)||(k.preventDefault(),b.value=!0)});const S="local";return(k,V)=>{var E;return s(),u("div",Es,[i(S)==="local"?(s(),u(B,{key:0},[b.value?(s(),y(i(e),{key:0,onClose:V[0]||(V[0]=N=>b.value=!1)})):h("",!0),m("div",zs,[g(Ke,{onClick:V[1]||(V[1]=N=>b.value=!0)})])],64)):i(S)==="algolia"?(s(),u(B,{key:1},[a.value?(s(),y(i(t),{key:0,algolia:((E=i(n).search)==null?void 0:E.options)??i(n).algolia,onVnodeBeforeMount:V[2]||(V[2]=N=>r.value=!0)},null,8,["algolia"])):h("",!0),r.value?h("",!0):(s(),u("div",Cs,[g(Ke,{onClick:c})]))],64)):h("",!0)])}}}),Ms=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=w();return(t,n)=>i(e).socialLinks?(s(),y(qe,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),As=$(Ms,[["__scopeId","data-v-ef6192dc"]]),Bs=["href","rel","target"],Os={key:1},Fs={key:2},Ds=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=w(),{hasSidebar:n}=te(),{currentLang:a}=me(),r=L(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),c=L(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),p=L(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,b)=>(s(),u("div",{class:A(["VPNavBarTitle",{"has-sidebar":i(n)}])},[m("a",{class:"title",href:r.value??i(Fe)(i(a).link),rel:c.value,target:p.value},[l(d.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(s(),y(ke,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):h("",!0),i(t).siteTitle?(s(),u("span",Os,C(i(t).siteTitle),1)):i(t).siteTitle===void 0?(s(),u("span",Fs,C(i(e).title),1)):h("",!0),l(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,Bs)],2))}}),Us=$(Ds,[["__scopeId","data-v-0ad69264"]]),js={class:"items"},Gs={class:"title"},qs=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=w(),{localeLinks:t,currentLang:n}=me({correspondingLink:!0});return(a,r)=>i(t).length&&i(n).label?(s(),y(Ge,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:v(()=>[m("div",js,[m("p",Gs,C(i(n).label),1),(s(!0),u(B,null,K(i(t),c=>(s(),y(Se,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Rs=$(qs,[["__scopeId","data-v-acee064b"]]),Ws=o=>(G("data-v-844edcde"),o=o(),q(),o),Ks={class:"wrapper"},Ys={class:"container"},Xs={class:"title"},Zs={class:"content"},Js={class:"content-body"},Qs=Ws(()=>m("div",{class:"divider"},[m("div",{class:"divider-line"})],-1)),xs=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const{y:e}=tt(),{hasSidebar:t}=te(),{frontmatter:n}=w(),a=M({});return Ze(()=>{a.value={"has-sidebar":t.value,home:n.value.layout==="home",top:e.value===0}}),(r,c)=>(s(),u("div",{class:A(["VPNavBar",a.value])},[m("div",Ks,[m("div",Ys,[m("div",Xs,[g(Us,null,{"nav-bar-title-before":v(()=>[l(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),m("div",Zs,[m("div",Js,[l(r.$slots,"nav-bar-content-before",{},void 0,!0),g(Hs,{class:"search"}),g(Ps,{class:"menu"}),g(Rs,{class:"translations"}),g(wa,{class:"appearance"}),g(As,{class:"social-links"}),g(cs,{class:"extra"}),l(r.$slots,"nav-bar-content-after",{},void 0,!0),g(fs,{class:"hamburger",active:r.isScreenOpen,onClick:c[0]||(c[0]=p=>r.$emit("toggle-screen"))},null,8,["active"])])])])]),Qs],2))}}),er=$(xs,[["__scopeId","data-v-844edcde"]]),tr={key:0,class:"VPNavScreenAppearance"},or={class:"text"},nr=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=w();return(n,a)=>i(e).appearance&&i(e).appearance!=="force-dark"?(s(),u("div",tr,[m("p",or,C(i(t).darkModeSwitchLabel||"Appearance"),1),g(Ue)])):h("",!0)}}),ar=$(nr,[["__scopeId","data-v-338d9b48"]]),sr=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=Le("close-screen");return(t,n)=>(s(),y(Q,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),rr=$(sr,[["__scopeId","data-v-1a934d60"]]),ir=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=Le("close-screen");return(t,n)=>(s(),y(Q,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e)},{default:v(()=>[x(C(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),dt=$(ir,[["__scopeId","data-v-aea78dd1"]]),lr={class:"VPNavScreenMenuGroupSection"},cr={key:0,class:"title"},ur=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(s(),u("div",lr,[e.text?(s(),u("p",cr,C(e.text),1)):h("",!0),(s(!0),u(B,null,K(e.items,n=>(s(),y(dt,{key:n.text,item:n},null,8,["item"]))),128))]))}}),dr=$(ur,[["__scopeId","data-v-f60dbfa7"]]),vr=o=>(G("data-v-d2212c70"),o=o(),q(),o),mr=["aria-controls","aria-expanded"],pr=["innerHTML"],fr=vr(()=>m("span",{class:"vpi-plus button-icon"},null,-1)),hr=["id"],_r={key:1,class:"group"},gr=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=M(!1),n=L(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function a(){t.value=!t.value}return(r,c)=>(s(),u("div",{class:A(["VPNavScreenMenuGroup",{open:t.value}])},[m("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:a},[m("span",{class:"button-text",innerHTML:r.text},null,8,pr),fr],8,mr),m("div",{id:n.value,class:"items"},[(s(!0),u(B,null,K(r.items,p=>(s(),u(B,{key:p.text},["link"in p?(s(),u("div",{key:p.text,class:"item"},[g(dt,{item:p},null,8,["item"])])):(s(),u("div",_r,[g(dr,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,hr)],2))}}),br=$(gr,[["__scopeId","data-v-d2212c70"]]),kr={key:0,class:"VPNavScreenMenu"},$r=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=w();return(t,n)=>i(e).nav?(s(),u("nav",kr,[(s(!0),u(B,null,K(i(e).nav,a=>(s(),u(B,{key:a.text},["link"in a?(s(),y(rr,{key:0,item:a},null,8,["item"])):(s(),y(br,{key:1,text:a.text||"",items:a.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),yr=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=w();return(t,n)=>i(e).socialLinks?(s(),y(qe,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),vt=o=>(G("data-v-516e4bc3"),o=o(),q(),o),Lr=vt(()=>m("span",{class:"vpi-languages icon lang"},null,-1)),Pr=vt(()=>m("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Sr={class:"list"},Vr=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=me({correspondingLink:!0}),n=M(!1);function a(){n.value=!n.value}return(r,c)=>i(e).length&&i(t).label?(s(),u("div",{key:0,class:A(["VPNavScreenTranslations",{open:n.value}])},[m("button",{class:"title",onClick:a},[Lr,x(" "+C(i(t).label)+" ",1),Pr]),m("ul",Sr,[(s(!0),u(B,null,K(i(e),p=>(s(),u("li",{key:p.link,class:"item"},[g(Q,{class:"link",href:p.link},{default:v(()=>[x(C(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),wr=$(Vr,[["__scopeId","data-v-516e4bc3"]]),Tr={class:"container"},Ir=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=M(null),t=ot(Pe?document.body:null);return(n,a)=>(s(),y(Ae,{name:"fade",onEnter:a[0]||(a[0]=r=>t.value=!0),onAfterLeave:a[1]||(a[1]=r=>t.value=!1)},{default:v(()=>[n.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[m("div",Tr,[l(n.$slots,"nav-screen-content-before",{},void 0,!0),g($r,{class:"menu"}),g(wr,{class:"translations"}),g(ar,{class:"appearance"}),g(yr,{class:"social-links"}),l(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),Nr=$(Ir,[["__scopeId","data-v-57cce842"]]),Er={key:0,class:"VPNav"},zr=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=fa(),{frontmatter:a}=w(),r=L(()=>a.value.navbar!==!1);return nt("close-screen",t),$e(()=>{Pe&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(c,p)=>r.value?(s(),u("header",Er,[g(er,{"is-screen-open":i(e),onToggleScreen:i(n)},{"nav-bar-title-before":v(()=>[l(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(c.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[l(c.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[l(c.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),g(Nr,{open:i(e)},{"nav-screen-content-before":v(()=>[l(c.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[l(c.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Cr=$(zr,[["__scopeId","data-v-7ad780c2"]]),mt=o=>(G("data-v-c24f735a"),o=o(),q(),o),Hr=["role","tabindex"],Mr=mt(()=>m("div",{class:"indicator"},null,-1)),Ar=mt(()=>m("span",{class:"vpi-chevron-right caret-icon"},null,-1)),Br=[Ar],Or={key:1,class:"items"},Fr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:n,isLink:a,isActiveLink:r,hasActiveLink:c,hasChildren:p,toggle:d}=ao(L(()=>e.item)),b=L(()=>p.value?"section":"div"),S=L(()=>a.value?"a":"div"),k=L(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=L(()=>a.value?void 0:"button"),E=L(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":a.value},{"is-active":r.value},{"has-active":c.value}]);function N(z){"key"in z&&z.key!=="Enter"||!e.item.link&&d()}function F(){e.item.link&&d()}return(z,X)=>{const Z=ie("VPSidebarItem",!0);return s(),y(ue(b.value),{class:A(["VPSidebarItem",E.value])},{default:v(()=>[z.item.text?(s(),u("div",_e({key:0,class:"item",role:V.value},At(z.item.items?{click:N,keydown:N}:{},!0),{tabindex:z.item.items&&0}),[Mr,z.item.link?(s(),y(Q,{key:0,tag:S.value,class:"link",href:z.item.link,rel:z.item.rel,target:z.item.target},{default:v(()=>[(s(),y(ue(k.value),{class:"text",innerHTML:z.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),y(ue(k.value),{key:1,class:"text",innerHTML:z.item.text},null,8,["innerHTML"])),z.item.collapsed!=null&&z.item.items&&z.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:F,onKeydown:Mt(F,["enter"]),tabindex:"0"},Br,32)):h("",!0)],16,Hr)):h("",!0),z.item.items&&z.item.items.length?(s(),u("div",Or,[z.depth<5?(s(!0),u(B,{key:0},K(z.item.items,D=>(s(),y(Z,{key:D.text,item:D,depth:z.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),Dr=$(Fr,[["__scopeId","data-v-c24f735a"]]),pt=o=>(G("data-v-4871f9f5"),o=o(),q(),o),Ur=pt(()=>m("div",{class:"curtain"},null,-1)),jr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Gr=pt(()=>m("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),qr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=te(),n=o,a=M(null),r=ot(Pe?document.body:null);return ee([n,a],()=>{var c;n.open?(r.value=!0,(c=a.value)==null||c.focus()):r.value=!1},{immediate:!0,flush:"post"}),(c,p)=>i(t)?(s(),u("aside",{key:0,class:A(["VPSidebar",{open:c.open}]),ref_key:"navEl",ref:a,onClick:p[0]||(p[0]=Bt(()=>{},["stop"]))},[Ur,m("nav",jr,[Gr,l(c.$slots,"sidebar-nav-before",{},void 0,!0),(s(!0),u(B,null,K(i(e),d=>(s(),u("div",{key:d.text,class:"group"},[g(Dr,{item:d,depth:0},null,8,["item"])]))),128)),l(c.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Rr=$(qr,[["__scopeId","data-v-4871f9f5"]]),Wr=_({__name:"VPSkipLink",setup(o){const e=ve(),t=M();ee(()=>e.path,()=>t.value.focus());function n({target:a}){const r=document.getElementById(decodeURIComponent(a.hash).slice(1));if(r){const c=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",c)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",c),r.focus(),window.scrollTo(0,0)}}return(a,r)=>(s(),u(B,null,[m("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),m("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),Kr=$(Wr,[["__scopeId","data-v-c8291ffa"]]),Yr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:n}=te(),a=ve();ee(()=>a.path,n),no(e,n);const{frontmatter:r}=w(),c=Ot(),p=L(()=>!!c["home-hero-image"]);return nt("hero-image-slot-exists",p),(d,b)=>{const S=ie("Content");return i(r).layout!==!1?(s(),u("div",{key:0,class:A(["Layout",i(r).pageClass])},[l(d.$slots,"layout-top",{},void 0,!0),g(Kr),g(jt,{class:"backdrop",show:i(e),onClick:i(n)},null,8,["show","onClick"]),g(Cr,null,{"nav-bar-title-before":v(()=>[l(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[l(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[l(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[l(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[l(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),g(pa,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),g(Rr,{open:i(e)},{"sidebar-nav-before":v(()=>[l(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[l(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),g(Yn,null,{"page-top":v(()=>[l(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[l(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[l(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[l(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[l(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[l(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[l(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[l(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[l(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[l(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[l(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[l(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[l(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[l(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[l(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[l(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),g(xn),l(d.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),y(S,{key:1}))}}}),Xr=$(Yr,[["__scopeId","data-v-d8b57b2d"]]),Zr={Layout:Xr,enhanceApp:({app:o})=>{o.component("Badge",Ft)}};/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */var ae=Object.assign||function(o){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},n=window.Promise||function(P){function T(){}P(T,T)},a=function(P){var T=P.target;if(T===pe){N();return}D.indexOf(T)!==-1&&F({target:T})},r=function(){if(!(J||!f.original)){var P=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(Re-P)>H.scrollOffset&&setTimeout(N,150)}},c=function(P){var T=P.key||P.keyCode;(T==="Escape"||T==="Esc"||T===27)&&N()},p=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},T=P;if(P.background&&(pe.style.background=P.background),P.container&&P.container instanceof Object&&(T.container=ae({},H.container,P.container)),P.template){var O=be(P.template)?P.template:document.querySelector(P.template);T.template=O}return H=ae({},H,T),D.forEach(function(U){U.dispatchEvent(ce("medium-zoom:update",{detail:{zoom:j}}))}),j},d=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return o(ae({},H,P))},b=function(){for(var P=arguments.length,T=Array(P),O=0;O0?T.reduce(function(I,W){return[].concat(I,Xe(W))},[]):D;return U.forEach(function(I){I.classList.remove("medium-zoom-image"),I.dispatchEvent(ce("medium-zoom:detach",{detail:{zoom:j}}))}),D=D.filter(function(I){return U.indexOf(I)===-1}),j},k=function(P,T){var O=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return D.forEach(function(U){U.addEventListener("medium-zoom:"+P,T,O)}),oe.push({type:"medium-zoom:"+P,listener:T,options:O}),j},V=function(P,T){var O=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return D.forEach(function(U){U.removeEventListener("medium-zoom:"+P,T,O)}),oe=oe.filter(function(U){return!(U.type==="medium-zoom:"+P&&U.listener.toString()===T.toString())}),j},E=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},T=P.target,O=function(){var I={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},W=void 0,Y=void 0;if(H.container)if(H.container instanceof Object)I=ae({},I,H.container),W=I.width-I.left-I.right-H.margin*2,Y=I.height-I.top-I.bottom-H.margin*2;else{var le=be(H.container)?H.container:document.querySelector(H.container),ne=le.getBoundingClientRect(),Ve=ne.width,ft=ne.height,ht=ne.left,_t=ne.top;I=ae({},I,{width:Ve,height:ft,left:ht,top:_t})}W=W||I.width-H.margin*2,Y=Y||I.height-H.margin*2;var de=f.zoomedHd||f.original,gt=Ye(de)?W:de.naturalWidth||W,bt=Ye(de)?Y:de.naturalHeight||Y,fe=de.getBoundingClientRect(),kt=fe.top,$t=fe.left,we=fe.width,Te=fe.height,yt=Math.min(Math.max(we,gt),W)/we,Lt=Math.min(Math.max(Te,bt),Y)/Te,Ie=Math.min(yt,Lt),Pt=(-$t+(W-we)/2+H.margin+I.left)/Ie,St=(-kt+(Y-Te)/2+H.margin+I.top)/Ie,We="scale("+Ie+") translate3d("+Pt+"px, "+St+"px, 0)";f.zoomed.style.transform=We,f.zoomedHd&&(f.zoomedHd.style.transform=We)};return new n(function(U){if(T&&D.indexOf(T)===-1){U(j);return}var I=function Ve(){J=!1,f.zoomed.removeEventListener("transitionend",Ve),f.original.dispatchEvent(ce("medium-zoom:opened",{detail:{zoom:j}})),U(j)};if(f.zoomed){U(j);return}if(T)f.original=T;else if(D.length>0){var W=D;f.original=W[0]}else{U(j);return}if(f.original.dispatchEvent(ce("medium-zoom:open",{detail:{zoom:j}})),Re=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,J=!0,f.zoomed=xr(f.original),document.body.appendChild(pe),H.template){var Y=be(H.template)?H.template:document.querySelector(H.template);f.template=document.createElement("div"),f.template.appendChild(Y.content.cloneNode(!0)),document.body.appendChild(f.template)}if(f.original.parentElement&&f.original.parentElement.tagName==="PICTURE"&&f.original.currentSrc&&(f.zoomed.src=f.original.currentSrc),document.body.appendChild(f.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),f.original.classList.add("medium-zoom-image--hidden"),f.zoomed.classList.add("medium-zoom-image--opened"),f.zoomed.addEventListener("click",N),f.zoomed.addEventListener("transitionend",I),f.original.getAttribute("data-zoom-src")){f.zoomedHd=f.zoomed.cloneNode(),f.zoomedHd.removeAttribute("srcset"),f.zoomedHd.removeAttribute("sizes"),f.zoomedHd.removeAttribute("loading"),f.zoomedHd.src=f.zoomed.getAttribute("data-zoom-src"),f.zoomedHd.onerror=function(){clearInterval(le),console.warn("Unable to reach the zoom image target "+f.zoomedHd.src),f.zoomedHd=null,O()};var le=setInterval(function(){f.zoomedHd.complete&&(clearInterval(le),f.zoomedHd.classList.add("medium-zoom-image--opened"),f.zoomedHd.addEventListener("click",N),document.body.appendChild(f.zoomedHd),O())},10)}else if(f.original.hasAttribute("srcset")){f.zoomedHd=f.zoomed.cloneNode(),f.zoomedHd.removeAttribute("sizes"),f.zoomedHd.removeAttribute("loading");var ne=f.zoomedHd.addEventListener("load",function(){f.zoomedHd.removeEventListener("load",ne),f.zoomedHd.classList.add("medium-zoom-image--opened"),f.zoomedHd.addEventListener("click",N),document.body.appendChild(f.zoomedHd),O()})}else O()})},N=function(){return new n(function(P){if(J||!f.original){P(j);return}var T=function O(){f.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(f.zoomed),f.zoomedHd&&document.body.removeChild(f.zoomedHd),document.body.removeChild(pe),f.zoomed.classList.remove("medium-zoom-image--opened"),f.template&&document.body.removeChild(f.template),J=!1,f.zoomed.removeEventListener("transitionend",O),f.original.dispatchEvent(ce("medium-zoom:closed",{detail:{zoom:j}})),f.original=null,f.zoomed=null,f.zoomedHd=null,f.template=null,P(j)};J=!0,document.body.classList.remove("medium-zoom--opened"),f.zoomed.style.transform="",f.zoomedHd&&(f.zoomedHd.style.transform=""),f.template&&(f.template.style.transition="opacity 150ms",f.template.style.opacity=0),f.original.dispatchEvent(ce("medium-zoom:close",{detail:{zoom:j}})),f.zoomed.addEventListener("transitionend",T)})},F=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},T=P.target;return f.original?N():E({target:T})},z=function(){return H},X=function(){return D},Z=function(){return f.original},D=[],oe=[],J=!1,Re=0,H=t,f={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(e)==="[object Object]"?H=e:(e||typeof e=="string")&&b(e),H=ae({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},H);var pe=Qr(H.background);document.addEventListener("click",a),document.addEventListener("keyup",c),document.addEventListener("scroll",r),window.addEventListener("resize",N);var j={open:E,close:N,toggle:F,update:p,clone:d,attach:b,detach:S,on:k,off:V,getOptions:z,getImages:X,getZoomedImage:Z};return j};function ti(o,e){e===void 0&&(e={});var t=e.insertAt;if(!(typeof document>"u")){var n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",t==="top"&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=o:a.appendChild(document.createTextNode(o))}}var oi=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";ti(oi);const ai={...Zr,setup(){const o=ve(),e=()=>{ei(".main img",{background:"var(--vp-c-bg)"})};re(()=>{e()}),ee(()=>o.path,()=>et(()=>e()))}};export{ai as R,Ss as c,w as u}; diff --git a/assets/collection.md.dbDkKkYg.js b/assets/collection.md.dbDkKkYg.js new file mode 100644 index 0000000..eef65d0 --- /dev/null +++ b/assets/collection.md.dbDkKkYg.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a3 as s}from"./chunks/framework.Bsyxd66g.js";const o="/assets/season.DhuB2-D3.webp",c="/assets/series.BaQswuih.webp",f=JSON.parse('{"title":"获取合集/列表信息","description":"","frontmatter":{},"headers":[],"relativePath":"collection.md","filePath":"collection.md","lastUpdated":1774528781000}'),i={name:"collection.md"},n=s('

获取合集/列表信息

视频合集和视频列表虽然在哔哩哔哩网站交互上行为类似,但在接口层级是两个不同的概念,程序配置中需要对两者做出区分。

目前 B 站绝大部分内容都是视频合集(Season),视频列表(Series)是古早的功能,现在已经不常见了。

配置形式与区分方法

新版本 b 站网页端已经对两种类型做了初步整合,将需要的参数展示在了视频合集/视频列表的 URL 中,不再需要手动查看接口。URL 的路径格式为:

/{mid}/lists/{id}?type={season/series}

点开你想要订阅的视频合集/视频列表详情,对照查看 URL 即可获取所需参数。

视频合集

image

类型为 合集(Season),用户 ID 为 521722088,合集 ID 为 1987140

视频列表

image

类型为 列表(Series),用户 ID 为 521722088,列表 ID 为 387214

',13),d=[n];function r(l,p,h,_,m,u){return t(),a("div",null,d)}const g=e(i,[["render",r]]);export{f as __pageData,g as default}; diff --git a/assets/collection.md.dbDkKkYg.lean.js b/assets/collection.md.dbDkKkYg.lean.js new file mode 100644 index 0000000..c697f57 --- /dev/null +++ b/assets/collection.md.dbDkKkYg.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a3 as s}from"./chunks/framework.Bsyxd66g.js";const o="/assets/season.DhuB2-D3.webp",c="/assets/series.BaQswuih.webp",f=JSON.parse('{"title":"获取合集/列表信息","description":"","frontmatter":{},"headers":[],"relativePath":"collection.md","filePath":"collection.md","lastUpdated":1774528781000}'),i={name:"collection.md"},n=s("",13),d=[n];function r(l,p,h,_,m,u){return t(),a("div",null,d)}const g=e(i,[["render",r]]);export{f as __pageData,g as default}; diff --git a/assets/config._3EbYWXX.webp b/assets/config._3EbYWXX.webp new file mode 100644 index 0000000..a55c233 Binary files /dev/null and b/assets/config._3EbYWXX.webp differ diff --git a/assets/configuration.md.CsuuCUAn.js b/assets/configuration.md.CsuuCUAn.js new file mode 100644 index 0000000..9cd6966 --- /dev/null +++ b/assets/configuration.md.CsuuCUAn.js @@ -0,0 +1,13 @@ +import{_ as a,c as i,o as e,a3 as s}from"./chunks/framework.Bsyxd66g.js";const b=JSON.parse('{"title":"配置说明","description":"","frontmatter":{},"headers":[],"relativePath":"configuration.md","filePath":"configuration.md","lastUpdated":1774528781000}'),t={name:"configuration.md"},l=s(`

配置说明

基本设置

绑定地址

程序 Web Server 监听的地址,程序启动时会监听该地址,成功后可通过 http://\${bind_address} 访问管理页。

该配置会在程序重启时生效。

同步间隔(秒)

表示程序每次执行扫描下载的间隔时间,单位为秒。

视频名称模板、分页名称模板

视频名称模板(video_name)和分页名称模板(page_name)用于设置下载文件的命名规则。对于所有下载的内容,将会维持如下的目录结构:

  1. 单页视频:

    bash
    ├── {video_name}
    +│   ├── {page_name}.mp4
    +│   ├── {page_name}.nfo
    +│   └── {page_name}-poster.jpg
  2. 多页视频:

    bash
    ├── {video_name}
    +│   ├── poster.jpg
    +│   ├── Season 1
    +│   │   ├── {page_name} - S01E01.mp4
    +│   │   ├── {page_name} - S01E01.nfo
    +│   │   ├── {page_name} - S01E01-thumb.jpg
    +│   │   ├── {page_name} - S01E02.mp4
    +│   │   ├── {page_name} - S01E02.nfo
    +│   │   └── {page_name} - S01E02-thumb.jpg
    +│   └── tvshow.nfo

这两个模板参数会在运行时解析,其中用 {{ }} 包裹的模板变量会被动态替换为对应的内容。

对于 video_name,支持设置 bvid(视频编号)、title(视频标题)、upper_name(up 主名称)、upper_mid(up 主 id)、pubtime(视频发布时间)、fav_time(视频收藏时间)。

对于 page_name,除支持 video 的全部参数外,还支持 ptitle(分 P 标题)、pid(分 P 页号)。

为了解决文件名可能过长的问题,程序为模板引入了 truncate 函数。如 {{ truncate title 10 }} 表示截取 title 的前 10 个字符。

TIP

  1. 仅收藏夹视频会区分 fav_timepubtime,其它类型下载两者的取值是完全相同的;
  2. fav_timepubtime 的格式受时间格式控制。

此外,video_namepage_name 还支持使用路径分割符,如 {{ upper_mid }}/{{ title }}_{{ pubtime }} 表示视频会根据 UP 主 id 将视频分到不同的文件夹中。

推荐仅在 video_name 中使用路径分割符,暂不清楚在 page_name 中使用路径分割符导致分页存储到子文件夹后是否还能被媒体服务器正确识别。

CAUTION

路径分隔符在不同平台定义不同,Windows 下为 \\,MacOS 和 Linux 下为 /

UP 主头像保存路径

UP 主头像和信息的保存位置。对于使用 Emby、Jellyfin 媒体服务器的用户,需确保此处路径指向 Emby、Jellyfin 配置中的 /metadata/people/ 才能够正常在媒体服务器中显示 UP 主的头像。

时间格式

用于设置 fav_timepubtime 在视频名称模板、分页名称模板中使用时的显示格式,支持的格式符号可以参考 chrono strftime 文档

后端 API 认证 Token

表示调用程序管理 API 需要的身份凭据,程序会对 API 请求进行身份验证,身份验证不通过会拒绝访问。

在修改该 Token 后需要对应修改前端保存的 Token,才能正常访问管理页面。

启动 CDN 排序

一般情况下,b 站会为视频、音频流提供一个 baseUrl 与多个 backupUrl,程序默认会按照 baseUrl -> backupUrl 的顺序请求,依次尝试下载。

如果启用 CDN 排序,那么程序不再使用默认顺序,而是将所有 url 放到一起统一排序来决定请求顺序。排序优先级从高到低为:

  1. 服务商 CDN:upos-sz-mirrorxxxx.bilivideo.com
  2. 自建 CDN:cn-xxxx-dx-v-xxxx.bilivideo.com
  3. MCDN:xxxx.mcdn.bilivideo.com
  4. PCDN:xxxx.v1d.szbdyd.com

这会让程序优先请求质量更高的 CDN,可能会提高下载速度并增加成功率,但效果因地区、网络环境而异。

B 站认证

哔哩哔哩账号的身份凭据,请参考凭据获取流程获取并对应填写,后续 bili-sync 会在必要时自动刷新身份凭据,不再需要手动管理。

推荐使用匿名窗口获取,避免潜在的冲突。

视频质量

该页配置大部分都是显而易见的,仅对视频编码格式偏好进行说明。

视频编码格式偏好

这是 bili-sync 选择视频编码的优先级顺序,优先级按顺序从高到低。此处对编码格式做一个简单说明:

  • AVC 又称 H.264,是目前使用最广泛的视频编码格式,绝大部分设备可以使用硬件解码播放该格式的视频(也因此播放普遍流畅),但是同等画质下视频体积较大。

  • HEV(C) 又称 H.265,与 AV1 都是新一代的视频编码格式。这两种编码相比 AVC 有更好的压缩率,同等画质下视频体积更小,但由于相对较新,硬件解码支持不如 AVC 广泛。如果你的播放设备不支持则只能使用软件解码播放,这种情况下可能导致播放卡顿、机器发热等问题。

建议查阅自己常用播放设备对这三种编码的硬件解码支持情况以选择合适的编码格式,如果硬件支持 HEV 或 AV1,那么可以将其优先级调高。

而如果你的设备不支持,或者单纯懒得查询,那么推荐将 AVC 放在第一位以获得最好的兼容性。

弹幕渲染

弹幕的设置选项,用于设置下载弹幕的样式,几乎全部取自上游仓库

弹幕持续时间(秒)

弹幕在屏幕上的持续时间,单位为秒。

字体

弹幕使用的字体。

字体大小

弹幕的字体大小。

宽度比例

计算弹幕宽度的比例,为避免重叠可以调大这个数值。

水平间距

两条弹幕之间最小的水平距离。

轨道大小

弹幕所占据的高度,即“行高度/行间距”。

滚动弹幕高度百分比

屏幕上滚动弹幕最多高度百分比。

底部弹幕高度百分比

屏幕上底部弹幕最多高度百分比。

透明度(0-255)

透明度,取值范围为 0-255。实际透明度百分比为 透明度 / 255

描边宽度

弹幕的描边宽度。

时间偏移(秒)

时间轴偏移,>0 会让弹幕延后,<0 会让弹幕提前,单位为秒。

粗体显示

弹幕是否加粗。

高级设置

该页主要用于调整程序的请求与下载行为。

TIP

  1. 一般来说,视频、分页的并发数不需要过大;
  2. 请求频率限制可以根据网络环境和 api 请求频率进行调整,如果经常遇到风控可以优先调小该值。

视频并发数、分页并发数

视频并发数(video)和分页并发数(page)是控制 bili-sync 视频下载任务并发度的配置项。

程序的处理逻辑是严格从上到下的,即程序会首先并发处理多个 video,每个 video 内再并发处理多个 page,程序的并发度可以简单衡量为 video * page(很多 video 都只有单个 page,实际会更接近 video * 1),videopage 两个参数就是控制此处的,调节这两个参数可以宏观上控制程序的并发度。

NFO 时间类型

表示在视频 NFO 文件中使用的时间类型,可选值为收藏时间和发布时间。

仅收藏夹视频会对这两项进行区分,其它类型的视频这两者取值完全相同。

请求频率限制

每个执行的任务内部都会发起若干 api 请求以获取信息,这些请求的整体频率受到请求频率的限制,使用漏桶算法实现。超过这个频率的请求会被暂时阻塞,直到漏桶中有空间为止。

时间间隔(毫秒)与限制请求数共同表明的意思时:程序在每个时间间隔内最多允许多少个请求。调节这一项可以从微观上控制程序的并行度,同时也是最直接、最显著的控制 api 请求频率的方法。

据观察 b 站风控限制大多集中在主站,因此目前请求频率限制仅作用于主站的各类请求,如请求各类视频列表、视频信息、获取流下载地址等,对实际的视频、图片下载过程不做限制。

单文件分块下载

单文件分块下载是指将单个视频文件分成多个小块进行下载,这可能有助于提高下载速度。

程序会首先为这个文件预分配空间,接着将文件分成若干个大小相同的块,为每个块启动单独的异步任务并行下载。

下载分块数

表示单个文件分成多少个小块,默认值为 4。

启动分块下载的文件大小阈值(字节)

表示当单个文件大小超过多少字节时,才会启动分块下载。默认值为 20971520(20 MB)。

如果文件过小,分块成本可能会超过分块下载带来的收益,因此使用该阈值决定下载策略。

`,87),h=[l];function n(p,o,r,d,k,c){return e(),i("div",null,h)}const u=a(t,[["render",n]]);export{b as __pageData,u as default}; diff --git a/assets/configuration.md.CsuuCUAn.lean.js b/assets/configuration.md.CsuuCUAn.lean.js new file mode 100644 index 0000000..f079413 --- /dev/null +++ b/assets/configuration.md.CsuuCUAn.lean.js @@ -0,0 +1 @@ +import{_ as a,c as i,o as e,a3 as s}from"./chunks/framework.Bsyxd66g.js";const b=JSON.parse('{"title":"配置说明","description":"","frontmatter":{},"headers":[],"relativePath":"configuration.md","filePath":"configuration.md","lastUpdated":1774528781000}'),t={name:"configuration.md"},l=s("",87),h=[l];function n(p,o,r,d,k,c){return e(),i("div",null,h)}const u=a(t,[["render",n]]);export{b as __pageData,u as default}; diff --git a/assets/design.md.BbdPHCak.js b/assets/design.md.BbdPHCak.js new file mode 100644 index 0000000..3452545 --- /dev/null +++ b/assets/design.md.BbdPHCak.js @@ -0,0 +1 @@ +import{_ as e,c as a,o,a3 as i}from"./chunks/framework.Bsyxd66g.js";const t="/assets/bili_collection.DiWdQ_1C.webp",s="/assets/bili_video.AE-Vm7po.webp",r="/assets/single_page.jTeO_DvF.webp",d="/assets/multi_page.tN1txa1M.webp",l="/assets/multi_page_detail.BYT8HIYs.webp",f=JSON.parse('{"title":"工作原理","description":"","frontmatter":{},"headers":[],"relativePath":"design.md","filePath":"design.md","lastUpdated":1774528781000}'),p={name:"design.md"},c=i('

工作原理

本节会尽可能简单明了地介绍 bili-sync 的工作原理,让用户了解程序的整体执行过程。

b 站的视频结构

在了解程序工作原理之前,我们需要先对 b 站视频的组织结构有一个大概的了解。简单来说:

  • 收藏夹、稍后再看、视频合集、视频列表等结构都是由一系列视频构成的列表;
  • 每个视频都有唯一的 bvid,包含了封面、描述和标签信息,并包含了一个或多个分页;
  • 每个分页都有一个唯一的 cid,包含了封面、视频、音频、弹幕。

为了描述方便,在后文会将收藏夹、稍后再看这类结构统称为 video source,将视频称为 video,将分页称为 page。不难看出这三者有着很明显的层级关系:video source 包含若干 video,video 包含若干 page

一个非常容易混淆的点是视频合集/视频列表与多页视频的区别:

NOTE

bili_collection

bili_video

这两张图中,上图是视频合集,下图是多页视频。这两者在展示上区别较小,但在结构上有相当大的不同。结合上面对 b 站视频结构的介绍,这个区别可以简单总结为:

  • 视频合集是由多个仅包含单个 page 的 video 组成的 video source

  • 多页视频是由多个 page 组成的 video

这说明它们是处于两个不同层级的结构,因此程序对其的处理方式也有着相当大的不同。

与 EMBY 媒体库的对应关系

EMBY 的一般结构是: 媒体库 - 文件夹 - 电影/电视剧 - 分季/分集,方便起见,我采用了如下的对应关系:

  1. 文件夹:对应 b 站的 video source;
  2. 电视剧:对应 b 站的 video;
  3. 第一季的所有分集:对应 b 站的 page。

特别的,当 video 仅有一个 page 时,为了避免过多的层级,bili-sync 会将 page 展开到第二层级,变成与电视剧同级的电影。

因此,需要将媒体库类型设置为“混合内容”以支持在同个媒体库中同时显示电视剧与电影

单 page 的 video

single_page

多 page 的 video

multi_page

multi_page_detail

数据库设计

NOTE

可以前往此处实时查看当前版本的数据库表结构。

既然拥有着明显的层级关系,那数据库表就很容易设计了。为了简化实现,程序没有额外考虑单个 video 被多个 video source 引用的情况(如一个视频同时在收藏夹和稍后再看中)。而是简单的将其设计为了不交叉的层级结构。

video source 表

从上面的介绍可以看出,video source 并不是一个具体的结构,而是拥有多种实现的抽象概念。我选择将其特化实现为多张表:

  1. favorite:收藏夹;
  2. watch_later:稍后再看;
  3. collection: 视频合集/视频列表;
  4. ....

video 表

video 表包含了 video 的基本信息,如 bvid、标题、封面、描述、标签等。此外,video 表还包含了与 video source 的关联。

具体来说,每一种 video source 都在 video 表中有一个对应的列,指向 video source 表中的 id,如 favorite_id、collection_id 等。接下来将这些键与 video 的 bvid 绑在一起建立唯一索引,就可以保证在同一个 video source 中不会有重复的 video。

page 表

page 表包含了 page 的基本信息,如 cid、标题、封面等。与 video 类似但更简单,page 表仅包含了与 video 的关联。

执行过程

初始化

程序启动时会读取配置文件、迁移数据库、初始化日志等操作。如果发现需要的文件不存在,程序会自动创建。

扫描 video source 获取新视频

WARNING

b 站实现接口时为了节省资源,通过 video source 获取到的 video 列表通常是分页且不包含详细信息的。

程序会扫描所有配置文件中包含的 video source,获取其中包含的 video 的简单信息并填充到数据库。在实现时需要避免频繁的全量扫描。

具体到 bili-sync 的实现中,每个 video source 都有一个 latest_row_at 列,用于记录处理过的最新视频时间。程序在请求接口时会设置按时间排序,确保新视频位于前面。排序依据的时间根据 video source 的类型而定:收藏夹按收藏时间,投稿按照投稿时间...

拉取过程会逐页请求,程序会不断将获取到的视频保存到数据库中,直到发现第一个小于等于 latest_row_at 的视频时停止。接着将 latest_row_at 更新为最新的视频时间。

填充 video 详情

将新增视频的简单信息写入数据库后,下一步会填充 video 详情。正如上文所述:通过 video source 获取到的 video 列表通常是不包含详细信息的,因此需要额外的请求来填充这些信息。

这一步会筛选出所有未完全填充信息的 video,逐个获取 video 的详细信息(如标签、包含的 page 等)并填充到数据库中。

在这个过程中,如果遇到 -404 错误码则说明视频无法被正常访问,程序会将该视频标记为无效并跳过。

下载未处理的视频

经过上面处理后,数据库中已经包含了所有需要的 video 和 page 信息,接下来只需要筛选其中“未完全下载”、“成功填充详细信息”的所有视频,并发下载即可。程序在 video 层级最多允许 3 个任务同时下载,page 层级最多允许 2 个任务同时下载。

数据库中的 status 字段用于标记 video 和 page 的下载状态,视频的各个部分(封面、视频、nfo 等)包含在 status 的不同位中。程序会根据 status 的不同位来判断视频的下载状态,以此来决定是否需要下载。

如果某些部分下载失败,status 字段会记录这些部分的失败次数,程序会在下次下载时重试。如果重试次数超过了设定的阈值,那么视频会被标记为下载失败,后续直接忽略。

此处程序对风控做了额外的处理,一般风控发生时接下来的所有请求都会失败,因此程序检测到风控时不会认为是某个视频下载失败,而是直接终止 video source 的全部下载任务,等待下次扫描时重试。

',49),n=[c];function h(v,u,b,g,_,m){return o(),a("div",null,n)}const k=e(p,[["render",h]]);export{f as __pageData,k as default}; diff --git a/assets/design.md.BbdPHCak.lean.js b/assets/design.md.BbdPHCak.lean.js new file mode 100644 index 0000000..11e7752 --- /dev/null +++ b/assets/design.md.BbdPHCak.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o,a3 as i}from"./chunks/framework.Bsyxd66g.js";const t="/assets/bili_collection.DiWdQ_1C.webp",s="/assets/bili_video.AE-Vm7po.webp",r="/assets/single_page.jTeO_DvF.webp",d="/assets/multi_page.tN1txa1M.webp",l="/assets/multi_page_detail.BYT8HIYs.webp",f=JSON.parse('{"title":"工作原理","description":"","frontmatter":{},"headers":[],"relativePath":"design.md","filePath":"design.md","lastUpdated":1774528781000}'),p={name:"design.md"},c=i("",49),n=[c];function h(v,u,b,g,_,m){return o(),a("div",null,n)}const k=e(p,[["render",h]]);export{f as __pageData,k as default}; diff --git a/assets/detail.ChUzrbas.webp b/assets/detail.ChUzrbas.webp new file mode 100644 index 0000000..a185853 Binary files /dev/null and b/assets/detail.ChUzrbas.webp differ diff --git a/assets/dir.CYojSJXr.webp b/assets/dir.CYojSJXr.webp new file mode 100644 index 0000000..77eb124 Binary files /dev/null and b/assets/dir.CYojSJXr.webp differ diff --git a/assets/favorite.BWmN8cbK.webp b/assets/favorite.BWmN8cbK.webp new file mode 100644 index 0000000..d79f601 Binary files /dev/null and b/assets/favorite.BWmN8cbK.webp differ diff --git a/assets/favorite.md.gPfjvyHT.js b/assets/favorite.md.gPfjvyHT.js new file mode 100644 index 0000000..2d21a44 --- /dev/null +++ b/assets/favorite.md.gPfjvyHT.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as s,j as e,a as t}from"./chunks/framework.Bsyxd66g.js";const r="/assets/favorite.BWmN8cbK.webp",b=JSON.parse('{"title":"获取收藏夹信息","description":"","frontmatter":{},"headers":[],"relativePath":"favorite.md","filePath":"favorite.md","lastUpdated":1774528781000}'),c={name:"favorite.md"},i=e("h1",{id:"获取收藏夹信息",tabindex:"-1"},[t("获取收藏夹信息 "),e("a",{class:"header-anchor",href:"#获取收藏夹信息","aria-label":'Permalink to "获取收藏夹信息"'},"​")],-1),n=e("p",null,[t("收藏夹的 ID 获取非常简单,在网页端打开自己的收藏夹列表,切换到你想要获取的收藏夹,然后查看 URL 地址栏中的 "),e("code",null,"fid"),t(" 参数内容即可。")],-1),d=e("p",null,[e("img",{src:r,alt:"image"})],-1),l=[i,n,d];function _(p,f,m,h,u,v){return s(),o("div",null,l)}const B=a(c,[["render",_]]);export{b as __pageData,B as default}; diff --git a/assets/favorite.md.gPfjvyHT.lean.js b/assets/favorite.md.gPfjvyHT.lean.js new file mode 100644 index 0000000..2d21a44 --- /dev/null +++ b/assets/favorite.md.gPfjvyHT.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as s,j as e,a as t}from"./chunks/framework.Bsyxd66g.js";const r="/assets/favorite.BWmN8cbK.webp",b=JSON.parse('{"title":"获取收藏夹信息","description":"","frontmatter":{},"headers":[],"relativePath":"favorite.md","filePath":"favorite.md","lastUpdated":1774528781000}'),c={name:"favorite.md"},i=e("h1",{id:"获取收藏夹信息",tabindex:"-1"},[t("获取收藏夹信息 "),e("a",{class:"header-anchor",href:"#获取收藏夹信息","aria-label":'Permalink to "获取收藏夹信息"'},"​")],-1),n=e("p",null,[t("收藏夹的 ID 获取非常简单,在网页端打开自己的收藏夹列表,切换到你想要获取的收藏夹,然后查看 URL 地址栏中的 "),e("code",null,"fid"),t(" 参数内容即可。")],-1),d=e("p",null,[e("img",{src:r,alt:"image"})],-1),l=[i,n,d];function _(p,f,m,h,u,v){return s(),o("div",null,l)}const B=a(c,[["render",_]]);export{b as __pageData,B as default}; diff --git a/assets/frontend.md.DzwsJqGp.js b/assets/frontend.md.DzwsJqGp.js new file mode 100644 index 0000000..692c7c8 --- /dev/null +++ b/assets/frontend.md.DzwsJqGp.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as s,j as e,a as n}from"./chunks/framework.Bsyxd66g.js";const o="/assets/webui.CZmBmDyk.webp",k=JSON.parse('{"title":"管理页","description":"","frontmatter":{},"headers":[],"relativePath":"frontend.md","filePath":"frontend.md","lastUpdated":1774528781000}'),r={name:"frontend.md"},c=e("h1",{id:"管理页",tabindex:"-1"},[n("管理页 "),e("a",{class:"header-anchor",href:"#管理页","aria-label":'Permalink to "管理页"'},"​")],-1),d=e("p",null,"自 2.6.0 版本开始,bili-sync 的配置文件已经完全迁移至数据库中,程序的所有操作都可以通过 WebUI 管理页进行。",-1),i=e("p",null,[e("img",{src:o,alt:"管理页"})],-1),_=[c,d,i];function l(p,m,f,h,u,b){return s(),a("div",null,_)}const B=t(r,[["render",l]]);export{k as __pageData,B as default}; diff --git a/assets/frontend.md.DzwsJqGp.lean.js b/assets/frontend.md.DzwsJqGp.lean.js new file mode 100644 index 0000000..692c7c8 --- /dev/null +++ b/assets/frontend.md.DzwsJqGp.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as s,j as e,a as n}from"./chunks/framework.Bsyxd66g.js";const o="/assets/webui.CZmBmDyk.webp",k=JSON.parse('{"title":"管理页","description":"","frontmatter":{},"headers":[],"relativePath":"frontend.md","filePath":"frontend.md","lastUpdated":1774528781000}'),r={name:"frontend.md"},c=e("h1",{id:"管理页",tabindex:"-1"},[n("管理页 "),e("a",{class:"header-anchor",href:"#管理页","aria-label":'Permalink to "管理页"'},"​")],-1),d=e("p",null,"自 2.6.0 版本开始,bili-sync 的配置文件已经完全迁移至数据库中,程序的所有操作都可以通过 WebUI 管理页进行。",-1),i=e("p",null,[e("img",{src:o,alt:"管理页"})],-1),_=[c,d,i];function l(p,m,f,h,u,b){return s(),a("div",null,_)}const B=t(r,[["render",l]]);export{k as __pageData,B as default}; diff --git a/assets/index.md.C_L9eA6f.js b/assets/index.md.C_L9eA6f.js new file mode 100644 index 0000000..3422590 --- /dev/null +++ b/assets/index.md.C_L9eA6f.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as i}from"./chunks/framework.Bsyxd66g.js";const p=JSON.parse('{"title":"bili-sync","titleTemplate":"由 Rust & Tokio 驱动的哔哩哔哩同步工具","description":"","frontmatter":{"layout":"home","title":"bili-sync","titleTemplate":"由 Rust & Tokio 驱动的哔哩哔哩同步工具","hero":{"name":"bili-sync","text":"由 Rust & Tokio 驱动的哔哩哔哩同步工具","actions":[{"theme":"brand","text":"什么是 bili-sync?","link":"/introduction"},{"theme":"alt","text":"快速开始","link":"/quick-start"},{"theme":"alt","text":"GitHub","link":"https://github.com/amtoaer/bili-sync"}],"image":{"src":"/logo.webp","alt":"bili-sync"}},"features":[{"icon":"🤖","title":"无需干预","details":"自动选择最优的视频和音频配置"},{"icon":"💾","title":"专为 NAS 设计","details":"可被 Emby、Jellyfin 等媒体服务器一键识别"},{"icon":"🐳","title":"部署简单","details":"提供简单易用的 docker 镜像"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1774528781000}'),a={name:"index.md"};function n(o,l,s,c,r,d){return i(),e("div")}const u=t(a,[["render",n]]);export{p as __pageData,u as default}; diff --git a/assets/index.md.C_L9eA6f.lean.js b/assets/index.md.C_L9eA6f.lean.js new file mode 100644 index 0000000..3422590 --- /dev/null +++ b/assets/index.md.C_L9eA6f.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as i}from"./chunks/framework.Bsyxd66g.js";const p=JSON.parse('{"title":"bili-sync","titleTemplate":"由 Rust & Tokio 驱动的哔哩哔哩同步工具","description":"","frontmatter":{"layout":"home","title":"bili-sync","titleTemplate":"由 Rust & Tokio 驱动的哔哩哔哩同步工具","hero":{"name":"bili-sync","text":"由 Rust & Tokio 驱动的哔哩哔哩同步工具","actions":[{"theme":"brand","text":"什么是 bili-sync?","link":"/introduction"},{"theme":"alt","text":"快速开始","link":"/quick-start"},{"theme":"alt","text":"GitHub","link":"https://github.com/amtoaer/bili-sync"}],"image":{"src":"/logo.webp","alt":"bili-sync"}},"features":[{"icon":"🤖","title":"无需干预","details":"自动选择最优的视频和音频配置"},{"icon":"💾","title":"专为 NAS 设计","details":"可被 Emby、Jellyfin 等媒体服务器一键识别"},{"icon":"🐳","title":"部署简单","details":"提供简单易用的 docker 镜像"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1774528781000}'),a={name:"index.md"};function n(o,l,s,c,r,d){return i(),e("div")}const u=t(a,[["render",n]]);export{p as __pageData,u as default}; diff --git a/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 0000000..b6b603d Binary files /dev/null and b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 differ diff --git a/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 0000000..def40a4 Binary files /dev/null and b/assets/inter-italic-cyrillic.By2_1cv3.woff2 differ diff --git a/assets/inter-italic-greek-ext.1u6EdAuj.woff2 b/assets/inter-italic-greek-ext.1u6EdAuj.woff2 new file mode 100644 index 0000000..e070c3d Binary files /dev/null and b/assets/inter-italic-greek-ext.1u6EdAuj.woff2 differ diff --git a/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 0000000..a3c16ca Binary files /dev/null and b/assets/inter-italic-greek.DJ8dCoTZ.woff2 differ diff --git a/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 0000000..2210a89 Binary files /dev/null and b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 differ diff --git a/assets/inter-italic-latin.C2AdPX0b.woff2 b/assets/inter-italic-latin.C2AdPX0b.woff2 new file mode 100644 index 0000000..790d62d Binary files /dev/null and b/assets/inter-italic-latin.C2AdPX0b.woff2 differ diff --git a/assets/inter-italic-vietnamese.BSbpV94h.woff2 b/assets/inter-italic-vietnamese.BSbpV94h.woff2 new file mode 100644 index 0000000..1eec077 Binary files /dev/null and b/assets/inter-italic-vietnamese.BSbpV94h.woff2 differ diff --git a/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 new file mode 100644 index 0000000..2cfe615 Binary files /dev/null and b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 differ diff --git a/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 new file mode 100644 index 0000000..e3886dd Binary files /dev/null and b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 differ diff --git a/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 0000000..36d6748 Binary files /dev/null and b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 differ diff --git a/assets/inter-roman-greek.BBVDIX6e.woff2 b/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 0000000..2bed1e8 Binary files /dev/null and b/assets/inter-roman-greek.BBVDIX6e.woff2 differ diff --git a/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 0000000..9a8d1e2 Binary files /dev/null and b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 differ diff --git a/assets/inter-roman-latin.Di8DUHzh.woff2 b/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 0000000..07d3c53 Binary files /dev/null and b/assets/inter-roman-latin.Di8DUHzh.woff2 differ diff --git a/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 0000000..57bdc22 Binary files /dev/null and b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 differ diff --git a/assets/introduction.md.ZetHVvoO.js b/assets/introduction.md.ZetHVvoO.js new file mode 100644 index 0000000..9e5cd3f --- /dev/null +++ b/assets/introduction.md.ZetHVvoO.js @@ -0,0 +1 @@ +import{_ as t,c as s,o as e,a3 as i}from"./chunks/framework.Bsyxd66g.js";const a="/assets/overview.CV5ADeaw.webp",c="/assets/detail.ChUzrbas.webp",l="/assets/play.CCSTwqV_.webp",o="/assets/dir.CYojSJXr.webp",y=JSON.parse('{"title":"bili-sync 是什么?","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md","lastUpdated":1774528781000}'),d={name:"introduction.md"},h=i('

bili-sync 是什么?

TIP

当前最新程序版本为 v2.11.0,文档将始终与最新程序版本保持一致。

bili-sync 是一款专为 NAS 用户编写的哔哩哔哩同步工具。

它的基本的工作原理是使用用户填写的凭据定期扫描视频合集、收藏夹等,获取到本地未下载过的内容并保存到本地,维持本地视频库与哔哩哔哩网站的同步。

下载的内容包括视频、封面、弹幕、标签与简介信息等,这些文件整体保持与 Emby、Jellyfin 等媒体服务器软件兼容的文件布局,使得目的文件夹可以直接被作为媒体库添加到这些软件中,无需干预自动识别。

使用截图

WARNING

媒体库类型请选择“混合内容”,否则可能导致多页视频无法正常显示。

概览

概览

详情

详情

播放(使用 infuse)

播放

文件排布

文件

功能与路线图

  • 使用用户填写的凭据认证,并在必要时自动刷新
  • 支持收藏夹与视频列表/视频合集的下载
  • 自动选择用户设置范围内最优的视频和音频流,并在下载完成后使用 FFmpeg 合并
  • 使用 Tokio 与 Reqwest,对视频、视频分页进行异步并发下载
  • 使用媒体服务器支持的文件命名,方便一键作为媒体库导入
  • 当前轮次下载失败会在下一轮下载时重试,失败次数过多自动丢弃
  • 使用数据库保存媒体信息,避免对同个视频的多次请求
  • 打印日志,并在请求出现风控时自动终止,等待下一轮执行
  • 提供多平台的二进制可执行文件,为 Linux 平台提供了立即可用的 Docker 镜像
  • 支持对“稍后再看”内视频的自动扫描与下载
  • 支持对 UP 主投稿视频的自动扫描与下载
  • 支持限制任务的并行度和接口请求频率
  • 支持单个文件的分块并行下载
  • 支持使用 Web UI 配置,查看并管理视频、视频源
',17),k=[h];function n(b,r,p,m,u,x){return e(),s("div",null,k)}const f=t(d,[["render",n]]);export{y as __pageData,f as default}; diff --git a/assets/introduction.md.ZetHVvoO.lean.js b/assets/introduction.md.ZetHVvoO.lean.js new file mode 100644 index 0000000..bfb747f --- /dev/null +++ b/assets/introduction.md.ZetHVvoO.lean.js @@ -0,0 +1 @@ +import{_ as t,c as s,o as e,a3 as i}from"./chunks/framework.Bsyxd66g.js";const a="/assets/overview.CV5ADeaw.webp",c="/assets/detail.ChUzrbas.webp",l="/assets/play.CCSTwqV_.webp",o="/assets/dir.CYojSJXr.webp",y=JSON.parse('{"title":"bili-sync 是什么?","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md","lastUpdated":1774528781000}'),d={name:"introduction.md"},h=i("",17),k=[h];function n(b,r,p,m,u,x){return e(),s("div",null,k)}const f=t(d,[["render",n]]);export{y as __pageData,f as default}; diff --git a/assets/multi_page.tN1txa1M.webp b/assets/multi_page.tN1txa1M.webp new file mode 100644 index 0000000..e8c13e7 Binary files /dev/null and b/assets/multi_page.tN1txa1M.webp differ diff --git a/assets/multi_page_detail.BYT8HIYs.webp b/assets/multi_page_detail.BYT8HIYs.webp new file mode 100644 index 0000000..ca30aae Binary files /dev/null and b/assets/multi_page_detail.BYT8HIYs.webp differ diff --git a/assets/overview.CV5ADeaw.webp b/assets/overview.CV5ADeaw.webp new file mode 100644 index 0000000..f7cb104 Binary files /dev/null and b/assets/overview.CV5ADeaw.webp differ diff --git a/assets/play.CCSTwqV_.webp b/assets/play.CCSTwqV_.webp new file mode 100644 index 0000000..1c63cbb Binary files /dev/null and b/assets/play.CCSTwqV_.webp differ diff --git a/assets/question.md.DYI5h72W.js b/assets/question.md.DYI5h72W.js new file mode 100644 index 0000000..ea8b353 --- /dev/null +++ b/assets/question.md.DYI5h72W.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as a,a3 as t}from"./chunks/framework.Bsyxd66g.js";const u=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"question.md","filePath":"question.md","lastUpdated":1774528781000}'),r={name:"question.md"},i=t('

常见问题

各种文件找不到问题,如运行后找不到初始 data.sqlite、提示成功下载但看不到视频文件等。

请检查挂载位置与配置文件填写是否正确,需要理解的是:

  1. 容器挂载是把宿主机的 /A 挂载到容器内的 /B
  2. 程序运行在容器中,能够读取、写入的目录只能是 /B,因此配置文件内填写的路径只能与 /B 有关。

下载视频出现 Permission denied、Operation not permitted 等错误。

有两种可能的原因:

  1. 容器运行时指定了 user(非 root),但配置文件并未正确填写挂载后的路径。此时目标路径只是一个普通的容器内路径,非 root 用户无法修改,导致执行出错;
  2. 配置文件正确填写了挂载后的路径,此时出现权限错误说明你为容器指定的 user 无权写入宿主机上的原始路径。需检查宿主机原始路径的文件权限。

下载某个视频连续多次出现 error decoding response body 错误

这个问题我也出现过几次,目前还不清楚原因,但怀疑是 b 站服务器使用某种检测机制拒绝了响应。

bili-sync 在 2.4.0 版本引入了一个改动,不将此错误计入错误次数,允许其无限重试,我过去下载失败的某个视频使用这个策略在多次尝试后成功了。

尽管如此,该解决方案仍然比较玄学,需要将来能够查明具体原因再加以修复。

有些视频已经达到了最大重试次数还没有成功,我可以手动重试吗?

可以在 WebUI 中查找对应的视频源并点击“重置”,这会将所有失败的子任务重置为未下载状态,下一次视频下载任务就会开始重试。

此外还可以进入视频详情点击“编辑状态”,这允许用户自行修改每个子任务的状态。

',14),d=[i];function n(s,c,l,p,h,_){return a(),o("div",null,d)}const q=e(r,[["render",n]]);export{u as __pageData,q as default}; diff --git a/assets/question.md.DYI5h72W.lean.js b/assets/question.md.DYI5h72W.lean.js new file mode 100644 index 0000000..5a1f68d --- /dev/null +++ b/assets/question.md.DYI5h72W.lean.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as a,a3 as t}from"./chunks/framework.Bsyxd66g.js";const u=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"question.md","filePath":"question.md","lastUpdated":1774528781000}'),r={name:"question.md"},i=t("",14),d=[i];function n(s,c,l,p,h,_){return a(),o("div",null,d)}const q=e(r,[["render",n]]);export{u as __pageData,q as default}; diff --git a/assets/quick-start.md.CWlth8zu.js b/assets/quick-start.md.CWlth8zu.js new file mode 100644 index 0000000..d1a7dd7 --- /dev/null +++ b/assets/quick-start.md.CWlth8zu.js @@ -0,0 +1,34 @@ +import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.Bsyxd66g.js";const p="/assets/config._3EbYWXX.webp",y=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"quick-start.md","filePath":"quick-start.md","lastUpdated":1774528781000}'),e={name:"quick-start.md"},l=n(`

快速开始

程序使用 Rust 编写,不需要 Runtime 且内嵌 WebUI,并为各个平台提供了预编译的二进制文件,因此部署较为简单。

程序获取

程序为各个平台提供了预构建的二进制文件,并且打包了 Linux/amd64Linux/arm64 两个平台的 Docker 镜像。用户可以自行选择使用哪种方式运行。

其一:下载平台二进制文件运行

CAUTION

如果你使用这种方式运行,请确保 FFmpeg 已被正确安装且位于 PATH 中,可直接通过 ffmpeg 命令访问。

程序发布页选择最新版本中对应机器架构的压缩包,解压后会获取一个名为 bili-sync-rs 的可执行文件,直接双击执行。

其二:使用 Docker Compose 运行

Linux/amd64 与 Linux/arm64 两个平台可直接使用 Docker 或 Docker Compose 运行,此处以 Compose 为例:

请注意其中的注释,有不清楚的地方可以先继续往下看。

yaml
services:
+  bili-sync-rs:
+    # 不推荐使用 latest 这种模糊的 tag,最好直接指明版本号
+    image: amtoaer/bili-sync-rs:latest
+    restart: unless-stopped
+    network_mode: bridge
+    # 该选项请仅在日志终端支持彩色输出时启用,否则日志中可能会出现乱码
+    tty: true
+    # 非必需设置项,推荐设置为宿主机用户的 uid 及 gid (\`$uid:$gid\`)
+    # 可以执行 \`id \${user}\` 获取 \`user\` 用户的 uid 及 gid
+    # 程序下载的所有文件权限将与此处的用户保持一致,不设置默认为 Root
+    user: 1000:1000
+    hostname: bili-sync-rs
+    container_name: bili-sync-rs
+    # 程序默认绑定 0.0.0.0:12345 运行 http 服务
+    # 可同时修改 compose 文件与 config.toml 变更服务运行的端口
+    ports:
+      - 12345:12345
+    volumes:
+      - \${你希望存储程序配置的目录}:/app/.config/bili-sync
+      # metadata/people 正确挂载才能在 Emby 或 Jellyfin 中显示 UP 主头像
+      # 右边的目标目录不固定,只需要确保目标目录与 bili-sync 中填写的“UP 主头像保存路径”保持一致即可
+      - \${Emby 或 Jellyfin 配置下的 metadata/people 目录}:/app/.config/bili-sync/upper_face
+      # 接下来可以挂载一系列用于保存视频的目录,接着在 bili-sync 中配置将视频下载到这些目录即可
+      # 例如:
+      # - /home/amtoaer/HDDs/Videos/Bilibilis/:/home/amtoaer/HDDs/Videos/Bilibilis/
+    # 如果你使用的是群晖系统,请移除最后的 logging 配置,否则会导致日志不显示
+    logging:
+      driver: "local"

使用该 compose 文件,执行 docker compose up -d 即可运行。

进行必要配置

运行程序,应该可以在日志中看到:

Jul 12 16:11:10  INFO 欢迎使用 Bili-Sync,当前程序版本:xxxxx
+Jul 12 16:11:10  INFO 项目地址:https://github.com/amtoaer/bili-sync
+Jul 12 16:11:10  INFO 数据库初始化完成
+Jul 12 17:17:50  WARN 生成 auth_token:xxxxxxxx,可使用该 token 登录 web UI,该信息仅在首次运行时打印
+Jul 12 16:11:10  INFO 配置初始化完成
+Jul 12 16:11:10  INFO 开始运行管理页: http://0.0.0.0:12345

中间应该会穿插一条 CONFIG 的报错,这是因为配置文件内容缺失导致视频下载任务未能运行,在初次启动时是正常现象。

自 2.6.0 版本开始,程序仅会创建一个数据库文件,配置同样在数据库表中进行维护。

数据库文件存储于 \${config_dir}/bili-sync/data.sqlite

CAUTION

请注意,config_dir 的实际位置与操作系统和用户名有关。

对于名为 Alice 的用户,config_dir 指向的位置是:

  • Lin: /home/Alice/.config
  • Win: C:\\Users\\Alice\\AppData\\Roaming
  • Mac: /Users/Alice/Library/Application Support

特别的,在 Docker 环境中,config_dir 会被展开为 /app/.config

接着打开 WebUI,切换到设置页,输入日志中打印的 auth_token,点击认证。

设置页

认证后会看到一系列的配置,除绑定地址外的选项基本都会实时生效。为避免意料外的情况,建议将配置文件一次修改完毕后再点击保存。

如无特殊需求,一般仅需修改“B 站认证”与“视频质量”两个标签下的配置。

其中“B 站认证”在一次填写后即可忽略,程序会在每日第一次运行视频下载任务时检查认证状态,并在有必要时自动刷新。

对于这些设置项的含义,请参考配置说明,可善用右侧导航在不同配置项间跳转。

添加视频源订阅

配置完毕后,我们便可以随时添加视频源订阅。

用户在正确填写“B 站认证”后可以在“快捷订阅”部分查看自己创建的收藏夹、关注的合集与 UP 主一键订阅,也可以在“视频源”页手动添加并管理。

对于手动添加的视频源,可参考如下页面获取所需的参数:

添加完订阅就无需进行任何干预了,视频下载任务会在后台每隔特定时间(由配置中的“同步间隔”决定)自动运行一次,刷新并下载启用的视频源!

',31),t=[l];function h(k,o,c,r,d,g){return a(),i("div",null,t)}const u=s(e,[["render",h]]);export{y as __pageData,u as default}; diff --git a/assets/quick-start.md.CWlth8zu.lean.js b/assets/quick-start.md.CWlth8zu.lean.js new file mode 100644 index 0000000..90b9085 --- /dev/null +++ b/assets/quick-start.md.CWlth8zu.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.Bsyxd66g.js";const p="/assets/config._3EbYWXX.webp",y=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"quick-start.md","filePath":"quick-start.md","lastUpdated":1774528781000}'),e={name:"quick-start.md"},l=n("",31),t=[l];function h(k,o,c,r,d,g){return a(),i("div",null,t)}const u=s(e,[["render",h]]);export{y as __pageData,u as default}; diff --git a/assets/season.DhuB2-D3.webp b/assets/season.DhuB2-D3.webp new file mode 100644 index 0000000..52f1f52 Binary files /dev/null and b/assets/season.DhuB2-D3.webp differ diff --git a/assets/series.BaQswuih.webp b/assets/series.BaQswuih.webp new file mode 100644 index 0000000..12b795c Binary files /dev/null and b/assets/series.BaQswuih.webp differ diff --git a/assets/single_page.jTeO_DvF.webp b/assets/single_page.jTeO_DvF.webp new file mode 100644 index 0000000..bae0cca Binary files /dev/null and b/assets/single_page.jTeO_DvF.webp differ diff --git a/assets/style.C1nXIPB-.css b/assets/style.C1nXIPB-.css new file mode 100644 index 0000000..bc84594 --- /dev/null +++ b/assets/style.C1nXIPB-.css @@ -0,0 +1 @@ +:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe 30%, #41d1ff);--vp-home-hero-image-background-image: linear-gradient(-45deg, #bd34fe 50%, #47caff 50%);--vp-home-hero-image-filter: blur(44px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(68px)}}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic-ext.BBPuwvHQ.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;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic-ext.r48I6akx.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;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}: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-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .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-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .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-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-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);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}: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}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}: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-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-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-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-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-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-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-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-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-default-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-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-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);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{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.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,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-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-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-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,.custom-block.warning a:hover>code{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,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-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,.custom-block.details a:hover>code{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;-webkit-user-select:none;user-select:none}.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:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.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:0 0 4px!important;text-align:center;letter-spacing:1px!important;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{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)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-54a304ca]{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-54a304ca],.VPBackdrop.fade-leave-to[data-v-54a304ca]{opacity:0}.VPBackdrop.fade-leave-active[data-v-54a304ca]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-54a304ca]{display:none}}.NotFound[data-v-6ff51ddd]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-6ff51ddd]{padding:96px 32px 168px}}.code[data-v-6ff51ddd]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-6ff51ddd]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-6ff51ddd]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-6ff51ddd]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-6ff51ddd]{padding-top:20px}.link[data-v-6ff51ddd]{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-6ff51ddd]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-53c99d69]{position:relative;z-index:1}.nested[data-v-53c99d69]{padding-right:16px;padding-left:16px}.outline-link[data-v-53c99d69]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-53c99d69]:hover,.outline-link.active[data-v-53c99d69]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-53c99d69]{padding-left:13px}.VPDocAsideOutline[data-v-f610f197]{display:none}.VPDocAsideOutline.has-outline[data-v-f610f197]{display:block}.content[data-v-f610f197]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-f610f197]{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-f610f197]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-cb998dce]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-cb998dce]{flex-grow:1}.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-cb998dce] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-19a7ae4e]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-19a7ae4e]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-5941af80]{margin-top:64px}.edit-info[data-v-5941af80]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-5941af80]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-5941af80]{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-5941af80]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-5941af80]{margin-right:8px}.prev-next[data-v-5941af80]{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-5941af80]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-5941af80]{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-5941af80]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-5941af80]{margin-left:auto;text-align:right}.desc[data-v-5941af80]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-5941af80]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-e6f2a212]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-e6f2a212]{display:flex;justify-content:center}.VPDoc .aside[data-v-e6f2a212]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{max-width:1104px}}.container[data-v-e6f2a212]{margin:0 auto;width:100%}.aside[data-v-e6f2a212]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-e6f2a212]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-e6f2a212]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-e6f2a212]::-webkit-scrollbar{display:none}.aside-curtain[data-v-e6f2a212]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-e6f2a212]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-e6f2a212]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-e6f2a212]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-e6f2a212]{order:1;margin:0;min-width:640px}}.content-container[data-v-e6f2a212]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-e6f2a212]{max-width:688px}.VPButton[data-v-c9cf0e3c]{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-c9cf0e3c]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-c9cf0e3c]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-c9cf0e3c]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-c9cf0e3c]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-c9cf0e3c]: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-c9cf0e3c]: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-c9cf0e3c]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-c9cf0e3c]: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-c9cf0e3c]: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-c9cf0e3c]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-c9cf0e3c]: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-c9cf0e3c]: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-ab19afbb]{display:none}.dark .VPImage.light[data-v-ab19afbb]{display:none}.VPHero[data-v-b10c5094]{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-b10c5094]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-b10c5094]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-b10c5094]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-b10c5094]{flex-direction:row}}.main[data-v-b10c5094]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-b10c5094]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-b10c5094]{text-align:left}}@media (min-width: 960px){.main[data-v-b10c5094]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-b10c5094]{max-width:592px}}.name[data-v-b10c5094],.text[data-v-b10c5094]{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-b10c5094],.VPHero.has-image .text[data-v-b10c5094]{margin:0 auto}.name[data-v-b10c5094]{color:var(--vp-home-hero-name-color)}.clip[data-v-b10c5094]{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-b10c5094],.text[data-v-b10c5094]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-b10c5094],.text[data-v-b10c5094]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-b10c5094],.VPHero.has-image .text[data-v-b10c5094]{margin:0}}.tagline[data-v-b10c5094]{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-b10c5094]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-b10c5094]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-b10c5094]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-b10c5094]{margin:0}}.actions[data-v-b10c5094]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-b10c5094]{justify-content:center}@media (min-width: 640px){.actions[data-v-b10c5094]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-b10c5094]{justify-content:flex-start}}.action[data-v-b10c5094]{flex-shrink:0;padding:6px}.image[data-v-b10c5094]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-b10c5094]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-b10c5094]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-b10c5094]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-b10c5094]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-b10c5094]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-b10c5094]{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-b10c5094]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-b10c5094]{width:320px;height:320px}}[data-v-b10c5094] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-b10c5094] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-b10c5094] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-bd37d1a2]{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-bd37d1a2]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-bd37d1a2]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-bd37d1a2]>.VPImage{margin-bottom:20px}.icon[data-v-bd37d1a2]{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-bd37d1a2]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-bd37d1a2]{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-bd37d1a2]{padding-top:8px}.link-text-value[data-v-bd37d1a2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-bd37d1a2]{margin-left:6px}.VPFeatures[data-v-b1eea84a]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-b1eea84a]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-b1eea84a]{padding:0 64px}}.container[data-v-b1eea84a]{margin:0 auto;max-width:1152px}.items[data-v-b1eea84a]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-b1eea84a]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a]{width:50%}.item.grid-3[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-b1eea84a]{width:25%}}.container[data-v-c141a4bd]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-c141a4bd]{padding:0 48px}}@media (min-width: 960px){.container[data-v-c141a4bd]{width:100%;padding:0 64px}}.vp-doc[data-v-c141a4bd] .VPHomeSponsors,.vp-doc[data-v-c141a4bd] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-c141a4bd] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-c141a4bd] .VPHomeSponsors a,.vp-doc[data-v-c141a4bd] .VPTeamPage a{text-decoration:none}.VPHome[data-v-07b1ad08]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-07b1ad08]{margin-bottom:128px}}.VPContent[data-v-9a6c75ad]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-9a6c75ad]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-9a6c75ad]{margin:0}@media (min-width: 960px){.VPContent[data-v-9a6c75ad]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-9a6c75ad]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-9a6c75ad]{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-566314d4]{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-566314d4]{display:none}.VPFooter[data-v-566314d4] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-566314d4] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-566314d4]{padding:32px}}.container[data-v-566314d4]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-566314d4],.copyright[data-v-566314d4]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-883964e0]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-883964e0]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-883964e0]{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-883964e0]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-883964e0]{color:var(--vp-c-text-1)}.icon[data-v-883964e0]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-883964e0]{font-size:14px}.icon[data-v-883964e0]{font-size:16px}}.open>.icon[data-v-883964e0]{transform:rotate(90deg)}.items[data-v-883964e0]{position:absolute;top:40px;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)}@media (min-width: 960px){.items[data-v-883964e0]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-883964e0]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-883964e0]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-883964e0]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-883964e0]{transition:all .2s ease-out}.flyout-leave-active[data-v-883964e0]{transition:all .15s ease-in}.flyout-enter-from[data-v-883964e0],.flyout-leave-to[data-v-883964e0]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-2488c25a]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);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-2488c25a]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-2488c25a]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-2488c25a]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-2488c25a]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-2488c25a]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-2488c25a]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-2488c25a]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-2488c25a]{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-2488c25a]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-2488c25a]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-2488c25a]{display:none}}.menu-icon[data-v-2488c25a]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-2488c25a]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-2488c25a]{padding:12px 32px 11px}}.VPSwitch[data-v-b4ccac88]{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-b4ccac88]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b4ccac88]{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-b4ccac88]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b4ccac88] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-b4ccac88] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-7df97737]{opacity:1}.moon[data-v-7df97737],.dark .sun[data-v-7df97737]{opacity:0}.dark .moon[data-v-7df97737]{opacity:1}.dark .VPSwitchAppearance[data-v-7df97737] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-283b26e9]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-283b26e9]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-f51f088d]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-f51f088d]{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-f51f088d]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-f51f088d]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-a6b0397c]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-a6b0397c]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-a6b0397c]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-a6b0397c]{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-e42ed9b3]{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-e42ed9b3] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e42ed9b3] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e42ed9b3] .group:last-child{padding-bottom:0}.VPMenu[data-v-e42ed9b3] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e42ed9b3] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e42ed9b3] .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-e42ed9b3] .action{padding-left:24px}.VPFlyout[data-v-af5898d3]{position:relative}.VPFlyout[data-v-af5898d3]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-af5898d3]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-af5898d3]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-af5898d3]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-af5898d3]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-af5898d3],.button[aria-expanded=true]+.menu[data-v-af5898d3]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-af5898d3]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-af5898d3]{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-af5898d3]{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-af5898d3]{margin-right:0;font-size:16px}.text-icon[data-v-af5898d3]{margin-left:4px;font-size:14px}.icon[data-v-af5898d3]{font-size:20px;transition:fill .25s}.menu[data-v-af5898d3]{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-358b6670]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-358b6670]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-358b6670]>svg,.VPSocialLink[data-v-358b6670]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-e71e869c]{display:flex;justify-content:center}.VPNavBarExtra[data-v-8e87c032]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-8e87c032]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-8e87c032]{display:none}}.trans-title[data-v-8e87c032]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-8e87c032],.item.social-links[data-v-8e87c032]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-8e87c032]{min-width:176px}.appearance-action[data-v-8e87c032]{margin-right:-2px}.social-links-list[data-v-8e87c032]{margin:-4px -8px}.VPNavBarHamburger[data-v-6bee1efd]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-6bee1efd]{display:none}}.container[data-v-6bee1efd]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-6bee1efd]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-6bee1efd]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-6bee1efd],.VPNavBarHamburger.active:hover .middle[data-v-6bee1efd],.VPNavBarHamburger.active:hover .bottom[data-v-6bee1efd]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-6bee1efd],.middle[data-v-6bee1efd],.bottom[data-v-6bee1efd]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-6bee1efd]{top:0;left:0;transform:translate(0)}.middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-08fbf4b6]{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-08fbf4b6],.VPNavBarMenuLink[data-v-08fbf4b6]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-f732b5d0]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-f732b5d0]{display:flex}}/*! @docsearch/css 3.6.0 | 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-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 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-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--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}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@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:#0003;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:#0003;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}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@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-Key--pressed{transform:none;box-shadow:none}.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}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.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-ef6192dc]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-ef6192dc]{display:flex;align-items:center}}.title[data-v-0ad69264]{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-0ad69264]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-0ad69264]{border-bottom-color:var(--vp-c-divider)}}[data-v-0ad69264] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-acee064b]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-acee064b]{display:flex;align-items:center}}.title[data-v-acee064b]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-844edcde]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar[data-v-844edcde]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-844edcde]:not(.home){background-color:transparent}.VPNavBar[data-v-844edcde]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-844edcde]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-844edcde]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-844edcde]{padding:0}}.container[data-v-844edcde]{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-844edcde],.container>.content[data-v-844edcde]{pointer-events:none}.container[data-v-844edcde] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-844edcde]{max-width:100%}}.title[data-v-844edcde]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-844edcde]{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-844edcde]{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-844edcde]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-844edcde]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-844edcde]{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-844edcde]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-844edcde]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-844edcde]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-844edcde]{column-gap:.5rem}}.menu+.translations[data-v-844edcde]:before,.menu+.appearance[data-v-844edcde]:before,.menu+.social-links[data-v-844edcde]:before,.translations+.appearance[data-v-844edcde]:before,.appearance+.social-links[data-v-844edcde]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-844edcde]:before,.translations+.appearance[data-v-844edcde]:before{margin-right:16px}.appearance+.social-links[data-v-844edcde]:before{margin-left:16px}.social-links[data-v-844edcde]{margin-right:-8px}.divider[data-v-844edcde]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-844edcde]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-844edcde]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-844edcde]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-844edcde]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-844edcde]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-844edcde]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-338d9b48]{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-338d9b48]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-1a934d60]{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-1a934d60]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-aea78dd1]{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-aea78dd1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-f60dbfa7]{display:block}.title[data-v-f60dbfa7]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-d2212c70]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-d2212c70]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-d2212c70]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-d2212c70]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-d2212c70]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-d2212c70]{transform:rotate(45deg)}.button[data-v-d2212c70]{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-d2212c70]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-d2212c70]{transition:transform .25s}.group[data-v-d2212c70]:first-child{padding-top:0}.group+.group[data-v-d2212c70],.group+.item[data-v-d2212c70]{padding-top:4px}.VPNavScreenTranslations[data-v-516e4bc3]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-516e4bc3]{height:auto}.title[data-v-516e4bc3]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-516e4bc3]{font-size:16px}.icon.lang[data-v-516e4bc3]{margin-right:8px}.icon.chevron[data-v-516e4bc3]{margin-left:4px}.list[data-v-516e4bc3]{padding:4px 0 0 24px}.link[data-v-516e4bc3]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-57cce842]{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-57cce842],.VPNavScreen.fade-leave-active[data-v-57cce842]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-57cce842],.VPNavScreen.fade-leave-active .container[data-v-57cce842]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-57cce842],.VPNavScreen.fade-leave-to[data-v-57cce842]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-57cce842],.VPNavScreen.fade-leave-to .container[data-v-57cce842]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-57cce842]{display:none}}.container[data-v-57cce842]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-57cce842],.menu+.appearance[data-v-57cce842],.translations+.appearance[data-v-57cce842]{margin-top:24px}.menu+.social-links[data-v-57cce842]{margin-top:16px}.appearance+.social-links[data-v-57cce842]{margin-top:16px}.VPNav[data-v-7ad780c2]{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-7ad780c2]{position:fixed}}.VPSidebarItem.level-0[data-v-c24f735a]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-c24f735a]{padding-bottom:10px}.item[data-v-c24f735a]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-c24f735a]{cursor:pointer}.indicator[data-v-c24f735a]{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-c24f735a],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-c24f735a],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-c24f735a],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-c24f735a]{background-color:var(--vp-c-brand-1)}.link[data-v-c24f735a]{display:flex;align-items:center;flex-grow:1}.text[data-v-c24f735a]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-c24f735a]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-c24f735a],.VPSidebarItem.level-2 .text[data-v-c24f735a],.VPSidebarItem.level-3 .text[data-v-c24f735a],.VPSidebarItem.level-4 .text[data-v-c24f735a],.VPSidebarItem.level-5 .text[data-v-c24f735a]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-c24f735a]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-1.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-2.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-3.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-4.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-5.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-c24f735a]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-c24f735a]{color:var(--vp-c-brand-1)}.caret[data-v-c24f735a]{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-c24f735a]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-c24f735a]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-c24f735a]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-c24f735a]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-c24f735a],.VPSidebarItem.level-2 .items[data-v-c24f735a],.VPSidebarItem.level-3 .items[data-v-c24f735a],.VPSidebarItem.level-4 .items[data-v-c24f735a],.VPSidebarItem.level-5 .items[data-v-c24f735a]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-c24f735a]{display:none}.VPSidebar[data-v-4871f9f5]{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-4871f9f5]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-4871f9f5]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-4871f9f5]{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-4871f9f5]{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-4871f9f5]{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-4871f9f5]{outline:0}.group+.group[data-v-4871f9f5]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-4871f9f5]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-c8291ffa]{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-c8291ffa]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c8291ffa]{top:14px;left:16px}}.Layout[data-v-d8b57b2d]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3dc26e1d]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3dc26e1d]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3dc26e1d]{margin:128px 0}}.VPHomeSponsors[data-v-3dc26e1d]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3dc26e1d]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3dc26e1d]{padding:0 64px}}.container[data-v-3dc26e1d]{margin:0 auto;max-width:1152px}.love[data-v-3dc26e1d]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3dc26e1d]{display:inline-block}.message[data-v-3dc26e1d]{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-3dc26e1d]{padding-top:32px}.action[data-v-3dc26e1d]{padding-top:40px;text-align:center}.VPTeamPage[data-v-a5329171]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-a5329171]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-a5329171-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-a5329171-s],.VPTeamMembers+.VPTeamPageSection[data-v-a5329171-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-a5329171-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-a5329171-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-a5329171-s],.VPTeamMembers+.VPTeamPageSection[data-v-a5329171-s]{margin-top:96px}}.VPTeamMembers[data-v-a5329171-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-a5329171-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-a5329171-s]{padding:0 64px}}.VPTeamPageTitle[data-v-46c5e327]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-46c5e327]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-46c5e327]{padding:80px 64px 48px}}.title[data-v-46c5e327]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-46c5e327]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-46c5e327]{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-46c5e327]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-3bf2e850]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 64px}}.title[data-v-3bf2e850]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-3bf2e850]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-3bf2e850]{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-3bf2e850]{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-3bf2e850]{padding-top:40px}.VPTeamMembersItem[data-v-acff304e]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-acff304e]{padding:32px}.VPTeamMembersItem.small .data[data-v-acff304e]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-acff304e]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-acff304e]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-acff304e]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-acff304e]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-acff304e]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-acff304e]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-acff304e]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-acff304e]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-acff304e]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-acff304e]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-acff304e]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-acff304e]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-acff304e]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-acff304e]{text-align:center}.avatar[data-v-acff304e]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-acff304e]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-acff304e]{margin:0;font-weight:600}.affiliation[data-v-acff304e]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-acff304e]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-acff304e]:hover{color:var(--vp-c-brand-1)}.desc[data-v-acff304e]{margin:0 auto}.desc[data-v-acff304e] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-acff304e]{display:flex;justify-content:center;height:56px}.sp-link[data-v-acff304e]{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-acff304e]:hover,.sp .sp-link.link[data-v-acff304e]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-acff304e]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-bf782009]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-bf782009]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-bf782009]{max-width:876px}.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-bf782009]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-bf782009]{max-width:760px}.container[data-v-bf782009]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.medium-zoom-overlay{z-index:30}.medium-zoom-image--opened{z-index:31}.VPLocalSearchBox[data-v-cb4e1afe]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-cb4e1afe]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-cb4e1afe]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-cb4e1afe]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-cb4e1afe]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-cb4e1afe]{padding:0 8px}}.search-bar[data-v-cb4e1afe]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-cb4e1afe]{display:block;font-size:18px}.navigate-icon[data-v-cb4e1afe]{display:block;font-size:14px}.search-icon[data-v-cb4e1afe]{margin:8px}@media (max-width: 767px){.search-icon[data-v-cb4e1afe]{display:none}}.search-input[data-v-cb4e1afe]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-cb4e1afe]{padding:6px 4px}}.search-actions[data-v-cb4e1afe]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-cb4e1afe]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-cb4e1afe]{display:none}}.search-actions button[data-v-cb4e1afe]{padding:8px}.search-actions button[data-v-cb4e1afe]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-cb4e1afe]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-cb4e1afe]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-cb4e1afe]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-cb4e1afe]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-cb4e1afe]{display:none}}.search-keyboard-shortcuts kbd[data-v-cb4e1afe]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-cb4e1afe]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-cb4e1afe]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-cb4e1afe]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-cb4e1afe]{margin:8px}}.titles[data-v-cb4e1afe]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-cb4e1afe]{display:flex;align-items:center;gap:4px}.title.main[data-v-cb4e1afe]{font-weight:500}.title-icon[data-v-cb4e1afe]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-cb4e1afe]{opacity:.5}.result.selected[data-v-cb4e1afe]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-cb4e1afe]{position:relative}.excerpt[data-v-cb4e1afe]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-cb4e1afe]{opacity:1}.excerpt[data-v-cb4e1afe] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-cb4e1afe] mark,.excerpt[data-v-cb4e1afe] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-cb4e1afe] .vp-code-group .tabs{display:none}.excerpt[data-v-cb4e1afe] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-cb4e1afe]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-cb4e1afe]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-cb4e1afe],.result.selected .title-icon[data-v-cb4e1afe]{color:var(--vp-c-brand-1)!important}.no-results[data-v-cb4e1afe]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-cb4e1afe]{flex:none} diff --git a/assets/submission.MMNGpK24.webp b/assets/submission.MMNGpK24.webp new file mode 100644 index 0000000..3d6bce1 Binary files /dev/null and b/assets/submission.MMNGpK24.webp differ diff --git a/assets/submission.md.GwBh5Gr1.js b/assets/submission.md.GwBh5Gr1.js new file mode 100644 index 0000000..bc0b2f7 --- /dev/null +++ b/assets/submission.md.GwBh5Gr1.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,j as s,a as o}from"./chunks/framework.Bsyxd66g.js";const i="/assets/submission.MMNGpK24.webp",P=JSON.parse('{"title":"获取用户投稿信息","description":"","frontmatter":{},"headers":[],"relativePath":"submission.md","filePath":"submission.md","lastUpdated":1774528781000}'),n={name:"submission.md"},r=s("h1",{id:"获取用户投稿信息",tabindex:"-1"},[o("获取用户投稿信息 "),s("a",{class:"header-anchor",href:"#获取用户投稿信息","aria-label":'Permalink to "获取用户投稿信息"'},"​")],-1),c=s("p",null,"UP 主 的 ID 获取也很简单,在网页端打开想要获取投稿的 UP 主首页,直接查看网址栏中的数字或页面中的个人信息即可。",-1),d=s("p",null,[s("img",{src:i,alt:"image"})],-1),_=[r,c,d];function l(m,p,h,u,f,b){return a(),t("div",null,_)}const N=e(n,[["render",l]]);export{P as __pageData,N as default}; diff --git a/assets/submission.md.GwBh5Gr1.lean.js b/assets/submission.md.GwBh5Gr1.lean.js new file mode 100644 index 0000000..bc0b2f7 --- /dev/null +++ b/assets/submission.md.GwBh5Gr1.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,j as s,a as o}from"./chunks/framework.Bsyxd66g.js";const i="/assets/submission.MMNGpK24.webp",P=JSON.parse('{"title":"获取用户投稿信息","description":"","frontmatter":{},"headers":[],"relativePath":"submission.md","filePath":"submission.md","lastUpdated":1774528781000}'),n={name:"submission.md"},r=s("h1",{id:"获取用户投稿信息",tabindex:"-1"},[o("获取用户投稿信息 "),s("a",{class:"header-anchor",href:"#获取用户投稿信息","aria-label":'Permalink to "获取用户投稿信息"'},"​")],-1),c=s("p",null,"UP 主 的 ID 获取也很简单,在网页端打开想要获取投稿的 UP 主首页,直接查看网址栏中的数字或页面中的个人信息即可。",-1),d=s("p",null,[s("img",{src:i,alt:"image"})],-1),_=[r,c,d];function l(m,p,h,u,f,b){return a(),t("div",null,_)}const N=e(n,[["render",l]]);export{P as __pageData,N as default}; diff --git a/assets/webui.CZmBmDyk.webp b/assets/webui.CZmBmDyk.webp new file mode 100644 index 0000000..d523f79 Binary files /dev/null and b/assets/webui.CZmBmDyk.webp differ diff --git a/collection.html b/collection.html new file mode 100644 index 0000000..fb2c685 --- /dev/null +++ b/collection.html @@ -0,0 +1,26 @@ + + + + + + 获取合集/列表信息 | bili-sync + + + + + + + + + + + + + + + +
Skip to content

获取合集/列表信息

视频合集和视频列表虽然在哔哩哔哩网站交互上行为类似,但在接口层级是两个不同的概念,程序配置中需要对两者做出区分。

目前 B 站绝大部分内容都是视频合集(Season),视频列表(Series)是古早的功能,现在已经不常见了。

配置形式与区分方法

新版本 b 站网页端已经对两种类型做了初步整合,将需要的参数展示在了视频合集/视频列表的 URL 中,不再需要手动查看接口。URL 的路径格式为:

/{mid}/lists/{id}?type={season/series}

点开你想要订阅的视频合集/视频列表详情,对照查看 URL 即可获取所需参数。

视频合集

image

类型为 合集(Season),用户 ID 为 521722088,合集 ID 为 1987140

视频列表

image

类型为 列表(Series),用户 ID 为 521722088,列表 ID 为 387214

+ + + + \ No newline at end of file diff --git a/configuration.html b/configuration.html new file mode 100644 index 0000000..0c0d258 --- /dev/null +++ b/configuration.html @@ -0,0 +1,38 @@ + + + + + + 配置说明 | bili-sync + + + + + + + + + + + + + + + +
Skip to content

配置说明

基本设置

绑定地址

程序 Web Server 监听的地址,程序启动时会监听该地址,成功后可通过 http://${bind_address} 访问管理页。

该配置会在程序重启时生效。

同步间隔(秒)

表示程序每次执行扫描下载的间隔时间,单位为秒。

视频名称模板、分页名称模板

视频名称模板(video_name)和分页名称模板(page_name)用于设置下载文件的命名规则。对于所有下载的内容,将会维持如下的目录结构:

  1. 单页视频:

    bash
    ├── {video_name}
    +│   ├── {page_name}.mp4
    +│   ├── {page_name}.nfo
    +│   └── {page_name}-poster.jpg
  2. 多页视频:

    bash
    ├── {video_name}
    +│   ├── poster.jpg
    +│   ├── Season 1
    +│   │   ├── {page_name} - S01E01.mp4
    +│   │   ├── {page_name} - S01E01.nfo
    +│   │   ├── {page_name} - S01E01-thumb.jpg
    +│   │   ├── {page_name} - S01E02.mp4
    +│   │   ├── {page_name} - S01E02.nfo
    +│   │   └── {page_name} - S01E02-thumb.jpg
    +│   └── tvshow.nfo

这两个模板参数会在运行时解析,其中用 {{ }} 包裹的模板变量会被动态替换为对应的内容。

对于 video_name,支持设置 bvid(视频编号)、title(视频标题)、upper_name(up 主名称)、upper_mid(up 主 id)、pubtime(视频发布时间)、fav_time(视频收藏时间)。

对于 page_name,除支持 video 的全部参数外,还支持 ptitle(分 P 标题)、pid(分 P 页号)。

为了解决文件名可能过长的问题,程序为模板引入了 truncate 函数。如 {{ truncate title 10 }} 表示截取 title 的前 10 个字符。

TIP

  1. 仅收藏夹视频会区分 fav_timepubtime,其它类型下载两者的取值是完全相同的;
  2. fav_timepubtime 的格式受时间格式控制。

此外,video_namepage_name 还支持使用路径分割符,如 {{ upper_mid }}/{{ title }}_{{ pubtime }} 表示视频会根据 UP 主 id 将视频分到不同的文件夹中。

推荐仅在 video_name 中使用路径分割符,暂不清楚在 page_name 中使用路径分割符导致分页存储到子文件夹后是否还能被媒体服务器正确识别。

CAUTION

路径分隔符在不同平台定义不同,Windows 下为 \,MacOS 和 Linux 下为 /

UP 主头像保存路径

UP 主头像和信息的保存位置。对于使用 Emby、Jellyfin 媒体服务器的用户,需确保此处路径指向 Emby、Jellyfin 配置中的 /metadata/people/ 才能够正常在媒体服务器中显示 UP 主的头像。

时间格式

用于设置 fav_timepubtime 在视频名称模板、分页名称模板中使用时的显示格式,支持的格式符号可以参考 chrono strftime 文档

后端 API 认证 Token

表示调用程序管理 API 需要的身份凭据,程序会对 API 请求进行身份验证,身份验证不通过会拒绝访问。

在修改该 Token 后需要对应修改前端保存的 Token,才能正常访问管理页面。

启动 CDN 排序

一般情况下,b 站会为视频、音频流提供一个 baseUrl 与多个 backupUrl,程序默认会按照 baseUrl -> backupUrl 的顺序请求,依次尝试下载。

如果启用 CDN 排序,那么程序不再使用默认顺序,而是将所有 url 放到一起统一排序来决定请求顺序。排序优先级从高到低为:

  1. 服务商 CDN:upos-sz-mirrorxxxx.bilivideo.com
  2. 自建 CDN:cn-xxxx-dx-v-xxxx.bilivideo.com
  3. MCDN:xxxx.mcdn.bilivideo.com
  4. PCDN:xxxx.v1d.szbdyd.com

这会让程序优先请求质量更高的 CDN,可能会提高下载速度并增加成功率,但效果因地区、网络环境而异。

B 站认证

哔哩哔哩账号的身份凭据,请参考凭据获取流程获取并对应填写,后续 bili-sync 会在必要时自动刷新身份凭据,不再需要手动管理。

推荐使用匿名窗口获取,避免潜在的冲突。

视频质量

该页配置大部分都是显而易见的,仅对视频编码格式偏好进行说明。

视频编码格式偏好

这是 bili-sync 选择视频编码的优先级顺序,优先级按顺序从高到低。此处对编码格式做一个简单说明:

  • AVC 又称 H.264,是目前使用最广泛的视频编码格式,绝大部分设备可以使用硬件解码播放该格式的视频(也因此播放普遍流畅),但是同等画质下视频体积较大。

  • HEV(C) 又称 H.265,与 AV1 都是新一代的视频编码格式。这两种编码相比 AVC 有更好的压缩率,同等画质下视频体积更小,但由于相对较新,硬件解码支持不如 AVC 广泛。如果你的播放设备不支持则只能使用软件解码播放,这种情况下可能导致播放卡顿、机器发热等问题。

建议查阅自己常用播放设备对这三种编码的硬件解码支持情况以选择合适的编码格式,如果硬件支持 HEV 或 AV1,那么可以将其优先级调高。

而如果你的设备不支持,或者单纯懒得查询,那么推荐将 AVC 放在第一位以获得最好的兼容性。

弹幕渲染

弹幕的设置选项,用于设置下载弹幕的样式,几乎全部取自上游仓库

弹幕持续时间(秒)

弹幕在屏幕上的持续时间,单位为秒。

字体

弹幕使用的字体。

字体大小

弹幕的字体大小。

宽度比例

计算弹幕宽度的比例,为避免重叠可以调大这个数值。

水平间距

两条弹幕之间最小的水平距离。

轨道大小

弹幕所占据的高度,即“行高度/行间距”。

滚动弹幕高度百分比

屏幕上滚动弹幕最多高度百分比。

底部弹幕高度百分比

屏幕上底部弹幕最多高度百分比。

透明度(0-255)

透明度,取值范围为 0-255。实际透明度百分比为 透明度 / 255

描边宽度

弹幕的描边宽度。

时间偏移(秒)

时间轴偏移,>0 会让弹幕延后,<0 会让弹幕提前,单位为秒。

粗体显示

弹幕是否加粗。

高级设置

该页主要用于调整程序的请求与下载行为。

TIP

  1. 一般来说,视频、分页的并发数不需要过大;
  2. 请求频率限制可以根据网络环境和 api 请求频率进行调整,如果经常遇到风控可以优先调小该值。

视频并发数、分页并发数

视频并发数(video)和分页并发数(page)是控制 bili-sync 视频下载任务并发度的配置项。

程序的处理逻辑是严格从上到下的,即程序会首先并发处理多个 video,每个 video 内再并发处理多个 page,程序的并发度可以简单衡量为 video * page(很多 video 都只有单个 page,实际会更接近 video * 1),videopage 两个参数就是控制此处的,调节这两个参数可以宏观上控制程序的并发度。

NFO 时间类型

表示在视频 NFO 文件中使用的时间类型,可选值为收藏时间和发布时间。

仅收藏夹视频会对这两项进行区分,其它类型的视频这两者取值完全相同。

请求频率限制

每个执行的任务内部都会发起若干 api 请求以获取信息,这些请求的整体频率受到请求频率的限制,使用漏桶算法实现。超过这个频率的请求会被暂时阻塞,直到漏桶中有空间为止。

时间间隔(毫秒)与限制请求数共同表明的意思时:程序在每个时间间隔内最多允许多少个请求。调节这一项可以从微观上控制程序的并行度,同时也是最直接、最显著的控制 api 请求频率的方法。

据观察 b 站风控限制大多集中在主站,因此目前请求频率限制仅作用于主站的各类请求,如请求各类视频列表、视频信息、获取流下载地址等,对实际的视频、图片下载过程不做限制。

单文件分块下载

单文件分块下载是指将单个视频文件分成多个小块进行下载,这可能有助于提高下载速度。

程序会首先为这个文件预分配空间,接着将文件分成若干个大小相同的块,为每个块启动单独的异步任务并行下载。

下载分块数

表示单个文件分成多少个小块,默认值为 4。

启动分块下载的文件大小阈值(字节)

表示当单个文件大小超过多少字节时,才会启动分块下载。默认值为 20971520(20 MB)。

如果文件过小,分块成本可能会超过分块下载带来的收益,因此使用该阈值决定下载策略。

+ + + + \ No newline at end of file diff --git a/design.html b/design.html new file mode 100644 index 0000000..206de6e --- /dev/null +++ b/design.html @@ -0,0 +1,26 @@ + + + + + + 工作原理 | bili-sync + + + + + + + + + + + + + + + +
Skip to content

工作原理

本节会尽可能简单明了地介绍 bili-sync 的工作原理,让用户了解程序的整体执行过程。

b 站的视频结构

在了解程序工作原理之前,我们需要先对 b 站视频的组织结构有一个大概的了解。简单来说:

  • 收藏夹、稍后再看、视频合集、视频列表等结构都是由一系列视频构成的列表;
  • 每个视频都有唯一的 bvid,包含了封面、描述和标签信息,并包含了一个或多个分页;
  • 每个分页都有一个唯一的 cid,包含了封面、视频、音频、弹幕。

为了描述方便,在后文会将收藏夹、稍后再看这类结构统称为 video source,将视频称为 video,将分页称为 page。不难看出这三者有着很明显的层级关系:video source 包含若干 video,video 包含若干 page

一个非常容易混淆的点是视频合集/视频列表与多页视频的区别:

NOTE

bili_collection

bili_video

这两张图中,上图是视频合集,下图是多页视频。这两者在展示上区别较小,但在结构上有相当大的不同。结合上面对 b 站视频结构的介绍,这个区别可以简单总结为:

  • 视频合集是由多个仅包含单个 page 的 video 组成的 video source

  • 多页视频是由多个 page 组成的 video

这说明它们是处于两个不同层级的结构,因此程序对其的处理方式也有着相当大的不同。

与 EMBY 媒体库的对应关系

EMBY 的一般结构是: 媒体库 - 文件夹 - 电影/电视剧 - 分季/分集,方便起见,我采用了如下的对应关系:

  1. 文件夹:对应 b 站的 video source;
  2. 电视剧:对应 b 站的 video;
  3. 第一季的所有分集:对应 b 站的 page。

特别的,当 video 仅有一个 page 时,为了避免过多的层级,bili-sync 会将 page 展开到第二层级,变成与电视剧同级的电影。

因此,需要将媒体库类型设置为“混合内容”以支持在同个媒体库中同时显示电视剧与电影

单 page 的 video

single_page

多 page 的 video

multi_page

multi_page_detail

数据库设计

NOTE

可以前往此处实时查看当前版本的数据库表结构。

既然拥有着明显的层级关系,那数据库表就很容易设计了。为了简化实现,程序没有额外考虑单个 video 被多个 video source 引用的情况(如一个视频同时在收藏夹和稍后再看中)。而是简单的将其设计为了不交叉的层级结构。

video source 表

从上面的介绍可以看出,video source 并不是一个具体的结构,而是拥有多种实现的抽象概念。我选择将其特化实现为多张表:

  1. favorite:收藏夹;
  2. watch_later:稍后再看;
  3. collection: 视频合集/视频列表;
  4. ....

video 表

video 表包含了 video 的基本信息,如 bvid、标题、封面、描述、标签等。此外,video 表还包含了与 video source 的关联。

具体来说,每一种 video source 都在 video 表中有一个对应的列,指向 video source 表中的 id,如 favorite_id、collection_id 等。接下来将这些键与 video 的 bvid 绑在一起建立唯一索引,就可以保证在同一个 video source 中不会有重复的 video。

page 表

page 表包含了 page 的基本信息,如 cid、标题、封面等。与 video 类似但更简单,page 表仅包含了与 video 的关联。

执行过程

初始化

程序启动时会读取配置文件、迁移数据库、初始化日志等操作。如果发现需要的文件不存在,程序会自动创建。

扫描 video source 获取新视频

WARNING

b 站实现接口时为了节省资源,通过 video source 获取到的 video 列表通常是分页且不包含详细信息的。

程序会扫描所有配置文件中包含的 video source,获取其中包含的 video 的简单信息并填充到数据库。在实现时需要避免频繁的全量扫描。

具体到 bili-sync 的实现中,每个 video source 都有一个 latest_row_at 列,用于记录处理过的最新视频时间。程序在请求接口时会设置按时间排序,确保新视频位于前面。排序依据的时间根据 video source 的类型而定:收藏夹按收藏时间,投稿按照投稿时间...

拉取过程会逐页请求,程序会不断将获取到的视频保存到数据库中,直到发现第一个小于等于 latest_row_at 的视频时停止。接着将 latest_row_at 更新为最新的视频时间。

填充 video 详情

将新增视频的简单信息写入数据库后,下一步会填充 video 详情。正如上文所述:通过 video source 获取到的 video 列表通常是不包含详细信息的,因此需要额外的请求来填充这些信息。

这一步会筛选出所有未完全填充信息的 video,逐个获取 video 的详细信息(如标签、包含的 page 等)并填充到数据库中。

在这个过程中,如果遇到 -404 错误码则说明视频无法被正常访问,程序会将该视频标记为无效并跳过。

下载未处理的视频

经过上面处理后,数据库中已经包含了所有需要的 video 和 page 信息,接下来只需要筛选其中“未完全下载”、“成功填充详细信息”的所有视频,并发下载即可。程序在 video 层级最多允许 3 个任务同时下载,page 层级最多允许 2 个任务同时下载。

数据库中的 status 字段用于标记 video 和 page 的下载状态,视频的各个部分(封面、视频、nfo 等)包含在 status 的不同位中。程序会根据 status 的不同位来判断视频的下载状态,以此来决定是否需要下载。

如果某些部分下载失败,status 字段会记录这些部分的失败次数,程序会在下次下载时重试。如果重试次数超过了设定的阈值,那么视频会被标记为下载失败,后续直接忽略。

此处程序对风控做了额外的处理,一般风控发生时接下来的所有请求都会失败,因此程序检测到风控时不会认为是某个视频下载失败,而是直接终止 video source 的全部下载任务,等待下次扫描时重试。

+ + + + \ No newline at end of file diff --git a/favorite.html b/favorite.html new file mode 100644 index 0000000..94e8db0 --- /dev/null +++ b/favorite.html @@ -0,0 +1,26 @@ + + + + + + 获取收藏夹信息 | bili-sync + + + + + + + + + + + + + + + +
Skip to content

获取收藏夹信息

收藏夹的 ID 获取非常简单,在网页端打开自己的收藏夹列表,切换到你想要获取的收藏夹,然后查看 URL 地址栏中的 fid 参数内容即可。

image

+ + + + \ No newline at end of file diff --git a/frontend.html b/frontend.html new file mode 100644 index 0000000..aae7a24 --- /dev/null +++ b/frontend.html @@ -0,0 +1,26 @@ + + + + + + 管理页 | bili-sync + + + + + + + + + + + + + + + +
Skip to content

管理页

自 2.6.0 版本开始,bili-sync 的配置文件已经完全迁移至数据库中,程序的所有操作都可以通过 WebUI 管理页进行。

管理页

+ + + + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 0000000..b5d40bc --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"index.md":"C_L9eA6f","args.md":"Doc_9Vk9","submission.md":"GwBh5Gr1","configuration.md":"CsuuCUAn","favorite.md":"gPfjvyHT","quick-start.md":"CWlth8zu","frontend.md":"DzwsJqGp","design.md":"BbdPHCak","collection.md":"dbDkKkYg","question.md":"DYI5h72W","introduction.md":"ZetHVvoO"} diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..11374c7 Binary files /dev/null and b/icon.png differ diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..c918334 --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..402ea58 --- /dev/null +++ b/index.html @@ -0,0 +1,26 @@ + + + + + + bili-sync | 由 Rust & Tokio 驱动的哔哩哔哩同步工具 + + + + + + + + + + + + + + + +
Skip to content

bili-sync

由 Rust & Tokio 驱动的哔哩哔哩同步工具

bili-sync
+ + + + \ No newline at end of file diff --git a/introduction.html b/introduction.html new file mode 100644 index 0000000..5738fa0 --- /dev/null +++ b/introduction.html @@ -0,0 +1,26 @@ + + + + + + bili-sync 是什么? | bili-sync + + + + + + + + + + + + + + + +
Skip to content

bili-sync 是什么?

TIP

当前最新程序版本为 v2.11.0,文档将始终与最新程序版本保持一致。

bili-sync 是一款专为 NAS 用户编写的哔哩哔哩同步工具。

它的基本的工作原理是使用用户填写的凭据定期扫描视频合集、收藏夹等,获取到本地未下载过的内容并保存到本地,维持本地视频库与哔哩哔哩网站的同步。

下载的内容包括视频、封面、弹幕、标签与简介信息等,这些文件整体保持与 Emby、Jellyfin 等媒体服务器软件兼容的文件布局,使得目的文件夹可以直接被作为媒体库添加到这些软件中,无需干预自动识别。

使用截图

WARNING

媒体库类型请选择“混合内容”,否则可能导致多页视频无法正常显示。

概览

概览

详情

详情

播放(使用 infuse)

播放

文件排布

文件

功能与路线图

  • 使用用户填写的凭据认证,并在必要时自动刷新
  • 支持收藏夹与视频列表/视频合集的下载
  • 自动选择用户设置范围内最优的视频和音频流,并在下载完成后使用 FFmpeg 合并
  • 使用 Tokio 与 Reqwest,对视频、视频分页进行异步并发下载
  • 使用媒体服务器支持的文件命名,方便一键作为媒体库导入
  • 当前轮次下载失败会在下一轮下载时重试,失败次数过多自动丢弃
  • 使用数据库保存媒体信息,避免对同个视频的多次请求
  • 打印日志,并在请求出现风控时自动终止,等待下一轮执行
  • 提供多平台的二进制可执行文件,为 Linux 平台提供了立即可用的 Docker 镜像
  • 支持对“稍后再看”内视频的自动扫描与下载
  • 支持对 UP 主投稿视频的自动扫描与下载
  • 支持限制任务的并行度和接口请求频率
  • 支持单个文件的分块并行下载
  • 支持使用 Web UI 配置,查看并管理视频、视频源
+ + + + \ No newline at end of file diff --git a/logo.webp b/logo.webp new file mode 100644 index 0000000..c88b6ef Binary files /dev/null and b/logo.webp differ diff --git a/question.html b/question.html new file mode 100644 index 0000000..95a2d37 --- /dev/null +++ b/question.html @@ -0,0 +1,26 @@ + + + + + + 常见问题 | bili-sync + + + + + + + + + + + + + + + +
Skip to content

常见问题

各种文件找不到问题,如运行后找不到初始 data.sqlite、提示成功下载但看不到视频文件等。

请检查挂载位置与配置文件填写是否正确,需要理解的是:

  1. 容器挂载是把宿主机的 /A 挂载到容器内的 /B
  2. 程序运行在容器中,能够读取、写入的目录只能是 /B,因此配置文件内填写的路径只能与 /B 有关。

下载视频出现 Permission denied、Operation not permitted 等错误。

有两种可能的原因:

  1. 容器运行时指定了 user(非 root),但配置文件并未正确填写挂载后的路径。此时目标路径只是一个普通的容器内路径,非 root 用户无法修改,导致执行出错;
  2. 配置文件正确填写了挂载后的路径,此时出现权限错误说明你为容器指定的 user 无权写入宿主机上的原始路径。需检查宿主机原始路径的文件权限。

下载某个视频连续多次出现 error decoding response body 错误

这个问题我也出现过几次,目前还不清楚原因,但怀疑是 b 站服务器使用某种检测机制拒绝了响应。

bili-sync 在 2.4.0 版本引入了一个改动,不将此错误计入错误次数,允许其无限重试,我过去下载失败的某个视频使用这个策略在多次尝试后成功了。

尽管如此,该解决方案仍然比较玄学,需要将来能够查明具体原因再加以修复。

有些视频已经达到了最大重试次数还没有成功,我可以手动重试吗?

可以在 WebUI 中查找对应的视频源并点击“重置”,这会将所有失败的子任务重置为未下载状态,下一次视频下载任务就会开始重试。

此外还可以进入视频详情点击“编辑状态”,这允许用户自行修改每个子任务的状态。

+ + + + \ No newline at end of file diff --git a/quick-start.html b/quick-start.html new file mode 100644 index 0000000..e4952af --- /dev/null +++ b/quick-start.html @@ -0,0 +1,59 @@ + + + + + + 快速开始 | bili-sync + + + + + + + + + + + + + + + +
Skip to content

快速开始

程序使用 Rust 编写,不需要 Runtime 且内嵌 WebUI,并为各个平台提供了预编译的二进制文件,因此部署较为简单。

程序获取

程序为各个平台提供了预构建的二进制文件,并且打包了 Linux/amd64Linux/arm64 两个平台的 Docker 镜像。用户可以自行选择使用哪种方式运行。

其一:下载平台二进制文件运行

CAUTION

如果你使用这种方式运行,请确保 FFmpeg 已被正确安装且位于 PATH 中,可直接通过 ffmpeg 命令访问。

程序发布页选择最新版本中对应机器架构的压缩包,解压后会获取一个名为 bili-sync-rs 的可执行文件,直接双击执行。

其二:使用 Docker Compose 运行

Linux/amd64 与 Linux/arm64 两个平台可直接使用 Docker 或 Docker Compose 运行,此处以 Compose 为例:

请注意其中的注释,有不清楚的地方可以先继续往下看。

yaml
services:
+  bili-sync-rs:
+    # 不推荐使用 latest 这种模糊的 tag,最好直接指明版本号
+    image: amtoaer/bili-sync-rs:latest
+    restart: unless-stopped
+    network_mode: bridge
+    # 该选项请仅在日志终端支持彩色输出时启用,否则日志中可能会出现乱码
+    tty: true
+    # 非必需设置项,推荐设置为宿主机用户的 uid 及 gid (`$uid:$gid`)
+    # 可以执行 `id ${user}` 获取 `user` 用户的 uid 及 gid
+    # 程序下载的所有文件权限将与此处的用户保持一致,不设置默认为 Root
+    user: 1000:1000
+    hostname: bili-sync-rs
+    container_name: bili-sync-rs
+    # 程序默认绑定 0.0.0.0:12345 运行 http 服务
+    # 可同时修改 compose 文件与 config.toml 变更服务运行的端口
+    ports:
+      - 12345:12345
+    volumes:
+      - ${你希望存储程序配置的目录}:/app/.config/bili-sync
+      # metadata/people 正确挂载才能在 Emby 或 Jellyfin 中显示 UP 主头像
+      # 右边的目标目录不固定,只需要确保目标目录与 bili-sync 中填写的“UP 主头像保存路径”保持一致即可
+      - ${Emby 或 Jellyfin 配置下的 metadata/people 目录}:/app/.config/bili-sync/upper_face
+      # 接下来可以挂载一系列用于保存视频的目录,接着在 bili-sync 中配置将视频下载到这些目录即可
+      # 例如:
+      # - /home/amtoaer/HDDs/Videos/Bilibilis/:/home/amtoaer/HDDs/Videos/Bilibilis/
+    # 如果你使用的是群晖系统,请移除最后的 logging 配置,否则会导致日志不显示
+    logging:
+      driver: "local"

使用该 compose 文件,执行 docker compose up -d 即可运行。

进行必要配置

运行程序,应该可以在日志中看到:

Jul 12 16:11:10  INFO 欢迎使用 Bili-Sync,当前程序版本:xxxxx
+Jul 12 16:11:10  INFO 项目地址:https://github.com/amtoaer/bili-sync
+Jul 12 16:11:10  INFO 数据库初始化完成
+Jul 12 17:17:50  WARN 生成 auth_token:xxxxxxxx,可使用该 token 登录 web UI,该信息仅在首次运行时打印
+Jul 12 16:11:10  INFO 配置初始化完成
+Jul 12 16:11:10  INFO 开始运行管理页: http://0.0.0.0:12345

中间应该会穿插一条 CONFIG 的报错,这是因为配置文件内容缺失导致视频下载任务未能运行,在初次启动时是正常现象。

自 2.6.0 版本开始,程序仅会创建一个数据库文件,配置同样在数据库表中进行维护。

数据库文件存储于 ${config_dir}/bili-sync/data.sqlite

CAUTION

请注意,config_dir 的实际位置与操作系统和用户名有关。

对于名为 Alice 的用户,config_dir 指向的位置是:

  • Lin: /home/Alice/.config
  • Win: C:\Users\Alice\AppData\Roaming
  • Mac: /Users/Alice/Library/Application Support

特别的,在 Docker 环境中,config_dir 会被展开为 /app/.config

接着打开 WebUI,切换到设置页,输入日志中打印的 auth_token,点击认证。

设置页

认证后会看到一系列的配置,除绑定地址外的选项基本都会实时生效。为避免意料外的情况,建议将配置文件一次修改完毕后再点击保存。

如无特殊需求,一般仅需修改“B 站认证”与“视频质量”两个标签下的配置。

其中“B 站认证”在一次填写后即可忽略,程序会在每日第一次运行视频下载任务时检查认证状态,并在有必要时自动刷新。

对于这些设置项的含义,请参考配置说明,可善用右侧导航在不同配置项间跳转。

添加视频源订阅

配置完毕后,我们便可以随时添加视频源订阅。

用户在正确填写“B 站认证”后可以在“快捷订阅”部分查看自己创建的收藏夹、关注的合集与 UP 主一键订阅,也可以在“视频源”页手动添加并管理。

对于手动添加的视频源,可参考如下页面获取所需的参数:

添加完订阅就无需进行任何干预了,视频下载任务会在后台每隔特定时间(由配置中的“同步间隔”决定)自动运行一次,刷新并下载启用的视频源!

+ + + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..59a3b61 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://bili-sync.github.io/args2026-03-26T12:39:41.000Zhttps://bili-sync.github.io/collection2026-03-26T12:39:41.000Zhttps://bili-sync.github.io/configuration2026-03-26T12:39:41.000Zhttps://bili-sync.github.io/design2026-03-26T12:39:41.000Zhttps://bili-sync.github.io/favorite2026-03-26T12:39:41.000Zhttps://bili-sync.github.io/frontend2026-03-26T12:39:41.000Zhttps://bili-sync.github.io/2026-03-26T12:39:41.000Zhttps://bili-sync.github.io/introduction2026-03-26T12:39:41.000Zhttps://bili-sync.github.io/question2026-03-26T12:39:41.000Zhttps://bili-sync.github.io/quick-start2026-03-26T12:39:41.000Zhttps://bili-sync.github.io/submission2026-03-26T12:39:41.000Z \ No newline at end of file diff --git a/submission.html b/submission.html new file mode 100644 index 0000000..5ae5644 --- /dev/null +++ b/submission.html @@ -0,0 +1,26 @@ + + + + + + 获取用户投稿信息 | bili-sync + + + + + + + + + + + + + + + +
Skip to content

获取用户投稿信息

UP 主 的 ID 获取也很简单,在网页端打开想要获取投稿的 UP 主首页,直接查看网址栏中的数字或页面中的个人信息即可。

image

+ + + + \ No newline at end of file