From 63e7f8879f5b2d6c418c98a1a1d7da123321f6ca Mon Sep 17 00:00:00 2001 From: a76yyyy Date: Sat, 5 Aug 2023 18:21:22 +0000 Subject: [PATCH] deploy: f1d76cbe6a7875ef766c85158b24d42ccb8cf5d4 --- 404.html | 8 ++++---- assets/{app.9675e6c5.js => app.84bbc52d.js} | 2 +- assets/chunks/VPLocalSearchBox.5bf8ff7b.js | 7 +++++++ assets/chunks/VPLocalSearchBox.9aeaf8b0.js | 7 ------- ...amework.40f7bea3.js => framework.e7f80142.js} | 4 ++-- .../{theme.6277ec04.js => theme.3655666c.js} | 4 ++-- ...a9d750.js => guide_deployment.md.df1605f6.js} | 2 +- ...n.js => guide_deployment.md.df1605f6.lean.js} | 2 +- ...q.md.9fe43b65.js => guide_faq.md.996dff45.js} | 2 +- ...b65.lean.js => guide_faq.md.996dff45.lean.js} | 2 +- ...635a4e.js => guide_how-to-use.md.4ee6e35b.js} | 2 +- ...n.js => guide_how-to-use.md.4ee6e35b.lean.js} | 2 +- ...d.8c16e2ac.js => guide_update.md.b3da2bcd.js} | 2 +- ....lean.js => guide_update.md.b3da2bcd.lean.js} | 2 +- ...c3a9c1.js => guide_what-is-qd.md.914769b2.js} | 2 +- ...n.js => guide_what-is-qd.md.914769b2.lean.js} | 2 +- ...index.md.db5d86dc.js => index.md.4f08d380.js} | 2 +- ...b5d86dc.lean.js => index.md.4f08d380.lean.js} | 2 +- assets/style.1195983e.css | 1 - assets/style.f9c70755.css | 1 + ...30f3255f.js => toolbox_pusher.md.ffb35ca2.js} | 2 +- ...ean.js => toolbox_pusher.md.ffb35ca2.lean.js} | 2 +- ....js => zh_CN_guide_deployment.md.0122de01.js} | 2 +- ...> zh_CN_guide_deployment.md.0122de01.lean.js} | 2 +- ...c83682e.js => zh_CN_guide_faq.md.e6eac49a.js} | 2 +- ...an.js => zh_CN_guide_faq.md.e6eac49a.lean.js} | 2 +- ....js => zh_CN_guide_how-to-use.md.7d8d7f5f.js} | 2 +- ...> zh_CN_guide_how-to-use.md.7d8d7f5f.lean.js} | 2 +- ...5c41.js => zh_CN_guide_update.md.859c4a2e.js} | 2 +- ...js => zh_CN_guide_update.md.859c4a2e.lean.js} | 2 +- ....js => zh_CN_guide_what-is-qd.md.0c57a771.js} | 2 +- ...> zh_CN_guide_what-is-qd.md.0c57a771.lean.js} | 2 +- ...md.493bd460.js => zh_CN_index.md.58b391dd.js} | 2 +- ...0.lean.js => zh_CN_index.md.58b391dd.lean.js} | 2 +- ...98.js => zh_CN_toolbox_pusher.md.3577463c.js} | 2 +- ... => zh_CN_toolbox_pusher.md.3577463c.lean.js} | 2 +- guide/deployment.html | 16 ++++++++-------- guide/faq.html | 16 ++++++++-------- guide/how-to-use.html | 14 +++++++------- guide/update.html | 16 ++++++++-------- guide/what-is-qd.html | 14 +++++++------- hashmap.json | 2 +- index.html | 14 +++++++------- toolbox/pusher.html | 16 ++++++++-------- zh_CN/guide/deployment.html | 16 ++++++++-------- zh_CN/guide/faq.html | 16 ++++++++-------- zh_CN/guide/how-to-use.html | 14 +++++++------- zh_CN/guide/update.html | 16 ++++++++-------- zh_CN/guide/what-is-qd.html | 14 +++++++------- zh_CN/index.html | 14 +++++++------- zh_CN/toolbox/pusher.html | 16 ++++++++-------- 51 files changed, 152 insertions(+), 152 deletions(-) rename assets/{app.9675e6c5.js => app.84bbc52d.js} (90%) create mode 100644 assets/chunks/VPLocalSearchBox.5bf8ff7b.js delete mode 100644 assets/chunks/VPLocalSearchBox.9aeaf8b0.js rename assets/chunks/{framework.40f7bea3.js => framework.e7f80142.js} (57%) rename assets/chunks/{theme.6277ec04.js => theme.3655666c.js} (61%) rename assets/{guide_deployment.md.8ea9d750.js => guide_deployment.md.df1605f6.js} (99%) rename assets/{guide_deployment.md.8ea9d750.lean.js => guide_deployment.md.df1605f6.lean.js} (67%) rename assets/{guide_faq.md.9fe43b65.js => guide_faq.md.996dff45.js} (99%) rename assets/{guide_faq.md.9fe43b65.lean.js => guide_faq.md.996dff45.lean.js} (65%) rename assets/{guide_how-to-use.md.e0635a4e.js => guide_how-to-use.md.4ee6e35b.js} (99%) rename assets/{guide_how-to-use.md.e0635a4e.lean.js => guide_how-to-use.md.4ee6e35b.lean.js} (85%) rename assets/{guide_update.md.8c16e2ac.js => guide_update.md.b3da2bcd.js} (97%) rename assets/{guide_update.md.8c16e2ac.lean.js => guide_update.md.b3da2bcd.lean.js} (66%) rename assets/{guide_what-is-qd.md.b0c3a9c1.js => guide_what-is-qd.md.914769b2.js} (94%) rename assets/{guide_what-is-qd.md.b0c3a9c1.lean.js => guide_what-is-qd.md.914769b2.lean.js} (68%) rename assets/{index.md.db5d86dc.js => index.md.4f08d380.js} (94%) rename assets/{index.md.db5d86dc.lean.js => index.md.4f08d380.lean.js} (94%) delete mode 100644 assets/style.1195983e.css create mode 100644 assets/style.f9c70755.css rename assets/{toolbox_pusher.md.30f3255f.js => toolbox_pusher.md.ffb35ca2.js} (99%) rename assets/{toolbox_pusher.md.30f3255f.lean.js => toolbox_pusher.md.ffb35ca2.lean.js} (67%) rename assets/{zh_CN_guide_deployment.md.673da61a.js => zh_CN_guide_deployment.md.0122de01.js} (99%) rename assets/{zh_CN_guide_deployment.md.673da61a.lean.js => zh_CN_guide_deployment.md.0122de01.lean.js} (69%) rename assets/{zh_CN_guide_faq.md.6c83682e.js => zh_CN_guide_faq.md.e6eac49a.js} (99%) rename assets/{zh_CN_guide_faq.md.6c83682e.lean.js => zh_CN_guide_faq.md.e6eac49a.lean.js} (67%) rename assets/{zh_CN_guide_how-to-use.md.ceb0eba0.js => zh_CN_guide_how-to-use.md.7d8d7f5f.js} (99%) rename assets/{zh_CN_guide_how-to-use.md.ceb0eba0.lean.js => zh_CN_guide_how-to-use.md.7d8d7f5f.lean.js} (86%) rename assets/{zh_CN_guide_update.md.a4e05c41.js => zh_CN_guide_update.md.859c4a2e.js} (97%) rename assets/{zh_CN_guide_update.md.a4e05c41.lean.js => zh_CN_guide_update.md.859c4a2e.lean.js} (68%) rename assets/{zh_CN_guide_what-is-qd.md.46858807.js => zh_CN_guide_what-is-qd.md.0c57a771.js} (94%) rename assets/{zh_CN_guide_what-is-qd.md.46858807.lean.js => zh_CN_guide_what-is-qd.md.0c57a771.lean.js} (69%) rename assets/{zh_CN_index.md.493bd460.js => zh_CN_index.md.58b391dd.js} (94%) rename assets/{zh_CN_index.md.493bd460.lean.js => zh_CN_index.md.58b391dd.lean.js} (94%) rename assets/{zh_CN_toolbox_pusher.md.e845cf98.js => zh_CN_toolbox_pusher.md.3577463c.js} (99%) rename assets/{zh_CN_toolbox_pusher.md.e845cf98.lean.js => zh_CN_toolbox_pusher.md.3577463c.lean.js} (69%) diff --git a/404.html b/404.html index 095dbfcfa27..25e47d5ae96 100644 --- a/404.html +++ b/404.html @@ -5,15 +5,15 @@ 404 | QD - - + + -
Skip to content

404

PAGE NOT FOUND

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

Released under the MIT License.

- diff --git a/assets/app.9675e6c5.js b/assets/app.84bbc52d.js similarity index 90% rename from assets/app.9675e6c5.js rename to assets/app.84bbc52d.js index c52059001dd..5148a5744d9 100644 --- a/assets/app.9675e6c5.js +++ b/assets/app.84bbc52d.js @@ -1 +1 @@ -import{Q as s,a5 as p,a6 as i,a7 as u,a8 as c,a9 as l,aa as d,ab as f,ac as m,ad as h,ae as A,M as g,d as P,u as v,p as y,k as C,af as w,ag as _,ah as b,ai as E}from"./chunks/framework.40f7bea3.js";import{t as R}from"./chunks/theme.6277ec04.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(R),D=P({name:"VitePressApp",setup(){const{site:e}=v();return y(()=>{C(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),w(),_(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function O(){const e=T(),a=S();a.provide(i,e);const t=u(e.route);return a.provide(c,t),a.component("Content",l),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:f}),{app:a,router:e,data:t}}function S(){return m(D)}function T(){let e=s,a;return h(t=>{let o=A(t);return e&&(a=o),(e||a===o)&&(o=o.replace(/\.js$/,".lean.js")),s&&(e=!1),g(()=>import(o),[])},n.NotFound)}s&&O().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{O as createApp}; +import{Q as s,a5 as p,a6 as i,a7 as u,a8 as c,a9 as l,aa as d,ab as f,ac as m,ad as h,ae as A,M as g,d as P,u as v,p as y,k as C,af as w,ag as _,ah as b,ai as E}from"./chunks/framework.e7f80142.js";import{t as R}from"./chunks/theme.3655666c.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(R),D=P({name:"VitePressApp",setup(){const{site:e}=v();return y(()=>{C(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),w(),_(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function O(){const e=T(),a=S();a.provide(i,e);const t=u(e.route);return a.provide(c,t),a.component("Content",l),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:f}),{app:a,router:e,data:t}}function S(){return m(D)}function T(){let e=s,a;return h(t=>{let o=A(t);return e&&(a=o),(e||a===o)&&(o=o.replace(/\.js$/,".lean.js")),s&&(e=!1),g(()=>import(o),[])},n.NotFound)}s&&O().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{O as createApp}; diff --git a/assets/chunks/VPLocalSearchBox.5bf8ff7b.js b/assets/chunks/VPLocalSearchBox.5bf8ff7b.js new file mode 100644 index 00000000000..10ec339ce81 --- /dev/null +++ b/assets/chunks/VPLocalSearchBox.5bf8ff7b.js @@ -0,0 +1,7 @@ +import{M as Le,j as X,w as ze,d as Tt,s as le,l as qe,k as kt,p as ke,v as ge,aj as It,ak as _t,o as Q,D as Dt,C as N,b as V,al as Ot,am as Rt,q as Mt,c as Y,n as Qe,G as be,R as Ye,F as Ze,a as ce,t as fe,an as Pt,S as Lt,U as zt,ao as Xe,ap as Bt,a8 as Vt,ae as $t,_ as jt}from"./framework.e7f80142.js";import{u as Wt,a as Kt,b as Jt,c as et,d as Ut,e as Gt,w as Ht,o as we,f as qt,g as Qt,h as Yt}from"./theme.3655666c.js";const Zt={root:()=>Le(()=>import("./@localSearchIndexroot.9983f5cb.js"),[]),zh_CN:()=>Le(()=>import("./@localSearchIndexzh_CN.ec5880c6.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var dt=["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])"],Ee=dt.join(","),ht=typeof Element>"u",te=ht?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Se=!ht&&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},Ae=function o(e,t){var r;t===void 0&&(t=!0);var a=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),n=a===""||a==="true",i=n||t&&e&&o(e.parentNode);return i},Xt=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},vt=function(e,t,r){if(Ae(e))return[];var a=Array.prototype.slice.apply(e.querySelectorAll(Ee));return t&&te.call(e,Ee)&&a.unshift(e),a=a.filter(r),a},pt=function o(e,t,r){for(var a=[],n=Array.from(e);n.length;){var i=n.shift();if(!Ae(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?a.push.apply(a,l):a.push({scopeParent:i,candidates:l})}else{var d=te.call(i,Ee);d&&r.filter(i)&&(t||!e.includes(i))&&a.push(i);var h=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ae(h,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(h&&v){var p=o(h===!0?i.children:h.children,!0,r);r.flatten?a.push.apply(a,p):a.push({scopeParent:i,candidates:p})}else n.unshift.apply(n,i.children)}}return a},yt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ee=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||Xt(e))&&!yt(e)?0:e.tabIndex},er=function(e,t){var r=ee(e);return r<0&&t&&!yt(e)?0:r},tr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},mt=function(e){return e.tagName==="INPUT"},rr=function(e){return mt(e)&&e.type==="hidden"},nr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},ar=function(e,t){for(var r=0;rsummary:first-of-type"),i=n?e.parentElement:e;if(te.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof a=="function"){for(var s=e;e;){var u=e.parentElement,l=Se(e);if(u&&!u.shadowRoot&&a(u)===!0)return tt(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(ur(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return tt(e);return!1},cr=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)},dr=function o(e){var t=[],r=[];return e.forEach(function(a,n){var i=!!a.scopeParent,s=i?a.scopeParent:a,u=er(s,i),l=i?o(a.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:n,tabIndex:u,item:a,isScope:i,content:l})}),r.sort(tr).reduce(function(a,n){return n.isScope?a.push.apply(a,n.content):a.push(n.content),a},[]).concat(t)},hr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=pt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:fr}):r=vt(e,t.includeContainer,Be.bind(null,t)),dr(r)},vr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=pt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=vt(e,t.includeContainer,Ce.bind(null,t)),r},ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return te.call(e,Ee)===!1?!1:Be(t,e)},pr=dt.concat("iframe").join(","),Ie=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return te.call(e,pr)===!1?!1:Ce(t,e)};/*! +* focus-trap 7.5.2 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function rt(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(o,a).enumerable})),t.push.apply(t,r)}return t}function nt(o){for(var e=1;e0){var r=e[e.length-1];r!==t&&r.pause()}var a=e.indexOf(t);a===-1||e.splice(a,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()}},br=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},wr=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ve=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},xr=function(e){return ve(e)&&!e.shiftKey},Fr=function(e){return ve(e)&&e.shiftKey},it=function(e){return setTimeout(e,0)},ot=function(e,t){var r=-1;return e.every(function(a,n){return t(a)?(r=n,!1):!0}),r},de=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),a=1;a1?y-1:0),_=1;_=0)f=r.activeElement;else{var c=i.tabbableGroups[0],y=c&&c.firstTabbableNode;f=y||d("fallbackFocus")}if(!f)throw new Error("Your focus-trap needs to have at least one focusable element");return f},v=function(){if(i.containerGroups=i.containers.map(function(f){var c=hr(f,n.tabbableOptions),y=vr(f,n.tabbableOptions),x=c.length>0?c[0]:void 0,_=c.length>0?c[c.length-1]:void 0,m=y.find(function(P){return ae(P)}),g=y.slice().reverse().find(function(P){return ae(P)}),S=!!c.find(function(P){return ee(P)>0});return{container:f,tabbableNodes:c,focusableNodes:y,posTabIndexesFound:S,firstTabbableNode:x,lastTabbableNode:_,firstDomTabbableNode:m,lastDomTabbableNode:g,nextTabbableNode:function(j){var W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,U=c.indexOf(j);return U<0?W?y.slice(y.indexOf(j)+1).find(function(G){return ae(G)}):y.slice(0,y.indexOf(j)).reverse().find(function(G){return ae(G)}):c[U+(W?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(f){return f.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!d("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(f){return f.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.")},p=function E(f){if(f!==!1&&f!==r.activeElement){if(!f||!f.focus){E(h());return}f.focus({preventScroll:!!n.preventScroll}),i.mostRecentlyFocusedNode=f,br(f)&&f.select()}},b=function(f){var c=d("setReturnFocus",f);return c||(c===!1?!1:f)},w=function(f){var c=f.target,y=f.event,x=f.isBackward,_=x===void 0?!1:x;c=c||xe(y),v();var m=null;if(i.tabbableGroups.length>0){var g=l(c,y),S=g>=0?i.containerGroups[g]:void 0;if(g<0)_?m=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:m=i.tabbableGroups[0].firstTabbableNode;else if(_){var P=ot(i.tabbableGroups,function(ue){var re=ue.firstTabbableNode;return c===re});if(P<0&&(S.container===c||Ie(c,n.tabbableOptions)&&!ae(c,n.tabbableOptions)&&!S.nextTabbableNode(c,!1))&&(P=g),P>=0){var j=P===0?i.tabbableGroups.length-1:P-1,W=i.tabbableGroups[j];m=ee(c)>=0?W.lastTabbableNode:W.lastDomTabbableNode}else ve(y)||(m=S.nextTabbableNode(c,!1))}else{var U=ot(i.tabbableGroups,function(ue){var re=ue.lastTabbableNode;return c===re});if(U<0&&(S.container===c||Ie(c,n.tabbableOptions)&&!ae(c,n.tabbableOptions)&&!S.nextTabbableNode(c))&&(U=g),U>=0){var G=U===i.tabbableGroups.length-1?0:U+1,se=i.tabbableGroups[G];m=ee(c)>=0?se.firstTabbableNode:se.firstDomTabbableNode}else ve(y)||(m=S.nextTabbableNode(c))}}else m=d("fallbackFocus");return m},F=function(f){var c=xe(f);if(!(l(c,f)>=0)){if(de(n.clickOutsideDeactivates,f)){s.deactivate({returnFocus:n.returnFocusOnDeactivate});return}de(n.allowOutsideClick,f)||f.preventDefault()}},T=function(f){var c=xe(f),y=l(c,f)>=0;if(y||c instanceof Document)y&&(i.mostRecentlyFocusedNode=c);else{f.stopImmediatePropagation();var x,_=!0;if(i.mostRecentlyFocusedNode)if(ee(i.mostRecentlyFocusedNode)>0){var m=l(i.mostRecentlyFocusedNode),g=i.containerGroups[m].tabbableNodes;if(g.length>0){var S=g.findIndex(function(P){return P===i.mostRecentlyFocusedNode});S>=0&&(n.isKeyForward(i.recentNavEvent)?S+1=0&&(x=g[S-1],_=!1))}}else i.containerGroups.some(function(P){return P.tabbableNodes.some(function(j){return ee(j)>0})})||(_=!1);else _=!1;_&&(x=w({target:i.mostRecentlyFocusedNode,isBackward:n.isKeyBackward(i.recentNavEvent)})),p(x||i.mostRecentlyFocusedNode||h())}i.recentNavEvent=void 0},k=function(f){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=f;var y=w({event:f,isBackward:c});y&&(ve(f)&&f.preventDefault(),p(y))},A=function(f){if(wr(f)&&de(n.escapeDeactivates,f)!==!1){f.preventDefault(),s.deactivate();return}(n.isKeyForward(f)||n.isKeyBackward(f))&&k(f,n.isKeyBackward(f))},R=function(f){var c=xe(f);l(c,f)>=0||de(n.clickOutsideDeactivates,f)||de(n.allowOutsideClick,f)||(f.preventDefault(),f.stopImmediatePropagation())},M=function(){if(i.active)return at.activateTrap(a,s),i.delayInitialFocusTimer=n.delayInitialFocus?it(function(){p(h())}):p(h()),r.addEventListener("focusin",T,!0),r.addEventListener("mousedown",F,{capture:!0,passive:!1}),r.addEventListener("touchstart",F,{capture:!0,passive:!1}),r.addEventListener("click",R,{capture:!0,passive:!1}),r.addEventListener("keydown",A,{capture:!0,passive:!1}),s},L=function(){if(i.active)return r.removeEventListener("focusin",T,!0),r.removeEventListener("mousedown",F,!0),r.removeEventListener("touchstart",F,!0),r.removeEventListener("click",R,!0),r.removeEventListener("keydown",A,!0),s},C=function(f){var c=f.some(function(y){var x=Array.from(y.removedNodes);return x.some(function(_){return _===i.mostRecentlyFocusedNode})});c&&p(h())},I=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(C):void 0,O=function(){I&&(I.disconnect(),i.active&&!i.paused&&i.containers.map(function(f){I.observe(f,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(f){if(i.active)return this;var c=u(f,"onActivate"),y=u(f,"onPostActivate"),x=u(f,"checkCanFocusTrap");x||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,c==null||c();var _=function(){x&&v(),M(),O(),y==null||y()};return x?(x(i.containers.concat()).then(_,_),this):(_(),this)},deactivate:function(f){if(!i.active)return this;var c=nt({onDeactivate:n.onDeactivate,onPostDeactivate:n.onPostDeactivate,checkCanReturnFocus:n.checkCanReturnFocus},f);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,L(),i.active=!1,i.paused=!1,O(),at.deactivateTrap(a,s);var y=u(c,"onDeactivate"),x=u(c,"onPostDeactivate"),_=u(c,"checkCanReturnFocus"),m=u(c,"returnFocus","returnFocusOnDeactivate");y==null||y();var g=function(){it(function(){m&&p(b(i.nodeFocusedBeforeActivation)),x==null||x()})};return m&&_?(_(b(i.nodeFocusedBeforeActivation)).then(g,g),this):(g(),this)},pause:function(f){if(i.paused||!i.active)return this;var c=u(f,"onPause"),y=u(f,"onPostPause");return i.paused=!0,c==null||c(),L(),O(),y==null||y(),this},unpause:function(f){if(!i.paused||!i.active)return this;var c=u(f,"onUnpause"),y=u(f,"onPostUnpause");return i.paused=!1,c==null||c(),v(),M(),O(),y==null||y(),this},updateContainerElements:function(f){var c=[].concat(f).filter(Boolean);return i.containers=c.map(function(y){return typeof y=="string"?r.querySelector(y):y}),i.active&&v(),O(),this}},s.updateContainerElements(e),s},Ar=Object.defineProperty,Cr=Object.defineProperties,Nr=Object.getOwnPropertyDescriptors,Ne=Object.getOwnPropertySymbols,gt=Object.prototype.hasOwnProperty,bt=Object.prototype.propertyIsEnumerable,st=(o,e,t)=>e in o?Ar(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Tr=(o,e)=>{for(var t in e||(e={}))gt.call(e,t)&&st(o,t,e[t]);if(Ne)for(var t of Ne(e))bt.call(e,t)&&st(o,t,e[t]);return o},kr=(o,e)=>Cr(o,Nr(e)),Ir=(o,e)=>{var t={};for(var r in o)gt.call(o,r)&&e.indexOf(r)<0&&(t[r]=o[r]);if(o!=null&&Ne)for(var r of Ne(o))e.indexOf(r)<0&&bt.call(o,r)&&(t[r]=o[r]);return t};function _r(o,e={}){let t;const r=e,{immediate:a}=r,n=Ir(r,["immediate"]),i=X(!1),s=X(!1),u=v=>t&&t.activate(v),l=v=>t&&t.deactivate(v),d=()=>{t&&(t.pause(),s.value=!0)},h=()=>{t&&(t.unpause(),s.value=!1)};return ze(()=>Wt(o),v=>{v&&(t=Sr(v,kr(Tr({},n),{onActivate(){i.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){i.value=!1,e.onDeactivate&&e.onDeactivate()}})),a&&u())},{flush:"post"}),Kt(()=>l()),{hasFocus:i,isPaused:s,activate:u,deactivate:l,pause:d,unpause:h}}class oe{constructor(e,t=!0,r=[],a=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=a}static matches(e,t){const r=typeof t=="string"?[t]:t,a=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(a){let n=!1;return r.every(i=>a.call(e,i)?(n=!0,!1):!0),n}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 a=t.filter(n=>n.contains(r)).length>0;t.indexOf(r)===-1&&!a&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let a;try{const n=e.contentWindow;if(a=n.document,!n||!a)throw new Error("iframe inaccessible")}catch{r()}a&&t(a)}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 a=!1,n=null;const i=()=>{if(!a){a=!0,clearTimeout(n);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),n=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,a=>{r++,this.waitForIframes(a.querySelector("html"),()=>{--r||t()})},a=>{a||t()})}forEachIframe(e,t,r,a=()=>{}){let n=e.querySelectorAll("iframe"),i=n.length,s=0;n=Array.prototype.slice.call(n);const u=()=>{--i<=0&&a(s)};i||u(),n.forEach(l=>{oe.matches(l,this.exclude)?u():this.onIframeReady(l,d=>{t(l)&&(s++,r(d)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new oe(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const a=e.compareDocumentPosition(r),n=Node.DOCUMENT_POSITION_PRECEDING;if(a&n)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,a){let n=!1,i=!1;return a.forEach((s,u)=>{s.val===r&&(n=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(n===!1&&!i?a.push({val:r,handled:!0}):n!==!1&&!i&&(a[n].handled=!0),!0):(n===!1&&a.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,a){e.forEach(n=>{n.handled||this.getIframeContents(n.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,a)})})}iterateThroughNodes(e,t,r,a,n){const i=this.createIterator(t,e,a);let s=[],u=[],l,d,h=()=>({prevNode:d,node:l}=this.getIteratorNode(i),l);for(;h();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,d,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,p=>u.push(p),a)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,a),n()}forEachNode(e,t,r,a=()=>{}){const n=this.getContexts();let i=n.length;i||a(),n.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&a()})};this.iframes?this.waitForIframes(s,u):u()})}}let Dr=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 oe(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",a=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let n in t)if(t.hasOwnProperty(n)){const i=t[n],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(n):this.escapeStr(n),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}`),a+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+a))}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,a)=>{let n=a.charAt(r+1);return/[(|)\\]/.test(n)||n===""?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 a=[];return e.split("").forEach(n=>{r.every(i=>{if(i.indexOf(n)!==-1){if(a.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),a.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let r=this.opt.accuracy,a=typeof r=="string"?r:r.value,n=typeof r=="string"?[]:r.limiters,i="";switch(n.forEach(s=>{i+=`|${this.escapeStr(s)}`}),a){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(a=>{a.trim()&&t.indexOf(a)===-1&&t.push(a)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,a)=>a.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((a,n)=>a.start-n.start).forEach(a=>{let{start:n,end:i,valid:s}=this.callNoMatchOnInvalidRanges(a,r);s&&(a.start=n,a.length=i-n,t.push(a),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,a,n=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),a=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&a-t>0&&a-r>0?n=!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:a,valid:n}}checkWhitespaceRanges(e,t,r){let a,n=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,a=u+parseInt(e.length,10),a>i&&(a=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||a-u<0||u>i||a>i?(n=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,a).replace(/\s+/g,"")===""&&(n=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:a,valid:n}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,a=>{r.push({start:t.length,end:(t+=a.textContent).length,node:a})},a=>this.matchesExclude(a.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return oe.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const a=this.opt.element?this.opt.element:"mark",n=e.splitText(t),i=n.splitText(r-t);let s=document.createElement(a);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=n.textContent,n.parentNode.replaceChild(s,n),i}wrapRangeInMappedTextNode(e,t,r,a,n){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!a(i.node))return!1;const l=t-i.start,d=(r>i.end?i.end:r)-i.start,h=e.value.substr(0,i.start),v=e.value.substr(d+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,d),e.value=h+v,e.nodes.forEach((p,b)=>{b>=s&&(e.nodes[b].start>0&&b!==s&&(e.nodes[b].start-=d),e.nodes[b].end-=d)}),r-=d,n(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,a,n){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 d=l.index;if(i!==0)for(let h=1;h{let u;for(;(u=e.exec(s.value))!==null&&u[i]!=="";){let l=u.index;if(i!==0)for(let h=1;hr(u[i],h),(h,v)=>{e.lastIndex=v,a(h)})}n()})}wrapRangeFromIndex(e,t,r,a){this.getTextNodes(n=>{const i=n.value.length;e.forEach((s,u)=>{let{start:l,end:d,valid:h}=this.checkWhitespaceRanges(s,i,n.value);h&&this.wrapRangeInMappedTextNode(n,l,d,v=>t(v,s,n.value.substring(l,d),u),v=>{r(v,s)})}),a()})}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,a="wrapMatches";const n=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),this[a](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),n,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,a="wrapMatches";const{keywords:n,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let d=new RegExp(this.createRegExp(l),`gm${s}`),h=0;this.log(`Searching with expression "${d}"`),this[a](d,1,(v,p)=>this.opt.filter(p,l,r,h),v=>{h++,r++,this.opt.each(v)},()=>{h===0&&this.opt.noMatch(l),n[i-1]===l?this.opt.done(r):u(n[n.indexOf(l)+1])})};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(n[0])}markRanges(e,t){this.opt=t;let r=0,a=this.checkRanges(e);a&&a.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(a)),this.wrapRangeFromIndex(a,(n,i,s,u)=>this.opt.filter(n,i,s,u),(n,i)=>{r++,this.opt.each(n,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 a=oe.matches(r,t),n=this.matchesExclude(r);return!a||n?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Or(o){const e=new Dr(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 z=function(){return z=Object.assign||function(e){for(var t,r=1,a=arguments.length;r0&&n[n.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!n||l[1]>n[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 B(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),a,n=[],i;try{for(;(e===void 0||e-- >0)&&!(a=r.next()).done;)n.push(a.value)}catch(s){i={error:s}}finally{try{a&&!a.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return n}var Pr="ENTRIES",wt="KEYS",xt="VALUES",$="",_e=function(){function o(e,t){var r=e._tree,a=Array.from(r.keys());this.set=e,this._type=t,this._path=a.length>0?[{node:r,keys:a}]:[]}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=ie(this._path),t=e.node,r=e.keys;if(ie(r)===$)return{done:!1,value:this.result()};var a=t.get(ie(r));return this._path.push({node:a,keys:Array.from(a.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=ie(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 ie(t)}).filter(function(e){return e!==$}).join("")},o.prototype.value=function(){return ie(this._path).node.get($)},o.prototype.result=function(){switch(this._type){case xt:return this.value();case wt:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),ie=function(o){return o[o.length-1]},Lr=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var a=e.length+1,n=a+t,i=new Uint8Array(n*a).fill(t+1),s=0;st)continue e}Ft(o.get(p),e,t,r,a,w,i,s+p)}}}catch(y){u={error:y}}finally{try{v&&!v.done&&(l=h.return)&&l.call(h)}finally{if(u)throw u.error}}},De=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 a=B(Te(this._tree,e.slice(this._prefix.length)),2),n=a[0],i=a[1];if(n===void 0){var s=B(We(i),2),u=s[0],l=s[1];try{for(var d=D(u.keys()),h=d.next();!h.done;h=d.next()){var v=h.value;if(v!==$&&v.startsWith(l)){var p=new Map;return p.set(v.slice(l.length),u.get(v)),new o(p,e)}}}catch(b){t={error:b}}finally{try{h&&!h.done&&(r=d.return)&&r.call(d)}finally{if(t)throw t.error}}}return new o(n,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 _e(this,Pr)},o.prototype.forEach=function(e){var t,r;try{for(var a=D(this),n=a.next();!n.done;n=a.next()){var i=B(n.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return Lr(this._tree,e,t)},o.prototype.get=function(e){var t=Ve(this._tree,e);return t!==void 0?t.get($):void 0},o.prototype.has=function(e){var t=Ve(this._tree,e);return t!==void 0&&t.has($)},o.prototype.keys=function(){return new _e(this,wt)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Oe(this._tree,e);return r.set($,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=Oe(this._tree,e);return r.set($,t(r.get($))),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=Oe(this._tree,e),a=r.get($);return a===void 0&&r.set($,a=t()),a},o.prototype.values=function(){return new _e(this,xt)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,a=new o;try{for(var n=D(e),i=n.next();!i.done;i=n.next()){var s=B(i.value,2),u=s[0],l=s[1];a.set(u,l)}}catch(d){t={error:d}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return a},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),Te=function(o,e,t){var r,a;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var n=D(o.keys()),i=n.next();!i.done;i=n.next()){var s=i.value;if(s!==$&&e.startsWith(s))return t.push([o,s]),Te(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(a=n.return)&&a.call(n)}finally{if(r)throw r.error}}return t.push([o,e]),Te(void 0,"",t)},Ve=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var a=D(o.keys()),n=a.next();!n.done;n=a.next()){var i=n.value;if(i!==$&&e.startsWith(i))return Ve(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}},Oe=function(o,e){var t,r,a=e.length;e:for(var n=0;o&&n0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new De,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(a,n){t.removeFieldLength(r,n,t._documentCount,a)}),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,a=e.batchSize,n=e.batchWait;this.conditionalVacuum({batchSize:a,batchWait:n},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,a=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var n=D(e),i=n.next();!i.done;i=n.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=a}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,a=t.extractField,n=a(e,r);this.discard(n),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 a=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=je,r.performVacuuming(e,a)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return Rr(this,void 0,void 0,function(){var r,a,n,i,s,u,l,d,h,v,p,b,w,F,T,k,A,R,M,L,C,I,O,E,f;return Mr(this,function(c){switch(c.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];a=e.batchSize||$e.batchSize,n=e.batchWait||$e.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=B(u.value,2),d=l[0],h=l[1];try{for(v=(I=void 0,D(h)),p=v.next();!p.done;p=v.next()){b=B(p.value,2),w=b[0],F=b[1];try{for(T=(E=void 0,D(F)),k=T.next();!k.done;k=T.next())A=B(k.value,1),R=A[0],!this._documentIds.has(R)&&(F.size<=1?h.delete(w):F.delete(R))}catch(y){E={error:y}}finally{try{k&&!k.done&&(f=T.return)&&f.call(T)}finally{if(E)throw E.error}}}}catch(y){I={error:y}}finally{try{p&&!p.done&&(O=v.return)&&O.call(v)}finally{if(I)throw I.error}}return this._index.get(d).size===0&&this._index.delete(d),i%a!==0?[3,4]:[4,new Promise(function(y){return setTimeout(y,n)})];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 M=c.sent(),L={error:M},[3,9];case 8:try{u&&!u.done&&(C=s.return)&&C.call(s)}finally{if(L)throw L.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||Pe.minDirtCount,r=r||Pe.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,a;t===void 0&&(t={});var n=this.executeQuery(e,t),i=[];try{for(var s=D(n),u=s.next();!u.done;u=s.next()){var l=B(u.value,2),d=l[0],h=l[1],v=h.score,p=h.terms,b=h.match,w=p.length,F={id:this._documentIds.get(d),score:v*w,terms:Object.keys(b),match:b};Object.assign(F,this._storedFields.get(d)),(t.filter==null||t.filter(F))&&i.push(F)}}catch(T){r={error:T}}finally{try{u&&!u.done&&(a=s.return)&&a.call(s)}finally{if(r)throw r.error}}return i.sort(ct),i},o.prototype.autoSuggest=function(e,t){var r,a,n,i;t===void 0&&(t={}),t=z(z({},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 d=l.value,h=d.score,v=d.terms,p=v.join(" "),b=s.get(p);b!=null?(b.score+=h,b.count+=1):s.set(p,{score:h,terms:v,count:1})}}catch(M){r={error:M}}finally{try{l&&!l.done&&(a=u.return)&&a.call(u)}finally{if(r)throw r.error}}var w=[];try{for(var F=D(s),T=F.next();!T.done;T=F.next()){var k=B(T.value,2),b=k[0],A=k[1],h=A.score,v=A.terms,R=A.count;w.push({suggestion:b,terms:v,score:h/R})}}catch(M){n={error:M}}finally{try{T&&!T.done&&(i=F.return)&&i.call(F)}finally{if(n)throw n.error}}return w.sort(ct),w},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(Me.hasOwnProperty(e))return Re(Me,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,a,n,i,s,u,l=e.index,d=e.documentCount,h=e.nextId,v=e.documentIds,p=e.fieldIds,b=e.fieldLength,w=e.averageFieldLength,F=e.storedFields,T=e.dirtCount,k=e.serializationVersion;if(k!==1&&k!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var A=new o(t);A._documentCount=d,A._nextId=h,A._documentIds=Fe(v),A._idToShortId=new Map,A._fieldIds=p,A._fieldLength=Fe(b),A._avgFieldLength=w,A._storedFields=Fe(F),A._dirtCount=T||0,A._index=new De;try{for(var R=D(A._documentIds),M=R.next();!M.done;M=R.next()){var L=B(M.value,2),C=L[0],I=L[1];A._idToShortId.set(I,C)}}catch(P){r={error:P}}finally{try{M&&!M.done&&(a=R.return)&&a.call(R)}finally{if(r)throw r.error}}try{for(var O=D(l),E=O.next();!E.done;E=O.next()){var f=B(E.value,2),c=f[0],y=f[1],x=new Map;try{for(var _=(s=void 0,D(Object.keys(y))),m=_.next();!m.done;m=_.next()){var g=m.value,S=y[g];k===1&&(S=S.ds),x.set(parseInt(g,10),Fe(S))}}catch(P){s={error:P}}finally{try{m&&!m.done&&(u=_.return)&&u.call(_)}finally{if(s)throw s.error}}A._index.set(c,x)}}catch(P){n={error:P}}finally{try{E&&!E.done&&(i=O.return)&&i.call(O)}finally{if(n)throw n.error}}return A},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),typeof e!="string"){var a=z(z(z({},t),e),{queries:void 0}),n=e.queries.map(function(F){return r.executeQuery(F,a)});return this.combineResults(n,a.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,d=z(z({tokenize:s,processTerm:u},l),t),h=d.tokenize,v=d.processTerm,p=h(e).flatMap(function(F){return v(F)}).filter(function(F){return!!F}),b=p.map(Kr(d)),w=b.map(function(F){return r.executeQuerySpec(F,d)});return this.combineResults(w,d.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,a,n,i,s=z(z({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(g,S){var P;return z(z({},g),(P={},P[S]=Re(s.boost,S)||1,P))},{}),l=s.boostDocument,d=s.weights,h=s.maxFuzzy,v=s.bm25,p=z(z({},ut.weights),d),b=p.fuzzy,w=p.prefix,F=this._index.get(e.term),T=this.termResults(e.term,e.term,1,F,u,l,v),k,A;if(e.prefix&&(k=this._index.atPrefix(e.term)),e.fuzzy){var R=e.fuzzy===!0?.2:e.fuzzy,M=R<1?Math.min(h,Math.round(e.term.length*R)):R;M&&(A=this._index.fuzzyGet(e.term,M))}if(k)try{for(var L=D(k),C=L.next();!C.done;C=L.next()){var I=B(C.value,2),O=I[0],E=I[1],f=O.length-e.term.length;if(f){A==null||A.delete(O);var c=w*O.length/(O.length+.3*f);this.termResults(e.term,O,c,E,u,l,v,T)}}}catch(g){r={error:g}}finally{try{C&&!C.done&&(a=L.return)&&a.call(L)}finally{if(r)throw r.error}}if(A)try{for(var y=D(A.keys()),x=y.next();!x.done;x=y.next()){var O=x.value,_=B(A.get(O),2),m=_[0],f=_[1];if(f){var c=b*O.length/(O.length+f);this.termResults(e.term,O,c,m,u,l,v,T)}}}catch(g){n={error:g}}finally{try{x&&!x.done&&(i=y.return)&&i.call(y)}finally{if(n)throw n.error}}return T},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=Ke),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,a,n=[];try{for(var i=D(this._index),s=i.next();!s.done;s=i.next()){var u=B(s.value,2),l=u[0],d=u[1],h={};try{for(var v=(r=void 0,D(d)),p=v.next();!p.done;p=v.next()){var b=B(p.value,2),w=b[0],F=b[1];h[w]=Object.fromEntries(F)}}catch(T){r={error:T}}finally{try{p&&!p.done&&(a=v.return)&&a.call(v)}finally{if(r)throw r.error}}n.push([l,h])}}catch(T){e={error:T}}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:n,serializationVersion:2}},o.prototype.termResults=function(e,t,r,a,n,i,s,u){var l,d,h,v,p;if(u===void 0&&(u=new Map),a==null)return u;try{for(var b=D(Object.keys(n)),w=b.next();!w.done;w=b.next()){var F=w.value,T=n[F],k=this._fieldIds[F],A=a.get(k);if(A!=null){var R=A.size,M=this._avgFieldLength[k];try{for(var L=(h=void 0,D(A.keys())),C=L.next();!C.done;C=L.next()){var I=C.value;if(!this._documentIds.has(I)){this.removeTerm(k,I,t),R-=1;continue}var O=i?i(this._documentIds.get(I),t,this._storedFields.get(I)):1;if(O){var E=A.get(I),f=this._fieldLength.get(I)[k],c=Wr(E,R,this._documentCount,f,M,s),y=r*T*O*c,x=u.get(I);if(x){x.score+=y,Ur(x.terms,e);var _=Re(x.match,t);_?_.push(F):x.match[t]=[F]}else u.set(I,{score:y,terms:[e],match:(p={},p[t]=[F],p)})}}}catch(m){h={error:m}}finally{try{C&&!C.done&&(v=L.return)&&v.call(L)}finally{if(h)throw h.error}}}}}catch(m){l={error:m}}finally{try{w&&!w.done&&(d=b.return)&&d.call(b)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var a=this._index.fetch(r,ft),n=a.get(e);if(n==null)n=new Map,n.set(t,1),a.set(e,n);else{var i=n.get(t);n.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var a=this._index.fetch(r,ft),n=a.get(e);n==null||n.get(t)==null?this.warnDocumentChanged(t,e,r):n.get(t)<=1?n.size<=1?a.delete(e):n.delete(t):n.set(t,n.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var a,n;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){a={error:l}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(a)throw a.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(Lt("data-v-8d4c8dad"),o=o(),zt(),o),Hr={class:"shell"},qr=J(()=>N("svg",{class:"search-icon",width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[N("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[N("circle",{cx:"11",cy:"11",r:"8"}),N("path",{d:"m21 21l-4.35-4.35"})])],-1)),Qr={class:"search-actions before"},Yr=["title"],Zr=J(()=>N("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[N("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 12H5m7 7l-7-7l7-7"})],-1)),Xr=[Zr],en=["placeholder"],tn={class:"search-actions"},rn=["title"],nn=J(()=>N("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[N("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 14h7v7H3zM3 3h7v7H3zm11 1h7m-7 5h7m-7 6h7m-7 5h7"})],-1)),an=[nn],on=["title"],sn=J(()=>N("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[N("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 5H9l-7 7l7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2Zm-2 4l-6 6m0-6l6 6"})],-1)),un=[sn],ln=["href","aria-label","onMouseenter","onFocusin"],cn={class:"titles"},fn=J(()=>N("span",{class:"title-icon"},"#",-1)),dn=["innerHTML"],hn=J(()=>N("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},[N("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m9 18l6-6l-6-6"})],-1)),vn={class:"title main"},pn=["innerHTML"],yn={key:0,class:"excerpt-wrapper"},mn={key:0,class:"excerpt",inert:""},gn=["innerHTML"],bn=J(()=>N("div",{class:"excerpt-gradient-bottom"},null,-1)),wn=J(()=>N("div",{class:"excerpt-gradient-top"},null,-1)),xn={key:0,class:"no-results"},Fn={class:"search-keyboard-shortcuts"},En=["aria-label"],Sn=J(()=>N("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[N("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 19V5m-7 7l7-7l7 7"})],-1)),An=[Sn],Cn=["aria-label"],Nn=J(()=>N("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[N("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 5v14m7-7l-7 7l-7-7"})],-1)),Tn=[Nn],kn=["aria-label"],In=J(()=>N("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[N("g",{fill:"none",stroke:"currentcolor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[N("path",{d:"m9 10l-5 5l5 5"}),N("path",{d:"M20 4v7a4 4 0 0 1-4 4H4"})])],-1)),_n=[In],Dn=["aria-label"],On=Tt({__name:"VPLocalSearchBox",props:{placeholder:{}},emits:["close"],setup(o,{emit:e}){var _;const t=le(),r=le(),a=le(),n=le(Zt),i=Jt(),{activate:s}=_r(t,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:u,theme:l}=i,d=et(async()=>{var m,g,S;return Xe(Vr.loadJSON((S=await((g=(m=n.value)[u.value])==null?void 0:g.call(m)))==null?void 0:S.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1}}}))}),v=qe(()=>{var m,g;return((m=l.value.search)==null?void 0:m.provider)==="local"&&((g=l.value.search.options)==null?void 0:g.disableQueryPersistence)===!0}).value?X(""):Ut("vitepress:local-search-filter",""),p=Gt("vitepress:local-search-detailed-list",!1),b=qe(()=>{var m,g;return((m=l.value.search)==null?void 0:m.provider)==="local"&&((g=l.value.search.options)==null?void 0:g.disableDetailedView)===!0});kt(()=>{b.value&&(p.value=!1)});const w=le([]),F=/.*?.*?<\/a><\/h\1>/gi,T=X(!1);ze(v,()=>{T.value=!1});const k=et(async()=>{if(r.value)return Xe(new Or(r.value))},null);Ht(()=>[d.value,v.value,p.value],async([m,g,S],P,j)=>{var re,Je,Ue,Ge;let W=!1;if(j(()=>{W=!0}),!m)return;w.value=m.search(g).slice(0,16),T.value=!0;const U=S?await Promise.all(w.value.map(K=>A(K.id))):[];if(W)return;const G=new Map;for(const{id:K,mod:Z}of U){const H=Z.default??Z;if(H!=null&&H.render){const q=Bt(H);q.config.warnHandler=()=>{},q.provide(Vt,i),Object.defineProperties(q.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const pe=document.createElement("div");q.mount(pe);const ne=pe.innerHTML.split(F);q.unmount(),ne.shift();const He=K.slice(0,K.indexOf("#"));let ye=G.get(He);ye||(ye=new Map,G.set(He,ye));for(let me=0;me{const[Z,H]=K.id.split("#"),q=G.get(Z),pe=(q==null?void 0:q.get(H))??"";for(const ne in K.match)se.add(ne);return{...K,text:pe}}),await ge(),W)return;await new Promise(K=>{var Z;(Z=k.value)==null||Z.unmark({done:()=>{var H;(H=k.value)==null||H.markRegExp(x(se),{done:K})}})});const ue=((re=t.value)==null?void 0:re.querySelectorAll(".result .excerpt"))??[];for(const K of ue)(Je=K.querySelector('mark[data-markjs="true"]'))==null||Je.scrollIntoView({block:"center"});(Ge=(Ue=r.value)==null?void 0:Ue.firstElementChild)==null||Ge.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function A(m){const g=$t(m.slice(0,m.indexOf("#")));try{return{id:m,mod:await Le(()=>import(g),[])}}catch(S){return console.error(S),{id:m,mod:{}}}}const R=X();function M(){var m,g;(m=R.value)==null||m.focus(),(g=R.value)==null||g.select()}ke(()=>{M()});function L(m){m.pointerType==="mouse"&&M()}const C=X(0),I=X(!1);ze(w,()=>{C.value=0,O()});function O(){ge(()=>{const m=document.querySelector(".result.selected");m&&m.scrollIntoView({block:"nearest"})})}we("ArrowUp",m=>{m.preventDefault(),C.value--,C.value<0&&(C.value=w.value.length-1),I.value=!0,O()}),we("ArrowDown",m=>{m.preventDefault(),C.value++,C.value>=w.value.length&&(C.value=0),I.value=!0,O()});const E=It();we("Enter",()=>{const m=w.value[C.value];m&&(E.go(m.id),e("close"))}),we("Escape",()=>{e("close")});const f={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"}}},c=qt((_=l.value.search)==null?void 0:_.options,f);ke(()=>{window.history.pushState(null,"",null)}),Qt("popstate",m=>{m.preventDefault(),e("close")});const y=Yt(a);ke(()=>{a.value=document.body,ge(()=>{y.value=!0,ge().then(()=>s())})}),_t(()=>{y.value=!1});function x(m){return new RegExp([...m].sort((g,S)=>S.length-g.length).map(g=>`(${g.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})`).join("|"),"gi")}return(m,g)=>(Q(),Dt(Pt,{to:"body"},[N("div",{ref_key:"el",ref:t,class:"VPLocalSearchBox","aria-modal":"true"},[N("div",{class:"backdrop",onClick:g[0]||(g[0]=S=>m.$emit("close"))}),N("div",Hr,[N("div",{class:"search-bar",onPointerup:g[5]||(g[5]=S=>L(S))},[qr,N("div",Qr,[N("button",{class:"back-button",title:V(c)("modal.backButtonTitle"),onClick:g[1]||(g[1]=S=>m.$emit("close"))},Xr,8,Yr)]),Ot(N("input",{ref_key:"searchInput",ref:R,"onUpdate:modelValue":g[2]||(g[2]=S=>Mt(v)?v.value=S:null),placeholder:m.placeholder,class:"search-input"},null,8,en),[[Rt,V(v)]]),N("div",tn,[b.value?be("",!0):(Q(),Y("button",{key:0,class:Qe(["toggle-layout-button",{"detailed-list":V(p)}]),title:V(c)("modal.displayDetails"),onClick:g[3]||(g[3]=S=>p.value=!V(p))},an,10,rn)),N("button",{class:"clear-button",title:V(c)("modal.resetButtonTitle"),onClick:g[4]||(g[4]=S=>v.value="")},un,8,on)])],32),N("div",{ref_key:"resultsEl",ref:r,class:"results",onMousemove:g[7]||(g[7]=S=>I.value=!1)},[(Q(!0),Y(Ze,null,Ye(w.value,(S,P)=>(Q(),Y("a",{key:S.id,href:S.id,class:Qe(["result",{selected:C.value===P}]),"aria-label":[...S.titles,S.title].join(" > "),onMouseenter:j=>!I.value&&(C.value=P),onFocusin:j=>C.value=P,onClick:g[6]||(g[6]=j=>m.$emit("close"))},[N("div",null,[N("div",cn,[fn,(Q(!0),Y(Ze,null,Ye(S.titles,(j,W)=>(Q(),Y("span",{key:W,class:"title"},[N("span",{class:"text",innerHTML:j},null,8,dn),hn]))),128)),N("span",vn,[N("span",{class:"text",innerHTML:S.title},null,8,pn)])]),V(p)?(Q(),Y("div",yn,[S.text?(Q(),Y("div",mn,[N("div",{class:"vp-doc",innerHTML:S.text},null,8,gn)])):be("",!0),bn,wn])):be("",!0)])],42,ln))),128)),V(v)&&!w.value.length&&T.value?(Q(),Y("div",xn,[ce(fe(V(c)("modal.noResultsText"))+' "',1),N("strong",null,fe(V(v)),1),ce('" ')])):be("",!0)],544),N("div",Fn,[N("span",null,[N("kbd",{"aria-label":V(c)("modal.footer.navigateUpKeyAriaLabel")},An,8,En),N("kbd",{"aria-label":V(c)("modal.footer.navigateDownKeyAriaLabel")},Tn,8,Cn),ce(" "+fe(V(c)("modal.footer.navigateText")),1)]),N("span",null,[N("kbd",{"aria-label":V(c)("modal.footer.selectKeyAriaLabel")},_n,8,kn),ce(" "+fe(V(c)("modal.footer.selectText")),1)]),N("span",null,[N("kbd",{"aria-label":V(c)("modal.footer.closeKeyAriaLabel")},"esc",8,Dn),ce(" "+fe(V(c)("modal.footer.closeText")),1)])])])],512)]))}});const Ln=jt(On,[["__scopeId","data-v-8d4c8dad"]]);export{Ln as default}; diff --git a/assets/chunks/VPLocalSearchBox.9aeaf8b0.js b/assets/chunks/VPLocalSearchBox.9aeaf8b0.js deleted file mode 100644 index 26d46d9d85b..00000000000 --- a/assets/chunks/VPLocalSearchBox.9aeaf8b0.js +++ /dev/null @@ -1,7 +0,0 @@ -import{M as Oe,h as Z,w as Re,d as kt,s as ae,l as He,k as Tt,p as Ce,v as de,aj as Nt,ak as It,o as U,D as _t,C as k,b as B,al as Dt,am as Ot,q as Rt,c as q,n as Ge,G as ve,R as qe,F as Qe,a as ie,t as oe,an as Mt,S as Pt,U as Lt,ao as Ye,ap as zt,a8 as Vt,ae as Bt,_ as $t}from"./framework.40f7bea3.js";import{u as jt,a as Wt,b as Kt,c as Ze,d as Jt,e as Ut,w as Ht,o as pe,f as Gt,g as qt,h as Qt}from"./theme.6277ec04.js";const Yt={root:()=>Oe(()=>import("./@localSearchIndexroot.9983f5cb.js"),[]),zh_CN:()=>Oe(()=>import("./@localSearchIndexzh_CN.ec5880c6.js"),[])};/*! -* tabbable 6.1.2 -* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE -*/var ct=["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])"],be=ct.join(","),ft=typeof Element>"u",X=ft?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,we=!ft&&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},xe=function o(e,t){var r;t===void 0&&(t=!0);var a=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),n=a===""||a==="true",i=n||t&&e&&o(e.parentNode);return i},Zt=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},ht=function(e,t,r){if(xe(e))return[];var a=Array.prototype.slice.apply(e.querySelectorAll(be));return t&&X.call(e,be)&&a.unshift(e),a=a.filter(r),a},dt=function o(e,t,r){for(var a=[],n=Array.from(e);n.length;){var i=n.shift();if(!xe(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?a.push.apply(a,l):a.push({scopeParent:i,candidates:l})}else{var f=X.call(i,be);f&&r.filter(i)&&(t||!e.includes(i))&&a.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!xe(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?a.push.apply(a,y):a.push({scopeParent:i,candidates:y})}else n.unshift.apply(n,i.children)}}return a},vt=function(e,t){return e.tabIndex<0&&(t||/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||Zt(e))&&isNaN(parseInt(e.getAttribute("tabindex"),10))?0:e.tabIndex},Xt=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},pt=function(e){return e.tagName==="INPUT"},er=function(e){return pt(e)&&e.type==="hidden"},tr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},rr=function(e,t){for(var r=0;rsummary:first-of-type"),i=n?e.parentElement:e;if(X.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof a=="function"){for(var s=e;e;){var u=e.parentElement,l=we(e);if(u&&!u.shadowRoot&&a(u)===!0)return Xe(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(or(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return Xe(e);return!1},ur=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)},cr=function o(e){var t=[],r=[];return e.forEach(function(a,n){var i=!!a.scopeParent,s=i?a.scopeParent:a,u=vt(s,i),l=i?o(a.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:n,tabIndex:u,item:a,isScope:i,content:l})}),r.sort(Xt).reduce(function(a,n){return n.isScope?a.push.apply(a,n.content):a.push(n.content),a},[]).concat(t)},fr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=dt([e],t.includeContainer,{filter:Me.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:lr}):r=ht(e,t.includeContainer,Me.bind(null,t)),cr(r)},hr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=dt([e],t.includeContainer,{filter:Fe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=ht(e,t.includeContainer,Fe.bind(null,t)),r},ye=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return X.call(e,be)===!1?!1:Me(t,e)},dr=ct.concat("iframe").join(","),Ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return X.call(e,dr)===!1?!1:Fe(t,e)};/*! -* focus-trap 7.4.3 -* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE -*/function et(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(o,a).enumerable})),t.push.apply(t,r)}return t}function tt(o){for(var e=1;e0){var r=e[e.length-1];r!==t&&r.pause()}var a=e.indexOf(t);a===-1||e.splice(a,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()}},mr=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},gr=function(e){return e.key==="Escape"||e.key==="Esc"||e.keyCode===27},le=function(e){return e.key==="Tab"||e.keyCode===9},br=function(e){return le(e)&&!e.shiftKey},wr=function(e){return le(e)&&e.shiftKey},nt=function(e){return setTimeout(e,0)},at=function(e,t){var r=-1;return e.every(function(a,n){return t(a)?(r=n,!1):!0}),r},se=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),a=1;a1?h-1:0),E=1;E=0)c=r.activeElement;else{var p=i.tabbableGroups[0],h=p&&p.firstTabbableNode;c=h||f("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 p=fr(c,n.tabbableOptions),h=hr(c,n.tabbableOptions);return{container:c,tabbableNodes:p,focusableNodes:h,firstTabbableNode:p.length>0?p[0]:null,lastTabbableNode:p.length>0?p[p.length-1]:null,nextTabbableNode:function(E){var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,m=h.findIndex(function(w){return w===E});if(!(m<0))return M?h.slice(m+1).find(function(w){return ye(w,n.tabbableOptions)}):h.slice(0,m).reverse().find(function(w){return ye(w,n.tabbableOptions)})}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!f("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times")},y=function x(c){if(c!==!1&&c!==r.activeElement){if(!c||!c.focus){x(d());return}c.focus({preventScroll:!!n.preventScroll}),i.mostRecentlyFocusedNode=c,mr(c)&&c.select()}},b=function(c){var p=f("setReturnFocus",c);return p||(p===!1?!1:c)},g=function(c){var p=me(c);if(!(l(p,c)>=0)){if(se(n.clickOutsideDeactivates,c)){s.deactivate({returnFocus:n.returnFocusOnDeactivate});return}se(n.allowOutsideClick,c)||c.preventDefault()}},S=function(c){var p=me(c),h=l(p,c)>=0;h||p instanceof Document?h&&(i.mostRecentlyFocusedNode=p):(c.stopImmediatePropagation(),y(i.mostRecentlyFocusedNode||d()))},T=function(c){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,h=me(c);v();var F=null;if(i.tabbableGroups.length>0){var E=l(h,c),M=E>=0?i.containerGroups[E]:void 0;if(E<0)p?F=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:F=i.tabbableGroups[0].firstTabbableNode;else if(p){var m=at(i.tabbableGroups,function(ne){var Q=ne.firstTabbableNode;return h===Q});if(m<0&&(M.container===h||Ae(h,n.tabbableOptions)&&!ye(h,n.tabbableOptions)&&!M.nextTabbableNode(h,!1))&&(m=E),m>=0){var w=m===0?i.tabbableGroups.length-1:m-1,D=i.tabbableGroups[w];F=D.lastTabbableNode}else le(c)||(F=M.nextTabbableNode(h,!1))}else{var z=at(i.tabbableGroups,function(ne){var Q=ne.lastTabbableNode;return h===Q});if(z<0&&(M.container===h||Ae(h,n.tabbableOptions)&&!ye(h,n.tabbableOptions)&&!M.nextTabbableNode(h))&&(z=E),z>=0){var H=z===i.tabbableGroups.length-1?0:z+1,G=i.tabbableGroups[H];F=G.firstTabbableNode}else le(c)||(F=M.nextTabbableNode(h))}}else F=f("fallbackFocus");F&&(le(c)&&c.preventDefault(),y(F))},N=function(c){if(gr(c)&&se(n.escapeDeactivates,c)!==!1){c.preventDefault(),s.deactivate();return}(n.isKeyForward(c)||n.isKeyBackward(c))&&T(c,n.isKeyBackward(c))},A=function(c){var p=me(c);l(p,c)>=0||se(n.clickOutsideDeactivates,c)||se(n.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},O=function(){if(i.active)return rt.activateTrap(a,s),i.delayInitialFocusTimer=n.delayInitialFocus?nt(function(){y(d())}):y(d()),r.addEventListener("focusin",S,!0),r.addEventListener("mousedown",g,{capture:!0,passive:!1}),r.addEventListener("touchstart",g,{capture:!0,passive:!1}),r.addEventListener("click",A,{capture:!0,passive:!1}),r.addEventListener("keydown",N,{capture:!0,passive:!1}),s},R=function(){if(i.active)return r.removeEventListener("focusin",S,!0),r.removeEventListener("mousedown",g,!0),r.removeEventListener("touchstart",g,!0),r.removeEventListener("click",A,!0),r.removeEventListener("keydown",N,!0),s},P=function(c){var p=c.some(function(h){var F=Array.from(h.removedNodes);return F.some(function(E){return E===i.mostRecentlyFocusedNode})});p&&y(d())},C=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(P):void 0,I=function(){C&&(C.disconnect(),i.active&&!i.paused&&i.containers.map(function(c){C.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 p=u(c,"onActivate"),h=u(c,"onPostActivate"),F=u(c,"checkCanFocusTrap");F||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,p==null||p();var E=function(){F&&v(),O(),I(),h==null||h()};return F?(F(i.containers.concat()).then(E,E),this):(E(),this)},deactivate:function(c){if(!i.active)return this;var p=tt({onDeactivate:n.onDeactivate,onPostDeactivate:n.onPostDeactivate,checkCanReturnFocus:n.checkCanReturnFocus},c);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,R(),i.active=!1,i.paused=!1,I(),rt.deactivateTrap(a,s);var h=u(p,"onDeactivate"),F=u(p,"onPostDeactivate"),E=u(p,"checkCanReturnFocus"),M=u(p,"returnFocus","returnFocusOnDeactivate");h==null||h();var m=function(){nt(function(){M&&y(b(i.nodeFocusedBeforeActivation)),F==null||F()})};return M&&E?(E(b(i.nodeFocusedBeforeActivation)).then(m,m),this):(m(),this)},pause:function(c){if(i.paused||!i.active)return this;var p=u(c,"onPause"),h=u(c,"onPostPause");return i.paused=!0,p==null||p(),R(),I(),h==null||h(),this},unpause:function(c){if(!i.paused||!i.active)return this;var p=u(c,"onUnpause"),h=u(c,"onPostUnpause");return i.paused=!1,p==null||p(),v(),O(),I(),h==null||h(),this},updateContainerElements:function(c){var p=[].concat(c).filter(Boolean);return i.containers=p.map(function(h){return typeof h=="string"?r.querySelector(h):h}),i.active&&v(),I(),this}},s.updateContainerElements(e),s},Er=Object.defineProperty,Sr=Object.defineProperties,Cr=Object.getOwnPropertyDescriptors,Ee=Object.getOwnPropertySymbols,yt=Object.prototype.hasOwnProperty,mt=Object.prototype.propertyIsEnumerable,it=(o,e,t)=>e in o?Er(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Ar=(o,e)=>{for(var t in e||(e={}))yt.call(e,t)&&it(o,t,e[t]);if(Ee)for(var t of Ee(e))mt.call(e,t)&&it(o,t,e[t]);return o},kr=(o,e)=>Sr(o,Cr(e)),Tr=(o,e)=>{var t={};for(var r in o)yt.call(o,r)&&e.indexOf(r)<0&&(t[r]=o[r]);if(o!=null&&Ee)for(var r of Ee(o))e.indexOf(r)<0&&mt.call(o,r)&&(t[r]=o[r]);return t};function Nr(o,e={}){let t;const r=e,{immediate:a}=r,n=Tr(r,["immediate"]),i=Z(!1),s=Z(!1),u=v=>t&&t.activate(v),l=v=>t&&t.deactivate(v),f=()=>{t&&(t.pause(),s.value=!0)},d=()=>{t&&(t.unpause(),s.value=!1)};return Re(()=>jt(o),v=>{v&&(t=Fr(v,kr(Ar({},n),{onActivate(){i.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){i.value=!1,e.onDeactivate&&e.onDeactivate()}})),a&&u())},{flush:"post"}),Wt(()=>l()),{hasFocus:i,isPaused:s,activate:u,deactivate:l,pause:f,unpause:d}}class re{constructor(e,t=!0,r=[],a=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=a}static matches(e,t){const r=typeof t=="string"?[t]:t,a=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(a){let n=!1;return r.every(i=>a.call(e,i)?(n=!0,!1):!0),n}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 a=t.filter(n=>n.contains(r)).length>0;t.indexOf(r)===-1&&!a&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let a;try{const n=e.contentWindow;if(a=n.document,!n||!a)throw new Error("iframe inaccessible")}catch{r()}a&&t(a)}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 a=!1,n=null;const i=()=>{if(!a){a=!0,clearTimeout(n);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),n=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,a=>{r++,this.waitForIframes(a.querySelector("html"),()=>{--r||t()})},a=>{a||t()})}forEachIframe(e,t,r,a=()=>{}){let n=e.querySelectorAll("iframe"),i=n.length,s=0;n=Array.prototype.slice.call(n);const u=()=>{--i<=0&&a(s)};i||u(),n.forEach(l=>{re.matches(l,this.exclude)?u():this.onIframeReady(l,f=>{t(l)&&(s++,r(f)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new re(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const a=e.compareDocumentPosition(r),n=Node.DOCUMENT_POSITION_PRECEDING;if(a&n)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,a){let n=!1,i=!1;return a.forEach((s,u)=>{s.val===r&&(n=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(n===!1&&!i?a.push({val:r,handled:!0}):n!==!1&&!i&&(a[n].handled=!0),!0):(n===!1&&a.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,a){e.forEach(n=>{n.handled||this.getIframeContents(n.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,a)})})}iterateThroughNodes(e,t,r,a,n){const i=this.createIterator(t,e,a);let s=[],u=[],l,f,d=()=>({prevNode:f,node:l}=this.getIteratorNode(i),l);for(;d();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,f,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,y=>u.push(y),a)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,a),n()}forEachNode(e,t,r,a=()=>{}){const n=this.getContexts();let i=n.length;i||a(),n.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&a()})};this.iframes?this.waitForIframes(s,u):u()})}}let Ir=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 re(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",a=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let n in t)if(t.hasOwnProperty(n)){const i=t[n],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(n):this.escapeStr(n),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}`),a+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+a))}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,a)=>{let n=a.charAt(r+1);return/[(|)\\]/.test(n)||n===""?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 a=[];return e.split("").forEach(n=>{r.every(i=>{if(i.indexOf(n)!==-1){if(a.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),a.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let r=this.opt.accuracy,a=typeof r=="string"?r:r.value,n=typeof r=="string"?[]:r.limiters,i="";switch(n.forEach(s=>{i+=`|${this.escapeStr(s)}`}),a){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(a=>{a.trim()&&t.indexOf(a)===-1&&t.push(a)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,a)=>a.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((a,n)=>a.start-n.start).forEach(a=>{let{start:n,end:i,valid:s}=this.callNoMatchOnInvalidRanges(a,r);s&&(a.start=n,a.length=i-n,t.push(a),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,a,n=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),a=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&a-t>0&&a-r>0?n=!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:a,valid:n}}checkWhitespaceRanges(e,t,r){let a,n=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,a=u+parseInt(e.length,10),a>i&&(a=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||a-u<0||u>i||a>i?(n=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,a).replace(/\s+/g,"")===""&&(n=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:a,valid:n}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,a=>{r.push({start:t.length,end:(t+=a.textContent).length,node:a})},a=>this.matchesExclude(a.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return re.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const a=this.opt.element?this.opt.element:"mark",n=e.splitText(t),i=n.splitText(r-t);let s=document.createElement(a);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=n.textContent,n.parentNode.replaceChild(s,n),i}wrapRangeInMappedTextNode(e,t,r,a,n){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!a(i.node))return!1;const l=t-i.start,f=(r>i.end?i.end:r)-i.start,d=e.value.substr(0,i.start),v=e.value.substr(f+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,f),e.value=d+v,e.nodes.forEach((y,b)=>{b>=s&&(e.nodes[b].start>0&&b!==s&&(e.nodes[b].start-=f),e.nodes[b].end-=f)}),r-=f,n(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,a,n){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 f=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,a(d)})}n()})}wrapRangeFromIndex(e,t,r,a){this.getTextNodes(n=>{const i=n.value.length;e.forEach((s,u)=>{let{start:l,end:f,valid:d}=this.checkWhitespaceRanges(s,i,n.value);d&&this.wrapRangeInMappedTextNode(n,l,f,v=>t(v,s,n.value.substring(l,f),u),v=>{r(v,s)})}),a()})}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,a="wrapMatches";const n=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),this[a](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),n,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,a="wrapMatches";const{keywords:n,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let f=new RegExp(this.createRegExp(l),`gm${s}`),d=0;this.log(`Searching with expression "${f}"`),this[a](f,1,(v,y)=>this.opt.filter(y,l,r,d),v=>{d++,r++,this.opt.each(v)},()=>{d===0&&this.opt.noMatch(l),n[i-1]===l?this.opt.done(r):u(n[n.indexOf(l)+1])})};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(n[0])}markRanges(e,t){this.opt=t;let r=0,a=this.checkRanges(e);a&&a.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(a)),this.wrapRangeFromIndex(a,(n,i,s,u)=>this.opt.filter(n,i,s,u),(n,i)=>{r++,this.opt.each(n,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 a=re.matches(r,t),n=this.matchesExclude(r);return!a||n?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function _r(o){const e=new Ir(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 L=function(){return L=Object.assign||function(e){for(var t,r=1,a=arguments.length;r0&&n[n.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!n||l[1]>n[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 V(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),a,n=[],i;try{for(;(e===void 0||e-- >0)&&!(a=r.next()).done;)n.push(a.value)}catch(s){i={error:s}}finally{try{a&&!a.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return n}var Rr="ENTRIES",gt="KEYS",bt="VALUES",$="",ke=function(){function o(e,t){var r=e._tree,a=Array.from(r.keys());this.set=e,this._type=t,this._path=a.length>0?[{node:r,keys:a}]:[]}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=te(this._path),t=e.node,r=e.keys;if(te(r)===$)return{done:!1,value:this.result()};var a=t.get(te(r));return this._path.push({node:a,keys:Array.from(a.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=te(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 te(t)}).filter(function(e){return e!==$}).join("")},o.prototype.value=function(){return te(this._path).node.get($)},o.prototype.result=function(){switch(this._type){case bt:return this.value();case gt:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),te=function(o){return o[o.length-1]},Mr=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var a=e.length+1,n=a+t,i=new Uint8Array(n*a).fill(t+1),s=0;st)continue e}wt(o.get(y),e,t,r,a,g,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}}},Te=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 a=V(Se(this._tree,e.slice(this._prefix.length)),2),n=a[0],i=a[1];if(n===void 0){var s=V(Ve(i),2),u=s[0],l=s[1];try{for(var f=_(u.keys()),d=f.next();!d.done;d=f.next()){var v=d.value;if(v!==$&&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=f.return)&&r.call(f)}finally{if(t)throw t.error}}}return new o(n,e)},o.prototype.clear=function(){this._size=void 0,this._tree.clear()},o.prototype.delete=function(e){return this._size=void 0,Pr(this._tree,e)},o.prototype.entries=function(){return new ke(this,Rr)},o.prototype.forEach=function(e){var t,r;try{for(var a=_(this),n=a.next();!n.done;n=a.next()){var i=V(n.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return Mr(this._tree,e,t)},o.prototype.get=function(e){var t=Pe(this._tree,e);return t!==void 0?t.get($):void 0},o.prototype.has=function(e){var t=Pe(this._tree,e);return t!==void 0&&t.has($)},o.prototype.keys=function(){return new ke(this,gt)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Ne(this._tree,e);return r.set($,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=Ne(this._tree,e);return r.set($,t(r.get($))),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=Ne(this._tree,e),a=r.get($);return a===void 0&&r.set($,a=t()),a},o.prototype.values=function(){return new ke(this,bt)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,a=new o;try{for(var n=_(e),i=n.next();!i.done;i=n.next()){var s=V(i.value,2),u=s[0],l=s[1];a.set(u,l)}}catch(f){t={error:f}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return a},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),Se=function(o,e,t){var r,a;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var n=_(o.keys()),i=n.next();!i.done;i=n.next()){var s=i.value;if(s!==$&&e.startsWith(s))return t.push([o,s]),Se(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(a=n.return)&&a.call(n)}finally{if(r)throw r.error}}return t.push([o,e]),Se(void 0,"",t)},Pe=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var a=_(o.keys()),n=a.next();!n.done;n=a.next()){var i=n.value;if(i!==$&&e.startsWith(i))return Pe(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}},Ne=function(o,e){var t,r,a=e.length;e:for(var n=0;o&&n0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Te,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(a,n){t.removeFieldLength(r,n,t._documentCount,a)}),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,a=e.batchSize,n=e.batchWait;this.conditionalVacuum({batchSize:a,batchWait:n},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,a=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var n=_(e),i=n.next();!i.done;i=n.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=a}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,a=t.extractField,n=a(e,r);this.discard(n),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 a=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=ze,r.performVacuuming(e,a)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return Dr(this,void 0,void 0,function(){var r,a,n,i,s,u,l,f,d,v,y,b,g,S,T,N,A,O,R,P,C,I,x,c,p;return Or(this,function(h){switch(h.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];a=e.batchSize||Le.batchSize,n=e.batchWait||Le.batchWait,i=1,h.label=1;case 1:h.trys.push([1,7,8,9]),s=_(this._index),u=s.next(),h.label=2;case 2:if(u.done)return[3,6];l=V(u.value,2),f=l[0],d=l[1];try{for(v=(I=void 0,_(d)),y=v.next();!y.done;y=v.next()){b=V(y.value,2),g=b[0],S=b[1];try{for(T=(c=void 0,_(S)),N=T.next();!N.done;N=T.next())A=V(N.value,1),O=A[0],!this._documentIds.has(O)&&(S.size<=1?d.delete(g):S.delete(O))}catch(F){c={error:F}}finally{try{N&&!N.done&&(p=T.return)&&p.call(T)}finally{if(c)throw c.error}}}}catch(F){I={error:F}}finally{try{y&&!y.done&&(x=v.return)&&x.call(v)}finally{if(I)throw I.error}}return this._index.get(f).size===0&&this._index.delete(f),i%a!==0?[3,4]:[4,new Promise(function(F){return setTimeout(F,n)})];case 3:h.sent(),h.label=4;case 4:i+=1,h.label=5;case 5:return u=s.next(),[3,2];case 6:return[3,9];case 7:return R=h.sent(),P={error:R},[3,9];case 8:try{u&&!u.done&&(C=s.return)&&C.call(s)}finally{if(P)throw P.error}return[7];case 9:this._dirtCount-=r,h.label=10;case 10:return[4,null];case 11:return h.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||De.minDirtCount,r=r||De.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,a;t===void 0&&(t={});var n=this.executeQuery(e,t),i=[];try{for(var s=_(n),u=s.next();!u.done;u=s.next()){var l=V(u.value,2),f=l[0],d=l[1],v=d.score,y=d.terms,b=d.match,g=y.length,S={id:this._documentIds.get(f),score:v*g,terms:Object.keys(b),match:b};Object.assign(S,this._storedFields.get(f)),(t.filter==null||t.filter(S))&&i.push(S)}}catch(T){r={error:T}}finally{try{u&&!u.done&&(a=s.return)&&a.call(s)}finally{if(r)throw r.error}}return i.sort(ut),i},o.prototype.autoSuggest=function(e,t){var r,a,n,i;t===void 0&&(t={}),t=L(L({},this._options.autoSuggestOptions),t);var s=new Map;try{for(var u=_(this.search(e,t)),l=u.next();!l.done;l=u.next()){var f=l.value,d=f.score,v=f.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){r={error:R}}finally{try{l&&!l.done&&(a=u.return)&&a.call(u)}finally{if(r)throw r.error}}var g=[];try{for(var S=_(s),T=S.next();!T.done;T=S.next()){var N=V(T.value,2),b=N[0],A=N[1],d=A.score,v=A.terms,O=A.count;g.push({suggestion:b,terms:v,score:d/O})}}catch(R){n={error:R}}finally{try{T&&!T.done&&(i=S.return)&&i.call(S)}finally{if(n)throw n.error}}return g.sort(ut),g},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(_e.hasOwnProperty(e))return Ie(_e,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,a,n,i,s,u,l=e.index,f=e.documentCount,d=e.nextId,v=e.documentIds,y=e.fieldIds,b=e.fieldLength,g=e.averageFieldLength,S=e.storedFields,T=e.dirtCount,N=e.serializationVersion;if(N!==1&&N!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var A=new o(t);A._documentCount=f,A._nextId=d,A._documentIds=ge(v),A._idToShortId=new Map,A._fieldIds=y,A._fieldLength=ge(b),A._avgFieldLength=g,A._storedFields=ge(S),A._dirtCount=T||0,A._index=new Te;try{for(var O=_(A._documentIds),R=O.next();!R.done;R=O.next()){var P=V(R.value,2),C=P[0],I=P[1];A._idToShortId.set(I,C)}}catch(z){r={error:z}}finally{try{R&&!R.done&&(a=O.return)&&a.call(O)}finally{if(r)throw r.error}}try{for(var x=_(l),c=x.next();!c.done;c=x.next()){var p=V(c.value,2),h=p[0],F=p[1],E=new Map;try{for(var M=(s=void 0,_(Object.keys(F))),m=M.next();!m.done;m=M.next()){var w=m.value,D=F[w];N===1&&(D=D.ds),E.set(parseInt(w,10),ge(D))}}catch(z){s={error:z}}finally{try{m&&!m.done&&(u=M.return)&&u.call(M)}finally{if(s)throw s.error}}A._index.set(h,E)}}catch(z){n={error:z}}finally{try{c&&!c.done&&(i=x.return)&&i.call(x)}finally{if(n)throw n.error}}return A},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),typeof e!="string"){var a=L(L(L({},t),e),{queries:void 0}),n=e.queries.map(function(S){return r.executeQuery(S,a)});return this.combineResults(n,a.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,f=L(L({tokenize:s,processTerm:u},l),t),d=f.tokenize,v=f.processTerm,y=d(e).flatMap(function(S){return v(S)}).filter(function(S){return!!S}),b=y.map(jr(f)),g=b.map(function(S){return r.executeQuerySpec(S,f)});return this.combineResults(g,f.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,a,n,i,s=L(L({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(w,D){var z;return L(L({},w),(z={},z[D]=Ie(s.boost,D)||1,z))},{}),l=s.boostDocument,f=s.weights,d=s.maxFuzzy,v=s.bm25,y=L(L({},ot.weights),f),b=y.fuzzy,g=y.prefix,S=this._index.get(e.term),T=this.termResults(e.term,e.term,1,S,u,l,v),N,A;if(e.prefix&&(N=this._index.atPrefix(e.term)),e.fuzzy){var O=e.fuzzy===!0?.2:e.fuzzy,R=O<1?Math.min(d,Math.round(e.term.length*O)):O;R&&(A=this._index.fuzzyGet(e.term,R))}if(N)try{for(var P=_(N),C=P.next();!C.done;C=P.next()){var I=V(C.value,2),x=I[0],c=I[1],p=x.length-e.term.length;if(p){A==null||A.delete(x);var h=g*x.length/(x.length+.3*p);this.termResults(e.term,x,h,c,u,l,v,T)}}}catch(w){r={error:w}}finally{try{C&&!C.done&&(a=P.return)&&a.call(P)}finally{if(r)throw r.error}}if(A)try{for(var F=_(A.keys()),E=F.next();!E.done;E=F.next()){var x=E.value,M=V(A.get(x),2),m=M[0],p=M[1];if(p){var h=b*x.length/(x.length+p);this.termResults(e.term,x,h,m,u,l,v,T)}}}catch(w){n={error:w}}finally{try{E&&!E.done&&(i=F.return)&&i.call(F)}finally{if(n)throw n.error}}return T},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=Be),e.length===0)return new Map;var r=t.toLowerCase();return e.reduce(Vr[r])||new Map},o.prototype.toJSON=function(){var e,t,r,a,n=[];try{for(var i=_(this._index),s=i.next();!s.done;s=i.next()){var u=V(s.value,2),l=u[0],f=u[1],d={};try{for(var v=(r=void 0,_(f)),y=v.next();!y.done;y=v.next()){var b=V(y.value,2),g=b[0],S=b[1];d[g]=Object.fromEntries(S)}}catch(T){r={error:T}}finally{try{y&&!y.done&&(a=v.return)&&a.call(v)}finally{if(r)throw r.error}}n.push([l,d])}}catch(T){e={error:T}}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:n,serializationVersion:2}},o.prototype.termResults=function(e,t,r,a,n,i,s,u){var l,f,d,v,y;if(u===void 0&&(u=new Map),a==null)return u;try{for(var b=_(Object.keys(n)),g=b.next();!g.done;g=b.next()){var S=g.value,T=n[S],N=this._fieldIds[S],A=a.get(N);if(A!=null){var O=A.size,R=this._avgFieldLength[N];try{for(var P=(d=void 0,_(A.keys())),C=P.next();!C.done;C=P.next()){var I=C.value;if(!this._documentIds.has(I)){this.removeTerm(N,I,t),O-=1;continue}var x=i?i(this._documentIds.get(I),t,this._storedFields.get(I)):1;if(x){var c=A.get(I),p=this._fieldLength.get(I)[N],h=$r(c,O,this._documentCount,p,R,s),F=r*T*x*h,E=u.get(I);if(E){E.score+=F,Kr(E.terms,e);var M=Ie(E.match,t);M?M.push(S):E.match[t]=[S]}else u.set(I,{score:F,terms:[e],match:(y={},y[t]=[S],y)})}}}catch(m){d={error:m}}finally{try{C&&!C.done&&(v=P.return)&&v.call(P)}finally{if(d)throw d.error}}}}}catch(m){l={error:m}}finally{try{g&&!g.done&&(f=b.return)&&f.call(b)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var a=this._index.fetch(r,lt),n=a.get(e);if(n==null)n=new Map,n.set(t,1),a.set(e,n);else{var i=n.get(t);n.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var a=this._index.fetch(r,lt),n=a.get(e);n==null||n.get(t)==null?this.warnDocumentChanged(t,e,r):n.get(t)<=1?n.size<=1?a.delete(e):n.delete(t):n.set(t,n.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var a,n;try{for(var i=_(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){a={error:l}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(a)throw a.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(Pt("data-v-1b99c187"),o=o(),Lt(),o),Ur={class:"shell"},Hr=W(()=>k("svg",{class:"search-icon",width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[k("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[k("circle",{cx:"11",cy:"11",r:"8"}),k("path",{d:"m21 21l-4.35-4.35"})])],-1)),Gr={class:"search-actions before"},qr=["title"],Qr=W(()=>k("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[k("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 12H5m7 7l-7-7l7-7"})],-1)),Yr=[Qr],Zr=["placeholder"],Xr={class:"search-actions"},en=["title"],tn=W(()=>k("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[k("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 14h7v7H3zM3 3h7v7H3zm11 1h7m-7 5h7m-7 6h7m-7 5h7"})],-1)),rn=[tn],nn=["title"],an=W(()=>k("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[k("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 5H9l-7 7l7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2Zm-2 4l-6 6m0-6l6 6"})],-1)),on=[an],sn=["href","aria-label","onMouseenter","onFocusin"],un={class:"titles"},ln=W(()=>k("span",{class:"title-icon"},"#",-1)),cn=["innerHTML"],fn=W(()=>k("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},[k("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m9 18l6-6l-6-6"})],-1)),hn={class:"title main"},dn=["innerHTML"],vn={key:0,class:"excerpt-wrapper"},pn={key:0,class:"excerpt",inert:""},yn=["innerHTML"],mn=W(()=>k("div",{class:"excerpt-gradient-bottom"},null,-1)),gn=W(()=>k("div",{class:"excerpt-gradient-top"},null,-1)),bn={key:0,class:"no-results"},wn={class:"search-keyboard-shortcuts"},xn=["aria-label"],Fn=W(()=>k("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[k("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 19V5m-7 7l7-7l7 7"})],-1)),En=[Fn],Sn=["aria-label"],Cn=W(()=>k("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[k("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 5v14m7-7l-7 7l-7-7"})],-1)),An=[Cn],kn=["aria-label"],Tn=W(()=>k("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[k("g",{fill:"none",stroke:"currentcolor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[k("path",{d:"m9 10l-5 5l5 5"}),k("path",{d:"M20 4v7a4 4 0 0 1-4 4H4"})])],-1)),Nn=[Tn],In=["aria-label"],_n=kt({__name:"VPLocalSearchBox",props:{placeholder:{}},emits:["close"],setup(o,{emit:e}){var M;const t=ae(),r=ae(),a=ae(),n=ae(Yt),i=Kt(),{activate:s}=Nr(t,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:u,theme:l}=i,f=Ze(async()=>{var m,w,D;return Ye(zr.loadJSON((D=await((w=(m=n.value)[u.value])==null?void 0:w.call(m)))==null?void 0:D.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1}}}))}),v=He(()=>{var m,w;return((m=l.value.search)==null?void 0:m.provider)==="local"&&((w=l.value.search.options)==null?void 0:w.disableQueryPersistence)===!0}).value?Z(""):Jt("vitepress:local-search-filter",""),y=Ut("vitepress:local-search-detailed-list",!1),b=He(()=>{var m,w;return((m=l.value.search)==null?void 0:m.provider)==="local"&&((w=l.value.search.options)==null?void 0:w.disableDetailedView)===!0});Tt(()=>{b.value&&(y.value=!1)});const g=ae([]),S=/.*?.*?<\/a><\/h\1>/gi,T=Z(!1);Re(v,()=>{T.value=!1});const N=Ze(async()=>{if(r.value)return Ye(new _r(r.value))},null);Ht(()=>[f.value,v.value,y.value],async([m,w,D],z,H)=>{var je,We,Ke,Je;let G=!1;if(H(()=>{G=!0}),!m)return;g.value=m.search(w).slice(0,16),T.value=!0;const ne=D?await Promise.all(g.value.map(j=>A(j.id))):[];if(G)return;const Q=new Map;for(const{id:j,mod:Y}of ne){const K=Y.default??Y;if(K!=null&&K.render){const J=zt(K);J.config.warnHandler=()=>{},J.provide(Vt,i),Object.defineProperties(J.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const ce=document.createElement("div");J.mount(ce);const ee=ce.innerHTML.split(S);J.unmount(),ee.shift();const Ue=j.slice(0,j.indexOf("#"));let fe=Q.get(Ue);fe||(fe=new Map,Q.set(Ue,fe));for(let he=0;he{const[Y,K]=j.id.split("#"),J=Q.get(Y),ce=(J==null?void 0:J.get(K))??"";for(const ee in j.match)$e.add(ee);return{...j,text:ce}}),await de(),G)return;await new Promise(j=>{var Y;(Y=N.value)==null||Y.unmark({done:()=>{var K;(K=N.value)==null||K.markRegExp(E($e),{done:j})}})});const St=((je=t.value)==null?void 0:je.querySelectorAll(".result .excerpt"))??[];for(const j of St)(We=j.querySelector('mark[data-markjs="true"]'))==null||We.scrollIntoView({block:"center"});(Je=(Ke=r.value)==null?void 0:Ke.firstElementChild)==null||Je.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function A(m){const w=Bt(m.slice(0,m.indexOf("#")));try{return{id:m,mod:await Oe(()=>import(w),[])}}catch(D){return console.error(D),{id:m,mod:{}}}}const O=Z();function R(){var m,w;(m=O.value)==null||m.focus(),(w=O.value)==null||w.select()}Ce(()=>{R()});function P(m){m.pointerType==="mouse"&&R()}const C=Z(0),I=Z(!1);Re(g,()=>{C.value=0,x()});function x(){de(()=>{const m=document.querySelector(".result.selected");m&&m.scrollIntoView({block:"nearest"})})}pe("ArrowUp",m=>{m.preventDefault(),C.value--,C.value<0&&(C.value=g.value.length-1),I.value=!0,x()}),pe("ArrowDown",m=>{m.preventDefault(),C.value++,C.value>=g.value.length&&(C.value=0),I.value=!0,x()});const c=Nt();pe("Enter",()=>{const m=g.value[C.value];m&&(c.go(m.id),e("close"))}),pe("Escape",()=>{e("close")});const p={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"}}},h=Gt((M=l.value.search)==null?void 0:M.options,p);Ce(()=>{window.history.pushState(null,"",null)}),qt("popstate",m=>{m.preventDefault(),e("close")});const F=Qt(a);Ce(()=>{a.value=document.body,de(()=>{F.value=!0,de().then(()=>s())})}),It(()=>{F.value=!1});function E(m){return new RegExp([...m].sort((w,D)=>D.length-w.length).map(w=>`(${w.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})`).join("|"),"gi")}return(m,w)=>(U(),_t(Mt,{to:"body"},[k("div",{ref_key:"el",ref:t,class:"VPLocalSearchBox","aria-modal":"true"},[k("div",{class:"backdrop",onClick:w[0]||(w[0]=D=>m.$emit("close"))}),k("div",Ur,[k("div",{class:"search-bar",onPointerup:w[5]||(w[5]=D=>P(D))},[Hr,k("div",Gr,[k("button",{class:"back-button",title:B(h)("modal.backButtonTitle"),onClick:w[1]||(w[1]=D=>m.$emit("close"))},Yr,8,qr)]),Dt(k("input",{ref_key:"searchInput",ref:O,"onUpdate:modelValue":w[2]||(w[2]=D=>Rt(v)?v.value=D:null),placeholder:m.placeholder,class:"search-input"},null,8,Zr),[[Ot,B(v)]]),k("div",Xr,[b.value?ve("",!0):(U(),q("button",{key:0,class:Ge(["toggle-layout-button",{"detailed-list":B(y)}]),title:B(h)("modal.displayDetails"),onClick:w[3]||(w[3]=D=>y.value=!B(y))},rn,10,en)),k("button",{class:"clear-button",title:B(h)("modal.resetButtonTitle"),onClick:w[4]||(w[4]=D=>v.value="")},on,8,nn)])],32),k("div",{ref_key:"resultsEl",ref:r,class:"results",onMousemove:w[7]||(w[7]=D=>I.value=!1)},[(U(!0),q(Qe,null,qe(g.value,(D,z)=>(U(),q("a",{key:D.id,href:D.id,class:Ge(["result",{selected:C.value===z}]),"aria-label":[...D.titles,D.title].join(" > "),onMouseenter:H=>!I.value&&(C.value=z),onFocusin:H=>C.value=z,onClick:w[6]||(w[6]=H=>m.$emit("close"))},[k("div",null,[k("div",un,[ln,(U(!0),q(Qe,null,qe(D.titles,(H,G)=>(U(),q("span",{key:G,class:"title"},[k("span",{class:"text",innerHTML:H},null,8,cn),fn]))),128)),k("span",hn,[k("span",{class:"text",innerHTML:D.title},null,8,dn)])]),B(y)?(U(),q("div",vn,[D.text?(U(),q("div",pn,[k("div",{class:"vp-doc",innerHTML:D.text},null,8,yn)])):ve("",!0),mn,gn])):ve("",!0)])],42,sn))),128)),B(v)&&!g.value.length&&T.value?(U(),q("div",bn,[ie(oe(B(h)("modal.noResultsText"))+' "',1),k("strong",null,oe(B(v)),1),ie('" ')])):ve("",!0)],544),k("div",wn,[k("span",null,[k("kbd",{"aria-label":B(h)("modal.footer.navigateUpKeyAriaLabel")},En,8,xn),k("kbd",{"aria-label":B(h)("modal.footer.navigateDownKeyAriaLabel")},An,8,Sn),ie(" "+oe(B(h)("modal.footer.navigateText")),1)]),k("span",null,[k("kbd",{"aria-label":B(h)("modal.footer.selectKeyAriaLabel")},Nn,8,kn),ie(" "+oe(B(h)("modal.footer.selectText")),1)]),k("span",null,[k("kbd",{"aria-label":B(h)("modal.footer.closeKeyAriaLabel")},"esc",8,In),ie(" "+oe(B(h)("modal.footer.closeText")),1)])])])],512)]))}});const Mn=$t(_n,[["__scopeId","data-v-1b99c187"]]);export{Mn as default}; diff --git a/assets/chunks/framework.40f7bea3.js b/assets/chunks/framework.e7f80142.js similarity index 57% rename from assets/chunks/framework.40f7bea3.js rename to assets/chunks/framework.e7f80142.js index 740406ece78..0e4362e426c 100644 --- a/assets/chunks/framework.40f7bea3.js +++ b/assets/chunks/framework.e7f80142.js @@ -1,2 +1,2 @@ -function es(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}const te={},at=[],Pe=()=>{},Ni=()=>!1,Hi=/^on[^a-z]/,jt=e=>Hi.test(e),ts=e=>e.startsWith("onUpdate:"),oe=Object.assign,ns=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},$i=Object.prototype.hasOwnProperty,Y=(e,t)=>$i.call(e,t),N=Array.isArray,ut=e=>gn(e)==="[object Map]",wr=e=>gn(e)==="[object Set]",D=e=>typeof e=="function",se=e=>typeof e=="string",ss=e=>typeof e=="symbol",ee=e=>e!==null&&typeof e=="object",xr=e=>ee(e)&&D(e.then)&&D(e.catch),Er=Object.prototype.toString,gn=e=>Er.call(e),Ui=e=>gn(e).slice(8,-1),Tr=e=>gn(e)==="[object Object]",rs=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Rt=es(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),mn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},ji=/-(\w)/g,Se=mn(e=>e.replace(ji,(t,n)=>n?n.toUpperCase():"")),Bi=/\B([A-Z])/g,it=mn(e=>e.replace(Bi,"-$1").toLowerCase()),_n=mn(e=>e.charAt(0).toUpperCase()+e.slice(1)),en=mn(e=>e?`on${_n(e)}`:""),Lt=(e,t)=>!Object.is(e,t),tn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},jn=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Di=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let Is;const Bn=()=>Is||(Is=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function is(e){if(N(e)){const t={};for(let n=0;n{if(n){const s=n.split(ki);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function os(e){let t="";if(se(e))t=e;else if(N(e))for(let n=0;nse(e)?e:e==null?"":N(e)||ee(e)&&(e.toString===Er||!D(e.toString))?JSON.stringify(e,Rr,2):String(e),Rr=(e,t)=>t&&t.__v_isRef?Rr(e,t.value):ut(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:wr(t)?{[`Set(${t.size})`]:[...t.values()]}:ee(t)&&!N(t)&&!Tr(t)?String(t):t;let _e;class Yi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=_e,!t&&_e&&(this.index=(_e.scopes||(_e.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=_e;try{return _e=this,t()}finally{_e=n}}}on(){_e=this}off(){_e=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Pr=e=>(e.w&Ve)>0,Ir=e=>(e.n&Ve)>0,Zi=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(d==="length"||d>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":N(e)?rs(n)&&l.push(o.get("length")):(l.push(o.get(st)),ut(e)&&l.push(o.get(Kn)));break;case"delete":N(e)||(l.push(o.get(st)),ut(e)&&l.push(o.get(Kn)));break;case"set":ut(e)&&l.push(o.get(st));break}if(l.length===1)l[0]&&kn(l[0]);else{const c=[];for(const a of l)a&&c.push(...a);kn(ls(c))}}function kn(e,t){const n=N(e)?e:[...e];for(const s of n)s.computed&&Fs(s);for(const s of n)s.computed||Fs(s)}function Fs(e,t){(e!==Ae||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Gi(e,t){var n;return(n=ln.get(e))==null?void 0:n.get(t)}const eo=es("__proto__,__v_isRef,__isVue"),Mr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ss)),to=fs(),no=fs(!1,!0),so=fs(!0),Ms=ro();function ro(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=J(this);for(let i=0,o=this.length;i{e[t]=function(...n){Ct();const s=J(this)[t].apply(this,n);return wt(),s}}),e}function io(e){const t=J(this);return pe(t,"has",e),t.hasOwnProperty(e)}function fs(e=!1,t=!1){return function(s,r,i){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&i===(e?t?wo:$r:t?Hr:Nr).get(s))return s;const o=N(s);if(!e){if(o&&Y(Ms,r))return Reflect.get(Ms,r,i);if(r==="hasOwnProperty")return io}const l=Reflect.get(s,r,i);return(ss(r)?Mr.has(r):eo(r))||(e||pe(s,"get",r),t)?l:ce(l)?o&&rs(r)?l:l.value:ee(l)?e?Ur(l):yn(l):l}}const oo=Sr(),lo=Sr(!0);function Sr(e=!1){return function(n,s,r,i){let o=n[s];if(_t(o)&&ce(o)&&!ce(r))return!1;if(!e&&(!cn(r)&&!_t(r)&&(o=J(o),r=J(r)),!N(n)&&ce(o)&&!ce(r)))return o.value=r,!0;const l=N(n)&&rs(s)?Number(s)e,bn=e=>Reflect.getPrototypeOf(e);function Wt(e,t,n=!1,s=!1){e=e.__v_raw;const r=J(e),i=J(t);n||(t!==i&&pe(r,"get",t),pe(r,"get",i));const{has:o}=bn(r),l=s?as:n?hs:Nt;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Vt(e,t=!1){const n=this.__v_raw,s=J(n),r=J(e);return t||(e!==r&&pe(s,"has",e),pe(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function qt(e,t=!1){return e=e.__v_raw,!t&&pe(J(e),"iterate",st),Reflect.get(e,"size",e)}function Ss(e){e=J(e);const t=J(this);return bn(t).has.call(t,e)||(t.add(e),He(t,"add",e,e)),this}function Ls(e,t){t=J(t);const n=J(this),{has:s,get:r}=bn(n);let i=s.call(n,e);i||(e=J(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?Lt(t,o)&&He(n,"set",e,t):He(n,"add",e,t),this}function Ns(e){const t=J(this),{has:n,get:s}=bn(t);let r=n.call(t,e);r||(e=J(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&He(t,"delete",e,void 0),i}function Hs(){const e=J(this),t=e.size!==0,n=e.clear();return t&&He(e,"clear",void 0,void 0),n}function zt(e,t){return function(s,r){const i=this,o=i.__v_raw,l=J(o),c=t?as:e?hs:Nt;return!e&&pe(l,"iterate",st),o.forEach((a,d)=>s.call(r,c(a),c(d),i))}}function Yt(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=ut(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,a=r[e](...s),d=n?as:t?hs:Nt;return!t&&pe(i,"iterate",c?Kn:st),{next(){const{value:p,done:g}=a.next();return g?{value:p,done:g}:{value:l?[d(p[0]),d(p[1])]:d(p),done:g}},[Symbol.iterator](){return this}}}}function Ue(e){return function(...t){return e==="delete"?!1:this}}function po(){const e={get(i){return Wt(this,i)},get size(){return qt(this)},has:Vt,add:Ss,set:Ls,delete:Ns,clear:Hs,forEach:zt(!1,!1)},t={get(i){return Wt(this,i,!1,!0)},get size(){return qt(this)},has:Vt,add:Ss,set:Ls,delete:Ns,clear:Hs,forEach:zt(!1,!0)},n={get(i){return Wt(this,i,!0)},get size(){return qt(this,!0)},has(i){return Vt.call(this,i,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:zt(!0,!1)},s={get(i){return Wt(this,i,!0,!0)},get size(){return qt(this,!0)},has(i){return Vt.call(this,i,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:zt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Yt(i,!1,!1),n[i]=Yt(i,!0,!1),t[i]=Yt(i,!1,!0),s[i]=Yt(i,!0,!0)}),[e,n,t,s]}const[go,mo,_o,bo]=po();function us(e,t){const n=t?e?bo:_o:e?mo:go;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Y(n,r)&&r in s?n:s,r,i)}const yo={get:us(!1,!1)},vo={get:us(!1,!0)},Co={get:us(!0,!1)},Nr=new WeakMap,Hr=new WeakMap,$r=new WeakMap,wo=new WeakMap;function xo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Eo(e){return e.__v_skip||!Object.isExtensible(e)?0:xo(Ui(e))}function yn(e){return _t(e)?e:ds(e,!1,Lr,yo,Nr)}function To(e){return ds(e,!1,ho,vo,Hr)}function Ur(e){return ds(e,!0,uo,Co,$r)}function ds(e,t,n,s,r){if(!ee(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=Eo(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function dt(e){return _t(e)?dt(e.__v_raw):!!(e&&e.__v_isReactive)}function _t(e){return!!(e&&e.__v_isReadonly)}function cn(e){return!!(e&&e.__v_isShallow)}function jr(e){return dt(e)||_t(e)}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Pt(e){return on(e,"__v_skip",!0),e}const Nt=e=>ee(e)?yn(e):e,hs=e=>ee(e)?Ur(e):e;function ps(e){ke&&Ae&&(e=J(e),Fr(e.dep||(e.dep=ls())))}function gs(e,t){e=J(e);const n=e.dep;n&&kn(n)}function ce(e){return!!(e&&e.__v_isRef===!0)}function ht(e){return Br(e,!1)}function Ao(e){return Br(e,!0)}function Br(e,t){return ce(e)?e:new Ro(e,t)}class Ro{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:Nt(t)}get value(){return ps(this),this._value}set value(t){const n=this.__v_isShallow||cn(t)||_t(t);t=n?t:J(t),Lt(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Nt(t),gs(this))}}function Po(e){return ce(e)?e.value:e}const Io={get:(e,t,n)=>Po(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ce(r)&&!ce(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Dr(e){return dt(e)?e:new Proxy(e,Io)}class Oo{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>ps(this),()=>gs(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function Vc(e){return new Oo(e)}class Fo{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,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 Gi(J(this._object),this._key)}}class Mo{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function qc(e,t,n){return ce(e)?e:D(e)?new Mo(e):ee(e)&&arguments.length>1?So(e,t,n):ht(e)}function So(e,t,n){const s=e[t];return ce(s)?s:new Fo(e,t,n)}class Lo{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new cs(t,()=>{this._dirty||(this._dirty=!0,gs(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=J(this);return ps(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function No(e,t,n=!1){let s,r;const i=D(e);return i?(s=e,r=Pe):(s=e.get,r=e.set),new Lo(s,r,i||!r,n)}function We(e,t,n,s){let r;try{r=s?e(...s):e()}catch(i){Bt(i,t,n)}return r}function we(e,t,n,s){if(D(e)){const i=We(e,t,n,s);return i&&xr(i)&&i.catch(o=>{Bt(o,t,n)}),i}const r=[];for(let i=0;i>>1;$t(ae[s])Me&&ae.splice(t,1)}function jo(e){N(e)?pt.push(...e):(!Ne||!Ne.includes(e,e.allowRecurse?Qe+1:Qe))&&pt.push(e),Wr()}function $s(e,t=Ht?Me+1:0){for(;t$t(n)-$t(s)),Qe=0;Qee.id==null?1/0:e.id,Bo=(e,t)=>{const n=$t(e)-$t(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Vr(e){Wn=!1,Ht=!0,ae.sort(Bo);const t=Pe;try{for(Me=0;Mese(C)?C.trim():C)),p&&(r=n.map(jn))}let l,c=s[l=en(t)]||s[l=en(Se(t))];!c&&i&&(c=s[l=en(it(t))]),c&&we(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,we(a,e,6,r)}}function qr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!D(e)){const c=a=>{const d=qr(a,t,!0);d&&(l=!0,oe(o,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ee(e)&&s.set(e,null),null):(N(i)?i.forEach(c=>o[c]=null):oe(o,i),ee(e)&&s.set(e,o),o)}function Cn(e,t){return!e||!jt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,it(t))||Y(e,t))}let fe=null,wn=null;function an(e){const t=fe;return fe=e,wn=e&&e.type.__scopeId||null,t}function zc(e){wn=e}function Yc(){wn=null}function Ko(e,t=fe,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Xs(-1);const i=an(t);let o;try{o=e(...r)}finally{an(i),s._d&&Xs(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Fn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[o],slots:l,attrs:c,emit:a,render:d,renderCache:p,data:g,setupState:C,ctx:R,inheritAttrs:P}=e;let $,_;const y=an(e);try{if(n.shapeFlag&4){const I=r||s;$=Te(d.call(I,I,p,i,C,g,R)),_=c}else{const I=t;$=Te(I.length>1?I(i,{attrs:c,slots:l,emit:a}):I(i,null)),_=t.props?c:ko(c)}}catch(I){Mt.length=0,Bt(I,e,1),$=re(be)}let H=$;if(_&&P!==!1){const I=Object.keys(_),{shapeFlag:K}=H;I.length&&K&7&&(o&&I.some(ts)&&(_=Wo(_,o)),H=qe(H,_))}return n.dirs&&(H=qe(H),H.dirs=H.dirs?H.dirs.concat(n.dirs):n.dirs),n.transition&&(H.transition=n.transition),$=H,an(y),$}const ko=e=>{let t;for(const n in e)(n==="class"||n==="style"||jt(n))&&((t||(t={}))[n]=e[n]);return t},Wo=(e,t)=>{const n={};for(const s in e)(!ts(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Vo(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,a=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Us(s,o,a):!!o;if(c&8){const d=t.dynamicProps;for(let p=0;pe.__isSuspense;function zr(e,t){t&&t.pendingBranch?N(e)?t.effects.push(...e):t.effects.push(e):jo(e)}function Yo(e,t){return xn(e,null,t)}function Jc(e,t){return xn(e,null,{flush:"post"})}const Jt={};function nn(e,t,n){return xn(e,t,n)}function xn(e,t,{immediate:n,deep:s,flush:r,onTrack:i,onTrigger:o}=te){var l;const c=Xi()===((l=le)==null?void 0:l.scope)?le:null;let a,d=!1,p=!1;if(ce(e)?(a=()=>e.value,d=cn(e)):dt(e)?(a=()=>e,s=!0):N(e)?(p=!0,d=e.some(I=>dt(I)||cn(I)),a=()=>e.map(I=>{if(ce(I))return I.value;if(dt(I))return tt(I);if(D(I))return We(I,c,2)})):D(e)?t?a=()=>We(e,c,2):a=()=>{if(!(c&&c.isUnmounted))return g&&g(),we(e,c,3,[C])}:a=Pe,t&&s){const I=a;a=()=>tt(I())}let g,C=I=>{g=y.onStop=()=>{We(I,c,4)}},R;if(vt)if(C=Pe,t?n&&we(t,c,3,[a(),p?[]:void 0,C]):a(),r==="sync"){const I=Wl();R=I.__watcherHandles||(I.__watcherHandles=[])}else return Pe;let P=p?new Array(e.length).fill(Jt):Jt;const $=()=>{if(y.active)if(t){const I=y.run();(s||d||(p?I.some((K,q)=>Lt(K,P[q])):Lt(I,P)))&&(g&&g(),we(t,c,3,[I,P===Jt?void 0:p&&P[0]===Jt?[]:P,C]),P=I)}else y.run()};$.allowRecurse=!!t;let _;r==="sync"?_=$:r==="post"?_=()=>de($,c&&c.suspense):($.pre=!0,c&&($.id=c.uid),_=()=>vn($));const y=new cs(a,_);t?n?$():P=y.run():r==="post"?de(y.run.bind(y),c&&c.suspense):y.run();const H=()=>{y.stop(),c&&c.scope&&ns(c.scope.effects,y)};return R&&R.push(H),H}function Jo(e,t,n){const s=this.proxy,r=se(e)?e.includes(".")?Yr(s,e):()=>s[e]:e.bind(s,s);let i;D(t)?i=t:(i=t.handler,n=t);const o=le;yt(this);const l=xn(r,i.bind(s),n);return o?yt(o):rt(),l}function Yr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{tt(n,t)});else if(Tr(e))for(const n in e)tt(e[n],t);return e}function Xc(e,t){const n=fe;if(n===null)return e;const s=Pn(n)||n.proxy,r=e.dirs||(e.dirs=[]);for(let i=0;i{e.isMounted=!0}),Gr(()=>{e.isUnmounting=!0}),e}const ye=[Function,Array],Jr={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ye,onEnter:ye,onAfterEnter:ye,onEnterCancelled:ye,onBeforeLeave:ye,onLeave:ye,onAfterLeave:ye,onLeaveCancelled:ye,onBeforeAppear:ye,onAppear:ye,onAfterAppear:ye,onAppearCancelled:ye},Zo={name:"BaseTransition",props:Jr,setup(e,{slots:t}){const n=bi(),s=Xo();let r;return()=>{const i=t.default&&Zr(t.default(),!0);if(!i||!i.length)return;let o=i[0];if(i.length>1){for(const P of i)if(P.type!==be){o=P;break}}const l=J(e),{mode:c}=l;if(s.isLeaving)return Mn(o);const a=js(o);if(!a)return Mn(o);const d=Vn(a,l,s,n);qn(a,d);const p=n.subTree,g=p&&js(p);let C=!1;const{getTransitionKey:R}=a.type;if(R){const P=R();r===void 0?r=P:P!==r&&(r=P,C=!0)}if(g&&g.type!==be&&(!Ge(a,g)||C)){const P=Vn(g,l,s,n);if(qn(g,P),c==="out-in")return s.isLeaving=!0,P.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&n.update()},Mn(o);c==="in-out"&&a.type!==be&&(P.delayLeave=($,_,y)=>{const H=Xr(s,g);H[String(g.key)]=g,$._leaveCb=()=>{_(),$._leaveCb=void 0,delete d.delayedLeave},d.delayedLeave=y})}return o}}},Qo=Zo;function Xr(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Vn(e,t,n,s){const{appear:r,mode:i,persisted:o=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:d,onBeforeLeave:p,onLeave:g,onAfterLeave:C,onLeaveCancelled:R,onBeforeAppear:P,onAppear:$,onAfterAppear:_,onAppearCancelled:y}=t,H=String(e.key),I=Xr(n,e),K=(E,j)=>{E&&we(E,s,9,j)},q=(E,j)=>{const U=j[1];K(E,j),N(E)?E.every(W=>W.length<=1)&&U():E.length<=1&&U()},k={mode:i,persisted:o,beforeEnter(E){let j=l;if(!n.isMounted)if(r)j=P||l;else return;E._leaveCb&&E._leaveCb(!0);const U=I[H];U&&Ge(e,U)&&U.el._leaveCb&&U.el._leaveCb(),K(j,[E])},enter(E){let j=c,U=a,W=d;if(!n.isMounted)if(r)j=$||c,U=_||a,W=y||d;else return;let O=!1;const V=E._enterCb=M=>{O||(O=!0,M?K(W,[E]):K(U,[E]),k.delayedLeave&&k.delayedLeave(),E._enterCb=void 0)};j?q(j,[E,V]):V()},leave(E,j){const U=String(e.key);if(E._enterCb&&E._enterCb(!0),n.isUnmounting)return j();K(p,[E]);let W=!1;const O=E._leaveCb=V=>{W||(W=!0,j(),V?K(R,[E]):K(C,[E]),E._leaveCb=void 0,I[U]===e&&delete I[U])};I[U]=e,g?q(g,[E,O]):O()},clone(E){return Vn(E,t,n,s)}};return k}function Mn(e){if(Dt(e))return e=qe(e),e.children=null,e}function js(e){return Dt(e)?e.children?e.children[0]:void 0:e}function qn(e,t){e.shapeFlag&6&&e.component?qn(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 Zr(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;ioe({name:e.name},t,{setup:e}))():e}const gt=e=>!!e.type.__asyncLoader;function Zc(e){D(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,timeout:i,suspensible:o=!0,onError:l}=e;let c=null,a,d=0;const p=()=>(d++,c=null,g()),g=()=>{let C;return c||(C=c=t().catch(R=>{if(R=R instanceof Error?R:new Error(String(R)),l)return new Promise((P,$)=>{l(R,()=>P(p()),()=>$(R),d+1)});throw R}).then(R=>C!==c&&c?c:(R&&(R.__esModule||R[Symbol.toStringTag]==="Module")&&(R=R.default),a=R,R)))};return _s({name:"AsyncComponentWrapper",__asyncLoader:g,get __asyncResolved(){return a},setup(){const C=le;if(a)return()=>Sn(a,C);const R=y=>{c=null,Bt(y,C,13,!s)};if(o&&C.suspense||vt)return g().then(y=>()=>Sn(y,C)).catch(y=>(R(y),()=>s?re(s,{error:y}):null));const P=ht(!1),$=ht(),_=ht(!!r);return r&&setTimeout(()=>{_.value=!1},r),i!=null&&setTimeout(()=>{if(!P.value&&!$.value){const y=new Error(`Async component timed out after ${i}ms.`);R(y),$.value=y}},i),g().then(()=>{P.value=!0,C.parent&&Dt(C.parent.vnode)&&vn(C.parent.update)}).catch(y=>{R(y),$.value=y}),()=>{if(P.value&&a)return Sn(a,C);if($.value&&s)return re(s,{error:$.value});if(n&&!_.value)return re(n)}}})}function Sn(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=re(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const Dt=e=>e.type.__isKeepAlive;function Go(e,t){Qr(e,"a",t)}function el(e,t){Qr(e,"da",t)}function Qr(e,t,n=le){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(En(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Dt(r.parent.vnode)&&tl(s,t,n,r),r=r.parent}}function tl(e,t,n,s){const r=En(t,e,s,!0);An(()=>{ns(s[t],r)},n)}function En(e,t,n=le,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Ct(),yt(n);const l=we(t,n,e,o);return rt(),wt(),l});return s?r.unshift(i):r.push(i),i}}const $e=e=>(t,n=le)=>(!vt||e==="sp")&&En(e,(...s)=>t(...s),n),nl=$e("bm"),Tn=$e("m"),sl=$e("bu"),rl=$e("u"),Gr=$e("bum"),An=$e("um"),il=$e("sp"),ol=$e("rtg"),ll=$e("rtc");function cl(e,t=le){En("ec",e,t)}const bs="components";function Qc(e,t){return ti(bs,e,!0,t)||e}const ei=Symbol.for("v-ndc");function Gc(e){return se(e)?ti(bs,e,!1)||e:e||ei}function ti(e,t,n=!0,s=!1){const r=fe||le;if(r){const i=r.type;if(e===bs){const l=Dl(i,!1);if(l&&(l===t||l===Se(t)||l===_n(Se(t))))return i}const o=Bs(r[e]||i[e],t)||Bs(r.appContext[e],t);return!o&&s?i:o}}function Bs(e,t){return e&&(e[t]||e[Se(t)]||e[_n(Se(t))])}function ef(e,t,n,s){let r;const i=n&&n[s];if(N(e)||se(e)){r=new Array(e.length);for(let o=0,l=e.length;ot(o,l,void 0,i&&i[l]));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;lpn(t)?!(t.type===be||t.type===he&&!ni(t.children)):!0)?e:null}function nf(e,t){const n={};for(const s in e)n[t&&/[A-Z]/.test(s)?`on:${s}`:en(s)]=e[s];return n}const zn=e=>e?yi(e)?Pn(e)||e.proxy:zn(e.parent):null,It=oe(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=>zn(e.parent),$root:e=>zn(e.root),$emit:e=>e.emit,$options:e=>ys(e),$forceUpdate:e=>e.f||(e.f=()=>vn(e.update)),$nextTick:e=>e.n||(e.n=kr.bind(e.proxy)),$watch:e=>Jo.bind(e)}),Ln=(e,t)=>e!==te&&!e.__isScriptSetup&&Y(e,t),fl={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const C=o[t];if(C!==void 0)switch(C){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Ln(s,t))return o[t]=1,s[t];if(r!==te&&Y(r,t))return o[t]=2,r[t];if((a=e.propsOptions[0])&&Y(a,t))return o[t]=3,i[t];if(n!==te&&Y(n,t))return o[t]=4,n[t];Yn&&(o[t]=0)}}const d=It[t];let p,g;if(d)return t==="$attrs"&&pe(e,"get",t),d(e);if((p=l.__cssModules)&&(p=p[t]))return p;if(n!==te&&Y(n,t))return o[t]=4,n[t];if(g=c.config.globalProperties,Y(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Ln(r,t)?(r[t]=n,!0):s!==te&&Y(s,t)?(s[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==te&&Y(e,o)||Ln(t,o)||(l=i[0])&&Y(l,o)||Y(s,o)||Y(It,o)||Y(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function sf(){return al().slots}function al(){const e=bi();return e.setupContext||(e.setupContext=Ci(e))}function Ds(e){return N(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Yn=!0;function ul(e){const t=ys(e),n=e.proxy,s=e.ctx;Yn=!1,t.beforeCreate&&Ks(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:a,created:d,beforeMount:p,mounted:g,beforeUpdate:C,updated:R,activated:P,deactivated:$,beforeDestroy:_,beforeUnmount:y,destroyed:H,unmounted:I,render:K,renderTracked:q,renderTriggered:k,errorCaptured:E,serverPrefetch:j,expose:U,inheritAttrs:W,components:O,directives:V,filters:M}=t;if(a&&dl(a,s,null),o)for(const ne in o){const Q=o[ne];D(Q)&&(s[ne]=Q.bind(n))}if(r){const ne=r.call(n,n);ee(ne)&&(e.data=yn(ne))}if(Yn=!0,i)for(const ne in i){const Q=i[ne],ze=D(Q)?Q.bind(n,n):D(Q.get)?Q.get.bind(n,n):Pe,Kt=!D(Q)&&D(Q.set)?Q.set.bind(n):Pe,Ye=Ee({get:ze,set:Kt});Object.defineProperty(s,ne,{enumerable:!0,configurable:!0,get:()=>Ye.value,set:Ie=>Ye.value=Ie})}if(l)for(const ne in l)si(l[ne],s,n,ne);if(c){const ne=D(c)?c.call(n):c;Reflect.ownKeys(ne).forEach(Q=>{bl(Q,ne[Q])})}d&&Ks(d,e,"c");function X(ne,Q){N(Q)?Q.forEach(ze=>ne(ze.bind(n))):Q&&ne(Q.bind(n))}if(X(nl,p),X(Tn,g),X(sl,C),X(rl,R),X(Go,P),X(el,$),X(cl,E),X(ll,q),X(ol,k),X(Gr,y),X(An,I),X(il,j),N(U))if(U.length){const ne=e.exposed||(e.exposed={});U.forEach(Q=>{Object.defineProperty(ne,Q,{get:()=>n[Q],set:ze=>n[Q]=ze})})}else e.exposed||(e.exposed={});K&&e.render===Pe&&(e.render=K),W!=null&&(e.inheritAttrs=W),O&&(e.components=O),V&&(e.directives=V)}function dl(e,t,n=Pe){N(e)&&(e=Jn(e));for(const s in e){const r=e[s];let i;ee(r)?"default"in r?i=mt(r.from||s,r.default,!0):i=mt(r.from||s):i=mt(r),ce(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function Ks(e,t,n){we(N(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function si(e,t,n,s){const r=s.includes(".")?Yr(n,s):()=>n[s];if(se(e)){const i=t[e];D(i)&&nn(r,i)}else if(D(e))nn(r,e.bind(n));else if(ee(e))if(N(e))e.forEach(i=>si(i,t,n,s));else{const i=D(e.handler)?e.handler.bind(n):t[e.handler];D(i)&&nn(r,i,e)}}function ys(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>un(c,a,o,!0)),un(c,t,o)),ee(t)&&i.set(t,c),c}function un(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&un(e,i,n,!0),r&&r.forEach(o=>un(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=hl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const hl={data:ks,props:Ws,emits:Ws,methods:At,computed:At,beforeCreate:ue,created:ue,beforeMount:ue,mounted:ue,beforeUpdate:ue,updated:ue,beforeDestroy:ue,beforeUnmount:ue,destroyed:ue,unmounted:ue,activated:ue,deactivated:ue,errorCaptured:ue,serverPrefetch:ue,components:At,directives:At,watch:gl,provide:ks,inject:pl};function ks(e,t){return t?e?function(){return oe(D(e)?e.call(this,this):e,D(t)?t.call(this,this):t)}:t:e}function pl(e,t){return At(Jn(e),Jn(t))}function Jn(e){if(N(e)){const t={};for(let n=0;n1)return n&&D(t)?t.call(s&&s.proxy):t}}function yl(e,t,n,s=!1){const r={},i={};on(i,Rn,1),e.propsDefaults=Object.create(null),ii(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:To(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function vl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let a=!1;if((s||o>0)&&!(o&16)){if(o&8){const d=e.vnode.dynamicProps;for(let p=0;p{c=!0;const[g,C]=oi(p,t,!0);oe(o,g),C&&l.push(...C)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!c)return ee(e)&&s.set(e,at),at;if(N(i))for(let d=0;d-1,C[1]=P<0||R-1||Y(C,"default"))&&l.push(p)}}}const a=[o,l];return ee(e)&&s.set(e,a),a}function Vs(e){return e[0]!=="$"}function qs(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function zs(e,t){return qs(e)===qs(t)}function Ys(e,t){return N(t)?t.findIndex(n=>zs(n,e)):D(t)&&zs(t,e)?0:-1}const li=e=>e[0]==="_"||e==="$stable",vs=e=>N(e)?e.map(Te):[Te(e)],Cl=(e,t,n)=>{if(t._n)return t;const s=Ko((...r)=>vs(t(...r)),n);return s._c=!1,s},ci=(e,t,n)=>{const s=e._ctx;for(const r in e){if(li(r))continue;const i=e[r];if(D(i))t[r]=Cl(r,i,s);else if(i!=null){const o=vs(i);t[r]=()=>o}}},fi=(e,t)=>{const n=vs(t);e.slots.default=()=>n},wl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=J(t),on(t,"_",n)):ci(t,e.slots={})}else e.slots={},t&&fi(e,t);on(e.slots,Rn,1)},xl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=te;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(oe(r,t),!n&&l===1&&delete r._):(i=!t.$stable,ci(t,r)),o=t}else t&&(fi(e,t),o={default:1});if(i)for(const l in r)!li(l)&&!(l in o)&&delete r[l]};function hn(e,t,n,s,r=!1){if(N(e)){e.forEach((g,C)=>hn(g,t&&(N(t)?t[C]:t),n,s,r));return}if(gt(s)&&!r)return;const i=s.shapeFlag&4?Pn(s.component)||s.component.proxy:s.el,o=r?null:i,{i:l,r:c}=e,a=t&&t.r,d=l.refs===te?l.refs={}:l.refs,p=l.setupState;if(a!=null&&a!==c&&(se(a)?(d[a]=null,Y(p,a)&&(p[a]=null)):ce(a)&&(a.value=null)),D(c))We(c,l,12,[o,d]);else{const g=se(c),C=ce(c);if(g||C){const R=()=>{if(e.f){const P=g?Y(p,c)?p[c]:d[c]:c.value;r?N(P)&&ns(P,i):N(P)?P.includes(i)||P.push(i):g?(d[c]=[i],Y(p,c)&&(p[c]=d[c])):(c.value=[i],e.k&&(d[e.k]=c.value))}else g?(d[c]=o,Y(p,c)&&(p[c]=o)):C&&(c.value=o,e.k&&(d[e.k]=o))};o?(R.id=-1,de(R,n)):R()}}}let je=!1;const Xt=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Zt=e=>e.nodeType===8;function El(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:a}}=e,d=(_,y)=>{if(!y.hasChildNodes()){n(null,_,y),fn(),y._vnode=_;return}je=!1,p(y.firstChild,_,null,null,null),fn(),y._vnode=_,je&&console.error("Hydration completed but contains mismatches.")},p=(_,y,H,I,K,q=!1)=>{const k=Zt(_)&&_.data==="[",E=()=>P(_,y,H,I,K,k),{type:j,ref:U,shapeFlag:W,patchFlag:O}=y;let V=_.nodeType;y.el=_,O===-2&&(q=!1,y.dynamicChildren=null);let M=null;switch(j){case bt:V!==3?y.children===""?(c(y.el=r(""),o(_),_),M=_):M=E():(_.data!==y.children&&(je=!0,_.data=y.children),M=i(_));break;case be:V!==8||k?M=E():M=i(_);break;case Ft:if(k&&(_=i(_),V=_.nodeType),V===1||V===3){M=_;const ge=!y.children.length;for(let X=0;X{q=q||!!y.dynamicChildren;const{type:k,props:E,patchFlag:j,shapeFlag:U,dirs:W}=y,O=k==="input"&&W||k==="option";if(O||j!==-1){if(W&&Fe(y,null,H,"created"),E)if(O||!q||j&48)for(const M in E)(O&&M.endsWith("value")||jt(M)&&!Rt(M))&&s(_,M,null,E[M],!1,void 0,H);else E.onClick&&s(_,"onClick",null,E.onClick,!1,void 0,H);let V;if((V=E&&E.onVnodeBeforeMount)&&ve(V,H,y),W&&Fe(y,null,H,"beforeMount"),((V=E&&E.onVnodeMounted)||W)&&zr(()=>{V&&ve(V,H,y),W&&Fe(y,null,H,"mounted")},I),U&16&&!(E&&(E.innerHTML||E.textContent))){let M=C(_.firstChild,y,_,H,I,K,q);for(;M;){je=!0;const ge=M;M=M.nextSibling,l(ge)}}else U&8&&_.textContent!==y.children&&(je=!0,_.textContent=y.children)}return _.nextSibling},C=(_,y,H,I,K,q,k)=>{k=k||!!y.dynamicChildren;const E=y.children,j=E.length;for(let U=0;U{const{slotScopeIds:k}=y;k&&(K=K?K.concat(k):k);const E=o(_),j=C(i(_),y,E,H,I,K,q);return j&&Zt(j)&&j.data==="]"?i(y.anchor=j):(je=!0,c(y.anchor=a("]"),E,j),j)},P=(_,y,H,I,K,q)=>{if(je=!0,y.el=null,q){const j=$(_);for(;;){const U=i(_);if(U&&U!==j)l(U);else break}}const k=i(_),E=o(_);return l(_),n(null,y,E,k,H,I,Xt(E),K),k},$=_=>{let y=0;for(;_;)if(_=i(_),_&&Zt(_)&&(_.data==="["&&y++,_.data==="]")){if(y===0)return i(_);y--}return _};return[d,p]}const de=zr;function Tl(e){return ai(e)}function Al(e){return ai(e,El)}function ai(e,t){const n=Bn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:a,setElementText:d,parentNode:p,nextSibling:g,setScopeId:C=Pe,insertStaticContent:R}=e,P=(f,u,h,b=null,m=null,x=null,A=!1,w=null,T=!!u.dynamicChildren)=>{if(f===u)return;f&&!Ge(f,u)&&(b=kt(f),Ie(f,m,x,!0),f=null),u.patchFlag===-2&&(T=!1,u.dynamicChildren=null);const{type:v,ref:S,shapeFlag:F}=u;switch(v){case bt:$(f,u,h,b);break;case be:_(f,u,h,b);break;case Ft:f==null&&y(u,h,b,A);break;case he:O(f,u,h,b,m,x,A,w,T);break;default:F&1?K(f,u,h,b,m,x,A,w,T):F&6?V(f,u,h,b,m,x,A,w,T):(F&64||F&128)&&v.process(f,u,h,b,m,x,A,w,T,ot)}S!=null&&m&&hn(S,f&&f.ref,x,u||f,!u)},$=(f,u,h,b)=>{if(f==null)s(u.el=l(u.children),h,b);else{const m=u.el=f.el;u.children!==f.children&&a(m,u.children)}},_=(f,u,h,b)=>{f==null?s(u.el=c(u.children||""),h,b):u.el=f.el},y=(f,u,h,b)=>{[f.el,f.anchor]=R(f.children,u,h,b,f.el,f.anchor)},H=({el:f,anchor:u},h,b)=>{let m;for(;f&&f!==u;)m=g(f),s(f,h,b),f=m;s(u,h,b)},I=({el:f,anchor:u})=>{let h;for(;f&&f!==u;)h=g(f),r(f),f=h;r(u)},K=(f,u,h,b,m,x,A,w,T)=>{A=A||u.type==="svg",f==null?q(u,h,b,m,x,A,w,T):j(f,u,m,x,A,w,T)},q=(f,u,h,b,m,x,A,w)=>{let T,v;const{type:S,props:F,shapeFlag:L,transition:B,dirs:z}=f;if(T=f.el=o(f.type,x,F&&F.is,F),L&8?d(T,f.children):L&16&&E(f.children,T,null,b,m,x&&S!=="foreignObject",A,w),z&&Fe(f,null,b,"created"),k(T,f,f.scopeId,A,b),F){for(const Z in F)Z!=="value"&&!Rt(Z)&&i(T,Z,null,F[Z],x,f.children,b,m,Le);"value"in F&&i(T,"value",null,F.value),(v=F.onVnodeBeforeMount)&&ve(v,b,f)}z&&Fe(f,null,b,"beforeMount");const G=(!m||m&&!m.pendingBranch)&&B&&!B.persisted;G&&B.beforeEnter(T),s(T,u,h),((v=F&&F.onVnodeMounted)||G||z)&&de(()=>{v&&ve(v,b,f),G&&B.enter(T),z&&Fe(f,null,b,"mounted")},m)},k=(f,u,h,b,m)=>{if(h&&C(f,h),b)for(let x=0;x{for(let v=T;v{const w=u.el=f.el;let{patchFlag:T,dynamicChildren:v,dirs:S}=u;T|=f.patchFlag&16;const F=f.props||te,L=u.props||te;let B;h&&Je(h,!1),(B=L.onVnodeBeforeUpdate)&&ve(B,h,u,f),S&&Fe(u,f,h,"beforeUpdate"),h&&Je(h,!0);const z=m&&u.type!=="foreignObject";if(v?U(f.dynamicChildren,v,w,h,b,z,x):A||Q(f,u,w,null,h,b,z,x,!1),T>0){if(T&16)W(w,u,F,L,h,b,m);else if(T&2&&F.class!==L.class&&i(w,"class",null,L.class,m),T&4&&i(w,"style",F.style,L.style,m),T&8){const G=u.dynamicProps;for(let Z=0;Z{B&&ve(B,h,u,f),S&&Fe(u,f,h,"updated")},b)},U=(f,u,h,b,m,x,A)=>{for(let w=0;w{if(h!==b){if(h!==te)for(const w in h)!Rt(w)&&!(w in b)&&i(f,w,h[w],null,A,u.children,m,x,Le);for(const w in b){if(Rt(w))continue;const T=b[w],v=h[w];T!==v&&w!=="value"&&i(f,w,v,T,A,u.children,m,x,Le)}"value"in b&&i(f,"value",h.value,b.value)}},O=(f,u,h,b,m,x,A,w,T)=>{const v=u.el=f?f.el:l(""),S=u.anchor=f?f.anchor:l("");let{patchFlag:F,dynamicChildren:L,slotScopeIds:B}=u;B&&(w=w?w.concat(B):B),f==null?(s(v,h,b),s(S,h,b),E(u.children,h,S,m,x,A,w,T)):F>0&&F&64&&L&&f.dynamicChildren?(U(f.dynamicChildren,L,h,m,x,A,w),(u.key!=null||m&&u===m.subTree)&&Cs(f,u,!0)):Q(f,u,h,S,m,x,A,w,T)},V=(f,u,h,b,m,x,A,w,T)=>{u.slotScopeIds=w,f==null?u.shapeFlag&512?m.ctx.activate(u,h,b,A,T):M(u,h,b,m,x,A,T):ge(f,u,T)},M=(f,u,h,b,m,x,A)=>{const w=f.component=$l(f,b,m);if(Dt(f)&&(w.ctx.renderer=ot),Ul(w),w.asyncDep){if(m&&m.registerDep(w,X),!f.el){const T=w.subTree=re(be);_(null,T,u,h)}return}X(w,f,u,h,m,x,A)},ge=(f,u,h)=>{const b=u.component=f.component;if(Vo(f,u,h))if(b.asyncDep&&!b.asyncResolved){ne(b,u,h);return}else b.next=u,Uo(b.update),b.update();else u.el=f.el,b.vnode=u},X=(f,u,h,b,m,x,A)=>{const w=()=>{if(f.isMounted){let{next:S,bu:F,u:L,parent:B,vnode:z}=f,G=S,Z;Je(f,!1),S?(S.el=z.el,ne(f,S,A)):S=z,F&&tn(F),(Z=S.props&&S.props.onVnodeBeforeUpdate)&&ve(Z,B,S,z),Je(f,!0);const ie=Fn(f),xe=f.subTree;f.subTree=ie,P(xe,ie,p(xe.el),kt(xe),f,m,x),S.el=ie.el,G===null&&qo(f,ie.el),L&&de(L,m),(Z=S.props&&S.props.onVnodeUpdated)&&de(()=>ve(Z,B,S,z),m)}else{let S;const{el:F,props:L}=u,{bm:B,m:z,parent:G}=f,Z=gt(u);if(Je(f,!1),B&&tn(B),!Z&&(S=L&&L.onVnodeBeforeMount)&&ve(S,G,u),Je(f,!0),F&&On){const ie=()=>{f.subTree=Fn(f),On(F,f.subTree,f,m,null)};Z?u.type.__asyncLoader().then(()=>!f.isUnmounted&&ie()):ie()}else{const ie=f.subTree=Fn(f);P(null,ie,h,b,f,m,x),u.el=ie.el}if(z&&de(z,m),!Z&&(S=L&&L.onVnodeMounted)){const ie=u;de(()=>ve(S,G,ie),m)}(u.shapeFlag&256||G&>(G.vnode)&&G.vnode.shapeFlag&256)&&f.a&&de(f.a,m),f.isMounted=!0,u=h=b=null}},T=f.effect=new cs(w,()=>vn(v),f.scope),v=f.update=()=>T.run();v.id=f.uid,Je(f,!0),v()},ne=(f,u,h)=>{u.component=f;const b=f.vnode.props;f.vnode=u,f.next=null,vl(f,u.props,b,h),xl(f,u.children,h),Ct(),$s(),wt()},Q=(f,u,h,b,m,x,A,w,T=!1)=>{const v=f&&f.children,S=f?f.shapeFlag:0,F=u.children,{patchFlag:L,shapeFlag:B}=u;if(L>0){if(L&128){Kt(v,F,h,b,m,x,A,w,T);return}else if(L&256){ze(v,F,h,b,m,x,A,w,T);return}}B&8?(S&16&&Le(v,m,x),F!==v&&d(h,F)):S&16?B&16?Kt(v,F,h,b,m,x,A,w,T):Le(v,m,x,!0):(S&8&&d(h,""),B&16&&E(F,h,b,m,x,A,w,T))},ze=(f,u,h,b,m,x,A,w,T)=>{f=f||at,u=u||at;const v=f.length,S=u.length,F=Math.min(v,S);let L;for(L=0;LS?Le(f,m,x,!0,!1,F):E(u,h,b,m,x,A,w,T,F)},Kt=(f,u,h,b,m,x,A,w,T)=>{let v=0;const S=u.length;let F=f.length-1,L=S-1;for(;v<=F&&v<=L;){const B=f[v],z=u[v]=T?Ke(u[v]):Te(u[v]);if(Ge(B,z))P(B,z,h,null,m,x,A,w,T);else break;v++}for(;v<=F&&v<=L;){const B=f[F],z=u[L]=T?Ke(u[L]):Te(u[L]);if(Ge(B,z))P(B,z,h,null,m,x,A,w,T);else break;F--,L--}if(v>F){if(v<=L){const B=L+1,z=BL)for(;v<=F;)Ie(f[v],m,x,!0),v++;else{const B=v,z=v,G=new Map;for(v=z;v<=L;v++){const me=u[v]=T?Ke(u[v]):Te(u[v]);me.key!=null&&G.set(me.key,v)}let Z,ie=0;const xe=L-z+1;let lt=!1,As=0;const xt=new Array(xe);for(v=0;v=xe){Ie(me,m,x,!0);continue}let Oe;if(me.key!=null)Oe=G.get(me.key);else for(Z=z;Z<=L;Z++)if(xt[Z-z]===0&&Ge(me,u[Z])){Oe=Z;break}Oe===void 0?Ie(me,m,x,!0):(xt[Oe-z]=v+1,Oe>=As?As=Oe:lt=!0,P(me,u[Oe],h,null,m,x,A,w,T),ie++)}const Rs=lt?Rl(xt):at;for(Z=Rs.length-1,v=xe-1;v>=0;v--){const me=z+v,Oe=u[me],Ps=me+1{const{el:x,type:A,transition:w,children:T,shapeFlag:v}=f;if(v&6){Ye(f.component.subTree,u,h,b);return}if(v&128){f.suspense.move(u,h,b);return}if(v&64){A.move(f,u,h,ot);return}if(A===he){s(x,u,h);for(let F=0;Fw.enter(x),m);else{const{leave:F,delayLeave:L,afterLeave:B}=w,z=()=>s(x,u,h),G=()=>{F(x,()=>{z(),B&&B()})};L?L(x,z,G):G()}else s(x,u,h)},Ie=(f,u,h,b=!1,m=!1)=>{const{type:x,props:A,ref:w,children:T,dynamicChildren:v,shapeFlag:S,patchFlag:F,dirs:L}=f;if(w!=null&&hn(w,null,h,f,!0),S&256){u.ctx.deactivate(f);return}const B=S&1&&L,z=!gt(f);let G;if(z&&(G=A&&A.onVnodeBeforeUnmount)&&ve(G,u,f),S&6)Li(f.component,h,b);else{if(S&128){f.suspense.unmount(h,b);return}B&&Fe(f,null,u,"beforeUnmount"),S&64?f.type.remove(f,u,h,m,ot,b):v&&(x!==he||F>0&&F&64)?Le(v,u,h,!1,!0):(x===he&&F&384||!m&&S&16)&&Le(T,u,h),b&&Es(f)}(z&&(G=A&&A.onVnodeUnmounted)||B)&&de(()=>{G&&ve(G,u,f),B&&Fe(f,null,u,"unmounted")},h)},Es=f=>{const{type:u,el:h,anchor:b,transition:m}=f;if(u===he){Si(h,b);return}if(u===Ft){I(f);return}const x=()=>{r(h),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(f.shapeFlag&1&&m&&!m.persisted){const{leave:A,delayLeave:w}=m,T=()=>A(h,x);w?w(f.el,x,T):T()}else x()},Si=(f,u)=>{let h;for(;f!==u;)h=g(f),r(f),f=h;r(u)},Li=(f,u,h)=>{const{bum:b,scope:m,update:x,subTree:A,um:w}=f;b&&tn(b),m.stop(),x&&(x.active=!1,Ie(A,f,u,h)),w&&de(w,u),de(()=>{f.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},Le=(f,u,h,b=!1,m=!1,x=0)=>{for(let A=x;Af.shapeFlag&6?kt(f.component.subTree):f.shapeFlag&128?f.suspense.next():g(f.anchor||f.el),Ts=(f,u,h)=>{f==null?u._vnode&&Ie(u._vnode,null,null,!0):P(u._vnode||null,f,u,null,null,null,h),$s(),fn(),u._vnode=f},ot={p:P,um:Ie,m:Ye,r:Es,mt:M,mc:E,pc:Q,pbc:U,n:kt,o:e};let In,On;return t&&([In,On]=t(ot)),{render:Ts,hydrate:In,createApp:_l(Ts,In)}}function Je({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Cs(e,t,n=!1){const s=e.children,r=t.children;if(N(s)&&N(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}const Pl=e=>e.__isTeleport,Ot=e=>e&&(e.disabled||e.disabled===""),Js=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Zn=(e,t)=>{const n=e&&e.to;return se(n)?t?t(n):null:n},Il={__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,a){const{mc:d,pc:p,pbc:g,o:{insert:C,querySelector:R,createText:P,createComment:$}}=a,_=Ot(t.props);let{shapeFlag:y,children:H,dynamicChildren:I}=t;if(e==null){const K=t.el=P(""),q=t.anchor=P("");C(K,n,s),C(q,n,s);const k=t.target=Zn(t.props,R),E=t.targetAnchor=P("");k&&(C(E,k),o=o||Js(k));const j=(U,W)=>{y&16&&d(H,U,W,r,i,o,l,c)};_?j(n,q):k&&j(k,E)}else{t.el=e.el;const K=t.anchor=e.anchor,q=t.target=e.target,k=t.targetAnchor=e.targetAnchor,E=Ot(e.props),j=E?n:q,U=E?K:k;if(o=o||Js(q),I?(g(e.dynamicChildren,I,j,r,i,o,l),Cs(e,t,!0)):c||p(e,t,j,U,r,i,o,l,!1),_)E||Qt(t,n,K,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const W=t.target=Zn(t.props,R);W&&Qt(t,W,null,a,0)}else E&&Qt(t,q,k,a,1)}ui(t)},remove(e,t,n,s,{um:r,o:{remove:i}},o){const{shapeFlag:l,children:c,anchor:a,targetAnchor:d,target:p,props:g}=e;if(p&&i(d),(o||!Ot(g))&&(i(a),l&16))for(let C=0;C0?Re||at:null,Fl(),Ut>0&&Re&&Re.push(e),e}function of(e,t,n,s,r,i){return hi(mi(e,t,n,s,r,i,!0))}function pi(e,t,n,s,r){return hi(re(e,t,n,s,r,!0))}function pn(e){return e?e.__v_isVNode===!0:!1}function Ge(e,t){return e.type===t.type&&e.key===t.key}const Rn="__vInternal",gi=({key:e})=>e??null,sn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||ce(e)||D(e)?{i:fe,r:e,k:t,f:!!n}:e:null);function mi(e,t=null,n=null,s=0,r=null,i=e===he?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&gi(t),ref:t&&sn(t),scopeId:wn,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:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:fe};return l?(ws(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Ut>0&&!o&&Re&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Re.push(c),c}const re=Ml;function Ml(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===ei)&&(e=be),pn(e)){const l=qe(e,t,!0);return n&&ws(l,n),Ut>0&&!i&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag|=-2,l}if(Kl(e)&&(e=e.__vccOpts),t){t=Sl(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=os(l)),ee(c)&&(jr(c)&&!N(c)&&(c=oe({},c)),t.style=is(c))}const o=se(e)?1:zo(e)?128:Pl(e)?64:ee(e)?4:D(e)?2:0;return mi(e,t,n,s,r,o,i,!0)}function Sl(e){return e?jr(e)||Rn in e?oe({},e):e:null}function qe(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:o}=e,l=t?Ll(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&gi(l),ref:t&&t.ref?n&&r?N(r)?r.concat(sn(t)):[r,sn(t)]:sn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==he?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,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}}function _i(e=" ",t=0){return re(bt,null,e,t)}function lf(e,t){const n=re(Ft,null,e);return n.staticCount=t,n}function cf(e="",t=!1){return t?(di(),pi(be,null,e)):re(be,null,e)}function Te(e){return e==null||typeof e=="boolean"?re(be):N(e)?re(he,null,e.slice()):typeof e=="object"?Ke(e):re(bt,null,String(e))}function Ke(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:qe(e)}function ws(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(N(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),ws(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(Rn in t)?t._ctx=fe:r===3&&fe&&(fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else D(t)?(t={default:t,_ctx:fe},n=32):(t=String(t),s&64?(n=16,t=[_i(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ll(...e){const t={};for(let n=0;nle||fe;let xs,ct,Zs="__VUE_INSTANCE_SETTERS__";(ct=Bn()[Zs])||(ct=Bn()[Zs]=[]),ct.push(e=>le=e),xs=e=>{ct.length>1?ct.forEach(t=>t(e)):ct[0](e)};const yt=e=>{xs(e),e.scope.on()},rt=()=>{le&&le.scope.off(),xs(null)};function yi(e){return e.vnode.shapeFlag&4}let vt=!1;function Ul(e,t=!1){vt=t;const{props:n,children:s}=e.vnode,r=yi(e);yl(e,n,r,t),wl(e,s);const i=r?jl(e,t):void 0;return vt=!1,i}function jl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Pt(new Proxy(e.ctx,fl));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Ci(e):null;yt(e),Ct();const i=We(s,e,0,[e.props,r]);if(wt(),rt(),xr(i)){if(i.then(rt,rt),t)return i.then(o=>{Qs(e,o,t)}).catch(o=>{Bt(o,e,0)});e.asyncDep=i}else Qs(e,i,t)}else vi(e,t)}function Qs(e,t,n){D(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ee(t)&&(e.setupState=Dr(t)),vi(e,n)}let Gs;function vi(e,t,n){const s=e.type;if(!e.render){if(!t&&Gs&&!s.render){const r=s.template||ys(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,a=oe(oe({isCustomElement:i,delimiters:l},o),c);s.render=Gs(r,a)}}e.render=s.render||Pe}yt(e),Ct(),ul(e),wt(),rt()}function Bl(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return pe(e,"get","$attrs"),t[n]}}))}function Ci(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Bl(e)},slots:e.slots,emit:e.emit,expose:t}}function Pn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Dr(Pt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in It)return It[n](e)},has(t,n){return n in t||n in It}}))}function Dl(e,t=!0){return D(e)?e.displayName||e.name:e.name||t&&e.__name}function Kl(e){return D(e)&&"__vccOpts"in e}const Ee=(e,t)=>No(e,t,vt);function Qn(e,t,n){const s=arguments.length;return s===2?ee(t)&&!N(t)?pn(t)?re(e,null,[t]):re(e,t):re(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&pn(n)&&(n=[n]),re(e,t,n))}const kl=Symbol.for("v-scx"),Wl=()=>mt(kl),Vl="3.3.4",ql="http://www.w3.org/2000/svg",et=typeof document<"u"?document:null,er=et&&et.createElement("template"),zl={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t?et.createElementNS(ql,e):et.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>et.createTextNode(e),createComment:e=>et.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>et.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{er.innerHTML=s?`${e}`:e;const l=er.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Yl(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Jl(e,t,n){const s=e.style,r=se(n);if(n&&!r){if(t&&!se(t))for(const i in t)n[i]==null&&Gn(s,i,"");for(const i in n)Gn(s,i,n[i])}else{const i=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=i)}}const tr=/\s*!important$/;function Gn(e,t,n){if(N(n))n.forEach(s=>Gn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Xl(e,t);tr.test(n)?e.setProperty(it(s),n.replace(tr,""),"important"):e[s]=n}}const nr=["Webkit","Moz","ms"],Nn={};function Xl(e,t){const n=Nn[t];if(n)return n;let s=Se(t);if(s!=="filter"&&s in e)return Nn[t]=s;s=_n(s);for(let r=0;rHn||(nc.then(()=>Hn=0),Hn=Date.now());function rc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;we(ic(s,n.value),t,5,[s])};return n.value=e,n.attached=sc(),n}function ic(e,t){if(N(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const ir=/^on[a-z]/,oc=(e,t,n,s,r=!1,i,o,l,c)=>{t==="class"?Yl(e,s,r):t==="style"?Jl(e,n,s):jt(t)?ts(t)||ec(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):lc(e,t,s,r))?Ql(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Zl(e,t,s,r))};function lc(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&ir.test(t)&&D(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||ir.test(t)&&se(n)?!1:t in e}const Be="transition",Et="animation",wi=(e,{slots:t})=>Qn(Qo,cc(e),t);wi.displayName="Transition";const xi={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};wi.props=oe({},Jr,xi);const Xe=(e,t=[])=>{N(e)?e.forEach(n=>n(...t)):e&&e(...t)},or=e=>e?N(e)?e.some(t=>t.length>1):e.length>1:!1;function cc(e){const t={};for(const O in e)O in xi||(t[O]=e[O]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:a=o,appearToClass:d=l,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:C=`${n}-leave-to`}=e,R=fc(r),P=R&&R[0],$=R&&R[1],{onBeforeEnter:_,onEnter:y,onEnterCancelled:H,onLeave:I,onLeaveCancelled:K,onBeforeAppear:q=_,onAppear:k=y,onAppearCancelled:E=H}=t,j=(O,V,M)=>{Ze(O,V?d:l),Ze(O,V?a:o),M&&M()},U=(O,V)=>{O._isLeaving=!1,Ze(O,p),Ze(O,C),Ze(O,g),V&&V()},W=O=>(V,M)=>{const ge=O?k:y,X=()=>j(V,O,M);Xe(ge,[V,X]),lr(()=>{Ze(V,O?c:i),De(V,O?d:l),or(ge)||cr(V,s,P,X)})};return oe(t,{onBeforeEnter(O){Xe(_,[O]),De(O,i),De(O,o)},onBeforeAppear(O){Xe(q,[O]),De(O,c),De(O,a)},onEnter:W(!1),onAppear:W(!0),onLeave(O,V){O._isLeaving=!0;const M=()=>U(O,V);De(O,p),dc(),De(O,g),lr(()=>{O._isLeaving&&(Ze(O,p),De(O,C),or(I)||cr(O,s,$,M))}),Xe(I,[O,M])},onEnterCancelled(O){j(O,!1),Xe(H,[O])},onAppearCancelled(O){j(O,!0),Xe(E,[O])},onLeaveCancelled(O){U(O),Xe(K,[O])}})}function fc(e){if(e==null)return null;if(ee(e))return[$n(e.enter),$n(e.leave)];{const t=$n(e);return[t,t]}}function $n(e){return Di(e)}function De(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Ze(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function lr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ac=0;function cr(e,t,n,s){const r=e._endId=++ac,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=uc(e,t);if(!o)return s();const a=o+"end";let d=0;const p=()=>{e.removeEventListener(a,g),i()},g=C=>{C.target===e&&++d>=c&&p()};setTimeout(()=>{d(n[R]||"").split(", "),r=s(`${Be}Delay`),i=s(`${Be}Duration`),o=fr(r,i),l=s(`${Et}Delay`),c=s(`${Et}Duration`),a=fr(l,c);let d=null,p=0,g=0;t===Be?o>0&&(d=Be,p=o,g=i.length):t===Et?a>0&&(d=Et,p=a,g=c.length):(p=Math.max(o,a),d=p>0?o>a?Be:Et:null,g=d?d===Be?i.length:c.length:0);const C=d===Be&&/\b(transform|all)(,|$)/.test(s(`${Be}Property`).toString());return{type:d,timeout:p,propCount:g,hasTransform:C}}function fr(e,t){for(;e.lengthar(n)+ar(e[s])))}function ar(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function dc(){return document.body.offsetHeight}const ur=e=>{const t=e.props["onUpdate:modelValue"]||!1;return N(t)?n=>tn(t,n):t};function hc(e){e.target.composing=!0}function dr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ff={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e._assign=ur(r);const i=s||r.props&&r.props.type==="number";ft(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=jn(l)),e._assign(l)}),n&&ft(e,"change",()=>{e.value=e.value.trim()}),t||(ft(e,"compositionstart",hc),ft(e,"compositionend",dr),ft(e,"change",dr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:s,number:r}},i){if(e._assign=ur(i),e.composing||document.activeElement===e&&e.type!=="range"&&(n||s&&e.value.trim()===t||(r||e.type==="number")&&jn(e.value)===t))return;const o=t??"";e.value!==o&&(e.value=o)}},pc=["ctrl","shift","alt","meta"],gc={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)=>pc.some(n=>e[`${n}Key`]&&!t.includes(n))},af=(e,t)=>(n,...s)=>{for(let r=0;rn=>{if(!("key"in n))return;const s=it(n.key);if(t.some(r=>r===s||mc[r]===s))return e(n)},Ei=oe({patchProp:oc},zl);let St,hr=!1;function _c(){return St||(St=Tl(Ei))}function bc(){return St=hr?St:Al(Ei),hr=!0,St}const df=(...e)=>{const t=_c().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ti(s);if(!r)return;const i=t._component;!D(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.innerHTML="";const o=n(r,!1,r instanceof SVGElement);return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},hf=(...e)=>{const t=bc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ti(s);if(r)return n(r,!0,r instanceof SVGElement)},t};function Ti(e){return se(e)?document.querySelector(e):e}const pf=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},yc="modulepreload",vc=function(e){return"/qd/"+e},pr={},gf=function(t,n,s){if(!n||n.length===0)return t();const r=document.getElementsByTagName("link");return Promise.all(n.map(i=>{if(i=vc(i),i in pr)return;pr[i]=!0;const o=i.endsWith(".css"),l=o?'[rel="stylesheet"]':"";if(!!s)for(let d=r.length-1;d>=0;d--){const p=r[d];if(p.href===i&&(!o||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${l}`))return;const a=document.createElement("link");if(a.rel=o?"stylesheet":yc,o||(a.as="script",a.crossOrigin=""),a.href=i,document.head.appendChild(a),o)return new Promise((d,p)=>{a.addEventListener("load",d),a.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${i}`)))})})).then(()=>t())},Cc=window.__VP_SITE_DATA__,Ai=/^[a-z]+:/i,mf=/^pathname:\/\//,_f="vitepress-theme-appearance",Ri=/#.*$/,wc=/(index)?\.(md|html)$/,Ce=typeof document<"u",Pi={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function xc(e,t,n=!1){if(t===void 0)return!1;if(e=gr(`/${e}`),n)return new RegExp(t).test(e);if(gr(t)!==e)return!1;const s=t.match(Ri);return s?(Ce?location.hash:"")===s[0]:!0}function gr(e){return decodeURI(e).replace(Ri,"").replace(wc,"")}function Ec(e){return Ai.test(e)}function Tc(e,t){var s,r,i,o,l,c,a;const n=Object.keys(e.locales).find(d=>d!=="root"&&!Ec(d)&&xc(t,`/${d}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Oi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function Ii(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Ac(e.title,s);return`${n}${r}`}function Ac(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Rc(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function Oi(e,t){return[...e.filter(n=>!Rc(t,n)),...t]}const Pc=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Ic=/^[a-z]:/i;function mr(e){const t=Ic.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Pc,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const Oc=Symbol(),nt=Ao(Cc);function bf(e){const t=Ee(()=>Tc(nt.value,e.data.relativePath));return{site:t,theme:Ee(()=>t.value.themeConfig),page:Ee(()=>e.data),frontmatter:Ee(()=>e.data.frontmatter),params:Ee(()=>e.data.params),lang:Ee(()=>t.value.lang),dir:Ee(()=>t.value.dir),localeIndex:Ee(()=>t.value.localeIndex||"root"),title:Ee(()=>Ii(t.value,e.data)),description:Ee(()=>e.data.description||t.value.description),isDark:ht(!1)}}function yf(){const e=mt(Oc);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Fc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function _r(e){return Ai.test(e)||e.startsWith(".")?e:Fc(nt.value.base,e)}function Mc(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ce){const n="/qd/";t=mr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),t=`${n}assets/${t}.${s}.js`}else t=`./${mr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let rn=[];function vf(e){rn.push(e),An(()=>{rn=rn.filter(t=>t!==e)})}const Sc=Symbol(),br="http://a.com",Lc=()=>({path:"/",component:null,data:Pi});function Cf(e,t){const n=yn(Lc()),s={route:n,go:r};async function r(l=Ce?location.href:"/"){var a,d;await((a=s.onBeforeRouteChange)==null?void 0:a.call(s,l));const c=new URL(l,br);nt.value.cleanUrls||!c.pathname.endsWith("/")&&!c.pathname.endsWith(".html")&&(c.pathname+=".html",l=c.pathname+c.search+c.hash),Ce&&l!==location.href&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",l)),await o(l),await((d=s.onAfterRouteChanged)==null?void 0:d.call(s,l))}let i=null;async function o(l,c=0,a=!1){const d=new URL(l,br),p=i=d.pathname;try{let g=await e(p);if(i===p){i=null;const{default:C,__pageData:R}=g;if(!C)throw new Error(`Invalid route component: ${C}`);n.path=Ce?p:_r(p),n.component=Pt(C),n.data=Pt(R),Ce&&kr(()=>{let P=nt.value.base+R.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!nt.value.cleanUrls&&!P.endsWith("/")&&(P+=".html"),P!==d.pathname&&(d.pathname=P,l=P+d.search+d.hash,history.replaceState(null,"",l)),d.hash&&!c){let $=null;try{$=document.querySelector(decodeURIComponent(d.hash))}catch(_){console.warn(_)}if($){yr($,d.hash);return}}window.scrollTo(0,c)})}}catch(g){if(!/fetch/.test(g.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(g),!a)try{const C=await fetch(nt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await C.json(),await o(l,c,!0);return}catch{}i===p&&(i=null,n.path=Ce?p:_r(p),n.component=t?Pt(t):null,n.data=Pi)}}return Ce&&(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:d}=a,{href:p,origin:g,pathname:C,hash:R,search:P}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),$=window.location,_=C.match(/\.\w+$/);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&d!=="_blank"&&g===$.origin&&!(_&&_[0]!==".html")&&(l.preventDefault(),C===$.pathname&&P===$.search?R&&(R!==$.hash&&(history.pushState(null,"",R),window.dispatchEvent(new Event("hashchange"))),yr(a,R,a.classList.contains("header-anchor"))):r(p))}},{capture:!0}),window.addEventListener("popstate",l=>{o(location.href,l.state&&l.state.scrollPosition||0)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Nc(){const e=mt(Sc);if(!e)throw new Error("useRouter() is called without provider.");return e}function Fi(){return Nc().route}function yr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.querySelector(decodeURIComponent(t))}catch(r){console.warn(r)}if(s){const r=nt.value.scrollOffset;let i=0;if(typeof r=="number")i=r;else if(typeof r=="string")i=vr(r);else if(Array.isArray(r))for(const c of r){const a=vr(c);if(a){i=a;break}}const o=parseInt(window.getComputedStyle(s).paddingTop,10),l=window.scrollY+s.getBoundingClientRect().top-i+o;!n||Math.abs(l-window.scrollY)>window.innerHeight?window.scrollTo(0,l):window.scrollTo({left:0,top:l,behavior:"smooth"})}}function vr(e){const t=document.querySelector(e);if(!t)return 0;const n=t.getBoundingClientRect().bottom;return n<0?0:n+24}const Cr=()=>rn.forEach(e=>e()),wf=_s({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Fi();return()=>Qn(e.as,{style:{position:"relative"}},[t.component?Qn(t.component,{onVnodeMounted:Cr,onVnodeUpdated:Cr}):"404 Page Not Found"])}});function xf(e,t){let n=[],s=!0;const r=i=>{if(s){s=!1;return}n.forEach(o=>document.head.removeChild(o)),n=[],i.forEach(o=>{const l=Hc(o);document.head.appendChild(l),n.push(l)})};Yo(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[];document.title=Ii(o,i),document.querySelector("meta[name=description]").setAttribute("content",l||o.description),r(Oi(o.head,Uc(c)))})}function Hc([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),s}function $c(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Uc(e){return e.filter(t=>!$c(t))}const Un=new Set,Mi=()=>document.createElement("link"),jc=e=>{const t=Mi();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Bc=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let Gt;const Dc=Ce&&(Gt=Mi())&&Gt.relList&&Gt.relList.supports&&Gt.relList.supports("prefetch")?jc:Bc;function Ef(){if(!Ce||!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 s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!Un.has(c)){Un.add(c);const a=Mc(c);Dc(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{target:o}=i,{hostname:l,pathname:c}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),a=c.match(/\.\w+$/);a&&a[0]!==".html"||o!=="_blank"&&l===location.hostname&&(c!==location.pathname?n.observe(i):Un.add(c))})})};Tn(s);const r=Fi();nn(()=>r.path,s),An(()=>{n&&n.disconnect()})}const Tf=_s({setup(e,{slots:t}){const n=ht(!1);return Tn(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Af(){if(Ce){const e=new Map;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className);let l="";i.querySelectorAll("span.line:not(.diff.remove)").forEach(c=>l+=(c.textContent||"")+` -`),l=l.slice(0,-1),o&&(l=l.replace(/^ *(\$|>) /gm,"").trim()),Kc(l).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const c=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,c)})}})}}async function Kc(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 s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function Rf(){Ce&&window.addEventListener("click",e=>{var n,s;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement,i=Array.from((r==null?void 0:r.querySelectorAll("input"))||[]).indexOf(t),o=r==null?void 0:r.querySelector('div[class*="language-"].active'),l=(s=r==null?void 0:r.querySelectorAll('div[class*="language-"]:not(.language-id)'))==null?void 0:s[i];o&&l&&o!==l&&(o.classList.remove("active"),l.classList.add("active"))}})}export{vf as $,Fi as A,An as B,mi as C,pi as D,Ko as E,he as F,cf as G,Qc as H,Ll as I,re as J,is as K,Zc as L,gf as M,Gc as N,Ai as O,mf as P,Ce as Q,ef as R,zc as S,wi as T,Yc as U,lf as V,_f as W,mt as X,bl as Y,rl as Z,pf as _,_i as a,uf as a0,nf as a1,Jc as a2,af as a3,sf as a4,xf as a5,Sc as a6,bf as a7,Oc as a8,wf as a9,Tf as aa,nt as ab,hf as ac,Cf as ad,Mc as ae,Ef as af,Af as ag,Rf as ah,Qn as ai,Nc as aj,Gr as ak,Xc as al,ff as am,rf as an,Pt as ao,df as ap,Po as b,of as c,_s as d,qc as e,Ur as f,Vc as g,ht as h,Xi as i,Wc as j,Yo as k,Ee as l,bi as m,os as n,di as o,Tn as p,ce as q,tf as r,Ao as s,kc as t,yf as u,kr as v,nn as w,Ec as x,_r as y,xc as z}; +function es(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}const te={},ft=[],Pe=()=>{},Ni=()=>!1,Hi=/^on[^a-z]/,jt=e=>Hi.test(e),ts=e=>e.startsWith("onUpdate:"),oe=Object.assign,ns=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},$i=Object.prototype.hasOwnProperty,Y=(e,t)=>$i.call(e,t),N=Array.isArray,ut=e=>gn(e)==="[object Map]",Cr=e=>gn(e)==="[object Set]",D=e=>typeof e=="function",se=e=>typeof e=="string",ss=e=>typeof e=="symbol",ee=e=>e!==null&&typeof e=="object",xr=e=>ee(e)&&D(e.then)&&D(e.catch),Er=Object.prototype.toString,gn=e=>Er.call(e),Ui=e=>gn(e).slice(8,-1),Tr=e=>gn(e)==="[object Object]",rs=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Rt=es(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),mn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},ji=/-(\w)/g,Se=mn(e=>e.replace(ji,(t,n)=>n?n.toUpperCase():"")),Bi=/\B([A-Z])/g,it=mn(e=>e.replace(Bi,"-$1").toLowerCase()),_n=mn(e=>e.charAt(0).toUpperCase()+e.slice(1)),en=mn(e=>e?`on${_n(e)}`:""),Lt=(e,t)=>!Object.is(e,t),tn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},jn=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Di=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let Is;const Bn=()=>Is||(Is=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function is(e){if(N(e)){const t={};for(let n=0;n{if(n){const s=n.split(ki);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function os(e){let t="";if(se(e))t=e;else if(N(e))for(let n=0;nse(e)?e:e==null?"":N(e)||ee(e)&&(e.toString===Er||!D(e.toString))?JSON.stringify(e,Rr,2):String(e),Rr=(e,t)=>t&&t.__v_isRef?Rr(e,t.value):ut(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:Cr(t)?{[`Set(${t.size})`]:[...t.values()]}:ee(t)&&!N(t)&&!Tr(t)?String(t):t;let _e;class Yi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=_e,!t&&_e&&(this.index=(_e.scopes||(_e.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=_e;try{return _e=this,t()}finally{_e=n}}}on(){_e=this}off(){_e=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Pr=e=>(e.w&Ve)>0,Ir=e=>(e.n&Ve)>0,Zi=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(d==="length"||d>=c)&&l.push(f)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":N(e)?rs(n)&&l.push(o.get("length")):(l.push(o.get(st)),ut(e)&&l.push(o.get(Kn)));break;case"delete":N(e)||(l.push(o.get(st)),ut(e)&&l.push(o.get(Kn)));break;case"set":ut(e)&&l.push(o.get(st));break}if(l.length===1)l[0]&&kn(l[0]);else{const c=[];for(const f of l)f&&c.push(...f);kn(ls(c))}}function kn(e,t){const n=N(e)?e:[...e];for(const s of n)s.computed&&Fs(s);for(const s of n)s.computed||Fs(s)}function Fs(e,t){(e!==Ae||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Gi(e,t){var n;return(n=ln.get(e))==null?void 0:n.get(t)}const eo=es("__proto__,__v_isRef,__isVue"),Mr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ss)),to=as(),no=as(!1,!0),so=as(!0),Ms=ro();function ro(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=J(this);for(let i=0,o=this.length;i{e[t]=function(...n){wt();const s=J(this)[t].apply(this,n);return Ct(),s}}),e}function io(e){const t=J(this);return pe(t,"has",e),t.hasOwnProperty(e)}function as(e=!1,t=!1){return function(s,r,i){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&i===(e?t?Co:$r:t?Hr:Nr).get(s))return s;const o=N(s);if(!e){if(o&&Y(Ms,r))return Reflect.get(Ms,r,i);if(r==="hasOwnProperty")return io}const l=Reflect.get(s,r,i);return(ss(r)?Mr.has(r):eo(r))||(e||pe(s,"get",r),t)?l:ce(l)?o&&rs(r)?l:l.value:ee(l)?e?Ur(l):yn(l):l}}const oo=Sr(),lo=Sr(!0);function Sr(e=!1){return function(n,s,r,i){let o=n[s];if(_t(o)&&ce(o)&&!ce(r))return!1;if(!e&&(!cn(r)&&!_t(r)&&(o=J(o),r=J(r)),!N(n)&&ce(o)&&!ce(r)))return o.value=r,!0;const l=N(n)&&rs(s)?Number(s)e,bn=e=>Reflect.getPrototypeOf(e);function Wt(e,t,n=!1,s=!1){e=e.__v_raw;const r=J(e),i=J(t);n||(t!==i&&pe(r,"get",t),pe(r,"get",i));const{has:o}=bn(r),l=s?fs:n?hs:Nt;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Vt(e,t=!1){const n=this.__v_raw,s=J(n),r=J(e);return t||(e!==r&&pe(s,"has",e),pe(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function qt(e,t=!1){return e=e.__v_raw,!t&&pe(J(e),"iterate",st),Reflect.get(e,"size",e)}function Ss(e){e=J(e);const t=J(this);return bn(t).has.call(t,e)||(t.add(e),He(t,"add",e,e)),this}function Ls(e,t){t=J(t);const n=J(this),{has:s,get:r}=bn(n);let i=s.call(n,e);i||(e=J(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?Lt(t,o)&&He(n,"set",e,t):He(n,"add",e,t),this}function Ns(e){const t=J(this),{has:n,get:s}=bn(t);let r=n.call(t,e);r||(e=J(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&He(t,"delete",e,void 0),i}function Hs(){const e=J(this),t=e.size!==0,n=e.clear();return t&&He(e,"clear",void 0,void 0),n}function zt(e,t){return function(s,r){const i=this,o=i.__v_raw,l=J(o),c=t?fs:e?hs:Nt;return!e&&pe(l,"iterate",st),o.forEach((f,d)=>s.call(r,c(f),c(d),i))}}function Yt(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=ut(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),d=n?fs:t?hs:Nt;return!t&&pe(i,"iterate",c?Kn:st),{next(){const{value:p,done:g}=f.next();return g?{value:p,done:g}:{value:l?[d(p[0]),d(p[1])]:d(p),done:g}},[Symbol.iterator](){return this}}}}function Ue(e){return function(...t){return e==="delete"?!1:this}}function po(){const e={get(i){return Wt(this,i)},get size(){return qt(this)},has:Vt,add:Ss,set:Ls,delete:Ns,clear:Hs,forEach:zt(!1,!1)},t={get(i){return Wt(this,i,!1,!0)},get size(){return qt(this)},has:Vt,add:Ss,set:Ls,delete:Ns,clear:Hs,forEach:zt(!1,!0)},n={get(i){return Wt(this,i,!0)},get size(){return qt(this,!0)},has(i){return Vt.call(this,i,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:zt(!0,!1)},s={get(i){return Wt(this,i,!0,!0)},get size(){return qt(this,!0)},has(i){return Vt.call(this,i,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:zt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Yt(i,!1,!1),n[i]=Yt(i,!0,!1),t[i]=Yt(i,!1,!0),s[i]=Yt(i,!0,!0)}),[e,n,t,s]}const[go,mo,_o,bo]=po();function us(e,t){const n=t?e?bo:_o:e?mo:go;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Y(n,r)&&r in s?n:s,r,i)}const yo={get:us(!1,!1)},vo={get:us(!1,!0)},wo={get:us(!0,!1)},Nr=new WeakMap,Hr=new WeakMap,$r=new WeakMap,Co=new WeakMap;function xo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Eo(e){return e.__v_skip||!Object.isExtensible(e)?0:xo(Ui(e))}function yn(e){return _t(e)?e:ds(e,!1,Lr,yo,Nr)}function To(e){return ds(e,!1,ho,vo,Hr)}function Ur(e){return ds(e,!0,uo,wo,$r)}function ds(e,t,n,s,r){if(!ee(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=Eo(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function dt(e){return _t(e)?dt(e.__v_raw):!!(e&&e.__v_isReactive)}function _t(e){return!!(e&&e.__v_isReadonly)}function cn(e){return!!(e&&e.__v_isShallow)}function jr(e){return dt(e)||_t(e)}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Pt(e){return on(e,"__v_skip",!0),e}const Nt=e=>ee(e)?yn(e):e,hs=e=>ee(e)?Ur(e):e;function ps(e){ke&&Ae&&(e=J(e),Fr(e.dep||(e.dep=ls())))}function gs(e,t){e=J(e);const n=e.dep;n&&kn(n)}function ce(e){return!!(e&&e.__v_isRef===!0)}function ht(e){return Br(e,!1)}function Ao(e){return Br(e,!0)}function Br(e,t){return ce(e)?e:new Ro(e,t)}class Ro{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:Nt(t)}get value(){return ps(this),this._value}set value(t){const n=this.__v_isShallow||cn(t)||_t(t);t=n?t:J(t),Lt(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Nt(t),gs(this))}}function Po(e){return ce(e)?e.value:e}const Io={get:(e,t,n)=>Po(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ce(r)&&!ce(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Dr(e){return dt(e)?e:new Proxy(e,Io)}class Oo{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>ps(this),()=>gs(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function Vc(e){return new Oo(e)}class Fo{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,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 Gi(J(this._object),this._key)}}class Mo{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function qc(e,t,n){return ce(e)?e:D(e)?new Mo(e):ee(e)&&arguments.length>1?So(e,t,n):ht(e)}function So(e,t,n){const s=e[t];return ce(s)?s:new Fo(e,t,n)}class Lo{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new cs(t,()=>{this._dirty||(this._dirty=!0,gs(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=J(this);return ps(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function No(e,t,n=!1){let s,r;const i=D(e);return i?(s=e,r=Pe):(s=e.get,r=e.set),new Lo(s,r,i||!r,n)}function We(e,t,n,s){let r;try{r=s?e(...s):e()}catch(i){Bt(i,t,n)}return r}function Ce(e,t,n,s){if(D(e)){const i=We(e,t,n,s);return i&&xr(i)&&i.catch(o=>{Bt(o,t,n)}),i}const r=[];for(let i=0;i>>1;$t(fe[s])Me&&fe.splice(t,1)}function jo(e){N(e)?pt.push(...e):(!Ne||!Ne.includes(e,e.allowRecurse?Qe+1:Qe))&&pt.push(e),Wr()}function $s(e,t=Ht?Me+1:0){for(;t$t(n)-$t(s)),Qe=0;Qee.id==null?1/0:e.id,Bo=(e,t)=>{const n=$t(e)-$t(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Vr(e){Wn=!1,Ht=!0,fe.sort(Bo);const t=Pe;try{for(Me=0;Mese(w)?w.trim():w)),p&&(r=n.map(jn))}let l,c=s[l=en(t)]||s[l=en(Se(t))];!c&&i&&(c=s[l=en(it(t))]),c&&Ce(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ce(f,e,6,r)}}function qr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!D(e)){const c=f=>{const d=qr(f,t,!0);d&&(l=!0,oe(o,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ee(e)&&s.set(e,null),null):(N(i)?i.forEach(c=>o[c]=null):oe(o,i),ee(e)&&s.set(e,o),o)}function wn(e,t){return!e||!jt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,it(t))||Y(e,t))}let ae=null,Cn=null;function fn(e){const t=ae;return ae=e,Cn=e&&e.type.__scopeId||null,t}function zc(e){Cn=e}function Yc(){Cn=null}function Ko(e,t=ae,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Xs(-1);const i=fn(t);let o;try{o=e(...r)}finally{fn(i),s._d&&Xs(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Fn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[o],slots:l,attrs:c,emit:f,render:d,renderCache:p,data:g,setupState:w,ctx:R,inheritAttrs:P}=e;let $,_;const y=fn(e);try{if(n.shapeFlag&4){const I=r||s;$=Te(d.call(I,I,p,i,w,g,R)),_=c}else{const I=t;$=Te(I.length>1?I(i,{attrs:c,slots:l,emit:f}):I(i,null)),_=t.props?c:ko(c)}}catch(I){Mt.length=0,Bt(I,e,1),$=re(be)}let H=$;if(_&&P!==!1){const I=Object.keys(_),{shapeFlag:K}=H;I.length&&K&7&&(o&&I.some(ts)&&(_=Wo(_,o)),H=qe(H,_))}return n.dirs&&(H=qe(H),H.dirs=H.dirs?H.dirs.concat(n.dirs):n.dirs),n.transition&&(H.transition=n.transition),$=H,fn(y),$}const ko=e=>{let t;for(const n in e)(n==="class"||n==="style"||jt(n))&&((t||(t={}))[n]=e[n]);return t},Wo=(e,t)=>{const n={};for(const s in e)(!ts(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Vo(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Us(s,o,f):!!o;if(c&8){const d=t.dynamicProps;for(let p=0;pe.__isSuspense;function zr(e,t){t&&t.pendingBranch?N(e)?t.effects.push(...e):t.effects.push(e):jo(e)}function Yo(e,t){return xn(e,null,t)}function Jc(e,t){return xn(e,null,{flush:"post"})}const Jt={};function nn(e,t,n){return xn(e,t,n)}function xn(e,t,{immediate:n,deep:s,flush:r,onTrack:i,onTrigger:o}=te){var l;const c=Xi()===((l=le)==null?void 0:l.scope)?le:null;let f,d=!1,p=!1;if(ce(e)?(f=()=>e.value,d=cn(e)):dt(e)?(f=()=>e,s=!0):N(e)?(p=!0,d=e.some(I=>dt(I)||cn(I)),f=()=>e.map(I=>{if(ce(I))return I.value;if(dt(I))return tt(I);if(D(I))return We(I,c,2)})):D(e)?t?f=()=>We(e,c,2):f=()=>{if(!(c&&c.isUnmounted))return g&&g(),Ce(e,c,3,[w])}:f=Pe,t&&s){const I=f;f=()=>tt(I())}let g,w=I=>{g=y.onStop=()=>{We(I,c,4)}},R;if(vt)if(w=Pe,t?n&&Ce(t,c,3,[f(),p?[]:void 0,w]):f(),r==="sync"){const I=Wl();R=I.__watcherHandles||(I.__watcherHandles=[])}else return Pe;let P=p?new Array(e.length).fill(Jt):Jt;const $=()=>{if(y.active)if(t){const I=y.run();(s||d||(p?I.some((K,q)=>Lt(K,P[q])):Lt(I,P)))&&(g&&g(),Ce(t,c,3,[I,P===Jt?void 0:p&&P[0]===Jt?[]:P,w]),P=I)}else y.run()};$.allowRecurse=!!t;let _;r==="sync"?_=$:r==="post"?_=()=>de($,c&&c.suspense):($.pre=!0,c&&($.id=c.uid),_=()=>vn($));const y=new cs(f,_);t?n?$():P=y.run():r==="post"?de(y.run.bind(y),c&&c.suspense):y.run();const H=()=>{y.stop(),c&&c.scope&&ns(c.scope.effects,y)};return R&&R.push(H),H}function Jo(e,t,n){const s=this.proxy,r=se(e)?e.includes(".")?Yr(s,e):()=>s[e]:e.bind(s,s);let i;D(t)?i=t:(i=t.handler,n=t);const o=le;yt(this);const l=xn(r,i.bind(s),n);return o?yt(o):rt(),l}function Yr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{tt(n,t)});else if(Tr(e))for(const n in e)tt(e[n],t);return e}function Xc(e,t){const n=ae;if(n===null)return e;const s=Pn(n)||n.proxy,r=e.dirs||(e.dirs=[]);for(let i=0;i{e.isMounted=!0}),Gr(()=>{e.isUnmounting=!0}),e}const ye=[Function,Array],Jr={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ye,onEnter:ye,onAfterEnter:ye,onEnterCancelled:ye,onBeforeLeave:ye,onLeave:ye,onAfterLeave:ye,onLeaveCancelled:ye,onBeforeAppear:ye,onAppear:ye,onAfterAppear:ye,onAppearCancelled:ye},Zo={name:"BaseTransition",props:Jr,setup(e,{slots:t}){const n=bi(),s=Xo();let r;return()=>{const i=t.default&&Zr(t.default(),!0);if(!i||!i.length)return;let o=i[0];if(i.length>1){for(const P of i)if(P.type!==be){o=P;break}}const l=J(e),{mode:c}=l;if(s.isLeaving)return Mn(o);const f=js(o);if(!f)return Mn(o);const d=Vn(f,l,s,n);qn(f,d);const p=n.subTree,g=p&&js(p);let w=!1;const{getTransitionKey:R}=f.type;if(R){const P=R();r===void 0?r=P:P!==r&&(r=P,w=!0)}if(g&&g.type!==be&&(!Ge(f,g)||w)){const P=Vn(g,l,s,n);if(qn(g,P),c==="out-in")return s.isLeaving=!0,P.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&n.update()},Mn(o);c==="in-out"&&f.type!==be&&(P.delayLeave=($,_,y)=>{const H=Xr(s,g);H[String(g.key)]=g,$._leaveCb=()=>{_(),$._leaveCb=void 0,delete d.delayedLeave},d.delayedLeave=y})}return o}}},Qo=Zo;function Xr(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Vn(e,t,n,s){const{appear:r,mode:i,persisted:o=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:f,onEnterCancelled:d,onBeforeLeave:p,onLeave:g,onAfterLeave:w,onLeaveCancelled:R,onBeforeAppear:P,onAppear:$,onAfterAppear:_,onAppearCancelled:y}=t,H=String(e.key),I=Xr(n,e),K=(E,j)=>{E&&Ce(E,s,9,j)},q=(E,j)=>{const U=j[1];K(E,j),N(E)?E.every(W=>W.length<=1)&&U():E.length<=1&&U()},k={mode:i,persisted:o,beforeEnter(E){let j=l;if(!n.isMounted)if(r)j=P||l;else return;E._leaveCb&&E._leaveCb(!0);const U=I[H];U&&Ge(e,U)&&U.el._leaveCb&&U.el._leaveCb(),K(j,[E])},enter(E){let j=c,U=f,W=d;if(!n.isMounted)if(r)j=$||c,U=_||f,W=y||d;else return;let O=!1;const V=E._enterCb=M=>{O||(O=!0,M?K(W,[E]):K(U,[E]),k.delayedLeave&&k.delayedLeave(),E._enterCb=void 0)};j?q(j,[E,V]):V()},leave(E,j){const U=String(e.key);if(E._enterCb&&E._enterCb(!0),n.isUnmounting)return j();K(p,[E]);let W=!1;const O=E._leaveCb=V=>{W||(W=!0,j(),V?K(R,[E]):K(w,[E]),E._leaveCb=void 0,I[U]===e&&delete I[U])};I[U]=e,g?q(g,[E,O]):O()},clone(E){return Vn(E,t,n,s)}};return k}function Mn(e){if(Dt(e))return e=qe(e),e.children=null,e}function js(e){return Dt(e)?e.children?e.children[0]:void 0:e}function qn(e,t){e.shapeFlag&6&&e.component?qn(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 Zr(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;ioe({name:e.name},t,{setup:e}))():e}const gt=e=>!!e.type.__asyncLoader;function Zc(e){D(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,timeout:i,suspensible:o=!0,onError:l}=e;let c=null,f,d=0;const p=()=>(d++,c=null,g()),g=()=>{let w;return c||(w=c=t().catch(R=>{if(R=R instanceof Error?R:new Error(String(R)),l)return new Promise((P,$)=>{l(R,()=>P(p()),()=>$(R),d+1)});throw R}).then(R=>w!==c&&c?c:(R&&(R.__esModule||R[Symbol.toStringTag]==="Module")&&(R=R.default),f=R,R)))};return _s({name:"AsyncComponentWrapper",__asyncLoader:g,get __asyncResolved(){return f},setup(){const w=le;if(f)return()=>Sn(f,w);const R=y=>{c=null,Bt(y,w,13,!s)};if(o&&w.suspense||vt)return g().then(y=>()=>Sn(y,w)).catch(y=>(R(y),()=>s?re(s,{error:y}):null));const P=ht(!1),$=ht(),_=ht(!!r);return r&&setTimeout(()=>{_.value=!1},r),i!=null&&setTimeout(()=>{if(!P.value&&!$.value){const y=new Error(`Async component timed out after ${i}ms.`);R(y),$.value=y}},i),g().then(()=>{P.value=!0,w.parent&&Dt(w.parent.vnode)&&vn(w.parent.update)}).catch(y=>{R(y),$.value=y}),()=>{if(P.value&&f)return Sn(f,w);if($.value&&s)return re(s,{error:$.value});if(n&&!_.value)return re(n)}}})}function Sn(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=re(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const Dt=e=>e.type.__isKeepAlive;function Go(e,t){Qr(e,"a",t)}function el(e,t){Qr(e,"da",t)}function Qr(e,t,n=le){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(En(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Dt(r.parent.vnode)&&tl(s,t,n,r),r=r.parent}}function tl(e,t,n,s){const r=En(t,e,s,!0);An(()=>{ns(s[t],r)},n)}function En(e,t,n=le,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;wt(),yt(n);const l=Ce(t,n,e,o);return rt(),Ct(),l});return s?r.unshift(i):r.push(i),i}}const $e=e=>(t,n=le)=>(!vt||e==="sp")&&En(e,(...s)=>t(...s),n),nl=$e("bm"),Tn=$e("m"),sl=$e("bu"),rl=$e("u"),Gr=$e("bum"),An=$e("um"),il=$e("sp"),ol=$e("rtg"),ll=$e("rtc");function cl(e,t=le){En("ec",e,t)}const bs="components";function Qc(e,t){return ti(bs,e,!0,t)||e}const ei=Symbol.for("v-ndc");function Gc(e){return se(e)?ti(bs,e,!1)||e:e||ei}function ti(e,t,n=!0,s=!1){const r=ae||le;if(r){const i=r.type;if(e===bs){const l=Dl(i,!1);if(l&&(l===t||l===Se(t)||l===_n(Se(t))))return i}const o=Bs(r[e]||i[e],t)||Bs(r.appContext[e],t);return!o&&s?i:o}}function Bs(e,t){return e&&(e[t]||e[Se(t)]||e[_n(Se(t))])}function ea(e,t,n,s){let r;const i=n&&n[s];if(N(e)||se(e)){r=new Array(e.length);for(let o=0,l=e.length;ot(o,l,void 0,i&&i[l]));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;lpn(t)?!(t.type===be||t.type===he&&!ni(t.children)):!0)?e:null}function na(e,t){const n={};for(const s in e)n[t&&/[A-Z]/.test(s)?`on:${s}`:en(s)]=e[s];return n}const zn=e=>e?yi(e)?Pn(e)||e.proxy:zn(e.parent):null,It=oe(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=>zn(e.parent),$root:e=>zn(e.root),$emit:e=>e.emit,$options:e=>ys(e),$forceUpdate:e=>e.f||(e.f=()=>vn(e.update)),$nextTick:e=>e.n||(e.n=kr.bind(e.proxy)),$watch:e=>Jo.bind(e)}),Ln=(e,t)=>e!==te&&!e.__isScriptSetup&&Y(e,t),al={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const w=o[t];if(w!==void 0)switch(w){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Ln(s,t))return o[t]=1,s[t];if(r!==te&&Y(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&Y(f,t))return o[t]=3,i[t];if(n!==te&&Y(n,t))return o[t]=4,n[t];Yn&&(o[t]=0)}}const d=It[t];let p,g;if(d)return t==="$attrs"&&pe(e,"get",t),d(e);if((p=l.__cssModules)&&(p=p[t]))return p;if(n!==te&&Y(n,t))return o[t]=4,n[t];if(g=c.config.globalProperties,Y(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Ln(r,t)?(r[t]=n,!0):s!==te&&Y(s,t)?(s[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==te&&Y(e,o)||Ln(t,o)||(l=i[0])&&Y(l,o)||Y(s,o)||Y(It,o)||Y(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function sa(){return fl().slots}function fl(){const e=bi();return e.setupContext||(e.setupContext=wi(e))}function Ds(e){return N(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Yn=!0;function ul(e){const t=ys(e),n=e.proxy,s=e.ctx;Yn=!1,t.beforeCreate&&Ks(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:d,beforeMount:p,mounted:g,beforeUpdate:w,updated:R,activated:P,deactivated:$,beforeDestroy:_,beforeUnmount:y,destroyed:H,unmounted:I,render:K,renderTracked:q,renderTriggered:k,errorCaptured:E,serverPrefetch:j,expose:U,inheritAttrs:W,components:O,directives:V,filters:M}=t;if(f&&dl(f,s,null),o)for(const ne in o){const Q=o[ne];D(Q)&&(s[ne]=Q.bind(n))}if(r){const ne=r.call(n,n);ee(ne)&&(e.data=yn(ne))}if(Yn=!0,i)for(const ne in i){const Q=i[ne],ze=D(Q)?Q.bind(n,n):D(Q.get)?Q.get.bind(n,n):Pe,Kt=!D(Q)&&D(Q.set)?Q.set.bind(n):Pe,Ye=Ee({get:ze,set:Kt});Object.defineProperty(s,ne,{enumerable:!0,configurable:!0,get:()=>Ye.value,set:Ie=>Ye.value=Ie})}if(l)for(const ne in l)si(l[ne],s,n,ne);if(c){const ne=D(c)?c.call(n):c;Reflect.ownKeys(ne).forEach(Q=>{bl(Q,ne[Q])})}d&&Ks(d,e,"c");function X(ne,Q){N(Q)?Q.forEach(ze=>ne(ze.bind(n))):Q&&ne(Q.bind(n))}if(X(nl,p),X(Tn,g),X(sl,w),X(rl,R),X(Go,P),X(el,$),X(cl,E),X(ll,q),X(ol,k),X(Gr,y),X(An,I),X(il,j),N(U))if(U.length){const ne=e.exposed||(e.exposed={});U.forEach(Q=>{Object.defineProperty(ne,Q,{get:()=>n[Q],set:ze=>n[Q]=ze})})}else e.exposed||(e.exposed={});K&&e.render===Pe&&(e.render=K),W!=null&&(e.inheritAttrs=W),O&&(e.components=O),V&&(e.directives=V)}function dl(e,t,n=Pe){N(e)&&(e=Jn(e));for(const s in e){const r=e[s];let i;ee(r)?"default"in r?i=mt(r.from||s,r.default,!0):i=mt(r.from||s):i=mt(r),ce(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function Ks(e,t,n){Ce(N(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function si(e,t,n,s){const r=s.includes(".")?Yr(n,s):()=>n[s];if(se(e)){const i=t[e];D(i)&&nn(r,i)}else if(D(e))nn(r,e.bind(n));else if(ee(e))if(N(e))e.forEach(i=>si(i,t,n,s));else{const i=D(e.handler)?e.handler.bind(n):t[e.handler];D(i)&&nn(r,i,e)}}function ys(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>un(c,f,o,!0)),un(c,t,o)),ee(t)&&i.set(t,c),c}function un(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&un(e,i,n,!0),r&&r.forEach(o=>un(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=hl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const hl={data:ks,props:Ws,emits:Ws,methods:At,computed:At,beforeCreate:ue,created:ue,beforeMount:ue,mounted:ue,beforeUpdate:ue,updated:ue,beforeDestroy:ue,beforeUnmount:ue,destroyed:ue,unmounted:ue,activated:ue,deactivated:ue,errorCaptured:ue,serverPrefetch:ue,components:At,directives:At,watch:gl,provide:ks,inject:pl};function ks(e,t){return t?e?function(){return oe(D(e)?e.call(this,this):e,D(t)?t.call(this,this):t)}:t:e}function pl(e,t){return At(Jn(e),Jn(t))}function Jn(e){if(N(e)){const t={};for(let n=0;n1)return n&&D(t)?t.call(s&&s.proxy):t}}function yl(e,t,n,s=!1){const r={},i={};on(i,Rn,1),e.propsDefaults=Object.create(null),ii(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:To(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function vl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const d=e.vnode.dynamicProps;for(let p=0;p{c=!0;const[g,w]=oi(p,t,!0);oe(o,g),w&&l.push(...w)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!c)return ee(e)&&s.set(e,ft),ft;if(N(i))for(let d=0;d-1,w[1]=P<0||R-1||Y(w,"default"))&&l.push(p)}}}const f=[o,l];return ee(e)&&s.set(e,f),f}function Vs(e){return e[0]!=="$"}function qs(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function zs(e,t){return qs(e)===qs(t)}function Ys(e,t){return N(t)?t.findIndex(n=>zs(n,e)):D(t)&&zs(t,e)?0:-1}const li=e=>e[0]==="_"||e==="$stable",vs=e=>N(e)?e.map(Te):[Te(e)],wl=(e,t,n)=>{if(t._n)return t;const s=Ko((...r)=>vs(t(...r)),n);return s._c=!1,s},ci=(e,t,n)=>{const s=e._ctx;for(const r in e){if(li(r))continue;const i=e[r];if(D(i))t[r]=wl(r,i,s);else if(i!=null){const o=vs(i);t[r]=()=>o}}},ai=(e,t)=>{const n=vs(t);e.slots.default=()=>n},Cl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=J(t),on(t,"_",n)):ci(t,e.slots={})}else e.slots={},t&&ai(e,t);on(e.slots,Rn,1)},xl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=te;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(oe(r,t),!n&&l===1&&delete r._):(i=!t.$stable,ci(t,r)),o=t}else t&&(ai(e,t),o={default:1});if(i)for(const l in r)!li(l)&&!(l in o)&&delete r[l]};function hn(e,t,n,s,r=!1){if(N(e)){e.forEach((g,w)=>hn(g,t&&(N(t)?t[w]:t),n,s,r));return}if(gt(s)&&!r)return;const i=s.shapeFlag&4?Pn(s.component)||s.component.proxy:s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,d=l.refs===te?l.refs={}:l.refs,p=l.setupState;if(f!=null&&f!==c&&(se(f)?(d[f]=null,Y(p,f)&&(p[f]=null)):ce(f)&&(f.value=null)),D(c))We(c,l,12,[o,d]);else{const g=se(c),w=ce(c);if(g||w){const R=()=>{if(e.f){const P=g?Y(p,c)?p[c]:d[c]:c.value;r?N(P)&&ns(P,i):N(P)?P.includes(i)||P.push(i):g?(d[c]=[i],Y(p,c)&&(p[c]=d[c])):(c.value=[i],e.k&&(d[e.k]=c.value))}else g?(d[c]=o,Y(p,c)&&(p[c]=o)):w&&(c.value=o,e.k&&(d[e.k]=o))};o?(R.id=-1,de(R,n)):R()}}}let je=!1;const Xt=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Zt=e=>e.nodeType===8;function El(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,d=(_,y)=>{if(!y.hasChildNodes()){n(null,_,y),an(),y._vnode=_;return}je=!1,p(y.firstChild,_,null,null,null),an(),y._vnode=_,je&&console.error("Hydration completed but contains mismatches.")},p=(_,y,H,I,K,q=!1)=>{const k=Zt(_)&&_.data==="[",E=()=>P(_,y,H,I,K,k),{type:j,ref:U,shapeFlag:W,patchFlag:O}=y;let V=_.nodeType;y.el=_,O===-2&&(q=!1,y.dynamicChildren=null);let M=null;switch(j){case bt:V!==3?y.children===""?(c(y.el=r(""),o(_),_),M=_):M=E():(_.data!==y.children&&(je=!0,_.data=y.children),M=i(_));break;case be:V!==8||k?M=E():M=i(_);break;case Ft:if(k&&(_=i(_),V=_.nodeType),V===1||V===3){M=_;const ge=!y.children.length;for(let X=0;X{q=q||!!y.dynamicChildren;const{type:k,props:E,patchFlag:j,shapeFlag:U,dirs:W}=y,O=k==="input"&&W||k==="option";if(O||j!==-1){if(W&&Fe(y,null,H,"created"),E)if(O||!q||j&48)for(const M in E)(O&&M.endsWith("value")||jt(M)&&!Rt(M))&&s(_,M,null,E[M],!1,void 0,H);else E.onClick&&s(_,"onClick",null,E.onClick,!1,void 0,H);let V;if((V=E&&E.onVnodeBeforeMount)&&ve(V,H,y),W&&Fe(y,null,H,"beforeMount"),((V=E&&E.onVnodeMounted)||W)&&zr(()=>{V&&ve(V,H,y),W&&Fe(y,null,H,"mounted")},I),U&16&&!(E&&(E.innerHTML||E.textContent))){let M=w(_.firstChild,y,_,H,I,K,q);for(;M;){je=!0;const ge=M;M=M.nextSibling,l(ge)}}else U&8&&_.textContent!==y.children&&(je=!0,_.textContent=y.children)}return _.nextSibling},w=(_,y,H,I,K,q,k)=>{k=k||!!y.dynamicChildren;const E=y.children,j=E.length;for(let U=0;U{const{slotScopeIds:k}=y;k&&(K=K?K.concat(k):k);const E=o(_),j=w(i(_),y,E,H,I,K,q);return j&&Zt(j)&&j.data==="]"?i(y.anchor=j):(je=!0,c(y.anchor=f("]"),E,j),j)},P=(_,y,H,I,K,q)=>{if(je=!0,y.el=null,q){const j=$(_);for(;;){const U=i(_);if(U&&U!==j)l(U);else break}}const k=i(_),E=o(_);return l(_),n(null,y,E,k,H,I,Xt(E),K),k},$=_=>{let y=0;for(;_;)if(_=i(_),_&&Zt(_)&&(_.data==="["&&y++,_.data==="]")){if(y===0)return i(_);y--}return _};return[d,p]}const de=zr;function Tl(e){return fi(e)}function Al(e){return fi(e,El)}function fi(e,t){const n=Bn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:d,parentNode:p,nextSibling:g,setScopeId:w=Pe,insertStaticContent:R}=e,P=(a,u,h,b=null,m=null,x=null,A=!1,C=null,T=!!u.dynamicChildren)=>{if(a===u)return;a&&!Ge(a,u)&&(b=kt(a),Ie(a,m,x,!0),a=null),u.patchFlag===-2&&(T=!1,u.dynamicChildren=null);const{type:v,ref:S,shapeFlag:F}=u;switch(v){case bt:$(a,u,h,b);break;case be:_(a,u,h,b);break;case Ft:a==null&&y(u,h,b,A);break;case he:O(a,u,h,b,m,x,A,C,T);break;default:F&1?K(a,u,h,b,m,x,A,C,T):F&6?V(a,u,h,b,m,x,A,C,T):(F&64||F&128)&&v.process(a,u,h,b,m,x,A,C,T,ot)}S!=null&&m&&hn(S,a&&a.ref,x,u||a,!u)},$=(a,u,h,b)=>{if(a==null)s(u.el=l(u.children),h,b);else{const m=u.el=a.el;u.children!==a.children&&f(m,u.children)}},_=(a,u,h,b)=>{a==null?s(u.el=c(u.children||""),h,b):u.el=a.el},y=(a,u,h,b)=>{[a.el,a.anchor]=R(a.children,u,h,b,a.el,a.anchor)},H=({el:a,anchor:u},h,b)=>{let m;for(;a&&a!==u;)m=g(a),s(a,h,b),a=m;s(u,h,b)},I=({el:a,anchor:u})=>{let h;for(;a&&a!==u;)h=g(a),r(a),a=h;r(u)},K=(a,u,h,b,m,x,A,C,T)=>{A=A||u.type==="svg",a==null?q(u,h,b,m,x,A,C,T):j(a,u,m,x,A,C,T)},q=(a,u,h,b,m,x,A,C)=>{let T,v;const{type:S,props:F,shapeFlag:L,transition:B,dirs:z}=a;if(T=a.el=o(a.type,x,F&&F.is,F),L&8?d(T,a.children):L&16&&E(a.children,T,null,b,m,x&&S!=="foreignObject",A,C),z&&Fe(a,null,b,"created"),k(T,a,a.scopeId,A,b),F){for(const Z in F)Z!=="value"&&!Rt(Z)&&i(T,Z,null,F[Z],x,a.children,b,m,Le);"value"in F&&i(T,"value",null,F.value),(v=F.onVnodeBeforeMount)&&ve(v,b,a)}z&&Fe(a,null,b,"beforeMount");const G=(!m||m&&!m.pendingBranch)&&B&&!B.persisted;G&&B.beforeEnter(T),s(T,u,h),((v=F&&F.onVnodeMounted)||G||z)&&de(()=>{v&&ve(v,b,a),G&&B.enter(T),z&&Fe(a,null,b,"mounted")},m)},k=(a,u,h,b,m)=>{if(h&&w(a,h),b)for(let x=0;x{for(let v=T;v{const C=u.el=a.el;let{patchFlag:T,dynamicChildren:v,dirs:S}=u;T|=a.patchFlag&16;const F=a.props||te,L=u.props||te;let B;h&&Je(h,!1),(B=L.onVnodeBeforeUpdate)&&ve(B,h,u,a),S&&Fe(u,a,h,"beforeUpdate"),h&&Je(h,!0);const z=m&&u.type!=="foreignObject";if(v?U(a.dynamicChildren,v,C,h,b,z,x):A||Q(a,u,C,null,h,b,z,x,!1),T>0){if(T&16)W(C,u,F,L,h,b,m);else if(T&2&&F.class!==L.class&&i(C,"class",null,L.class,m),T&4&&i(C,"style",F.style,L.style,m),T&8){const G=u.dynamicProps;for(let Z=0;Z{B&&ve(B,h,u,a),S&&Fe(u,a,h,"updated")},b)},U=(a,u,h,b,m,x,A)=>{for(let C=0;C{if(h!==b){if(h!==te)for(const C in h)!Rt(C)&&!(C in b)&&i(a,C,h[C],null,A,u.children,m,x,Le);for(const C in b){if(Rt(C))continue;const T=b[C],v=h[C];T!==v&&C!=="value"&&i(a,C,v,T,A,u.children,m,x,Le)}"value"in b&&i(a,"value",h.value,b.value)}},O=(a,u,h,b,m,x,A,C,T)=>{const v=u.el=a?a.el:l(""),S=u.anchor=a?a.anchor:l("");let{patchFlag:F,dynamicChildren:L,slotScopeIds:B}=u;B&&(C=C?C.concat(B):B),a==null?(s(v,h,b),s(S,h,b),E(u.children,h,S,m,x,A,C,T)):F>0&&F&64&&L&&a.dynamicChildren?(U(a.dynamicChildren,L,h,m,x,A,C),(u.key!=null||m&&u===m.subTree)&&ws(a,u,!0)):Q(a,u,h,S,m,x,A,C,T)},V=(a,u,h,b,m,x,A,C,T)=>{u.slotScopeIds=C,a==null?u.shapeFlag&512?m.ctx.activate(u,h,b,A,T):M(u,h,b,m,x,A,T):ge(a,u,T)},M=(a,u,h,b,m,x,A)=>{const C=a.component=$l(a,b,m);if(Dt(a)&&(C.ctx.renderer=ot),Ul(C),C.asyncDep){if(m&&m.registerDep(C,X),!a.el){const T=C.subTree=re(be);_(null,T,u,h)}return}X(C,a,u,h,m,x,A)},ge=(a,u,h)=>{const b=u.component=a.component;if(Vo(a,u,h))if(b.asyncDep&&!b.asyncResolved){ne(b,u,h);return}else b.next=u,Uo(b.update),b.update();else u.el=a.el,b.vnode=u},X=(a,u,h,b,m,x,A)=>{const C=()=>{if(a.isMounted){let{next:S,bu:F,u:L,parent:B,vnode:z}=a,G=S,Z;Je(a,!1),S?(S.el=z.el,ne(a,S,A)):S=z,F&&tn(F),(Z=S.props&&S.props.onVnodeBeforeUpdate)&&ve(Z,B,S,z),Je(a,!0);const ie=Fn(a),xe=a.subTree;a.subTree=ie,P(xe,ie,p(xe.el),kt(xe),a,m,x),S.el=ie.el,G===null&&qo(a,ie.el),L&&de(L,m),(Z=S.props&&S.props.onVnodeUpdated)&&de(()=>ve(Z,B,S,z),m)}else{let S;const{el:F,props:L}=u,{bm:B,m:z,parent:G}=a,Z=gt(u);if(Je(a,!1),B&&tn(B),!Z&&(S=L&&L.onVnodeBeforeMount)&&ve(S,G,u),Je(a,!0),F&&On){const ie=()=>{a.subTree=Fn(a),On(F,a.subTree,a,m,null)};Z?u.type.__asyncLoader().then(()=>!a.isUnmounted&&ie()):ie()}else{const ie=a.subTree=Fn(a);P(null,ie,h,b,a,m,x),u.el=ie.el}if(z&&de(z,m),!Z&&(S=L&&L.onVnodeMounted)){const ie=u;de(()=>ve(S,G,ie),m)}(u.shapeFlag&256||G&>(G.vnode)&&G.vnode.shapeFlag&256)&&a.a&&de(a.a,m),a.isMounted=!0,u=h=b=null}},T=a.effect=new cs(C,()=>vn(v),a.scope),v=a.update=()=>T.run();v.id=a.uid,Je(a,!0),v()},ne=(a,u,h)=>{u.component=a;const b=a.vnode.props;a.vnode=u,a.next=null,vl(a,u.props,b,h),xl(a,u.children,h),wt(),$s(),Ct()},Q=(a,u,h,b,m,x,A,C,T=!1)=>{const v=a&&a.children,S=a?a.shapeFlag:0,F=u.children,{patchFlag:L,shapeFlag:B}=u;if(L>0){if(L&128){Kt(v,F,h,b,m,x,A,C,T);return}else if(L&256){ze(v,F,h,b,m,x,A,C,T);return}}B&8?(S&16&&Le(v,m,x),F!==v&&d(h,F)):S&16?B&16?Kt(v,F,h,b,m,x,A,C,T):Le(v,m,x,!0):(S&8&&d(h,""),B&16&&E(F,h,b,m,x,A,C,T))},ze=(a,u,h,b,m,x,A,C,T)=>{a=a||ft,u=u||ft;const v=a.length,S=u.length,F=Math.min(v,S);let L;for(L=0;LS?Le(a,m,x,!0,!1,F):E(u,h,b,m,x,A,C,T,F)},Kt=(a,u,h,b,m,x,A,C,T)=>{let v=0;const S=u.length;let F=a.length-1,L=S-1;for(;v<=F&&v<=L;){const B=a[v],z=u[v]=T?Ke(u[v]):Te(u[v]);if(Ge(B,z))P(B,z,h,null,m,x,A,C,T);else break;v++}for(;v<=F&&v<=L;){const B=a[F],z=u[L]=T?Ke(u[L]):Te(u[L]);if(Ge(B,z))P(B,z,h,null,m,x,A,C,T);else break;F--,L--}if(v>F){if(v<=L){const B=L+1,z=BL)for(;v<=F;)Ie(a[v],m,x,!0),v++;else{const B=v,z=v,G=new Map;for(v=z;v<=L;v++){const me=u[v]=T?Ke(u[v]):Te(u[v]);me.key!=null&&G.set(me.key,v)}let Z,ie=0;const xe=L-z+1;let lt=!1,As=0;const xt=new Array(xe);for(v=0;v=xe){Ie(me,m,x,!0);continue}let Oe;if(me.key!=null)Oe=G.get(me.key);else for(Z=z;Z<=L;Z++)if(xt[Z-z]===0&&Ge(me,u[Z])){Oe=Z;break}Oe===void 0?Ie(me,m,x,!0):(xt[Oe-z]=v+1,Oe>=As?As=Oe:lt=!0,P(me,u[Oe],h,null,m,x,A,C,T),ie++)}const Rs=lt?Rl(xt):ft;for(Z=Rs.length-1,v=xe-1;v>=0;v--){const me=z+v,Oe=u[me],Ps=me+1{const{el:x,type:A,transition:C,children:T,shapeFlag:v}=a;if(v&6){Ye(a.component.subTree,u,h,b);return}if(v&128){a.suspense.move(u,h,b);return}if(v&64){A.move(a,u,h,ot);return}if(A===he){s(x,u,h);for(let F=0;FC.enter(x),m);else{const{leave:F,delayLeave:L,afterLeave:B}=C,z=()=>s(x,u,h),G=()=>{F(x,()=>{z(),B&&B()})};L?L(x,z,G):G()}else s(x,u,h)},Ie=(a,u,h,b=!1,m=!1)=>{const{type:x,props:A,ref:C,children:T,dynamicChildren:v,shapeFlag:S,patchFlag:F,dirs:L}=a;if(C!=null&&hn(C,null,h,a,!0),S&256){u.ctx.deactivate(a);return}const B=S&1&&L,z=!gt(a);let G;if(z&&(G=A&&A.onVnodeBeforeUnmount)&&ve(G,u,a),S&6)Li(a.component,h,b);else{if(S&128){a.suspense.unmount(h,b);return}B&&Fe(a,null,u,"beforeUnmount"),S&64?a.type.remove(a,u,h,m,ot,b):v&&(x!==he||F>0&&F&64)?Le(v,u,h,!1,!0):(x===he&&F&384||!m&&S&16)&&Le(T,u,h),b&&Es(a)}(z&&(G=A&&A.onVnodeUnmounted)||B)&&de(()=>{G&&ve(G,u,a),B&&Fe(a,null,u,"unmounted")},h)},Es=a=>{const{type:u,el:h,anchor:b,transition:m}=a;if(u===he){Si(h,b);return}if(u===Ft){I(a);return}const x=()=>{r(h),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(a.shapeFlag&1&&m&&!m.persisted){const{leave:A,delayLeave:C}=m,T=()=>A(h,x);C?C(a.el,x,T):T()}else x()},Si=(a,u)=>{let h;for(;a!==u;)h=g(a),r(a),a=h;r(u)},Li=(a,u,h)=>{const{bum:b,scope:m,update:x,subTree:A,um:C}=a;b&&tn(b),m.stop(),x&&(x.active=!1,Ie(A,a,u,h)),C&&de(C,u),de(()=>{a.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},Le=(a,u,h,b=!1,m=!1,x=0)=>{for(let A=x;Aa.shapeFlag&6?kt(a.component.subTree):a.shapeFlag&128?a.suspense.next():g(a.anchor||a.el),Ts=(a,u,h)=>{a==null?u._vnode&&Ie(u._vnode,null,null,!0):P(u._vnode||null,a,u,null,null,null,h),$s(),an(),u._vnode=a},ot={p:P,um:Ie,m:Ye,r:Es,mt:M,mc:E,pc:Q,pbc:U,n:kt,o:e};let In,On;return t&&([In,On]=t(ot)),{render:Ts,hydrate:In,createApp:_l(Ts,In)}}function Je({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ws(e,t,n=!1){const s=e.children,r=t.children;if(N(s)&&N(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}const Pl=e=>e.__isTeleport,Ot=e=>e&&(e.disabled||e.disabled===""),Js=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Zn=(e,t)=>{const n=e&&e.to;return se(n)?t?t(n):null:n},Il={__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:d,pc:p,pbc:g,o:{insert:w,querySelector:R,createText:P,createComment:$}}=f,_=Ot(t.props);let{shapeFlag:y,children:H,dynamicChildren:I}=t;if(e==null){const K=t.el=P(""),q=t.anchor=P("");w(K,n,s),w(q,n,s);const k=t.target=Zn(t.props,R),E=t.targetAnchor=P("");k&&(w(E,k),o=o||Js(k));const j=(U,W)=>{y&16&&d(H,U,W,r,i,o,l,c)};_?j(n,q):k&&j(k,E)}else{t.el=e.el;const K=t.anchor=e.anchor,q=t.target=e.target,k=t.targetAnchor=e.targetAnchor,E=Ot(e.props),j=E?n:q,U=E?K:k;if(o=o||Js(q),I?(g(e.dynamicChildren,I,j,r,i,o,l),ws(e,t,!0)):c||p(e,t,j,U,r,i,o,l,!1),_)E||Qt(t,n,K,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const W=t.target=Zn(t.props,R);W&&Qt(t,W,null,f,0)}else E&&Qt(t,q,k,f,1)}ui(t)},remove(e,t,n,s,{um:r,o:{remove:i}},o){const{shapeFlag:l,children:c,anchor:f,targetAnchor:d,target:p,props:g}=e;if(p&&i(d),(o||!Ot(g))&&(i(f),l&16))for(let w=0;w0?Re||ft:null,Fl(),Ut>0&&Re&&Re.push(e),e}function ia(e,t,n,s,r,i){return hi(mi(e,t,n,s,r,i,!0))}function pi(e,t,n,s,r){return hi(re(e,t,n,s,r,!0))}function pn(e){return e?e.__v_isVNode===!0:!1}function Ge(e,t){return e.type===t.type&&e.key===t.key}const Rn="__vInternal",gi=({key:e})=>e??null,sn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||ce(e)||D(e)?{i:ae,r:e,k:t,f:!!n}:e:null);function mi(e,t=null,n=null,s=0,r=null,i=e===he?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&gi(t),ref:t&&sn(t),scopeId:Cn,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:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ae};return l?(Cs(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Ut>0&&!o&&Re&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Re.push(c),c}const re=Ml;function Ml(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===ei)&&(e=be),pn(e)){const l=qe(e,t,!0);return n&&Cs(l,n),Ut>0&&!i&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag|=-2,l}if(Kl(e)&&(e=e.__vccOpts),t){t=Sl(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=os(l)),ee(c)&&(jr(c)&&!N(c)&&(c=oe({},c)),t.style=is(c))}const o=se(e)?1:zo(e)?128:Pl(e)?64:ee(e)?4:D(e)?2:0;return mi(e,t,n,s,r,o,i,!0)}function Sl(e){return e?jr(e)||Rn in e?oe({},e):e:null}function qe(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:o}=e,l=t?Ll(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&gi(l),ref:t&&t.ref?n&&r?N(r)?r.concat(sn(t)):[r,sn(t)]:sn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==he?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,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}}function _i(e=" ",t=0){return re(bt,null,e,t)}function oa(e,t){const n=re(Ft,null,e);return n.staticCount=t,n}function la(e="",t=!1){return t?(di(),pi(be,null,e)):re(be,null,e)}function Te(e){return e==null||typeof e=="boolean"?re(be):N(e)?re(he,null,e.slice()):typeof e=="object"?Ke(e):re(bt,null,String(e))}function Ke(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:qe(e)}function Cs(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(N(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Cs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(Rn in t)?t._ctx=ae:r===3&&ae&&(ae.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else D(t)?(t={default:t,_ctx:ae},n=32):(t=String(t),s&64?(n=16,t=[_i(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ll(...e){const t={};for(let n=0;nle||ae;let xs,ct,Zs="__VUE_INSTANCE_SETTERS__";(ct=Bn()[Zs])||(ct=Bn()[Zs]=[]),ct.push(e=>le=e),xs=e=>{ct.length>1?ct.forEach(t=>t(e)):ct[0](e)};const yt=e=>{xs(e),e.scope.on()},rt=()=>{le&&le.scope.off(),xs(null)};function yi(e){return e.vnode.shapeFlag&4}let vt=!1;function Ul(e,t=!1){vt=t;const{props:n,children:s}=e.vnode,r=yi(e);yl(e,n,r,t),Cl(e,s);const i=r?jl(e,t):void 0;return vt=!1,i}function jl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Pt(new Proxy(e.ctx,al));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?wi(e):null;yt(e),wt();const i=We(s,e,0,[e.props,r]);if(Ct(),rt(),xr(i)){if(i.then(rt,rt),t)return i.then(o=>{Qs(e,o,t)}).catch(o=>{Bt(o,e,0)});e.asyncDep=i}else Qs(e,i,t)}else vi(e,t)}function Qs(e,t,n){D(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ee(t)&&(e.setupState=Dr(t)),vi(e,n)}let Gs;function vi(e,t,n){const s=e.type;if(!e.render){if(!t&&Gs&&!s.render){const r=s.template||ys(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=oe(oe({isCustomElement:i,delimiters:l},o),c);s.render=Gs(r,f)}}e.render=s.render||Pe}yt(e),wt(),ul(e),Ct(),rt()}function Bl(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return pe(e,"get","$attrs"),t[n]}}))}function wi(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Bl(e)},slots:e.slots,emit:e.emit,expose:t}}function Pn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Dr(Pt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in It)return It[n](e)},has(t,n){return n in t||n in It}}))}function Dl(e,t=!0){return D(e)?e.displayName||e.name:e.name||t&&e.__name}function Kl(e){return D(e)&&"__vccOpts"in e}const Ee=(e,t)=>No(e,t,vt);function Qn(e,t,n){const s=arguments.length;return s===2?ee(t)&&!N(t)?pn(t)?re(e,null,[t]):re(e,t):re(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&pn(n)&&(n=[n]),re(e,t,n))}const kl=Symbol.for("v-scx"),Wl=()=>mt(kl),Vl="3.3.4",ql="http://www.w3.org/2000/svg",et=typeof document<"u"?document:null,er=et&&et.createElement("template"),zl={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t?et.createElementNS(ql,e):et.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>et.createTextNode(e),createComment:e=>et.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>et.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{er.innerHTML=s?`${e}`:e;const l=er.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Yl(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Jl(e,t,n){const s=e.style,r=se(n);if(n&&!r){if(t&&!se(t))for(const i in t)n[i]==null&&Gn(s,i,"");for(const i in n)Gn(s,i,n[i])}else{const i=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=i)}}const tr=/\s*!important$/;function Gn(e,t,n){if(N(n))n.forEach(s=>Gn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Xl(e,t);tr.test(n)?e.setProperty(it(s),n.replace(tr,""),"important"):e[s]=n}}const nr=["Webkit","Moz","ms"],Nn={};function Xl(e,t){const n=Nn[t];if(n)return n;let s=Se(t);if(s!=="filter"&&s in e)return Nn[t]=s;s=_n(s);for(let r=0;rHn||(nc.then(()=>Hn=0),Hn=Date.now());function rc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ce(ic(s,n.value),t,5,[s])};return n.value=e,n.attached=sc(),n}function ic(e,t){if(N(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const ir=/^on[a-z]/,oc=(e,t,n,s,r=!1,i,o,l,c)=>{t==="class"?Yl(e,s,r):t==="style"?Jl(e,n,s):jt(t)?ts(t)||ec(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):lc(e,t,s,r))?Ql(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Zl(e,t,s,r))};function lc(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&ir.test(t)&&D(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||ir.test(t)&&se(n)?!1:t in e}const Be="transition",Et="animation",Ci=(e,{slots:t})=>Qn(Qo,cc(e),t);Ci.displayName="Transition";const xi={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=oe({},Jr,xi);const Xe=(e,t=[])=>{N(e)?e.forEach(n=>n(...t)):e&&e(...t)},or=e=>e?N(e)?e.some(t=>t.length>1):e.length>1:!1;function cc(e){const t={};for(const O in e)O in xi||(t[O]=e[O]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:d=l,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:w=`${n}-leave-to`}=e,R=ac(r),P=R&&R[0],$=R&&R[1],{onBeforeEnter:_,onEnter:y,onEnterCancelled:H,onLeave:I,onLeaveCancelled:K,onBeforeAppear:q=_,onAppear:k=y,onAppearCancelled:E=H}=t,j=(O,V,M)=>{Ze(O,V?d:l),Ze(O,V?f:o),M&&M()},U=(O,V)=>{O._isLeaving=!1,Ze(O,p),Ze(O,w),Ze(O,g),V&&V()},W=O=>(V,M)=>{const ge=O?k:y,X=()=>j(V,O,M);Xe(ge,[V,X]),lr(()=>{Ze(V,O?c:i),De(V,O?d:l),or(ge)||cr(V,s,P,X)})};return oe(t,{onBeforeEnter(O){Xe(_,[O]),De(O,i),De(O,o)},onBeforeAppear(O){Xe(q,[O]),De(O,c),De(O,f)},onEnter:W(!1),onAppear:W(!0),onLeave(O,V){O._isLeaving=!0;const M=()=>U(O,V);De(O,p),dc(),De(O,g),lr(()=>{O._isLeaving&&(Ze(O,p),De(O,w),or(I)||cr(O,s,$,M))}),Xe(I,[O,M])},onEnterCancelled(O){j(O,!1),Xe(H,[O])},onAppearCancelled(O){j(O,!0),Xe(E,[O])},onLeaveCancelled(O){U(O),Xe(K,[O])}})}function ac(e){if(e==null)return null;if(ee(e))return[$n(e.enter),$n(e.leave)];{const t=$n(e);return[t,t]}}function $n(e){return Di(e)}function De(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Ze(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function lr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let fc=0;function cr(e,t,n,s){const r=e._endId=++fc,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=uc(e,t);if(!o)return s();const f=o+"end";let d=0;const p=()=>{e.removeEventListener(f,g),i()},g=w=>{w.target===e&&++d>=c&&p()};setTimeout(()=>{d(n[R]||"").split(", "),r=s(`${Be}Delay`),i=s(`${Be}Duration`),o=ar(r,i),l=s(`${Et}Delay`),c=s(`${Et}Duration`),f=ar(l,c);let d=null,p=0,g=0;t===Be?o>0&&(d=Be,p=o,g=i.length):t===Et?f>0&&(d=Et,p=f,g=c.length):(p=Math.max(o,f),d=p>0?o>f?Be:Et:null,g=d?d===Be?i.length:c.length:0);const w=d===Be&&/\b(transform|all)(,|$)/.test(s(`${Be}Property`).toString());return{type:d,timeout:p,propCount:g,hasTransform:w}}function ar(e,t){for(;e.lengthfr(n)+fr(e[s])))}function fr(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function dc(){return document.body.offsetHeight}const ur=e=>{const t=e.props["onUpdate:modelValue"]||!1;return N(t)?n=>tn(t,n):t};function hc(e){e.target.composing=!0}function dr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ca={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e._assign=ur(r);const i=s||r.props&&r.props.type==="number";at(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=jn(l)),e._assign(l)}),n&&at(e,"change",()=>{e.value=e.value.trim()}),t||(at(e,"compositionstart",hc),at(e,"compositionend",dr),at(e,"change",dr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:s,number:r}},i){if(e._assign=ur(i),e.composing||document.activeElement===e&&e.type!=="range"&&(n||s&&e.value.trim()===t||(r||e.type==="number")&&jn(e.value)===t))return;const o=t??"";e.value!==o&&(e.value=o)}},pc=["ctrl","shift","alt","meta"],gc={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)=>pc.some(n=>e[`${n}Key`]&&!t.includes(n))},aa=(e,t)=>(n,...s)=>{for(let r=0;rn=>{if(!("key"in n))return;const s=it(n.key);if(t.some(r=>r===s||mc[r]===s))return e(n)},Ei=oe({patchProp:oc},zl);let St,hr=!1;function _c(){return St||(St=Tl(Ei))}function bc(){return St=hr?St:Al(Ei),hr=!0,St}const ua=(...e)=>{const t=_c().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ti(s);if(!r)return;const i=t._component;!D(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.innerHTML="";const o=n(r,!1,r instanceof SVGElement);return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},da=(...e)=>{const t=bc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ti(s);if(r)return n(r,!0,r instanceof SVGElement)},t};function Ti(e){return se(e)?document.querySelector(e):e}const ha=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},yc="modulepreload",vc=function(e){return"/qd/"+e},pr={},pa=function(t,n,s){if(!n||n.length===0)return t();const r=document.getElementsByTagName("link");return Promise.all(n.map(i=>{if(i=vc(i),i in pr)return;pr[i]=!0;const o=i.endsWith(".css"),l=o?'[rel="stylesheet"]':"";if(!!s)for(let d=r.length-1;d>=0;d--){const p=r[d];if(p.href===i&&(!o||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${l}`))return;const f=document.createElement("link");if(f.rel=o?"stylesheet":yc,o||(f.as="script",f.crossOrigin=""),f.href=i,document.head.appendChild(f),o)return new Promise((d,p)=>{f.addEventListener("load",d),f.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${i}`)))})})).then(()=>t()).catch(i=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=i,window.dispatchEvent(o),!o.defaultPrevented)throw i})},wc=window.__VP_SITE_DATA__,Ai=/^[a-z]+:/i,ga=/^pathname:\/\//,ma="vitepress-theme-appearance",Ri=/#.*$/,Cc=/(index)?\.(md|html)$/,we=typeof document<"u",Pi={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function xc(e,t,n=!1){if(t===void 0)return!1;if(e=gr(`/${e}`),n)return new RegExp(t).test(e);if(gr(t)!==e)return!1;const s=t.match(Ri);return s?(we?location.hash:"")===s[0]:!0}function gr(e){return decodeURI(e).replace(Ri,"").replace(Cc,"")}function Ec(e){return Ai.test(e)}function Tc(e,t){var s,r,i,o,l,c,f;const n=Object.keys(e.locales).find(d=>d!=="root"&&!Ec(d)&&xc(t,`/${d}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Oi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function Ii(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Ac(e.title,s);return`${n}${r}`}function Ac(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Rc(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function Oi(e,t){return[...e.filter(n=>!Rc(t,n)),...t]}const Pc=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Ic=/^[a-z]:/i;function mr(e){const t=Ic.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Pc,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const Oc=Symbol(),nt=Ao(wc);function _a(e){const t=Ee(()=>Tc(nt.value,e.data.relativePath));return{site:t,theme:Ee(()=>t.value.themeConfig),page:Ee(()=>e.data),frontmatter:Ee(()=>e.data.frontmatter),params:Ee(()=>e.data.params),lang:Ee(()=>t.value.lang),dir:Ee(()=>t.value.dir),localeIndex:Ee(()=>t.value.localeIndex||"root"),title:Ee(()=>Ii(t.value,e.data)),description:Ee(()=>e.data.description||t.value.description),isDark:ht(!1)}}function ba(){const e=mt(Oc);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Fc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function _r(e){return Ai.test(e)||e.startsWith(".")?e:Fc(nt.value.base,e)}function Mc(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),we){const n="/qd/";t=mr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),t=`${n}assets/${t}.${s}.js`}else t=`./${mr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let rn=[];function ya(e){rn.push(e),An(()=>{rn=rn.filter(t=>t!==e)})}const Sc=Symbol(),br="http://a.com",Lc=()=>({path:"/",component:null,data:Pi});function va(e,t){const n=yn(Lc()),s={route:n,go:r};async function r(l=we?location.href:"/"){var f,d;await((f=s.onBeforeRouteChange)==null?void 0:f.call(s,l));const c=new URL(l,br);nt.value.cleanUrls||!c.pathname.endsWith("/")&&!c.pathname.endsWith(".html")&&(c.pathname+=".html",l=c.pathname+c.search+c.hash),we&&l!==location.href&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",l)),await o(l),await((d=s.onAfterRouteChanged)==null?void 0:d.call(s,l))}let i=null;async function o(l,c=0,f=!1){const d=new URL(l,br),p=i=d.pathname;try{let g=await e(p);if(i===p){i=null;const{default:w,__pageData:R}=g;if(!w)throw new Error(`Invalid route component: ${w}`);n.path=we?p:_r(p),n.component=Pt(w),n.data=Pt(R),we&&kr(()=>{let P=nt.value.base+R.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!nt.value.cleanUrls&&!P.endsWith("/")&&(P+=".html"),P!==d.pathname&&(d.pathname=P,l=P+d.search+d.hash,history.replaceState(null,"",l)),d.hash&&!c){let $=null;try{$=document.querySelector(decodeURIComponent(d.hash))}catch(_){console.warn(_)}if($){yr($,d.hash);return}}window.scrollTo(0,c)})}}catch(g){if(!/fetch/.test(g.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(g),!f)try{const w=await fetch(nt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await w.json(),await o(l,c,!0);return}catch{}i===p&&(i=null,n.path=we?p:_r(p),n.component=t?Pt(t):null,n.data=Pi)}}return we&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const f=l.target.closest("a");if(f&&!f.closest(".vp-raw")&&(f instanceof SVGElement||!f.download)){const{target:d}=f,{href:p,origin:g,pathname:w,hash:R,search:P}=new URL(f.href instanceof SVGAnimatedString?f.href.animVal:f.href,f.baseURI),$=window.location,_=w.match(/\.\w+$/);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&d!=="_blank"&&g===$.origin&&!(_&&_[0]!==".html")&&(l.preventDefault(),w===$.pathname&&P===$.search?R&&(R!==$.hash&&(history.pushState(null,"",R),window.dispatchEvent(new Event("hashchange"))),yr(f,R,f.classList.contains("header-anchor"))):r(p))}},{capture:!0}),window.addEventListener("popstate",l=>{o(location.href,l.state&&l.state.scrollPosition||0)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Nc(){const e=mt(Sc);if(!e)throw new Error("useRouter() is called without provider.");return e}function Fi(){return Nc().route}function yr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.querySelector(decodeURIComponent(t))}catch(r){console.warn(r)}if(s){const r=nt.value.scrollOffset;let i=0;if(typeof r=="number")i=r;else if(typeof r=="string")i=vr(r);else if(Array.isArray(r))for(const c of r){const f=vr(c);if(f){i=f;break}}const o=parseInt(window.getComputedStyle(s).paddingTop,10),l=window.scrollY+s.getBoundingClientRect().top-i+o;!n||Math.abs(l-window.scrollY)>window.innerHeight?window.scrollTo(0,l):window.scrollTo({left:0,top:l,behavior:"smooth"})}}function vr(e){const t=document.querySelector(e);if(!t)return 0;const n=t.getBoundingClientRect().bottom;return n<0?0:n+24}const wr=()=>rn.forEach(e=>e()),wa=_s({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Fi();return()=>Qn(e.as,{style:{position:"relative"}},[t.component?Qn(t.component,{onVnodeMounted:wr,onVnodeUpdated:wr}):"404 Page Not Found"])}});function Ca(e,t){let n=[],s=!0;const r=i=>{if(s){s=!1;return}n.forEach(o=>document.head.removeChild(o)),n=[],i.forEach(o=>{const l=Hc(o);document.head.appendChild(l),n.push(l)})};Yo(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[];document.title=Ii(o,i),document.querySelector("meta[name=description]").setAttribute("content",l||o.description),r(Oi(o.head,Uc(c)))})}function Hc([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),s}function $c(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Uc(e){return e.filter(t=>!$c(t))}const Un=new Set,Mi=()=>document.createElement("link"),jc=e=>{const t=Mi();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Bc=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let Gt;const Dc=we&&(Gt=Mi())&&Gt.relList&&Gt.relList.supports&&Gt.relList.supports("prefetch")?jc:Bc;function xa(){if(!we||!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 s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!Un.has(c)){Un.add(c);const f=Mc(c);Dc(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{target:o}=i,{hostname:l,pathname:c}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),f=c.match(/\.\w+$/);f&&f[0]!==".html"||o!=="_blank"&&l===location.hostname&&(c!==location.pathname?n.observe(i):Un.add(c))})})};Tn(s);const r=Fi();nn(()=>r.path,s),An(()=>{n&&n.disconnect()})}const Ea=_s({setup(e,{slots:t}){const n=ht(!1);return Tn(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Ta(){if(we){const e=new Map;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className);let l="";i.querySelectorAll("span.line:not(.diff.remove)").forEach(c=>l+=(c.textContent||"")+` +`),l=l.slice(0,-1),o&&(l=l.replace(/^ *(\$|>) /gm,"").trim()),Kc(l).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const c=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,c)})}})}}async function Kc(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 s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function Aa(){we&&window.addEventListener("click",e=>{var n,s;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement,i=Array.from((r==null?void 0:r.querySelectorAll("input"))||[]).indexOf(t),o=r==null?void 0:r.querySelector('div[class*="language-"].active'),l=(s=r==null?void 0:r.querySelectorAll('div[class*="language-"]:not(.language-id)'))==null?void 0:s[i];o&&l&&o!==l&&(o.classList.remove("active"),l.classList.add("active"))}})}export{ya as $,Fi as A,An as B,mi as C,pi as D,Ko as E,he as F,la as G,Qc as H,Ll as I,re as J,is as K,Zc as L,pa as M,Gc as N,Ai as O,ga as P,we as Q,ea as R,zc as S,Ci as T,Yc as U,oa as V,ma as W,mt as X,bl as Y,rl as Z,ha as _,_i as a,fa as a0,na as a1,Jc as a2,aa as a3,sa as a4,Ca as a5,Sc as a6,_a as a7,Oc as a8,wa as a9,Ea as aa,nt as ab,da as ac,va as ad,Mc as ae,xa as af,Ta as ag,Aa as ah,Qn as ai,Nc as aj,Gr as ak,Xc as al,ca as am,ra as an,Pt as ao,ua as ap,Po as b,ia as c,_s as d,Wc as e,qc as f,Xi as g,Ur as h,Vc as i,ht as j,Yo as k,Ee as l,bi as m,os as n,di as o,Tn as p,ce as q,ta as r,Ao as s,kc as t,ba as u,kr as v,nn as w,Ec as x,_r as y,xc as z}; diff --git a/assets/chunks/theme.6277ec04.js b/assets/chunks/theme.3655666c.js similarity index 61% rename from assets/chunks/theme.6277ec04.js rename to assets/chunks/theme.3655666c.js index bb20ddc9568..3f9df64ef73 100644 --- a/assets/chunks/theme.6277ec04.js +++ b/assets/chunks/theme.3655666c.js @@ -1,7 +1,7 @@ -import{d as b,o as a,c as l,r as d,n as T,a as O,t as N,_ as m,u as It,b as i,e as Nt,f as Me,g as Ct,h as L,i as At,j as Tt,w as K,k as ee,l as P,m as Bt,p as R,q as xt,s as le,v as st,x as Ot,P as Et,y as Ie,z as te,A as ce,B as Ne,C as _,F as A,D as k,E as p,T as Ce,G as g,H as X,I as pe,J as f,K as at,L as Ht,M as Dt,N as Q,O as rt,Q as zt,R as E,S as F,U as j,V as Ft,W as Ue,X as Ae,Y as fe,Z as jt,$ as se,a0 as Gt,a1 as Rt,a2 as Ut,a3 as Wt,a4 as Kt}from"./framework.40f7bea3.js";const qt=b({__name:"VPBadge",props:{text:{},type:{}},setup(t){return(e,n)=>(a(),l("span",{class:T(["VPBadge",e.type??"tip"])},[d(e.$slots,"default",{},()=>[O(N(e.text),1)],!0)],2))}});const Yt=m(qt,[["__scopeId","data-v-044fa993"]]),M=It;function Te(t){return At()?(Tt(t),!0):!1}function U(t){return typeof t=="function"?t():i(t)}const it=typeof window<"u",ae=()=>{},We=Jt();function Jt(){var t;return it&&((t=window==null?void 0:window.navigator)==null?void 0:t.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent)}function Xt(t,e){function n(...o){return new Promise((s,r)=>{Promise.resolve(t(()=>e.apply(this,o),{fn:e,thisArg:this,args:o})).then(s).catch(r)})}return n}const lt=t=>t();function Qt(t,e={}){let n,o,s=ae;const r=v=>{clearTimeout(v),s(),s=ae};return v=>{const u=U(t),h=U(e.maxWait);return n&&r(n),u<=0||h!==void 0&&h<=0?(o&&(r(o),o=null),Promise.resolve(v())):new Promise(($,w)=>{s=e.rejectOnCancel?w:$,h&&!o&&(o=setTimeout(()=>{n&&r(n),o=null,$(v())},h)),n=setTimeout(()=>{o&&r(o),o=null,$(v())},u)})}}function Zt(t=lt){const e=L(!0);function n(){e.value=!1}function o(){e.value=!0}const s=(...r)=>{e.value&&t(...r)};return{isActive:Me(e),pause:n,resume:o,eventFilter:s}}function ct(...t){if(t.length!==1)return Nt(...t);const e=t[0];return typeof e=="function"?Me(Ct(()=>({get:e,set:ae}))):L(e)}var Ke=Object.getOwnPropertySymbols,en=Object.prototype.hasOwnProperty,tn=Object.prototype.propertyIsEnumerable,nn=(t,e)=>{var n={};for(var o in t)en.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(t!=null&&Ke)for(var o of Ke(t))e.indexOf(o)<0&&tn.call(t,o)&&(n[o]=t[o]);return n};function ut(t,e,n={}){const o=n,{eventFilter:s=lt}=o,r=nn(o,["eventFilter"]);return K(t,Xt(s,e),r)}var on=Object.defineProperty,sn=Object.defineProperties,an=Object.getOwnPropertyDescriptors,he=Object.getOwnPropertySymbols,dt=Object.prototype.hasOwnProperty,_t=Object.prototype.propertyIsEnumerable,qe=(t,e,n)=>e in t?on(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,rn=(t,e)=>{for(var n in e||(e={}))dt.call(e,n)&&qe(t,n,e[n]);if(he)for(var n of he(e))_t.call(e,n)&&qe(t,n,e[n]);return t},ln=(t,e)=>sn(t,an(e)),cn=(t,e)=>{var n={};for(var o in t)dt.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(t!=null&&he)for(var o of he(t))e.indexOf(o)<0&&_t.call(t,o)&&(n[o]=t[o]);return n};function Ul(t,e,n={}){const o=n,{debounce:s=0,maxWait:r=void 0}=o,c=cn(o,["debounce","maxWait"]);return ut(t,e,ln(rn({},c),{eventFilter:Qt(s,{maxWait:r})}))}var un=Object.defineProperty,dn=Object.defineProperties,_n=Object.getOwnPropertyDescriptors,me=Object.getOwnPropertySymbols,vt=Object.prototype.hasOwnProperty,pt=Object.prototype.propertyIsEnumerable,Ye=(t,e,n)=>e in t?un(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,vn=(t,e)=>{for(var n in e||(e={}))vt.call(e,n)&&Ye(t,n,e[n]);if(me)for(var n of me(e))pt.call(e,n)&&Ye(t,n,e[n]);return t},pn=(t,e)=>dn(t,_n(e)),fn=(t,e)=>{var n={};for(var o in t)vt.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(t!=null&&me)for(var o of me(t))e.indexOf(o)<0&&pt.call(t,o)&&(n[o]=t[o]);return n};function hn(t,e,n={}){const o=n,{eventFilter:s}=o,r=fn(o,["eventFilter"]),{eventFilter:c,pause:v,resume:u,isActive:h}=Zt(s);return{stop:ut(t,e,pn(vn({},r),{eventFilter:c})),pause:v,resume:u,isActive:h}}function Wl(t,e,n){let o;xt(n)?o={evaluating:n}:o=n||{};const{lazy:s=!1,evaluating:r=void 0,shallow:c=!0,onError:v=ae}=o,u=L(!s),h=c?le(e):L(e);let $=0;return ee(async w=>{if(!u.value)return;$++;const C=$;let y=!1;r&&Promise.resolve().then(()=>{r.value=!0});try{const V=await t(I=>{w(()=>{r&&(r.value=!1),y||I()})});C===$&&(h.value=V)}catch(V){v(V)}finally{r&&C===$&&(r.value=!1),y=!0}}),s?P(()=>(u.value=!0,h.value)):h}function mn(t){var e;const n=U(t);return(e=n==null?void 0:n.$el)!=null?e:n}const W=it?window:void 0;function re(...t){let e,n,o,s;if(typeof t[0]=="string"||Array.isArray(t[0])?([n,o,s]=t,e=W):[e,n,o,s]=t,!e)return ae;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const r=[],c=()=>{r.forEach($=>$()),r.length=0},v=($,w,C,y)=>($.addEventListener(w,C,y),()=>$.removeEventListener(w,C,y)),u=K(()=>[mn(e),U(s)],([$,w])=>{c(),$&&r.push(...n.flatMap(C=>o.map(y=>v($,C,y,w))))},{immediate:!0,flush:"post"}),h=()=>{u(),c()};return Te(h),h}function gn(t){return typeof t=="function"?t:typeof t=="string"?e=>e.key===t:Array.isArray(t)?e=>t.includes(e.key):()=>!0}function Je(...t){let e,n,o={};t.length===3?(e=t[0],n=t[1],o=t[2]):t.length===2?typeof t[1]=="object"?(e=!0,n=t[0],o=t[1]):(e=t[0],n=t[1]):(e=!0,n=t[0]);const{target:s=W,eventName:r="keydown",passive:c=!1,dedupe:v=!1}=o,u=gn(e);return re(s,r,$=>{$.repeat&&U(v)||u($)&&n($)},c)}function yn(){const t=L(!1);return Bt()&&R(()=>{t.value=!0}),t}function bn(t){const e=yn();return P(()=>(e.value,!!t()))}function Ve(t,e={}){const{window:n=W}=e,o=bn(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const r=L(!1),c=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",v):s.removeListener(v))},v=()=>{o.value&&(c(),s=n.matchMedia(ct(t).value),r.value=!!(s!=null&&s.matches),s&&("addEventListener"in s?s.addEventListener("change",v):s.addListener(v)))};return ee(v),Te(()=>c()),r}const _e=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ve="__vueuse_ssr_handlers__",$n=kn();function kn(){return ve in _e||(_e[ve]=_e[ve]||{}),_e[ve]}function Pn(t,e){return $n[t]||e}function wn(t){return t==null?"any":t instanceof Set?"set":t instanceof Map?"map":t instanceof Date?"date":typeof t=="boolean"?"boolean":typeof t=="string"?"string":typeof t=="object"?"object":Number.isNaN(t)?"any":"number"}var Vn=Object.defineProperty,Xe=Object.getOwnPropertySymbols,Sn=Object.prototype.hasOwnProperty,Ln=Object.prototype.propertyIsEnumerable,Qe=(t,e,n)=>e in t?Vn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Ze=(t,e)=>{for(var n in e||(e={}))Sn.call(e,n)&&Qe(t,n,e[n]);if(Xe)for(var n of Xe(e))Ln.call(e,n)&&Qe(t,n,e[n]);return t};const Mn={boolean:{read:t=>t==="true",write:t=>String(t)},object:{read:t=>JSON.parse(t),write:t=>JSON.stringify(t)},number:{read:t=>Number.parseFloat(t),write:t=>String(t)},any:{read:t=>t,write:t=>String(t)},string:{read:t=>t,write:t=>String(t)},map:{read:t=>new Map(JSON.parse(t)),write:t=>JSON.stringify(Array.from(t.entries()))},set:{read:t=>new Set(JSON.parse(t)),write:t=>JSON.stringify(Array.from(t))},date:{read:t=>new Date(t),write:t=>t.toISOString()}},et="vueuse-storage";function ft(t,e,n,o={}){var s;const{flush:r="pre",deep:c=!0,listenToStorageChanges:v=!0,writeDefaults:u=!0,mergeDefaults:h=!1,shallow:$,window:w=W,eventFilter:C,onError:y=B=>{console.error(B)}}=o,V=($?le:L)(e);if(!n)try{n=Pn("getDefaultStorage",()=>{var B;return(B=W)==null?void 0:B.localStorage})()}catch(B){y(B)}if(!n)return V;const I=U(e),S=wn(I),x=(s=o.serializer)!=null?s:Mn[S],{pause:z,resume:D}=hn(V,()=>de(V.value),{flush:r,deep:c,eventFilter:C});return w&&v&&(re(w,"storage",Pe),re(w,et,Mt)),Pe(),V;function de(B){try{if(B==null)n.removeItem(t);else{const H=x.write(B),Y=n.getItem(t);Y!==H&&(n.setItem(t,H),w&&w.dispatchEvent(new CustomEvent(et,{detail:{key:t,oldValue:Y,newValue:H,storageArea:n}})))}}catch(H){y(H)}}function Lt(B){const H=B?B.newValue:n.getItem(t);if(H==null)return u&&I!==null&&n.setItem(t,x.write(I)),I;if(!B&&h){const Y=x.read(H);return typeof h=="function"?h(Y,I):S==="object"&&!Array.isArray(Y)?Ze(Ze({},I),Y):Y}else return typeof H!="string"?H:x.read(H)}function Mt(B){Pe(B.detail)}function Pe(B){if(!(B&&B.storageArea!==n)){if(B&&B.key==null){V.value=I;return}if(!(B&&B.key!==t)){z();try{V.value=Lt(B)}catch(H){y(H)}finally{B?st(D):D()}}}}}function Kl(t,e,n={}){const{window:o=W}=n;return ft(t,e,o==null?void 0:o.localStorage,n)}function ht(t){const e=window.getComputedStyle(t);if(e.overflowX==="scroll"||e.overflowY==="scroll"||e.overflowX==="auto"&&t.clientHeight1?!0:(e.preventDefault&&e.preventDefault(),!1)}function ql(t,e=!1){const n=L(e);let o=null,s;K(ct(t),v=>{if(v){const u=v;s=u.style.overflow,n.value&&(u.style.overflow="hidden")}},{immediate:!0});const r=()=>{const v=U(t);!v||n.value||(We&&(o=re(v,"touchmove",u=>{In(u)},{passive:!1})),v.style.overflow="hidden",n.value=!0)},c=()=>{const v=U(t);!v||!n.value||(We&&(o==null||o()),v.style.overflow=s,n.value=!1)};return Te(c),P({get(){return n.value},set(v){v?r():c()}})}function Yl(t,e,n={}){const{window:o=W}=n;return ft(t,e,o==null?void 0:o.sessionStorage,n)}function Nn({window:t=W}={}){if(!t)return{x:L(0),y:L(0)};const e=L(t.scrollX),n=L(t.scrollY);return re(t,"scroll",()=>{e.value=t.scrollX,n.value=t.scrollY},{capture:!1,passive:!0}),{x:e,y:n}}function Cn(t,e){let n,o=!1;return()=>{n&&clearTimeout(n),o?n=setTimeout(t,e):(t(),o=!0,setTimeout(()=>{o=!1},e))}}function Se(t){return/^\//.test(t)?t:`/${t}`}function ie(t){if(Ot(t))return t.replace(Et,"");const{site:e}=M(),{pathname:n,search:o,hash:s}=new URL(t,"http://example.com"),r=n.endsWith("/")||n.endsWith(".html")?t:t.replace(/(?:(^\.+)\/)?.*$/,`$1${n.replace(/(\.md)?$/,e.value.cleanUrls?"":".html")}${o}${s}`);return Ie(r)}function mt(t,e){if(Array.isArray(t))return t;if(t==null)return[];e=Se(e);const n=Object.keys(t).sort((o,s)=>s.split("/").length-o.split("/").length).find(o=>e.startsWith(Se(o)));return n?t[n]:[]}function An(t){const e=[];let n=0;for(const o in t){const s=t[o];if(s.items){n=e.push(s);continue}e[n]||e.push({items:[]}),e[n].items.push(s)}return e}function Tn(t){const e=[];function n(o){for(const s of o)s.text&&s.link&&e.push({text:s.text,link:s.link}),s.items&&n(s.items)}return n(t),e}function Le(t,e){return Array.isArray(e)?e.some(n=>Le(t,n)):te(t,e.link)?!0:e.items?Le(t,e.items):!1}function G(){const t=ce(),{theme:e,frontmatter:n}=M(),o=Ve("(min-width: 960px)"),s=L(!1),r=P(()=>{const V=e.value.sidebar,I=t.data.relativePath;return V?mt(V,I):[]}),c=P(()=>n.value.sidebar!==!1&&r.value.length>0&&n.value.layout!=="home"),v=P(()=>u?n.value.aside==null?e.value.aside==="left":n.value.aside==="left":!1),u=P(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:e.value.aside!==!1),h=P(()=>c.value&&o.value),$=P(()=>c.value?An(r.value):[]);function w(){s.value=!0}function C(){s.value=!1}function y(){s.value?C():w()}return{isOpen:s,sidebar:r,sidebarGroups:$,hasSidebar:c,hasAside:u,leftAside:v,isSidebarEnabled:h,open:w,close:C,toggle:y}}function Bn(t,e){let n;ee(()=>{n=t.value?document.activeElement:void 0}),R(()=>{window.addEventListener("keyup",o)}),Ne(()=>{window.removeEventListener("keyup",o)});function o(s){s.key==="Escape"&&t.value&&(e(),n==null||n.focus())}}function xn(t){const{page:e}=M(),n=L(!1),o=P(()=>t.value.collapsed!=null),s=P(()=>!!t.value.link),r=P(()=>te(e.value.relativePath,t.value.link)),c=P(()=>r.value?!0:t.value.items?Le(e.value.relativePath,t.value.items):!1),v=P(()=>!!(t.value.items&&t.value.items.length));ee(()=>{n.value=!!(o.value&&t.value.collapsed)}),ee(()=>{(r.value||c.value)&&(n.value=!1)});function u(){o.value&&(n.value=!n.value)}return{collapsed:n,collapsible:o,isLink:s,isActiveLink:r,hasActiveLink:c,hasChildren:v,toggle:u}}const On=b({__name:"VPSkipLink",setup(t){const e=ce(),n=L();K(()=>e.path,()=>n.value.focus());function o({target:s}){const r=document.querySelector(decodeURIComponent(s.hash));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(s,r)=>(a(),l(A,null,[_("span",{ref_key:"backToTop",ref:n,tabindex:"-1"},null,512),_("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}});const En=m(On,[["__scopeId","data-v-4f4daff3"]]),Hn={key:0,class:"VPBackdrop"},Dn=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(t){return(e,n)=>(a(),k(Ce,{name:"fade"},{default:p(()=>[e.show?(a(),l("div",Hn)):g("",!0)]),_:1}))}});const zn=m(Dn,[["__scopeId","data-v-75c4fc4e"]]);function Fn(){const t=L(!1);function e(){t.value=!0,window.addEventListener("resize",s)}function n(){t.value=!1,window.removeEventListener("resize",s)}function o(){t.value?n():e()}function s(){window.outerWidth>=768&&n()}const r=ce();return K(()=>r.path,n),{isScreenOpen:t,openScreen:e,closeScreen:n,toggleScreen:o}}function ue({removeCurrent:t=!0,correspondingLink:e=!1}={}){const{site:n,localeIndex:o,page:s,theme:r}=M(),c=P(()=>{var u,h;return{label:(u=n.value.locales[o.value])==null?void 0:u.label,link:((h=n.value.locales[o.value])==null?void 0:h.link)||(o.value==="root"?"/":`/${o.value}/`)}});return{localeLinks:P(()=>Object.entries(n.value.locales).flatMap(([u,h])=>t&&c.value.label===h.label?[]:{text:h.label,link:jn(h.link||(u==="root"?"/":`/${u}/`),r.value.i18nRouting!==!1&&e,s.value.relativePath.slice(c.value.link.length-1),!n.value.cleanUrls)})),currentLang:c}}function jn(t,e,n,o){return e?t.replace(/\/$/,"")+Se(n.replace(/(^|\/)?index.md$/,"$1").replace(/\.md$/,o?".html":"")):t}const Gn=["src","alt"],Rn={inheritAttrs:!1},Un=b({...Rn,__name:"VPImage",props:{image:{},alt:{}},setup(t){return(e,n)=>{const o=X("VPImage",!0);return e.image?(a(),l(A,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),l("img",pe({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(Ie)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Gn)):(a(),l(A,{key:1},[f(o,pe({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),f(o,pe({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):g("",!0)}}});const Be=m(Un,[["__scopeId","data-v-03ae545e"]]),Wn=["href"],Kn=b({__name:"VPNavBarTitle",setup(t){const{site:e,theme:n}=M(),{hasSidebar:o}=G(),{currentLang:s}=ue();return(r,c)=>(a(),l("div",{class:T(["VPNavBarTitle",{"has-sidebar":i(o)}])},[_("a",{class:"title",href:i(ie)(i(s).link)},[d(r.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(a(),k(Be,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):g("",!0),i(n).siteTitle?(a(),l(A,{key:1},[O(N(i(n).siteTitle),1)],64)):i(n).siteTitle===void 0?(a(),l(A,{key:2},[O(N(i(e).title),1)],64)):g("",!0),d(r.$slots,"nav-bar-title-after",{},void 0,!0)],8,Wn)],2))}});const qn=m(Kn,[["__scopeId","data-v-479975b4"]]);const Yn={type:"button",class:"DocSearch DocSearch-Button","aria-label":"Search"},Jn={class:"DocSearch-Button-Container"},Xn=_("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[_("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Qn={class:"DocSearch-Button-Placeholder"},Zn=_("span",{class:"DocSearch-Button-Keys"},[_("kbd",{class:"DocSearch-Button-Key"}),_("kbd",{class:"DocSearch-Button-Key"},"K")],-1),tt=b({__name:"VPNavBarSearchButton",props:{placeholder:{}},setup(t){return(e,n)=>(a(),l("button",Yn,[_("span",Jn,[Xn,_("span",Qn,N(e.placeholder),1)]),Zn]))}});const eo={id:"local-search"},to={key:1,id:"docsearch"},no=b({__name:"VPNavBarSearch",setup(t){const e=Ht(()=>Dt(()=>import("./VPLocalSearchBox.9aeaf8b0.js"),["assets/chunks/VPLocalSearchBox.9aeaf8b0.js","assets/chunks/framework.40f7bea3.js"])),n=()=>null,{theme:o,localeIndex:s}=M(),r=L(!1),c=P(()=>{var V,I,S,x,z,D,de;const y=((V=o.value.search)==null?void 0:V.options)??o.value.algolia;return((z=(x=(S=(I=y==null?void 0:y.locales)==null?void 0:I[s.value])==null?void 0:S.translations)==null?void 0:x.button)==null?void 0:z.buttonText)||((de=(D=y==null?void 0:y.translations)==null?void 0:D.button)==null?void 0:de.buttonText)||"Search"});R(()=>{});function v(){r.value||(r.value=!0,setTimeout(u,16))}function u(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||u()},16)}function h(y){const V=y.target,I=V.tagName;return V.isContentEditable||I==="INPUT"||I==="SELECT"||I==="TEXTAREA"}const $=L(!1);Je("k",y=>{(y.ctrlKey||y.metaKey)&&(y.preventDefault(),$.value=!0)}),Je("/",y=>{h(y)||(y.preventDefault(),$.value=!0)});const w=L("'Meta'");R(()=>{w.value=/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"'⌘'":"'Ctrl'"});const C="local";return(y,V)=>{var I;return a(),l("div",{class:"VPNavBarSearch",style:at({"--vp-meta-key":w.value})},[i(C)==="local"?(a(),l(A,{key:0},[$.value?(a(),k(i(e),{key:0,placeholder:c.value,onClose:V[0]||(V[0]=S=>$.value=!1)},null,8,["placeholder"])):g("",!0),_("div",eo,[f(tt,{placeholder:c.value,onClick:V[1]||(V[1]=S=>$.value=!0)},null,8,["placeholder"])])],64)):i(C)==="algolia"?(a(),l(A,{key:1},[r.value?(a(),k(i(n),{key:0,algolia:((I=i(o).search)==null?void 0:I.options)??i(o).algolia},null,8,["algolia"])):(a(),l("div",to,[f(tt,{placeholder:c.value,onClick:v},null,8,["placeholder"])]))],64)):g("",!0)],4)}}});const oo={},so={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",height:"24px",viewBox:"0 0 24 24",width:"24px"},ao=_("path",{d:"M0 0h24v24H0V0z",fill:"none"},null,-1),ro=_("path",{d:"M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z"},null,-1),io=[ao,ro];function lo(t,e){return a(),l("svg",so,io)}const co=m(oo,[["render",lo]]),uo=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(t){const e=t,n=P(()=>e.tag??e.href?"a":"span"),o=P(()=>e.href&&rt.test(e.href));return(s,r)=>(a(),k(Q(n.value),{class:T(["VPLink",{link:s.href}]),href:s.href?i(ie)(s.href):void 0,target:s.target||(o.value?"_blank":void 0),rel:s.rel||(o.value?"noreferrer":void 0)},{default:p(()=>[d(s.$slots,"default",{},void 0,!0),o.value&&!s.noIcon?(a(),k(co,{key:0,class:"icon"})):g("",!0)]),_:3},8,["class","href","target","rel"]))}});const q=m(uo,[["__scopeId","data-v-80210a1c"]]),_o=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(t){const{page:e}=M();return(n,o)=>(a(),k(q,{class:T({VPNavBarMenuLink:!0,active:i(te)(i(e).relativePath,n.item.activeMatch||n.item.link,!!n.item.activeMatch)}),href:n.item.link,target:n.item.target,rel:n.item.rel,tabindex:"0"},{default:p(()=>[O(N(n.item.text),1)]),_:1},8,["class","href","target","rel"]))}});const vo=m(_o,[["__scopeId","data-v-29ac4bcf"]]),xe=L();let gt=!1,we=0;function po(t){const e=L(!1);if(zt){!gt&&fo(),we++;const n=K(xe,o=>{var s,r,c;o===t.el.value||(s=t.el.value)!=null&&s.contains(o)?(e.value=!0,(r=t.onFocus)==null||r.call(t)):(e.value=!1,(c=t.onBlur)==null||c.call(t))});Ne(()=>{n(),we--,we||ho()})}return Me(e)}function fo(){document.addEventListener("focusin",yt),gt=!0,xe.value=document.activeElement}function ho(){document.removeEventListener("focusin",yt)}function yt(){xe.value=document.activeElement}const mo={},go={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},yo=_("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),bo=[yo];function $o(t,e){return a(),l("svg",go,bo)}const bt=m(mo,[["render",$o]]),ko={},Po={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},wo=_("circle",{cx:"12",cy:"12",r:"2"},null,-1),Vo=_("circle",{cx:"19",cy:"12",r:"2"},null,-1),So=_("circle",{cx:"5",cy:"12",r:"2"},null,-1),Lo=[wo,Vo,So];function Mo(t,e){return a(),l("svg",Po,Lo)}const Io=m(ko,[["render",Mo]]),No={class:"VPMenuLink"},Co=b({__name:"VPMenuLink",props:{item:{}},setup(t){const{page:e}=M();return(n,o)=>(a(),l("div",No,[f(q,{class:T({active:i(te)(i(e).relativePath,n.item.activeMatch||n.item.link,!!n.item.activeMatch)}),href:n.item.link,target:n.item.target,rel:n.item.rel},{default:p(()=>[O(N(n.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const $e=m(Co,[["__scopeId","data-v-beebb861"]]),Ao={class:"VPMenuGroup"},To={key:0,class:"title"},Bo=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(t){return(e,n)=>(a(),l("div",Ao,[e.text?(a(),l("p",To,N(e.text),1)):g("",!0),(a(!0),l(A,null,E(e.items,o=>(a(),l(A,null,["link"in o?(a(),k($e,{key:0,item:o},null,8,["item"])):g("",!0)],64))),256))]))}});const xo=m(Bo,[["__scopeId","data-v-077ef54e"]]),Oo={class:"VPMenu"},Eo={key:0,class:"items"},Ho=b({__name:"VPMenu",props:{items:{}},setup(t){return(e,n)=>(a(),l("div",Oo,[e.items?(a(),l("div",Eo,[(a(!0),l(A,null,E(e.items,o=>(a(),l(A,{key:o.text},["link"in o?(a(),k($e,{key:0,item:o},null,8,["item"])):(a(),k(xo,{key:1,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):g("",!0),d(e.$slots,"default",{},void 0,!0)]))}});const Do=m(Ho,[["__scopeId","data-v-e2937110"]]),zo=["aria-expanded","aria-label"],Fo={key:0,class:"text"},jo={class:"menu"},Go=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(t){const e=L(!1),n=L();po({el:n,onBlur:o});function o(){e.value=!1}return(s,r)=>(a(),l("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=c=>e.value=!0),onMouseleave:r[2]||(r[2]=c=>e.value=!1)},[_("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:r[0]||(r[0]=c=>e.value=!e.value)},[s.button||s.icon?(a(),l("span",Fo,[s.icon?(a(),k(Q(s.icon),{key:0,class:"option-icon"})):g("",!0),O(" "+N(s.button)+" ",1),f(bt,{class:"text-icon"})])):(a(),k(Io,{key:1,class:"icon"}))],8,zo),_("div",jo,[f(Do,{items:s.items},{default:p(()=>[d(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const Oe=m(Go,[["__scopeId","data-v-b66d14d8"]]),Ro=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(t){const{page:e}=M();return(n,o)=>(a(),k(Oe,{class:T({VPNavBarMenuGroup:!0,active:i(te)(i(e).relativePath,n.item.activeMatch,!!n.item.activeMatch)}),button:n.item.text,items:n.item.items},null,8,["class","button","items"]))}}),Uo=t=>(F("data-v-3f1abc46"),t=t(),j(),t),Wo={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Ko=Uo(()=>_("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),qo=b({__name:"VPNavBarMenu",setup(t){const{theme:e}=M();return(n,o)=>i(e).nav?(a(),l("nav",Wo,[Ko,(a(!0),l(A,null,E(i(e).nav,s=>(a(),l(A,{key:s.text},["link"in s?(a(),k(vo,{key:0,item:s},null,8,["item"])):(a(),k(Ro,{key:1,item:s},null,8,["item"]))],64))),128))])):g("",!0)}});const Yo=m(qo,[["__scopeId","data-v-3f1abc46"]]),Jo={},Xo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Qo=_("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),Zo=_("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),es=[Qo,Zo];function ts(t,e){return a(),l("svg",Xo,es)}const $t=m(Jo,[["render",ts]]),ns={class:"items"},os={class:"title"},ss=b({__name:"VPNavBarTranslations",setup(t){const{theme:e}=M(),{localeLinks:n,currentLang:o}=ue({correspondingLink:!0});return(s,r)=>i(n).length&&i(o).label?(a(),k(Oe,{key:0,class:"VPNavBarTranslations",icon:$t,label:i(e).langMenuLabel||"Change language"},{default:p(()=>[_("div",ns,[_("p",os,N(i(o).label),1),(a(!0),l(A,null,E(i(n),c=>(a(),k($e,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):g("",!0)}});const as=m(ss,[["__scopeId","data-v-0ae6bd23"]]);const rs={},is={class:"VPSwitch",type:"button",role:"switch"},ls={class:"check"},cs={key:0,class:"icon"};function us(t,e){return a(),l("button",is,[_("span",ls,[t.$slots.default?(a(),l("span",cs,[d(t.$slots,"default",{},void 0,!0)])):g("",!0)])])}const ds=m(rs,[["render",us],["__scopeId","data-v-8e3ebceb"]]),_s={},vs={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ps=Ft('',9),fs=[ps];function hs(t,e){return a(),l("svg",vs,fs)}const ms=m(_s,[["render",hs]]),gs={},ys={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},bs=_("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),$s=[bs];function ks(t,e){return a(),l("svg",ys,$s)}const Ps=m(gs,[["render",ks]]),ws=b({__name:"VPSwitchAppearance",setup(t){const{site:e,isDark:n}=M(),o=L(!1),s=typeof localStorage<"u"?r():()=>{};R(()=>{o.value=document.documentElement.classList.contains("dark")});function r(){const c=window.matchMedia("(prefers-color-scheme: dark)"),v=document.documentElement.classList;let u=localStorage.getItem(Ue),h=e.value.appearance==="dark"&&u==null||(u==="auto"||u==null?c.matches:u==="dark");c.onchange=C=>{u==="auto"&&w(h=C.matches)};function $(){w(h=!h),u=h?c.matches?"auto":"dark":c.matches?"light":"auto",localStorage.setItem(Ue,u)}function w(C){const y=document.createElement("style");y.type="text/css",y.appendChild(document.createTextNode(`:not(.VPSwitchAppearance):not(.VPSwitchAppearance *) { +import{d as b,o as a,c as l,r as d,n as T,a as O,t as N,_ as m,u as Mt,b as i,g as It,e as Nt,f as Ct,h as Me,i as At,j as L,w as K,k as ee,l as P,m as Tt,p as U,q as Bt,s as le,v as st,x as xt,P as Ot,y as Ie,z as te,A as ce,B as Ne,C as _,F as A,D as k,E as p,T as Ce,G as g,H as X,I as pe,J as f,K as at,L as Et,M as Ht,N as Q,O as rt,Q as Dt,R as E,S as F,U as j,V as zt,W as Ue,X as Ae,Y as fe,Z as Ft,$ as se,a0 as jt,a1 as Gt,a2 as Rt,a3 as Ut,a4 as Wt}from"./framework.e7f80142.js";const Kt=b({__name:"VPBadge",props:{text:{},type:{}},setup(t){return(e,n)=>(a(),l("span",{class:T(["VPBadge",e.type??"tip"])},[d(e.$slots,"default",{},()=>[O(N(e.text),1)],!0)],2))}});const qt=m(Kt,[["__scopeId","data-v-a3873325"]]),M=Mt;function Te(t){return It()?(Nt(t),!0):!1}function G(t){return typeof t=="function"?t():i(t)}const it=typeof window<"u",ae=()=>{},We=Yt();function Yt(){var t;return it&&((t=window==null?void 0:window.navigator)==null?void 0:t.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent)}function Jt(t,e){function n(...o){return new Promise((s,r)=>{Promise.resolve(t(()=>e.apply(this,o),{fn:e,thisArg:this,args:o})).then(s).catch(r)})}return n}const lt=t=>t();function Xt(t,e={}){let n,o,s=ae;const r=v=>{clearTimeout(v),s(),s=ae};return v=>{const u=G(t),h=G(e.maxWait);return n&&r(n),u<=0||h!==void 0&&h<=0?(o&&(r(o),o=null),Promise.resolve(v())):new Promise(($,w)=>{s=e.rejectOnCancel?w:$,h&&!o&&(o=setTimeout(()=>{n&&r(n),o=null,$(v())},h)),n=setTimeout(()=>{o&&r(o),o=null,$(v())},u)})}}function Qt(t=lt){const e=L(!0);function n(){e.value=!1}function o(){e.value=!0}const s=(...r)=>{e.value&&t(...r)};return{isActive:Me(e),pause:n,resume:o,eventFilter:s}}function Zt(...t){if(t.length!==1)return Ct(...t);const e=t[0];return typeof e=="function"?Me(At(()=>({get:e,set:ae}))):L(e)}var Ke=Object.getOwnPropertySymbols,en=Object.prototype.hasOwnProperty,tn=Object.prototype.propertyIsEnumerable,nn=(t,e)=>{var n={};for(var o in t)en.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(t!=null&&Ke)for(var o of Ke(t))e.indexOf(o)<0&&tn.call(t,o)&&(n[o]=t[o]);return n};function ct(t,e,n={}){const o=n,{eventFilter:s=lt}=o,r=nn(o,["eventFilter"]);return K(t,Jt(s,e),r)}var on=Object.defineProperty,sn=Object.defineProperties,an=Object.getOwnPropertyDescriptors,he=Object.getOwnPropertySymbols,ut=Object.prototype.hasOwnProperty,dt=Object.prototype.propertyIsEnumerable,qe=(t,e,n)=>e in t?on(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,rn=(t,e)=>{for(var n in e||(e={}))ut.call(e,n)&&qe(t,n,e[n]);if(he)for(var n of he(e))dt.call(e,n)&&qe(t,n,e[n]);return t},ln=(t,e)=>sn(t,an(e)),cn=(t,e)=>{var n={};for(var o in t)ut.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(t!=null&&he)for(var o of he(t))e.indexOf(o)<0&&dt.call(t,o)&&(n[o]=t[o]);return n};function Ul(t,e,n={}){const o=n,{debounce:s=0,maxWait:r=void 0}=o,c=cn(o,["debounce","maxWait"]);return ct(t,e,ln(rn({},c),{eventFilter:Xt(s,{maxWait:r})}))}var un=Object.defineProperty,dn=Object.defineProperties,_n=Object.getOwnPropertyDescriptors,me=Object.getOwnPropertySymbols,_t=Object.prototype.hasOwnProperty,vt=Object.prototype.propertyIsEnumerable,Ye=(t,e,n)=>e in t?un(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,vn=(t,e)=>{for(var n in e||(e={}))_t.call(e,n)&&Ye(t,n,e[n]);if(me)for(var n of me(e))vt.call(e,n)&&Ye(t,n,e[n]);return t},pn=(t,e)=>dn(t,_n(e)),fn=(t,e)=>{var n={};for(var o in t)_t.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(t!=null&&me)for(var o of me(t))e.indexOf(o)<0&&vt.call(t,o)&&(n[o]=t[o]);return n};function hn(t,e,n={}){const o=n,{eventFilter:s}=o,r=fn(o,["eventFilter"]),{eventFilter:c,pause:v,resume:u,isActive:h}=Qt(s);return{stop:ct(t,e,pn(vn({},r),{eventFilter:c})),pause:v,resume:u,isActive:h}}function Wl(t,e,n){let o;Bt(n)?o={evaluating:n}:o=n||{};const{lazy:s=!1,evaluating:r=void 0,shallow:c=!0,onError:v=ae}=o,u=L(!s),h=c?le(e):L(e);let $=0;return ee(async w=>{if(!u.value)return;$++;const C=$;let y=!1;r&&Promise.resolve().then(()=>{r.value=!0});try{const V=await t(I=>{w(()=>{r&&(r.value=!1),y||I()})});C===$&&(h.value=V)}catch(V){v(V)}finally{r&&C===$&&(r.value=!1),y=!0}}),s?P(()=>(u.value=!0,h.value)):h}function mn(t){var e;const n=G(t);return(e=n==null?void 0:n.$el)!=null?e:n}const W=it?window:void 0;function re(...t){let e,n,o,s;if(typeof t[0]=="string"||Array.isArray(t[0])?([n,o,s]=t,e=W):[e,n,o,s]=t,!e)return ae;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const r=[],c=()=>{r.forEach($=>$()),r.length=0},v=($,w,C,y)=>($.addEventListener(w,C,y),()=>$.removeEventListener(w,C,y)),u=K(()=>[mn(e),G(s)],([$,w])=>{c(),$&&r.push(...n.flatMap(C=>o.map(y=>v($,C,y,w))))},{immediate:!0,flush:"post"}),h=()=>{u(),c()};return Te(h),h}function gn(t){return typeof t=="function"?t:typeof t=="string"?e=>e.key===t:Array.isArray(t)?e=>t.includes(e.key):()=>!0}function Je(...t){let e,n,o={};t.length===3?(e=t[0],n=t[1],o=t[2]):t.length===2?typeof t[1]=="object"?(e=!0,n=t[0],o=t[1]):(e=t[0],n=t[1]):(e=!0,n=t[0]);const{target:s=W,eventName:r="keydown",passive:c=!1,dedupe:v=!1}=o,u=gn(e);return re(s,r,$=>{$.repeat&&G(v)||u($)&&n($)},c)}function yn(){const t=L(!1);return Tt()&&U(()=>{t.value=!0}),t}function bn(t){const e=yn();return P(()=>(e.value,!!t()))}function Ve(t,e={}){const{window:n=W}=e,o=bn(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const r=L(!1),c=h=>{r.value=h.matches},v=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",c):s.removeListener(c))},u=ee(()=>{o.value&&(v(),s=n.matchMedia(G(t)),"addEventListener"in s?s.addEventListener("change",c):s.addListener(c),r.value=s.matches)});return Te(()=>{u(),v(),s=void 0}),r}const _e=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ve="__vueuse_ssr_handlers__",$n=kn();function kn(){return ve in _e||(_e[ve]=_e[ve]||{}),_e[ve]}function Pn(t,e){return $n[t]||e}function wn(t){return t==null?"any":t instanceof Set?"set":t instanceof Map?"map":t instanceof Date?"date":typeof t=="boolean"?"boolean":typeof t=="string"?"string":typeof t=="object"?"object":Number.isNaN(t)?"any":"number"}var Vn=Object.defineProperty,Xe=Object.getOwnPropertySymbols,Sn=Object.prototype.hasOwnProperty,Ln=Object.prototype.propertyIsEnumerable,Qe=(t,e,n)=>e in t?Vn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Ze=(t,e)=>{for(var n in e||(e={}))Sn.call(e,n)&&Qe(t,n,e[n]);if(Xe)for(var n of Xe(e))Ln.call(e,n)&&Qe(t,n,e[n]);return t};const Mn={boolean:{read:t=>t==="true",write:t=>String(t)},object:{read:t=>JSON.parse(t),write:t=>JSON.stringify(t)},number:{read:t=>Number.parseFloat(t),write:t=>String(t)},any:{read:t=>t,write:t=>String(t)},string:{read:t=>t,write:t=>String(t)},map:{read:t=>new Map(JSON.parse(t)),write:t=>JSON.stringify(Array.from(t.entries()))},set:{read:t=>new Set(JSON.parse(t)),write:t=>JSON.stringify(Array.from(t))},date:{read:t=>new Date(t),write:t=>t.toISOString()}},et="vueuse-storage";function pt(t,e,n,o={}){var s;const{flush:r="pre",deep:c=!0,listenToStorageChanges:v=!0,writeDefaults:u=!0,mergeDefaults:h=!1,shallow:$,window:w=W,eventFilter:C,onError:y=B=>{console.error(B)}}=o,V=($?le:L)(e);if(!n)try{n=Pn("getDefaultStorage",()=>{var B;return(B=W)==null?void 0:B.localStorage})()}catch(B){y(B)}if(!n)return V;const I=G(e),S=wn(I),x=(s=o.serializer)!=null?s:Mn[S],{pause:z,resume:D}=hn(V,()=>de(V.value),{flush:r,deep:c,eventFilter:C});return w&&v&&(re(w,"storage",Pe),re(w,et,Lt)),Pe(),V;function de(B){try{if(B==null)n.removeItem(t);else{const H=x.write(B),Y=n.getItem(t);Y!==H&&(n.setItem(t,H),w&&w.dispatchEvent(new CustomEvent(et,{detail:{key:t,oldValue:Y,newValue:H,storageArea:n}})))}}catch(H){y(H)}}function St(B){const H=B?B.newValue:n.getItem(t);if(H==null)return u&&I!==null&&n.setItem(t,x.write(I)),I;if(!B&&h){const Y=x.read(H);return typeof h=="function"?h(Y,I):S==="object"&&!Array.isArray(Y)?Ze(Ze({},I),Y):Y}else return typeof H!="string"?H:x.read(H)}function Lt(B){Pe(B.detail)}function Pe(B){if(!(B&&B.storageArea!==n)){if(B&&B.key==null){V.value=I;return}if(!(B&&B.key!==t)){z();try{V.value=St(B)}catch(H){y(H)}finally{B?st(D):D()}}}}}function Kl(t,e,n={}){const{window:o=W}=n;return pt(t,e,o==null?void 0:o.localStorage,n)}function ft(t){const e=window.getComputedStyle(t);if(e.overflowX==="scroll"||e.overflowY==="scroll"||e.overflowX==="auto"&&t.clientWidth1?!0:(e.preventDefault&&e.preventDefault(),!1)}function ql(t,e=!1){const n=L(e);let o=null,s;K(Zt(t),v=>{if(v){const u=v;s=u.style.overflow,n.value&&(u.style.overflow="hidden")}},{immediate:!0});const r=()=>{const v=G(t);!v||n.value||(We&&(o=re(v,"touchmove",u=>{In(u)},{passive:!1})),v.style.overflow="hidden",n.value=!0)},c=()=>{const v=G(t);!v||!n.value||(We&&(o==null||o()),v.style.overflow=s,n.value=!1)};return Te(c),P({get(){return n.value},set(v){v?r():c()}})}function Yl(t,e,n={}){const{window:o=W}=n;return pt(t,e,o==null?void 0:o.sessionStorage,n)}function Nn({window:t=W}={}){if(!t)return{x:L(0),y:L(0)};const e=L(t.scrollX),n=L(t.scrollY);return re(t,"scroll",()=>{e.value=t.scrollX,n.value=t.scrollY},{capture:!1,passive:!0}),{x:e,y:n}}function Cn(t,e){let n,o=!1;return()=>{n&&clearTimeout(n),o?n=setTimeout(t,e):(t(),o=!0,setTimeout(()=>{o=!1},e))}}function Se(t){return/^\//.test(t)?t:`/${t}`}function ie(t){if(xt(t))return t.replace(Ot,"");const{site:e}=M(),{pathname:n,search:o,hash:s}=new URL(t,"http://example.com"),r=n.endsWith("/")||n.endsWith(".html")?t:t.replace(/(?:(^\.+)\/)?.*$/,`$1${n.replace(/(\.md)?$/,e.value.cleanUrls?"":".html")}${o}${s}`);return Ie(r)}function ht(t,e){if(Array.isArray(t))return t;if(t==null)return[];e=Se(e);const n=Object.keys(t).sort((o,s)=>s.split("/").length-o.split("/").length).find(o=>e.startsWith(Se(o)));return n?t[n]:[]}function An(t){const e=[];let n=0;for(const o in t){const s=t[o];if(s.items){n=e.push(s);continue}e[n]||e.push({items:[]}),e[n].items.push(s)}return e}function Tn(t){const e=[];function n(o){for(const s of o)s.text&&s.link&&e.push({text:s.text,link:s.link}),s.items&&n(s.items)}return n(t),e}function Le(t,e){return Array.isArray(e)?e.some(n=>Le(t,n)):te(t,e.link)?!0:e.items?Le(t,e.items):!1}function R(){const t=ce(),{theme:e,frontmatter:n}=M(),o=Ve("(min-width: 960px)"),s=L(!1),r=P(()=>{const V=e.value.sidebar,I=t.data.relativePath;return V?ht(V,I):[]}),c=P(()=>n.value.sidebar!==!1&&r.value.length>0&&n.value.layout!=="home"),v=P(()=>u?n.value.aside==null?e.value.aside==="left":n.value.aside==="left":!1),u=P(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:e.value.aside!==!1),h=P(()=>c.value&&o.value),$=P(()=>c.value?An(r.value):[]);function w(){s.value=!0}function C(){s.value=!1}function y(){s.value?C():w()}return{isOpen:s,sidebar:r,sidebarGroups:$,hasSidebar:c,hasAside:u,leftAside:v,isSidebarEnabled:h,open:w,close:C,toggle:y}}function Bn(t,e){let n;ee(()=>{n=t.value?document.activeElement:void 0}),U(()=>{window.addEventListener("keyup",o)}),Ne(()=>{window.removeEventListener("keyup",o)});function o(s){s.key==="Escape"&&t.value&&(e(),n==null||n.focus())}}function xn(t){const{page:e}=M(),n=L(!1),o=P(()=>t.value.collapsed!=null),s=P(()=>!!t.value.link),r=P(()=>te(e.value.relativePath,t.value.link)),c=P(()=>r.value?!0:t.value.items?Le(e.value.relativePath,t.value.items):!1),v=P(()=>!!(t.value.items&&t.value.items.length));ee(()=>{n.value=!!(o.value&&t.value.collapsed)}),ee(()=>{(r.value||c.value)&&(n.value=!1)});function u(){o.value&&(n.value=!n.value)}return{collapsed:n,collapsible:o,isLink:s,isActiveLink:r,hasActiveLink:c,hasChildren:v,toggle:u}}const On=b({__name:"VPSkipLink",setup(t){const e=ce(),n=L();K(()=>e.path,()=>n.value.focus());function o({target:s}){const r=document.querySelector(decodeURIComponent(s.hash));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(s,r)=>(a(),l(A,null,[_("span",{ref_key:"backToTop",ref:n,tabindex:"-1"},null,512),_("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}});const En=m(On,[["__scopeId","data-v-f3581b34"]]),Hn={key:0,class:"VPBackdrop"},Dn=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(t){return(e,n)=>(a(),k(Ce,{name:"fade"},{default:p(()=>[e.show?(a(),l("div",Hn)):g("",!0)]),_:1}))}});const zn=m(Dn,[["__scopeId","data-v-f4f207be"]]);function Fn(){const t=L(!1);function e(){t.value=!0,window.addEventListener("resize",s)}function n(){t.value=!1,window.removeEventListener("resize",s)}function o(){t.value?n():e()}function s(){window.outerWidth>=768&&n()}const r=ce();return K(()=>r.path,n),{isScreenOpen:t,openScreen:e,closeScreen:n,toggleScreen:o}}function ue({removeCurrent:t=!0,correspondingLink:e=!1}={}){const{site:n,localeIndex:o,page:s,theme:r}=M(),c=P(()=>{var u,h;return{label:(u=n.value.locales[o.value])==null?void 0:u.label,link:((h=n.value.locales[o.value])==null?void 0:h.link)||(o.value==="root"?"/":`/${o.value}/`)}});return{localeLinks:P(()=>Object.entries(n.value.locales).flatMap(([u,h])=>t&&c.value.label===h.label?[]:{text:h.label,link:jn(h.link||(u==="root"?"/":`/${u}/`),r.value.i18nRouting!==!1&&e,s.value.relativePath.slice(c.value.link.length-1),!n.value.cleanUrls)})),currentLang:c}}function jn(t,e,n,o){return e?t.replace(/\/$/,"")+Se(n.replace(/(^|\/)?index.md$/,"$1").replace(/\.md$/,o?".html":"")):t}const Gn=["src","alt"],Rn={inheritAttrs:!1},Un=b({...Rn,__name:"VPImage",props:{image:{},alt:{}},setup(t){return(e,n)=>{const o=X("VPImage",!0);return e.image?(a(),l(A,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),l("img",pe({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(Ie)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Gn)):(a(),l(A,{key:1},[f(o,pe({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),f(o,pe({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):g("",!0)}}});const Be=m(Un,[["__scopeId","data-v-dbd5cf9e"]]),Wn=["href"],Kn=b({__name:"VPNavBarTitle",setup(t){const{site:e,theme:n}=M(),{hasSidebar:o}=R(),{currentLang:s}=ue();return(r,c)=>(a(),l("div",{class:T(["VPNavBarTitle",{"has-sidebar":i(o)}])},[_("a",{class:"title",href:i(ie)(i(s).link)},[d(r.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(a(),k(Be,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):g("",!0),i(n).siteTitle?(a(),l(A,{key:1},[O(N(i(n).siteTitle),1)],64)):i(n).siteTitle===void 0?(a(),l(A,{key:2},[O(N(i(e).title),1)],64)):g("",!0),d(r.$slots,"nav-bar-title-after",{},void 0,!0)],8,Wn)],2))}});const qn=m(Kn,[["__scopeId","data-v-274c4161"]]);const Yn={type:"button",class:"DocSearch DocSearch-Button","aria-label":"Search"},Jn={class:"DocSearch-Button-Container"},Xn=_("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[_("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Qn={class:"DocSearch-Button-Placeholder"},Zn=_("span",{class:"DocSearch-Button-Keys"},[_("kbd",{class:"DocSearch-Button-Key"}),_("kbd",{class:"DocSearch-Button-Key"},"K")],-1),tt=b({__name:"VPNavBarSearchButton",props:{placeholder:{}},setup(t){return(e,n)=>(a(),l("button",Yn,[_("span",Jn,[Xn,_("span",Qn,N(e.placeholder),1)]),Zn]))}});const eo={id:"local-search"},to={key:1,id:"docsearch"},no=b({__name:"VPNavBarSearch",setup(t){const e=Et(()=>Ht(()=>import("./VPLocalSearchBox.5bf8ff7b.js"),["assets/chunks/VPLocalSearchBox.5bf8ff7b.js","assets/chunks/framework.e7f80142.js"])),n=()=>null,{theme:o,localeIndex:s}=M(),r=L(!1),c=P(()=>{var V,I,S,x,z,D,de;const y=((V=o.value.search)==null?void 0:V.options)??o.value.algolia;return((z=(x=(S=(I=y==null?void 0:y.locales)==null?void 0:I[s.value])==null?void 0:S.translations)==null?void 0:x.button)==null?void 0:z.buttonText)||((de=(D=y==null?void 0:y.translations)==null?void 0:D.button)==null?void 0:de.buttonText)||"Search"});U(()=>{});function v(){r.value||(r.value=!0,setTimeout(u,16))}function u(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||u()},16)}function h(y){const V=y.target,I=V.tagName;return V.isContentEditable||I==="INPUT"||I==="SELECT"||I==="TEXTAREA"}const $=L(!1);Je("k",y=>{(y.ctrlKey||y.metaKey)&&(y.preventDefault(),$.value=!0)}),Je("/",y=>{h(y)||(y.preventDefault(),$.value=!0)});const w=L("'Meta'");U(()=>{w.value=/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"'⌘'":"'Ctrl'"});const C="local";return(y,V)=>{var I;return a(),l("div",{class:"VPNavBarSearch",style:at({"--vp-meta-key":w.value})},[i(C)==="local"?(a(),l(A,{key:0},[$.value?(a(),k(i(e),{key:0,placeholder:c.value,onClose:V[0]||(V[0]=S=>$.value=!1)},null,8,["placeholder"])):g("",!0),_("div",eo,[f(tt,{placeholder:c.value,onClick:V[1]||(V[1]=S=>$.value=!0)},null,8,["placeholder"])])],64)):i(C)==="algolia"?(a(),l(A,{key:1},[r.value?(a(),k(i(n),{key:0,algolia:((I=i(o).search)==null?void 0:I.options)??i(o).algolia},null,8,["algolia"])):(a(),l("div",to,[f(tt,{placeholder:c.value,onClick:v},null,8,["placeholder"])]))],64)):g("",!0)],4)}}});const oo={},so={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",height:"24px",viewBox:"0 0 24 24",width:"24px"},ao=_("path",{d:"M0 0h24v24H0V0z",fill:"none"},null,-1),ro=_("path",{d:"M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z"},null,-1),io=[ao,ro];function lo(t,e){return a(),l("svg",so,io)}const co=m(oo,[["render",lo]]),uo=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(t){const e=t,n=P(()=>e.tag??e.href?"a":"span"),o=P(()=>e.href&&rt.test(e.href));return(s,r)=>(a(),k(Q(n.value),{class:T(["VPLink",{link:s.href}]),href:s.href?i(ie)(s.href):void 0,target:s.target||(o.value?"_blank":void 0),rel:s.rel||(o.value?"noreferrer":void 0)},{default:p(()=>[d(s.$slots,"default",{},void 0,!0),o.value&&!s.noIcon?(a(),k(co,{key:0,class:"icon"})):g("",!0)]),_:3},8,["class","href","target","rel"]))}});const q=m(uo,[["__scopeId","data-v-fb985c39"]]),_o=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(t){const{page:e}=M();return(n,o)=>(a(),k(q,{class:T({VPNavBarMenuLink:!0,active:i(te)(i(e).relativePath,n.item.activeMatch||n.item.link,!!n.item.activeMatch)}),href:n.item.link,target:n.item.target,rel:n.item.rel,tabindex:"0"},{default:p(()=>[O(N(n.item.text),1)]),_:1},8,["class","href","target","rel"]))}});const vo=m(_o,[["__scopeId","data-v-72754ec8"]]),xe=L();let mt=!1,we=0;function po(t){const e=L(!1);if(Dt){!mt&&fo(),we++;const n=K(xe,o=>{var s,r,c;o===t.el.value||(s=t.el.value)!=null&&s.contains(o)?(e.value=!0,(r=t.onFocus)==null||r.call(t)):(e.value=!1,(c=t.onBlur)==null||c.call(t))});Ne(()=>{n(),we--,we||ho()})}return Me(e)}function fo(){document.addEventListener("focusin",gt),mt=!0,xe.value=document.activeElement}function ho(){document.removeEventListener("focusin",gt)}function gt(){xe.value=document.activeElement}const mo={},go={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},yo=_("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),bo=[yo];function $o(t,e){return a(),l("svg",go,bo)}const yt=m(mo,[["render",$o]]),ko={},Po={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},wo=_("circle",{cx:"12",cy:"12",r:"2"},null,-1),Vo=_("circle",{cx:"19",cy:"12",r:"2"},null,-1),So=_("circle",{cx:"5",cy:"12",r:"2"},null,-1),Lo=[wo,Vo,So];function Mo(t,e){return a(),l("svg",Po,Lo)}const Io=m(ko,[["render",Mo]]),No={class:"VPMenuLink"},Co=b({__name:"VPMenuLink",props:{item:{}},setup(t){const{page:e}=M();return(n,o)=>(a(),l("div",No,[f(q,{class:T({active:i(te)(i(e).relativePath,n.item.activeMatch||n.item.link,!!n.item.activeMatch)}),href:n.item.link,target:n.item.target,rel:n.item.rel},{default:p(()=>[O(N(n.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const $e=m(Co,[["__scopeId","data-v-1fd345a4"]]),Ao={class:"VPMenuGroup"},To={key:0,class:"title"},Bo=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(t){return(e,n)=>(a(),l("div",Ao,[e.text?(a(),l("p",To,N(e.text),1)):g("",!0),(a(!0),l(A,null,E(e.items,o=>(a(),l(A,null,["link"in o?(a(),k($e,{key:0,item:o},null,8,["item"])):g("",!0)],64))),256))]))}});const xo=m(Bo,[["__scopeId","data-v-197e3c2a"]]),Oo={class:"VPMenu"},Eo={key:0,class:"items"},Ho=b({__name:"VPMenu",props:{items:{}},setup(t){return(e,n)=>(a(),l("div",Oo,[e.items?(a(),l("div",Eo,[(a(!0),l(A,null,E(e.items,o=>(a(),l(A,{key:o.text},["link"in o?(a(),k($e,{key:0,item:o},null,8,["item"])):(a(),k(xo,{key:1,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):g("",!0),d(e.$slots,"default",{},void 0,!0)]))}});const Do=m(Ho,[["__scopeId","data-v-fe686081"]]),zo=["aria-expanded","aria-label"],Fo={key:0,class:"text"},jo={class:"menu"},Go=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(t){const e=L(!1),n=L();po({el:n,onBlur:o});function o(){e.value=!1}return(s,r)=>(a(),l("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=c=>e.value=!0),onMouseleave:r[2]||(r[2]=c=>e.value=!1)},[_("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:r[0]||(r[0]=c=>e.value=!e.value)},[s.button||s.icon?(a(),l("span",Fo,[s.icon?(a(),k(Q(s.icon),{key:0,class:"option-icon"})):g("",!0),O(" "+N(s.button)+" ",1),f(yt,{class:"text-icon"})])):(a(),k(Io,{key:1,class:"icon"}))],8,zo),_("div",jo,[f(Do,{items:s.items},{default:p(()=>[d(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const Oe=m(Go,[["__scopeId","data-v-8f2164d8"]]),Ro=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(t){const{page:e}=M();return(n,o)=>(a(),k(Oe,{class:T({VPNavBarMenuGroup:!0,active:i(te)(i(e).relativePath,n.item.activeMatch,!!n.item.activeMatch)}),button:n.item.text,items:n.item.items},null,8,["class","button","items"]))}}),Uo=t=>(F("data-v-6e1dadf5"),t=t(),j(),t),Wo={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Ko=Uo(()=>_("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),qo=b({__name:"VPNavBarMenu",setup(t){const{theme:e}=M();return(n,o)=>i(e).nav?(a(),l("nav",Wo,[Ko,(a(!0),l(A,null,E(i(e).nav,s=>(a(),l(A,{key:s.text},["link"in s?(a(),k(vo,{key:0,item:s},null,8,["item"])):(a(),k(Ro,{key:1,item:s},null,8,["item"]))],64))),128))])):g("",!0)}});const Yo=m(qo,[["__scopeId","data-v-6e1dadf5"]]),Jo={},Xo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Qo=_("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),Zo=_("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),es=[Qo,Zo];function ts(t,e){return a(),l("svg",Xo,es)}const bt=m(Jo,[["render",ts]]),ns={class:"items"},os={class:"title"},ss=b({__name:"VPNavBarTranslations",setup(t){const{theme:e}=M(),{localeLinks:n,currentLang:o}=ue({correspondingLink:!0});return(s,r)=>i(n).length&&i(o).label?(a(),k(Oe,{key:0,class:"VPNavBarTranslations",icon:bt,label:i(e).langMenuLabel||"Change language"},{default:p(()=>[_("div",ns,[_("p",os,N(i(o).label),1),(a(!0),l(A,null,E(i(n),c=>(a(),k($e,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):g("",!0)}});const as=m(ss,[["__scopeId","data-v-5767994d"]]);const rs={},is={class:"VPSwitch",type:"button",role:"switch"},ls={class:"check"},cs={key:0,class:"icon"};function us(t,e){return a(),l("button",is,[_("span",ls,[t.$slots.default?(a(),l("span",cs,[d(t.$slots,"default",{},void 0,!0)])):g("",!0)])])}const ds=m(rs,[["render",us],["__scopeId","data-v-cfc474d3"]]),_s={},vs={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ps=zt('',9),fs=[ps];function hs(t,e){return a(),l("svg",vs,fs)}const ms=m(_s,[["render",hs]]),gs={},ys={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},bs=_("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),$s=[bs];function ks(t,e){return a(),l("svg",ys,$s)}const Ps=m(gs,[["render",ks]]),ws=b({__name:"VPSwitchAppearance",setup(t){const{site:e,isDark:n}=M(),o=L(!1),s=typeof localStorage<"u"?r():()=>{};U(()=>{o.value=document.documentElement.classList.contains("dark")});function r(){const c=window.matchMedia("(prefers-color-scheme: dark)"),v=document.documentElement.classList;let u=localStorage.getItem(Ue),h=e.value.appearance==="dark"&&u==null||(u==="auto"||u==null?c.matches:u==="dark");c.onchange=C=>{u==="auto"&&w(h=C.matches)};function $(){w(h=!h),u=h?c.matches?"auto":"dark":c.matches?"light":"auto",localStorage.setItem(Ue,u)}function w(C){const y=document.createElement("style");y.type="text/css",y.appendChild(document.createTextNode(`:not(.VPSwitchAppearance):not(.VPSwitchAppearance *) { -webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important; -ms-transition: none !important; transition: none !important; -}`)),document.head.appendChild(y),o.value=C,v[C?"add":"remove"]("dark"),window.getComputedStyle(y).opacity,document.head.removeChild(y)}return $}return K(o,c=>{n.value=c}),(c,v)=>(a(),k(ds,{title:"toggle dark mode",class:"VPSwitchAppearance","aria-checked":o.value,onClick:i(s)},{default:p(()=>[f(ms,{class:"sun"}),f(Ps,{class:"moon"})]),_:1},8,["aria-checked","onClick"]))}});const Ee=m(ws,[["__scopeId","data-v-87a3f9df"]]),Vs={key:0,class:"VPNavBarAppearance"},Ss=b({__name:"VPNavBarAppearance",setup(t){const{site:e}=M();return(n,o)=>i(e).appearance?(a(),l("div",Vs,[f(Ee)])):g("",!0)}});const Ls=m(Ss,[["__scopeId","data-v-ce40e2f5"]]),Ms={discord:'Discord',facebook:'Facebook',github:'GitHub',instagram:'Instagram',linkedin:'LinkedIn',mastodon:'Mastodon',slack:'Slack',twitter:'Twitter',youtube:'YouTube'},Is=["href","aria-label","innerHTML"],Ns=b({__name:"VPSocialLink",props:{icon:{},link:{}},setup(t){const e=t,n=P(()=>typeof e.icon=="object"?e.icon.svg:Ms[e.icon]);return(o,s)=>(a(),l("a",{class:"VPSocialLink",href:o.link,"aria-label":typeof o.icon=="string"?o.icon:"",target:"_blank",rel:"noopener",innerHTML:n.value},null,8,Is))}});const Cs=m(Ns,[["__scopeId","data-v-accd342a"]]),As={class:"VPSocialLinks"},Ts=b({__name:"VPSocialLinks",props:{links:{}},setup(t){return(e,n)=>(a(),l("div",As,[(a(!0),l(A,null,E(e.links,({link:o,icon:s})=>(a(),k(Cs,{key:o,icon:s,link:o},null,8,["icon","link"]))),128))]))}});const He=m(Ts,[["__scopeId","data-v-982d0472"]]),Bs=b({__name:"VPNavBarSocialLinks",setup(t){const{theme:e}=M();return(n,o)=>i(e).socialLinks?(a(),k(He,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):g("",!0)}});const xs=m(Bs,[["__scopeId","data-v-05480c65"]]),Os={key:0,class:"group translations"},Es={class:"trans-title"},Hs={key:1,class:"group"},Ds={class:"item appearance"},zs={class:"label"},Fs={class:"appearance-action"},js={key:2,class:"group"},Gs={class:"item social-links"},Rs=b({__name:"VPNavBarExtra",setup(t){const{site:e,theme:n}=M(),{localeLinks:o,currentLang:s}=ue({correspondingLink:!0}),r=P(()=>o.value.length&&s.value.label||e.value.appearance||n.value.socialLinks);return(c,v)=>r.value?(a(),k(Oe,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:p(()=>[i(o).length&&i(s).label?(a(),l("div",Os,[_("p",Es,N(i(s).label),1),(a(!0),l(A,null,E(i(o),u=>(a(),k($e,{key:u.link,item:u},null,8,["item"]))),128))])):g("",!0),i(e).appearance?(a(),l("div",Hs,[_("div",Ds,[_("p",zs,N(i(n).darkModeSwitchLabel||"Appearance"),1),_("div",Fs,[f(Ee)])])])):g("",!0),i(n).socialLinks?(a(),l("div",js,[_("div",Gs,[f(He,{class:"social-links-list",links:i(n).socialLinks},null,8,["links"])])])):g("",!0)]),_:1})):g("",!0)}});const Us=m(Rs,[["__scopeId","data-v-6cca01bc"]]),Ws=t=>(F("data-v-1ca05e91"),t=t(),j(),t),Ks=["aria-expanded"],qs=Ws(()=>_("span",{class:"container"},[_("span",{class:"top"}),_("span",{class:"middle"}),_("span",{class:"bottom"})],-1)),Ys=[qs],Js=b({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(t){return(e,n)=>(a(),l("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=o=>e.$emit("click"))},Ys,10,Ks))}});const Xs=m(Js,[["__scopeId","data-v-1ca05e91"]]),Qs=t=>(F("data-v-20d23dc4"),t=t(),j(),t),Zs={class:"container"},ea={class:"title"},ta={class:"content"},na=Qs(()=>_("div",{class:"curtain"},null,-1)),oa={class:"content-body"},sa=b({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(t){const{y:e}=Nn(),{hasSidebar:n}=G(),o=P(()=>({"has-sidebar":n.value,fill:e.value>0}));return(s,r)=>(a(),l("div",{class:T(["VPNavBar",o.value])},[_("div",Zs,[_("div",ea,[f(qn,null,{"nav-bar-title-before":p(()=>[d(s.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[d(s.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),_("div",ta,[na,_("div",oa,[d(s.$slots,"nav-bar-content-before",{},void 0,!0),f(no,{class:"search"}),f(Yo,{class:"menu"}),f(as,{class:"translations"}),f(Ls,{class:"appearance"}),f(xs,{class:"social-links"}),f(Us,{class:"extra"}),d(s.$slots,"nav-bar-content-after",{},void 0,!0),f(Xs,{class:"hamburger",active:s.isScreenOpen,onClick:r[0]||(r[0]=c=>s.$emit("toggle-screen"))},null,8,["active"])])])])],2))}});const aa=m(sa,[["__scopeId","data-v-20d23dc4"]]);function ra(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1),Z=[],ye=!1,ze=-1,ne=void 0,J=void 0,oe=void 0,kt=function(e){return Z.some(function(n){return!!(n.options.allowTouchMove&&n.options.allowTouchMove(e))})},be=function(e){var n=e||window.event;return kt(n.target)||n.touches.length>1?!0:(n.preventDefault&&n.preventDefault(),!1)},ia=function(e){if(oe===void 0){var n=!!e&&e.reserveScrollBarGap===!0,o=window.innerWidth-document.documentElement.clientWidth;if(n&&o>0){var s=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right"),10);oe=document.body.style.paddingRight,document.body.style.paddingRight=s+o+"px"}}ne===void 0&&(ne=document.body.style.overflow,document.body.style.overflow="hidden")},la=function(){oe!==void 0&&(document.body.style.paddingRight=oe,oe=void 0),ne!==void 0&&(document.body.style.overflow=ne,ne=void 0)},ca=function(){return window.requestAnimationFrame(function(){if(J===void 0){J={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left};var e=window,n=e.scrollY,o=e.scrollX,s=e.innerHeight;document.body.style.position="fixed",document.body.style.top=-n,document.body.style.left=-o,setTimeout(function(){return window.requestAnimationFrame(function(){var r=s-window.innerHeight;r&&n>=s&&(document.body.style.top=-(n+r))})},300)}})},ua=function(){if(J!==void 0){var e=-parseInt(document.body.style.top,10),n=-parseInt(document.body.style.left,10);document.body.style.position=J.position,document.body.style.top=J.top,document.body.style.left=J.left,window.scrollTo(n,e),J=void 0}},da=function(e){return e?e.scrollHeight-e.scrollTop<=e.clientHeight:!1},_a=function(e,n){var o=e.targetTouches[0].clientY-ze;return kt(e.target)?!1:n&&n.scrollTop===0&&o>0||da(n)&&o<0?be(e):(e.stopPropagation(),!0)},Pt=function(e,n){if(!e){console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");return}if(!Z.some(function(s){return s.targetElement===e})){var o={targetElement:e,options:n||{}};Z=[].concat(ra(Z),[o]),ge?ca():ia(n),ge&&(e.ontouchstart=function(s){s.targetTouches.length===1&&(ze=s.targetTouches[0].clientY)},e.ontouchmove=function(s){s.targetTouches.length===1&&_a(s,e)},ye||(document.addEventListener("touchmove",be,De?{passive:!1}:void 0),ye=!0))}},wt=function(){ge&&(Z.forEach(function(e){e.targetElement.ontouchstart=null,e.targetElement.ontouchmove=null}),ye&&(document.removeEventListener("touchmove",be,De?{passive:!1}:void 0),ye=!1),ze=-1),ge?ua():la(),Z=[]};const va=b({__name:"VPNavScreenMenuLink",props:{item:{}},setup(t){const e=Ae("close-screen");return(n,o)=>(a(),k(q,{class:"VPNavScreenMenuLink",href:n.item.link,target:n.item.target,rel:n.item.rel,onClick:i(e)},{default:p(()=>[O(N(n.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const pa=m(va,[["__scopeId","data-v-215dfcb1"]]),fa={},ha={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ma=_("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),ga=[ma];function ya(t,e){return a(),l("svg",ha,ga)}const ba=m(fa,[["render",ya]]),$a=b({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(t){const e=Ae("close-screen");return(n,o)=>(a(),k(q,{class:"VPNavScreenMenuGroupLink",href:n.item.link,target:n.item.target,rel:n.item.rel,onClick:i(e)},{default:p(()=>[O(N(n.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const Vt=m($a,[["__scopeId","data-v-74f4e386"]]),ka={class:"VPNavScreenMenuGroupSection"},Pa={key:0,class:"title"},wa=b({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(t){return(e,n)=>(a(),l("div",ka,[e.text?(a(),l("p",Pa,N(e.text),1)):g("",!0),(a(!0),l(A,null,E(e.items,o=>(a(),k(Vt,{key:o.text,item:o},null,8,["item"]))),128))]))}});const Va=m(wa,[["__scopeId","data-v-df5ed48a"]]),Sa=["aria-controls","aria-expanded"],La={class:"button-text"},Ma=["id"],Ia={key:1,class:"group"},Na=b({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(t){const e=t,n=L(!1),o=P(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function s(){n.value=!n.value}return(r,c)=>(a(),l("div",{class:T(["VPNavScreenMenuGroup",{open:n.value}])},[_("button",{class:"button","aria-controls":o.value,"aria-expanded":n.value,onClick:s},[_("span",La,N(r.text),1),f(ba,{class:"button-icon"})],8,Sa),_("div",{id:o.value,class:"items"},[(a(!0),l(A,null,E(r.items,v=>(a(),l(A,{key:v.text},["link"in v?(a(),l("div",{key:v.text,class:"item"},[f(Vt,{item:v},null,8,["item"])])):(a(),l("div",Ia,[f(Va,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,Ma)],2))}});const Ca=m(Na,[["__scopeId","data-v-067e974b"]]),Aa={key:0,class:"VPNavScreenMenu"},Ta=b({__name:"VPNavScreenMenu",setup(t){const{theme:e}=M();return(n,o)=>i(e).nav?(a(),l("nav",Aa,[(a(!0),l(A,null,E(i(e).nav,s=>(a(),l(A,{key:s.text},["link"in s?(a(),k(pa,{key:0,item:s},null,8,["item"])):(a(),k(Ca,{key:1,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):g("",!0)}}),Ba={key:0,class:"VPNavScreenAppearance"},xa={class:"text"},Oa=b({__name:"VPNavScreenAppearance",setup(t){const{site:e,theme:n}=M();return(o,s)=>i(e).appearance?(a(),l("div",Ba,[_("p",xa,N(i(n).darkModeSwitchLabel||"Appearance"),1),f(Ee)])):g("",!0)}});const Ea=m(Oa,[["__scopeId","data-v-e1f00096"]]),Ha={class:"list"},Da=b({__name:"VPNavScreenTranslations",setup(t){const{localeLinks:e,currentLang:n}=ue({correspondingLink:!0}),o=L(!1);function s(){o.value=!o.value}return(r,c)=>i(e).length&&i(n).label?(a(),l("div",{key:0,class:T(["VPNavScreenTranslations",{open:o.value}])},[_("button",{class:"title",onClick:s},[f($t,{class:"icon lang"}),O(" "+N(i(n).label)+" ",1),f(bt,{class:"icon chevron"})]),_("ul",Ha,[(a(!0),l(A,null,E(i(e),v=>(a(),l("li",{key:v.link,class:"item"},[f(q,{class:"link",href:v.link},{default:p(()=>[O(N(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):g("",!0)}});const za=m(Da,[["__scopeId","data-v-f11b6c31"]]),Fa=b({__name:"VPNavScreenSocialLinks",setup(t){const{theme:e}=M();return(n,o)=>i(e).socialLinks?(a(),k(He,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):g("",!0)}}),ja={class:"container"},Ga=b({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(t){const e=L(null);function n(){Pt(e.value,{reserveScrollBarGap:!0})}function o(){wt()}return(s,r)=>(a(),k(Ce,{name:"fade",onEnter:n,onAfterLeave:o},{default:p(()=>[s.open?(a(),l("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e},[_("div",ja,[d(s.$slots,"nav-screen-content-before",{},void 0,!0),f(Ta,{class:"menu"}),f(za,{class:"translations"}),f(Ea,{class:"appearance"}),f(Fa,{class:"social-links"}),d(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):g("",!0)]),_:3}))}});const Ra=m(Ga,[["__scopeId","data-v-8d872d58"]]),Ua={class:"VPNav"},Wa=b({__name:"VPNav",setup(t){const{isScreenOpen:e,closeScreen:n,toggleScreen:o}=Fn();return fe("close-screen",n),(s,r)=>(a(),l("header",Ua,[f(aa,{"is-screen-open":i(e),onToggleScreen:i(o)},{"nav-bar-title-before":p(()=>[d(s.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[d(s.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[d(s.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[d(s.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),f(Ra,{open:i(e)},{"nav-screen-content-before":p(()=>[d(s.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[d(s.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])]))}});const Ka=m(Wa,[["__scopeId","data-v-1289c0d4"]]),qa={},Ya={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Ja=_("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),Xa=_("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),Qa=_("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),Za=_("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),er=[Ja,Xa,Qa,Za];function tr(t,e){return a(),l("svg",Ya,er)}const nr=m(qa,[["render",tr]]);function or(){const{hasSidebar:t}=G(),e=Ve("(min-width: 960px)"),n=Ve("(min-width: 1280px)");return{isAsideEnabled:P(()=>!n.value&&!e.value?!1:t.value?n.value:e.value)}}const sr=71;function Fe(t){return typeof t.outline=="object"&&!Array.isArray(t.outline)&&t.outline.label||t.outlineTitle||"On this page"}function je(t){const e=[...document.querySelectorAll(".VPDoc h2,h3,h4,h5,h6")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const o=Number(n.tagName[1]);return{title:ar(n),link:"#"+n.id,level:o}});return rr(e,t)}function ar(t){let e="";for(const n of t.childNodes)if(n.nodeType===1){if(n.classList.contains("VPBadge")||n.classList.contains("header-anchor"))continue;e+=n.textContent}else n.nodeType===3&&(e+=n.textContent);return e.trim()}function rr(t,e){if(e===!1)return[];const n=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[o,s]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;t=t.filter(c=>c.level>=o&&c.level<=s);const r=[];e:for(let c=0;c=0;u--){const h=t[u];if(h.level{requestAnimationFrame(r),window.addEventListener("scroll",o)}),jt(()=>{c(location.hash)}),Ne(()=>{window.removeEventListener("scroll",o)});function r(){if(!n.value)return;const v=[].slice.call(t.value.querySelectorAll(".outline-link")),u=[].slice.call(document.querySelectorAll(".content .header-anchor")).filter(y=>v.some(V=>V.hash===y.hash&&y.offsetParent!==null)),h=window.scrollY,$=window.innerHeight,w=document.body.offsetHeight,C=Math.abs(h+$-w)<1;if(u.length&&C){c(u[u.length-1].hash);return}for(let y=0;y{const s=X("VPDocOutlineItem",!0);return a(),l("ul",{class:T(n.root?"root":"nested")},[(a(!0),l(A,null,E(n.headers,({children:r,link:c,title:v})=>(a(),l("li",null,[_("a",{class:"outline-link",href:c,onClick:e,title:v},N(v),9,cr),r!=null&&r.length?(a(),k(s,{key:0,headers:r},null,8,["headers"])):g("",!0)]))),256))],2)}}});const Ge=m(ur,[["__scopeId","data-v-e53574c4"]]),dr={},_r={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},vr=_("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),pr=[vr];function fr(t,e){return a(),l("svg",_r,pr)}const Re=m(dr,[["render",fr]]),hr=b({__name:"VPLocalNavOutlineDropdown",setup(t){const{frontmatter:e,theme:n}=M(),o=L(!1),s=L(0),r=L();se(()=>{o.value=!1});function c(){o.value=!o.value,s.value=window.innerHeight+Math.min(window.scrollY-64,0)}function v($){$.target.classList.contains("outline-link")&&(r.value&&(r.value.style.transition="none"),st(()=>{o.value=!1}))}function u(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}const h=le([]);return se(()=>{h.value=je(e.value.outline??n.value.outline)}),($,w)=>(a(),l("div",{class:"VPLocalNavOutlineDropdown",style:at({"--vp-vh":s.value+"px"})},[h.value.length>0?(a(),l("button",{key:0,onClick:c,class:T({open:o.value})},[O(N(i(Fe)(i(n)))+" ",1),f(Re,{class:"icon"})],2)):(a(),l("button",{key:1,onClick:u},N(i(n).returnToTopLabel||"Return to top"),1)),f(Ce,{name:"flyout"},{default:p(()=>[o.value?(a(),l("div",{key:0,ref_key:"items",ref:r,class:"items",onClick:v},[_("a",{class:"top-link",href:"#",onClick:u},N(i(n).returnToTopLabel||"Return to top"),1),f(Ge,{headers:h.value},null,8,["headers"])],512)):g("",!0)]),_:1})],4))}});const mr=m(hr,[["__scopeId","data-v-e933c6b6"]]),gr={key:0,class:"VPLocalNav"},yr=["aria-expanded"],br={class:"menu-text"},$r=b({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(t){const{theme:e,frontmatter:n}=M(),{hasSidebar:o}=G();return(s,r)=>i(n).layout!=="home"?(a(),l("div",gr,[i(o)?(a(),l("button",{key:0,class:"menu","aria-expanded":s.open,"aria-controls":"VPSidebarNav",onClick:r[0]||(r[0]=c=>s.$emit("open-menu"))},[f(nr,{class:"menu-icon"}),_("span",br,N(i(e).sidebarMenuLabel||"Menu"),1)],8,yr)):g("",!0),f(mr)])):g("",!0)}});const kr=m($r,[["__scopeId","data-v-186f8f7d"]]),Pr=t=>(F("data-v-00f6a166"),t=t(),j(),t),wr=["role","tabindex"],Vr=Pr(()=>_("div",{class:"indicator"},null,-1)),Sr=["onKeydown"],Lr={key:1,class:"items"},Mr=b({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(t){const e=t,{collapsed:n,collapsible:o,isLink:s,isActiveLink:r,hasActiveLink:c,hasChildren:v,toggle:u}=xn(P(()=>e.item)),h=P(()=>v.value?"section":"div"),$=P(()=>s.value?"a":"div"),w=P(()=>v.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),C=P(()=>s.value?void 0:"button"),y=P(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:n.value},{"is-link":s.value},{"is-active":r.value},{"has-active":c.value}]);function V(S){"key"in S&&S.key!=="Enter"||!e.item.link&&u()}function I(){e.item.link&&u()}return(S,x)=>{const z=X("VPSidebarItem",!0);return a(),k(Q(h.value),{class:T(["VPSidebarItem",y.value])},{default:p(()=>[S.item.text?(a(),l("div",pe({key:0,class:"item",role:C.value},Rt(S.item.items?{click:V,keydown:V}:{},!0),{tabindex:S.item.items&&0}),[Vr,S.item.link?(a(),k(q,{key:0,tag:$.value,class:"link",href:S.item.link},{default:p(()=>[(a(),k(Q(w.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href"])):(a(),k(Q(w.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null?(a(),l("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:I,onKeydown:Gt(I,["enter"]),tabindex:"0"},[f(Re,{class:"caret-icon"})],40,Sr)):g("",!0)],16,wr)):g("",!0),S.item.items&&S.item.items.length?(a(),l("div",Lr,[S.depth<5?(a(!0),l(A,{key:0},E(S.item.items,D=>(a(),k(z,{key:D.text,item:D,depth:S.depth+1},null,8,["item","depth"]))),128)):g("",!0)])):g("",!0)]),_:1},8,["class"])}}});const Ir=m(Mr,[["__scopeId","data-v-00f6a166"]]),St=t=>(F("data-v-7327097d"),t=t(),j(),t),Nr=St(()=>_("div",{class:"curtain"},null,-1)),Cr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ar=St(()=>_("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Tr=b({__name:"VPSidebar",props:{open:{type:Boolean}},setup(t){const e=t,{sidebarGroups:n,hasSidebar:o}=G();let s=L(null);function r(){Pt(s.value,{reserveScrollBarGap:!0})}function c(){wt()}return Ut(async()=>{var v;e.open?(r(),(v=s.value)==null||v.focus()):c()}),(v,u)=>i(o)?(a(),l("aside",{key:0,class:T(["VPSidebar",{open:v.open}]),ref_key:"navEl",ref:s,onClick:u[0]||(u[0]=Wt(()=>{},["stop"]))},[Nr,_("nav",Cr,[Ar,d(v.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),l(A,null,E(i(n),h=>(a(),l("div",{key:h.text,class:"group"},[f(Ir,{item:h,depth:0},null,8,["item"])]))),128)),d(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):g("",!0)}});const Br=m(Tr,[["__scopeId","data-v-7327097d"]]),xr={},Or={class:"VPPage"};function Er(t,e){const n=X("Content");return a(),l("div",Or,[d(t.$slots,"page-top"),f(n),d(t.$slots,"page-bottom")])}const Hr=m(xr,[["render",Er]]),Dr=b({__name:"VPButton",props:{tag:{},size:{},theme:{},text:{},href:{}},setup(t){const e=t,n=P(()=>[e.size??"medium",e.theme??"brand"]),o=P(()=>e.href&&rt.test(e.href)),s=P(()=>e.tag?e.tag:e.href?"a":"button");return(r,c)=>(a(),k(Q(s.value),{class:T(["VPButton",n.value]),href:r.href?i(ie)(r.href):void 0,target:o.value?"_blank":void 0,rel:o.value?"noreferrer":void 0},{default:p(()=>[O(N(r.text),1)]),_:1},8,["class","href","target","rel"]))}});const zr=m(Dr,[["__scopeId","data-v-271b5919"]]),Fr=t=>(F("data-v-8127c09e"),t=t(),j(),t),jr={class:"container"},Gr={class:"main"},Rr={key:0,class:"name"},Ur={class:"clip"},Wr={key:1,class:"text"},Kr={key:2,class:"tagline"},qr={key:0,class:"actions"},Yr={key:0,class:"image"},Jr={class:"image-container"},Xr=Fr(()=>_("div",{class:"image-bg"},null,-1)),Qr=b({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(t){const e=Ae("hero-image-slot-exists");return(n,o)=>(a(),l("div",{class:T(["VPHero",{"has-image":n.image||i(e)}])},[_("div",jr,[_("div",Gr,[d(n.$slots,"home-hero-info",{},()=>[n.name?(a(),l("h1",Rr,[_("span",Ur,N(n.name),1)])):g("",!0),n.text?(a(),l("p",Wr,N(n.text),1)):g("",!0),n.tagline?(a(),l("p",Kr,N(n.tagline),1)):g("",!0)],!0),n.actions?(a(),l("div",qr,[(a(!0),l(A,null,E(n.actions,s=>(a(),l("div",{key:s.link,class:"action"},[f(zr,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link},null,8,["theme","text","href"])]))),128))])):g("",!0)]),n.image||i(e)?(a(),l("div",Yr,[_("div",Jr,[Xr,d(n.$slots,"home-hero-image",{},()=>[n.image?(a(),k(Be,{key:0,class:"image-src",image:n.image},null,8,["image"])):g("",!0)],!0)])])):g("",!0)])],2))}});const Zr=m(Qr,[["__scopeId","data-v-8127c09e"]]),ei=b({__name:"VPHomeHero",setup(t){const{frontmatter:e}=M();return(n,o)=>i(e).hero?(a(),k(Zr,{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":p(()=>[d(n.$slots,"home-hero-info")]),"home-hero-image":p(()=>[d(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):g("",!0)}}),ti={},ni={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},oi=_("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),si=[oi];function ai(t,e){return a(),l("svg",ni,si)}const ri=m(ti,[["render",ai]]),ii={class:"box"},li=["innerHTML"],ci=["innerHTML"],ui=["innerHTML"],di={key:3,class:"link-text"},_i={class:"link-text-value"},vi=b({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{}},setup(t){return(e,n)=>(a(),k(q,{class:"VPFeature",href:e.link,"no-icon":!0},{default:p(()=>[_("article",ii,[typeof e.icon=="object"?(a(),k(Be,{key:0,image:e.icon,alt:e.icon.alt,height:e.icon.height,width:e.icon.width},null,8,["image","alt","height","width"])):e.icon?(a(),l("div",{key:1,class:"icon",innerHTML:e.icon},null,8,li)):g("",!0),_("h2",{class:"title",innerHTML:e.title},null,8,ci),e.details?(a(),l("p",{key:2,class:"details",innerHTML:e.details},null,8,ui)):g("",!0),e.linkText?(a(),l("div",di,[_("p",_i,[O(N(e.linkText)+" ",1),f(ri,{class:"link-text-icon"})])])):g("",!0)])]),_:1},8,["href"]))}});const pi=m(vi,[["__scopeId","data-v-a6cc149b"]]),fi={key:0,class:"VPFeatures"},hi={class:"container"},mi={class:"items"},gi=b({__name:"VPFeatures",props:{features:{}},setup(t){const e=t,n=P(()=>{const o=e.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,s)=>o.features?(a(),l("div",fi,[_("div",hi,[_("div",mi,[(a(!0),l(A,null,E(o.features,r=>(a(),l("div",{key:r.title,class:T(["item",[n.value]])},[f(pi,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText},null,8,["icon","title","details","link","link-text"])],2))),128))])])])):g("",!0)}});const yi=m(gi,[["__scopeId","data-v-3c931ad7"]]),bi=b({__name:"VPHomeFeatures",setup(t){const{frontmatter:e}=M();return(n,o)=>i(e).features?(a(),k(yi,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):g("",!0)}}),$i={class:"VPHome"},ki=b({__name:"VPHome",setup(t){return(e,n)=>{const o=X("Content");return a(),l("div",$i,[d(e.$slots,"home-hero-before",{},void 0,!0),f(ei,null,{"home-hero-info":p(()=>[d(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":p(()=>[d(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),d(e.$slots,"home-hero-after",{},void 0,!0),d(e.$slots,"home-features-before",{},void 0,!0),f(bi),d(e.$slots,"home-features-after",{},void 0,!0),f(o)])}}});const Pi=m(ki,[["__scopeId","data-v-3b5f5a4f"]]),wi=t=>(F("data-v-4e762175"),t=t(),j(),t),Vi={class:"content"},Si={class:"outline-title"},Li={"aria-labelledby":"doc-outline-aria-label"},Mi=wi(()=>_("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),Ii=b({__name:"VPDocAsideOutline",setup(t){const{frontmatter:e,theme:n}=M(),o=le([]);se(()=>{o.value=je(e.value.outline??n.value.outline)});const s=L(),r=L();return ir(s,r),(c,v)=>(a(),l("div",{class:T(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:s},[_("div",Vi,[_("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),_("div",Si,N(i(Fe)(i(n))),1),_("nav",Li,[Mi,f(Ge,{headers:o.value,root:!0},null,8,["headers"])])])],2))}});const Ni=m(Ii,[["__scopeId","data-v-4e762175"]]),Ci={class:"VPDocAsideCarbonAds"},Ai=b({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(t){const e=()=>null;return(n,o)=>(a(),l("div",Ci,[f(i(e),{"carbon-ads":n.carbonAds},null,8,["carbon-ads"])]))}}),Ti=t=>(F("data-v-6ba3b31c"),t=t(),j(),t),Bi={class:"VPDocAside"},xi=Ti(()=>_("div",{class:"spacer"},null,-1)),Oi=b({__name:"VPDocAside",setup(t){const{theme:e}=M();return(n,o)=>(a(),l("div",Bi,[d(n.$slots,"aside-top",{},void 0,!0),d(n.$slots,"aside-outline-before",{},void 0,!0),f(Ni),d(n.$slots,"aside-outline-after",{},void 0,!0),xi,d(n.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),k(Ai,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):g("",!0),d(n.$slots,"aside-ads-after",{},void 0,!0),d(n.$slots,"aside-bottom",{},void 0,!0)]))}});const Ei=m(Oi,[["__scopeId","data-v-6ba3b31c"]]);function Hi(){const{theme:t,page:e}=M();return P(()=>{const{text:n="Edit this page",pattern:o=""}=t.value.editLink||{};let s;return typeof o=="function"?s=o(e.value):s=o.replace(/:path/g,e.value.filePath),{url:s,text:n}})}function Di(){const{page:t,theme:e,frontmatter:n}=M();return P(()=>{var c,v,u,h;const o=mt(e.value.sidebar,t.value.relativePath),s=Tn(o),r=s.findIndex($=>te(t.value.relativePath,$.link));return{prev:n.value.prev===!1?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??((c=s[r-1])==null?void 0:c.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((v=s[r-1])==null?void 0:v.link)},next:n.value.next===!1?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((u=s[r+1])==null?void 0:u.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((h=s[r+1])==null?void 0:h.link)}}})}const zi={},Fi={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},ji=_("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Gi=_("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),Ri=[ji,Gi];function Ui(t,e){return a(),l("svg",Fi,Ri)}const Wi=m(zi,[["render",Ui]]),Ki={class:"VPLastUpdated"},qi=["datetime"],Yi=b({__name:"VPDocFooterLastUpdated",setup(t){const{theme:e,page:n,lang:o}=M(),s=P(()=>new Date(n.value.lastUpdated)),r=P(()=>s.value.toISOString()),c=L("");return R(()=>{ee(()=>{c.value=s.value.toLocaleString(o.value)})}),(v,u)=>(a(),l("p",Ki,[O(N(i(e).lastUpdatedText||"Last updated")+": ",1),_("time",{datetime:r.value},N(c.value),9,qi)]))}});const Ji=m(Yi,[["__scopeId","data-v-bb9deb16"]]),Xi={key:0,class:"VPDocFooter"},Qi={key:0,class:"edit-info"},Zi={key:0,class:"edit-link"},el={key:1,class:"last-updated"},tl={key:1,class:"prev-next"},nl={class:"pager"},ol=["href"],sl=["innerHTML"],al=["innerHTML"],rl=["href"],il=["innerHTML"],ll=["innerHTML"],cl=b({__name:"VPDocFooter",setup(t){const{theme:e,page:n,frontmatter:o}=M(),s=Hi(),r=Di(),c=P(()=>e.value.editLink&&o.value.editLink!==!1),v=P(()=>n.value.lastUpdated&&o.value.lastUpdated!==!1),u=P(()=>c.value||v.value||r.value.prev||r.value.next);return(h,$)=>{var w,C,y,V,I,S,x;return u.value?(a(),l("footer",Xi,[d(h.$slots,"doc-footer-before",{},void 0,!0),c.value||v.value?(a(),l("div",Qi,[c.value?(a(),l("div",Zi,[f(q,{class:"edit-link-button",href:i(s).url,"no-icon":!0},{default:p(()=>[f(Wi,{class:"edit-link-icon","aria-label":"edit icon"}),O(" "+N(i(s).text),1)]),_:1},8,["href"])])):g("",!0),v.value?(a(),l("div",el,[f(Ji)])):g("",!0)])):g("",!0),(w=i(r).prev)!=null&&w.link||(C=i(r).next)!=null&&C.link?(a(),l("div",tl,[_("div",nl,[(y=i(r).prev)!=null&&y.link?(a(),l("a",{key:0,class:"pager-link prev",href:i(ie)(i(r).prev.link)},[_("span",{class:"desc",innerHTML:((V=i(e).docFooter)==null?void 0:V.prev)||"Previous page"},null,8,sl),_("span",{class:"title",innerHTML:i(r).prev.text},null,8,al)],8,ol)):g("",!0)]),_("div",{class:T(["pager",{"has-prev":(I=i(r).prev)==null?void 0:I.link}])},[(S=i(r).next)!=null&&S.link?(a(),l("a",{key:0,class:"pager-link next",href:i(ie)(i(r).next.link)},[_("span",{class:"desc",innerHTML:((x=i(e).docFooter)==null?void 0:x.next)||"Next page"},null,8,il),_("span",{class:"title",innerHTML:i(r).next.text},null,8,ll)],8,rl)):g("",!0)],2)])):g("",!0)])):g("",!0)}}});const ul=m(cl,[["__scopeId","data-v-31f449a4"]]),dl={key:0,class:"VPDocOutlineDropdown"},_l={key:0,class:"items"},vl=b({__name:"VPDocOutlineDropdown",setup(t){const{frontmatter:e,theme:n}=M(),o=L(!1);se(()=>{o.value=!1});const s=le([]);return se(()=>{s.value=je(e.value.outline??n.value.outline)}),(r,c)=>s.value.length>0?(a(),l("div",dl,[_("button",{onClick:c[0]||(c[0]=v=>o.value=!o.value),class:T({open:o.value})},[O(N(i(Fe)(i(n)))+" ",1),f(Re,{class:"icon"})],2),o.value?(a(),l("div",_l,[f(Ge,{headers:s.value},null,8,["headers"])])):g("",!0)])):g("",!0)}});const pl=m(vl,[["__scopeId","data-v-2253c216"]]),fl=t=>(F("data-v-471fe085"),t=t(),j(),t),hl={class:"container"},ml=fl(()=>_("div",{class:"aside-curtain"},null,-1)),gl={class:"aside-container"},yl={class:"aside-content"},bl={class:"content"},$l={class:"content-container"},kl={class:"main"},Pl=b({__name:"VPDoc",setup(t){const e=ce(),{hasSidebar:n,hasAside:o,leftAside:s}=G(),r=P(()=>e.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(c,v)=>{const u=X("Content");return a(),l("div",{class:T(["VPDoc",{"has-sidebar":i(n),"has-aside":i(o)}])},[d(c.$slots,"doc-top",{},void 0,!0),_("div",hl,[i(o)?(a(),l("div",{key:0,class:T(["aside",{"left-aside":i(s)}])},[ml,_("div",gl,[_("div",yl,[f(Ei,null,{"aside-top":p(()=>[d(c.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[d(c.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[d(c.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[d(c.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[d(c.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[d(c.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):g("",!0),_("div",bl,[_("div",$l,[d(c.$slots,"doc-before",{},void 0,!0),f(pl),_("main",kl,[f(u,{class:T(["vp-doc",r.value])},null,8,["class"])]),f(ul,null,{"doc-footer-before":p(()=>[d(c.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),d(c.$slots,"doc-after",{},void 0,!0)])])]),d(c.$slots,"doc-bottom",{},void 0,!0)],2)}}});const wl=m(Pl,[["__scopeId","data-v-471fe085"]]),ke=t=>(F("data-v-07c78639"),t=t(),j(),t),Vl={class:"NotFound"},Sl=ke(()=>_("p",{class:"code"},"404",-1)),Ll=ke(()=>_("h1",{class:"title"},"PAGE NOT FOUND",-1)),Ml=ke(()=>_("div",{class:"divider"},null,-1)),Il=ke(()=>_("blockquote",{class:"quote"}," But if you don't change your direction, and if you keep looking, you may end up where you are heading. ",-1)),Nl={class:"action"},Cl=["href"],Al=b({__name:"NotFound",setup(t){const{site:e}=M(),{localeLinks:n}=ue({removeCurrent:!1}),o=L("/");return R(()=>{var r;const s=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(o.value=((r=n.value.find(({link:c})=>c.startsWith(s)))==null?void 0:r.link)||n.value[0].link)}),(s,r)=>(a(),l("div",Vl,[Sl,Ll,Ml,Il,_("div",Nl,[_("a",{class:"link",href:i(Ie)(o.value),"aria-label":"go to home"}," Take me home ",8,Cl)])]))}});const Tl=m(Al,[["__scopeId","data-v-07c78639"]]),Bl=b({__name:"VPContent",setup(t){const{page:e,frontmatter:n}=M(),{hasSidebar:o}=G();return(s,r)=>(a(),l("div",{class:T(["VPContent",{"has-sidebar":i(o),"is-home":i(n).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?d(s.$slots,"not-found",{key:0},()=>[f(Tl)],!0):i(n).layout==="page"?(a(),k(Hr,{key:1},{"page-top":p(()=>[d(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[d(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(n).layout==="home"?(a(),k(Pi,{key:2},{"home-hero-before":p(()=>[d(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":p(()=>[d(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":p(()=>[d(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[d(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[d(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[d(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):(a(),k(wl,{key:3},{"doc-top":p(()=>[d(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[d(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":p(()=>[d(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[d(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[d(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":p(()=>[d(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":p(()=>[d(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[d(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[d(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[d(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":p(()=>[d(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}});const xl=m(Bl,[["__scopeId","data-v-344ae5c7"]]),Ol={class:"container"},El=["innerHTML"],Hl=["innerHTML"],Dl=b({__name:"VPFooter",setup(t){const{theme:e}=M(),{hasSidebar:n}=G();return(o,s)=>i(e).footer?(a(),l("footer",{key:0,class:T(["VPFooter",{"has-sidebar":i(n)}])},[_("div",Ol,[i(e).footer.message?(a(),l("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,El)):g("",!0),i(e).footer.copyright?(a(),l("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,Hl)):g("",!0)])],2)):g("",!0)}});const zl=m(Dl,[["__scopeId","data-v-74d96728"]]),Fl={key:0,class:"Layout"},jl=b({__name:"Layout",setup(t){const{isOpen:e,open:n,close:o}=G(),s=ce();K(()=>s.path,o),Bn(e,o),fe("close-sidebar",o),fe("is-sidebar-open",e);const{frontmatter:r}=M(),c=Kt(),v=P(()=>!!c["home-hero-image"]);return fe("hero-image-slot-exists",v),(u,h)=>{const $=X("Content");return i(r).layout!==!1?(a(),l("div",Fl,[d(u.$slots,"layout-top",{},void 0,!0),f(En),f(zn,{class:"backdrop",show:i(e),onClick:i(o)},null,8,["show","onClick"]),f(Ka,null,{"nav-bar-title-before":p(()=>[d(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[d(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[d(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[d(u.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":p(()=>[d(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[d(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),f(kr,{open:i(e),onOpenMenu:i(n)},null,8,["open","onOpenMenu"]),f(Br,{open:i(e)},{"sidebar-nav-before":p(()=>[d(u.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":p(()=>[d(u.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),f(xl,null,{"page-top":p(()=>[d(u.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[d(u.$slots,"page-bottom",{},void 0,!0)]),"not-found":p(()=>[d(u.$slots,"not-found",{},void 0,!0)]),"home-hero-before":p(()=>[d(u.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":p(()=>[d(u.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":p(()=>[d(u.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[d(u.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[d(u.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[d(u.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":p(()=>[d(u.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[d(u.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[d(u.$slots,"doc-after",{},void 0,!0)]),"doc-top":p(()=>[d(u.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[d(u.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":p(()=>[d(u.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[d(u.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[d(u.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[d(u.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[d(u.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[d(u.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),f(zl),d(u.$slots,"layout-bottom",{},void 0,!0)])):(a(),k($,{key:1}))}}});const Gl=m(jl,[["__scopeId","data-v-487c8925"]]);const Jl={Layout:Gl,enhanceApp:({app:t})=>{t.component("Badge",Yt)}};function Xl(t,e){const{localeIndex:n}=M();function o(s){var y,V;const r=s.split("."),c=t&&typeof t=="object",v=c&&((V=(y=t.locales)==null?void 0:y[n.value])==null?void 0:V.translations)||null,u=c&&t.translations||null;let h=v,$=u,w=e;const C=r.pop();for(const I of r){let S=null;const x=w==null?void 0:w[I];x&&(S=w=x);const z=$==null?void 0:$[I];z&&(S=$=z);const D=h==null?void 0:h[I];D&&(S=h=D),x||(w=S),z||($=S),D||(h=S)}return(h==null?void 0:h[C])??($==null?void 0:$[C])??(w==null?void 0:w[C])??""}return o}export{Te as a,M as b,Wl as c,Yl as d,Kl as e,Xl as f,re as g,ql as h,Je as o,Jl as t,mn as u,Ul as w}; +}`)),document.head.appendChild(y),o.value=C,v[C?"add":"remove"]("dark"),window.getComputedStyle(y).opacity,document.head.removeChild(y)}return $}return K(o,c=>{n.value=c}),(c,v)=>(a(),k(ds,{title:"toggle dark mode",class:"VPSwitchAppearance","aria-checked":o.value,onClick:i(s)},{default:p(()=>[f(ms,{class:"sun"}),f(Ps,{class:"moon"})]),_:1},8,["aria-checked","onClick"]))}});const Ee=m(ws,[["__scopeId","data-v-97eafeaf"]]),Vs={key:0,class:"VPNavBarAppearance"},Ss=b({__name:"VPNavBarAppearance",setup(t){const{site:e}=M();return(n,o)=>i(e).appearance?(a(),l("div",Vs,[f(Ee)])):g("",!0)}});const Ls=m(Ss,[["__scopeId","data-v-48c82cdd"]]),Ms={discord:'Discord',facebook:'Facebook',github:'GitHub',instagram:'Instagram',linkedin:'LinkedIn',mastodon:'Mastodon',slack:'Slack',twitter:'Twitter',youtube:'YouTube'},Is=["href","aria-label","innerHTML"],Ns=b({__name:"VPSocialLink",props:{icon:{},link:{}},setup(t){const e=t,n=P(()=>typeof e.icon=="object"?e.icon.svg:Ms[e.icon]);return(o,s)=>(a(),l("a",{class:"VPSocialLink",href:o.link,"aria-label":typeof o.icon=="string"?o.icon:"",target:"_blank",rel:"noopener",innerHTML:n.value},null,8,Is))}});const Cs=m(Ns,[["__scopeId","data-v-2497ebef"]]),As={class:"VPSocialLinks"},Ts=b({__name:"VPSocialLinks",props:{links:{}},setup(t){return(e,n)=>(a(),l("div",As,[(a(!0),l(A,null,E(e.links,({link:o,icon:s})=>(a(),k(Cs,{key:o,icon:s,link:o},null,8,["icon","link"]))),128))]))}});const He=m(Ts,[["__scopeId","data-v-f538b594"]]),Bs=b({__name:"VPNavBarSocialLinks",setup(t){const{theme:e}=M();return(n,o)=>i(e).socialLinks?(a(),k(He,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):g("",!0)}});const xs=m(Bs,[["__scopeId","data-v-6d68fd25"]]),Os={key:0,class:"group translations"},Es={class:"trans-title"},Hs={key:1,class:"group"},Ds={class:"item appearance"},zs={class:"label"},Fs={class:"appearance-action"},js={key:2,class:"group"},Gs={class:"item social-links"},Rs=b({__name:"VPNavBarExtra",setup(t){const{site:e,theme:n}=M(),{localeLinks:o,currentLang:s}=ue({correspondingLink:!0}),r=P(()=>o.value.length&&s.value.label||e.value.appearance||n.value.socialLinks);return(c,v)=>r.value?(a(),k(Oe,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:p(()=>[i(o).length&&i(s).label?(a(),l("div",Os,[_("p",Es,N(i(s).label),1),(a(!0),l(A,null,E(i(o),u=>(a(),k($e,{key:u.link,item:u},null,8,["item"]))),128))])):g("",!0),i(e).appearance?(a(),l("div",Hs,[_("div",Ds,[_("p",zs,N(i(n).darkModeSwitchLabel||"Appearance"),1),_("div",Fs,[f(Ee)])])])):g("",!0),i(n).socialLinks?(a(),l("div",js,[_("div",Gs,[f(He,{class:"social-links-list",links:i(n).socialLinks},null,8,["links"])])])):g("",!0)]),_:1})):g("",!0)}});const Us=m(Rs,[["__scopeId","data-v-5a8509a0"]]),Ws=t=>(F("data-v-995f8466"),t=t(),j(),t),Ks=["aria-expanded"],qs=Ws(()=>_("span",{class:"container"},[_("span",{class:"top"}),_("span",{class:"middle"}),_("span",{class:"bottom"})],-1)),Ys=[qs],Js=b({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(t){return(e,n)=>(a(),l("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=o=>e.$emit("click"))},Ys,10,Ks))}});const Xs=m(Js,[["__scopeId","data-v-995f8466"]]),Qs=t=>(F("data-v-a2340e9e"),t=t(),j(),t),Zs={class:"container"},ea={class:"title"},ta={class:"content"},na=Qs(()=>_("div",{class:"curtain"},null,-1)),oa={class:"content-body"},sa=b({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(t){const{y:e}=Nn(),{hasSidebar:n}=R(),o=P(()=>({"has-sidebar":n.value,fill:e.value>0}));return(s,r)=>(a(),l("div",{class:T(["VPNavBar",o.value])},[_("div",Zs,[_("div",ea,[f(qn,null,{"nav-bar-title-before":p(()=>[d(s.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[d(s.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),_("div",ta,[na,_("div",oa,[d(s.$slots,"nav-bar-content-before",{},void 0,!0),f(no,{class:"search"}),f(Yo,{class:"menu"}),f(as,{class:"translations"}),f(Ls,{class:"appearance"}),f(xs,{class:"social-links"}),f(Us,{class:"extra"}),d(s.$slots,"nav-bar-content-after",{},void 0,!0),f(Xs,{class:"hamburger",active:s.isScreenOpen,onClick:r[0]||(r[0]=c=>s.$emit("toggle-screen"))},null,8,["active"])])])])],2))}});const aa=m(sa,[["__scopeId","data-v-a2340e9e"]]);function ra(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1),Z=[],ye=!1,ze=-1,ne=void 0,J=void 0,oe=void 0,$t=function(e){return Z.some(function(n){return!!(n.options.allowTouchMove&&n.options.allowTouchMove(e))})},be=function(e){var n=e||window.event;return $t(n.target)||n.touches.length>1?!0:(n.preventDefault&&n.preventDefault(),!1)},ia=function(e){if(oe===void 0){var n=!!e&&e.reserveScrollBarGap===!0,o=window.innerWidth-document.documentElement.clientWidth;if(n&&o>0){var s=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right"),10);oe=document.body.style.paddingRight,document.body.style.paddingRight=s+o+"px"}}ne===void 0&&(ne=document.body.style.overflow,document.body.style.overflow="hidden")},la=function(){oe!==void 0&&(document.body.style.paddingRight=oe,oe=void 0),ne!==void 0&&(document.body.style.overflow=ne,ne=void 0)},ca=function(){return window.requestAnimationFrame(function(){if(J===void 0){J={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left};var e=window,n=e.scrollY,o=e.scrollX,s=e.innerHeight;document.body.style.position="fixed",document.body.style.top=-n,document.body.style.left=-o,setTimeout(function(){return window.requestAnimationFrame(function(){var r=s-window.innerHeight;r&&n>=s&&(document.body.style.top=-(n+r))})},300)}})},ua=function(){if(J!==void 0){var e=-parseInt(document.body.style.top,10),n=-parseInt(document.body.style.left,10);document.body.style.position=J.position,document.body.style.top=J.top,document.body.style.left=J.left,window.scrollTo(n,e),J=void 0}},da=function(e){return e?e.scrollHeight-e.scrollTop<=e.clientHeight:!1},_a=function(e,n){var o=e.targetTouches[0].clientY-ze;return $t(e.target)?!1:n&&n.scrollTop===0&&o>0||da(n)&&o<0?be(e):(e.stopPropagation(),!0)},kt=function(e,n){if(!e){console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");return}if(!Z.some(function(s){return s.targetElement===e})){var o={targetElement:e,options:n||{}};Z=[].concat(ra(Z),[o]),ge?ca():ia(n),ge&&(e.ontouchstart=function(s){s.targetTouches.length===1&&(ze=s.targetTouches[0].clientY)},e.ontouchmove=function(s){s.targetTouches.length===1&&_a(s,e)},ye||(document.addEventListener("touchmove",be,De?{passive:!1}:void 0),ye=!0))}},Pt=function(){ge&&(Z.forEach(function(e){e.targetElement.ontouchstart=null,e.targetElement.ontouchmove=null}),ye&&(document.removeEventListener("touchmove",be,De?{passive:!1}:void 0),ye=!1),ze=-1),ge?ua():la(),Z=[]};const va=b({__name:"VPNavScreenMenuLink",props:{item:{}},setup(t){const e=Ae("close-screen");return(n,o)=>(a(),k(q,{class:"VPNavScreenMenuLink",href:n.item.link,target:n.item.target,rel:n.item.rel,onClick:i(e)},{default:p(()=>[O(N(n.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const pa=m(va,[["__scopeId","data-v-094068ec"]]),fa={},ha={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ma=_("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),ga=[ma];function ya(t,e){return a(),l("svg",ha,ga)}const ba=m(fa,[["render",ya]]),$a=b({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(t){const e=Ae("close-screen");return(n,o)=>(a(),k(q,{class:"VPNavScreenMenuGroupLink",href:n.item.link,target:n.item.target,rel:n.item.rel,onClick:i(e)},{default:p(()=>[O(N(n.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const wt=m($a,[["__scopeId","data-v-e370fed4"]]),ka={class:"VPNavScreenMenuGroupSection"},Pa={key:0,class:"title"},wa=b({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(t){return(e,n)=>(a(),l("div",ka,[e.text?(a(),l("p",Pa,N(e.text),1)):g("",!0),(a(!0),l(A,null,E(e.items,o=>(a(),k(wt,{key:o.text,item:o},null,8,["item"]))),128))]))}});const Va=m(wa,[["__scopeId","data-v-d338f822"]]),Sa=["aria-controls","aria-expanded"],La={class:"button-text"},Ma=["id"],Ia={key:1,class:"group"},Na=b({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(t){const e=t,n=L(!1),o=P(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function s(){n.value=!n.value}return(r,c)=>(a(),l("div",{class:T(["VPNavScreenMenuGroup",{open:n.value}])},[_("button",{class:"button","aria-controls":o.value,"aria-expanded":n.value,onClick:s},[_("span",La,N(r.text),1),f(ba,{class:"button-icon"})],8,Sa),_("div",{id:o.value,class:"items"},[(a(!0),l(A,null,E(r.items,v=>(a(),l(A,{key:v.text},["link"in v?(a(),l("div",{key:v.text,class:"item"},[f(wt,{item:v},null,8,["item"])])):(a(),l("div",Ia,[f(Va,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,Ma)],2))}});const Ca=m(Na,[["__scopeId","data-v-fc17e865"]]),Aa={key:0,class:"VPNavScreenMenu"},Ta=b({__name:"VPNavScreenMenu",setup(t){const{theme:e}=M();return(n,o)=>i(e).nav?(a(),l("nav",Aa,[(a(!0),l(A,null,E(i(e).nav,s=>(a(),l(A,{key:s.text},["link"in s?(a(),k(pa,{key:0,item:s},null,8,["item"])):(a(),k(Ca,{key:1,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):g("",!0)}}),Ba={key:0,class:"VPNavScreenAppearance"},xa={class:"text"},Oa=b({__name:"VPNavScreenAppearance",setup(t){const{site:e,theme:n}=M();return(o,s)=>i(e).appearance?(a(),l("div",Ba,[_("p",xa,N(i(n).darkModeSwitchLabel||"Appearance"),1),f(Ee)])):g("",!0)}});const Ea=m(Oa,[["__scopeId","data-v-c5ef4b84"]]),Ha={class:"list"},Da=b({__name:"VPNavScreenTranslations",setup(t){const{localeLinks:e,currentLang:n}=ue({correspondingLink:!0}),o=L(!1);function s(){o.value=!o.value}return(r,c)=>i(e).length&&i(n).label?(a(),l("div",{key:0,class:T(["VPNavScreenTranslations",{open:o.value}])},[_("button",{class:"title",onClick:s},[f(bt,{class:"icon lang"}),O(" "+N(i(n).label)+" ",1),f(yt,{class:"icon chevron"})]),_("ul",Ha,[(a(!0),l(A,null,E(i(e),v=>(a(),l("li",{key:v.link,class:"item"},[f(q,{class:"link",href:v.link},{default:p(()=>[O(N(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):g("",!0)}});const za=m(Da,[["__scopeId","data-v-b69ee3c4"]]),Fa=b({__name:"VPNavScreenSocialLinks",setup(t){const{theme:e}=M();return(n,o)=>i(e).socialLinks?(a(),k(He,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):g("",!0)}}),ja={class:"container"},Ga=b({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(t){const e=L(null);function n(){kt(e.value,{reserveScrollBarGap:!0})}function o(){Pt()}return(s,r)=>(a(),k(Ce,{name:"fade",onEnter:n,onAfterLeave:o},{default:p(()=>[s.open?(a(),l("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e},[_("div",ja,[d(s.$slots,"nav-screen-content-before",{},void 0,!0),f(Ta,{class:"menu"}),f(za,{class:"translations"}),f(Ea,{class:"appearance"}),f(Fa,{class:"social-links"}),d(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):g("",!0)]),_:3}))}});const Ra=m(Ga,[["__scopeId","data-v-5046b6eb"]]),Ua={class:"VPNav"},Wa=b({__name:"VPNav",setup(t){const{isScreenOpen:e,closeScreen:n,toggleScreen:o}=Fn();return fe("close-screen",n),(s,r)=>(a(),l("header",Ua,[f(aa,{"is-screen-open":i(e),onToggleScreen:i(o)},{"nav-bar-title-before":p(()=>[d(s.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[d(s.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[d(s.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[d(s.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),f(Ra,{open:i(e)},{"nav-screen-content-before":p(()=>[d(s.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[d(s.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])]))}});const Ka=m(Wa,[["__scopeId","data-v-dc28420e"]]),qa={},Ya={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Ja=_("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),Xa=_("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),Qa=_("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),Za=_("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),er=[Ja,Xa,Qa,Za];function tr(t,e){return a(),l("svg",Ya,er)}const nr=m(qa,[["render",tr]]);function or(){const{hasSidebar:t}=R(),e=Ve("(min-width: 960px)"),n=Ve("(min-width: 1280px)");return{isAsideEnabled:P(()=>!n.value&&!e.value?!1:t.value?n.value:e.value)}}const sr=71;function Fe(t){return typeof t.outline=="object"&&!Array.isArray(t.outline)&&t.outline.label||t.outlineTitle||"On this page"}function je(t){const e=[...document.querySelectorAll(".VPDoc h2,h3,h4,h5,h6")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const o=Number(n.tagName[1]);return{title:ar(n),link:"#"+n.id,level:o}});return rr(e,t)}function ar(t){let e="";for(const n of t.childNodes)if(n.nodeType===1){if(n.classList.contains("VPBadge")||n.classList.contains("header-anchor"))continue;e+=n.textContent}else n.nodeType===3&&(e+=n.textContent);return e.trim()}function rr(t,e){if(e===!1)return[];const n=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[o,s]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;t=t.filter(c=>c.level>=o&&c.level<=s);const r=[];e:for(let c=0;c=0;u--){const h=t[u];if(h.level{requestAnimationFrame(r),window.addEventListener("scroll",o)}),Ft(()=>{c(location.hash)}),Ne(()=>{window.removeEventListener("scroll",o)});function r(){if(!n.value)return;const v=[].slice.call(t.value.querySelectorAll(".outline-link")),u=[].slice.call(document.querySelectorAll(".content .header-anchor")).filter(y=>v.some(V=>V.hash===y.hash&&y.offsetParent!==null)),h=window.scrollY,$=window.innerHeight,w=document.body.offsetHeight,C=Math.abs(h+$-w)<1;if(u.length&&C){c(u[u.length-1].hash);return}for(let y=0;y{const s=X("VPDocOutlineItem",!0);return a(),l("ul",{class:T(n.root?"root":"nested")},[(a(!0),l(A,null,E(n.headers,({children:r,link:c,title:v})=>(a(),l("li",null,[_("a",{class:"outline-link",href:c,onClick:e,title:v},N(v),9,cr),r!=null&&r.length?(a(),k(s,{key:0,headers:r},null,8,["headers"])):g("",!0)]))),256))],2)}}});const Ge=m(ur,[["__scopeId","data-v-48774a8a"]]),dr={},_r={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},vr=_("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),pr=[vr];function fr(t,e){return a(),l("svg",_r,pr)}const Re=m(dr,[["render",fr]]),hr=b({__name:"VPLocalNavOutlineDropdown",setup(t){const{frontmatter:e,theme:n}=M(),o=L(!1),s=L(0),r=L();se(()=>{o.value=!1});function c(){o.value=!o.value,s.value=window.innerHeight+Math.min(window.scrollY-64,0)}function v($){$.target.classList.contains("outline-link")&&(r.value&&(r.value.style.transition="none"),st(()=>{o.value=!1}))}function u(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}const h=le([]);return se(()=>{h.value=je(e.value.outline??n.value.outline)}),($,w)=>(a(),l("div",{class:"VPLocalNavOutlineDropdown",style:at({"--vp-vh":s.value+"px"})},[h.value.length>0?(a(),l("button",{key:0,onClick:c,class:T({open:o.value})},[O(N(i(Fe)(i(n)))+" ",1),f(Re,{class:"icon"})],2)):(a(),l("button",{key:1,onClick:u},N(i(n).returnToTopLabel||"Return to top"),1)),f(Ce,{name:"flyout"},{default:p(()=>[o.value?(a(),l("div",{key:0,ref_key:"items",ref:r,class:"items",onClick:v},[_("a",{class:"top-link",href:"#",onClick:u},N(i(n).returnToTopLabel||"Return to top"),1),f(Ge,{headers:h.value},null,8,["headers"])],512)):g("",!0)]),_:1})],4))}});const mr=m(hr,[["__scopeId","data-v-26a9a813"]]),gr={key:0,class:"VPLocalNav"},yr=["aria-expanded"],br={class:"menu-text"},$r=b({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(t){const{theme:e,frontmatter:n}=M(),{hasSidebar:o}=R();return(s,r)=>i(n).layout!=="home"?(a(),l("div",gr,[i(o)?(a(),l("button",{key:0,class:"menu","aria-expanded":s.open,"aria-controls":"VPSidebarNav",onClick:r[0]||(r[0]=c=>s.$emit("open-menu"))},[f(nr,{class:"menu-icon"}),_("span",br,N(i(e).sidebarMenuLabel||"Menu"),1)],8,yr)):g("",!0),f(mr)])):g("",!0)}});const kr=m($r,[["__scopeId","data-v-fcc33ec9"]]),Pr=t=>(F("data-v-efb5c4af"),t=t(),j(),t),wr=["role","tabindex"],Vr=Pr(()=>_("div",{class:"indicator"},null,-1)),Sr=["onKeydown"],Lr={key:1,class:"items"},Mr=b({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(t){const e=t,{collapsed:n,collapsible:o,isLink:s,isActiveLink:r,hasActiveLink:c,hasChildren:v,toggle:u}=xn(P(()=>e.item)),h=P(()=>v.value?"section":"div"),$=P(()=>s.value?"a":"div"),w=P(()=>v.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),C=P(()=>s.value?void 0:"button"),y=P(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:n.value},{"is-link":s.value},{"is-active":r.value},{"has-active":c.value}]);function V(S){"key"in S&&S.key!=="Enter"||!e.item.link&&u()}function I(){e.item.link&&u()}return(S,x)=>{const z=X("VPSidebarItem",!0);return a(),k(Q(h.value),{class:T(["VPSidebarItem",y.value])},{default:p(()=>[S.item.text?(a(),l("div",pe({key:0,class:"item",role:C.value},Gt(S.item.items?{click:V,keydown:V}:{},!0),{tabindex:S.item.items&&0}),[Vr,S.item.link?(a(),k(q,{key:0,tag:$.value,class:"link",href:S.item.link},{default:p(()=>[(a(),k(Q(w.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href"])):(a(),k(Q(w.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null?(a(),l("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:I,onKeydown:jt(I,["enter"]),tabindex:"0"},[f(Re,{class:"caret-icon"})],40,Sr)):g("",!0)],16,wr)):g("",!0),S.item.items&&S.item.items.length?(a(),l("div",Lr,[S.depth<5?(a(!0),l(A,{key:0},E(S.item.items,D=>(a(),k(z,{key:D.text,item:D,depth:S.depth+1},null,8,["item","depth"]))),128)):g("",!0)])):g("",!0)]),_:1},8,["class"])}}});const Ir=m(Mr,[["__scopeId","data-v-efb5c4af"]]),Vt=t=>(F("data-v-8b8b2ec7"),t=t(),j(),t),Nr=Vt(()=>_("div",{class:"curtain"},null,-1)),Cr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ar=Vt(()=>_("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Tr=b({__name:"VPSidebar",props:{open:{type:Boolean}},setup(t){const e=t,{sidebarGroups:n,hasSidebar:o}=R();let s=L(null);function r(){kt(s.value,{reserveScrollBarGap:!0})}function c(){Pt()}return Rt(async()=>{var v;e.open?(r(),(v=s.value)==null||v.focus()):c()}),(v,u)=>i(o)?(a(),l("aside",{key:0,class:T(["VPSidebar",{open:v.open}]),ref_key:"navEl",ref:s,onClick:u[0]||(u[0]=Ut(()=>{},["stop"]))},[Nr,_("nav",Cr,[Ar,d(v.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),l(A,null,E(i(n),h=>(a(),l("div",{key:h.text,class:"group"},[f(Ir,{item:h,depth:0},null,8,["item"])]))),128)),d(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):g("",!0)}});const Br=m(Tr,[["__scopeId","data-v-8b8b2ec7"]]),xr={},Or={class:"VPPage"};function Er(t,e){const n=X("Content");return a(),l("div",Or,[d(t.$slots,"page-top"),f(n),d(t.$slots,"page-bottom")])}const Hr=m(xr,[["render",Er]]),Dr=b({__name:"VPButton",props:{tag:{},size:{},theme:{},text:{},href:{}},setup(t){const e=t,n=P(()=>[e.size??"medium",e.theme??"brand"]),o=P(()=>e.href&&rt.test(e.href)),s=P(()=>e.tag?e.tag:e.href?"a":"button");return(r,c)=>(a(),k(Q(s.value),{class:T(["VPButton",n.value]),href:r.href?i(ie)(r.href):void 0,target:o.value?"_blank":void 0,rel:o.value?"noreferrer":void 0},{default:p(()=>[O(N(r.text),1)]),_:1},8,["class","href","target","rel"]))}});const zr=m(Dr,[["__scopeId","data-v-fbf50643"]]),Fr=t=>(F("data-v-1a9e8a3d"),t=t(),j(),t),jr={class:"container"},Gr={class:"main"},Rr={key:0,class:"name"},Ur={class:"clip"},Wr={key:1,class:"text"},Kr={key:2,class:"tagline"},qr={key:0,class:"actions"},Yr={key:0,class:"image"},Jr={class:"image-container"},Xr=Fr(()=>_("div",{class:"image-bg"},null,-1)),Qr=b({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(t){const e=Ae("hero-image-slot-exists");return(n,o)=>(a(),l("div",{class:T(["VPHero",{"has-image":n.image||i(e)}])},[_("div",jr,[_("div",Gr,[d(n.$slots,"home-hero-info",{},()=>[n.name?(a(),l("h1",Rr,[_("span",Ur,N(n.name),1)])):g("",!0),n.text?(a(),l("p",Wr,N(n.text),1)):g("",!0),n.tagline?(a(),l("p",Kr,N(n.tagline),1)):g("",!0)],!0),n.actions?(a(),l("div",qr,[(a(!0),l(A,null,E(n.actions,s=>(a(),l("div",{key:s.link,class:"action"},[f(zr,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link},null,8,["theme","text","href"])]))),128))])):g("",!0)]),n.image||i(e)?(a(),l("div",Yr,[_("div",Jr,[Xr,d(n.$slots,"home-hero-image",{},()=>[n.image?(a(),k(Be,{key:0,class:"image-src",image:n.image},null,8,["image"])):g("",!0)],!0)])])):g("",!0)])],2))}});const Zr=m(Qr,[["__scopeId","data-v-1a9e8a3d"]]),ei=b({__name:"VPHomeHero",setup(t){const{frontmatter:e}=M();return(n,o)=>i(e).hero?(a(),k(Zr,{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":p(()=>[d(n.$slots,"home-hero-info")]),"home-hero-image":p(()=>[d(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):g("",!0)}}),ti={},ni={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},oi=_("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),si=[oi];function ai(t,e){return a(),l("svg",ni,si)}const ri=m(ti,[["render",ai]]),ii={class:"box"},li=["innerHTML"],ci=["innerHTML"],ui=["innerHTML"],di={key:3,class:"link-text"},_i={class:"link-text-value"},vi=b({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{}},setup(t){return(e,n)=>(a(),k(q,{class:"VPFeature",href:e.link,"no-icon":!0},{default:p(()=>[_("article",ii,[typeof e.icon=="object"?(a(),k(Be,{key:0,image:e.icon,alt:e.icon.alt,height:e.icon.height,width:e.icon.width},null,8,["image","alt","height","width"])):e.icon?(a(),l("div",{key:1,class:"icon",innerHTML:e.icon},null,8,li)):g("",!0),_("h2",{class:"title",innerHTML:e.title},null,8,ci),e.details?(a(),l("p",{key:2,class:"details",innerHTML:e.details},null,8,ui)):g("",!0),e.linkText?(a(),l("div",di,[_("p",_i,[O(N(e.linkText)+" ",1),f(ri,{class:"link-text-icon"})])])):g("",!0)])]),_:1},8,["href"]))}});const pi=m(vi,[["__scopeId","data-v-a8945925"]]),fi={key:0,class:"VPFeatures"},hi={class:"container"},mi={class:"items"},gi=b({__name:"VPFeatures",props:{features:{}},setup(t){const e=t,n=P(()=>{const o=e.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,s)=>o.features?(a(),l("div",fi,[_("div",hi,[_("div",mi,[(a(!0),l(A,null,E(o.features,r=>(a(),l("div",{key:r.title,class:T(["item",[n.value]])},[f(pi,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText},null,8,["icon","title","details","link","link-text"])],2))),128))])])])):g("",!0)}});const yi=m(gi,[["__scopeId","data-v-7b5b6ee6"]]),bi=b({__name:"VPHomeFeatures",setup(t){const{frontmatter:e}=M();return(n,o)=>i(e).features?(a(),k(yi,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):g("",!0)}}),$i={class:"VPHome"},ki=b({__name:"VPHome",setup(t){return(e,n)=>{const o=X("Content");return a(),l("div",$i,[d(e.$slots,"home-hero-before",{},void 0,!0),f(ei,null,{"home-hero-info":p(()=>[d(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":p(()=>[d(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),d(e.$slots,"home-hero-after",{},void 0,!0),d(e.$slots,"home-features-before",{},void 0,!0),f(bi),d(e.$slots,"home-features-after",{},void 0,!0),f(o)])}}});const Pi=m(ki,[["__scopeId","data-v-00f4dd76"]]),wi=t=>(F("data-v-9628eddf"),t=t(),j(),t),Vi={class:"content"},Si={class:"outline-title"},Li={"aria-labelledby":"doc-outline-aria-label"},Mi=wi(()=>_("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),Ii=b({__name:"VPDocAsideOutline",setup(t){const{frontmatter:e,theme:n}=M(),o=le([]);se(()=>{o.value=je(e.value.outline??n.value.outline)});const s=L(),r=L();return ir(s,r),(c,v)=>(a(),l("div",{class:T(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:s},[_("div",Vi,[_("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),_("div",Si,N(i(Fe)(i(n))),1),_("nav",Li,[Mi,f(Ge,{headers:o.value,root:!0},null,8,["headers"])])])],2))}});const Ni=m(Ii,[["__scopeId","data-v-9628eddf"]]),Ci={class:"VPDocAsideCarbonAds"},Ai=b({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(t){const e=()=>null;return(n,o)=>(a(),l("div",Ci,[f(i(e),{"carbon-ads":n.carbonAds},null,8,["carbon-ads"])]))}}),Ti=t=>(F("data-v-735d3db4"),t=t(),j(),t),Bi={class:"VPDocAside"},xi=Ti(()=>_("div",{class:"spacer"},null,-1)),Oi=b({__name:"VPDocAside",setup(t){const{theme:e}=M();return(n,o)=>(a(),l("div",Bi,[d(n.$slots,"aside-top",{},void 0,!0),d(n.$slots,"aside-outline-before",{},void 0,!0),f(Ni),d(n.$slots,"aside-outline-after",{},void 0,!0),xi,d(n.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),k(Ai,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):g("",!0),d(n.$slots,"aside-ads-after",{},void 0,!0),d(n.$slots,"aside-bottom",{},void 0,!0)]))}});const Ei=m(Oi,[["__scopeId","data-v-735d3db4"]]);function Hi(){const{theme:t,page:e}=M();return P(()=>{const{text:n="Edit this page",pattern:o=""}=t.value.editLink||{};let s;return typeof o=="function"?s=o(e.value):s=o.replace(/:path/g,e.value.filePath),{url:s,text:n}})}function Di(){const{page:t,theme:e,frontmatter:n}=M();return P(()=>{var c,v,u,h;const o=ht(e.value.sidebar,t.value.relativePath),s=Tn(o),r=s.findIndex($=>te(t.value.relativePath,$.link));return{prev:n.value.prev===!1?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??((c=s[r-1])==null?void 0:c.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((v=s[r-1])==null?void 0:v.link)},next:n.value.next===!1?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((u=s[r+1])==null?void 0:u.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((h=s[r+1])==null?void 0:h.link)}}})}const zi={},Fi={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},ji=_("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Gi=_("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),Ri=[ji,Gi];function Ui(t,e){return a(),l("svg",Fi,Ri)}const Wi=m(zi,[["render",Ui]]),Ki={class:"VPLastUpdated"},qi=["datetime"],Yi=b({__name:"VPDocFooterLastUpdated",setup(t){const{theme:e,page:n,lang:o}=M(),s=P(()=>new Date(n.value.lastUpdated)),r=P(()=>s.value.toISOString()),c=L("");return U(()=>{ee(()=>{c.value=s.value.toLocaleString(o.value)})}),(v,u)=>(a(),l("p",Ki,[O(N(i(e).lastUpdatedText||"Last updated")+": ",1),_("time",{datetime:r.value},N(c.value),9,qi)]))}});const Ji=m(Yi,[["__scopeId","data-v-0bc2f9d9"]]),Xi={key:0,class:"VPDocFooter"},Qi={key:0,class:"edit-info"},Zi={key:0,class:"edit-link"},el={key:1,class:"last-updated"},tl={key:1,class:"prev-next"},nl={class:"pager"},ol=["href"],sl=["innerHTML"],al=["innerHTML"],rl=["href"],il=["innerHTML"],ll=["innerHTML"],cl=b({__name:"VPDocFooter",setup(t){const{theme:e,page:n,frontmatter:o}=M(),s=Hi(),r=Di(),c=P(()=>e.value.editLink&&o.value.editLink!==!1),v=P(()=>n.value.lastUpdated&&o.value.lastUpdated!==!1),u=P(()=>c.value||v.value||r.value.prev||r.value.next);return(h,$)=>{var w,C,y,V,I,S,x;return u.value?(a(),l("footer",Xi,[d(h.$slots,"doc-footer-before",{},void 0,!0),c.value||v.value?(a(),l("div",Qi,[c.value?(a(),l("div",Zi,[f(q,{class:"edit-link-button",href:i(s).url,"no-icon":!0},{default:p(()=>[f(Wi,{class:"edit-link-icon","aria-label":"edit icon"}),O(" "+N(i(s).text),1)]),_:1},8,["href"])])):g("",!0),v.value?(a(),l("div",el,[f(Ji)])):g("",!0)])):g("",!0),(w=i(r).prev)!=null&&w.link||(C=i(r).next)!=null&&C.link?(a(),l("div",tl,[_("div",nl,[(y=i(r).prev)!=null&&y.link?(a(),l("a",{key:0,class:"pager-link prev",href:i(ie)(i(r).prev.link)},[_("span",{class:"desc",innerHTML:((V=i(e).docFooter)==null?void 0:V.prev)||"Previous page"},null,8,sl),_("span",{class:"title",innerHTML:i(r).prev.text},null,8,al)],8,ol)):g("",!0)]),_("div",{class:T(["pager",{"has-prev":(I=i(r).prev)==null?void 0:I.link}])},[(S=i(r).next)!=null&&S.link?(a(),l("a",{key:0,class:"pager-link next",href:i(ie)(i(r).next.link)},[_("span",{class:"desc",innerHTML:((x=i(e).docFooter)==null?void 0:x.next)||"Next page"},null,8,il),_("span",{class:"title",innerHTML:i(r).next.text},null,8,ll)],8,rl)):g("",!0)],2)])):g("",!0)])):g("",!0)}}});const ul=m(cl,[["__scopeId","data-v-6114015a"]]),dl={key:0,class:"VPDocOutlineDropdown"},_l={key:0,class:"items"},vl=b({__name:"VPDocOutlineDropdown",setup(t){const{frontmatter:e,theme:n}=M(),o=L(!1);se(()=>{o.value=!1});const s=le([]);return se(()=>{s.value=je(e.value.outline??n.value.outline)}),(r,c)=>s.value.length>0?(a(),l("div",dl,[_("button",{onClick:c[0]||(c[0]=v=>o.value=!o.value),class:T({open:o.value})},[O(N(i(Fe)(i(n)))+" ",1),f(Re,{class:"icon"})],2),o.value?(a(),l("div",_l,[f(Ge,{headers:s.value},null,8,["headers"])])):g("",!0)])):g("",!0)}});const pl=m(vl,[["__scopeId","data-v-e5fab910"]]),fl=t=>(F("data-v-a8bcbcd1"),t=t(),j(),t),hl={class:"container"},ml=fl(()=>_("div",{class:"aside-curtain"},null,-1)),gl={class:"aside-container"},yl={class:"aside-content"},bl={class:"content"},$l={class:"content-container"},kl={class:"main"},Pl=b({__name:"VPDoc",setup(t){const e=ce(),{hasSidebar:n,hasAside:o,leftAside:s}=R(),r=P(()=>e.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(c,v)=>{const u=X("Content");return a(),l("div",{class:T(["VPDoc",{"has-sidebar":i(n),"has-aside":i(o)}])},[d(c.$slots,"doc-top",{},void 0,!0),_("div",hl,[i(o)?(a(),l("div",{key:0,class:T(["aside",{"left-aside":i(s)}])},[ml,_("div",gl,[_("div",yl,[f(Ei,null,{"aside-top":p(()=>[d(c.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[d(c.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[d(c.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[d(c.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[d(c.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[d(c.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):g("",!0),_("div",bl,[_("div",$l,[d(c.$slots,"doc-before",{},void 0,!0),f(pl),_("main",kl,[f(u,{class:T(["vp-doc",r.value])},null,8,["class"])]),f(ul,null,{"doc-footer-before":p(()=>[d(c.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),d(c.$slots,"doc-after",{},void 0,!0)])])]),d(c.$slots,"doc-bottom",{},void 0,!0)],2)}}});const wl=m(Pl,[["__scopeId","data-v-a8bcbcd1"]]),ke=t=>(F("data-v-8a4c9fbe"),t=t(),j(),t),Vl={class:"NotFound"},Sl=ke(()=>_("p",{class:"code"},"404",-1)),Ll=ke(()=>_("h1",{class:"title"},"PAGE NOT FOUND",-1)),Ml=ke(()=>_("div",{class:"divider"},null,-1)),Il=ke(()=>_("blockquote",{class:"quote"}," But if you don't change your direction, and if you keep looking, you may end up where you are heading. ",-1)),Nl={class:"action"},Cl=["href"],Al=b({__name:"NotFound",setup(t){const{site:e}=M(),{localeLinks:n}=ue({removeCurrent:!1}),o=L("/");return U(()=>{var r;const s=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(o.value=((r=n.value.find(({link:c})=>c.startsWith(s)))==null?void 0:r.link)||n.value[0].link)}),(s,r)=>(a(),l("div",Vl,[Sl,Ll,Ml,Il,_("div",Nl,[_("a",{class:"link",href:i(Ie)(o.value),"aria-label":"go to home"}," Take me home ",8,Cl)])]))}});const Tl=m(Al,[["__scopeId","data-v-8a4c9fbe"]]),Bl=b({__name:"VPContent",setup(t){const{page:e,frontmatter:n}=M(),{hasSidebar:o}=R();return(s,r)=>(a(),l("div",{class:T(["VPContent",{"has-sidebar":i(o),"is-home":i(n).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?d(s.$slots,"not-found",{key:0},()=>[f(Tl)],!0):i(n).layout==="page"?(a(),k(Hr,{key:1},{"page-top":p(()=>[d(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[d(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(n).layout==="home"?(a(),k(Pi,{key:2},{"home-hero-before":p(()=>[d(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":p(()=>[d(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":p(()=>[d(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[d(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[d(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[d(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):(a(),k(wl,{key:3},{"doc-top":p(()=>[d(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[d(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":p(()=>[d(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[d(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[d(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":p(()=>[d(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":p(()=>[d(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[d(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[d(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[d(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":p(()=>[d(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}});const xl=m(Bl,[["__scopeId","data-v-945e901e"]]),Ol={class:"container"},El=["innerHTML"],Hl=["innerHTML"],Dl=b({__name:"VPFooter",setup(t){const{theme:e}=M(),{hasSidebar:n}=R();return(o,s)=>i(e).footer?(a(),l("footer",{key:0,class:T(["VPFooter",{"has-sidebar":i(n)}])},[_("div",Ol,[i(e).footer.message?(a(),l("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,El)):g("",!0),i(e).footer.copyright?(a(),l("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,Hl)):g("",!0)])],2)):g("",!0)}});const zl=m(Dl,[["__scopeId","data-v-c38c9977"]]),Fl={key:0,class:"Layout"},jl=b({__name:"Layout",setup(t){const{isOpen:e,open:n,close:o}=R(),s=ce();K(()=>s.path,o),Bn(e,o),fe("close-sidebar",o),fe("is-sidebar-open",e);const{frontmatter:r}=M(),c=Wt(),v=P(()=>!!c["home-hero-image"]);return fe("hero-image-slot-exists",v),(u,h)=>{const $=X("Content");return i(r).layout!==!1?(a(),l("div",Fl,[d(u.$slots,"layout-top",{},void 0,!0),f(En),f(zn,{class:"backdrop",show:i(e),onClick:i(o)},null,8,["show","onClick"]),f(Ka,null,{"nav-bar-title-before":p(()=>[d(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[d(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[d(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[d(u.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":p(()=>[d(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[d(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),f(kr,{open:i(e),onOpenMenu:i(n)},null,8,["open","onOpenMenu"]),f(Br,{open:i(e)},{"sidebar-nav-before":p(()=>[d(u.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":p(()=>[d(u.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),f(xl,null,{"page-top":p(()=>[d(u.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[d(u.$slots,"page-bottom",{},void 0,!0)]),"not-found":p(()=>[d(u.$slots,"not-found",{},void 0,!0)]),"home-hero-before":p(()=>[d(u.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":p(()=>[d(u.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":p(()=>[d(u.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[d(u.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[d(u.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[d(u.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":p(()=>[d(u.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[d(u.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[d(u.$slots,"doc-after",{},void 0,!0)]),"doc-top":p(()=>[d(u.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[d(u.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":p(()=>[d(u.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[d(u.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[d(u.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[d(u.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[d(u.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[d(u.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),f(zl),d(u.$slots,"layout-bottom",{},void 0,!0)])):(a(),k($,{key:1}))}}});const Gl=m(jl,[["__scopeId","data-v-5895cebc"]]);const Jl={Layout:Gl,enhanceApp:({app:t})=>{t.component("Badge",qt)}};function Xl(t,e){const{localeIndex:n}=M();function o(s){var y,V;const r=s.split("."),c=t&&typeof t=="object",v=c&&((V=(y=t.locales)==null?void 0:y[n.value])==null?void 0:V.translations)||null,u=c&&t.translations||null;let h=v,$=u,w=e;const C=r.pop();for(const I of r){let S=null;const x=w==null?void 0:w[I];x&&(S=w=x);const z=$==null?void 0:$[I];z&&(S=$=z);const D=h==null?void 0:h[I];D&&(S=h=D),x||(w=S),z||($=S),D||(h=S)}return(h==null?void 0:h[C])??($==null?void 0:$[C])??(w==null?void 0:w[C])??""}return o}export{Te as a,M as b,Wl as c,Yl as d,Kl as e,Xl as f,re as g,ql as h,Je as o,Jl as t,mn as u,Ul as w}; diff --git a/assets/guide_deployment.md.8ea9d750.js b/assets/guide_deployment.md.df1605f6.js similarity index 99% rename from assets/guide_deployment.md.8ea9d750.js rename to assets/guide_deployment.md.df1605f6.js index 8b743d109ba..57e6fed7150 100644 --- a/assets/guide_deployment.md.8ea9d750.js +++ b/assets/guide_deployment.md.df1605f6.js @@ -1,4 +1,4 @@ -import{_ as t,o as e,c as n,V as l}from"./chunks/framework.40f7bea3.js";const h=JSON.parse('{"title":"Deployment","description":"","frontmatter":{},"headers":[],"relativePath":"guide/deployment.md","filePath":"guide/deployment.md"}'),s={name:"guide/deployment.md"},a=l(`

Deployment

Docker Container Deployment

Docker Container Deployment is the easiest way to deploy QD.

Please always remember to back up your database before updating or redeploying.

Container

DockerHub URL : https://hub.docker.com/r/qdtoday/qd

Tag meaning:

  • latest: Latest Release version
  • lite-latest: Latest Release version without OCR related functions
  • ja3-latest: Integrated curl-impersonate to solve the problem that ja3 fingerprint is identified as curl, does not support http3 and Quic connection
  • 20xxxxxx: Specify Release version, version number is represented by Release release date
  • dev: Latest development version, synchronized with the latest source code, no stability guarantee

Deploy Method

1. Docker Compose (Recommend)

sh
# Create and switch to the QD directory.
+import{_ as t,o as e,c as n,V as l}from"./chunks/framework.e7f80142.js";const h=JSON.parse('{"title":"Deployment","description":"","frontmatter":{},"headers":[],"relativePath":"guide/deployment.md","filePath":"guide/deployment.md"}'),s={name:"guide/deployment.md"},a=l(`

Deployment

Docker Container Deployment

Docker Container Deployment is the easiest way to deploy QD.

Please always remember to back up your database before updating or redeploying.

Container

DockerHub URL : https://hub.docker.com/r/qdtoday/qd

Tag meaning:

  • latest: Latest Release version
  • lite-latest: Latest Release version without OCR related functions
  • ja3-latest: Integrated curl-impersonate to solve the problem that ja3 fingerprint is identified as curl, does not support http3 and Quic connection
  • 20xxxxxx: Specify Release version, version number is represented by Release release date
  • dev: Latest development version, synchronized with the latest source code, no stability guarantee

Deploy Method

1. Docker Compose (Recommend)

sh
# Create and switch to the QD directory.
 mkdir -p $(pwd)/qd/config && cd $(pwd)/qd
 # Download docker-compose.yml
 wget https://fastly.jsdelivr.net/gh/qd-today/qd@master/docker-compose.yml
diff --git a/assets/guide_deployment.md.8ea9d750.lean.js b/assets/guide_deployment.md.df1605f6.lean.js
similarity index 67%
rename from assets/guide_deployment.md.8ea9d750.lean.js
rename to assets/guide_deployment.md.df1605f6.lean.js
index c5e05f96d05..6f9ed0643ab 100644
--- a/assets/guide_deployment.md.8ea9d750.lean.js
+++ b/assets/guide_deployment.md.df1605f6.lean.js
@@ -1 +1 @@
-import{_ as t,o as e,c as n,V as l}from"./chunks/framework.40f7bea3.js";const h=JSON.parse('{"title":"Deployment","description":"","frontmatter":{},"headers":[],"relativePath":"guide/deployment.md","filePath":"guide/deployment.md"}'),s={name:"guide/deployment.md"},a=l("",24),o=[a];function r(d,i,c,p,y,g){return e(),n("div",null,o)}const x=t(s,[["render",r]]);export{h as __pageData,x as default};
+import{_ as t,o as e,c as n,V as l}from"./chunks/framework.e7f80142.js";const h=JSON.parse('{"title":"Deployment","description":"","frontmatter":{},"headers":[],"relativePath":"guide/deployment.md","filePath":"guide/deployment.md"}'),s={name:"guide/deployment.md"},a=l("",24),o=[a];function r(d,i,c,p,y,g){return e(),n("div",null,o)}const x=t(s,[["render",r]]);export{h as __pageData,x as default};
diff --git a/assets/guide_faq.md.9fe43b65.js b/assets/guide_faq.md.996dff45.js
similarity index 99%
rename from assets/guide_faq.md.9fe43b65.js
rename to assets/guide_faq.md.996dff45.js
index 4b6260cb25c..c4c64a720d8 100644
--- a/assets/guide_faq.md.9fe43b65.js
+++ b/assets/guide_faq.md.996dff45.js
@@ -1,4 +1,4 @@
-import{_ as e,o as s,c as a,V as o}from"./chunks/framework.40f7bea3.js";const C=JSON.parse('{"title":"FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"guide/faq.md","filePath":"guide/faq.md"}'),n={name:"guide/faq.md"},l=o(`

FAQ

how to backup and restore the database?

QD uses sqlite3 as the framework database by default, and the database.db file is saved in config directory. When deploying with a Docker container, you can use the docker cp command to back up the database file, and then use the docker cp command to restore the database file in the new container.

sh
# database backup
+import{_ as e,o as s,c as a,V as o}from"./chunks/framework.e7f80142.js";const C=JSON.parse('{"title":"FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"guide/faq.md","filePath":"guide/faq.md"}'),n={name:"guide/faq.md"},l=o(`

FAQ

how to backup and restore the database?

QD uses sqlite3 as the framework database by default, and the database.db file is saved in config directory. When deploying with a Docker container, you can use the docker cp command to back up the database file, and then use the docker cp command to restore the database file in the new container.

sh
# database backup
 docker cp container_name:/usr/src/app/config/database.db .
 # Database recovery
 docker cp database.db container_name:/usr/src/app/config/

how to configure the email server in Docker?

sh
docker run -d --name qd -p 8923:80 -v $(pwd)/qd/config:/usr/src/app/config --env MAIL_SMTP=$STMP_Server_ --env MAIL_PORT=$Mailbox_server_port --env MAIL_USER=$Username --env MAIL_PASSWORD=$Password --env DOMAIN=$Domain qdtoday/qd

how to use MySQL in Docker?

sh
docker run -d --name qd -p 8923:80 -v $(pwd)/qd/config:/usr/src/app/config --ENV DB_TYPE=mysql --ENV JAWSDB_MARIA_URL=mysql://$username:$password@$hostname:$port/$database_name?auth_plugin= qdtoday/qd

how to build a Docker image by myself?

Please refer to the build file Dockerfile of this image.

How to view the API and Jinja2 template variables supported by the current framework?

Please access the home page of the framework, and then click the Common API/Filter button in the upper left corner to view the API and Jinja2 template variables supported by the current framework.

how to submit a bug issue?

Please enable Debug mode after encountering a problem, and then submit detailed error information to Issue.

Which requests are necessary for QD?

Empirically, the following requests are necessary:

  • login page
  • POST to login page
  • Issue a request for username, password
  • The page that caused the page to jump after sending
  • The first page before and after page turning

Will my username and password be revealed?

In order to help users initiate requests, user names and passwords still need to be recorded. This can only rely on the self-discipline of server maintainers to ensure the security of back-end data. But in the framework design, each user is encrypted with a secure key when storing. Encrypting user data with a key can ensure that user data cannot be decrypted only by obtaining the database. (Encrypted user data includes templates uploaded by users, variables set by users for tasks, etc.)

If you are still worried, you can build the QD framework by yourself, download the template and run it on your own server.

Prompt warning message: Connect Redis falied: Error 10061

QD uses redis as a flow limiting tool. If the redis service is not installed, the framework will prompt the following warning message.

sh
[W xxxxxx xx:xx:xx QD.RedisDB redisdb:28] Connect Redis falied: Error 10061 connecting to localhost:6379. No connection could be made because the target machine actively refused it.

However, redis is not required in this framework, if you don't need to use the flow-limiting feature, you can ignore the warning message.

It is recommended to use Docker compose to deploy the QD framework, and the Docker compose configuration already installs the redis container by default.

Prompt warning message: Import PyCurl module falied

QD uses the pycurl module to send HTTP proxy requests. If the pycurl module is not installed, the framework will prompt the following warning message:

sh
[W xxxxxx xx:xx:xx QD.Http.Fetcher fetcher:34] Import PyCurl module falied: No module named 'pycurl'

However, pycurl is not required in this framework, if you don't need to use the proxy function, you can ignore the warning message.

The pycurl module is cumbersome to install on the Windows system, and the libcurl library needs to be installed. For the specific installation method, please refer to pycurl official documentation.

It is recommended to use a container or linux system to deploy the QD framework. The docker container has a pre-installed Curl environment, and the pycurl module is installed by default

How to Register Notification Tools

You can register different notification tools to receive notifications when specific events (such as failed check-ins) occur.

Please refer to Pusher for details.

Subscribe updating page prompts undefined error

The subscribe updating web page prompts an error code of undefined, or the console shows WebSocket connection failed but does not show the reason for the error

Please check if the "reverse proxy" configuration is correct, refer to Nginx reverse proxy WebSocket service connection error

Reference configuration is as follows:

Nginx
server {
diff --git a/assets/guide_faq.md.9fe43b65.lean.js b/assets/guide_faq.md.996dff45.lean.js
similarity index 65%
rename from assets/guide_faq.md.9fe43b65.lean.js
rename to assets/guide_faq.md.996dff45.lean.js
index eca38ffafcf..dda70a138fb 100644
--- a/assets/guide_faq.md.9fe43b65.lean.js
+++ b/assets/guide_faq.md.996dff45.lean.js
@@ -1 +1 @@
-import{_ as e,o as s,c as a,V as o}from"./chunks/framework.40f7bea3.js";const C=JSON.parse('{"title":"FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"guide/faq.md","filePath":"guide/faq.md"}'),n={name:"guide/faq.md"},l=o("",38),t=[l];function r(p,c,i,d,y,h){return s(),a("div",null,t)}const D=e(n,[["render",r]]);export{C as __pageData,D as default};
+import{_ as e,o as s,c as a,V as o}from"./chunks/framework.e7f80142.js";const C=JSON.parse('{"title":"FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"guide/faq.md","filePath":"guide/faq.md"}'),n={name:"guide/faq.md"},l=o("",38),t=[l];function r(p,c,i,d,y,h){return s(),a("div",null,t)}const D=e(n,[["render",r]]);export{C as __pageData,D as default};
diff --git a/assets/guide_how-to-use.md.e0635a4e.js b/assets/guide_how-to-use.md.4ee6e35b.js
similarity index 99%
rename from assets/guide_how-to-use.md.e0635a4e.js
rename to assets/guide_how-to-use.md.4ee6e35b.js
index 56928f90684..e9f25b344ab 100644
--- a/assets/guide_how-to-use.md.e0635a4e.js
+++ b/assets/guide_how-to-use.md.4ee6e35b.js
@@ -1 +1 @@
-import{_ as e,a as t}from"./chunks/save_har.00ab98ce.js";import{_ as o,o as a,c as i,V as l}from"./chunks/framework.40f7bea3.js";const k=JSON.parse('{"title":"How to Use?","description":"","frontmatter":{},"headers":[],"relativePath":"guide/how-to-use.md","filePath":"guide/how-to-use.md"}'),r={name:"guide/how-to-use.md"},c=l('

How to Use?

Har Obtain

1. What is HAR?

HAR: https://toolbox.googleapps.com/apps/har_analyzer/?lang=

2. Packet capture

2.1. Chrome or Edge

  1. Press F12, Ctrl + Shift + I, or from the Chrome menu select More tools > Developer tools.
  2. From the panel that opens at the bottom of your screen, select the Network tab.
  3. Make sure the Record button in the upper left corner of the Network tab is shown in red.
  4. If it's grey, click it once to start recording.
  5. Check the box next to Preserve log. Preserve log
  6. Click the Clear button to clear out any existing logs from the Network tab.
  7. Now try to reproduce the task you were trying to do.
  8. Once you have reproduced the task, right-click anywhere on the grid of network requests.
  9. Select Save as HAR with Content. Save as HAR with Content
  10. Save the file to your computer.

2.2. Firefox

  1. Press F12 ​(or Go to Tools > Web Developer > Network).
  2. Now try to reproduce the task you were trying to do.
  3. Right-click on the loaded results.
  4. Select Save all as har.

2.3. Windows - Fiddler

  1. Open Fiddler, open the Tools menu, select Options.
  2. Select the HTTPS tab, check Capture HTTPS Connects.
  3. Select the Connections tab, check Decrypt HTTPS traffic.
  4. Now try to reproduce the task you were trying to do.
  5. export to HAR format - please select HTTPArchive as the export method.

2.4. IOS - Stream

  1. Open Stream.
  2. Before capture the HTTPS request, you need to install the CA certificate, setting > General > About > Certificate Trust Settings to trust the CA certificate.
  3. Click the start packet capture button, the phone will automatically pop up the VPN configuration window, and then select Allow.
  4. Now try to reproduce the task you were trying to do.
  5. On the app page, click Stop Capture to end this capture.
  6. export the HAR file.

3. Community HAR

  1. Click the Community Template button to the right of my template.
  2. Update the repository to get the latest HAR file list.
  3. Select the HAR file you want to use and click the Subscribe button to subscribe to the template.
  4. Modify the template according to your needs.
  5. Then jump to step 5 of 3. Edit the template to continue editing.

Upload the HAR file

  1. Access and login to QD framework.
  2. Click the + button to the right of my template.
  3. Upload the HAR file you just saved.
  4. Click upload to continue.

Edit the template

  1. Replace the username, password, cookie, header and other parts that change according to the user with a template similar to {{ username }}. (templates support jinja2 syntax)
  2. Use the test panel in request editing to test whether the template is returned correctly, use the correct and wrong user names to test。
  3. Fill in success/failure assertion, which helps to detect sign-in failures and template failures.
  4. When some data from the previous request is needed in the request, variable extraction is used to extract the data through regularization and save it in the environment variable. Use ab(\\w+)cd, the group selector, to select part of it.
  5. Use __log__ to extract task logs.
  6. When all request edits are complete, use Test next to the Download button to test the overall.
  7. The template being edited will be automatically saved in the browser cache, so don't worry about losing it.
  8. Click the Save button to save the template.
  9. Click the Download button to download the template.

Create scheduled task

  1. Click the + button to the right of my task.
  2. Select the template you just created.
  3. Fill in the task variables, task interval, task group and task execution time.
  4. Click the Test button to test the task.
  5. Click the Save button to save the task.
',21),d=[c];function s(h,n,u,p,m,f){return a(),i("div",null,d)}const _=o(r,[["render",s]]);export{k as __pageData,_ as default}; +import{_ as e,a as t}from"./chunks/save_har.00ab98ce.js";import{_ as o,o as a,c as i,V as l}from"./chunks/framework.e7f80142.js";const k=JSON.parse('{"title":"How to Use?","description":"","frontmatter":{},"headers":[],"relativePath":"guide/how-to-use.md","filePath":"guide/how-to-use.md"}'),r={name:"guide/how-to-use.md"},c=l('

How to Use?

Har Obtain

1. What is HAR?

HAR: https://toolbox.googleapps.com/apps/har_analyzer/?lang=

2. Packet capture

2.1. Chrome or Edge

  1. Press F12, Ctrl + Shift + I, or from the Chrome menu select More tools > Developer tools.
  2. From the panel that opens at the bottom of your screen, select the Network tab.
  3. Make sure the Record button in the upper left corner of the Network tab is shown in red.
  4. If it's grey, click it once to start recording.
  5. Check the box next to Preserve log. Preserve log
  6. Click the Clear button to clear out any existing logs from the Network tab.
  7. Now try to reproduce the task you were trying to do.
  8. Once you have reproduced the task, right-click anywhere on the grid of network requests.
  9. Select Save as HAR with Content. Save as HAR with Content
  10. Save the file to your computer.

2.2. Firefox

  1. Press F12 ​(or Go to Tools > Web Developer > Network).
  2. Now try to reproduce the task you were trying to do.
  3. Right-click on the loaded results.
  4. Select Save all as har.

2.3. Windows - Fiddler

  1. Open Fiddler, open the Tools menu, select Options.
  2. Select the HTTPS tab, check Capture HTTPS Connects.
  3. Select the Connections tab, check Decrypt HTTPS traffic.
  4. Now try to reproduce the task you were trying to do.
  5. export to HAR format - please select HTTPArchive as the export method.

2.4. IOS - Stream

  1. Open Stream.
  2. Before capture the HTTPS request, you need to install the CA certificate, setting > General > About > Certificate Trust Settings to trust the CA certificate.
  3. Click the start packet capture button, the phone will automatically pop up the VPN configuration window, and then select Allow.
  4. Now try to reproduce the task you were trying to do.
  5. On the app page, click Stop Capture to end this capture.
  6. export the HAR file.

3. Community HAR

  1. Click the Community Template button to the right of my template.
  2. Update the repository to get the latest HAR file list.
  3. Select the HAR file you want to use and click the Subscribe button to subscribe to the template.
  4. Modify the template according to your needs.
  5. Then jump to step 5 of 3. Edit the template to continue editing.

Upload the HAR file

  1. Access and login to QD framework.
  2. Click the + button to the right of my template.
  3. Upload the HAR file you just saved.
  4. Click upload to continue.

Edit the template

  1. Replace the username, password, cookie, header and other parts that change according to the user with a template similar to {{ username }}. (templates support jinja2 syntax)
  2. Use the test panel in request editing to test whether the template is returned correctly, use the correct and wrong user names to test。
  3. Fill in success/failure assertion, which helps to detect sign-in failures and template failures.
  4. When some data from the previous request is needed in the request, variable extraction is used to extract the data through regularization and save it in the environment variable. Use ab(\\w+)cd, the group selector, to select part of it.
  5. Use __log__ to extract task logs.
  6. When all request edits are complete, use Test next to the Download button to test the overall.
  7. The template being edited will be automatically saved in the browser cache, so don't worry about losing it.
  8. Click the Save button to save the template.
  9. Click the Download button to download the template.

Create scheduled task

  1. Click the + button to the right of my task.
  2. Select the template you just created.
  3. Fill in the task variables, task interval, task group and task execution time.
  4. Click the Test button to test the task.
  5. Click the Save button to save the task.
',21),d=[c];function s(h,n,u,p,m,f){return a(),i("div",null,d)}const _=o(r,[["render",s]]);export{k as __pageData,_ as default}; diff --git a/assets/guide_how-to-use.md.e0635a4e.lean.js b/assets/guide_how-to-use.md.4ee6e35b.lean.js similarity index 85% rename from assets/guide_how-to-use.md.e0635a4e.lean.js rename to assets/guide_how-to-use.md.4ee6e35b.lean.js index fe1bd955f3b..1a490069d1f 100644 --- a/assets/guide_how-to-use.md.e0635a4e.lean.js +++ b/assets/guide_how-to-use.md.4ee6e35b.lean.js @@ -1 +1 @@ -import{_ as e,a as t}from"./chunks/save_har.00ab98ce.js";import{_ as o,o as a,c as i,V as l}from"./chunks/framework.40f7bea3.js";const k=JSON.parse('{"title":"How to Use?","description":"","frontmatter":{},"headers":[],"relativePath":"guide/how-to-use.md","filePath":"guide/how-to-use.md"}'),r={name:"guide/how-to-use.md"},c=l("",21),d=[c];function s(h,n,u,p,m,f){return a(),i("div",null,d)}const _=o(r,[["render",s]]);export{k as __pageData,_ as default}; +import{_ as e,a as t}from"./chunks/save_har.00ab98ce.js";import{_ as o,o as a,c as i,V as l}from"./chunks/framework.e7f80142.js";const k=JSON.parse('{"title":"How to Use?","description":"","frontmatter":{},"headers":[],"relativePath":"guide/how-to-use.md","filePath":"guide/how-to-use.md"}'),r={name:"guide/how-to-use.md"},c=l("",21),d=[c];function s(h,n,u,p,m,f){return a(),i("div",null,d)}const _=o(r,[["render",s]]);export{k as __pageData,_ as default}; diff --git a/assets/guide_update.md.8c16e2ac.js b/assets/guide_update.md.b3da2bcd.js similarity index 97% rename from assets/guide_update.md.8c16e2ac.js rename to assets/guide_update.md.b3da2bcd.js index 5af46b771d0..5e464d8d644 100644 --- a/assets/guide_update.md.8c16e2ac.js +++ b/assets/guide_update.md.b3da2bcd.js @@ -1,4 +1,4 @@ -import{_ as s,o as a,c as e,V as o}from"./chunks/framework.40f7bea3.js";const u=JSON.parse('{"title":"Update","description":"","frontmatter":{},"headers":[],"relativePath":"guide/update.md","filePath":"guide/update.md"}'),t={name:"guide/update.md"},n=o(`

Update

Please always remember to back up your database before updating or redeploying.

After the update, please restart the container or clear the browser cache.

Source Code Deployment Update

sh
# First cd to the directory of source code, execute the command and restart the process
+import{_ as s,o as a,c as e,V as o}from"./chunks/framework.e7f80142.js";const u=JSON.parse('{"title":"Update","description":"","frontmatter":{},"headers":[],"relativePath":"guide/update.md","filePath":"guide/update.md"}'),t={name:"guide/update.md"},n=o(`

Update

Please always remember to back up your database before updating or redeploying.

After the update, please restart the container or clear the browser cache.

Source Code Deployment Update

sh
# First cd to the directory of source code, execute the command and restart the process
 wget https://gitee.com/qd-today/qd/raw/master/update.sh -O ./update.sh && \\
 sh ./update.sh

Docker Compose Deployment Update

sh
# First cd to the directory of docker-compose.yml, execute the command and restart the container
 docker compose pull && \\
diff --git a/assets/guide_update.md.8c16e2ac.lean.js b/assets/guide_update.md.b3da2bcd.lean.js
similarity index 66%
rename from assets/guide_update.md.8c16e2ac.lean.js
rename to assets/guide_update.md.b3da2bcd.lean.js
index b213092461b..ced8ed77ec7 100644
--- a/assets/guide_update.md.8c16e2ac.lean.js
+++ b/assets/guide_update.md.b3da2bcd.lean.js
@@ -1 +1 @@
-import{_ as s,o as a,c as e,V as o}from"./chunks/framework.40f7bea3.js";const u=JSON.parse('{"title":"Update","description":"","frontmatter":{},"headers":[],"relativePath":"guide/update.md","filePath":"guide/update.md"}'),t={name:"guide/update.md"},n=o("",10),p=[n];function l(c,r,d,i,y,C){return a(),e("div",null,p)}const m=s(t,[["render",l]]);export{u as __pageData,m as default};
+import{_ as s,o as a,c as e,V as o}from"./chunks/framework.e7f80142.js";const u=JSON.parse('{"title":"Update","description":"","frontmatter":{},"headers":[],"relativePath":"guide/update.md","filePath":"guide/update.md"}'),t={name:"guide/update.md"},n=o("",10),p=[n];function l(c,r,d,i,y,C){return a(),e("div",null,p)}const m=s(t,[["render",l]]);export{u as __pageData,m as default};
diff --git a/assets/guide_what-is-qd.md.b0c3a9c1.js b/assets/guide_what-is-qd.md.914769b2.js
similarity index 94%
rename from assets/guide_what-is-qd.md.b0c3a9c1.js
rename to assets/guide_what-is-qd.md.914769b2.js
index 941ac45a30e..2d925058146 100644
--- a/assets/guide_what-is-qd.md.b0c3a9c1.js
+++ b/assets/guide_what-is-qd.md.914769b2.js
@@ -1 +1 @@
-import{_ as e,o as a,c as t,V as o}from"./chunks/framework.40f7bea3.js";const m=JSON.parse('{"title":"What is QD?","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is-qd.md","filePath":"guide/what-is-qd.md"}'),r={name:"guide/what-is-qd.md"},s=o('

What is QD?

QD is a web framework for HTTP timed task automation base on HAR Editor and Tornado Server.

Features

  • Har-based: By simply uploading Har obtained through packet capture, you can create HTTP task template required by the framework.
  • Tornado Server: Use Tornado as a server to asynchronously respond to front-end and initiate HTTP requests.
  • API & Plugin Support: Various APIs and filters are built in for template creation, and custom plugins will be provided later.
  • Open source: QD is an open source project based on the MIT license.

How to deploy

Please refer: Deployment

How to use

Please refer: How to use

How to Update

Please refer: Update

Discussion

',12),i=[s];function n(d,l,h,u,c,p){return a(),t("div",null,i)}const _=e(r,[["render",n]]);export{m as __pageData,_ as default}; +import{_ as e,o as a,c as t,V as o}from"./chunks/framework.e7f80142.js";const m=JSON.parse('{"title":"What is QD?","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is-qd.md","filePath":"guide/what-is-qd.md"}'),r={name:"guide/what-is-qd.md"},s=o('

What is QD?

QD is a web framework for HTTP timed task automation base on HAR Editor and Tornado Server.

Features

  • Har-based: By simply uploading Har obtained through packet capture, you can create HTTP task template required by the framework.
  • Tornado Server: Use Tornado as a server to asynchronously respond to front-end and initiate HTTP requests.
  • API & Plugin Support: Various APIs and filters are built in for template creation, and custom plugins will be provided later.
  • Open source: QD is an open source project based on the MIT license.

How to deploy

Please refer: Deployment

How to use

Please refer: How to use

How to Update

Please refer: Update

Discussion

',12),i=[s];function n(d,l,h,u,c,p){return a(),t("div",null,i)}const _=e(r,[["render",n]]);export{m as __pageData,_ as default}; diff --git a/assets/guide_what-is-qd.md.b0c3a9c1.lean.js b/assets/guide_what-is-qd.md.914769b2.lean.js similarity index 68% rename from assets/guide_what-is-qd.md.b0c3a9c1.lean.js rename to assets/guide_what-is-qd.md.914769b2.lean.js index 69fad166580..b66ac105eec 100644 --- a/assets/guide_what-is-qd.md.b0c3a9c1.lean.js +++ b/assets/guide_what-is-qd.md.914769b2.lean.js @@ -1 +1 @@ -import{_ as e,o as a,c as t,V as o}from"./chunks/framework.40f7bea3.js";const m=JSON.parse('{"title":"What is QD?","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is-qd.md","filePath":"guide/what-is-qd.md"}'),r={name:"guide/what-is-qd.md"},s=o("",12),i=[s];function n(d,l,h,u,c,p){return a(),t("div",null,i)}const _=e(r,[["render",n]]);export{m as __pageData,_ as default}; +import{_ as e,o as a,c as t,V as o}from"./chunks/framework.e7f80142.js";const m=JSON.parse('{"title":"What is QD?","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is-qd.md","filePath":"guide/what-is-qd.md"}'),r={name:"guide/what-is-qd.md"},s=o("",12),i=[s];function n(d,l,h,u,c,p){return a(),t("div",null,i)}const _=e(r,[["render",n]]);export{m as __pageData,_ as default}; diff --git a/assets/index.md.db5d86dc.js b/assets/index.md.4f08d380.js similarity index 94% rename from assets/index.md.db5d86dc.js rename to assets/index.md.4f08d380.js index 29286455cb5..5f6fa02bf3b 100644 --- a/assets/index.md.db5d86dc.js +++ b/assets/index.md.4f08d380.js @@ -1 +1 @@ -import{_ as e,o as t,c as a}from"./chunks/framework.40f7bea3.js";const p=JSON.parse('{"title":"HTTP task automation framework","description":"","frontmatter":{"layout":"home","title":"HTTP task automation framework","hero":{"name":"QD","text":"A web framework for HTTP timed task automation.","tagline":"","image":{"src":"/logo.png","alt":"QD"},"actions":[{"theme":"brand","text":"Get Started","link":"/guide/what-is-qd"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/qd-today/qd"}]},"features":[{"title":"Har-based","details":"By simply uploading Har obtained through packet capture, you can create HTTP task template required by the framework."},{"title":"Tornado Server","details":"Use Tornado as a server to asynchronously respond to front-end and initiate HTTP requests."},{"title":"API & Plugin Support","details":"Various APIs and filters are built in for template creation, and custom plugins will be provided later."},{"title":"Open source","details":"QD is an open source project based on the MIT license."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),o={name:"index.md"};function r(i,n,s,d,l,c){return t(),a("div")}const u=e(o,[["render",r]]);export{p as __pageData,u as default}; +import{_ as e,o as t,c as a}from"./chunks/framework.e7f80142.js";const p=JSON.parse('{"title":"HTTP task automation framework","description":"","frontmatter":{"layout":"home","title":"HTTP task automation framework","hero":{"name":"QD","text":"A web framework for HTTP timed task automation.","tagline":"","image":{"src":"/logo.png","alt":"QD"},"actions":[{"theme":"brand","text":"Get Started","link":"/guide/what-is-qd"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/qd-today/qd"}]},"features":[{"title":"Har-based","details":"By simply uploading Har obtained through packet capture, you can create HTTP task template required by the framework."},{"title":"Tornado Server","details":"Use Tornado as a server to asynchronously respond to front-end and initiate HTTP requests."},{"title":"API & Plugin Support","details":"Various APIs and filters are built in for template creation, and custom plugins will be provided later."},{"title":"Open source","details":"QD is an open source project based on the MIT license."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),o={name:"index.md"};function r(i,n,s,d,l,c){return t(),a("div")}const u=e(o,[["render",r]]);export{p as __pageData,u as default}; diff --git a/assets/index.md.db5d86dc.lean.js b/assets/index.md.4f08d380.lean.js similarity index 94% rename from assets/index.md.db5d86dc.lean.js rename to assets/index.md.4f08d380.lean.js index 29286455cb5..5f6fa02bf3b 100644 --- a/assets/index.md.db5d86dc.lean.js +++ b/assets/index.md.4f08d380.lean.js @@ -1 +1 @@ -import{_ as e,o as t,c as a}from"./chunks/framework.40f7bea3.js";const p=JSON.parse('{"title":"HTTP task automation framework","description":"","frontmatter":{"layout":"home","title":"HTTP task automation framework","hero":{"name":"QD","text":"A web framework for HTTP timed task automation.","tagline":"","image":{"src":"/logo.png","alt":"QD"},"actions":[{"theme":"brand","text":"Get Started","link":"/guide/what-is-qd"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/qd-today/qd"}]},"features":[{"title":"Har-based","details":"By simply uploading Har obtained through packet capture, you can create HTTP task template required by the framework."},{"title":"Tornado Server","details":"Use Tornado as a server to asynchronously respond to front-end and initiate HTTP requests."},{"title":"API & Plugin Support","details":"Various APIs and filters are built in for template creation, and custom plugins will be provided later."},{"title":"Open source","details":"QD is an open source project based on the MIT license."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),o={name:"index.md"};function r(i,n,s,d,l,c){return t(),a("div")}const u=e(o,[["render",r]]);export{p as __pageData,u as default}; +import{_ as e,o as t,c as a}from"./chunks/framework.e7f80142.js";const p=JSON.parse('{"title":"HTTP task automation framework","description":"","frontmatter":{"layout":"home","title":"HTTP task automation framework","hero":{"name":"QD","text":"A web framework for HTTP timed task automation.","tagline":"","image":{"src":"/logo.png","alt":"QD"},"actions":[{"theme":"brand","text":"Get Started","link":"/guide/what-is-qd"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/qd-today/qd"}]},"features":[{"title":"Har-based","details":"By simply uploading Har obtained through packet capture, you can create HTTP task template required by the framework."},{"title":"Tornado Server","details":"Use Tornado as a server to asynchronously respond to front-end and initiate HTTP requests."},{"title":"API & Plugin Support","details":"Various APIs and filters are built in for template creation, and custom plugins will be provided later."},{"title":"Open source","details":"QD is an open source project based on the MIT license."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),o={name:"index.md"};function r(i,n,s,d,l,c){return t(),a("div")}const u=e(o,[["render",r]]);export{p as __pageData,u as default}; diff --git a/assets/style.1195983e.css b/assets/style.1195983e.css deleted file mode 100644 index 2a8ee661e3e..00000000000 --- a/assets/style.1195983e.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-cyrillic.5f2c6c8c.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-cyrillic-ext.e75737ce.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-greek.d5a6d92a.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-greek-ext.ab0619bc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-latin.2ed14f66.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-latin-ext.0030eebd.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-vietnamese.14ce25a6.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-cyrillic.ea42a392.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-greek.8f4463c4.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-greek-ext.4fbe9427.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-latin.bd3b6f56.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-latin-ext.bd8920cc.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-vietnamese.6ce511fb.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-gray: #8e8e93;--vp-c-text-light-1: rgba(60, 60, 67);--vp-c-text-light-2: rgba(60, 60, 67, .75);--vp-c-text-light-3: rgba(60, 60, 67, .33);--vp-c-text-dark-1: rgba(255, 255, 245, .86);--vp-c-text-dark-2: rgba(235, 235, 245, .6);--vp-c-text-dark-3: rgba(235, 235, 245, .38);--vp-c-green: #10b981;--vp-c-green-light: #34d399;--vp-c-green-lighter: #6ee7b7;--vp-c-green-dark: #059669;--vp-c-green-darker: #047857;--vp-c-green-dimm-1: rgba(16, 185, 129, .05);--vp-c-green-dimm-2: rgba(16, 185, 129, .2);--vp-c-green-dimm-3: rgba(16, 185, 129, .5);--vp-c-yellow: #d97706;--vp-c-yellow-light: #f59e0b;--vp-c-yellow-lighter: #fbbf24;--vp-c-yellow-dark: #b45309;--vp-c-yellow-darker: #92400e;--vp-c-yellow-dimm-1: rgba(234, 179, 8, .05);--vp-c-yellow-dimm-2: rgba(234, 179, 8, .2);--vp-c-yellow-dimm-3: rgba(234, 179, 8, .5);--vp-c-red: #f43f5e;--vp-c-red-light: #fb7185;--vp-c-red-lighter: #fda4af;--vp-c-red-dark: #e11d48;--vp-c-red-darker: #be123c;--vp-c-red-dimm-1: rgba(244, 63, 94, .05);--vp-c-red-dimm-2: rgba(244, 63, 94, .2);--vp-c-red-dimm-3: rgba(244, 63, 94, .5);--vp-c-sponsor: #db2777}:root{--vp-c-bg: #ffffff;--vp-c-bg-elv: #ffffff;--vp-c-bg-elv-up: #ffffff;--vp-c-bg-elv-down: #f6f6f7;--vp-c-bg-elv-mute: #f6f6f7;--vp-c-bg-soft: #f6f6f7;--vp-c-bg-soft-up: #f9f9fa;--vp-c-bg-soft-down: #e3e3e5;--vp-c-bg-soft-mute: #e3e3e5;--vp-c-bg-alt: #f6f6f7;--vp-c-border: rgba(60, 60, 67, .29);--vp-c-divider: rgba(60, 60, 67, .12);--vp-c-gutter: rgba(60, 60, 67, .12);--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white);--vp-c-text-1: var(--vp-c-text-light-1);--vp-c-text-2: var(--vp-c-text-light-2);--vp-c-text-3: var(--vp-c-text-light-3);--vp-c-text-inverse-1: var(--vp-c-text-dark-1);--vp-c-text-inverse-2: var(--vp-c-text-dark-2);--vp-c-text-inverse-3: var(--vp-c-text-dark-3);--vp-c-text-code: #476582;--vp-c-brand: var(--vp-c-green);--vp-c-brand-light: var(--vp-c-green-light);--vp-c-brand-lighter: var(--vp-c-green-lighter);--vp-c-brand-dark: var(--vp-c-green-dark);--vp-c-brand-darker: var(--vp-c-green-darker);--vp-c-mute: #f6f6f7;--vp-c-mute-light: #f9f9fc;--vp-c-mute-lighter: #ffffff;--vp-c-mute-dark: #e3e3e5;--vp-c-mute-darker: #d7d7d9}.dark{--vp-c-bg: #1e1e20;--vp-c-bg-elv: #252529;--vp-c-bg-elv-up: #313136;--vp-c-bg-elv-down: #1e1e20;--vp-c-bg-elv-mute: #313136;--vp-c-bg-soft: #252529;--vp-c-bg-soft-up: #313136;--vp-c-bg-soft-down: #1e1e20;--vp-c-bg-soft-mute: #313136;--vp-c-bg-alt: #161618;--vp-c-border: rgba(82, 82, 89, .68);--vp-c-divider: rgba(82, 82, 89, .32);--vp-c-gutter: #000000;--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black);--vp-c-text-1: var(--vp-c-text-dark-1);--vp-c-text-2: var(--vp-c-text-dark-2);--vp-c-text-3: var(--vp-c-text-dark-3);--vp-c-text-inverse-1: var(--vp-c-text-light-1);--vp-c-text-inverse-2: var(--vp-c-text-light-2);--vp-c-text-inverse-3: var(--vp-c-text-light-3);--vp-c-text-code: #c9def1;--vp-c-mute: #313136;--vp-c-mute-light: #3a3a3c;--vp-c-mute-lighter: #505053;--vp-c-mute-dark: #2c2c30;--vp-c-mute-darker: #252529}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-local-nav: 10;--vp-z-index-nav: 20;--vp-z-index-layout-top: 30;--vp-z-index-backdrop: 40;--vp-z-index-sidebar: 50;--vp-z-index-footer: 60}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-c-code-dimm: var(--vp-c-text-dark-3);--vp-code-block-color: var(--vp-c-text-dark-1);--vp-code-block-bg: #292b30;--vp-code-block-bg-light: #1e1e20;--vp-code-block-divider-color: #000000;--vp-code-line-highlight-color: rgba(0, 0, 0, .5);--vp-code-line-number-color: var(--vp-c-code-dimm);--vp-code-line-diff-add-color: var(--vp-c-green-dimm-2);--vp-code-line-diff-add-symbol-color: var(--vp-c-green);--vp-code-line-diff-remove-color: var(--vp-c-red-dimm-2);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red);--vp-code-line-warning-color: var(--vp-c-yellow-dimm-2);--vp-code-line-error-color: var(--vp-c-red-dimm-2);--vp-code-copy-code-border-color: transparent;--vp-code-copy-code-bg: var(--vp-code-block-bg-light);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-code-block-bg-light);--vp-code-copy-code-active-text: var(--vp-c-text-dark-2);--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-dark-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-dark-1);--vp-code-tab-active-text-color: var(--vp-c-text-dark-1);--vp-code-tab-active-bar-color: var(--vp-c-brand)}.dark{--vp-code-block-bg: #161618}:root:not(.dark) .vp-adaptive-theme{--vp-c-code-dimm: var(--vp-c-text-2);--vp-code-block-color: var(--vp-c-text-1);--vp-code-block-bg: #f8f8f8;--vp-code-block-divider-color: var(--vp-c-divider);--vp-code-line-highlight-color: #ececec;--vp-code-line-number-color: var(--vp-c-code-dimm);--vp-code-copy-code-bg: #e2e2e2;--vp-code-copy-code-hover-bg: #dcdcdc;--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-tab-divider: var(--vp-c-divider);--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)}:root{--vp-button-brand-border: var(--vp-c-brand-lighter);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-lighter);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-dark);--vp-button-brand-active-border: var(--vp-c-brand-lighter);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-darker);--vp-button-alt-border: var(--vp-c-border);--vp-button-alt-text: var(--vp-c-neutral);--vp-button-alt-bg: var(--vp-c-mute);--vp-button-alt-hover-border: var(--vp-c-border);--vp-button-alt-hover-text: var(--vp-c-neutral);--vp-button-alt-hover-bg: var(--vp-c-mute-dark);--vp-button-alt-active-border: var(--vp-c-border);--vp-button-alt-active-text: var(--vp-c-neutral);--vp-button-alt-active-bg: var(--vp-c-mute-darker);--vp-button-sponsor-border: var(--vp-c-gray-light-3);--vp-button-sponsor-text: var(--vp-c-text-light-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}.dark{--vp-button-sponsor-border: var(--vp-c-gray-dark-1);--vp-button-sponsor-text: var(--vp-c-text-dark-2)}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: var(--vp-c-border);--vp-custom-block-info-text: var(--vp-c-text-2);--vp-custom-block-info-bg: var(--vp-c-bg-soft-up);--vp-custom-block-info-code-bg: var(--vp-c-bg-soft);--vp-custom-block-tip-border: var(--vp-c-green);--vp-custom-block-tip-text: var(--vp-c-green-dark);--vp-custom-block-tip-bg: var(--vp-c-bg-soft-up);--vp-custom-block-tip-code-bg: var(--vp-c-bg-soft);--vp-custom-block-warning-border: var(--vp-c-yellow);--vp-custom-block-warning-text: var(--vp-c-yellow);--vp-custom-block-warning-bg: var(--vp-c-bg-soft-up);--vp-custom-block-warning-code-bg: var(--vp-c-bg-soft);--vp-custom-block-danger-border: var(--vp-c-red);--vp-custom-block-danger-text: var(--vp-c-red);--vp-custom-block-danger-bg: var(--vp-c-bg-soft-up);--vp-custom-block-danger-code-bg: var(--vp-c-bg-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-details-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-hover-border-color: var(--vp-c-gray);--vp-input-switch-bg-color: var(--vp-c-mute)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg)}: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);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: var(--vp-c-border);--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-bg-soft-up);--vp-badge-tip-border: var(--vp-c-green-dark);--vp-badge-tip-text: var(--vp-c-green);--vp-badge-tip-bg: var(--vp-c-green-dimm-1);--vp-badge-warning-border: var(--vp-c-yellow-dark);--vp-badge-warning-text: var(--vp-c-yellow);--vp-badge-warning-bg: var(--vp-c-yellow-dimm-1);--vp-badge-danger-border: var(--vp-c-red-dark);--vp-badge-danger-text: var(--vp-c-red);--vp-badge-danger-bg: var(--vp-c-red-dimm-1)}: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);--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);--vp-local-search-highlight-bg: var(--vp-c-green-lighter);--vp-local-search-highlight-text: var(--vp-c-black)}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);direction:ltr;font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}.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.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning 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 code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600}.custom-block a:hover{text-decoration:underline}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.dark .vp-code-light{display:none}html:not(.dark) .vp-code-dark{display:none}.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}.vp-code-group .tabs:after{position:absolute;right:0;bottom:0;left:0;height:1px;background-color:var(--vp-code-tab-divider);content:""}@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:absolute;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:10;height:1px;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-]{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{display:block}.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{float:left;margin-left:-.87em;padding-right:.23em;font-weight:500;user-select:none;opacity:0;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 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);text-decoration-style:dotted;transition:color .25s}.vp-doc a:hover{text-decoration:underline}.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{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 a{color:inherit;font-weight:600}.vp-doc .custom-block a:hover{text-decoration:underline}.vp-doc .custom-block code{font-size:var(--vp-custom-block-code-font-size);font-weight:700;color:inherit}.vp-doc .custom-block div[class*=language-]{margin:8px 0}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;color:var(--vp-c-text-code);background-color:var(--vp-c-mute);transition:color .5s,background-color .5s}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc a>code{color:var(--vp-c-brand);transition:color .25s}.vp-doc a:hover>code{color:var(--vp-c-brand-dark)}.vp-doc div[class*=language-]{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-]{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;left:-65px;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;width:64px;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:"Copied"}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-c-code-dimm);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}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-bg-soft-down)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge[data-v-044fa993]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:10px;padding:0 8px;line-height:18px;font-size:12px;font-weight:600;transform:translateY(-2px)}h1 .VPBadge[data-v-044fa993],h2 .VPBadge[data-v-044fa993],h3 .VPBadge[data-v-044fa993],h4 .VPBadge[data-v-044fa993],h5 .VPBadge[data-v-044fa993],h6 .VPBadge[data-v-044fa993]{vertical-align:top}h2 .VPBadge[data-v-044fa993]{border-radius:11px;line-height:20px}.VPBadge.info[data-v-044fa993]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-044fa993]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-044fa993]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-044fa993]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPSkipLink[data-v-4f4daff3]{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);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-4f4daff3]:focus{height:auto;width:auto;clip:auto;clip-path:none}.dark .VPSkipLink[data-v-4f4daff3]{color:var(--vp-c-green)}@media (min-width: 1280px){.VPSkipLink[data-v-4f4daff3]{top:14px;left:16px}}.VPBackdrop[data-v-75c4fc4e]{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-75c4fc4e],.VPBackdrop.fade-leave-to[data-v-75c4fc4e]{opacity:0}.VPBackdrop.fade-leave-active[data-v-75c4fc4e]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-75c4fc4e]{display:none}}html:not(.dark) .VPImage.dark[data-v-03ae545e]{display:none}.dark .VPImage.light[data-v-03ae545e]{display:none}.title[data-v-479975b4]{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-479975b4]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-479975b4]{border-bottom-color:var(--vp-c-divider)}}[data-v-479975b4] .logo{margin-right:8px;height:24px}/*! @docsearch/css 3.4.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-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{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{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;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;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;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{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{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;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{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;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.DocSearch{--docsearch-primary-color: var(--vp-c-brand);--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-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 .DocSearch{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-bg-soft-mute);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand);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:1px;letter-spacing:-12px;color:transparent}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:var(--vp-meta-key);font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-bg-soft-mute)}.DocSearch-Screen-Icon>svg{margin:auto}.icon[data-v-80210a1c]{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;fill:var(--vp-c-text-3);transition:fill .25s;flex-shrink:0}.VPNavBarMenuLink[data-v-29ac4bcf]{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-29ac4bcf],.VPNavBarMenuLink[data-v-29ac4bcf]:hover{color:var(--vp-c-brand)}.VPMenuGroup+.VPMenuLink[data-v-beebb861]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-beebb861]{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-beebb861]:hover{color:var(--vp-c-brand);background-color:var(--vp-c-bg-elv-mute)}.link.active[data-v-beebb861]{color:var(--vp-c-brand)}.VPMenuGroup[data-v-077ef54e]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-077ef54e]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-077ef54e]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-077ef54e]{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-e2937110]{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-e2937110] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e2937110] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e2937110] .group:last-child{padding-bottom:0}.VPMenu[data-v-e2937110] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e2937110] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e2937110] .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-e2937110] .action{padding-left:24px}.VPFlyout[data-v-b66d14d8]{position:relative}.VPFlyout[data-v-b66d14d8]:hover{color:var(--vp-c-brand);transition:color .25s}.VPFlyout:hover .text[data-v-b66d14d8]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-b66d14d8]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-b66d14d8]{color:var(--vp-c-brand)}.VPFlyout.active:hover .text[data-v-b66d14d8]{color:var(--vp-c-brand-dark)}.VPFlyout:hover .menu[data-v-b66d14d8],.button[aria-expanded=true]+.menu[data-v-b66d14d8]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-b66d14d8]{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-b66d14d8]{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-b66d14d8]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-b66d14d8]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-b66d14d8]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-b66d14d8]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPNavBarMenu[data-v-3f1abc46]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-3f1abc46]{display:flex}}.VPNavBarTranslations[data-v-0ae6bd23]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-0ae6bd23]{display:flex;align-items:center}}.title[data-v-0ae6bd23]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPSwitch[data-v-8e3ebceb]{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}.VPSwitch[data-v-8e3ebceb]:hover{border-color:var(--vp-input-hover-border-color)}.check[data-v-8e3ebceb]{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}.icon[data-v-8e3ebceb]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-8e3ebceb] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-8e3ebceb] svg{fill:var(--vp-c-text-1);transition:opacity .25s}.sun[data-v-87a3f9df]{opacity:1}.moon[data-v-87a3f9df],.dark .sun[data-v-87a3f9df]{opacity:0}.dark .moon[data-v-87a3f9df]{opacity:1}.dark .VPSwitchAppearance[data-v-87a3f9df] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-ce40e2f5]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-ce40e2f5]{display:flex;align-items:center}}.VPSocialLink[data-v-accd342a]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-accd342a]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-accd342a]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-982d0472]{display:flex;justify-content:center}.VPNavBarSocialLinks[data-v-05480c65]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-05480c65]{display:flex;align-items:center}}.VPNavBarExtra[data-v-6cca01bc]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-6cca01bc]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-6cca01bc]{display:none}}.trans-title[data-v-6cca01bc]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-6cca01bc],.item.social-links[data-v-6cca01bc]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-6cca01bc]{min-width:176px}.appearance-action[data-v-6cca01bc]{margin-right:-2px}.social-links-list[data-v-6cca01bc]{margin:-4px -8px}.VPNavBarHamburger[data-v-1ca05e91]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-1ca05e91]{display:none}}.container[data-v-1ca05e91]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-1ca05e91]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-1ca05e91]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-1ca05e91]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-1ca05e91]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-1ca05e91]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-1ca05e91]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-1ca05e91],.VPNavBarHamburger.active:hover .middle[data-v-1ca05e91],.VPNavBarHamburger.active:hover .bottom[data-v-1ca05e91]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-1ca05e91],.middle[data-v-1ca05e91],.bottom[data-v-1ca05e91]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-1ca05e91]{top:0;left:0;transform:translate(0)}.middle[data-v-1ca05e91]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-1ca05e91]{top:12px;left:0;transform:translate(4px)}.VPNavBar[data-v-20d23dc4]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);transition:border-color .5s,background-color .5s;pointer-events:none;white-space:nowrap}.VPNavBar.has-sidebar[data-v-20d23dc4]{border-bottom-color:var(--vp-c-gutter)}@media (min-width: 768px){.VPNavBar[data-v-20d23dc4]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-20d23dc4]{border-bottom-color:transparent;padding:0}.VPNavBar.fill[data-v-20d23dc4]:not(.has-sidebar){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-20d23dc4]{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-20d23dc4],.container>.content[data-v-20d23dc4]{pointer-events:none}.container[data-v-20d23dc4] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-20d23dc4]{max-width:100%}}.title[data-v-20d23dc4]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-20d23dc4]{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-20d23dc4]{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-20d23dc4]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-20d23dc4]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-20d23dc4]{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-20d23dc4]{display:flex;justify-content:flex-end;align-items:center;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .content-body[data-v-20d23dc4],.VPNavBar.fill .content-body[data-v-20d23dc4]{position:relative;background-color:var(--vp-nav-bg-color)}}@media (max-width: 768px){.content-body[data-v-20d23dc4]{column-gap:.5rem}}.menu+.translations[data-v-20d23dc4]:before,.menu+.appearance[data-v-20d23dc4]:before,.menu+.social-links[data-v-20d23dc4]:before,.translations+.appearance[data-v-20d23dc4]:before,.appearance+.social-links[data-v-20d23dc4]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-20d23dc4]:before,.translations+.appearance[data-v-20d23dc4]:before{margin-right:16px}.appearance+.social-links[data-v-20d23dc4]:before{margin-left:16px}.social-links[data-v-20d23dc4]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-20d23dc4]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-20d23dc4]:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}@media (min-width: 1440px){.VPNavBar.has-sidebar .curtain[data-v-20d23dc4]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenMenuLink[data-v-215dfcb1]{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-215dfcb1]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupLink[data-v-74f4e386]{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-74f4e386]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupSection[data-v-df5ed48a]{display:block}.title[data-v-df5ed48a]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-067e974b]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-067e974b]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-067e974b]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-067e974b]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-067e974b]{padding-bottom:6px;color:var(--vp-c-brand)}.VPNavScreenMenuGroup.open .button-icon[data-v-067e974b]{transform:rotate(45deg)}.button[data-v-067e974b]{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-067e974b]:hover{color:var(--vp-c-brand)}.button-icon[data-v-067e974b]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-067e974b]:first-child{padding-top:0}.group+.group[data-v-067e974b],.group+.item[data-v-067e974b]{padding-top:4px}.VPNavScreenAppearance[data-v-e1f00096]{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-e1f00096]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenTranslations[data-v-f11b6c31]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-f11b6c31]{height:auto}.title[data-v-f11b6c31]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-f11b6c31]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-f11b6c31]{margin-right:8px}.icon.chevron[data-v-f11b6c31]{margin-left:4px}.list[data-v-f11b6c31]{padding:4px 0 0 24px}.link[data-v-f11b6c31]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-8d872d58]{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-8d872d58],.VPNavScreen.fade-leave-active[data-v-8d872d58]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-8d872d58],.VPNavScreen.fade-leave-active .container[data-v-8d872d58]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-8d872d58],.VPNavScreen.fade-leave-to[data-v-8d872d58]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-8d872d58],.VPNavScreen.fade-leave-to .container[data-v-8d872d58]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-8d872d58]{display:none}}.container[data-v-8d872d58]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-8d872d58],.menu+.appearance[data-v-8d872d58],.translations+.appearance[data-v-8d872d58]{margin-top:24px}.menu+.social-links[data-v-8d872d58]{margin-top:16px}.appearance+.social-links[data-v-8d872d58]{margin-top:16px}.VPNav[data-v-1289c0d4]{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-1289c0d4]{position:fixed}}.root[data-v-e53574c4]{position:relative;z-index:1}.nested[data-v-e53574c4]{padding-left:13px}.outline-link[data-v-e53574c4]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:500}.outline-link[data-v-e53574c4]:hover,.outline-link.active[data-v-e53574c4]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-e53574c4]{padding-left:13px}.VPLocalNavOutlineDropdown[data-v-e933c6b6]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-e933c6b6]{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-e933c6b6]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-e933c6b6]{color:var(--vp-c-text-1)}.icon[data-v-e933c6b6]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-e933c6b6] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-e933c6b6]{transform:rotate(90deg)}.items[data-v-e933c6b6]{position:absolute;left:20px;right:20px;top:64px;background-color:var(--vp-local-nav-bg-color);padding:4px 10px 16px;border:1px solid var(--vp-c-divider);border-radius:8px;max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}.top-link[data-v-e933c6b6]{display:block;color:var(--vp-c-brand);font-size:13px;font-weight:500;padding:6px 0;margin:0 13px 10px;border-bottom:1px solid var(--vp-c-divider)}.flyout-enter-active[data-v-e933c6b6]{transition:all .2s ease-out}.flyout-leave-active[data-v-e933c6b6]{transition:all .15s ease-in}.flyout-enter-from[data-v-e933c6b6],.flyout-leave-to[data-v-e933c6b6]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-186f8f7d]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;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);transition:border-color .5s,background-color .5s}@media (min-width: 960px){.VPLocalNav[data-v-186f8f7d]{display:none}}.menu[data-v-186f8f7d]{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-186f8f7d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-186f8f7d]{padding:0 32px}}.menu-icon[data-v-186f8f7d]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-186f8f7d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-186f8f7d]{padding:12px 32px 11px}}.VPSidebarItem.level-0[data-v-00f6a166]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-00f6a166]{padding-bottom:10px}.item[data-v-00f6a166]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-00f6a166]{cursor:pointer}.indicator[data-v-00f6a166]{position:absolute;top:6px;bottom:6px;left:-17px;width:1px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-00f6a166],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-00f6a166],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-00f6a166],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-00f6a166]{background-color:var(--vp-c-brand)}.link[data-v-00f6a166]{display:flex;align-items:center;flex-grow:1}.text[data-v-00f6a166]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-00f6a166]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-00f6a166],.VPSidebarItem.level-2 .text[data-v-00f6a166],.VPSidebarItem.level-3 .text[data-v-00f6a166],.VPSidebarItem.level-4 .text[data-v-00f6a166],.VPSidebarItem.level-5 .text[data-v-00f6a166]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-00f6a166],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-00f6a166],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-00f6a166],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-00f6a166],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-00f6a166],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-00f6a166]{color:var(--vp-c-brand)}.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-00f6a166],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-00f6a166],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-00f6a166],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-00f6a166],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-00f6a166],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-00f6a166]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-00f6a166],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-00f6a166],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-00f6a166],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-00f6a166],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-00f6a166],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-00f6a166]{color:var(--vp-c-brand)}.caret[data-v-00f6a166]{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}.item:hover .caret[data-v-00f6a166]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-00f6a166]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-00f6a166]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-00f6a166]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-00f6a166],.VPSidebarItem.level-2 .items[data-v-00f6a166],.VPSidebarItem.level-3 .items[data-v-00f6a166],.VPSidebarItem.level-4 .items[data-v-00f6a166],.VPSidebarItem.level-5 .items[data-v-00f6a166]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-00f6a166]{display:none}.VPSidebar[data-v-7327097d]{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-7327097d]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-7327097d]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-7327097d]{z-index:1;padding-top:var(--vp-nav-height);padding-bottom:128px;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-7327097d]{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-7327097d]{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-7327097d]{outline:0}.group+.group[data-v-7327097d]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-7327097d]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPButton[data-v-271b5919]{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-271b5919]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-271b5919]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-271b5919]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-271b5919]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-271b5919]: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-271b5919]: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-271b5919]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-271b5919]: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-271b5919]: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-271b5919]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-271b5919]: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-271b5919]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}.VPHero[data-v-8127c09e]{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-8127c09e]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-8127c09e]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-8127c09e]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-8127c09e]{flex-direction:row}}.main[data-v-8127c09e]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-8127c09e]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-8127c09e]{text-align:left}}@media (min-width: 960px){.main[data-v-8127c09e]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-8127c09e]{max-width:592px}}.name[data-v-8127c09e],.text[data-v-8127c09e]{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-8127c09e],.VPHero.has-image .text[data-v-8127c09e]{margin:0 auto}.name[data-v-8127c09e]{color:var(--vp-home-hero-name-color)}.clip[data-v-8127c09e]{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-8127c09e],.text[data-v-8127c09e]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-8127c09e],.text[data-v-8127c09e]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-8127c09e],.VPHero.has-image .text[data-v-8127c09e]{margin:0}}.tagline[data-v-8127c09e]{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-8127c09e]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-8127c09e]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-8127c09e]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-8127c09e]{margin:0}}.actions[data-v-8127c09e]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-8127c09e]{justify-content:center}@media (min-width: 640px){.actions[data-v-8127c09e]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-8127c09e]{justify-content:flex-start}}.action[data-v-8127c09e]{flex-shrink:0;padding:6px}.image[data-v-8127c09e]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-8127c09e]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-8127c09e]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-8127c09e]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-8127c09e]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-8127c09e]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-8127c09e]{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-8127c09e]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-8127c09e]{width:320px;height:320px}}[data-v-8127c09e] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-8127c09e] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-8127c09e] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a6cc149b]{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-a6cc149b]:hover{border-color:var(--vp-c-brand);background-color:var(--vp-c-bg-soft-up)}.box[data-v-a6cc149b]{display:flex;flex-direction:column;padding:24px;height:100%}.VPFeature[data-v-a6cc149b] .VPImage{width:48px;height:48px;margin-bottom:20px}.icon[data-v-a6cc149b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-bg-soft-down);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-a6cc149b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a6cc149b]{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-a6cc149b]{padding-top:8px}.link-text-value[data-v-a6cc149b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand)}.link-text-icon[data-v-a6cc149b]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-3c931ad7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-3c931ad7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-3c931ad7]{padding:0 64px}}.container[data-v-3c931ad7]{margin:0 auto;max-width:1152px}.items[data-v-3c931ad7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-3c931ad7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-3c931ad7],.item.grid-4[data-v-3c931ad7],.item.grid-6[data-v-3c931ad7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-3c931ad7],.item.grid-4[data-v-3c931ad7]{width:50%}.item.grid-3[data-v-3c931ad7],.item.grid-6[data-v-3c931ad7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-3c931ad7]{width:25%}}.VPHome[data-v-3b5f5a4f]{padding-bottom:96px}.VPHome[data-v-3b5f5a4f] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-3b5f5a4f]{padding-bottom:128px}}.VPDocAsideOutline[data-v-4e762175]{display:none}.VPDocAsideOutline.has-outline[data-v-4e762175]{display:block}.content[data-v-4e762175]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-4e762175]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:1px;height:18px;background-color:var(--vp-c-brand);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-4e762175]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-6ba3b31c]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6ba3b31c]{flex-grow:1}.VPDocAside[data-v-6ba3b31c] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6ba3b31c] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6ba3b31c] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-bb9deb16]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-bb9deb16]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-31f449a4]{margin-top:64px}.edit-info[data-v-31f449a4]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-31f449a4]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-31f449a4]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.edit-link-button[data-v-31f449a4]:hover{color:var(--vp-c-brand-dark)}.edit-link-icon[data-v-31f449a4]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-31f449a4]{border-top:1px solid var(--vp-c-divider);padding-top:24px}@media (min-width: 640px){.prev-next[data-v-31f449a4]{display:flex}}.pager.has-prev[data-v-31f449a4]{padding-top:8px}@media (min-width: 640px){.pager[data-v-31f449a4]{display:flex;flex-direction:column;flex-shrink:0;width:50%}.pager.has-prev[data-v-31f449a4]{padding-top:0;padding-left:16px}}.pager-link[data-v-31f449a4]{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-31f449a4]:hover{border-color:var(--vp-c-brand)}.pager-link.next[data-v-31f449a4]{margin-left:auto;text-align:right}.desc[data-v-31f449a4]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-31f449a4]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.VPDocOutlineDropdown[data-v-2253c216]{margin-bottom:42px}.VPDocOutlineDropdown button[data-v-2253c216]{display:block;font-size:14px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;border:1px solid var(--vp-c-border);padding:4px 12px;border-radius:8px}.VPDocOutlineDropdown button[data-v-2253c216]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-2253c216]{color:var(--vp-c-text-1)}.icon[data-v-2253c216]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-2253c216] .outline-link{font-size:13px}.open>.icon[data-v-2253c216]{transform:rotate(90deg)}.items[data-v-2253c216]{margin-top:10px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-471fe085]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-471fe085]{display:none}@media (min-width: 960px) and (max-width: 1280px){.VPDoc .VPDocOutlineDropdown[data-v-471fe085]{display:block}}@media (min-width: 768px){.VPDoc[data-v-471fe085]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-471fe085]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-471fe085]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-471fe085]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-471fe085]{display:flex;justify-content:center}.VPDoc .aside[data-v-471fe085]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-471fe085]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-471fe085]{max-width:1104px}}.container[data-v-471fe085]{margin:0 auto;width:100%}.aside[data-v-471fe085]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-471fe085]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-471fe085]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-471fe085]::-webkit-scrollbar{display:none}.aside-curtain[data-v-471fe085]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-471fe085]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-471fe085]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-471fe085]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-471fe085]{order:1;margin:0;min-width:640px}}.content-container[data-v-471fe085]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-471fe085]{max-width:688px}.NotFound[data-v-07c78639]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-07c78639]{padding:96px 32px 168px}}.code[data-v-07c78639]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-07c78639]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-07c78639]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-07c78639]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-07c78639]{padding-top:20px}.link[data-v-07c78639]{display:inline-block;border:1px solid var(--vp-c-brand);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:border-color .25s,color .25s}.link[data-v-07c78639]:hover{border-color:var(--vp-c-brand-dark);color:var(--vp-c-brand-dark)}.VPContent[data-v-344ae5c7]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-344ae5c7]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-344ae5c7]{margin:0}@media (min-width: 960px){.VPContent[data-v-344ae5c7]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-344ae5c7]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-344ae5c7]{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-74d96728]{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-74d96728]{display:none}@media (min-width: 768px){.VPFooter[data-v-74d96728]{padding:32px}}.container[data-v-74d96728]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-74d96728],.copyright[data-v-74d96728]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.message[data-v-74d96728]{order:2}.copyright[data-v-74d96728]{order:1}.Layout[data-v-487c8925]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-b319b93c]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-b319b93c]{margin:0 auto;max-width:1152px}.love[data-v-b319b93c]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-b319b93c]{width:28px;height:28px;fill:currentColor}.message[data-v-b319b93c]{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-b319b93c]{padding-top:32px}.action[data-v-b319b93c]{padding-top:40px;text-align:center}.VPTeamPage[data-v-e265c9d6]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-e265c9d6]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-e265c9d6-s],.VPTeamMembers+.VPTeamPageSection[data-v-e265c9d6-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-e265c9d6-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-e265c9d6-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-e265c9d6-s],.VPTeamMembers+.VPTeamPageSection[data-v-e265c9d6-s]{margin-top:96px}}.VPTeamMembers[data-v-e265c9d6-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-e265c9d6-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-e265c9d6-s]{padding:0 64px}}.VPTeamPageTitle[data-v-612006e2]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-612006e2]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-612006e2]{padding:80px 64px 48px}}.title[data-v-612006e2]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-612006e2]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-612006e2]{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-612006e2]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-3c95b1e4]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-3c95b1e4]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-3c95b1e4]{padding:0 64px}}.title[data-v-3c95b1e4]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-3c95b1e4]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-3c95b1e4]{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-3c95b1e4]{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-3c95b1e4]{padding-top:40px}.VPTeamMembersItem[data-v-8723004e]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-8723004e]{padding:32px}.VPTeamMembersItem.small .data[data-v-8723004e]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-8723004e]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-8723004e]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-8723004e]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-8723004e]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-8723004e]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-8723004e]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-8723004e]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-8723004e]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-8723004e]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-8723004e]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-8723004e]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-8723004e]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-8723004e]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-8723004e]{text-align:center}.avatar[data-v-8723004e]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-8723004e]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-8723004e]{margin:0;font-weight:600}.affiliation[data-v-8723004e]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-8723004e]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-8723004e]:hover{color:var(--vp-c-brand)}.desc[data-v-8723004e]{margin:0 auto}.desc[data-v-8723004e] a{font-weight:500;color:var(--vp-c-brand);text-decoration-style:dotted;transition:color .25s}.links[data-v-8723004e]{display:flex;justify-content:center;height:56px}.sp-link[data-v-8723004e]{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-8723004e]:hover,.sp .sp-link.link[data-v-8723004e]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-8723004e]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-273b4ae0]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-273b4ae0]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-273b4ae0]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-273b4ae0]{max-width:876px}.VPTeamMembers.medium .container[data-v-273b4ae0]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-273b4ae0]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-273b4ae0]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-273b4ae0]{max-width:760px}.container[data-v-273b4ae0]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.VPLocalSearchBox[data-v-1b99c187]{position:fixed;z-index:100;inset:0;display:flex}.backdrop[data-v-1b99c187]{position:absolute;inset:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-1b99c187]{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: 768px){.shell[data-v-1b99c187]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-1b99c187]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 768px){.search-bar[data-v-1b99c187]{padding:0 8px}}.search-bar[data-v-1b99c187]:focus-within{border-color:var(--vp-c-brand)}.search-icon[data-v-1b99c187]{margin:8px}@media (max-width: 768px){.search-icon[data-v-1b99c187]{display:none}}.search-input[data-v-1b99c187]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 768px){.search-input[data-v-1b99c187]{padding:6px 4px}}.search-actions[data-v-1b99c187]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-1b99c187]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-1b99c187]{display:none}}.search-actions button[data-v-1b99c187]{padding:8px}.search-actions button[data-v-1b99c187]:hover,.toggle-layout-button.detailed-list[data-v-1b99c187]{color:var(--vp-c-brand)}.search-keyboard-shortcuts[data-v-1b99c187]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-1b99c187]{display:flex;align-items:center;gap:4px}@media (max-width: 768px){.search-keyboard-shortcuts[data-v-1b99c187]{display:none}}.search-keyboard-shortcuts kbd[data-v-1b99c187]{background:rgba(128,128,128,.1);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-1b99c187]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-1b99c187]{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-1b99c187]{margin:12px;width:100%;overflow:hidden}@media (max-width: 768px){.result>div[data-v-1b99c187]{margin:8px}}.titles[data-v-1b99c187]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-1b99c187]{display:flex;align-items:center;gap:4px}.title.main[data-v-1b99c187]{font-weight:500}.title-icon[data-v-1b99c187]{opacity:.5;font-weight:500;color:var(--vp-c-brand)}.title svg[data-v-1b99c187]{opacity:.5}.result.selected[data-v-1b99c187]{--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-1b99c187]{position:relative}.excerpt[data-v-1b99c187]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-1b99c187]{opacity:1}.excerpt[data-v-1b99c187] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-1b99c187] mark,.excerpt[data-v-1b99c187] 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-1b99c187] .vp-code-group .tabs{display:none}.excerpt[data-v-1b99c187] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-1b99c187]{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-1b99c187]{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-1b99c187],.result.selected .title-icon[data-v-1b99c187]{color:var(--vp-c-brand)!important}.no-results[data-v-1b99c187]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-1b99c187]{flex:none} diff --git a/assets/style.f9c70755.css b/assets/style.f9c70755.css new file mode 100644 index 00000000000..10b7181d056 --- /dev/null +++ b/assets/style.f9c70755.css @@ -0,0 +1 @@ +@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-cyrillic.5f2c6c8c.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-cyrillic-ext.e75737ce.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-greek.d5a6d92a.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-greek-ext.ab0619bc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-latin.2ed14f66.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-latin-ext.0030eebd.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/qd/assets/inter-roman-vietnamese.14ce25a6.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-cyrillic.ea42a392.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-greek.8f4463c4.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-greek-ext.4fbe9427.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-latin.bd3b6f56.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-latin-ext.bd8920cc.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/qd/assets/inter-italic-vietnamese.6ce511fb.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-gray: #8e8e93;--vp-c-text-light-1: rgba(60, 60, 67);--vp-c-text-light-2: rgba(60, 60, 67, .75);--vp-c-text-light-3: rgba(60, 60, 67, .33);--vp-c-text-dark-1: rgba(255, 255, 245, .86);--vp-c-text-dark-2: rgba(235, 235, 245, .6);--vp-c-text-dark-3: rgba(235, 235, 245, .38);--vp-c-green: #10b981;--vp-c-green-light: #34d399;--vp-c-green-lighter: #6ee7b7;--vp-c-green-dark: #059669;--vp-c-green-darker: #047857;--vp-c-green-dimm-1: rgba(16, 185, 129, .05);--vp-c-green-dimm-2: rgba(16, 185, 129, .2);--vp-c-green-dimm-3: rgba(16, 185, 129, .5);--vp-c-yellow: #d97706;--vp-c-yellow-light: #f59e0b;--vp-c-yellow-lighter: #fbbf24;--vp-c-yellow-dark: #b45309;--vp-c-yellow-darker: #92400e;--vp-c-yellow-dimm-1: rgba(234, 179, 8, .05);--vp-c-yellow-dimm-2: rgba(234, 179, 8, .2);--vp-c-yellow-dimm-3: rgba(234, 179, 8, .5);--vp-c-red: #f43f5e;--vp-c-red-light: #fb7185;--vp-c-red-lighter: #fda4af;--vp-c-red-dark: #e11d48;--vp-c-red-darker: #be123c;--vp-c-red-dimm-1: rgba(244, 63, 94, .05);--vp-c-red-dimm-2: rgba(244, 63, 94, .2);--vp-c-red-dimm-3: rgba(244, 63, 94, .5);--vp-c-sponsor: #db2777}:root{--vp-c-bg: #ffffff;--vp-c-bg-elv: #ffffff;--vp-c-bg-elv-up: #ffffff;--vp-c-bg-elv-down: #f6f6f7;--vp-c-bg-elv-mute: #f6f6f7;--vp-c-bg-soft: #f6f6f7;--vp-c-bg-soft-up: #f9f9fa;--vp-c-bg-soft-down: #e3e3e5;--vp-c-bg-soft-mute: #e3e3e5;--vp-c-bg-alt: #f6f6f7;--vp-c-border: rgba(60, 60, 67, .29);--vp-c-divider: rgba(60, 60, 67, .12);--vp-c-gutter: rgba(60, 60, 67, .12);--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white);--vp-c-text-1: var(--vp-c-text-light-1);--vp-c-text-2: var(--vp-c-text-light-2);--vp-c-text-3: var(--vp-c-text-light-3);--vp-c-text-inverse-1: var(--vp-c-text-dark-1);--vp-c-text-inverse-2: var(--vp-c-text-dark-2);--vp-c-text-inverse-3: var(--vp-c-text-dark-3);--vp-c-text-code: #476582;--vp-c-brand: var(--vp-c-green);--vp-c-brand-light: var(--vp-c-green-light);--vp-c-brand-lighter: var(--vp-c-green-lighter);--vp-c-brand-dark: var(--vp-c-green-dark);--vp-c-brand-darker: var(--vp-c-green-darker);--vp-c-mute: #f6f6f7;--vp-c-mute-light: #f9f9fc;--vp-c-mute-lighter: #ffffff;--vp-c-mute-dark: #e3e3e5;--vp-c-mute-darker: #d7d7d9}.dark{--vp-c-bg: #1e1e20;--vp-c-bg-elv: #252529;--vp-c-bg-elv-up: #313136;--vp-c-bg-elv-down: #1e1e20;--vp-c-bg-elv-mute: #313136;--vp-c-bg-soft: #252529;--vp-c-bg-soft-up: #313136;--vp-c-bg-soft-down: #1e1e20;--vp-c-bg-soft-mute: #313136;--vp-c-bg-alt: #161618;--vp-c-border: rgba(82, 82, 89, .68);--vp-c-divider: rgba(82, 82, 89, .32);--vp-c-gutter: #000000;--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black);--vp-c-text-1: var(--vp-c-text-dark-1);--vp-c-text-2: var(--vp-c-text-dark-2);--vp-c-text-3: var(--vp-c-text-dark-3);--vp-c-text-inverse-1: var(--vp-c-text-light-1);--vp-c-text-inverse-2: var(--vp-c-text-light-2);--vp-c-text-inverse-3: var(--vp-c-text-light-3);--vp-c-text-code: #c9def1;--vp-c-mute: #313136;--vp-c-mute-light: #3a3a3c;--vp-c-mute-lighter: #505053;--vp-c-mute-dark: #2c2c30;--vp-c-mute-darker: #252529}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-local-nav: 10;--vp-z-index-nav: 20;--vp-z-index-layout-top: 30;--vp-z-index-backdrop: 40;--vp-z-index-sidebar: 50;--vp-z-index-footer: 60}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-c-code-dimm: var(--vp-c-text-dark-3);--vp-code-block-color: var(--vp-c-text-dark-1);--vp-code-block-bg: #292b30;--vp-code-block-bg-light: #1e1e20;--vp-code-block-divider-color: #000000;--vp-code-line-highlight-color: rgba(0, 0, 0, .5);--vp-code-line-number-color: var(--vp-c-code-dimm);--vp-code-line-diff-add-color: var(--vp-c-green-dimm-2);--vp-code-line-diff-add-symbol-color: var(--vp-c-green);--vp-code-line-diff-remove-color: var(--vp-c-red-dimm-2);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red);--vp-code-line-warning-color: var(--vp-c-yellow-dimm-2);--vp-code-line-error-color: var(--vp-c-red-dimm-2);--vp-code-copy-code-border-color: transparent;--vp-code-copy-code-bg: var(--vp-code-block-bg-light);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-code-block-bg-light);--vp-code-copy-code-active-text: var(--vp-c-text-dark-2);--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-dark-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-dark-1);--vp-code-tab-active-text-color: var(--vp-c-text-dark-1);--vp-code-tab-active-bar-color: var(--vp-c-brand)}.dark{--vp-code-block-bg: #161618}:root:not(.dark) .vp-adaptive-theme{--vp-c-code-dimm: var(--vp-c-text-2);--vp-code-block-color: var(--vp-c-text-1);--vp-code-block-bg: #f8f8f8;--vp-code-block-divider-color: var(--vp-c-divider);--vp-code-line-highlight-color: #ececec;--vp-code-line-number-color: var(--vp-c-code-dimm);--vp-code-copy-code-bg: #e2e2e2;--vp-code-copy-code-hover-bg: #dcdcdc;--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-tab-divider: var(--vp-c-divider);--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)}:root{--vp-button-brand-border: var(--vp-c-brand-lighter);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-lighter);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-dark);--vp-button-brand-active-border: var(--vp-c-brand-lighter);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-darker);--vp-button-alt-border: var(--vp-c-border);--vp-button-alt-text: var(--vp-c-neutral);--vp-button-alt-bg: var(--vp-c-mute);--vp-button-alt-hover-border: var(--vp-c-border);--vp-button-alt-hover-text: var(--vp-c-neutral);--vp-button-alt-hover-bg: var(--vp-c-mute-dark);--vp-button-alt-active-border: var(--vp-c-border);--vp-button-alt-active-text: var(--vp-c-neutral);--vp-button-alt-active-bg: var(--vp-c-mute-darker);--vp-button-sponsor-border: var(--vp-c-gray-light-3);--vp-button-sponsor-text: var(--vp-c-text-light-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}.dark{--vp-button-sponsor-border: var(--vp-c-gray-dark-1);--vp-button-sponsor-text: var(--vp-c-text-dark-2)}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: var(--vp-c-border);--vp-custom-block-info-text: var(--vp-c-text-2);--vp-custom-block-info-bg: var(--vp-c-bg-soft-up);--vp-custom-block-info-code-bg: var(--vp-c-bg-soft);--vp-custom-block-tip-border: var(--vp-c-green);--vp-custom-block-tip-text: var(--vp-c-green-dark);--vp-custom-block-tip-bg: var(--vp-c-bg-soft-up);--vp-custom-block-tip-code-bg: var(--vp-c-bg-soft);--vp-custom-block-warning-border: var(--vp-c-yellow);--vp-custom-block-warning-text: var(--vp-c-yellow);--vp-custom-block-warning-bg: var(--vp-c-bg-soft-up);--vp-custom-block-warning-code-bg: var(--vp-c-bg-soft);--vp-custom-block-danger-border: var(--vp-c-red);--vp-custom-block-danger-text: var(--vp-c-red);--vp-custom-block-danger-bg: var(--vp-c-bg-soft-up);--vp-custom-block-danger-code-bg: var(--vp-c-bg-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-details-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-hover-border-color: var(--vp-c-gray);--vp-input-switch-bg-color: var(--vp-c-mute)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg)}: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);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: var(--vp-c-border);--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-bg-soft-up);--vp-badge-tip-border: var(--vp-c-green-dark);--vp-badge-tip-text: var(--vp-c-green);--vp-badge-tip-bg: var(--vp-c-green-dimm-1);--vp-badge-warning-border: var(--vp-c-yellow-dark);--vp-badge-warning-text: var(--vp-c-yellow);--vp-badge-warning-bg: var(--vp-c-yellow-dimm-1);--vp-badge-danger-border: var(--vp-c-red-dark);--vp-badge-danger-text: var(--vp-c-red);--vp-badge-danger-bg: var(--vp-c-red-dimm-1)}: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);--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);--vp-local-search-highlight-bg: var(--vp-c-green-lighter);--vp-local-search-highlight-text: var(--vp-c-black)}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);direction:ltr;font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}.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.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning 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 code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600}.custom-block a:hover{text-decoration:underline}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.dark .vp-code-light{display:none}html:not(.dark) .vp-code-dark{display:none}.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}.vp-code-group .tabs:after{position:absolute;right:0;bottom:0;left:0;height:1px;background-color:var(--vp-code-tab-divider);content:""}@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:absolute;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:10;height:1px;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-]{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{display:block}.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{float:left;margin-left:-.87em;padding-right:.23em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;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 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);text-decoration-style:dotted;transition:color .25s}.vp-doc a:hover{text-decoration:underline}.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{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 a{color:inherit;font-weight:600}.vp-doc .custom-block a:hover{text-decoration:underline}.vp-doc .custom-block code{font-size:var(--vp-custom-block-code-font-size);font-weight:700;color:inherit}.vp-doc .custom-block div[class*=language-]{margin:8px 0}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;color:var(--vp-c-text-code);background-color:var(--vp-c-mute);transition:color .5s,background-color .5s}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc a>code{color:var(--vp-c-brand);transition:color .25s}.vp-doc a:hover>code{color:var(--vp-c-brand-dark)}.vp-doc div[class*=language-]{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-]{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;left:-65px;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;width:64px;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:"Copied"}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-c-code-dimm);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}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-bg-soft-down)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge[data-v-a3873325]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:10px;padding:0 8px;line-height:18px;font-size:12px;font-weight:600;transform:translateY(-2px)}h1 .VPBadge[data-v-a3873325],h2 .VPBadge[data-v-a3873325],h3 .VPBadge[data-v-a3873325],h4 .VPBadge[data-v-a3873325],h5 .VPBadge[data-v-a3873325],h6 .VPBadge[data-v-a3873325]{vertical-align:top}h2 .VPBadge[data-v-a3873325]{border-radius:11px;line-height:20px}.VPBadge.info[data-v-a3873325]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-a3873325]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-a3873325]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-a3873325]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPSkipLink[data-v-f3581b34]{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);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-f3581b34]:focus{height:auto;width:auto;clip:auto;clip-path:none}.dark .VPSkipLink[data-v-f3581b34]{color:var(--vp-c-green)}@media (min-width: 1280px){.VPSkipLink[data-v-f3581b34]{top:14px;left:16px}}.VPBackdrop[data-v-f4f207be]{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-f4f207be],.VPBackdrop.fade-leave-to[data-v-f4f207be]{opacity:0}.VPBackdrop.fade-leave-active[data-v-f4f207be]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-f4f207be]{display:none}}html:not(.dark) .VPImage.dark[data-v-dbd5cf9e]{display:none}.dark .VPImage.light[data-v-dbd5cf9e]{display:none}.title[data-v-274c4161]{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-274c4161]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-274c4161]{border-bottom-color:var(--vp-c-divider)}}[data-v-274c4161] .logo{margin-right:8px;height:24px}/*! @docsearch/css 3.5.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.DocSearch{--docsearch-primary-color: var(--vp-c-brand);--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-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 .DocSearch{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-bg-soft-mute);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand);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:1px;letter-spacing:-12px;color:transparent}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:var(--vp-meta-key);font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-bg-soft-mute)}.DocSearch-Screen-Icon>svg{margin:auto}.icon[data-v-fb985c39]{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;fill:var(--vp-c-text-3);transition:fill .25s;flex-shrink:0}.VPNavBarMenuLink[data-v-72754ec8]{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-72754ec8],.VPNavBarMenuLink[data-v-72754ec8]:hover{color:var(--vp-c-brand)}.VPMenuGroup+.VPMenuLink[data-v-1fd345a4]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-1fd345a4]{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-1fd345a4]:hover{color:var(--vp-c-brand);background-color:var(--vp-c-bg-elv-mute)}.link.active[data-v-1fd345a4]{color:var(--vp-c-brand)}.VPMenuGroup[data-v-197e3c2a]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-197e3c2a]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-197e3c2a]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-197e3c2a]{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-fe686081]{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-fe686081] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-fe686081] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-fe686081] .group:last-child{padding-bottom:0}.VPMenu[data-v-fe686081] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-fe686081] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-fe686081] .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-fe686081] .action{padding-left:24px}.VPFlyout[data-v-8f2164d8]{position:relative}.VPFlyout[data-v-8f2164d8]:hover{color:var(--vp-c-brand);transition:color .25s}.VPFlyout:hover .text[data-v-8f2164d8]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-8f2164d8]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-8f2164d8]{color:var(--vp-c-brand)}.VPFlyout.active:hover .text[data-v-8f2164d8]{color:var(--vp-c-brand-dark)}.VPFlyout:hover .menu[data-v-8f2164d8],.button[aria-expanded=true]+.menu[data-v-8f2164d8]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-8f2164d8]{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-8f2164d8]{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-8f2164d8]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-8f2164d8]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-8f2164d8]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-8f2164d8]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPNavBarMenu[data-v-6e1dadf5]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-6e1dadf5]{display:flex}}.VPNavBarTranslations[data-v-5767994d]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-5767994d]{display:flex;align-items:center}}.title[data-v-5767994d]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPSwitch[data-v-cfc474d3]{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}.VPSwitch[data-v-cfc474d3]:hover{border-color:var(--vp-input-hover-border-color)}.check[data-v-cfc474d3]{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}.icon[data-v-cfc474d3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-cfc474d3] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-cfc474d3] svg{fill:var(--vp-c-text-1);transition:opacity .25s}.sun[data-v-97eafeaf]{opacity:1}.moon[data-v-97eafeaf],.dark .sun[data-v-97eafeaf]{opacity:0}.dark .moon[data-v-97eafeaf]{opacity:1}.dark .VPSwitchAppearance[data-v-97eafeaf] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-48c82cdd]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-48c82cdd]{display:flex;align-items:center}}.VPSocialLink[data-v-2497ebef]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-2497ebef]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-2497ebef]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-f538b594]{display:flex;justify-content:center}.VPNavBarSocialLinks[data-v-6d68fd25]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-6d68fd25]{display:flex;align-items:center}}.VPNavBarExtra[data-v-5a8509a0]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-5a8509a0]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-5a8509a0]{display:none}}.trans-title[data-v-5a8509a0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-5a8509a0],.item.social-links[data-v-5a8509a0]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-5a8509a0]{min-width:176px}.appearance-action[data-v-5a8509a0]{margin-right:-2px}.social-links-list[data-v-5a8509a0]{margin:-4px -8px}.VPNavBarHamburger[data-v-995f8466]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-995f8466]{display:none}}.container[data-v-995f8466]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-995f8466]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-995f8466]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-995f8466]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-995f8466]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-995f8466]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-995f8466]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-995f8466],.VPNavBarHamburger.active:hover .middle[data-v-995f8466],.VPNavBarHamburger.active:hover .bottom[data-v-995f8466]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-995f8466],.middle[data-v-995f8466],.bottom[data-v-995f8466]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-995f8466]{top:0;left:0;transform:translate(0)}.middle[data-v-995f8466]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-995f8466]{top:12px;left:0;transform:translate(4px)}.VPNavBar[data-v-a2340e9e]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);transition:border-color .5s,background-color .5s;pointer-events:none;white-space:nowrap}.VPNavBar.has-sidebar[data-v-a2340e9e]{border-bottom-color:var(--vp-c-gutter)}@media (min-width: 768px){.VPNavBar[data-v-a2340e9e]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-a2340e9e]{border-bottom-color:transparent;padding:0}.VPNavBar.fill[data-v-a2340e9e]:not(.has-sidebar){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-a2340e9e]{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-a2340e9e],.container>.content[data-v-a2340e9e]{pointer-events:none}.container[data-v-a2340e9e] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-a2340e9e]{max-width:100%}}.title[data-v-a2340e9e]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-a2340e9e]{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-a2340e9e]{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-a2340e9e]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-a2340e9e]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-a2340e9e]{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-a2340e9e]{display:flex;justify-content:flex-end;align-items:center;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .content-body[data-v-a2340e9e],.VPNavBar.fill .content-body[data-v-a2340e9e]{position:relative;background-color:var(--vp-nav-bg-color)}}@media (max-width: 768px){.content-body[data-v-a2340e9e]{column-gap:.5rem}}.menu+.translations[data-v-a2340e9e]:before,.menu+.appearance[data-v-a2340e9e]:before,.menu+.social-links[data-v-a2340e9e]:before,.translations+.appearance[data-v-a2340e9e]:before,.appearance+.social-links[data-v-a2340e9e]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-a2340e9e]:before,.translations+.appearance[data-v-a2340e9e]:before{margin-right:16px}.appearance+.social-links[data-v-a2340e9e]:before{margin-left:16px}.social-links[data-v-a2340e9e]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-a2340e9e]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-a2340e9e]:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}@media (min-width: 1440px){.VPNavBar.has-sidebar .curtain[data-v-a2340e9e]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenMenuLink[data-v-094068ec]{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-094068ec]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupLink[data-v-e370fed4]{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-e370fed4]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupSection[data-v-d338f822]{display:block}.title[data-v-d338f822]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-fc17e865]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-fc17e865]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-fc17e865]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-fc17e865]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-fc17e865]{padding-bottom:6px;color:var(--vp-c-brand)}.VPNavScreenMenuGroup.open .button-icon[data-v-fc17e865]{transform:rotate(45deg)}.button[data-v-fc17e865]{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-fc17e865]:hover{color:var(--vp-c-brand)}.button-icon[data-v-fc17e865]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-fc17e865]:first-child{padding-top:0}.group+.group[data-v-fc17e865],.group+.item[data-v-fc17e865]{padding-top:4px}.VPNavScreenAppearance[data-v-c5ef4b84]{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-c5ef4b84]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenTranslations[data-v-b69ee3c4]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-b69ee3c4]{height:auto}.title[data-v-b69ee3c4]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-b69ee3c4]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-b69ee3c4]{margin-right:8px}.icon.chevron[data-v-b69ee3c4]{margin-left:4px}.list[data-v-b69ee3c4]{padding:4px 0 0 24px}.link[data-v-b69ee3c4]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-5046b6eb]{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-5046b6eb],.VPNavScreen.fade-leave-active[data-v-5046b6eb]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-5046b6eb],.VPNavScreen.fade-leave-active .container[data-v-5046b6eb]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-5046b6eb],.VPNavScreen.fade-leave-to[data-v-5046b6eb]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-5046b6eb],.VPNavScreen.fade-leave-to .container[data-v-5046b6eb]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-5046b6eb]{display:none}}.container[data-v-5046b6eb]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-5046b6eb],.menu+.appearance[data-v-5046b6eb],.translations+.appearance[data-v-5046b6eb]{margin-top:24px}.menu+.social-links[data-v-5046b6eb]{margin-top:16px}.appearance+.social-links[data-v-5046b6eb]{margin-top:16px}.VPNav[data-v-dc28420e]{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-dc28420e]{position:fixed}}.root[data-v-48774a8a]{position:relative;z-index:1}.nested[data-v-48774a8a]{padding-left:13px}.outline-link[data-v-48774a8a]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:500}.outline-link[data-v-48774a8a]:hover,.outline-link.active[data-v-48774a8a]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-48774a8a]{padding-left:13px}.VPLocalNavOutlineDropdown[data-v-26a9a813]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-26a9a813]{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-26a9a813]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-26a9a813]{color:var(--vp-c-text-1)}.icon[data-v-26a9a813]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-26a9a813] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-26a9a813]{transform:rotate(90deg)}.items[data-v-26a9a813]{position:absolute;left:20px;right:20px;top:64px;background-color:var(--vp-local-nav-bg-color);padding:4px 10px 16px;border:1px solid var(--vp-c-divider);border-radius:8px;max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}.top-link[data-v-26a9a813]{display:block;color:var(--vp-c-brand);font-size:13px;font-weight:500;padding:6px 0;margin:0 13px 10px;border-bottom:1px solid var(--vp-c-divider)}.flyout-enter-active[data-v-26a9a813]{transition:all .2s ease-out}.flyout-leave-active[data-v-26a9a813]{transition:all .15s ease-in}.flyout-enter-from[data-v-26a9a813],.flyout-leave-to[data-v-26a9a813]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-fcc33ec9]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;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);transition:border-color .5s,background-color .5s}@media (min-width: 960px){.VPLocalNav[data-v-fcc33ec9]{display:none}}.menu[data-v-fcc33ec9]{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-fcc33ec9]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-fcc33ec9]{padding:0 32px}}.menu-icon[data-v-fcc33ec9]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-fcc33ec9]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-fcc33ec9]{padding:12px 32px 11px}}.VPSidebarItem.level-0[data-v-efb5c4af]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-efb5c4af]{padding-bottom:10px}.item[data-v-efb5c4af]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-efb5c4af]{cursor:pointer}.indicator[data-v-efb5c4af]{position:absolute;top:6px;bottom:6px;left:-17px;width:1px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-efb5c4af],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-efb5c4af],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-efb5c4af],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-efb5c4af]{background-color:var(--vp-c-brand)}.link[data-v-efb5c4af]{display:flex;align-items:center;flex-grow:1}.text[data-v-efb5c4af]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-efb5c4af]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-efb5c4af],.VPSidebarItem.level-2 .text[data-v-efb5c4af],.VPSidebarItem.level-3 .text[data-v-efb5c4af],.VPSidebarItem.level-4 .text[data-v-efb5c4af],.VPSidebarItem.level-5 .text[data-v-efb5c4af]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-efb5c4af],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-efb5c4af],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-efb5c4af],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-efb5c4af],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-efb5c4af],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-efb5c4af]{color:var(--vp-c-brand)}.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-efb5c4af],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-efb5c4af],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-efb5c4af],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-efb5c4af],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-efb5c4af],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-efb5c4af]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-efb5c4af],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-efb5c4af],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-efb5c4af],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-efb5c4af],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-efb5c4af],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-efb5c4af]{color:var(--vp-c-brand)}.caret[data-v-efb5c4af]{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}.item:hover .caret[data-v-efb5c4af]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-efb5c4af]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-efb5c4af]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-efb5c4af]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-efb5c4af],.VPSidebarItem.level-2 .items[data-v-efb5c4af],.VPSidebarItem.level-3 .items[data-v-efb5c4af],.VPSidebarItem.level-4 .items[data-v-efb5c4af],.VPSidebarItem.level-5 .items[data-v-efb5c4af]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-efb5c4af]{display:none}.VPSidebar[data-v-8b8b2ec7]{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-8b8b2ec7]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-8b8b2ec7]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-8b8b2ec7]{z-index:1;padding-top:var(--vp-nav-height);padding-bottom:128px;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-8b8b2ec7]{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-8b8b2ec7]{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-8b8b2ec7]{outline:0}.group+.group[data-v-8b8b2ec7]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-8b8b2ec7]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPButton[data-v-fbf50643]{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-fbf50643]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-fbf50643]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-fbf50643]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-fbf50643]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-fbf50643]: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-fbf50643]: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-fbf50643]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-fbf50643]: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-fbf50643]: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-fbf50643]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-fbf50643]: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-fbf50643]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}.VPHero[data-v-1a9e8a3d]{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-1a9e8a3d]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-1a9e8a3d]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-1a9e8a3d]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-1a9e8a3d]{flex-direction:row}}.main[data-v-1a9e8a3d]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-1a9e8a3d]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-1a9e8a3d]{text-align:left}}@media (min-width: 960px){.main[data-v-1a9e8a3d]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-1a9e8a3d]{max-width:592px}}.name[data-v-1a9e8a3d],.text[data-v-1a9e8a3d]{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-1a9e8a3d],.VPHero.has-image .text[data-v-1a9e8a3d]{margin:0 auto}.name[data-v-1a9e8a3d]{color:var(--vp-home-hero-name-color)}.clip[data-v-1a9e8a3d]{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-1a9e8a3d],.text[data-v-1a9e8a3d]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-1a9e8a3d],.text[data-v-1a9e8a3d]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-1a9e8a3d],.VPHero.has-image .text[data-v-1a9e8a3d]{margin:0}}.tagline[data-v-1a9e8a3d]{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-1a9e8a3d]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-1a9e8a3d]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-1a9e8a3d]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-1a9e8a3d]{margin:0}}.actions[data-v-1a9e8a3d]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-1a9e8a3d]{justify-content:center}@media (min-width: 640px){.actions[data-v-1a9e8a3d]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-1a9e8a3d]{justify-content:flex-start}}.action[data-v-1a9e8a3d]{flex-shrink:0;padding:6px}.image[data-v-1a9e8a3d]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-1a9e8a3d]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-1a9e8a3d]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-1a9e8a3d]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-1a9e8a3d]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-1a9e8a3d]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-1a9e8a3d]{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-1a9e8a3d]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-1a9e8a3d]{width:320px;height:320px}}[data-v-1a9e8a3d] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-1a9e8a3d] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-1a9e8a3d] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a8945925]{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-a8945925]:hover{border-color:var(--vp-c-brand);background-color:var(--vp-c-bg-soft-up)}.box[data-v-a8945925]{display:flex;flex-direction:column;padding:24px;height:100%}.VPFeature[data-v-a8945925] .VPImage{width:48px;height:48px;margin-bottom:20px}.icon[data-v-a8945925]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-bg-soft-down);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-a8945925]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a8945925]{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-a8945925]{padding-top:8px}.link-text-value[data-v-a8945925]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand)}.link-text-icon[data-v-a8945925]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-7b5b6ee6]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-7b5b6ee6]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-7b5b6ee6]{padding:0 64px}}.container[data-v-7b5b6ee6]{margin:0 auto;max-width:1152px}.items[data-v-7b5b6ee6]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-7b5b6ee6]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-7b5b6ee6],.item.grid-4[data-v-7b5b6ee6],.item.grid-6[data-v-7b5b6ee6]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-7b5b6ee6],.item.grid-4[data-v-7b5b6ee6]{width:50%}.item.grid-3[data-v-7b5b6ee6],.item.grid-6[data-v-7b5b6ee6]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-7b5b6ee6]{width:25%}}.VPHome[data-v-00f4dd76]{padding-bottom:96px}.VPHome[data-v-00f4dd76] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-00f4dd76]{padding-bottom:128px}}.VPDocAsideOutline[data-v-9628eddf]{display:none}.VPDocAsideOutline.has-outline[data-v-9628eddf]{display:block}.content[data-v-9628eddf]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-9628eddf]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:1px;height:18px;background-color:var(--vp-c-brand);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-9628eddf]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-735d3db4]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-735d3db4]{flex-grow:1}.VPDocAside[data-v-735d3db4] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-735d3db4] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-735d3db4] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-0bc2f9d9]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-0bc2f9d9]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-6114015a]{margin-top:64px}.edit-info[data-v-6114015a]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-6114015a]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-6114015a]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.edit-link-button[data-v-6114015a]:hover{color:var(--vp-c-brand-dark)}.edit-link-icon[data-v-6114015a]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-6114015a]{border-top:1px solid var(--vp-c-divider);padding-top:24px}@media (min-width: 640px){.prev-next[data-v-6114015a]{display:flex}}.pager.has-prev[data-v-6114015a]{padding-top:8px}@media (min-width: 640px){.pager[data-v-6114015a]{display:flex;flex-direction:column;flex-shrink:0;width:50%}.pager.has-prev[data-v-6114015a]{padding-top:0;padding-left:16px}}.pager-link[data-v-6114015a]{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-6114015a]:hover{border-color:var(--vp-c-brand)}.pager-link.next[data-v-6114015a]{margin-left:auto;text-align:right}.desc[data-v-6114015a]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-6114015a]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.VPDocOutlineDropdown[data-v-e5fab910]{margin-bottom:42px}.VPDocOutlineDropdown button[data-v-e5fab910]{display:block;font-size:14px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;border:1px solid var(--vp-c-border);padding:4px 12px;border-radius:8px}.VPDocOutlineDropdown button[data-v-e5fab910]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-e5fab910]{color:var(--vp-c-text-1)}.icon[data-v-e5fab910]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-e5fab910] .outline-link{font-size:13px}.open>.icon[data-v-e5fab910]{transform:rotate(90deg)}.items[data-v-e5fab910]{margin-top:10px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-a8bcbcd1]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-a8bcbcd1]{display:none}@media (min-width: 960px) and (max-width: 1280px){.VPDoc .VPDocOutlineDropdown[data-v-a8bcbcd1]{display:block}}@media (min-width: 768px){.VPDoc[data-v-a8bcbcd1]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-a8bcbcd1]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-a8bcbcd1]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-a8bcbcd1]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-a8bcbcd1]{display:flex;justify-content:center}.VPDoc .aside[data-v-a8bcbcd1]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-a8bcbcd1]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-a8bcbcd1]{max-width:1104px}}.container[data-v-a8bcbcd1]{margin:0 auto;width:100%}.aside[data-v-a8bcbcd1]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-a8bcbcd1]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-a8bcbcd1]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-a8bcbcd1]::-webkit-scrollbar{display:none}.aside-curtain[data-v-a8bcbcd1]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-a8bcbcd1]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-a8bcbcd1]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-a8bcbcd1]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-a8bcbcd1]{order:1;margin:0;min-width:640px}}.content-container[data-v-a8bcbcd1]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-a8bcbcd1]{max-width:688px}.NotFound[data-v-8a4c9fbe]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-8a4c9fbe]{padding:96px 32px 168px}}.code[data-v-8a4c9fbe]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-8a4c9fbe]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-8a4c9fbe]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-8a4c9fbe]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-8a4c9fbe]{padding-top:20px}.link[data-v-8a4c9fbe]{display:inline-block;border:1px solid var(--vp-c-brand);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:border-color .25s,color .25s}.link[data-v-8a4c9fbe]:hover{border-color:var(--vp-c-brand-dark);color:var(--vp-c-brand-dark)}.VPContent[data-v-945e901e]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-945e901e]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-945e901e]{margin:0}@media (min-width: 960px){.VPContent[data-v-945e901e]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-945e901e]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-945e901e]{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-c38c9977]{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-c38c9977]{display:none}@media (min-width: 768px){.VPFooter[data-v-c38c9977]{padding:32px}}.container[data-v-c38c9977]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c38c9977],.copyright[data-v-c38c9977]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.message[data-v-c38c9977]{order:2}.copyright[data-v-c38c9977]{order:1}.Layout[data-v-5895cebc]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-71a59adf]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-71a59adf]{margin:0 auto;max-width:1152px}.love[data-v-71a59adf]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-71a59adf]{width:28px;height:28px;fill:currentColor}.message[data-v-71a59adf]{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-71a59adf]{padding-top:32px}.action[data-v-71a59adf]{padding-top:40px;text-align:center}.VPTeamPage[data-v-fe8a64cc]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-fe8a64cc]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-fe8a64cc-s],.VPTeamMembers+.VPTeamPageSection[data-v-fe8a64cc-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-fe8a64cc-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-fe8a64cc-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-fe8a64cc-s],.VPTeamMembers+.VPTeamPageSection[data-v-fe8a64cc-s]{margin-top:96px}}.VPTeamMembers[data-v-fe8a64cc-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-fe8a64cc-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-fe8a64cc-s]{padding:0 64px}}.VPTeamPageTitle[data-v-56ba28ca]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-56ba28ca]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-56ba28ca]{padding:80px 64px 48px}}.title[data-v-56ba28ca]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-56ba28ca]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-56ba28ca]{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-56ba28ca]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1e2586f]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1e2586f]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1e2586f]{padding:0 64px}}.title[data-v-b1e2586f]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1e2586f]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1e2586f]{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-b1e2586f]{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-b1e2586f]{padding-top:40px}.VPTeamMembersItem[data-v-b9569c7c]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-b9569c7c]{padding:32px}.VPTeamMembersItem.small .data[data-v-b9569c7c]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-b9569c7c]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-b9569c7c]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-b9569c7c]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-b9569c7c]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-b9569c7c]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-b9569c7c]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-b9569c7c]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-b9569c7c]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-b9569c7c]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-b9569c7c]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-b9569c7c]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-b9569c7c]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-b9569c7c]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-b9569c7c]{text-align:center}.avatar[data-v-b9569c7c]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-b9569c7c]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-b9569c7c]{margin:0;font-weight:600}.affiliation[data-v-b9569c7c]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-b9569c7c]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-b9569c7c]:hover{color:var(--vp-c-brand)}.desc[data-v-b9569c7c]{margin:0 auto}.desc[data-v-b9569c7c] a{font-weight:500;color:var(--vp-c-brand);text-decoration-style:dotted;transition:color .25s}.links[data-v-b9569c7c]{display:flex;justify-content:center;height:56px}.sp-link[data-v-b9569c7c]{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-b9569c7c]:hover,.sp .sp-link.link[data-v-b9569c7c]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-b9569c7c]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-d6742f3c]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-d6742f3c]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-d6742f3c]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-d6742f3c]{max-width:876px}.VPTeamMembers.medium .container[data-v-d6742f3c]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-d6742f3c]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-d6742f3c]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-d6742f3c]{max-width:760px}.container[data-v-d6742f3c]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.VPLocalSearchBox[data-v-8d4c8dad]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-8d4c8dad]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-8d4c8dad]{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: 768px){.shell[data-v-8d4c8dad]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-8d4c8dad]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 768px){.search-bar[data-v-8d4c8dad]{padding:0 8px}}.search-bar[data-v-8d4c8dad]:focus-within{border-color:var(--vp-c-brand)}.search-icon[data-v-8d4c8dad]{margin:8px}@media (max-width: 768px){.search-icon[data-v-8d4c8dad]{display:none}}.search-input[data-v-8d4c8dad]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 768px){.search-input[data-v-8d4c8dad]{padding:6px 4px}}.search-actions[data-v-8d4c8dad]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-8d4c8dad]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-8d4c8dad]{display:none}}.search-actions button[data-v-8d4c8dad]{padding:8px}.search-actions button[data-v-8d4c8dad]:hover,.toggle-layout-button.detailed-list[data-v-8d4c8dad]{color:var(--vp-c-brand)}.search-keyboard-shortcuts[data-v-8d4c8dad]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-8d4c8dad]{display:flex;align-items:center;gap:4px}@media (max-width: 768px){.search-keyboard-shortcuts[data-v-8d4c8dad]{display:none}}.search-keyboard-shortcuts kbd[data-v-8d4c8dad]{background:rgba(128,128,128,.1);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-8d4c8dad]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-8d4c8dad]{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-8d4c8dad]{margin:12px;width:100%;overflow:hidden}@media (max-width: 768px){.result>div[data-v-8d4c8dad]{margin:8px}}.titles[data-v-8d4c8dad]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-8d4c8dad]{display:flex;align-items:center;gap:4px}.title.main[data-v-8d4c8dad]{font-weight:500}.title-icon[data-v-8d4c8dad]{opacity:.5;font-weight:500;color:var(--vp-c-brand)}.title svg[data-v-8d4c8dad]{opacity:.5}.result.selected[data-v-8d4c8dad]{--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-8d4c8dad]{position:relative}.excerpt[data-v-8d4c8dad]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-8d4c8dad]{opacity:1}.excerpt[data-v-8d4c8dad] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-8d4c8dad] mark,.excerpt[data-v-8d4c8dad] 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-8d4c8dad] .vp-code-group .tabs{display:none}.excerpt[data-v-8d4c8dad] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-8d4c8dad]{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-8d4c8dad]{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-8d4c8dad],.result.selected .title-icon[data-v-8d4c8dad]{color:var(--vp-c-brand)!important}.no-results[data-v-8d4c8dad]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-8d4c8dad]{flex:none} diff --git a/assets/toolbox_pusher.md.30f3255f.js b/assets/toolbox_pusher.md.ffb35ca2.js similarity index 99% rename from assets/toolbox_pusher.md.30f3255f.js rename to assets/toolbox_pusher.md.ffb35ca2.js index 795cbb2da6b..4914edfd44b 100644 --- a/assets/toolbox_pusher.md.30f3255f.js +++ b/assets/toolbox_pusher.md.ffb35ca2.js @@ -1,4 +1,4 @@ -import{_ as e,o as t,c as a,V as s}from"./chunks/framework.40f7bea3.js";const m=JSON.parse('{"title":"Pusher","description":"","frontmatter":{},"headers":[],"relativePath":"toolbox/pusher.md","filePath":"toolbox/pusher.md"}'),o={name:"toolbox/pusher.md"},r=s(`

Pusher

Push Registration

The QD framework provides various [push methods](#push methods), and you can register different push tools in Toolbox->Push Registration to push notifications to you when specific events occur (e.g. timed task execution failure).

TIP

The parameters filled in when registering the push are separated and connected by ;. If the parameter value is empty, please be sure to keep the ; after the parameter position, otherwise it may cause parameter parsing error.

Push Registration Test

After registering the push method in Toolbox->Push Registration, you can click the Test button to test whether the push method is available.

If the push method is available, you will receive a push message, otherwise you will be prompted that the push failed.

TIP

When testing the push registration, please make sure that the following conditions are met:

  • The correct parameters are filled in;

  • The email and password are filled in with the user's email and password of the QD framework.

Push Registration Former value

After registering the push method in Toolbox->Push Registration, you can click the Former value button to view the former value of the push registration.

TIP

When viewing the former value of the push registration, please make sure that the email and password are filled in with the user's email and password of the QD framework.

Push Methods

The QD framework provides the following push methods:

E-mail Push

E-mail push does not need to set parameters in Toolbox->Push Registration, you need to configure the following parameters in the environment variables:

Variable nameRequiredDefaultDescription
MAIL_SMTPTrue""Email SMTP server
MAIL_PORTFalse465Email SMTP server port
MAIL_USERTrue""Email username
MAIL_PASSWORDTrue""Email password
MAIL_FROMFalseMAIL_USERThe Email used when sending, the default is the same as MAIL_USER
MAIL_DOMAIN_HTTPSFalseFalseWhether to use HTTPS for email domain name.
Not the framework itself HTTPS configuration.
If you need HTTPS, please use an external reverse proxy

If you are using the following email, refer to the SMTP enable method and configuration method below to get your SMTP server address and port.

EmailSMTP enable methodSMTP configuration methodOther instructions
Tencent Enterprise MailHow to enable Tencent Enterprise Mail POP/SMTP/IMAP service?Common mail client software settingsHow do members bind/associate WeChat and enable secure login to get client-specific passwords?
QQ MailHow to enable QQ Mail POP3/SMTP/IMAP service?How to turn on POP3/SMTP/IMAP?Why do I need to set a separate password to enable POP3/SMTP/IMAP?
Netease Enterprise Mail-Enterprise Mail POP, SMTP, IMAP server address settings.What is a client authorization code and how do I use it?
Netease MailWhat is POP3, SMTP and IMAP?How to enable client protocol?-
Gmail-How to use POP3/SMTP/IMAP service?Sign in with app passwords
Outlook-POP, IMAP and SMTP settingsUse app passwords with apps that don't support two-step verification

MailGun

If you have configured MailGun, please configure the following parameters in the environment variables:

Variable nameRequiredDefaultDescription
MAILGUN_KEYTrue""MailGun API Key
MAILGUN_DOMAINTrueDOMAINMailGun Domain,
The default is the value of the DOMAIN in the environment variables,
Please configure the value of DOMAIN in the environment variables,
and set the corresponding Domain in the MailGun console,
otherwise MailGun cannot be used

Bark Push

Bark push needs to set parameters in Toolbox->Push Registration:

Parameter nameRequiredDefaultDescription
BarkUrlTrue""Bark push address,
The format is https://api.day.app/push_key,
The push_key can be obtained in the Bark client,
If you are using a self-built Bark service,
please replace https://api.day.app/ with your Bark service address.
For example: http://bark.example.com/push_key

Server Chan Push

Server Chan push needs to set parameters in Toolbox->Push Registration:

Parameter nameRequiredDefaultDescription
skeyTrue""Server Chan push sendkey,
Can be obtained in Server Chan

Telegram Bot Push

Telegram Bot push needs to set parameters in Toolbox->Push Registration:

Parameter nameRequiredDefaultDescription
TG_TOKENTrue""Telegram Bot Token,
Can be obtained in BotFather,
Should be a combination of Bot ID and corresponding Key, but not including bot,
That is, the token form: 1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
TG_USERIDTrue""Telegram Chat ID,
Can be obtained in Telegram API,
The chat_id field in the Telegram API, such as 222222222
TG_HOSTFalse""Telegram API Host,
Can be a domain name or IP address,
For example, tg.mydomain.com,
You can also add the http:// or https:// prefix,
If left blank, the default value api.telegram.org is used
PROXY_URLFalse""Proxy address,
The format is scheme://username:password@host:port,
For example, http://user:password@host:port,
If left blank, the Proxy is not used
PUSH_PIC_URLFalse""Custom push picture address,
If left blank, the environment variable PUSH_PIC_URL value is used
Example

Assume that you have created a Telegram Bot API with a custom domain name:

https://tg.mydomain.com/bot1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/sendMessage?chat_id=222222222&text=HelloWorld

The above request will send a HelloWorld message to the chat 222222222, then when registering the Telegram Bot as a push method:

  • TG_TOKEN is 1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  • TG_USERID is 222222222
  • TG_HOST is tg.mydomain.com

Therefore, the final form is as follows:

Text
1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;222222222;tg.mydomain.com

DingTalk Push

DingTalk push needs to set parameters in Toolbox->Push Registration:

Parameter nameRequiredDefaultDescription
DINGDING_TOKENTrue""DingTalk push Token,
Can be obtained in Custom Robot Access,
If you set the IP address range in Security Settings,
Please add the IP address of the QD server to IP address range,
Otherwise, you will not be able to receive push messages;
If you set the Custom Keywords in Security Settings,
Please add QD/Push/Test to Custom Keywords,
Otherwise, you will not be able to receive push messages;
Please do not enable Signature in Security Settings, QD framework does not support DingTalk Signature push for the time being.
PUSH_PIC_URLFalse""Custom push picture address,
If left blank, the environment variable PUSH_PIC_URL value is used

WXPusher Push

WXPusher push needs to set parameters in Toolbox->Push Registration:

Parameter nameRequiredDefaultDescription
APPTOKENTrue""WXPusher push Token,
Can be obtained in WXPusher
WxPusher_UIDTrue""WXPusher push UID,
Can be obtained in WXPusher

WeCom Application Push

WeCom application push needs to set parameters in Toolbox->Push Registration:

Parameter nameRequiredDefaultDescription
CorpIDTrue""WeCom CorpID,
Can be obtained in WeCom
AgentIDTrue""WeCom application AgentID,
Can be obtained in WeCom
AgentSecretTrue""WeCom application Secret,
Can be obtained in WeCom
PUSH_PIC_URL_or_Media_idFalse""Custom push picture address or Media_id,
Media_id can be obtained through WeCom interface,
If left blank, the environment variable PUSH_PIC_URL value is used
QYWX_PROXY_HOSTFalse""WeCom Host,
Can be a domain name or IP address,
For example, qywx.mydomain.com,
You can also add the http:// or https:// prefix,
If left blank, the default value https://qyapi.weixin.qq.com/ is used

QYWX_PROXY_HOST

If you use Nginx to proxy the WeCom application push, the following is an example of Nginx configuration:

Nginx
server {
+import{_ as e,o as t,c as a,V as s}from"./chunks/framework.e7f80142.js";const m=JSON.parse('{"title":"Pusher","description":"","frontmatter":{},"headers":[],"relativePath":"toolbox/pusher.md","filePath":"toolbox/pusher.md"}'),o={name:"toolbox/pusher.md"},r=s(`

Pusher

Push Registration

The QD framework provides various [push methods](#push methods), and you can register different push tools in Toolbox->Push Registration to push notifications to you when specific events occur (e.g. timed task execution failure).

TIP

The parameters filled in when registering the push are separated and connected by ;. If the parameter value is empty, please be sure to keep the ; after the parameter position, otherwise it may cause parameter parsing error.

Push Registration Test

After registering the push method in Toolbox->Push Registration, you can click the Test button to test whether the push method is available.

If the push method is available, you will receive a push message, otherwise you will be prompted that the push failed.

TIP

When testing the push registration, please make sure that the following conditions are met:

  • The correct parameters are filled in;

  • The email and password are filled in with the user's email and password of the QD framework.

Push Registration Former value

After registering the push method in Toolbox->Push Registration, you can click the Former value button to view the former value of the push registration.

TIP

When viewing the former value of the push registration, please make sure that the email and password are filled in with the user's email and password of the QD framework.

Push Methods

The QD framework provides the following push methods:

E-mail Push

E-mail push does not need to set parameters in Toolbox->Push Registration, you need to configure the following parameters in the environment variables:

Variable nameRequiredDefaultDescription
MAIL_SMTPTrue""Email SMTP server
MAIL_PORTFalse465Email SMTP server port
MAIL_USERTrue""Email username
MAIL_PASSWORDTrue""Email password
MAIL_FROMFalseMAIL_USERThe Email used when sending, the default is the same as MAIL_USER
MAIL_DOMAIN_HTTPSFalseFalseWhether to use HTTPS for email domain name.
Not the framework itself HTTPS configuration.
If you need HTTPS, please use an external reverse proxy

If you are using the following email, refer to the SMTP enable method and configuration method below to get your SMTP server address and port.

EmailSMTP enable methodSMTP configuration methodOther instructions
Tencent Enterprise MailHow to enable Tencent Enterprise Mail POP/SMTP/IMAP service?Common mail client software settingsHow do members bind/associate WeChat and enable secure login to get client-specific passwords?
QQ MailHow to enable QQ Mail POP3/SMTP/IMAP service?How to turn on POP3/SMTP/IMAP?Why do I need to set a separate password to enable POP3/SMTP/IMAP?
Netease Enterprise Mail-Enterprise Mail POP, SMTP, IMAP server address settings.What is a client authorization code and how do I use it?
Netease MailWhat is POP3, SMTP and IMAP?How to enable client protocol?-
Gmail-How to use POP3/SMTP/IMAP service?Sign in with app passwords
Outlook-POP, IMAP and SMTP settingsUse app passwords with apps that don't support two-step verification

MailGun

If you have configured MailGun, please configure the following parameters in the environment variables:

Variable nameRequiredDefaultDescription
MAILGUN_KEYTrue""MailGun API Key
MAILGUN_DOMAINTrueDOMAINMailGun Domain,
The default is the value of the DOMAIN in the environment variables,
Please configure the value of DOMAIN in the environment variables,
and set the corresponding Domain in the MailGun console,
otherwise MailGun cannot be used

Bark Push

Bark push needs to set parameters in Toolbox->Push Registration:

Parameter nameRequiredDefaultDescription
BarkUrlTrue""Bark push address,
The format is https://api.day.app/push_key,
The push_key can be obtained in the Bark client,
If you are using a self-built Bark service,
please replace https://api.day.app/ with your Bark service address.
For example: http://bark.example.com/push_key

Server Chan Push

Server Chan push needs to set parameters in Toolbox->Push Registration:

Parameter nameRequiredDefaultDescription
skeyTrue""Server Chan push sendkey,
Can be obtained in Server Chan

Telegram Bot Push

Telegram Bot push needs to set parameters in Toolbox->Push Registration:

Parameter nameRequiredDefaultDescription
TG_TOKENTrue""Telegram Bot Token,
Can be obtained in BotFather,
Should be a combination of Bot ID and corresponding Key, but not including bot,
That is, the token form: 1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
TG_USERIDTrue""Telegram Chat ID,
Can be obtained in Telegram API,
The chat_id field in the Telegram API, such as 222222222
TG_HOSTFalse""Telegram API Host,
Can be a domain name or IP address,
For example, tg.mydomain.com,
You can also add the http:// or https:// prefix,
If left blank, the default value api.telegram.org is used
PROXY_URLFalse""Proxy address,
The format is scheme://username:password@host:port,
For example, http://user:password@host:port,
If left blank, the Proxy is not used
PUSH_PIC_URLFalse""Custom push picture address,
If left blank, the environment variable PUSH_PIC_URL value is used
Example

Assume that you have created a Telegram Bot API with a custom domain name:

https://tg.mydomain.com/bot1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/sendMessage?chat_id=222222222&text=HelloWorld

The above request will send a HelloWorld message to the chat 222222222, then when registering the Telegram Bot as a push method:

  • TG_TOKEN is 1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  • TG_USERID is 222222222
  • TG_HOST is tg.mydomain.com

Therefore, the final form is as follows:

Text
1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;222222222;tg.mydomain.com

DingTalk Push

DingTalk push needs to set parameters in Toolbox->Push Registration:

Parameter nameRequiredDefaultDescription
DINGDING_TOKENTrue""DingTalk push Token,
Can be obtained in Custom Robot Access,
If you set the IP address range in Security Settings,
Please add the IP address of the QD server to IP address range,
Otherwise, you will not be able to receive push messages;
If you set the Custom Keywords in Security Settings,
Please add QD/Push/Test to Custom Keywords,
Otherwise, you will not be able to receive push messages;
Please do not enable Signature in Security Settings, QD framework does not support DingTalk Signature push for the time being.
PUSH_PIC_URLFalse""Custom push picture address,
If left blank, the environment variable PUSH_PIC_URL value is used

WXPusher Push

WXPusher push needs to set parameters in Toolbox->Push Registration:

Parameter nameRequiredDefaultDescription
APPTOKENTrue""WXPusher push Token,
Can be obtained in WXPusher
WxPusher_UIDTrue""WXPusher push UID,
Can be obtained in WXPusher

WeCom Application Push

WeCom application push needs to set parameters in Toolbox->Push Registration:

Parameter nameRequiredDefaultDescription
CorpIDTrue""WeCom CorpID,
Can be obtained in WeCom
AgentIDTrue""WeCom application AgentID,
Can be obtained in WeCom
AgentSecretTrue""WeCom application Secret,
Can be obtained in WeCom
PUSH_PIC_URL_or_Media_idFalse""Custom push picture address or Media_id,
Media_id can be obtained through WeCom interface,
If left blank, the environment variable PUSH_PIC_URL value is used
QYWX_PROXY_HOSTFalse""WeCom Host,
Can be a domain name or IP address,
For example, qywx.mydomain.com,
You can also add the http:// or https:// prefix,
If left blank, the default value https://qyapi.weixin.qq.com/ is used

QYWX_PROXY_HOST

If you use Nginx to proxy the WeCom application push, the following is an example of Nginx configuration:

Nginx
server {
     listen 443 ssl;
     server_name qywx.mydomain.com;
     ssl_certificate /etc/nginx/ssl/qywx.mydomain.com.crt;
diff --git a/assets/toolbox_pusher.md.30f3255f.lean.js b/assets/toolbox_pusher.md.ffb35ca2.lean.js
similarity index 67%
rename from assets/toolbox_pusher.md.30f3255f.lean.js
rename to assets/toolbox_pusher.md.ffb35ca2.lean.js
index 2f160c40236..69c873ad725 100644
--- a/assets/toolbox_pusher.md.30f3255f.lean.js
+++ b/assets/toolbox_pusher.md.ffb35ca2.lean.js
@@ -1 +1 @@
-import{_ as e,o as t,c as a,V as s}from"./chunks/framework.40f7bea3.js";const m=JSON.parse('{"title":"Pusher","description":"","frontmatter":{},"headers":[],"relativePath":"toolbox/pusher.md","filePath":"toolbox/pusher.md"}'),o={name:"toolbox/pusher.md"},r=s("",62),n=[r];function l(i,d,c,h,u,p){return t(),a("div",null,n)}const y=e(o,[["render",l]]);export{m as __pageData,y as default};
+import{_ as e,o as t,c as a,V as s}from"./chunks/framework.e7f80142.js";const m=JSON.parse('{"title":"Pusher","description":"","frontmatter":{},"headers":[],"relativePath":"toolbox/pusher.md","filePath":"toolbox/pusher.md"}'),o={name:"toolbox/pusher.md"},r=s("",62),n=[r];function l(i,d,c,h,u,p){return t(),a("div",null,n)}const y=e(o,[["render",l]]);export{m as __pageData,y as default};
diff --git a/assets/zh_CN_guide_deployment.md.673da61a.js b/assets/zh_CN_guide_deployment.md.0122de01.js
similarity index 99%
rename from assets/zh_CN_guide_deployment.md.673da61a.js
rename to assets/zh_CN_guide_deployment.md.0122de01.js
index 09454d6cedb..65c661af557 100644
--- a/assets/zh_CN_guide_deployment.md.673da61a.js
+++ b/assets/zh_CN_guide_deployment.md.0122de01.js
@@ -1,4 +1,4 @@
-import{_ as t,o as e,c as l,V as n}from"./chunks/framework.40f7bea3.js";const C=JSON.parse('{"title":"部署","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/deployment.md","filePath":"zh_CN/guide/deployment.md"}'),s={name:"zh_CN/guide/deployment.md"},a=n(`

部署

Docker 容器部署

Docker 容器部署是部署 QD 的最简单方式。

操作前请一定要记得备份数据库!!!

容器

DockerHub 网址https://hub.docker.com/r/qdtoday/qd

Tag 含义:

  • latest: 最新 Release 版本
  • lite-latest: 去除 OCR 相关功能的最新 Release 版本
  • ja3-latest: 集成 curl-impersonate 解决 ja3 指纹被识别为 curl 的问题, 不支持 http3 和 Quic 连接
  • 20xxxxxx: 指定 Release 版本, 版本号表示为 Release 发布日期
  • dev: 最新开发版, 同步最新源码, 不保证稳定性

部署方法

1. Docker Compose(推荐)

sh
# 创建并切换到 QD 目录。
+import{_ as t,o as e,c as l,V as n}from"./chunks/framework.e7f80142.js";const C=JSON.parse('{"title":"部署","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/deployment.md","filePath":"zh_CN/guide/deployment.md"}'),s={name:"zh_CN/guide/deployment.md"},a=n(`

部署

Docker 容器部署

Docker 容器部署是部署 QD 的最简单方式。

操作前请一定要记得备份数据库!!!

容器

DockerHub 网址https://hub.docker.com/r/qdtoday/qd

Tag 含义:

  • latest: 最新 Release 版本
  • lite-latest: 去除 OCR 相关功能的最新 Release 版本
  • ja3-latest: 集成 curl-impersonate 解决 ja3 指纹被识别为 curl 的问题, 不支持 http3 和 Quic 连接
  • 20xxxxxx: 指定 Release 版本, 版本号表示为 Release 发布日期
  • dev: 最新开发版, 同步最新源码, 不保证稳定性

部署方法

1. Docker Compose(推荐)

sh
# 创建并切换到 QD 目录。
 mkdir -p $(pwd)/qd/config && cd $(pwd)/qd
 # 下载 docker-compose.yml
 wget https://fastly.jsdelivr.net/gh/qd-today/qd@master/docker-compose.yml
diff --git a/assets/zh_CN_guide_deployment.md.673da61a.lean.js b/assets/zh_CN_guide_deployment.md.0122de01.lean.js
similarity index 69%
rename from assets/zh_CN_guide_deployment.md.673da61a.lean.js
rename to assets/zh_CN_guide_deployment.md.0122de01.lean.js
index 127b8e7ea65..4b2b4f02f00 100644
--- a/assets/zh_CN_guide_deployment.md.673da61a.lean.js
+++ b/assets/zh_CN_guide_deployment.md.0122de01.lean.js
@@ -1 +1 @@
-import{_ as t,o as e,c as l,V as n}from"./chunks/framework.40f7bea3.js";const C=JSON.parse('{"title":"部署","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/deployment.md","filePath":"zh_CN/guide/deployment.md"}'),s={name:"zh_CN/guide/deployment.md"},a=n("",24),r=[a];function d(c,o,i,p,y,g){return e(),l("div",null,r)}const h=t(s,[["render",d]]);export{C as __pageData,h as default};
+import{_ as t,o as e,c as l,V as n}from"./chunks/framework.e7f80142.js";const C=JSON.parse('{"title":"部署","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/deployment.md","filePath":"zh_CN/guide/deployment.md"}'),s={name:"zh_CN/guide/deployment.md"},a=n("",24),r=[a];function d(c,o,i,p,y,g){return e(),l("div",null,r)}const h=t(s,[["render",d]]);export{C as __pageData,h as default};
diff --git a/assets/zh_CN_guide_faq.md.6c83682e.js b/assets/zh_CN_guide_faq.md.e6eac49a.js
similarity index 99%
rename from assets/zh_CN_guide_faq.md.6c83682e.js
rename to assets/zh_CN_guide_faq.md.e6eac49a.js
index bb7e4ecccb2..fdd095b1701 100644
--- a/assets/zh_CN_guide_faq.md.6c83682e.js
+++ b/assets/zh_CN_guide_faq.md.e6eac49a.js
@@ -1,4 +1,4 @@
-import{_ as s,o as a,c as o,V as n}from"./chunks/framework.40f7bea3.js";const A=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/faq.md","filePath":"zh_CN/guide/faq.md"}'),e={name:"zh_CN/guide/faq.md"},l=n(`

常见问题

如何备份和恢复数据库?

QD 默认使用 sqlite3 作为框架数据库,database.db 文件保存在 config 目录下。使用 Docker 容器部署时,可以使用 docker cp 命令备份数据库文件,然后使用 docker cp 命令在新容器中恢复数据库文件。

sh
# 数据库备份
+import{_ as s,o as a,c as o,V as n}from"./chunks/framework.e7f80142.js";const A=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/faq.md","filePath":"zh_CN/guide/faq.md"}'),e={name:"zh_CN/guide/faq.md"},l=n(`

常见问题

如何备份和恢复数据库?

QD 默认使用 sqlite3 作为框架数据库,database.db 文件保存在 config 目录下。使用 Docker 容器部署时,可以使用 docker cp 命令备份数据库文件,然后使用 docker cp 命令在新容器中恢复数据库文件。

sh
# 数据库备份
 docker cp container_name:/usr/src/app/config/database.db .
 # 数据库恢复
 docker cp database.db container_name:/usr/src/app/config/

如何在 Docker 中配置邮箱服务器?

sh
docker run -d --name qd -p 8923:80 -v $(pwd)/qd/config:/usr/src/app/config --env MAIL_SMTP=STMP服务器 --env MAIL_PORT=邮箱服务器端口 --env MAIL_USER=用户名 --env MAIL_PASSWORD=密码  --env DOMAIN=域名 qdtoday/qd

如何在 Docker 中使用 MySQL?

sh
docker run -d --name qd -p 8923:80 -v $(pwd)/qd/config:/usr/src/app/config --ENV DB_TYPE=mysql --ENV JAWSDB_MARIA_URL=mysql://用户名:密码@hostname:port/数据库名 qdtoday/qd

如何自己搭建 Docker 镜像?

请参考此镜像的构建文件 Dockerfile

如何查看当前框架支持的 API 和 Jinja2 模板变量?

请进入框架首页,然后点击左上角的 常用 API/过滤器 按钮,可以查看当前框架支持的API和Jinja2模板变量。

如何提交 bug 问题?

请在遇到问题后开启 Debug 模式,然后将详细的错误日志提交至 Issue

QD 模板一般需要哪些请求?

根据经验,以下请求是必要的:

  • 登录页面
  • 发布到登录页面
  • 发起 用户名、密码 请求
  • 发送后导致页面跳转的页面
  • 翻页前后的第一个网页

我的用户名和密码会被泄露吗?

为了帮助用户发起请求,终究需要记录用户名和密码。这只能靠服务器维护人员的自律来保证后端数据的安全。但在框架设计中,每个用户在存储时都使用安全密钥进行加密。使用密钥对用户数据进行加密,可以保证仅获取数据库就无法解密用户数据。(加密的用户数据包括用户上传的模板、用户为任务设置的变量等)

如果还是不放心,可以自己搭建QD框架,下载模板在自己的服务器上运行。

提示警告信息: Connect Redis falied: Error 10061

QD 使用 redis 作为限流工具,如果没有安装 redis 服务,框架会提示以下警告信息。

sh
[W xxxxxx xx:xx:xx QD.RedisDB redisdb:28] Connect Redis falied: Error 10061 connecting to localhost:6379. 由于目标计算机积极拒绝,无法连接。

然而,redis 在框架中并不是必须的,如果你不需要使用 限流 功能,可以忽略该警告信息。

建议使用 Docker compose 部署 QD 框架, Docker compose 配置已默认安装 redis 容器。

提示警告信息: Import PyCurl module falied

QD 使用 pycurl 模块来发送 HTTP Proxy 请求。如果没有安装 pycurl 模块,框架会提示以下警告信息。

sh
[W xxxxxx xx:xx:xx QD.Http.Fetcher fetcher:34] Import PyCurl module falied: No module named 'pycurl'

然而,pycurl 在框架中并不是必须的,如果你不需要使用 Proxy 功能,可以忽略该警告信息。

pycurl 模块在 Windows 系统上安装比较麻烦,需要安装 libcurl 库,具体安装方法请参考 pycurl官方文档

建议使用容器或 linux 系统部署 QD 框架, Docker 容器已预装Curl环境, 默认安装pycurl模组。

如何注册推送方式

你可以在工具箱->推送注册中注册不同的推送工具,以便在发生特定事件(例如定时任务执行失败)时向你推送通知

请参考 推送工具

公共模板更新页面提示错误代码为 undefined

公共模板更新页面提示错误代码为 undefined, 或者控制台显示 WebSocket 连接 failed 但不显示错误原因

请检查反向代理相关配置是否正确, 参考 Nginx反向代理WebSocket服务连接报错

参考配置如下:

Nginx
server {
diff --git a/assets/zh_CN_guide_faq.md.6c83682e.lean.js b/assets/zh_CN_guide_faq.md.e6eac49a.lean.js
similarity index 67%
rename from assets/zh_CN_guide_faq.md.6c83682e.lean.js
rename to assets/zh_CN_guide_faq.md.e6eac49a.lean.js
index 1358ed76f55..569e43f1efb 100644
--- a/assets/zh_CN_guide_faq.md.6c83682e.lean.js
+++ b/assets/zh_CN_guide_faq.md.e6eac49a.lean.js
@@ -1 +1 @@
-import{_ as s,o as a,c as o,V as n}from"./chunks/framework.40f7bea3.js";const A=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/faq.md","filePath":"zh_CN/guide/faq.md"}'),e={name:"zh_CN/guide/faq.md"},l=n("",38),p=[l];function r(t,c,i,d,C,y){return a(),o("div",null,p)}const h=s(e,[["render",r]]);export{A as __pageData,h as default};
+import{_ as s,o as a,c as o,V as n}from"./chunks/framework.e7f80142.js";const A=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/faq.md","filePath":"zh_CN/guide/faq.md"}'),e={name:"zh_CN/guide/faq.md"},l=n("",38),p=[l];function r(t,c,i,d,C,y){return a(),o("div",null,p)}const h=s(e,[["render",r]]);export{A as __pageData,h as default};
diff --git a/assets/zh_CN_guide_how-to-use.md.ceb0eba0.js b/assets/zh_CN_guide_how-to-use.md.7d8d7f5f.js
similarity index 99%
rename from assets/zh_CN_guide_how-to-use.md.ceb0eba0.js
rename to assets/zh_CN_guide_how-to-use.md.7d8d7f5f.js
index 64997a51f43..9cadea96bff 100644
--- a/assets/zh_CN_guide_how-to-use.md.ceb0eba0.js
+++ b/assets/zh_CN_guide_how-to-use.md.7d8d7f5f.js
@@ -1 +1 @@
-import{_ as e,a as o}from"./chunks/save_har.00ab98ce.js";import{_ as l,o as i,c as a,V as d}from"./chunks/framework.40f7bea3.js";const f=JSON.parse('{"title":"如何使用?","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/how-to-use.md","filePath":"zh_CN/guide/how-to-use.md"}'),c={name:"zh_CN/guide/how-to-use.md"},r=d('

如何使用?

获取 HAR

1. 什么是 HAR?

HAR:https://toolbox.googleapps.com/apps/har_analyzer/?lang=zh_CN

2. 抓包

2.1. Chrome 或 Edge

  1. F12Ctrl + Shift + I ,或从 Chrome 菜单中选择 更多工具 > 开发者工具
  2. 从屏幕底部或右侧打开的面板中,选择 网络 选项卡。
  3. 确保 网络 选项卡左上角的 录制 按钮显示为 红色
  4. 如果它是灰色的,单击一下开始录制。
  5. 选中 保留日志 旁边的框。 Preserve log
  6. 单击 清除 按钮以清除 网络 选项卡中的所有现有日志。
  7. 现在尝试重现您计划发起的 HTTP 请求。
  8. 重现任务后,右键单击网络请求网格上的任意位置。
  9. 选择 另存为带内容的 HARSave as HAR with Content
  10. 将文件保存到您的计算机。

2.2. 火狐

  1. F12 (或转到 Tools > Web Developer > Network )。
  2. 现在尝试重现您计划发起的 HTTP 请求。
  3. 右键单击​​加载的结果。
  4. 选择全部另存为 har。

2.3. Windows - Fiddler

  1. 打开 Fiddler,打开 Tools 菜单,选择 Options
  2. 选择 HTTPS 选项卡 ,勾选 Capture HTTPS Connects
  3. 选择 连接 选项卡,选中 解密 HTTPS 流量
  4. 现在尝试重现您计划发起的 HTTP 请求。
  5. 导出为 HAR 格式 - 请选择 HTTPArchive 作为导出方式。

2.4. IOS - Stream

  1. 打开 Stream。
  2. 抓取HTTPS请求前,需要安装CA证书, setting > General > About > Certificate Trust Settings 信任CA证书。
  3. 点击开始抓包按钮,手机会自动弹出VPN配置窗口,然后选择允许。
  4. 现在尝试重现您计划发起的 HTTP 请求。
  5. 在应用页面,点击停止抓拍结束本次抓拍。
  6. 导出HAR文件。

3. 公共模板

  1. 点击 我的模板 右侧的 社区模板 按钮。
  2. 更新存储库以获取最新的 HAR 文件列表。
  3. 选择你要使用的HAR文件,点击 Subscribe 按钮订阅模板。
  4. 根据需要修改模板。
  5. 然后跳到 3.编辑模板 继续编辑。

上传 HAR 文件

  1. 访问并登录 QD 首页。
  2. 点击 我的模板 右侧的 + 按钮。
  3. 上传刚刚保存的 HAR 文件。
  4. 点击 上传 继续。

编辑模板

  1. 将用户名、密码、cookie、header 等根据用户变化的部分替换成类似 {{ username }} 的模板。(模板支持 jinja2 语法
  2. 在请求编辑中使用测试面板测试模板是否正确返回,使用正确和错误的用户名进行测试。
  3. 填写 成功/失败断言,这有助于检测模板任务是否运行失败。
  4. 当请求中需要上一次请求的一些数据时,使用变量抽取,通过正则化抽取数据,保存在环境变量中。使用组选择器 ab(\\w+)cd 选择其中的一部分。
  5. 使用 __log__ 提取任务日志。
  6. 当所有请求编辑完成后,使用下载按钮旁边的 测试 来测试整体。
  7. 正在编辑的模板会自动保存在浏览器缓存中,不用担心丢失。
  8. 单击 保存 按钮保存模板。
  9. 单击 下载 按钮下载模板。

创建定时任务

  1. 点击 我的任务 右侧的 + 按钮。
  2. 选择刚刚创建的模板。
  3. 填写任务变量,任务间隔、任务组和任务执行时间。
  4. 单击 测试 按钮测试任务。
  5. 单击保存按钮保存任务。
',21),t=[r];function h(s,n,_,m,u,b){return i(),a("div",null,t)}const T=l(c,[["render",h]]);export{f as __pageData,T as default}; +import{_ as e,a as o}from"./chunks/save_har.00ab98ce.js";import{_ as l,o as i,c as a,V as d}from"./chunks/framework.e7f80142.js";const f=JSON.parse('{"title":"如何使用?","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/how-to-use.md","filePath":"zh_CN/guide/how-to-use.md"}'),c={name:"zh_CN/guide/how-to-use.md"},r=d('

如何使用?

获取 HAR

1. 什么是 HAR?

HAR:https://toolbox.googleapps.com/apps/har_analyzer/?lang=zh_CN

2. 抓包

2.1. Chrome 或 Edge

  1. F12Ctrl + Shift + I ,或从 Chrome 菜单中选择 更多工具 > 开发者工具
  2. 从屏幕底部或右侧打开的面板中,选择 网络 选项卡。
  3. 确保 网络 选项卡左上角的 录制 按钮显示为 红色
  4. 如果它是灰色的,单击一下开始录制。
  5. 选中 保留日志 旁边的框。 Preserve log
  6. 单击 清除 按钮以清除 网络 选项卡中的所有现有日志。
  7. 现在尝试重现您计划发起的 HTTP 请求。
  8. 重现任务后,右键单击网络请求网格上的任意位置。
  9. 选择 另存为带内容的 HARSave as HAR with Content
  10. 将文件保存到您的计算机。

2.2. 火狐

  1. F12 (或转到 Tools > Web Developer > Network )。
  2. 现在尝试重现您计划发起的 HTTP 请求。
  3. 右键单击​​加载的结果。
  4. 选择全部另存为 har。

2.3. Windows - Fiddler

  1. 打开 Fiddler,打开 Tools 菜单,选择 Options
  2. 选择 HTTPS 选项卡 ,勾选 Capture HTTPS Connects
  3. 选择 连接 选项卡,选中 解密 HTTPS 流量
  4. 现在尝试重现您计划发起的 HTTP 请求。
  5. 导出为 HAR 格式 - 请选择 HTTPArchive 作为导出方式。

2.4. IOS - Stream

  1. 打开 Stream。
  2. 抓取HTTPS请求前,需要安装CA证书, setting > General > About > Certificate Trust Settings 信任CA证书。
  3. 点击开始抓包按钮,手机会自动弹出VPN配置窗口,然后选择允许。
  4. 现在尝试重现您计划发起的 HTTP 请求。
  5. 在应用页面,点击停止抓拍结束本次抓拍。
  6. 导出HAR文件。

3. 公共模板

  1. 点击 我的模板 右侧的 社区模板 按钮。
  2. 更新存储库以获取最新的 HAR 文件列表。
  3. 选择你要使用的HAR文件,点击 Subscribe 按钮订阅模板。
  4. 根据需要修改模板。
  5. 然后跳到 3.编辑模板 继续编辑。

上传 HAR 文件

  1. 访问并登录 QD 首页。
  2. 点击 我的模板 右侧的 + 按钮。
  3. 上传刚刚保存的 HAR 文件。
  4. 点击 上传 继续。

编辑模板

  1. 将用户名、密码、cookie、header 等根据用户变化的部分替换成类似 {{ username }} 的模板。(模板支持 jinja2 语法
  2. 在请求编辑中使用测试面板测试模板是否正确返回,使用正确和错误的用户名进行测试。
  3. 填写 成功/失败断言,这有助于检测模板任务是否运行失败。
  4. 当请求中需要上一次请求的一些数据时,使用变量抽取,通过正则化抽取数据,保存在环境变量中。使用组选择器 ab(\\w+)cd 选择其中的一部分。
  5. 使用 __log__ 提取任务日志。
  6. 当所有请求编辑完成后,使用下载按钮旁边的 测试 来测试整体。
  7. 正在编辑的模板会自动保存在浏览器缓存中,不用担心丢失。
  8. 单击 保存 按钮保存模板。
  9. 单击 下载 按钮下载模板。

创建定时任务

  1. 点击 我的任务 右侧的 + 按钮。
  2. 选择刚刚创建的模板。
  3. 填写任务变量,任务间隔、任务组和任务执行时间。
  4. 单击 测试 按钮测试任务。
  5. 单击保存按钮保存任务。
',21),t=[r];function h(s,n,_,m,u,b){return i(),a("div",null,t)}const T=l(c,[["render",h]]);export{f as __pageData,T as default}; diff --git a/assets/zh_CN_guide_how-to-use.md.ceb0eba0.lean.js b/assets/zh_CN_guide_how-to-use.md.7d8d7f5f.lean.js similarity index 86% rename from assets/zh_CN_guide_how-to-use.md.ceb0eba0.lean.js rename to assets/zh_CN_guide_how-to-use.md.7d8d7f5f.lean.js index 3f21927ba38..45a09981864 100644 --- a/assets/zh_CN_guide_how-to-use.md.ceb0eba0.lean.js +++ b/assets/zh_CN_guide_how-to-use.md.7d8d7f5f.lean.js @@ -1 +1 @@ -import{_ as e,a as o}from"./chunks/save_har.00ab98ce.js";import{_ as l,o as i,c as a,V as d}from"./chunks/framework.40f7bea3.js";const f=JSON.parse('{"title":"如何使用?","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/how-to-use.md","filePath":"zh_CN/guide/how-to-use.md"}'),c={name:"zh_CN/guide/how-to-use.md"},r=d("",21),t=[r];function h(s,n,_,m,u,b){return i(),a("div",null,t)}const T=l(c,[["render",h]]);export{f as __pageData,T as default}; +import{_ as e,a as o}from"./chunks/save_har.00ab98ce.js";import{_ as l,o as i,c as a,V as d}from"./chunks/framework.e7f80142.js";const f=JSON.parse('{"title":"如何使用?","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/how-to-use.md","filePath":"zh_CN/guide/how-to-use.md"}'),c={name:"zh_CN/guide/how-to-use.md"},r=d("",21),t=[r];function h(s,n,_,m,u,b){return i(),a("div",null,t)}const T=l(c,[["render",h]]);export{f as __pageData,T as default}; diff --git a/assets/zh_CN_guide_update.md.a4e05c41.js b/assets/zh_CN_guide_update.md.859c4a2e.js similarity index 97% rename from assets/zh_CN_guide_update.md.a4e05c41.js rename to assets/zh_CN_guide_update.md.859c4a2e.js index 78a877dbde7..4204b498bb0 100644 --- a/assets/zh_CN_guide_update.md.a4e05c41.js +++ b/assets/zh_CN_guide_update.md.859c4a2e.js @@ -1,4 +1,4 @@ -import{_ as s,o as a,c as n,V as e}from"./chunks/framework.40f7bea3.js";const D=JSON.parse('{"title":"更新方法","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/update.md","filePath":"zh_CN/guide/update.md"}'),o={name:"zh_CN/guide/update.md"},l=e(`

更新方法

操作前请一定要记得备份数据库!!!

更新后请重启容器或清空浏览器缓存。

源码部署更新

sh
# 先 cd 到源码所在目录, 执行命令后重启进程
+import{_ as s,o as a,c as n,V as e}from"./chunks/framework.e7f80142.js";const D=JSON.parse('{"title":"更新方法","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/update.md","filePath":"zh_CN/guide/update.md"}'),o={name:"zh_CN/guide/update.md"},l=e(`

更新方法

操作前请一定要记得备份数据库!!!

更新后请重启容器或清空浏览器缓存。

源码部署更新

sh
# 先 cd 到源码所在目录, 执行命令后重启进程
 wget https://gitee.com/qd-today/qd/raw/master/update.sh -O ./update.sh && \\
 sh ./update.sh

Docker Compose 部署更新

sh
# 先 cd 到 docker-compose.yml 所在目录, 执行命令后重启容器
 docker compose pull && \\
diff --git a/assets/zh_CN_guide_update.md.a4e05c41.lean.js b/assets/zh_CN_guide_update.md.859c4a2e.lean.js
similarity index 68%
rename from assets/zh_CN_guide_update.md.a4e05c41.lean.js
rename to assets/zh_CN_guide_update.md.859c4a2e.lean.js
index 4e2787dae4e..d132f973c21 100644
--- a/assets/zh_CN_guide_update.md.a4e05c41.lean.js
+++ b/assets/zh_CN_guide_update.md.859c4a2e.lean.js
@@ -1 +1 @@
-import{_ as s,o as a,c as n,V as e}from"./chunks/framework.40f7bea3.js";const D=JSON.parse('{"title":"更新方法","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/update.md","filePath":"zh_CN/guide/update.md"}'),o={name:"zh_CN/guide/update.md"},l=e("",10),p=[l];function t(c,r,C,i,d,y){return a(),n("div",null,p)}const A=s(o,[["render",t]]);export{D as __pageData,A as default};
+import{_ as s,o as a,c as n,V as e}from"./chunks/framework.e7f80142.js";const D=JSON.parse('{"title":"更新方法","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/update.md","filePath":"zh_CN/guide/update.md"}'),o={name:"zh_CN/guide/update.md"},l=e("",10),p=[l];function t(c,r,C,i,d,y){return a(),n("div",null,p)}const A=s(o,[["render",t]]);export{D as __pageData,A as default};
diff --git a/assets/zh_CN_guide_what-is-qd.md.46858807.js b/assets/zh_CN_guide_what-is-qd.md.0c57a771.js
similarity index 94%
rename from assets/zh_CN_guide_what-is-qd.md.46858807.js
rename to assets/zh_CN_guide_what-is-qd.md.0c57a771.js
index 4e8312f7dd8..15d8896b927 100644
--- a/assets/zh_CN_guide_what-is-qd.md.46858807.js
+++ b/assets/zh_CN_guide_what-is-qd.md.0c57a771.js
@@ -1 +1 @@
-import{_ as a,o as e,c as t,V as r}from"./chunks/framework.40f7bea3.js";const m=JSON.parse('{"title":"什么是 QD?","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/what-is-qd.md","filePath":"zh_CN/guide/what-is-qd.md"}'),o={name:"zh_CN/guide/what-is-qd.md"},i=r('

什么是 QD?

QD 是 一个 基于 HAR 编辑器和 Tornado 服务端的 HTTP 定时任务自动执行 Web 框架。

特性

  • 基于Har: 仅需上传通过抓包得到的 Har, 即可制作框架所需的 HTTP 任务模板。
  • Tornado 服务端: 使用 Tornado 作为服务端, 以实现异步响应前端和发起 HTTP 请求。
  • API & 插件支持: 内置多种 API 和过滤器用于模板制作, 后续将提供自定义插件支持。
  • 开源: QD 是一个基于 MIT 许可证的开源项目。

如何部署

请参考: 部署

如何使用

请参考: 如何使用

如何更新

请参考: 更新

讨论

',12),h=[i];function l(s,n,d,c,u,_){return e(),t("div",null,h)}const f=a(o,[["render",l]]);export{m as __pageData,f as default}; +import{_ as a,o as e,c as t,V as r}from"./chunks/framework.e7f80142.js";const m=JSON.parse('{"title":"什么是 QD?","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/what-is-qd.md","filePath":"zh_CN/guide/what-is-qd.md"}'),o={name:"zh_CN/guide/what-is-qd.md"},i=r('

什么是 QD?

QD 是 一个 基于 HAR 编辑器和 Tornado 服务端的 HTTP 定时任务自动执行 Web 框架。

特性

  • 基于Har: 仅需上传通过抓包得到的 Har, 即可制作框架所需的 HTTP 任务模板。
  • Tornado 服务端: 使用 Tornado 作为服务端, 以实现异步响应前端和发起 HTTP 请求。
  • API & 插件支持: 内置多种 API 和过滤器用于模板制作, 后续将提供自定义插件支持。
  • 开源: QD 是一个基于 MIT 许可证的开源项目。

如何部署

请参考: 部署

如何使用

请参考: 如何使用

如何更新

请参考: 更新

讨论

',12),h=[i];function l(s,n,d,c,u,_){return e(),t("div",null,h)}const f=a(o,[["render",l]]);export{m as __pageData,f as default}; diff --git a/assets/zh_CN_guide_what-is-qd.md.46858807.lean.js b/assets/zh_CN_guide_what-is-qd.md.0c57a771.lean.js similarity index 69% rename from assets/zh_CN_guide_what-is-qd.md.46858807.lean.js rename to assets/zh_CN_guide_what-is-qd.md.0c57a771.lean.js index bfd9ec76c07..26f54758d86 100644 --- a/assets/zh_CN_guide_what-is-qd.md.46858807.lean.js +++ b/assets/zh_CN_guide_what-is-qd.md.0c57a771.lean.js @@ -1 +1 @@ -import{_ as a,o as e,c as t,V as r}from"./chunks/framework.40f7bea3.js";const m=JSON.parse('{"title":"什么是 QD?","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/what-is-qd.md","filePath":"zh_CN/guide/what-is-qd.md"}'),o={name:"zh_CN/guide/what-is-qd.md"},i=r("",12),h=[i];function l(s,n,d,c,u,_){return e(),t("div",null,h)}const f=a(o,[["render",l]]);export{m as __pageData,f as default}; +import{_ as a,o as e,c as t,V as r}from"./chunks/framework.e7f80142.js";const m=JSON.parse('{"title":"什么是 QD?","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/guide/what-is-qd.md","filePath":"zh_CN/guide/what-is-qd.md"}'),o={name:"zh_CN/guide/what-is-qd.md"},i=r("",12),h=[i];function l(s,n,d,c,u,_){return e(),t("div",null,h)}const f=a(o,[["render",l]]);export{m as __pageData,f as default}; diff --git a/assets/zh_CN_index.md.493bd460.js b/assets/zh_CN_index.md.58b391dd.js similarity index 94% rename from assets/zh_CN_index.md.493bd460.js rename to assets/zh_CN_index.md.58b391dd.js index 395b3642863..c2c40d082d8 100644 --- a/assets/zh_CN_index.md.493bd460.js +++ b/assets/zh_CN_index.md.58b391dd.js @@ -1 +1 @@ -import{_ as t,o as e,c as a}from"./chunks/framework.40f7bea3.js";const m=JSON.parse('{"title":"HTTP定时任务自动执行框架","description":"","frontmatter":{"layout":"home","title":"HTTP定时任务自动执行框架","hero":{"name":"QD","text":"一个 HTTP 定时任务自动执行 Web 框架","tagline":"","image":{"src":"/logo.png","alt":"QD"},"actions":[{"theme":"brand","text":"开始了解","link":"/zh_CN/guide/what-is-qd"},{"theme":"alt","text":"在 GitHub 中查看","link":"https://github.com/qd-today/qd"}]},"features":[{"title":"基于Har","details":"仅需上传通过抓包得到的 Har, 即可制作框架所需的 HTTP 任务模板。"},{"title":"Tornado 服务端","details":"使用 Tornado 作为服务端, 以实现异步响应前端请求和发起 HTTP 请求。"},{"title":"API & 插件支持","details":"内置多种 API 和过滤器用于模板制作, 后续将提供自定义插件支持。"},{"title":"开源项目","details":"QD 是一个基于 MIT 许可证的开源项目。"}]},"headers":[],"relativePath":"zh_CN/index.md","filePath":"zh_CN/index.md"}'),i={name:"zh_CN/index.md"};function o(n,d,r,s,l,c){return e(),a("div")}const _=t(i,[["render",o]]);export{m as __pageData,_ as default}; +import{_ as t,o as e,c as a}from"./chunks/framework.e7f80142.js";const m=JSON.parse('{"title":"HTTP定时任务自动执行框架","description":"","frontmatter":{"layout":"home","title":"HTTP定时任务自动执行框架","hero":{"name":"QD","text":"一个 HTTP 定时任务自动执行 Web 框架","tagline":"","image":{"src":"/logo.png","alt":"QD"},"actions":[{"theme":"brand","text":"开始了解","link":"/zh_CN/guide/what-is-qd"},{"theme":"alt","text":"在 GitHub 中查看","link":"https://github.com/qd-today/qd"}]},"features":[{"title":"基于Har","details":"仅需上传通过抓包得到的 Har, 即可制作框架所需的 HTTP 任务模板。"},{"title":"Tornado 服务端","details":"使用 Tornado 作为服务端, 以实现异步响应前端请求和发起 HTTP 请求。"},{"title":"API & 插件支持","details":"内置多种 API 和过滤器用于模板制作, 后续将提供自定义插件支持。"},{"title":"开源项目","details":"QD 是一个基于 MIT 许可证的开源项目。"}]},"headers":[],"relativePath":"zh_CN/index.md","filePath":"zh_CN/index.md"}'),i={name:"zh_CN/index.md"};function o(n,d,r,s,l,c){return e(),a("div")}const _=t(i,[["render",o]]);export{m as __pageData,_ as default}; diff --git a/assets/zh_CN_index.md.493bd460.lean.js b/assets/zh_CN_index.md.58b391dd.lean.js similarity index 94% rename from assets/zh_CN_index.md.493bd460.lean.js rename to assets/zh_CN_index.md.58b391dd.lean.js index 395b3642863..c2c40d082d8 100644 --- a/assets/zh_CN_index.md.493bd460.lean.js +++ b/assets/zh_CN_index.md.58b391dd.lean.js @@ -1 +1 @@ -import{_ as t,o as e,c as a}from"./chunks/framework.40f7bea3.js";const m=JSON.parse('{"title":"HTTP定时任务自动执行框架","description":"","frontmatter":{"layout":"home","title":"HTTP定时任务自动执行框架","hero":{"name":"QD","text":"一个 HTTP 定时任务自动执行 Web 框架","tagline":"","image":{"src":"/logo.png","alt":"QD"},"actions":[{"theme":"brand","text":"开始了解","link":"/zh_CN/guide/what-is-qd"},{"theme":"alt","text":"在 GitHub 中查看","link":"https://github.com/qd-today/qd"}]},"features":[{"title":"基于Har","details":"仅需上传通过抓包得到的 Har, 即可制作框架所需的 HTTP 任务模板。"},{"title":"Tornado 服务端","details":"使用 Tornado 作为服务端, 以实现异步响应前端请求和发起 HTTP 请求。"},{"title":"API & 插件支持","details":"内置多种 API 和过滤器用于模板制作, 后续将提供自定义插件支持。"},{"title":"开源项目","details":"QD 是一个基于 MIT 许可证的开源项目。"}]},"headers":[],"relativePath":"zh_CN/index.md","filePath":"zh_CN/index.md"}'),i={name:"zh_CN/index.md"};function o(n,d,r,s,l,c){return e(),a("div")}const _=t(i,[["render",o]]);export{m as __pageData,_ as default}; +import{_ as t,o as e,c as a}from"./chunks/framework.e7f80142.js";const m=JSON.parse('{"title":"HTTP定时任务自动执行框架","description":"","frontmatter":{"layout":"home","title":"HTTP定时任务自动执行框架","hero":{"name":"QD","text":"一个 HTTP 定时任务自动执行 Web 框架","tagline":"","image":{"src":"/logo.png","alt":"QD"},"actions":[{"theme":"brand","text":"开始了解","link":"/zh_CN/guide/what-is-qd"},{"theme":"alt","text":"在 GitHub 中查看","link":"https://github.com/qd-today/qd"}]},"features":[{"title":"基于Har","details":"仅需上传通过抓包得到的 Har, 即可制作框架所需的 HTTP 任务模板。"},{"title":"Tornado 服务端","details":"使用 Tornado 作为服务端, 以实现异步响应前端请求和发起 HTTP 请求。"},{"title":"API & 插件支持","details":"内置多种 API 和过滤器用于模板制作, 后续将提供自定义插件支持。"},{"title":"开源项目","details":"QD 是一个基于 MIT 许可证的开源项目。"}]},"headers":[],"relativePath":"zh_CN/index.md","filePath":"zh_CN/index.md"}'),i={name:"zh_CN/index.md"};function o(n,d,r,s,l,c){return e(),a("div")}const _=t(i,[["render",o]]);export{m as __pageData,_ as default}; diff --git a/assets/zh_CN_toolbox_pusher.md.e845cf98.js b/assets/zh_CN_toolbox_pusher.md.3577463c.js similarity index 99% rename from assets/zh_CN_toolbox_pusher.md.e845cf98.js rename to assets/zh_CN_toolbox_pusher.md.3577463c.js index 170f853a82f..091b50ec380 100644 --- a/assets/zh_CN_toolbox_pusher.md.e845cf98.js +++ b/assets/zh_CN_toolbox_pusher.md.3577463c.js @@ -1,4 +1,4 @@ -import{_ as t,o as e,c as a,V as l}from"./chunks/framework.40f7bea3.js";const A=JSON.parse('{"title":"推送工具","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/toolbox/pusher.md","filePath":"zh_CN/toolbox/pusher.md"}'),r={name:"zh_CN/toolbox/pusher.md"},n=l(`

推送工具

推送注册

QD 框架提供多种推送方式,你可以在 工具箱->推送注册 中注册不同的推送工具,以便在发生特定事件(例如定时任务执行失败)时向你推送通知。

提醒

推送注册时填写的参数以 ; 分隔并连接, 如果参数值为空, 请务必保留该参数位置后的 ; , 否则可能导致参数解析错误.

推送注册测试

工具箱->推送注册 中注册推送方式后, 可以点击 测试 按钮来测试推送方式是否可用.

如果推送方式可用, 则会收到一条推送消息, 否则会提示推送失败.

提醒

进行推送注册测试时, 请确保以下条件已满足:

  • 填写了正确的参数;

  • 邮箱密码 中填写了 QD 框架的用户邮箱和密码.

推送注册前值

工具箱->推送注册 中注册推送方式后, 可以点击 前值 按钮来查看推送注册的前值.

提醒

查看推送注册前值时, 请确保 邮箱密码 中填写了 QD 框架的用户邮箱和密码.

推送方式

QD 框架提供以下推送方式:

邮件推送

邮件推送无需在 工具箱->推送注册 中设置参数, 需要在环境变量中配置以下参数:

变量名是否必须默认值说明
MAIL_SMTP""邮箱SMTP服务器
MAIL_PORT465邮箱SMTP服务器端口
MAIL_USER""邮箱用户名
MAIL_PASSWORD""邮箱密码
MAIL_FROMMAIL_USER发送时使用的邮箱,默认与MAIL_USER相同
MAIL_DOMAIN_HTTPSFalse发送的邮件链接启用HTTPS,
非框架前端使用HTTPS,
如果前端需要HTTPS, 请使用反向代理.

如果你使用的是以下邮箱, 参考下方的SMTP开启方式和配置方法来获取你的SMTP服务器地址和端口。

邮箱SMTP开启方式SMTP配置方法其他说明
腾讯企业邮箱如何开启腾讯企业邮箱的POP/SMTP/IMAP服务?常用邮件客户端软件设置成员如何绑定/关联微信以及开启安全登录获取客户端专用密码?
QQ邮箱如何开启QQ邮箱的POP3/SMTP/IMAP服务?如何打开POP3/SMTP/IMAP功能?开启POP3/SMTP/IMAP功能为什么需要先设置独立密码?
网易企业邮箱-企业邮箱的POP、SMTP、IMAP服务器地址设置。什么是客户端授权码,如何使用?
网易邮箱什么是POP3、SMTP及IMAP?如何开启客户端协议?-
Gmail-如何使用POP3/SMTP/IMAP服务?如何使用客户端授权密码?
Outlook-POP、IMAP 和 SMTP 设置对不支持双重验证的应用使用应用密码

MailGun

如果您配置了 MailGun, 请在环境变量中配置以下参数:

变量名是否必须默认值说明
MAILGUN_KEY""MailGun API Key
MAILGUN_DOMAINDOMAINMailGun Domain,
默认为环境变量中的 DOMAIN 值,
请在环境变量中配置 DOMAIN 值,
并在 MailGun 控制台中设置对应的 Domain,
否则无法使用 MailGun

Bark 推送

Bark 推送需要在 工具箱->推送注册 中设置参数:

参数名是否必须默认值说明
BarkUrl""Bark 推送地址,
格式为 https://api.day.app/推送码,
推送码可在 Bark 客户端中获取,
如果你使用的是自建 Bark 服务,
请将 https://api.day.app/ 替换为你的 Bark 服务地址 .
例如: http://bark.example.com/推送码

Server 酱推送

Server 酱推送需要在 工具箱->推送注册 中设置参数:

参数名是否必须默认值说明
skey""Server 酱推送 SCKEY,
可在 Server 酱 中获取对应的 SendKey

Telegram Bot 推送

Telegram Bot 推送需要在 工具箱->推送注册 中设置参数:

参数名是否必须默认值说明
TG_TOKEN""Telegram Bot Token,
可在 BotFather 中获取,
应当为 Bot 的 ID 以及对应的 Key 的组合,但是不包括 bot,
即 token 形式:1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
TG_USERID""Telegram Chat ID,
可在 Telegram API 中获取,
Telegram API中的 chat_id 字段,如 222222222
TG_HOST""Telegram API Host,
可为域名或IP地址,
例如 tg.mydomain.com,
也可以带上 http:// 或者 https:// 前缀,
如果留空, 则使用默认值 api.telegram.org
PROXY_URL""Proxy 代理地址,
格式为 scheme://username:password@host:port,
例如 http://user:password@host:port,
如果留空, 则不使用 Proxy 代理
PUSH_PIC_URL""自定义推送图片地址,
如果留空, 则使用环境变量 PUSH_PIC_URL
示例

假设你已经创建了一个具有自定义域名的 Telegram Bot API:

https://tg.mydomain.com/bot1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/sendMessage?chat_id=222222222&text=HelloWorld

上面这个请求将会向222222222这个聊天发送一条HelloWorld消息, 那么在注册 Telegram Bot 作为推送方式时:

  • TG_TOKEN1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  • TG_USERID222222222
  • TG_HOSTtg.mydomain.com

因此最终填写形式形如:

Text
1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;222222222;tg.mydomain.com

钉钉推送

钉钉推送需要在 工具箱->推送注册 中设置参数:

参数名是否必须默认值说明
DINGDING_TOKEN""钉钉推送 Token,
可在 自定义机器人接入 中获取,
如果你在 安全设置 中设置了 IP地址段 ,
请将 QD 服务器的 IP 地址添加到 IP地址段 中,
否则无法接收到推送消息;
如果你在 安全设置 中设置了 自定义关键词 ,
请将 QD/推送/测试 添加到 自定义关键词 中,
否则无法接收到推送消息;
请勿在 安全设置 中开启 加签, QD 框架暂不支持钉钉加签推送.
PUSH_PIC_URL""自定义推送图片地址,
如果留空, 则使用环境变量 PUSH_PIC_URL

WXPusher 推送

WXPusher 推送需要在 工具箱->推送注册 中设置参数:

参数名是否必须默认值说明
APPTOKEN""WXPusher 推送 Token,
可在 WXPusher 中获取
WxPusher_UID""WXPusher 推送 UID,
可在 WXPusher 中获取

企业微信应用推送

企业微信应用推送需要在 工具箱->推送注册 中设置参数:

参数名是否必须默认值说明
CorpID""企业微信 CorpID,
可在 企业微信 中获取
AgentID""企业微信应用 AgentID,
可在 企业微信 中获取
AgentSecret""企业微信应用 Secret,
可在 企业微信 中获取
PUSH_PIC_URL_or_Media_id""自定义推送图片地址或 Media_id,
Media_id 可以通过 企业微信 接口获取,
如果留空, 则使用环境变量 PUSH_PIC_URL
QYWX_PROXY_HOST""企业微信 Host,
可为域名或IP地址,
例如 qywx.mydomain.com,
也可以带上 http:// 或者 https:// 前缀,
如果留空, 则使用默认值 https://qyapi.weixin.qq.com/

QYWX_PROXY_HOST

如果你使用 Nginx 代理企业微信应用推送, 以下为 Nginx 配置示例:

Nginx
server {
+import{_ as t,o as e,c as a,V as l}from"./chunks/framework.e7f80142.js";const A=JSON.parse('{"title":"推送工具","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/toolbox/pusher.md","filePath":"zh_CN/toolbox/pusher.md"}'),r={name:"zh_CN/toolbox/pusher.md"},n=l(`

推送工具

推送注册

QD 框架提供多种推送方式,你可以在 工具箱->推送注册 中注册不同的推送工具,以便在发生特定事件(例如定时任务执行失败)时向你推送通知。

提醒

推送注册时填写的参数以 ; 分隔并连接, 如果参数值为空, 请务必保留该参数位置后的 ; , 否则可能导致参数解析错误.

推送注册测试

工具箱->推送注册 中注册推送方式后, 可以点击 测试 按钮来测试推送方式是否可用.

如果推送方式可用, 则会收到一条推送消息, 否则会提示推送失败.

提醒

进行推送注册测试时, 请确保以下条件已满足:

  • 填写了正确的参数;

  • 邮箱密码 中填写了 QD 框架的用户邮箱和密码.

推送注册前值

工具箱->推送注册 中注册推送方式后, 可以点击 前值 按钮来查看推送注册的前值.

提醒

查看推送注册前值时, 请确保 邮箱密码 中填写了 QD 框架的用户邮箱和密码.

推送方式

QD 框架提供以下推送方式:

邮件推送

邮件推送无需在 工具箱->推送注册 中设置参数, 需要在环境变量中配置以下参数:

变量名是否必须默认值说明
MAIL_SMTP""邮箱SMTP服务器
MAIL_PORT465邮箱SMTP服务器端口
MAIL_USER""邮箱用户名
MAIL_PASSWORD""邮箱密码
MAIL_FROMMAIL_USER发送时使用的邮箱,默认与MAIL_USER相同
MAIL_DOMAIN_HTTPSFalse发送的邮件链接启用HTTPS,
非框架前端使用HTTPS,
如果前端需要HTTPS, 请使用反向代理.

如果你使用的是以下邮箱, 参考下方的SMTP开启方式和配置方法来获取你的SMTP服务器地址和端口。

邮箱SMTP开启方式SMTP配置方法其他说明
腾讯企业邮箱如何开启腾讯企业邮箱的POP/SMTP/IMAP服务?常用邮件客户端软件设置成员如何绑定/关联微信以及开启安全登录获取客户端专用密码?
QQ邮箱如何开启QQ邮箱的POP3/SMTP/IMAP服务?如何打开POP3/SMTP/IMAP功能?开启POP3/SMTP/IMAP功能为什么需要先设置独立密码?
网易企业邮箱-企业邮箱的POP、SMTP、IMAP服务器地址设置。什么是客户端授权码,如何使用?
网易邮箱什么是POP3、SMTP及IMAP?如何开启客户端协议?-
Gmail-如何使用POP3/SMTP/IMAP服务?如何使用客户端授权密码?
Outlook-POP、IMAP 和 SMTP 设置对不支持双重验证的应用使用应用密码

MailGun

如果您配置了 MailGun, 请在环境变量中配置以下参数:

变量名是否必须默认值说明
MAILGUN_KEY""MailGun API Key
MAILGUN_DOMAINDOMAINMailGun Domain,
默认为环境变量中的 DOMAIN 值,
请在环境变量中配置 DOMAIN 值,
并在 MailGun 控制台中设置对应的 Domain,
否则无法使用 MailGun

Bark 推送

Bark 推送需要在 工具箱->推送注册 中设置参数:

参数名是否必须默认值说明
BarkUrl""Bark 推送地址,
格式为 https://api.day.app/推送码,
推送码可在 Bark 客户端中获取,
如果你使用的是自建 Bark 服务,
请将 https://api.day.app/ 替换为你的 Bark 服务地址 .
例如: http://bark.example.com/推送码

Server 酱推送

Server 酱推送需要在 工具箱->推送注册 中设置参数:

参数名是否必须默认值说明
skey""Server 酱推送 SCKEY,
可在 Server 酱 中获取对应的 SendKey

Telegram Bot 推送

Telegram Bot 推送需要在 工具箱->推送注册 中设置参数:

参数名是否必须默认值说明
TG_TOKEN""Telegram Bot Token,
可在 BotFather 中获取,
应当为 Bot 的 ID 以及对应的 Key 的组合,但是不包括 bot,
即 token 形式:1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
TG_USERID""Telegram Chat ID,
可在 Telegram API 中获取,
Telegram API中的 chat_id 字段,如 222222222
TG_HOST""Telegram API Host,
可为域名或IP地址,
例如 tg.mydomain.com,
也可以带上 http:// 或者 https:// 前缀,
如果留空, 则使用默认值 api.telegram.org
PROXY_URL""Proxy 代理地址,
格式为 scheme://username:password@host:port,
例如 http://user:password@host:port,
如果留空, 则不使用 Proxy 代理
PUSH_PIC_URL""自定义推送图片地址,
如果留空, 则使用环境变量 PUSH_PIC_URL
示例

假设你已经创建了一个具有自定义域名的 Telegram Bot API:

https://tg.mydomain.com/bot1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/sendMessage?chat_id=222222222&text=HelloWorld

上面这个请求将会向222222222这个聊天发送一条HelloWorld消息, 那么在注册 Telegram Bot 作为推送方式时:

  • TG_TOKEN1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  • TG_USERID222222222
  • TG_HOSTtg.mydomain.com

因此最终填写形式形如:

Text
1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;222222222;tg.mydomain.com

钉钉推送

钉钉推送需要在 工具箱->推送注册 中设置参数:

参数名是否必须默认值说明
DINGDING_TOKEN""钉钉推送 Token,
可在 自定义机器人接入 中获取,
如果你在 安全设置 中设置了 IP地址段 ,
请将 QD 服务器的 IP 地址添加到 IP地址段 中,
否则无法接收到推送消息;
如果你在 安全设置 中设置了 自定义关键词 ,
请将 QD/推送/测试 添加到 自定义关键词 中,
否则无法接收到推送消息;
请勿在 安全设置 中开启 加签, QD 框架暂不支持钉钉加签推送.
PUSH_PIC_URL""自定义推送图片地址,
如果留空, 则使用环境变量 PUSH_PIC_URL

WXPusher 推送

WXPusher 推送需要在 工具箱->推送注册 中设置参数:

参数名是否必须默认值说明
APPTOKEN""WXPusher 推送 Token,
可在 WXPusher 中获取
WxPusher_UID""WXPusher 推送 UID,
可在 WXPusher 中获取

企业微信应用推送

企业微信应用推送需要在 工具箱->推送注册 中设置参数:

参数名是否必须默认值说明
CorpID""企业微信 CorpID,
可在 企业微信 中获取
AgentID""企业微信应用 AgentID,
可在 企业微信 中获取
AgentSecret""企业微信应用 Secret,
可在 企业微信 中获取
PUSH_PIC_URL_or_Media_id""自定义推送图片地址或 Media_id,
Media_id 可以通过 企业微信 接口获取,
如果留空, 则使用环境变量 PUSH_PIC_URL
QYWX_PROXY_HOST""企业微信 Host,
可为域名或IP地址,
例如 qywx.mydomain.com,
也可以带上 http:// 或者 https:// 前缀,
如果留空, 则使用默认值 https://qyapi.weixin.qq.com/

QYWX_PROXY_HOST

如果你使用 Nginx 代理企业微信应用推送, 以下为 Nginx 配置示例:

Nginx
server {
     listen 443 ssl;
     server_name qywx.mydomain.com;
     ssl_certificate /etc/nginx/ssl/qywx.mydomain.com/fullchain.cer;
diff --git a/assets/zh_CN_toolbox_pusher.md.e845cf98.lean.js b/assets/zh_CN_toolbox_pusher.md.3577463c.lean.js
similarity index 69%
rename from assets/zh_CN_toolbox_pusher.md.e845cf98.lean.js
rename to assets/zh_CN_toolbox_pusher.md.3577463c.lean.js
index dc1f61ac08e..b50d1d70fc8 100644
--- a/assets/zh_CN_toolbox_pusher.md.e845cf98.lean.js
+++ b/assets/zh_CN_toolbox_pusher.md.3577463c.lean.js
@@ -1 +1 @@
-import{_ as t,o as e,c as a,V as l}from"./chunks/framework.40f7bea3.js";const A=JSON.parse('{"title":"推送工具","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/toolbox/pusher.md","filePath":"zh_CN/toolbox/pusher.md"}'),r={name:"zh_CN/toolbox/pusher.md"},n=l("",62),o=[n];function d(c,s,i,h,p,y){return e(),a("div",null,o)}const x=t(r,[["render",d]]);export{A as __pageData,x as default};
+import{_ as t,o as e,c as a,V as l}from"./chunks/framework.e7f80142.js";const A=JSON.parse('{"title":"推送工具","description":"","frontmatter":{},"headers":[],"relativePath":"zh_CN/toolbox/pusher.md","filePath":"zh_CN/toolbox/pusher.md"}'),r={name:"zh_CN/toolbox/pusher.md"},n=l("",62),o=[n];function d(c,s,i,h,p,y){return e(),a("div",null,o)}const x=t(r,[["render",d]]);export{A as __pageData,x as default};
diff --git a/guide/deployment.html b/guide/deployment.html
index 2da63de57f0..9222d00bca5 100644
--- a/guide/deployment.html
+++ b/guide/deployment.html
@@ -5,17 +5,17 @@
     
     Deployment | QD
     
-    
-    
+    
+    
     
-  
-  
-  
+  
+  
+  
   
   
   
   
-    
Skip to content
On this page

Deployment

Docker Container Deployment

Docker Container Deployment is the easiest way to deploy QD.

Please always remember to back up your database before updating or redeploying.

Container

DockerHub URL : https://hub.docker.com/r/qdtoday/qd

Tag meaning:

  • latest: Latest Release version
  • lite-latest: Latest Release version without OCR related functions
  • ja3-latest: Integrated curl-impersonate to solve the problem that ja3 fingerprint is identified as curl, does not support http3 and Quic connection
  • 20xxxxxx: Specify Release version, version number is represented by Release release date
  • dev: Latest development version, synchronized with the latest source code, no stability guarantee

Deploy Method

1. Docker Compose (Recommend)

sh
# Create and switch to the QD directory.
+    
Skip to content
On this page

Deployment

Docker Container Deployment

Docker Container Deployment is the easiest way to deploy QD.

Please always remember to back up your database before updating or redeploying.

Container

DockerHub URL : https://hub.docker.com/r/qdtoday/qd

Tag meaning:

  • latest: Latest Release version
  • lite-latest: Latest Release version without OCR related functions
  • ja3-latest: Integrated curl-impersonate to solve the problem that ja3 fingerprint is identified as curl, does not support http3 and Quic connection
  • 20xxxxxx: Specify Release version, version number is represented by Release release date
  • dev: Latest development version, synchronized with the latest source code, no stability guarantee

Deploy Method

1. Docker Compose (Recommend)

sh
# Create and switch to the QD directory.
 mkdir -p $(pwd)/qd/config && cd $(pwd)/qd
 # Download docker-compose.yml
 wget https://fastly.jsdelivr.net/gh/qd-today/qd@master/docker-compose.yml
@@ -29,8 +29,8 @@
 cp config.py local_config.py
 # Modify the configuration environment variables according to the requirements and configuration description
 vi local_config.py
  • Run

    sh
    python ./run.py
  • Access

    sh
    # Access the web page
    -http://localhost:8923/

    If you are using the source code deployment method, please change the api request of http://localhost/ form in the template to api:// or http://localhost:8923/ manually in order to complete the related API request properly.

    Templates need to be published to be displayed in "Public Templates", and you need admin rights to approve them in "My Publish Requests".

  • Configure administrators

    sh
    python ./chrole.py your@email.address admin

    The first registered user is the administrator by default, you need to log out and then login to get full administrator rights

    Configuration Environment Variables

    variable namerequireddefault valuedescription
    BINDNo0.0.0.0Listening address
    PORTNo8923Listening port
    QD_DEBUGNoFalseWhether to enable Debug mode
    WORKER_METHODNoQueueTask timing execution method,
    The default is Queue, optional Queue or Batch,
    Batch mode is the old version of timing task execution method, the performance is weak,
    Recommended only when Queue timed execution mode fails
    MULTI_PROCESSNoFalse(Experimental) Whether to enable multi-process mode,
    invalid on Windows platform
    AUTO_RELOADNoFalseWhether to enable automatic hot reload,
    invalid when MULTI_PROCESS=True
    STATIC_URL_PREFIXNo/static/Static file URL prefix
    DOMAINNo''Specify the access domain name,
    (recommended modification), otherwise the function of resetting password by email is not valid
    AES_KEYNobinuxAES encryption key, (Modification strongly recommended)
    COOKIE_SECRETNobinuxcookie encryption key, (Modification strongly recommended)
    COOKIE_DAYNo5The number of days the cookie is kept in the client
    DB_TYPENosqlite3Set to 'mysql' when MySQL is required
    JAWSDB_MARIA_URLNo''When you need to use MySQL,
    set to mysql://username:password@hostname:port/database_name?auth_plugin=
    QD_SQL_ECHONoFalseWhether to enable the log output of SQLAlchmey, the default is False,
    When set to True, the SQL statement will be output on the console,
    allow to set to debug to enable debug mode
    QD_SQL_LOGGING_NAMENoQD.sql_engineSQLAlchmey log name, default is 'QD.sql_engine'
    QD_SQL_LOGGING_LEVELNoWarningSQLAlchmey log level, default is 'Warning'
    QD_SQL_ECHO_POOLNoTrueWhether to enable SQLAlchmey's connection pool log output, the default is True,
    allow setting to debug to enable debug mode
    QD_SQL_LOGGING_POOL_NAMENoQD.sql_poolSQLAlchmey connection pool log name, the default is 'QD.sql_pool'
    QD_SQL_LOGGING_POOL_LEVELNoWarningSQLAlchmey connection pool log level, default is 'Warning'
    QD_SQL_POOL_SIZENo10SQLAlchmey connection pool size, default is 10
    QD_SQL_MAX_OVERFLOWNo50SQLAlchmey connection pool maximum overflow, the default is 50
    QD_SQL_POOL_PRE_PINGNoTrueWhether to ping before the connection pool gets a connection, the default is True
    QD_SQL_POOL_RECYCLENo3600SQLAlchmey connection pool recovery time, the default is 3600
    QD_SQL_POOL_TIMEOUTNo60SQLAlchmey connection pool timeout, the default is 60
    QD_SQL_POOL_USE_LIFONoTrueSQLAlchmey whether to use LIFO algorithm, the default is True
    REDISCLOUD_URLNo''When you need to use Redis or RedisCloud,
    set to http://rediscloud:password@hostname:port
    REDIS_DB_INDEXNo1The default is 1
    QD_EVILNo500(Only when the Redis connection is enabled)
    Score = number of operation failures (such as login, verification, test, etc.) * corresponding penalty points
    When the score reaches the upper limit of evil, it will be automatically banned until the next hour cycle
    EVIL_PASS_LAN_IPNoTrueWhether to turn off the evil restriction of local private IP address users and Localhost_API requests
    TRACEBACK_PRINTNoFalseWhether to enable to print Exception's TraceBack information in the console log
    PUSH_PIC_URLNopush_pic.pngThe default is [push_pic.png](https 😕/fastly.jsdelivr.net/gh/qd-today/qd@master/web/static/img/push_pic.png)
    PUSH_BATCH_SWNoTrueWhether to allow periodic push of QD task logs, the default is True
    MAIL_SMTPNo""Email SMTP server
    MAIL_PORTNo465Email SMTP server port
    MAIL_USERNo""Email username
    MAIL_PASSWORDNo""Email password
    MAIL_FROMNoMAIL_USERThe Email used when sending, the default is the same as MAIL_USER
    MAIL_DOMAIN_HTTPSNoFalseWhether to use HTTPS for email domain name.
    Not the framework itself HTTPS configuration.
    If you need HTTPS, please use an external reverse proxy
    PROXIESNo""Global proxy domain name list, separated by "|"
    PROXY_DIRECT_MODENo""Global proxy blacklist mode, not enabled by default
    "url" is URL matching mode; "regexp" is regular expression matching mode
    PROXY_DIRECTNo""Global proxy blacklist matching rules
    NEW_TASK_DELAYNo1Preparation time after new task, default is 1 second
    TASK_WHILE_LOOP_TIMEOUTNo900Maximum runtime of a single While loop during a task run,
    the default is 15 minutes
    TASK_REQUEST_LIMITNo1500Maximum number of requests per task run,
    the default is 1500
    USE_PYCURLNoTrueWhether to enable Pycurl module
    ALLOW_RETRYNoTrueWhen some requests in the Pycurl environment may cause Request errors,
    automatically modify the conflict settings and resend the request
    DNS_SERVERNo""Use specified DNS for resolution via Curl (only supports Pycurl environment),
    such as 8.8.8.8
    CURL_ENCODINGNoTrueWhether to allow to use Curl for Encoding operation
    CURL_CONTENT_LENGTHNoTrueWhether to allow Curl to use custom Content-Length request in Headers
    NOT_RETRY_CODENoSee configuration for details...See configuration for details...
    EMPTY_RETRYNoTrueSee configuration for details...
    USER0ISADMINNoTrueThe first registered user is an administrator, False to close
    EXTRA_ONNX_NAMENo""Customize the ONNX file name in the config directory
    (do not fill in the ".onnx" suffix)
    Separate multiple onnx file names with "|"
    EXTRA_CHARSETS_NAMENo""Custom ONNX in the config directory corresponds to the custom charsets.json file name
    (do not fill in the ".json" suffix)
    Multiple json file names are separated by "|"
    WS_PING_INTERVALNo5WebSocket ping interval, the default is 5 seconds
    WS_PING_TIMEOUTNo30WebSocket ping timeout, the default is 30 seconds
    WS_MAX_MESSAGE_SIZENo10485760WebSocket maximum message size, the default is 10485760 bytes
    WS_MAX_QUEUE_SIZENo100WebSocket maximum queue size, the default is 100
    WS_MAX_CONNECTIONS_SUBSCRIBENo30WebSocket subscribe page maximum number of connections, the default is 30
    SUBSCRIBE_ACCELERATE_URLNojsdelivr_cdnSubscribe page acceleration URL, the default is jsdelivr_cdn,
    See configuration for details...

    For details, please refer to config.py

    Released under the MIT License.

    - diff --git a/guide/faq.html b/guide/faq.html index 04fce870d2b..1b1f5c37ccf 100644 --- a/guide/faq.html +++ b/guide/faq.html @@ -5,17 +5,17 @@ FAQ | QD - - + + - - - + + + -
    Skip to content
    On this page

    FAQ

    how to backup and restore the database?

    QD uses sqlite3 as the framework database by default, and the database.db file is saved in config directory. When deploying with a Docker container, you can use the docker cp command to back up the database file, and then use the docker cp command to restore the database file in the new container.

    sh
    # database backup
    +    
    Skip to content
    On this page

    FAQ

    how to backup and restore the database?

    QD uses sqlite3 as the framework database by default, and the database.db file is saved in config directory. When deploying with a Docker container, you can use the docker cp command to back up the database file, and then use the docker cp command to restore the database file in the new container.

    sh
    # database backup
     docker cp container_name:/usr/src/app/config/database.db .
     # Database recovery
     docker cp database.db container_name:/usr/src/app/config/

    how to configure the email server in Docker?

    sh
    docker run -d --name qd -p 8923:80 -v $(pwd)/qd/config:/usr/src/app/config --env MAIL_SMTP=$STMP_Server_ --env MAIL_PORT=$Mailbox_server_port --env MAIL_USER=$Username --env MAIL_PASSWORD=$Password --env DOMAIN=$Domain qdtoday/qd

    how to use MySQL in Docker?

    sh
    docker run -d --name qd -p 8923:80 -v $(pwd)/qd/config:/usr/src/app/config --ENV DB_TYPE=mysql --ENV JAWSDB_MARIA_URL=mysql://$username:$password@$hostname:$port/$database_name?auth_plugin= qdtoday/qd

    how to build a Docker image by myself?

    Please refer to the build file Dockerfile of this image.

    How to view the API and Jinja2 template variables supported by the current framework?

    Please access the home page of the framework, and then click the Common API/Filter button in the upper left corner to view the API and Jinja2 template variables supported by the current framework.

    how to submit a bug issue?

    Please enable Debug mode after encountering a problem, and then submit detailed error information to Issue.

    Which requests are necessary for QD?

    Empirically, the following requests are necessary:

    • login page
    • POST to login page
    • Issue a request for username, password
    • The page that caused the page to jump after sending
    • The first page before and after page turning

    Will my username and password be revealed?

    In order to help users initiate requests, user names and passwords still need to be recorded. This can only rely on the self-discipline of server maintainers to ensure the security of back-end data. But in the framework design, each user is encrypted with a secure key when storing. Encrypting user data with a key can ensure that user data cannot be decrypted only by obtaining the database. (Encrypted user data includes templates uploaded by users, variables set by users for tasks, etc.)

    If you are still worried, you can build the QD framework by yourself, download the template and run it on your own server.

    Prompt warning message: Connect Redis falied: Error 10061

    QD uses redis as a flow limiting tool. If the redis service is not installed, the framework will prompt the following warning message.

    sh
    [W xxxxxx xx:xx:xx QD.RedisDB redisdb:28] Connect Redis falied: Error 10061 connecting to localhost:6379. No connection could be made because the target machine actively refused it.

    However, redis is not required in this framework, if you don't need to use the flow-limiting feature, you can ignore the warning message.

    It is recommended to use Docker compose to deploy the QD framework, and the Docker compose configuration already installs the redis container by default.

    Prompt warning message: Import PyCurl module falied

    QD uses the pycurl module to send HTTP proxy requests. If the pycurl module is not installed, the framework will prompt the following warning message:

    sh
    [W xxxxxx xx:xx:xx QD.Http.Fetcher fetcher:34] Import PyCurl module falied: No module named 'pycurl'

    However, pycurl is not required in this framework, if you don't need to use the proxy function, you can ignore the warning message.

    The pycurl module is cumbersome to install on the Windows system, and the libcurl library needs to be installed. For the specific installation method, please refer to pycurl official documentation.

    It is recommended to use a container or linux system to deploy the QD framework. The docker container has a pre-installed Curl environment, and the pycurl module is installed by default

    How to Register Notification Tools

    You can register different notification tools to receive notifications when specific events (such as failed check-ins) occur.

    Please refer to Pusher for details.

    Subscribe updating page prompts undefined error

    The subscribe updating web page prompts an error code of undefined, or the console shows WebSocket connection failed but does not show the reason for the error

    Please check if the "reverse proxy" configuration is correct, refer to Nginx reverse proxy WebSocket service connection error

    Reference configuration is as follows:

    Nginx
    server {
    @@ -36,8 +36,8 @@
             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header  X-Forwarded-Proto  $scheme;
         }
    -}

    Released under the MIT License.

    - diff --git a/guide/how-to-use.html b/guide/how-to-use.html index 5ee56d722dd..35129def422 100644 --- a/guide/how-to-use.html +++ b/guide/how-to-use.html @@ -5,19 +5,19 @@ How to Use? | QD - - + + - - + + - + -
    Skip to content
    On this page

    How to Use?

    Har Obtain

    1. What is HAR?

    HAR: https://toolbox.googleapps.com/apps/har_analyzer/?lang=

    2. Packet capture

    2.1. Chrome or Edge

    1. Press F12, Ctrl + Shift + I, or from the Chrome menu select More tools > Developer tools.
    2. From the panel that opens at the bottom of your screen, select the Network tab.
    3. Make sure the Record button in the upper left corner of the Network tab is shown in red.
    4. If it's grey, click it once to start recording.
    5. Check the box next to Preserve log. Preserve log
    6. Click the Clear button to clear out any existing logs from the Network tab.
    7. Now try to reproduce the task you were trying to do.
    8. Once you have reproduced the task, right-click anywhere on the grid of network requests.
    9. Select Save as HAR with Content. Save as HAR with Content
    10. Save the file to your computer.

    2.2. Firefox

    1. Press F12 ​(or Go to Tools > Web Developer > Network).
    2. Now try to reproduce the task you were trying to do.
    3. Right-click on the loaded results.
    4. Select Save all as har.

    2.3. Windows - Fiddler

    1. Open Fiddler, open the Tools menu, select Options.
    2. Select the HTTPS tab, check Capture HTTPS Connects.
    3. Select the Connections tab, check Decrypt HTTPS traffic.
    4. Now try to reproduce the task you were trying to do.
    5. export to HAR format - please select HTTPArchive as the export method.

    2.4. IOS - Stream

    1. Open Stream.
    2. Before capture the HTTPS request, you need to install the CA certificate, setting > General > About > Certificate Trust Settings to trust the CA certificate.
    3. Click the start packet capture button, the phone will automatically pop up the VPN configuration window, and then select Allow.
    4. Now try to reproduce the task you were trying to do.
    5. On the app page, click Stop Capture to end this capture.
    6. export the HAR file.

    3. Community HAR

    1. Click the Community Template button to the right of my template.
    2. Update the repository to get the latest HAR file list.
    3. Select the HAR file you want to use and click the Subscribe button to subscribe to the template.
    4. Modify the template according to your needs.
    5. Then jump to step 5 of 3. Edit the template to continue editing.

    Upload the HAR file

    1. Access and login to QD framework.
    2. Click the + button to the right of my template.
    3. Upload the HAR file you just saved.
    4. Click upload to continue.

    Edit the template

    1. Replace the username, password, cookie, header and other parts that change according to the user with a template similar to {{ username }}. (templates support jinja2 syntax)
    2. Use the test panel in request editing to test whether the template is returned correctly, use the correct and wrong user names to test。
    3. Fill in success/failure assertion, which helps to detect sign-in failures and template failures.
    4. When some data from the previous request is needed in the request, variable extraction is used to extract the data through regularization and save it in the environment variable. Use ab(\w+)cd, the group selector, to select part of it.
    5. Use __log__ to extract task logs.
    6. When all request edits are complete, use Test next to the Download button to test the overall.
    7. The template being edited will be automatically saved in the browser cache, so don't worry about losing it.
    8. Click the Save button to save the template.
    9. Click the Download button to download the template.

    Create scheduled task

    1. Click the + button to the right of my task.
    2. Select the template you just created.
    3. Fill in the task variables, task interval, task group and task execution time.
    4. Click the Test button to test the task.
    5. Click the Save button to save the task.

    Released under the MIT License.

    - diff --git a/guide/update.html b/guide/update.html index 0a71eeccd95..c30667c52f1 100644 --- a/guide/update.html +++ b/guide/update.html @@ -5,17 +5,17 @@ Update | QD - - + + - - - + + + -
    Skip to content
    On this page

    Update

    Please always remember to back up your database before updating or redeploying.

    After the update, please restart the container or clear the browser cache.

    Source Code Deployment Update

    sh
    # First cd to the directory of source code, execute the command and restart the process
    +    
    Skip to content
    On this page

    Update

    Please always remember to back up your database before updating or redeploying.

    After the update, please restart the container or clear the browser cache.

    Source Code Deployment Update

    sh
    # First cd to the directory of source code, execute the command and restart the process
     wget https://gitee.com/qd-today/qd/raw/master/update.sh -O ./update.sh && \
     sh ./update.sh

    Docker Compose Deployment Update

    sh
    # First cd to the directory of docker-compose.yml, execute the command and restart the container
     docker compose pull && \
    @@ -24,8 +24,8 @@
     sh /usr/src/app/update.sh

    Forcibly synchronize the latest source code

    sh
    # First cd to the root directory of code, execute the command and restart the process
     # docker exec -it "container name" /bin/sh
     wget https://gitee.com/qd-today/qd/raw/master/update.sh -O ./update.sh && \
    -sh ./update.sh -f

    Released under the MIT License.

    - diff --git a/guide/what-is-qd.html b/guide/what-is-qd.html index c59d17a0605..1337372c884 100644 --- a/guide/what-is-qd.html +++ b/guide/what-is-qd.html @@ -5,18 +5,18 @@ What is QD? | QD - - + + - - - + + + -
    Skip to content
    On this page

    What is QD?

    QD is a web framework for HTTP timed task automation base on HAR Editor and Tornado Server.

    Features

    • Har-based: By simply uploading Har obtained through packet capture, you can create HTTP task template required by the framework.
    • Tornado Server: Use Tornado as a server to asynchronously respond to front-end and initiate HTTP requests.
    • API & Plugin Support: Various APIs and filters are built in for template creation, and custom plugins will be provided later.
    • Open source: QD is an open source project based on the MIT license.

    How to deploy

    Please refer: Deployment

    How to use

    Please refer: How to use

    How to Update

    Please refer: Update

    Discussion

    Released under the MIT License.

    - diff --git a/hashmap.json b/hashmap.json index ce93baf355d..ecb524ec059 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"zh_cn_guide_update.md":"a4e05c41","zh_cn_guide_what-is-qd.md":"46858807","zh_cn_index.md":"493bd460","zh_cn_toolbox_pusher.md":"e845cf98","index.md":"db5d86dc","guide_update.md":"8c16e2ac","toolbox_pusher.md":"30f3255f","zh_cn_guide_deployment.md":"673da61a","guide_faq.md":"9fe43b65","zh_cn_guide_faq.md":"6c83682e","zh_cn_guide_how-to-use.md":"ceb0eba0","guide_what-is-qd.md":"b0c3a9c1","guide_how-to-use.md":"e0635a4e","guide_deployment.md":"8ea9d750"} +{"guide_faq.md":"996dff45","guide_deployment.md":"df1605f6","guide_how-to-use.md":"4ee6e35b","guide_update.md":"b3da2bcd","guide_what-is-qd.md":"914769b2","zh_cn_guide_update.md":"859c4a2e","zh_cn_guide_what-is-qd.md":"0c57a771","zh_cn_index.md":"58b391dd","zh_cn_toolbox_pusher.md":"3577463c","zh_cn_guide_how-to-use.md":"7d8d7f5f","zh_cn_guide_faq.md":"e6eac49a","zh_cn_guide_deployment.md":"0122de01","index.md":"4f08d380","toolbox_pusher.md":"ffb35ca2"} diff --git a/index.html b/index.html index 2aa898cb88e..8d0d94e1007 100644 --- a/index.html +++ b/index.html @@ -5,18 +5,18 @@ HTTP task automation framework | QD - - + + - - - + + + -
    Skip to content

    QD

    A web framework for HTTP timed task automation.

    QD

    Har-based

    By simply uploading Har obtained through packet capture, you can create HTTP task template required by the framework.

    Tornado Server

    Use Tornado as a server to asynchronously respond to front-end and initiate HTTP requests.

    API & Plugin Support

    Various APIs and filters are built in for template creation, and custom plugins will be provided later.

    Open source

    QD is an open source project based on the MIT license.

    Released under the MIT License.

    - diff --git a/toolbox/pusher.html b/toolbox/pusher.html index a71823776da..9ff2a72601f 100644 --- a/toolbox/pusher.html +++ b/toolbox/pusher.html @@ -5,17 +5,17 @@ Pusher | QD - - + + - - - + + + -
    Skip to content
    On this page

    Pusher

    Push Registration

    The QD framework provides various [push methods](#push methods), and you can register different push tools in Toolbox->Push Registration to push notifications to you when specific events occur (e.g. timed task execution failure).

    TIP

    The parameters filled in when registering the push are separated and connected by ;. If the parameter value is empty, please be sure to keep the ; after the parameter position, otherwise it may cause parameter parsing error.

    Push Registration Test

    After registering the push method in Toolbox->Push Registration, you can click the Test button to test whether the push method is available.

    If the push method is available, you will receive a push message, otherwise you will be prompted that the push failed.

    TIP

    When testing the push registration, please make sure that the following conditions are met:

    • The correct parameters are filled in;

    • The email and password are filled in with the user's email and password of the QD framework.

    Push Registration Former value

    After registering the push method in Toolbox->Push Registration, you can click the Former value button to view the former value of the push registration.

    TIP

    When viewing the former value of the push registration, please make sure that the email and password are filled in with the user's email and password of the QD framework.

    Push Methods

    The QD framework provides the following push methods:

    E-mail Push

    E-mail push does not need to set parameters in Toolbox->Push Registration, you need to configure the following parameters in the environment variables:

    Variable nameRequiredDefaultDescription
    MAIL_SMTPTrue""Email SMTP server
    MAIL_PORTFalse465Email SMTP server port
    MAIL_USERTrue""Email username
    MAIL_PASSWORDTrue""Email password
    MAIL_FROMFalseMAIL_USERThe Email used when sending, the default is the same as MAIL_USER
    MAIL_DOMAIN_HTTPSFalseFalseWhether to use HTTPS for email domain name.
    Not the framework itself HTTPS configuration.
    If you need HTTPS, please use an external reverse proxy

    If you are using the following email, refer to the SMTP enable method and configuration method below to get your SMTP server address and port.

    EmailSMTP enable methodSMTP configuration methodOther instructions
    Tencent Enterprise MailHow to enable Tencent Enterprise Mail POP/SMTP/IMAP service?Common mail client software settingsHow do members bind/associate WeChat and enable secure login to get client-specific passwords?
    QQ MailHow to enable QQ Mail POP3/SMTP/IMAP service?How to turn on POP3/SMTP/IMAP?Why do I need to set a separate password to enable POP3/SMTP/IMAP?
    Netease Enterprise Mail-Enterprise Mail POP, SMTP, IMAP server address settings.What is a client authorization code and how do I use it?
    Netease MailWhat is POP3, SMTP and IMAP?How to enable client protocol?-
    Gmail-How to use POP3/SMTP/IMAP service?Sign in with app passwords
    Outlook-POP, IMAP and SMTP settingsUse app passwords with apps that don't support two-step verification

    MailGun

    If you have configured MailGun, please configure the following parameters in the environment variables:

    Variable nameRequiredDefaultDescription
    MAILGUN_KEYTrue""MailGun API Key
    MAILGUN_DOMAINTrueDOMAINMailGun Domain,
    The default is the value of the DOMAIN in the environment variables,
    Please configure the value of DOMAIN in the environment variables,
    and set the corresponding Domain in the MailGun console,
    otherwise MailGun cannot be used

    Bark Push

    Bark push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    BarkUrlTrue""Bark push address,
    The format is https://api.day.app/push_key,
    The push_key can be obtained in the Bark client,
    If you are using a self-built Bark service,
    please replace https://api.day.app/ with your Bark service address.
    For example: http://bark.example.com/push_key

    Server Chan Push

    Server Chan push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    skeyTrue""Server Chan push sendkey,
    Can be obtained in Server Chan

    Telegram Bot Push

    Telegram Bot push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    TG_TOKENTrue""Telegram Bot Token,
    Can be obtained in BotFather,
    Should be a combination of Bot ID and corresponding Key, but not including bot,
    That is, the token form: 1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    TG_USERIDTrue""Telegram Chat ID,
    Can be obtained in Telegram API,
    The chat_id field in the Telegram API, such as 222222222
    TG_HOSTFalse""Telegram API Host,
    Can be a domain name or IP address,
    For example, tg.mydomain.com,
    You can also add the http:// or https:// prefix,
    If left blank, the default value api.telegram.org is used
    PROXY_URLFalse""Proxy address,
    The format is scheme://username:password@host:port,
    For example, http://user:password@host:port,
    If left blank, the Proxy is not used
    PUSH_PIC_URLFalse""Custom push picture address,
    If left blank, the environment variable PUSH_PIC_URL value is used
    Example

    Assume that you have created a Telegram Bot API with a custom domain name:

    https://tg.mydomain.com/bot1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/sendMessage?chat_id=222222222&text=HelloWorld

    The above request will send a HelloWorld message to the chat 222222222, then when registering the Telegram Bot as a push method:

    • TG_TOKEN is 1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    • TG_USERID is 222222222
    • TG_HOST is tg.mydomain.com

    Therefore, the final form is as follows:

    Text
    1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;222222222;tg.mydomain.com

    DingTalk Push

    DingTalk push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    DINGDING_TOKENTrue""DingTalk push Token,
    Can be obtained in Custom Robot Access,
    If you set the IP address range in Security Settings,
    Please add the IP address of the QD server to IP address range,
    Otherwise, you will not be able to receive push messages;
    If you set the Custom Keywords in Security Settings,
    Please add QD/Push/Test to Custom Keywords,
    Otherwise, you will not be able to receive push messages;
    Please do not enable Signature in Security Settings, QD framework does not support DingTalk Signature push for the time being.
    PUSH_PIC_URLFalse""Custom push picture address,
    If left blank, the environment variable PUSH_PIC_URL value is used

    WXPusher Push

    WXPusher push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    APPTOKENTrue""WXPusher push Token,
    Can be obtained in WXPusher
    WxPusher_UIDTrue""WXPusher push UID,
    Can be obtained in WXPusher

    WeCom Application Push

    WeCom application push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    CorpIDTrue""WeCom CorpID,
    Can be obtained in WeCom
    AgentIDTrue""WeCom application AgentID,
    Can be obtained in WeCom
    AgentSecretTrue""WeCom application Secret,
    Can be obtained in WeCom
    PUSH_PIC_URL_or_Media_idFalse""Custom push picture address or Media_id,
    Media_id can be obtained through WeCom interface,
    If left blank, the environment variable PUSH_PIC_URL value is used
    QYWX_PROXY_HOSTFalse""WeCom Host,
    Can be a domain name or IP address,
    For example, qywx.mydomain.com,
    You can also add the http:// or https:// prefix,
    If left blank, the default value https://qyapi.weixin.qq.com/ is used

    QYWX_PROXY_HOST

    If you use Nginx to proxy the WeCom application push, the following is an example of Nginx configuration:

    Nginx
    server {
    +    
    Skip to content
    On this page

    Pusher

    Push Registration

    The QD framework provides various [push methods](#push methods), and you can register different push tools in Toolbox->Push Registration to push notifications to you when specific events occur (e.g. timed task execution failure).

    TIP

    The parameters filled in when registering the push are separated and connected by ;. If the parameter value is empty, please be sure to keep the ; after the parameter position, otherwise it may cause parameter parsing error.

    Push Registration Test

    After registering the push method in Toolbox->Push Registration, you can click the Test button to test whether the push method is available.

    If the push method is available, you will receive a push message, otherwise you will be prompted that the push failed.

    TIP

    When testing the push registration, please make sure that the following conditions are met:

    • The correct parameters are filled in;

    • The email and password are filled in with the user's email and password of the QD framework.

    Push Registration Former value

    After registering the push method in Toolbox->Push Registration, you can click the Former value button to view the former value of the push registration.

    TIP

    When viewing the former value of the push registration, please make sure that the email and password are filled in with the user's email and password of the QD framework.

    Push Methods

    The QD framework provides the following push methods:

    E-mail Push

    E-mail push does not need to set parameters in Toolbox->Push Registration, you need to configure the following parameters in the environment variables:

    Variable nameRequiredDefaultDescription
    MAIL_SMTPTrue""Email SMTP server
    MAIL_PORTFalse465Email SMTP server port
    MAIL_USERTrue""Email username
    MAIL_PASSWORDTrue""Email password
    MAIL_FROMFalseMAIL_USERThe Email used when sending, the default is the same as MAIL_USER
    MAIL_DOMAIN_HTTPSFalseFalseWhether to use HTTPS for email domain name.
    Not the framework itself HTTPS configuration.
    If you need HTTPS, please use an external reverse proxy

    If you are using the following email, refer to the SMTP enable method and configuration method below to get your SMTP server address and port.

    EmailSMTP enable methodSMTP configuration methodOther instructions
    Tencent Enterprise MailHow to enable Tencent Enterprise Mail POP/SMTP/IMAP service?Common mail client software settingsHow do members bind/associate WeChat and enable secure login to get client-specific passwords?
    QQ MailHow to enable QQ Mail POP3/SMTP/IMAP service?How to turn on POP3/SMTP/IMAP?Why do I need to set a separate password to enable POP3/SMTP/IMAP?
    Netease Enterprise Mail-Enterprise Mail POP, SMTP, IMAP server address settings.What is a client authorization code and how do I use it?
    Netease MailWhat is POP3, SMTP and IMAP?How to enable client protocol?-
    Gmail-How to use POP3/SMTP/IMAP service?Sign in with app passwords
    Outlook-POP, IMAP and SMTP settingsUse app passwords with apps that don't support two-step verification

    MailGun

    If you have configured MailGun, please configure the following parameters in the environment variables:

    Variable nameRequiredDefaultDescription
    MAILGUN_KEYTrue""MailGun API Key
    MAILGUN_DOMAINTrueDOMAINMailGun Domain,
    The default is the value of the DOMAIN in the environment variables,
    Please configure the value of DOMAIN in the environment variables,
    and set the corresponding Domain in the MailGun console,
    otherwise MailGun cannot be used

    Bark Push

    Bark push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    BarkUrlTrue""Bark push address,
    The format is https://api.day.app/push_key,
    The push_key can be obtained in the Bark client,
    If you are using a self-built Bark service,
    please replace https://api.day.app/ with your Bark service address.
    For example: http://bark.example.com/push_key

    Server Chan Push

    Server Chan push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    skeyTrue""Server Chan push sendkey,
    Can be obtained in Server Chan

    Telegram Bot Push

    Telegram Bot push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    TG_TOKENTrue""Telegram Bot Token,
    Can be obtained in BotFather,
    Should be a combination of Bot ID and corresponding Key, but not including bot,
    That is, the token form: 1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    TG_USERIDTrue""Telegram Chat ID,
    Can be obtained in Telegram API,
    The chat_id field in the Telegram API, such as 222222222
    TG_HOSTFalse""Telegram API Host,
    Can be a domain name or IP address,
    For example, tg.mydomain.com,
    You can also add the http:// or https:// prefix,
    If left blank, the default value api.telegram.org is used
    PROXY_URLFalse""Proxy address,
    The format is scheme://username:password@host:port,
    For example, http://user:password@host:port,
    If left blank, the Proxy is not used
    PUSH_PIC_URLFalse""Custom push picture address,
    If left blank, the environment variable PUSH_PIC_URL value is used
    Example

    Assume that you have created a Telegram Bot API with a custom domain name:

    https://tg.mydomain.com/bot1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/sendMessage?chat_id=222222222&text=HelloWorld

    The above request will send a HelloWorld message to the chat 222222222, then when registering the Telegram Bot as a push method:

    • TG_TOKEN is 1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    • TG_USERID is 222222222
    • TG_HOST is tg.mydomain.com

    Therefore, the final form is as follows:

    Text
    1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;222222222;tg.mydomain.com

    DingTalk Push

    DingTalk push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    DINGDING_TOKENTrue""DingTalk push Token,
    Can be obtained in Custom Robot Access,
    If you set the IP address range in Security Settings,
    Please add the IP address of the QD server to IP address range,
    Otherwise, you will not be able to receive push messages;
    If you set the Custom Keywords in Security Settings,
    Please add QD/Push/Test to Custom Keywords,
    Otherwise, you will not be able to receive push messages;
    Please do not enable Signature in Security Settings, QD framework does not support DingTalk Signature push for the time being.
    PUSH_PIC_URLFalse""Custom push picture address,
    If left blank, the environment variable PUSH_PIC_URL value is used

    WXPusher Push

    WXPusher push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    APPTOKENTrue""WXPusher push Token,
    Can be obtained in WXPusher
    WxPusher_UIDTrue""WXPusher push UID,
    Can be obtained in WXPusher

    WeCom Application Push

    WeCom application push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    CorpIDTrue""WeCom CorpID,
    Can be obtained in WeCom
    AgentIDTrue""WeCom application AgentID,
    Can be obtained in WeCom
    AgentSecretTrue""WeCom application Secret,
    Can be obtained in WeCom
    PUSH_PIC_URL_or_Media_idFalse""Custom push picture address or Media_id,
    Media_id can be obtained through WeCom interface,
    If left blank, the environment variable PUSH_PIC_URL value is used
    QYWX_PROXY_HOSTFalse""WeCom Host,
    Can be a domain name or IP address,
    For example, qywx.mydomain.com,
    You can also add the http:// or https:// prefix,
    If left blank, the default value https://qyapi.weixin.qq.com/ is used

    QYWX_PROXY_HOST

    If you use Nginx to proxy the WeCom application push, the following is an example of Nginx configuration:

    Nginx
    server {
         listen 443 ssl;
         server_name qywx.mydomain.com;
         ssl_certificate /etc/nginx/ssl/qywx.mydomain.com.crt;
    @@ -27,8 +27,8 @@
         location / {
             proxy_pass https://qyapi.weixin.qq.com/;
         }
    -}

    WeCom Webhook Push

    WeCom Webhook push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    QYWX_WebHook_KeyTrue""WeCom Webhook Key,
    Can be obtained in WeCom

    Custom Push

    Custom push supports GET and POST push methods, using {log} and {t} to represent the log and title to be replaced.

    Custom push needs to set parameters in Toolbox->Push Registration:

    Custom Get Push

    Parameter nameRequiredDefaultDescription
    URLTrue""Custom Get push address,
    For example, https://example.com/push?log={log}&t={t}
    GET_HeaderFalse""Custom Get push Header,
    Use json format (double quotes), the format is { "key1": "value1", "key2": "value2" },
    If left blank, the Header is not set

    Custom Post Push

    Parameter nameRequiredDefaultDescription
    URLTrue""Custom Post push address,
    For example, https://example.com/push
    POST_HeaderFalse""Custom Post push Header,
    Use json format (double quotes), the format is { "key1": "value1", "key2": "value2" },
    For example, { "key1": "{log}", "key2": "{t}" },
    If left blank, the Header is not set
    POST_DataFalse""Custom Post push Body,
    Use json format (double quotes),
    For example, { "key1": "{log}", "key2": "{t}" },
    If left blank, the Body is not set

    Push Settings

    After registering the push method in Toolbox->Push Registration, you can set the trigger conditions of the push method in Toolbox->Push Settings.

    In Push Settings, you can set the push switch of each task, the task result push channel, the task result notification selection, and the task result batch push.

    Task Result Push Channel

    The task result push channel is used to set the task result push channel. The task result push channel includes the following:

    Task Result Notification Selection

    The task result notification selection is used to set when to push the task result. The task result notification selection includes the following:

    • Manual execution success notification
    • Manual execution failure notification
    • Automatic execution success notification
    • Automatic execution failure notification

    Notify after automatic error can be set to push notifications after automatic execution fails several times. For example, if set to 3, the notification will be pushed after automatic execution fails 3 times.

    Task Result Batch Push

    The task result batch push is used to set the batch push of the task result. When Enable batch push is turned on, the task result within the specified time interval before the current push time will be batch pushed according to the Batch push time setting and Batch push time interval when the task result is pushed.

    • Batch push time setting: The initial batch push time setting, for example, set to 12:00:00, then a batch push will be made at 12:00:00 on the same day.

    • Batch push time interval: Set how many seconds to push the task result once. The default is 86400 seconds, that is, the task result within 86400 seconds before the current push time will be batch pushed every day.

    Released under the MIT License.

    - diff --git a/zh_CN/guide/deployment.html b/zh_CN/guide/deployment.html index 94ace71b3a1..1f92594dd8d 100644 --- a/zh_CN/guide/deployment.html +++ b/zh_CN/guide/deployment.html @@ -5,17 +5,17 @@ 部署 | QD - - + + - - - + + + -
    Skip to content
    页面导航

    部署

    Docker 容器部署

    Docker 容器部署是部署 QD 的最简单方式。

    操作前请一定要记得备份数据库!!!

    容器

    DockerHub 网址https://hub.docker.com/r/qdtoday/qd

    Tag 含义:

    • latest: 最新 Release 版本
    • lite-latest: 去除 OCR 相关功能的最新 Release 版本
    • ja3-latest: 集成 curl-impersonate 解决 ja3 指纹被识别为 curl 的问题, 不支持 http3 和 Quic 连接
    • 20xxxxxx: 指定 Release 版本, 版本号表示为 Release 发布日期
    • dev: 最新开发版, 同步最新源码, 不保证稳定性

    部署方法

    1. Docker Compose(推荐)

    sh
    # 创建并切换到 QD 目录。
    +    
    Skip to content
    页面导航

    部署

    Docker 容器部署

    Docker 容器部署是部署 QD 的最简单方式。

    操作前请一定要记得备份数据库!!!

    容器

    DockerHub 网址https://hub.docker.com/r/qdtoday/qd

    Tag 含义:

    • latest: 最新 Release 版本
    • lite-latest: 去除 OCR 相关功能的最新 Release 版本
    • ja3-latest: 集成 curl-impersonate 解决 ja3 指纹被识别为 curl 的问题, 不支持 http3 和 Quic 连接
    • 20xxxxxx: 指定 Release 版本, 版本号表示为 Release 发布日期
    • dev: 最新开发版, 同步最新源码, 不保证稳定性

    部署方法

    1. Docker Compose(推荐)

    sh
    # 创建并切换到 QD 目录。
     mkdir -p $(pwd)/qd/config && cd $(pwd)/qd
     # 下载 docker-compose.yml
     wget https://fastly.jsdelivr.net/gh/qd-today/qd@master/docker-compose.yml
    @@ -29,8 +29,8 @@
     cp config.py local_config.py
     # 根据需求和配置说明修改配置文件或环境变量值
     vi local_config.py
  • 启动

    sh
    python ./run.py
  • 访问

    sh
    # 访问网页
    -http://localhost:8923/

    如果您使用的是源码部署方式,请手动将模板中 http://localhost/ 形式的 api 请求改为 api://http://localhost:8923/ ,以便正确完成相关API 请求。

    模板需要发布才会在「公开模板」中展示, 你需要管理员权限在「我的发布请求」中审批通过。

  • 设置管理员

    sh
    python ./chrole.py your@email.address admin

    首位注册用户默认为管理员, 需要先登出再登陆后才能获得完整管理员权限

    配置环境变量

    变量名是否必须默认值说明
    BIND0.0.0.0监听地址
    PORT8923监听端口
    QD_DEBUGFalse是否启用Debug模式
    WORKER_METHODQueue任务定时执行方式,
    默认为 Queue, 可选 Queue 或 Batch,
    Batch 模式为旧版定时任务执行方式, 性能较弱,
    建议仅当 Queue 定时执行模式失效时使用
    MULTI_PROCESSFalse(实验性)是否启用多进程模式,
    Windows平台无效
    AUTO_RELOADFalse是否启用自动热加载,
    MULTI_PROCESS=True时无效
    STATIC_URL_PREFIX/static/静态文件URL前缀
    DOMAIN''指定访问域名,
    (建议修改), 否则通过邮件重置密码及邮箱推送等功能无效
    AES_KEYbinuxAES加密密钥, (强烈建议修改)
    COOKIE_SECRETbinuxcookie加密密钥, (强烈建议修改)
    COOKIE_DAY5Cookie在客户端中保留的天数
    DB_TYPEsqlite3需要使用MySQL时设置为'mysql'
    JAWSDB_MARIA_URL''需要使用MySQL时,
    设置为 (mysql://用户名:密码@hostname:port/数据库名?auth_plugin=)
    QD_SQL_ECHOFalse是否启用 SQLAlchmey 的日志输出, 默认为 False,
    设置为 True 时, 会在控制台输出 SQL 语句,
    允许设置为 debug 以启用 debug 模式
    QD_SQL_LOGGING_NAMEQD.sql_engineSQLAlchmey 日志名称, 默认为 'QD.sql_engine'
    QD_SQL_LOGGING_LEVELWarningSQLAlchmey 日志级别, 默认为 'Warning'
    QD_SQL_ECHO_POOLTrue是否启用 SQLAlchmey 的连接池日志输出, 默认为 True,
    允许设置为 debug 以启用 debug 模式
    QD_SQL_LOGGING_POOL_NAMEQD.sql_poolSQLAlchmey 连接池日志名称, 默认为 'QD.sql_pool'
    QD_SQL_LOGGING_POOL_LEVELWarningSQLAlchmey 连接池日志级别, 默认为 'Warning'
    QD_SQL_POOL_SIZE10SQLAlchmey 连接池大小, 默认为 10
    QD_SQL_MAX_OVERFLOW50SQLAlchmey 连接池最大溢出, 默认为 50
    QD_SQL_POOL_PRE_PINGTrue是否在连接池获取连接前,
    先ping一下, 默认为 True
    QD_SQL_POOL_RECYCLE3600SQLAlchmey 连接池回收时间, 默认为 3600
    QD_SQL_POOL_TIMEOUT60SQLAlchmey 连接池超时时间, 默认为 60
    QD_SQL_POOL_USE_LIFOTrueSQLAlchmey 是否使用 LIFO 算法, 默认为 True
    REDISCLOUD_URL''需要使用Redis或RedisCloud时,
    设置为 http://rediscloud:密码@hostname:port
    REDIS_DB_INDEX1默认为1
    QD_EVIL500(限Redis连接已开启)登录用户或IP在1小时内
    分数 = 操作失败(如登录, 验证, 测试等操作)次数 * 相应惩罚分值
    分数达到evil上限后自动封禁直至下一小时周期
    EVIL_PASS_LAN_IPTrue是否关闭本机私有IP地址用户及Localhost_API请求的evil限制
    TRACEBACK_PRINTFalse是否启用在控制台日志中打印Exception的TraceBack信息
    PUSH_PIC_URLpush_pic.png默认为push_pic.png
    PUSH_BATCH_SWTrue是否允许开启定期推送 QD 任务日志, 默认为True
    MAIL_SMTP""邮箱SMTP服务器
    MAIL_PORT465邮箱SMTP服务器端口
    MAIL_USER""邮箱用户名
    MAIL_PASSWORD""邮箱密码
    MAIL_FROMMAIL_USER发送时使用的邮箱,默认与MAIL_USER相同
    MAIL_DOMAIN_HTTPSFalse发送的邮件链接启用HTTPS,
    非框架前端使用HTTPS,
    如果前端需要HTTPS, 请使用反向代理.
    PROXIES""全局代理域名列表,用"
    PROXY_DIRECT_MODE""全局代理黑名单模式,默认不启用
    "url"为网址匹配模式;"regexp"为正则表达式匹配模式
    PROXY_DIRECT""全局代理黑名单匹配规则
    NEW_TASK_DELAY1新建任务后准备时间, 单位为秒, 默认为1秒
    TASK_WHILE_LOOP_TIMEOUT900任务运行中单个 While 循环最大运行时间,
    单位为秒, 默认为 15 分钟
    TASK_REQUEST_LIMIT1500任务运行中单个任务最大请求次数,
    默认为 1500 次
    USE_PYCURLTrue是否启用Pycurl模组
    ALLOW_RETRYTrue在Pycurl环境下部分请求可能导致Request错误时,
    自动修改冲突设置并重发请求
    DNS_SERVER""通过Curl使用指定DNS进行解析(仅支持Pycurl环境),
    如 8.8.8.8
    CURL_ENCODINGTrue是否允许使用Curl进行Encoding操作
    CURL_CONTENT_LENGTHTrue是否允许Curl使用Headers中自定义Content-Length请求
    NOT_RETRY_CODE详见配置...详见配置...
    EMPTY_RETRYTrue详见配置...
    USER0ISADMINTrue第一个注册用户为管理员,False关闭
    EXTRA_ONNX_NAME""config目录下自定义ONNX文件名
    (不填 ".onnx" 后缀)
    多个onnx文件名用"|"分隔
    EXTRA_CHARSETS_NAME""config目录下自定义ONNX对应自定义charsets.json文件名
    (不填 ".json" 后缀)
    多个json文件名用"|"分隔
    WS_PING_INTERVALNo5WebSocket ping间隔, 单位为秒, 默认为 5s
    WS_PING_TIMEOUTNo30WebSocket ping超时时间, 单位为秒, 默认为 30s
    WS_MAX_MESSAGE_SIZENo10485760WebSocket 单次接收最大消息大小, 默认为 10MB
    WS_MAX_QUEUE_SIZENo100WebSocket 最大消息队列大小, 默认为 100
    WS_MAX_CONNECTIONS_SUBSCRIBENo30WebSocket 公共模板更新页面最大连接数, 默认为 30
    SUBSCRIBE_ACCELERATE_URLNojsdelivr_cdn订阅加速方式或地址, 用于加速公共模板更新, 仅适用于 GitHub.
    详见配置...

    详细信息请查阅config.py

    基于 MIT 许可证发布.

    - diff --git a/zh_CN/guide/faq.html b/zh_CN/guide/faq.html index df472b9d2d3..43faa94bec3 100644 --- a/zh_CN/guide/faq.html +++ b/zh_CN/guide/faq.html @@ -5,17 +5,17 @@ 常见问题 | QD - - + + - - - + + + -
    Skip to content
    页面导航

    常见问题

    如何备份和恢复数据库?

    QD 默认使用 sqlite3 作为框架数据库,database.db 文件保存在 config 目录下。使用 Docker 容器部署时,可以使用 docker cp 命令备份数据库文件,然后使用 docker cp 命令在新容器中恢复数据库文件。

    sh
    # 数据库备份
    +    
    Skip to content
    页面导航

    常见问题

    如何备份和恢复数据库?

    QD 默认使用 sqlite3 作为框架数据库,database.db 文件保存在 config 目录下。使用 Docker 容器部署时,可以使用 docker cp 命令备份数据库文件,然后使用 docker cp 命令在新容器中恢复数据库文件。

    sh
    # 数据库备份
     docker cp container_name:/usr/src/app/config/database.db .
     # 数据库恢复
     docker cp database.db container_name:/usr/src/app/config/

    如何在 Docker 中配置邮箱服务器?

    sh
    docker run -d --name qd -p 8923:80 -v $(pwd)/qd/config:/usr/src/app/config --env MAIL_SMTP=STMP服务器 --env MAIL_PORT=邮箱服务器端口 --env MAIL_USER=用户名 --env MAIL_PASSWORD=密码  --env DOMAIN=域名 qdtoday/qd

    如何在 Docker 中使用 MySQL?

    sh
    docker run -d --name qd -p 8923:80 -v $(pwd)/qd/config:/usr/src/app/config --ENV DB_TYPE=mysql --ENV JAWSDB_MARIA_URL=mysql://用户名:密码@hostname:port/数据库名 qdtoday/qd

    如何自己搭建 Docker 镜像?

    请参考此镜像的构建文件 Dockerfile

    如何查看当前框架支持的 API 和 Jinja2 模板变量?

    请进入框架首页,然后点击左上角的 常用 API/过滤器 按钮,可以查看当前框架支持的API和Jinja2模板变量。

    如何提交 bug 问题?

    请在遇到问题后开启 Debug 模式,然后将详细的错误日志提交至 Issue

    QD 模板一般需要哪些请求?

    根据经验,以下请求是必要的:

    • 登录页面
    • 发布到登录页面
    • 发起 用户名、密码 请求
    • 发送后导致页面跳转的页面
    • 翻页前后的第一个网页

    我的用户名和密码会被泄露吗?

    为了帮助用户发起请求,终究需要记录用户名和密码。这只能靠服务器维护人员的自律来保证后端数据的安全。但在框架设计中,每个用户在存储时都使用安全密钥进行加密。使用密钥对用户数据进行加密,可以保证仅获取数据库就无法解密用户数据。(加密的用户数据包括用户上传的模板、用户为任务设置的变量等)

    如果还是不放心,可以自己搭建QD框架,下载模板在自己的服务器上运行。

    提示警告信息: Connect Redis falied: Error 10061

    QD 使用 redis 作为限流工具,如果没有安装 redis 服务,框架会提示以下警告信息。

    sh
    [W xxxxxx xx:xx:xx QD.RedisDB redisdb:28] Connect Redis falied: Error 10061 connecting to localhost:6379. 由于目标计算机积极拒绝,无法连接。

    然而,redis 在框架中并不是必须的,如果你不需要使用 限流 功能,可以忽略该警告信息。

    建议使用 Docker compose 部署 QD 框架, Docker compose 配置已默认安装 redis 容器。

    提示警告信息: Import PyCurl module falied

    QD 使用 pycurl 模块来发送 HTTP Proxy 请求。如果没有安装 pycurl 模块,框架会提示以下警告信息。

    sh
    [W xxxxxx xx:xx:xx QD.Http.Fetcher fetcher:34] Import PyCurl module falied: No module named 'pycurl'

    然而,pycurl 在框架中并不是必须的,如果你不需要使用 Proxy 功能,可以忽略该警告信息。

    pycurl 模块在 Windows 系统上安装比较麻烦,需要安装 libcurl 库,具体安装方法请参考 pycurl官方文档

    建议使用容器或 linux 系统部署 QD 框架, Docker 容器已预装Curl环境, 默认安装pycurl模组。

    如何注册推送方式

    你可以在工具箱->推送注册中注册不同的推送工具,以便在发生特定事件(例如定时任务执行失败)时向你推送通知

    请参考 推送工具

    公共模板更新页面提示错误代码为 undefined

    公共模板更新页面提示错误代码为 undefined, 或者控制台显示 WebSocket 连接 failed 但不显示错误原因

    请检查反向代理相关配置是否正确, 参考 Nginx反向代理WebSocket服务连接报错

    参考配置如下:

    Nginx
    server {
    @@ -38,8 +38,8 @@
             proxy_set_header  X-Forwarded-Proto  $scheme;
             # 其他可选配置 结束
         }
    -}

    基于 MIT 许可证发布.

    - diff --git a/zh_CN/guide/how-to-use.html b/zh_CN/guide/how-to-use.html index 5ac85d70e52..0c9f3fbc963 100644 --- a/zh_CN/guide/how-to-use.html +++ b/zh_CN/guide/how-to-use.html @@ -5,19 +5,19 @@ 如何使用? | QD - - + + - - + + - + -
    Skip to content
    页面导航

    如何使用?

    获取 HAR

    1. 什么是 HAR?

    HAR:https://toolbox.googleapps.com/apps/har_analyzer/?lang=zh_CN

    2. 抓包

    2.1. Chrome 或 Edge

    1. F12Ctrl + Shift + I ,或从 Chrome 菜单中选择 更多工具 > 开发者工具
    2. 从屏幕底部或右侧打开的面板中,选择 网络 选项卡。
    3. 确保 网络 选项卡左上角的 录制 按钮显示为 红色
    4. 如果它是灰色的,单击一下开始录制。
    5. 选中 保留日志 旁边的框。 Preserve log
    6. 单击 清除 按钮以清除 网络 选项卡中的所有现有日志。
    7. 现在尝试重现您计划发起的 HTTP 请求。
    8. 重现任务后,右键单击网络请求网格上的任意位置。
    9. 选择 另存为带内容的 HARSave as HAR with Content
    10. 将文件保存到您的计算机。

    2.2. 火狐

    1. F12 (或转到 Tools > Web Developer > Network )。
    2. 现在尝试重现您计划发起的 HTTP 请求。
    3. 右键单击​​加载的结果。
    4. 选择全部另存为 har。

    2.3. Windows - Fiddler

    1. 打开 Fiddler,打开 Tools 菜单,选择 Options
    2. 选择 HTTPS 选项卡 ,勾选 Capture HTTPS Connects
    3. 选择 连接 选项卡,选中 解密 HTTPS 流量
    4. 现在尝试重现您计划发起的 HTTP 请求。
    5. 导出为 HAR 格式 - 请选择 HTTPArchive 作为导出方式。

    2.4. IOS - Stream

    1. 打开 Stream。
    2. 抓取HTTPS请求前,需要安装CA证书, setting > General > About > Certificate Trust Settings 信任CA证书。
    3. 点击开始抓包按钮,手机会自动弹出VPN配置窗口,然后选择允许。
    4. 现在尝试重现您计划发起的 HTTP 请求。
    5. 在应用页面,点击停止抓拍结束本次抓拍。
    6. 导出HAR文件。

    3. 公共模板

    1. 点击 我的模板 右侧的 社区模板 按钮。
    2. 更新存储库以获取最新的 HAR 文件列表。
    3. 选择你要使用的HAR文件,点击 Subscribe 按钮订阅模板。
    4. 根据需要修改模板。
    5. 然后跳到 3.编辑模板 继续编辑。

    上传 HAR 文件

    1. 访问并登录 QD 首页。
    2. 点击 我的模板 右侧的 + 按钮。
    3. 上传刚刚保存的 HAR 文件。
    4. 点击 上传 继续。

    编辑模板

    1. 将用户名、密码、cookie、header 等根据用户变化的部分替换成类似 {{ username }} 的模板。(模板支持 jinja2 语法
    2. 在请求编辑中使用测试面板测试模板是否正确返回,使用正确和错误的用户名进行测试。
    3. 填写 成功/失败断言,这有助于检测模板任务是否运行失败。
    4. 当请求中需要上一次请求的一些数据时,使用变量抽取,通过正则化抽取数据,保存在环境变量中。使用组选择器 ab(\w+)cd 选择其中的一部分。
    5. 使用 __log__ 提取任务日志。
    6. 当所有请求编辑完成后,使用下载按钮旁边的 测试 来测试整体。
    7. 正在编辑的模板会自动保存在浏览器缓存中,不用担心丢失。
    8. 单击 保存 按钮保存模板。
    9. 单击 下载 按钮下载模板。

    创建定时任务

    1. 点击 我的任务 右侧的 + 按钮。
    2. 选择刚刚创建的模板。
    3. 填写任务变量,任务间隔、任务组和任务执行时间。
    4. 单击 测试 按钮测试任务。
    5. 单击保存按钮保存任务。

    基于 MIT 许可证发布.

    - diff --git a/zh_CN/guide/update.html b/zh_CN/guide/update.html index 2dc68c6fde5..7b0007030f1 100644 --- a/zh_CN/guide/update.html +++ b/zh_CN/guide/update.html @@ -5,17 +5,17 @@ 更新方法 | QD - - + + - - - + + + -
    Skip to content
    页面导航

    更新方法

    操作前请一定要记得备份数据库!!!

    更新后请重启容器或清空浏览器缓存。

    源码部署更新

    sh
    # 先 cd 到源码所在目录, 执行命令后重启进程
    +    
    Skip to content
    页面导航

    更新方法

    操作前请一定要记得备份数据库!!!

    更新后请重启容器或清空浏览器缓存。

    源码部署更新

    sh
    # 先 cd 到源码所在目录, 执行命令后重启进程
     wget https://gitee.com/qd-today/qd/raw/master/update.sh -O ./update.sh && \
     sh ./update.sh

    Docker Compose 部署更新

    sh
    # 先 cd 到 docker-compose.yml 所在目录, 执行命令后重启容器
     docker compose pull && \
    @@ -24,8 +24,8 @@
     wget https://gitee.com/qd-today/qd/raw/master/update.sh -O /usr/src/app/update.sh && \
     sh /usr/src/app/update.sh

    强制同步最新源码

    sh
    # 先 cd 到仓库代码根目录, 执行命令后重启进程
     wget https://gitee.com/qd-today/qd/raw/master/update.sh -O ./update.sh && \
    -sh ./update.sh -f

    基于 MIT 许可证发布.

    - diff --git a/zh_CN/guide/what-is-qd.html b/zh_CN/guide/what-is-qd.html index 1067294ce8f..9c7b2427677 100644 --- a/zh_CN/guide/what-is-qd.html +++ b/zh_CN/guide/what-is-qd.html @@ -5,18 +5,18 @@ 什么是 QD? | QD - - + + - - - + + + -
    Skip to content
    页面导航

    什么是 QD?

    QD 是 一个 基于 HAR 编辑器和 Tornado 服务端的 HTTP 定时任务自动执行 Web 框架。

    特性

    • 基于Har: 仅需上传通过抓包得到的 Har, 即可制作框架所需的 HTTP 任务模板。
    • Tornado 服务端: 使用 Tornado 作为服务端, 以实现异步响应前端和发起 HTTP 请求。
    • API & 插件支持: 内置多种 API 和过滤器用于模板制作, 后续将提供自定义插件支持。
    • 开源: QD 是一个基于 MIT 许可证的开源项目。

    如何部署

    请参考: 部署

    如何使用

    请参考: 如何使用

    如何更新

    请参考: 更新

    讨论

    基于 MIT 许可证发布.

    - diff --git a/zh_CN/index.html b/zh_CN/index.html index 692e3d84c27..3bec0870574 100644 --- a/zh_CN/index.html +++ b/zh_CN/index.html @@ -5,18 +5,18 @@ HTTP定时任务自动执行框架 | QD - - + + - - - + + + -
    Skip to content

    QD

    一个 HTTP 定时任务自动执行 Web 框架

    QD

    基于Har

    仅需上传通过抓包得到的 Har, 即可制作框架所需的 HTTP 任务模板。

    Tornado 服务端

    使用 Tornado 作为服务端, 以实现异步响应前端请求和发起 HTTP 请求。

    API & 插件支持

    内置多种 API 和过滤器用于模板制作, 后续将提供自定义插件支持。

    开源项目

    QD 是一个基于 MIT 许可证的开源项目。

    基于 MIT 许可证发布.

    - diff --git a/zh_CN/toolbox/pusher.html b/zh_CN/toolbox/pusher.html index d36460b9558..f1c14c1ca96 100644 --- a/zh_CN/toolbox/pusher.html +++ b/zh_CN/toolbox/pusher.html @@ -5,17 +5,17 @@ 推送工具 | QD - - + + - - - + + + -
    Skip to content
    页面导航

    推送工具

    推送注册

    QD 框架提供多种推送方式,你可以在 工具箱->推送注册 中注册不同的推送工具,以便在发生特定事件(例如定时任务执行失败)时向你推送通知。

    提醒

    推送注册时填写的参数以 ; 分隔并连接, 如果参数值为空, 请务必保留该参数位置后的 ; , 否则可能导致参数解析错误.

    推送注册测试

    工具箱->推送注册 中注册推送方式后, 可以点击 测试 按钮来测试推送方式是否可用.

    如果推送方式可用, 则会收到一条推送消息, 否则会提示推送失败.

    提醒

    进行推送注册测试时, 请确保以下条件已满足:

    • 填写了正确的参数;

    • 邮箱密码 中填写了 QD 框架的用户邮箱和密码.

    推送注册前值

    工具箱->推送注册 中注册推送方式后, 可以点击 前值 按钮来查看推送注册的前值.

    提醒

    查看推送注册前值时, 请确保 邮箱密码 中填写了 QD 框架的用户邮箱和密码.

    推送方式

    QD 框架提供以下推送方式:

    邮件推送

    邮件推送无需在 工具箱->推送注册 中设置参数, 需要在环境变量中配置以下参数:

    变量名是否必须默认值说明
    MAIL_SMTP""邮箱SMTP服务器
    MAIL_PORT465邮箱SMTP服务器端口
    MAIL_USER""邮箱用户名
    MAIL_PASSWORD""邮箱密码
    MAIL_FROMMAIL_USER发送时使用的邮箱,默认与MAIL_USER相同
    MAIL_DOMAIN_HTTPSFalse发送的邮件链接启用HTTPS,
    非框架前端使用HTTPS,
    如果前端需要HTTPS, 请使用反向代理.

    如果你使用的是以下邮箱, 参考下方的SMTP开启方式和配置方法来获取你的SMTP服务器地址和端口。

    邮箱SMTP开启方式SMTP配置方法其他说明
    腾讯企业邮箱如何开启腾讯企业邮箱的POP/SMTP/IMAP服务?常用邮件客户端软件设置成员如何绑定/关联微信以及开启安全登录获取客户端专用密码?
    QQ邮箱如何开启QQ邮箱的POP3/SMTP/IMAP服务?如何打开POP3/SMTP/IMAP功能?开启POP3/SMTP/IMAP功能为什么需要先设置独立密码?
    网易企业邮箱-企业邮箱的POP、SMTP、IMAP服务器地址设置。什么是客户端授权码,如何使用?
    网易邮箱什么是POP3、SMTP及IMAP?如何开启客户端协议?-
    Gmail-如何使用POP3/SMTP/IMAP服务?如何使用客户端授权密码?
    Outlook-POP、IMAP 和 SMTP 设置对不支持双重验证的应用使用应用密码

    MailGun

    如果您配置了 MailGun, 请在环境变量中配置以下参数:

    变量名是否必须默认值说明
    MAILGUN_KEY""MailGun API Key
    MAILGUN_DOMAINDOMAINMailGun Domain,
    默认为环境变量中的 DOMAIN 值,
    请在环境变量中配置 DOMAIN 值,
    并在 MailGun 控制台中设置对应的 Domain,
    否则无法使用 MailGun

    Bark 推送

    Bark 推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    BarkUrl""Bark 推送地址,
    格式为 https://api.day.app/推送码,
    推送码可在 Bark 客户端中获取,
    如果你使用的是自建 Bark 服务,
    请将 https://api.day.app/ 替换为你的 Bark 服务地址 .
    例如: http://bark.example.com/推送码

    Server 酱推送

    Server 酱推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    skey""Server 酱推送 SCKEY,
    可在 Server 酱 中获取对应的 SendKey

    Telegram Bot 推送

    Telegram Bot 推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    TG_TOKEN""Telegram Bot Token,
    可在 BotFather 中获取,
    应当为 Bot 的 ID 以及对应的 Key 的组合,但是不包括 bot,
    即 token 形式:1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    TG_USERID""Telegram Chat ID,
    可在 Telegram API 中获取,
    Telegram API中的 chat_id 字段,如 222222222
    TG_HOST""Telegram API Host,
    可为域名或IP地址,
    例如 tg.mydomain.com,
    也可以带上 http:// 或者 https:// 前缀,
    如果留空, 则使用默认值 api.telegram.org
    PROXY_URL""Proxy 代理地址,
    格式为 scheme://username:password@host:port,
    例如 http://user:password@host:port,
    如果留空, 则不使用 Proxy 代理
    PUSH_PIC_URL""自定义推送图片地址,
    如果留空, 则使用环境变量 PUSH_PIC_URL
    示例

    假设你已经创建了一个具有自定义域名的 Telegram Bot API:

    https://tg.mydomain.com/bot1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/sendMessage?chat_id=222222222&text=HelloWorld

    上面这个请求将会向222222222这个聊天发送一条HelloWorld消息, 那么在注册 Telegram Bot 作为推送方式时:

    • TG_TOKEN1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    • TG_USERID222222222
    • TG_HOSTtg.mydomain.com

    因此最终填写形式形如:

    Text
    1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;222222222;tg.mydomain.com

    钉钉推送

    钉钉推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    DINGDING_TOKEN""钉钉推送 Token,
    可在 自定义机器人接入 中获取,
    如果你在 安全设置 中设置了 IP地址段 ,
    请将 QD 服务器的 IP 地址添加到 IP地址段 中,
    否则无法接收到推送消息;
    如果你在 安全设置 中设置了 自定义关键词 ,
    请将 QD/推送/测试 添加到 自定义关键词 中,
    否则无法接收到推送消息;
    请勿在 安全设置 中开启 加签, QD 框架暂不支持钉钉加签推送.
    PUSH_PIC_URL""自定义推送图片地址,
    如果留空, 则使用环境变量 PUSH_PIC_URL

    WXPusher 推送

    WXPusher 推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    APPTOKEN""WXPusher 推送 Token,
    可在 WXPusher 中获取
    WxPusher_UID""WXPusher 推送 UID,
    可在 WXPusher 中获取

    企业微信应用推送

    企业微信应用推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    CorpID""企业微信 CorpID,
    可在 企业微信 中获取
    AgentID""企业微信应用 AgentID,
    可在 企业微信 中获取
    AgentSecret""企业微信应用 Secret,
    可在 企业微信 中获取
    PUSH_PIC_URL_or_Media_id""自定义推送图片地址或 Media_id,
    Media_id 可以通过 企业微信 接口获取,
    如果留空, 则使用环境变量 PUSH_PIC_URL
    QYWX_PROXY_HOST""企业微信 Host,
    可为域名或IP地址,
    例如 qywx.mydomain.com,
    也可以带上 http:// 或者 https:// 前缀,
    如果留空, 则使用默认值 https://qyapi.weixin.qq.com/

    QYWX_PROXY_HOST

    如果你使用 Nginx 代理企业微信应用推送, 以下为 Nginx 配置示例:

    Nginx
    server {
    +    
    Skip to content
    页面导航

    推送工具

    推送注册

    QD 框架提供多种推送方式,你可以在 工具箱->推送注册 中注册不同的推送工具,以便在发生特定事件(例如定时任务执行失败)时向你推送通知。

    提醒

    推送注册时填写的参数以 ; 分隔并连接, 如果参数值为空, 请务必保留该参数位置后的 ; , 否则可能导致参数解析错误.

    推送注册测试

    工具箱->推送注册 中注册推送方式后, 可以点击 测试 按钮来测试推送方式是否可用.

    如果推送方式可用, 则会收到一条推送消息, 否则会提示推送失败.

    提醒

    进行推送注册测试时, 请确保以下条件已满足:

    • 填写了正确的参数;

    • 邮箱密码 中填写了 QD 框架的用户邮箱和密码.

    推送注册前值

    工具箱->推送注册 中注册推送方式后, 可以点击 前值 按钮来查看推送注册的前值.

    提醒

    查看推送注册前值时, 请确保 邮箱密码 中填写了 QD 框架的用户邮箱和密码.

    推送方式

    QD 框架提供以下推送方式:

    邮件推送

    邮件推送无需在 工具箱->推送注册 中设置参数, 需要在环境变量中配置以下参数:

    变量名是否必须默认值说明
    MAIL_SMTP""邮箱SMTP服务器
    MAIL_PORT465邮箱SMTP服务器端口
    MAIL_USER""邮箱用户名
    MAIL_PASSWORD""邮箱密码
    MAIL_FROMMAIL_USER发送时使用的邮箱,默认与MAIL_USER相同
    MAIL_DOMAIN_HTTPSFalse发送的邮件链接启用HTTPS,
    非框架前端使用HTTPS,
    如果前端需要HTTPS, 请使用反向代理.

    如果你使用的是以下邮箱, 参考下方的SMTP开启方式和配置方法来获取你的SMTP服务器地址和端口。

    邮箱SMTP开启方式SMTP配置方法其他说明
    腾讯企业邮箱如何开启腾讯企业邮箱的POP/SMTP/IMAP服务?常用邮件客户端软件设置成员如何绑定/关联微信以及开启安全登录获取客户端专用密码?
    QQ邮箱如何开启QQ邮箱的POP3/SMTP/IMAP服务?如何打开POP3/SMTP/IMAP功能?开启POP3/SMTP/IMAP功能为什么需要先设置独立密码?
    网易企业邮箱-企业邮箱的POP、SMTP、IMAP服务器地址设置。什么是客户端授权码,如何使用?
    网易邮箱什么是POP3、SMTP及IMAP?如何开启客户端协议?-
    Gmail-如何使用POP3/SMTP/IMAP服务?如何使用客户端授权密码?
    Outlook-POP、IMAP 和 SMTP 设置对不支持双重验证的应用使用应用密码

    MailGun

    如果您配置了 MailGun, 请在环境变量中配置以下参数:

    变量名是否必须默认值说明
    MAILGUN_KEY""MailGun API Key
    MAILGUN_DOMAINDOMAINMailGun Domain,
    默认为环境变量中的 DOMAIN 值,
    请在环境变量中配置 DOMAIN 值,
    并在 MailGun 控制台中设置对应的 Domain,
    否则无法使用 MailGun

    Bark 推送

    Bark 推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    BarkUrl""Bark 推送地址,
    格式为 https://api.day.app/推送码,
    推送码可在 Bark 客户端中获取,
    如果你使用的是自建 Bark 服务,
    请将 https://api.day.app/ 替换为你的 Bark 服务地址 .
    例如: http://bark.example.com/推送码

    Server 酱推送

    Server 酱推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    skey""Server 酱推送 SCKEY,
    可在 Server 酱 中获取对应的 SendKey

    Telegram Bot 推送

    Telegram Bot 推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    TG_TOKEN""Telegram Bot Token,
    可在 BotFather 中获取,
    应当为 Bot 的 ID 以及对应的 Key 的组合,但是不包括 bot,
    即 token 形式:1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    TG_USERID""Telegram Chat ID,
    可在 Telegram API 中获取,
    Telegram API中的 chat_id 字段,如 222222222
    TG_HOST""Telegram API Host,
    可为域名或IP地址,
    例如 tg.mydomain.com,
    也可以带上 http:// 或者 https:// 前缀,
    如果留空, 则使用默认值 api.telegram.org
    PROXY_URL""Proxy 代理地址,
    格式为 scheme://username:password@host:port,
    例如 http://user:password@host:port,
    如果留空, 则不使用 Proxy 代理
    PUSH_PIC_URL""自定义推送图片地址,
    如果留空, 则使用环境变量 PUSH_PIC_URL
    示例

    假设你已经创建了一个具有自定义域名的 Telegram Bot API:

    https://tg.mydomain.com/bot1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/sendMessage?chat_id=222222222&text=HelloWorld

    上面这个请求将会向222222222这个聊天发送一条HelloWorld消息, 那么在注册 Telegram Bot 作为推送方式时:

    • TG_TOKEN1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    • TG_USERID222222222
    • TG_HOSTtg.mydomain.com

    因此最终填写形式形如:

    Text
    1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;222222222;tg.mydomain.com

    钉钉推送

    钉钉推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    DINGDING_TOKEN""钉钉推送 Token,
    可在 自定义机器人接入 中获取,
    如果你在 安全设置 中设置了 IP地址段 ,
    请将 QD 服务器的 IP 地址添加到 IP地址段 中,
    否则无法接收到推送消息;
    如果你在 安全设置 中设置了 自定义关键词 ,
    请将 QD/推送/测试 添加到 自定义关键词 中,
    否则无法接收到推送消息;
    请勿在 安全设置 中开启 加签, QD 框架暂不支持钉钉加签推送.
    PUSH_PIC_URL""自定义推送图片地址,
    如果留空, 则使用环境变量 PUSH_PIC_URL

    WXPusher 推送

    WXPusher 推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    APPTOKEN""WXPusher 推送 Token,
    可在 WXPusher 中获取
    WxPusher_UID""WXPusher 推送 UID,
    可在 WXPusher 中获取

    企业微信应用推送

    企业微信应用推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    CorpID""企业微信 CorpID,
    可在 企业微信 中获取
    AgentID""企业微信应用 AgentID,
    可在 企业微信 中获取
    AgentSecret""企业微信应用 Secret,
    可在 企业微信 中获取
    PUSH_PIC_URL_or_Media_id""自定义推送图片地址或 Media_id,
    Media_id 可以通过 企业微信 接口获取,
    如果留空, 则使用环境变量 PUSH_PIC_URL
    QYWX_PROXY_HOST""企业微信 Host,
    可为域名或IP地址,
    例如 qywx.mydomain.com,
    也可以带上 http:// 或者 https:// 前缀,
    如果留空, 则使用默认值 https://qyapi.weixin.qq.com/

    QYWX_PROXY_HOST

    如果你使用 Nginx 代理企业微信应用推送, 以下为 Nginx 配置示例:

    Nginx
    server {
         listen 443 ssl;
         server_name qywx.mydomain.com;
         ssl_certificate /etc/nginx/ssl/qywx.mydomain.com/fullchain.cer;
    @@ -27,8 +27,8 @@
         location / {
             proxy_pass https://qyapi.weixin.qq.com/;
         }
    -}

    企业微信 Webhook 推送

    企业微信 Webhook 推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    QYWX_WebHook_Key""企业微信 Webhook Key,
    可在 企业微信 中获取

    自定义推送

    自定义推送支持 GETPOST 推送方式, 使用 {log}{t} 表示要替换的日志和标题.

    自定义推送需要在 工具箱->推送注册 中设置参数:

    自定义 Get 推送

    参数名是否必须默认值说明
    URL""自定义 Get 推送地址,
    例如 https://example.com/push?log={log}&t={t}
    GET_Header""自定义 Get 推送 Header,
    使用 json 格式(半角双引号), 格式为 { "key1": "value1", "key2": "value2" },
    如果留空, 则不设置 Header

    自定义 Post 推送

    参数名是否必须默认值说明
    URL""自定义 Post 推送地址,
    例如 https://example.com/push
    POST_Header""自定义 Post 推送 Header,
    使用 json 格式(半角双引号), 格式为 { "key1": "value1", "key2": "value2" },
    如果留空, 则不设置 Header
    POST_Data""自定义 Post 推送 Body,
    使用 json 格式(半角双引号),
    例如 { "key1": "{log}", "key2": "{t}" },
    如果留空, 则不设置 Body

    推送设置

    工具箱->推送注册 中注册推送方式后, 可以在 工具箱->推送设置 中设置推送方式的触发条件.

    推送设置 中, 可以设置每个任务的推送开关, 任务结果推送渠道, 任务结果通知选择, 任务结果批量推送等.

    任务结果推送渠道

    用于设置任务结果推送渠道, 任务结果推送渠道包括以下几种:

    任务结果通知选择

    用于设置在何时推送任务结果, 任务结果通知选择包括以下几种:

    • 手动执行成功通知
    • 手动执行失败通知
    • 自动执行成功通知
    • 自动执行失败通知

    自动错误几次后提醒 可以设置在自动执行失败几次后推送通知, 例如设置为 3 , 则当自动执行失败 3 次后, 会推送通知.

    任务结果批量推送

    开启定期批量推送 时, 会根据 批量推送时间设置批量推送时间间隔 来批量推送距离本次推送时间前指定时间间隔内的任务结果.

    • 批量推送时间设置: 初次批量推送时间设置, 例如设置为 12:00:00 , 则会在当天的 12:00:00 进行一次批量推送.

    • 批量推送时间间隔: 设置每隔多少秒推送一次任务结果, 默认为 86400 秒, 即每隔一天批量推送本次推送时间前86400秒内的任务结果.

    基于 MIT 许可证发布.

    -