diff --git a/main.py b/main.py index 857c3f9..1546e3a 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,8 @@ import os import requests -from flask import Flask, render_template, request, redirect, url_for, session,make_response,send_from_directory +from flask import Flask, render_template, request, redirect, url_for, session,make_response,send_from_directory,jsonify from werkzeug.routing import BaseConverter +from utils.login import login_quark app = Flask(__name__) #app = Flask(__name__,template_folder='templates') #修改模板目录 @@ -50,7 +51,19 @@ def demo2(): resp.status = '404 not found' return resp +@app.route('/login',methods=['POST']) +def login(): + # 获取POST请求中的JSON数据 + data = request.get_json() + token = data.get('token') + if not token: + print('缺少token参数') + status = login_quark(token) + return jsonify({"status": status}) if __name__ == "__main__": app.config.from_pyfile("config.py") - app.run(host="0.0.0.0") \ No newline at end of file + app.run(host="0.0.0.0") + + + diff --git a/static/assets/index-BGnqF1DV.css b/static/assets/index-BGnqF1DV.css deleted file mode 100644 index 2480594..0000000 --- a/static/assets/index-BGnqF1DV.css +++ /dev/null @@ -1 +0,0 @@ -:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.card{padding:2em}#app{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.read-the-docs[data-v-830e400e]{color:#888}.logo[data-v-962047bb]{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo[data-v-962047bb]:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.vue[data-v-962047bb]:hover{filter:drop-shadow(0 0 2em #42b883aa)} diff --git a/static/assets/index-i7anWEo5.js b/static/assets/index-i7anWEo5.js deleted file mode 100644 index 6884644..0000000 --- a/static/assets/index-i7anWEo5.js +++ /dev/null @@ -1,17 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function s(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=s(r);fetch(r.href,i)}})();/** -* @vue/shared v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function vs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const U={},Xe=[],Se=()=>{},Ar=()=>!1,Ut=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ss=e=>e.startsWith("onUpdate:"),ne=Object.assign,ws=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Pr=Object.prototype.hasOwnProperty,H=(e,t)=>Pr.call(e,t),P=Array.isArray,Qe=e=>Bt(e)==="[object Map]",yn=e=>Bt(e)==="[object Set]",R=e=>typeof e=="function",J=e=>typeof e=="string",Le=e=>typeof e=="symbol",q=e=>e!==null&&typeof e=="object",vn=e=>(q(e)||R(e))&&R(e.then)&&R(e.catch),Sn=Object.prototype.toString,Bt=e=>Sn.call(e),Rr=e=>Bt(e).slice(8,-1),wn=e=>Bt(e)==="[object Object]",Ts=e=>J(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ct=vs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Kt=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Mr=/-(\w)/g,He=Kt(e=>e.replace(Mr,(t,s)=>s?s.toUpperCase():"")),Ir=/\B([A-Z])/g,Ye=Kt(e=>e.replace(Ir,"-$1").toLowerCase()),Tn=Kt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Xt=Kt(e=>e?`on${Tn(e)}`:""),Fe=(e,t)=>!Object.is(e,t),Qt=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},Fr=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Gs;const Wt=()=>Gs||(Gs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Cs(e){if(P(e)){const t={};for(let s=0;s{if(s){const n=s.split(Hr);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Es(e){let t="";if(J(e))t=e;else if(P(e))for(let s=0;s!!(e&&e.__v_isRef===!0),cs=e=>J(e)?e:e==null?"":P(e)||q(e)&&(e.toString===Sn||!R(e.toString))?On(e)?cs(e.value):JSON.stringify(e,An,2):String(e),An=(e,t)=>On(t)?An(e,t.value):Qe(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,r],i)=>(s[kt(n,i)+" =>"]=r,s),{})}:yn(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>kt(s))}:Le(t)?kt(t):q(t)&&!P(t)&&!wn(t)?String(t):t,kt=(e,t="")=>{var s;return Le(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/** -* @vue/reactivity v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let fe;class Vr{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=fe,!t&&fe&&(this.index=(fe.scopes||(fe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t0)return;if(at){let t=at;for(at=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;ut;){let t=ut;for(ut=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function In(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Fn(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),Ps(n),Br(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function us(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Dn(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Dn(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===_t))return;e.globalVersion=_t;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!us(e)){e.flags&=-3;return}const s=V,n=ae;V=e,ae=!0;try{In(e);const r=e.fn(e._value);(t.version===0||Fe(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{V=s,ae=n,Fn(e),e.flags&=-3}}function Ps(e,t=!1){const{dep:s,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let i=s.computed.deps;i;i=i.nextDep)Ps(i,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Br(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let ae=!0;const Hn=[];function je(){Hn.push(ae),ae=!1}function Ne(){const e=Hn.pop();ae=e===void 0?!0:e}function Js(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=V;V=void 0;try{t()}finally{V=s}}}let _t=0;class Kr{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Rs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!V||!ae||V===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==V)s=this.activeLink=new Kr(V,this),V.deps?(s.prevDep=V.depsTail,V.depsTail.nextDep=s,V.depsTail=s):V.deps=V.depsTail=s,Ln(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=V.depsTail,s.nextDep=void 0,V.depsTail.nextDep=s,V.depsTail=s,V.deps===s&&(V.deps=n)}return s}trigger(t){this.version++,_t++,this.notify(t)}notify(t){Os();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{As()}}}function Ln(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Ln(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const as=new WeakMap,Ge=Symbol(""),ds=Symbol(""),mt=Symbol("");function Z(e,t,s){if(ae&&V){let n=as.get(e);n||as.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new Rs),r.map=n,r.key=s),r.track()}}function Ee(e,t,s,n,r,i){const o=as.get(e);if(!o){_t++;return}const f=u=>{u&&u.trigger()};if(Os(),t==="clear")o.forEach(f);else{const u=P(e),h=u&&Ts(s);if(u&&s==="length"){const a=Number(n);o.forEach((p,w)=>{(w==="length"||w===mt||!Le(w)&&w>=a)&&f(p)})}else switch((s!==void 0||o.has(void 0))&&f(o.get(s)),h&&f(o.get(mt)),t){case"add":u?h&&f(o.get("length")):(f(o.get(Ge)),Qe(e)&&f(o.get(ds)));break;case"delete":u||(f(o.get(Ge)),Qe(e)&&f(o.get(ds)));break;case"set":Qe(e)&&f(o.get(Ge));break}}As()}function ze(e){const t=D(e);return t===e?t:(Z(t,"iterate",mt),de(e)?t:t.map(ee))}function Ms(e){return Z(e=D(e),"iterate",mt),e}const Wr={__proto__:null,[Symbol.iterator](){return ts(this,Symbol.iterator,ee)},concat(...e){return ze(this).concat(...e.map(t=>P(t)?ze(t):t))},entries(){return ts(this,"entries",e=>(e[1]=ee(e[1]),e))},every(e,t){return Te(this,"every",e,t,void 0,arguments)},filter(e,t){return Te(this,"filter",e,t,s=>s.map(ee),arguments)},find(e,t){return Te(this,"find",e,t,ee,arguments)},findIndex(e,t){return Te(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Te(this,"findLast",e,t,ee,arguments)},findLastIndex(e,t){return Te(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Te(this,"forEach",e,t,void 0,arguments)},includes(...e){return ss(this,"includes",e)},indexOf(...e){return ss(this,"indexOf",e)},join(e){return ze(this).join(e)},lastIndexOf(...e){return ss(this,"lastIndexOf",e)},map(e,t){return Te(this,"map",e,t,void 0,arguments)},pop(){return ot(this,"pop")},push(...e){return ot(this,"push",e)},reduce(e,...t){return Ys(this,"reduce",e,t)},reduceRight(e,...t){return Ys(this,"reduceRight",e,t)},shift(){return ot(this,"shift")},some(e,t){return Te(this,"some",e,t,void 0,arguments)},splice(...e){return ot(this,"splice",e)},toReversed(){return ze(this).toReversed()},toSorted(e){return ze(this).toSorted(e)},toSpliced(...e){return ze(this).toSpliced(...e)},unshift(...e){return ot(this,"unshift",e)},values(){return ts(this,"values",ee)}};function ts(e,t,s){const n=Ms(e),r=n[t]();return n!==e&&!de(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=s(i.value)),i}),r}const qr=Array.prototype;function Te(e,t,s,n,r,i){const o=Ms(e),f=o!==e&&!de(e),u=o[t];if(u!==qr[t]){const p=u.apply(e,i);return f?ee(p):p}let h=s;o!==e&&(f?h=function(p,w){return s.call(this,ee(p),w,e)}:s.length>2&&(h=function(p,w){return s.call(this,p,w,e)}));const a=u.call(o,h,n);return f&&r?r(a):a}function Ys(e,t,s,n){const r=Ms(e);let i=s;return r!==e&&(de(e)?s.length>3&&(i=function(o,f,u){return s.call(this,o,f,u,e)}):i=function(o,f,u){return s.call(this,o,ee(f),u,e)}),r[t](i,...n)}function ss(e,t,s){const n=D(e);Z(n,"iterate",mt);const r=n[t](...s);return(r===-1||r===!1)&&Hs(s[0])?(s[0]=D(s[0]),n[t](...s)):r}function ot(e,t,s=[]){je(),Os();const n=D(e)[t].apply(e,s);return As(),Ne(),n}const Gr=vs("__proto__,__v_isRef,__isVue"),jn=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Le));function Jr(e){Le(e)||(e=String(e));const t=D(this);return Z(t,"has",e),t.hasOwnProperty(e)}class Nn{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(r?i?ni:Bn:i?Un:Vn).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=P(t);if(!r){let u;if(o&&(u=Wr[s]))return u;if(s==="hasOwnProperty")return Jr}const f=Reflect.get(t,s,X(t)?t:n);return(Le(s)?jn.has(s):Gr(s))||(r||Z(t,"get",s),i)?f:X(f)?o&&Ts(s)?f:f.value:q(f)?r?Kn(f):Fs(f):f}}class $n extends Nn{constructor(t=!1){super(!1,t)}set(t,s,n,r){let i=t[s];if(!this._isShallow){const u=Je(i);if(!de(n)&&!Je(n)&&(i=D(i),n=D(n)),!P(t)&&X(i)&&!X(n))return u?!1:(i.value=n,!0)}const o=P(t)&&Ts(s)?Number(s)e,Pt=e=>Reflect.getPrototypeOf(e);function Qr(e,t,s){return function(...n){const r=this.__v_raw,i=D(r),o=Qe(i),f=e==="entries"||e===Symbol.iterator&&o,u=e==="keys"&&o,h=r[e](...n),a=s?hs:t?ps:ee;return!t&&Z(i,"iterate",u?ds:Ge),{next(){const{value:p,done:w}=h.next();return w?{value:p,done:w}:{value:f?[a(p[0]),a(p[1])]:a(p),done:w}},[Symbol.iterator](){return this}}}}function Rt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function kr(e,t){const s={get(r){const i=this.__v_raw,o=D(i),f=D(r);e||(Fe(r,f)&&Z(o,"get",r),Z(o,"get",f));const{has:u}=Pt(o),h=t?hs:e?ps:ee;if(u.call(o,r))return h(i.get(r));if(u.call(o,f))return h(i.get(f));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&Z(D(r),"iterate",Ge),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=D(i),f=D(r);return e||(Fe(r,f)&&Z(o,"has",r),Z(o,"has",f)),r===f?i.has(r):i.has(r)||i.has(f)},forEach(r,i){const o=this,f=o.__v_raw,u=D(f),h=t?hs:e?ps:ee;return!e&&Z(u,"iterate",Ge),f.forEach((a,p)=>r.call(i,h(a),h(p),o))}};return ne(s,e?{add:Rt("add"),set:Rt("set"),delete:Rt("delete"),clear:Rt("clear")}:{add(r){!t&&!de(r)&&!Je(r)&&(r=D(r));const i=D(this);return Pt(i).has.call(i,r)||(i.add(r),Ee(i,"add",r,r)),this},set(r,i){!t&&!de(i)&&!Je(i)&&(i=D(i));const o=D(this),{has:f,get:u}=Pt(o);let h=f.call(o,r);h||(r=D(r),h=f.call(o,r));const a=u.call(o,r);return o.set(r,i),h?Fe(i,a)&&Ee(o,"set",r,i):Ee(o,"add",r,i),this},delete(r){const i=D(this),{has:o,get:f}=Pt(i);let u=o.call(i,r);u||(r=D(r),u=o.call(i,r)),f&&f.call(i,r);const h=i.delete(r);return u&&Ee(i,"delete",r,void 0),h},clear(){const r=D(this),i=r.size!==0,o=r.clear();return i&&Ee(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=Qr(r,e,t)}),s}function Is(e,t){const s=kr(e,t);return(n,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get(H(s,r)&&r in n?s:n,r,i)}const ei={get:Is(!1,!1)},ti={get:Is(!1,!0)},si={get:Is(!0,!1)};const Vn=new WeakMap,Un=new WeakMap,Bn=new WeakMap,ni=new WeakMap;function ri(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ii(e){return e.__v_skip||!Object.isExtensible(e)?0:ri(Rr(e))}function Fs(e){return Je(e)?e:Ds(e,!1,zr,ei,Vn)}function oi(e){return Ds(e,!1,Xr,ti,Un)}function Kn(e){return Ds(e,!0,Zr,si,Bn)}function Ds(e,t,s,n,r){if(!q(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=ii(e);if(o===0)return e;const f=new Proxy(e,o===2?n:s);return r.set(e,f),f}function dt(e){return Je(e)?dt(e.__v_raw):!!(e&&e.__v_isReactive)}function Je(e){return!!(e&&e.__v_isReadonly)}function de(e){return!!(e&&e.__v_isShallow)}function Hs(e){return e?!!e.__v_raw:!1}function D(e){const t=e&&e.__v_raw;return t?D(t):e}function li(e){return!H(e,"__v_skip")&&Object.isExtensible(e)&&Cn(e,"__v_skip",!0),e}const ee=e=>q(e)?Fs(e):e,ps=e=>q(e)?Kn(e):e;function X(e){return e?e.__v_isRef===!0:!1}function fi(e){return ci(e,!1)}function ci(e,t){return X(e)?e:new ui(e,t)}class ui{constructor(t,s){this.dep=new Rs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:D(t),this._value=s?t:ee(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||de(t)||Je(t);t=n?t:D(t),Fe(t,s)&&(this._rawValue=t,this._value=n?t:ee(t),this.dep.trigger())}}function ai(e){return X(e)?e.value:e}const di={get:(e,t,s)=>t==="__v_raw"?e:ai(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return X(r)&&!X(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function Wn(e){return dt(e)?e:new Proxy(e,di)}class hi{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new Rs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=_t-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&V!==this)return Mn(this,!0),!0}get value(){const t=this.dep.track();return Dn(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function pi(e,t,s=!1){let n,r;return R(e)?n=e:(n=e.get,r=e.set),new hi(n,r,s)}const Mt={},Ht=new WeakMap;let We;function gi(e,t=!1,s=We){if(s){let n=Ht.get(s);n||Ht.set(s,n=[]),n.push(e)}}function _i(e,t,s=U){const{immediate:n,deep:r,once:i,scheduler:o,augmentJob:f,call:u}=s,h=O=>r?O:de(O)||r===!1||r===0?Ie(O,1):Ie(O);let a,p,w,T,F=!1,I=!1;if(X(e)?(p=()=>e.value,F=de(e)):dt(e)?(p=()=>h(e),F=!0):P(e)?(I=!0,F=e.some(O=>dt(O)||de(O)),p=()=>e.map(O=>{if(X(O))return O.value;if(dt(O))return h(O);if(R(O))return u?u(O,2):O()})):R(e)?t?p=u?()=>u(e,2):e:p=()=>{if(w){je();try{w()}finally{Ne()}}const O=We;We=a;try{return u?u(e,3,[T]):e(T)}finally{We=O}}:p=Se,t&&r){const O=p,G=r===!0?1/0:r;p=()=>Ie(O(),G)}const z=Ur(),j=()=>{a.stop(),z&&z.active&&ws(z.effects,a)};if(i&&t){const O=t;t=(...G)=>{O(...G),j()}}let K=I?new Array(e.length).fill(Mt):Mt;const W=O=>{if(!(!(a.flags&1)||!a.dirty&&!O))if(t){const G=a.run();if(r||F||(I?G.some((Ae,he)=>Fe(Ae,K[he])):Fe(G,K))){w&&w();const Ae=We;We=a;try{const he=[G,K===Mt?void 0:I&&K[0]===Mt?[]:K,T];u?u(t,3,he):t(...he),K=G}finally{We=Ae}}}else a.run()};return f&&f(W),a=new Pn(p),a.scheduler=o?()=>o(W,!1):W,T=O=>gi(O,!1,a),w=a.onStop=()=>{const O=Ht.get(a);if(O){if(u)u(O,4);else for(const G of O)G();Ht.delete(a)}},t?n?W(!0):K=a.run():o?o(W.bind(null,!0),!0):a.run(),j.pause=a.pause.bind(a),j.resume=a.resume.bind(a),j.stop=j,j}function Ie(e,t=1/0,s){if(t<=0||!q(e)||e.__v_skip||(s=s||new Set,s.has(e)))return e;if(s.add(e),t--,X(e))Ie(e.value,t,s);else if(P(e))for(let n=0;n{Ie(n,t,s)});else if(wn(e)){for(const n in e)Ie(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&Ie(e[n],t,s)}return e}/** -* @vue/runtime-core v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function St(e,t,s,n){try{return n?e(...n):e()}catch(r){qt(r,t,s)}}function we(e,t,s,n){if(R(e)){const r=St(e,t,s,n);return r&&vn(r)&&r.catch(i=>{qt(i,t,s)}),r}if(P(e)){const r=[];for(let i=0;i>>1,r=te[n],i=bt(r);i=bt(s)?te.push(e):te.splice(xi(t),0,e),e.flags|=1,Gn()}}function Gn(){Lt||(Lt=qn.then(Yn))}function yi(e){P(e)?ke.push(...e):Re&&e.id===-1?Re.splice(Ze+1,0,e):e.flags&1||(ke.push(e),e.flags|=1),Gn()}function zs(e,t,s=xe+1){for(;sbt(s)-bt(n));if(ke.length=0,Re){Re.push(...t);return}for(Re=t,Ze=0;Zee.id==null?e.flags&2?-1:1/0:e.id;function Yn(e){try{for(xe=0;xe{n._d&&rn(-1);const i=jt(t);let o;try{o=e(...r)}finally{jt(i),n._d&&rn(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function Be(e,t,s,n){const r=e.dirs,i=t&&t.dirs;for(let o=0;oe.__isTeleport;function js(e,t){e.shapeFlag&6&&e.component?(e.transition=t,js(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Zn(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Nt(e,t,s,n,r=!1){if(P(e)){e.forEach((F,I)=>Nt(F,t&&(P(t)?t[I]:t),s,n,r));return}if(ht(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Nt(e,t,s,n.component.subTree);return}const i=n.shapeFlag&4?Vs(n.component):n.el,o=r?null:i,{i:f,r:u}=e,h=t&&t.r,a=f.refs===U?f.refs={}:f.refs,p=f.setupState,w=D(p),T=p===U?()=>!1:F=>H(w,F);if(h!=null&&h!==u&&(J(h)?(a[h]=null,T(h)&&(p[h]=null)):X(h)&&(h.value=null)),R(u))St(u,f,12,[o,a]);else{const F=J(u),I=X(u);if(F||I){const z=()=>{if(e.f){const j=F?T(u)?p[u]:a[u]:u.value;r?P(j)&&ws(j,i):P(j)?j.includes(i)||j.push(i):F?(a[u]=[i],T(u)&&(p[u]=a[u])):(u.value=[i],e.k&&(a[e.k]=u.value))}else F?(a[u]=o,T(u)&&(p[u]=o)):I&&(u.value=o,e.k&&(a[e.k]=o))};o?(z.id=-1,le(z,s)):z()}}}Wt().requestIdleCallback;Wt().cancelIdleCallback;const ht=e=>!!e.type.__asyncLoader,Xn=e=>e.type.__isKeepAlive;function Ti(e,t){Qn(e,"a",t)}function Ci(e,t){Qn(e,"da",t)}function Qn(e,t,s=se){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Gt(t,n,s),s){let r=s.parent;for(;r&&r.parent;)Xn(r.parent.vnode)&&Ei(n,t,s,r),r=r.parent}}function Ei(e,t,s,n){const r=Gt(t,e,n,!0);kn(()=>{ws(n[t],r)},s)}function Gt(e,t,s=se,n=!1){if(s){const r=s[e]||(s[e]=[]),i=t.__weh||(t.__weh=(...o)=>{je();const f=wt(s),u=we(t,s,e,o);return f(),Ne(),u});return n?r.unshift(i):r.push(i),i}}const Oe=e=>(t,s=se)=>{(!vt||e==="sp")&&Gt(e,(...n)=>t(...n),s)},Oi=Oe("bm"),Ai=Oe("m"),Pi=Oe("bu"),Ri=Oe("u"),Mi=Oe("bum"),kn=Oe("um"),Ii=Oe("sp"),Fi=Oe("rtg"),Di=Oe("rtc");function Hi(e,t=se){Gt("ec",e,t)}const Li=Symbol.for("v-ndc"),gs=e=>e?Sr(e)?Vs(e):gs(e.parent):null,pt=ne(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>gs(e.parent),$root:e=>gs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>tr(e),$forceUpdate:e=>e.f||(e.f=()=>{Ls(e.update)}),$nextTick:e=>e.n||(e.n=bi.bind(e.proxy)),$watch:e=>ro.bind(e)}),ns=(e,t)=>e!==U&&!e.__isScriptSetup&&H(e,t),ji={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:i,accessCache:o,type:f,appContext:u}=e;let h;if(t[0]!=="$"){const T=o[t];if(T!==void 0)switch(T){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return i[t]}else{if(ns(n,t))return o[t]=1,n[t];if(r!==U&&H(r,t))return o[t]=2,r[t];if((h=e.propsOptions[0])&&H(h,t))return o[t]=3,i[t];if(s!==U&&H(s,t))return o[t]=4,s[t];_s&&(o[t]=0)}}const a=pt[t];let p,w;if(a)return t==="$attrs"&&Z(e.attrs,"get",""),a(e);if((p=f.__cssModules)&&(p=p[t]))return p;if(s!==U&&H(s,t))return o[t]=4,s[t];if(w=u.config.globalProperties,H(w,t))return w[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:i}=e;return ns(r,t)?(r[t]=s,!0):n!==U&&H(n,t)?(n[t]=s,!0):H(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,propsOptions:i}},o){let f;return!!s[o]||e!==U&&H(e,o)||ns(t,o)||(f=i[0])&&H(f,o)||H(n,o)||H(pt,o)||H(r.config.globalProperties,o)},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:H(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Zs(e){return P(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let _s=!0;function Ni(e){const t=tr(e),s=e.proxy,n=e.ctx;_s=!1,t.beforeCreate&&Xs(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:f,provide:u,inject:h,created:a,beforeMount:p,mounted:w,beforeUpdate:T,updated:F,activated:I,deactivated:z,beforeDestroy:j,beforeUnmount:K,destroyed:W,unmounted:O,render:G,renderTracked:Ae,renderTriggered:he,errorCaptured:Pe,serverPrefetch:Tt,expose:$e,inheritAttrs:st,components:Ct,directives:Et,filters:zt}=t;if(h&&$i(h,n,null),o)for(const B in o){const N=o[B];R(N)&&(n[B]=N.bind(s))}if(r){const B=r.call(s,s);q(B)&&(e.data=Fs(B))}if(_s=!0,i)for(const B in i){const N=i[B],Ve=R(N)?N.bind(s,s):R(N.get)?N.get.bind(s,s):Se,Ot=!R(N)&&R(N.set)?N.set.bind(s):Se,Ue=Eo({get:Ve,set:Ot});Object.defineProperty(n,B,{enumerable:!0,configurable:!0,get:()=>Ue.value,set:pe=>Ue.value=pe})}if(f)for(const B in f)er(f[B],n,s,B);if(u){const B=R(u)?u.call(s):u;Reflect.ownKeys(B).forEach(N=>{qi(N,B[N])})}a&&Xs(a,e,"c");function Q(B,N){P(N)?N.forEach(Ve=>B(Ve.bind(s))):N&&B(N.bind(s))}if(Q(Oi,p),Q(Ai,w),Q(Pi,T),Q(Ri,F),Q(Ti,I),Q(Ci,z),Q(Hi,Pe),Q(Di,Ae),Q(Fi,he),Q(Mi,K),Q(kn,O),Q(Ii,Tt),P($e))if($e.length){const B=e.exposed||(e.exposed={});$e.forEach(N=>{Object.defineProperty(B,N,{get:()=>s[N],set:Ve=>s[N]=Ve})})}else e.exposed||(e.exposed={});G&&e.render===Se&&(e.render=G),st!=null&&(e.inheritAttrs=st),Ct&&(e.components=Ct),Et&&(e.directives=Et),Tt&&Zn(e)}function $i(e,t,s=Se){P(e)&&(e=ms(e));for(const n in e){const r=e[n];let i;q(r)?"default"in r?i=It(r.from||n,r.default,!0):i=It(r.from||n):i=It(r),X(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[n]=i}}function Xs(e,t,s){we(P(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function er(e,t,s,n){let r=n.includes(".")?gr(s,n):()=>s[n];if(J(e)){const i=t[e];R(i)&&is(r,i)}else if(R(e))is(r,e.bind(s));else if(q(e))if(P(e))e.forEach(i=>er(i,t,s,n));else{const i=R(e.handler)?e.handler.bind(s):t[e.handler];R(i)&&is(r,i,e)}}function tr(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,f=i.get(t);let u;return f?u=f:!r.length&&!s&&!n?u=t:(u={},r.length&&r.forEach(h=>$t(u,h,o,!0)),$t(u,t,o)),q(t)&&i.set(t,u),u}function $t(e,t,s,n=!1){const{mixins:r,extends:i}=t;i&&$t(e,i,s,!0),r&&r.forEach(o=>$t(e,o,s,!0));for(const o in t)if(!(n&&o==="expose")){const f=Vi[o]||s&&s[o];e[o]=f?f(e[o],t[o]):t[o]}return e}const Vi={data:Qs,props:ks,emits:ks,methods:ft,computed:ft,beforeCreate:k,created:k,beforeMount:k,mounted:k,beforeUpdate:k,updated:k,beforeDestroy:k,beforeUnmount:k,destroyed:k,unmounted:k,activated:k,deactivated:k,errorCaptured:k,serverPrefetch:k,components:ft,directives:ft,watch:Bi,provide:Qs,inject:Ui};function Qs(e,t){return t?e?function(){return ne(R(e)?e.call(this,this):e,R(t)?t.call(this,this):t)}:t:e}function Ui(e,t){return ft(ms(e),ms(t))}function ms(e){if(P(e)){const t={};for(let s=0;s1)return s&&R(t)?t.call(n&&n.proxy):t}}const nr={},rr=()=>Object.create(nr),ir=e=>Object.getPrototypeOf(e)===nr;function Gi(e,t,s,n=!1){const r={},i=rr();e.propsDefaults=Object.create(null),or(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);s?e.props=n?r:oi(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Ji(e,t,s,n){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,f=D(r),[u]=e.propsOptions;let h=!1;if((n||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let p=0;p{u=!0;const[w,T]=lr(p,t,!0);ne(o,w),T&&f.push(...T)};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!u)return q(e)&&n.set(e,Xe),Xe;if(P(i))for(let a=0;ae[0]==="_"||e==="$stable",Ns=e=>P(e)?e.map(ye):[ye(e)],zi=(e,t,s)=>{if(t._n)return t;const n=vi((...r)=>Ns(t(...r)),s);return n._c=!1,n},cr=(e,t,s)=>{const n=e._ctx;for(const r in e){if(fr(r))continue;const i=e[r];if(R(i))t[r]=zi(r,i,n);else if(i!=null){const o=Ns(i);t[r]=()=>o}}},ur=(e,t)=>{const s=Ns(t);e.slots.default=()=>s},ar=(e,t,s)=>{for(const n in t)(s||n!=="_")&&(e[n]=t[n])},Zi=(e,t,s)=>{const n=e.slots=rr();if(e.vnode.shapeFlag&32){const r=t._;r?(ar(n,t,s),s&&Cn(n,"_",r,!0)):cr(t,n)}else t&&ur(e,t)},Xi=(e,t,s)=>{const{vnode:n,slots:r}=e;let i=!0,o=U;if(n.shapeFlag&32){const f=t._;f?s&&f===1?i=!1:ar(r,t,s):(i=!t.$stable,cr(t,r)),o=t}else t&&(ur(e,t),o={default:1});if(i)for(const f in r)!fr(f)&&o[f]==null&&delete r[f]},le=ao;function Qi(e){return ki(e)}function ki(e,t){const s=Wt();s.__VUE__=!0;const{insert:n,remove:r,patchProp:i,createElement:o,createText:f,createComment:u,setText:h,setElementText:a,parentNode:p,nextSibling:w,setScopeId:T=Se,insertStaticContent:F}=e,I=(l,c,d,m=null,g=null,_=null,v=void 0,y=null,x=!!c.dynamicChildren)=>{if(l===c)return;l&&!lt(l,c)&&(m=At(l),pe(l,g,_,!0),l=null),c.patchFlag===-2&&(x=!1,c.dynamicChildren=null);const{type:b,ref:E,shapeFlag:S}=c;switch(b){case Yt:z(l,c,d,m);break;case xt:j(l,c,d,m);break;case os:l==null&&K(c,d,m,v);break;case ue:Ct(l,c,d,m,g,_,v,y,x);break;default:S&1?G(l,c,d,m,g,_,v,y,x):S&6?Et(l,c,d,m,g,_,v,y,x):(S&64||S&128)&&b.process(l,c,d,m,g,_,v,y,x,rt)}E!=null&&g&&Nt(E,l&&l.ref,_,c||l,!c)},z=(l,c,d,m)=>{if(l==null)n(c.el=f(c.children),d,m);else{const g=c.el=l.el;c.children!==l.children&&h(g,c.children)}},j=(l,c,d,m)=>{l==null?n(c.el=u(c.children||""),d,m):c.el=l.el},K=(l,c,d,m)=>{[l.el,l.anchor]=F(l.children,c,d,m,l.el,l.anchor)},W=({el:l,anchor:c},d,m)=>{let g;for(;l&&l!==c;)g=w(l),n(l,d,m),l=g;n(c,d,m)},O=({el:l,anchor:c})=>{let d;for(;l&&l!==c;)d=w(l),r(l),l=d;r(c)},G=(l,c,d,m,g,_,v,y,x)=>{c.type==="svg"?v="svg":c.type==="math"&&(v="mathml"),l==null?Ae(c,d,m,g,_,v,y,x):Tt(l,c,g,_,v,y,x)},Ae=(l,c,d,m,g,_,v,y)=>{let x,b;const{props:E,shapeFlag:S,transition:C,dirs:A}=l;if(x=l.el=o(l.type,_,E&&E.is,E),S&8?a(x,l.children):S&16&&Pe(l.children,x,null,m,g,rs(l,_),v,y),A&&Be(l,null,m,"created"),he(x,l,l.scopeId,v,m),E){for(const $ in E)$!=="value"&&!ct($)&&i(x,$,null,E[$],_,m);"value"in E&&i(x,"value",null,E.value,_),(b=E.onVnodeBeforeMount)&&be(b,m,l)}A&&Be(l,null,m,"beforeMount");const M=eo(g,C);M&&C.beforeEnter(x),n(x,c,d),((b=E&&E.onVnodeMounted)||M||A)&&le(()=>{b&&be(b,m,l),M&&C.enter(x),A&&Be(l,null,m,"mounted")},g)},he=(l,c,d,m,g)=>{if(d&&T(l,d),m)for(let _=0;_{for(let b=x;b{const y=c.el=l.el;let{patchFlag:x,dynamicChildren:b,dirs:E}=c;x|=l.patchFlag&16;const S=l.props||U,C=c.props||U;let A;if(d&&Ke(d,!1),(A=C.onVnodeBeforeUpdate)&&be(A,d,c,l),E&&Be(c,l,d,"beforeUpdate"),d&&Ke(d,!0),(S.innerHTML&&C.innerHTML==null||S.textContent&&C.textContent==null)&&a(y,""),b?$e(l.dynamicChildren,b,y,d,m,rs(c,g),_):v||N(l,c,y,null,d,m,rs(c,g),_,!1),x>0){if(x&16)st(y,S,C,d,g);else if(x&2&&S.class!==C.class&&i(y,"class",null,C.class,g),x&4&&i(y,"style",S.style,C.style,g),x&8){const M=c.dynamicProps;for(let $=0;${A&&be(A,d,c,l),E&&Be(c,l,d,"updated")},m)},$e=(l,c,d,m,g,_,v)=>{for(let y=0;y{if(c!==d){if(c!==U)for(const _ in c)!ct(_)&&!(_ in d)&&i(l,_,c[_],null,g,m);for(const _ in d){if(ct(_))continue;const v=d[_],y=c[_];v!==y&&_!=="value"&&i(l,_,y,v,g,m)}"value"in d&&i(l,"value",c.value,d.value,g)}},Ct=(l,c,d,m,g,_,v,y,x)=>{const b=c.el=l?l.el:f(""),E=c.anchor=l?l.anchor:f("");let{patchFlag:S,dynamicChildren:C,slotScopeIds:A}=c;A&&(y=y?y.concat(A):A),l==null?(n(b,d,m),n(E,d,m),Pe(c.children||[],d,E,g,_,v,y,x)):S>0&&S&64&&C&&l.dynamicChildren?($e(l.dynamicChildren,C,d,g,_,v,y),(c.key!=null||g&&c===g.subTree)&&dr(l,c,!0)):N(l,c,d,E,g,_,v,y,x)},Et=(l,c,d,m,g,_,v,y,x)=>{c.slotScopeIds=y,l==null?c.shapeFlag&512?g.ctx.activate(c,d,m,v,x):zt(c,d,m,g,_,v,x):Us(l,c,x)},zt=(l,c,d,m,g,_,v)=>{const y=l.component=yo(l,m,g);if(Xn(l)&&(y.ctx.renderer=rt),vo(y,!1,v),y.asyncDep){if(g&&g.registerDep(y,Q,v),!l.el){const x=y.subTree=De(xt);j(null,x,c,d)}}else Q(y,l,c,d,g,_,v)},Us=(l,c,d)=>{const m=c.component=l.component;if(co(l,c,d))if(m.asyncDep&&!m.asyncResolved){B(m,c,d);return}else m.next=c,m.update();else c.el=l.el,m.vnode=c},Q=(l,c,d,m,g,_,v)=>{const y=()=>{if(l.isMounted){let{next:S,bu:C,u:A,parent:M,vnode:$}=l;{const _e=hr(l);if(_e){S&&(S.el=$.el,B(l,S,v)),_e.asyncDep.then(()=>{l.isUnmounted||y()});return}}let L=S,ie;Ke(l,!1),S?(S.el=$.el,B(l,S,v)):S=$,C&&Qt(C),(ie=S.props&&S.props.onVnodeBeforeUpdate)&&be(ie,M,S,$),Ke(l,!0);const re=sn(l),ge=l.subTree;l.subTree=re,I(ge,re,p(ge.el),At(ge),l,g,_),S.el=re.el,L===null&&uo(l,re.el),A&&le(A,g),(ie=S.props&&S.props.onVnodeUpdated)&&le(()=>be(ie,M,S,$),g)}else{let S;const{el:C,props:A}=c,{bm:M,m:$,parent:L,root:ie,type:re}=l,ge=ht(c);Ke(l,!1),M&&Qt(M),!ge&&(S=A&&A.onVnodeBeforeMount)&&be(S,L,c),Ke(l,!0);{ie.ce&&ie.ce._injectChildStyle(re);const _e=l.subTree=sn(l);I(null,_e,d,m,l,g,_),c.el=_e.el}if($&&le($,g),!ge&&(S=A&&A.onVnodeMounted)){const _e=c;le(()=>be(S,L,_e),g)}(c.shapeFlag&256||L&&ht(L.vnode)&&L.vnode.shapeFlag&256)&&l.a&&le(l.a,g),l.isMounted=!0,c=d=m=null}};l.scope.on();const x=l.effect=new Pn(y);l.scope.off();const b=l.update=x.run.bind(x),E=l.job=x.runIfDirty.bind(x);E.i=l,E.id=l.uid,x.scheduler=()=>Ls(E),Ke(l,!0),b()},B=(l,c,d)=>{c.component=l;const m=l.vnode.props;l.vnode=c,l.next=null,Ji(l,c.props,m,d),Xi(l,c.children,d),je(),zs(l),Ne()},N=(l,c,d,m,g,_,v,y,x=!1)=>{const b=l&&l.children,E=l?l.shapeFlag:0,S=c.children,{patchFlag:C,shapeFlag:A}=c;if(C>0){if(C&128){Ot(b,S,d,m,g,_,v,y,x);return}else if(C&256){Ve(b,S,d,m,g,_,v,y,x);return}}A&8?(E&16&&nt(b,g,_),S!==b&&a(d,S)):E&16?A&16?Ot(b,S,d,m,g,_,v,y,x):nt(b,g,_,!0):(E&8&&a(d,""),A&16&&Pe(S,d,m,g,_,v,y,x))},Ve=(l,c,d,m,g,_,v,y,x)=>{l=l||Xe,c=c||Xe;const b=l.length,E=c.length,S=Math.min(b,E);let C;for(C=0;CE?nt(l,g,_,!0,!1,S):Pe(c,d,m,g,_,v,y,x,S)},Ot=(l,c,d,m,g,_,v,y,x)=>{let b=0;const E=c.length;let S=l.length-1,C=E-1;for(;b<=S&&b<=C;){const A=l[b],M=c[b]=x?Me(c[b]):ye(c[b]);if(lt(A,M))I(A,M,d,null,g,_,v,y,x);else break;b++}for(;b<=S&&b<=C;){const A=l[S],M=c[C]=x?Me(c[C]):ye(c[C]);if(lt(A,M))I(A,M,d,null,g,_,v,y,x);else break;S--,C--}if(b>S){if(b<=C){const A=C+1,M=AC)for(;b<=S;)pe(l[b],g,_,!0),b++;else{const A=b,M=b,$=new Map;for(b=M;b<=C;b++){const oe=c[b]=x?Me(c[b]):ye(c[b]);oe.key!=null&&$.set(oe.key,b)}let L,ie=0;const re=C-M+1;let ge=!1,_e=0;const it=new Array(re);for(b=0;b=re){pe(oe,g,_,!0);continue}let me;if(oe.key!=null)me=$.get(oe.key);else for(L=M;L<=C;L++)if(it[L-M]===0&<(oe,c[L])){me=L;break}me===void 0?pe(oe,g,_,!0):(it[me-M]=b+1,me>=_e?_e=me:ge=!0,I(oe,c[me],d,null,g,_,v,y,x),ie++)}const Ws=ge?to(it):Xe;for(L=Ws.length-1,b=re-1;b>=0;b--){const oe=M+b,me=c[oe],qs=oe+1{const{el:_,type:v,transition:y,children:x,shapeFlag:b}=l;if(b&6){Ue(l.component.subTree,c,d,m);return}if(b&128){l.suspense.move(c,d,m);return}if(b&64){v.move(l,c,d,rt);return}if(v===ue){n(_,c,d);for(let S=0;Sy.enter(_),g);else{const{leave:S,delayLeave:C,afterLeave:A}=y,M=()=>n(_,c,d),$=()=>{S(_,()=>{M(),A&&A()})};C?C(_,M,$):$()}else n(_,c,d)},pe=(l,c,d,m=!1,g=!1)=>{const{type:_,props:v,ref:y,children:x,dynamicChildren:b,shapeFlag:E,patchFlag:S,dirs:C,cacheIndex:A}=l;if(S===-2&&(g=!1),y!=null&&Nt(y,null,d,l,!0),A!=null&&(c.renderCache[A]=void 0),E&256){c.ctx.deactivate(l);return}const M=E&1&&C,$=!ht(l);let L;if($&&(L=v&&v.onVnodeBeforeUnmount)&&be(L,c,l),E&6)Or(l.component,d,m);else{if(E&128){l.suspense.unmount(d,m);return}M&&Be(l,null,c,"beforeUnmount"),E&64?l.type.remove(l,c,d,rt,m):b&&!b.hasOnce&&(_!==ue||S>0&&S&64)?nt(b,c,d,!1,!0):(_===ue&&S&384||!g&&E&16)&&nt(x,c,d),m&&Bs(l)}($&&(L=v&&v.onVnodeUnmounted)||M)&&le(()=>{L&&be(L,c,l),M&&Be(l,null,c,"unmounted")},d)},Bs=l=>{const{type:c,el:d,anchor:m,transition:g}=l;if(c===ue){Er(d,m);return}if(c===os){O(l);return}const _=()=>{r(d),g&&!g.persisted&&g.afterLeave&&g.afterLeave()};if(l.shapeFlag&1&&g&&!g.persisted){const{leave:v,delayLeave:y}=g,x=()=>v(d,_);y?y(l.el,_,x):x()}else _()},Er=(l,c)=>{let d;for(;l!==c;)d=w(l),r(l),l=d;r(c)},Or=(l,c,d)=>{const{bum:m,scope:g,job:_,subTree:v,um:y,m:x,a:b}=l;tn(x),tn(b),m&&Qt(m),g.stop(),_&&(_.flags|=8,pe(v,l,c,d)),y&&le(y,c),le(()=>{l.isUnmounted=!0},c),c&&c.pendingBranch&&!c.isUnmounted&&l.asyncDep&&!l.asyncResolved&&l.suspenseId===c.pendingId&&(c.deps--,c.deps===0&&c.resolve())},nt=(l,c,d,m=!1,g=!1,_=0)=>{for(let v=_;v{if(l.shapeFlag&6)return At(l.component.subTree);if(l.shapeFlag&128)return l.suspense.next();const c=w(l.anchor||l.el),d=c&&c[Si];return d?w(d):c};let Zt=!1;const Ks=(l,c,d)=>{l==null?c._vnode&&pe(c._vnode,null,null,!0):I(c._vnode||null,l,c,null,null,null,d),c._vnode=l,Zt||(Zt=!0,zs(),Jn(),Zt=!1)},rt={p:I,um:pe,m:Ue,r:Bs,mt:zt,mc:Pe,pc:N,pbc:$e,n:At,o:e};return{render:Ks,hydrate:void 0,createApp:Wi(Ks)}}function rs({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function Ke({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function eo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function dr(e,t,s=!1){const n=e.children,r=t.children;if(P(n)&&P(r))for(let i=0;i>1,e[s[f]]0&&(t[n]=s[i-1]),s[i]=n)}}for(i=s.length,o=s[i-1];i-- >0;)s[i]=o,o=t[o];return s}function hr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:hr(t)}function tn(e){if(e)for(let t=0;tIt(so);function is(e,t,s){return pr(e,t,s)}function pr(e,t,s=U){const{immediate:n,deep:r,flush:i,once:o}=s,f=ne({},s),u=t&&n||!t&&i!=="post";let h;if(vt){if(i==="sync"){const T=no();h=T.__watcherHandles||(T.__watcherHandles=[])}else if(!u){const T=()=>{};return T.stop=Se,T.resume=Se,T.pause=Se,T}}const a=se;f.call=(T,F,I)=>we(T,a,F,I);let p=!1;i==="post"?f.scheduler=T=>{le(T,a&&a.suspense)}:i!=="sync"&&(p=!0,f.scheduler=(T,F)=>{F?T():Ls(T)}),f.augmentJob=T=>{t&&(T.flags|=4),p&&(T.flags|=2,a&&(T.id=a.uid,T.i=a))};const w=_i(e,t,f);return vt&&(h?h.push(w):u&&w()),w}function ro(e,t,s){const n=this.proxy,r=J(e)?e.includes(".")?gr(n,e):()=>n[e]:e.bind(n,n);let i;R(t)?i=t:(i=t.handler,s=t);const o=wt(this),f=pr(r,i.bind(n),s);return o(),f}function gr(e,t){const s=t.split(".");return()=>{let n=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${He(t)}Modifiers`]||e[`${Ye(t)}Modifiers`];function oo(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||U;let r=s;const i=t.startsWith("update:"),o=i&&io(n,t.slice(7));o&&(o.trim&&(r=s.map(a=>J(a)?a.trim():a)),o.number&&(r=s.map(Fr)));let f,u=n[f=Xt(t)]||n[f=Xt(He(t))];!u&&i&&(u=n[f=Xt(Ye(t))]),u&&we(u,e,6,r);const h=n[f+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[f])return;e.emitted[f]=!0,we(h,e,6,r)}}function _r(e,t,s=!1){const n=t.emitsCache,r=n.get(e);if(r!==void 0)return r;const i=e.emits;let o={},f=!1;if(!R(e)){const u=h=>{const a=_r(h,t,!0);a&&(f=!0,ne(o,a))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!i&&!f?(q(e)&&n.set(e,null),null):(P(i)?i.forEach(u=>o[u]=null):ne(o,i),q(e)&&n.set(e,o),o)}function Jt(e,t){return!e||!Ut(t)?!1:(t=t.slice(2).replace(/Once$/,""),H(e,t[0].toLowerCase()+t.slice(1))||H(e,Ye(t))||H(e,t))}function sn(e){const{type:t,vnode:s,proxy:n,withProxy:r,propsOptions:[i],slots:o,attrs:f,emit:u,render:h,renderCache:a,props:p,data:w,setupState:T,ctx:F,inheritAttrs:I}=e,z=jt(e);let j,K;try{if(s.shapeFlag&4){const O=r||n,G=O;j=ye(h.call(G,O,a,p,T,w,F)),K=f}else{const O=t;j=ye(O.length>1?O(p,{attrs:f,slots:o,emit:u}):O(p,null)),K=t.props?f:lo(f)}}catch(O){gt.length=0,qt(O,e,1),j=De(xt)}let W=j;if(K&&I!==!1){const O=Object.keys(K),{shapeFlag:G}=W;O.length&&G&7&&(i&&O.some(Ss)&&(K=fo(K,i)),W=tt(W,K,!1,!0))}return s.dirs&&(W=tt(W,null,!1,!0),W.dirs=W.dirs?W.dirs.concat(s.dirs):s.dirs),s.transition&&js(W,s.transition),j=W,jt(z),j}const lo=e=>{let t;for(const s in e)(s==="class"||s==="style"||Ut(s))&&((t||(t={}))[s]=e[s]);return t},fo=(e,t)=>{const s={};for(const n in e)(!Ss(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function co(e,t,s){const{props:n,children:r,component:i}=e,{props:o,children:f,patchFlag:u}=t,h=i.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?nn(n,o,h):!!o;if(u&8){const a=t.dynamicProps;for(let p=0;pe.__isSuspense;function ao(e,t){t&&t.pendingBranch?P(e)?t.effects.push(...e):t.effects.push(e):yi(e)}const ue=Symbol.for("v-fgt"),Yt=Symbol.for("v-txt"),xt=Symbol.for("v-cmt"),os=Symbol.for("v-stc"),gt=[];let ce=null;function br(e=!1){gt.push(ce=e?null:[])}function ho(){gt.pop(),ce=gt[gt.length-1]||null}let yt=1;function rn(e,t=!1){yt+=e,e<0&&ce&&t&&(ce.hasOnce=!0)}function po(e){return e.dynamicChildren=yt>0?ce||Xe:null,ho(),yt>0&&ce&&ce.push(e),e}function xr(e,t,s,n,r,i){return po(Y(e,t,s,n,r,i,!0))}function yr(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const vr=({key:e})=>e??null,Ft=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?J(e)||X(e)||R(e)?{i:ve,r:e,k:t,f:!!s}:e:null);function Y(e,t=null,s=null,n=0,r=null,i=e===ue?0:1,o=!1,f=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&vr(t),ref:t&&Ft(t),scopeId:zn,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ve};return f?($s(u,s),i&128&&e.normalize(u)):s&&(u.shapeFlag|=J(s)?8:16),yt>0&&!o&&ce&&(u.patchFlag>0||i&6)&&u.patchFlag!==32&&ce.push(u),u}const De=go;function go(e,t=null,s=null,n=0,r=null,i=!1){if((!e||e===Li)&&(e=xt),yr(e)){const f=tt(e,t,!0);return s&&$s(f,s),yt>0&&!i&&ce&&(f.shapeFlag&6?ce[ce.indexOf(e)]=f:ce.push(f)),f.patchFlag=-2,f}if(Co(e)&&(e=e.__vccOpts),t){t=_o(t);let{class:f,style:u}=t;f&&!J(f)&&(t.class=Es(f)),q(u)&&(Hs(u)&&!P(u)&&(u=ne({},u)),t.style=Cs(u))}const o=J(e)?1:mr(e)?128:wi(e)?64:q(e)?4:R(e)?2:0;return Y(e,t,s,n,r,o,i,!0)}function _o(e){return e?Hs(e)||ir(e)?ne({},e):e:null}function tt(e,t,s=!1,n=!1){const{props:r,ref:i,patchFlag:o,children:f,transition:u}=e,h=t?mo(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:h,key:h&&vr(h),ref:t&&t.ref?s&&i?P(i)?i.concat(Ft(t)):[i,Ft(t)]:Ft(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:f,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ue?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&tt(e.ssContent),ssFallback:e.ssFallback&&tt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&n&&js(a,u.clone(a)),a}function qe(e=" ",t=0){return De(Yt,null,e,t)}function ye(e){return e==null||typeof e=="boolean"?De(xt):P(e)?De(ue,null,e.slice()):yr(e)?Me(e):De(Yt,null,String(e))}function Me(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:tt(e)}function $s(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(P(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),$s(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!ir(t)?t._ctx=ve:r===3&&ve&&(ve.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else R(t)?(t={default:t,_ctx:ve},s=32):(t=String(t),n&64?(s=16,t=[qe(t)]):s=8);e.children=t,e.shapeFlag|=s}function mo(...e){const t={};for(let s=0;s{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Vt=t("__VUE_INSTANCE_SETTERS__",s=>se=s),xs=t("__VUE_SSR_SETTERS__",s=>vt=s)}const wt=e=>{const t=se;return Vt(e),e.scope.on(),()=>{e.scope.off(),Vt(t)}},on=()=>{se&&se.scope.off(),Vt(null)};function Sr(e){return e.vnode.shapeFlag&4}let vt=!1;function vo(e,t=!1,s=!1){t&&xs(t);const{props:n,children:r}=e.vnode,i=Sr(e);Gi(e,n,i,t),Zi(e,r,s);const o=i?So(e,t):void 0;return t&&xs(!1),o}function So(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ji);const{setup:n}=s;if(n){je();const r=e.setupContext=n.length>1?To(e):null,i=wt(e),o=St(n,e,0,[e.props,r]),f=vn(o);if(Ne(),i(),(f||e.sp)&&!ht(e)&&Zn(e),f){if(o.then(on,on),t)return o.then(u=>{ln(e,u)}).catch(u=>{qt(u,e,0)});e.asyncDep=o}else ln(e,o)}else wr(e)}function ln(e,t,s){R(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:q(t)&&(e.setupState=Wn(t)),wr(e)}function wr(e,t,s){const n=e.type;e.render||(e.render=n.render||Se);{const r=wt(e);je();try{Ni(e)}finally{Ne(),r()}}}const wo={get(e,t){return Z(e,"get",""),e[t]}};function To(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,wo),slots:e.slots,emit:e.emit,expose:t}}function Vs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Wn(li(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in pt)return pt[s](e)},has(t,s){return s in t||s in pt}})):e.proxy}function Co(e){return R(e)&&"__vccOpts"in e}const Eo=(e,t)=>pi(e,t,vt),Oo="3.5.13";/** -* @vue/runtime-dom v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let ys;const fn=typeof window<"u"&&window.trustedTypes;if(fn)try{ys=fn.createPolicy("vue",{createHTML:e=>e})}catch{}const Tr=ys?e=>ys.createHTML(e):e=>e,Ao="http://www.w3.org/2000/svg",Po="http://www.w3.org/1998/Math/MathML",Ce=typeof document<"u"?document:null,cn=Ce&&Ce.createElement("template"),Ro={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const r=t==="svg"?Ce.createElementNS(Ao,e):t==="mathml"?Ce.createElementNS(Po,e):s?Ce.createElement(e,{is:s}):Ce.createElement(e);return e==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:e=>Ce.createTextNode(e),createComment:e=>Ce.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ce.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,r,i){const o=s?s.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),s),!(r===i||!(r=r.nextSibling)););else{cn.innerHTML=Tr(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const f=cn.content;if(n==="svg"||n==="mathml"){const u=f.firstChild;for(;u.firstChild;)f.appendChild(u.firstChild);f.removeChild(u)}t.insertBefore(f,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Mo=Symbol("_vtc");function Io(e,t,s){const n=e[Mo];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const un=Symbol("_vod"),Fo=Symbol("_vsh"),Do=Symbol(""),Ho=/(^|;)\s*display\s*:/;function Lo(e,t,s){const n=e.style,r=J(s);let i=!1;if(s&&!r){if(t)if(J(t))for(const o of t.split(";")){const f=o.slice(0,o.indexOf(":")).trim();s[f]==null&&Dt(n,f,"")}else for(const o in t)s[o]==null&&Dt(n,o,"");for(const o in s)o==="display"&&(i=!0),Dt(n,o,s[o])}else if(r){if(t!==s){const o=n[Do];o&&(s+=";"+o),n.cssText=s,i=Ho.test(s)}}else t&&e.removeAttribute("style");un in e&&(e[un]=i?n.display:"",e[Fo]&&(n.display="none"))}const an=/\s*!important$/;function Dt(e,t,s){if(P(s))s.forEach(n=>Dt(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=jo(e,t);an.test(s)?e.setProperty(Ye(n),s.replace(an,""),"important"):e[n]=s}}const dn=["Webkit","Moz","ms"],ls={};function jo(e,t){const s=ls[t];if(s)return s;let n=He(t);if(n!=="filter"&&n in e)return ls[t]=n;n=Tn(n);for(let r=0;rfs||(Bo.then(()=>fs=0),fs=Date.now());function Wo(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;we(qo(n,s.value),t,5,[n])};return s.value=e,s.attached=Ko(),s}function qo(e,t){if(P(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>r=>!r._stopped&&n&&n(r))}else return t}const bn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Go=(e,t,s,n,r,i)=>{const o=r==="svg";t==="class"?Io(e,n,o):t==="style"?Lo(e,s,n):Ut(t)?Ss(t)||Vo(e,t,s,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Jo(e,t,n,o))?(gn(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&pn(e,t,n,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!J(n))?gn(e,He(t),n,i,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),pn(e,t,n,o))};function Jo(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&bn(t)&&R(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return bn(t)&&J(s)?!1:t in e}const Yo=ne({patchProp:Go},Ro);let xn;function zo(){return xn||(xn=Qi(Yo))}const Zo=(...e)=>{const t=zo().createApp(...e),{mount:s}=t;return t.mount=n=>{const r=Qo(n);if(!r)return;const i=t._component;!R(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=s(r,!1,Xo(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t};function Xo(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Qo(e){return J(e)?document.querySelector(e):e}const ko="/static/vite.svg",el="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20aria-hidden='true'%20role='img'%20class='iconify%20iconify--logos'%20width='37.07'%20height='36'%20preserveAspectRatio='xMidYMid%20meet'%20viewBox='0%200%20256%20198'%3e%3cpath%20fill='%2341B883'%20d='M204.8%200H256L128%20220.8L0%200h97.92L128%2051.2L157.44%200h47.36Z'%3e%3c/path%3e%3cpath%20fill='%2341B883'%20d='m0%200l128%20220.8L256%200h-51.2L128%20132.48L50.56%200H0Z'%3e%3c/path%3e%3cpath%20fill='%2335495E'%20d='M50.56%200L128%20133.12L204.8%200h-47.36L128%2051.2L97.92%200H50.56Z'%3e%3c/path%3e%3c/svg%3e",Cr=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s},tl={class:"card"},sl={__name:"HelloWorld",props:{msg:String},setup(e){const t=fi(0);return(s,n)=>(br(),xr(ue,null,[Y("h1",null,cs(e.msg),1),Y("div",tl,[Y("button",{type:"button",onClick:n[0]||(n[0]=r=>t.value++)},"count is "+cs(t.value),1),n[1]||(n[1]=Y("p",null,[qe(" Edit "),Y("code",null,"components/HelloWorld.vue"),qe(" to test HMR ")],-1))]),n[2]||(n[2]=Y("p",null,[qe(" Check out "),Y("a",{href:"https://vuejs.org/guide/quick-start.html#local",target:"_blank"},"create-vue"),qe(", the official Vue + Vite starter ")],-1)),n[3]||(n[3]=Y("p",null,[qe(" Learn more about IDE Support for Vue in the "),Y("a",{href:"https://vuejs.org/guide/scaling-up/tooling.html#ide-support",target:"_blank"},"Vue Docs Scaling up Guide"),qe(". ")],-1)),n[4]||(n[4]=Y("p",{class:"read-the-docs"},"Click on the Vite and Vue logos to learn more",-1))],64))}},nl=Cr(sl,[["__scopeId","data-v-830e400e"]]),rl={__name:"App",setup(e){return(t,s)=>(br(),xr(ue,null,[s[0]||(s[0]=Y("div",null,[Y("a",{href:"https://vite.dev",target:"_blank"},[Y("img",{src:ko,class:"logo",alt:"Vite logo"})]),Y("a",{href:"https://vuejs.org/",target:"_blank"},[Y("img",{src:el,class:"logo vue",alt:"Vue logo"})])],-1)),De(nl,{msg:"Vite + Vue"})],64))}},il=Cr(rl,[["__scopeId","data-v-962047bb"]]);Zo(il).mount("#app"); diff --git a/static/css/style.css b/static/css/style.css new file mode 100644 index 0000000..06a2020 --- /dev/null +++ b/static/css/style.css @@ -0,0 +1,108 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif; + background-color: #f5f5f5; + color: #333; +} + +.container { + display: flex; + justify-content: center; + align-items: center; + min-height: 100vh; + padding: 20px; +} + +.login-box { + background-color: #fff; + border-radius: 10px; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); + padding: 30px; + width: 100%; + max-width: 400px; + text-align: center; +} + +h1 { + margin-bottom: 30px; + color: #1e88e5; + font-size: 24px; +} + +.scan-area { + position: relative; + width: 100%; + height: 300px; + margin-bottom: 20px; + border: 1px solid #e0e0e0; + border-radius: 8px; + overflow: hidden; + background-color: #f9f9f9; +} + +#camera-container { + width: 100%; + height: 100%; +} + +#video { + width: 100%; + height: 100%; + object-fit: cover; +} + +#scan-placeholder { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 100%; +} + +#scan-placeholder img { + width: 80px; + height: 80px; + margin-bottom: 20px; +} + +.btn { + background-color: #1e88e5; + color: white; + border: none; + border-radius: 5px; + padding: 12px 20px; + font-size: 16px; + cursor: pointer; + transition: background-color 0.3s; + width: 100%; + margin-top: 10px; +} + +.btn:hover { + background-color: #1976d2; +} + +#stop-button { + background-color: #e53935; +} + +#stop-button:hover { + background-color: #d32f2f; +} + +#scan-result { + padding: 20px; + text-align: center; +} + +#result-content { + margin-top: 10px; + word-break: break-all; + font-size: 14px; + color: #1e88e5; +} \ No newline at end of file diff --git a/static/js/app.js b/static/js/app.js new file mode 100644 index 0000000..b016fc9 --- /dev/null +++ b/static/js/app.js @@ -0,0 +1,260 @@ +document.addEventListener('DOMContentLoaded', function() { + const video = document.getElementById('video'); + const canvas = document.getElementById('canvas'); + const ctx = canvas.getContext('2d'); + const scanButton = document.getElementById('scan-button'); + const stopButton = document.getElementById('stop-button'); + const cameraContainer = document.getElementById('camera-container'); + const scanPlaceholder = document.getElementById('scan-placeholder'); + const scanResult = document.getElementById('scan-result'); + const resultContent = document.getElementById('result-content'); + + // 固定的sign_wg和kps_wg值,实际应用中可能需要动态生成 + const sign_wg = "AAQHaE4ww2nnIPvofH2SfMv3N6OplcPRjxlgScTZozm/ZCMfQP74bsMLyKW883hZCGY="; + const kps_wg = "AARWcp9UM71t5VzV9i5pBJ4dLXjJ7EZL5a9qz2QVVQtkkmcqS4wQGYtk38CRzW6HH4+5c7qsB9/EtUgkWcd8x/k7h9+PmAHUDvxKHUWnX7iL3h2fH86XJ4cEqwvUnQ77QGs="; + + let scanning = false; + let stream = null; + let qrCodeToken = null; + + // 创建一个显示消息的函数,使用Element UI的Message组件 + function showMessage(message, type = 'info') { + //确保ELEMENT已定义 + // 使用tailwindcss实现消息提示 + // 获取或创建消息容器 + let messageContainer = document.getElementById('message-container'); + if (!messageContainer) { + messageContainer = document.createElement('div'); + messageContainer.id = 'message-container'; + messageContainer.className = 'fixed top-0 left-0 right-0 flex flex-col items-center mt-16 z-20 pointer-events-none'; + document.body.appendChild(messageContainer); + } + + const messageDiv = document.createElement('div'); + messageDiv.textContent = message; + messageDiv.className = `px-4 py-2 rounded-md shadow-md mb-2 max-w-xs sm:max-w-sm md:max-w-md break-words ${ + type === 'success' ? 'bg-green-500 text-white' : + type === 'error' ? 'bg-red-500 text-white' : + type === 'warning' ? 'bg-yellow-500 text-white' : + 'bg-blue-500 text-white' + } transition-opacity duration-300 opacity-100`; + + messageContainer.appendChild(messageDiv); + + // 3秒后自动消失 + setTimeout(() => { + messageDiv.classList.replace('opacity-100', 'opacity-0'); + setTimeout(() => { + messageContainer.removeChild(messageDiv); + // 如果没有消息了,移除容器 + if (messageContainer.children.length === 0) { + document.body.removeChild(messageContainer); + } + }, 300); + }, 3000); + //同时保留console.log以便调试 + console.log(message); + } + + // 开始扫码 + scanButton.addEventListener('click', startScanning); + + // 停止扫码 + stopButton.addEventListener('click', stopScanning); + + function startScanning() { + if (scanning) return; + + // 显示摄像头区域,隐藏占位符 + cameraContainer.style.display = 'block'; + scanPlaceholder.style.display = 'none'; + scanResult.style.display = 'none'; + scanButton.style.display = 'none'; + stopButton.style.display = 'block'; + + // 请求摄像头权限 + navigator.mediaDevices.getUserMedia({ + video: { + facingMode: 'environment', + width: { ideal: 1280 }, + height: { ideal: 720 } + } + }) + .then(function(mediaStream) { + stream = mediaStream; + video.srcObject = mediaStream; + video.setAttribute('playsinline', true); + video.play(); + scanning = true; + requestAnimationFrame(tick); + showMessage('摄像头已启动,请对准二维码', 'success'); + }) + .catch(function(error) { + console.error('无法访问摄像头: ', error); + showMessage('无法访问摄像头,请确保已授予摄像头权限', 'error'); + resetScanUI(); + }); + } + + function stopScanning() { + if (!scanning) return; + + if (stream) { + stream.getTracks().forEach(track => { + track.stop(); + }); + } + + scanning = false; + resetScanUI(); + showMessage('已停止扫码', 'warning'); + } + + function resetScanUI() { + cameraContainer.style.display = 'none'; + scanPlaceholder.style.display = 'flex'; + stopButton.style.display = 'none'; + scanButton.style.display = 'block'; + } + + function tick() { + if (!scanning) return; + + if (video.readyState === video.HAVE_ENOUGH_DATA) { + // 设置canvas大小与视频一致 + canvas.width = video.videoWidth; + canvas.height = video.videoHeight; + + // 在canvas上绘制当前视频帧 + ctx.drawImage(video, 0, 0, canvas.width, canvas.height); + + // 获取图像数据 + const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); + + // 使用jsQR库解析二维码 + const code = jsQR(imageData.data, imageData.width, imageData.height, { + inversionAttempts: "dontInvert", + }); + // 如果检测到二维码 + if (code) { + // 使用Element UI的Message组件显示消息 + showMessage("检测到二维码: " + code.data, 'success'); + + // 处理扫码结果 + handleScanResult(code.data); + + // 停止扫描 + stopScanning(); + return; + } + } + + // 继续扫描 + requestAnimationFrame(tick); + } + + function handleScanResult(data) { + // 显示扫码结果 + scanResult.style.display = 'block'; + resultContent.textContent = "扫码成功,正在处理..."; + + try { + // 从URL中提取token + const tokenMatch = data.match(/token=([^&]+)/); + if (tokenMatch && tokenMatch[1]) { + qrCodeToken = tokenMatch[1]; + showMessage("提取到token: " + qrCodeToken, 'success'); + + // 调用登录API + showMessage(qrCodeToken,'success'); + callLoginAPI(qrCodeToken); + } else { + console.error("无法从二维码中提取token"); + showMessage("无法从二维码中提取token,请重试", 'error'); + resultContent.textContent = "无法从二维码中提取token,请重试"; + } + } catch (e) { + console.error("处理二维码内容失败:", e); + showMessage("处理二维码内容失败: " + e.toString(), 'error'); + resultContent.textContent = "扫码内容处理失败: " + e.toString(); + } + } + + // 调用夸克网盘登录API + function callLoginAPI(token) { + showMessage(token); + resultContent.textContent = "正在登录..."; + showMessage("正在使用token登录...", 'info'); + // 生成时间戳作为vcode + const vcode = new Date().getTime(); + showMessage(vcode, 'info'); + // request_id为vcode+5 + const request_id = vcode + 5; + + // 构建请求参数 + const formData = new FormData(); + formData.append('client_id', '532'); + formData.append('v', '1.2'); + formData.append('request_id', request_id.toString()); + formData.append('sign_wg', sign_wg); + formData.append('kps_wg', kps_wg); + formData.append('vcode', vcode.toString()); + formData.append('token', token); + + // 构建完整的URL + const url = '/login'; + // 发送请求 + fetch(url, { + method: 'POST', + headers: { + "Content-Type": "application/json; charset=utf-8" + }, + body: JSON.stringify({"token":token}), + }) + .then(response => { + if (!response.status) { + throw new Error('网络请求失败: ' + response.status); + } + return response.json(); + }) + .then(data => { + showMessage("登录API响应: " + JSON.stringify(data), 'info'); + + if (data && data.status) { + // 登录成功,设置Cookie + resultContent.textContent = "登录成功"; + showMessage("登录成功!", 'success'); + sendCookieToPCPage(data.data); + } else { + // 登录失败 + resultContent.textContent = "登录失败: " + (data.msg || "未知错误"); + showMessage("登录失败: " + (data.msg || "未知错误"), 'error'); + } + }) + .catch(error => { + console.error("登录请求失败:", error); + resultContent.textContent = "登录请求失败: " + error.toString(); + showMessage("登录请求失败: " + error.toString(), 'error'); + }); + } + + // 向PC网页传入Cookie的函数 + function sendCookieToPCPage(loginData) { + // 这里需要实现sendCookieToPCPage函数 + showMessage("正在设置Cookie...", 'info'); + } + + // 监听来自iframe的消息 + // window.addEventListener('message', function(event) { + // console.log("收到消息:", event.data); + // if (event.data && event.data.status) { + // if (event.data.status === 'success') { + // resultContent.textContent = "Cookie设置成功!请返回夸克网盘页面查看"; + // showMessage("Cookie设置成功!请返回夸克网盘页面查看", 'success'); + // } else { + // resultContent.textContent = "Cookie设置失败: " + event.data.message; + // showMessage("Cookie设置失败: " + event.data.message, 'error'); + // } + // } + // }); +}); \ No newline at end of file diff --git a/static/vite.svg b/static/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/static/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index 8ab6424..bb4e3e7 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,15 +1,64 @@ - + - Vite + Vue - - + + + + + + -
- + +
+ +
+
+ + + + + diff --git a/utils/__pycache__/login.cpython-38.pyc b/utils/__pycache__/login.cpython-38.pyc new file mode 100644 index 0000000..c9f7a3f Binary files /dev/null and b/utils/__pycache__/login.cpython-38.pyc differ diff --git a/utils/login.py b/utils/login.py new file mode 100644 index 0000000..7f159a5 --- /dev/null +++ b/utils/login.py @@ -0,0 +1,38 @@ +import requests +import time + +s = requests.Session() +s.headers = { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Origin': 'https://b.quark.cn', + 'Referer': 'https://b.quark.cn/', + 'User-Agent': 'Mozilla/5.0 (Linux; U; Android 15; zh-CN; 2312DRA50C Build/AQ3A.240912.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.80 Quark/7.9.2.771 Mobile Safari/537.36', + 'X-Requested-With': 'com.quark.browser', + 'sec-ch-ua': '"Android WebView";v="123", "Not:A-Brand";v="8", "Chromium";v="123"', + 'sec-ch-ua-mobile': '?1', + 'sec-ch-ua-platform': '"Android"' + } + + +def login_quark(token): + sign_wg = "AAQHaE4ww2nnIPvofH2SfMv3N6OplcPRjxlgScTZozm/ZCMfQP74bsMLyKW883hZCGY="; + kps_wg = "AARWcp9UM71t5VzV9i5pBJ4dLXjJ7EZL5a9qz2QVVQtkkmcqS4wQGYtk38CRzW6HH4+5c7qsB9/EtUgkWcd8x/k7h9+PmAHUDvxKHUWnX7iL3h2fH86XJ4cEqwvUnQ77QGs="; + vcode = int(time.time() * 1000) # 相当于JavaScript中的Date.now(),返回当前时间的毫秒数 + request_id = vcode + 5 + is_login = False + url = 'https://uop.quark.cn/cas/ajax/loginWithKpsAndQrcodeToken' + queryParams = 'uc_param_str=dsdnfrpfbivesscpgimibtbmnijblauputogpintnwktprchmt&ds=AANx101uRUMl2l2Ot6hnNFQe%2F%2B%2Fmm2JHIQ2Gw28Yo%2FGa2g%3D%3D&dn=85507213341-12b7840e&fr=android&pf=3300&bi=35825&ve=7.9.2.771&ss=407x853&pc=AASZtg30J6cEZGl0meB9hj0E8U9brcrtYubvdgeP%2BOWEz0vpfLJPZfnxjOm%2Fxul3xW7j9n4com6OOMCVoviOk4QO&gi=bTkwBCbSxTOAXUWiJmZaMx19GVxo&mi=2312DRA50C&ni=bTkwBHemD30PJEvXSga2ki3ciKarGqoowKzIca0Rj7inq8M%3D&la=zh&ut=AANx101uRUMl2l2Ot6hnNFQe%2F%2B%2Fmm2JHIQ2Gw28Yo%2FGa2g%3D%3D&nt=5&nw=0&kt=4&pr=ucpro&ch=kk%40store&mt=73ABKMNLPFhfbAKV15H%2BDiEkS8zWXwui&__dt=31265&__t=' + str(int(time.time() * 1000)) + data = { + 'client_id': '532', + 'v': '1.2', + 'request_id': request_id, + 'sign_wg': sign_wg, + 'kps_wg': kps_wg, + 'vcode': vcode, + 'token': token + } + res =s.post(url, data=data, params=queryParams) + if res.json().get('status') == 2000000: + is_login = True + return is_login \ No newline at end of file