| 1234567891011121314151617 |
- (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&n(l)}).observe(document,{childList:!0,subtree:!0});function s(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=s(r);fetch(r.href,i)}})();/**
- * @vue/shared v3.5.43
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
- * @license MIT
- **/function nn(t){const e=Object.create(null);for(const s of t.split(","))e[s]=1;return s=>s in e}const Y={},ue=[],Lt=()=>{},fr=()=>!1,bs=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),vs=t=>t.startsWith("onUpdate:"),at=Object.assign,rn=(t,e)=>{const s=t.indexOf(e);s>-1&&t.splice(s,1)},Ci=Object.prototype.hasOwnProperty,U=(t,e)=>Ci.call(t,e),H=Array.isArray,ee=t=>Ue(t)==="[object Map]",os=t=>Ue(t)==="[object Set]",$n=t=>Ue(t)==="[object Date]",L=t=>typeof t=="function",st=t=>typeof t=="string",Wt=t=>typeof t=="symbol",z=t=>t!==null&&typeof t=="object",dr=t=>(z(t)||L(t))&&L(t.then)&&L(t.catch),pr=Object.prototype.toString,Ue=t=>pr.call(t),Ti=t=>Ue(t).slice(8,-1),hr=t=>Ue(t)==="[object Object]",ln=t=>st(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,Ae=nn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ys=t=>{const e=Object.create(null);return(s=>e[s]||(e[s]=t(s)))},$i=/-\w/g,$t=ys(t=>t.replace($i,e=>e.slice(1).toUpperCase())),Mi=/\B([A-Z])/g,pe=ys(t=>t.replace(Mi,"-$1").toLowerCase()),_r=ys(t=>t.charAt(0).toUpperCase()+t.slice(1)),Is=ys(t=>t?`on${_r(t)}`:""),Ht=(t,e)=>!Object.is(t,e),Ds=(t,...e)=>{for(let s=0;s<t.length;s++)t[s](...e)},mr=(t,e,s,n=!1)=>{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,writable:n,value:s})},Ei=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let Mn;const ws=()=>Mn||(Mn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function mt(t){if(H(t)){const e={};for(let s=0;s<t.length;s++){const n=t[s],r=st(n)?Ii(n):mt(n);if(r)for(const i in r)e[i]=r[i]}return e}else if(st(t)||z(t))return t}const Oi=/;(?![^(]*\))/g,Ai=/:([^]+)/,Pi=/"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g;function Ii(t){const e={};return t.replace(Pi,s=>s.startsWith("/*")?"":s).split(Oi).forEach(s=>{if(s){const n=s.split(Ai);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}function vt(t){let e="";if(st(t))e=t;else if(H(t))for(let s=0;s<t.length;s++){const n=vt(t[s]);n&&(e+=n+" ")}else if(z(t))for(const s in t)t[s]&&(e+=s+" ");return e.trim()}const Di="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Ri=nn(Di);function gr(t){return!!t||t===""}function Fi(t,e,s){if(t.length!==e.length)return!1;let n=!0;for(let r=0;n&&r<t.length;r++)n=xs(t[r],e[r],s);return n}function En(t,e,s){if(t.size!==e.size)return!1;const n=Array.from(e),r=new Uint8Array(n.length);for(const i of t){let l=-1;for(let o=0;o<n.length;o++)if(!r[o]&&xs(i,n[o],s)){l=o;break}if(l<0)return!1;r[l]=1}return!0}function qi(t,e,s){let n=ee(t),r=ee(e);if(n||r||(n=os(t),r=os(e),n||r))return n&&r?En(t,e,s):!1;const i=Object.keys(t).length,l=Object.keys(e).length;if(i!==l)return!1;for(const o in t){const c=t.hasOwnProperty(o),p=e.hasOwnProperty(o);if(c&&!p||!c&&p||!xs(t[o],e[o],s))return!1}return String(t)===String(e)}function On(t,e,s,n){s||(s=[new Map,new Map]);const[r,i]=s;if(r.has(t)||i.has(e))return r.get(t)===e&&i.get(e)===t;r.set(t,e),i.set(e,t);const l=n(t,e,s);return r.delete(t),i.delete(e),l}function xs(t,e,s){if(t===e)return!0;let n=$n(t),r=$n(e);return n||r?n&&r?t.getTime()===e.getTime():!1:(n=Wt(t),r=Wt(e),n||r?t===e:(n=H(t),r=H(e),n||r?n&&r?On(t,e,s,Fi):!1:(n=z(t),r=z(e),n||r?!n||!r?!1:On(t,e,s,qi):String(t)===String(e))))}const br=t=>!!(t&&t.__v_isRef===!0),g=t=>st(t)?t:t==null?"":H(t)||z(t)&&(t.toString===pr||!L(t.toString))?br(t)?g(t.value):JSON.stringify(t,vr,2):String(t),vr=(t,e)=>br(e)?vr(t,e.value):ee(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((s,[n,r],i)=>(s[Rs(n,i)+" =>"]=r,s),{})}:os(e)?{[`Set(${e.size})`]:[...e.values()].map(s=>Rs(s))}:Wt(e)?Rs(e):z(e)&&!H(e)&&!hr(e)?String(e):e,Rs=(t,e="")=>{var s;return Wt(t)?`Symbol(${(s=t.description)!=null?s:e})`:t};/**
- * @vue/reactivity v3.5.43
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
- * @license MIT
- **/let ct;class Ni{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&ct&&(ct.active?(this.parent=ct,this.index=(ct.scopes||(ct.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,s;if(this.scopes){const n=this.scopes.slice();for(e=0,s=n.length;e<s;e++)n[e].pause()}for(e=0,s=this.effects.length;e<s;e++)this.effects[e].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let e,s;if(this.scopes){const r=this.scopes.slice();for(e=0,s=r.length;e<s;e++)r[e].resume()}const n=this.effects.slice();for(e=0,s=n.length;e<s;e++)n[e].resume()}}run(e){if(this._active){const s=ct;try{return ct=this,e()}finally{ct=s}}}on(){++this._on===1&&(this.prevScope=ct,ct=this)}off(){if(this._on>0&&--this._on===0){if(ct===this)ct=this.prevScope;else{let e=ct;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){const r=this.scopes.slice();for(s=0,n=r.length;s<n;s++)r[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!e){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function ji(){return ct}let X;const Fs=new WeakSet;class yr{constructor(e){this.fn=e,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,ct&&(ct.active?ct.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Fs.has(this)&&(Fs.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||xr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,An(this),kr(this);const e=X,s=Mt;X=this,Mt=!0;try{return this.fn()}finally{Sr(this),X=e,Mt=s,this.flags&=-3}}stop(){if(this.flags&1){for(let e=this.deps;e;e=e.nextDep)an(e);this.deps=this.depsTail=void 0,An(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Fs.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Us(this)&&this.run()}get dirty(){return Us(this)}}let wr=0,Pe,Ie;function xr(t,e=!1){if(t.flags|=8,e){t.next=Ie,Ie=t;return}t.next=Pe,Pe=t}function on(){wr++}function cn(){if(--wr>0)return;if(Ie){let e=Ie;for(Ie=void 0;e;){const s=e.next;e.next=void 0,e.flags&=-9,e=s}}let t;for(;Pe;){let e=Pe;for(Pe=void 0;e;){const s=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(n){t||(t=n)}e=s}}if(t)throw t}function kr(t){for(let e=t.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function Sr(t){let e,s=t.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),an(n),Hi(n)):e=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}t.deps=e,t.depsTail=s}function Us(t){for(let e=t.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(Cr(e.dep.computed)||e.dep.version!==e.version))return!0;return!!t._dirty}function Cr(t){if(t.flags&4&&!(t.flags&16)||(t.flags&=-17,t.globalVersion===je)||(t.globalVersion=je,!t.isSSR&&t.flags&128&&(!t.deps&&!t._dirty||!Us(t))))return;t.flags|=2;const e=t.dep,s=X,n=Mt;X=t,Mt=!0;try{kr(t);const r=t.fn(t._value);(e.version===0||Ht(r,t._value))&&(t.flags|=128,t._value=r,e.version++)}catch(r){throw e.version++,r}finally{X=s,Mt=n,Sr(t),t.flags&=-3}}function an(t,e=!1){const{dep:s,prevSub:n,nextSub:r}=t;if(n&&(n.nextSub=r,t.prevSub=void 0),r&&(r.prevSub=n,t.nextSub=void 0),s.subs===t&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let i=s.computed.deps;i;i=i.nextDep)an(i,!0)}!e&&!--s.sc&&s.map&&s.map.delete(s.key)}function Hi(t){const{prevDep:e,nextDep:s}=t;e&&(e.nextDep=s,t.prevDep=void 0),s&&(s.prevDep=e,t.nextDep=void 0)}let Mt=!0;const Tr=[];function Jt(){Tr.push(Mt),Mt=!1}function Yt(){const t=Tr.pop();Mt=t===void 0?!0:t}function An(t){const{cleanup:e}=t;if(t.cleanup=void 0,e){const s=X;X=void 0;try{e()}finally{X=s}}}let je=0;class Li{constructor(e,s){this.sub=e,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class un{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!X||!Mt||X===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==X)s=this.activeLink=new Li(X,this),X.deps?(s.prevDep=X.depsTail,X.depsTail.nextDep=s,X.depsTail=s):X.deps=X.depsTail=s,$r(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=X.depsTail,s.nextDep=void 0,X.depsTail.nextDep=s,X.depsTail=s,X.deps===s&&(X.deps=n)}return s}trigger(e){this.version++,je++,this.notify(e)}notify(e){on();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{cn()}}}function $r(t){if(t.dep.sc++,t.sub.flags&4){const e=t.dep.computed;if(e&&!t.dep.subs){e.flags|=20;for(let n=e.deps;n;n=n.nextDep)$r(n)}const s=t.dep.subs;s!==t&&(t.prevSub=s,s&&(s.nextSub=t)),t.dep.subs=t}}const Gs=new WeakMap,fe=Symbol(""),zs=Symbol(""),He=Symbol("");function ut(t,e,s){if(Mt&&X){let n=Gs.get(t);n||Gs.set(t,n=new Map);let r=n.get(s);r||(n.set(s,r=new un),r.map=n,r.key=s),r.track()}}function Gt(t,e,s,n,r,i){const l=Gs.get(t);if(!l){je++;return}const o=c=>{c&&c.trigger()};if(on(),e==="clear")l.forEach(o);else{const c=H(t),p=c&&ln(s);if(c&&s==="length"){const u=Number(n);l.forEach((_,h)=>{(h==="length"||h===He||!Wt(h)&&h>=u)&&o(_)})}else switch((s!==void 0||l.has(void 0))&&o(l.get(s)),p&&o(l.get(He)),e){case"add":c?p&&o(l.get("length")):(o(l.get(fe)),ee(t)&&o(l.get(zs)));break;case"delete":c||(o(l.get(fe)),ee(t)&&o(l.get(zs)));break;case"set":ee(t)&&o(l.get(fe));break}}cn()}function _e(t){const e=V(t);return e===t||(ut(e,"iterate",He),kt(t))?e:Bt(t)?se(t)?e.map(s=>ne(Ct(s))):e.map(ne):e.map(Ct)}function ks(t){return ut(t=V(t),"iterate",He),t}function qt(t,e){return Bt(t)?ne(se(t)?Ct(e):e):Ct(e)}const Wi={__proto__:null,[Symbol.iterator](){return qs(this,Symbol.iterator,t=>qt(this,t))},concat(...t){return _e(this).concat(...t.map(e=>H(e)?_e(e):e))},entries(){return qs(this,"entries",t=>(t[1]=qt(this,t[1]),t))},every(t,e){return Kt(this,"every",t,e,void 0,arguments)},filter(t,e){return Kt(this,"filter",t,e,s=>s.map(n=>qt(this,n)),arguments)},find(t,e){return Kt(this,"find",t,e,s=>qt(this,s),arguments)},findIndex(t,e){return Kt(this,"findIndex",t,e,void 0,arguments)},findLast(t,e){return Kt(this,"findLast",t,e,s=>qt(this,s),arguments)},findLastIndex(t,e){return Kt(this,"findLastIndex",t,e,void 0,arguments)},forEach(t,e){return Kt(this,"forEach",t,e,void 0,arguments)},includes(...t){return Ns(this,"includes",t)},indexOf(...t){return Ns(this,"indexOf",t)},join(t){return _e(this).join(t)},lastIndexOf(...t){return Ns(this,"lastIndexOf",t)},map(t,e){return Kt(this,"map",t,e,void 0,arguments)},pop(){return Te(this,"pop")},push(...t){return Te(this,"push",t)},reduce(t,...e){return Pn(this,"reduce",t,e)},reduceRight(t,...e){return Pn(this,"reduceRight",t,e)},shift(){return Te(this,"shift")},some(t,e){return Kt(this,"some",t,e,void 0,arguments)},splice(...t){return Te(this,"splice",t)},toReversed(){return _e(this).toReversed()},toSorted(t){return _e(this).toSorted(t)},toSpliced(...t){return _e(this).toSpliced(...t)},unshift(...t){return Te(this,"unshift",t)},values(){return qs(this,"values",t=>qt(this,t))}};function qs(t,e,s){const n=ks(t),r=n[e]();return n!==t&&!kt(t)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=s(i.value)),i}),r}const Bi=Array.prototype;function Kt(t,e,s,n,r,i){const l=ks(t),o=l!==t&&!kt(t),c=l[e];if(c!==Bi[e]){const _=c.apply(t,i);return o?Ct(_):_}let p=s;l!==t&&(o?p=function(_,h){return s.call(this,qt(t,_),h,t)}:s.length>2&&(p=function(_,h){return s.call(this,_,h,t)}));const u=c.call(l,p,n);return o&&r?r(u):u}function Pn(t,e,s,n){const r=ks(t),i=r!==t&&!kt(t);let l=s,o=!1;r!==t&&(i?(o=n.length===0,l=function(p,u,_){return o&&(o=!1,p=qt(t,p)),s.call(this,p,qt(t,u),_,t)}):s.length>3&&(l=function(p,u,_){return s.call(this,p,u,_,t)}));const c=r[e](l,...n);return o?qt(t,c):c}function Ns(t,e,s){const n=V(t);ut(n,"iterate",He);const r=n[e](...s);return(r===-1||r===!1)&&hn(s[0])?(s[0]=V(s[0]),n[e](...s)):r}function Te(t,e,s=[]){Jt(),on();const n=V(t)[e].apply(t,s);return cn(),Yt(),n}const Ki=nn("__proto__,__v_isRef,__isVue"),Mr=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(Wt));function Vi(t){Wt(t)||(t=String(t));const e=V(this);return ut(e,"has",t),e.hasOwnProperty(t)}class Er{constructor(e=!1,s=!1){this._isReadonly=e,this._isShallow=s}get(e,s,n){if(s==="__v_skip")return e.__v_skip;const r=this._isReadonly,i=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(r?i?el:Ir:i?Pr:Ar).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const l=H(e);if(!r){let c;if(l&&(c=Wi[s]))return c;if(s==="hasOwnProperty")return Vi}const o=Reflect.get(e,s,ft(e)?e:n);if((Wt(s)?Mr.has(s):Ki(s))||(r||ut(e,"get",s),i))return o;if(ft(o)){const c=l&&ln(s)?o:o.value;return r&&z(c)?Ys(c):c}return z(o)?r?Ys(o):dn(o):o}}class Or extends Er{constructor(e=!1){super(!1,e)}set(e,s,n,r){let i=e[s];const l=H(e)&&ln(s);if(!this._isShallow){const p=Bt(i);if(!kt(n)&&!Bt(n)&&(i=V(i),n=V(n)),!l&&ft(i)&&!ft(n))return p||(i.value=n),!0}const o=l?Number(s)<e.length:U(e,s),c=Reflect.set(e,s,n,ft(e)?e:r);return e===V(r)&&c&&(o?Ht(n,i)&&Gt(e,"set",s,n):Gt(e,"add",s,n)),c}deleteProperty(e,s){const n=U(e,s);e[s];const r=Reflect.deleteProperty(e,s);return r&&n&&Gt(e,"delete",s,void 0),r}has(e,s){const n=Reflect.has(e,s);return(!Wt(s)||!Mr.has(s))&&ut(e,"has",s),n}ownKeys(e){return ut(e,"iterate",H(e)?"length":fe),Reflect.ownKeys(e)}}class Ui extends Er{constructor(e=!1){super(!0,e)}set(e,s){return!0}deleteProperty(e,s){return!0}}const Gi=new Or,zi=new Ui,Ji=new Or(!0);const Js=t=>t,ts=t=>Reflect.getPrototypeOf(t);function Yi(t,e,s){return function(...n){const r=this.__v_raw,i=V(r),l=ee(i),o=t==="entries"||t===Symbol.iterator&&l,c=t==="keys"&&l,p=r[t](...n),u=s?Js:e?ne:Ct;return!e&&ut(i,"iterate",c?zs:fe),at(Object.create(p),{next(){const{value:_,done:h}=p.next();return h?{value:_,done:h}:{value:o?[u(_[0]),u(_[1])]:u(_),done:h}}})}}function es(t){return function(...e){return t==="delete"?!1:t==="clear"?void 0:this}}function Zi(t,e){const s={get(r){const i=this.__v_raw,l=V(i),o=V(r);t||(Ht(r,o)&&ut(l,"get",r),ut(l,"get",o));const{has:c}=ts(l),p=e?Js:t?ne:Ct;if(c.call(l,r))return p(i.get(r));if(c.call(l,o))return p(i.get(o));i!==l&&i.get(r)},get size(){const r=this.__v_raw;return!t&&ut(V(r),"iterate",fe),r.size},has(r){const i=this.__v_raw,l=V(i),o=V(r);return t||(Ht(r,o)&&ut(l,"has",r),ut(l,"has",o)),r===o?i.has(r):i.has(r)||i.has(o)},forEach(r,i){const l=this,o=l.__v_raw,c=V(o),p=e?Js:t?ne:Ct;return!t&&ut(c,"iterate",fe),o.forEach((u,_)=>r.call(i,p(u),p(_),l))}};return at(s,t?{add:es("add"),set:es("set"),delete:es("delete"),clear:es("clear")}:{add(r){const i=V(this),l=ts(i),o=V(r),c=!e&&!kt(r)&&!Bt(r)?o:r;return l.has.call(i,c)||Ht(r,c)&&l.has.call(i,r)||Ht(o,c)&&l.has.call(i,o)||(i.add(c),Gt(i,"add",c,c)),this},set(r,i){!e&&!kt(i)&&!Bt(i)&&(i=V(i));const l=V(this),{has:o,get:c}=ts(l);let p=o.call(l,r);p||(r=V(r),p=o.call(l,r));const u=c.call(l,r);return l.set(r,i),p?Ht(i,u)&&Gt(l,"set",r,i):Gt(l,"add",r,i),this},delete(r){const i=V(this),{has:l,get:o}=ts(i);let c=l.call(i,r);c||(r=V(r),c=l.call(i,r)),o&&o.call(i,r);const p=i.delete(r);return c&&Gt(i,"delete",r,void 0),p},clear(){const r=V(this),i=r.size!==0,l=r.clear();return i&&Gt(r,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=Yi(r,t,e)}),s}function fn(t,e){const s=Zi(t,e);return(n,r,i)=>r==="__v_isReactive"?!t:r==="__v_isReadonly"?t:r==="__v_raw"?n:Reflect.get(U(s,r)&&r in n?s:n,r,i)}const Xi={get:fn(!1,!1)},Qi={get:fn(!1,!0)},tl={get:fn(!0,!1)};const Ar=new WeakMap,Pr=new WeakMap,Ir=new WeakMap,el=new WeakMap;function sl(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function dn(t){return Bt(t)?t:pn(t,!1,Gi,Xi,Ar)}function nl(t){return pn(t,!1,Ji,Qi,Pr)}function Ys(t){return pn(t,!0,zi,tl,Ir)}function pn(t,e,s,n,r){if(!z(t)||t.__v_raw&&!(e&&t.__v_isReactive)||t.__v_skip||!Object.isExtensible(t))return t;const i=r.get(t);if(i)return i;const l=sl(Ti(t));if(l===0)return t;const o=new Proxy(t,l===2?n:s);return r.set(t,o),o}function se(t){return Bt(t)?se(t.__v_raw):!!(t&&t.__v_isReactive)}function Bt(t){return!!(t&&t.__v_isReadonly)}function kt(t){return!!(t&&t.__v_isShallow)}function hn(t){return t?!!t.__v_raw:!1}function V(t){const e=t&&t.__v_raw;return e?V(e):t}function rl(t){return!U(t,"__v_skip")&&Object.isExtensible(t)&&mr(t,"__v_skip",!0),t}const Ct=t=>z(t)?dn(t):t,ne=t=>z(t)?Ys(t):t;function ft(t){return t?t.__v_isRef===!0:!1}function Nt(t){return il(t,!1)}function il(t,e){return ft(t)?t:new ll(t,e)}class ll{constructor(e,s){this.dep=new un,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?e:V(e),this._value=s?e:Ct(e),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(e){const s=this._rawValue,n=this.__v_isShallow||kt(e)||Bt(e);e=n?e:V(e),Ht(e,s)&&(this._rawValue=e,this._value=n?e:Ct(e),this.dep.trigger())}}function v(t){return ft(t)?t.value:t}const ol={get:(t,e,s)=>e==="__v_raw"?t:v(Reflect.get(t,e,s)),set:(t,e,s,n)=>{const r=t[e];return ft(r)&&!ft(s)?(r.value=s,!0):Reflect.set(t,e,s,n)}};function Dr(t){return se(t)?t:new Proxy(t,ol)}class cl{constructor(e,s,n){this.fn=e,this.setter=s,this._value=void 0,this.dep=new un(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=je-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&X!==this)return xr(this,!0),!0}get value(){const e=this.dep.track();return Cr(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function al(t,e,s=!1){let n,r;return L(t)?n=t:(n=t.get,r=t.set),new cl(n,r,s)}const ss={},cs=new WeakMap;let ae;function ul(t,e=!1,s=ae){if(s){let n=cs.get(s);n||cs.set(s,n=[]),n.push(t)}}function fl(t,e,s=Y){const{immediate:n,deep:r,once:i,scheduler:l,augmentJob:o,call:c}=s,p=q=>r?q:kt(q)||r===!1||r===0?zt(q,1):zt(q);let u,_,h,T,A=!1,C=!1;if(ft(t)?(_=()=>t.value,A=kt(t)):se(t)?(_=()=>p(t),A=!0):H(t)?(C=!0,A=t.some(q=>se(q)||kt(q)),_=()=>t.map(q=>{if(ft(q))return q.value;if(se(q))return p(q);if(L(q))return c?c(q,2):q()})):L(t)?e?_=c?()=>c(t,2):t:_=()=>{if(h){Jt();try{h()}finally{Yt()}}const q=ae;ae=u;try{return c?c(t,3,[T]):t(T)}finally{ae=q}}:_=Lt,e&&r){const q=_,lt=r===!0?1/0:r;_=()=>zt(q(),lt)}const D=ji(),b=()=>{u.stop(),D&&D.active&&rn(D.effects,u)};if(i&&e){const q=e;e=(...lt)=>{const Ot=q(...lt);return b(),Ot}}let F=C?new Array(t.length).fill(ss):ss;const B=q=>{if(!(!(u.flags&1)||!u.dirty&&!q))if(e){const lt=u.run();if(q||r||A||(C?lt.some((Ot,At)=>Ht(Ot,F[At])):Ht(lt,F))){h&&h();const Ot=ae;ae=u;try{const At=[lt,F===ss?void 0:C&&F[0]===ss?[]:F,T];F=lt,c?c(e,3,At):e(...At)}finally{ae=Ot}}}else u.run()};return o&&o(B),u=new yr(_),u.scheduler=l?()=>l(B,!1):B,T=q=>ul(q,!1,u),h=u.onStop=()=>{const q=cs.get(u);if(q){if(c)c(q,4);else for(const lt of q)lt();cs.delete(u)}},e?n?B(!0):F=u.run():l?l(B.bind(null,!0),!0):u.run(),b.pause=u.pause.bind(u),b.resume=u.resume.bind(u),b.stop=b,b}function zt(t,e=1/0,s){if(e<=0||!z(t)||t.__v_skip||(s=s||new Map,(s.get(t)||0)>=e))return t;if(s.set(t,e),e--,ft(t))zt(t.value,e,s);else if(H(t))for(let n=0;n<t.length;n++)zt(t[n],e,s);else if(os(t)||ee(t))t.forEach(n=>{zt(n,e,s)});else if(hr(t)){for(const n in t)zt(t[n],e,s);for(const n of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,n)&&zt(t[n],e,s)}return t}/**
- * @vue/runtime-core v3.5.43
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
- * @license MIT
- **/function Ge(t,e,s,n){try{return n?t(...n):t()}catch(r){Ss(r,e,s)}}function Et(t,e,s,n){if(L(t)){const r=Ge(t,e,s,n);return r&&dr(r)&&r.catch(i=>{Ss(i,e,s)}),r}if(H(t)){const r=[];for(let i=0;i<t.length;i++)r.push(Et(t[i],e,s,n));return r}}function Ss(t,e,s,n=!0){const r=e?e.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:l}=e&&e.appContext.config||Y;if(e){let o=e.parent;const c=e.proxy,p=`https://vuejs.org/error-reference/#runtime-${s}`;for(;o;){const u=o.ec;if(u){for(let _=0;_<u.length;_++)if(u[_](t,c,p)===!1)return}o=o.parent}if(i){Jt(),Ge(i,null,10,[t,c,p]),Yt();return}}dl(t,s,r,n,l)}function dl(t,e,s,n=!0,r=!1){if(r)throw t;console.error(t)}const ht=[];let Ft=-1;const ge=[];let te=null,me=0;const Rr=Promise.resolve();let as=null;function pl(t){const e=as||Rr;return t?e.then(this?t.bind(this):t):e}function hl(t){let e=Ft+1,s=ht.length;for(;e<s;){const n=e+s>>>1,r=ht[n],i=Le(r);i<t||i===t&&r.flags&2?e=n+1:s=n}return e}function _n(t){if(!(t.flags&1)){const e=Le(t),s=ht[ht.length-1];!s||!(t.flags&2)&&e>=Le(s)?ht.push(t):ht.splice(hl(e),0,t),t.flags|=1,Fr()}}function Fr(){as||(as=Rr.then(Nr))}function _l(t){if(!H(t))te&&t.id===-1?te.splice(me+1,0,t):t.flags&1||(ge.push(t),t.flags|=1);else for(let e=0;e<t.length;e++)ge.push(t[e]);Fr()}function In(t,e,s=Ft+1){for(;s<ht.length;s++){const n=ht[s];if(n&&n.flags&2){if(t&&n.id!==t.uid)continue;ht.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function qr(t){if(ge.length){const e=[...new Set(ge)].sort((s,n)=>Le(s)-Le(n));if(ge.length=0,te){for(let s=0;s<e.length;s++)te.push(e[s]);return}for(te=e,me=0;me<te.length;me++){const s=te[me];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}te=null,me=0}}const Le=t=>t.id==null?t.flags&2?-1:1/0:t.id;function Nr(t){try{for(Ft=0;Ft<ht.length;Ft++){const e=ht[Ft];e&&!(e.flags&8)&&(e.flags&4&&(e.flags&=-2),Ge(e,e.i,e.i?15:14),e.flags&4||(e.flags&=-2))}}finally{for(;Ft<ht.length;Ft++){const e=ht[Ft];e&&(e.flags&=-2)}Ft=-1,ht.length=0,qr(),as=null,(ht.length||ge.length)&&Nr()}}let xt=null,jr=null;function us(t){const e=xt;return xt=t,jr=t&&t.type.__scopeId||null,e}function ml(t,e=xt,s){if(!e||t._n)return t;const n=(...r)=>{n._d&&Vn(-1);const i=us(e),l=de.length;let o;try{o=t(...r)}finally{for(let c=de.length;c>l;c--)ui();us(i),n._d&&Vn(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function Dn(t,e){if(xt===null)return t;const s=Os(xt),n=t.dirs||(t.dirs=[]);for(let r=0;r<e.length;r++){let[i,l,o,c=Y]=e[r];i&&(L(i)&&(i={mounted:i,updated:i}),i.deep&&zt(l),n.push({dir:i,instance:s,value:l,oldValue:void 0,arg:o,modifiers:c}))}return t}function oe(t,e,s,n){const r=t.dirs,i=e&&e.dirs;for(let l=0;l<r.length;l++){const o=r[l];i&&(o.oldValue=i[l].value);let c=o.dir[n];c&&(Jt(),Et(c,s,8,[t.el,o,t,e]),Yt())}}function gl(t,e){if(gt){let s=gt.provides;const n=gt.parent&>.parent.provides;n===s&&(s=gt.provides=Object.create(n)),s[t]=e}}function rs(t,e,s=!1){const n=ho();if(n||be){let r=be?be._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(r&&t in r)return r[t];if(arguments.length>1)return s&&L(e)?e.call(n&&n.proxy):e}}const bl=Symbol.for("v-scx"),vl=()=>rs(bl);function De(t,e,s){return Hr(t,e,s)}function Hr(t,e,s=Y){const{immediate:n,deep:r,flush:i,once:l}=s,o=at({},s),c=e&&n||!e&&i!=="post";let p;if(Ke){if(i==="sync"){const T=vl();p=T.__watcherHandles||(T.__watcherHandles=[])}else if(!c){const T=()=>{};return T.stop=Lt,T.resume=Lt,T.pause=Lt,T}}const u=gt;o.call=(T,A,C)=>Et(T,u,A,C);let _=!1;i==="post"?o.scheduler=T=>{bt(T,u&&u.suspense)}:i!=="sync"&&(_=!0,o.scheduler=(T,A)=>{A?T():_n(T)}),o.augmentJob=T=>{e&&(T.flags|=4),_&&(T.flags|=2,u&&(T.id=u.uid,T.i=u))};const h=fl(t,e,o);return Ke&&(p?p.push(h):c&&h()),h}function yl(t,e,s){const n=this.proxy,r=st(t)?t.includes(".")?Lr(n,t):()=>n[t]:t.bind(n,n);let i;L(e)?i=e:(i=e.handler,s=e);const l=ze(this),o=Hr(r,i.bind(n),s);return l(),o}function Lr(t,e){const s=e.split(".");return()=>{let n=t;for(let r=0;r<s.length&&n;r++)n=n[s[r]];return n}}const wl=Symbol("_vte"),Cs=t=>t.__isTeleport,js=Symbol("_leaveCb");function xl(t){let e=t[0];if(t.length>1){for(const s of t)if(s.type!==Zt){e=s;break}}return e}function Wr(t){if(!gn(t))return Cs(t.type)&&t.children?xl(t.children):t;if(t.component)return t.component.subTree;const{shapeFlag:e,children:s}=t;if(s){if(e&16)return s[0];if(e&32&&L(s.default))return s.default()}}function mn(t,e){if(t.shapeFlag&6&&t.component){t.transition=e;const s=t.component.subTree;mn(Cs(s.type)&&Wr(s)||s,e)}else t.shapeFlag&128?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}function he(t,e){return L(t)?at({name:t.name},e,{setup:t}):t}function Br(t){t.ids=[t.ids[0]+t.ids[2]+++"-",0,0]}function Rn(t,e){let s;return!!((s=Object.getOwnPropertyDescriptor(t,e))&&!s.configurable)}const fs=new WeakMap;function Re(t,e,s,n,r=!1){if(H(t)){t.forEach((C,D)=>Re(C,e&&(H(e)?e[D]:e),s,n,r));return}if(Fe(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Re(t,e,s,n.component.subTree);return}const i=n.shapeFlag&4?Os(n.component):n.el,l=r?null:i,{i:o,r:c}=t,p=e&&e.r,u=o.refs===Y?o.refs={}:o.refs,_=o.setupState,h=V(_),T=_===Y?fr:C=>Rn(u,C)?!1:U(h,C),A=(C,D)=>!(D&&Rn(u,D));if(p!=null&&p!==c){if(Fn(e),st(p))u[p]=null,T(p)&&(_[p]=null);else if(ft(p)){const C=e;A(p,C.k)&&(p.value=null),C.k&&(u[C.k]=null)}}if(L(c))Ge(c,o,12,[l,u]);else{const C=st(c),D=ft(c);if(C||D){const b=()=>{if(t.f){const F=C?T(c)?_[c]:u[c]:A()||!t.k?c.value:u[t.k];if(r)H(F)&&rn(F,i);else if(H(F))F.includes(i)||F.push(i);else if(C)u[c]=[i],T(c)&&(_[c]=u[c]);else{const B=[i];A(c,t.k)&&(c.value=B),t.k&&(u[t.k]=B)}}else C?(u[c]=l,T(c)&&(_[c]=l)):D&&(A(c,t.k)&&(c.value=l),t.k&&(u[t.k]=l))};if(l){const F=()=>{b(),fs.delete(t)};F.id=-1,fs.set(t,F),bt(F,s)}else Fn(t),b()}}}function Fn(t){const e=fs.get(t);e&&(e.flags|=8,fs.delete(t))}ws().requestIdleCallback;ws().cancelIdleCallback;const Fe=t=>!!t.type.__asyncLoader,gn=t=>t.type.__isKeepAlive;function kl(t,e){Kr(t,"a",e)}function Sl(t,e){Kr(t,"da",e)}function Kr(t,e,s=gt){const n=t.__wdc||(t.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return t()});if(Ts(e,n,s),s){let r=s.parent;for(;r&&r.parent;)gn(r.parent.vnode)&&Cl(n,e,s,r),r=r.parent}}function Cl(t,e,s,n){const r=Ts(e,t,n,!0);Ur(()=>{rn(n[e],r)},s)}function Ts(t,e,s=gt,n=!1){if(s){const r=s[t]||(s[t]=[]),i=e.__weh||(e.__weh=(...l)=>{Jt();const o=ze(s),c=Et(e,s,t,l);return o(),Yt(),c});return n?r.unshift(i):r.push(i),i}}const Xt=t=>(e,s=gt)=>{(!Ke||t==="sp")&&Ts(t,(...n)=>e(...n),s)},Tl=Xt("bm"),$s=Xt("m"),$l=Xt("bu"),Ml=Xt("u"),Vr=Xt("bum"),Ur=Xt("um"),El=Xt("sp"),Ol=Xt("rtg"),Al=Xt("rtc");function Pl(t,e=gt){Ts("ec",t,e)}const Il=Symbol.for("v-ndc");function nt(t,e,s,n){let r;const i=s,l=H(t);if(l||st(t)){const o=l&&se(t);let c=!1,p=!1;o&&(c=!kt(t),p=Bt(t),t=ks(t)),r=new Array(t.length);for(let u=0,_=t.length;u<_;u++)r[u]=e(c?p?ne(Ct(t[u])):Ct(t[u]):t[u],u,void 0,i)}else if(typeof t=="number"){r=new Array(t);for(let o=0;o<t;o++)r[o]=e(o+1,o,void 0,i)}else if(z(t))if(t[Symbol.iterator])r=Array.from(t,(o,c)=>e(o,c,void 0,i));else{const o=Object.keys(t);r=new Array(o.length);for(let c=0,p=o.length;c<p;c++){const u=o[c];r[c]=e(t[u],u,c,i)}}else r=[];return r}const Zs=t=>t?hi(t)?Os(t):Zs(t.parent):null,qe=at(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>Zs(t.parent),$root:t=>Zs(t.root),$host:t=>t.ce,$emit:t=>t.emit,$options:t=>zr(t),$forceUpdate:t=>t.f||(t.f=()=>{_n(t.update)}),$nextTick:t=>t.n||(t.n=pl.bind(t.proxy)),$watch:t=>yl.bind(t)}),Hs=(t,e)=>t!==Y&&!t.__isScriptSetup&&U(t,e),Dl={get({_:t},e){if(e==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:i,accessCache:l,type:o,appContext:c}=t;if(e[0]!=="$"){const h=l[e];if(h!==void 0)switch(h){case 1:return n[e];case 2:return r[e];case 4:return s[e];case 3:return i[e]}else{if(Hs(n,e))return l[e]=1,n[e];if(r!==Y&&U(r,e))return l[e]=2,r[e];if(U(i,e))return l[e]=3,i[e];if(s!==Y&&U(s,e))return l[e]=4,s[e];Xs&&(l[e]=0)}}const p=qe[e];let u,_;if(p)return e==="$attrs"&&ut(t.attrs,"get",""),p(t);if((u=o.__cssModules)&&(u=u[e]))return u;if(s!==Y&&U(s,e))return l[e]=4,s[e];if(_=c.config.globalProperties,U(_,e))return _[e]},set({_:t},e,s){const{data:n,setupState:r,ctx:i}=t;return Hs(r,e)?(r[e]=s,!0):n!==Y&&U(n,e)?(n[e]=s,!0):U(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(i[e]=s,!0)},has({_:{data:t,setupState:e,accessCache:s,ctx:n,appContext:r,props:i,type:l}},o){let c;return!!(s[o]||t!==Y&&o[0]!=="$"&&U(t,o)||Hs(e,o)||U(i,o)||U(n,o)||U(qe,o)||U(r.config.globalProperties,o)||(c=l.__cssModules)&&c[o])},defineProperty(t,e,s){return s.get!=null?t._.accessCache[e]=0:U(s,"value")&&this.set(t,e,s.value,null),Reflect.defineProperty(t,e,s)}};function qn(t){return H(t)?t.reduce((e,s)=>(e[s]=null,e),{}):t}let Xs=!0;function Rl(t){const e=zr(t),s=t.proxy,n=t.ctx;Xs=!1,e.beforeCreate&&Nn(e.beforeCreate,t,"bc");const{data:r,computed:i,methods:l,watch:o,provide:c,inject:p,created:u,beforeMount:_,mounted:h,beforeUpdate:T,updated:A,activated:C,deactivated:D,beforeDestroy:b,beforeUnmount:F,destroyed:B,unmounted:q,render:lt,renderTracked:Ot,renderTriggered:At,errorCaptured:Qt,serverPrefetch:Je,expose:re,inheritAttrs:xe,components:Ye,directives:Ze,filters:As}=e;if(p&&Fl(p,n,null),l)for(const et in l){const Z=l[et];L(Z)&&(n[et]=Z.bind(s))}if(r){const et=r.call(s,s);z(et)&&(t.data=dn(et))}if(Xs=!0,i)for(const et in i){const Z=i[et],ie=L(Z)?Z.bind(s,s):L(Z.get)?Z.get.bind(s,s):Lt,Xe=!L(Z)&&L(Z.set)?Z.set.bind(s):Lt,le=Q({get:ie,set:Xe});Object.defineProperty(n,et,{enumerable:!0,configurable:!0,get:()=>le.value,set:Tt=>le.value=Tt})}if(o)for(const et in o)Gr(o[et],n,s,et);if(c){const et=L(c)?c.call(s):c;Reflect.ownKeys(et).forEach(Z=>{gl(Z,et[Z])})}u&&Nn(u,t,"c");function dt(et,Z){H(Z)?Z.forEach(ie=>et(ie.bind(s))):Z&&et(Z.bind(s))}if(dt(Tl,_),dt($s,h),dt($l,T),dt(Ml,A),dt(kl,C),dt(Sl,D),dt(Pl,Qt),dt(Al,Ot),dt(Ol,At),dt(Vr,F),dt(Ur,q),dt(El,Je),H(re))if(re.length){const et=t.exposed||(t.exposed={});re.forEach(Z=>{Object.defineProperty(et,Z,{get:()=>s[Z],set:ie=>s[Z]=ie,enumerable:!0})})}else t.exposed||(t.exposed={});lt&&t.render===Lt&&(t.render=lt),xe!=null&&(t.inheritAttrs=xe),Ye&&(t.components=Ye),Ze&&(t.directives=Ze),Je&&Br(t)}function Fl(t,e,s=Lt){H(t)&&(t=Qs(t));for(const n in t){const r=t[n];let i;z(r)?"default"in r?i=rs(r.from||n,r.default,!0):i=rs(r.from||n):i=rs(r),ft(i)?Object.defineProperty(e,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):e[n]=i}}function Nn(t,e,s){Et(H(t)?t.map(n=>n.bind(e.proxy)):t.bind(e.proxy),e,s)}function Gr(t,e,s,n){let r=n.includes(".")?Lr(s,n):()=>s[n];if(st(t)){const i=e[t];L(i)&&De(r,i)}else if(L(t))De(r,t.bind(s));else if(z(t))if(H(t))t.forEach(i=>Gr(i,e,s,n));else{const i=L(t.handler)?t.handler.bind(s):e[t.handler];L(i)&&De(r,i,t)}}function zr(t){const e=t.type,{mixins:s,extends:n}=e,{mixins:r,optionsCache:i,config:{optionMergeStrategies:l}}=t.appContext,o=i.get(e);let c;return o?c=o:!r.length&&!s&&!n?c=e:(c={},r.length&&r.forEach(p=>ds(c,p,l,!0)),ds(c,e,l)),z(e)&&i.set(e,c),c}function ds(t,e,s,n=!1){const{mixins:r,extends:i}=e;i&&ds(t,i,s,!0),r&&r.forEach(l=>ds(t,l,s,!0));for(const l in e)if(!(n&&l==="expose")){const o=ql[l]||s&&s[l];t[l]=o?o(t[l],e[l]):e[l]}return t}const ql={data:jn,props:Hn,emits:Hn,methods:Ee,computed:Ee,beforeCreate:pt,created:pt,beforeMount:pt,mounted:pt,beforeUpdate:pt,updated:pt,beforeDestroy:pt,beforeUnmount:pt,destroyed:pt,unmounted:pt,activated:pt,deactivated:pt,errorCaptured:pt,serverPrefetch:pt,components:Ee,directives:Ee,watch:jl,provide:jn,inject:Nl};function jn(t,e){return e?t?function(){return at(L(t)?t.call(this,this):t,L(e)?e.call(this,this):e)}:e:t}function Nl(t,e){return Ee(Qs(t),Qs(e))}function Qs(t){if(H(t)){const e={};for(let s=0;s<t.length;s++)e[t[s]]=t[s];return e}return t}function pt(t,e){return t?[...new Set([].concat(t,e))]:e}function Ee(t,e){return t?at(Object.create(null),t,e):e}function Hn(t,e){return t?H(t)&&H(e)?[...new Set([...t,...e])]:at(Object.create(null),qn(t),qn(e??{})):e}function jl(t,e){if(!t)return e;if(!e)return t;const s=at(Object.create(null),t);for(const n in e)s[n]=pt(t[n],e[n]);return s}function Jr(){return{app:null,config:{isNativeTag:fr,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Hl=0;function Ll(t,e){return function(n,r=null){L(n)||(n=at({},n)),r!=null&&!z(r)&&(r=null);const i=Jr(),l=new WeakSet,o=[];let c=!1;const p=i.app={_uid:Hl++,_component:n,_props:r,_container:null,_context:i,_instance:null,version:yo,get config(){return i.config},set config(u){},use(u,..._){return l.has(u)||(u&&L(u.install)?(l.add(u),u.install(p,..._)):L(u)&&(l.add(u),u(p,..._))),p},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),p},component(u,_){return _?(i.components[u]=_,p):i.components[u]},directive(u,_){return _?(i.directives[u]=_,p):i.directives[u]},mount(u,_,h){if(!c){const T=p._ceVNode||St(n,r);return T.appContext=i,h===!0?h="svg":h===!1&&(h=void 0),t(T,u,h),c=!0,p._container=u,u.__vue_app__=p,Os(T.component)}},onUnmount(u){o.push(u)},unmount(){c&&(Et(o,p._instance,16),t(null,p._container),delete p._container.__vue_app__)},provide(u,_){return i.provides[u]=_,p},runWithContext(u){const _=be;be=p;try{return u()}finally{be=_}}};return p}}let be=null;const Wl=(t,e)=>e==="modelValue"||e==="model-value"?t.modelModifiers:t[`${e}Modifiers`]||t[`${$t(e)}Modifiers`]||t[`${pe(e)}Modifiers`];function Bl(t,e,...s){if(t.isUnmounted)return;const n=t.vnode.props||Y;let r=s;const i=e.startsWith("update:"),l=i&&Wl(n,e.slice(7));l&&(l.trim&&(r=s.map(u=>st(u)?u.trim():u)),l.number&&(r=r.map(Ei)));let o,c=n[o=Is(e)]||n[o=Is($t(e))];!c&&i&&(c=n[o=Is(pe(e))]),c&&Et(c,t,6,r);const p=n[o+"Once"];if(p){if(!t.emitted)t.emitted={};else if(t.emitted[o])return;t.emitted[o]=!0,Et(p,t,6,r)}}const Kl=new WeakMap;function Yr(t,e,s=!1){const n=s?Kl:e.emitsCache,r=n.get(t);if(r!==void 0)return r;const i=t.emits;let l={},o=!1;if(!L(t)){const c=p=>{const u=Yr(p,e,!0);u&&(o=!0,at(l,u))};!s&&e.mixins.length&&e.mixins.forEach(c),t.extends&&c(t.extends),t.mixins&&t.mixins.forEach(c)}return!i&&!o?(z(t)&&n.set(t,null),null):(H(i)?i.forEach(c=>l[c]=null):at(l,i),z(t)&&n.set(t,l),l)}function Ms(t,e){return!t||!bs(e)?!1:(e=e.slice(2),e=e==="Once"?e:e.replace(/Once$/,""),U(t,e[0].toLowerCase()+e.slice(1))||U(t,pe(e))||U(t,e))}function Ln(t){const{type:e,vnode:s,proxy:n,withProxy:r,propsOptions:[i],slots:l,attrs:o,emit:c,render:p,renderCache:u,props:_,data:h,setupState:T,ctx:A,inheritAttrs:C}=t,D=us(t);let b,F;try{if(s.shapeFlag&4){const q=r||n,lt=q;b=jt(p.call(lt,q,u,_,T,h,A)),F=o}else{const q=e;b=jt(q.length>1?q(_,{attrs:o,slots:l,emit:c}):q(_,null)),F=e.props?o:Vl(o)}}catch(q){de.length=0,Ss(q,t,1),b=St(Zt)}let B=b;if(F&&C!==!1){const q=Object.keys(F),{shapeFlag:lt}=B;q.length&<&7&&(i&&q.some(vs)&&(F=Ul(F,i)),B=we(B,F,!1,!0))}if(s.dirs&&(B=we(B,null,!1,!0),B.dirs=B.dirs?B.dirs.concat(s.dirs):s.dirs),s.transition){const q=Cs(B.type)&&Wr(B)||B;mn(q,s.transition)}return b=B,us(D),b}const Vl=t=>{let e;for(const s in t)(s==="class"||s==="style"||bs(s))&&((e||(e={}))[s]=t[s]);return e},Ul=(t,e)=>{const s={};for(const n in t)(!vs(n)||!(n.slice(9)in e))&&(s[n]=t[n]);return s};function Gl(t,e,s){const{props:n,children:r,component:i}=t,{props:l,children:o,patchFlag:c}=e,p=i.emitsOptions;if(e.dirs||e.transition)return!0;if(s&&c>=0){if(c&1024)return!0;if(c&16)return n?Wn(n,l,p):!!l;if(c&8){const u=e.dynamicProps;for(let _=0;_<u.length;_++){const h=u[_];if(Zr(l,n,h)&&!Ms(p,h))return!0}}}else return(r||o)&&(!o||!o.$stable)?!0:n===l?!1:n?l?Wn(n,l,p):!0:!!l;return!1}function Wn(t,e,s){const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!0;for(let r=0;r<n.length;r++){const i=n[r];if(Zr(e,t,i)&&!Ms(s,i))return!0}return!1}function Zr(t,e,s){const n=t[s],r=e[s];return s==="style"&&z(n)&&z(r)?!xs(n,r):n!==r}function zl({vnode:t,parent:e,suspense:s},n){for(;e;){const r=e.subTree;if(r.suspense&&r.suspense.activeBranch===t&&(r.suspense.vnode.el=r.el=n,t=r),r===t)(t=e.vnode).el=n,e=e.parent;else break}s&&s.activeBranch===t&&(s.vnode.el=n)}const Xr={},Qr=()=>Object.create(Xr),ti=t=>Object.getPrototypeOf(t)===Xr;function Jl(t,e,s,n=!1){const r={},i=Qr();t.propsDefaults=Object.create(null),ei(t,e,r,i);for(const l in t.propsOptions[0])l in r||(r[l]=void 0);s?t.props=n?r:nl(r):t.type.props?t.props=r:t.props=i,t.attrs=i}function Yl(t,e,s,n){const{props:r,attrs:i,vnode:{patchFlag:l}}=t,o=V(r),[c]=t.propsOptions;let p=!1;if((n||l>0)&&!(l&16)){if(l&8){const u=t.vnode.dynamicProps;for(let _=0;_<u.length;_++){let h=u[_];if(Ms(t.emitsOptions,h))continue;const T=e[h];if(c)if(U(i,h))T!==i[h]&&(i[h]=T,p=!0);else{const A=$t(h);r[A]=tn(c,o,A,T,t,!1)}else T!==i[h]&&(i[h]=T,p=!0)}}}else{ei(t,e,r,i)&&(p=!0);let u;for(const _ in o)(!e||!U(e,_)&&((u=pe(_))===_||!U(e,u)))&&(c?s&&(s[_]!==void 0||s[u]!==void 0)&&(r[_]=tn(c,o,_,void 0,t,!0)):delete r[_]);if(i!==o)for(const _ in i)(!e||!U(e,_))&&(delete i[_],p=!0)}p&&Gt(t.attrs,"set","")}function ei(t,e,s,n){const[r,i]=t.propsOptions;let l=!1,o;if(e)for(let c in e){if(Ae(c))continue;const p=e[c];let u;r&&U(r,u=$t(c))?!i||!i.includes(u)?s[u]=p:(o||(o={}))[u]=p:Ms(t.emitsOptions,c)||(!(c in n)||p!==n[c])&&(n[c]=p,l=!0)}if(i){const c=V(s),p=o||Y;for(let u=0;u<i.length;u++){const _=i[u];s[_]=tn(r,c,_,p[_],t,!U(p,_))}}return l}function tn(t,e,s,n,r,i){const l=t[s];if(l!=null){const o=U(l,"default");if(o&&n===void 0){const c=l.default;if(l.type!==Function&&!l.skipFactory&&L(c)){const{propsDefaults:p}=r;if(s in p)n=p[s];else{const u=ze(r);n=p[s]=c.call(null,e),u()}}else n=c;r.ce&&r.ce._setProp(s,n)}l[0]&&(i&&!o?n=!1:l[1]&&(n===""||n===pe(s))&&(n=!0))}return n}const Zl=new WeakMap;function si(t,e,s=!1){const n=s?Zl:e.propsCache,r=n.get(t);if(r)return r;const i=t.props,l={},o=[];let c=!1;if(!L(t)){const u=_=>{c=!0;const[h,T]=si(_,e,!0);at(l,h),T&&o.push(...T)};!s&&e.mixins.length&&e.mixins.forEach(u),t.extends&&u(t.extends),t.mixins&&t.mixins.forEach(u)}if(!i&&!c)return z(t)&&n.set(t,ue),ue;if(H(i))for(let u=0;u<i.length;u++){const _=$t(i[u]);Bn(_)&&(l[_]=Y)}else if(i)for(const u in i){const _=$t(u);if(Bn(_)){const h=i[u],T=l[_]=H(h)||L(h)?{type:h}:at({},h),A=T.type;let C=!1,D=!0;if(H(A))for(let b=0;b<A.length;++b){const F=A[b],B=L(F)&&F.name;if(B==="Boolean"){C=!0;break}else B==="String"&&(D=!1)}else C=L(A)&&A.name==="Boolean";T[0]=C,T[1]=D,(C||U(T,"default"))&&o.push(_)}}const p=[l,o];return z(t)&&n.set(t,p),p}function Bn(t){return t[0]!=="$"&&!Ae(t)}const bn=t=>t==="_"||t==="_ctx"||t==="$stable",vn=t=>H(t)?t.map(jt):[jt(t)],Xl=(t,e,s)=>{if(e._n)return e;const n=ml((...r)=>vn(e(...r)),s);return n._c=!1,n},ni=(t,e,s)=>{const n=t._ctx;for(const r in t){if(bn(r))continue;const i=t[r];if(L(i))e[r]=Xl(r,i,n);else if(i!=null){const l=vn(i);e[r]=()=>l}}},ri=(t,e)=>{const s=vn(e);t.slots.default=()=>s},ii=(t,e,s)=>{for(const n in e)(s||!bn(n))&&(t[n]=e[n])},Ql=(t,e,s)=>{const n=t.slots=Qr();if(t.vnode.shapeFlag&32){const r=e._;r?(ii(n,e,s),s&&mr(n,"_",r,!0)):ni(e,n)}else e&&ri(t,e)},to=(t,e,s)=>{const{vnode:n,slots:r}=t;let i=!0,l=Y;if(n.shapeFlag&32){const o=e._;o?s&&o===1?i=!1:ii(r,e,s):(i=!e.$stable,ni(e,r)),l=e}else e&&(ri(t,e),l={default:1});if(i)for(const o in r)!bn(o)&&l[o]==null&&delete r[o]},bt=io;function eo(t){return so(t)}function so(t,e){const s=ws();s.__VUE__=!0;const{insert:n,remove:r,patchProp:i,createElement:l,createText:o,createComment:c,setText:p,setElementText:u,parentNode:_,nextSibling:h,setScopeId:T=Lt,insertStaticContent:A}=t,C=(a,d,m,S=null,w=null,k=null,E=void 0,M=null,$=!!d.dynamicChildren)=>{if(a===d)return;a&&!$e(a,d)&&(S=Qe(a),Tt(a,w,k,!0),a=null),d.patchFlag===-2&&($=!1,d.dynamicChildren=null),d.dynamicChildren&&a&&a.dynamicChildren&&a.dynamicChildren.hasOnce&&(d.dynamicChildren===ue&&(d.dynamicChildren=[]),d.dynamicChildren.hasOnce=!0);const{type:x,ref:N,shapeFlag:I}=d;switch(x){case Es:D(a,d,m,S);break;case Zt:b(a,d,m,S);break;case is:a==null&&F(d,m,S,E);break;case W:Ye(a,d,m,S,w,k,E,M,$);break;default:I&1?lt(a,d,m,S,w,k,E,M,$):I&6?Ze(a,d,m,S,w,k,E,M,$):(I&64||I&128)&&x.process(a,d,m,S,w,k,E,M,$,Se)}N!=null&&w?Re(N,a&&a.ref,k,d||a,!d):N==null&&a&&a.ref!=null&&Re(a.ref,null,k,a,!0)},D=(a,d,m,S)=>{if(a==null)n(d.el=o(d.children),m,S);else{const w=d.el=a.el;d.children!==a.children&&p(w,d.children)}},b=(a,d,m,S)=>{a==null?n(d.el=c(d.children||""),m,S):d.el=a.el},F=(a,d,m,S)=>{[a.el,a.anchor]=A(a.children,d,m,S,a.el,a.anchor)},B=({el:a,anchor:d},m,S)=>{let w;for(;a&&a!==d;)w=h(a),n(a,m,S),a=w;n(d,m,S)},q=({el:a,anchor:d})=>{let m;for(;a&&a!==d;)m=h(a),r(a),a=m;r(d)},lt=(a,d,m,S,w,k,E,M,$)=>{if(d.type==="svg"?E="svg":d.type==="math"&&(E="mathml"),a==null)Ot(d,m,S,w,k,E,M,$);else{const x=a.el&&a.el._isVueCE?a.el:null;try{x&&x._beginPatch(),Je(a,d,w,k,E,M,$)}finally{x&&x._endPatch()}}},Ot=(a,d,m,S,w,k,E,M)=>{let $,x;const{props:N,shapeFlag:I,transition:R,dirs:j}=a;if($=a.el=l(a.type,k,N&&N.is,N),I&8?u($,a.children):I&16&&Qt(a.children,$,null,S,w,Ls(a,k),E,M),j&&oe(a,null,S,"created"),At($,a,a.scopeId,E,S),N){for(const J in N)J!=="value"&&!Ae(J)&&i($,J,null,N[J],k,S);"value"in N&&i($,"value",null,N.value,k),(x=N.onVnodeBeforeMount)&&Rt(x,S,a)}j&&oe(a,null,S,"beforeMount");const K=no(w,R);K&&R.beforeEnter($),n($,d,m),((x=N&&N.onVnodeMounted)||K||j)&&bt(()=>{try{x&&Rt(x,S,a),K&&R.enter($),j&&oe(a,null,S,"mounted")}finally{}},w)},At=(a,d,m,S,w)=>{if(m&&T(a,m),S)for(let k=0;k<S.length;k++)T(a,S[k]);if(w){let k=w.subTree;if(d===k||ai(k.type)&&(k.ssContent===d||k.ssFallback===d)){const E=w.vnode;At(a,E,E.scopeId,E.slotScopeIds,w.parent)}}},Qt=(a,d,m,S,w,k,E,M,$=0)=>{for(let x=$;x<a.length;x++){const N=a[x]=M?Ut(a[x]):jt(a[x]);C(null,N,d,m,S,w,k,E,M)}},Je=(a,d,m,S,w,k,E)=>{const M=d.el=a.el;let{patchFlag:$,dynamicChildren:x,dirs:N}=d;$|=a.patchFlag&16;const I=a.props||Y,R=d.props||Y;let j;if(m&&ce(m,!1),(j=R.onVnodeBeforeUpdate)&&Rt(j,m,d,a),N&&oe(d,a,m,"beforeUpdate"),m&&ce(m,!0),x&&(!a.dynamicChildren||a.dynamicChildren.length!==x.length)&&($=0,E=!1,x=null),(I.innerHTML&&R.innerHTML==null||I.textContent&&R.textContent==null)&&u(M,""),x?re(a.dynamicChildren,x,M,m,S,Ls(d,w),k):E||Z(a,d,M,null,m,S,Ls(d,w),k,!1),$>0){if($&16)xe(M,I,R,m,w);else if($&2&&I.class!==R.class&&i(M,"class",null,R.class,w),$&4&&i(M,"style",I.style,R.style,w),$&8){const K=d.dynamicProps;for(let J=0;J<K.length;J++){const G=K[J],rt=I[G],ot=R[G];(ot!==rt||G==="value")&&i(M,G,rt,ot,w,m)}}$&1&&a.children!==d.children&&u(M,d.children)}else!E&&x==null&&xe(M,I,R,m,w);((j=R.onVnodeUpdated)||N)&&bt(()=>{j&&Rt(j,m,d,a),N&&oe(d,a,m,"updated")},S)},re=(a,d,m,S,w,k,E)=>{for(let M=0;M<d.length;M++){const $=a[M],x=d[M],N=$.el&&($.type===W||!$e($,x)||$.shapeFlag&198)?_($.el):m;C($,x,N,null,S,w,k,E,!0)}},xe=(a,d,m,S,w)=>{if(d!==m){if(d!==Y)for(const k in d)!Ae(k)&&!(k in m)&&i(a,k,d[k],null,w,S);for(const k in m){if(Ae(k))continue;const E=m[k],M=d[k];E!==M&&k!=="value"&&i(a,k,M,E,w,S)}"value"in m&&i(a,"value",d.value,m.value,w)}},Ye=(a,d,m,S,w,k,E,M,$)=>{const x=d.el=a?a.el:o(""),N=d.anchor=a?a.anchor:o("");let{patchFlag:I,dynamicChildren:R,slotScopeIds:j}=d;j&&(M=M?M.concat(j):j),a==null?(n(x,m,S),n(N,m,S),Qt(d.children||[],m,N,w,k,E,M,$)):I>0&&I&64&&R&&a.dynamicChildren&&a.dynamicChildren.length===R.length?(re(a.dynamicChildren,R,m,w,k,E,M),(d.key!=null||w&&d===w.subTree)&&li(a,d,!0)):Z(a,d,m,N,w,k,E,M,$)},Ze=(a,d,m,S,w,k,E,M,$)=>{d.slotScopeIds=M,a==null?d.shapeFlag&512?w.ctx.activate(d,m,S,E,$):As(d,m,S,w,k,E,$):wn(a,d,$)},As=(a,d,m,S,w,k,E)=>{const M=a.component=po(a,S,w);if(gn(a)&&(M.ctx.renderer=Se),_o(M,!1,E),M.asyncDep){if(w&&w.registerDep(M,dt,E),!a.el){const $=M.subTree=St(Zt);b(null,$,d,m),a.placeholder=$.el}}else dt(M,a,d,m,w,k,E)},wn=(a,d,m)=>{const S=d.component=a.component;if(Gl(a,d,m))if(S.asyncDep&&!S.asyncResolved){d.el=a.el,et(S,d,m);return}else S.next=d,S.update();else d.el=a.el,S.vnode=d},dt=(a,d,m,S,w,k,E)=>{const M=()=>{if(a.isMounted){let{next:I,bu:R,u:j,parent:K,vnode:J}=a;{const It=oi(a);if(It){I&&(I.el=J.el,et(a,I,E)),It.asyncDep.then(()=>{bt(()=>{a.isUnmounted||x()},w)});return}}let G=I,rt;ce(a,!1),I?(I.el=J.el,et(a,I,E)):I=J,R&&Ds(R),(rt=I.props&&I.props.onVnodeBeforeUpdate)&&Rt(rt,K,I,J),ce(a,!0);const ot=Ln(a),Pt=a.subTree;a.subTree=ot,C(Pt,ot,_(Pt.el),Qe(Pt),a,w,k),I.el=ot.el,G===null&&zl(a,ot.el),j&&bt(j,w),(rt=I.props&&I.props.onVnodeUpdated)&&bt(()=>Rt(rt,K,I,J),w)}else{let I;const{el:R,props:j}=d,{bm:K,m:J,parent:G,root:rt,type:ot}=a,Pt=Fe(d);ce(a,!1),K&&Ds(K),!Pt&&(I=j&&j.onVnodeBeforeMount)&&Rt(I,G,d),ce(a,!0);{rt.ce&&rt.ce._hasShadowRoot()&&rt.ce._injectChildStyle(ot,a.parent?a.parent.type:void 0);const It=a.subTree=Ln(a);C(null,It,m,S,a,w,k),d.el=It.el}if(J&&bt(J,w),!Pt&&(I=j&&j.onVnodeMounted)){const It=d;bt(()=>Rt(I,G,It),w)}(d.shapeFlag&256||G&&Fe(G.vnode)&&G.vnode.shapeFlag&256)&&a.a&&bt(a.a,w),a.isMounted=!0,d=m=S=null}};a.scope.on();const $=a.effect=new yr(M);a.scope.off();const x=a.update=$.run.bind($),N=a.job=$.runIfDirty.bind($);N.i=a,N.id=a.uid,$.scheduler=()=>_n(N),ce(a,!0),x()},et=(a,d,m)=>{d.component=a;const S=a.vnode.props;a.vnode=d,a.next=null,Yl(a,d.props,S,m),to(a,d.children,m),Jt(),In(a),Yt()},Z=(a,d,m,S,w,k,E,M,$=!1)=>{const x=a&&a.children,N=a?a.shapeFlag:0,I=d.children,{patchFlag:R,shapeFlag:j}=d;if(R>0){if(R&128){Xe(x,I,m,S,w,k,E,M,$);return}else if(R&256){ie(x,I,m,S,w,k,E,M,$);return}}j&8?(N&16&&ke(x,w,k),I!==x&&u(m,I)):N&16?j&16?Xe(x,I,m,S,w,k,E,M,$):ke(x,w,k,!0):(N&8&&u(m,""),j&16&&Qt(I,m,S,w,k,E,M,$))},ie=(a,d,m,S,w,k,E,M,$)=>{a=a||ue,d=d||ue;const x=a.length,N=d.length,I=Math.min(x,N);let R;for(R=0;R<I;R++){const j=d[R]=$?Ut(d[R]):jt(d[R]);C(a[R],j,m,null,w,k,E,M,$)}x>N?ke(a,w,k,!0,!1,I):Qt(d,m,S,w,k,E,M,$,I)},Xe=(a,d,m,S,w,k,E,M,$)=>{let x=0;const N=d.length;let I=a.length-1,R=N-1;for(;x<=I&&x<=R;){const j=a[x],K=d[x]=$?Ut(d[x]):jt(d[x]);if($e(j,K))C(j,K,m,null,w,k,E,M,$);else break;x++}for(;x<=I&&x<=R;){const j=a[I],K=d[R]=$?Ut(d[R]):jt(d[R]);if($e(j,K))C(j,K,m,null,w,k,E,M,$);else break;I--,R--}if(x>I){if(x<=R){const j=R+1,K=j<N?d[j].el:S;for(;x<=R;)C(null,d[x]=$?Ut(d[x]):jt(d[x]),m,K,w,k,E,M,$),x++}}else if(x>R)for(;x<=I;)Tt(a[x],w,k,!0),x++;else{const j=x,K=x,J=new Map;for(x=K;x<=R;x++){const yt=d[x]=$?Ut(d[x]):jt(d[x]);yt.key!=null&&J.set(yt.key,x)}let G,rt=0;const ot=R-K+1;let Pt=!1,It=0;const Ce=new Array(ot);for(x=0;x<ot;x++)Ce[x]=0;for(x=j;x<=I;x++){const yt=a[x];if(rt>=ot){Tt(yt,w,k,!0);continue}let Dt;if(yt.key!=null)Dt=J.get(yt.key);else for(G=K;G<=R;G++)if(Ce[G-K]===0&&$e(yt,d[G])){Dt=G;break}Dt===void 0?Tt(yt,w,k,!0):(Ce[Dt-K]=x+1,Dt>=It?It=Dt:Pt=!0,C(yt,d[Dt],m,null,w,k,E,M,$),rt++)}const Sn=Pt?ro(Ce):ue;for(G=Sn.length-1,x=ot-1;x>=0;x--){const yt=K+x,Dt=d[yt],Cn=d[yt+1],Tn=yt+1<N?Cn.el||ci(Cn):S;Ce[x]===0?C(null,Dt,m,Tn,w,k,E,M,$):Pt&&(G<0||x!==Sn[G]?le(Dt,m,Tn,2):G--)}}},le=(a,d,m,S,w=null)=>{const{el:k,type:E,transition:M,children:$,shapeFlag:x}=a;if(x&6){le(a.component.subTree,d,m,S);return}if(x&128){a.suspense.move(d,m,S);return}if(x&64){E.move(a,d,m,Se);return}if(E===W){n(k,d,m);for(let I=0;I<$.length;I++)le($[I],d,m,S);n(a.anchor,d,m);return}if(E===is){B(a,d,m);return}if(S!==2&&x&1&&M)if(S===0)M.persisted&&!k[js]?n(k,d,m):(M.beforeEnter(k),n(k,d,m),bt(()=>M.enter(k),w));else{const{leave:I,delayLeave:R,afterLeave:j}=M,K=()=>{a.ctx.isUnmounted?r(k):n(k,d,m)},J=()=>{const G=k._isLeaving||!!k[js];k._isLeaving&&k[js](!0),M.persisted&&!G?K():I(k,()=>{K(),j&&j()})};R?R(k,K,J):J()}else n(k,d,m)},Tt=(a,d,m,S=!1,w=!1)=>{const{type:k,props:E,ref:M,children:$,dynamicChildren:x,shapeFlag:N,patchFlag:I,dirs:R,cacheIndex:j,memo:K}=a;if((I===-2||x&&x.hasOnce)&&(w=!1),M!=null&&(Jt(),Re(M,null,m,a,!0),Yt()),j!=null&&(!a.ctx||a.ctx===d)&&(d.renderCache[j]=void 0),N&256){d.ctx.deactivate(a);return}const J=N&1&&R,G=!Fe(a);let rt;if(G&&(rt=E&&E.onVnodeBeforeUnmount)&&Rt(rt,d,a),N&6)Si(a.component,m,S);else{if(N&128){a.suspense.unmount(m,S);return}J&&oe(a,null,d,"beforeUnmount"),N&64?a.type.remove(a,d,m,Se,S):x&&!x.hasOnce&&(k!==W||I>0&&I&64)?ke(x,d,m,!1,!0):(k===W&&I&384||!w&&N&16)&&ke($,d,m),S&&xn(a)}const ot=K!=null&&j==null;(G&&(rt=E&&E.onVnodeUnmounted)||J||ot)&&bt(()=>{rt&&Rt(rt,d,a),J&&oe(a,null,d,"unmounted"),ot&&(a.el=null)},m)},xn=a=>{const{type:d,el:m,anchor:S,transition:w}=a;if(d===W){ki(m,S);return}if(d===is){q(a),w&&!w.persisted&&w.afterLeave&&w.afterLeave();return}const k=()=>{r(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(a.shapeFlag&1&&w&&!w.persisted){const{leave:E,delayLeave:M}=w,$=()=>E(m,k);M?M(a.el,k,$):$()}else k()},ki=(a,d)=>{let m;for(;a!==d;)m=h(a),r(a),a=m;r(d)},Si=(a,d,m)=>{const{bum:S,scope:w,job:k,subTree:E,um:M,m:$,a:x}=a;Kn($),Kn(x),S&&Ds(S),w.stop(),k?(k.flags|=8,Tt(E,a,d,m)):a.vnode.el&&E&&(E.transition=a.vnode.transition,Tt(E,a,d,m)),M&&bt(M,d),bt(()=>{a.isUnmounted=!0},d)},ke=(a,d,m,S=!1,w=!1,k=0)=>{for(let E=k;E<a.length;E++)Tt(a[E],d,m,S,w)},Qe=a=>{if(a.shapeFlag&6)return Qe(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const d=h(a.anchor||a.el),m=d&&d[wl];return m?h(m):d};let Ps=!1;const kn=(a,d,m)=>{let S;a==null?d._vnode&&(Tt(d._vnode,null,null,!0),S=d._vnode.component):C(d._vnode||null,a,d,null,null,null,m),d._vnode=a,Ps||(Ps=!0,In(S),qr(),Ps=!1)},Se={p:C,um:Tt,m:le,r:xn,mt:As,mc:Qt,pc:Z,pbc:re,n:Qe,o:t};return{render:kn,hydrate:void 0,createApp:Ll(kn)}}function Ls({type:t,props:e},s){return s==="svg"&&t==="foreignObject"||s==="mathml"&&t==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:s}function ce({effect:t,job:e},s){s?(t.flags|=32,e.flags|=4):(t.flags&=-33,e.flags&=-5)}function no(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function li(t,e,s=!1){const n=t.children,r=e.children;if(H(n)&&H(r))for(let i=0;i<n.length;i++){const l=n[i];let o=r[i];o.shapeFlag&1&&!o.dynamicChildren&&((o.patchFlag<=0||o.patchFlag===32)&&(o=r[i]=Ut(r[i]),o.el=l.el),!s&&o.patchFlag!==-2&&li(l,o)),o.type===Es&&(o.patchFlag===-1&&(o=r[i]=Ut(o)),o.el=l.el),o.type===Zt&&!o.el&&(o.el=l.el)}}function ro(t){const e=t.slice(),s=[0];let n,r,i,l,o;const c=t.length;for(n=0;n<c;n++){const p=t[n];if(p!==0){if(r=s[s.length-1],t[r]<p){e[n]=r,s.push(n);continue}for(i=0,l=s.length-1;i<l;)o=i+l>>1,t[s[o]]<p?i=o+1:l=o;p<t[s[i]]&&(i>0&&(e[n]=s[i-1]),s[i]=n)}}for(i=s.length,l=s[i-1];i-- >0;)s[i]=l,l=e[l];return s}function oi(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:oi(e)}function Kn(t){if(t)for(let e=0;e<t.length;e++)t[e].flags|=8}function ci(t){if(t.placeholder)return t.placeholder;const e=t.component;return e?ci(e.subTree):null}const ai=t=>t.__isSuspense;function io(t,e){e&&e.pendingBranch?H(t)?e.effects.push(...t):e.effects.push(t):_l(t)}const W=Symbol.for("v-fgt"),Es=Symbol.for("v-txt"),Zt=Symbol.for("v-cmt"),is=Symbol.for("v-stc"),de=[];let wt=null;function O(t=!1){de.push(wt=t?null:[])}function ui(){de.pop(),wt=de[de.length-1]||null}let We=1;function Vn(t,e=!1){We+=t,t<0&&wt&&e&&(wt.hasOnce=!0)}function fi(t){return t.dynamicChildren=We>0?wt||ue:null,ui(),We>0&&wt&&wt.push(t),t}function P(t,e,s,n,r,i){return fi(f(t,e,s,n,r,i,!0))}function ve(t,e,s,n,r){return fi(St(t,e,s,n,r,!0))}function di(t){return t?t.__v_isVNode===!0:!1}function $e(t,e){return t.type===e.type&&t.key===e.key}const pi=({key:t})=>t??null,ls=({ref:t,ref_key:e,ref_for:s})=>(typeof t=="number"&&(t=""+t),t!=null?st(t)||ft(t)||L(t)?{i:xt,r:t,k:e,f:!!s}:t:null);function f(t,e=null,s=null,n=0,r=null,i=t===W?0:1,l=!1,o=!1){const c={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&pi(e),ref:e&&ls(e),scopeId:jr,slotScopeIds:null,children:s,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:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:xt};return o?(ps(c,s),i&128&&t.normalize(c)):s&&(c.shapeFlag|=st(s)?8:16),We>0&&!l&&wt&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&wt.push(c),c}const St=lo;function lo(t,e=null,s=null,n=0,r=null,i=!1){if((!t||t===Il)&&(t=Zt),di(t)){const o=we(t,e,!0);return s&&ps(o,s),We>0&&!i&&wt&&(o.shapeFlag&6?wt[wt.indexOf(t)]=o:wt.push(o)),o.patchFlag=-2,o}if(vo(t)&&(t=t.__vccOpts),e){e=oo(e);let{class:o,style:c}=e;o&&!st(o)&&(e.class=vt(o)),z(c)&&(hn(c)&&!H(c)&&(c=at({},c)),e.style=mt(c))}const l=st(t)?1:ai(t)?128:Cs(t)?64:z(t)?4:L(t)?2:0;return f(t,e,s,n,r,l,i,!0)}function oo(t){return t?hn(t)||ti(t)?at({},t):t:null}function we(t,e,s=!1,n=!1){const{props:r,ref:i,patchFlag:l,children:o,transition:c}=t,p=e?ao(r||{},e):r,u={__v_isVNode:!0,__v_skip:!0,type:t.type,props:p,key:p&&pi(p),ref:e&&e.ref?s&&i?H(i)?i.concat(ls(e)):[i,ls(e)]:ls(e):i,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:o,target:t.target,targetStart:t.targetStart,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==W?l===-1?16:l|16:l,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:c,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&we(t.ssContent),ssFallback:t.ssFallback&&we(t.ssFallback),placeholder:t.placeholder,el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce,cacheIndex:t.cacheIndex};return c&&n&&mn(u,c.clone(u)),u}function tt(t=" ",e=0){return St(Es,null,t,e)}function co(t,e){const s=St(is,null,t);return s.staticCount=e,s}function _t(t="",e=!1){return e?(O(),ve(Zt,null,t)):St(Zt,null,t)}function jt(t){return t==null||typeof t=="boolean"?St(Zt):H(t)?St(W,null,t.slice()):di(t)?Ut(t):St(Es,null,String(t))}function Ut(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:we(t)}function ps(t,e){let s=0;const{shapeFlag:n}=t;if(e==null)e=null;else if(H(e))s=16;else if(typeof e=="object")if(n&65){const r=e.default;r&&(r._c&&(r._d=!1),ps(t,r()),r._c&&(r._d=!0));return}else{s=32;const r=e._;!r&&!ti(e)?e._ctx=xt:r===3&&xt&&(xt.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else if(L(e)){if(n&65){ps(t,{default:e});return}e={default:e,_ctx:xt},s=32}else e=String(e),n&64?(s=16,e=[tt(e)]):s=8;t.children=e,t.shapeFlag|=s}function ao(...t){const e={};for(let s=0;s<t.length;s++){const n=t[s];for(const r in n)if(r==="class")e.class!==n.class&&(e.class=vt([e.class,n.class]));else if(r==="style")e.style=mt([e.style,n.style]);else if(bs(r)){const i=e[r],l=n[r];l&&i!==l&&!(H(i)&&i.includes(l))?e[r]=i?[].concat(i,l):l:l==null&&i==null&&!vs(r)&&(e[r]=l)}else r!==""&&(e[r]=n[r])}return e}function Rt(t,e,s,n=null){Et(t,e,7,[s,n])}const uo=Jr();let fo=0;function po(t,e,s){const n=t.type,r=(e?e.appContext:t.appContext)||uo,i={uid:fo++,vnode:t,type:n,parent:e,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Ni(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:e?e.provides:Object.create(r.provides),ids:e?e.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:si(n,r),emitsOptions:Yr(n,r),emit:null,emitted:null,propsDefaults:Y,inheritAttrs:n.inheritAttrs,ctx:Y,data:Y,props:Y,attrs:Y,slots:Y,refs:Y,setupState:Y,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=e?e.root:i,i.emit=Bl.bind(null,i),t.ce&&t.ce(i),i}let gt=null;const ho=()=>gt||xt;let hs,Be;{const t=ws(),e=(s,n)=>{let r;return(r=t[s])||(r=t[s]=[]),r.push(n),i=>{r.length>1?r.forEach(l=>l(i)):r[0](i)}};hs=e("__VUE_INSTANCE_SETTERS__",s=>gt=s),Be=e("__VUE_SSR_SETTERS__",s=>Ke=s)}const ze=t=>{const e=gt;return hs(t),t.scope.on(),()=>{t.scope.off(),hs(e)}},Un=()=>{gt&>.scope.off(),hs(null)};function hi(t){return t.vnode.shapeFlag&4}let Ke=!1;function _o(t,e=!1,s=!1){e&&Be(e);const{props:n,children:r}=t.vnode,i=hi(t);Jl(t,n,i,e),Ql(t,r,s||e);const l=i?mo(t,e):void 0;return e&&Be(!1),l}function mo(t,e){const s=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,Dl);const{setup:n}=s;if(n){Jt();const r=t.setupContext=n.length>1?bo(t):null,i=ze(t),l=Ge(n,t,0,[t.props,r]),o=dr(l);if(Yt(),i(),(o||t.sp)&&!Fe(t)&&Br(t),o){if(l.then(Un,Un),e)return l.then(c=>{Be(!0);try{Gn(t,c,e)}finally{Be(!1)}}).catch(c=>{Ss(c,t,0)});t.asyncDep=l}else Gn(t,l)}else _i(t)}function Gn(t,e,s){L(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:z(e)&&(t.setupState=Dr(e)),_i(t)}function _i(t,e,s){const n=t.type;t.render||(t.render=n.render||Lt);{const r=ze(t);Jt();try{Rl(t)}finally{Yt(),r()}}}const go={get(t,e){return ut(t,"get",""),t[e]}};function bo(t){const e=s=>{t.exposed=s||{}};return{attrs:new Proxy(t.attrs,go),slots:t.slots,emit:t.emit,expose:e}}function Os(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(Dr(rl(t.exposed)),{get(e,s){if(s in e)return e[s];if(s in qe)return qe[s](t)},has(e,s){return s in e||s in qe}})):t.proxy}function vo(t){return L(t)&&"__vccOpts"in t}const Q=(t,e)=>al(t,e,Ke),yo="3.5.43";/**
- * @vue/runtime-dom v3.5.43
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
- * @license MIT
- **/let en;const zn=typeof window<"u"&&window.trustedTypes;if(zn)try{en=zn.createPolicy("vue",{createHTML:t=>t})}catch{}const mi=en?t=>en.createHTML(t):t=>t,wo="http://www.w3.org/2000/svg",xo="http://www.w3.org/1998/Math/MathML",Vt=typeof document<"u"?document:null,Jn=Vt&&Vt.createElement("template"),ko={insert:(t,e,s)=>{e.insertBefore(t,s||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,s,n)=>{const r=e==="svg"?Vt.createElementNS(wo,t):e==="mathml"?Vt.createElementNS(xo,t):s?Vt.createElement(t,{is:s}):Vt.createElement(t);return t==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:t=>Vt.createTextNode(t),createComment:t=>Vt.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>Vt.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,s,n,r,i){const l=s?s.previousSibling:e.lastChild;if(r&&(r===i||r.nextSibling))for(;e.insertBefore(r.cloneNode(!0),s),!(r===i||!(r=r.nextSibling)););else{Jn.innerHTML=mi(n==="svg"?`<svg>${t}</svg>`:n==="mathml"?`<math>${t}</math>`:t);const o=Jn.content;if(n==="svg"||n==="mathml"){const c=o.firstChild;for(;c.firstChild;)o.appendChild(c.firstChild);o.removeChild(c)}e.insertBefore(o,s)}return[l?l.nextSibling:e.firstChild,s?s.previousSibling:e.lastChild]}},So=Symbol("_vtc");function Co(t,e,s){const n=t[So];n&&(e=(e?[e,...n]:[...n]).join(" ")),e==null?t.removeAttribute("class"):s?t.setAttribute("class",e):t.className=e}const _s=Symbol("_vod"),gi=Symbol("_vsh"),Yn={name:"show",beforeMount(t,{value:e},{transition:s}){t[_s]=t.style.display==="none"?"":t.style.display,s&&e?s.beforeEnter(t):Me(t,e)},mounted(t,{value:e},{transition:s}){s&&e&&s.enter(t)},updated(t,{value:e,oldValue:s},{transition:n}){!e!=!s&&(n?e?(n.beforeEnter(t),Me(t,!0),n.enter(t)):n.leave(t,()=>{Me(t,!1)}):Me(t,e))},beforeUnmount(t,{value:e}){Me(t,e)}};function Me(t,e){t.style.display=e?t[_s]:"none",t[gi]=!e}const To=Symbol(""),$o=/(?:^|;)\s*display\s*:/;function Mo(t,e,s){const n=t.style,r=st(s);let i=!1;if(s&&!r){if(e)if(st(e))for(const l of e.split(";")){const o=l.slice(0,l.indexOf(":")).trim();s[o]==null&&Oe(n,o,"")}else for(const l in e)s[l]==null&&Oe(n,l,"");for(const l in s){l==="display"&&(i=!0);const o=s[l];o!=null?Oo(t,l,!st(e)&&e?e[l]:void 0,o)||Oe(n,l,o):Oe(n,l,"")}}else if(r){if(e!==s){const l=n[To];l&&(s+=";"+l),n.cssText=s,i=$o.test(s)}}else e&&t.removeAttribute("style");_s in t&&(t[_s]=i?n.display:"",t[gi]&&(n.display="none"))}const ns=/\s*!important$/;function Oe(t,e,s){if(H(s))s.forEach(n=>Oe(t,e,n));else if(s==null&&(s=""),e.startsWith("--"))ns.test(s)?t.setProperty(e,s.replace(ns,""),"important"):t.setProperty(e,s);else{const n=Eo(t,e);ns.test(s)?t.setProperty(pe(n),s.replace(ns,""),"important"):t[n]=s}}const Zn=["Webkit","Moz","ms"],Ws={};function Eo(t,e){const s=Ws[e];if(s)return s;let n=$t(e);if(n!=="filter"&&n in t)return Ws[e]=n;n=_r(n);for(let r=0;r<Zn.length;r++){const i=Zn[r]+n;if(i in t)return Ws[e]=i}return e}function Oo(t,e,s,n){return t.tagName==="TEXTAREA"&&(e==="width"||e==="height")&&st(n)&&s===n}const Xn="http://www.w3.org/1999/xlink";function Qn(t,e,s,n,r,i=Ri(e)){n&&e.startsWith("xlink:")?s==null?t.removeAttributeNS(Xn,e.slice(6,e.length)):t.setAttributeNS(Xn,e,s):s==null||i&&!gr(s)?t.removeAttribute(e):t.setAttribute(e,i?"":Wt(s)?String(s):s)}function tr(t,e,s,n,r){if(e==="innerHTML"||e==="textContent"){s!=null&&(t[e]=e==="innerHTML"?mi(s):s);return}const i=t.tagName;if(e==="value"&&i!=="PROGRESS"&&!i.includes("-")){const o=i==="OPTION"?t.getAttribute("value")||"":t.value,c=s==null?t.type==="checkbox"?"on":"":String(s);(o!==c||!("_value"in t))&&(t.value=c),s==null&&t.removeAttribute(e),t._value=s;return}let l=!1;if(s===""||s==null){const o=typeof t[e];o==="boolean"?s=gr(s):s==null&&o==="string"?(s="",l=!0):o==="number"&&(s=0,l=!0)}try{t[e]=s}catch{}l&&t.removeAttribute(r||e)}function Ao(t,e,s,n){t.addEventListener(e,s,n)}function Po(t,e,s,n){t.removeEventListener(e,s,n)}const er=Symbol("_vei");function Io(t,e,s,n,r=null){const i=t[er]||(t[er]={}),l=i[e];if(n&&l)l.value=n;else{const[o,c]=Fo(e);if(n){const p=i[e]=jo(n,r);Ao(t,o,p,c)}else l&&(Po(t,o,l,c),i[e]=void 0)}}const Do=/(Once|Passive|Capture)$/,Ro=/^on:?(?:Once|Passive|Capture)$/;function Fo(t){let e,s;for(;(s=t.match(Do))&&!Ro.test(t);)e||(e={}),t=t.slice(0,t.length-s[1].length),e[s[1].toLowerCase()]=!0;return[t[2]===":"?t.slice(3):pe(t.slice(2)),e]}let Bs=0;const qo=Promise.resolve(),No=()=>Bs||(qo.then(()=>Bs=0),Bs=Date.now());function jo(t,e){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;const r=s.value;if(H(r)){const i=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{i.call(n),n._stopped=!0};const l=r.slice(),o=[n];for(let c=0;c<l.length&&!n._stopped;c++){const p=l[c];p&&Et(p,e,5,o)}}else Et(r,e,5,[n])};return s.value=t,s.attached=No(),s}const sr=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,Ho=(t,e,s,n,r,i)=>{const l=r==="svg";e==="class"?Co(t,n,l):e==="style"?Mo(t,s,n):bs(e)?vs(e)||Io(t,e,s,n,i):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):Lo(t,e,n,l))?(tr(t,e,n),!t.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&Qn(t,e,n,l,i,e!=="value")):t._isVueCE&&(Wo(t,e)||t._def.__asyncLoader&&(/[A-Z]/.test(e)||!st(n)))?tr(t,$t(e),n,i,e):(e==="true-value"?t._trueValue=n:e==="false-value"&&(t._falseValue=n),Qn(t,e,n,l))};function Lo(t,e,s,n){if(n)return!!(e==="innerHTML"||e==="textContent"||e in t&&sr(e)&&L(s));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="sandbox"&&t.tagName==="IFRAME"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const r=t.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return sr(e)&&st(s)?!1:e in t}function Wo(t,e){const s=t._def.props;if(!s)return!1;const n=$t(e);return Array.isArray(s)?s.some(r=>$t(r)===n):Object.keys(s).some(r=>$t(r)===n)}const Bo=at({patchProp:Ho},ko);let nr;function Ko(){return nr||(nr=eo(Bo))}const Vo=((...t)=>{const e=Ko().createApp(...t),{mount:s}=e;return e.mount=n=>{const r=Go(n);if(!r)return;const i=e._component;!L(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const l=s(r,!1,Uo(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),l},e});function Uo(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function Go(t){return st(t)?document.querySelector(t):t}const bi={fleet:"/api/fleet",curves:"/api/curves",channels:"/api/channels",facts:"/api/facts",maintSurvey:"/api/maint_survey",maintStd:"/api/maint_std",maintFramework:"/api/maint_framework",dqFindings:"/api/dq_findings",ontList:"/api/ont_list",askStatus:"/api/ask_status",askModels:"/api/ask_models",vibcms:"/api/vibcms",algoHealth:"/algorithm/healthz",algoEndpoints:"/algorithm/api/endpoints",algoMatrix:"/algorithm/api/matrix",algoReliability:"/algorithm/api/reliability",algoPurity:"/algorithm/api/curves_check"};async function vi(t,e){const s=bi[t],n=performance.now();try{const r=await fetch(s,{headers:{Accept:"application/json",...e?.body?{"Content-Type":"application/json"}:{}},...e}),i=await r.text();let l=i;try{l=JSON.parse(i)}catch{}return{name:t,path:s,ok:r.ok,status:r.status,ms:Math.round(performance.now()-n),data:l}}catch(r){return{name:t,path:s,ok:!1,status:0,ms:Math.round(performance.now()-n),error:r instanceof Error?r.message:String(r)}}}const Ks=["facts","maintSurvey","ontList","askStatus","channels","dqFindings","algoHealth","algoEndpoints","algoMatrix","algoReliability","algoPurity"],zo={class:"card"},Jo={class:"hint"},Yo=["disabled"],Zo={class:"hint"},Xo=he({__name:"ContractSmoke",setup(t){const e=Nt([]),s=Nt(!1),n=Nt(0);function r(l){return Array.isArray(l)?`list[${l.length}]`:l&&typeof l=="object"?Object.keys(l).slice(0,8).join(", "):typeof l}async function i(){s.value=!0,e.value=[],n.value=0;for(const l of Ks){const o=await vi(l);e.value.push({name:l,path:o.path,ok:o.ok,status:o.status,ms:o.ms,keys:r(o.data),error:o.error}),n.value+=1}s.value=!1}return $s(i),(l,o)=>(O(),P("section",zo,[o[3]||(o[3]=f("h2",null,[tt("契约自检 "),f("small",null,"(后端结构与算法服务可达性;对拍基准见 docs/接口契约_前后端_v0.1.md)")],-1)),f("p",Jo,[tt(" 进度 "+g(n.value)+"/"+g(v(Ks).length)+' · 只判"通不通",不比数据值(值随数据变,锚点在 Python 侧的门禁里) ',1),f("button",{class:"re",disabled:s.value,onClick:i},"重跑",8,Yo)]),f("table",null,[o[0]||(o[0]=f("thead",null,[f("tr",null,[f("th",null,"接口"),f("th",null,"路径"),f("th",null,"状态"),f("th",null,"耗时"),f("th",null,"顶层键 / 形状")])],-1)),f("tbody",null,[(O(!0),P(W,null,nt(e.value,c=>(O(),P("tr",{key:c.name,class:vt({bad:!c.ok})},[f("td",null,g(c.name),1),f("td",null,[f("code",null,g(c.path),1)]),f("td",null,g(c.status),1),f("td",null,g(c.ms)+" ms",1),f("td",null,g(c.error||c.keys),1)],2))),128))])]),f("p",Zo,[tt(" 契约登记接口合计 "+g(Object.keys(v(bi)).length)+" 条(本页抽样 "+g(v(Ks).length)+" 条); 全量 42 条由 ",1),o[1]||(o[1]=f("code",null,"python scripts/http_contract_audit.py",-1)),o[2]||(o[2]=tt(" 在线复核。 ",-1))])]))}}),Qo={"app.brand":"观澜","app.build":"最新完成构建","app.lang_en":"英文","app.lang_zh":"中文","app.subtitle":"海上风电场","app.title":"观澜 · 风电数据分析与决策支持","ask.common_q":"{cat} · 常用问题 (点即问, 或下方自由输入)","ask.done_meta":"模型 {m} · 用时 {s} 秒 · {n} 步","ask.elapsed":"{s} 秒","ask.empty":"问题为空","ask.en_qa_failed":"英文质检未通过: 已拦截这次模型回答, 请重新提问。","ask.error":"出错: {e}","ask.go":"提问","ask.grounding":"答案句句带 [对象id] 溯源 + 数据回抓校验核验; 判级只转述本体原文带审级, 模型零判级权。","ask.idle":"空闲 — 点常用问题或输入后提问。串行一次一问。","ask.local_down":"本机模型未启动 (Ollama 127.0.0.1:11434 未响应); 离线版不转云","ask.model":"模型","ask.no_models":"无可用模型","ask.offline":"离线版: 模型问答需连接系统。","ask.partial":"初答 · 27B 复核中","ask.placeholder":"自由提问 ({cat})","ask.question":"问题: {q}","ask.refined":"已复核 (默认档 {m} 未过成文校验, 由更强模型重答)","ask.refs.none":"无匹配契约条目 (契约 {sha}): 本回答未被结构化事实契约背书, 按模型输出对待","ask.refs.title":"契约引用 ({n} 条, 契约 {sha}) — 按问题/回答匹配的可交付结论, 引文来自 qa_refs","ask.review":"交叉审核 · {m}","ask.review_err":"审核未完成: {e}","ask.review_note":"由另一模型基于同一份证据复核上述答案。溯源核验仅校验数字与机组号是否越界, 本项校验结论是否有证据支撑。","ask.running":"推理中…","ask.verify_bad":"溯源核验未全过 (引用 {n})","ask.verify_ok":"溯源核验 {n}/{n} 全真","ask.xrev":"交叉审核","ask.xrev_note":"(DeepSeek 14B 互审, +约 1 分钟)","ask.xrev_title":"由另一模型基于同一份证据复核; 同一模型自审无法构成独立校验","asst.alarm_type":"告警类型 {t}","asst.cause_counts":"手册 {r} 次 · 工单 {w} 次 · 涉码 {c}","asst.causes":"← 可能原因 (手册排查方向 + 工单实证)","asst.check":"查什么","asst.code_placeholder":"报警码, 如 3225 / 3130 / 13902","asst.common":"常见","asst.corrective":"抢修","asst.corrective_flow":"报警码 → 失效模式 → 手册分步处置 → 历史工单","asst.drawings":"对应图纸","asst.failmodes":"指向的失效模式","asst.faulttree":"故障树","asst.faulttree_flow":"按证据量排序的系统失效模式 + 部件级成因","asst.fm_counts":"该类本场报警 {a} 条 / 工单 {w} 条","asst.head":"检修助手 — 确定性本体查询","asst.head_note":"结果逐字取自手册与工单, 不经模型","asst.identity":"系统 {sys} · 本场 {n} 条","asst.interval":"周期 {i}","asst.known_tags":"该系统手册出现过的位号 (对图纸时参考):","asst.no_causes":"(手册无该类排查条目 — 原因层待补)","asst.no_name":"(码表未收录)","asst.no_steps":"本码无手册处置条目 (手册覆盖本场 161/322 码) — 需查图纸或联系厂商支持。","asst.node":"节点","asst.nodes":"应检节点 · {c}","asst.nodes_note":"手册此步未给位号 → 按回路构成展开, 逐点查","asst.prev_empty":"(该系统无匹配的年度维护条目 — 维护作业指导书按位置代号编排, 未必逐系统对齐)","asst.prev_fm":"失效模式 (按本场报警量)","asst.prev_head":"{sys} 预防链 · 失效模式 {f} 类 · 预防性任务 {n} 项","asst.prev_tasks":"年度任务","asst.preventive":"预防性维护","asst.preventive_flow":"系统 → 失效模式 → 年度任务 → 作业指导步骤","asst.qty":"量: {q}","asst.query_failed":"查询失败: {e}","asst.querying":"查询中…","asst.spec_name":"名称","asst.spec_no":"参数号","asst.spec_range":"允许范围","asst.spec_val":"整定值","asst.specs":"判定规范 (实机参数表)","asst.step_n":"第 {n} 步","asst.steps":"现场处置 {n} 步","asst.steps_note":"节点部件 = 手册原文元件位号 (确定); 判定规范 = 实机参数表按物理量匹配的候选判据, 非厂商绑定 — 现场以铭牌与图纸复核。","asst.tags":"节点部件","asst.tree_codes":"征兆码 {c}","asst.tree_counts":"本场报警 {a} 条 · 工单 {w} 条","asst.tree_empty":"该系统无失效模式记录","asst.tree_head":"{sys} 故障树 · {n} 个失效模式","asst.tree_note":"一层 = 系统 × 失效类 (归纳自本场码表与工单) · 二层 = 手册排查方向归一 + 工单原因计数; 条长按实证量 (报警条数 + 工单 × 10), 因果来自手册与工单原文非推断, 树深两层不外推。","asst.unassigned":"未归属","asst.wi_steps":"WI {n} 步","asst.wo_action":"处置","asst.wo_fault":"故障","asst.wo_head":"现场实际怎么修的 ({sys} 历史工单 {n} 条, 台账 2020~2024)","asst.wo_note":'工单时间窗止 2024-11-21; 2025–26 现场未提供 ⇒ "0 条" 是记录缺失非未修过。',"attr.变桨与液压":"变桨与液压","attr.塔架/结构":"塔架/结构","attr.无记录停机":"无记录停机","attr.未归类":"未归类","attr.电网/供电(外部)":"电网/供电(外部)","attr.轮毂/叶片":"轮毂/叶片","attr.运维操作":"运维操作","attr.风况(外部)":"风况(外部)","cat.equip":"设备类","cat.equip.hint":"设备状态 / 机制 / 判级 — 从机组档案、对象查询与机制检索取证","cat.equip.q1":"29号机组现在什么状态、为什么、该怎么办?","cat.equip.q2":"全场哪些机组有报警级或定论级判级?逐台列出并注明审级","cat.equip.q3":"失效机制库里有哪些机制族?各涉及哪些机组、状态如何?","cat.loss":"损失分析","cat.loss.hint":"当前 3 个月损失 / 未来损失 — ont_loss / ont_scenario 取证, 金额带电价区间统计方法","cat.loss.q1":"近3个月全场损失结构如何?分状态和分机组说, 电量与金额都给","cat.loss.q2":"29号如果拖到主轴承失效, 未来损失量级是多少?与现在修对比","cat.loss.q3":"限电常态化对检修机会成本有什么影响?","cat.risk":"安全风险预测","cat.risk.hint":"风险敞口 / 劣化趋势 / 盲区 — ont_risk / ont_mechanism_search 取证, 未列 ≠ 正常","cat.risk.q1":"当前哪些机组风险在上升需要重点盯?联动监视读数如何?","cat.risk.q2":'监测有哪些盲区?哪些"没报警"不等于正常?',"cat.risk.q3":"29号轴承正在承受金属接触, 风险敞口怎么评估?","cat.sched":"检修排程决策","cat.sched.hint":"排期沙盘 / 天气窗 / 验收树 — ont_scenario / ont_get 取证","cat.sched.q1":"29号修泵什么时候做最合适?对比各情景的损失与风险","cat.sched.q2":"未来几个月哪些月份适合安排CTV检修和吊装作业?依据历史可作业窗","cat.sched.q3":"29号修好之后按什么判据验收?三分支分别是什么条件?","ch.attrib.none":"无记录 {h}h ({p}%)","ch.attrib.ok":"已归因到部件 {h}h ({p}%)","ch.attrib.uncls":"未归类 {h}h","ch.beta.median":"全场中位 {v}°","ch.blame.d1":"限电与调度令, 不进设备责任","ch.blame.d2":"故障与检修停机, 唯一进设备考核","ch.blame.d3":"正常发电欠发与低风待机","ch.blame.n1":"交易与调度侧","ch.blame.n2":"设备侧","ch.blame.n3":"运行侧","ch.blame.title":"损失 {tot} MWh 按责任归属","ch.cap.legend":"圆内数字 = 台数, 圆面积 ∝ 台数","ch.cap.median":"中位 {v}","ch.cap.p":"满发封顶","ch.cap.w":"转速封顶","ch.ml.legend":"— {s}","ch.pareto.cum80":"累计 80%","ch.pareto.cumtip":"{k} · 累计 {p}%","ch.pareto.key":"关键少数: 前 {k} 项占 80%","ch.pareto.none":"时间窗内无数据","ch.pareto.top3":"前三: ","ch.pareto.total":"共 {n} 项, 合计 {tot}{unit}","ch.pareto.xlab":"报警码 (悬停看全名)","ch.quad.few":"时间窗内码数不足, 不作四象限","ch.quad.q1":"低频长时 · 硬故障","ch.quad.q1s":"备件与检修窗","ch.quad.q2":"高频长时 · 重点治理","ch.quad.q2s":"优先派工","ch.quad.q3":"低频短时 · 本底","ch.quad.q3s":"不单独处置","ch.quad.q4":"高频短时 · 重复触发","ch.quad.q4s":"调整参数或屏蔽, 非硬件故障","ch.quad.tip":"{n} 条 · 单次中位 {med}s · 累计 {h}h · {nt} 台","ch.quad.xlab":"发生条数 (对数)","ch.quad.ylab":"单次中位时长 (对数)","ch.ram.area":"圆面积 = 累计停机时长","ch.ram.equip":"设备类","ch.ram.ext":"外部类","ch.ram.few":"部件数不足, 不作象限","ch.ram.median":"虚线 = 本场中位分界","ch.ram.q1":"常坏且难修","ch.ram.q1s":"最高优先级","ch.ram.q2":"罕发难修","ch.ram.q2s":"备件与作业窗","ch.ram.q3":"频发易修","ch.ram.q3s":"查根因, 换件无用","ch.ram.q4":"少发好修","ch.ram.q4s":"维持","ch.ram.tip":"{p}: 平均无故障间隔(MTBF){mtbf}h · 单次停机时长(MDT){mdt}h · 停机 {h}h · {n}起 · {u}台","ch.ram.tip_ext":" · 外部类不计设备可靠性","ch.ram.xlab":"平均无故障间隔(MTBF,h,对数)→ 越右越可靠","ch.ram.ylab":"单次停机时长(MDT,h)→ 越上越难修","ch.rate.days":"仅{d}天","ch.rate.month":"{m}月","ch.rate.n":"{n}条","ch.rate.tip":"{m}: {v} 条/日 (总 {n} 条, 数据覆盖 {cov}%)","ch.rate.ylab":"条/日","ch.ruler.norm":"正态期望 3.7σ","ch.ruler.row":"{r}σ σ = {s}","ch.wf.act":"实际上网","ch.wf.theo":"理论可发","ch.wf.tip":"{nm}: 损失 {loss} MWh, 占理论 {pct}%, 时长 {h}h","chain.gb":"齿轮箱","chain.gde":"发电机DE","chain.gen":"发电机","chain.gnde":"发电机NDE","chain.hss":"高速","chain.ims":"中间","chain.mba":"主轴承后","chain.mbf":"主轴承前","chain.ps":"行星","cmp.alarm_n":"报警 {a}","cmp.alarm_units":"报警机组","cmp.basis":"依据","cmp.by_system":"按系统查看","cmp.cards_note":"点系统卡 → 该系统全场机组与依据; 九系统 = 交付九分册一一对应; 叶片与叶根 / 塔架与基础无 SCADA 轴 (分册蓝本取 CMS / 巡检)","cmp.counts":"报警 {a} · 不可判 {u} · 良好 {g} · 优秀 {e}","cmp.cross_eyebrow":"多系统交叉机组","cmp.detail":"详情","cmp.detail_head":"{sys} · 全场 {n} 台","cmp.external":"外部","cmp.fleet_n":" · 全场 {n} 台","cmp.fusion_moved":"振动线结论与四源融合已移至独立板块 →","cmp.fusion_n":"({n} 台次收录)","cmp.good_units":"良好 {n} 台 (轻微偏离, 周期观察 — 点开看逐台依据)","cmp.grading_pending":"正在按所选时间窗重算判级…","cmp.grading_pending_why":"时间窗 {span}:变桨/偏航/蓄能/温度四个判级面正按该时间窗重算(首次约 25 秒),下面的系统卡暂时还是上一份统计方法 —— 算完会自动刷新,不会静默混用。","cmp.hit_sys":"命中系统","cmp.n_sys":"系统数","cmp.n_units":"({n} 台)","cmp.none":"本系统全场无非常态。","cmp.problem_page":"该问题页 →","cmp.rel_ev":"事件","cmp.rel_eyebrow":"部件可靠性 · 时间窗 {win}","cmp.rel_fm":"典型失效模式 (按时长)","cmp.rel_h":"停机时长","cmp.rel_head":"部件停机贡献与可靠性","cmp.rel_mdt":"单次停机时长(MDT,h)","cmp.rel_meta":"总停机 {t}h = 设备类 {a} + 外部类 {b}","cmp.rel_mtbo":"平均停机间隔(MTBO,h)","cmp.rel_note":'统计方法 ≥1h 停机段, 不含调度令 — 与"电量算账"里的停机时长{h} 不同, 差额是短于 1h 的停机段 (本页按段做可靠性指标须成段, 能量账按逐条工况态算电量): 两个数都对, 不可互相相减。',"cmp.rel_part":"部件","cmp.rel_units":"影响机组","cmp.unk_n":" · 不可判 {u}","cmp.unk_units":"不可判 (监测/数据不足, ≠ 正常)","cmp.watch_head":"关注机组 (≥2 系统交叉, {n} 台; 点机组号 → 该台独立页)","dec.classic":"维护标准 / 维护框架 / 数据质量三块尚未迁入新版 —","dec.head":"检修决策 · 本体问答 (推理无界, 结论须过校验)","en.balance":"电量平衡","en.blame":"损失责任分账","en.blame_note":'最大一笔是限电不是故障。进设备考核的只有"故障与检修停机" {n} MWh; 限电属交易与调度侧, 2026 起交易策略主导, 少发未必是弃风。',"en.cap_fail":"不通过","en.cap_note":"能量守恒核 · 理论 {op} 全额定上限 {cap}","en.cap_pass":"通过","en.kpi_act":"实际上网 · 等效满发 {h} h","en.kpi_loss":"损失率 · {v} MWh","en.kpi_theo":"理论可发 (实际+损失)","en.loss_mwh":"损失 MWh","en.share":"时长占比","en.state":"工况态","en.states":"工况态明细","en.states_note":"控制参数一致性与曲线欠发筛查在固定干净窗判, 已迁入「发电性能」页 — 本页只出当期电量账。","en.win":"窗 {win}","fig.fleet_median":"全场中位","fig.point":"测点","fig.quartile":"四分位","fig.this_unit":"本台","fig.trend":"趋势","fig.vibbar_note":"条为本台与全场中位之比; 色按 z (稳健离群度): 绿 <2 · 橙 2~3 · 红 ≥3","fig.x_median":"×中位","flt.alarm_face":"报警面","flt.alarm_meta":"{n} 条 · {c} 个码 · 时间窗 {win}","flt.attrib_note":'归因覆盖: "无记录停机" {h}h 是全场最大单项, 因不给 MTBF 而在上图中不出现 — 它不是"没有故障", 是"没归上因"。统计方法为段起点 ±30min 首发码。缺口成因待定: 此前写的"98% 的段在前 72h 内有报警 ⇒ 长停远窗"不成立 — 前 72h 有报警不等于该报警与本段停机有因果 (双模审 2026-08-28 逮)。要定成因须改判"段起止是否落在某条报警的持续区间内", 未做之前只报缺口不报原因。',"flt.block_err":"本块未算出 ({k}): {e}","flt.eyebrow":"故障统计与可靠性","flt.pareto_d":"帕累托 · 按持续时长","flt.pareto_d_note":"时长 = 闩锁统计方法 (复位 − 激活), 只作排序参考不作停机时长","flt.pareto_n":"帕累托 · 按发生条数","flt.pareto_n_note":"条数 = 发生频次, 不反映影响程度 — 高频短时报警码 (信号抖动或重复触发) 排序靠前","flt.per_t":"台级分布 · 报警条数 top{n}","flt.per_t_note":"全场合计 {n} 条 · 单台占比高须先核查是否为单一报警码重复触发","flt.per_t_share":"占全场","flt.quad":"故障模式四象限 · 条数 × 单次时长","flt.quad_note":"时间窗内共 {n} 个码, 图上为条数前 {m} 个。","flt.quad_note2":"点面积表示影响机组数, 大点为批次共性、小点为单台; 竖分界取条数中位, 横分界取 10min (一个 SCADA 采样格)。右下角的码不要按条数排优先级 — 属重复触发, 非硬件故障。上面两张帕累托对照看即此图的两条投影。","flt.quad_partial":"窗含不满月 {m} (覆盖 {c}%), 条数为原始累计未按天归一。","flt.ram":"可靠性 × 可维修性 · 部件象限","flt.ram_note":'按停机时长排序的表看不出这层结构: 同样 500h 的停机, "频发易修"要查根因、"罕发难修"要备件, 处置相反。设备类停机 {a}h / 外部类 {b}h (外部 = 电网·风况·运维操作, 不计设备可靠性)。海上机组 MDT 普遍偏高是交通窗口决定的, 不等于维修本身慢 — 跨场比 MDT 须同为海上。',"flt.rate":"月度故障率","flt.rate_example":"实测: {m} 总数最低但日均 {v} 条/日 = 全时间窗前列。","flt.rate_full":"各月覆盖完整。","flt.rate_note":"柱高 = 日均条数, 不是月总数","flt.rate_partial":"本时间窗 {m} 数据不满月 (灰虚线柱), 直接比月总数会读反。","flt.seasonal":"故障季节性 · top 报警族 × 月","flt.seasonal_note":"全程 19 个月 (跨 2 冬 1 夏); 未做 χ² 显著性检验前为【参考级】, 只看形态不作季节归因","flt.seasonal_unit":"条/月","flt.seasonal_x":"月","flt.stop_face":"停机面","flt.stop_h":"停机时长","flt.stop_meta":"{h}h · {n} 起 · 统计方法 ≥1h 段, 不含调度令","flt.stop_n":"次数","flt.stop_pareto":"停机归因帕累托","flt.stop_pareto_note":"按停机时长; 事件次数见悬停","flt.stop_units":"台级停机 top{n}","flt.stop_units_note":"停机时长高 ≠ 设备差 — 须先看归因里外部类占比 (调度令已剔除)","fus.alarm_n":"{n} 条","fus.alarm_rank":" · 第 {r}/{t}","fus.burst":"⚠ {p}% 是码 {c} 抖动","fus.burst_tip":"⚠ 单码 {c} 占 {p}%, 中位 {m} 秒/次 — 条数被抖动灌满","fus.clear":"× 清除","fus.cms_act":"行动","fus.cms_action":"需行动机组 (报警 / 不可判)","fus.cms_basis":"统计方法说明","fus.cms_basis_note":"本表 = windcms 状态管理判级 (含标量趋势与数据可判性); 融合矩阵 / 逐台结论 = 振动线确诊链转录 (候选以上)。两统计方法差异台: 仅本表列 {a} (多为标量发作 / 数据不可判, 未到确诊链); 仅确诊链列 {b} (预警级在察, 状态管理未升)。","fus.cms_chain":"部件状态链","fus.cms_chain_note":"(主承前 · 主承后 · 齿轮箱 · 发电机; 悬停看逐件等级)","fus.cms_evidence":"证据强度","fus.cms_focus":"状态焦点","fus.cms_focus_note":"(传动链: 主承前 · 主承后 · 齿轮箱 · 发电机两端)","fus.cms_grades":"38 台部件等级一览","fus.cms_head":"振动状态评估 (windcms 报告 {d} 结果转录)","fus.cms_link":"谱图 · 波形 · 判据 · 工作台等分析功能在独立 windcms 系统 →","fus.cms_loading":"载入振动评估结果…","fus.cms_note":"状态管理判级, 不代表确诊数量; 判据/谱线/计算过程不在本页 — 深潜走底部独立系统。","fus.cms_open":"打开 windcms ↗","fus.cms_overall":"综合","fus.cms_static":"(未启动时用静态版)","fus.cms_window":'数据窗 {r} —— 本时间窗**实算**覆盖区间 (窗名只是起始日代号); 页面上的图谱与"末窗"状态取自时间窗内最新记录, 故多显示末期日期。',"fus.col.alarm":"报警","fus.col.claim":"证据时间窗","fus.col.claim_axis":"26-01 → 09","fus.col.display_only":" · 只展示","fus.col.fixed":" · 不随本时间窗","fus.col.lub":"润滑柱塞","fus.col.oil":"油样","fus.col.part":"部件","fus.col.signal":"振动信号","fus.col.state_concl":"设备状态 / 振动结论","fus.col.temp":"温度","fus.col.tempaxis":"温度轴","fus.col.tempaxis_note":"±6 K","fus.col.vib":"振动","fus.col.wo":"工单","fus.ev_code":"码","fus.ev_dur":"累计时长 h","fus.ev_head":"{c} — 报警 {an} 条 / {au} 台 · 工单 {wn} 条 / {wu} 台 (时间窗内)","fus.ev_min":"时长 min","fus.ev_no_alarm":"时间窗内无该部件报警","fus.ev_no_wo":"时间窗内无该部件工单 (工单数据止 2024-11, 2026 类窗必空 = 数据边界)","fus.ev_recent":"最近 {n} 条明细","fus.ev_text":"报警内容","fus.ev_time":"时间","fus.ev_top":"台分布 top: ","fus.ev_units":"台数","fus.ev_win":"时间窗 {win} · 顶部选择器可换","fus.ev_wo_act":"处理","fus.ev_wo_cause":"原因","fus.ev_wo_name":"故障名称","fus.eval_head":"评价体系 (规范化定义 — 两轴并存, 不可互相替代)","fus.eval_meaning":"含义","fus.eval_note":'设备状态答"这台设备现在怎么样" (危险 > 报警 > 良好 > 优秀 > 不可判); 证据状态答"这个判断有多可信" (定论 → INSUFFICIENT)。设备状态一律取自振动线的判级栏这一个来源。本页判级为转录, 不产新判级; 标注为参照同型机组/频谱信号级 (未定位到具体零件)/测量链/未对应到具体部件的行不作部件级结论消费; claim_window = 该结论的证据时间窗, 窗外状态该结论不背书。',"fus.eval_state":"设备状态 (业主统计方法)","fus.eval_tier":"证据状态 (可信度)","fus.eyebrow":"振动与 SCADA 证据视图 · 展示振动结论、SCADA 指标、报警与工单线索","fus.fam_tip":"{n} 条 · 全场最多 {m} 条","fus.legend_note":'两轴不可互相替代: "候选"说的是可信度不是设备好坏; "良好"说的是设备状态不是证据强度。设备状态只取自振动线的判级栏这一个来源。',"fus.legend_state":"格子颜色 = 设备状态 (业主统计方法, 与 windcms 报告同一套):","fus.legend_tier":"徽章 = 证据状态 (可信度, windcms 九枚举):","fus.loop_ba":"换前 → 换后 (同标尺)","fus.loop_bound":"数据边界: {b}","fus.loop_closed":"已闭环 · 换件后恢复 ({n} 例)","fus.loop_date":"换件日","fus.loop_el":"早期 → 近期 (同标尺)","fus.loop_head":"维修后验证案例 (检出 → 换件 → 恢复)","fus.loop_item":"事项","fus.loop_neg":"负面对照: 工单后持平 {n} 例 (换件 ≠ 必然回落, 说明回落非巧合)。","fus.loop_none":"暂无端到端闭环证据:现场提交的振动数据包里没有「报警→检修→复测」的成对记录","fus.loop_note":"有换件记录且同一统计方法指标回落, 可作为检测链已闭合的案例; 指标仍在上升但缺少可匹配工单的机组, 需现场或台账确认后再关闭。","fus.loop_ratio":"恢复比","fus.loop_rising":"未闭环 · 指标上升待现场/工单确认 ({n} 台)","fus.loop_state":"状态","fus.loop_verdict":"判","fus.loop_x":"倍比","fus.lub_now":"润滑柱塞现状","fus.lv.bad":"定论/报警级","fus.lv.note":"候选/监视/观察级","fus.lv.ok":"销案/无新证","fus.lv.warn":"预警级","fus.m.bad":"异常严重, 建议尽快停机检查","fus.m.bad_e":"证据: 已定案","fus.m.ex":"未见异常, 保持常规监视","fus.m.ex_e":"证据: 仅记录 / 已取消","fus.m.ok":"轻微偏离, 记录观察","fus.m.ok_e":"证据: 待现场核实 / 已记为基线下窗观察","fus.m.unk":"数据不足或监测中断 — 不等于正常","fus.m.unk_e":"证据: 数据不足","fus.m.warn":"存在需现场核实或处置的异常","fus.m.warn_e":"证据: 基本确认 / 新出现待核实","fus.matrix_foot":'润滑柱塞各台设定本就不同 (全场单次循环 22~961 秒), 所以此列只展示不判级, 只有已定案的机制链才标色; 油液多数台末次取样距今超 12 个月, 此列看的是"样够不够新", 不代表当前状态。',"fus.matrix_head":"全场融合矩阵 (38 台 × 6 个证据面)","fus.matrix_note1":'各列取数窗口不同 (见列头) — 不同窗的两格同时发红不等于"同时发生", 不可当共时印证。',"fus.matrix_note2":'每格右侧曲线 = 逐月记忆轨迹 ({n} 个月, {m0} 起; 实心点 = 现窗) — 现窗快照会丢形态, 轨迹才看得见"塌→回升→翻转"类机制签名。',"fus.no_alarm":"时间窗内无报警","fus.none_word":"无","fus.oil_fresh":"近共时","fus.oil_none":"无样","fus.oil_stale":"stale > 12 个月","fus.rule1":"① 同一失效机制的多个观测面 ≠ 多源印证 — 融合禁按源数加权 (29# 柱塞/温度/振动稳态/振动瞬态 = 四个观测面一条机制链)。","fus.rule2":'② "没报警" ≠ "正常" — 在已知盲区上, 缺报警只说明监测面无效, 不说明设备无恙。',"fus.rules_head":"两条判读纪律 (随板块常显)","fus.short.nodata":"数据不足","fus.short.normal":"正常","fus.short.nosample":"未取样","fus.short.stale":"样龄过期","fus.short.uneval":"未评估","fus.short.unlisted":"未收录","fus.sub.cms":"振动分析","fus.sub.events":"报警工单","fus.sub.loop":"端到端闭环","fus.sub.matrix":"融合矩阵","fus.sub.units":"逐台情况","fus.temp_now":"温度轴现状","fus.tip_state":" — 设备状态 {s}","fus.tip_tier":" / 证据状态 {e}","fus.unavailable":"融合面数据不可用: {e}","fus.units_filter":" · 筛选: {l}","fus.units_head":'逐台情况 (全场 {u} 台 / {n} 台次{f}; 深入谱图/波形 → "振动分析")',"fus.unlisted_head":"未列机组 {n} 台 (振动线未收录 — 未列 ≠ 正常)","fus.unlisted_link":"未列 {n} 台","fus.win_n":"{n} 个窗段","fus.win_none":"未标窗","fus.wo_n":"{n} 单","fus.wo_none":"时间窗内无传动链工单","gen.beta":"桨距调度同档差","gen.beta_note":"同一功率档下的桨角与全场中位之差。{units} 偏离达中位的 {k} 倍 → {v}","gen.cands":"曲线欠发筛查","gen.cands_meta":"{note} · σ = {s}%","gen.cap":"封顶参数落位","gen.cap_note":"台数落在几个离散位置上, 不是连成一片 — 这是配置/版本差异的形状; 磨损或工况引起的会是连续散布。两轴各自成组且分组不同台 ⇒ 参数级差异, 成因须配置台账。","gen.ctrl":"控制参数一致性","gen.ctrl_win":"窗 {win}","gen.eyebrow":"特性曲线与控制参数","gen.figs":"七个镜头 · 逐档中位与同型机群残差","gen.fixed_win":"随上方时间窗 · 按时间窗重算","gen.loading":"正在计算七个镜头 (剥限电 · 逐档中位 · 同型机群残差)…","gen.no_cands":"无候选","gen.recomputing":"正在按所选时间窗重算七镜头…","gen.recomputing_short":"正在按窗重算…","gen.ruler":"尺子巡检 · 极差 ÷ σ","gen.ruler_note":"判据自身的分辨力。38 台正态抽样的极差期望约 3.7σ, 明显超出即分布非单峰 — 与左图的分组互为印证; 落在期望附近的轴 (额定桨角) 则是连续分布。","gen.win_range":"时间窗 {span}","gen.win_why":'七镜头与月度时序都按所选时间窗重算(含自定义起止日期)。提示:2025-07 ~ 2025-12 是"限电前干净判别窗"——2026 起交易策略主导,曲线含策略性少发,作设备判据时须注意;选到含 2026 的窗时该影响存在但不再遮掩。',"kpi.alarm_units":"九系统有报警的台数 / 全场","kpi.alarm_units.hint":"统计方法: 九系统 (叶片与叶根/变桨/偏航/齿轮箱/发电机/主轴承/变流器/塔架与基础/主控与传感网) 中任一被判「报警」即计一台。与下方「全场状态」格的统计方法不同 —— 那里按每台 振动/温度/润滑/油液/报警/工单 六列取最严一级, 所以两处数字可以不同, 不是矛盾。","kpi.avail":"时间可用率 (不含调度令) · {win}","kpi.curtail":"限电·绑定 电量损失","kpi.downtime":"停机时长 · {n} 起","kpi.loss":"停机电量损失 · {win}","kpi.loss_dispatch":"另调度令 {n}","kpi.mtbo":"平均停机间隔(MTBO;非行业 MTBF)","loss.curtail_bound":"限电 (命令与实际功率对得上)","loss.curtail_unbound":"限电命令期 · 功率未被压制","loss.dispatch":"调度令停机","loss.lowwind":"低风待机","loss.normal":"正常发电时的欠发","loss.stop":"故障与检修停机","mdl.cloud":"云端","mdl.deepseek-chat.nm":"DeepSeek","mdl.deepseek-chat.t":"约 3 到 10 秒","mdl.deepseek-r1:14b.nm":"本机 DeepSeek 14B · 审核档","mdl.deepseek-r1:14b.t":"约 1 到 3 分钟","mdl.deepseek-r1:32b.nm":"本机 DeepSeek 32B","mdl.deepseek-r1:32b.t":"约 3 到 8 分钟","mdl.deepseek-v4-pro.nm":"云端 DS","mdl.deepseek-v4-pro.t":"约 2 到 6 分钟","mdl.kimi-fast.nm":"Kimi","mdl.kimi-fast.t":"约 5 到 20 秒","mdl.local":"本地","mdl.outbound_warn":"内容会外发到模型厂商, 场名与台号已去标识化","mdl.qwen-plus.nm":"通义千问","mdl.qwen-plus.t":"约 5 到 20 秒","mdl.qwen3.8:27b.nm":"标准 27B · 复杂题","mdl.qwen3.8:27b.t":"约 2 到 4 分钟","mdl.qwen3:30b-a3b.nm":"快 30B (a3b)","mdl.qwen3:30b-a3b.t":"约 20 到 60 秒","mdl.qwen3:8b.nm":"轻量 8B · 默认","mdl.qwen3:8b.t":"约 30 到 60 秒","mdl.unknown_warn":"未知档位, 按内容会外发处理","mdl.zero_outbound":"全程零外发","mt.cov":"当前覆盖","mt.eyebrow":"系统维护 · 数据输入与更新端口","mt.fail":"盘点失败: {e}","mt.freq":"频率","mt.head":"数据维护面 · {n} 个源","mt.how":"补数据怎么做","mt.last":"末次更新","mt.layer_data":"数据层","mt.layer_data_note":"随运营滚动 — 新数据到位后跑摄入, 本体与判级自动刷新","mt.layer_mech":"机理层","mt.layer_mech_note":"相对稳定 — 换厂商资料或现场反馈修正时才动; 它是判据的地基, 变更须过审","mt.note":'每个源给出: 当前覆盖 / 末次更新 / 约定位置 / 摄入命令 / 更新频率 / 责任方。要补数据就把新文件放到"约定位置"再跑"摄入命令"。',"mt.put":"放到:","mt.resp":"责任","mt.rows_n":" ({n} 条)","mt.run":"跑:","mt.src":"源","mt.surveying":"盘点中…","ov.all_steps_done":"已走完(待验收)","ov.attention":"需要关注","ov.attention_n":"{n} 台","ov.basis_fusion":"本台依据来自融合面(九系统判级无「报警」行):部件 {part} · 链路走到第 {done}/{n} 步 · 卡在「{stuck}」 · 证据源 {srcs}","ov.caveat":"限定","ov.evidence":"查看完整依据","ov.fus_gap_hint":"这一面(需要关注 / 全场状态)取数来自融合面;缺件时如实为空,不从交付包补齐。在本机放好原始件后跑一次重算即会由观澜自己的生成端补上(scripts/rudong_fusion_handoff.py,见 docs 的「源代码化清单」)。","ov.illustrative":"示意数据","ov.no_srcs":"无(该台无外部证据源)","ov.quiet":"其余 {n} 台未进入优先关注清单;设备状态请查看全场状态评估。","ov.quiet_all":"当前优先关注清单为空;{n} 台机组的设备状态请查看全场状态评估。","ov.ranked_by":"按 设备状态 × 证据量 排序","ov.strip":"全场状态","ov.strip_hint":"一格一台 · 点格定位","ov.systems":"九系统","ov.systems_hint":"点系统看逐台依据","pop.acts":"动作统计","pop.close":"关闭","pop.loading":"载入中…","pop.none":"本时间窗无记录","pop.o_act":"处置","pop.o_cause":"原因","pop.o_check":"排查","pop.o_date":"日期","pop.o_fault":"故障","pop.o_kind":"类别","pop.orders":"工单 {n} 单","pop.orders_none":"时间窗内无工单","pop.orders_one":"工单 1 单","pop.problem":"{u} · {sys}","pop.unit":"{u} · 全部问题","rpt.attrib.note":'"无记录停机"不是没有故障, 是没归上因。',"rpt.attrib.title":"归因覆盖","rpt.aud_in":"场站内部 (全量)","rpt.aud_up":"上报集团 (脱敏)","rpt.b.attrib.d":"已归因 vs 无记录停机的占比 — 无记录不等于没有故障","rpt.b.attrib.nm":"归因覆盖","rpt.b.blame.d":'交易调度侧 / 设备侧 / 运行侧 三段占比 — 回答"谁的责任"',"rpt.b.blame.nm":"损失责任分账","rpt.b.caliber.d":"统计期 / 残月 / 工单时间窗 / 判级性质 — 建议常驻, 没有边界的数字堆不能作汇报依据","rpt.b.caliber.nm":"统计方法与适用边界","rpt.b.chain.d":"证据→机制→判级→排期→动作→验收 六步的瓶颈分布","rpt.b.chain.nm":"决策链进度","rpt.b.emon.d":"逐月上网 / 损失 / 损失率 / 等效满发, 含数据覆盖率","rpt.b.emon.nm":"逐月发电表","rpt.b.frate.d":"按天归一的日均条数, 数据不满月单独标注","rpt.b.frate.nm":"月度故障率","rpt.b.kpi.d":"六个核心数: 上网电量 / 等效满发 / 可用率 / 损失率 / 停机间隔 / 需行动台","rpt.b.kpi.nm":"一级指标","rpt.b.loop.d":"检出 → 换件 → 复测回落的历史例证, 证明这条链是通的","rpt.b.loop.nm":"闭环实证","rpt.b.narr.d":"模型基于实测数据生成的运行总结 — 为图表补充文字结论, 供汇报使用","rpt.b.narr.nm":"运行总结","rpt.b.pareto.d":"按条数降序 + 累计 80% 线, 找关键少数","rpt.b.pareto.nm":"故障帕累托","rpt.b.parts.d":"逐部件停机时长 / 事件数 / 平均无故障间隔(MTBF)/ 单次停机时长(MDT)/ 影响机组数","rpt.b.parts.nm":"部件停机表","rpt.b.plan.d":"由数据推出的行动项, 不是套话","rpt.b.plan.nm":"下期建议","rpt.b.quad.d":"条数 × 单次时长, 区分重复触发与实际停机 — 按条数排序会误定优先级","rpt.b.quad.nm":"故障四象限","rpt.b.ram.d":'平均无故障间隔(MTBF)× 单次停机时长(MDT)部件象限, 分出"频发易修"与"罕发难修", 处置方向相反',"rpt.b.ram.nm":"可靠性象限","rpt.b.units.d":"需跟踪台的部件 / 证据源 / 六步进度 / 卡在哪一步","rpt.b.units.nm":"重点机组","rpt.b.water.d":"理论可发 → 逐段扣损 → 实际上网, 用于定位电量流向","rpt.b.water.nm":"能量瀑布","rpt.blame.cal":"工况态分解 + 限电命令面绑定判别; 平均出力=实发÷台时, 用作风资源代理量","rpt.blame.note":'进设备考核的只有"故障与检修停机"; 限电属交易与调度侧。',"rpt.blame.note2":'限电不是"低风时段收到的空令": 限电·绑定时段平均出力 1.435 MW, 正常发电时段 1.412 MW, 比值 1.02 — 风况相同而出力被压, 说明限电是真压制; 但"限电命令期·功率未被压制"那一档平均出力仅 0.724 MW (18% 额定), 确属低风时段收令。',"rpt.blame.title":"损失责任分账","rpt.cal.deid":"脱敏","rpt.cal.deid_d":"上报版隐去判据门槛与特征频率","rpt.cal.denom":"可用率与损失率分母不同","rpt.cal.denom_d":'可用率分母剔除低风待机与调度令(问"该发时能不能发"), 损失率分母含全部时段(问"理论能发多少"); 同一低风时段在可用率里不计时间、在损失率里计入基数 — 这是两个指标的设计差异不是错, 但两者不可直接相乘或互推。低风待机对损失的贡献仅 118 MWh(0.5%)',"rpt.cal.partial":" — {m} 数据不满月(覆盖 {c}%), 月度已按天归一","rpt.cal.period":"统计期","rpt.cal.rating":"判级","rpt.cal.rating_d":"由振动/温度/润滑/油液四源融合得出; 行动等级由综合报告出具","rpt.cal.stop":"停机","rpt.cal.stop_d":"可靠性统计方法 ≥1h 段, 电量账为逐条工况态 — 两个数都对, 不可相减","rpt.cal.title":"统计方法与数据边界","rpt.cal.wo":"工单","rpt.cal.wo_d":"台账 2020~2024-11, 本报告不对本期检修执行下结论","rpt.caliber_lbl":"统计方法: ","rpt.chain.cal":"「动作」一列不可判 — {b}","rpt.chain.note":"六步: 证据 → 机制 → 判级 → 排期 → 动作 → 验收。当前 {s}。","rpt.chain.title":"决策链进度","rpt.chapters":"{n} 个章节","rpt.cloud_note":"; 内容会外发到模型厂商","rpt.compose":"生成","rpt.compose_fail":"生成失败: {e}","rpt.composed":"已按需求编排 {n} 块{narr} · {m} 用时 {s}s","rpt.composing":"模型编排中… 挑组件 + 写总结","rpt.emon.act":"上网 MWh","rpt.emon.cal":"覆盖率<50% 的月不参与环比","rpt.emon.cov":"覆盖","rpt.emon.eflh":"等效满发 h","rpt.emon.loss":"损失 MWh","rpt.emon.m":"月","rpt.emon.partial":" 不满月","rpt.emon.pct":"损失率","rpt.emon.title":"逐月发电","rpt.empty_canvas":"画布是空的 — 先从组件库选内容","rpt.export_docx":"导出 Word","rpt.export_xlsx":"导出 Excel","rpt.eyebrow":"汇报定制 · 画布","rpt.facts.agg":"聚合层","rpt.facts.sub":"{n} 条, 契约 {sha}; 数据/时间窗/结论只经契约更新","rpt.facts.sys":"系统","rpt.facts.text":"结论","rpt.facts.title":"可交付级结论 · 契约生成","rpt.facts.verdict":"裁决","rpt.foot_asof":"出件 {d}","rpt.foot_deid":"判据门槛与特征频率已脱敏","rpt.foot_src":"数据源 SCADA 10min · 报警事件 · 工单台账 · CMS 振动 · 油液化验","rpt.foot_trace":"结论可回溯至本体对象","rpt.frate.cal":"不满月按天归一","rpt.frate.note":"柱高=日均条数, 不是月总数。","rpt.frate.title":"月度故障率","rpt.g.end":"收尾","rpt.g.flt":"故障","rpt.g.gen":"发电","rpt.g.rel":"可靠性","rpt.g.unit":"机组","rpt.grounded":"数字全部接地","rpt.hint_idle":"悬停查看组件说明 · 已选组件再次点击移出 · 右侧 ↑↓ 调整顺序","rpt.kpi.act":"上网电量","rpt.kpi.action":"需行动机组","rpt.kpi.action_n":"定论 {a} · 预警 {b} · 候选 {c}","rpt.kpi.annual":"年化约 {v} h","rpt.kpi.avail":"时间可用率","rpt.kpi.avail_n":"不含调度令与低风待机","rpt.kpi.eflh":"等效满发小时","rpt.kpi.loss":"损失率","rpt.kpi.mom":"环比 {v}%","rpt.kpi.mom_na":"环比不可比(末月不满)","rpt.kpi.mtbo":"平均停机间隔","rpt.kpi.mtbo_n":"停机 {n} 起 · 单次均 {h}h","rpt.kpi.theo":"理论可发 {v}","rpt.library":"组件库","rpt.library_note":"点击加入报告, 再次点击移出 · 画布里已有 {n} 块","rpt.local_note":"; 数据不出本地","rpt.loop.cal":"振动标量前后对比","rpt.loop.comp":"部件","rpt.loop.date":"换件日期","rpt.loop.note":"这几台正是算法当初的检出台 ⇒ 故障前能看见、换件后能看见恢复。","rpt.loop.post":"换后","rpt.loop.pre":"换前","rpt.loop.ratio":"比值","rpt.loop.title":"端到端闭环实证","rpt.narr.cal":"模型 {m} 生成 · 数字取自系统实测摘要 · 数据回抓校验{g}","rpt.narr.empty":"还没有生成 — 在上面的交互窗输入报告要求。","rpt.narr.g_n":"报 {n} 处待核","rpt.narr.g_ok":"全通过","rpt.narr.title":"运行总结","rpt.narr.ungr":"⚠ 以下数值由模型自行推算, 不在原始数据摘要中, 引用前须核对: {v}","rpt.narr_plus":" + 一段运行总结","rpt.need_empty":"先输入报告要求","rpt.need_head":"输入报告要求","rpt.need_hint":"模型依据需求选取组件, 并基于实测数据生成运行总结","rpt.need_ph":"例如: 上报集团月报, 侧重设备可靠性与重点机组","rpt.no_compose":"本部署未启用编排接口, 画布仍可手动拼装","rpt.no_models":"本部署未配置任何模型密钥, 编排不可用","rpt.paper_sub":"统计期 {win} | {n} 台","rpt.paper_title":"运行分析报告","rpt.pareto.cal":"报警事件表","rpt.pareto.title":"故障帕累托","rpt.parts.cal":"归因=段起点±30min 首发码","rpt.parts.ev":"事件","rpt.parts.ext":" (外部)","rpt.parts.h":"停机h","rpt.parts.mdt":"单次停机时长(MDT,h)","rpt.parts.mtbf":"平均无故障间隔(MTBF,h)","rpt.parts.part":"部件","rpt.parts.title":"部件停机","rpt.parts.units":"影响机组","rpt.plan.1":'补机制定性 — {n} 台停在"判了级但根因未定", 是当前最大单一瓶颈',"rpt.plan.2":"回收 25~26 工单 — 台账止 2024-11, 本期检修执行与闭环无法自动判定","rpt.plan.3":"油液采样节奏 — 四源里油液长期 stale, 只能作回测锚","rpt.plan.4":"限电侧 — 损失六成在交易与调度侧, 设备侧改善空间有限","rpt.plan.cal":"建议级 — 排期与动作须经审批","rpt.plan.title":"下期计划与建议","rpt.preset.blank":"空白画布","rpt.preset.month":"月度运行分析","rpt.preset.topic":"设备专题","rpt.preset.week":"周报","rpt.preset.year":"年度总结","rpt.presets":"预设","rpt.preview_empty":"文档预览窗 — 从上面的组件库点选内容, 此处显示报告预览","rpt.print":"打印 / 存 PDF","rpt.quad.cal":"纵界=10min(一个SCADA采样格)","rpt.quad.note":"右下角报警码属重复触发, 不应按条数排定优先级。","rpt.quad.title":"故障模式四象限","rpt.ram.cal":"SCADA ≥1h 停机段, 不含调度令; 海上 MDT 含交通窗口","rpt.ram.note":"设备类 {a}h / 外部类 {b}h (电网·风况·运维操作不计设备可靠性)","rpt.ram.title":"可靠性 × 可维修性","rpt.ungrounded_n":"{n} 个数字待核","rpt.units.at":"卡在","rpt.units.cal":"四源融合判级","rpt.units.clear":"全通","rpt.units.ev":"部件与证据","rpt.units.head":"需跟踪 {n} 台 / {tot} | 瓶颈 ","rpt.units.prog":"进度","rpt.units.rising":"在升 {r}×","rpt.units.state":"状态","rpt.units.stuck":"{n} 台卡在「{s}」","rpt.units.title":"重点机组与处置","rpt.up_note":"上报版 — 判据门槛与特征频率已脱敏","rpt.up_tag":"上报版","rpt.water.cal":"SCADA 10min 工况态分解; 损失=同工况理论出力与实测之差。量级自检为防虚高的下限校验, 不是风资源判据","rpt.water.cap_bad":"量级自检: 理论 ≥ 全额定上限 {cap} MWh ✗ 数字不可信","rpt.water.cap_ok":"量级自检: 理论低于全额定上限 {cap} MWh ✔","rpt.water.note":"理论可发 {theo} = 上网 {act} + 损失 {loss} MWh ({pct}%)","rpt.water.title":"发电完成情况","rv.advci":"AdvCI","rv.dual":"双模型审","rv.lite":"lite","rv.none":"未审","st.bad":"危险","st.excellent":"优秀","st.ok":"良好","st.ok_excellent":"良好 / 优秀","st.unk":"不可判","st.warn":"报警","step.acceptance":"验收","step.action":"动作","step.evidence":"证据","step.mechanism":"机制","step.rating":"判级","step.schedule":"排期","step.site_records":"现场记录","step.stuck_at":"卡在「{step}」","sys.blade":"叶片与叶根","sys.control":"主控与传感网","sys.converter":"变流器","sys.gearbox":"齿轮箱","sys.generator":"发电机","sys.main_bearing":"主轴承","sys.other":"其他","sys.pitch":"变桨","sys.tower":"塔架与基础","sys.yaw":"偏航","tab.assistant":"检修助手","tab.component":"部件问题","tab.decision":"检修决策","tab.energy":"电量算账","tab.fault":"故障统计","tab.generation":"发电性能","tab.ontology":"本体","tab.overview":"总览","tab.report":"汇报定制","tab.system":"系统维护","tab.vibration":"振动融合分析","tier.candidate":"候选","tier.candidate.s":"候选","tier.candidate_baseline":"候选·记基线","tier.candidate_baseline.s":"候选·记基线","tier.candidate_new":"候选·新发","tier.candidate_new.s":"候选·新发","tier.confirmed":"定论","tier.confirmed.s":"定论","tier.detail.不可判":"不可判","tier.detail.仲裁输入":"仲裁输入","tier.detail.优":"优","tier.detail.优秀":"优秀","tier.detail.传感器项":"传感器项","tier.detail.候选":"候选","tier.detail.候选·监视(复发)":"候选·监视(复发)","tier.detail.候选·跟踪":"候选·跟踪","tier.detail.危险":"危险","tier.detail.可降":"可降","tier.detail.复发候选(两轴合并)":"复发候选(两轴合并)","tier.detail.定论":"定论","tier.detail.弱同向新证":"弱同向新证","tier.detail.报":"报","tier.detail.报警":"报警","tier.detail.本体无新证":"本体无新证","tier.detail.正常":"正常","tier.detail.正样本":"正样本","tier.detail.温度单轴保留":"温度单轴保留","tier.detail.监视":"监视","tier.detail.监视(不开箱)":"监视(不开箱)","tier.detail.良":"良","tier.detail.良好":"良好","tier.detail.蓄能失效候选(定向查)":"蓄能失效候选(定向查)","tier.detail.观察":"观察","tier.detail.观察(发电机侧)":"观察(发电机侧)","tier.detail.记基线观察":"记基线观察","tier.detail.销案(定论)":"销案(定论)","tier.detail.降观察":"降观察","tier.detail.预警":"预警","tier.detail.预警·处置升急":"预警·处置升急","tier.detail.预警·处置规划":"预警·处置规划","tier.insufficient":"不足","tier.insufficient.s":"不足","tier.near":"准定论·预警","tier.near.s":"准定论","tier.normal":"正常","tier.normal.s":"正常","tier.reference":"参考","tier.reference.s":"参考","tier.withdrawn":"撤回","tier.withdrawn.s":"撤回","ui.all":"全部","ui.back_portal":"← 返回门户","ui.back_to":"← 返回{tab}","ui.collapse":"收起","ui.count":"条数","ui.data_hidden":"({n} 处数据文本尚无英文,需复核)","ui.date":"日期","ui.empty":"无数据","ui.error":"出错了","ui.expand":"展开","ui.loading":"载入中…","ui.not_ported":"本页尚未迁入新版。","ui.not_recorded":"台账未填","ui.open":"查看 →","ui.open_classic":"在经典版打开 →","ui.query":"查询","ui.reselect":"重新选择机组 / 测点","ui.retry":"重试","ui.system":"系统","ui.unit":"机组","ui.units":"机组","ui.verbatim":"原始记录 (中文)","ui.verbatim_note":"{n} 处为手册/工单原文, 无英文译本, 按原文转录。","unit.h":"h","unit.n":" 条","unit.units":"台","vp.(振动线未收录)":"(振动线未收录)","vp.主轴承(后)+集中润滑泵":"主轴承(后)+集中润滑泵","vp.发电机(引用同族, 见族主台)":"发电机(无本台独立证据, 参照同型机组)","vp.发电机(未映射)":"发电机(未对应到具体部件)","vp.发电机DE":"发电机DE","vp.发电机DE+NDE(两端)":"发电机DE+NDE(两端)","vp.发电机NDE":"发电机NDE","vp.齿轮箱(未映射)":"齿轮箱(未对应到具体部件)","vp.齿轮箱(测量链问题, 非部件)":"齿轮箱(测量链问题, 非部件)","vp.齿轮箱(谱线级, 未映射到部件)":"齿轮箱(频谱信号级 (未定位到具体零件), 未对应到具体部件)","vp.齿轮箱中间轴":"齿轮箱中间轴","vp.齿轮箱二级行星内齿圈":"齿轮箱二级行星内齿圈","vp.齿轮箱高速轴":"齿轮箱高速轴","win.2025H2":"2025H2","win.2026":"2026年","win.2026H1":"2026H1","win.30d":"近30日","win.90d":"近90日","win.all":"全程","win.apply":"应用","win.bad_order":"开始日期不能晚于结束日期","win.banner":"时间窗 {win} · 本页全部数字随上方时间窗切换","win.custom":"自定义","win.custom_hint":"自定义起止日期(含两端)。日粒度件(判级/停机台账/曲线)按日精确;月度聚合件按所跨月份取整,图上会写明。","win.custom_sel":"自定义 {a} ~ {b}","win.from":"开始日期(含)","win.label":"时间窗","win.months":"按月","win.need_both":"请把开始与结束日期都选上","win.partial":"时间窗内 {m} 数据不满月 (覆盖 {c}%), 月度图已按天归一","win.presets":"预设时间窗","win.through":"至{date}","win.to":"结束日期(含)"};function y(t,e){let s=Qo[t]??t;if(e)for(const[n,r]of Object.entries(e))s=s.split(`{${n}}`).join(String(r));return s}const tc=["overview","energy","component","vibration","generation","fault","decision","assistant","report","system"],Vs=["overview","energy","component"],ec={危险:"bad",报警:"warn",不可判:"unk",良好:"ok",优秀:"ex"},sc={critical:"bad",alarm:"warn",undeterminable:"unk",indeterminate:"unk","not evaluable":"unk",good:"ok",excellent:"ex",warn:"warn",bad:"bad",ok:"ok",unk:"unk",ex:"ex"},ms=t=>ec[String(t)]||sc[String(t)],rr={证据:"evidence",机制:"mechanism",判级:"rating",排期:"schedule",动作:"action",验收:"acceptance"},sn=t=>"st."+(t==="ex"?"excellent":t),ye=t=>String(t).replace("WTG","").replace(/^0/,"")+"#",it=(t,e=0)=>{if(t==null||typeof t=="number"&&isNaN(t))return"—";const s=Number(t);return isNaN(s)?"—":s.toLocaleString("zh-CN",{maximumFractionDigits:e,minimumFractionDigits:e})},ir=t=>{const e=ms(t);return e?y(sn(e)):String(t??"")},nc=["振动","温度","润滑","油液","报警","工单"];function lr(t){const e=nc.map(n=>ms((t?.[n]||{}).ostate)).filter(Boolean);if(!e.length)return"unk";if(e.includes("bad"))return"bad";if(e.includes("warn"))return"warn";const s=e.filter(n=>n!=="unk");return s.length?s.includes("ok")?"ok":"ex":"unk"}const or={bad:"critical",warn:"warning",unk:"unknown",ok:"good",ex:"excellent"},Ve=t=>String(t??""),yn=["叶片与叶根","变桨","偏航","齿轮箱","发电机","主轴承","变流器","塔架与基础","主控与传感网"],gs={叶片与叶根:"blade",变桨:"pitch",偏航:"yaw",齿轮箱:"gearbox",发电机:"generator",主轴承:"main_bearing",变流器:"converter",塔架与基础:"tower",主控与传感网:"control",主轴:"main_bearing",其他:"other"},yi=(()=>{const t={};for(const e of yn)t[gs[e]]=e;for(const[e,s]of Object.entries(gs))s in t||(t[s]=e);return t})(),wi=t=>gs[String(t)]||String(t),cr=t=>yi[String(t)]||String(t),Ne=t=>{const e=gs[String(t)]||String(t);return yi[e]?y("sys."+e):String(t??"")},rc=t=>Ne(t),ic={key:0},lc={class:"small"},oc={href:"#tab=component","data-back":"1"},cc={class:"panel mb"},ac={style:{display:"flex",height:"12px","border-radius":"4px",overflow:"hidden",margin:"8px 0 4px"}},uc={class:"small muted"},fc={class:"tblwrap"},dc={style:{width:"74px"}},pc={class:"r",style:{width:"96px"}},hc=["href"],_c={class:"small"},mc={class:"r"},gc=["href"],bc={key:0,class:"panel mb"},vc={style:{cursor:"pointer","font-weight":"600"}},yc={class:"tblwrap"},wc={style:{"margin-top":"10px"}},xc={style:{width:"74px"}},kc={class:"small"},Sc={key:1,class:"panel"},Cc={class:"small"},Tc={key:0},$c={class:"panel mb small",style:{"border-left":"3px solid var(--accent)"}},Mc={class:"eyebrow"},Ec={class:"panel mb"},Oc={style:{display:"grid","grid-template-columns":"repeat(auto-fit,minmax(170px,1fr))",gap:"10px"}},Ac=["data-sys"],Pc={class:"t"},Ic={class:"bar"},Dc={class:"small muted"},Rc=["innerHTML"],Fc={class:"small muted",style:{"margin-top":"8px"}},qc={key:1},Nc={class:"panel mb",style:{"border-left":"3px solid var(--critical)"}},jc={class:"small"},Hc={key:2},Lc={class:"eyebrow"},Wc={class:"panel mb"},Bc={class:"small muted",style:{"font-weight":"400"}},Kc={class:"small muted",style:{margin:"-2px 0 8px"}},Vc={class:"tblwrap"},Uc={class:"r"},Gc={class:"r"},zc={class:"r"},Jc={class:"r"},Yc={key:0},Zc={class:"badge"},Xc={class:"num small"},Qc={class:"r"},ta={class:"r"},ea={class:"r"},sa={class:"r"},na={class:"small"},ra={class:"small muted"},ia={key:3},la={class:"panel mb"},oa={class:"small"},ca={href:"#tab=vibration"},aa={class:"eyebrow"},ua={class:"panel mb"},fa={class:"tblwrap"},da={class:"r"},pa=["href"],ha={class:"r"},_a=["innerHTML"],ma={class:"small"},ga=he({__name:"Component",props:{d:{},sys:{}},setup(t){const e=t,s=Q(()=>e.d?.sysdist||{}),n=Q(()=>e.d?.rel&&!e.d.rel.err?e.d.rel:null),r=Q(()=>e.sys?cr(e.sys):null),i=Q(()=>yn.filter(u=>s.value[u]).map(u=>{const _=s.value[u],h=_.报警||0,T=_.不可判||0,A=Object.values(_).reduce((D,b)=>D+b,0)||1,C=h>=8?"var(--critical)":h>=3?"var(--warning)":h?"var(--accent)":"var(--good)";return{s:u,dist:_,a:h,u:T,N:A,col:C}}));function l(u){return(u.syss||[]).map(_=>`<a href="/problem/${u.t}/${encodeURIComponent(cr(_)||_)}">${Ne(_)}</a>`).join(" · ")}const o=Q(()=>{const _=(((e.d?.control||{}).energy||{}).items||[]).filter(h=>h.k==="停机").map(h=>h.h)[0];return _??null}),c=Q(()=>{const u=n.value?.表||[],_=Math.max(1,...u.map(h=>h.停机时长h));return u.map(h=>({r:h,maxH:_,sev:h.部件==="无记录停机"?"var(--unknown)":h.外部?"var(--accent)":h.占停机>=.06?"var(--critical)":h.占停机>=.03?"var(--warning)":"var(--good)"}))}),p=Q(()=>{const u=r.value;if(!u)return null;const _=(e.d?.systems||{})[u]||[],h=s.value[u]||{},T=(e.d?.systems||{})[u+"·良好"]||[],A=D=>h[D]||0,C=Object.values(h).reduce((D,b)=>D+b,0)||1;return{s:u,N:C,gd:T,cnt:A,al:_.filter(D=>D.st==="报警"),un:_.filter(D=>D.st==="不可判"),dist:h}});return(u,_)=>p.value?(O(),P("section",ic,[f("p",lc,[f("a",oc,g(v(y)("ui.back_to",{tab:v(y)("tab.component")})),1)]),f("div",cc,[f("h3",null,g(v(y)("cmp.detail_head",{sys:v(Ne)(p.value.s),n:p.value.N})),1),f("div",ac,[(O(),P(W,null,nt([["报警","critical"],["不可判","unknown"],["良好","good"],["优秀","excellent"]],([h,T])=>f("i",{key:h,style:mt(`width:${(p.value.cnt(h)/p.value.N*100).toFixed(1)}%;background:var(--${T})`)},null,4)),64))]),f("div",uc,g(v(y)("cmp.counts",{a:p.value.cnt("报警"),u:p.value.cnt("不可判"),g:p.value.cnt("良好"),e:p.value.cnt("优秀")})),1)]),(O(!0),P(W,null,nt([p.value.al,p.value.un],(h,T)=>Dn((O(),P("div",{key:T,class:"panel mb"},[f("h3",null,g(T===0?v(y)("cmp.alarm_units"):v(y)("cmp.unk_units"))+" "+g(v(y)("cmp.n_units",{n:h.length})),1),f("div",fc,[f("table",null,[f("tr",null,[f("th",dc,g(v(y)("ui.unit")),1),f("th",null,g(v(y)("cmp.why")),1),f("th",pc,g(v(y)("cmp.detail")),1)]),(O(!0),P(W,null,nt(h,A=>(O(),P("tr",{key:A.t},[f("td",null,[f("a",{href:`/turbine/${A.t}`},[f("b",null,g(v(ye)(A.t)),1)],8,hc)]),f("td",_c,g(A.why),1),f("td",mc,[f("a",{class:"small",href:`/problem/${A.t}/${encodeURIComponent(p.value.s)}`},g(v(y)("cmp.detail_link")),9,gc)])]))),128))])])])),[[Yn,h.length]])),128)),p.value.gd.length?(O(),P("details",bc,[f("summary",vc,g(v(y)("cmp.good_units",{n:p.value.gd.length})),1),f("div",yc,[f("table",wc,[f("tr",null,[f("th",xc,g(v(y)("ui.unit")),1),f("th",null,g(v(y)("cmp.why")),1)]),(O(!0),P(W,null,nt(p.value.gd,h=>(O(),P("tr",{key:h.t},[f("td",null,[f("b",null,g(v(ye)(h.t)),1)]),f("td",kc,g(h.why),1)]))),128))])])])):_t("",!0),!p.value.al.length&&!p.value.un.length&&!p.value.gd.length?(O(),P("div",Sc,[f("p",Cc,g(v(y)("cmp.none")),1)])):_t("",!0)])):(O(),P(W,{key:1},[t.d.sysmx_pending?(O(),P("section",Tc,[f("div",$c,[f("b",null,g(v(y)("cmp.grading_pending")),1),tt(" "+g(v(y)("cmp.grading_pending_why",{span:t.d.sysmx_span||""})),1)])])):_t("",!0),f("section",null,[f("div",Mc,g(v(y)("cmp.by_system")),1),f("div",Ec,[f("div",Oc,[(O(!0),P(W,null,nt(i.value,h=>(O(),P("div",{key:h.s,class:"sysc",role:"button",tabindex:"0","data-sys":v(wi)(h.s),style:mt(`cursor:pointer;border-left:3px solid ${h.col}`)},[f("div",Pc,[f("b",null,g(v(Ne)(h.s)),1)]),f("div",Ic,[(O(),P(W,null,nt([["报警","critical"],["不可判","unknown"],["良好","good"],["优秀","excellent"]],([T,A])=>Dn(f("i",{key:T,style:mt(`width:${(h.dist[T]/h.N*100).toFixed(1)}%;background:var(--${A})`)},null,4),[[Yn,h.dist[T]]])),64))]),f("div",Dc,[f("span",{innerHTML:v(y)("cmp.alarm_n",{a:`<b style="color:${h.col}">${h.a}</b>`})},null,8,Rc),tt(g((h.u?v(y)("cmp.unk_n",{u:h.u}):"")+v(y)("cmp.fleet_n",{n:h.N})),1)])],12,Ac))),128))]),f("p",Fc,g(v(y)("cmp.cards_note")),1)])]),t.d.rel&&t.d.rel.err?(O(),P("section",qc,[f("div",Nc,[f("p",jc,g(v(y)("flt.block_err",{k:"rel",e:t.d.rel.err})),1)])])):n.value?(O(),P("section",Hc,[f("div",Lc,g(v(y)("cmp.rel_eyebrow",{win:n.value.窗})),1),f("div",Wc,[f("h3",null,[tt(g(v(y)("cmp.rel_head"))+" ",1),f("span",Bc,g(v(y)("cmp.rel_meta",{t:n.value.总停机h,a:n.value.设备类停机h,b:n.value.外部类停机h})),1)]),f("p",Kc,g(v(y)("cmp.rel_note",{h:o.value==null?"":" "+v(it)(o.value)+"h"})),1),f("div",Vc,[f("table",null,[f("tr",null,[f("th",null,g(v(y)("cmp.rel_part")),1),f("th",null,g(v(y)("cmp.rel_h")),1),f("th",Uc,g(v(y)("cmp.rel_ev")),1),f("th",Gc,g(v(y)("cmp.rel_mtbo")),1),f("th",zc,g(v(y)("cmp.rel_mdt")),1),f("th",Jc,g(v(y)("cmp.rel_units")),1),f("th",null,g(v(y)("cmp.rel_fm")),1)]),(O(!0),P(W,null,nt(c.value,h=>(O(),P("tr",{key:h.r.部件},[f("td",null,[f("b",null,g(v(rc)(h.r.部件)),1),h.r.外部?(O(),P("span",Yc,[_[0]||(_[0]=tt(g(" "),-1)),f("span",Zc,g(v(y)("cmp.external")),1)])):_t("",!0)]),f("td",null,[f("i",{class:"bar",style:mt(`width:${Math.round(h.r.停机时长h/h.maxH*72)}px;background:${h.sev}`)},null,4),f("span",Xc,g(h.r.停机时长h)+"h · "+g((h.r.占停机*100).toFixed(1))+"%",1)]),f("td",Qc,g(h.r.事件数),1),f("td",ta,g(h.r.外部?"—":h.r.MTBF_h||"—"),1),f("td",ea,g(h.r.MDT_h),1),f("td",sa,g(h.r.影响台数),1),f("td",na,g(h.r.典型失效模式||"—"),1)]))),128))])]),f("p",ra,g(n.value.口径),1)])])):_t("",!0),t.d.fus&&!t.d.fus.err?(O(),P("section",ia,[f("div",la,[f("p",oa,[tt(g(v(y)("cmp.fusion_moved"))+" ",1),f("a",ca,[f("b",null,g(v(y)("tab.vibration")),1)]),tt(" "+g(v(y)("cmp.fusion_n",{n:(t.d.fus.表||[]).length})),1)])])])):_t("",!0),f("section",null,[f("div",aa,g(v(y)("cmp.cross_eyebrow")),1),f("div",ua,[f("h3",null,g(v(y)("cmp.watch_head",{n:(t.d.watch||[]).length})),1),f("div",fa,[f("table",null,[f("tr",null,[f("th",null,g(v(y)("ui.unit")),1),f("th",da,g(v(y)("cmp.n_sys")),1),f("th",null,g(v(y)("cmp.hit_sys")),1),f("th",null,g(v(y)("cmp.basis")),1)]),(O(!0),P(W,null,nt(t.d.watch||[],h=>(O(),P("tr",{key:h.t},[f("td",null,[f("a",{href:`/turbine/${h.t}`},[f("b",null,g(v(ye)(h.t)),1)],8,pa)]),f("td",ha,g(h.n),1),f("td",{class:"small",innerHTML:l(h)},null,8,_a),f("td",ma,g(h.why),1)]))),128))])])])])],64))}}),ba="modulepreload",va=function(t,e){return new URL(t,e).href},ar={},ya=function(e,s,n){let r=Promise.resolve();if(s&&s.length>0){let l=function(u){return Promise.all(u.map(_=>Promise.resolve(_).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const o=document.getElementsByTagName("link"),c=document.querySelector("meta[property=csp-nonce]"),p=c?.nonce||c?.getAttribute("nonce");r=l(s.map(u=>{if(u=va(u,n),u in ar)return;ar[u]=!0;const _=u.endsWith(".css"),h=_?'[rel="stylesheet"]':"";if(!!n)for(let C=o.length-1;C>=0;C--){const D=o[C];if(D.href===u&&(!_||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${u}"]${h}`))return;const A=document.createElement("link");if(A.rel=_?"stylesheet":ba,_||(A.as="script"),A.crossOrigin="",A.href=u,p&&A.setAttribute("nonce",p),document.head.appendChild(A),_)return new Promise((C,D)=>{A.addEventListener("load",C),A.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${u}`)))})}))}function i(l){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=l,window.dispatchEvent(o),!o.defaultPrevented)throw l}return r.then(l=>{for(const o of l||[])o.status==="rejected"&&i(o.reason);return e().catch(i)})},wa=["data-chart"],xa=he({__name:"EChart",props:{option:{},height:{}},setup(t){const e=t,s=Nt(null);let n=null;async function r(){if(!s.value)return;const i=await ya(()=>import("./index-BAPDkhe3.js"),[],import.meta.url);n||(n=i.init(s.value,void 0,{renderer:"canvas"})),n.setOption(e.option,!0)}return $s(r),De(()=>e.option,r,{deep:!0}),Vr(()=>{n&&(n.dispose(),n=null)}),(i,l)=>(O(),P("div",{class:"echart","data-chart":JSON.stringify(t.option),style:mt(`height:${t.height||"260px"}`),ref_key:"el",ref:s},null,12,wa))}}),xi=(t,e)=>{const s=t.__vccOpts||t;for(const[n,r]of e)s[n]=r;return s},ur=xi(xa,[["__scopeId","data-v-999bee15"]]),ka={key:0},Sa={class:"panel"},Ca={class:"small muted"},Ta={key:1},$a={class:"kpis",style:{"margin-bottom":"12px"}},Ma={key:0},Ea={class:"grid2"},Oa={class:"panel span2"},Aa={class:"small muted",style:{"font-weight":"400"}},Pa={class:"panel"},Ia={style:{"font-weight":"600"}},Da={class:"num"},Ra={class:"small muted"},Fa={class:"small muted",style:{"margin-top":"6px"}},qa={class:"panel"},Na={class:"small muted",style:{"font-weight":"400"}},ja={class:"tblwrap"},Ha={class:"r",style:{width:"90px"}},La={class:"small"},Wa={class:"num small"},Ba={class:"r small"},Ka={class:"small muted",style:{"margin-top":"6px"}},Va=he({__name:"Energy",props:{d:{}},setup(t){const e=t,s=Q(()=>(e.d?.control||{}).energy),n=Q(()=>(e.d?.control||{}).states||[]),r={"限电·绑定":"loss.curtail_bound","限电命令·未绑定":"loss.curtail_unbound","停机(调度令)":"loss.dispatch",停机:"loss.stop",正常发电:"loss.normal",低风待机:"loss.lowwind"},i=h=>r[h]?y(r[h]):h,l=Q(()=>{const h=s.value||{};return[{v:it(h.theo),u:"MWh",l:y("en.kpi_theo"),k:""},{v:it(h.act),u:"MWh",l:y("en.kpi_act",{h:it(h.eflh)}),k:"ok"},{v:it(h.loss_pct,1),u:"%",l:y("en.kpi_loss",{v:it(h.loss)}),k:h.loss_pct>=10?"warn":""},{v:h.cap_ok?y("en.cap_pass"):y("en.cap_fail"),u:"",l:y("en.cap_note",{op:h.cap_ok?"<":"≥",cap:it(h.cap)}),k:h.cap_ok?"ok":"bad"}]}),o=h=>h.indexOf("限电")>=0||h.indexOf("调度")>=0?0:h==="停机"?1:2,c=Q(()=>{const h=[0,0,0];for(const T of s.value?.items||[])h[o(T.k)]+=T.loss;return h}),p=Q(()=>{const h=s.value||{},T=(h.items||[]).filter(b=>b.loss>0).map(b=>({name:b.k,value:Math.round(b.loss)})),A=c.value,C=A.reduce((b,F)=>b+F,0)||1,D=A.map(b=>Math.round(b/C*100)).filter((b,F)=>A[F]/C*500>46);return{title:{text:y("en.balance"),left:"center",textStyle:{fontSize:13}},tooltip:{trigger:"axis"},grid:{left:70,right:20,top:44,bottom:40},xAxis:{type:"category",data:T.map(b=>b.name)},yAxis:{type:"value",name:"MWh"},series:[{type:"bar",data:T.map(b=>b.value),itemStyle:{color:"#0b5fa5"}}],__data__:[Math.round(h.theo),Math.round(h.act),Math.round(T.reduce((b,F)=>b+F.value,0)),...T.map(b=>b.value),...D]}}),u=Q(()=>{const h=c.value;return{grid:{left:90,right:24,top:20,bottom:30},xAxis:{type:"value",name:"MWh"},yAxis:{type:"category",data:[y("ch.blame.n1"),y("ch.blame.n2"),y("ch.blame.n3")]},series:[{type:"bar",data:h.map(T=>Math.round(T)),itemStyle:{color:"#2f7dbf"}}],__data__:[]}}),_=Q(()=>Math.max(1,...n.value.map(h=>h.pct)));return(h,T)=>s.value?(O(),P("section",Ta,[f("div",$a,[(O(!0),P(W,null,nt(l.value,(A,C)=>(O(),P("div",{key:C,class:vt(["kpi",A.k])},[f("b",null,[tt(g(A.v),1),A.u?(O(),P("small",Ma,g(A.u),1)):_t("",!0)]),f("span",null,g(A.l),1)],2))),128))]),f("div",Ea,[f("div",Oa,[f("h3",null,[tt(g(v(y)("en.balance"))+" ",1),f("span",Aa,g(v(y)("en.win",{win:v(Ve)(t.d.win)})),1)]),St(ur,{option:p.value,height:"280px"},null,8,["option"])]),f("div",Pa,[f("h3",null,g(v(y)("en.blame")),1),St(ur,{option:u.value,height:"240px"},null,8,["option"]),(O(!0),P(W,null,nt(c.value,(A,C)=>(O(),P("div",{key:C,style:{display:"flex","align-items":"baseline",gap:"7px","margin-top":"5px"}},[f("i",{style:mt(`flex:none;width:9px;height:9px;border-radius:2px;background:${["var(--accent)","var(--critical)","var(--muted)"][C]};opacity:.55`)},null,4),f("span",Ia,g(v(y)(["ch.blame.n1","ch.blame.n2","ch.blame.n3"][C])),1),f("span",Da,g(v(it)(Math.round(A)))+" MWh",1),f("span",Ra,g(v(y)(["ch.blame.d1","ch.blame.d2","ch.blame.d3"][C])),1)]))),128)),f("p",Fa,g(v(y)("en.blame_note",{n:v(it)(Math.round(((s.value.items||[]).find(A=>A.k==="停机")||{}).loss||0))})),1)]),f("div",qa,[f("h3",null,[tt(g(v(y)("en.states"))+" ",1),f("span",Na,g(v(y)("en.win",{win:v(Ve)(t.d.win)})),1)]),f("div",ja,[f("table",null,[f("tr",null,[f("th",null,g(v(y)("en.state")),1),f("th",null,g(v(y)("en.share")),1),f("th",Ha,g(v(y)("en.loss_mwh")),1)]),(O(!0),P(W,null,nt(n.value,A=>(O(),P("tr",{key:A.k},[f("td",La,g(i(A.k)),1),f("td",null,[f("i",{class:"bar",style:mt(`width:${Math.round(A.pct/_.value*84)}px;background:${A.k.indexOf("停机")>=0&&A.k.indexOf("调度")<0?"var(--critical)":"var(--accent)"}`)},null,4),f("span",Wa,g(A.pct)+"% · "+g(v(it)(Math.round(A.h)))+"h",1)]),f("td",Ba,g(v(it)(Math.round(A.loss))),1)]))),128))])]),f("p",Ka,[tt(g(t.d.control.anchors||""),1),T[0]||(T[0]=f("br",null,null,-1)),tt(g(v(y)("en.states_note")),1)])])])])):(O(),P("section",ka,[f("div",Sa,[f("p",Ca,g(v(y)("ui.empty")),1)])]))}}),Ua={class:"kpis"},Ga=["title"],za=["innerHTML"],Ja={key:1},Ya={key:0},Za={class:"sechead"},Xa={class:"meta"},Qa={class:"meta"},tu={key:0,class:"card mb",style:{"margin-bottom":"10px"}},eu={class:"small",style:{color:"var(--warning)"}},su={class:"small muted"},nu={class:"cards"},ru=["id"],iu={class:"head"},lu=["href"],ou={class:"sys"},cu={class:"evidence-detail"},au={class:"why"},uu={class:"evid"},fu={key:1,class:"rv"},du={key:0,class:"caveat"},pu={class:"sechead"},hu={class:"meta"},_u={class:"legend"},mu={class:"cells"},gu=["data-u","title"],bu={key:1,class:"quiet",style:{padding:"10px"}},vu={class:"nums"},yu={class:"quiet"},wu={class:"sechead"},xu={class:"meta"},ku={class:"systems"},Su={class:"t"},Cu=["href"],Tu={class:"bar"},$u={class:"cnt"},Mu=he({__name:"Overview",props:{d:{}},setup(t){const e=t,s=Q(()=>e.d?.fus||{}),n=Q(()=>e.d?.m8?.mtbf||{}),r=Q(()=>e.d?.control||{}),i=Q(()=>{const C={};for(const D of r.value.states||[])C[D.k]=D.loss;return C}),l=Q(()=>{const C=r.value,D=y("kpi.loss",{win:Ve(e.d?.win)})+(i.value["停机(调度令)"]!=null?` · ${y("kpi.loss_dispatch",{n:it(i.value["停机(调度令)"])})}`:"");return[{v:it(C.avail,1),u:"%",l:y("kpi.avail",{win:Ve(e.d?.win)}),k:C.avail>=95?"ok":"warn",ti:""},{v:it(n.value.停机总时长h),u:"h",l:y("kpi.downtime",{n:it(n.value.停机事件数)}),k:"warn",ti:""},{v:it(n.value.MTBF_h),u:"h",l:y("kpi.mtbo"),k:"",ti:""},{v:it(i.value.停机),u:"MWh",l:D,k:"",ti:""},{v:it(i.value["限电·绑定"]),u:"MWh",l:y("kpi.curtail"),k:"",ti:""},{vRaw:`${it(e.d?.kpi?.报警台)} <small>/ ${it(e.d?.kpi?.全场)}</small>`,u:"",l:y("kpi.alarm_units"),k:e.d?.kpi?.报警台?"warn":"ok",ti:y("kpi.alarm_units.hint"),vHtml:!0}]}),o=Q(()=>{const C={};for(const D of e.d?.watch||[])C[D.t]=D.why;return C}),c=Q(()=>((s.value.链盘||{}).rows||[]).filter(C=>C.lvl==="bad"||C.lvl==="warn"));function p(C){const D=(o.value[C.t]||"").trim();if(D)return D;const b=rr[C.stuck]||String(C.stuck||"").toLowerCase(),F=y(b==="evidence"?"step.site_records":"step."+(b||"evidence"));return y("ov.basis_fusion",{part:C.part||"—",done:C.done==null?"—":C.done,n:(C.steps||[]).length||"—",stuck:C.stuck?F:y("ov.all_steps_done"),srcs:(C.srcs||[]).join(" / ")||y("ov.no_srcs")})}function u(C){if(!C.stuck)return"";const D=rr[C.stuck]||String(C.stuck||"").toLowerCase(),b=y(D==="evidence"?"step.site_records":"step."+(D||"evidence"));return y("step.stuck_at",{step:b})}const _=[["危险","critical"],["报警","warning"],["不可判","unknown"],["良好","good"],["优秀","excellent"]],h=Q(()=>{const C=e.d?.sysdist||{};return yn.map(D=>{const b=C[D]||{},F=Object.values(b).reduce((B,q)=>B+q,0)||1;return{name:Ne(D),slug:wi(D),dist:b,n:F,seg:_.filter(([B])=>b[B]).map(([B,q])=>({k:B,v:q}))}})}),T=Q(()=>s.value.矩阵||[]),A=Q(()=>new Set(c.value.map(C=>C.t)));return(C,D)=>(O(),P(W,null,[f("section",null,[f("div",Ua,[(O(!0),P(W,null,nt(l.value,(b,F)=>(O(),P("div",{key:F,class:vt(["kpi",b.k]),title:b.ti||void 0},[b.vHtml?(O(),P("b",{key:0,innerHTML:b.vRaw},null,8,za)):(O(),P("b",Ja,[tt(g(b.v),1),b.u?(O(),P("small",Ya,g(b.u),1)):_t("",!0)])),f("span",null,g(b.l),1)],10,Ga))),128))])]),f("section",null,[f("div",Za,[f("h2",null,g(v(y)("ov.attention")),1),f("span",Xa,g(v(y)("ov.attention_n",{n:c.value.length})),1),f("span",Qa,g(v(y)("ov.ranked_by")),1)]),s.value.gap?(O(),P("div",tu,[f("p",eu,g(s.value.gap),1),f("p",su,g(v(y)("ov.fus_gap_hint")),1)])):_t("",!0),f("div",nu,[(O(!0),P(W,null,nt(c.value,b=>(O(),P("div",{key:b.t,class:"card",id:`u-${b.t}`,style:mt(`--sev:var(--${v(or)[v(ms)(b.ostate)||(b.lvl==="bad"?"bad":"warn")]})`)},[f("div",iu,[f("a",{class:"unit",href:`/turbine/${b.t}`},g(v(ye)(b.t)),9,lu),f("span",ou,g(b.part||""),1),f("span",{class:vt(["chip",v(ms)(b.ostate)||(b.lvl==="bad"?"bad":"warn")])},g(v(ir)(b.ostate||(b.lvl==="bad"?"危险":"报警"))),3)]),f("details",cu,[f("summary",null,g(v(y)("ov.evidence")),1),f("div",au,g(p(b)),1)]),f("div",uu,[b.estate?(O(),P("span",{key:0,class:vt(["tier",b.estate])},g(v(ir)(b.estate)),3)):_t("",!0),b.srcs&&b.srcs.length?(O(),P("span",fu,g(b.srcs.length)+" sources",1)):_t("",!0)]),u(b)||b.next?(O(),P("div",du,[f("b",null,g(v(y)("ov.caveat")),1),tt(g(u(b))+g(u(b)&&b.next?" — ":"")+g(b.next||""),1)])):_t("",!0)],12,ru))),128))])]),f("section",null,[f("div",pu,[f("h2",null,g(v(y)("ov.strip")),1),f("span",hu,g(v(y)("ov.strip_hint")),1),f("div",_u,[(O(),P(W,null,nt(["bad","warn","unk","ok","ex"],b=>f("span",{key:b},[f("i",{style:mt(`background:var(--${v(or)[b]})`)},null,4),tt(g(v(y)(v(sn)(b))),1)])),64))])]),f("div",{class:"strip",style:mt(`--n:${T.value.length||38}`)},[f("div",mu,[T.value.length?(O(!0),P(W,{key:0},nt(T.value,b=>(O(),P("div",{key:b.turbine,class:vt(["cell",[v(lr)(b),A.value.has(b.turbine)?"hot":""]]),"data-u":b.turbine,title:`${v(ye)(b.turbine)} ${v(y)(v(sn)(v(lr)(b)))}`},null,10,gu))),128)):(O(),P("div",bu,g(s.value.gap||v(y)("ov.fus_gap_hint")),1))]),f("div",vu,[(O(!0),P(W,null,nt(T.value,b=>(O(),P("span",{key:`n-${b.turbine}`,class:vt(A.value.has(b.turbine)?"hot":"")},g(v(ye)(b.turbine).replace("#","")),3))),128))]),f("div",yu,g(c.value.length?v(y)("ov.quiet",{n:Math.max(0,(T.value.length||38)-c.value.length)}):v(y)("ov.quiet_all",{n:T.value.length||38})),1)],4)]),f("section",null,[f("div",wu,[f("h2",null,g(v(y)("ov.systems")),1),f("span",xu,g(v(y)("ov.systems_hint")),1)]),f("div",ku,[(O(!0),P(W,null,nt(h.value,b=>(O(),P("div",{key:b.name,class:"sysc"},[f("div",Su,[f("b",null,g(b.name),1),f("a",{href:`#tab=component&sys=${encodeURIComponent(b.slug)}`},g(v(y)("ui.open")),9,Cu)]),f("div",Tu,[(O(!0),P(W,null,nt(b.seg,F=>(O(),P("i",{key:F.k,style:mt(`width:${(b.dist[F.k]/b.n*100).toFixed(1)}%;background:var(--${F.v})`)},null,4))),128))]),f("div",$u,[(O(!0),P(W,null,nt(b.seg,F=>(O(),P("span",{key:`c-${F.k}`},[f("i",{style:mt(`background:var(--${F.v})`)},null,4),tt(g(b.dist[F.k]),1)]))),128))])]))),128))])])],64))}}),Eu={class:"wb-tabs"},Ou=["onClick"],Au={key:0,class:"todo"},Pu={class:"page-head"},Iu={class:"window-badge"},Du={key:3,class:"card"},Ru={class:"hint"},Fu=he({__name:"Workbench",props:{d:{},tab:{},sys:{}},emits:["tab"],setup(t,{emit:e}){const s=t,n=e,r=Q(()=>!Vs.includes(s.tab));return(i,l)=>(O(),P(W,null,[f("nav",Eu,[(O(!0),P(W,null,nt(v(tc),o=>(O(),P("button",{key:o,class:vt({on:o===t.tab}),onClick:c=>n("tab",o)},[tt(g(v(y)("tab."+o)),1),v(Vs).includes(o)?_t("",!0):(O(),P("sup",Au,"迁移中"))],10,Ou))),128))]),f("div",Pu,[f("h1",null,g(v(y)("tab."+t.tab)),1),f("span",Iu,g(v(y)("win.label"))+" · "+g(v(Ve)(t.d?.win)),1)]),t.tab==="overview"?(O(),ve(Mu,{key:0,d:t.d},null,8,["d"])):t.tab==="energy"?(O(),ve(Va,{key:1,d:t.d},null,8,["d"])):t.tab==="component"?(O(),ve(ga,{key:2,d:t.d,sys:t.sys},null,8,["d","sys"])):r.value?(O(),P("section",Du,[f("h2",null,[tt(g(v(y)("tab."+t.tab))+" ",1),l[0]||(l[0]=f("small",null,"(本页签尚未迁移到 Vue)",-1))]),f("p",Ru,[l[1]||(l[1]=tt(" 迁移纪律:页签逐个搬,每搬一个就用 ",-1)),l[2]||(l[2]=f("code",null,"tools/render_parity.mjs",-1)),l[3]||(l[3]=tt(" 与重构前页面 (现网 ",-1)),l[4]||(l[4]=f("code",null,"/detail/v2",-1)),tt(")对拍文案/数值/类名序列,**通过后**才删对应的 Python 前端源码。 当前已迁移:"+g(v(Vs).join("、"))+"。 ",1)])])):_t("",!0)],64))}}),qu=xi(Fu,[["__scopeId","data-v-8bbd46d4"]]),Nu={class:"top"},ju={key:0,class:"hint",style:{padding:"0 18px"}},Hu={key:1,class:"hint",style:{padding:"0 18px",color:"var(--bad)"}},Lu={key:2,class:"card"},Wu=he({__name:"App",setup(t){const e=Nt("workbench"),s=Nt("overview"),n=Nt(null),r=Nt(""),i=Nt(!1),l=Nt("");async function o(){i.value=!0,l.value="";const c=r.value?`?win=${encodeURIComponent(r.value)}`:"",p=await vi("fleet",{method:"GET"});if(c)try{const u=await fetch("/api/fleet"+c);n.value=await u.json()}catch(u){l.value=u instanceof Error?u.message:String(u)}else p.ok?(n.value=p.data,n.value?.win&&(r.value=n.value.win)):l.value=p.error||`HTTP ${p.status}`;i.value=!1}return De(r,c=>{c&&c!==n.value?.win&&o()}),$s(o),(c,p)=>(O(),P(W,null,[f("header",Nu,[p[4]||(p[4]=f("div",{class:"brand"},"观澜 · 风电数据分析与决策支持",-1)),f("nav",null,[f("button",{class:vt({on:e.value==="workbench"}),onClick:p[0]||(p[0]=u=>e.value="workbench")},"工作台",2),f("button",{class:vt({on:e.value==="smoke"}),onClick:p[1]||(p[1]=u=>e.value="smoke")},"契约自检",2),f("button",{class:vt({on:e.value==="about"}),onClick:p[2]||(p[2]=u=>e.value="about")},"关于本前端",2)])]),f("main",null,[e.value==="workbench"?(O(),P(W,{key:0},[i.value?(O(),P("p",ju,"取数中(/api/fleet)…")):l.value?(O(),P("p",Hu,"取数失败:"+g(l.value),1)):n.value?(O(),ve(qu,{key:2,d:n.value,tab:s.value,onTab:p[3]||(p[3]=u=>s.value=u)},null,8,["d","tab"])):_t("",!0)],64)):e.value==="smoke"?(O(),ve(Xo,{key:1})):(O(),P("section",Lu,[...p[5]||(p[5]=[co("<h2>关于本前端</h2><ul><li>技术栈:<b>Vue 3 + Vite + TypeScript + Node.js</b>(用户令 2026-09-29)</li><li>与后端交互:只走网关一个源站,路径与形状以 <code>app_backEnd/app_backEnd_guanlan/contract/http_api_v1.json</code> 冻契约为准</li><li>数据来源:与重构前 <code>/detail/v2</code> 同一个接口 <code>/api/fleet?win=</code></li><li>迁移纪律:页签逐个搬,与重构前页面对拍通过后才删对应 Python 源码</li></ul>",2)])]))])],64))}});Vo(Wu).mount("#app");
|