From fbe881bea9e61ea1d4497a13f987511e797e92d1 Mon Sep 17 00:00:00 2001 From: JSONbored <49853598+JSONbored@users.noreply.github.com> Date: Tue, 26 May 2026 05:41:04 -0700 Subject: [PATCH 1/5] fix(app): gate public PR visibility for confirmed miners Makes GitHub App output quiet for non-miners, switches confirmed miner PRs to public-safe comments and labels by default, disables detailed public check output, and updates install health and docs around Issues write and optional Checks write. --- .github/ISSUE_TEMPLATE/feature_request.yml | 2 +- README.md | 13 +- docs/.nojekyll | 0 docs/404.html | 28 --- docs/CNAME | 1 - docs/assets/app.DeJiVmBc.js | 1 - .../chunks/@localSearchIndexroot.DQCfcpak.js | 1 - .../chunks/VPLocalSearchBox.DIqEGPXK.js | 3 - docs/assets/chunks/framework.BXgR76oC.js | 4 - docs/assets/chunks/theme.BfZ7hXNa.js | 2 - docs/assets/guide_auth.md.DNA7JhY7.js | 3 - docs/assets/guide_auth.md.DNA7JhY7.lean.js | 1 - .../guide_github-app-setup.md.ZPvLDsvt.js | 3 - ...guide_github-app-setup.md.ZPvLDsvt.lean.js | 1 - docs/assets/guide_install.md.ByQAA8QU.js | 11 - docs/assets/guide_install.md.ByQAA8QU.lean.js | 1 - docs/assets/guide_maintainers.md.CGSokUpu.js | 1 - .../guide_maintainers.md.CGSokUpu.lean.js | 1 - docs/assets/guide_mcp.md.DK8zvHnS.js | 19 -- docs/assets/guide_mcp.md.DK8zvHnS.lean.js | 1 - docs/assets/guide_miners.md.BeaGERAQ.js | 6 - docs/assets/guide_miners.md.BeaGERAQ.lean.js | 1 - docs/assets/index.md.BKalGx3J.js | 1 - docs/assets/index.md.BKalGx3J.lean.js | 1 - .../inter-italic-cyrillic-ext._dlW9xFb.woff2 | Bin 43716 -> 0 bytes .../inter-italic-cyrillic.D7dRslh9.woff2 | Bin 31080 -> 0 bytes .../inter-italic-greek-ext.Ct-Tf2bq.woff2 | Bin 17444 -> 0 bytes docs/assets/inter-italic-greek.DNcpQ8QC.woff2 | Bin 32036 -> 0 bytes .../inter-italic-latin-ext.DytegdRQ.woff2 | Bin 140768 -> 0 bytes docs/assets/inter-italic-latin.COaG5lWR.woff2 | Bin 78844 -> 0 bytes .../inter-italic-vietnamese.BI5UxJD-.woff2 | Bin 14912 -> 0 bytes .../inter-roman-cyrillic-ext.BeNbU08G.woff2 | Bin 41092 -> 0 bytes .../inter-roman-cyrillic.CD0kT8R4.woff2 | Bin 28824 -> 0 bytes .../inter-roman-greek-ext.CFAEQ5Ow.woff2 | Bin 16076 -> 0 bytes docs/assets/inter-roman-greek.Dsf7YjP7.woff2 | Bin 29240 -> 0 bytes .../inter-roman-latin-ext.Dl_ayf4-.woff2 | Bin 128120 -> 0 bytes docs/assets/inter-roman-latin.Cy4MYw_J.woff2 | Bin 71624 -> 0 bytes .../inter-roman-vietnamese.CpqCnS2H.woff2 | Bin 14184 -> 0 bytes docs/assets/reference_api.md.CvVunwm0.js | 3 - docs/assets/reference_api.md.CvVunwm0.lean.js | 1 - docs/assets/security_privacy.md.CHSODDHk.js | 1 - .../security_privacy.md.CHSODDHk.lean.js | 1 - docs/assets/style.DbhuNsMp.css | 1 - docs/assets/troubleshooting.md.BAr9iojM.js | 4 - .../troubleshooting.md.BAr9iojM.lean.js | 1 - docs/guide/auth.html | 33 --- docs/guide/github-app-setup.html | 33 --- docs/guide/install.html | 41 ---- docs/guide/maintainers.html | 31 --- docs/guide/mcp.html | 49 ----- docs/guide/miners.html | 36 --- docs/hashmap.json | 1 - docs/index.html | 31 --- docs/logo.svg | 8 - docs/reference/api.html | 33 --- docs/security/privacy.html | 31 --- docs/troubleshooting.html | 34 --- docs/vp-icons.css | 1 - migrations/0009_github_app_visibility.sql | 18 ++ site/guide/github-app-setup.md | 20 +- site/guide/maintainers.md | 19 +- site/security/privacy.md | 2 +- src/api/routes.ts | 17 +- src/db/repositories.ts | 86 ++++++-- src/db/schema.ts | 12 +- src/github/backfill.ts | 23 +- src/github/labels.ts | 59 +++++ src/gittensor/api.ts | 113 ++++++---- src/openapi/schemas.ts | 8 +- src/queue/processors.ts | 193 +++++++++++----- src/rules/advisory.ts | 28 +-- src/signals/engine.ts | 27 ++- src/types.ts | 9 +- test/integration/api.test.ts | 9 +- test/unit/backfill.test.ts | 51 ++++- test/unit/data-spine.test.ts | 7 +- test/unit/github-app.test.ts | 11 +- test/unit/github-labels.test.ts | 104 +++++++++ test/unit/queue.test.ts | 206 +++++++++++++++++- test/unit/rules.test.ts | 43 +++- test/unit/signals-v2.test.ts | 18 +- test/unit/signals.test.ts | 39 +++- 82 files changed, 912 insertions(+), 690 deletions(-) delete mode 100644 docs/.nojekyll delete mode 100644 docs/404.html delete mode 100644 docs/CNAME delete mode 100644 docs/assets/app.DeJiVmBc.js delete mode 100644 docs/assets/chunks/@localSearchIndexroot.DQCfcpak.js delete mode 100644 docs/assets/chunks/VPLocalSearchBox.DIqEGPXK.js delete mode 100644 docs/assets/chunks/framework.BXgR76oC.js delete mode 100644 docs/assets/chunks/theme.BfZ7hXNa.js delete mode 100644 docs/assets/guide_auth.md.DNA7JhY7.js delete mode 100644 docs/assets/guide_auth.md.DNA7JhY7.lean.js delete mode 100644 docs/assets/guide_github-app-setup.md.ZPvLDsvt.js delete mode 100644 docs/assets/guide_github-app-setup.md.ZPvLDsvt.lean.js delete mode 100644 docs/assets/guide_install.md.ByQAA8QU.js delete mode 100644 docs/assets/guide_install.md.ByQAA8QU.lean.js delete mode 100644 docs/assets/guide_maintainers.md.CGSokUpu.js delete mode 100644 docs/assets/guide_maintainers.md.CGSokUpu.lean.js delete mode 100644 docs/assets/guide_mcp.md.DK8zvHnS.js delete mode 100644 docs/assets/guide_mcp.md.DK8zvHnS.lean.js delete mode 100644 docs/assets/guide_miners.md.BeaGERAQ.js delete mode 100644 docs/assets/guide_miners.md.BeaGERAQ.lean.js delete mode 100644 docs/assets/index.md.BKalGx3J.js delete mode 100644 docs/assets/index.md.BKalGx3J.lean.js delete mode 100644 docs/assets/inter-italic-cyrillic-ext._dlW9xFb.woff2 delete mode 100644 docs/assets/inter-italic-cyrillic.D7dRslh9.woff2 delete mode 100644 docs/assets/inter-italic-greek-ext.Ct-Tf2bq.woff2 delete mode 100644 docs/assets/inter-italic-greek.DNcpQ8QC.woff2 delete mode 100644 docs/assets/inter-italic-latin-ext.DytegdRQ.woff2 delete mode 100644 docs/assets/inter-italic-latin.COaG5lWR.woff2 delete mode 100644 docs/assets/inter-italic-vietnamese.BI5UxJD-.woff2 delete mode 100644 docs/assets/inter-roman-cyrillic-ext.BeNbU08G.woff2 delete mode 100644 docs/assets/inter-roman-cyrillic.CD0kT8R4.woff2 delete mode 100644 docs/assets/inter-roman-greek-ext.CFAEQ5Ow.woff2 delete mode 100644 docs/assets/inter-roman-greek.Dsf7YjP7.woff2 delete mode 100644 docs/assets/inter-roman-latin-ext.Dl_ayf4-.woff2 delete mode 100644 docs/assets/inter-roman-latin.Cy4MYw_J.woff2 delete mode 100644 docs/assets/inter-roman-vietnamese.CpqCnS2H.woff2 delete mode 100644 docs/assets/reference_api.md.CvVunwm0.js delete mode 100644 docs/assets/reference_api.md.CvVunwm0.lean.js delete mode 100644 docs/assets/security_privacy.md.CHSODDHk.js delete mode 100644 docs/assets/security_privacy.md.CHSODDHk.lean.js delete mode 100644 docs/assets/style.DbhuNsMp.css delete mode 100644 docs/assets/troubleshooting.md.BAr9iojM.js delete mode 100644 docs/assets/troubleshooting.md.BAr9iojM.lean.js delete mode 100644 docs/guide/auth.html delete mode 100644 docs/guide/github-app-setup.html delete mode 100644 docs/guide/install.html delete mode 100644 docs/guide/maintainers.html delete mode 100644 docs/guide/mcp.html delete mode 100644 docs/guide/miners.html delete mode 100644 docs/hashmap.json delete mode 100644 docs/index.html delete mode 100644 docs/logo.svg delete mode 100644 docs/reference/api.html delete mode 100644 docs/security/privacy.html delete mode 100644 docs/troubleshooting.html delete mode 100644 docs/vp-icons.css create mode 100644 migrations/0009_github_app_visibility.sql create mode 100644 src/github/labels.ts create mode 100644 test/unit/github-labels.test.ts diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 743dc283b2..49a9c08678 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -26,4 +26,4 @@ body: - label: This is backend-only. - label: This does not require storing user PATs. - label: This does not expose wallet details, raw trust scores, or private rankings publicly. - - label: This does not auto-label, auto-close, or auto-merge contributor work. + - label: This does not auto-close, auto-merge, or rewrite contributor work. diff --git a/README.md b/README.md index 2e0f678305..d4517f1878 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Gittensory is a backend-only intelligence layer for Gittensor registered reposit It helps miners and contributors make better decisions before they open work, and it helps maintainers review Gittensor-driven PRs with less noise. The product is the signal: role-aware contributor context, official Gittensor stats, local MCP preflight, queue health, collision risk, reviewability, and repo configuration quality. -Gittensory is not a Gittensor frontend, not a public leaderboard, and not an auto-label/auto-close bot. +Gittensory is not a Gittensor frontend, not a public leaderboard, and not an auto-close or auto-merge bot. ## What It Does @@ -12,14 +12,14 @@ Gittensory is not a Gittensor frontend, not a public leaderboard, and not an aut - Analyzes local branches through the MCP wrapper without uploading source contents. - Explains private reward/risk context: score blockers, open PR pressure, lane fit, duplicate risk, credibility assumptions, and maintainer friction. - Generates public-safe PR packets that help contributors write cleaner submissions. -- Gives maintainers private PR reviewability packets and advisory check runs. +- Gives maintainers private PR reviewability packets through the API/MCP, while the GitHub App stays public-safe. - Tracks repository intelligence: lane correctness, registry changes, queue health, label/config quality, collisions, bounties, and sync fidelity. ## Surfaces - Worker API: Cloudflare Workers + Hono + D1 + Queues. - MCP package: `@jsonbored/gittensory-mcp`, a local stdio wrapper for coding agents. -- GitHub App: check runs and optional sanitized sticky PR comments. +- GitHub App: quiet PR inspection, public-safe sticky comments, and maintainer-configured labels only for officially confirmed Gittensor miners. - Docs site: VitePress under `site/`, deployed at `https://gittensory.aethereal.dev/`. ## MCP Install @@ -128,13 +128,12 @@ Internal job routes are protected by `INTERNAL_JOB_TOKEN`. Required repository permissions: - Metadata: read -- Checks: write - Pull requests: read -- Issues: read +- Issues: write Optional repository permission: -- Issues: write, only when public-safe sticky PR comments are enabled. +- Checks: write, only when minimal check runs are explicitly enabled. Required events: @@ -144,6 +143,8 @@ Required events: If GitHub shows `Installation target`, select it. Gittensory should not block install health on event names that GitHub does not show in the app UI. +Default GitHub App behavior is low-noise: non-miner, bot, and maintainer-associated PR authors produce no public output. Confirmed Gittensor miners get one sticky public-safe PR comment and the configured label, defaulting to `gittensor`. Private reviewability, scoring, wallet, hotkey, and reward/risk context never appears in public GitHub comments or checks. + ## Docs ```sh diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index fb9fd49543..0000000000 --- a/docs/404.html +++ /dev/null @@ -1,28 +0,0 @@ - - -
- - -W)for(;x<=F;)ke(f[x],E,T,!0),x++;else{const G=x,Q=x,ee=new Map;for(x=Q;x<=W;x++){const Ae=h[x]=M?Qe(h[x]):$e(h[x]);Ae.key!=null&&ee.set(Ae.key,x)}let ne,ae=0;const fe=W-Q+1;let Ie=!1,Ce=0;const Kt=new Array(fe);for(x=0;x=fe){ke(Ae,E,T,!0);continue}let Ue;if(Ae.key!=null)Ue=ee.get(Ae.key);else for(ne=Q;ne<=W;ne++)if(Kt[ne-Q]===0&&St(Ae,h[ne])){Ue=ne;break}Ue===void 0?ke(Ae,E,T,!0):(Kt[Ue-Q]=x+1,Ue>=Ce?Ce=Ue:Ie=!0,_(Ae,h[Ue],y,null,E,T,N,L,M),ae++)}const Mr=Ie?Ca(Kt):Dt;for(ne=Mr.length-1,x=fe-1;x>=0;x--){const Ae=Q+x,Ue=h[Ae],Rr=h[Ae+1],Pr=Ae+1 {const{el:T,type:N,transition:L,children:M,shapeFlag:x}=f;if(x&6){Ve(f.component.subTree,h,y,C);return}if(x&128){f.suspense.move(h,y,C);return}if(x&64){N.move(f,h,y,Pt);return}if(N===Ee){s(T,h,y);for(let F=0;FL.enter(T),E);else{const{leave:F,delayLeave:W,afterLeave:G}=L,Q=()=>{f.ctx.isUnmounted?r(T):s(T,h,y)},ee=()=>{T._isLeaving&&T[Ke](!0),F(T,()=>{Q(),G&&G()})};W?W(T,Q,ee):ee()}else s(T,h,y)},ke=(f,h,y,C=!1,E=!1)=>{const{type:T,props:N,ref:L,children:M,dynamicChildren:x,shapeFlag:q,patchFlag:F,dirs:W,cacheIndex:G,memo:Q}=f;if(F===-2&&(E=!1),L!=null&&(nt(),Ht(L,null,y,f,!0),st()),G!=null&&(h.renderCache[G]=void 0),q&256){h.ctx.deactivate(f);return}const ee=q&1&&W,ne=!Ct(f);let ae;if(ne&&(ae=N&&N.onVnodeBeforeUnmount)&&Le(ae,h,f),q&6)_l(f.component,y,C);else{if(q&128){f.suspense.unmount(y,C);return}ee&&Be(f,null,h,"beforeUnmount"),q&64?f.type.remove(f,h,y,Pt,C):x&&!x.hasOnce&&(T!==Ee||F>0&&F&64)?Bt(x,h,y,!1,!0):(T===Ee&&F&384||!E&&q&16)&&Bt(M,h,y),C&&Ar(f)}const fe=Q!=null&&G==null;(ne&&(ae=N&&N.onVnodeUnmounted)||ee||fe)&&we(()=>{ae&&Le(ae,h,f),ee&&Be(f,null,h,"unmounted"),fe&&(f.el=null)},y)},Ar=f=>{const{type:h,el:y,anchor:C,transition:E}=f;if(h===Ee){bl(y,C);return}if(h===nn){g(f);return}const T=()=>{r(y),E&&!E.persisted&&E.afterLeave&&E.afterLeave()};if(f.shapeFlag&1&&E&&!E.persisted){const{leave:N,delayLeave:L}=E,M=()=>N(y,T);L?L(f.el,T,M):M()}else T()},bl=(f,h)=>{let y;for(;f!==h;)y=m(f),r(f),f=y;r(h)},_l=(f,h,y)=>{const{bum:C,scope:E,job:T,subTree:N,um:L,m:M,a:x}=f;Jr(M),Jr(x),C&&Ss(C),E.stop(),T&&(T.flags|=8,ke(N,f,h,y)),L&&we(L,h),we(()=>{f.isUnmounted=!0},h)},Bt=(f,h,y,C=!1,E=!1,T=0)=>{for(let N=T;N {if(f.shapeFlag&6)return Sn(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const h=m(f.anchor||f.el),y=h&&h[lo];return y?m(y):h};let ms=!1;const Or=(f,h,y)=>{let C;f==null?h._vnode&&(ke(h._vnode,null,null,!0),C=h._vnode.component):_(h._vnode||null,f,h,null,null,null,y),h._vnode=f,ms||(ms=!0,Fr(C),Bn(),ms=!1)},Pt={p:_,um:ke,m:Ve,r:Ar,mt:j,mc:U,pc:V,pbc:A,n:Sn,o:e};let vs,ys;return t&&([vs,ys]=t(Pt)),{render:Or,hydrate:vs,createApp:fa(Or,vs)}}function As({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function vt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Fo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function vr(e,t,n=!1){const s=e.children,r=t.children;if(Y(s)&&Y(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}function Do(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Do(t)}function Jr(e){if(e)for(let t=0;t e.__isSuspense;function Vo(e,t){t&&t.pendingBranch?Y(e)?t.effects.push(...e):t.effects.push(e):Rc(e)}const Ee=Symbol.for("v-fgt"),Ot=Symbol.for("v-txt"),pe=Symbol.for("v-cmt"),nn=Symbol.for("v-stc"),sn=[];let Oe=null;function zs(e=!1){sn.push(Oe=e?null:[])}function Aa(){sn.pop(),Oe=sn[sn.length-1]||null}let hn=1;function zn(e,t=!1){hn+=e,e<0&&Oe&&t&&(Oe.hasOnce=!0)}function ko(e){return e.dynamicChildren=hn>0?Oe||Dt:null,Aa(),hn>0&&Oe&&Oe.push(e),e}function Zf(e,t,n,s,r,i){return ko(Wo(e,t,n,s,r,i,!0))}function Xs(e,t,n,s,r){return ko(ue(e,t,n,s,r,!0))}function pn(e){return e?e.__v_isVNode===!0:!1}function St(e,t){return e.type===t.type&&e.key===t.key}const Uo=({key:e})=>e??null,Fn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?be(e)||ce(e)||z(e)?{i:me,r:e,k:t,f:!!n}:e:null);function Wo(e,t=null,n=null,s=0,r=null,i=e===Ee?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Uo(t),ref:t&&Fn(t),scopeId:ro,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:me};return l?(yr(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=be(n)?8:16),hn>0&&!o&&Oe&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Oe.push(c),c}const ue=Oa;function Oa(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===yo)&&(e=pe),pn(e)){const l=ht(e,t,!0);return n&&yr(l,n),hn>0&&!i&&Oe&&(l.shapeFlag&6?Oe[Oe.indexOf(e)]=l:Oe.push(l)),l.patchFlag=-2,l}if(Ha(e)&&(e=e.__vccOpts),t){t=Ma(t);let{class:l,style:c}=t;l&&!be(l)&&(t.class=ar(l)),le(c)&&(ns(c)&&!Y(c)&&(c=xe({},c)),t.style=cr(c))}const o=be(e)?1:Ho(e)?128:co(e)?64:le(e)?4:z(e)?2:0;return Wo(e,t,n,s,r,o,i,!0)}function Ma(e){return e?ns(e)||Mo(e)?xe({},e):e:null}function ht(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,u=t?Pa(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Uo(u),ref:t&&t.ref?n&&i?Y(i)?i.concat(Fn(t)):[i,Fn(t)]:Fn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ee?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ht(e.ssContent),ssFallback:e.ssFallback&&ht(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&dn(a,c.clone(a)),a}function Bo(e=" ",t=0){return ue(Ot,null,e,t)}function ed(e,t){const n=ue(nn,null,e);return n.staticCount=t,n}function Ra(e="",t=!1){return t?(zs(),Xs(pe,null,e)):ue(pe,null,e)}function $e(e){return e==null||typeof e=="boolean"?ue(pe):Y(e)?ue(Ee,null,e.slice()):pn(e)?Qe(e):ue(Ot,null,String(e))}function Qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ht(e)}function yr(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(Y(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),yr(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Mo(t)?t._ctx=me:r===3&&me&&(me.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else z(t)?(t={default:t,_ctx:me},n=32):(t=String(t),s&64?(n=16,t=[Bo(t)]):n=8);e.children=t,e.shapeFlag|=n}function Pa(...e){const t={};for(let n=0;n ge||me;let Xn,Ys;{const e=ls(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Xn=t("__VUE_INSTANCE_SETTERS__",n=>ge=n),Ys=t("__VUE_SSR_SETTERS__",n=>Ut=n)}const _n=e=>{const t=ge;return Xn(e),e.scope.on(),()=>{e.scope.off(),Xn(t)}},Qr=()=>{ge&&ge.scope.off(),Xn(null)};function Ko(e){return e.vnode.shapeFlag&4}let Ut=!1;function Na(e,t=!1,n=!1){t&&Ys(t);const{props:s,children:r}=e.vnode,i=Ko(e);ya(e,s,i,t),Sa(e,r,n||t);const o=i?Fa(e,t):void 0;return t&&Ys(!1),o}function Fa(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,sa);const{setup:s}=n;if(s){nt();const r=e.setupContext=s.length>1?Go(e):null,i=_n(e),o=vn(s,e,0,[e.props,r]),l=Ji(o);if(st(),i(),(l||e.sp)&&!Ct(e)&&pr(e),l){if(o.then(Qr,Qr),t)return o.then(c=>{Zr(e,c)}).catch(c=>{yn(c,e,0)});e.asyncDep=o}else Zr(e,o)}else qo(e)}function Zr(e,t,n){z(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:le(t)&&(e.setupState=zi(t)),qo(e)}function qo(e,t,n){const s=e.type;e.render||(e.render=s.render||tt);{const r=_n(e);nt();try{ia(e)}finally{st(),r()}}}const Da={get(e,t){return ve(e,"get",""),e[t]}};function Go(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Da),slots:e.slots,emit:e.emit,expose:t}}function hs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(zi(In(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in tn)return tn[n](e)},has(t,n){return n in t||n in tn}})):e.proxy}function ja(e,t=!0){return z(e)?e.displayName||e.name:e.name||t&&e.__name}function Ha(e){return z(e)&&"__vccOpts"in e}const ie=(e,t)=>uc(e,t,Ut);function Js(e,t,n){try{zn(-1);const s=arguments.length;return s===2?le(t)&&!Y(t)?pn(t)?ue(e,null,[t]):ue(e,t):ue(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&pn(n)&&(n=[n]),ue(e,t,n))}finally{zn(1)}}const Va="3.5.33";function ka(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Ua=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Wa=e=>e.startsWith("onUpdate:"),br=Object.assign,wn=Array.isArray,zo=e=>typeof e=="function",ft=e=>typeof e=="string",Ba=e=>typeof e=="symbol",Ka=e=>e!==null&&typeof e=="object",_r=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},qa=/-\w/g,Dn=_r(e=>e.replace(qa,t=>t.slice(1).toUpperCase())),Ga=/\B([A-Z])/g,wr=_r(e=>e.replace(Ga,"-$1").toLowerCase()),za=_r(e=>e.charAt(0).toUpperCase()+e.slice(1)),Xa=(e,...t)=>{for(let n=0;n {const t=parseFloat(e);return isNaN(t)?e:t},Ya=e=>{const t=ft(e)?Number(e):NaN;return isNaN(t)?e:t},Ja="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Qa=ka(Ja);function Yo(e){return!!e||e===""}let Qs;const ei=typeof window<"u"&&window.trustedTypes;if(ei)try{Qs=ei.createPolicy("vue",{createHTML:e=>e})}catch{}const Jo=Qs?e=>Qs.createHTML(e):e=>e,Za="http://www.w3.org/2000/svg",eu="http://www.w3.org/1998/Math/MathML",Je=typeof document<"u"?document:null,ti=Je&&Je.createElement("template"),tu={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==="svg"?Je.createElementNS(Za,e):t==="mathml"?Je.createElementNS(eu,e):n?Je.createElement(e,{is:n}):Je.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Je.createTextNode(e),createComment:e=>Je.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Je.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{ti.innerHTML=Jo(s==="svg"?``:s==="mathml"?``:e);const l=ti.content;if(s==="svg"||s==="mathml"){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]}},ot="transition",zt="animation",gn=Symbol("_vtc"),Qo={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},nu=br({},ao,Qo),su=e=>(e.displayName="Transition",e.props=nu,e),td=su((e,{slots:t})=>Js(kc,ru(e),t)),yt=(e,t=[])=>{wn(e)?e.forEach(n=>n(...t)):e&&e(...t)},ni=e=>e?wn(e)?e.some(t=>t.length>1):e.length>1:!1;function ru(e){const t={};for(const S in e)S in Qo||(t[S]=e[S]);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:u=o,appearToClass:a=l,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,w=iu(r),_=w&&w[0],R=w&&w[1],{onBeforeEnter:D,onEnter:$,onEnterCancelled:p,onLeave:g,onLeaveCancelled:O,onBeforeAppear:B=D,onAppear:P=$,onAppearCancelled:U=p}=t,b=(S,k,j,K)=>{S._enterCancelled=K,bt(S,k?a:l),bt(S,k?u:o),j&&j()},A=(S,k)=>{S._isLeaving=!1,bt(S,d),bt(S,v),bt(S,m),k&&k()},H=S=>(k,j)=>{const K=S?P:$,I=()=>b(k,S,j);yt(K,[k,I]),si(()=>{bt(k,S?c:i),Ye(k,S?a:l),ni(K)||ri(k,s,_,I)})};return br(t,{onBeforeEnter(S){yt(D,[S]),Ye(S,i),Ye(S,o)},onBeforeAppear(S){yt(B,[S]),Ye(S,c),Ye(S,u)},onEnter:H(!1),onAppear:H(!0),onLeave(S,k){S._isLeaving=!0;const j=()=>A(S,k);Ye(S,d),S._enterCancelled?(Ye(S,m),li(S)):(li(S),Ye(S,m)),si(()=>{S._isLeaving&&(bt(S,d),Ye(S,v),ni(g)||ri(S,s,R,j))}),yt(g,[S,j])},onEnterCancelled(S){b(S,!1,void 0,!0),yt(p,[S])},onAppearCancelled(S){b(S,!0,void 0,!0),yt(U,[S])},onLeaveCancelled(S){A(S),yt(O,[S])}})}function iu(e){if(e==null)return null;if(Ka(e))return[Os(e.enter),Os(e.leave)];{const t=Os(e);return[t,t]}}function Os(e){return Ya(e)}function Ye(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[gn]||(e[gn]=new Set)).add(t)}function bt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[gn];n&&(n.delete(t),n.size||(e[gn]=void 0))}function si(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ou=0;function ri(e,t,n,s){const r=e._endId=++ou,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=lu(e,t);if(!o)return s();const u=o+"end";let a=0;const d=()=>{e.removeEventListener(u,m),i()},m=v=>{v.target===e&&++a>=c&&d()};setTimeout(()=>{a (n[w]||"").split(", "),r=s(`${ot}Delay`),i=s(`${ot}Duration`),o=ii(r,i),l=s(`${zt}Delay`),c=s(`${zt}Duration`),u=ii(l,c);let a=null,d=0,m=0;t===ot?o>0&&(a=ot,d=o,m=i.length):t===zt?u>0&&(a=zt,d=u,m=c.length):(d=Math.max(o,u),a=d>0?o>u?ot:zt:null,m=a?a===ot?i.length:c.length:0);const v=a===ot&&/\b(?:transform|all)(?:,|$)/.test(s(`${ot}Property`).toString());return{type:a,timeout:d,propCount:m,hasTransform:v}}function ii(e,t){for(;e.length oi(n)+oi(e[s])))}function oi(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function li(e){return(e?e.ownerDocument:document).body.offsetHeight}function cu(e,t,n){const s=e[gn];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const ci=Symbol("_vod"),au=Symbol("_vsh"),uu=Symbol(""),fu=/(?:^|;)\s*display\s*:/;function du(e,t,n){const s=e.style,r=ft(n);let i=!1;if(n&&!r){if(t)if(ft(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&Jt(s,l,"")}else for(const o in t)n[o]==null&&Jt(s,o,"");for(const o in n){o==="display"&&(i=!0);const l=n[o];l!=null?pu(e,o,!ft(t)&&t?t[o]:void 0,l)||Jt(s,o,l):Jt(s,o,"")}}else if(r){if(t!==n){const o=s[uu];o&&(n+=";"+o),s.cssText=n,i=fu.test(n)}}else t&&e.removeAttribute("style");ci in e&&(e[ci]=i?s.display:"",e[au]&&(s.display="none"))}const ai=/\s*!important$/;function Jt(e,t,n){if(wn(n))n.forEach(s=>Jt(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=hu(e,t);ai.test(n)?e.setProperty(wr(s),n.replace(ai,""),"important"):e[s]=n}}const ui=["Webkit","Moz","ms"],Ms={};function hu(e,t){const n=Ms[t];if(n)return n;let s=je(t);if(s!=="filter"&&s in e)return Ms[t]=s;s=za(s);for(let r=0;r Rs||(yu.then(()=>Rs=0),Rs=Date.now());function _u(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;He(wu(s,n.value),t,5,[s])};return n.value=e,n.attached=bu(),n}function wu(e,t){if(wn(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 mi=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Su=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?cu(e,s,o):t==="style"?du(e,n,s):Ua(t)?Wa(t)||mu(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Eu(e,t,s,o))?(hi(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&di(e,t,s,o,i,t!=="value")):e._isVueCE&&(Tu(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ft(s)))?hi(e,Dn(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),di(e,t,s,o))};function Eu(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&mi(t)&&zo(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return mi(t)&&ft(n)?!1:t in e}function Tu(e,t){const n=e._def.props;if(!n)return!1;const s=Dn(t);return Array.isArray(n)?n.some(r=>Dn(r)===s):Object.keys(n).some(r=>Dn(r)===s)}const vi=e=>{const t=e.props["onUpdate:modelValue"]||!1;return wn(t)?n=>Xa(t,n):t};function xu(e){e.target.composing=!0}function yi(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ps=Symbol("_assign");function bi(e,t,n){return t&&(e=e.trim()),n&&(e=Xo(e)),e}const nd={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[Ps]=vi(r);const i=s||r.props&&r.props.type==="number";Nt(e,t?"change":"input",o=>{o.target.composing||e[Ps](bi(e.value,n,i))}),(n||i)&&Nt(e,"change",()=>{e.value=bi(e.value,n,i)}),t||(Nt(e,"compositionstart",xu),Nt(e,"compositionend",yi),Nt(e,"change",yi))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[Ps]=vi(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Xo(e.value):e.value,c=t??"";if(l===c)return;const u=e.getRootNode();(u instanceof Document||u instanceof ShadowRoot)&&u.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c)}},Cu=["ctrl","shift","alt","meta"],Au={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)=>Cu.some(n=>e[`${n}Key`]&&!t.includes(n))},sd=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((r,...i)=>{for(let o=0;o {const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(r=>{if(!("key"in r))return;const i=wr(r.key);if(t.some(o=>o===i||Ou[o]===i))return e(r)}))},Zo=br({patchProp:Su},tu);let rn,_i=!1;function Mu(){return rn||(rn=Ta(Zo))}function Ru(){return rn=_i?rn:xa(Zo),_i=!0,rn}const id=((...e)=>{const t=Mu().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=tl(s);if(!r)return;const i=t._component;!zo(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,el(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t}),od=((...e)=>{const t=Ru().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=tl(s);if(r)return n(r,!0,el(r))},t});function el(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function tl(e){return ft(e)?document.querySelector(e):e}const ld=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Pu=window.__VP_SITE_DATA__;function nl(e,t){return nr()?($l(e,t),!0):!1}const Ls=new WeakMap,Lu=(...e)=>{var t;const n=e[0],s=(t=gt())===null||t===void 0?void 0:t.proxy,r=s??nr();if(r==null&&!io())throw new Error("injectLocal must be called in setup");return r&&Ls.has(r)&&n in Ls.get(r)?Ls.get(r)[n]:xt(...e)},sl=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const $u=e=>e!=null,Iu=Object.prototype.toString,Nu=e=>Iu.call(e)==="[object Object]",pt=()=>{},wi=Fu();function Fu(){var e,t,n;return sl&&!!(!((e=window)===null||e===void 0||(e=e.navigator)===null||e===void 0)&&e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window)===null||t===void 0||(t=t.navigator)===null||t===void 0?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test((n=window)===null||n===void 0?void 0:n.navigator.userAgent))}function Sr(...e){if(e.length!==1)return lc(...e);const t=e[0];return typeof t=="function"?an(rc(()=>({get:t,set:pt}))):Fe(t)}function Er(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const rl=e=>e();function il(e,t={}){let n,s,r=pt;const i=c=>{clearTimeout(c),r(),r=pt};let o;return c=>{const u=oe(e),a=oe(t.maxWait);return n&&i(n),u<=0||a!==void 0&&a<=0?(s&&(i(s),s=void 0),Promise.resolve(c())):new Promise((d,m)=>{r=t.rejectOnCancel?m:d,o=c,a&&!s&&(s=setTimeout(()=>{n&&i(n),s=void 0,d(o())},a)),n=setTimeout(()=>{s&&i(s),s=void 0,d(c())},u)})}}function Du(...e){let t=0,n,s=!0,r=pt,i,o,l,c,u;!ce(e[0])&&typeof e[0]=="object"?{delay:o,trailing:l=!0,leading:c=!0,rejectOnCancel:u=!1}=e[0]:[o,l=!0,c=!0,u=!1]=e;const a=()=>{n&&(clearTimeout(n),n=void 0,r(),r=pt)};return m=>{const v=oe(o),w=Date.now()-t,_=()=>i=m();return a(),v<=0?(t=Date.now(),_()):(w>v?(t=Date.now(),(c||!s)&&_()):l&&(i=new Promise((R,D)=>{r=u?D:R,n=setTimeout(()=>{t=Date.now(),s=!0,R(_()),a()},Math.max(0,v-w))})),!c&&!n&&(n=setTimeout(()=>s=!0,v)),s=!1,i)}}function ju(e=rl,t={}){const{initialState:n="active"}=t,s=Sr(n==="active");function r(){s.value=!1}function i(){s.value=!0}return{isActive:ec(s),pause:r,resume:i,eventFilter:(...l)=>{s.value&&e(...l)}}}function Si(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function jn(e){return Array.isArray(e)?e:[e]}function ol(e){return gt()}function Hu(e,t=200,n={}){return Er(il(t,n),e)}function Vu(e,t=200,n=!1,s=!0,r=!1){return Er(Du(t,n,s,r),e)}function ll(e,t,n={}){const{eventFilter:s=rl,...r}=n;return Re(e,Er(s,t),r)}function ku(e,t,n={}){const{eventFilter:s,initialState:r="active",...i}=n,{eventFilter:o,pause:l,resume:c,isActive:u}=ju(s,{initialState:r});return{stop:ll(e,t,{...i,eventFilter:o}),pause:l,resume:c,isActive:u}}function ps(e,t=!0,n){ol()?Wt(e,n):t?e():cs(e)}function Uu(e,t){ol()&&fs(e,t)}function cd(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return ll(e,t,{...i,eventFilter:il(s,{maxWait:r})})}function Wu(e,t,n){return Re(e,t,{...n,immediate:!0})}function ad(e,t,n){var s;let r;ce(n)?r={evaluating:n}:r=n||{};const{lazy:i=!1,flush:o="sync",evaluating:l=void 0,shallow:c=!0,onError:u=(s=globalThis.reportError)!==null&&s!==void 0?s:pt}=r,a=ye(!i),d=c?ye(t):Fe(t);let m=0;return dr(async v=>{if(!a.value)return;m++;const w=m;let _=!1;l&&Promise.resolve().then(()=>{l.value=!0});try{const R=await e(D=>{v(()=>{l&&(l.value=!1),_||D()})});w===m&&(d.value=R)}catch(R){u(R)}finally{l&&w===m&&(l.value=!1),_=!0}},{flush:o}),i?ie(()=>(a.value=!0,d.value)):d}const Te=sl?window:void 0;function gs(e){var t;const n=oe(e);return(t=n?.$el)!==null&&t!==void 0?t:n}function ze(...e){const t=(s,r,i,o)=>(s.addEventListener(r,i,o),()=>s.removeEventListener(r,i,o)),n=ie(()=>{const s=jn(oe(e[0])).filter(r=>r!=null);return s.every(r=>typeof r!="string")?s:void 0});return Wu(()=>{var s,r;return[(s=(r=n.value)===null||r===void 0?void 0:r.map(i=>gs(i)))!==null&&s!==void 0?s:[Te].filter(i=>i!=null),jn(oe(n.value?e[1]:e[0])),jn(ss(n.value?e[2]:e[1])),oe(n.value?e[3]:e[2])]},([s,r,i,o],l,c)=>{if(!s?.length||!r?.length||!i?.length)return;const u=Nu(o)?{...o}:o,a=s.flatMap(d=>r.flatMap(m=>i.map(v=>t(d,m,v,u))));c(()=>{a.forEach(d=>d())})},{flush:"post"})}function Bu(){const e=ye(!1),t=gt();return t&&Wt(()=>{e.value=!0},t),e}function Tr(e){const t=Bu();return ie(()=>(t.value,!!e()))}function Ku(e,t,n={}){const{window:s=Te,...r}=n;let i;const o=Tr(()=>s&&"MutationObserver"in s),l=()=>{i&&(i.disconnect(),i=void 0)},c=Re(ie(()=>{const d=jn(oe(e)).map(gs).filter($u);return new Set(d)}),d=>{l(),o.value&&d.size&&(i=new MutationObserver(t),d.forEach(m=>i.observe(m,r)))},{immediate:!0,flush:"post"}),u=()=>i?.takeRecords(),a=()=>{c(),l()};return nl(a),{isSupported:o,stop:a,takeRecords:u}}function qu(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function ud(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=Te,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=qu(t);return ze(r,i,a=>{a.repeat&&oe(l)||c(a)&&n(a)},o)}const Gu=Symbol("vueuse-ssr-width");function zu(){const e=io()?Lu(Gu,null):null;return typeof e=="number"?e:void 0}function cl(e,t={}){const{window:n=Te,ssrWidth:s=zu()}=t,r=Tr(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function"),i=ye(typeof s=="number"),o=ye(),l=ye(!1),c=u=>{l.value=u.matches};return dr(()=>{if(i.value){i.value=!r.value,l.value=oe(e).split(",").some(u=>{const a=u.includes("not all"),d=u.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),m=u.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let v=!!(d||m);return d&&v&&(v=s>=Si(d[1])),m&&v&&(v=s<=Si(m[1])),a?!v:v});return}r.value&&(o.value=n.matchMedia(oe(e)),l.value=o.value.matches)}),ze(o,"change",c,{passive:!0}),ie(()=>l.value)}const Rn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Pn="__vueuse_ssr_handlers__",Xu=Yu();function Yu(){return Pn in Rn||(Rn[Pn]=Rn[Pn]||{}),Rn[Pn]}function al(e,t){return Xu[e]||t}function ul(e){return cl("(prefers-color-scheme: dark)",e)}function Ju(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Qu={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ei="vueuse-storage";function xr(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:a,window:d=Te,eventFilter:m,onError:v=j=>{console.error(j)},initOnMounted:w}=s,_=(a?ye:Fe)(typeof t=="function"?t():t),R=ie(()=>oe(e));if(!n)try{n=al("getDefaultStorage",()=>Te?.localStorage)()}catch(j){v(j)}if(!n)return _;const D=oe(t),$=Ju(D),p=(r=s.serializer)!==null&&r!==void 0?r:Qu[$],{pause:g,resume:O}=ku(_,j=>A(j),{flush:i,deep:o,eventFilter:m});Re(R,()=>S(),{flush:i});let B=!1;const P=j=>{w&&!B||S(j)},U=j=>{w&&!B||k(j)};d&&l&&(n instanceof Storage?ze(d,"storage",P,{passive:!0}):ze(d,Ei,U)),w?ps(()=>{B=!0,S()}):S();function b(j,K){if(d){const I={key:R.value,oldValue:j,newValue:K,storageArea:n};d.dispatchEvent(n instanceof Storage?new StorageEvent("storage",I):new CustomEvent(Ei,{detail:I}))}}function A(j){try{const K=n.getItem(R.value);if(j==null)b(K,null),n.removeItem(R.value);else{const I=p.write(j);K!==I&&(n.setItem(R.value,I),b(K,I))}}catch(K){v(K)}}function H(j){const K=j?j.newValue:n.getItem(R.value);if(K==null)return c&&D!=null&&n.setItem(R.value,p.write(D)),D;if(!j&&u){const I=p.read(K);return typeof u=="function"?u(I,D):$==="object"&&!Array.isArray(I)?{...D,...I}:I}else return typeof K!="string"?K:p.read(K)}function S(j){if(!(j&&j.storageArea!==n)){if(j&&j.key==null){_.value=D;return}if(!(j&&j.key!==R.value)){g();try{const K=p.write(_.value);(j===void 0||j?.newValue!==K)&&(_.value=H(j))}catch(K){v(K)}finally{j?cs(O):O()}}}}function k(j){S(j.detail)}return _}const Zu="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function ef(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=Te,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:a=!0}=e,d={auto:"",light:"light",dark:"dark",...e.modes||{}},m=ul({window:r}),v=ie(()=>m.value?"dark":"light"),w=c||(o==null?Sr(s):xr(o,s,i,{window:r,listenToStorageChanges:l})),_=ie(()=>w.value==="auto"?v.value:w.value),R=al("updateHTMLAttrs",(g,O,B)=>{const P=typeof g=="string"?r?.document.querySelector(g):gs(g);if(!P)return;const U=new Set,b=new Set;let A=null;if(O==="class"){const S=B.split(/\s/g);Object.values(d).flatMap(k=>(k||"").split(/\s/g)).filter(Boolean).forEach(k=>{S.includes(k)?U.add(k):b.add(k)})}else A={key:O,value:B};if(U.size===0&&b.size===0&&A===null)return;let H;a&&(H=r.document.createElement("style"),H.appendChild(document.createTextNode(Zu)),r.document.head.appendChild(H));for(const S of U)P.classList.add(S);for(const S of b)P.classList.remove(S);A&&P.setAttribute(A.key,A.value),a&&(r.getComputedStyle(H).opacity,document.head.removeChild(H))});function D(g){var O;R(t,n,(O=d[g])!==null&&O!==void 0?O:g)}function $(g){e.onChanged?e.onChanged(g,D):D(g)}Re(_,$,{flush:"post",immediate:!0}),ps(()=>$(_.value));const p=ie({get(){return u?w.value:_.value},set(g){w.value=g}});return Object.assign(p,{store:w,system:v,state:_})}function tf(e={}){const{valueDark:t="dark",valueLight:n=""}=e,s=ef({...e,onChanged:(i,o)=>{var l;e.onChanged?(l=e.onChanged)===null||l===void 0||l.call(e,i==="dark",o,i):o(i)},modes:{dark:t,light:n}}),r=ie(()=>s.system.value);return ie({get(){return s.value==="dark"},set(i){const o=i?"dark":"light";r.value===o?s.value="auto":s.value=o}})}function $s(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}const Ti=1;function nf(e,t={}){const{throttle:n=0,idle:s=200,onStop:r=pt,onScroll:i=pt,offset:o={left:0,right:0,top:0,bottom:0},observe:l={mutation:!1},eventListenerOptions:c={capture:!1,passive:!0},behavior:u="auto",window:a=Te,onError:d=b=>{console.error(b)}}=t,m=typeof l=="boolean"?{mutation:l}:l,v=ye(0),w=ye(0),_=ie({get(){return v.value},set(b){D(b,void 0)}}),R=ie({get(){return w.value},set(b){D(void 0,b)}});function D(b,A){var H,S,k,j;if(!a)return;const K=oe(e);if(!K)return;(H=K instanceof Document?a.document.body:K)===null||H===void 0||H.scrollTo({top:(S=oe(A))!==null&&S!==void 0?S:R.value,left:(k=oe(b))!==null&&k!==void 0?k:_.value,behavior:oe(u)});const I=(K==null||(j=K.document)===null||j===void 0?void 0:j.documentElement)||K?.documentElement||K;_!=null&&(v.value=I.scrollLeft),R!=null&&(w.value=I.scrollTop)}const $=ye(!1),p=Vt({left:!0,right:!1,top:!0,bottom:!1}),g=Vt({left:!1,right:!1,top:!1,bottom:!1}),O=b=>{$.value&&($.value=!1,g.left=!1,g.right=!1,g.top=!1,g.bottom=!1,r(b))},B=Hu(O,n+s),P=b=>{var A;if(!a)return;const H=(b==null||(A=b.document)===null||A===void 0?void 0:A.documentElement)||b?.documentElement||gs(b),{display:S,flexDirection:k,direction:j}=a.getComputedStyle(H),K=j==="rtl"?-1:1,I=H.scrollLeft;g.left=I v.value;const X=Math.abs(I*K)<=(o.left||0),V=Math.abs(I*K)+H.clientWidth>=H.scrollWidth-(o.right||0)-Ti;S==="flex"&&k==="row-reverse"?(p.left=V,p.right=X):(p.left=X,p.right=V),v.value=I;let J=H.scrollTop;b===a.document&&!J&&(J=a.document.body.scrollTop),g.top=J w.value;const mt=Math.abs(J)<=(o.top||0),Ve=Math.abs(J)+H.clientHeight>=H.scrollHeight-(o.bottom||0)-Ti;S==="flex"&&k==="column-reverse"?(p.top=Ve,p.bottom=mt):(p.top=mt,p.bottom=Ve),w.value=J},U=b=>{var A;a&&(P((A=b.target.documentElement)!==null&&A!==void 0?A:b.target),$.value=!0,B(b),i(b))};return ze(e,"scroll",n?Vu(U,n,!0,!1):U,c),ps(()=>{try{const b=oe(e);if(!b)return;P(b)}catch(b){d(b)}}),m?.mutation&&e!=null&&e!==a&&e!==document&&Ku(e,()=>{const b=oe(e);b&&P(b)},{attributes:!0,childList:!0,subtree:!0}),ze(e,"scrollend",O,c),{x:_,y:R,isScrolling:$,arrivedState:p,directions:g,measure(){const b=oe(e);a&&b&&P(b)}}}function fd(e,t,n={}){const{window:s=Te}=n;return xr(e,t,s?.localStorage,n)}function dd(e={}){const{window:t=Te}=e,n=t?.navigator,s=Tr(()=>n&&"language"in n),r=ye(n?.language);return ze(t,"languagechange",()=>{n&&(r.value=n.language)},{passive:!0}),{isSupported:s,language:r}}function fl(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth 1?!0:(t.preventDefault&&t.preventDefault(),!1)}const Is=new WeakMap;function hd(e,t=!1){const n=ye(t);let s=null,r="";Re(Sr(e),l=>{const c=$s(oe(l));if(c){const u=c;if(Is.get(u)||Is.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(r=u.style.overflow),u.style.overflow==="hidden")return n.value=!0;if(n.value)return u.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=$s(oe(e));!l||n.value||(wi&&(s=ze(l,"touchmove",c=>{sf(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=$s(oe(e));!l||!n.value||(wi&&s?.(),l.style.overflow=r,Is.delete(l),n.value=!1)};return nl(o),ie({get(){return n.value},set(l){l?i():o()}})}function pd(e,t,n={}){const{window:s=Te}=n;return xr(e,t,s?.sessionStorage,n)}function gd(e={}){const{window:t=Te,...n}=e;return nf(t,n)}function md(e={}){const{window:t=Te,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=ye(n),c=ye(s),u=()=>{if(t)if(o==="outer")l.value=t.outerWidth,c.value=t.outerHeight;else if(o==="visual"&&t.visualViewport){const{width:d,height:m,scale:v}=t.visualViewport;l.value=Math.round(d*v),c.value=Math.round(m*v)}else i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight)};u(),ps(u);const a={passive:!0};return ze("resize",u,a),t&&o==="visual"&&t.visualViewport&&ze(t.visualViewport,"resize",u,a),r&&Re(cl("(orientation: portrait)"),()=>u()),{width:l,height:c}}const rf={};var of={};const dl=/^(?:[a-z]+:|\/\/)/i,lf="vitepress-theme-appearance",hl=Symbol("stack-view:unpack"),cf=/#.*?(?=:~:|$)/,af=/[?#].*$/,uf=/(?:(^|\/)index)?\.(?:md|html)$/,he=typeof document<"u",pl={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function ff(e,t,n=!1){if(t===void 0)return!1;if(e=xi(`/${e}`),n)return new RegExp(t).test(e);if(xi(t)!==e)return!1;const s=t.match(cf);return s?(he?location.hash:"")===s[0]:!0}function xi(e){return decodeURI(e).replace(af,"").replace(uf,"$1")}function df(e){return dl.test(e)}function hf(e,t){return Object.keys(e?.locales||{}).find(n=>n!=="root"&&!df(n)&&ff(t,`^/${n}/`,!0))||"root"}function pf(e,t){const n=hf(e,t),{label:s,link:r,...i}=e.locales[n]??{};Object.assign(i,{localeIndex:n});const o=bf(e,t),l={head:ml(e.head??[],i.head??[],...o.map(c=>c.head??[]).reverse())};return Cr(l,...o,i,e)}function gl(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=gf(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function gf(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function ml(...e){const t=[],n=new Map;for(const s of e)for(const r of s){const[i,o]=r,l=Object.entries(o)[0];if(i!=="meta"||!l){t.push(r);continue}const c=`${l[0]}=${l[1]}`,u=n.get(c);u!=null?t[u]=r:(n.set(c,t.length),t.push(r))}return t}const mf=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,vf=/^[a-z]:/i;function Ci(e){const t=vf.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(mf,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const Ns=new Set;function yf(e){if(Ns.size===0){const n=typeof process=="object"&&of?.VITE_EXTRA_EXTENSIONS||rf?.VITE_EXTRA_EXTENSIONS||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>Ns.add(s))}const t=e.split(".").pop();return t==null||!Ns.has(t.toLowerCase())}function vd(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function bf({additionalConfig:e},t){if(e===void 0)return[];if(typeof e=="function")return e(t)??[];const n=[],s=t.split("/").slice(0,-1);for(;s.length;){const r=`/${s.join("/")}/`;n.push(e[r]),s.pop()}return n.push(e["/"]),n.filter(r=>r!==void 0)}function Cr(...e){const t=e.filter(r=>_f(r));if(t.length<=1)return e[0];const n=new Set(t.flatMap(r=>Reflect.ownKeys(r))),s=[...n];return new Proxy({},{get(r,i){return i===hl?t:Cr(...t.map(o=>o[i]).filter(o=>o!==void 0))},set(){throw new Error("StackView is read-only and cannot be mutated.")},has(r,i){return n.has(i)},ownKeys(){return s},getOwnPropertyDescriptor(r,i){for(const o of t){const l=Object.getOwnPropertyDescriptor(o,i);if(l)return l}}})}Cr.unpack=function(e){return e?.[hl]};function _f(e){return Object.prototype.toString.call(e)==="[object Object]"}const wf=["shellscript","shell","bash","sh","zsh"];function Sf(e){return wf.includes(e)}const Ef=Symbol(),at=ye(an(Pu));function yd(e){const t=ie(()=>pf(at.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?Fe(!0):n==="force-auto"?ul():n?tf({storageKey:lf,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):Fe(!1),r=Fe(he?location.hash:"");return he&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Re(()=>e.data,()=>{r.value=he?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>gl(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function Tf(){const e=xt(Ef);if(!e)throw new Error("vitepress data not properly injected in app");return e}function xf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Ai(e){return dl.test(e)||!e.startsWith("/")?e:xf(at.value.base,e)}function Cf(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),he){t=Ci(t.slice(1).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`/assets/${t}.${s}.js`}else t=`./${Ci(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Hn=[];function bd(e){Hn.push(e),Uu(()=>{Hn=Hn.filter(t=>t!==e)})}function Af(){let e=at.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Oi(e,n);else if(Array.isArray(e))for(const s of e){const r=Oi(s,n);if(r){t=r;break}}return t}function Oi(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Of=Symbol(),Zs="http://a.com",Mf=()=>({path:"/",hash:"",query:"",component:null,data:pl});function _d(e,t){const n=Vt(Mf()),s={route:n,async go(l,c){const{hash:u}=new URL(l,Zs),a=he&&document.fragmentDirective&&u.includes(":~:");l=tr(l),await s.onBeforeRouteChange?.(l)!==!1&&((!he||await Pf(l,{...c,hasTextFragment:a}))&&await i(l,{initialLoad:!!c?.initialLoad}),a&&(location.hash=u),o(),await s.onAfterRouteChange?.(l))}};let r=null;async function i(l,{scrollPosition:c=0,isRetry:u=!1,initialLoad:a=!1}={}){if(await s.onBeforePageLoad?.(l)===!1)return;const d=new URL(l,Zs),m=r=d.pathname;try{let v=await e(m);if(!v)throw new Error(`Page not found: ${m}`);if(r===m){r=null;const{default:w,__pageData:_}=v;if(!w)throw new Error(`Invalid route component: ${w}`);await s.onAfterPageLoad?.(l),n.path=he?m:Ai(m),n.component=In(w),n.data=In(_),o(d),he&&cs(()=>{let R=at.value.base+_.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");!at.value.cleanUrls&&!R.endsWith("/")&&(R+=".html"),R!==d.pathname&&(d.pathname=R,l=R+d.search+d.hash,history.replaceState({},"",l)),a||er(d.hash,!1,c)})}}catch(v){if(!/fetch|Page not found/.test(v.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(v),!u)try{const w=await fetch(at.value.base+"hashmap.json");window.__VP_HASH_MAP__=await w.json(),await i(l,{scrollPosition:c,isRetry:!0,initialLoad:a});return}catch{}if(r===m){r=null,n.path=he?m:Ai(m),n.component=t?In(t):null;const w=he?n.path.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").slice(at.value.base.length):"404.md";n.data={...pl,relativePath:w},o(d)}}}function o(l=he?location:{search:"",hash:""}){n.query=l.search,n.hash=decodeURIComponent(l.hash)}return he&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const u=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(u==null)return;const{href:a,origin:d,pathname:m}=new URL(u,c.baseURI),v=new URL(location.href);d===v.origin&&yf(m)&&(l.preventDefault(),s.go(a,{smoothScroll:c.classList.contains("header-anchor")}))},{capture:!0}),window.addEventListener("popstate",async l=>{if(l.state===null)return;const c=tr(location.href);await i(c,{scrollPosition:l.state.scrollPosition||0}),o(),await s.onAfterRouteChange?.(c)}),window.addEventListener("hashchange",l=>{l.preventDefault(),o()})),s}function Rf(){const e=xt(Of);if(!e)throw new Error("useRouter() is called without provider.");return e}function vl(){return Rf().route}function er(e,t=!1,n=0){if(!e||n){window.scrollTo(0,n);return}let s=null;try{s=document.getElementById(decodeURIComponent(e).slice(1))}catch(l){console.warn(l)}if(!s)return;const r=window.scrollY+s.getBoundingClientRect().top-Af()+Number.parseInt(window.getComputedStyle(s).paddingTop,10)||0,i=window.matchMedia("(prefers-reduced-motion)").matches?"instant":t&&Math.abs(r-window.scrollY)<=window.innerHeight?"smooth":"auto";requestAnimationFrame(()=>{if(window.scrollTo({left:0,top:r,behavior:i}),s.focus({preventScroll:!0}),document.activeElement===s||s.hasAttribute("tabindex"))return;const l=()=>{s.removeAttribute("tabindex"),s.removeEventListener("blur",l)};s.setAttribute("tabindex","-1"),s.addEventListener("blur",l),s.focus({preventScroll:!0}),document.activeElement!==s&&l()})}function tr(e){const t=new URL(e,Zs);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),at.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash.split(":~:")[0]}async function Pf(e,{smoothScroll:t=!1,initialLoad:n=!1,replace:s=!1,hasTextFragment:r=!1}={}){const i=tr(location.href),o=new URL(e,location.origin),l=new URL(i,location.origin);if(e===i){if(!n)return r||er(o.hash,t),!1}else if(s?history.replaceState({},"",e):(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",e)),o.pathname===l.pathname)return o.hash!==l.hash&&(window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:l.href,newURL:o.href})),r||er(o.hash,t)),!1;return!0}const Ln=()=>Hn.forEach(e=>e()),wd=hr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=vl(),{frontmatter:n,site:s}=Tf();return Re(n,Ln,{deep:!0,flush:"post"}),()=>Js(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Js(t.component,{onVnodeMounted:Ln,onVnodeUpdated:Ln,onVnodeUnmounted:Ln}):"404 Page Not Found"])}}),Lf="modulepreload",$f=function(e){return"/"+e},Mi={},Sd=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){let c=function(u){return Promise.all(u.map(a=>Promise.resolve(a).then(d=>({status:"fulfilled",value:d}),d=>({status:"rejected",reason:d}))))};document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=o?.nonce||o?.getAttribute("nonce");r=c(n.map(u=>{if(u=$f(u),u in Mi)return;Mi[u]=!0;const a=u.endsWith(".css"),d=a?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${d}`))return;const m=document.createElement("link");if(m.rel=a?"stylesheet":Lf,a||(m.as="script"),m.crossOrigin="",m.href=u,l&&m.setAttribute("nonce",l),document.head.appendChild(m),a)return new Promise((v,w)=>{m.addEventListener("load",v),m.addEventListener("error",()=>w(new Error(`Unable to preload CSS for ${u}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},Ed=hr({setup(e,{slots:t}){const n=Fe(!1);return Wt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Td(){he&&window.addEventListener("click",e=>{const t=e.target;if(t.matches(".vp-code-group input")){const n=t.parentElement?.parentElement;if(!n)return;const s=Array.from(n.querySelectorAll("input")).indexOf(t);if(s<0)return;const r=n.querySelector(".blocks");if(!r)return;const i=Array.from(r.children).find(c=>c.classList.contains("active"));if(!i)return;const o=r.children[s];if(!o||i===o)return;i.classList.remove("active"),If(o),n?.querySelector(`label[for="${t.id}"]`)?.scrollIntoView({block:"nearest"})}})}function If(e){e.classList.add("active"),window.dispatchEvent(new CustomEvent("vitepress:codeGroupTabActivate",{detail:e}))}const Nf=[".vp-copy-ignore",".diff.remove"].join(", ");function xd(){if(he){const e=new WeakMap;window.addEventListener("click",t=>{const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,r=n.nextElementSibling?.nextElementSibling;if(!s||!r)return;const i=r.cloneNode(!0);i.querySelectorAll(Nf).forEach(c=>c.remove()),i.innerHTML=i.innerHTML.replace(/\n+/g,` -`);let o=i.textContent||"";const l=/language-(\w+)/.exec(s.className)?.[1]||"";Sf(l)&&(o=o.replace(/^ *(\$|>) /gm,"").trim()),Ff(o).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 Ff(e){try{await 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 Cd(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=Fs(l);for(const u of document.head.children)if(u.isEqualNode(c)){s.push(u);return}});return}const o=i.map(Fs);s.forEach((l,c)=>{const u=o.findIndex(a=>a?.isEqualNode(l??null));u!==-1?delete o[u]:(l?.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};dr(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],u=gl(o,i);u!==document.title&&(document.title=u);const a=l||o.description;let d=document.querySelector("meta[name=description]");d?d.getAttribute("content")!==a&&d.setAttribute("content",a):Fs(["meta",{name:"description",content:a}]),r(ml(o.head,jf(c)))})}function Fs([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function Df(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function jf(e){return e.filter(t=>!Df(t))}const Ds=new Set,yl=()=>document.createElement("link"),Hf=e=>{const t=yl();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Vf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let $n;const kf=he&&($n=yl())&&$n.relList&&$n.relList.supports&&$n.relList.supports("prefetch")?Hf:Vf;function Ad(){if(!he||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const 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(!Ds.has(c)){Ds.add(c);const u=Cf(c);u&&kf(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):Ds.add(l))})})};Wt(s);const r=vl();Re(()=>r.path,s),fs(()=>{n&&n.disconnect()})}export{Gf as $,_f as A,ce as B,Ed as C,In as D,dl as E,Ee as F,Pa as G,cs as H,ar as I,cr as J,$u as K,mo as L,bd as M,ud as N,Wt as O,fs as P,Qc as Q,Of as R,zs as S,Bf as T,Cf as U,Lc as V,an as W,Fe as X,Xf as Y,Yf as Z,Sd as _,wd as a,zf as a0,ec as a1,ye as a2,at as a3,jn as a4,Ac as a5,Jf as a6,oe as a7,yf as a8,nl as a9,Uf as aA,rd as aB,sd as aC,ss as aa,gs as ab,Td as ac,xd as ad,Tf as ae,ze as af,fd as ag,cl as ah,dd as ai,Ad as aj,vl as ak,Rf as al,hd as am,pd as an,Qf as ao,Kf as ap,Cd as aq,gd as ar,md as as,nd as at,Re as au,cd as av,dr as aw,Wf as ax,Ai as ay,Pc as az,td as b,ld as c,ie as d,ad as e,id as f,Wo as g,Xs as h,Ra as i,Zf as j,_d as k,od as l,ed as m,Bo as n,ue as o,Ef as p,qf as q,hr as r,vd as s,Af as t,Js as u,he as v,yd as w,xt as x,ff as y,df as z}; diff --git a/docs/assets/chunks/theme.BfZ7hXNa.js b/docs/assets/chunks/theme.BfZ7hXNa.js deleted file mode 100644 index 727d5fe7f9..0000000000 --- a/docs/assets/chunks/theme.BfZ7hXNa.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DIqEGPXK.js","assets/chunks/framework.BXgR76oC.js"])))=>i.map(i=>d[i]); -import{r as m,j as u,Z as c,I as P,S as o,n as U,a5 as L,h as k,az as v,b as ve,i as h,c as b,ae as Ke,z as Re,a8 as Ue,ay as fe,d as p,g as f,aa as i,y as D,ah as $e,O as R,Q as je,P as he,t as We,aw as te,X as V,au as H,ax as Ve,v as Y,ak as ne,a1 as ye,a2 as ae,M as Se,F as S,Y as w,$ as j,o as _,a0 as B,E as Ne,ap as ze,ai as qe,G as O,x as se,J as Te,as as Je,N as ie,H as Ae,ar as Me,W as Ye,A as Pe,q as Xe,_ as Qe,am as we,V as Ie,a6 as Ze,aB as et,L as tt,aC as nt,ao as at}from"./framework.BXgR76oC.js";const st=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(e){return(t,n)=>(o(),u("span",{class:P(["VPBadge",e.type])},[c(t.$slots,"default",{},()=>[U(L(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},rt=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(o(),k(ve,{name:"fade"},{default:v(()=>[e.show?(o(),u("div",ot)):h("",!0)]),_:1}))}}),it=b(rt,[["__scopeId","data-v-c79a1216"]]),$=Ke;function lt(e,t){let n,a=!1;return()=>{n&&clearTimeout(n),a?n=setTimeout(e,t):(e(),(a=!0)&&setTimeout(()=>a=!1,t))}}function le(e){return e.startsWith("/")?e:`/${e}`}function me(e){const{pathname:t,search:n,hash:a,protocol:s}=new URL(e,"http://a.com");if(Re(e)||e.startsWith("#")||!s.startsWith("http")||!Ue(t))return e;const{site:r}=$(),d=t.endsWith("/")||t.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${n}${a}`);return fe(d)}function X({correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:a,theme:s,hash:r}=$(),d=p(()=>({label:t.value.locales[n.value]?.label,link:t.value.locales[n.value]?.link||(n.value==="root"?"/":`/${n.value}/`)}));return{localeLinks:p(()=>Object.entries(t.value.locales).flatMap(([g,y])=>d.value.label===y.label?[]:{text:y.label,link:ct(y.link||(g==="root"?"/":`/${g}/`),s.value.i18nRouting!==!1&&e,a.value.relativePath.slice(d.value.link.length-1),!t.value.cleanUrls)+r.value,lang:y.lang,dir:y.dir})),currentLang:d}}function ct(e,t,n,a){return t?e.replace(/\/$/,"")+le(n.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,a?".html":"")):e}const ut={class:"NotFound"},dt={class:"code"},vt={class:"title"},ft={class:"quote"},ht={class:"action"},mt=["href","aria-label"],pt=m({__name:"NotFound",setup(e){const{theme:t}=$(),{currentLang:n}=X();return(a,s)=>(o(),u("div",ut,[f("p",dt,L(i(t).notFound?.code??"404"),1),f("h1",vt,L(i(t).notFound?.title??"PAGE NOT FOUND"),1),s[0]||(s[0]=f("div",{class:"divider"},null,-1)),f("blockquote",ft,L(i(t).notFound?.quote??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),f("div",ht,[f("a",{class:"link",href:i(fe)(i(t).notFound?.link??i(n).link),"aria-label":i(t).notFound?.linkLabel??"go to home"},L(i(t).notFound?.linkText??"Take me home"),9,mt)])]))}}),kt=b(pt,[["__scopeId","data-v-829df670"]]);function xe(e,t){if(Array.isArray(e))return Q(e);if(e==null)return[];t=le(t);const n=Object.keys(e).sort((s,r)=>r.split("/").length-s.split("/").length).find(s=>t.startsWith(le(s))),a=n?e[n]:[];return Array.isArray(a)?Q(a):Q(a.items,a.base)}function gt(e){const t=[];let n=0;for(const a in e){const s=e[a];if(s.items){n=t.push(s);continue}t[n]||t.push({items:[]}),t[n].items.push(s)}return t}function _t(e){const t=[];function n(a){for(const s of a)s.text&&s.link&&t.push({text:s.text,link:s.link,docFooterText:s.docFooterText}),s.items&&n(s.items)}return n(e),t}function ce(e,t){return Array.isArray(t)?t.some(n=>ce(e,n)):D(e,t.link)?!0:t.items?ce(e,t.items):!1}function Q(e,t){return[...e].map(n=>{const a={...n},s=a.base||t;return s&&a.link&&(a.link=s+a.link.replace(/^\//,s.endsWith("/")?"":"/")),a.items&&(a.items=Q(a.items,s)),a})}function bt(){const{hasSidebar:e}=G(),t=$e("(min-width: 960px)"),n=$e("(min-width: 1280px)");return{isAsideEnabled:p(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}const $t=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,ue=[];function He(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function yt(e){const t=[...document.querySelectorAll(".VPDoc h1, .VPDoc h2, .VPDoc h3, .VPDoc h4, .VPDoc h5, .VPDoc h6")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const a=Number(n.tagName[1]);return{element:n,title:Pt(n),link:"#"+n.id,level:a}});return Lt(t,e)}function Pt(e){let t="";for(const n of e.childNodes)if(n.nodeType===1){if($t.test(n.className))continue;t+=n.textContent}else n.nodeType===3&&(t+=n.textContent);return t.trim()}function Lt(e,t){if(t===!1)return[];const n=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[a,s]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;return Nt(e,a,s)}function Vt(e,t){const{isAsideEnabled:n}=bt(),a=lt(r,100);let s=null;R(()=>{requestAnimationFrame(r),window.addEventListener("scroll",a)}),je(()=>{d(location.hash)}),he(()=>{window.removeEventListener("scroll",a)});function r(){if(!n.value)return;const l=window.scrollY,g=window.innerHeight,y=document.body.offsetHeight,N=Math.abs(l+g-y)<1,A=ue.map(({element:I,link:x})=>({link:x,top:St(I)})).filter(({top:I})=>!Number.isNaN(I)).sort((I,x)=>I.top-x.top);if(!A.length){d(null);return}if(l<1){d(null);return}if(N){d(A[A.length-1].link);return}let E=null;for(const{link:I,top:x}of A){if(x>l+We()+4)break;E=I}d(E)}function d(l){s&&s.classList.remove("active"),l==null?s=null:s=e.value.querySelector(`a[href="${decodeURIComponent(l)}"]`);const g=s;g?(g.classList.add("active"),t.value.style.top=g.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function St(e){let t=0;for(;e!==document.body;){if(e===null)return NaN;t+=e.offsetTop,e=e.offsetParent}return t}function Nt(e,t,n){ue.length=0;const a=[],s=[];return e.forEach(r=>{const d={...r,children:[]};let l=s[s.length-1];for(;l&&l.level>=d.level;)s.pop(),l=s[s.length-1];if(d.element.classList.contains("ignore-header")||l&&"shouldIgnore"in l){s.push({level:d.level,shouldIgnore:!0});return}d.level>n||d.level {t=q.value?document.activeElement:void 0}),R(()=>{window.addEventListener("keyup",n)}),he(()=>{window.removeEventListener("keyup",n)});function n(a){a.key==="Escape"&&q.value&&(e(),t?.focus())}}function At(){function e(){q.value=!0}function t(){q.value=!1}function n(){q.value?t():e()}return{isOpen:q,open:e,close:t,toggle:n}}function Mt(e){const{page:t,hash:n}=$(),a=V(!1),s=p(()=>e.value.collapsed!=null),r=p(()=>!!e.value.link),d=V(!1),l=()=>{d.value=D(t.value.relativePath,e.value.link)};H([t,e,n],l),R(l);const g=p(()=>d.value?!0:e.value.items?ce(t.value.relativePath,e.value.items):!1),y=p(()=>!!(e.value.items&&e.value.items.length));te(()=>{a.value=!!(s.value&&e.value.collapsed)}),Ve(()=>{(d.value||g.value)&&(a.value=!1)});function N(){s.value&&(a.value=!a.value)}return{collapsed:a,collapsible:s,isLink:r,isActiveLink:d,hasActiveLink:g,hasChildren:y,toggle:N}}const de=ae([]),J=ae([]),Z=ae(!1);function G(){const{frontmatter:e,theme:t}=$(),n=p(()=>!!(e.value.isHome??e.value.layout==="home")),a=p(()=>e.value.sidebar!==!1&&J.value.length>0&&!n.value),s=p(()=>a.value&&Z.value),r=p(()=>a.value?gt(J.value):[]),d=p(()=>n.value?!1:e.value.aside!=null?!!e.value.aside:t.value.aside!==!1),l=p(()=>d.value?e.value.aside==null?t.value.aside==="left":e.value.aside==="left":!1),g=p(()=>de.value.length>0);return{isHome:n,sidebar:ye(J),sidebarGroups:r,hasSidebar:a,isSidebarEnabled:s,hasAside:d,leftAside:l,headers:ye(de),hasLocalNav:g}}function wt({closeSidebar:e}){const{frontmatter:t,page:n,theme:a}=$();H(()=>[n.value.relativePath,a.value.sidebar],([r,d])=>{const l=d?xe(d,r):[];JSON.stringify(l)!==JSON.stringify(J.value)&&(J.value=l)},{immediate:!0,deep:!0,flush:"sync"}),Se(()=>{de.value=yt(t.value.outline??a.value.outline)}),Y&&(Z.value=window.innerWidth>=960,window.addEventListener("resize",()=>{Z.value=window.innerWidth>=960},{passive:!0}));const s=ne();H(()=>s.path,e),H(Z,e),Tt(e)}const Be=Symbol("layout-info"),It=["href","title"],xt=m({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(e){return(t,n)=>{const a=j("VPDocOutlineItem",!0);return o(),u("ul",{class:P(["VPDocOutlineItem",e.root?"root":"nested"])},[(o(!0),u(S,null,w(e.headers,({children:s,link:r,title:d})=>(o(),u("li",null,[f("a",{class:"outline-link",href:r,title:d},L(d),9,It),s?.length?(o(),k(a,{key:0,headers:s},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Ce=b(xt,[["__scopeId","data-v-1ce71065"]]),Ht={class:"content"},Bt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Ct=m({__name:"VPDocAsideOutline",setup(e){const{theme:t}=$(),n=V(),a=V(),{headers:s,hasLocalNav:r}=G();return Vt(n,a),(d,l)=>(o(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:P(["VPDocAsideOutline",{"has-outline":i(r)}]),ref_key:"container",ref:n},[f("div",Ht,[f("div",{class:"outline-marker",ref_key:"marker",ref:a},null,512),f("div",Bt,L(i(He)(i(t))),1),_(Ce,{headers:i(s),root:!0},null,8,["headers"])])],2))}}),Et=b(Ct,[["__scopeId","data-v-60d5052e"]]),Ft={class:"VPDocAsideCarbonAds"},Ot=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(e){const t=()=>null;return(n,a)=>(o(),u("div",Ft,[_(i(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),Dt={class:"VPDocAside"},Gt=m({__name:"VPDocAside",setup(e){const{theme:t}=$();return(n,a)=>(o(),u("div",Dt,[c(n.$slots,"aside-top",{},void 0,!0),c(n.$slots,"aside-outline-before",{},void 0,!0),_(Et),c(n.$slots,"aside-outline-after",{},void 0,!0),a[0]||(a[0]=f("div",{class:"spacer"},null,-1)),c(n.$slots,"aside-ads-before",{},void 0,!0),i(t).carbonAds?(o(),k(Ot,{key:0,"carbon-ads":i(t).carbonAds},null,8,["carbon-ads"])):h("",!0),c(n.$slots,"aside-ads-after",{},void 0,!0),c(n.$slots,"aside-bottom",{},void 0,!0)]))}}),Kt=b(Gt,[["__scopeId","data-v-3f215769"]]);function Rt(){const{theme:e,page:t}=$();return p(()=>{const{text:n="Edit this page",pattern:a=""}=e.value.editLink||{};let s;return typeof a=="function"?s=a(t.value):s=a.replace(/:path/g,t.value.filePath),{url:s,text:n}})}function Ut(){const{page:e,theme:t,frontmatter:n}=$();return p(()=>{const a=xe(t.value.sidebar,e.value.relativePath),s=_t(a),r=jt(s,y=>y.link.replace(/[?#].*$/,"")),d=r.findIndex(y=>D(e.value.relativePath,y.link)),l=t.value.docFooter?.prev===!1&&!n.value.prev||n.value.prev===!1,g=t.value.docFooter?.next===!1&&!n.value.next||n.value.next===!1;return{prev:l?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??r[d-1]?.docFooterText??r[d-1]?.text,link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??r[d-1]?.link},next:g?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??r[d+1]?.docFooterText??r[d+1]?.text,link:(typeof n.value.next=="object"?n.value.next.link:void 0)??r[d+1]?.link}}})}function jt(e,t){const n=new Set;return e.filter(a=>{const s=t(a);return n.has(s)?!1:n.add(s)})}const C=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e){const t=e,n=p(()=>t.tag??(t.href?"a":"span")),a=p(()=>t.href&&Ne.test(t.href)||t.target==="_blank");return(s,r)=>(o(),k(B(n.value),{class:P(["VPLink",{link:e.href,"vp-external-link-icon":a.value,"no-icon":e.noIcon}]),href:e.href?i(me)(e.href):void 0,target:e.target??(a.value?"_blank":void 0),rel:e.rel??(a.value?"noreferrer":void 0)},{default:v(()=>[c(s.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Wt={class:"VPLastUpdated"},zt=["datetime"],qt=m({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:n,lang:a}=$(),{language:s}=qe(),r=ze("timeRef"),d=p(()=>new Date(n.value.lastUpdated)),l=p(()=>d.value.toISOString()),g=ae("");return R(()=>{te(()=>{const y=t.value.lastUpdated?.formatOptions?.forceLocale?a.value:s.value;g.value=new Intl.DateTimeFormat(y,t.value.lastUpdated?.formatOptions??{dateStyle:"medium",timeStyle:"medium"}).format(d.value),y&&a.value!==y?r.value?.setAttribute("lang",y):r.value?.removeAttribute("lang")})}),(y,N)=>(o(),u("p",Wt,[U(L(i(t).lastUpdated?.text||i(t).lastUpdatedText||"Last updated")+": ",1),f("time",{ref_key:"timeRef",ref:r,datetime:l.value},L(g.value),9,zt)]))}}),Jt=b(qt,[["__scopeId","data-v-3c637f39"]]),Yt={key:0,class:"VPDocFooter"},Xt={key:0,class:"edit-info"},Qt={key:0,class:"edit-link"},Zt={key:1,class:"last-updated"},en={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},tn={class:"pager"},nn=["innerHTML"],an=["innerHTML"],sn={class:"pager"},on=["innerHTML"],rn=["innerHTML"],ln=m({__name:"VPDocFooter",setup(e){const{theme:t,page:n,frontmatter:a}=$(),s=Rt(),r=Ut(),d=p(()=>t.value.editLink&&a.value.editLink!==!1),l=p(()=>n.value.lastUpdated),g=p(()=>d.value||l.value||r.value.prev||r.value.next);return(y,N)=>g.value?(o(),u("footer",Yt,[c(y.$slots,"doc-footer-before",{},void 0,!0),d.value||l.value?(o(),u("div",Xt,[d.value?(o(),u("div",Qt,[_(C,{class:"edit-link-button",href:i(s).url,"no-icon":!0},{default:v(()=>[N[0]||(N[0]=f("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),U(" "+L(i(s).text),1)]),_:1},8,["href"])])):h("",!0),l.value?(o(),u("div",Zt,[_(Jt)])):h("",!0)])):h("",!0),i(r).prev?.link||i(r).next?.link?(o(),u("nav",en,[N[1]||(N[1]=f("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),f("div",tn,[i(r).prev?.link?(o(),k(C,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:v(()=>[f("span",{class:"desc",innerHTML:i(t).docFooter?.prev||"Previous page"},null,8,nn),f("span",{class:"title",innerHTML:i(r).prev.text},null,8,an)]),_:1},8,["href"])):h("",!0)]),f("div",sn,[i(r).next?.link?(o(),k(C,{key:0,class:"pager-link next",href:i(r).next.link},{default:v(()=>[f("span",{class:"desc",innerHTML:i(t).docFooter?.next||"Next page"},null,8,on),f("span",{class:"title",innerHTML:i(r).next.text},null,8,rn)]),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}),cn=b(ln,[["__scopeId","data-v-e257564d"]]),un={class:"container"},dn={class:"aside-container"},vn={class:"aside-content"},fn={class:"content"},hn={class:"content-container"},mn={class:"main"},pn=m({__name:"VPDoc",setup(e){const{theme:t}=$(),n=ne(),{hasSidebar:a,hasAside:s,leftAside:r}=G(),d=p(()=>n.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(l,g)=>{const y=j("Content");return o(),u("div",{class:P(["VPDoc",{"has-sidebar":i(a),"has-aside":i(s)}])},[c(l.$slots,"doc-top",{},void 0,!0),f("div",un,[i(s)?(o(),u("div",{key:0,class:P(["aside",{"left-aside":i(r)}])},[g[0]||(g[0]=f("div",{class:"aside-curtain"},null,-1)),f("div",dn,[f("div",vn,[_(Kt,null,{"aside-top":v(()=>[c(l.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[c(l.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[c(l.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(l.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(l.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(l.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),f("div",fn,[f("div",hn,[c(l.$slots,"doc-before",{},void 0,!0),f("main",mn,[_(y,{class:P(["vp-doc",[d.value,i(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),_(cn,null,{"doc-footer-before":v(()=>[c(l.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(l.$slots,"doc-after",{},void 0,!0)])])]),c(l.$slots,"doc-bottom",{},void 0,!0)],2)}}}),kn=b(pn,[["__scopeId","data-v-7011f0d8"]]),gn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(e){const t=e,n=p(()=>t.href&&Ne.test(t.href)),a=p(()=>t.tag||(t.href?"a":"button"));return(s,r)=>(o(),k(B(a.value),{class:P(["VPButton",[e.size,e.theme]]),href:e.href?i(me)(e.href):void 0,target:t.target??(n.value?"_blank":void 0),rel:t.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[c(s.$slots,"default",{},()=>[U(L(e.text),1)],!0)]),_:3},8,["class","href","target","rel"]))}}),_n=b(gn,[["__scopeId","data-v-01bff58b"]]),bn=["src","alt"],$n=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(e){return(t,n)=>{const a=j("VPImage",!0);return e.image?(o(),u(S,{key:0},[typeof e.image=="string"||"src"in e.image?(o(),u("img",O({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:i(fe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,bn)):(o(),u(S,{key:1},[_(a,O({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),_(a,O({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),ee=b($n,[["__scopeId","data-v-8426fc1a"]]),yn={class:"container"},Pn={class:"main"},Ln={class:"heading"},Vn=["innerHTML"],Sn=["innerHTML"],Nn=["innerHTML"],Tn={key:0,class:"actions"},An={key:0,class:"image"},Mn={class:"image-container"},wn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(e){const{heroImageSlotExists:t}=se(Be,{heroImageSlotExists:p(()=>!1)});return(n,a)=>(o(),u("div",{class:P(["VPHero",{"has-image":e.image||i(t)}])},[f("div",yn,[f("div",Pn,[c(n.$slots,"home-hero-info-before",{},void 0,!0),c(n.$slots,"home-hero-info",{},()=>[f("h1",Ln,[e.name?(o(),u("span",{key:0,innerHTML:e.name,class:"name clip"},null,8,Vn)):h("",!0),e.text?(o(),u("span",{key:1,innerHTML:e.text,class:"text"},null,8,Sn)):h("",!0)]),e.tagline?(o(),u("p",{key:0,innerHTML:e.tagline,class:"tagline"},null,8,Nn)):h("",!0)],!0),c(n.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(o(),u("div",Tn,[c(n.$slots,"home-hero-actions-before-actions",{},void 0,!0),(o(!0),u(S,null,w(e.actions,s=>(o(),u("div",{key:s.link,class:"action"},[_(_n,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link,target:s.target,rel:s.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||i(t)?(o(),u("div",An,[f("div",Mn,[a[0]||(a[0]=f("div",{class:"image-bg"},null,-1)),c(n.$slots,"home-hero-image",{},()=>[e.image?(o(),k(ee,{key:0,class:"image-src",image:e.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),In=b(wn,[["__scopeId","data-v-e62e4946"]]),xn=m({__name:"VPHomeHero",setup(e){const{frontmatter:t}=$();return(n,a)=>i(t).hero?(o(),k(In,{key:0,class:"VPHomeHero",name:i(t).hero.name,text:i(t).hero.text,tagline:i(t).hero.tagline,image:i(t).hero.image,actions:i(t).hero.actions},{"home-hero-info-before":v(()=>[c(n.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[c(n.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[c(n.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[c(n.$slots,"home-hero-actions-after")]),"home-hero-actions-before-actions":v(()=>[c(n.$slots,"home-hero-actions-before-actions")]),"home-hero-image":v(()=>[c(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Hn={class:"box"},Bn={key:0,class:"icon"},Cn=["innerHTML"],En=["innerHTML"],Fn={key:3,class:"details"},On=["innerHTML"],Dn=["innerHTML"],Gn={key:5,class:"link-text"},Kn={class:"link-text-value"},Rn=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e){return(t,n)=>(o(),k(C,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[f("article",Hn,[typeof e.icon=="object"&&e.icon.wrap?(o(),u("div",Bn,[_(ee,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(o(),k(ee,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(o(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Cn)):h("",!0),f("h2",{class:"title",innerHTML:e.title},null,8,En),Array.isArray(e.details)?(o(),u("ul",Fn,[(o(!0),u(S,null,w(e.details,a=>(o(),u("li",{key:a,innerHTML:a},null,8,On))),128))])):e.details?(o(),u("p",{key:4,class:"details",innerHTML:e.details},null,8,Dn)):h("",!0),e.linkText?(o(),u("div",Gn,[f("p",Kn,[U(L(e.linkText)+" ",1),n[0]||(n[0]=f("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Un=b(Rn,[["__scopeId","data-v-e5511d04"]]),jn={key:0,class:"VPFeatures"},Wn={class:"container"},zn={class:"items"},qn=m({__name:"VPFeatures",props:{features:{}},setup(e){const t=e,n=p(()=>{const a=t.features.length;if(a){if(a===2)return"grid-2";if(a===3)return"grid-3";if(a%3===0)return"grid-6";if(a>3)return"grid-4"}else return});return(a,s)=>e.features?(o(),u("div",jn,[f("div",Wn,[f("div",zn,[(o(!0),u(S,null,w(e.features,r=>(o(),u("div",{key:r.title,class:P(["item",[n.value]])},[_(Un,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),Jn=b(qn,[["__scopeId","data-v-a6181336"]]),Yn=m({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=$();return(n,a)=>i(t).features?(o(),k(Jn,{key:0,class:"VPHomeFeatures",features:i(t).features},null,8,["features"])):h("",!0)}}),Xn=m({__name:"VPHomeContent",setup(e){const{width:t}=Je({initialWidth:0,includeScrollbar:!1});return(n,a)=>(o(),u("div",{class:"vp-doc container",style:Te(i(t)?{"--vp-offset":`calc(50% - ${i(t)/2}px)`}:{})},[c(n.$slots,"default",{},void 0,!0)],4))}}),Qn=b(Xn,[["__scopeId","data-v-8e2d4988"]]),Zn=m({__name:"VPHome",setup(e){const{frontmatter:t,theme:n}=$();return(a,s)=>{const r=j("Content");return o(),u("div",{class:P(["VPHome",{"external-link-icon-enabled":i(n).externalLinkIcon}])},[c(a.$slots,"home-hero-before",{},void 0,!0),_(xn,null,{"home-hero-info-before":v(()=>[c(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-actions-before-actions":v(()=>[c(a.$slots,"home-hero-actions-before-actions",{},void 0,!0)]),"home-hero-image":v(()=>[c(a.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(a.$slots,"home-hero-after",{},void 0,!0),c(a.$slots,"home-features-before",{},void 0,!0),_(Yn),c(a.$slots,"home-features-after",{},void 0,!0),i(t).markdownStyles!==!1?(o(),k(Qn,{key:0},{default:v(()=>[_(r)]),_:1})):(o(),k(r,{key:1}))],2)}}}),ea=b(Zn,[["__scopeId","data-v-bb6342a6"]]),ta={},na={class:"VPPage"};function aa(e,t){const n=j("Content");return o(),u("div",na,[c(e.$slots,"page-top"),_(n),c(e.$slots,"page-bottom")])}const sa=b(ta,[["render",aa]]),oa=m({__name:"VPContent",setup(e){const{page:t,frontmatter:n}=$(),{isHome:a,hasSidebar:s}=G();return(r,d)=>(o(),u("div",{class:P(["VPContent",{"has-sidebar":i(s),"is-home":i(a)}]),id:"VPContent"},[i(t).isNotFound?c(r.$slots,"not-found",{key:0},()=>[_(kt)],!0):i(n).layout==="page"?(o(),k(sa,{key:1},{"page-top":v(()=>[c(r.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[c(r.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(n).layout==="home"?(o(),k(ea,{key:2},{"home-hero-before":v(()=>[c(r.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[c(r.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(r.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(r.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(r.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-actions-before-actions":v(()=>[c(r.$slots,"home-hero-actions-before-actions",{},void 0,!0)]),"home-hero-image":v(()=>[c(r.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[c(r.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[c(r.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[c(r.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(n).layout&&i(n).layout!=="doc"?(o(),k(B(i(n).layout),{key:3})):(o(),k(kn,{key:4},{"doc-top":v(()=>[c(r.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[c(r.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[c(r.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[c(r.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[c(r.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[c(r.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[c(r.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(r.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(r.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(r.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[c(r.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ra=b(oa,[["__scopeId","data-v-9dc86fcc"]]),ia={class:"container"},la=["innerHTML"],ca=["innerHTML"],ua=m({__name:"VPFooter",setup(e){const{theme:t,frontmatter:n}=$(),{hasSidebar:a}=G();return(s,r)=>i(t).footer&&i(n).footer!==!1?(o(),u("footer",{key:0,class:P(["VPFooter",{"has-sidebar":i(a)}])},[f("div",ia,[i(t).footer.message?(o(),u("p",{key:0,class:"message",innerHTML:i(t).footer.message},null,8,la)):h("",!0),i(t).footer.copyright?(o(),u("p",{key:1,class:"copyright",innerHTML:i(t).footer.copyright},null,8,ca)):h("",!0)])],2)):h("",!0)}}),da=b(ua,[["__scopeId","data-v-c3855bb3"]]),va={class:"menu-text"},fa={class:"header"},ha={class:"outline"},ma=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e){const t=e,{theme:n}=$(),a=V(!1),s=V(0),r=V(),d=V();function l(A){r.value?.contains(A.target)||(a.value=!1)}H(a,A=>{if(A){document.addEventListener("click",l);return}document.removeEventListener("click",l)}),ie("Escape",()=>{a.value=!1}),Se(()=>{a.value=!1});function g(){a.value=!a.value,s.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function y(A){A.target.classList.contains("outline-link")&&(d.value&&(d.value.style.transition="none"),Ae(()=>{a.value=!1}))}function N(){a.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(A,E)=>(o(),u("div",{class:"VPLocalNavOutlineDropdown",style:Te({"--vp-vh":s.value+"px"}),ref_key:"main",ref:r},[e.headers.length>0?(o(),u("button",{key:0,onClick:g,class:P({open:a.value})},[f("span",va,L(i(He)(i(n))),1),E[0]||(E[0]=f("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(o(),u("button",{key:1,onClick:N},L(i(n).returnToTopLabel||"Return to top"),1)),_(ve,{name:"flyout"},{default:v(()=>[a.value?(o(),u("div",{key:0,ref_key:"items",ref:d,class:"items",onClick:y},[f("div",fa,[f("a",{class:"top-link",href:"#",onClick:N},L(i(n).returnToTopLabel||"Return to top"),1)]),f("div",ha,[_(Ce,{headers:e.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),pa=b(ma,[["__scopeId","data-v-0bf0e06f"]]),ka={class:"container"},ga=["aria-expanded"],_a={class:"menu-text"},ba=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t}=$(),{isHome:n,hasSidebar:a,headers:s,hasLocalNav:r}=G(),{y:d}=Me(),l=V(0);R(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))});const g=p(()=>({VPLocalNav:!0,"has-sidebar":a.value,empty:!r.value,fixed:!r.value&&!a.value}));return(y,N)=>!i(n)&&(i(r)||i(a)||i(d)>=l.value)?(o(),u("div",{key:0,class:P(g.value)},[f("div",ka,[i(a)?(o(),u("button",{key:0,class:"menu","aria-expanded":e.open,"aria-controls":"VPSidebarNav",onClick:N[0]||(N[0]=A=>y.$emit("open-menu"))},[N[1]||(N[1]=f("span",{class:"vpi-align-left menu-icon"},null,-1)),f("span",_a,L(i(t).sidebarMenuLabel||"Menu"),1)],8,ga)):h("",!0),_(pa,{headers:i(s),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),$a=b(ba,[["__scopeId","data-v-db738f89"]]);function ya(){const e=V(!1);function t(){e.value=!0,window.addEventListener("resize",s)}function n(){e.value=!1,window.removeEventListener("resize",s)}function a(){e.value?n():t()}function s(){window.outerWidth>=768&&n()}const r=ne();return H(()=>r.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:a}}const pe=Symbol("nav"),Pa={},La={class:"VPSwitch",type:"button",role:"switch"},Va={class:"check"},Sa={key:0,class:"icon"};function Na(e,t){return o(),u("button",La,[f("span",Va,[e.$slots.default?(o(),u("span",Sa,[c(e.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Ta=b(Pa,[["render",Na],["__scopeId","data-v-1d5665e3"]]),Aa=m({__name:"VPSwitchAppearance",setup(e){const{isDark:t,theme:n}=$(),a=se("toggle-appearance",()=>{t.value=!t.value}),s=V("");return Ve(()=>{s.value=t.value?n.value.lightModeSwitchTitle||"Switch to light theme":n.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,d)=>(o(),k(Ta,{title:s.value,class:"VPSwitchAppearance","aria-checked":i(t),onClick:i(a)},{default:v(()=>[...d[0]||(d[0]=[f("span",{class:"vpi-sun sun"},null,-1),f("span",{class:"vpi-moon moon"},null,-1)])]),_:1},8,["title","aria-checked","onClick"]))}}),ke=b(Aa,[["__scopeId","data-v-5337faa4"]]),Ma={key:0,class:"VPNavBarAppearance"},wa=m({__name:"VPNavBarAppearance",setup(e){const{site:t}=$();return(n,a)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(o(),u("div",Ma,[_(ke)])):h("",!0)}}),Ia=b(wa,[["__scopeId","data-v-6c893767"]]),ge=V();let Ee=!1,re=0;function xa(e){const t=V(!1);if(Y){!Ee&&Ha(),re++;const n=H(ge,a=>{a===e.el.value||e.el.value?.contains(a)?(t.value=!0,e.onFocus?.()):(t.value=!1,e.onBlur?.())});he(()=>{n(),re--,re||Ba()})}return Ye(t)}function Ha(){document.addEventListener("focusin",Fe),Ee=!0,ge.value=document.activeElement}function Ba(){document.removeEventListener("focusin",Fe)}function Fe(){ge.value=document.activeElement}const Ca={class:"VPMenuLink"},Ea=["innerHTML"],Fa=m({inheritAttrs:!1,__name:"VPMenuLink",props:{item:{},rel:{}},setup(e){const t=e,{page:n}=$(),a=p(()=>typeof t.item.link=="function"?t.item.link(n.value):t.item.link),s=p(()=>D(n.value.relativePath,t.item.activeMatch||a.value,!!t.item.activeMatch));return(r,d)=>(o(),u("div",Ca,[_(C,O(r.$attrs,{class:{active:s.value},href:a.value,target:e.item.target,rel:t.rel??e.item.rel,"no-icon":e.item.noIcon}),{default:v(()=>[f("span",{innerHTML:e.item.text},null,8,Ea)]),_:1},16,["class","href","target","rel","no-icon"])]))}}),oe=b(Fa,[["__scopeId","data-v-867c295f"]]),Oa={class:"VPMenuGroup"},Da={key:0,class:"title"},Ga=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(e){return(t,n)=>(o(),u("div",Oa,[e.text?(o(),u("p",Da,L(e.text),1)):h("",!0),(o(!0),u(S,null,w(e.items,a=>(o(),u(S,{key:JSON.stringify(a)},["link"in a?(o(),k(oe,{key:0,item:a},null,8,["item"])):h("",!0)],64))),128))]))}}),Ka=b(Ga,[["__scopeId","data-v-1963e1bb"]]),Ra={class:"VPMenu"},Ua={key:0,class:"items"},ja=m({__name:"VPMenu",props:{items:{}},setup(e){return(t,n)=>(o(),u("div",Ra,[e.items?(o(),u("div",Ua,[(o(!0),u(S,null,w(e.items,a=>(o(),u(S,{key:JSON.stringify(a)},["link"in a?(o(),k(oe,{key:0,item:a},null,8,["item"])):"component"in a?(o(),k(B(a.component),O({key:1,ref_for:!0},a.props),null,16)):(o(),k(Ka,{key:2,text:a.text,items:a.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(t.$slots,"default",{},void 0,!0)]))}}),Wa=b(ja,[["__scopeId","data-v-25a6cce8"]]),za=["aria-expanded","aria-label"],qa={key:0,class:"text"},Ja=["innerHTML"],Ya={key:1,class:"vpi-more-horizontal icon"},Xa={class:"menu"},Qa=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(e){const t=V(!1),n=V();xa({el:n,onBlur:a});function a(){t.value=!1}return(s,r)=>(o(),u("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=d=>t.value=!0),onMouseleave:r[2]||(r[2]=d=>t.value=!1)},[f("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:r[0]||(r[0]=d=>t.value=!t.value)},[e.button||e.icon?(o(),u("span",qa,[e.icon?(o(),u("span",{key:0,class:P([e.icon,"option-icon"])},null,2)):h("",!0),e.button?(o(),u("span",{key:1,innerHTML:e.button},null,8,Ja)):h("",!0),r[3]||(r[3]=f("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(o(),u("span",Ya))],8,za),f("div",Xa,[_(Wa,{items:e.items},{default:v(()=>[c(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),_e=b(Qa,[["__scopeId","data-v-42cb505d"]]),Za=["href","aria-label","rel","innerHTML"],es=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{},me:{type:Boolean}},setup(e){const t=e,n=V();R(async()=>{await Ae();const s=n.value?.children[0];s instanceof HTMLElement&&s.className.startsWith("vpi-social-")&&(getComputedStyle(s).maskImage||getComputedStyle(s).webkitMaskImage)==="none"&&s.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${t.icon}.svg')`)});const a=p(()=>typeof t.icon=="object"?t.icon.svg:``);return(s,r)=>(o(),u("a",{ref_key:"el",ref:n,class:"VPSocialLink no-icon",href:e.link,"aria-label":e.ariaLabel??(typeof e.icon=="string"?e.icon:""),target:"_blank",rel:e.me?"me noopener":"noopener",innerHTML:a.value},null,8,Za))}}),ts=b(es,[["__scopeId","data-v-591a6b30"]]),ns={class:"VPSocialLinks"},as=m({__name:"VPSocialLinks",props:{links:{},me:{type:Boolean,default:!0}},setup(e){return(t,n)=>(o(),u("div",ns,[(o(!0),u(S,null,w(e.links,({link:a,icon:s,ariaLabel:r})=>(o(),k(ts,{key:a,icon:s,link:a,ariaLabel:r,me:e.me},null,8,["icon","link","ariaLabel","me"]))),128))]))}}),be=b(as,[["__scopeId","data-v-d07f11e6"]]),ss={key:0,class:"group translations"},os={class:"trans-title"},rs={key:1,class:"group"},is={class:"item appearance"},ls={class:"label"},cs={class:"appearance-action"},us={key:2,class:"group"},ds={class:"item social-links"},vs=m({__name:"VPNavBarExtra",setup(e){const{site:t,theme:n}=$(),{localeLinks:a,currentLang:s}=X({correspondingLink:!0}),r=p(()=>a.value.length&&s.value.label||t.value.appearance||n.value.socialLinks);return(d,l)=>r.value?(o(),k(_e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[i(a).length&&i(s).label?(o(),u("div",ss,[f("p",os,L(i(s).label),1),(o(!0),u(S,null,w(i(a),g=>(o(),k(oe,{key:g.link,item:g,lang:g.lang,hreflang:g.lang,rel:"alternate",dir:g.dir},null,8,["item","lang","hreflang","dir"]))),128))])):h("",!0),i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(o(),u("div",rs,[f("div",is,[f("p",ls,L(i(n).darkModeSwitchLabel||"Appearance"),1),f("div",cs,[_(ke)])])])):h("",!0),i(n).socialLinks?(o(),u("div",us,[f("div",ds,[_(be,{class:"social-links-list",links:i(n).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),fs=b(vs,[["__scopeId","data-v-562c832a"]]),hs=["aria-expanded"],ms=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>(o(),u("button",{type:"button",class:P(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=a=>t.$emit("click"))},[...n[1]||(n[1]=[f("span",{class:"container"},[f("span",{class:"top"}),f("span",{class:"middle"}),f("span",{class:"bottom"})],-1)])],10,hs))}}),ps=b(ms,[["__scopeId","data-v-e5dd9c1c"]]),ks=["innerHTML"],gs=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(e){const t=e,{page:n}=$(),a=p(()=>typeof t.item.link=="function"?t.item.link(n.value):t.item.link),s=p(()=>D(n.value.relativePath,t.item.activeMatch||a.value,!!t.item.activeMatch));return(r,d)=>(o(),k(C,{class:P({VPNavBarMenuLink:!0,active:s.value}),href:a.value,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,tabindex:"0"},{default:v(()=>[f("span",{innerHTML:e.item.text},null,8,ks)]),_:1},8,["class","href","target","rel","no-icon"]))}}),_s=b(gs,[["__scopeId","data-v-6dd25bb8"]]),bs=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e){const t=e,{page:n}=$(),a=p(()=>t.item.activeMatch?D(n.value.relativePath,t.item.activeMatch,!0):s(t.item));function s(r){if("component"in r)return!1;if("link"in r){const d=typeof r.link=="function"?r.link(n.value):r.link;return D(n.value.relativePath,r.activeMatch||d,!!r.activeMatch)}return r.items.some(s)}return(r,d)=>(o(),k(_e,{class:P({VPNavBarMenuGroup:!0,active:a.value}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),$s={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ys=m({__name:"VPNavBarMenu",setup(e){const{theme:t}=$();return(n,a)=>i(t).nav?(o(),u("nav",$s,[a[0]||(a[0]=f("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(o(!0),u(S,null,w(i(t).nav,s=>(o(),u(S,{key:JSON.stringify(s)},["link"in s?(o(),k(_s,{key:0,item:s},null,8,["item"])):"component"in s?(o(),k(B(s.component),O({key:1,ref_for:!0},s.props),null,16)):(o(),k(bs,{key:2,item:s},null,8,["item"]))],64))),128))])):h("",!0)}}),Ps=b(ys,[["__scopeId","data-v-39714824"]]);function Ls(e){const t=e.mode??"auto",n=Vs(e),a=e.askAi,s=!!(a&&typeof a=="object"&&a.sidePanel);switch(t){case"sidePanel":return{mode:t,showKeywordSearch:!1,useSidePanel:!0};case"hybrid":return n||console.error('[vitepress] mode: "hybrid" requires keyword search credentials (appId, apiKey, indexName).'),{mode:t,showKeywordSearch:n,useSidePanel:!0};case"modal":return{mode:t,showKeywordSearch:n,useSidePanel:!1};case"auto":default:return{mode:"auto",showKeywordSearch:n,useSidePanel:s}}}function Vs(e){return!!(e.appId&&e.apiKey&&e.indexName)}function Oe(e,t){return[...(Array.isArray(e)?e:e?[e]:[]).map(s=>Array.isArray(s)?s.filter(r=>typeof r=="string"&&!r.startsWith("lang:")):s).filter(s=>typeof s=="string"?!s.startsWith("lang:"):Array.isArray(s)&&s.length>0),`lang:${t}`]}function Ss(e,t,n){const a=typeof e=="string",s=!a&&e.searchParameters?{...e.searchParameters}:void 0,r=s?.facetFilters??t.searchParameters?.facetFilters,d=Oe(r,n),l={...s,facetFilters:d.length?d:void 0},g={...a?{}:e,indexName:a?t.indexName:e.indexName,apiKey:a?t.apiKey:e.apiKey,appId:a?t.appId:e.appId,assistantId:a?e:e.assistantId};return Object.values(l).some(y=>y!=null)&&(g.searchParameters=l),g}function Ns(e,t,n){e=De(e,e.locales?.[t]||{});const a=Oe(e.searchParameters?.facetFilters,n),s=e.askAi?Ss(e.askAi,e,n):void 0;return{...e,searchParameters:{...e.searchParameters,facetFilters:a},askAi:s}}function De(e,t){const n={...e};for(const a in t){const s=t[a];if(s!==void 0){if(a==="searchParameters"){n[a]=s;continue}Pe(s)&&Pe(n[a])?n[a]=De(n[a],s):n[a]=s}}return delete n.locales,n}function Ts(e,t=(n,a)=>JSON.stringify(n)===JSON.stringify(a)){return p(n=>{const a=e();return n===void 0||!t(n,a)?a:n})}const As={},Ms={type:"button",class:"VPNavBarAskAiButton"};function ws(e,t){return o(),u("button",Ms,[...t[0]||(t[0]=[f("span",{class:"vpi-sparkles","aria-hidden":"true"},null,-1)])])}const Is=b(As,[["render",ws],["__scopeId","data-v-4eb17e89"]]),xs={type:"button",class:"VPNavBarSearchButton"},Hs={class:"text"},Bs=m({__name:"VPNavBarSearchButton",props:{text:{}},setup(e){return(t,n)=>(o(),u("button",xs,[n[0]||(n[0]=f("span",{class:"vpi-search","aria-hidden":"true"},null,-1)),f("span",Hs,L(e.text),1),n[1]||(n[1]=f("span",{class:"keys","aria-hidden":"true"},[f("kbd",{class:"key-cmd"},"⌘"),f("kbd",{class:"key-ctrl"},"Ctrl"),f("kbd",null,"K")],-1))]))}}),Le=b(Bs,[["__scopeId","data-v-baa3be99"]]),Cs={class:"VPNavBarSearch"},Es=m({__name:"VPNavBarSearch",setup(e){const t=Xe(()=>Qe(()=>import("./VPLocalSearchBox.DIqEGPXK.js"),__vite__mapDeps([0,1]))),n=()=>null,{theme:a,localeIndex:s,lang:r}=$(),d="local",l=Ts(()=>Ns(a.value.search?.options||{},s.value,r.value)),g=p(()=>Ls(l.value)),y=p(()=>{if(!g.value.useSidePanel)return null;const T=l.value.askAi;return!T||typeof T=="string"||!T.sidePanel?null:T.sidePanel===!0?{}:T.sidePanel}),N=p(()=>y.value?.keyboardShortcuts?.["Ctrl/Cmd+I"]!==!1),A=V(null);let E=0;const I=V(!1),x=V(!1);R(()=>{});function W(T){I.value||(I.value=!0),A.value={target:T,nonce:++E}}const F=V(!1);ie("k",T=>{(T.ctrlKey||T.metaKey)&&(T.preventDefault(),F.value=!0)}),ie("/",T=>{z(T)||(T.preventDefault(),F.value=!0)});function z(T){const M=T.target,K=M.tagName;return M.isContentEditable||K==="INPUT"||K==="SELECT"||K==="TEXTAREA"}return(T,M)=>(o(),u("div",Cs,[i(d)==="algolia"?(o(),u(S,{key:0},[g.value.showKeywordSearch?(o(),k(Le,{key:0,text:i(l).translations?.button?.buttonText||"Search","aria-label":i(l).translations?.button?.buttonAriaLabel||"Search","aria-keyshortcuts":"/ control+k meta+k",onClick:M[0]||(M[0]=K=>W("search"))},null,8,["text","aria-label"])):h("",!0),y.value?(o(),k(Is,{key:1,"aria-label":y.value.button?.translations?.buttonAriaLabel||"Ask AI","aria-keyshortcuts":N.value?"control+i meta+i":void 0,onClick:M[1]||(M[1]=K=>x.value?W("toggleAskAi"):W("askAi"))},null,8,["aria-label","aria-keyshortcuts"])):h("",!0),I.value?(o(),k(i(n),{key:2,"algolia-options":i(l),"open-request":A.value,onVnodeBeforeMount:M[2]||(M[2]=K=>x.value=!0)},null,8,["algolia-options","open-request"])):h("",!0)],64)):i(d)==="local"?(o(),u(S,{key:1},[_(Le,{text:i(l).translations?.button?.buttonText||"Search","aria-label":i(l).translations?.button?.buttonAriaLabel||"Search","aria-keyshortcuts":"/ control+k meta+k",onClick:M[3]||(M[3]=K=>F.value=!0)},null,8,["text","aria-label"]),F.value?(o(),k(i(t),{key:0,onClose:M[4]||(M[4]=K=>F.value=!1)})):h("",!0)],64)):h("",!0)]))}}),Fs=b(Es,[["__scopeId","data-v-2fc7f2c6"]]),Os=m({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=$();return(n,a)=>i(t).socialLinks?(o(),k(be,{key:0,class:"VPNavBarSocialLinks",links:i(t).socialLinks},null,8,["links"])):h("",!0)}}),Ds=b(Os,[["__scopeId","data-v-0394ad82"]]),Gs=["href","rel","target"],Ks=["innerHTML"],Rs={key:2},Us=m({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=$(),{hasSidebar:a}=G(),{currentLang:s}=X(),r=p(()=>typeof n.value.logoLink=="string"?n.value.logoLink:n.value.logoLink?.link),d=p(()=>typeof n.value.logoLink=="string"?void 0:n.value.logoLink?.rel),l=p(()=>typeof n.value.logoLink=="string"?void 0:n.value.logoLink?.target);return(g,y)=>(o(),u("div",{class:P(["VPNavBarTitle",{"has-sidebar":i(a)}])},[f("a",{class:"title",href:r.value??i(me)(i(s).link),rel:d.value,target:l.value},[c(g.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(o(),k(ee,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):h("",!0),i(n).siteTitle?(o(),u("span",{key:1,innerHTML:i(n).siteTitle},null,8,Ks)):i(n).siteTitle===void 0?(o(),u("span",Rs,L(i(t).title),1)):h("",!0),c(g.$slots,"nav-bar-title-after",{},void 0,!0)],8,Gs)],2))}}),js=b(Us,[["__scopeId","data-v-1e38c6bc"]]),Ws={class:"items"},zs={class:"title"},qs=m({__name:"VPNavBarTranslations",setup(e){const{theme:t}=$(),{localeLinks:n,currentLang:a}=X({correspondingLink:!0});return(s,r)=>i(n).length&&i(a).label?(o(),k(_e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(t).langMenuLabel||"Change language"},{default:v(()=>[f("div",Ws,[f("p",zs,L(i(a).label),1),(o(!0),u(S,null,w(i(n),d=>(o(),k(oe,{key:d.link,item:d,lang:d.lang,hreflang:d.lang,rel:"alternate",dir:d.dir},null,8,["item","lang","hreflang","dir"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Js=b(qs,[["__scopeId","data-v-fafa8c23"]]),Ys={class:"wrapper"},Xs={class:"container"},Qs={class:"title"},Zs={class:"content"},eo={class:"content-body"},to=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const{y:t}=Me(),{isHome:n,hasSidebar:a}=G();return(s,r)=>(o(),u("div",{class:P(["VPNavBar",{"has-sidebar":i(a),home:i(n),top:i(t)===0,"screen-open":e.isScreenOpen}])},[f("div",Ys,[f("div",Xs,[f("div",Qs,[_(js,null,{"nav-bar-title-before":v(()=>[c(s.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(s.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),f("div",Zs,[f("div",eo,[c(s.$slots,"nav-bar-content-before",{},void 0,!0),_(Fs,{class:"search"}),_(Ps,{class:"menu"}),_(Js,{class:"translations"}),_(Ia,{class:"appearance"}),_(Ds,{class:"social-links"}),_(fs,{class:"extra"}),c(s.$slots,"nav-bar-content-after",{},void 0,!0),_(ps,{class:"hamburger",active:e.isScreenOpen,onClick:r[0]||(r[0]=d=>s.$emit("toggle-screen"))},null,8,["active"])])])])]),r[1]||(r[1]=f("div",{class:"divider"},[f("div",{class:"divider-line"})],-1))],2))}}),no=b(to,[["__scopeId","data-v-9ca1369d"]]),ao={key:0,class:"VPNavScreenAppearance"},so={class:"text"},oo=m({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:n}=$();return(a,s)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(o(),u("div",ao,[f("p",so,L(i(n).darkModeSwitchLabel||"Appearance"),1),_(ke)])):h("",!0)}}),ro=b(oo,[["__scopeId","data-v-b44890b2"]]),io=["innerHTML"],lo=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e){const t=e,{page:n}=$(),a=p(()=>typeof t.item.link=="function"?t.item.link(n.value):t.item.link),s=p(()=>D(n.value.relativePath,t.item.activeMatch||a.value,!!t.item.activeMatch)),{closeScreen:r}=se(pe);return(d,l)=>(o(),k(C,{class:P({VPNavScreenMenuLink:!0,active:s.value}),href:a.value,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(r)},{default:v(()=>[f("span",{innerHTML:e.item.text},null,8,io)]),_:1},8,["class","href","target","rel","no-icon","onClick"]))}}),co=b(lo,[["__scopeId","data-v-b924ab8a"]]),uo=["innerHTML"],vo=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e){const t=e,{page:n}=$(),a=p(()=>typeof t.item.link=="function"?t.item.link(n.value):t.item.link),s=p(()=>D(n.value.relativePath,t.item.activeMatch||a.value,!!t.item.activeMatch)),{closeScreen:r}=se(pe);return(d,l)=>(o(),k(C,{class:P({VPNavScreenMenuGroupLink:!0,active:s.value}),href:a.value,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(r)},{default:v(()=>[f("span",{innerHTML:e.item.text},null,8,uo)]),_:1},8,["class","href","target","rel","no-icon","onClick"]))}}),Ge=b(vo,[["__scopeId","data-v-ecf4b472"]]),fo={class:"VPNavScreenMenuGroupSection"},ho={key:0,class:"title"},mo=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(e){return(t,n)=>(o(),u("div",fo,[e.text?(o(),u("p",ho,L(e.text),1)):h("",!0),(o(!0),u(S,null,w(e.items,a=>(o(),k(Ge,{key:a.text,item:a},null,8,["item"]))),128))]))}}),po=b(mo,[["__scopeId","data-v-4b7a798b"]]),ko=["aria-controls","aria-expanded"],go=["innerHTML"],_o=["id"],bo={key:0,class:"item"},$o={key:1,class:"item"},yo={key:2,class:"group"},Po=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(e){const t=e,n=V(!1),a=p(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function s(){n.value=!n.value}return(r,d)=>(o(),u("div",{class:P(["VPNavScreenMenuGroup",{open:n.value}])},[f("button",{class:"button","aria-controls":a.value,"aria-expanded":n.value,onClick:s},[f("span",{class:"button-text",innerHTML:e.text},null,8,go),d[0]||(d[0]=f("span",{class:"vpi-plus button-icon"},null,-1))],8,ko),f("div",{id:a.value,class:"items"},[(o(!0),u(S,null,w(e.items,l=>(o(),u(S,{key:JSON.stringify(l)},["link"in l?(o(),u("div",bo,[_(Ge,{item:l},null,8,["item"])])):"component"in l?(o(),u("div",$o,[(o(),k(B(l.component),O({ref_for:!0},l.props,{"screen-menu":""}),null,16))])):(o(),u("div",yo,[_(po,{text:l.text,items:l.items},null,8,["text","items"])]))],64))),128))],8,_o)],2))}}),Lo=b(Po,[["__scopeId","data-v-956364f9"]]),Vo={key:0,class:"VPNavScreenMenu"},So=m({__name:"VPNavScreenMenu",setup(e){const{theme:t}=$();return(n,a)=>i(t).nav?(o(),u("nav",Vo,[(o(!0),u(S,null,w(i(t).nav,s=>(o(),u(S,{key:JSON.stringify(s)},["link"in s?(o(),k(co,{key:0,item:s},null,8,["item"])):"component"in s?(o(),k(B(s.component),O({key:1,ref_for:!0},s.props,{"screen-menu":""}),null,16)):(o(),k(Lo,{key:2,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),No=m({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=$();return(n,a)=>i(t).socialLinks?(o(),k(be,{key:0,class:"VPNavScreenSocialLinks",links:i(t).socialLinks},null,8,["links"])):h("",!0)}}),To={class:"list"},Ao=m({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:n}=X({correspondingLink:!0}),a=V(!1);function s(){a.value=!a.value}return(r,d)=>i(t).length&&i(n).label?(o(),u("div",{key:0,class:P(["VPNavScreenTranslations",{open:a.value}])},[f("button",{class:"title",onClick:s},[d[0]||(d[0]=f("span",{class:"vpi-languages icon lang"},null,-1)),U(" "+L(i(n).label)+" ",1),d[1]||(d[1]=f("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),f("ul",To,[(o(!0),u(S,null,w(i(t),l=>(o(),u("li",{key:l.link,class:"item"},[_(C,{class:"link",href:l.link,lang:l.lang,dir:l.dir},{default:v(()=>[U(L(l.text),1)]),_:2},1032,["href","lang","dir"])]))),128))])],2)):h("",!0)}}),Mo=b(Ao,[["__scopeId","data-v-a4d9b172"]]),wo={key:0,class:"VPNavScreen",id:"VPNavScreen"},Io={class:"container"},xo=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=we(Y?document.body:null);return(n,a)=>(o(),k(ve,{name:"fade",onEnter:a[0]||(a[0]=s=>t.value=!0),onAfterLeave:a[1]||(a[1]=s=>t.value=!1)},{default:v(()=>[e.open?(o(),u("div",wo,[f("div",Io,[c(n.$slots,"nav-screen-content-before",{},void 0,!0),_(So,{class:"menu"}),_(Mo,{class:"translations"}),_(ro,{class:"appearance"}),_(No,{class:"social-links"}),c(n.$slots,"nav-screen-content-after",{},void 0,!0)])])):h("",!0)]),_:3}))}}),Ho=b(xo,[["__scopeId","data-v-05f3d7bc"]]),Bo={key:0,class:"VPNav"},Co=m({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:n,toggleScreen:a}=ya(),{frontmatter:s}=$(),r=p(()=>s.value.navbar!==!1);return Ie(pe,{closeScreen:n}),te(()=>{Y&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(d,l)=>r.value?(o(),u("header",Bo,[_(no,{"is-screen-open":i(t),onToggleScreen:i(a)},{"nav-bar-title-before":v(()=>[c(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[c(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[c(d.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),_(Ho,{open:i(t)},{"nav-screen-content-before":v(()=>[c(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[c(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Eo=b(Co,[["__scopeId","data-v-9f75dce3"]]),Fo=["role","tabindex"],Oo={key:1,class:"items"},Do=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e){const t=e,{collapsed:n,collapsible:a,isLink:s,isActiveLink:r,hasActiveLink:d,hasChildren:l,toggle:g}=Mt(p(()=>t.item)),y=p(()=>l.value?"section":"div"),N=p(()=>s.value?"a":"div"),A=p(()=>l.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),E=p(()=>s.value?void 0:"button"),I=p(()=>[[`level-${t.depth}`],{collapsible:a.value},{collapsed:n.value},{"is-link":s.value},{"is-active":r.value},{"has-active":d.value}]);function x(F){"key"in F&&F.key!=="Enter"||!t.item.link&&g()}function W(){t.item.link&&g()}return(F,z)=>{const T=j("VPSidebarItem",!0);return o(),k(B(y.value),{class:P(["VPSidebarItem",I.value])},{default:v(()=>[e.item.text?(o(),u("div",O({key:0,class:"item",role:E.value},Ze(e.item.items?{click:x,keydown:x}:{},!0),{tabindex:e.item.items&&0}),[z[1]||(z[1]=f("div",{class:"indicator"},null,-1)),e.item.link?(o(),k(C,{key:0,tag:N.value,class:"link",href:e.item.link,rel:e.item.rel,target:e.item.target},{default:v(()=>[(o(),k(B(A.value),{class:"text",innerHTML:e.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(o(),k(B(A.value),{key:1,class:"text",innerHTML:e.item.text},null,8,["innerHTML"])),e.item.collapsed!=null&&e.item.items&&e.item.items.length?(o(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:W,onKeydown:et(W,["enter"]),tabindex:"0"},[...z[0]||(z[0]=[f("span",{class:"vpi-chevron-right caret-icon"},null,-1)])],32)):h("",!0)],16,Fo)):h("",!0),e.item.items&&e.item.items.length?(o(),u("div",Oo,[e.depth<5?(o(!0),u(S,{key:0},w(e.item.items,M=>(o(),k(T,{key:M.text,item:M,depth:e.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),Go=b(Do,[["__scopeId","data-v-d81de50c"]]),Ko=m({__name:"VPSidebarGroup",props:{items:{}},setup(e){const t=V(!0);let n=null;return R(()=>{n=setTimeout(()=>{n=null,t.value=!1},300)}),tt(()=>{n!=null&&(clearTimeout(n),n=null)}),(a,s)=>(o(!0),u(S,null,w(e.items,r=>(o(),u("div",{key:r.text,class:P(["group",{"no-transition":t.value}])},[_(Go,{item:r,depth:0},null,8,["item"])],2))),128))}}),Ro=b(Ko,[["__scopeId","data-v-8d50c081"]]),Uo={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},jo=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const{sidebarGroups:t,hasSidebar:n}=G(),a=e,s=V(null),r=we(Y?document.body:null);H([a,s],()=>{a.open?(r.value=!0,s.value?.focus()):r.value=!1},{immediate:!0,flush:"post"});const d=V(0);return H(t,()=>{d.value+=1},{deep:!0}),(l,g)=>i(n)?(o(),u("aside",{key:0,class:P(["VPSidebar",{open:e.open}]),ref_key:"navEl",ref:s,onClick:g[0]||(g[0]=nt(()=>{},["stop"]))},[g[2]||(g[2]=f("div",{class:"curtain"},null,-1)),f("nav",Uo,[g[1]||(g[1]=f("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(l.$slots,"sidebar-nav-before",{},void 0,!0),(o(),k(Ro,{items:i(t),key:d.value},null,8,["items"])),c(l.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Wo=b(jo,[["__scopeId","data-v-af661f50"]]),zo={href:"#VPContent",class:"VPSkipLink visually-hidden"},qo=m({__name:"VPSkipLink",setup(e){const{theme:t}=$(),n=ne(),a=V();return H(()=>n.path,()=>a.value.focus()),(s,r)=>(o(),u(S,null,[f("span",{ref_key:"backToTop",ref:a,tabindex:"-1"},null,512),f("a",zo,L(i(t).skipToContentLabel||"Skip to content"),1)],64))}}),Jo=b(qo,[["__scopeId","data-v-331ec75c"]]),Yo=m({__name:"Layout",setup(e){const{isOpen:t,open:n,close:a}=At();wt({closeSidebar:a});const{frontmatter:s}=$(),r=at(),d=p(()=>!!r["home-hero-image"]);return Ie(Be,{heroImageSlotExists:d}),(l,g)=>{const y=j("Content");return i(s).layout!==!1?(o(),u("div",{key:0,class:P(["Layout",i(s).pageClass])},[c(l.$slots,"layout-top",{},void 0,!0),_(Jo),_(it,{class:"backdrop",show:i(t),onClick:i(a)},null,8,["show","onClick"]),_(Eo,null,{"nav-bar-title-before":v(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),_($a,{open:i(t),onOpenMenu:i(n)},null,8,["open","onOpenMenu"]),_(Wo,{open:i(t)},{"sidebar-nav-before":v(()=>[c(l.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[c(l.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),_(ra,null,{"page-top":v(()=>[c(l.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[c(l.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[c(l.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[c(l.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[c(l.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(l.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(l.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(l.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-actions-before-actions":v(()=>[c(l.$slots,"home-hero-actions-before-actions",{},void 0,!0)]),"home-hero-image":v(()=>[c(l.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[c(l.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[c(l.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[c(l.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[c(l.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[c(l.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[c(l.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[c(l.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[c(l.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[c(l.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[c(l.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[c(l.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(l.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(l.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(l.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),_(da),c(l.$slots,"layout-bottom",{},void 0,!0)],2)):(o(),k(y,{key:1}))}}}),Xo=b(Yo,[["__scopeId","data-v-0cf61682"]]),Zo={Layout:Xo,enhanceApp:({app:e})=>{e.component("Badge",st)}};export{Zo as t,$ as u}; diff --git a/docs/assets/guide_auth.md.DNA7JhY7.js b/docs/assets/guide_auth.md.DNA7JhY7.js deleted file mode 100644 index 283088fbfe..0000000000 --- a/docs/assets/guide_auth.md.DNA7JhY7.js +++ /dev/null @@ -1,3 +0,0 @@ -import{c as i,S as t,j as a,m as e}from"./chunks/framework.BXgR76oC.js";const c=JSON.parse('{"title":"Auth","description":"","frontmatter":{},"headers":[],"relativePath":"guide/auth.md","filePath":"guide/auth.md","lastUpdated":1779780644000}'),h={name:"guide/auth.md"};function n(o,s,l,r,p,k){return t(),a("div",null,[...s[0]||(s[0]=[e(` Auth
Gittensory has two auth surfaces:
- GitHub OAuth for MCP users.
- GitHub App installation auth for repositories.
MCP User Auth
Run:
shgittensory-mcp loginThe CLI starts GitHub Device Flow, asks you to approve the code on GitHub, then exchanges the GitHub token server-side for a short-lived Gittensory session token.
Gittensory stores:
- a hashed server-side session token
- the GitHub login and user id
- scopes and session expiry metadata
Gittensory does not store user PATs.
Non-Interactive Bootstrap
For local automation, pass a GitHub token only long enough to mint a Gittensory session:
shgittensory-mcp login --github-token "$(gh auth token)"The token is exchanged immediately. The MCP wrapper stores the Gittensory session token, not the GitHub token.
Check Auth State
shgittensory-mcp whoami -gittensory-mcp status -gittensory-mcp doctorLogout
shgittensory-mcp logoutLogout revokes the remote session when possible and removes the local config file.
Static Tokens
Static bearer tokens remain only for private backend operations, internal jobs, and temporary beta bootstrap. Normal MCP users should use GitHub OAuth.
`,21)])])}const u=i(h,[["render",n]]);export{c as __pageData,u as default}; diff --git a/docs/assets/guide_auth.md.DNA7JhY7.lean.js b/docs/assets/guide_auth.md.DNA7JhY7.lean.js deleted file mode 100644 index c1c621e628..0000000000 --- a/docs/assets/guide_auth.md.DNA7JhY7.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{c as i,S as t,j as a,m as e}from"./chunks/framework.BXgR76oC.js";const c=JSON.parse('{"title":"Auth","description":"","frontmatter":{},"headers":[],"relativePath":"guide/auth.md","filePath":"guide/auth.md","lastUpdated":1779780644000}'),h={name:"guide/auth.md"};function n(o,s,l,r,p,k){return t(),a("div",null,[...s[0]||(s[0]=[e("",21)])])}const u=i(h,[["render",n]]);export{c as __pageData,u as default}; diff --git a/docs/assets/guide_github-app-setup.md.ZPvLDsvt.js b/docs/assets/guide_github-app-setup.md.ZPvLDsvt.js deleted file mode 100644 index 83f8a94fd1..0000000000 --- a/docs/assets/guide_github-app-setup.md.ZPvLDsvt.js +++ /dev/null @@ -1,3 +0,0 @@ -import{c as t,S as i,j as s,m as a}from"./chunks/framework.BXgR76oC.js";const c=JSON.parse('{"title":"GitHub App Setup","description":"","frontmatter":{},"headers":[],"relativePath":"guide/github-app-setup.md","filePath":"guide/github-app-setup.md","lastUpdated":1779781690000}'),l={name:"guide/github-app-setup.md"};function r(d,e,n,h,o,p){return i(),s("div",null,[...e[0]||(e[0]=[a(`GitHub App Setup
The GitHub App is the maintainer/install surface. GitHub OAuth is the MCP user-auth surface.
Basic Fields
Use these values:
Field Value Homepage URL https://gittensory.aethereal.devWebhook URL \${GITTENSORY_API_URL}/v1/github/webhookWebhook active enabled SSL verification enabled Device Flow enabled
GITTENSORY_API_URLis the private API origin for the deployed backend. Do not use the GitHub Pages docs domain for webhooks; Pages only serves static docs.Use a generated webhook secret and set the same value in Cloudflare as
GITHUB_WEBHOOK_SECRET.Required Repository Permissions
Permission Access Why Metadata Read Required for repository identity and repository events. Checks Write Required to create and update the Gittensory check run. Pull requests Read Required for PR metadata, reviewability, and webhook events. Issues Read Required for issue linkage, issue-discovery context, and duplicate signals. Optional:
Permission Access Why Issues Write Only needed if public-safe sticky PR comments are enabled. Contents Read Only needed if a future feature reads repository files directly through the App. Required Events
Subscribe to:
- Pull request
- Issues
- Repository
If GitHub shows
Installation target, select it. Some installation-related events are not always shown as normal selectable event rows; Gittensory should not block health on event names that are hidden in the app UI.Install Or Repair
- Update the GitHub App permissions and events.
- Reinstall the app or approve the changed permissions.
- Select the repos Gittensory should inspect.
- Trigger installation-health refresh:
shcurl -X POST "$GITTENSORY_API_URL/v1/internal/jobs/refresh-installation-health/run" \\ - -H "Authorization: Bearer $INTERNAL_JOB_TOKEN"
- Check health:
shcurl "$GITTENSORY_API_URL/v1/readiness" \\ - -H "Authorization: Bearer $GITTENSORY_API_TOKEN"Healthy app installation state should remove the readiness warning about GitHub App installations needing attention.
Marketplace Readiness
Before Marketplace submission, add:
- public docs URL
- support contact
- privacy policy
- terms page if needed
- clear setup flow
- valid webhook and install diagnostics
Do not submit until the privacy, support, terms, install diagnostics, and public setup flow are complete.
`,25)])])}const k=t(l,[["render",r]]);export{c as __pageData,k as default}; diff --git a/docs/assets/guide_github-app-setup.md.ZPvLDsvt.lean.js b/docs/assets/guide_github-app-setup.md.ZPvLDsvt.lean.js deleted file mode 100644 index b93aaf36b6..0000000000 --- a/docs/assets/guide_github-app-setup.md.ZPvLDsvt.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{c as t,S as i,j as s,m as a}from"./chunks/framework.BXgR76oC.js";const c=JSON.parse('{"title":"GitHub App Setup","description":"","frontmatter":{},"headers":[],"relativePath":"guide/github-app-setup.md","filePath":"guide/github-app-setup.md","lastUpdated":1779781690000}'),l={name:"guide/github-app-setup.md"};function r(d,e,n,h,o,p){return i(),s("div",null,[...e[0]||(e[0]=[a("",25)])])}const k=t(l,[["render",r]]);export{c as __pageData,k as default}; diff --git a/docs/assets/guide_install.md.ByQAA8QU.js b/docs/assets/guide_install.md.ByQAA8QU.js deleted file mode 100644 index 8509126a98..0000000000 --- a/docs/assets/guide_install.md.ByQAA8QU.js +++ /dev/null @@ -1,11 +0,0 @@ -import{c as i,S as a,j as t,m as e}from"./chunks/framework.BXgR76oC.js";const c=JSON.parse('{"title":"Install","description":"","frontmatter":{},"headers":[],"relativePath":"guide/install.md","filePath":"guide/install.md","lastUpdated":1779781690000}'),l={name:"guide/install.md"};function n(h,s,p,r,k,o){return a(),t("div",null,[...s[0]||(s[0]=[e(`Install
Gittensory has two install paths: public npm for normal use, and local checkout for development.
Public npm
Use this for Codex, Claude Desktop, Cursor, or any other stdio MCP client:
shnpm install -g @jsonbored/gittensory-mcp -gittensory-mcp login -gittensory-mcp status -gittensory-mcp --stdioThe login command uses GitHub Device Flow and stores a short-lived Gittensory session token in your local config directory.
Local checkout
Use this when developing Gittensory itself:
shgit clone https://github.com/JSONbored/gittensory.git -cd gittensory -npm install -npm link --workspace @jsonbored/gittensory-mcp -gittensory-mcp login -gittensory-mcp --stdioVerify The Install
Run:
shgittensory-mcp doctor -gittensory-mcp whoami -gittensory-mcp analyze-branch --login YOUR_GITHUB_LOGIN --json
doctorchecks API health, auth state, source-upload defaults, local git metadata, and whether the binary is likely visible to MCP clients.Privacy Defaults
Gittensory MCP v1 sends structured metadata only:
- repository full name
- branch and base refs
- changed file paths and counts
- linked issue references
- commit messages
- validation command summaries
It does not upload source contents.
`,17)])])}const g=i(l,[["render",n]]);export{c as __pageData,g as default}; diff --git a/docs/assets/guide_install.md.ByQAA8QU.lean.js b/docs/assets/guide_install.md.ByQAA8QU.lean.js deleted file mode 100644 index 53f3940dad..0000000000 --- a/docs/assets/guide_install.md.ByQAA8QU.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{c as i,S as a,j as t,m as e}from"./chunks/framework.BXgR76oC.js";const c=JSON.parse('{"title":"Install","description":"","frontmatter":{},"headers":[],"relativePath":"guide/install.md","filePath":"guide/install.md","lastUpdated":1779781690000}'),l={name:"guide/install.md"};function n(h,s,p,r,k,o){return a(),t("div",null,[...s[0]||(s[0]=[e("",17)])])}const g=i(l,[["render",n]]);export{c as __pageData,g as default}; diff --git a/docs/assets/guide_maintainers.md.CGSokUpu.js b/docs/assets/guide_maintainers.md.CGSokUpu.js deleted file mode 100644 index c773eabd63..0000000000 --- a/docs/assets/guide_maintainers.md.CGSokUpu.js +++ /dev/null @@ -1 +0,0 @@ -import{c as i,S as a,j as t,m as n}from"./chunks/framework.BXgR76oC.js";const m=JSON.parse('{"title":"For Maintainers","description":"","frontmatter":{},"headers":[],"relativePath":"guide/maintainers.md","filePath":"guide/maintainers.md","lastUpdated":1779780644000}'),l={name:"guide/maintainers.md"};function o(r,e,s,c,d,p){return a(),t("div",null,[...e[0]||(e[0]=[n('GITTENSORY_UPLOAD_SOURCE=trueis rejected.For Maintainers
Gittensory is meant to make Gittensor-driven contribution flow less noisy.
GitHub App Surface
The GitHub App creates the detailed maintainer surface:
- Gittensory check runs on PRs
- reviewability context
- linked issue and duplicate signals
- contributor role context
- queue and repo-lane context
- optional public-safe sticky PR comments
The check run is the canonical detailed report. Public comments are opt-in and sanitized.
Reviewability Actions
Gittensory maps PRs to maintainer-friendly actions:
review_nowneeds_authorlikely_duplicateclose_or_redirectwatchmaintainer_laneThe point is not to shame contributors. The point is to identify the lowest-friction next step.
Public Comments
Public comments stay off by default.
When enabled, comments can include:
- contribution context
- PR hygiene
- duplicate or WIP risk
- maintainer review notes
- contributor next steps
Comments must not include raw trust scores, wallet data, hotkeys, public reward estimates, or public score optimization language.
Repo Owner Signals
Repo owners can use Gittensory to inspect:
',18)])])}const h=i(l,[["render",o]]);export{m as __pageData,h as default}; diff --git a/docs/assets/guide_maintainers.md.CGSokUpu.lean.js b/docs/assets/guide_maintainers.md.CGSokUpu.lean.js deleted file mode 100644 index 0dc7eccbcd..0000000000 --- a/docs/assets/guide_maintainers.md.CGSokUpu.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{c as i,S as a,j as t,m as n}from"./chunks/framework.BXgR76oC.js";const m=JSON.parse('{"title":"For Maintainers","description":"","frontmatter":{},"headers":[],"relativePath":"guide/maintainers.md","filePath":"guide/maintainers.md","lastUpdated":1779780644000}'),l={name:"guide/maintainers.md"};function o(r,e,s,c,d,p){return a(),t("div",null,[...e[0]||(e[0]=[n("",18)])])}const h=i(l,[["render",o]]);export{m as __pageData,h as default}; diff --git a/docs/assets/guide_mcp.md.DK8zvHnS.js b/docs/assets/guide_mcp.md.DK8zvHnS.js deleted file mode 100644 index 9856977d43..0000000000 --- a/docs/assets/guide_mcp.md.DK8zvHnS.js +++ /dev/null @@ -1,19 +0,0 @@ -import{c as i,S as a,j as e,m as t}from"./chunks/framework.BXgR76oC.js";const c=JSON.parse('{"title":"MCP","description":"","frontmatter":{},"headers":[],"relativePath":"guide/mcp.md","filePath":"guide/mcp.md","lastUpdated":1779780644000}'),n={name:"guide/mcp.md"};function l(h,s,p,r,o,k){return a(),e("div",null,[...s[0]||(s[0]=[t(`
- repo lane clarity
- label configuration
- maintainer cut readiness
- queue health
- contributor intake health
- GitHub App installation health
- stale or degraded backfill state
MCP
The MCP package is the contributor-facing surface for coding agents. It runs locally over stdio and calls the private Gittensory API with your Gittensory session token.
Generate Client Config
Print a config snippet:
shgittensory-mcp init-client --print codex -gittensory-mcp init-client --print claude -gittensory-mcp init-client --print cursorThese commands do not edit your files. Use an absolute command path if your client does not inherit your shell
PATH.Codex
toml[mcp_servers.gittensory] -command = "gittensory-mcp" -args = ["--stdio"]Claude Desktop
json{ - "mcpServers": { - "gittensory": { - "command": "gittensory-mcp", - "args": ["--stdio"] - } - } -}Cursor
json{ - "mcpServers": { - "gittensory": { - "command": "gittensory-mcp", - "args": ["--stdio"] - } - } -}Tools
The local wrapper exposes repo context, contributor decision packs, local branch preflight, score blockers, PR packets, variant comparison, and registry change tools.
Useful tools:
gittensory_local_statusgittensory_get_decision_packgittensory_explain_repo_decisiongittensory_preflight_current_branchgittensory_preview_current_branch_scoregittensory_rank_local_next_actionsgittensory_explain_local_blockersgittensory_prepare_pr_packetRuntime Rules
`,18)])])}const g=i(n,[["render",l]]);export{c as __pageData,g as default}; diff --git a/docs/assets/guide_mcp.md.DK8zvHnS.lean.js b/docs/assets/guide_mcp.md.DK8zvHnS.lean.js deleted file mode 100644 index 523cd30cf4..0000000000 --- a/docs/assets/guide_mcp.md.DK8zvHnS.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{c as i,S as a,j as e,m as t}from"./chunks/framework.BXgR76oC.js";const c=JSON.parse('{"title":"MCP","description":"","frontmatter":{},"headers":[],"relativePath":"guide/mcp.md","filePath":"guide/mcp.md","lastUpdated":1779780644000}'),n={name:"guide/mcp.md"};function l(h,s,p,r,o,k){return a(),e("div",null,[...s[0]||(s[0]=[t("",18)])])}const g=i(n,[["render",l]]);export{c as __pageData,g as default}; diff --git a/docs/assets/guide_miners.md.BeaGERAQ.js b/docs/assets/guide_miners.md.BeaGERAQ.js deleted file mode 100644 index 1c4e116314..0000000000 --- a/docs/assets/guide_miners.md.BeaGERAQ.js +++ /dev/null @@ -1,6 +0,0 @@ -import{c as s,S as e,j as a,m as l}from"./chunks/framework.BXgR76oC.js";const c=JSON.parse('{"title":"For Miners","description":"","frontmatter":{},"headers":[],"relativePath":"guide/miners.md","filePath":"guide/miners.md","lastUpdated":1779785713000}'),n={name:"guide/miners.md"};function t(r,i,h,p,o,k){return e(),a("div",null,[...i[0]||(i[0]=[l(`
- Stdio only for the local wrapper.
- No source upload in v1.
- Private score and reward/risk reasoning stay in MCP/API output.
- Public PR packets are sanitized and do not include wallet, hotkey, raw trust score, or public score estimates.
For Miners
Gittensory helps miners decide what to do next with evidence instead of guesswork.
What It Answers
- Is this repo a direct-PR lane, issue-discovery lane, split lane, inactive lane, or unknown lane?
- Am I in a normal contributor lane or a maintainer lane for this repo?
- Does my current branch look reviewable?
- What blocks scoreability right now?
- Should I clean up open PRs before opening more work?
- Is there duplicate or WIP collision risk?
- What public-safe PR packet should I give a maintainer?
Branch Analysis
Run from a Git repo:
shgittensory-mcp analyze-branch --login YOUR_GITHUB_LOGIN --jsonThe response includes:
- lane context
- role context
- preflight findings
- private score blockers
- current vs projected scoreability scenarios
- reward/risk reasoning
- base freshness warnings when the local diff may be inflated
- maintainer-fit notes
- public-safe PR packet
- ranked next actions
When the current score is blocked by temporary account/queue state, pass the assumptions explicitly:
shgittensory-mcp analyze-branch --login YOUR_GITHUB_LOGIN \\ - --pending-merged-prs 3 \\ - --expected-open-prs 0 \\ - --projected-credibility 0.8 \\ - --scenario-note "approved PRs expected to merge" \\ - --jsonGittensory labels that as a user-supplied scenario. It shows the current effective score, the underlying potential score, and what changes if the open-PR and credibility gates clear.
Preflight
shgittensory-mcp preflight --login YOUR_GITHUB_LOGIN --jsonUse this before opening a PR. It is especially useful when you need to know whether a branch is missing tests, missing a linked issue, colliding with active work, or likely to increase maintainer burden.
How This Helps
Gittensory does not promise payouts. It explains scoreability and risk:
- open PR pressure
- credibility assumptions
- lane eligibility
- issue-discovery vs direct PR fit
- duplicate clusters
- stale work
- review friction
That makes recommendations actionable: land or withdraw blocked work, avoid direct PRs in issue-discovery-only repos, improve validation evidence, or pick a repo where your history and the lane actually fit.
`,19)])])}const g=s(n,[["render",t]]);export{c as __pageData,g as default}; diff --git a/docs/assets/guide_miners.md.BeaGERAQ.lean.js b/docs/assets/guide_miners.md.BeaGERAQ.lean.js deleted file mode 100644 index 745cd93753..0000000000 --- a/docs/assets/guide_miners.md.BeaGERAQ.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{c as s,S as e,j as a,m as l}from"./chunks/framework.BXgR76oC.js";const c=JSON.parse('{"title":"For Miners","description":"","frontmatter":{},"headers":[],"relativePath":"guide/miners.md","filePath":"guide/miners.md","lastUpdated":1779785713000}'),n={name:"guide/miners.md"};function t(r,i,h,p,o,k){return e(),a("div",null,[...i[0]||(i[0]=[l("",19)])])}const g=s(n,[["render",t]]);export{c as __pageData,g as default}; diff --git a/docs/assets/index.md.BKalGx3J.js b/docs/assets/index.md.BKalGx3J.js deleted file mode 100644 index 8341947c92..0000000000 --- a/docs/assets/index.md.BKalGx3J.js +++ /dev/null @@ -1 +0,0 @@ -import{c as t,S as i,j as a,m as s}from"./chunks/framework.BXgR76oC.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Gittensory","text":"Private repo intelligence for Gittensor work.","tagline":"For Gittensor miners, maintainers, and agents: MCP preflight, scoreability projections, and GitHub App review packets. Still not a Gittensor frontend.","image":{"src":"/logo.svg","alt":"Gittensory signal mark"},"actions":[{"theme":"brand","text":"Install MCP","link":"/guide/install"},{"theme":"alt","text":"GitHub App Setup","link":"/guide/github-app-setup"}]},"features":[{"title":"Scoreability","details":"Current estimate, ungated potential, and near-term what-if scenarios."},{"title":"Queue Pressure","details":"Open PR gates, stale branches, duplicate risk, and cleanup-first actions."},{"title":"Role Context","details":"Contributor lane, maintainer lane, owner history, and repo-specific evidence."},{"title":"Reviewability","details":"Private maintainer packets plus public-safe PR guidance."},{"title":"Registry Signals","details":"Repo lanes, label multipliers, issue discovery, bounties, and config drift."},{"title":"MCP Native","details":"Codex, Claude, Cursor, and agents get structured JSON without code upload."}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1779793775000}'),n={name:"index.md"};function r(o,e,l,d,c,p){return i(),a("div",null,[...e[0]||(e[0]=[s('',1)])])}const v=t(n,[["render",r]]);export{g as __pageData,v as default}; diff --git a/docs/assets/index.md.BKalGx3J.lean.js b/docs/assets/index.md.BKalGx3J.lean.js deleted file mode 100644 index 45e610d265..0000000000 --- a/docs/assets/index.md.BKalGx3J.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{c as t,S as i,j as a,m as s}from"./chunks/framework.BXgR76oC.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Gittensory","text":"Private repo intelligence for Gittensor work.","tagline":"For Gittensor miners, maintainers, and agents: MCP preflight, scoreability projections, and GitHub App review packets. Still not a Gittensor frontend.","image":{"src":"/logo.svg","alt":"Gittensory signal mark"},"actions":[{"theme":"brand","text":"Install MCP","link":"/guide/install"},{"theme":"alt","text":"GitHub App Setup","link":"/guide/github-app-setup"}]},"features":[{"title":"Scoreability","details":"Current estimate, ungated potential, and near-term what-if scenarios."},{"title":"Queue Pressure","details":"Open PR gates, stale branches, duplicate risk, and cleanup-first actions."},{"title":"Role Context","details":"Contributor lane, maintainer lane, owner history, and repo-specific evidence."},{"title":"Reviewability","details":"Private maintainer packets plus public-safe PR guidance."},{"title":"Registry Signals","details":"Repo lanes, label multipliers, issue discovery, bounties, and config drift."},{"title":"MCP Native","details":"Codex, Claude, Cursor, and agents get structured JSON without code upload."}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1779793775000}'),n={name:"index.md"};function r(o,e,l,d,c,p){return i(),a("div",null,[...e[0]||(e[0]=[s("",1)])])}const v=t(n,[["render",r]]);export{g as __pageData,v as default}; diff --git a/docs/assets/inter-italic-cyrillic-ext._dlW9xFb.woff2 b/docs/assets/inter-italic-cyrillic-ext._dlW9xFb.woff2 deleted file mode 100644 index 27a82ed339b2e3701e7b40e9833c6f48a5445bff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43716 zcmV({K+?Z=Pew8T0RR910II|Q6951J0Uk5}0IE;`1OP$+00000000000000000000 z0000QhGH9;ejF-4NLE2oiab9}RzXsMC01 / MinersPick work with less guesswork.Score blockers, lane fit, stale base checks, and cleanup-first guidance.02 / MaintainersReview signal, not noise.Role-aware context, duplicate risk, validation evidence, and next action.03 / AgentsLocal branch context.Metadata-only MCP tools for Codex, Claude, Cursor, and automation.04 / PrivacyPrivate by default.No PAT storage, no source upload, no public score or wallet leakage.Not another Gittensor frontend.
Gittensory is the private signal layer behind better contributions: official miner context, registry lanes, queue pressure, scoreability projections, maintainer friction, and public-safe PR packets.
lanedirect_pr / issue_discovery / maintainerscorecurrent 0, potential visible, scenario gatedriskopen PR pressure, credibility, stale baseoutputprivate MCP JSON + sanitized PR packetASl|sXg8Cu> zHUcCAhI|WyKmY_F1&nkDAY0%OaX_3R8uI31I%SwVI$J0JZsw^c)6Ma6I|Sw5>*pAW zu$!EfpzQzugrstaiTz0xU_S&0Y9 -7H(hL)Jfgf z4g|ubdnOHv=!NVtQAH60D@{_H)eRT7biOx{5C&v*Jqi_fbuk1BJ3 F$9gCKbi<_v)1BxeSKT%2F^Mn2c7ekL1%WU#zI!`PfNGzx)jEPIL zaQ=-G(TZc~1Ih0`r~WBX@e>&$apr>Rn}sN-^!J;bI0M^8{v;Dq|8Y61ZA`&I^K)?nhRG5m<=RD8&M&|eD z$<2D7VL(7*X)%c@)zq!o>&XB~w%5z<^^(n9pBb=$b`${-1T3^BQWQZfrKDEVx qSJY|-rFCKi3n8cm@fHpEx_0xgJu#E;0It0T4+|r9ghtl5vC&EI54@lAc@Wip zpFIbp2^6VwMDHJA03DzsP$*MT1Sm{|0bvq*m`;!w%`$oz_MjKb_n+XxFag+{50)VSKahGH$AsRl aK{^0!aR-tUx$)Dn>2TM~#(3I%-NR+;_itd( zffzPGY7BtVxCxECO~|1EP5>d%2DQ|fltavNObu|Rrb#+9Alcj2IFO }r+m0wy|*o&){mdo?0@(2uk_p )|JE>>t11j#wI+LVElZcBN)$*e z2vvmvhw*rW1^)YAI{W9P^_v8~la#KID2+^MvUy|?s?9 nP zKx(ZWTNrBd1mgVIFaN7fl}JotTgWx&6Bh(x?=xTRx1nEu#w{(2A>?ln@x&7uWbhv1 zmX>S%5YGna)fHj&cZug?td(fiKA-!4=Gg-xm8+&mBaCxhQ6R*u7Q_pOjz|H6^>GeP zoWhR_2;*YnxRgAuqKz9E;}%xk?&1(<9Fi1=Bs0YQg7Gxj@vw-Vhq#L3xQcNM@d={i zQ^du~B*!0-u2& FR>l?rgT6-@e)f{yPZr{#E{R&vSp?`1Ne})O+PWzA^pLAKswPWIFDmvb&_c zD~h4E-R5P_zVdtk0RZUFgfH%NSSEexLSg8SH89#kQ1o5*=oEA$2vQuRua AgnKZn6mb&z$bp!bKj}KDMefc}qQ_?H5POraBe!iOHxkz5%x#HZF z*zY{O{3j1KbnV|>rERAV#K+aNWxsuZsj`(V{91T6nzT2+f>$0tz4>+kSBOA0KyQK9 zhBC122Ox(4;o3Qf;9?BG`{<6Z{F#66>Ui_em6!dx^vdSo@g0+Xs2lh6+?(O{+jKV{ zxjEq+rM;Js*(TqV4rSdNr0`}ldM^C-8_FFNZ_ju7jbQEE$XRO?=MSH+|78XMQXgy^ z{t#e2;x+{pKp)vEZQPLKoj~tzRSLizt|arooru*+z@1I&0z`v57$^rPD JiVmNa`(EGZ^C2?Ay1OeDDSNhi90hjYHa1a|bzd~B;virq;)^1enYxiXCIygB5 zz>b^7$*ZnX;+jsI=E<`4_+;aHHoSjpavw{;3~6xLN0(2S`>6@r?mrZ_F#9g#jgr0k zmepE-(+`F#{$?v$j^9i&kM{TdxBO*NaVfKOf#ME-u5lG$+FNX!wX?s0RqBv*U#3c9 z`|a#Cn;wi0b02HZQU|vBr+M>p!m%PV`bGG5+bV6wH}oL`tG0LPd+l$-+V*#0NiOrz zE!OAG{Mq&|<&CxmC&wb?Z53&L{FwIRJ!$pLR )=Y{(Ll8*y9?&13-zkexPvUVZ%i%Y-oLwLB^!;dQu-R%tNVYherhC6U2 zvvP-idij)l{h8ik_Xf7AI1TbLy0T?PwUmBYX|6aiu}AMR7Z3lnq|z3oWUZs3rh)S2 zM>Fl5k|aOF=qdI b@wmZ|-VvEJ01|{MsK|=NDmwlmH*p9&20qD} zH-OiM#yyR&+9c$!U%}n0p 3e)XU9OfhyXpigU8*voGaA~)Pa<;y)O4aF z|H!|7VVMR&fsus}NS{?oS>1t7Ckw5M{9qnz-KgpYLhsG^oOlCl8rPhS2O>S~oXuEm zUB@A^&;qZZ8~3yiuhKARa)|hvE2@^R7a1qtDhzK&OPGVh+I-PQ<~ltT($XdhU-32# z2-wA$hGUmT7}CpZAqLY-;1k0&4TJDkx 1`umA;7JMwV4GJ1b8gn)SwpbzGxw)WCRG!G_Ve$;mC9v zm8DiDG!2gCHkoCT_p}4hb_{sqV?s7N+w=~5e|gSfKyy+Un*@*Am+V)O8-Q|}Cs#dc zn~gW!$YWvUo5FALm;6ro^`Yl@_Nj8-Y9%VN-fHL91>PD?{h9Cu_tSs=(u-e$xBPpC z@dt!^nG+^4hkYkM6#Y-V%UJcA|1NXmo2coVv7c>bK0&X#&wkOm; eP`Z|(r&qG$d3&;G=+b&!wI`3Y%m3od@cqu+-TXpADe6Y+4+;_e@~#T)kL+?F0<&sZ)W3uvb=zlEI9U49Qaqj%VysJMBUXs2*m{aSLI zT(hCBeO2skQkWdSuyxhw_!Xx$#Hkzf=k%Fi^gn%ig&Ta}W7cW>LN@Y$?63c=ZL NJ+@$dez8oc-%imiYXPnXPJ z0ne-VbK0Tq{U6sEG`}1*XMvi}A71g|)@y-_7X0^lZ89Gm_ 4E@Vl>~l>4)V{#+%Ra zS)U(+H%*5WIYc*S#=5-_FKsMUHX`_9kA~HA>DCPz)*0&C#ym=%i+7#zD|H5LjQEuX zio1rr$`D@gt(Q?^WZ%bL=3+iRz2@7?rts;fo<=zn9{VL8VT&>8d+JNeyO{dViUm3Q z1NUie=j8A3*U$bd`NJi_kkLNw&QY4{gBYcgdK%u9LR+hU+dhMge=7$}J 7b4q%W*UbB8!whHEWcI} zTB2xkM3%0T=Q!Z^`hyIuM3Z0277(#oRA3?O!^1eKT}3k;C?&u?U2o}NzbYq6G7{}b zyysOVM2cS%UW^I;ll%mF0;;8QY$@UE4OIGy6Ef-A >}_2hT&i{D^lJ0*Q99B7x;lX(Z_Ri2~G&nardK!JVolArei@ZEl|#eu3pf4PRO zm}3C5JFe?LSlxSHBVbY^CiKZLfaB!>=7A62uC@s$aQxv+jetNu3n>J_0aLQ_$yOo} zn?R`sGMki3WDYvzZZek<(7E$0Ja@h$@dZgjbDwY)=2@UT62I%B4A8lYOXcDv>2sGh z#`v =TO1vRZc3D>EI&sl8^N0HDJ(?VI%tV%P`lJzrzX&dqg9n_Y?_4 z(Zwyv0>Rjz7SXgE*a{@Y;z@M#kn^h1LcwR9H6oNC5{e=c%~lzyeyvn$`5nYG=vOqX z1hUGIfE3F(fLS1{Fm@bH i4oxU$kmUP)Nd?2Pk zGlMRKbVgQ_>xKY>z+h4&dNf5q)CH5qWlZ^q@exwTz!J@rG>`3VQa!w|y-km3<_+{r zFPt~fJALr$_P*&CExQi%&j38KeP9Mfn@IzMBgQ%Lp#b?nMjiwFDfU0UV&o-&`YlgP zW22?x>rM!|AV}UMryF*E#}HC8Q^)g*=dT&Yy*zDsNk2H{QWr~*+Ucy6szycgwWdl_ zc0YoqQ^k!N8$c@cLDS(Ps2NqO9D%|RkR!IqMj9)nHsVKCvV<33@MXL7Y@(qAAr4C( zf7# 9-?E%Va{mOUCWVF zjx&c8D2yOpHf>CGk{+7`s+|mB?k8ImTzj5N%=PR7+Bm>PL*o`KTaZ-eS2Hma4N9Cb zy(_9#KDMraertddf)+pG*MC!z823;-IV8=?+0UWKu;pJi>FOBes0Qb8rU6YD9HmFs z3{4Ee`%pW+Q3~`si#cAVc0_XV_2%n0kspxl&&-X+=nvIoQJ#$x@GQZ9QL~n@R(I{i z(?{RPF0|$aRvD~_#$BPRRQlp#QL0m*v3{N9l}6Lf^4w071 >+V@u`LT9h_Q32OjtxL9;#9UmA- z(C@9}M(jLZudF{|t#iq}J=q16v@%U`7g%MiPl+q(S7El;I!_V;s+ztjT{r*RmWs!% zBNCV< }>+`R`#-3*fRp+)wo6Z)Xgr|Uie!N1WkVMx13R=5pvV3M P+dQ6TVHsD}8Ex;D?R749rs#E%YzTIKvIFU7<{ZCx6V?8)GhaPl!?sZ-mier4=Yr zYZneo4K{67WTFnTmoY;;jfIma{zoHK6B}lTGZ8e6I`(*L_43cS9wzEEKV*C@7Ukr4 zN$C?XLuyHwOqLy0t(x%<;X^ff(P=g^tPqc9audu)Z7R}De?<>i7xPIixn49XFmj-B zm}3GwKAa|AfzxQPYu(5 tjS|u5{qZ#t7?IoLD+%vX8&4 zncJ!5$+U)rbXTpM{MG9uA;t&`iryzY6k;w8&{r$};rccNW=YK|6=wFU0_K}o!8nIC zE!I^*fCuFQ-s5<)rseS!6F^rcn>6DzENmU^Kzd&*D2Q1ade$_`$< Jb_jbARGa?21l(WznGY0kuz#Hx}5?H9lq3+<;z;{)Z_6t_~b?tv`|%!1|Z 3I6O)g$tQ<1QQ_0^ zGgdfQV%s?1sCTfG- hIs0pKnr^glyYMq+ z5|eMh#*B{WAcH}gSJ{Bo{ROCS1LVU6FdSOzHn^2$`d50>3OsbYrQA-}z*{@dSlH>L zp1XC@o?H!)?JmsSeZ2gSjKVt~72X&6{+OlTDw0Nn)Ig B5YwTiVyz{2b`Mk9PrPT-QHv?oS6tX>A zi b+{&0AkTIvHj2w^GRC@Bd7T01zN1 `J?jP7Aa6_!1JLyQzP2*2P3KCq1rt-P*JEJEbxv6VE85N)Sz!)|^OYpDK-0+Pn zx*Z=NMOH(sljh ##$$LJ?~lUGy=oT%HYq5CfB$N*atcvi(YmHoXmsR*IE%l$ z%`9%d_>UC{%gV1FM$7+<0RSr>S0xiOc_HrgTbQXq(%Xyc>@M(v1>eQo;@ma%Znb5} z^slx?(Bb_#Q5QL;1Bb+l=(e($c|g3nf#@ct#7Zs0Tkcf!Ungli*1}kur3<3ATb9Q% z#2DflPAHo@SaCTIm;tRTpTtaFihcUlG-D|K%k>8)ukAmxYapYs`t|EpAcyA30Vntv zYUtyG8 $uypD14nHodU(S) zp{Y%^R>MD}hNoj!PW&bL 2wkSEE 1`CsZaJ4CuQ#=Sa;7<_z2M~e8M!-?hlzzWEui5w6w6ZwVd zADfuw;e#_SaZLL6>;rgMoW|oV^i>6kf$JpopJo`VyBWZ=8jlfRM1_yyc86H2YL}an z{CZpBGof{5V$b=~$ZN7%WbO7FUn=)zVJ2yko$<-7;3Tlys ze2X=y0C-fe=im~m9~70|u$ F&Uh-B>*0v~;M3WBWA_dg! znoyA~k@Wlr6(qa1=WJqW*-R>N7@n1a036Yc#p{Lho150MS!bW@N>_c!`i U{uI zxBi$Q^Wx*O_#XqO?&h~9v{+}8g2WnzeYi-|kc06UH|_u}d(ia=CBda$7?bYBHB9vI zkFu3}8b@S^tKzz>0l99|Ixp+&Qyr8IuUNmGSJ8~m!4G%mk0OObeAbNpYC^ngZAmnj zH%YdRowWC@(dY#%gA1EZ@-ojnE#gZ_qBF9mHkvh W3~M3F4V|4mx34E+i=-9dF>;@0M%Z0Q`2ar%ks zsNe19m6E!g;z$qLB@r{B-kROZ$Q*H5rBoJ=RdIT#>_O)>hD jH=tXiH1F5aN=%FWRc9C8vl)b?$Mt!C+7dlmd>@VRQ)8__V>SF6EMc zrP-ZhR$g8Is~dS1*C@CCrJW&EF8LK09(8|wlr!BhbB9y?*zl-p!D4mIPXOUbAnM}h z<307mn8}MWE{awQdB3jnIZ8W1J?P9Gc$dY?uBT4tbW}HAGV0*{zXM1Kf%Rq^@uU3S z(UQJqZG282dHuE9z|$=+uLIRfva5lAG^p|GD43hQ7ItRv>-)NXJ$VaoV$fjT=-9%; z^_bx=!u^riAkS!c Ao+dxx}Di=%TQ)syPp`KL!8mW z)Nvnl!I>tjaMI?He_yX6pJ}=H6VY-Y?g`lD?zzlJxuTgOp8b<}M#S^0Z}w-DzbMNL zGFZ;=dPm%CgN+NgbWHYMDm(Wd&8~Bs{FzpRngdbj5XD1DANIr(|_HEj^ds<_%a? z{eORUEP78Evj&n1apR?B0rVjt10h}wYAh$t1A^5JM9+LiY=uQc-J81UO$MumYw>Cy ztgDM?v5>~l^085?IB~=LLYXouR8Y&pWZX;hmk(3ISMDvLC+9Jf0PVeY-E$&=KnpK9 z@BSi_Va6xEd_K^=<5XSJYgHd=Xs7CMpCy~>;QaIyULM?&qZRs4{^?C(5-6dZ;1f$<4 zAnRwrfY5g2s`_$XGVTp_-!{~hQ)*e=$3E?$xEP;9kL9A}Z~FDRJYG!7S{mNVW;PnG z8m^Kyf1sf@rpc-xjwUh*U$^lZ4lYz)4|Sh#J)jw-p;IF(3APxy-C)fqdK##d9Q(94 z-NooEdMp 1-$06)HB4ED+nkYKCryIdVc%fH%_etF6 z^&eY9rsqd*fQ8s|w=ofXV?6~qPc?ddZtGoS@qCjf7q3U^b#udGvtZ39_kU^Cn$no} z%K+X;Dq6ll{pM28a{2P9w$Pd9VxaG-HT0mHT{F6s7IW)+_{}(S>pIem?s3!Xc2e~1 z@9FHGe*6m1%gfypnpUZqvXojBy)}?;A4U>`?Zqr%1X32kY+-5&8pc#|QsTA*FuM |VZG5CuV8I0C*{iYSBftlbP`yV0wT=tA?c2x44XwFQ z-HPF8xutWsg(nlgAJfSF@UbA+g8HMS9q~=L!@RGfk`f>yzMyDt;K2`G7&*r*l%e>H z I~%;m#&Dh`*I6|sub3I{pEo{4D($H18E*1kx *}|oCR+Vvb3l$n?G+s zF~G>ziw!H_)s!ZyHCg>aR5qC&I1J;$I3?pJX*D-1d{gR=mdv?r*&q?@;^lAx5h0tM z_w6?7GvgyMemg_nS3H9&q5GHmvCQ};>#X>|e09^DW0V>3YpTA7U`)(D0?*OP!yT38 z3*710SQno#uL(z!@JvxnOt%%O_d;9Z#;bcVvoor{OR?WD^r#x(6M!0yOK*#zcENej zAg+=d5Emy6h^vH>(a19Txi<>)_(S6Gv$87Pwt@RkD(Xx^My&pQSXyO(9-!#RQeuiU zI2eQ2(i6qhK@IEl19$$)y{7D_C$xwfCo&-SvRa@+y$a@E?Plm6`OrXDxi*j8H>>)m zv==p!HzDS(YULrT{FWzK^$Dk3hv^N&S_L4%v~X)saG)TNSPZhkvb_2W+2QDC42?0b zEYxRRLx@2=l8|{k7;T>ul=lHOge L(Wo9l5+(h? =j!}lRYZ*yaFA^Jt#g2DYySk+C-x$z6| zEM)oEzCvRR1yX0)bwkOBlF`+VIe-&Ue}htZKvQ}gi3s49;S;wGdFK{G{9vn1Lu+C~ zr(U<>5T*z_Db;PV$NG)KZt>~oq~*x6{!<@?fX3|o3v%-_eDls5=4S!t$M1`xM3DLa zW@`)0fsC%Jx~ &b!W zF6HA?Mc;Fp!Gu*`gDe-8By)R8LOSuKI3-l-XgHnL?JJkbMeNQHi|~-hg& 2va!ZK3!x^CAd!!?7Wq)i{FlSMRJNMq>v`cX$VSc)3w z=S#0d1Zx^gf@It)^H&d&!&lZsM* 8v*Oo=wHb_az%U{_C0(aXT)M&gTa4$R%;FF`<)_Ue)X77t` z1vl!nVuyFms!yIyeMx)$v-+9#nMKq4wjeZ*_z-@4y&BG4$s?2{F?5r|%oKjpn#Gw? zpvSu#3+TPW?uBVP{fOKBqF0d_c}CIZlXKKNPp47ZCVMX1-8Qo*^S60UZX;TLV7$MY zWa38e jo4r zI4$@HqIa#(A|$}>E?4#{C)KkGl#HzZx3t$fq1G?82;@Rkw$$~tAv!O%&0d)80Qtf) z?+G!$zX5F-1W%e+(czcet^Vi%$?4hkbND~%Vbg!Fxp>GI_zT{3qR2@gdrdVpy`;;J zTz-3V|09eXGZp*f$AYr-X}{WH %ZVU(XMHFMs5?+Z5J%d4W5-ZJ<9;bn^a;( zbJ3&HJHE7qZP|rG=R0H7u1sNfO{xB_>?_)zLLFA+E#O^JS+0?c365YHS&k@oI$V{( z3KZL?B)2RWa9T&slYuOa4unJGAoTO$Ov}&QFnmzphD-ecJUlYSKBf#G!1l4Xl!~Oa z6nA;Zz;Gmb909aaH-T-WCc^-3C-snb;5B;v- 8ji;vs-mA?zeefmxcZgTsj z-%w-k(PMzIZX2R7bF_ie `Kq?498M;l_=4H7IWapz5^5ax^HHN67|m6ACt6NJ z4O^~?C06NIVTW*oJ+ya&2VgoX=m`m|f~2~DysDXyoJd|}Jje{ 8is@mn-3Euk!ifZ!NJr(ialx= U87D@CvG+vJilkM-!4)=?;OoS)0Kk4gBuTyv+{@r(Y^PZ8x^Bu9O zmnSjPyVQQm`igBvba8F&62TZ}3l@=O$O@-b+6q8whoySPrq_@w)L--5f3HdFhS{`= zEw53_+Vl!~mD=>%klp58>eI9`z{LJ6fQZ$ZOa?6zEDAGhT-?hHy#*k9`Ceo(JnVv0 zFL#$nnt?b|s>x(9DP{|je|tDLn>vWTBK)TGY=}KK+0WHws4$pZHQ6*aEj#4JDPVZy z={)|L54KljGF8hwUX3U-(#^#SWFP_wV!>OKfpK@q3AYnN#VY<&XR@z|3(>f`5dcdt zcklp-USY!BnZ$yG`&>gvQ!ydB%|AROHwL?GgbXceh|~S=IlrdCITB5MEg<~tWR~yZ zaPy%^a7Ij!c5~NkT3AFtmz9_XU@{{UMA<>}ccyUOKETm@$dXiNT40xF>MhRZA+k7) z4jphO8@6eY-FDMdTR?G5yZQ`5x`uAG6ahTh-Lq#xf?`F8)? 33ie78q<~lUya&wf!>87zS=2cxEjz7fe!UlQof6A#KgZLKc4dxsBNh^8u2-RA z7f6H)>hkNy!n1KsEU;fwEYlD*_>r)2&nPo+DzHqREgQ?00TBNV{{XZccmD|heyVfe z{{9v7W3~S<@VTLmYti3 QSH6_>y2@3fo?KY< z!RPf~ >&Q` z#b?o-VF3zBPq=gkl1DGLSK}?7ywEfbXg;wh5-oLeh!U%dSv9<5?mX>wKx6zBvPW7- z6=}JlgUUH&7|82gX~(mc`bQScCmUI!n{hb10l+M<1 sQd`a~)??`RjVR8Rf@x^N&mu+r24Pf-*#nH0> zjXRKy4~JT$?bV!*Ym=9N`}bU75{Pn^+V(=J$;Hg;9dI?P=_>SXi>j8o@+9XRYh Ix6>j(cis{Hq^=g$3p37k2cja~jf-wOcP836Q7;}@@l zAE_Xo)b0YG3YllH=ZXW(+xZmvv~R|ETL5-#rr6kQ6u2J;X}%U`BuN(?Xs4|5-CW^U zype@3xHIr({*pds$zw1$D0yOfGY)4dDdj`~^qm^cB6L;dJ*$R)PvU-tY@S^D=J4;8 z-`%XB5kJR}qC1y^4*~2C2VU*{cBW+cS@#76cQnK<&)iRI)JC`Bff^?Lz(; oyeF+y%e@tYVnc&J;>KPihHXb11jsRg#()cnIj5A@R* zU6}LW*d#mrx#HkHr~_@pBM)p8?;^Lgb*{(eLjkNX#H#=}LyYXu)WX;6E(37nwi zrgcT@B?69cL&PG@kby`#vQoQA$4lq2?nYfx-9TNYZjJ7Q?mfL~y^DHpQ5mQP)Lk?Q z{Y8_DsmFR_C-lwrgY@b8j|}n+^9^?x?l%rF* y-~++Rf{!8a5T}roP_HoOu-LGiu-5R(h^j~n z;znM@;uA9vvk-H&^kXbM)-g6RHZ!&{b~^U# Kc9!;B0 zU?=QOA|)M8dRRe8Zb?3xVv%Z?x-Io%8sAyrf9#8|Uo3vvG)oA4=Bt9Qp7rB_>Qd-= z01*KE{ry~n1RaoZCD?}o070~12h{&{g@EK_;Gr;!6FMCBb8A$-BmuADczO>*7*Epx zKe162Pw&)9v(KwG71z%xBFc6>uU#1e3dMq0ffMjkj5E@(1rM{I!=`+5_QU7U$mK&3 z4_DjGx20s4P$0>R#cL5fiMLNBQ4s4uFr%2CE=}_DY!FC?Tpm~cpRgZU(r(a^+BY6M zR?t$8Rwn~+;md v>|nDpD<^;8qe zNog-4EETyq$qFJ_t(VL?1g&4lw#XljzBzk;e)o2C@YzQvKYb1!on$STD5IUTSgE9+ zTl|2kzz@+`E<}I(y(o)qARwjr#+)p_BfQbUN0X56sYaP>WP0BP7zxRl(1J&E0hiKR zfGC #09{555c8opeWge@ }ien-nK1P=(c~z%-|3pZ;;GLHgr}E9bl)NyH*< z+>)VBLA@?uC**yFpzAb;9vyMp$c&FPf*fMMQ7R+j=@6`R?9>u2csaw9O`Uf}tu+LZ zP+m0Ii>mSm+vAS0v8?&45;`SK!@&*N6_Lmn7DlLnUiUI%d3UhgBkt g%CQHuLX=Z+ IgRcgrNUU 1oY4Hdfx0y{NkF%W3=J6vv0Aj%nDL?IHpvDn(;wzaeb+M;y=Uw0c(O(o;fk{lX7 z1l@^>rc7$)7cIksKNAj71$Xq()Y9ZqtG=mmfnWE0s(P{GaBYUeFbW;~_;L}9aV`F^ z(v0h#rq#+&T$BYxRftJ3$G0*^r4UcST)NOe0|zwFti?Z{Jj;5OJg99&_p8C_H6@`` zmaW<62ZIgf6=mD_smjm@SX>_x?+xuueLKa>&n+KxFC|e@W^8UIp{{dv*rDz>eT#pa zcg@9wHhL@lVt0#;%l$C0YMp2q#@P7^LZMk_w7Kj?cd8FW=+(D+SItBB8K(N;;e3hy z`lXm1Twx#S9oQkofxXxXA}3Hm1v6Bms^xTHoMo=-ZGwRx)o9G65GKY=KdKeXzBlyN z#y2*?jZ?9Kv9q)5(Yrl9G^OpeqMz<~LSR1}f$m{NRxA~AUpp2rR}_gcKb04tw-*tf z8#N2p)b8jnoBB9^rX46D@;s|c$pM+j#6)Bw)6zZCrU%HAVV1cbjnjnYObS#sCK0 zp%RCL8Kar6%`R4_MQC+ye)kf2{SUV1j9(abi+-j;CX+Sw^qo%9OXo#6xbd<+G<;U8 zF)yRT*;|(zKU&^;KnEa2LVi>eTPi#F{LwxgQ(~~P?_g?WVZs}x)5P~E=8MH4SqLOR zM+pnoh%w8lA3I&lm3w)ATNL%+jarR4=OnV{9_g5N7<-DBE9s*tL4r7JX;Q8!w}4$C zOgNuZ5jGnT6X^yRkHx_}KjwJ}=_c?O_u$5@bRMjbZi3#uW1u{N4kjc)2VGV)(D`z^ z*kN8aJ!kTt z_ogTX{X*I8LLmqx z6M-5Gf>6Wu-9fyIG!0`_5uqeVd7!DlXfa~L%nr3)qYVZRD(7GK3}JC9`BB$N1IQ)O z`pPak!dBpsP&izVOJo0W?g 2RZ6Foda>idLpl=QU4JJ{0Qbj^xEwCumOZuu5 zYXe4Jxe=biZ^Dv9f_X0oR1CAQA5UNwX8Cwe; lxA4zO)v#4ewFgyos)C!XaUIm6YIHpVJU@2t0m@EiljXi6q z$@cAdU^RVQyvHCf<3a}=%WhuqMP)b0Gf%BA5fm@I@yShrOnuPW%1Ch%r9J#!`asN2 z{XI1YH+U|#Hm4l^O3Wg{=u%af-t5gM8uPNHpFb_MW^sgWRuPD6LZmOtww9b4%(yj* zV8`~f`I|*CFS0Z$ha?{!P7>ADzhpwrM nmxKWtua-(ixrH8fZiwmSFQ*pDH^f@PVoM%+3kP9(j#8YxS^geh! zqy!;EfML2L7B3P_o5kx^g57S{VvIK;! fjp@>-ry<*eAMhRIU|fH(-ejm&m G&EQB> zGCZoYg^n6QXDwd3EVPlv+#u{i1y4C(G^O0iR<`Tj>m~)?KGoU%>J3`;>*1i)K+T|m z&s3v6O1s}6_4@qE M zEpXg zHJKL~#UxV&XJi;PXk;=GX*Wd;93k*f!75>TN;e3-WFTA>2E|uZflF5!kP1Zu5bBp< zF4m$9laGay?V=6oJrG3Uv2Yfwe`L$TV~HJkW9AV#9&2*trS~3?<*~->SMYN)^jK^^ zo##@fJ`hCVF<`-4Y9QH (=VRCx7#ns6$q`4jQ;nN3uO0|j7Kt>{8Jqaik*1l=EI^C{-)Ixo=W7K zRCc{Bl4^z9OZ{>M{dXSEcl{-?phqQDLg(&YED$QI+V-JRP4C}lko53{u<>I`MJ;Sj z6Gsl&<7y4ai*@2Q?yOj#6t43r`$m#SuFGT6(Q~0%VYROMYm#PH^)R|M6kt(|wl=H8 zE9GnT2qdMtnw6DWzrL=SrlU3K|ITV=A>WOi5Ah3`9mV1K-Lme0(fpKJ*!bpsB4a9o z{sH2t8aw2WLkBtJb!H-`^llHMxYk|)Yzh(T(~gMa*L~=>)Z}D?{|o;VZEMkS4a{FB z|9eN1L`D5w2Omfn>y37P&dNPHde5=)JH$am $cb#LholOM zg bm!KppGZ$l5lU*BlB~d&nIV0WNZE1PkyulC> zF^SKG8fDvp*Jl{{)VlnrzVlYI$>nPI1w87UdU+mUbIUvdp(M?9EOr{RCL2(a=-*e= z66WT-syeq@Q &Wp3#n~Kn3#*xv+|kA!Huzz)u#jNFFL<$_N7s#G86Eu@AyJy? z;N+zFxz5yl&KarEprN_lN0^dCr7x#A+nXNJYNb4Kdk6ja<{8GL1$n|YB4$6>tfbuh zJh2KJ7D`Iv+p-pwnDAa!O2Fp2WC4?F*cd|$*C4FHBz}wVk?0UoFQKtoNshFQ9MZ9| zP2Y4}Ra7YB!E2`|9gVbcmC%YS#VNB0x+M`BF^S9bM`d}Kk7NmrB_%mh9P^$W(Ofr( z&!3DB!(UgS4ltYYJ?WkZ(W!8+L_=(0aU}$qI6DCQQ!FZq(v|s~+6xd+XM6c6E zn~|SLfdmnL;DZa2z$^*2>E5t&DPdsFVDr|@^hcH2x!WC+Z@_!}&wZ(`0$erZ8(B9< z{dne7JSX3TgpT#cai7nrjXf0-qPko+bK)?AbTicxlTuC$GDAwCBr&sw_6&>3eWY~C zviV>$U(0umg{}hfL f1kabPvo4n&eT_qk+n}`zheX8@U2Fo_?*$h)j z>!)|3>9{RVd}1oJ)so?X5$~o k=9MDoBj0TtymD13 z%P7yY1lBJ%oKq@dyNwfc$U>jZGz3iOD Y5L$zX! zG`FN5fm#}b|C3IDLy`h$q%06vSiDGA mPxF)c(z#i zmPvqxV2p1_Dh3* $E!{Ii7hC>q%KH5SXd+kpa|0>4nHI+BvN!#(vdA{o ze>iH|$RW`S=PN5$D|mVg>xDngHSTPz11 z6?$8s9YLn9)4OMW-FFur>Kc}Lu^)62>BinYX-Zt~TK*#C;gsA D#%|0;)?_00(U9xo#pIiI4S7?h>*uxXo z)g@7LO@-t7VLpi4XNPVw6)})gM -vrql)co^Tss}r6T zo%1%v>GpWrJc8`trqEo}t>B#fbDjfMvsd~jHk1+wY-DzbCQ8ffYY7Y)A0Z)Hx0XCJ zL>(0S@ ~t~pft~Pms^=}&?{80okjhdNMpg@Kh&1i> z%6^`Pe$dxw3rNL;n7cHmC1v?UX)QZLzfO}*qNr0IZgY(6OKDt2thYwKSoxMofOU>V zw5TQ^k=iBA9L^Ax)OAtF9b;!`kb&XA3;Oc<=8hyOjTY~Ngyd7FQ763f@@u%R?(~!< z=|;Bex_ncfvV6C@^cHnzrEF0>BWCy8qQYx<+gN*QoC_1qsiL7(x?lxFEJ{2)va9xt zqg!jwS@|UE-L-MmR*7a3(|FI?koV+MyPa|#_&oeO)`w9p*$h&AF0rlJkF7C ^c7DR)ipt){GIp&=NC){N)R%DdI2z<+WOkz3ar zuun4CD7lekGn!)Ot -3^ 6>PX%`=ZHOJzx2vwl=ZHrYe5;X?Sz-!<@=(p0}Q)^(=^>|42i$UHyNt& z#-`7A!4&2GorO7~tC^V&;W4?F(H=>!tIIZUM+VV4+B{{O(Ul7)<|N$BVdLO*XT6Mt z1WWj~l}~4>c+Z{q{YfwOVk#4^o5ZWa>+=cpBUE`NG0yL8&1{=E)Z=FAcXc6?2!#xV zWQ9DmR9!b6*QZojHb@XM%m@4VK&?UHwiM2>> CjkRvw( zmKEfsrR#?JT@HA(z3wg&)~r^GiR3n`inr+Uq0&=ku{azSjSydT`<9hFIvvQD+NLWG zx>ocQ{P=R--w26wY5PiELi9%Z%*2KSe!5!@{o|~@5m}HP;qy`h?3KoV4!jx$0mPTY z)uW)-FEbtPl@wJL3#!tL^KFp^C`RU(rS{o p(onO`dMyTvw9#rtBwqFs9gM8Z#~hGyx&3NA^>V}Q9}7)}?!nE^+$V1j zqLrv?kX)(T;G^Nx-?Lkw0ReCveB&(HQ3F|ip)25%bUxJKZlYUzl}LPQmRAbNAN9Qs zr(+XECz`R<-xPLtS^f-1=B7nNQ3X_tx8cLt#$_jNZLs1Kfc@y%qj&O%d%|~GMAln$ zP-L4IaT;6ol{q-|pPZ&44r`We_Kd(!o)N>g4qhCWsYSb(fU*T0w?-a?0YY%5h#D{s zC;VX6^20jy-$6zVbAKsG`EKvJ9FI~^DqqX8%?R}Qll*T18~e`n7=`!NUC=zOd}7Vr zIL#rClkVi?^l-gcd!44%X6@nCM&iWss$!K--!+(ef-d}AvyW$pt^nj>|;*%lXkdSPu`m}oX9gPTgw^b-M4J0Z_>8Q zXINv-JoP4aQZC9+$XD2#x N`OE2#-&3TrW`uNUtwKNqPg`2`rVWD@G$ln7AK1h%@!T|Oy zpPjo+q6To_rR}G5ot~?pBX57!NMjFw^Z@U8Rl7ndA(Rr_v#}#Jsg{0uL(cPmu1;gJ zvg{-sFjj!Eg)W8Q6Z*&g_>jqAq8ZGPz{Bj^RZQY5O|ix|=6y1MxK9 2eW#URn1_1Bq5;lg9HS*}6` 5cgwb?`V*^Ea7qc-N`%#Tq{vKnr891sX2a~~_c6~|hNJG?*wRbri znX1_4QCJvKW`b#r%|KC>f;rT81)|C72J}0mOrCFG^&yG!#7t-0!YZNpeVB@U@ z%hYPOR`o<_Co;x;9b6V0;g#%JpJOi<21J7^C$^usUw$-m!1Ecqn5!Itb)u46tUQb} z98z5r>OVz$cR43NJ!R%7KV>wwisQ1Q8ywfea$puaMpsfV*Ir8K8&EYoTzIy^bytax zm4qEH)7@PpnJ93OgM5rfHli-wr(x9i@9}T^#l #VoYM@F+f@loS vX4TNrm{2Cg5$fq_me zlWPyz81FPYWg^kg6VQ^V@|6^Og8m9#-zYZkpl^P0hW$h6Cdb_RpC810v#qsuv|k`L z&d1$!$Os)>pq>~^SBKkyUJ}?-!Zy2_Bx=K@do-*taa?YVBKVsRv)TH3sb{_Z00+~j zZ1G92t2C|iYq5jNvWefS6c=f<4=Ca>?GPct&kHHW zxp@5JoNEu~7V$IevHNCeoop<+d7V+T{`>$DE^~=dO6# 1V9(PrL+%6v9Nit5wBT*o~1)mVVx `1t>&`~5D$vKCNP}`b;i<~_c0CdNjgKoI!Yo1q3%nA EP;Z0dC5c*dydlQY zbJ=fT+SlIIGd71Yb8vRF#ZQln9($wGGy4jQwiz3<0Zx7=U4H)m1U7bFnp!`*uY;@h zpIxs94nVX{vP=?g6LS92m4%^^SprZeC@fFY_;N|W)6XXkRa6{m=1glW4zzV~lg^&0 z#VYmP*RjDA1bcmV{Zv`|gi }a!Xi?<~`#DyvnxpG8 #``Sf8_TDddzi;{)9@&S>ox3MgQO1d5s5 zCyAgjlw9?bl1NJLr8kqi()S(b$;pWhV(?e_di?YJhu)V~*%GeKk`I#EI4eaW{V{H* z(I(HC?lwh;vx%fAp2 $JC9hvBo&|3z~m-P*vY7;XxUIehEF z#Efs;y`$5uvh@}1(?jpJ;iE}9boi7%q?G|*{ vh3*J+YDRQTK&u8P=>%vk^4RO8w`AhF93^8K*R9uh5Tte7R?d~mJj<9 zypY2P7v#`&K%Y-AvV0rbYZ<}7Z6W0Ieo46JA{y$MhFS-Rte*vhxJ-L#e#I6NbdN`O zO9MQA&s@<)i}DsM *r-WpisBZ7r $;zvS|Ki{cncm;GYmcVZ=lYw65%d;7o0TlYDujxYbXDGkUIy%TKu~ zw~Rft<~E;)u`(d8NMIsb5ha3&qsDJdX@kObBcP2V$l`|%1nh9Y@?DE7wC@FB*!+>l zIKh;XC@KUE_}g$l0Ow4SIi!oh&PQDGASi}#In(A4c!6pO>Gh4Bqi%OPIglkjYQlZ2 zy?^l5!i5ItHfiZ!Khq_>=F81J)LJ`Jp3UHT(> $j)QMwIRPX(d#{9!%IgKkj =KV6v@}dOeCXMJzT9d$NBi0J0buWi&D6m^@xm+e!D->@>Booui%~eZ9 zg0pG~bw;UD1CPJcS?AciShKXEz>Rb;V2aWk>P2fs7X)Yt9N&>O9a3lDt>zn0k`y7- z()>83;i%^22uJ_!+W%xIpES({g1yl-FcoS0Wph0@xfQ;xbzZ_t_POW!{S9tv|MuzT z9ii#)V~ohUigPV>fKlW@G@-mNXnb3pz?es9Diy~bZcDp|&
zFK1~UkgW dkPq*arlO>3~Tn zM>=v(T5}xwf#diwCXke?C1GTc*$BHH1s+M @NEDT&_hPCdh5=TjzyNDjazi_4 z>pIWrM%yq f5#?S^Ig|y4C(_?v9) EZx*tAMAyDf)T>jaC|XU=J7A!LCO4 zZkAb+#4*y7u%T)ANt%>tN(g8b+gDz>vJwX_>x{Ra0V2jhW*luLyO>v%@={%of1M)9 z41YNHOB -SnH`FPyRPf9%STZdG#g7qDw(R9eOd{2 zwYjcgl;OJJgQTFLTJ3~w%2Anbia+@|DFCD(1=&bJN>TMu)XVnhQd)G&x{Dno-GR!x zY3PHf>=Bu<)`giJWef2dB5alQ3**l6afiEqxbVi{!SV<3FU!h}tTECPU`%!c$rifp za<@-CM%DMA^1iIAtmAnG&QH!J fDyHb9p%dC@hQxeq!y~BdqWf=AkvtVzGLbblBcn3o z#4;098 ;-SUV>>S%IpDMD(Iu!$V3d1xdGS=36o*txGC5Kaoqy zo;SZxSzHx7xBccSDd$lc2mkNw3fU&bShgCkPM~F{J2#h~n+5u;Wh-2UG1`6SH~l{^ zQ&f`^$2Z`xJ)Sj=@Y(*jo*m`Hq^}7`{h!d@I^5XJHXuDrh*oOaYHn5Wm%x^aY^__m zRh?g^prm2N(Wc-ZG&+ldJ~umsZbp?ndxNc*!Yva+W^ L;fVl0}PO%{VG!f7_4jtzB@pL06wHfJ~( ziZP%>9c(9Jtz=9`+B4Nql*?1OgjNV%L45rhjxBT&V;)ntJ3o(nx2dC;yNii24#9Sm zk0>82<0yC%oK@6m)A2BbYgb*Z<5j{Hgc9YfP=-g|HW$VSX?i5-Sa_L&s>?bpn4~r^ zCtU*Xlcc~SwSi?x3;ahEPdWr%_gMpA!oVpI;%U5&|L`=PY8lQ%5Cm~&WxgTiJES<= zC(ws5oN|*}Ge;0&X>HE6F)m=Nirh^pru4~is8({q4gA0RqxGnBNB~!CL5pJGu 7bhScr^fBTXb5FT z0cUH-?yj2O!wJKqw0IMFnO1%-e(>9TUi0ud&zZfgnH`op&h@?U6N$8h{+3@@{P>=< zX@uPAF8ZI)0jFVJGTX4$sAF@+W477h8hx?;e;TK6JTo-1a2@f!UzK7o%Oj+EXSyyL z)s2`nw()rpEm}=kbi!pf8ItQ($70US5E dURvJqfHXrX#AUT)tpReEX?#Y2AGMMtOJ*hg?diW!%bV^@7Z0KYXaw zTwZB#EGL+i04BDnORb%zv7bv_TjzKf#c_Zw>&&Cg^K7%uDTe8$kcXUiM@XG+lz7l) zJKRsiQpA(7QGM79*3cU9@-1gUVzgCd>i&W@qSM+2xy*Vf$cn)ES}U0pRE1aUh(PLS zJr(D+#VTG=LIpDs=MXEVZDu3J #@d3n zXAr uF4@Rt;h z>!hXak=;h~Ejj-+n&6|OK
9*LLRh0}d)hh^Ms*}LmBf5v6;VPE?&??GXbbuRd}N0)xv?`2 zF{puoTA6&UU(xO6&kqN9FHtExrV&G&lCdIx`SOSByFbhd^SE17O@EH0+ui~{)o8=I zN->|NRA75{&E&IZl|M?;!XzoGrie{qC?dnxZy(!26+G?wuI*bv2B-5DLNcL22&~_; zruG^K19ONLC9;m9wWqUQx4mkAWQsTi)#&Y?xkWz_DIv@tDybL|F_E?`yH(l|&}i#e z0jwM|*R_N)M!0uNV}@ZMYnfBTR#GR6+AHV%@!59SHSI(LRo3Et*_7ktRJ-$1=Rajb zy%PVY0M!_c(mD@Cp4SxnTGsj=)wPe(Aj{n=QsqP?=3o^nG5u7yyr~L0xK(sHi{k#e zYdWL6I4uW;pi&y9Wx2i$UuLa=wjBB3Yncl;RL@}GzwIh9reF7S608?7b?KR8pI=vz z|4gIWc@k{P zU*s`o7DxCj?j6PH8&!}-%s9jRP?F3Gy1$$vQQUUYr~7_CUq2g8p_u#fXID_5sapBZ z 86Nzoxvmb8Xi8Y5?Fu=j zTcDleyfR7UvW*B`XD>23R+tQHV*~nirkhpg`9h{;j9e*ffdF3Cu6g=_C5}_8n|4h> z)PLurMRqe*GW7#Ca5lw+bg-;cUt1vb3X{Swg{Iysup)p=SYWOf{Z8kaGS0X5>Zx5o zdM@ac(+lm@)@2jRGKCH`tDL!O{r^-`We7#(S(}lOy;tdEvm8n!F!RmA0mzWn(?0Ok zZ0f w=Md9% ~Q|9N$v%P zE<-pRQ)SNFZ8@AP`&0ei*E*MZ=>VF_k9%!;!T&!qEC`P!9y838CH!?E z1&{YY$IV%MlZ_?G8wiDb-{<4U5H0p0eE52TQo&$$i PU(Gr zh};%CPC$7>~bUF{+vOWz~j(wU1gX)q`og_6Zh6B;_@y`~?0%KFDNZWPRf}#rdMmTCRM) z`Y7fXqnimG;IX65@?!5{YN?>M>{u2@ah^zBHED7eVi_0@>8FjMh^db;#E{L1oZ`#q zx%Fm-ad_1P ?v@{&jo+7?5)Yv zFF|T`?Ht&=_9*JoA^$m_ljr2d ``Ay$ZS+ zhCjv_{lQg&Qer e_F z!s1LT?Y8jznCDhn@qcv4J)4?f5&`e*QGNcH8*_{mx2=HK$i}7@hBZR*e@Un3O36V( z Z4$`6;z$P~X)8I6t z%%;|*EUGn@2#NhLj1Z>nLx3cP36-Gfp4KgFrRnelgSnEF5Sj=hZd*Df)@pT5I0K69 z_p%`C7OTRz)W;ILf#7HANcXywNjA^j#9K@~tCQWqIr89&cW;Uw79;35BM{3jcGenj z6`I|X@U`Im-QU8XX*f6-AT5dAjhtoFJen{@XT2M#bv#5JDWvl$nl!MR^$+2vWzEt} zZR #kSZcdL4!fH0)+~Dz8Umw*6;sj zM(g!1jn2@uyTmd_od(%hb+=n9u)^Hy-e_&@n-A6QG_FHDQlaZ^M6dFrnEKi?`GPCT z;-t4}jegY7w3T32$#P6(xlwOBVSg{-{Ap9&=wv~j!Cm*j(RGdI`!~@|gSU~pJYb+E z(mON^o;|e4vi>#gLT3RMJ&&Fic+<$X1&!pL<{<2N1&RMqHsLRG8a5cM1ZOvmUdS?U z70}ckG`V4PI_uLf1jj&HvyT1aLPMz_Ug4Uwq~mdDc*LM_1076D?AT4g=VQN&Vx(xi zECa6;>g-kU1_nakqRRgC`Le((a+vpfl6%Q{$EPqR#b?$f2EG&R|0b|^jlZ`1^jGiO zX=IWic<@yZM=PxK77SKoBly0A2NdZ(rNxj>OE4gXu97M;nNC;GsMS)DP$(2DG#cP0 zanw9s5bhhDd9k$fj0e0s>F>f=>H0Ilmb;zZ2^dHiguuNNbo+2a2i+?4Ii%>&kt92I zOw|9;VKp$W>#O_ bD6R66>V31rG|I%hom3MQ$yPDCYm>98Bk)T|{cdIs6>ZBsARV$>= zDuJIwrP56N#01BPU_7QHg8Ul8Be%>V7pW`jr! b(4 zIv$Lga&JXo36)1sbZU+;aY-uF3PnwgvbKHZ+Pc=(2~%G1oMlZ9ZI4#A>cDMk!B=%n zy6QZOFQ%VcUO2w@rUF(B{Gbi&&hEQr=s{79nmV)?-8E>YjACHdHm*1FNc@3tH_y1^ z(58O5N7s}MK5+A{^hC0Z$eekbO?>W?g&g5I-&0g-tgOd=rEwIW5-7Jlm9c0R~*5 zH6wt6^xln zn~o@2k=+#`w5n+u3h+_j!|Wkc*drzsrY&rJ*eM`gCL` z gnf|fi F63jl|-7YO{DAnEj-R7dQ}H5`qD=$(VED zY}#L~#`#(}Ef}1T*Pu(mTDLMj|CNK2`g;|ys-D?hbt}s7SBcC=XoR;q{M^i23lGBY zf@fct<~wz5-qL&t<6#4*qU|%eK8weejS`lw=B<$Jrr`C?BXq&C(B~uN9Q26fYU7&8 zDhSe!smp9YHTr5Xo@5y~Fx(mEt)l7(E-;HT%-O5dtYujU&zzU@?YKq)u|o^zV8xB- zx{;wDF-(PdgblOJZRy~lT3iE`vH7X-`TW-xNh~8W7?WfjpiM7Rn`|QH*5+@nZf b6{4gx^aFDF|m!Wx %7+q)had` z+W^P4I!nFsb%VB!Iifd|RLzOujV+CoTjP{vLO53_ZGNElc3LOm x5vfMn1h+`?S92GMSUL1Q2h?>lH|4zem`5$*# zC{!J8eP9j+`M93B@O^tz|B%98@KI)#wk>m-DM{M}5={=_#ak{yK-8u3@2q_2gB|ZY zpFE(YL6~H9{Q9!=eQ-??<_4FY*YUc!9}6WaTZbx*Mj`?7+?q!RYBl2ro|tzr7Z5@| zLI~NqLDU_c omty8$y{1-Y+D9s^)A{ua{BxWa)c4%Xwz_-hID?1r(oI|2z4WLa z|CQTUD)durnP;ZsJFNK=eO$1!+kCrsyeqz8|MQe(k+~e1Ga&b&umB???vtz(;_=G1 ztAX$=mnU}X@st{)-YO~&H|ElrO0R#HtS>4%y_RK`(P9H}bW+*lt-z}~H!+q@B?j!0 z+QGnp5V%o@GE7Dh^1Em{$;;HFD#S&agjj=C=vsoVu>x;;ew3!bA}$tllbgJU-_b>D zHN03R++Y|uZeReee^P9>`*n%8hxLB J1%Yn83q%5{8imOz2}7vH0aS<~@zlcuI8Q?T2dohKz4rFfZowQ3W2Y7cWUSLY=Si zdVKqt)&Ej3>|q+v(!6AKWsOR1+~>~x&dsNcvK~IGf&A3xx#kS_(#9{+wc(ie{lD<} z_l)Op453z%3r rP~iA_SGSQ5 #y>tHxQietNRl57@WD2x379)oqxbdPFab|@jdE5oIVH#Ozb(z5dEdTS2z zeyMWe4wbR n_W2F6u12RqfJIr1l$W5ebTZm#h$`D2l zF*JKXXc*EU(lr;Iq#F}zdTv;h B3>{2lx0QigNN#hJ+;6Mq|~p`#p&9 H!0FJ+iqZvU2biP|}}&!6md60IAWZuIseul1#8@aYYyBNfjB_l5cX!2|DCGdj$o zAoKsJ#Ch!hw_@I5ibP}{Mr|B-6ZT6; Q3`Cxcj%%bh0kjT&=!uoKZvRvp~< zgwiVO_%a{wBTJ0V?sT8ksaxBZp22wOBf|W&M5f=2-(Oi8xTsfav<<$^b%a|f3H _K4^u-0 Ge8)J(kP|6QEzm!(#VhQuvJ{b zi+{+ocQ(v)L2*fuLHyx #KVp<;bRg`t}HjP~38nRpyttc~NdyPILD&~)akhAy%T0_nP zImIyQw6qw4nY1BaF^W-*Fp4e9fIR}=cU|JqfPP%Rs<*~udvg!hkMf>o-J@Mm`pDRV z$QKTE&I;OmFI%_LaVvkIP1&yA#_Oj#J-R!zdhsb^LqpqKsphu(?PMIc!#hLj$zNB> zIg?G?SM)SS$UK05Qc0Ap0?C1`=RL%m6kB#6qsSYsdneNn(~K?FR`n>L8VO=5F`z@+ zcCdG~_|CsfICdD+BtADzC}`KIO1xksI)v}%fyVQoeZSSFzn7`&`9a{3R-ZSM+^>>C z#gQ8ZK0$9RwflF -)b@>zk%d;H6)M7z=0 z?rUDsJ>Za~{`|30>j(}`CUg;H8Ls?ttv+Nn&oM#!7oU{^N|1*lWFx!dygZUVrhVz3 zAtaN3 $3x_I57f#({JbMmENKoTESI892cj`8pfFlI&Bg6$D}`P zVcfc=fgQw``Tti|%-`&snVOOJ_wG7!Brs`y^yT>vg^YiE>dJQ=OT44BT3tPQLk0P* zU+iDqNzx&*c;gQjcTG cf#Y&{Jg3n+p1R#pzN1!-vo?6`=?a6IypTnC~dL&0Fc z+$!X*?=RBF|K9ov!S_Us#(cXJ-PqsOT5XoWKD6L8WT@YwXQRymKk_}jwbHSWp&6Z) zxZ4qRT{lcaY}J_h1(U7bY>v!#w%crjwPP&F61TF{QExRHZQV_$z~`lYIKy+KbUK (cW&E3(Qrei{A;G56Vrp|?` fsd^R$Dxh~N Iv5faqq zx-(Src0?SfW-Je;7Dmb(s;QV5S?HCuk|YQopUK)-`}MC_%(sWX=ckMK3qxJ5acLoH z%jQOQ9u?@1)~Hlx|Cw|89P%h3*JHt{+<*kDRV$&q^Sx4-TV11W-D(t}>He!> zPwH7QEDPnua~FsEtE9+>!guC~W4 !9AEbiR+aNt=7MApR^ z1OuDBCvurM&}J2$U-MkAIe)qNlZDOIe5U1 @Z$YuVxaq N~E__%E$y zz-kGI9f14!RoSNLb-NCPZi$XNWWsz>bX@*IBRx^TtRg<)DDGvybq}i*j7vC_XJM!% zz6!6lCEG-kW$Lq{RN(GWuww$JSN_s1$xQX}(H~8)pCf#a&rr@mL0>O)6fa*oHuBc; zLcIRMqL9MGG#@Kj#?m2@D+vbv2mbLr#&|3{Q%8cY4GJy1W3u<29#f77*l$(AXYBGD z{TiGHg&~#=L1VRKH!n?t2l9gh #_Z4j1BXkfO)HGxsWb;wJ{l5O7C2O6*Po8^gR>&WF34Y1RyShG1- zOs9LybzC;yt4H6$Y})Lqf**+WZjPX^ts5^W_DS^gaJbT ; z7CKHCh_RD=4J@(6K)62tsM76l*$nDKUgn@6L#Gc|l&ZS)BQ8lXPN@+Nl{>b`=4(1e zk?>xiHQ2+6XZE{_ t=hPH>0*h&_oh-_9FtR`hhB$`IMNLD62c| EnR#|gZtEbxqVf;vCWIT0sb9fdOqd9+;>L4TUN`JiH%;D z;rfg!t(t}u3DQnA4No_D;oD<50 z ^8r}vyi@5|m5EkB!}kt| zF-~}@=7+Udg=er9D~-@{R&UJ$)$DF;n1ZE>aaQ@ozDUG%ceSa^HW)3X z52+z=*_Y#XJsJ$Ia;XkU=Mg6zg@}`ObhF!NnCnURj6nnOjxYgwX4BA6`(?R#Z)~&- zBw+g|=*?=L__FbzJbi1qH(;5Tjoe&bJeZAh{aE8E;02w&$rT6$hjTC^wE;%aK6)ab zsOFjOOj4K}qugm-ph`X~UAK@JSlV+(BHG)iE{pk=@1q|2SjUHP;iP)Qa&hwBe2XKp zehFSnQFY0DUEN-HS5wHNc=Y$u usbca&uq#hkw@=G~>C&iR!lnS|# zsfpbAD=L>|*Or95c#yW|rBh;|MRqEBMdSAm_KwE0 8w(Hs}43#VEYP*&1%| Y}@=~Bn(o|LEL7gv8lUgzux|?Br zNhu=)c8)|8u#jp-H!fXVbY9$gyt0)`0Hfp_qAC>k?dn#zIy=n; Di&fQ#;?Ei|0&YT<8TqS9qK$V;x9kBKX?cmwf7(AXp7{zf@jT$Haq3wxL}Yx z)h|?I$K(qzr^+HC8YSn!3sO8jk4b{qRMKZIX63!U-ZWI)5-KtXH|`g2V50JAW5oo` zN%wK1$sO 4K=J+s|LYY;VATCOuH$fJ8D z&Gs~Y#^2-*atC>N)x!g+v_$dH4R10~Q`fg4v09t!HDV5N$MQmWdKAkUbmwR~eEKqC zFj||okVTTR+RZz2o&9s`lQT~d_DO>MdBRGZb*yf@AnB4s!m>Vt_lEz!|E>(`FfkGI zkjPAFSe{if&pHm0?mn5s%Po+UD0TLxAjaVFAh})PbW9IINTo5S6dOxv;h=;DQb>8} z*0M*|$_A5OCt}YM4_qR2$T(y>Cz>B`K2;@R&&{fX11%_1SYjs9l~MS#j;RxEc#+|+ zN$0+DoOmyFqFsY*=7ev~)!W@iQYVux1wMG7!2=Jx;E2ucbcnDYd_J#;u$n{*?J9QW z<-Rjh;(YV_O$p~|=>>^!Zf-bXG8jw=huv!1{~*uHBt`ueY|^HCH4dgs{ot}uP~lL?hRHA}VHJb^dH-k!vH z);XFa<)1@MnNVJf9q0xK*7rOC^Rdfw$r$D7xcPjCP1agzaxziQN^MCA&qVIDU_vf< z=e&Yh`sAVKq2(3di+An7kzIeOX%HCh>dOn)m6~*XbJXs83fUr#?uoQwV%oaJU`%5i zSmU~O&5Udq1Vba{?YvGS3slm)JD-BBFZX!(b8Vk_l>-l()n>b0oUc(}`l7vL(W(8S z12U*!6vZ>hiX<**-Ewx>6@L*w@)mmRJ fg)p!QDb6Ckv-DDh$M 0KAC~9zNvpbPO0c0wh)w0R3QEa3M$qa#Dqo>6jy=I{x73l^rN%z5R=~YOSZh;9& z4bm1CFVYw>M-E2dZElQ1HMU?J#`#*0W8^p(Vb}ExT{qOnvTR8dW!*F_htSkAK?F>~ zBk>W|cwY~XSf4^{G_96(pRxxJR+kkS{QUy@pk^B~O_b48*09&z@h5weiAI&ynk!W| zI@{)Mc7aHab+E|#TuQT{^r0k0U+s*~yNaU>{<{P{^q^5i|2!ptMvkIe+HL4{bJGY0 zPM~vOh =(R 2Uk`H=i7Q0WsESMHp6pJ<7*E4Wp z6@t2+HD7MCNRQ&7QmYgSxzS`YijPjGwL2U(lfj_VC}pW JFv+(}3#te^&@^?q({2ljrdtj|sumQD8fL-J zwU}`$N`cGFL_!@nJ6E-5lQ8yA%dBl3hE$xQv!(<@Ga!Zs*elH)rwKFDZK0;M9~K&CQ(sn~tfmNarExub3z2N}xC z%ZRW(YK&d5p;46Kh9Mn%Yz*p@5);c;L8DPKyEbEJbenkv1jU&w>+7^T5|0`V*v(M# zuBoN%`