index-sQdbkymI.js 179 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))n(l);new MutationObserver(l=>{for(const i of l)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function s(l){const i={};return l.integrity&&(i.integrity=l.integrity),l.referrerPolicy&&(i.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?i.credentials="include":l.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(l){if(l.ep)return;l.ep=!0;const i=s(l);fetch(l.href,i)}})();/**
  2. * @vue/shared v3.5.43
  3. * (c) 2018-present Yuxi (Evan) You and Vue contributors
  4. * @license MIT
  5. **/function $n(t){const e=Object.create(null);for(const s of t.split(","))e[s]=1;return s=>s in e}const rt={},Ee=[],se=()=>{},Cl=()=>!1,Fs=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),js=t=>t.startsWith("onUpdate:"),$t=Object.assign,wn=(t,e)=>{const s=t.indexOf(e);s>-1&&t.splice(s,1)},Ui=Object.prototype.hasOwnProperty,tt=(t,e)=>Ui.call(t,e),U=Array.isArray,ve=t=>ds(t)==="[object Map]",ws=t=>ds(t)==="[object Set]",Wn=t=>ds(t)==="[object Date]",G=t=>typeof t=="function",ht=t=>typeof t=="string",ne=t=>typeof t=="symbol",lt=t=>t!==null&&typeof t=="object",El=t=>(lt(t)||G(t))&&G(t.then)&&G(t.catch),Al=Object.prototype.toString,ds=t=>Al.call(t),Vi=t=>ds(t).slice(8,-1),Ol=t=>ds(t)==="[object Object]",xn=t=>ht(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,Xe=$n(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Is=t=>{const e=Object.create(null);return(s=>e[s]||(e[s]=t(s)))},Gi=/-\w/g,Wt=Is(t=>t.replace(Gi,e=>e.slice(1).toUpperCase())),zi=/\B([A-Z])/g,Pe=Is(t=>t.replace(zi,"-$1").toLowerCase()),Dl=Is(t=>t.charAt(0).toUpperCase()+t.slice(1)),Gs=Is(t=>t?`on${Dl(t)}`:""),ee=(t,e)=>!Object.is(t,e),zs=(t,...e)=>{for(let s=0;s<t.length;s++)t[s](...e)},Pl=(t,e,s,n=!1)=>{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,writable:n,value:s})},Ji=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let Kn;const qs=()=>Kn||(Kn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function gt(t){if(U(t)){const e={};for(let s=0;s<t.length;s++){const n=t[s],l=ht(n)?Qi(n):gt(n);if(l)for(const i in l)e[i]=l[i]}return e}else if(ht(t)||lt(t))return t}const Yi=/;(?![^(]*\))/g,Zi=/:([^]+)/,Xi=/"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g;function Qi(t){const e={};return t.replace(Xi,s=>s.startsWith("/*")?"":s).split(Yi).forEach(s=>{if(s){const n=s.split(Zi);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}function Tt(t){let e="";if(ht(t))e=t;else if(U(t))for(let s=0;s<t.length;s++){const n=Tt(t[s]);n&&(e+=n+" ")}else if(lt(t))for(const s in t)t[s]&&(e+=s+" ");return e.trim()}const to="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",eo=$n(to);function Fl(t){return!!t||t===""}function so(t,e,s){if(t.length!==e.length)return!1;let n=!0;for(let l=0;n&&l<t.length;l++)n=Ns(t[l],e[l],s);return n}function Un(t,e,s){if(t.size!==e.size)return!1;const n=Array.from(e),l=new Uint8Array(n.length);for(const i of t){let o=-1;for(let r=0;r<n.length;r++)if(!l[r]&&Ns(i,n[r],s)){o=r;break}if(o<0)return!1;l[o]=1}return!0}function no(t,e,s){let n=ve(t),l=ve(e);if(n||l||(n=ws(t),l=ws(e),n||l))return n&&l?Un(t,e,s):!1;const i=Object.keys(t).length,o=Object.keys(e).length;if(i!==o)return!1;for(const r in t){const u=t.hasOwnProperty(r),_=e.hasOwnProperty(r);if(u&&!_||!u&&_||!Ns(t[r],e[r],s))return!1}return String(t)===String(e)}function Vn(t,e,s,n){s||(s=[new Map,new Map]);const[l,i]=s;if(l.has(t)||i.has(e))return l.get(t)===e&&i.get(e)===t;l.set(t,e),i.set(e,t);const o=n(t,e,s);return l.delete(t),i.delete(e),o}function Ns(t,e,s){if(t===e)return!0;let n=Wn(t),l=Wn(e);return n||l?n&&l?t.getTime()===e.getTime():!1:(n=ne(t),l=ne(e),n||l?t===e:(n=U(t),l=U(e),n||l?n&&l?Vn(t,e,s,so):!1:(n=lt(t),l=lt(e),n||l?!n||!l?!1:Vn(t,e,s,no):String(t)===String(e))))}const jl=t=>!!(t&&t.__v_isRef===!0),h=t=>ht(t)?t:t==null?"":U(t)||lt(t)&&(t.toString===Al||!G(t.toString))?jl(t)?h(t.value):JSON.stringify(t,Il,2):String(t),Il=(t,e)=>jl(e)?Il(t,e.value):ve(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((s,[n,l],i)=>(s[Js(n,i)+" =>"]=l,s),{})}:ws(e)?{[`Set(${e.size})`]:[...e.values()].map(s=>Js(s))}:ne(e)?Js(e):lt(e)&&!U(e)&&!Ol(e)?String(e):e,Js=(t,e="")=>{var s;return ne(t)?`Symbol(${(s=t.description)!=null?s:e})`:t};/**
  6. * @vue/reactivity v3.5.43
  7. * (c) 2018-present Yuxi (Evan) You and Vue contributors
  8. * @license MIT
  9. **/let yt;class lo{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&&yt&&(yt.active?(this.parent=yt,this.index=(yt.scopes||(yt.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 l=this.scopes.slice();for(e=0,s=l.length;e<s;e++)l[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=yt;try{return yt=this,e()}finally{yt=s}}}on(){++this._on===1&&(this.prevScope=yt,yt=this)}off(){if(this._on>0&&--this._on===0){if(yt===this)yt=this.prevScope;else{let e=yt;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 l=this.scopes.slice();for(s=0,n=l.length;s<n;s++)l[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!e){const l=this.parent.scopes.pop();l&&l!==this&&(this.parent.scopes[this.index]=l,l.index=this.index)}this.parent=void 0}}}function io(){return yt}let dt;const Ys=new WeakSet;class ql{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,yt&&(yt.active?yt.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Ys.has(this)&&(Ys.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Hl(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Gn(this),Ll(this);const e=dt,s=Kt;dt=this,Kt=!0;try{return this.fn()}finally{Rl(this),dt=e,Kt=s,this.flags&=-3}}stop(){if(this.flags&1){for(let e=this.deps;e;e=e.nextDep)Mn(e);this.deps=this.depsTail=void 0,Gn(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Ys.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){cn(this)&&this.run()}get dirty(){return cn(this)}}let Nl=0,Qe,ts;function Hl(t,e=!1){if(t.flags|=8,e){t.next=ts,ts=t;return}t.next=Qe,Qe=t}function kn(){Nl++}function Sn(){if(--Nl>0)return;if(ts){let e=ts;for(ts=void 0;e;){const s=e.next;e.next=void 0,e.flags&=-9,e=s}}let t;for(;Qe;){let e=Qe;for(Qe=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 Ll(t){for(let e=t.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function Rl(t){let e,s=t.depsTail,n=s;for(;n;){const l=n.prevDep;n.version===-1?(n===s&&(s=l),Mn(n),oo(n)):e=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=l}t.deps=e,t.depsTail=s}function cn(t){for(let e=t.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(Bl(e.dep.computed)||e.dep.version!==e.version))return!0;return!!t._dirty}function Bl(t){if(t.flags&4&&!(t.flags&16)||(t.flags&=-17,t.globalVersion===is)||(t.globalVersion=is,!t.isSSR&&t.flags&128&&(!t.deps&&!t._dirty||!cn(t))))return;t.flags|=2;const e=t.dep,s=dt,n=Kt;dt=t,Kt=!0;try{Ll(t);const l=t.fn(t._value);(e.version===0||ee(l,t._value))&&(t.flags|=128,t._value=l,e.version++)}catch(l){throw e.version++,l}finally{dt=s,Kt=n,Rl(t),t.flags&=-3}}function Mn(t,e=!1){const{dep:s,prevSub:n,nextSub:l}=t;if(n&&(n.nextSub=l,t.prevSub=void 0),l&&(l.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)Mn(i,!0)}!e&&!--s.sc&&s.map&&s.map.delete(s.key)}function oo(t){const{prevDep:e,nextDep:s}=t;e&&(e.nextDep=s,t.prevDep=void 0),s&&(s.prevDep=e,t.nextDep=void 0)}let Kt=!0;const Wl=[];function de(){Wl.push(Kt),Kt=!1}function fe(){const t=Wl.pop();Kt=t===void 0?!0:t}function Gn(t){const{cleanup:e}=t;if(t.cleanup=void 0,e){const s=dt;dt=void 0;try{e()}finally{dt=s}}}let is=0;class ro{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 Tn{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(!dt||!Kt||dt===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==dt)s=this.activeLink=new ro(dt,this),dt.deps?(s.prevDep=dt.depsTail,dt.depsTail.nextDep=s,dt.depsTail=s):dt.deps=dt.depsTail=s,Kl(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=dt.depsTail,s.nextDep=void 0,dt.depsTail.nextDep=s,dt.depsTail=s,dt.deps===s&&(dt.deps=n)}return s}trigger(e){this.version++,is++,this.notify(e)}notify(e){kn();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Sn()}}}function Kl(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)Kl(n)}const s=t.dep.subs;s!==t&&(t.prevSub=s,s&&(s.nextSub=t)),t.dep.subs=t}}const un=new WeakMap,Ae=Symbol(""),dn=Symbol(""),os=Symbol("");function wt(t,e,s){if(Kt&&dt){let n=un.get(t);n||un.set(t,n=new Map);let l=n.get(s);l||(n.set(s,l=new Tn),l.map=n,l.key=s),l.track()}}function ce(t,e,s,n,l,i){const o=un.get(t);if(!o){is++;return}const r=u=>{u&&u.trigger()};if(kn(),e==="clear")o.forEach(r);else{const u=U(t),_=u&&xn(s);if(u&&s==="length"){const f=Number(n);o.forEach((v,p)=>{(p==="length"||p===os||!ne(p)&&p>=f)&&r(v)})}else switch((s!==void 0||o.has(void 0))&&r(o.get(s)),_&&r(o.get(os)),e){case"add":u?_&&r(o.get("length")):(r(o.get(Ae)),ve(t)&&r(o.get(dn)));break;case"delete":u||(r(o.get(Ae)),ve(t)&&r(o.get(dn)));break;case"set":ve(t)&&r(o.get(Ae));break}}Sn()}function qe(t){const e=Q(t);return e===t||(wt(e,"iterate",os),Nt(t))?e:le(t)?be(t)?e.map(s=>$e(Ht(s))):e.map($e):e.map(Ht)}function Hs(t){return wt(t=Q(t),"iterate",os),t}function Qt(t,e){return le(t)?$e(be(t)?Ht(e):e):Ht(e)}const ao={__proto__:null,[Symbol.iterator](){return Zs(this,Symbol.iterator,t=>Qt(this,t))},concat(...t){return qe(this).concat(...t.map(e=>U(e)?qe(e):e))},entries(){return Zs(this,"entries",t=>(t[1]=Qt(this,t[1]),t))},every(t,e){return oe(this,"every",t,e,void 0,arguments)},filter(t,e){return oe(this,"filter",t,e,s=>s.map(n=>Qt(this,n)),arguments)},find(t,e){return oe(this,"find",t,e,s=>Qt(this,s),arguments)},findIndex(t,e){return oe(this,"findIndex",t,e,void 0,arguments)},findLast(t,e){return oe(this,"findLast",t,e,s=>Qt(this,s),arguments)},findLastIndex(t,e){return oe(this,"findLastIndex",t,e,void 0,arguments)},forEach(t,e){return oe(this,"forEach",t,e,void 0,arguments)},includes(...t){return Xs(this,"includes",t)},indexOf(...t){return Xs(this,"indexOf",t)},join(t){return qe(this).join(t)},lastIndexOf(...t){return Xs(this,"lastIndexOf",t)},map(t,e){return oe(this,"map",t,e,void 0,arguments)},pop(){return Ve(this,"pop")},push(...t){return Ve(this,"push",t)},reduce(t,...e){return zn(this,"reduce",t,e)},reduceRight(t,...e){return zn(this,"reduceRight",t,e)},shift(){return Ve(this,"shift")},some(t,e){return oe(this,"some",t,e,void 0,arguments)},splice(...t){return Ve(this,"splice",t)},toReversed(){return qe(this).toReversed()},toSorted(t){return qe(this).toSorted(t)},toSpliced(...t){return qe(this).toSpliced(...t)},unshift(...t){return Ve(this,"unshift",t)},values(){return Zs(this,"values",t=>Qt(this,t))}};function Zs(t,e,s){const n=Hs(t),l=n[e]();return n!==t&&!Nt(t)&&(l._next=l.next,l.next=()=>{const i=l._next();return i.done||(i.value=s(i.value)),i}),l}const co=Array.prototype;function oe(t,e,s,n,l,i){const o=Hs(t),r=o!==t&&!Nt(t),u=o[e];if(u!==co[e]){const v=u.apply(t,i);return r?Ht(v):v}let _=s;o!==t&&(r?_=function(v,p){return s.call(this,Qt(t,v),p,t)}:s.length>2&&(_=function(v,p){return s.call(this,v,p,t)}));const f=u.call(o,_,n);return r&&l?l(f):f}function zn(t,e,s,n){const l=Hs(t),i=l!==t&&!Nt(t);let o=s,r=!1;l!==t&&(i?(r=n.length===0,o=function(_,f,v){return r&&(r=!1,_=Qt(t,_)),s.call(this,_,Qt(t,f),v,t)}):s.length>3&&(o=function(_,f,v){return s.call(this,_,f,v,t)}));const u=l[e](o,...n);return r?Qt(t,u):u}function Xs(t,e,s){const n=Q(t);wt(n,"iterate",os);const l=n[e](...s);return(l===-1||l===!1)&&On(s[0])?(s[0]=Q(s[0]),n[e](...s)):l}function Ve(t,e,s=[]){de(),kn();const n=Q(t)[e].apply(t,s);return Sn(),fe(),n}const uo=$n("__proto__,__v_isRef,__isVue"),Ul=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(ne));function fo(t){ne(t)||(t=String(t));const e=Q(this);return wt(e,"has",t),e.hasOwnProperty(t)}class Vl{constructor(e=!1,s=!1){this._isReadonly=e,this._isShallow=s}get(e,s,n){if(s==="__v_skip")return e.__v_skip;const l=this._isReadonly,i=this._isShallow;if(s==="__v_isReactive")return!l;if(s==="__v_isReadonly")return l;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(l?i?wo:Yl:i?Jl:zl).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const o=U(e);if(!l){let u;if(o&&(u=ao[s]))return u;if(s==="hasOwnProperty")return fo}const r=Reflect.get(e,s,xt(e)?e:n);if((ne(s)?Ul.has(s):uo(s))||(l||wt(e,"get",s),i))return r;if(xt(r)){const u=o&&xn(s)?r:r.value;return l&&lt(u)?pn(u):u}return lt(r)?l?pn(r):En(r):r}}class Gl extends Vl{constructor(e=!1){super(!1,e)}set(e,s,n,l){let i=e[s];const o=U(e)&&xn(s);if(!this._isShallow){const _=le(i);if(!Nt(n)&&!le(n)&&(i=Q(i),n=Q(n)),!o&&xt(i)&&!xt(n))return _||(i.value=n),!0}const r=o?Number(s)<e.length:tt(e,s),u=Reflect.set(e,s,n,xt(e)?e:l);return e===Q(l)&&u&&(r?ee(n,i)&&ce(e,"set",s,n):ce(e,"add",s,n)),u}deleteProperty(e,s){const n=tt(e,s);e[s];const l=Reflect.deleteProperty(e,s);return l&&n&&ce(e,"delete",s,void 0),l}has(e,s){const n=Reflect.has(e,s);return(!ne(s)||!Ul.has(s))&&wt(e,"has",s),n}ownKeys(e){return wt(e,"iterate",U(e)?"length":Ae),Reflect.ownKeys(e)}}class po extends Vl{constructor(e=!1){super(!0,e)}set(e,s){return!0}deleteProperty(e,s){return!0}}const ho=new Gl,mo=new po,_o=new Gl(!0);const fn=t=>t,ms=t=>Reflect.getPrototypeOf(t);function go(t,e,s){return function(...n){const l=this.__v_raw,i=Q(l),o=ve(i),r=t==="entries"||t===Symbol.iterator&&o,u=t==="keys"&&o,_=l[t](...n),f=s?fn:e?$e:Ht;return!e&&wt(i,"iterate",u?dn:Ae),$t(Object.create(_),{next(){const{value:v,done:p}=_.next();return p?{value:v,done:p}:{value:r?[f(v[0]),f(v[1])]:f(v),done:p}}})}}function _s(t){return function(...e){return t==="delete"?!1:t==="clear"?void 0:this}}function vo(t,e){const s={get(l){const i=this.__v_raw,o=Q(i),r=Q(l);t||(ee(l,r)&&wt(o,"get",l),wt(o,"get",r));const{has:u}=ms(o),_=e?fn:t?$e:Ht;if(u.call(o,l))return _(i.get(l));if(u.call(o,r))return _(i.get(r));i!==o&&i.get(l)},get size(){const l=this.__v_raw;return!t&&wt(Q(l),"iterate",Ae),l.size},has(l){const i=this.__v_raw,o=Q(i),r=Q(l);return t||(ee(l,r)&&wt(o,"has",l),wt(o,"has",r)),l===r?i.has(l):i.has(l)||i.has(r)},forEach(l,i){const o=this,r=o.__v_raw,u=Q(r),_=e?fn:t?$e:Ht;return!t&&wt(u,"iterate",Ae),r.forEach((f,v)=>l.call(i,_(f),_(v),o))}};return $t(s,t?{add:_s("add"),set:_s("set"),delete:_s("delete"),clear:_s("clear")}:{add(l){const i=Q(this),o=ms(i),r=Q(l),u=!e&&!Nt(l)&&!le(l)?r:l;return o.has.call(i,u)||ee(l,u)&&o.has.call(i,l)||ee(r,u)&&o.has.call(i,r)||(i.add(u),ce(i,"add",u,u)),this},set(l,i){!e&&!Nt(i)&&!le(i)&&(i=Q(i));const o=Q(this),{has:r,get:u}=ms(o);let _=r.call(o,l);_||(l=Q(l),_=r.call(o,l));const f=u.call(o,l);return o.set(l,i),_?ee(i,f)&&ce(o,"set",l,i):ce(o,"add",l,i),this},delete(l){const i=Q(this),{has:o,get:r}=ms(i);let u=o.call(i,l);u||(l=Q(l),u=o.call(i,l)),r&&r.call(i,l);const _=i.delete(l);return u&&ce(i,"delete",l,void 0),_},clear(){const l=Q(this),i=l.size!==0,o=l.clear();return i&&ce(l,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(l=>{s[l]=go(l,t,e)}),s}function Cn(t,e){const s=vo(t,e);return(n,l,i)=>l==="__v_isReactive"?!t:l==="__v_isReadonly"?t:l==="__v_raw"?n:Reflect.get(tt(s,l)&&l in n?s:n,l,i)}const bo={get:Cn(!1,!1)},yo={get:Cn(!1,!0)},$o={get:Cn(!0,!1)};const zl=new WeakMap,Jl=new WeakMap,Yl=new WeakMap,wo=new WeakMap;function xo(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function En(t){return le(t)?t:An(t,!1,ho,bo,zl)}function ko(t){return An(t,!1,_o,yo,Jl)}function pn(t){return An(t,!0,mo,$o,Yl)}function An(t,e,s,n,l){if(!lt(t)||t.__v_raw&&!(e&&t.__v_isReactive)||t.__v_skip||!Object.isExtensible(t))return t;const i=l.get(t);if(i)return i;const o=xo(Vi(t));if(o===0)return t;const r=new Proxy(t,o===2?n:s);return l.set(t,r),r}function be(t){return le(t)?be(t.__v_raw):!!(t&&t.__v_isReactive)}function le(t){return!!(t&&t.__v_isReadonly)}function Nt(t){return!!(t&&t.__v_isShallow)}function On(t){return t?!!t.__v_raw:!1}function Q(t){const e=t&&t.__v_raw;return e?Q(e):t}function So(t){return!tt(t,"__v_skip")&&Object.isExtensible(t)&&Pl(t,"__v_skip",!0),t}const Ht=t=>lt(t)?En(t):t,$e=t=>lt(t)?pn(t):t;function xt(t){return t?t.__v_isRef===!0:!1}function St(t){return Mo(t,!1)}function Mo(t,e){return xt(t)?t:new To(t,e)}class To{constructor(e,s){this.dep=new Tn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?e:Q(e),this._value=s?e:Ht(e),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(e){const s=this._rawValue,n=this.__v_isShallow||Nt(e)||le(e);e=n?e:Q(e),ee(e,s)&&(this._rawValue=e,this._value=n?e:Ht(e),this.dep.trigger())}}function m(t){return xt(t)?t.value:t}const Co={get:(t,e,s)=>e==="__v_raw"?t:m(Reflect.get(t,e,s)),set:(t,e,s,n)=>{const l=t[e];return xt(l)&&!xt(s)?(l.value=s,!0):Reflect.set(t,e,s,n)}};function Zl(t){return be(t)?t:new Proxy(t,Co)}class Eo{constructor(e,s,n){this.fn=e,this.setter=s,this._value=void 0,this.dep=new Tn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=is-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&dt!==this)return Hl(this,!0),!0}get value(){const e=this.dep.track();return Bl(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function Ao(t,e,s=!1){let n,l;return G(t)?n=t:(n=t.get,l=t.set),new Eo(n,l,s)}const gs={},xs=new WeakMap;let Te;function Oo(t,e=!1,s=Te){if(s){let n=xs.get(s);n||xs.set(s,n=[]),n.push(t)}}function Do(t,e,s=rt){const{immediate:n,deep:l,once:i,scheduler:o,augmentJob:r,call:u}=s,_=O=>l?O:Nt(O)||l===!1||l===0?ue(O,1):ue(O);let f,v,p,b,k=!1,w=!1;if(xt(t)?(v=()=>t.value,k=Nt(t)):be(t)?(v=()=>_(t),k=!0):U(t)?(w=!0,k=t.some(O=>be(O)||Nt(O)),v=()=>t.map(O=>{if(xt(O))return O.value;if(be(O))return _(O);if(G(O))return u?u(O,2):O()})):G(t)?e?v=u?()=>u(t,2):t:v=()=>{if(p){de();try{p()}finally{fe()}}const O=Te;Te=f;try{return u?u(t,3,[b]):t(b)}finally{Te=O}}:v=se,e&&l){const O=v,H=l===!0?1/0:l;v=()=>ue(O(),H)}const I=io(),$=()=>{f.stop(),I&&I.active&&wn(I.effects,f)};if(i&&e){const O=e;e=(...H)=>{const Z=O(...H);return $(),Z}}let T=w?new Array(t.length).fill(gs):gs;const N=O=>{if(!(!(f.flags&1)||!f.dirty&&!O))if(e){const H=f.run();if(O||l||k||(w?H.some((Z,mt)=>ee(Z,T[mt])):ee(H,T))){p&&p();const Z=Te;Te=f;try{const mt=[H,T===gs?void 0:w&&T[0]===gs?[]:T,b];T=H,u?u(e,3,mt):e(...mt)}finally{Te=Z}}}else f.run()};return r&&r(N),f=new ql(v),f.scheduler=o?()=>o(N,!1):N,b=O=>Oo(O,!1,f),p=f.onStop=()=>{const O=xs.get(f);if(O){if(u)u(O,4);else for(const H of O)H();xs.delete(f)}},e?n?N(!0):T=f.run():o?o(N.bind(null,!0),!0):f.run(),$.pause=f.pause.bind(f),$.resume=f.resume.bind(f),$.stop=$,$}function ue(t,e=1/0,s){if(e<=0||!lt(t)||t.__v_skip||(s=s||new Map,(s.get(t)||0)>=e))return t;if(s.set(t,e),e--,xt(t))ue(t.value,e,s);else if(U(t))for(let n=0;n<t.length;n++)ue(t[n],e,s);else if(ws(t)||ve(t))t.forEach(n=>{ue(n,e,s)});else if(Ol(t)){for(const n in t)ue(t[n],e,s);for(const n of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,n)&&ue(t[n],e,s)}return t}/**
  10. * @vue/runtime-core v3.5.43
  11. * (c) 2018-present Yuxi (Evan) You and Vue contributors
  12. * @license MIT
  13. **/function fs(t,e,s,n){try{return n?t(...n):t()}catch(l){Ls(l,e,s)}}function Ut(t,e,s,n){if(G(t)){const l=fs(t,e,s,n);return l&&El(l)&&l.catch(i=>{Ls(i,e,s)}),l}if(U(t)){const l=[];for(let i=0;i<t.length;i++)l.push(Ut(t[i],e,s,n));return l}}function Ls(t,e,s,n=!0){const l=e?e.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:o}=e&&e.appContext.config||rt;if(e){let r=e.parent;const u=e.proxy,_=`https://vuejs.org/error-reference/#runtime-${s}`;for(;r;){const f=r.ec;if(f){for(let v=0;v<f.length;v++)if(f[v](t,u,_)===!1)return}r=r.parent}if(i){de(),fs(i,null,10,[t,u,_]),fe();return}}Po(t,s,l,n,o)}function Po(t,e,s,n=!0,l=!1){if(l)throw t;console.error(t)}const Mt=[];let Zt=-1;const He=[];let _e=null,Ne=0;const Xl=Promise.resolve();let ks=null;function Fo(t){const e=ks||Xl;return t?e.then(this?t.bind(this):t):e}function jo(t){let e=Zt+1,s=Mt.length;for(;e<s;){const n=e+s>>>1,l=Mt[n],i=rs(l);i<t||i===t&&l.flags&2?e=n+1:s=n}return e}function Dn(t){if(!(t.flags&1)){const e=rs(t),s=Mt[Mt.length-1];!s||!(t.flags&2)&&e>=rs(s)?Mt.push(t):Mt.splice(jo(e),0,t),t.flags|=1,Ql()}}function Ql(){ks||(ks=Xl.then(ei))}function Io(t){if(!U(t))_e&&t.id===-1?_e.splice(Ne+1,0,t):t.flags&1||(He.push(t),t.flags|=1);else for(let e=0;e<t.length;e++)He.push(t[e]);Ql()}function Jn(t,e,s=Zt+1){for(;s<Mt.length;s++){const n=Mt[s];if(n&&n.flags&2){if(t&&n.id!==t.uid)continue;Mt.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function ti(t){if(He.length){const e=[...new Set(He)].sort((s,n)=>rs(s)-rs(n));if(He.length=0,_e){for(let s=0;s<e.length;s++)_e.push(e[s]);return}for(_e=e,Ne=0;Ne<_e.length;Ne++){const s=_e[Ne];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}_e=null,Ne=0}}const rs=t=>t.id==null?t.flags&2?-1:1/0:t.id;function ei(t){try{for(Zt=0;Zt<Mt.length;Zt++){const e=Mt[Zt];e&&!(e.flags&8)&&(e.flags&4&&(e.flags&=-2),fs(e,e.i,e.i?15:14),e.flags&4||(e.flags&=-2))}}finally{for(;Zt<Mt.length;Zt++){const e=Mt[Zt];e&&(e.flags&=-2)}Zt=-1,Mt.length=0,ti(),ks=null,(Mt.length||He.length)&&ei()}}let qt=null,si=null;function Ss(t){const e=qt;return qt=t,si=t&&t.type.__scopeId||null,e}function qo(t,e=qt,s){if(!e||t._n)return t;const n=(...l)=>{n._d&&rl(-1);const i=Ss(e),o=Oe.length;let r;try{r=t(...l)}finally{for(let u=Oe.length;u>o;u--)Ti();Ss(i),n._d&&rl(1)}return r};return n._n=!0,n._c=!0,n._d=!0,n}function Yn(t,e){if(qt===null)return t;const s=Vs(qt),n=t.dirs||(t.dirs=[]);for(let l=0;l<e.length;l++){let[i,o,r,u=rt]=e[l];i&&(G(i)&&(i={mounted:i,updated:i}),i.deep&&ue(o),n.push({dir:i,instance:s,value:o,oldValue:void 0,arg:r,modifiers:u}))}return t}function Se(t,e,s,n){const l=t.dirs,i=e&&e.dirs;for(let o=0;o<l.length;o++){const r=l[o];i&&(r.oldValue=i[o].value);let u=r.dir[n];u&&(de(),Ut(u,s,8,[t.el,r,t,e]),fe())}}function No(t,e){if(Ct){let s=Ct.provides;const n=Ct.parent&&Ct.parent.provides;n===s&&(s=Ct.provides=Object.create(n)),s[t]=e}}function bs(t,e,s=!1){const n=Fr();if(n||Le){let l=Le?Le._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(l&&t in l)return l[t];if(arguments.length>1)return s&&G(e)?e.call(n&&n.proxy):e}}const Ho=Symbol.for("v-scx"),Lo=()=>bs(Ho);function es(t,e,s){return ni(t,e,s)}function ni(t,e,s=rt){const{immediate:n,deep:l,flush:i,once:o}=s,r=$t({},s),u=e&&n||!e&&i!=="post";let _;if(us){if(i==="sync"){const b=Lo();_=b.__watcherHandles||(b.__watcherHandles=[])}else if(!u){const b=()=>{};return b.stop=se,b.resume=se,b.pause=se,b}}const f=Ct;r.call=(b,k,w)=>Ut(b,f,k,w);let v=!1;i==="post"?r.scheduler=b=>{At(b,f&&f.suspense)}:i!=="sync"&&(v=!0,r.scheduler=(b,k)=>{k?b():Dn(b)}),r.augmentJob=b=>{e&&(b.flags|=4),v&&(b.flags|=2,f&&(b.id=f.uid,b.i=f))};const p=Do(t,e,r);return us&&(_?_.push(p):u&&p()),p}function Ro(t,e,s){const n=this.proxy,l=ht(t)?t.includes(".")?li(n,t):()=>n[t]:t.bind(n,n);let i;G(e)?i=e:(i=e.handler,s=e);const o=ps(this),r=ni(l,i.bind(n),s);return o(),r}function li(t,e){const s=e.split(".");return()=>{let n=t;for(let l=0;l<s.length&&n;l++)n=n[s[l]];return n}}const Bo=Symbol("_vte"),Rs=t=>t.__isTeleport,Qs=Symbol("_leaveCb");function Wo(t){let e=t[0];if(t.length>1){for(const s of t)if(s.type!==pe){e=s;break}}return e}function ii(t){if(!Fn(t))return Rs(t.type)&&t.children?Wo(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&&G(s.default))return s.default()}}function Pn(t,e){if(t.shapeFlag&6&&t.component){t.transition=e;const s=t.component.subTree;Pn(Rs(s.type)&&ii(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 Vt(t,e){return G(t)?$t({name:t.name},e,{setup:t}):t}function oi(t){t.ids=[t.ids[0]+t.ids[2]+++"-",0,0]}function Zn(t,e){let s;return!!((s=Object.getOwnPropertyDescriptor(t,e))&&!s.configurable)}const Ms=new WeakMap;function ss(t,e,s,n,l=!1){if(U(t)){t.forEach((w,I)=>ss(w,e&&(U(e)?e[I]:e),s,n,l));return}if(ns(n)&&!l){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&ss(t,e,s,n.component.subTree);return}const i=n.shapeFlag&4?Vs(n.component):n.el,o=l?null:i,{i:r,r:u}=t,_=e&&e.r,f=r.refs===rt?r.refs={}:r.refs,v=r.setupState,p=Q(v),b=v===rt?Cl:w=>Zn(f,w)?!1:tt(p,w),k=(w,I)=>!(I&&Zn(f,I));if(_!=null&&_!==u){if(Xn(e),ht(_))f[_]=null,b(_)&&(v[_]=null);else if(xt(_)){const w=e;k(_,w.k)&&(_.value=null),w.k&&(f[w.k]=null)}}if(G(u))fs(u,r,12,[o,f]);else{const w=ht(u),I=xt(u);if(w||I){const $=()=>{if(t.f){const T=w?b(u)?v[u]:f[u]:k()||!t.k?u.value:f[t.k];if(l)U(T)&&wn(T,i);else if(U(T))T.includes(i)||T.push(i);else if(w)f[u]=[i],b(u)&&(v[u]=f[u]);else{const N=[i];k(u,t.k)&&(u.value=N),t.k&&(f[t.k]=N)}}else w?(f[u]=o,b(u)&&(v[u]=o)):I&&(k(u,t.k)&&(u.value=o),t.k&&(f[t.k]=o))};if(o){const T=()=>{$(),Ms.delete(t)};T.id=-1,Ms.set(t,T),At(T,s)}else Xn(t),$()}}}function Xn(t){const e=Ms.get(t);e&&(e.flags|=8,Ms.delete(t))}qs().requestIdleCallback;qs().cancelIdleCallback;const ns=t=>!!t.type.__asyncLoader,Fn=t=>t.type.__isKeepAlive;function Ko(t,e){ri(t,"a",e)}function Uo(t,e){ri(t,"da",e)}function ri(t,e,s=Ct){const n=t.__wdc||(t.__wdc=()=>{let l=s;for(;l;){if(l.isDeactivated)return;l=l.parent}return t()});if(Bs(e,n,s),s){let l=s.parent;for(;l&&l.parent;)Fn(l.parent.vnode)&&Vo(n,e,s,l),l=l.parent}}function Vo(t,e,s,n){const l=Bs(e,t,n,!0);ci(()=>{wn(n[e],l)},s)}function Bs(t,e,s=Ct,n=!1){if(s){const l=s[t]||(s[t]=[]),i=e.__weh||(e.__weh=(...o)=>{de();const r=ps(s),u=Ut(e,s,t,o);return r(),fe(),u});return n?l.unshift(i):l.push(i),i}}const he=t=>(e,s=Ct)=>{(!us||t==="sp")&&Bs(t,(...n)=>e(...n),s)},Go=he("bm"),Ws=he("m"),zo=he("bu"),Jo=he("u"),ai=he("bum"),ci=he("um"),Yo=he("sp"),Zo=he("rtg"),Xo=he("rtc");function Qo(t,e=Ct){Bs("ec",t,e)}const tr=Symbol.for("v-ndc");function at(t,e,s,n){let l;const i=s,o=U(t);if(o||ht(t)){const r=o&&be(t);let u=!1,_=!1;r&&(u=!Nt(t),_=le(t),t=Hs(t)),l=new Array(t.length);for(let f=0,v=t.length;f<v;f++)l[f]=e(u?_?$e(Ht(t[f])):Ht(t[f]):t[f],f,void 0,i)}else if(typeof t=="number"){l=new Array(t);for(let r=0;r<t;r++)l[r]=e(r+1,r,void 0,i)}else if(lt(t))if(t[Symbol.iterator])l=Array.from(t,(r,u)=>e(r,u,void 0,i));else{const r=Object.keys(t);l=new Array(r.length);for(let u=0,_=r.length;u<_;u++){const f=r[u];l[u]=e(t[f],f,u,i)}}else l=[];return l}const hn=t=>t?Oi(t)?Vs(t):hn(t.parent):null,ls=$t(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=>hn(t.parent),$root:t=>hn(t.root),$host:t=>t.ce,$emit:t=>t.emit,$options:t=>di(t),$forceUpdate:t=>t.f||(t.f=()=>{Dn(t.update)}),$nextTick:t=>t.n||(t.n=Fo.bind(t.proxy)),$watch:t=>Ro.bind(t)}),tn=(t,e)=>t!==rt&&!t.__isScriptSetup&&tt(t,e),er={get({_:t},e){if(e==="__v_skip")return!0;const{ctx:s,setupState:n,data:l,props:i,accessCache:o,type:r,appContext:u}=t;if(e[0]!=="$"){const p=o[e];if(p!==void 0)switch(p){case 1:return n[e];case 2:return l[e];case 4:return s[e];case 3:return i[e]}else{if(tn(n,e))return o[e]=1,n[e];if(l!==rt&&tt(l,e))return o[e]=2,l[e];if(tt(i,e))return o[e]=3,i[e];if(s!==rt&&tt(s,e))return o[e]=4,s[e];mn&&(o[e]=0)}}const _=ls[e];let f,v;if(_)return e==="$attrs"&&wt(t.attrs,"get",""),_(t);if((f=r.__cssModules)&&(f=f[e]))return f;if(s!==rt&&tt(s,e))return o[e]=4,s[e];if(v=u.config.globalProperties,tt(v,e))return v[e]},set({_:t},e,s){const{data:n,setupState:l,ctx:i}=t;return tn(l,e)?(l[e]=s,!0):n!==rt&&tt(n,e)?(n[e]=s,!0):tt(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:l,props:i,type:o}},r){let u;return!!(s[r]||t!==rt&&r[0]!=="$"&&tt(t,r)||tn(e,r)||tt(i,r)||tt(n,r)||tt(ls,r)||tt(l.config.globalProperties,r)||(u=o.__cssModules)&&u[r])},defineProperty(t,e,s){return s.get!=null?t._.accessCache[e]=0:tt(s,"value")&&this.set(t,e,s.value,null),Reflect.defineProperty(t,e,s)}};function Qn(t){return U(t)?t.reduce((e,s)=>(e[s]=null,e),{}):t}let mn=!0;function sr(t){const e=di(t),s=t.proxy,n=t.ctx;mn=!1,e.beforeCreate&&tl(e.beforeCreate,t,"bc");const{data:l,computed:i,methods:o,watch:r,provide:u,inject:_,created:f,beforeMount:v,mounted:p,beforeUpdate:b,updated:k,activated:w,deactivated:I,beforeDestroy:$,beforeUnmount:T,destroyed:N,unmounted:O,render:H,renderTracked:Z,renderTriggered:mt,errorCaptured:Lt,serverPrefetch:me,expose:ie,inheritAttrs:xe,components:Fe,directives:jt,filters:Be}=e;if(_&&nr(_,n,null),o)for(const ut in o){const st=o[ut];G(st)&&(n[ut]=st.bind(s))}if(l){const ut=l.call(s,s);lt(ut)&&(t.data=En(ut))}if(mn=!0,i)for(const ut in i){const st=i[ut],Rt=G(st)?st.bind(s,s):G(st.get)?st.get.bind(s,s):se,ke=!G(st)&&G(st.set)?st.set.bind(s):se,L=P({get:Rt,set:ke});Object.defineProperty(n,ut,{enumerable:!0,configurable:!0,get:()=>L.value,set:W=>L.value=W})}if(r)for(const ut in r)ui(r[ut],n,s,ut);if(u){const ut=G(u)?u.call(s):u;Reflect.ownKeys(ut).forEach(st=>{No(st,ut[st])})}f&&tl(f,t,"c");function vt(ut,st){U(st)?st.forEach(Rt=>ut(Rt.bind(s))):st&&ut(st.bind(s))}if(vt(Go,v),vt(Ws,p),vt(zo,b),vt(Jo,k),vt(Ko,w),vt(Uo,I),vt(Qo,Lt),vt(Xo,Z),vt(Zo,mt),vt(ai,T),vt(ci,O),vt(Yo,me),U(ie))if(ie.length){const ut=t.exposed||(t.exposed={});ie.forEach(st=>{Object.defineProperty(ut,st,{get:()=>s[st],set:Rt=>s[st]=Rt,enumerable:!0})})}else t.exposed||(t.exposed={});H&&t.render===se&&(t.render=H),xe!=null&&(t.inheritAttrs=xe),Fe&&(t.components=Fe),jt&&(t.directives=jt),me&&oi(t)}function nr(t,e,s=se){U(t)&&(t=_n(t));for(const n in t){const l=t[n];let i;lt(l)?"default"in l?i=bs(l.from||n,l.default,!0):i=bs(l.from||n):i=bs(l),xt(i)?Object.defineProperty(e,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):e[n]=i}}function tl(t,e,s){Ut(U(t)?t.map(n=>n.bind(e.proxy)):t.bind(e.proxy),e,s)}function ui(t,e,s,n){let l=n.includes(".")?li(s,n):()=>s[n];if(ht(t)){const i=e[t];G(i)&&es(l,i)}else if(G(t))es(l,t.bind(s));else if(lt(t))if(U(t))t.forEach(i=>ui(i,e,s,n));else{const i=G(t.handler)?t.handler.bind(s):e[t.handler];G(i)&&es(l,i,t)}}function di(t){const e=t.type,{mixins:s,extends:n}=e,{mixins:l,optionsCache:i,config:{optionMergeStrategies:o}}=t.appContext,r=i.get(e);let u;return r?u=r:!l.length&&!s&&!n?u=e:(u={},l.length&&l.forEach(_=>Ts(u,_,o,!0)),Ts(u,e,o)),lt(e)&&i.set(e,u),u}function Ts(t,e,s,n=!1){const{mixins:l,extends:i}=e;i&&Ts(t,i,s,!0),l&&l.forEach(o=>Ts(t,o,s,!0));for(const o in e)if(!(n&&o==="expose")){const r=lr[o]||s&&s[o];t[o]=r?r(t[o],e[o]):e[o]}return t}const lr={data:el,props:sl,emits:sl,methods:Ye,computed:Ye,beforeCreate:kt,created:kt,beforeMount:kt,mounted:kt,beforeUpdate:kt,updated:kt,beforeDestroy:kt,beforeUnmount:kt,destroyed:kt,unmounted:kt,activated:kt,deactivated:kt,errorCaptured:kt,serverPrefetch:kt,components:Ye,directives:Ye,watch:or,provide:el,inject:ir};function el(t,e){return e?t?function(){return $t(G(t)?t.call(this,this):t,G(e)?e.call(this,this):e)}:e:t}function ir(t,e){return Ye(_n(t),_n(e))}function _n(t){if(U(t)){const e={};for(let s=0;s<t.length;s++)e[t[s]]=t[s];return e}return t}function kt(t,e){return t?[...new Set([].concat(t,e))]:e}function Ye(t,e){return t?$t(Object.create(null),t,e):e}function sl(t,e){return t?U(t)&&U(e)?[...new Set([...t,...e])]:$t(Object.create(null),Qn(t),Qn(e??{})):e}function or(t,e){if(!t)return e;if(!e)return t;const s=$t(Object.create(null),t);for(const n in e)s[n]=kt(t[n],e[n]);return s}function fi(){return{app:null,config:{isNativeTag:Cl,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 rr=0;function ar(t,e){return function(n,l=null){G(n)||(n=$t({},n)),l!=null&&!lt(l)&&(l=null);const i=fi(),o=new WeakSet,r=[];let u=!1;const _=i.app={_uid:rr++,_component:n,_props:l,_container:null,_context:i,_instance:null,version:Lr,get config(){return i.config},set config(f){},use(f,...v){return o.has(f)||(f&&G(f.install)?(o.add(f),f.install(_,...v)):G(f)&&(o.add(f),f(_,...v))),_},mixin(f){return i.mixins.includes(f)||i.mixins.push(f),_},component(f,v){return v?(i.components[f]=v,_):i.components[f]},directive(f,v){return v?(i.directives[f]=v,_):i.directives[f]},mount(f,v,p){if(!u){const b=_._ceVNode||ft(n,l);return b.appContext=i,p===!0?p="svg":p===!1&&(p=void 0),t(b,f,p),u=!0,_._container=f,f.__vue_app__=_,Vs(b.component)}},onUnmount(f){r.push(f)},unmount(){u&&(Ut(r,_._instance,16),t(null,_._container),delete _._container.__vue_app__)},provide(f,v){return i.provides[f]=v,_},runWithContext(f){const v=Le;Le=_;try{return f()}finally{Le=v}}};return _}}let Le=null;const cr=(t,e)=>e==="modelValue"||e==="model-value"?t.modelModifiers:t[`${e}Modifiers`]||t[`${Wt(e)}Modifiers`]||t[`${Pe(e)}Modifiers`];function ur(t,e,...s){if(t.isUnmounted)return;const n=t.vnode.props||rt;let l=s;const i=e.startsWith("update:"),o=i&&cr(n,e.slice(7));o&&(o.trim&&(l=s.map(f=>ht(f)?f.trim():f)),o.number&&(l=l.map(Ji)));let r,u=n[r=Gs(e)]||n[r=Gs(Wt(e))];!u&&i&&(u=n[r=Gs(Pe(e))]),u&&Ut(u,t,6,l);const _=n[r+"Once"];if(_){if(!t.emitted)t.emitted={};else if(t.emitted[r])return;t.emitted[r]=!0,Ut(_,t,6,l)}}const dr=new WeakMap;function pi(t,e,s=!1){const n=s?dr:e.emitsCache,l=n.get(t);if(l!==void 0)return l;const i=t.emits;let o={},r=!1;if(!G(t)){const u=_=>{const f=pi(_,e,!0);f&&(r=!0,$t(o,f))};!s&&e.mixins.length&&e.mixins.forEach(u),t.extends&&u(t.extends),t.mixins&&t.mixins.forEach(u)}return!i&&!r?(lt(t)&&n.set(t,null),null):(U(i)?i.forEach(u=>o[u]=null):$t(o,i),lt(t)&&n.set(t,o),o)}function Ks(t,e){return!t||!Fs(e)?!1:(e=e.slice(2),e=e==="Once"?e:e.replace(/Once$/,""),tt(t,e[0].toLowerCase()+e.slice(1))||tt(t,Pe(e))||tt(t,e))}function nl(t){const{type:e,vnode:s,proxy:n,withProxy:l,propsOptions:[i],slots:o,attrs:r,emit:u,render:_,renderCache:f,props:v,data:p,setupState:b,ctx:k,inheritAttrs:w}=t,I=Ss(t);let $,T;try{if(s.shapeFlag&4){const O=l||n,H=O;$=te(_.call(H,O,f,v,b,p,k)),T=r}else{const O=e;$=te(O.length>1?O(v,{attrs:r,slots:o,emit:u}):O(v,null)),T=e.props?r:fr(r)}}catch(O){Oe.length=0,Ls(O,t,1),$=ft(pe)}let N=$;if(T&&w!==!1){const O=Object.keys(T),{shapeFlag:H}=N;O.length&&H&7&&(i&&O.some(js)&&(T=pr(T,i)),N=Re(N,T,!1,!0))}if(s.dirs&&(N=Re(N,null,!1,!0),N.dirs=N.dirs?N.dirs.concat(s.dirs):s.dirs),s.transition){const O=Rs(N.type)&&ii(N)||N;Pn(O,s.transition)}return $=N,Ss(I),$}const fr=t=>{let e;for(const s in t)(s==="class"||s==="style"||Fs(s))&&((e||(e={}))[s]=t[s]);return e},pr=(t,e)=>{const s={};for(const n in t)(!js(n)||!(n.slice(9)in e))&&(s[n]=t[n]);return s};function hr(t,e,s){const{props:n,children:l,component:i}=t,{props:o,children:r,patchFlag:u}=e,_=i.emitsOptions;if(e.dirs||e.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?ll(n,o,_):!!o;if(u&8){const f=e.dynamicProps;for(let v=0;v<f.length;v++){const p=f[v];if(hi(o,n,p)&&!Ks(_,p))return!0}}}else return(l||r)&&(!r||!r.$stable)?!0:n===o?!1:n?o?ll(n,o,_):!0:!!o;return!1}function ll(t,e,s){const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!0;for(let l=0;l<n.length;l++){const i=n[l];if(hi(e,t,i)&&!Ks(s,i))return!0}return!1}function hi(t,e,s){const n=t[s],l=e[s];return s==="style"&&lt(n)&&lt(l)?!Ns(n,l):n!==l}function mr({vnode:t,parent:e,suspense:s},n){for(;e;){const l=e.subTree;if(l.suspense&&l.suspense.activeBranch===t&&(l.suspense.vnode.el=l.el=n,t=l),l===t)(t=e.vnode).el=n,e=e.parent;else break}s&&s.activeBranch===t&&(s.vnode.el=n)}const mi={},_i=()=>Object.create(mi),gi=t=>Object.getPrototypeOf(t)===mi;function _r(t,e,s,n=!1){const l={},i=_i();t.propsDefaults=Object.create(null),vi(t,e,l,i);for(const o in t.propsOptions[0])o in l||(l[o]=void 0);s?t.props=n?l:ko(l):t.type.props?t.props=l:t.props=i,t.attrs=i}function gr(t,e,s,n){const{props:l,attrs:i,vnode:{patchFlag:o}}=t,r=Q(l),[u]=t.propsOptions;let _=!1;if((n||o>0)&&!(o&16)){if(o&8){const f=t.vnode.dynamicProps;for(let v=0;v<f.length;v++){let p=f[v];if(Ks(t.emitsOptions,p))continue;const b=e[p];if(u)if(tt(i,p))b!==i[p]&&(i[p]=b,_=!0);else{const k=Wt(p);l[k]=gn(u,r,k,b,t,!1)}else b!==i[p]&&(i[p]=b,_=!0)}}}else{vi(t,e,l,i)&&(_=!0);let f;for(const v in r)(!e||!tt(e,v)&&((f=Pe(v))===v||!tt(e,f)))&&(u?s&&(s[v]!==void 0||s[f]!==void 0)&&(l[v]=gn(u,r,v,void 0,t,!0)):delete l[v]);if(i!==r)for(const v in i)(!e||!tt(e,v))&&(delete i[v],_=!0)}_&&ce(t.attrs,"set","")}function vi(t,e,s,n){const[l,i]=t.propsOptions;let o=!1,r;if(e)for(let u in e){if(Xe(u))continue;const _=e[u];let f;l&&tt(l,f=Wt(u))?!i||!i.includes(f)?s[f]=_:(r||(r={}))[f]=_:Ks(t.emitsOptions,u)||(!(u in n)||_!==n[u])&&(n[u]=_,o=!0)}if(i){const u=Q(s),_=r||rt;for(let f=0;f<i.length;f++){const v=i[f];s[v]=gn(l,u,v,_[v],t,!tt(_,v))}}return o}function gn(t,e,s,n,l,i){const o=t[s];if(o!=null){const r=tt(o,"default");if(r&&n===void 0){const u=o.default;if(o.type!==Function&&!o.skipFactory&&G(u)){const{propsDefaults:_}=l;if(s in _)n=_[s];else{const f=ps(l);n=_[s]=u.call(null,e),f()}}else n=u;l.ce&&l.ce._setProp(s,n)}o[0]&&(i&&!r?n=!1:o[1]&&(n===""||n===Pe(s))&&(n=!0))}return n}const vr=new WeakMap;function bi(t,e,s=!1){const n=s?vr:e.propsCache,l=n.get(t);if(l)return l;const i=t.props,o={},r=[];let u=!1;if(!G(t)){const f=v=>{u=!0;const[p,b]=bi(v,e,!0);$t(o,p),b&&r.push(...b)};!s&&e.mixins.length&&e.mixins.forEach(f),t.extends&&f(t.extends),t.mixins&&t.mixins.forEach(f)}if(!i&&!u)return lt(t)&&n.set(t,Ee),Ee;if(U(i))for(let f=0;f<i.length;f++){const v=Wt(i[f]);il(v)&&(o[v]=rt)}else if(i)for(const f in i){const v=Wt(f);if(il(v)){const p=i[f],b=o[v]=U(p)||G(p)?{type:p}:$t({},p),k=b.type;let w=!1,I=!0;if(U(k))for(let $=0;$<k.length;++$){const T=k[$],N=G(T)&&T.name;if(N==="Boolean"){w=!0;break}else N==="String"&&(I=!1)}else w=G(k)&&k.name==="Boolean";b[0]=w,b[1]=I,(w||tt(b,"default"))&&r.push(v)}}const _=[o,r];return lt(t)&&n.set(t,_),_}function il(t){return t[0]!=="$"&&!Xe(t)}const jn=t=>t==="_"||t==="_ctx"||t==="$stable",In=t=>U(t)?t.map(te):[te(t)],br=(t,e,s)=>{if(e._n)return e;const n=qo((...l)=>In(e(...l)),s);return n._c=!1,n},yi=(t,e,s)=>{const n=t._ctx;for(const l in t){if(jn(l))continue;const i=t[l];if(G(i))e[l]=br(l,i,n);else if(i!=null){const o=In(i);e[l]=()=>o}}},$i=(t,e)=>{const s=In(e);t.slots.default=()=>s},wi=(t,e,s)=>{for(const n in e)(s||!jn(n))&&(t[n]=e[n])},yr=(t,e,s)=>{const n=t.slots=_i();if(t.vnode.shapeFlag&32){const l=e._;l?(wi(n,e,s),s&&Pl(n,"_",l,!0)):yi(e,n)}else e&&$i(t,e)},$r=(t,e,s)=>{const{vnode:n,slots:l}=t;let i=!0,o=rt;if(n.shapeFlag&32){const r=e._;r?s&&r===1?i=!1:wi(l,e,s):(i=!e.$stable,yi(e,l)),o=e}else e&&($i(t,e),o={default:1});if(i)for(const r in l)!jn(r)&&o[r]==null&&delete l[r]},At=Mr;function wr(t){return xr(t)}function xr(t,e){const s=qs();s.__VUE__=!0;const{insert:n,remove:l,patchProp:i,createElement:o,createText:r,createComment:u,setText:_,setElementText:f,parentNode:v,nextSibling:p,setScopeId:b=se,insertStaticContent:k}=t,w=(d,g,y,A=null,S=null,C=null,j=void 0,F=null,D=!!g.dynamicChildren)=>{if(d===g)return;d&&!Ge(d,g)&&(A=Bt(d),W(d,S,C,!0),d=null),g.patchFlag===-2&&(D=!1,g.dynamicChildren=null),g.dynamicChildren&&d&&d.dynamicChildren&&d.dynamicChildren.hasOnce&&(g.dynamicChildren===Ee&&(g.dynamicChildren=[]),g.dynamicChildren.hasOnce=!0);const{type:M,ref:B,shapeFlag:q}=g;switch(M){case Us:I(d,g,y,A);break;case pe:$(d,g,y,A);break;case ys:d==null&&T(g,y,A,j);break;case V:Fe(d,g,y,A,S,C,j,F,D);break;default:q&1?H(d,g,y,A,S,C,j,F,D):q&6?jt(d,g,y,A,S,C,j,F,D):(q&64||q&128)&&M.process(d,g,y,A,S,C,j,F,D,Ie)}B!=null&&S?ss(B,d&&d.ref,C,g||d,!g):B==null&&d&&d.ref!=null&&ss(d.ref,null,C,d,!0)},I=(d,g,y,A)=>{if(d==null)n(g.el=r(g.children),y,A);else{const S=g.el=d.el;g.children!==d.children&&_(S,g.children)}},$=(d,g,y,A)=>{d==null?n(g.el=u(g.children||""),y,A):g.el=d.el},T=(d,g,y,A)=>{[d.el,d.anchor]=k(d.children,g,y,A,d.el,d.anchor)},N=({el:d,anchor:g},y,A)=>{let S;for(;d&&d!==g;)S=p(d),n(d,y,A),d=S;n(g,y,A)},O=({el:d,anchor:g})=>{let y;for(;d&&d!==g;)y=p(d),l(d),d=y;l(g)},H=(d,g,y,A,S,C,j,F,D)=>{if(g.type==="svg"?j="svg":g.type==="math"&&(j="mathml"),d==null)Z(g,y,A,S,C,j,F,D);else{const M=d.el&&d.el._isVueCE?d.el:null;try{M&&M._beginPatch(),me(d,g,S,C,j,F,D)}finally{M&&M._endPatch()}}},Z=(d,g,y,A,S,C,j,F)=>{let D,M;const{props:B,shapeFlag:q,transition:R,dirs:K}=d;if(D=d.el=o(d.type,C,B&&B.is,B),q&8?f(D,d.children):q&16&&Lt(d.children,D,null,A,S,en(d,C),j,F),K&&Se(d,null,A,"created"),mt(D,d,d.scopeId,j,A),B){for(const it in B)it!=="value"&&!Xe(it)&&i(D,it,null,B[it],C,A);"value"in B&&i(D,"value",null,B.value,C),(M=B.onVnodeBeforeMount)&&Yt(M,A,d)}K&&Se(d,null,A,"beforeMount");const X=kr(S,R);X&&R.beforeEnter(D),n(D,g,y),((M=B&&B.onVnodeMounted)||X||K)&&At(()=>{try{M&&Yt(M,A,d),X&&R.enter(D),K&&Se(d,null,A,"mounted")}finally{}},S)},mt=(d,g,y,A,S)=>{if(y&&b(d,y),A)for(let C=0;C<A.length;C++)b(d,A[C]);if(S){let C=S.subTree;if(g===C||Mi(C.type)&&(C.ssContent===g||C.ssFallback===g)){const j=S.vnode;mt(d,j,j.scopeId,j.slotScopeIds,S.parent)}}},Lt=(d,g,y,A,S,C,j,F,D=0)=>{for(let M=D;M<d.length;M++){const B=d[M]=F?ae(d[M]):te(d[M]);w(null,B,g,y,A,S,C,j,F)}},me=(d,g,y,A,S,C,j)=>{const F=g.el=d.el;let{patchFlag:D,dynamicChildren:M,dirs:B}=g;D|=d.patchFlag&16;const q=d.props||rt,R=g.props||rt;let K;if(y&&Me(y,!1),(K=R.onVnodeBeforeUpdate)&&Yt(K,y,g,d),B&&Se(g,d,y,"beforeUpdate"),y&&Me(y,!0),M&&(!d.dynamicChildren||d.dynamicChildren.length!==M.length)&&(D=0,j=!1,M=null),(q.innerHTML&&R.innerHTML==null||q.textContent&&R.textContent==null)&&f(F,""),M?ie(d.dynamicChildren,M,F,y,A,en(g,S),C):j||st(d,g,F,null,y,A,en(g,S),C,!1),D>0){if(D&16)xe(F,q,R,y,S);else if(D&2&&q.class!==R.class&&i(F,"class",null,R.class,S),D&4&&i(F,"style",q.style,R.style,S),D&8){const X=g.dynamicProps;for(let it=0;it<X.length;it++){const nt=X[it],_t=q[nt],bt=R[nt];(bt!==_t||nt==="value")&&i(F,nt,_t,bt,S,y)}}D&1&&d.children!==g.children&&f(F,g.children)}else!j&&M==null&&xe(F,q,R,y,S);((K=R.onVnodeUpdated)||B)&&At(()=>{K&&Yt(K,y,g,d),B&&Se(g,d,y,"updated")},A)},ie=(d,g,y,A,S,C,j)=>{for(let F=0;F<g.length;F++){const D=d[F],M=g[F],B=D.el&&(D.type===V||!Ge(D,M)||D.shapeFlag&198)?v(D.el):y;w(D,M,B,null,A,S,C,j,!0)}},xe=(d,g,y,A,S)=>{if(g!==y){if(g!==rt)for(const C in g)!Xe(C)&&!(C in y)&&i(d,C,g[C],null,S,A);for(const C in y){if(Xe(C))continue;const j=y[C],F=g[C];j!==F&&C!=="value"&&i(d,C,F,j,S,A)}"value"in y&&i(d,"value",g.value,y.value,S)}},Fe=(d,g,y,A,S,C,j,F,D)=>{const M=g.el=d?d.el:r(""),B=g.anchor=d?d.anchor:r("");let{patchFlag:q,dynamicChildren:R,slotScopeIds:K}=g;K&&(F=F?F.concat(K):K),d==null?(n(M,y,A),n(B,y,A),Lt(g.children||[],y,B,S,C,j,F,D)):q>0&&q&64&&R&&d.dynamicChildren&&d.dynamicChildren.length===R.length?(ie(d.dynamicChildren,R,y,S,C,j,F),(g.key!=null||S&&g===S.subTree)&&xi(d,g,!0)):st(d,g,y,B,S,C,j,F,D)},jt=(d,g,y,A,S,C,j,F,D)=>{g.slotScopeIds=F,d==null?g.shapeFlag&512?S.ctx.activate(g,y,A,j,D):Be(g,y,A,S,C,j,D):hs(d,g,D)},Be=(d,g,y,A,S,C,j)=>{const F=d.component=Pr(d,A,S);if(Fn(d)&&(F.ctx.renderer=Ie),jr(F,!1,j),F.asyncDep){if(S&&S.registerDep(F,vt,j),!d.el){const D=F.subTree=ft(pe);$(null,D,g,y),d.placeholder=D.el}}else vt(F,d,g,y,S,C,j)},hs=(d,g,y)=>{const A=g.component=d.component;if(hr(d,g,y))if(A.asyncDep&&!A.asyncResolved){g.el=d.el,ut(A,g,y);return}else A.next=g,A.update();else g.el=d.el,A.vnode=g},vt=(d,g,y,A,S,C,j)=>{const F=()=>{if(d.isMounted){let{next:q,bu:R,u:K,parent:X,vnode:it}=d;{const zt=ki(d);if(zt){q&&(q.el=it.el,ut(d,q,j)),zt.asyncDep.then(()=>{At(()=>{d.isUnmounted||M()},S)});return}}let nt=q,_t;Me(d,!1),q?(q.el=it.el,ut(d,q,j)):q=it,R&&zs(R),(_t=q.props&&q.props.onVnodeBeforeUpdate)&&Yt(_t,X,q,it),Me(d,!0);const bt=nl(d),Gt=d.subTree;d.subTree=bt,w(Gt,bt,v(Gt.el),Bt(Gt),d,S,C),q.el=bt.el,nt===null&&mr(d,bt.el),K&&At(K,S),(_t=q.props&&q.props.onVnodeUpdated)&&At(()=>Yt(_t,X,q,it),S)}else{let q;const{el:R,props:K}=g,{bm:X,m:it,parent:nt,root:_t,type:bt}=d,Gt=ns(g);Me(d,!1),X&&zs(X),!Gt&&(q=K&&K.onVnodeBeforeMount)&&Yt(q,nt,g),Me(d,!0);{_t.ce&&_t.ce._hasShadowRoot()&&_t.ce._injectChildStyle(bt,d.parent?d.parent.type:void 0);const zt=d.subTree=nl(d);w(null,zt,y,A,d,S,C),g.el=zt.el}if(it&&At(it,S),!Gt&&(q=K&&K.onVnodeMounted)){const zt=g;At(()=>Yt(q,nt,zt),S)}(g.shapeFlag&256||nt&&ns(nt.vnode)&&nt.vnode.shapeFlag&256)&&d.a&&At(d.a,S),d.isMounted=!0,g=y=A=null}};d.scope.on();const D=d.effect=new ql(F);d.scope.off();const M=d.update=D.run.bind(D),B=d.job=D.runIfDirty.bind(D);B.i=d,B.id=d.uid,D.scheduler=()=>Dn(B),Me(d,!0),M()},ut=(d,g,y)=>{g.component=d;const A=d.vnode.props;d.vnode=g,d.next=null,gr(d,g.props,A,y),$r(d,g.children,y),de(),Jn(d),fe()},st=(d,g,y,A,S,C,j,F,D=!1)=>{const M=d&&d.children,B=d?d.shapeFlag:0,q=g.children,{patchFlag:R,shapeFlag:K}=g;if(R>0){if(R&128){ke(M,q,y,A,S,C,j,F,D);return}else if(R&256){Rt(M,q,y,A,S,C,j,F,D);return}}K&8?(B&16&&Et(M,S,C),q!==M&&f(y,q)):B&16?K&16?ke(M,q,y,A,S,C,j,F,D):Et(M,S,C,!0):(B&8&&f(y,""),K&16&&Lt(q,y,A,S,C,j,F,D))},Rt=(d,g,y,A,S,C,j,F,D)=>{d=d||Ee,g=g||Ee;const M=d.length,B=g.length,q=Math.min(M,B);let R;for(R=0;R<q;R++){const K=g[R]=D?ae(g[R]):te(g[R]);w(d[R],K,y,null,S,C,j,F,D)}M>B?Et(d,S,C,!0,!1,q):Lt(g,y,A,S,C,j,F,D,q)},ke=(d,g,y,A,S,C,j,F,D)=>{let M=0;const B=g.length;let q=d.length-1,R=B-1;for(;M<=q&&M<=R;){const K=d[M],X=g[M]=D?ae(g[M]):te(g[M]);if(Ge(K,X))w(K,X,y,null,S,C,j,F,D);else break;M++}for(;M<=q&&M<=R;){const K=d[q],X=g[R]=D?ae(g[R]):te(g[R]);if(Ge(K,X))w(K,X,y,null,S,C,j,F,D);else break;q--,R--}if(M>q){if(M<=R){const K=R+1,X=K<B?g[K].el:A;for(;M<=R;)w(null,g[M]=D?ae(g[M]):te(g[M]),y,X,S,C,j,F,D),M++}}else if(M>R)for(;M<=q;)W(d[M],S,C,!0),M++;else{const K=M,X=M,it=new Map;for(M=X;M<=R;M++){const Pt=g[M]=D?ae(g[M]):te(g[M]);Pt.key!=null&&it.set(Pt.key,M)}let nt,_t=0;const bt=R-X+1;let Gt=!1,zt=0;const Ue=new Array(bt);for(M=0;M<bt;M++)Ue[M]=0;for(M=K;M<=q;M++){const Pt=d[M];if(_t>=bt){W(Pt,S,C,!0);continue}let Jt;if(Pt.key!=null)Jt=it.get(Pt.key);else for(nt=X;nt<=R;nt++)if(Ue[nt-X]===0&&Ge(Pt,g[nt])){Jt=nt;break}Jt===void 0?W(Pt,S,C,!0):(Ue[Jt-X]=M+1,Jt>=zt?zt=Jt:Gt=!0,w(Pt,g[Jt],y,null,S,C,j,F,D),_t++)}const Ln=Gt?Sr(Ue):Ee;for(nt=Ln.length-1,M=bt-1;M>=0;M--){const Pt=X+M,Jt=g[Pt],Rn=g[Pt+1],Bn=Pt+1<B?Rn.el||Si(Rn):A;Ue[M]===0?w(null,Jt,y,Bn,S,C,j,F,D):Gt&&(nt<0||M!==Ln[nt]?L(Jt,y,Bn,2):nt--)}}},L=(d,g,y,A,S=null)=>{const{el:C,type:j,transition:F,children:D,shapeFlag:M}=d;if(M&6){L(d.component.subTree,g,y,A);return}if(M&128){d.suspense.move(g,y,A);return}if(M&64){j.move(d,g,y,Ie);return}if(j===V){n(C,g,y);for(let q=0;q<D.length;q++)L(D[q],g,y,A);n(d.anchor,g,y);return}if(j===ys){N(d,g,y);return}if(A!==2&&M&1&&F)if(A===0)F.persisted&&!C[Qs]?n(C,g,y):(F.beforeEnter(C),n(C,g,y),At(()=>F.enter(C),S));else{const{leave:q,delayLeave:R,afterLeave:K}=F,X=()=>{d.ctx.isUnmounted?l(C):n(C,g,y)},it=()=>{const nt=C._isLeaving||!!C[Qs];C._isLeaving&&C[Qs](!0),F.persisted&&!nt?X():q(C,()=>{X(),K&&K()})};R?R(C,X,it):it()}else n(C,g,y)},W=(d,g,y,A=!1,S=!1)=>{const{type:C,props:j,ref:F,children:D,dynamicChildren:M,shapeFlag:B,patchFlag:q,dirs:R,cacheIndex:K,memo:X}=d;if((q===-2||M&&M.hasOnce)&&(S=!1),F!=null&&(de(),ss(F,null,y,d,!0),fe()),K!=null&&(!d.ctx||d.ctx===g)&&(g.renderCache[K]=void 0),B&256){g.ctx.deactivate(d);return}const it=B&1&&R,nt=!ns(d);let _t;if(nt&&(_t=j&&j.onVnodeBeforeUnmount)&&Yt(_t,g,d),B&6)je(d.component,y,A);else{if(B&128){d.suspense.unmount(y,A);return}it&&Se(d,null,g,"beforeUnmount"),B&64?d.type.remove(d,g,y,Ie,A):M&&!M.hasOnce&&(C!==V||q>0&&q&64)?Et(M,g,y,!1,!0):(C===V&&q&384||!S&&B&16)&&Et(D,g,y),A&&J(d)}const bt=X!=null&&K==null;(nt&&(_t=j&&j.onVnodeUnmounted)||it||bt)&&At(()=>{_t&&Yt(_t,g,d),it&&Se(d,null,g,"unmounted"),bt&&(d.el=null)},y)},J=d=>{const{type:g,el:y,anchor:A,transition:S}=d;if(g===V){It(y,A);return}if(g===ys){O(d),S&&!S.persisted&&S.afterLeave&&S.afterLeave();return}const C=()=>{l(y),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(d.shapeFlag&1&&S&&!S.persisted){const{leave:j,delayLeave:F}=S,D=()=>j(y,C);F?F(d.el,C,D):D()}else C()},It=(d,g)=>{let y;for(;d!==g;)y=p(d),l(d),d=y;l(g)},je=(d,g,y)=>{const{bum:A,scope:S,job:C,subTree:j,um:F,m:D,a:M}=d;ol(D),ol(M),A&&zs(A),S.stop(),C?(C.flags|=8,W(j,d,g,y)):d.vnode.el&&j&&(j.transition=d.vnode.transition,W(j,d,g,y)),F&&At(F,g),At(()=>{d.isUnmounted=!0},g)},Et=(d,g,y,A=!1,S=!1,C=0)=>{for(let j=C;j<d.length;j++)W(d[j],g,y,A,S)},Bt=d=>{if(d.shapeFlag&6)return Bt(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const g=p(d.anchor||d.el),y=g&&g[Bo];return y?p(y):g};let We=!1;const Ke=(d,g,y)=>{let A;d==null?g._vnode&&(W(g._vnode,null,null,!0),A=g._vnode.component):w(g._vnode||null,d,g,null,null,null,y),g._vnode=d,We||(We=!0,Jn(A),ti(),We=!1)},Ie={p:w,um:W,m:L,r:J,mt:Be,mc:Lt,pc:st,pbc:ie,n:Bt,o:t};return{render:Ke,hydrate:void 0,createApp:ar(Ke)}}function en({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 Me({effect:t,job:e},s){s?(t.flags|=32,e.flags|=4):(t.flags&=-33,e.flags&=-5)}function kr(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function xi(t,e,s=!1){const n=t.children,l=e.children;if(U(n)&&U(l))for(let i=0;i<n.length;i++){const o=n[i];let r=l[i];r.shapeFlag&1&&!r.dynamicChildren&&((r.patchFlag<=0||r.patchFlag===32)&&(r=l[i]=ae(l[i]),r.el=o.el),!s&&r.patchFlag!==-2&&xi(o,r)),r.type===Us&&(r.patchFlag===-1&&(r=l[i]=ae(r)),r.el=o.el),r.type===pe&&!r.el&&(r.el=o.el)}}function Sr(t){const e=t.slice(),s=[0];let n,l,i,o,r;const u=t.length;for(n=0;n<u;n++){const _=t[n];if(_!==0){if(l=s[s.length-1],t[l]<_){e[n]=l,s.push(n);continue}for(i=0,o=s.length-1;i<o;)r=i+o>>1,t[s[r]]<_?i=r+1:o=r;_<t[s[i]]&&(i>0&&(e[n]=s[i-1]),s[i]=n)}}for(i=s.length,o=s[i-1];i-- >0;)s[i]=o,o=e[o];return s}function ki(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:ki(e)}function ol(t){if(t)for(let e=0;e<t.length;e++)t[e].flags|=8}function Si(t){if(t.placeholder)return t.placeholder;const e=t.component;return e?Si(e.subTree):null}const Mi=t=>t.__isSuspense;function Mr(t,e){e&&e.pendingBranch?U(t)?e.effects.push(...t):e.effects.push(t):Io(t)}const V=Symbol.for("v-fgt"),Us=Symbol.for("v-txt"),pe=Symbol.for("v-cmt"),ys=Symbol.for("v-stc"),Oe=[];let Ft=null;function x(t=!1){Oe.push(Ft=t?null:[])}function Ti(){Oe.pop(),Ft=Oe[Oe.length-1]||null}let as=1;function rl(t,e=!1){as+=t,t<0&&Ft&&e&&(Ft.hasOnce=!0)}function Ci(t){return t.dynamicChildren=as>0?Ft||Ee:null,Ti(),as>0&&Ft&&Ft.push(t),t}function E(t,e,s,n,l,i){return Ci(c(t,e,s,n,l,i,!0))}function Xt(t,e,s,n,l){return Ci(ft(t,e,s,n,l,!0))}function Ei(t){return t?t.__v_isVNode===!0:!1}function Ge(t,e){return t.type===e.type&&t.key===e.key}const Ai=({key:t})=>t??null,$s=({ref:t,ref_key:e,ref_for:s})=>(typeof t=="number"&&(t=""+t),t!=null?ht(t)||xt(t)||G(t)?{i:qt,r:t,k:e,f:!!s}:t:null);function c(t,e=null,s=null,n=0,l=null,i=t===V?0:1,o=!1,r=!1){const u={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&Ai(e),ref:e&&$s(e),scopeId:si,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:l,dynamicChildren:null,appContext:null,ctx:qt};return r?(Cs(u,s),i&128&&t.normalize(u)):s&&(u.shapeFlag|=ht(s)?8:16),as>0&&!o&&Ft&&(u.patchFlag>0||i&6)&&u.patchFlag!==32&&Ft.push(u),u}const ft=Tr;function Tr(t,e=null,s=null,n=0,l=null,i=!1){if((!t||t===tr)&&(t=pe),Ei(t)){const r=Re(t,e,!0);return s&&Cs(r,s),as>0&&!i&&Ft&&(r.shapeFlag&6?Ft[Ft.indexOf(t)]=r:Ft.push(r)),r.patchFlag=-2,r}if(Hr(t)&&(t=t.__vccOpts),e){e=Cr(e);let{class:r,style:u}=e;r&&!ht(r)&&(e.class=Tt(r)),lt(u)&&(On(u)&&!U(u)&&(u=$t({},u)),e.style=gt(u))}const o=ht(t)?1:Mi(t)?128:Rs(t)?64:lt(t)?4:G(t)?2:0;return c(t,e,s,n,l,o,i,!0)}function Cr(t){return t?On(t)||gi(t)?$t({},t):t:null}function Re(t,e,s=!1,n=!1){const{props:l,ref:i,patchFlag:o,children:r,transition:u}=t,_=e?Ar(l||{},e):l,f={__v_isVNode:!0,__v_skip:!0,type:t.type,props:_,key:_&&Ai(_),ref:e&&e.ref?s&&i?U(i)?i.concat($s(e)):[i,$s(e)]:$s(e):i,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:r,target:t.target,targetStart:t.targetStart,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==V?o===-1?16:o|16:o,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:u,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&Re(t.ssContent),ssFallback:t.ssFallback&&Re(t.ssFallback),placeholder:t.placeholder,el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce,cacheIndex:t.cacheIndex};return u&&n&&Pn(f,u.clone(f)),f}function z(t=" ",e=0){return ft(Us,null,t,e)}function Er(t,e){const s=ft(ys,null,t);return s.staticCount=e,s}function ct(t="",e=!1){return e?(x(),Xt(pe,null,t)):ft(pe,null,t)}function te(t){return t==null||typeof t=="boolean"?ft(pe):U(t)?ft(V,null,t.slice()):Ei(t)?ae(t):ft(Us,null,String(t))}function ae(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:Re(t)}function Cs(t,e){let s=0;const{shapeFlag:n}=t;if(e==null)e=null;else if(U(e))s=16;else if(typeof e=="object")if(n&65){const l=e.default;l&&(l._c&&(l._d=!1),Cs(t,l()),l._c&&(l._d=!0));return}else{s=32;const l=e._;!l&&!gi(e)?e._ctx=qt:l===3&&qt&&(qt.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else if(G(e)){if(n&65){Cs(t,{default:e});return}e={default:e,_ctx:qt},s=32}else e=String(e),n&64?(s=16,e=[z(e)]):s=8;t.children=e,t.shapeFlag|=s}function Ar(...t){const e={};for(let s=0;s<t.length;s++){const n=t[s];for(const l in n)if(l==="class")e.class!==n.class&&(e.class=Tt([e.class,n.class]));else if(l==="style")e.style=gt([e.style,n.style]);else if(Fs(l)){const i=e[l],o=n[l];o&&i!==o&&!(U(i)&&i.includes(o))?e[l]=i?[].concat(i,o):o:o==null&&i==null&&!js(l)&&(e[l]=o)}else l!==""&&(e[l]=n[l])}return e}function Yt(t,e,s,n=null){Ut(t,e,7,[s,n])}const Or=fi();let Dr=0;function Pr(t,e,s){const n=t.type,l=(e?e.appContext:t.appContext)||Or,i={uid:Dr++,vnode:t,type:n,parent:e,appContext:l,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new lo(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:e?e.provides:Object.create(l.provides),ids:e?e.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:bi(n,l),emitsOptions:pi(n,l),emit:null,emitted:null,propsDefaults:rt,inheritAttrs:n.inheritAttrs,ctx:rt,data:rt,props:rt,attrs:rt,slots:rt,refs:rt,setupState:rt,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=ur.bind(null,i),t.ce&&t.ce(i),i}let Ct=null;const Fr=()=>Ct||qt;let Es,cs;{const t=qs(),e=(s,n)=>{let l;return(l=t[s])||(l=t[s]=[]),l.push(n),i=>{l.length>1?l.forEach(o=>o(i)):l[0](i)}};Es=e("__VUE_INSTANCE_SETTERS__",s=>Ct=s),cs=e("__VUE_SSR_SETTERS__",s=>us=s)}const ps=t=>{const e=Ct;return Es(t),t.scope.on(),()=>{t.scope.off(),Es(e)}},al=()=>{Ct&&Ct.scope.off(),Es(null)};function Oi(t){return t.vnode.shapeFlag&4}let us=!1;function jr(t,e=!1,s=!1){e&&cs(e);const{props:n,children:l}=t.vnode,i=Oi(t);_r(t,n,i,e),yr(t,l,s||e);const o=i?Ir(t,e):void 0;return e&&cs(!1),o}function Ir(t,e){const s=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,er);const{setup:n}=s;if(n){de();const l=t.setupContext=n.length>1?Nr(t):null,i=ps(t),o=fs(n,t,0,[t.props,l]),r=El(o);if(fe(),i(),(r||t.sp)&&!ns(t)&&oi(t),r){if(o.then(al,al),e)return o.then(u=>{cs(!0);try{cl(t,u,e)}finally{cs(!1)}}).catch(u=>{Ls(u,t,0)});t.asyncDep=o}else cl(t,o)}else Di(t)}function cl(t,e,s){G(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:lt(e)&&(t.setupState=Zl(e)),Di(t)}function Di(t,e,s){const n=t.type;t.render||(t.render=n.render||se);{const l=ps(t);de();try{sr(t)}finally{fe(),l()}}}const qr={get(t,e){return wt(t,"get",""),t[e]}};function Nr(t){const e=s=>{t.exposed=s||{}};return{attrs:new Proxy(t.attrs,qr),slots:t.slots,emit:t.emit,expose:e}}function Vs(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(Zl(So(t.exposed)),{get(e,s){if(s in e)return e[s];if(s in ls)return ls[s](t)},has(e,s){return s in e||s in ls}})):t.proxy}function Hr(t){return G(t)&&"__vccOpts"in t}const P=(t,e)=>Ao(t,e,us),Lr="3.5.43";/**
  14. * @vue/runtime-dom v3.5.43
  15. * (c) 2018-present Yuxi (Evan) You and Vue contributors
  16. * @license MIT
  17. **/let vn;const ul=typeof window<"u"&&window.trustedTypes;if(ul)try{vn=ul.createPolicy("vue",{createHTML:t=>t})}catch{}const Pi=vn?t=>vn.createHTML(t):t=>t,Rr="http://www.w3.org/2000/svg",Br="http://www.w3.org/1998/Math/MathML",re=typeof document<"u"?document:null,dl=re&&re.createElement("template"),Wr={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 l=e==="svg"?re.createElementNS(Rr,t):e==="mathml"?re.createElementNS(Br,t):s?re.createElement(t,{is:s}):re.createElement(t);return t==="select"&&n&&n.multiple!=null&&l.setAttribute("multiple",n.multiple),l},createText:t=>re.createTextNode(t),createComment:t=>re.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>re.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,s,n,l,i){const o=s?s.previousSibling:e.lastChild;if(l&&(l===i||l.nextSibling))for(;e.insertBefore(l.cloneNode(!0),s),!(l===i||!(l=l.nextSibling)););else{dl.innerHTML=Pi(n==="svg"?`<svg>${t}</svg>`:n==="mathml"?`<math>${t}</math>`:t);const r=dl.content;if(n==="svg"||n==="mathml"){const u=r.firstChild;for(;u.firstChild;)r.appendChild(u.firstChild);r.removeChild(u)}e.insertBefore(r,s)}return[o?o.nextSibling:e.firstChild,s?s.previousSibling:e.lastChild]}},Kr=Symbol("_vtc");function Ur(t,e,s){const n=t[Kr];n&&(e=(e?[e,...n]:[...n]).join(" ")),e==null?t.removeAttribute("class"):s?t.setAttribute("class",e):t.className=e}const As=Symbol("_vod"),Fi=Symbol("_vsh"),fl={name:"show",beforeMount(t,{value:e},{transition:s}){t[As]=t.style.display==="none"?"":t.style.display,s&&e?s.beforeEnter(t):ze(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),ze(t,!0),n.enter(t)):n.leave(t,()=>{ze(t,!1)}):ze(t,e))},beforeUnmount(t,{value:e}){ze(t,e)}};function ze(t,e){t.style.display=e?t[As]:"none",t[Fi]=!e}const Vr=Symbol(""),Gr=/(?:^|;)\s*display\s*:/;function zr(t,e,s){const n=t.style,l=ht(s);let i=!1;if(s&&!l){if(e)if(ht(e))for(const o of e.split(";")){const r=o.slice(0,o.indexOf(":")).trim();s[r]==null&&Ze(n,r,"")}else for(const o in e)s[o]==null&&Ze(n,o,"");for(const o in s){o==="display"&&(i=!0);const r=s[o];r!=null?Yr(t,o,!ht(e)&&e?e[o]:void 0,r)||Ze(n,o,r):Ze(n,o,"")}}else if(l){if(e!==s){const o=n[Vr];o&&(s+=";"+o),n.cssText=s,i=Gr.test(s)}}else e&&t.removeAttribute("style");As in t&&(t[As]=i?n.display:"",t[Fi]&&(n.display="none"))}const vs=/\s*!important$/;function Ze(t,e,s){if(U(s))s.forEach(n=>Ze(t,e,n));else if(s==null&&(s=""),e.startsWith("--"))vs.test(s)?t.setProperty(e,s.replace(vs,""),"important"):t.setProperty(e,s);else{const n=Jr(t,e);vs.test(s)?t.setProperty(Pe(n),s.replace(vs,""),"important"):t[n]=s}}const pl=["Webkit","Moz","ms"],sn={};function Jr(t,e){const s=sn[e];if(s)return s;let n=Wt(e);if(n!=="filter"&&n in t)return sn[e]=n;n=Dl(n);for(let l=0;l<pl.length;l++){const i=pl[l]+n;if(i in t)return sn[e]=i}return e}function Yr(t,e,s,n){return t.tagName==="TEXTAREA"&&(e==="width"||e==="height")&&ht(n)&&s===n}const hl="http://www.w3.org/1999/xlink";function ml(t,e,s,n,l,i=eo(e)){n&&e.startsWith("xlink:")?s==null?t.removeAttributeNS(hl,e.slice(6,e.length)):t.setAttributeNS(hl,e,s):s==null||i&&!Fl(s)?t.removeAttribute(e):t.setAttribute(e,i?"":ne(s)?String(s):s)}function _l(t,e,s,n,l){if(e==="innerHTML"||e==="textContent"){s!=null&&(t[e]=e==="innerHTML"?Pi(s):s);return}const i=t.tagName;if(e==="value"&&i!=="PROGRESS"&&!i.includes("-")){const r=i==="OPTION"?t.getAttribute("value")||"":t.value,u=s==null?t.type==="checkbox"?"on":"":String(s);(r!==u||!("_value"in t))&&(t.value=u),s==null&&t.removeAttribute(e),t._value=s;return}let o=!1;if(s===""||s==null){const r=typeof t[e];r==="boolean"?s=Fl(s):s==null&&r==="string"?(s="",o=!0):r==="number"&&(s=0,o=!0)}try{t[e]=s}catch{}o&&t.removeAttribute(l||e)}function Zr(t,e,s,n){t.addEventListener(e,s,n)}function Xr(t,e,s,n){t.removeEventListener(e,s,n)}const gl=Symbol("_vei");function Qr(t,e,s,n,l=null){const i=t[gl]||(t[gl]={}),o=i[e];if(n&&o)o.value=n;else{const[r,u]=sa(e);if(n){const _=i[e]=ia(n,l);Zr(t,r,_,u)}else o&&(Xr(t,r,o,u),i[e]=void 0)}}const ta=/(Once|Passive|Capture)$/,ea=/^on:?(?:Once|Passive|Capture)$/;function sa(t){let e,s;for(;(s=t.match(ta))&&!ea.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 nn=0;const na=Promise.resolve(),la=()=>nn||(na.then(()=>nn=0),nn=Date.now());function ia(t,e){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;const l=s.value;if(U(l)){const i=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{i.call(n),n._stopped=!0};const o=l.slice(),r=[n];for(let u=0;u<o.length&&!n._stopped;u++){const _=o[u];_&&Ut(_,e,5,r)}}else Ut(l,e,5,[n])};return s.value=t,s.attached=la(),s}const vl=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,oa=(t,e,s,n,l,i)=>{const o=l==="svg";e==="class"?Ur(t,n,o):e==="style"?zr(t,s,n):Fs(e)?js(e)||Qr(t,e,s,n,i):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):ra(t,e,n,o))?(_l(t,e,n),!t.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&ml(t,e,n,o,i,e!=="value")):t._isVueCE&&(aa(t,e)||t._def.__asyncLoader&&(/[A-Z]/.test(e)||!ht(n)))?_l(t,Wt(e),n,i,e):(e==="true-value"?t._trueValue=n:e==="false-value"&&(t._falseValue=n),ml(t,e,n,o))};function ra(t,e,s,n){if(n)return!!(e==="innerHTML"||e==="textContent"||e in t&&vl(e)&&G(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 l=t.tagName;if(l==="IMG"||l==="VIDEO"||l==="CANVAS"||l==="SOURCE")return!1}return vl(e)&&ht(s)?!1:e in t}function aa(t,e){const s=t._def.props;if(!s)return!1;const n=Wt(e);return Array.isArray(s)?s.some(l=>Wt(l)===n):Object.keys(s).some(l=>Wt(l)===n)}const ca=$t({patchProp:oa},Wr);let bl;function ua(){return bl||(bl=wr(ca))}const da=((...t)=>{const e=ua().createApp(...t),{mount:s}=e;return e.mount=n=>{const l=pa(n);if(!l)return;const i=e._component;!G(i)&&!i.render&&!i.template&&(i.template=l.innerHTML),l.nodeType===1&&(l.textContent="");const o=s(l,!1,fa(l));return l instanceof Element&&(l.removeAttribute("v-cloak"),l.setAttribute("data-v-app","")),o},e});function fa(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function pa(t){return ht(t)?document.querySelector(t):t}const ji={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 Ii(t,e){const s=ji[t],n=performance.now();try{const l=await fetch(s,{headers:{Accept:"application/json",...e?.body?{"Content-Type":"application/json"}:{}},...e}),i=await l.text();let o=i;try{o=JSON.parse(i)}catch{}return{name:t,path:s,ok:l.ok,status:l.status,ms:Math.round(performance.now()-n),data:o}}catch(l){return{name:t,path:s,ok:!1,status:0,ms:Math.round(performance.now()-n),error:l instanceof Error?l.message:String(l)}}}const ln=["facts","maintSurvey","ontList","askStatus","channels","dqFindings","algoHealth","algoEndpoints","algoMatrix","algoReliability","algoPurity"],ha={class:"card"},ma={class:"hint"},_a=["disabled"],ga={class:"hint"},va=Vt({__name:"ContractSmoke",setup(t){const e=St([]),s=St(!1),n=St(0);function l(o){return Array.isArray(o)?`list[${o.length}]`:o&&typeof o=="object"?Object.keys(o).slice(0,8).join(", "):typeof o}async function i(){s.value=!0,e.value=[],n.value=0;for(const o of ln){const r=await Ii(o);e.value.push({name:o,path:r.path,ok:r.ok,status:r.status,ms:r.ms,keys:l(r.data),error:r.error}),n.value+=1}s.value=!1}return Ws(i),(o,r)=>(x(),E("section",ha,[r[3]||(r[3]=c("h2",null,[z("契约自检 "),c("small",null,"(后端结构与算法服务可达性;对拍基准见 docs/接口契约_前后端_v0.1.md)")],-1)),c("p",ma,[z(" 进度 "+h(n.value)+"/"+h(m(ln).length)+' · 只判"通不通",不比数据值(值随数据变,锚点在 Python 侧的门禁里) ',1),c("button",{class:"re",disabled:s.value,onClick:i},"重跑",8,_a)]),c("table",null,[r[0]||(r[0]=c("thead",null,[c("tr",null,[c("th",null,"接口"),c("th",null,"路径"),c("th",null,"状态"),c("th",null,"耗时"),c("th",null,"顶层键 / 形状")])],-1)),c("tbody",null,[(x(!0),E(V,null,at(e.value,u=>(x(),E("tr",{key:u.name,class:Tt({bad:!u.ok})},[c("td",null,h(u.name),1),c("td",null,[c("code",null,h(u.path),1)]),c("td",null,h(u.status),1),c("td",null,h(u.ms)+" ms",1),c("td",null,h(u.error||u.keys),1)],2))),128))])]),c("p",ga,[z(" 契约登记接口合计 "+h(Object.keys(m(ji)).length)+" 条(本页抽样 "+h(m(ln).length)+" 条); 全量 42 条由 ",1),r[1]||(r[1]=c("code",null,"python scripts/http_contract_audit.py",-1)),r[2]||(r[2]=z(" 在线复核。 ",-1))])]))}}),ba={"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 a(t,e){let s=ba[t]??t;if(e)for(const[n,l]of Object.entries(e))s=s.split(`{${n}}`).join(String(l));return s}const ya=["overview","energy","component","vibration","generation","fault","decision","assistant","report","system"],on=["overview","energy","component","fault","vibration","generation","decision"],$a={危险:"bad",报警:"warn",不可判:"unk",良好:"ok",优秀:"ex"},wa={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"},Os=t=>$a[String(t)]||wa[String(t)],yl={证据:"evidence",机制:"mechanism",判级:"rating",排期:"schedule",动作:"action",验收:"acceptance"},bn=t=>"st."+(t==="ex"?"excellent":t),pt=t=>String(t).replace("WTG","").replace(/^0/,"")+"#",ot=(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})},$l=t=>{const e=Os(t);return e?a(bn(e)):String(t??"")},xa=["振动","温度","润滑","油液","报警","工单"];function wl(t){const e=xa.map(n=>Os((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 xl={bad:"critical",warn:"warning",unk:"unknown",ok:"good",ex:"excellent"},we=t=>String(t??""),qn=["叶片与叶根","变桨","偏航","齿轮箱","发电机","主轴承","变流器","塔架与基础","主控与传感网"],Ds={叶片与叶根:"blade",变桨:"pitch",偏航:"yaw",齿轮箱:"gearbox",发电机:"generator",主轴承:"main_bearing",变流器:"converter",塔架与基础:"tower",主控与传感网:"control",主轴:"main_bearing",其他:"other"},qi=(()=>{const t={};for(const e of qn)t[Ds[e]]=e;for(const[e,s]of Object.entries(Ds))s in t||(t[s]=e);return t})(),Ni=t=>Ds[String(t)]||String(t),kl=t=>qi[String(t)]||String(t),ye=t=>{const e=Ds[String(t)]||String(t);return qi[e]?a("sys."+e):String(t??"")},Ps=t=>ye(t),ka={key:0},Sa={class:"small"},Ma={href:"#tab=component","data-back":"1"},Ta={class:"panel mb"},Ca={style:{display:"flex",height:"12px","border-radius":"4px",overflow:"hidden",margin:"8px 0 4px"}},Ea={class:"small muted"},Aa={class:"tblwrap"},Oa={style:{width:"74px"}},Da={class:"r",style:{width:"96px"}},Pa=["href"],Fa={class:"small"},ja={class:"r"},Ia=["href"],qa={key:0,class:"panel mb"},Na={style:{cursor:"pointer","font-weight":"600"}},Ha={class:"tblwrap"},La={style:{"margin-top":"10px"}},Ra={style:{width:"74px"}},Ba={class:"small"},Wa={key:1,class:"panel"},Ka={class:"small"},Ua={key:0},Va={class:"panel mb small",style:{"border-left":"3px solid var(--accent)"}},Ga={class:"eyebrow"},za={class:"panel mb"},Ja={style:{display:"grid","grid-template-columns":"repeat(auto-fit,minmax(170px,1fr))",gap:"10px"}},Ya=["data-sys"],Za={class:"t"},Xa={class:"bar"},Qa={class:"small muted"},tc=["innerHTML"],ec={class:"small muted",style:{"margin-top":"8px"}},sc={key:1},nc={class:"panel mb",style:{"border-left":"3px solid var(--critical)"}},lc={class:"small"},ic={key:2},oc={class:"eyebrow"},rc={class:"panel mb"},ac={class:"small muted",style:{"font-weight":"400"}},cc={class:"small muted",style:{margin:"-2px 0 8px"}},uc={class:"tblwrap"},dc={class:"r"},fc={class:"r"},pc={class:"r"},hc={class:"r"},mc={key:0},_c={class:"badge"},gc={class:"num small"},vc={class:"r"},bc={class:"r"},yc={class:"r"},$c={class:"r"},wc={class:"small"},xc={class:"small muted"},kc={key:3},Sc={class:"panel mb"},Mc={class:"small"},Tc={href:"#tab=vibration"},Cc={class:"eyebrow"},Ec={class:"panel mb"},Ac={class:"tblwrap"},Oc={class:"r"},Dc=["href"],Pc={class:"r"},Fc=["innerHTML"],jc={class:"small"},Ic=Vt({__name:"Component",props:{d:{},sys:{}},setup(t){const e=t,s=P(()=>e.d?.sysdist||{}),n=P(()=>e.d?.rel&&!e.d.rel.err?e.d.rel:null),l=P(()=>e.sys?kl(e.sys):null),i=P(()=>qn.filter(f=>s.value[f]).map(f=>{const v=s.value[f],p=v.报警||0,b=v.不可判||0,k=Object.values(v).reduce((I,$)=>I+$,0)||1,w=p>=8?"var(--critical)":p>=3?"var(--warning)":p?"var(--accent)":"var(--good)";return{s:f,dist:v,a:p,u:b,N:k,col:w}}));function o(f){return(f.syss||[]).map(v=>`<a href="/problem/${f.t}/${encodeURIComponent(kl(v)||v)}">${ye(v)}</a>`).join(" · ")}const r=P(()=>{const v=(((e.d?.control||{}).energy||{}).items||[]).filter(p=>p.k==="停机").map(p=>p.h)[0];return v??null}),u=P(()=>{const f=n.value?.表||[],v=Math.max(1,...f.map(p=>p.停机时长h));return f.map(p=>({r:p,maxH:v,sev:p.部件==="无记录停机"?"var(--unknown)":p.外部?"var(--accent)":p.占停机>=.06?"var(--critical)":p.占停机>=.03?"var(--warning)":"var(--good)"}))}),_=P(()=>{const f=l.value;if(!f)return null;const v=(e.d?.systems||{})[f]||[],p=s.value[f]||{},b=(e.d?.systems||{})[f+"·良好"]||[],k=I=>p[I]||0,w=Object.values(p).reduce((I,$)=>I+$,0)||1;return{s:f,N:w,gd:b,cnt:k,al:v.filter(I=>I.st==="报警"),un:v.filter(I=>I.st==="不可判"),dist:p}});return(f,v)=>_.value?(x(),E("section",ka,[c("p",Sa,[c("a",Ma,h(m(a)("ui.back_to",{tab:m(a)("tab.component")})),1)]),c("div",Ta,[c("h3",null,h(m(a)("cmp.detail_head",{sys:m(ye)(_.value.s),n:_.value.N})),1),c("div",Ca,[(x(),E(V,null,at([["报警","critical"],["不可判","unknown"],["良好","good"],["优秀","excellent"]],([p,b])=>c("i",{key:p,style:gt(`width:${(_.value.cnt(p)/_.value.N*100).toFixed(1)}%;background:var(--${b})`)},null,4)),64))]),c("div",Ea,h(m(a)("cmp.counts",{a:_.value.cnt("报警"),u:_.value.cnt("不可判"),g:_.value.cnt("良好"),e:_.value.cnt("优秀")})),1)]),(x(!0),E(V,null,at([_.value.al,_.value.un],(p,b)=>Yn((x(),E("div",{key:b,class:"panel mb"},[c("h3",null,h(b===0?m(a)("cmp.alarm_units"):m(a)("cmp.unk_units"))+" "+h(m(a)("cmp.n_units",{n:p.length})),1),c("div",Aa,[c("table",null,[c("tr",null,[c("th",Oa,h(m(a)("ui.unit")),1),c("th",null,h(m(a)("cmp.why")),1),c("th",Da,h(m(a)("cmp.detail")),1)]),(x(!0),E(V,null,at(p,k=>(x(),E("tr",{key:k.t},[c("td",null,[c("a",{href:`/turbine/${k.t}`},[c("b",null,h(m(pt)(k.t)),1)],8,Pa)]),c("td",Fa,h(k.why),1),c("td",ja,[c("a",{class:"small",href:`/problem/${k.t}/${encodeURIComponent(_.value.s)}`},h(m(a)("cmp.detail_link")),9,Ia)])]))),128))])])])),[[fl,p.length]])),128)),_.value.gd.length?(x(),E("details",qa,[c("summary",Na,h(m(a)("cmp.good_units",{n:_.value.gd.length})),1),c("div",Ha,[c("table",La,[c("tr",null,[c("th",Ra,h(m(a)("ui.unit")),1),c("th",null,h(m(a)("cmp.why")),1)]),(x(!0),E(V,null,at(_.value.gd,p=>(x(),E("tr",{key:p.t},[c("td",null,[c("b",null,h(m(pt)(p.t)),1)]),c("td",Ba,h(p.why),1)]))),128))])])])):ct("",!0),!_.value.al.length&&!_.value.un.length&&!_.value.gd.length?(x(),E("div",Wa,[c("p",Ka,h(m(a)("cmp.none")),1)])):ct("",!0)])):(x(),E(V,{key:1},[t.d.sysmx_pending?(x(),E("section",Ua,[c("div",Va,[c("b",null,h(m(a)("cmp.grading_pending")),1),z(" "+h(m(a)("cmp.grading_pending_why",{span:t.d.sysmx_span||""})),1)])])):ct("",!0),c("section",null,[c("div",Ga,h(m(a)("cmp.by_system")),1),c("div",za,[c("div",Ja,[(x(!0),E(V,null,at(i.value,p=>(x(),E("div",{key:p.s,class:"sysc",role:"button",tabindex:"0","data-sys":m(Ni)(p.s),style:gt(`cursor:pointer;border-left:3px solid ${p.col}`)},[c("div",Za,[c("b",null,h(m(ye)(p.s)),1)]),c("div",Xa,[(x(),E(V,null,at([["报警","critical"],["不可判","unknown"],["良好","good"],["优秀","excellent"]],([b,k])=>Yn(c("i",{key:b,style:gt(`width:${(p.dist[b]/p.N*100).toFixed(1)}%;background:var(--${k})`)},null,4),[[fl,p.dist[b]]])),64))]),c("div",Qa,[c("span",{innerHTML:m(a)("cmp.alarm_n",{a:`<b style="color:${p.col}">${p.a}</b>`})},null,8,tc),z(h((p.u?m(a)("cmp.unk_n",{u:p.u}):"")+m(a)("cmp.fleet_n",{n:p.N})),1)])],12,Ya))),128))]),c("p",ec,h(m(a)("cmp.cards_note")),1)])]),t.d.rel&&t.d.rel.err?(x(),E("section",sc,[c("div",nc,[c("p",lc,h(m(a)("flt.block_err",{k:"rel",e:t.d.rel.err})),1)])])):n.value?(x(),E("section",ic,[c("div",oc,h(m(a)("cmp.rel_eyebrow",{win:n.value.窗})),1),c("div",rc,[c("h3",null,[z(h(m(a)("cmp.rel_head"))+" ",1),c("span",ac,h(m(a)("cmp.rel_meta",{t:n.value.总停机h,a:n.value.设备类停机h,b:n.value.外部类停机h})),1)]),c("p",cc,h(m(a)("cmp.rel_note",{h:r.value==null?"":" "+m(ot)(r.value)+"h"})),1),c("div",uc,[c("table",null,[c("tr",null,[c("th",null,h(m(a)("cmp.rel_part")),1),c("th",null,h(m(a)("cmp.rel_h")),1),c("th",dc,h(m(a)("cmp.rel_ev")),1),c("th",fc,h(m(a)("cmp.rel_mtbo")),1),c("th",pc,h(m(a)("cmp.rel_mdt")),1),c("th",hc,h(m(a)("cmp.rel_units")),1),c("th",null,h(m(a)("cmp.rel_fm")),1)]),(x(!0),E(V,null,at(u.value,p=>(x(),E("tr",{key:p.r.部件},[c("td",null,[c("b",null,h(m(Ps)(p.r.部件)),1),p.r.外部?(x(),E("span",mc,[v[0]||(v[0]=z(h(" "),-1)),c("span",_c,h(m(a)("cmp.external")),1)])):ct("",!0)]),c("td",null,[c("i",{class:"bar",style:gt(`width:${Math.round(p.r.停机时长h/p.maxH*72)}px;background:${p.sev}`)},null,4),c("span",gc,h(p.r.停机时长h)+"h · "+h((p.r.占停机*100).toFixed(1))+"%",1)]),c("td",vc,h(p.r.事件数),1),c("td",bc,h(p.r.外部?"—":p.r.MTBF_h||"—"),1),c("td",yc,h(p.r.MDT_h),1),c("td",$c,h(p.r.影响台数),1),c("td",wc,h(p.r.典型失效模式||"—"),1)]))),128))])]),c("p",xc,h(n.value.口径),1)])])):ct("",!0),t.d.fus&&!t.d.fus.err?(x(),E("section",kc,[c("div",Sc,[c("p",Mc,[z(h(m(a)("cmp.fusion_moved"))+" ",1),c("a",Tc,[c("b",null,h(m(a)("tab.vibration")),1)]),z(" "+h(m(a)("cmp.fusion_n",{n:(t.d.fus.表||[]).length})),1)])])])):ct("",!0),c("section",null,[c("div",Cc,h(m(a)("cmp.cross_eyebrow")),1),c("div",Ec,[c("h3",null,h(m(a)("cmp.watch_head",{n:(t.d.watch||[]).length})),1),c("div",Ac,[c("table",null,[c("tr",null,[c("th",null,h(m(a)("ui.unit")),1),c("th",Oc,h(m(a)("cmp.n_sys")),1),c("th",null,h(m(a)("cmp.hit_sys")),1),c("th",null,h(m(a)("cmp.basis")),1)]),(x(!0),E(V,null,at(t.d.watch||[],p=>(x(),E("tr",{key:p.t},[c("td",null,[c("a",{href:`/turbine/${p.t}`},[c("b",null,h(m(pt)(p.t)),1)],8,Dc)]),c("td",Pc,h(p.n),1),c("td",{class:"small",innerHTML:o(p)},null,8,Fc),c("td",jc,h(p.why),1)]))),128))])])])])],64))}}),qc="modulepreload",Nc=function(t,e){return new URL(t,e).href},Sl={},Hc=function(e,s,n){let l=Promise.resolve();if(s&&s.length>0){let o=function(f){return Promise.all(f.map(v=>Promise.resolve(v).then(p=>({status:"fulfilled",value:p}),p=>({status:"rejected",reason:p}))))};const r=document.getElementsByTagName("link"),u=document.querySelector("meta[property=csp-nonce]"),_=u?.nonce||u?.getAttribute("nonce");l=o(s.map(f=>{if(f=Nc(f,n),f in Sl)return;Sl[f]=!0;const v=f.endsWith(".css"),p=v?'[rel="stylesheet"]':"";if(!!n)for(let w=r.length-1;w>=0;w--){const I=r[w];if(I.href===f&&(!v||I.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${p}`))return;const k=document.createElement("link");if(k.rel=v?"stylesheet":qc,v||(k.as="script"),k.crossOrigin="",k.href=f,_&&k.setAttribute("nonce",_),document.head.appendChild(k),v)return new Promise((w,I)=>{k.addEventListener("load",w),k.addEventListener("error",()=>I(new Error(`Unable to preload CSS for ${f}`)))})}))}function i(o){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=o,window.dispatchEvent(r),!r.defaultPrevented)throw o}return l.then(o=>{for(const r of o||[])r.status==="rejected"&&i(r.reason);return e().catch(i)})},Lc=["data-chart"],Rc=Vt({__name:"EChart",props:{option:{},height:{}},setup(t){const e=t,s=St(null);let n=null;async function l(){if(!s.value)return;const i=await Hc(()=>import("./index-BAPDkhe3.js"),[],import.meta.url);n||(n=i.init(s.value,void 0,{renderer:"canvas"})),n.setOption(e.option,!0)}return Ws(l),es(()=>e.option,l,{deep:!0}),ai(()=>{n&&(n.dispose(),n=null)}),(i,o)=>(x(),E("div",{class:"echart","data-chart":JSON.stringify(t.option),style:gt(`height:${t.height||"260px"}`),ref_key:"el",ref:s},null,12,Lc))}}),Hi=(t,e)=>{const s=t.__vccOpts||t;for(const[n,l]of e)s[n]=l;return s},Ot=Hi(Rc,[["__scopeId","data-v-999bee15"]]),Bc={key:0},Wc={class:"panel"},Kc={class:"small muted"},Uc={key:1},Vc={class:"kpis",style:{"margin-bottom":"12px"}},Gc={key:0},zc={class:"grid2"},Jc={class:"panel span2"},Yc={class:"small muted",style:{"font-weight":"400"}},Zc={class:"panel"},Xc={style:{"font-weight":"600"}},Qc={class:"num"},tu={class:"small muted"},eu={class:"small muted",style:{"margin-top":"6px"}},su={class:"panel"},nu={class:"small muted",style:{"font-weight":"400"}},lu={class:"tblwrap"},iu={class:"r",style:{width:"90px"}},ou={class:"small"},ru={class:"num small"},au={class:"r small"},cu={class:"small muted",style:{"margin-top":"6px"}},uu=Vt({__name:"Energy",props:{d:{}},setup(t){const e=t,s=P(()=>(e.d?.control||{}).energy),n=P(()=>(e.d?.control||{}).states||[]),l={"限电·绑定":"loss.curtail_bound","限电命令·未绑定":"loss.curtail_unbound","停机(调度令)":"loss.dispatch",停机:"loss.stop",正常发电:"loss.normal",低风待机:"loss.lowwind"},i=p=>l[p]?a(l[p]):p,o=P(()=>{const p=s.value||{};return[{v:ot(p.theo),u:"MWh",l:a("en.kpi_theo"),k:""},{v:ot(p.act),u:"MWh",l:a("en.kpi_act",{h:ot(p.eflh)}),k:"ok"},{v:ot(p.loss_pct,1),u:"%",l:a("en.kpi_loss",{v:ot(p.loss)}),k:p.loss_pct>=10?"warn":""},{v:p.cap_ok?a("en.cap_pass"):a("en.cap_fail"),u:"",l:a("en.cap_note",{op:p.cap_ok?"<":"≥",cap:ot(p.cap)}),k:p.cap_ok?"ok":"bad"}]}),r=p=>p.indexOf("限电")>=0||p.indexOf("调度")>=0?0:p==="停机"?1:2,u=P(()=>{const p=[0,0,0];for(const b of s.value?.items||[])p[r(b.k)]+=b.loss;return p}),_=P(()=>{const p=s.value||{},b=(p.items||[]).filter($=>$.loss>0).map($=>({name:$.k,value:Math.round($.loss)})),k=u.value,w=k.reduce(($,T)=>$+T,0)||1,I=k.map($=>Math.round($/w*100)).filter(($,T)=>k[T]/w*500>46);return{title:{text:a("en.balance"),left:"center",textStyle:{fontSize:13}},tooltip:{trigger:"axis"},grid:{left:70,right:20,top:44,bottom:40},xAxis:{type:"category",data:b.map($=>$.name)},yAxis:{type:"value",name:"MWh"},series:[{type:"bar",data:b.map($=>$.value),itemStyle:{color:"#0b5fa5"}}],__data__:[Math.round(p.theo),Math.round(p.act),Math.round(b.reduce(($,T)=>$+T.value,0)),...b.map($=>$.value),...I]}}),f=P(()=>{const p=u.value;return{grid:{left:90,right:24,top:20,bottom:30},xAxis:{type:"value",name:"MWh"},yAxis:{type:"category",data:[a("ch.blame.n1"),a("ch.blame.n2"),a("ch.blame.n3")]},series:[{type:"bar",data:p.map(b=>Math.round(b)),itemStyle:{color:"#2f7dbf"}}],__data__:[]}}),v=P(()=>Math.max(1,...n.value.map(p=>p.pct)));return(p,b)=>s.value?(x(),E("section",Uc,[c("div",Vc,[(x(!0),E(V,null,at(o.value,(k,w)=>(x(),E("div",{key:w,class:Tt(["kpi",k.k])},[c("b",null,[z(h(k.v),1),k.u?(x(),E("small",Gc,h(k.u),1)):ct("",!0)]),c("span",null,h(k.l),1)],2))),128))]),c("div",zc,[c("div",Jc,[c("h3",null,[z(h(m(a)("en.balance"))+" ",1),c("span",Yc,h(m(a)("en.win",{win:m(we)(t.d.win)})),1)]),ft(Ot,{option:_.value,height:"280px"},null,8,["option"])]),c("div",Zc,[c("h3",null,h(m(a)("en.blame")),1),ft(Ot,{option:f.value,height:"240px"},null,8,["option"]),(x(!0),E(V,null,at(u.value,(k,w)=>(x(),E("div",{key:w,style:{display:"flex","align-items":"baseline",gap:"7px","margin-top":"5px"}},[c("i",{style:gt(`flex:none;width:9px;height:9px;border-radius:2px;background:${["var(--accent)","var(--critical)","var(--muted)"][w]};opacity:.55`)},null,4),c("span",Xc,h(m(a)(["ch.blame.n1","ch.blame.n2","ch.blame.n3"][w])),1),c("span",Qc,h(m(ot)(Math.round(k)))+" MWh",1),c("span",tu,h(m(a)(["ch.blame.d1","ch.blame.d2","ch.blame.d3"][w])),1)]))),128)),c("p",eu,h(m(a)("en.blame_note",{n:m(ot)(Math.round(((s.value.items||[]).find(k=>k.k==="停机")||{}).loss||0))})),1)]),c("div",su,[c("h3",null,[z(h(m(a)("en.states"))+" ",1),c("span",nu,h(m(a)("en.win",{win:m(we)(t.d.win)})),1)]),c("div",lu,[c("table",null,[c("tr",null,[c("th",null,h(m(a)("en.state")),1),c("th",null,h(m(a)("en.share")),1),c("th",iu,h(m(a)("en.loss_mwh")),1)]),(x(!0),E(V,null,at(n.value,k=>(x(),E("tr",{key:k.k},[c("td",ou,h(i(k.k)),1),c("td",null,[c("i",{class:"bar",style:gt(`width:${Math.round(k.pct/v.value*84)}px;background:${k.k.indexOf("停机")>=0&&k.k.indexOf("调度")<0?"var(--critical)":"var(--accent)"}`)},null,4),c("span",ru,h(k.pct)+"% · "+h(m(ot)(Math.round(k.h)))+"h",1)]),c("td",au,h(m(ot)(Math.round(k.loss))),1)]))),128))])]),c("p",cu,[z(h(t.d.control.anchors||""),1),b[0]||(b[0]=c("br",null,null,-1)),z(h(m(a)("en.states_note")),1)])])])])):(x(),E("section",Bc,[c("div",Wc,[c("p",Kc,h(m(a)("ui.empty")),1)])]))}}),du={class:"eyebrow"},fu={class:"panel mb small",style:{"border-left":"3px solid var(--accent)"}},pu={style:{color:"var(--warning)"}},hu={class:"grid2"},mu={class:"eyebrow",style:{"grid-column":"1/-1","margin-top":"4px"}},_u={style:{"text-transform":"none","letter-spacing":"0",color:"var(--muted)"}},gu={class:"panel span2"},vu={class:"small muted",style:{"margin-top":"6px"}},bu={class:"panel"},yu=["innerHTML"],$u={class:"panel"},wu=["innerHTML"],xu={class:"panel span2"},ku={class:"small muted",style:{"margin-top":"6px"}},Su={key:0,style:{color:"var(--warning)"}},Mu={class:"panel"},Tu={class:"tblwrap"},Cu={style:{width:"70px"}},Eu={class:"r",style:{width:"80px"}},Au={class:"num small"},Ou={class:"r small"},Du={class:"small muted",style:{"margin-top":"6px"}},Pu={key:0,class:"panel",style:{"border-left":"3px solid var(--critical)"}},Fu={class:"small"},ju={key:1,class:"panel"},Iu={class:"small muted",style:{"font-weight":"400"}},qu={class:"legend",style:{"margin-top":"6px","flex-wrap":"wrap"}},Nu={class:"small muted",style:{"margin-top":"6px"}},Hu={class:"eyebrow",style:{"grid-column":"1/-1","margin-top":"4px"}},Lu={style:{"text-transform":"none","letter-spacing":"0",color:"var(--muted)"}},Ru={key:0,class:"panel span2"},Bu={class:"small muted",style:{"margin-top":"6px"}},Wu={style:{"margin-top":"12px"}},Ku={class:"small muted",style:{"margin-top":"2px"}},Uu={class:"panel"},Vu=["innerHTML"],Gu={class:"small muted",style:{"margin-top":"4px"}},zu={class:"panel"},Ju={class:"tblwrap"},Yu={style:{width:"64px"}},Zu={class:"r",style:{width:"56px"}},Xu={class:"num small"},Qu={class:"r small"},td={class:"small muted",style:{"margin-top":"6px"}},ed=Vt({__name:"Fault",props:{d:{}},setup(t){const e=t,s=P(()=>e.d?.faults||{}),n=P(()=>s.value.partial||[]),l=P(()=>e.d?.m8&&!e.d.m8.err?e.d.m8.mtbf:null),i=P(()=>s.value.monthly||{months:[],vals:[]}),o=P(()=>i.value.per_day||[]),r=P(()=>n.value.length?(i.value.months||[]).indexOf(n.value[0]):-1),u=P(()=>{const L=n.value.length?a("flt.rate_partial",{m:n.value.join("/")}):a("flt.rate_full"),W=r.value>=0&&!!i.value.per_day;return L+(W?" "+a("flt.rate_example",{m:n.value[0],v:_.value}):"")}),_=P(()=>{const L=r.value;return L>=0&&i.value.per_day?i.value.per_day[L]:null}),f=P(()=>n.value.length?a("win.partial",{m:n.value.join("/"),c:Math.round((s.value.cov_min||0)*100)}):""),v={grid:{left:60,right:20,top:24,bottom:46},tooltip:{trigger:"axis"},yAxis:{type:"value"}},p=P(()=>({...v,xAxis:{type:"category",data:i.value.months||[]},series:[{type:"bar",data:o.value.map(L=>L==null?null:Math.round(L*100)/100),itemStyle:{color:"#0b5fa5"}}],__data__:o.value.filter(L=>L!=null)}));function b(L){const W=(L||[]).filter(J=>J&&J.v>0);return{...v,xAxis:{type:"category",data:W.map(J=>J.k)},series:[{type:"bar",data:W.map(J=>J.v),itemStyle:{color:"#2f7dbf"}}],__data__:[]}}const k=L=>{const W=String(L).match(/^([0-9]+)/);return W?W[1]:String(L).slice(0,4)},w=L=>String(L??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;");function I(L,W,J){const It=(L||[]).filter(Dt=>Dt&&Dt.v>0);if(!It.length)return w(a("ch.pareto.none"));const je=It.reduce((Dt,d)=>Dt+d.v,0);let Et=0,Bt=null;for(let Dt=0;Dt<It.length;Dt++)Et+=It[Dt].v,Bt===null&&je&&Et/je>=.8&&(Bt=Dt+1);const We=It.slice(0,3).map(Dt=>`<b>${w(k(Dt.k))}</b> ${w(String(Dt.k).replace(/^[0-9]+ */,"").slice(0,18))}`).join(" · "),Ke=a("ch.pareto.total",{n:It.length,tot:ot(Math.round(je)),unit:W});return(Bt?`<b>${w(a("ch.pareto.key",{k:Bt}))}</b> (${w(Ke)})`:w(Ke))+"<br>"+w(a("ch.pareto.top3"))+We+(J?"<br>"+w(J):"")}const $=P(()=>I(s.value.pareto_n||[],a("unit.n"),a("flt.pareto_n_note"))),T=P(()=>I(s.value.pareto_d||[]," h",a("flt.pareto_d_note"))),N=P(()=>I(ut.value," h",a("flt.stop_pareto_note"))),O=P(()=>b(s.value.pareto_n||[])),H=P(()=>b(s.value.pareto_d||[])),Z=P(()=>{const L=(s.value.quad||[]).filter(W=>W&&W.n>0&&W.med>0);return{grid:{left:60,right:24,top:24,bottom:46},xAxis:{type:"log",name:"MTBF(h)"},yAxis:{type:"value",name:"MDT(h)"},series:[{type:"scatter",data:L.map(W=>[W.mtbf??W.n,W.med]),symbolSize:W=>Math.min(28,6+Math.sqrt(Math.max(W[0]||1,1))),itemStyle:{color:"#b42318",opacity:.6}}],__data__:[]}}),mt=P(()=>s.value.per_t||[]),Lt=P(()=>Math.max(1,...mt.value.map(L=>L.v))),me=P(()=>l.value&&e.d?.m8?.seasonal?e.d.m8.seasonal:[]),ie=["var(--accent)","#D48A1E","#2E8B6A","#7C5295"],xe=P(()=>me.value.slice(0,4).map(L=>String(L.name).slice(0,16))),Fe=P(()=>{const L=me.value.slice(0,4),W=L.length?L[0].months:[];return{...v,xAxis:{type:"category",data:W},legend:{top:0,textStyle:{fontSize:10}},series:L.map(J=>({name:String(J.name).slice(0,16),type:"line",data:J.vals,connectNulls:!1})),__data__:[]}}),jt=P(()=>e.d?.rel&&!e.d.rel.err?e.d.rel:null),Be=P(()=>{const L=jt.value?.表||[];return{grid:{left:60,right:24,top:24,bottom:40},xAxis:{type:"value",name:"MTBF(h)"},yAxis:{type:"value",name:"MDT(h)"},series:[{type:"scatter",data:L.filter(W=>!W.外部&&W.MTBF_h).map(W=>[W.MTBF_h,W.MDT_h]),symbolSize:8,itemStyle:{color:"#2f7dbf",opacity:.5}}],__data__:[]}}),hs=P(()=>{const L=jt.value?.表||[],W=(L.find(Et=>Et.部件==="无记录停机")||{}).停机时长h||0,J=L.filter(Et=>Et.部件==="未归类").reduce((Et,Bt)=>Et+Bt.停机时长h,0);return{ok:(jt.value?.总停机h||0)-W-J,unk:W,un2:J}}),vt=P(()=>{const L=hs.value;return{xAxis:{type:"value"},yAxis:{type:"category",data:[a("ch.attrib.ok",{h:Math.round(L.ok),p:""}),a("ch.attrib.none",{h:Math.round(L.unk),p:""}),a("ch.attrib.uncls",{h:Math.round(L.un2)})]},series:[{type:"bar",data:[Math.round(L.ok),Math.round(L.unk),Math.round(L.un2)],itemStyle:{color:"#0b5fa5"}}],__data__:[Math.round(L.ok),Math.round(L.unk),Math.round(L.un2)]}}),ut=P(()=>(e.d?.m8?.stop_pareto||[]).map(L=>({k:String(L.k).split(";")[0].slice(0,26),v:L.h}))),st=P(()=>b(ut.value)),Rt=P(()=>l.value?.台级top||[]),ke=P(()=>Math.max(1,...Rt.value.map(L=>L.时长h)));return(L,W)=>(x(),E("section",null,[c("div",du,h(m(a)("flt.eyebrow")),1),c("div",fu,[c("b",null,h(m(a)("win.banner",{win:m(we)(t.d.win)})),1),f.value?(x(),E(V,{key:0},[W[0]||(W[0]=z(" | ",-1)),c("span",pu,h(f.value),1)],64)):ct("",!0)]),c("div",hu,[c("div",mu,[z(h(m(a)("flt.alarm_face"))+" ",1),c("span",_u,h(m(a)("flt.alarm_meta",{n:m(ot)(s.value.total),c:s.value.n_codes,win:m(we)(t.d.win)})),1)]),c("div",gu,[c("h3",null,h(m(a)("flt.rate")),1),ft(Ot,{option:p.value,height:"250px"},null,8,["option"]),c("p",vu,[c("b",null,h(m(a)("flt.rate_note")),1),z(" — "+h(u.value),1)])]),c("div",bu,[c("h3",null,h(m(a)("flt.pareto_n")),1),ft(Ot,{option:O.value,height:"240px"},null,8,["option"]),c("p",{class:"small muted",style:{"margin-top":"5px","line-height":"1.6"},innerHTML:$.value},null,8,yu)]),c("div",$u,[c("h3",null,h(m(a)("flt.pareto_d")),1),ft(Ot,{option:H.value,height:"240px"},null,8,["option"]),c("p",{class:"small muted",style:{"margin-top":"5px","line-height":"1.6"},innerHTML:T.value},null,8,wu)]),c("div",xu,[c("h3",null,h(m(a)("flt.quad")),1),ft(Ot,{option:Z.value,height:"300px"},null,8,["option"]),c("p",ku,[z(h(m(a)("flt.quad_note",{n:s.value.n_codes,m:(s.value.quad||[]).length}))+" ",1),n.value.length?(x(),E("span",Su,h(m(a)("flt.quad_partial",{m:n.value.join("/"),c:Math.round((s.value.cov_min||0)*100)})),1)):ct("",!0),z(" "+h(m(a)("flt.quad_note2")),1)])]),c("div",Mu,[c("h3",null,h(m(a)("flt.per_t",{n:mt.value.length})),1),c("div",Tu,[c("table",null,[c("tr",null,[c("th",Cu,h(m(a)("ui.unit")),1),c("th",null,h(m(a)("ui.count")),1),c("th",Eu,h(m(a)("flt.per_t_share")),1)]),(x(!0),E(V,null,at(mt.value,J=>(x(),E("tr",{key:J.k},[c("td",null,[c("b",null,h(m(pt)(J.k)),1)]),c("td",null,[c("i",{class:"bar",style:gt(`width:${Math.round(J.v/Lt.value*90)}px;background:${J.v/Lt.value>.6?"var(--critical)":"var(--accent)"}`)},null,4),c("span",Au,h(m(ot)(J.v)),1)]),c("td",Ou,h((J.v/s.value.total*100).toFixed(1))+"%",1)]))),128))])]),c("p",Du,h(m(a)("flt.per_t_note",{n:m(ot)(s.value.total)})),1)]),t.d.m8&&t.d.m8.err?(x(),E("div",Pu,[c("p",Fu,h(m(a)("flt.block_err",{k:"m8",e:t.d.m8.err})),1)])):ct("",!0),l.value&&me.value.length?(x(),E("div",ju,[c("h3",null,[z(h(m(a)("flt.seasonal"))+" ",1),c("span",Iu,"("+h(m(a)("flt.seasonal_unit"))+")",1)]),ft(Ot,{option:Fe.value,height:"260px"},null,8,["option"]),c("div",qu,[(x(!0),E(V,null,at(xe.value,(J,It)=>(x(),E("span",{key:It},[c("i",{style:gt(`background:${ie[It%4]}`)},null,4),z(h(J),1)]))),128))]),c("p",Nu,h(m(a)("flt.seasonal_note")),1)])):ct("",!0),l.value?(x(),E(V,{key:2},[c("div",Hu,[z(h(m(a)("flt.stop_face"))+" ",1),c("span",Lu,h(m(a)("flt.stop_meta",{h:m(ot)(l.value.停机总时长h),n:m(ot)(l.value.停机事件数)})),1)]),jt.value?(x(),E("div",Ru,[c("h3",null,h(m(a)("flt.ram")),1),ft(Ot,{option:Be.value,height:"300px"},null,8,["option"]),c("p",Bu,h(m(a)("flt.ram_note",{a:jt.value.设备类停机h,b:jt.value.外部类停机h})),1),c("div",Wu,[ft(Ot,{option:vt.value,height:"160px"},null,8,["option"])]),c("p",Ku,h(m(a)("flt.attrib_note",{h:((jt.value.表||[]).find(J=>J.部件==="无记录停机")||{}).停机时长h||0})),1)])):ct("",!0),c("div",Uu,[c("h3",null,h(m(a)("flt.stop_pareto")),1),ft(Ot,{option:st.value,height:"240px"},null,8,["option"]),c("p",{class:"small muted",style:{"margin-top":"5px","line-height":"1.6"},innerHTML:N.value},null,8,Vu),c("p",Gu,h(l.value.口径),1)]),c("div",zu,[c("h3",null,h(m(a)("flt.stop_units",{n:Rt.value.length})),1),c("div",Ju,[c("table",null,[c("tr",null,[c("th",Yu,h(m(a)("ui.unit")),1),c("th",null,h(m(a)("flt.stop_h")),1),c("th",Zu,h(m(a)("flt.stop_n")),1)]),(x(!0),E(V,null,at(Rt.value,J=>(x(),E("tr",{key:J.t},[c("td",null,[c("b",null,h(m(pt)(J.t)),1)]),c("td",null,[c("i",{class:"bar",style:gt(`width:${Math.round(J.时长h/ke.value*90)}px;background:${J.时长h/ke.value>.6?"var(--critical)":"var(--accent)"}`)},null,4),c("span",Xu,h(m(ot)(J.时长h)),1),W[1]||(W[1]=z("h",-1))]),c("td",Qu,h(J.次),1)]))),128))])]),c("p",td,h(m(a)("flt.stop_units_note")),1)])],64)):ct("",!0)])]))}}),sd=[[/DE[/]NDE/g,"驱动端与非驱动端"],[/GenDE/g,"发电机驱动端"],[/GenNDE/g,"发电机非驱动端"],[/HS_gen2?/g,"高速轴发电机侧"],[/HS_rot/g,"高速轴转子侧"],[/IMS/g,"中间轴"],[/(?<![A-Za-z])NDE(?![A-Za-z])/g,"非驱动端"],[/(?<![A-Za-z])DE(?![A-Za-z])/g,"驱动端"],[/内圈BPFI/g,"内圈特征频率"],[/外圈BPFO/g,"外圈特征频率"],[/BPFI/g,"内圈特征频率"],[/BPFO/g,"外圈特征频率"],[/FTF/g,"保持架特征频率"],[/BSF/g,"滚动体特征频率"],[/TD_1R/g,"时域单转指标"],[/Peak/g,"冲击峰值"],[/Rms/gi,"有效值"],[/([0-9]+(?:[.][0-9]+)?)[ ]*阶/g,"$1 倍轴频"],[/[(]o([0-9]+(?:[.][0-9]+)?)[)]/g,"(轴频 $1 倍)"],[/×p90/g,"×全场90分位"],[/×fleet/g,"×全场中位"],[/六窗/g,"六个观测窗"],[/([0-9])窗/g,"$1 个观测窗"],[/宽带/g,"宽频带总量"],[/台阶/g,"阶跃上升"],[/缓升/g,"缓慢上升"],[/回落/g,"回落至"],[/全净|六窗全净/g,"各窗均干净"],[/清洁/g,"干净"],[/回归/g,"回到常态"],[/同族/g,"同批次共性 (见该批主台)"],[/族第([^ ]+)台/g,"同批次第$1台"],[/族/g,"批次共性组"],[/gain异常/g,"测点增益异常"],[/gain/g,"测点增益"],[/[(]销[)]/g,"(已销案)"],[/梯度/g,"沿链梯度最高点"],[/周期主导/g,"周期成分主导"],[/急性事件/g,"突发事件"],[/慢性/g,"长期"],[/主异常在/g,"主要异常位于"]],Y=t=>String(t??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),Li=t=>String(t??""),et=t=>Y(t),nd={危险:"bad",报警:"warn",不可判:"unk",良好:"ok",优秀:"ex"},ld={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"},Nn=t=>nd[String(t)]||ld[String(t)],Ri={bad:"var(--critical)",warn:"var(--warning)",unk:"var(--unknown)",ok:"var(--good)",ex:"var(--excellent)"},Bi={优秀:"var(--excellent)",良好:"var(--good)",报警:"var(--warning)",危险:"var(--critical)",不可判:"var(--unknown)",监测不可用:"var(--unknown)",无监测:"var(--unknown)"},Wi={bad:"var(--critical)",warn:"var(--warning)",note:"var(--muted)",ok:"var(--good)",unlisted:"var(--muted)",stale:"var(--muted)",meta:"var(--muted)"},id={定论:"confirmed","准定论·预警":"near","候选·新发":"candidate_new",候选:"candidate","候选·记基线":"candidate_baseline",参考:"reference",INSUFFICIENT:"insufficient",正常:"normal",撤回:"withdrawn"},Hn=t=>"st."+(t==="ex"?"excellent":t),ge=t=>{const e=Nn(t);return e?a(Hn(e)):et(t)},rn=t=>{const e=id[String(t)],s="tier."+e;return e?a(s):String(t)==="—"?"—":et(t)},Ki=(t,e,s)=>`<span class="duo" style="--c:${s}"><span class="st">${t}</span><span class="ev">${e}</span></span>`,De=t=>{let e=String(t??"");for(const[s,n]of sd)e=e.replace(s,n);return e},an=t=>De(t),od=(t,e)=>{if(!t||t.filter(v=>v!=null).length<3)return"";const s=t.filter(v=>v!=null),n=Math.min(...s),l=Math.max(...s),i=l-n||1,o=84,r=22,u=t.length;let _="",f=null;return t.forEach((v,p)=>{if(v==null)return;const b=p/(u-1)*o,k=r-2-(v-n)/i*(r-4);_+=(_?"L":"M")+b.toFixed(1)+" "+k.toFixed(1),f=[b,k]}),`<svg width="${o}" height="${r}" style="vertical-align:middle;margin-left:6px"><path d="${_}" fill="none" stroke="${e}" stroke-width="1.2" opacity=".75"/><circle cx="${f[0]}" cy="${f[1]}" r="2.4" fill="${e}"/></svg>`},rd={齿轮箱:"#8A6D3B",发电机:"#4A6FA5",主轴承:"#2E7D6B",变桨叶片:"#4A6FA5",偏航:"#2E7D6B",测风:"#7C5295",其他:"#5A6470"},ad=(t,e,s)=>{if(!e)return`<span class="small muted">${a("fus.no_alarm")}</span>`;const n=118,l=Math.max(6,Math.round(e/Math.max(s||e,1)*n));return`<div title="${Y(a("fus.fam_tip",{n:e,m:s||e}))}" style="display:flex;height:9px;border-radius:3px;overflow:hidden;width:${l}px">${(t||[]).map(i=>`<i title="${Y(ye(i.k))} ${i.n}" style="width:${(i.n/e*100).toFixed(1)}%;background:${rd[i.k]||"#5A6470"}"></i>`).join("")}</div><div class="small muted" style="margin-top:3px">${(t||[]).slice(0,2).map(i=>ye(i.k)+" "+i.n).join(" · ")}</div>`};function cd(t){const e=(t.列窗||{}).months||[];let s=`<div class="panel mb" style="border-left:3px solid var(--warning)"><b>${a("fus.rules_head")}</b><p class="small" style="margin-top:4px">${a("fus.rule1")}<br>${a("fus.rule2")}</p></div>`;s+=`<div class="panel mb"><h3>${a("fus.matrix_head")}</h3><p class="small muted">${a("fus.matrix_note1")}</p><p class="small">${a("fus.matrix_note2",{n:e.length,m0:e[0]||"?"})}</p>
  18. <div class="small muted" style="margin:6px 0 12px;line-height:2"><div><b>${a("fus.legend_state")}</b> ${["bad","warn","ok","ex","unk"].map(p=>`<span style="display:inline-flex;align-items:center;gap:4px;margin-right:12px"><i style="width:10px;height:10px;border-radius:2px;background:${Ri[p]}"></i>${a(Hn(p))}</span>`).join("")}</div>
  19. <div><b>${a("fus.legend_tier")}</b> ${["定论","准定论·预警","候选·新发","候选","候选·记基线","参考","INSUFFICIENT"].map(p=>`<span style="display:inline-flex;align-items:center;gap:4px;margin-right:12px"><i style="width:10px;height:10px;border-radius:2px;background:${(t.色标||{})[p]||"#ccc"}"></i>${rn(p)}</span>`).join("")}</div><div>${a("fus.legend_note")}</div></div>`;const n=p=>{const b=String(p||""),k=b.match(/20[0-9][0-9]-[0-9][0-9](?:~20[0-9][0-9]-[0-9][0-9])?|至[ ]*20[0-9][0-9]-[0-9][0-9]|20[0-9][0-9]~20[0-9][0-9]/);return k?k[0].startsWith("至")?a("win.through",{date:k[0].replace(/^至\s*/,"")}):k[0]:b.slice(0,14)},l=(p,b,k)=>`<th title="${Y(b||"")}${k||""}"><div>${p}</div><div class="small muted" style="font-weight:400">${et(n(b))}${k||""}</div></th>`,i=t.列窗||{};s+=`<div class="tblwrap"><table class="fmx" style="table-layout:fixed;width:100%;min-width:900px"><colgroup><col style="width:7%">${'<col style="width:15.5%">'.repeat(6)}</colgroup><tr><th>${a("ui.unit")}</th>${l(a("fus.col.vib"),i.振动,a("fus.col.fixed"))}${l(a("fus.col.temp"),i.温度)}${l(a("fus.col.lub"),i.润滑,a("fus.col.display_only"))}${l(a("fus.col.oil"),i.油液)}${l(a("fus.col.alarm"),i.报警)}${l(a("fus.col.wo"),i.工单)}</tr>`;const o=t.矩阵||[],r=Math.max(1,...o.map(p=>(p.报警||{}).n||0)),u=Math.max(1,...o.map(p=>(p.工单||{}).n||0)),_=t.色标||{},f=p=>{if(p.ostate&&p.ostate!=="不可判")return ge(p.ostate);const b=String(p.note||"");return/数据不足|不可判|nsufficient/.test(b)?a("fus.short.nodata"):/未评估|ot assessed/.test(b)?a("fus.short.uneval"):/无样|未取样|o sample/.test(b)?a("fus.short.nosample"):/样龄|stale/.test(b)?a("fus.short.stale"):{ok:a("fus.short.normal"),unlisted:a("fus.short.unlisted"),stale:a("fus.short.stale")}[p.level]||"—"},v=p=>{const b=p||{},k=Bi[b.ostate]||_[b.wlevel]||Wi[b.level]||"var(--muted)",w=De(b.note),I=["bad","warn","note"].includes(b.level),$=Y(w)+a("fus.tip_state",{s:ge(b.ostate||"?")});if(!I)return`<td class="small" title="${$}" style="border-left:3px solid ${k};color:var(--muted)">${f(b)}</td>`;const T=w.split(/[::]/),N=(T.length>1?T.slice(1).join(":"):w).trim(),O=/^[ ]*(评估报告|两口径差异|⚠|ssessment)/.test(N)||N.length>16?"":N,H=O?et(O):b.ostate&&b.ostate!=="不可判"?"":f(b),Z=b.wlevel&&b.wlevel!=="—"&&b.wlevel!=="正常"&&b.ostate?Ki(ge(b.ostate),rn(b.wlevel),k):"";return`<td class="small" title="${$}${a("fus.tip_tier",{e:rn(b.wlevel||"?")})}" style="border-left:3px solid ${k};overflow:hidden"><div><div style="color:${k};font-weight:${["bad","warn"].includes(b.level)?600:400}">${H}</div>${Z}</div>${od(b.hist,b.level==="bad"?"var(--critical)":b.level==="warn"?"var(--warning)":"var(--muted)")}</td>`};return o.forEach(p=>{const b=p.报警||{n:0,fam:[]},k=p.工单||{n:0,acts:[]},w=b.rank&&b.rank<=5?"var(--warning)":"var(--line)",I=b.burst,$=Y((b.items||[]).map(T=>`${T.code} ${De(T.text)} — ${T.n} (${T.first}~${T.last})`).join(`
  20. `))+(I?`
  21. `+Y(a("fus.burst_tip",{c:I.code,p:(I.share*100).toFixed(0),m:I.med_s})):"");s+=`<tr><td><a href="/turbine/${p.turbine}"><b>${pt(p.turbine)}</b></a></td>${v(p.振动)}${v(p.温度)}${v(p.润滑)}${v(p.油液)}
  22. <td title="${$}" style="border-left:3px solid ${I?"var(--unknown)":w}"><b class="small num" style="color:${b.rank&&b.rank<=10?"var(--ink)":"var(--muted)"}">${a("fus.alarm_n",{n:b.n})}</b>${b.rank?`<span class="small muted">${a("fus.alarm_rank",{r:b.rank,t:b.tot})}</span>`:""}${I?`<div class="small" style="color:var(--unknown)">${a("fus.burst",{p:(I.share*100).toFixed(0),c:I.code})}</div>`:""}${b.rank&&b.rank<=10||I?ad(b.fam,b.n,r):""}</td>
  23. <td title="${Y((k.items||[]).map(T=>`${T.date} ${an(T.name)} → ${an(T.act)}${T.part?" "+an(T.part):""}`).join(`
  24. `)||a("fus.wo_none"))}" style="min-width:110px">${k.n?`<b class="small">${a("fus.wo_n",{n:k.n})}</b>${k.last?`<span class="small muted"> · ${Y(k.last)}</span>`:""}<div style="height:7px;border-radius:3px;background:var(--muted);opacity:.5;margin-top:4px;width:${Math.max(6,Math.round(k.n/u*90))}px"></div><div class="small muted" style="margin-top:3px">${(k.acts||[]).slice(0,2).map(T=>et(T.k)+"×"+T.n).join(" · ")}</div>`:'<span class="small muted">—</span>'}</td></tr>`}),s+`</table></div><p class="small muted" style="margin-top:8px">${a("fus.matrix_foot")}</p></div>`}const Ml=(t,e,s)=>{const n=Math.max(t,e,7),l=120,i=o=>Math.max(2,o/n*(l-4));return`<svg class="dt" viewBox="0 0 ${l} 26" style="width:${l}px;height:26px"><rect x="2" y="2" width="${i(t).toFixed(1)}" height="9" rx="2" fill="var(--muted)" fill-opacity=".55"/><rect x="2" y="15" width="${i(e).toFixed(1)}" height="9" rx="2" fill="${s}" fill-opacity=".9"/></svg>`},yn=(t,e)=>{const s=String(t||"").replace(/main bearing[, ]*[(]?(?:rear|back)[)]?/ig,"主轴承后").replace(/main bearing[, ]*[(]?(?:front|forward)[)]?/ig,"主轴承前").replace(/main bearing/ig,"主轴承").replace(/generator[, ]*(?:NDE|non-drive[- ]end)/ig,"发电机NDE").replace(/generator[, ]*(?:DE|drive[- ]end)/ig,"发电机DE").replace(/generator/ig,"发电机").replace(/gearbox/ig,"齿轮箱").replace(/planetary/ig,"行星").replace(/intermediate[- ](?:speed[- ])?shaft/ig,"中间轴").replace(/high[- ]speed shaft/ig,"高速轴"),n=/齿轮箱/.test(s)&&!/行星|中间轴|中速|高速轴/.test(s);return`<span class="chain" title="${Y(Li(t))}">${md.map(([l,i])=>{const o=i.test(s)||n&&["ps","ims","hss"].includes(l);return`<i class="${o?"on":""}" style="${o?`background:${e};border-color:${e}`:""}" title="${a("chain."+l)}"></i>`}).join("")}</span>`};function ud(t){const e=t.能力&&t.能力.loop&&t.能力.loop["换件闭环 (检出→换件→恢复)"]?t.能力.loop:null;if(!e)return`<div class="panel mb"><p class="small">${a("fus.loop_none")}</p></div>`;const s=e["换件闭环 (检出→换件→恢复)"]||[],n=e["当前在升 (无工单可对)"]||[],l=e["负面对照 (工单后持平)"];return`<div class="panel mb"><h3>${a("fus.loop_head")}</h3><p class="small">${a("fus.loop_note")}</p>
  25. <h3 style="margin-top:8px">${a("fus.loop_closed",{n:s.length})}</h3><div class="tblwrap"><table><tr><th>${a("ui.unit")}</th><th>${a("fus.col.part")}</th><th>${a("fus.loop_item")}</th><th>${a("fus.loop_date")}</th><th>${a("fus.loop_ba")}</th><th class="r">${a("fus.loop_ratio")}</th><th>${a("fus.loop_verdict")}</th></tr>
  26. ${s.map(i=>`<tr><td><b>${pt(i.turbine)}</b></td><td>${yn(i.component+(i.title||""),"var(--good)")} <span class="small">${Ps(i.component)}</span></td><td class="small">${et(i.title)}</td><td>${Y(i.replace_date)}</td><td>${Ml(i.pre,i.post,"var(--good)")}<span class="small muted">${i.pre} → ${i.post}</span></td><td class="r"><b style="color:var(--good)">${i.ratio}×</b></td><td><span class="chip ok">${et(i.verdict)}</span></td></tr>`).join("")}</table></div>
  27. <p class="small" style="margin-top:6px">${a("fus.loop_neg",{n:l})}</p>
  28. <h3 style="margin-top:14px">${a("fus.loop_rising",{n:n.length})}</h3><div class="tblwrap"><table><tr><th>${a("ui.unit")}</th><th>${a("fus.col.part")}</th><th>${a("fus.loop_el")}</th><th class="r">${a("fus.loop_x")}</th><th>${a("fus.loop_state")}</th></tr>
  29. ${n.map(i=>`<tr><td><b>${pt(i.turbine)}</b></td><td>${yn(i.component,"var(--warning)")} <span class="small">${Ps(i.component)}</span></td><td>${Ml(i.early,i.late,"var(--warning)")}<span class="small muted">${i.early} → ${i.late}</span></td><td class="r"><b style="color:var(--warning)">${i.ratio}×</b></td><td><span class="chip warn">${a("rpt.units.rising",{r:i.ratio})}</span></td></tr>`).join("")}</table></div>
  30. <p class="small muted" style="margin-top:8px">${a("fus.loop_bound",{b:et(String(e["★数据边界"]||"").split("**").join(""))})}</p></div>`}const dd=(t,e,s,n)=>{if(e==null)return`<span class="small">${et(Li(n).slice(0,30))}</span>`;const l=6,i=104,o=i/2,r=Math.max(-1,Math.min(1,e/l)),u=Math.abs(r)*(o-8),f=Math.abs(e)>=3?/候选|andidate/.test(s||"")?"var(--warning)":/记基线|aseline/.test(s||"")?"var(--accent)":/不可判|返服|ndeterm/.test(s||"")?"var(--unknown)":"var(--muted)":"var(--muted)",v=Math.abs(e)>l;return`<div title="${Y(n||"")}" style="display:flex;align-items:center;gap:7px"><svg class="dt" viewBox="0 0 ${i} 18" style="width:${i}px;height:18px;flex:none"><line x1="4" y1="9" x2="${i-4}" y2="9" stroke="var(--line)" stroke-opacity=".7"/><line x1="${o}" y1="1" x2="${o}" y2="17" stroke="var(--muted)" stroke-opacity=".6"/><rect x="${e>=0?o:o-u}" y="4" width="${Math.max(u,1.5)}" height="10" rx="2" fill="${f}" fill-opacity=".9"/>${v?`<path d="M${e>0?i-5:5},9 l${e>0?-5:5},-4 v8 z" fill="${f}"/>`:""}</svg><b class="small num" style="color:${f}">${e>0?"+":""}${e}K</b></div><div class="small muted" style="margin-top:1px">${Y(t||"")}</div>`},fd=(t,e)=>{if(!t||!t.length)return`<span class="small" title="${Y(e||"")}">${a("fus.win_none")}</span>`;const s=Date.parse("2026-01-01"),n=Date.parse("2026-09-01"),l=118,i=o=>3+Math.max(0,Math.min(1,(Date.parse(o)-s)/(n-s)))*(l-6);return`<div title="${Y(e||"")}"><svg class="dt" viewBox="0 0 ${l} 18" style="width:${l}px;height:18px"><rect x="3" y="4" width="${l-6}" height="10" rx="2" fill="var(--line)" fill-opacity=".5"/>${t.map(([o,r])=>{const u=i(o),_=i(r);return`<rect x="${u.toFixed(1)}" y="4" width="${Math.max(_-u,2.5).toFixed(1)}" height="10" rx="2" fill="var(--accent)" fill-opacity=".8"/>`}).join("")}</svg><div class="small muted">${a("fus.win_n",{n:t.length})}</div></div>`},pd=(t,e,s)=>`<div title="${Y(s||"")}" style="display:flex;align-items:center;gap:6px"><i style="width:9px;height:9px;border-radius:50%;flex:none;background:${e?"var(--good)":"var(--unknown)"}"></i><span class="small num">${Y(t||a("fus.oil_none"))}</span></div><div class="small muted">${t?a(e?"fus.oil_fresh":"fus.oil_stale"):"—"}</div>`,Ce=(t,e)=>{const s=Nn(t);return s?`<span class="chip ${s} ">${a(Hn(s))}</span>`:t?`<span class="chip">${Y(t)}</span>`:""};function hd(t,e){const s=t.表||[],n=t.矩阵||[];let l=s,o=`<div class="panel mb"><h3>${a("fus.units_head",{u:new Set(s.map(r=>r.turbine)).size,n:l.length+"",f:""})}</h3>
  31. <div style="display:flex;gap:8px;margin:8px 0 12px;flex-wrap:wrap">${["bad","warn","note","ok"].map(r=>`<button class="pill ${e===r?"on":""}" data-ffilter="${r}">${a("fus.lv."+r)}</button>`).join("")}<button class="pill " data-ffilter="unlisted">${a("fus.unlisted_link",{n:n.filter(r=>(r.振动||{}).level==="unlisted").length})}</button></div>
  32. <div class="panel" style="border-left:3px solid var(--accent);margin-bottom:12px"><b class="small">${a("fus.eval_head")}</b><div class="tblwrap"><table style="margin-top:8px"><tr><th style="width:30%">${a("fus.eval_state")}</th><th style="width:30%">${a("fus.eval_tier")}</th><th>${a("fus.eval_meaning")}</th></tr>
  33. <tr><td>${Ce("危险")}</td><td><span class="tier confirmed">${a("tier.confirmed.s")}</span></td><td class="small">${a("fus.m.bad")} <span class="muted">(${a("fus.m.bad_e")})</span></td></tr>
  34. <tr><td>${Ce("报警")}</td><td><span class="tier near">${a("tier.near")}</span> / <span class="tier candidate">${a("tier.candidate_new")}</span></td><td class="small">${a("fus.m.warn")} <span class="muted">(${a("fus.m.warn_e")})</span></td></tr>
  35. <tr><td>${Ce("良好")}</td><td><span class="tier candidate">${a("tier.candidate")}</span> / <span class="tier candidate">${a("tier.candidate_baseline")}</span></td><td class="small">${a("fus.m.ok")} <span class="muted">(${a("fus.m.ok_e")})</span></td></tr>
  36. <tr><td>${Ce("优秀")}</td><td><span class="tier reference">${a("tier.reference")}</span> / <span class="tier reference">${a("tier.normal")}</span> / <span class="tier withdrawn">${a("tier.withdrawn")}</span></td><td class="small">${a("fus.m.ex")} <span class="muted">(${a("fus.m.ex_e")})</span></td></tr>
  37. <tr><td>${Ce("不可判")}</td><td><span class="tier insufficient">${a("tier.insufficient")}</span></td><td class="small">${a("fus.m.unk")} <span class="muted">(${a("fus.m.unk_e")})</span></td></tr></table></div><p class="small muted" style="margin-top:7px">${a("fus.eval_note")}</p></div>
  38. <div class="tblwrap"><table><tr><th>${a("ui.unit")}</th><th>${a("fus.col.part")}</th><th>${a("fus.col.state_concl")}</th><th>${a("fus.col.claim")} <span class="small muted" style="font-weight:400">${a("fus.col.claim_axis")}</span></th><th>${a("fus.col.signal")}</th><th>${a("fus.col.tempaxis")} <span class="small muted" style="font-weight:400">${a("fus.col.tempaxis_note")}</span></th><th>${a("fus.col.oil")}</th></tr>`;return l.forEach(r=>{const u=Wi[r.级]||"var(--accent)",_=Bi[r.设备状态]||"var(--muted)";o+=`<tr><td><a href="/turbine/${r.turbine}"><b>${pt(r.turbine)}</b></a></td><td style="min-width:200px">${yn(r.部件,u)} <span class="small">${Ps(r.部件)}</span></td>
  39. <td title="${Y(De(r.振动结论))}">${Ki(ge(r.设备状态||"—"),et(r.振动结论),_)}</td><td style="min-width:130px">${fd(r.窗区间,r.claim_window)}</td>
  40. <td class="small" title="${Y(r.振动信号||"")}">${et(De(r.振动信号))}</td><td style="min-width:158px">${dd(r.温度通道,r.温度dev,r.温度判,r.温度轴)}</td><td style="min-width:112px">${pd(r.油末样,r.油新鲜,r.油样轴)}</td></tr>`}),o+"</table></div></div>"}const md=[["mbf",/主轴承[((]前|主轴承前|主轴承[++]|主轴承(?![((前后])/],["mba",/主轴承[((]后|主轴承后/],["ps",/行星|二级行星/],["ims",/中间轴|中速/],["hss",/高速轴|高速(?!.*发电)/],["gde",/发电机DE|发电机[((]|发电机(?!NDE)/],["gnde",/发电机NDE|NDE/]],Je=t=>Ri[Nn(t)]||null,Tl=t=>`<span class="chain">${Object.entries(t).map(([e,s])=>`<i class="${s?"on":""}" style="${s?`background:${s};border-color:${s}`:""}" title="${a("chain."+e)}"></i>`).join("")}</span>`,_d=t=>{const e=String(t||""),s=/准定论|near[- ](?:conf|establish)/i.test(e)?3:/确诊|onfirmed/.test(e)?4:/定论|ettled|stablished/.test(e)?3:/候选|andidate/.test(e)?2:/参考|eference/.test(e)?1:0,n=s>=4?"var(--critical)":s===3?"var(--warning)":s===2?"var(--accent)":s===1?"var(--muted)":"var(--unknown)";return`<div style="display:flex;align-items:center;gap:7px"><svg class="dt" viewBox="0 0 62 20" style="width:62px;height:20px;flex:none">${[0,1,2,3].map(l=>`<rect x="${2+l*15}" y="${12-l*3}" width="11" height="${6+l*3}" rx="1.5" fill="${l<s?n:"none"}" fill-opacity=".9" stroke="${n}" stroke-opacity="${l<s?1:.4}" ${l>=s?'stroke-dasharray="2 1.5"':""}/>`).join("")}</svg><span class="small" style="color:${n}">${et(e)}</span></div>`};function gd(t,e){if(!t.事件)return`<div class="panel mb"><p class="small muted">${a("ui.empty")}</p></div>`;let s=`<div class="panel mb"><p class="small muted"><b>${a("fus.ev_win",{win:we(e.win)})}</b></p></div>`;for(const[n,l]of Object.entries(t.事件)){const i=l,o=i.报警||{},r=i.工单||{};s+=`<div class="panel mb"><h3>${a("fus.ev_head",{c:ye(n),an:o.总条数||0,au:o.台数||0,wn:r.总条数||0,wu:r.台数||0})}</h3>`,o.总条数>0?s+=`<div class="tblwrap"><table><tr><th>${a("fus.ev_code")}</th><th>${a("fus.ev_text")}</th><th class="r">${a("ui.count")}</th><th class="r">${a("fus.ev_units")}</th><th class="r">${a("fus.ev_dur")}</th></tr>${(o.码统计||[]).map(u=>`<tr><td>${Y(u.code)}</td><td class="small">${et(De(u.text))}</td><td class="r">${u.条数}</td><td class="r">${u.台数}</td><td class="r">${u.时长h}</td></tr>`).join("")}</table></div>
  41. <p class="small">${a("fus.ev_top")}${Object.entries(o.top台||{}).map(([u,_])=>`<a href="/turbine/${u}">${pt(u)}</a>×${_}`).join(" · ")}</p>
  42. <details><summary class="small">${a("fus.ev_recent",{n:(o.近况||[]).length})}</summary><div class="tblwrap"><table><tr><th>${a("ui.unit")}</th><th>${a("fus.ev_time")}</th><th>${a("fus.ev_code")}</th><th>${a("fus.ev_text")}</th><th class="r">${a("fus.ev_min")}</th></tr>${(o.近况||[]).map(u=>`<tr><td>${pt(u.t)}</td><td class="small">${Y(u.on)}</td><td>${Y(u.code)}</td><td class="small">${et(De(u.text))}</td><td class="r">${u.dur_min??"—"}</td></tr>`).join("")}</table></div></details>`:s+=`<p class="small">${a("fus.ev_no_alarm")}</p>`,r.总条数>0?s+=`<div class="tblwrap"><table style="margin-top:8px"><tr><th>${a("ui.unit")}</th><th>${a("ui.date")}</th><th>${a("fus.ev_wo_name")}</th><th>${a("fus.ev_wo_act")}</th><th>${a("fus.ev_wo_cause")}</th></tr>${(r.明细||[]).map(u=>`<tr><td>${pt(u.t)}</td><td class="small">${Y(u.date)}</td><td class="small">${et(u.name)}</td><td class="small">${et(u.act)}</td><td class="small">${et(u.cause)}</td></tr>`).join("")}</table></div>`:s+=`<p class="small">${a("fus.ev_no_wo")}</p>`,s+="</div>"}return s}function vd(t,e){if(!t)return`<div class="panel mb"><p class="small muted">${a("fus.cms_loading")}</p></div>`;if(t.error)return`<div class="panel mb"><p class="small" style="color:var(--critical)">${et(t.error)}</p></div>`;const s={主轴承前:"mbf",主轴承后:"mba",齿轮箱:"gb",发电机:"gen",发电机DE:"gde",发电机NDE:"gnde","Main bearing, front":"mbf","Main bearing, rear":"mba",Gearbox:"gb",Generator:"gen","Generator DE":"gde","Generator NDE":"gnde"};return`<div class="panel mb"><h3>${a("fus.cms_head",{d:Y(t.date||"")})}</h3>
  43. ${t.时间范围?`<p class="small" style="margin:2px 0 6px">${a("fus.cms_window",{r:Y(t.时间范围)})}</p>`:""}
  44. <p class="small">${et(t.overall||"")} ${a("fus.cms_note")}</p>
  45. <h3 style="margin-top:10px">${a("fus.cms_action")}</h3><div class="tblwrap"><table><tr><th>${a("ui.unit")}</th><th>${a("fus.loop_state")}</th><th>${a("fus.cms_focus")} <span class="small muted" style="font-weight:400">${a("fus.cms_focus_note")}</span></th><th>${a("fus.cms_evidence")}</th><th>${a("fus.cms_act")}</th></tr>
  46. ${(t.action||[]).map(n=>{const l={};return String(n[2]).split(/[;;]/).forEach(i=>{const o=i.split(/[::]/);if(o.length>1){const r=s[o[0].trim()]||null;r&&(l[r]=Je(o[1].trim()))}}),`<tr><td><b>${pt(n[0])}</b></td><td>${Ce(n[1])}</td><td title="${Y(n[2])}">${Tl(l)} <span class="small muted">${et(n[2])}</span></td><td style="min-width:150px">${_d(n[3])}</td><td>${/P0/.test(n[4])?`<b style="color:var(--critical)">${Y(n[4])}</b>`:Y(n[4])}</td></tr>`}).join("")}</table></div>
  47. <h3 style="margin-top:14px">${a("fus.cms_grades")}</h3><div class="tblwrap"><table><tr><th>${a("ui.unit")}</th><th>${a("fus.cms_chain")} <span class="small muted" style="font-weight:400">${a("fus.cms_chain_note")}</span></th><th>${a("fus.cms_overall")}</th><th>${a("fus.cms_act")}</th></tr>
  48. ${(t.grades||[]).map(n=>`<tr><td><b>${pt(n.t)}</b></td><td title="${a("chain.mbf")} ${ge(n.主轴承前)} · ${a("chain.mba")} ${ge(n.主轴承后)} · ${a("chain.gb")} ${ge(n.齿轮箱)} · ${a("chain.gen")} ${ge(n.发电机)}">${Tl({mbf:Je(n.主轴承前),mba:Je(n.主轴承后),gb:Je(n.齿轮箱),gen:Je(n.发电机)})}</td><td>${Ce(n.综合)}</td><td class="small">${Y(n.行动)}</td></tr>`).join("")}</table></div>
  49. <div class="small" style="margin-top:12px;padding:10px;border:1px solid var(--line);border-radius:8px"><b>${a("fus.cms_basis")}</b> ${a("fus.cms_basis_note",{a:((t.diff||{}).only_cms||[]).map(pt).join(", ")||a("fus.none_word"),b:((t.diff||{}).only_vibration_package||(t.diff||{}).only_handoff||[]).map(pt).join(", ")||a("fus.none_word")})}</div>
  50. <p class="small muted" style="margin-top:10px">${a("fus.cms_link")} <a href="http://localhost:8030/index.html" target="_blank" rel="noopener">${a("fus.cms_open")}</a> <a href="/windcms/index.html" target="_blank" rel="noopener">${a("fus.cms_static")}</a></p></div>`}const bd=["matrix","loop","units","events","cms"],yd={class:"eyebrow"},$d={style:{display:"flex",gap:"8px","margin-bottom":"14px","flex-wrap":"wrap"}},wd=["data-fsub","onClick"],xd=["innerHTML"],kd=Vt({__name:"Vibration",props:{d:{},sub:{},cms:{}},emits:["sub"],setup(t,{emit:e}){const s=t,n=e,l=P(()=>s.sub||"matrix"),i=P(()=>s.d?.fus),o=P(()=>{const r=i.value;return!r||r.err?`<section><div class="panel"><p>${a("fus.unavailable",{e:String(r&&r.err||"")})}</p></div></section>`:l.value==="matrix"?cd(r):l.value==="loop"?ud(r):l.value==="units"?hd(r,null):l.value==="events"?gd(r,s.d):l.value==="cms"?vd(s.cms??null):`<div class="panel mb"><p class="small muted">子视图「${a("fus.sub."+l.value)}」尚未迁移到 Vue(迁移中)。</p></div>`});return(r,u)=>(x(),E("section",null,[c("div",yd,h(m(a)("fus.eyebrow")),1),c("div",$d,[(x(!0),E(V,null,at(m(bd),_=>(x(),E("button",{key:_,class:Tt(["pill",{on:_===l.value}]),"data-fsub":_,onClick:f=>n("sub",_)},h(m(a)("fus.sub."+_)),11,wd))),128))]),c("div",{innerHTML:o.value},null,8,xd)]))}}),Sd={class:"eyebrow"},Md={class:"panel mb small",style:{"border-left":"3px solid var(--accent)"}},Td={class:"muted",style:{"margin-top":"3px"}},Cd={key:0,class:"panel mb",style:{"border-left":"3px solid var(--critical)"}},Ed={class:"small"},Ad={class:"small muted",style:{"font-weight":"400"}},Od={key:0,class:"chip"},Dd={style:{display:"flex","flex-wrap":"wrap",gap:"18px"}},Pd={style:{flex:"1 1 300px","min-width":"280px"}},Fd={class:"small",style:{"font-weight":"600","margin-bottom":"4px"}},jd={class:"small muted",style:{"margin-top":"4px"}},Id={style:{flex:"1 1 300px","min-width":"280px"}},qd={class:"small",style:{"font-weight":"600","margin-bottom":"4px"}},Nd=["innerHTML"],Hd={class:"small",style:{"font-weight":"600",margin:"12px 0 4px"}},Ld={class:"small muted",style:{"margin-top":"4px"}},Rd={key:2,class:"panel mb"},Bd={class:"small muted",style:{"font-weight":"400"}},Wd=["innerHTML"],Kd={class:"eyebrow"},Ud={key:3,class:"panel",style:{"border-left":"3px solid var(--critical)"}},Vd={class:"small"},Gd={key:4,class:"panel",style:{"border-left":"3px solid var(--accent)"}},zd={class:"small"},Jd={key:5,class:"panel"},Yd={class:"small muted"},Zd={key:6,class:"grid2"},Xd={key:0},Qd={class:"small muted",style:{"font-weight":"400"}},tf={class:"legend",style:{"margin-top":"6px","flex-wrap":"wrap"}},ef={key:0,class:"small muted",style:{"margin-top":"6px"}},sf=Vt({__name:"Generation",props:{d:{},curves:{},pending:{type:Boolean}},setup(t){const e=t,s=P(()=>e.d?.m9&&!e.d.m9.err?e.d.m9:null),n=P(()=>e.d?.control||null),l=P(()=>e.curves||null),i=P(()=>(e.d?.sysmx_span||[]).join(" ~ ")||""),o=T=>{const N=Object.entries(T?.分组||{}).map(([Z,mt])=>({v:parseFloat(Z),n:mt,raw:Z}));if(!N.length)return null;const O=N.map(Z=>Z.v).sort((Z,mt)=>Z-mt),H=O.length%2?O[(O.length-1)/2]:(O[O.length/2-1]+O[O.length/2])/2;return{gs:N,med:H}},r=P(()=>({p:o(s.value?.P封顶),w:o(s.value?.ω封顶)})),u=P(()=>{const T=r.value.p,N=r.value.w,O=[];return T&&O.push({name:a("ch.cap.p"),type:"scatter",data:T.gs.map(H=>[H.v,1]),symbolSize:10,itemStyle:{color:"#0b5fa5",opacity:.6}}),N&&O.push({name:a("ch.cap.w"),type:"scatter",data:N.gs.map(H=>[H.v,0]),symbolSize:10,itemStyle:{color:"#b45309",opacity:.6}}),{grid:{left:56,right:36,top:20,bottom:24},xAxis:{type:"value"},yAxis:{type:"value",min:-.5,max:1.5,show:!1},series:O,__data__:[]}}),_=P(()=>s.value?.β_schedule?.离群||[]),f=P(()=>s.value?.β_schedule?.全场同档差中位||0),v=P(()=>({grid:{left:56,right:60,top:20,bottom:24},xAxis:{type:"value"},yAxis:{type:"category",data:_.value.map(T=>pt(T.t))},series:[{type:"bar",data:_.value.map(T=>T.平均偏),itemStyle:{color:"#0b5fa5"}}],__data__:[]})),p=P(()=>{const T=n.value?.curve?.cands||[];return T.length?T.map(N=>`<a href="/turbine/${N.t}">${pt(N.t)}</a> ${N.dev}% ${et(N.判)}`).join(" | "):a("gen.no_cands")}),b=P(()=>a("gen.beta_note",{units:_.value.map(T=>`<a href="/turbine/${T.t}">${pt(T.t)}</a>`).join(" / "),k:_.value.length?Math.round(Math.max(..._.value.map(T=>T.平均偏))/Math.max(f.value||0,.01)):"—",v:et(s.value?.β_schedule?.判)})),k=P(()=>Object.entries(s.value?.尺子||{}).map(([T,N])=>({k:T,r:N.极差/N.σ}))),w=P(()=>({grid:{left:100,right:80,top:20,bottom:24},xAxis:{type:"value"},yAxis:{type:"category",data:k.value.map(T=>T.k)},series:[{type:"bar",data:k.value.map(T=>T.r),itemStyle:{color:"#0b5fa5"}}],__data__:[]})),I=P(()=>l.value?.figs||[]);function $(T){const N=T.months||T.x||[];return{grid:{left:56,right:20,top:28,bottom:40},legend:{top:0,textStyle:{fontSize:10}},xAxis:{type:"category",data:N},yAxis:{type:"value",scale:!0},series:(T.series||[]).map(O=>({name:String(O.name),type:"line",data:O.vals,connectNulls:!1})),__data__:[]}}return(T,N)=>(x(),E("section",null,[c("div",Sd,h(m(a)("gen.eyebrow")),1),c("div",Md,[c("b",null,h(m(a)("gen.fixed_win")),1),z(" "+h(i.value?m(a)("gen.win_range",{span:i.value}):"")+" ",1),c("div",Td,h(m(a)("gen.win_why")),1)]),t.d.m9&&t.d.m9.err?(x(),E("div",Cd,[c("p",Ed,h(m(a)("flt.block_err",{k:"m9",e:m(et)(t.d.m9.err)})),1)])):ct("",!0),s.value?(x(),E("div",{key:1,class:"panel mb",style:gt(t.pending?"border-left:3px solid var(--accent)":"")},[c("h3",null,[z(h(m(a)("gen.ctrl"))+" ",1),c("span",Ad,h(m(a)("gen.ctrl_win",{win:m(et)(s.value.窗)})),1),t.pending?(x(),E("span",Od,h(m(a)("gen.recomputing_short")),1)):ct("",!0)]),c("div",Dd,[c("div",Pd,[c("div",Fd,h(m(a)("gen.cap")),1),ft(Ot,{option:u.value,height:"170px"},null,8,["option"]),c("p",jd,h(m(a)("gen.cap_note")),1)]),c("div",Id,[c("div",qd,h(m(a)("gen.beta")),1),ft(Ot,{option:v.value,height:"170px"},null,8,["option"]),c("p",{class:"small muted",style:{"margin-top":"4px"},innerHTML:b.value},null,8,Nd),c("div",Hd,h(m(a)("gen.ruler")),1),ft(Ot,{option:w.value,height:"170px"},null,8,["option"]),c("p",Ld,h(m(a)("gen.ruler_note")),1)])])],4)):ct("",!0),n.value&&n.value.curve?(x(),E("div",Rd,[c("h3",null,[z(h(m(a)("gen.cands"))+" ",1),c("span",Bd,h(m(a)("gen.cands_meta",{note:m(et)(n.value.curve.note||""),s:t.d.sigma||n.value.curve.sigma})),1)]),c("p",{class:"small",innerHTML:p.value},null,8,Wd)])):ct("",!0),c("div",Kd,h(m(a)("gen.figs")),1),l.value&&l.value.err?(x(),E("div",Ud,[c("p",Vd,h(m(Y)(l.value.err)),1)])):l.value&&l.value.building?(x(),E("div",Gd,[c("p",zd,[c("b",null,h(m(a)("gen.recomputing")),1),z(" "+h(m(et)(l.value.curves?.note||"")),1)]),N[0]||(N[0]=c("div",{class:"skel",style:{width:"60%","margin-top":"10px"}},null,-1)),N[1]||(N[1]=c("div",{class:"skel",style:{width:"80%","margin-top":"8px"}},null,-1))])):l.value?(x(),E("div",Zd,[(x(!0),E(V,null,at(I.value,(O,H)=>(x(),E("div",{key:H,class:"panel"},[c("h3",null,[z(h(m(et)(O.title||"")),1),O.unit?(x(),E("span",Xd,[c("span",Qd,"("+h(m(et)(O.unit))+")",1)])):ct("",!0)]),ft(Ot,{option:$(O),height:"260px"},null,8,["option"]),c("div",tf,[(x(!0),E(V,null,at(O.series||[],(Z,mt)=>(x(),E("span",{key:mt},[c("i",{style:gt(`background:${["var(--accent)","#D48A1E","#2E8B6A","#7C5295"][mt%4]}`)},null,4),z(h(String(Z.name)),1)]))),128))]),O.note?(x(),E("p",ef,h(m(et)(O.note)),1)):ct("",!0)]))),128))])):(x(),E("div",Jd,[c("p",Yd,h(m(a)("gen.loading")),1),N[2]||(N[2]=c("div",{class:"skel",style:{width:"60%","margin-top":"10px"}},null,-1)),N[3]||(N[3]=c("div",{class:"skel",style:{width:"80%","margin-top":"8px"}},null,-1))]))]))}}),nf={class:"eyebrow"},lf={class:"small muted"},of=["href"],rf=["innerHTML"],af={class:"panel mb"},cf={class:"small muted"},uf=["innerHTML"],df={style:{display:"flex",gap:"8px","flex-wrap":"wrap",margin:"10px 0","align-items":"center"}},ff=["placeholder","value"],pf={class:"small muted",for:"askm"},hf=["innerHTML"],mf=["innerHTML"],_f=["title"],gf={class:"muted"},vf={class:"btn",id:"askgo"},bf={id:"askout",class:"small"},yf=Vt({__name:"Decision",props:{d:{},apis:{}},setup(t){const e=t,s=[["equip","设备类"],["sched","检修排程决策"],["loss","损失分析"],["risk","安全风险预测"]],n={"qwen3:8b":"local","qwen3.8:27b":"local","qwen3:30b-a3b":"local","deepseek-r1:14b":"local","deepseek-r1:32b":"local","deepseek-chat":"cloud","kimi-fast":"cloud","qwen-plus":"cloud","deepseek-v4-pro":"cloud"},l=St("equip"),i=St(""),o=St(""),r=St(""),u=P(()=>e.apis?.["/detail/api/ask_models"]??e.apis?.["/api/ask_models"]??null),_=P(()=>u.value?u.value.models||{}:null),f=P(()=>!!u.value?.offline||!!u.value?.LOCAL_AI_DOWN),v=P(()=>a("cat."+l.value)),p=P(()=>s.map(([H])=>`<button class="pill ${H===l.value?"on":""}" data-cat="${H}">${a("cat."+H)}</button>`).join("")),b=P(()=>[1,2,3].map(H=>`<div class="qitem" data-q="${Y(a("cat."+l.value+".q"+H))}">${a("cat."+l.value+".q"+H)}</div>`).join("")),k=(H,Z)=>a("mdl."+H+"."+Z),w=H=>(k(H,"nm")||H)+(n[H]?" · "+a("mdl."+n[H]):"")+(k(H,"t")?" · "+k(H,"t"):""),I=H=>n[H]?n[H]==="local"?a("mdl.zero_outbound"):`<span style="color:var(--warning)">${a("mdl.outbound_warn")}</span>`:`<span style="color:var(--warning)">${a("mdl.unknown_warn")}</span>`,$=P(()=>{const H=_.value;if(H===null)return o.value;const Z=Object.keys(H);return!o.value||!Z.includes(o.value)?Z[0]||"":o.value}),T=P(()=>{const H=_.value;return H===null?'<option value="">…</option>':Object.keys(H).length?Object.keys(H).map(Z=>`<option value="${Y(Z)}" ${Z===$?"selected":""}>${Y(w(Z))}</option>`).join(""):`<option value="">${f.value?a("ask.local_down"):a("ask.no_models")}</option>`}),N=P(()=>`/?lang=zh&win=${encodeURIComponent(String(e.d?.win||""))}`),O=P(()=>$.value?I($.value):"");return(H,Z)=>(x(),E("section",null,[c("div",nf,h(m(a)("dec.head")),1),c("p",lf,[z(h(m(a)("dec.classic"))+" ",1),c("a",{href:N.value},h(m(a)("ui.open_classic")),9,of)]),c("div",{style:{display:"flex",gap:"8px",margin:"10px 0 12px","flex-wrap":"wrap"},innerHTML:p.value},null,8,rf),c("div",af,[c("h3",null,h(m(a)("ask.common_q",{cat:v.value})),1),c("p",cf,h(m(a)("cat."+l.value+".hint"))+h("。")+h(m(a)("ask.grounding")),1),c("div",{innerHTML:b.value},null,8,uf),c("div",df,[c("input",{id:"askq",type:"text",placeholder:m(Y)(m(a)("ask.placeholder",{cat:v.value})),value:i.value,style:{flex:"1","min-width":"280px"}},null,8,ff),c("label",pf,h(m(a)("ask.model")),1),c("select",{id:"askm",innerHTML:T.value},null,8,hf),c("span",{id:"mdlnote",class:"small",innerHTML:O.value},null,8,mf),c("label",{class:"small",style:{cursor:"pointer","white-space":"nowrap"},title:m(Y)(m(a)("ask.xrev_title"))},[Z[0]||(Z[0]=c("input",{type:"checkbox",id:"askxrev"},null,-1)),z(" "+h(m(a)("ask.xrev"))+" ",1),c("span",gf,h(m(a)("ask.xrev_note")),1)],8,_f),c("button",vf,h(m(a)("ask.go")),1)]),c("div",bf,h(r.value||m(a)("ask.idle")),1)])]))}}),$f={class:"kpis"},wf=["title"],xf=["innerHTML"],kf={key:1},Sf={key:0},Mf={class:"sechead"},Tf={class:"meta"},Cf={class:"meta"},Ef={key:0,class:"card mb",style:{"margin-bottom":"10px"}},Af={class:"small",style:{color:"var(--warning)"}},Of={class:"small muted"},Df={class:"cards"},Pf=["id"],Ff={class:"head"},jf=["href"],If={class:"sys"},qf={class:"evidence-detail"},Nf={class:"why"},Hf={class:"evid"},Lf={key:1,class:"rv"},Rf={key:0,class:"caveat"},Bf={class:"sechead"},Wf={class:"meta"},Kf={class:"legend"},Uf={class:"cells"},Vf=["data-u","title"],Gf={key:1,class:"quiet",style:{padding:"10px"}},zf={class:"nums"},Jf={class:"quiet"},Yf={class:"sechead"},Zf={class:"meta"},Xf={class:"systems"},Qf={class:"t"},tp=["href"],ep={class:"bar"},sp={class:"cnt"},np=Vt({__name:"Overview",props:{d:{}},setup(t){const e=t,s=P(()=>e.d?.fus||{}),n=P(()=>e.d?.m8?.mtbf||{}),l=P(()=>e.d?.control||{}),i=P(()=>{const w={};for(const I of l.value.states||[])w[I.k]=I.loss;return w}),o=P(()=>{const w=l.value,I=a("kpi.loss",{win:we(e.d?.win)})+(i.value["停机(调度令)"]!=null?` · ${a("kpi.loss_dispatch",{n:ot(i.value["停机(调度令)"])})}`:"");return[{v:ot(w.avail,1),u:"%",l:a("kpi.avail",{win:we(e.d?.win)}),k:w.avail>=95?"ok":"warn",ti:""},{v:ot(n.value.停机总时长h),u:"h",l:a("kpi.downtime",{n:ot(n.value.停机事件数)}),k:"warn",ti:""},{v:ot(n.value.MTBF_h),u:"h",l:a("kpi.mtbo"),k:"",ti:""},{v:ot(i.value.停机),u:"MWh",l:I,k:"",ti:""},{v:ot(i.value["限电·绑定"]),u:"MWh",l:a("kpi.curtail"),k:"",ti:""},{vRaw:`${ot(e.d?.kpi?.报警台)} <small>/ ${ot(e.d?.kpi?.全场)}</small>`,u:"",l:a("kpi.alarm_units"),k:e.d?.kpi?.报警台?"warn":"ok",ti:a("kpi.alarm_units.hint"),vHtml:!0}]}),r=P(()=>{const w={};for(const I of e.d?.watch||[])w[I.t]=I.why;return w}),u=P(()=>((s.value.链盘||{}).rows||[]).filter(w=>w.lvl==="bad"||w.lvl==="warn"));function _(w){const I=(r.value[w.t]||"").trim();if(I)return I;const $=yl[w.stuck]||String(w.stuck||"").toLowerCase(),T=a($==="evidence"?"step.site_records":"step."+($||"evidence"));return a("ov.basis_fusion",{part:w.part||"—",done:w.done==null?"—":w.done,n:(w.steps||[]).length||"—",stuck:w.stuck?T:a("ov.all_steps_done"),srcs:(w.srcs||[]).join(" / ")||a("ov.no_srcs")})}function f(w){if(!w.stuck)return"";const I=yl[w.stuck]||String(w.stuck||"").toLowerCase(),$=a(I==="evidence"?"step.site_records":"step."+(I||"evidence"));return a("step.stuck_at",{step:$})}const v=[["危险","critical"],["报警","warning"],["不可判","unknown"],["良好","good"],["优秀","excellent"]],p=P(()=>{const w=e.d?.sysdist||{};return qn.map(I=>{const $=w[I]||{},T=Object.values($).reduce((N,O)=>N+O,0)||1;return{name:ye(I),slug:Ni(I),dist:$,n:T,seg:v.filter(([N])=>$[N]).map(([N,O])=>({k:N,v:O}))}})}),b=P(()=>s.value.矩阵||[]),k=P(()=>new Set(u.value.map(w=>w.t)));return(w,I)=>(x(),E(V,null,[c("section",null,[c("div",$f,[(x(!0),E(V,null,at(o.value,($,T)=>(x(),E("div",{key:T,class:Tt(["kpi",$.k]),title:$.ti||void 0},[$.vHtml?(x(),E("b",{key:0,innerHTML:$.vRaw},null,8,xf)):(x(),E("b",kf,[z(h($.v),1),$.u?(x(),E("small",Sf,h($.u),1)):ct("",!0)])),c("span",null,h($.l),1)],10,wf))),128))])]),c("section",null,[c("div",Mf,[c("h2",null,h(m(a)("ov.attention")),1),c("span",Tf,h(m(a)("ov.attention_n",{n:u.value.length})),1),c("span",Cf,h(m(a)("ov.ranked_by")),1)]),s.value.gap?(x(),E("div",Ef,[c("p",Af,h(s.value.gap),1),c("p",Of,h(m(a)("ov.fus_gap_hint")),1)])):ct("",!0),c("div",Df,[(x(!0),E(V,null,at(u.value,$=>(x(),E("div",{key:$.t,class:"card",id:`u-${$.t}`,style:gt(`--sev:var(--${m(xl)[m(Os)($.ostate)||($.lvl==="bad"?"bad":"warn")]})`)},[c("div",Ff,[c("a",{class:"unit",href:`/turbine/${$.t}`},h(m(pt)($.t)),9,jf),c("span",If,h($.part||""),1),c("span",{class:Tt(["chip",m(Os)($.ostate)||($.lvl==="bad"?"bad":"warn")])},h(m($l)($.ostate||($.lvl==="bad"?"危险":"报警"))),3)]),c("details",qf,[c("summary",null,h(m(a)("ov.evidence")),1),c("div",Nf,h(_($)),1)]),c("div",Hf,[$.estate?(x(),E("span",{key:0,class:Tt(["tier",$.estate])},h(m($l)($.estate)),3)):ct("",!0),$.srcs&&$.srcs.length?(x(),E("span",Lf,h($.srcs.length)+" sources",1)):ct("",!0)]),f($)||$.next?(x(),E("div",Rf,[c("b",null,h(m(a)("ov.caveat")),1),z(h(f($))+h(f($)&&$.next?" — ":"")+h($.next||""),1)])):ct("",!0)],12,Pf))),128))])]),c("section",null,[c("div",Bf,[c("h2",null,h(m(a)("ov.strip")),1),c("span",Wf,h(m(a)("ov.strip_hint")),1),c("div",Kf,[(x(),E(V,null,at(["bad","warn","unk","ok","ex"],$=>c("span",{key:$},[c("i",{style:gt(`background:var(--${m(xl)[$]})`)},null,4),z(h(m(a)(m(bn)($))),1)])),64))])]),c("div",{class:"strip",style:gt(`--n:${b.value.length||38}`)},[c("div",Uf,[b.value.length?(x(!0),E(V,{key:0},at(b.value,$=>(x(),E("div",{key:$.turbine,class:Tt(["cell",[m(wl)($),k.value.has($.turbine)?"hot":""]]),"data-u":$.turbine,title:`${m(pt)($.turbine)} ${m(a)(m(bn)(m(wl)($)))}`},null,10,Vf))),128)):(x(),E("div",Gf,h(s.value.gap||m(a)("ov.fus_gap_hint")),1))]),c("div",zf,[(x(!0),E(V,null,at(b.value,$=>(x(),E("span",{key:`n-${$.turbine}`,class:Tt(k.value.has($.turbine)?"hot":"")},h(m(pt)($.turbine).replace("#","")),3))),128))]),c("div",Jf,h(u.value.length?m(a)("ov.quiet",{n:Math.max(0,(b.value.length||38)-u.value.length)}):m(a)("ov.quiet_all",{n:b.value.length||38})),1)],4)]),c("section",null,[c("div",Yf,[c("h2",null,h(m(a)("ov.systems")),1),c("span",Zf,h(m(a)("ov.systems_hint")),1)]),c("div",Xf,[(x(!0),E(V,null,at(p.value,$=>(x(),E("div",{key:$.name,class:"sysc"},[c("div",Qf,[c("b",null,h($.name),1),c("a",{href:`#tab=component&sys=${encodeURIComponent($.slug)}`},h(m(a)("ui.open")),9,tp)]),c("div",ep,[(x(!0),E(V,null,at($.seg,T=>(x(),E("i",{key:T.k,style:gt(`width:${($.dist[T.k]/$.n*100).toFixed(1)}%;background:var(--${T.v})`)},null,4))),128))]),c("div",sp,[(x(!0),E(V,null,at($.seg,T=>(x(),E("span",{key:`c-${T.k}`},[c("i",{style:gt(`background:var(--${T.v})`)},null,4),z(h($.dist[T.k]),1)]))),128))])]))),128))])])],64))}}),lp={class:"wb-tabs"},ip=["onClick"],op={key:0,class:"todo"},rp={class:"page-head"},ap={class:"window-badge"},cp={key:7,class:"card"},up={class:"hint"},dp=Vt({__name:"Workbench",props:{d:{},tab:{},sys:{},sub:{},cms:{},curves:{},apis:{}},emits:["tab","sub"],setup(t,{emit:e}){const s=t,n=e,l=P(()=>!on.includes(s.tab));return(i,o)=>(x(),E(V,null,[c("nav",lp,[(x(!0),E(V,null,at(m(ya),r=>(x(),E("button",{key:r,class:Tt({on:r===t.tab}),onClick:u=>n("tab",r)},[z(h(m(a)("tab."+r)),1),m(on).includes(r)?ct("",!0):(x(),E("sup",op,"迁移中"))],10,ip))),128))]),c("div",rp,[c("h1",null,h(m(a)("tab."+t.tab)),1),c("span",ap,h(m(a)("win.label"))+" · "+h(m(we)(t.d?.win)),1)]),t.tab==="overview"?(x(),Xt(np,{key:0,d:t.d},null,8,["d"])):t.tab==="energy"?(x(),Xt(uu,{key:1,d:t.d},null,8,["d"])):t.tab==="component"?(x(),Xt(Ic,{key:2,d:t.d,sys:t.sys},null,8,["d","sys"])):t.tab==="fault"?(x(),Xt(ed,{key:3,d:t.d},null,8,["d"])):t.tab==="vibration"?(x(),Xt(kd,{key:4,d:t.d,sub:t.sub,cms:t.cms,onSub:o[0]||(o[0]=r=>n("sub",r))},null,8,["d","sub","cms"])):t.tab==="generation"?(x(),Xt(sf,{key:5,d:t.d,curves:t.curves,pending:!!t.d.m9_pending},null,8,["d","curves","pending"])):t.tab==="decision"?(x(),Xt(yf,{key:6,d:t.d,apis:t.apis},null,8,["d","apis"])):l.value?(x(),E("section",cp,[c("h2",null,[z(h(m(a)("tab."+t.tab))+" ",1),o[1]||(o[1]=c("small",null,"(本页签尚未迁移到 Vue)",-1))]),c("p",up,[o[2]||(o[2]=z(" 迁移纪律:页签逐个搬,每搬一个就用 ",-1)),o[3]||(o[3]=c("code",null,"tools/render_parity.mjs",-1)),o[4]||(o[4]=z(" 与重构前页面 (现网 ",-1)),o[5]||(o[5]=c("code",null,"/detail/v2",-1)),z(")对拍文案/数值/类名序列,**通过后**才删对应的 Python 前端源码。 当前已迁移:"+h(m(on).join("、"))+"。 ",1)])])):ct("",!0)],64))}}),fp=Hi(dp,[["__scopeId","data-v-c45596c5"]]),pp={class:"top"},hp={key:0,class:"hint",style:{padding:"0 18px"}},mp={key:1,class:"hint",style:{padding:"0 18px",color:"var(--bad)"}},_p={key:2,class:"card"},gp=Vt({__name:"App",setup(t){const e=St("workbench"),s=St("overview"),n=St(null),l=St(null),i=St(""),o=St(!1),r=St("");async function u(){o.value=!0,r.value="";const _=i.value?`?win=${encodeURIComponent(i.value)}`:"",f=await Ii("fleet",{method:"GET"});if(_)try{const v=await fetch("/api/fleet"+_);l.value=await v.json()}catch(v){r.value=v instanceof Error?v.message:String(v)}else f.ok?(l.value=f.data,l.value?.win&&(i.value=l.value.win)):r.value=f.error||`HTTP ${f.status}`;o.value=!1}return es(i,_=>{_&&_!==l.value?.win&&u()}),Ws(u),(_,f)=>(x(),E(V,null,[c("header",pp,[f[5]||(f[5]=c("div",{class:"brand"},"观澜 · 风电数据分析与决策支持",-1)),c("nav",null,[c("button",{class:Tt({on:e.value==="workbench"}),onClick:f[0]||(f[0]=v=>e.value="workbench")},"工作台",2),c("button",{class:Tt({on:e.value==="smoke"}),onClick:f[1]||(f[1]=v=>e.value="smoke")},"契约自检",2),c("button",{class:Tt({on:e.value==="about"}),onClick:f[2]||(f[2]=v=>e.value="about")},"关于本前端",2)])]),c("main",null,[e.value==="workbench"?(x(),E(V,{key:0},[o.value?(x(),E("p",hp,"取数中(/api/fleet)…")):r.value?(x(),E("p",mp,"取数失败:"+h(r.value),1)):l.value?(x(),Xt(fp,{key:2,d:l.value,tab:s.value,sub:n.value,onTab:f[3]||(f[3]=v=>s.value=v),onSub:f[4]||(f[4]=v=>n.value=v)},null,8,["d","tab","sub"])):ct("",!0)],64)):e.value==="smoke"?(x(),Xt(va,{key:1})):(x(),E("section",_p,[...f[6]||(f[6]=[Er("<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))}});da(gp).mount("#app");