pytestflow 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bootstrap_templates/__init__.py +0 -0
- bootstrap_templates/config.yaml +13 -0
- bootstrap_templates/custom_step_types/__init__.py +0 -0
- bootstrap_templates/custom_step_types/custom_step_template.py +7 -0
- bootstrap_templates/process_models/__init__.py +0 -0
- bootstrap_templates/process_models/reporting/README.md +48 -0
- bootstrap_templates/process_models/reporting/__init__.py +0 -0
- bootstrap_templates/process_models/reporting/default_report.html.j2 +122 -0
- bootstrap_templates/process_models/reporting/html_report.py +331 -0
- bootstrap_templates/process_models/sequential_model.py +141 -0
- bootstrap_templates/test_sequences/__init__.py +0 -0
- bootstrap_templates/test_sequences/basic_sequence.py +62 -0
- bootstrap_templates/test_sequences/message_box_and_flow_control.py +169 -0
- bootstrap_templates/test_sequences/motherboard_test_sequence.py +125 -0
- bootstrap_templates/test_sequences/step_types_quickstart.py +168 -0
- pytestflow/README.md +13 -0
- pytestflow/__init__.py +19 -0
- pytestflow/backend/__init__.py +2 -0
- pytestflow/backend/event_bus.py +27 -0
- pytestflow/backend/frontend/assets/full_logo-D1DRTUt8.svg +21 -0
- pytestflow/backend/frontend/assets/index-480TOyh4.js +2 -0
- pytestflow/backend/frontend/assets/index-qEI3VAQU.css +1 -0
- pytestflow/backend/frontend/index.html +14 -0
- pytestflow/backend/frontend/logo.svg +21 -0
- pytestflow/backend/handlers.py +214 -0
- pytestflow/backend/report_manager.py +15 -0
- pytestflow/backend/sequences_info.py +130 -0
- pytestflow/backend/start_backend.py +118 -0
- pytestflow/backend/uuids_handler.py +67 -0
- pytestflow/backend/websocket_gateway.py +91 -0
- pytestflow/cli.py +183 -0
- pytestflow/config/__init__.py +0 -0
- pytestflow/config/config_manager.py +44 -0
- pytestflow/core/README.md +110 -0
- pytestflow/core/__init__.py +15 -0
- pytestflow/core/context.py +41 -0
- pytestflow/core/core.py +112 -0
- pytestflow/core/pytestflow_states.py +88 -0
- pytestflow/core/runtime_control.py +164 -0
- pytestflow/core/seq_file_runner.py +38 -0
- pytestflow/core/sequence.py +404 -0
- pytestflow/core/utils.py +81 -0
- pytestflow/flow_utils/README.md +6 -0
- pytestflow/flow_utils/__init__.py +0 -0
- pytestflow/flow_utils/conditions.py +0 -0
- pytestflow/flow_utils/transitions.py +0 -0
- pytestflow/starter_here.md +43 -0
- pytestflow/steps/README.md +43 -0
- pytestflow/steps/__init__.py +15 -0
- pytestflow/steps/action_step.py +94 -0
- pytestflow/steps/common.py +51 -0
- pytestflow/steps/df_numeric_limits.py +151 -0
- pytestflow/steps/flow_control.py +86 -0
- pytestflow/steps/message_pop_up.py +76 -0
- pytestflow/steps/numeric_limit.py +109 -0
- pytestflow/steps/pass_fail.py +49 -0
- pytestflow/steps/string_check.py +104 -0
- pytestflow/steps/waveform_limit.py +170 -0
- pytestflow-0.2.0.dist-info/METADATA +73 -0
- pytestflow-0.2.0.dist-info/RECORD +63 -0
- pytestflow-0.2.0.dist-info/WHEEL +5 -0
- pytestflow-0.2.0.dist-info/entry_points.txt +2 -0
- pytestflow-0.2.0.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(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 o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function s(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(r){if(r.ep)return;r.ep=!0;const o=s(r);fetch(r.href,o)}})();function pn(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const Z={},xt=[],Ve=()=>{},Ar=()=>!1,Ts=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),gn=e=>e.startsWith("onUpdate:"),ve=Object.assign,_n=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Ko=Object.prototype.hasOwnProperty,G=(e,t)=>Ko.call(e,t),M=Array.isArray,wt=e=>Zt(e)==="[object Map]",Es=e=>Zt(e)==="[object Set]",Un=e=>Zt(e)==="[object Date]",U=e=>typeof e=="function",re=e=>typeof e=="string",je=e=>typeof e=="symbol",X=e=>e!==null&&typeof e=="object",Or=e=>(X(e)||U(e))&&U(e.then)&&U(e.catch),Pr=Object.prototype.toString,Zt=e=>Pr.call(e),Go=e=>Zt(e).slice(8,-1),Ir=e=>Zt(e)==="[object Object]",mn=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Dt=pn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),As=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},Jo=/-\w/g,Re=As(e=>e.replace(Jo,t=>t.slice(1).toUpperCase())),Yo=/\B([A-Z])/g,gt=As(e=>e.replace(Yo,"-$1").toLowerCase()),Os=As(e=>e.charAt(0).toUpperCase()+e.slice(1)),js=As(e=>e?`on${Os(e)}`:""),et=(e,t)=>!Object.is(e,t),cs=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},Rr=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},Ps=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Hn;const Is=()=>Hn||(Hn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function yn(e){if(M(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],r=re(n)?Qo(n):yn(n);if(r)for(const o in r)t[o]=r[o]}return t}else if(re(e)||X(e))return e}const zo=/;(?![^(]*\))/g,Zo=/:([^]+)/,Xo=/\/\*[^]*?\*\//g;function Qo(e){const t={};return e.replace(Xo,"").split(zo).forEach(s=>{if(s){const n=s.split(Zo);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function st(e){let t="";if(re(e))t=e;else if(M(e))for(let s=0;s<e.length;s++){const n=st(e[s]);n&&(t+=n+" ")}else if(X(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const ei="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",ti=pn(ei);function Mr(e){return!!e||e===""}function si(e,t){if(e.length!==t.length)return!1;let s=!0;for(let n=0;s&&n<e.length;n++)s=Rs(e[n],t[n]);return s}function Rs(e,t){if(e===t)return!0;let s=Un(e),n=Un(t);if(s||n)return s&&n?e.getTime()===t.getTime():!1;if(s=je(e),n=je(t),s||n)return e===t;if(s=M(e),n=M(t),s||n)return s&&n?si(e,t):!1;if(s=X(e),n=X(t),s||n){if(!s||!n)return!1;const r=Object.keys(e).length,o=Object.keys(t).length;if(r!==o)return!1;for(const i in e){const l=e.hasOwnProperty(i),c=t.hasOwnProperty(i);if(l&&!c||!l&&c||!Rs(e[i],t[i]))return!1}}return String(e)===String(t)}function ni(e,t){return e.findIndex(s=>Rs(s,t))}const Fr=e=>!!(e&&e.__v_isRef===!0),be=e=>re(e)?e:e==null?"":M(e)||X(e)&&(e.toString===Pr||!U(e.toString))?Fr(e)?be(e.value):JSON.stringify(e,$r,2):String(e),$r=(e,t)=>Fr(t)?$r(e,t.value):wt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,r],o)=>(s[Ws(n,o)+" =>"]=r,s),{})}:Es(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Ws(s))}:je(t)?Ws(t):X(t)&&!M(t)&&!Ir(t)?String(t):t,Ws=(e,t="")=>{var s;return je(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};let ae;class Dr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=ae,!t&&ae&&(this.index=(ae.scopes||(ae.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;t<s;t++)this.scopes[t].pause();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].resume();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].resume()}}run(t){if(this._active){const s=ae;try{return ae=this,t()}finally{ae=s}}}on(){++this._on===1&&(this.prevScope=ae,ae=this)}off(){this._on>0&&--this._on===0&&(ae=this.prevScope,this.prevScope=void 0)}stop(t){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){for(s=0,n=this.scopes.length;s<n;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function Nr(e){return new Dr(e)}function kr(){return ae}function ri(e,t=!1){ae&&ae.cleanups.push(e)}let ee;const Bs=new WeakSet;class Lr{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,ae&&ae.active&&ae.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Bs.has(this)&&(Bs.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Hr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Vn(this),Vr(this);const t=ee,s=Me;ee=this,Me=!0;try{return this.fn()}finally{jr(this),ee=t,Me=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Sn(t);this.deps=this.depsTail=void 0,Vn(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Bs.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Qs(this)&&this.run()}get dirty(){return Qs(this)}}let Ur=0,Nt,kt;function Hr(e,t=!1){if(e.flags|=8,t){e.next=kt,kt=e;return}e.next=Nt,Nt=e}function bn(){Ur++}function vn(){if(--Ur>0)return;if(kt){let t=kt;for(kt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;Nt;){let t=Nt;for(Nt=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 Vr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function jr(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),Sn(n),oi(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function Qs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Wr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Wr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===qt)||(e.globalVersion=qt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Qs(e))))return;e.flags|=2;const t=e.dep,s=ee,n=Me;ee=e,Me=!0;try{Vr(e);const r=e.fn(e._value);(t.version===0||et(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ee=s,Me=n,jr(e),e.flags&=-3}}function Sn(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 o=s.computed.deps;o;o=o.nextDep)Sn(o,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function oi(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Me=!0;const Br=[];function Je(){Br.push(Me),Me=!1}function Ye(){const e=Br.pop();Me=e===void 0?!0:e}function Vn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=ee;ee=void 0;try{t()}finally{ee=s}}}let qt=0;class ii{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 xn{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,this.__v_skip=!0}track(t){if(!ee||!Me||ee===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==ee)s=this.activeLink=new ii(ee,this),ee.deps?(s.prevDep=ee.depsTail,ee.depsTail.nextDep=s,ee.depsTail=s):ee.deps=ee.depsTail=s,qr(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=ee.depsTail,s.nextDep=void 0,ee.depsTail.nextDep=s,ee.depsTail=s,ee.deps===s&&(ee.deps=n)}return s}trigger(t){this.version++,qt++,this.notify(t)}notify(t){bn();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{vn()}}}function qr(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)qr(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const ds=new WeakMap,at=Symbol(""),en=Symbol(""),Kt=Symbol("");function de(e,t,s){if(Me&&ee){let n=ds.get(e);n||ds.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new xn),r.map=n,r.key=s),r.track()}}function Ke(e,t,s,n,r,o){const i=ds.get(e);if(!i){qt++;return}const l=c=>{c&&c.trigger()};if(bn(),t==="clear")i.forEach(l);else{const c=M(e),d=c&&mn(s);if(c&&s==="length"){const f=Number(n);i.forEach((h,g)=>{(g==="length"||g===Kt||!je(g)&&g>=f)&&l(h)})}else switch((s!==void 0||i.has(void 0))&&l(i.get(s)),d&&l(i.get(Kt)),t){case"add":c?d&&l(i.get("length")):(l(i.get(at)),wt(e)&&l(i.get(en)));break;case"delete":c||(l(i.get(at)),wt(e)&&l(i.get(en)));break;case"set":wt(e)&&l(i.get(at));break}}vn()}function li(e,t){const s=ds.get(e);return s&&s.get(t)}function mt(e){const t=B(e);return t===e?t:(de(t,"iterate",Kt),Ie(e)?t:t.map(fe))}function Ms(e){return de(e=B(e),"iterate",Kt),e}const ci={__proto__:null,[Symbol.iterator](){return qs(this,Symbol.iterator,fe)},concat(...e){return mt(this).concat(...e.map(t=>M(t)?mt(t):t))},entries(){return qs(this,"entries",e=>(e[1]=fe(e[1]),e))},every(e,t){return Be(this,"every",e,t,void 0,arguments)},filter(e,t){return Be(this,"filter",e,t,s=>s.map(fe),arguments)},find(e,t){return Be(this,"find",e,t,fe,arguments)},findIndex(e,t){return Be(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Be(this,"findLast",e,t,fe,arguments)},findLastIndex(e,t){return Be(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Be(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ks(this,"includes",e)},indexOf(...e){return Ks(this,"indexOf",e)},join(e){return mt(this).join(e)},lastIndexOf(...e){return Ks(this,"lastIndexOf",e)},map(e,t){return Be(this,"map",e,t,void 0,arguments)},pop(){return Rt(this,"pop")},push(...e){return Rt(this,"push",e)},reduce(e,...t){return jn(this,"reduce",e,t)},reduceRight(e,...t){return jn(this,"reduceRight",e,t)},shift(){return Rt(this,"shift")},some(e,t){return Be(this,"some",e,t,void 0,arguments)},splice(...e){return Rt(this,"splice",e)},toReversed(){return mt(this).toReversed()},toSorted(e){return mt(this).toSorted(e)},toSpliced(...e){return mt(this).toSpliced(...e)},unshift(...e){return Rt(this,"unshift",e)},values(){return qs(this,"values",fe)}};function qs(e,t,s){const n=Ms(e),r=n[t]();return n!==e&&!Ie(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=s(o.value)),o}),r}const ui=Array.prototype;function Be(e,t,s,n,r,o){const i=Ms(e),l=i!==e&&!Ie(e),c=i[t];if(c!==ui[t]){const h=c.apply(e,o);return l?fe(h):h}let d=s;i!==e&&(l?d=function(h,g){return s.call(this,fe(h),g,e)}:s.length>2&&(d=function(h,g){return s.call(this,h,g,e)}));const f=c.call(i,d,n);return l&&r?r(f):f}function jn(e,t,s,n){const r=Ms(e);let o=s;return r!==e&&(Ie(e)?s.length>3&&(o=function(i,l,c){return s.call(this,i,l,c,e)}):o=function(i,l,c){return s.call(this,i,fe(l),c,e)}),r[t](o,...n)}function Ks(e,t,s){const n=B(e);de(n,"iterate",Kt);const r=n[t](...s);return(r===-1||r===!1)&&Tn(s[0])?(s[0]=B(s[0]),n[t](...s)):r}function Rt(e,t,s=[]){Je(),bn();const n=B(e)[t].apply(e,s);return vn(),Ye(),n}const fi=pn("__proto__,__v_isRef,__isVue"),Kr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(je));function ai(e){je(e)||(e=String(e));const t=B(this);return de(t,"has",e),t.hasOwnProperty(e)}class Gr{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,o=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return o;if(s==="__v_raw")return n===(r?o?Si:Zr:o?zr:Yr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const i=M(t);if(!r){let c;if(i&&(c=ci[s]))return c;if(s==="hasOwnProperty")return ai}const l=Reflect.get(t,s,le(t)?t:n);if((je(s)?Kr.has(s):fi(s))||(r||de(t,"get",s),o))return l;if(le(l)){const c=i&&mn(s)?l:l.value;return r&&X(c)?sn(c):c}return X(l)?r?sn(l):Fs(l):l}}class Jr extends Gr{constructor(t=!1){super(!1,t)}set(t,s,n,r){let o=t[s];if(!this._isShallow){const c=nt(o);if(!Ie(n)&&!nt(n)&&(o=B(o),n=B(n)),!M(t)&&le(o)&&!le(n))return c||(o.value=n),!0}const i=M(t)&&mn(s)?Number(s)<t.length:G(t,s),l=Reflect.set(t,s,n,le(t)?t:r);return t===B(r)&&(i?et(n,o)&&Ke(t,"set",s,n):Ke(t,"add",s,n)),l}deleteProperty(t,s){const n=G(t,s);t[s];const r=Reflect.deleteProperty(t,s);return r&&n&&Ke(t,"delete",s,void 0),r}has(t,s){const n=Reflect.has(t,s);return(!je(s)||!Kr.has(s))&&de(t,"has",s),n}ownKeys(t){return de(t,"iterate",M(t)?"length":at),Reflect.ownKeys(t)}}class di extends Gr{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const hi=new Jr,pi=new di,gi=new Jr(!0);const tn=e=>e,rs=e=>Reflect.getPrototypeOf(e);function _i(e,t,s){return function(...n){const r=this.__v_raw,o=B(r),i=wt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,d=r[e](...n),f=s?tn:t?hs:fe;return!t&&de(o,"iterate",c?en:at),{next(){const{value:h,done:g}=d.next();return g?{value:h,done:g}:{value:l?[f(h[0]),f(h[1])]:f(h),done:g}},[Symbol.iterator](){return this}}}}function os(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function mi(e,t){const s={get(r){const o=this.__v_raw,i=B(o),l=B(r);e||(et(r,l)&&de(i,"get",r),de(i,"get",l));const{has:c}=rs(i),d=t?tn:e?hs:fe;if(c.call(i,r))return d(o.get(r));if(c.call(i,l))return d(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&de(B(r),"iterate",at),r.size},has(r){const o=this.__v_raw,i=B(o),l=B(r);return e||(et(r,l)&&de(i,"has",r),de(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,c=B(l),d=t?tn:e?hs:fe;return!e&&de(c,"iterate",at),l.forEach((f,h)=>r.call(o,d(f),d(h),i))}};return ve(s,e?{add:os("add"),set:os("set"),delete:os("delete"),clear:os("clear")}:{add(r){!t&&!Ie(r)&&!nt(r)&&(r=B(r));const o=B(this);return rs(o).has.call(o,r)||(o.add(r),Ke(o,"add",r,r)),this},set(r,o){!t&&!Ie(o)&&!nt(o)&&(o=B(o));const i=B(this),{has:l,get:c}=rs(i);let d=l.call(i,r);d||(r=B(r),d=l.call(i,r));const f=c.call(i,r);return i.set(r,o),d?et(o,f)&&Ke(i,"set",r,o):Ke(i,"add",r,o),this},delete(r){const o=B(this),{has:i,get:l}=rs(o);let c=i.call(o,r);c||(r=B(r),c=i.call(o,r)),l&&l.call(o,r);const d=o.delete(r);return c&&Ke(o,"delete",r,void 0),d},clear(){const r=B(this),o=r.size!==0,i=r.clear();return o&&Ke(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=_i(r,e,t)}),s}function wn(e,t){const s=mi(e,t);return(n,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get(G(s,r)&&r in n?s:n,r,o)}const yi={get:wn(!1,!1)},bi={get:wn(!1,!0)},vi={get:wn(!0,!1)};const Yr=new WeakMap,zr=new WeakMap,Zr=new WeakMap,Si=new WeakMap;function xi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function wi(e){return e.__v_skip||!Object.isExtensible(e)?0:xi(Go(e))}function Fs(e){return nt(e)?e:Cn(e,!1,hi,yi,Yr)}function Ci(e){return Cn(e,!1,gi,bi,zr)}function sn(e){return Cn(e,!0,pi,vi,Zr)}function Cn(e,t,s,n,r){if(!X(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=wi(e);if(o===0)return e;const i=r.get(e);if(i)return i;const l=new Proxy(e,o===2?n:s);return r.set(e,l),l}function tt(e){return nt(e)?tt(e.__v_raw):!!(e&&e.__v_isReactive)}function nt(e){return!!(e&&e.__v_isReadonly)}function Ie(e){return!!(e&&e.__v_isShallow)}function Tn(e){return e?!!e.__v_raw:!1}function B(e){const t=e&&e.__v_raw;return t?B(t):e}function En(e){return!G(e,"__v_skip")&&Object.isExtensible(e)&&Rr(e,"__v_skip",!0),e}const fe=e=>X(e)?Fs(e):e,hs=e=>X(e)?sn(e):e;function le(e){return e?e.__v_isRef===!0:!1}function ie(e){return Ti(e,!1)}function Ti(e,t){return le(e)?e:new Ei(e,t)}class Ei{constructor(t,s){this.dep=new xn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:B(t),this._value=s?t:fe(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||Ie(t)||nt(t);t=n?t:B(t),et(t,s)&&(this._rawValue=t,this._value=n?t:fe(t),this.dep.trigger())}}function ce(e){return le(e)?e.value:e}function Wn(e){return U(e)?e():ce(e)}const Ai={get:(e,t,s)=>t==="__v_raw"?e:ce(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return le(r)&&!le(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function Xr(e){return tt(e)?e:new Proxy(e,Ai)}function Oi(e){const t=M(e)?new Array(e.length):{};for(const s in e)t[s]=Ii(e,s);return t}class Pi{constructor(t,s,n){this._object=t,this._key=s,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return li(B(this._object),this._key)}}function Ii(e,t,s){const n=e[t];return le(n)?n:new Pi(e,t,s)}class Ri{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new xn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=qt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&ee!==this)return Hr(this,!0),!0}get value(){const t=this.dep.track();return Wr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Mi(e,t,s=!1){let n,r;return U(e)?n=e:(n=e.get,r=e.set),new Ri(n,r,s)}const is={},ps=new WeakMap;let ct;function Fi(e,t=!1,s=ct){if(s){let n=ps.get(s);n||ps.set(s,n=[]),n.push(e)}}function $i(e,t,s=Z){const{immediate:n,deep:r,once:o,scheduler:i,augmentJob:l,call:c}=s,d=I=>r?I:Ie(I)||r===!1||r===0?Ge(I,1):Ge(I);let f,h,g,v,E=!1,x=!1;if(le(e)?(h=()=>e.value,E=Ie(e)):tt(e)?(h=()=>d(e),E=!0):M(e)?(x=!0,E=e.some(I=>tt(I)||Ie(I)),h=()=>e.map(I=>{if(le(I))return I.value;if(tt(I))return d(I);if(U(I))return c?c(I,2):I()})):U(e)?t?h=c?()=>c(e,2):e:h=()=>{if(g){Je();try{g()}finally{Ye()}}const I=ct;ct=f;try{return c?c(e,3,[v]):e(v)}finally{ct=I}}:h=Ve,t&&r){const I=h,A=r===!0?1/0:r;h=()=>Ge(I(),A)}const $=kr(),H=()=>{f.stop(),$&&$.active&&_n($.effects,f)};if(o&&t){const I=t;t=(...A)=>{I(...A),H()}}let j=x?new Array(e.length).fill(is):is;const z=I=>{if(!(!(f.flags&1)||!f.dirty&&!I))if(t){const A=f.run();if(r||E||(x?A.some((ue,se)=>et(ue,j[se])):et(A,j))){g&&g();const ue=ct;ct=f;try{const se=[A,j===is?void 0:x&&j[0]===is?[]:j,v];j=A,c?c(t,3,se):t(...se)}finally{ct=ue}}}else f.run()};return l&&l(z),f=new Lr(h),f.scheduler=i?()=>i(z,!1):z,v=I=>Fi(I,!1,f),g=f.onStop=()=>{const I=ps.get(f);if(I){if(c)c(I,4);else for(const A of I)A();ps.delete(f)}},t?n?z(!0):j=f.run():i?i(z.bind(null,!0),!0):f.run(),H.pause=f.pause.bind(f),H.resume=f.resume.bind(f),H.stop=H,H}function Ge(e,t=1/0,s){if(t<=0||!X(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,le(e))Ge(e.value,t,s);else if(M(e))for(let n=0;n<e.length;n++)Ge(e[n],t,s);else if(Es(e)||wt(e))e.forEach(n=>{Ge(n,t,s)});else if(Ir(e)){for(const n in e)Ge(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&Ge(e[n],t,s)}return e}function Xt(e,t,s,n){try{return n?e(...n):e()}catch(r){$s(r,t,s)}}function We(e,t,s,n){if(U(e)){const r=Xt(e,t,s,n);return r&&Or(r)&&r.catch(o=>{$s(o,t,s)}),r}if(M(e)){const r=[];for(let o=0;o<e.length;o++)r.push(We(e[o],t,s,n));return r}}function $s(e,t,s,n=!0){const r=t?t.vnode:null,{errorHandler:o,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||Z;if(t){let l=t.parent;const c=t.proxy,d=`https://vuejs.org/error-reference/#runtime-${s}`;for(;l;){const f=l.ec;if(f){for(let h=0;h<f.length;h++)if(f[h](e,c,d)===!1)return}l=l.parent}if(o){Je(),Xt(o,null,10,[e,c,d]),Ye();return}}Di(e,s,r,n,i)}function Di(e,t,s,n=!0,r=!1){if(r)throw e;console.error(e)}const ye=[];let Ue=-1;const Ct=[];let Xe=null,bt=0;const Qr=Promise.resolve();let gs=null;function Ds(e){const t=gs||Qr;return e?t.then(this?e.bind(this):e):t}function Ni(e){let t=Ue+1,s=ye.length;for(;t<s;){const n=t+s>>>1,r=ye[n],o=Gt(r);o<e||o===e&&r.flags&2?t=n+1:s=n}return t}function An(e){if(!(e.flags&1)){const t=Gt(e),s=ye[ye.length-1];!s||!(e.flags&2)&&t>=Gt(s)?ye.push(e):ye.splice(Ni(t),0,e),e.flags|=1,eo()}}function eo(){gs||(gs=Qr.then(so))}function ki(e){M(e)?Ct.push(...e):Xe&&e.id===-1?Xe.splice(bt+1,0,e):e.flags&1||(Ct.push(e),e.flags|=1),eo()}function Bn(e,t,s=Ue+1){for(;s<ye.length;s++){const n=ye[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;ye.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function to(e){if(Ct.length){const t=[...new Set(Ct)].sort((s,n)=>Gt(s)-Gt(n));if(Ct.length=0,Xe){Xe.push(...t);return}for(Xe=t,bt=0;bt<Xe.length;bt++){const s=Xe[bt];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Xe=null,bt=0}}const Gt=e=>e.id==null?e.flags&2?-1:1/0:e.id;function so(e){try{for(Ue=0;Ue<ye.length;Ue++){const t=ye[Ue];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Xt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Ue<ye.length;Ue++){const t=ye[Ue];t&&(t.flags&=-2)}Ue=-1,ye.length=0,to(),gs=null,(ye.length||Ct.length)&&so()}}let Ee=null,no=null;function _s(e){const t=Ee;return Ee=e,no=e&&e.type.__scopeId||null,t}function Li(e,t=Ee,s){if(!t||e._n)return e;const n=(...r)=>{n._d&&bs(-1);const o=_s(t);let i;try{i=e(...r)}finally{_s(o),n._d&&bs(1)}return i};return n._n=!0,n._c=!0,n._d=!0,n}function Jt(e,t){if(Ee===null)return e;const s=Us(Ee),n=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[o,i,l,c=Z]=t[r];o&&(U(o)&&(o={mounted:o,updated:o}),o.deep&&Ge(i),n.push({dir:o,instance:s,value:i,oldValue:void 0,arg:l,modifiers:c}))}return e}function it(e,t,s,n){const r=e.dirs,o=t&&t.dirs;for(let i=0;i<r.length;i++){const l=r[i];o&&(l.oldValue=o[i].value);let c=l.dir[n];c&&(Je(),We(c,s,8,[e.el,l,e,t]),Ye())}}const ro=Symbol("_vte"),Ui=e=>e.__isTeleport,Lt=e=>e&&(e.disabled||e.disabled===""),qn=e=>e&&(e.defer||e.defer===""),Kn=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Gn=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,nn=(e,t)=>{const s=e&&e.to;return re(s)?t?t(s):null:s},oo={name:"Teleport",__isTeleport:!0,process(e,t,s,n,r,o,i,l,c,d){const{mc:f,pc:h,pbc:g,o:{insert:v,querySelector:E,createText:x,createComment:$}}=d,H=Lt(t.props);let{shapeFlag:j,children:z,dynamicChildren:I}=t;if(e==null){const A=t.el=x(""),ue=t.anchor=x("");v(A,s,n),v(ue,s,n);const se=(S,F)=>{j&16&&f(z,S,F,r,o,i,l,c)},L=()=>{const S=t.target=nn(t.props,E),F=io(S,t,x,v);S&&(i!=="svg"&&Kn(S)?i="svg":i!=="mathml"&&Gn(S)&&(i="mathml"),r&&r.isCE&&(r.ce._teleportTargets||(r.ce._teleportTargets=new Set)).add(S),H||(se(S,F),us(t,!1)))};H&&(se(s,ue),us(t,!0)),qn(t.props)?(t.el.__isMounted=!1,me(()=>{L(),delete t.el.__isMounted},o)):L()}else{if(qn(t.props)&&e.el.__isMounted===!1){me(()=>{oo.process(e,t,s,n,r,o,i,l,c,d)},o);return}t.el=e.el,t.targetStart=e.targetStart;const A=t.anchor=e.anchor,ue=t.target=e.target,se=t.targetAnchor=e.targetAnchor,L=Lt(e.props),S=L?s:ue,F=L?A:se;if(i==="svg"||Kn(ue)?i="svg":(i==="mathml"||Gn(ue))&&(i="mathml"),I?(g(e.dynamicChildren,I,S,r,o,i,l),Rn(e,t,!0)):c||h(e,t,S,F,r,o,i,l,!1),H)L?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ls(t,s,A,d,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const te=t.target=nn(t.props,E);te&&ls(t,te,null,d,0)}else L&&ls(t,ue,se,d,1);us(t,H)}},remove(e,t,s,{um:n,o:{remove:r}},o){const{shapeFlag:i,children:l,anchor:c,targetStart:d,targetAnchor:f,target:h,props:g}=e;if(h&&(r(d),r(f)),o&&r(c),i&16){const v=o||!Lt(g);for(let E=0;E<l.length;E++){const x=l[E];n(x,t,s,v,!!x.dynamicChildren)}}},move:ls,hydrate:Hi};function ls(e,t,s,{o:{insert:n},m:r},o=2){o===0&&n(e.targetAnchor,t,s);const{el:i,anchor:l,shapeFlag:c,children:d,props:f}=e,h=o===2;if(h&&n(i,t,s),(!h||Lt(f))&&c&16)for(let g=0;g<d.length;g++)r(d[g],t,s,2);h&&n(l,t,s)}function Hi(e,t,s,n,r,o,{o:{nextSibling:i,parentNode:l,querySelector:c,insert:d,createText:f}},h){function g(x,$,H,j){$.anchor=h(i(x),$,l(x),s,n,r,o),$.targetStart=H,$.targetAnchor=j}const v=t.target=nn(t.props,c),E=Lt(t.props);if(v){const x=v._lpa||v.firstChild;if(t.shapeFlag&16)if(E)g(e,t,x,x&&i(x));else{t.anchor=i(e);let $=x;for(;$;){if($&&$.nodeType===8){if($.data==="teleport start anchor")t.targetStart=$;else if($.data==="teleport anchor"){t.targetAnchor=$,v._lpa=t.targetAnchor&&i(t.targetAnchor);break}}$=i($)}t.targetAnchor||io(v,t,f,d),h(x&&i(x),t,v,s,n,r,o)}us(t,E)}else E&&t.shapeFlag&16&&g(e,t,e,i(e));return t.anchor&&i(t.anchor)}const Vi=oo;function us(e,t){const s=e.ctx;if(s&&s.ut){let n,r;for(t?(n=e.el,r=e.anchor):(n=e.targetStart,r=e.targetAnchor);n&&n!==r;)n.nodeType===1&&n.setAttribute("data-v-owner",s.uid),n=n.nextSibling;s.ut()}}function io(e,t,s,n){const r=t.targetStart=s(""),o=t.targetAnchor=s("");return r[ro]=o,e&&(n(r,e),n(o,e)),o}const ji=Symbol("_leaveCb");function On(e,t){e.shapeFlag&6&&e.component?(e.transition=t,On(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 lo(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const ms=new WeakMap;function Ut(e,t,s,n,r=!1){if(M(e)){e.forEach((E,x)=>Ut(E,t&&(M(t)?t[x]:t),s,n,r));return}if(Ht(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Ut(e,t,s,n.component.subTree);return}const o=n.shapeFlag&4?Us(n.component):n.el,i=r?null:o,{i:l,r:c}=e,d=t&&t.r,f=l.refs===Z?l.refs={}:l.refs,h=l.setupState,g=B(h),v=h===Z?Ar:E=>G(g,E);if(d!=null&&d!==c){if(Jn(t),re(d))f[d]=null,v(d)&&(h[d]=null);else if(le(d)){d.value=null;const E=t;E.k&&(f[E.k]=null)}}if(U(c))Xt(c,l,12,[i,f]);else{const E=re(c),x=le(c);if(E||x){const $=()=>{if(e.f){const H=E?v(c)?h[c]:f[c]:c.value;if(r)M(H)&&_n(H,o);else if(M(H))H.includes(o)||H.push(o);else if(E)f[c]=[o],v(c)&&(h[c]=f[c]);else{const j=[o];c.value=j,e.k&&(f[e.k]=j)}}else E?(f[c]=i,v(c)&&(h[c]=i)):x&&(c.value=i,e.k&&(f[e.k]=i))};if(i){const H=()=>{$(),ms.delete(e)};H.id=-1,ms.set(e,H),me(H,s)}else Jn(e),$()}}}function Jn(e){const t=ms.get(e);t&&(t.flags|=8,ms.delete(e))}Is().requestIdleCallback;Is().cancelIdleCallback;const Ht=e=>!!e.type.__asyncLoader,co=e=>e.type.__isKeepAlive;function Wi(e,t){uo(e,"a",t)}function Bi(e,t){uo(e,"da",t)}function uo(e,t,s=pe){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Ns(t,n,s),s){let r=s.parent;for(;r&&r.parent;)co(r.parent.vnode)&&qi(n,t,s,r),r=r.parent}}function qi(e,t,s,n){const r=Ns(t,e,n,!0);ao(()=>{_n(n[t],r)},s)}function Ns(e,t,s=pe,n=!1){if(s){const r=s[e]||(s[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Je();const l=es(s),c=We(t,s,e,i);return l(),Ye(),c});return n?r.unshift(o):r.push(o),o}}const ze=e=>(t,s=pe)=>{(!zt||e==="sp")&&Ns(e,(...n)=>t(...n),s)},Ki=ze("bm"),fo=ze("m"),Gi=ze("bu"),Ji=ze("u"),Yi=ze("bum"),ao=ze("um"),zi=ze("sp"),Zi=ze("rtg"),Xi=ze("rtc");function Qi(e,t=pe){Ns("ec",e,t)}const ho="components";function el(e,t){return go(ho,e,!0,t)||e}const po=Symbol.for("v-ndc");function tl(e){return re(e)?go(ho,e,!1)||e:e||po}function go(e,t,s=!0,n=!1){const r=Ee||pe;if(r){const o=r.type;{const l=Bl(o,!1);if(l&&(l===t||l===Re(t)||l===Os(Re(t))))return o}const i=Yn(r[e]||o[e],t)||Yn(r.appContext[e],t);return!i&&n?o:i}}function Yn(e,t){return e&&(e[t]||e[Re(t)]||e[Os(Re(t))])}function Qt(e,t,s,n){let r;const o=s,i=M(e);if(i||re(e)){const l=i&&tt(e);let c=!1,d=!1;l&&(c=!Ie(e),d=nt(e),e=Ms(e)),r=new Array(e.length);for(let f=0,h=e.length;f<h;f++)r[f]=t(c?d?hs(fe(e[f])):fe(e[f]):e[f],f,void 0,o)}else if(typeof e=="number"){r=new Array(e);for(let l=0;l<e;l++)r[l]=t(l+1,l,void 0,o)}else if(X(e))if(e[Symbol.iterator])r=Array.from(e,(l,c)=>t(l,c,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,d=l.length;c<d;c++){const f=l[c];r[c]=t(e[f],f,c,o)}}else r=[];return r}const rn=e=>e?Do(e)?Us(e):rn(e.parent):null,Vt=ve(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=>rn(e.parent),$root:e=>rn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>mo(e),$forceUpdate:e=>e.f||(e.f=()=>{An(e.update)}),$nextTick:e=>e.n||(e.n=Ds.bind(e.proxy)),$watch:e=>Cl.bind(e)}),Gs=(e,t)=>e!==Z&&!e.__isScriptSetup&&G(e,t),sl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let d;if(t[0]!=="$"){const v=i[t];if(v!==void 0)switch(v){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return o[t]}else{if(Gs(n,t))return i[t]=1,n[t];if(r!==Z&&G(r,t))return i[t]=2,r[t];if((d=e.propsOptions[0])&&G(d,t))return i[t]=3,o[t];if(s!==Z&&G(s,t))return i[t]=4,s[t];on&&(i[t]=0)}}const f=Vt[t];let h,g;if(f)return t==="$attrs"&&de(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(s!==Z&&G(s,t))return i[t]=4,s[t];if(g=c.config.globalProperties,G(g,t))return g[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:o}=e;return Gs(r,t)?(r[t]=s,!0):n!==Z&&G(n,t)?(n[t]=s,!0):G(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,propsOptions:o,type:i}},l){let c,d;return!!(s[l]||e!==Z&&l[0]!=="$"&&G(e,l)||Gs(t,l)||(c=o[0])&&G(c,l)||G(n,l)||G(Vt,l)||G(r.config.globalProperties,l)||(d=i.__cssModules)&&d[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:G(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function zn(e){return M(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let on=!0;function nl(e){const t=mo(e),s=e.proxy,n=e.ctx;on=!1,t.beforeCreate&&Zn(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:d,created:f,beforeMount:h,mounted:g,beforeUpdate:v,updated:E,activated:x,deactivated:$,beforeDestroy:H,beforeUnmount:j,destroyed:z,unmounted:I,render:A,renderTracked:ue,renderTriggered:se,errorCaptured:L,serverPrefetch:S,expose:F,inheritAttrs:te,components:oe,directives:Ce,filters:Oe}=t;if(d&&rl(d,n,null),i)for(const N in i){const K=i[N];U(K)&&(n[N]=K.bind(s))}if(r){const N=r.call(s,s);X(N)&&(e.data=Fs(N))}if(on=!0,o)for(const N in o){const K=o[N],ge=U(K)?K.bind(s,s):U(K.get)?K.get.bind(s,s):Ve,_t=!U(K)&&U(K.set)?K.set.bind(s):Ve,ot=Pe({get:ge,set:_t});Object.defineProperty(n,N,{enumerable:!0,configurable:!0,get:()=>ot.value,set:$e=>ot.value=$e})}if(l)for(const N in l)_o(l[N],n,s,N);if(c){const N=U(c)?c.call(s):c;Reflect.ownKeys(N).forEach(K=>{fl(K,N[K])})}f&&Zn(f,e,"c");function D(N,K){M(K)?K.forEach(ge=>N(ge.bind(s))):K&&N(K.bind(s))}if(D(Ki,h),D(fo,g),D(Gi,v),D(Ji,E),D(Wi,x),D(Bi,$),D(Qi,L),D(Xi,ue),D(Zi,se),D(Yi,j),D(ao,I),D(zi,S),M(F))if(F.length){const N=e.exposed||(e.exposed={});F.forEach(K=>{Object.defineProperty(N,K,{get:()=>s[K],set:ge=>s[K]=ge,enumerable:!0})})}else e.exposed||(e.exposed={});A&&e.render===Ve&&(e.render=A),te!=null&&(e.inheritAttrs=te),oe&&(e.components=oe),Ce&&(e.directives=Ce),S&&lo(e)}function rl(e,t,s=Ve){M(e)&&(e=ln(e));for(const n in e){const r=e[n];let o;X(r)?"default"in r?o=jt(r.from||n,r.default,!0):o=jt(r.from||n):o=jt(r),le(o)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[n]=o}}function Zn(e,t,s){We(M(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function _o(e,t,s,n){let r=n.includes(".")?Po(s,n):()=>s[n];if(re(e)){const o=t[e];U(o)&&ht(r,o)}else if(U(e))ht(r,e.bind(s));else if(X(e))if(M(e))e.forEach(o=>_o(o,t,s,n));else{const o=U(e.handler)?e.handler.bind(s):t[e.handler];U(o)&&ht(r,o,e)}}function mo(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!s&&!n?c=t:(c={},r.length&&r.forEach(d=>ys(c,d,i,!0)),ys(c,t,i)),X(t)&&o.set(t,c),c}function ys(e,t,s,n=!1){const{mixins:r,extends:o}=t;o&&ys(e,o,s,!0),r&&r.forEach(i=>ys(e,i,s,!0));for(const i in t)if(!(n&&i==="expose")){const l=ol[i]||s&&s[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const ol={data:Xn,props:Qn,emits:Qn,methods:$t,computed:$t,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:$t,directives:$t,watch:ll,provide:Xn,inject:il};function Xn(e,t){return t?e?function(){return ve(U(e)?e.call(this,this):e,U(t)?t.call(this,this):t)}:t:e}function il(e,t){return $t(ln(e),ln(t))}function ln(e){if(M(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function _e(e,t){return e?[...new Set([].concat(e,t))]:t}function $t(e,t){return e?ve(Object.create(null),e,t):t}function Qn(e,t){return e?M(e)&&M(t)?[...new Set([...e,...t])]:ve(Object.create(null),zn(e),zn(t??{})):t}function ll(e,t){if(!e)return t;if(!t)return e;const s=ve(Object.create(null),e);for(const n in t)s[n]=_e(e[n],t[n]);return s}function yo(){return{app:null,config:{isNativeTag:Ar,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 cl=0;function ul(e,t){return function(n,r=null){U(n)||(n=ve({},n)),r!=null&&!X(r)&&(r=null);const o=yo(),i=new WeakSet,l=[];let c=!1;const d=o.app={_uid:cl++,_component:n,_props:r,_container:null,_context:o,_instance:null,version:Kl,get config(){return o.config},set config(f){},use(f,...h){return i.has(f)||(f&&U(f.install)?(i.add(f),f.install(d,...h)):U(f)&&(i.add(f),f(d,...h))),d},mixin(f){return o.mixins.includes(f)||o.mixins.push(f),d},component(f,h){return h?(o.components[f]=h,d):o.components[f]},directive(f,h){return h?(o.directives[f]=h,d):o.directives[f]},mount(f,h,g){if(!c){const v=d._ceVNode||ne(n,r);return v.appContext=o,g===!0?g="svg":g===!1&&(g=void 0),e(v,f,g),c=!0,d._container=f,f.__vue_app__=d,Us(v.component)}},onUnmount(f){l.push(f)},unmount(){c&&(We(l,d._instance,16),e(null,d._container),delete d._container.__vue_app__)},provide(f,h){return o.provides[f]=h,d},runWithContext(f){const h=dt;dt=d;try{return f()}finally{dt=h}}};return d}}let dt=null;function fl(e,t){if(pe){let s=pe.provides;const n=pe.parent&&pe.parent.provides;n===s&&(s=pe.provides=Object.create(n)),s[e]=t}}function jt(e,t,s=!1){const n=$o();if(n||dt){let r=dt?dt._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return s&&U(t)?t.call(n&&n.proxy):t}}function al(){return!!($o()||dt)}const bo={},vo=()=>Object.create(bo),So=e=>Object.getPrototypeOf(e)===bo;function dl(e,t,s,n=!1){const r={},o=vo();e.propsDefaults=Object.create(null),xo(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);s?e.props=n?r:Ci(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function hl(e,t,s,n){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=B(r),[c]=e.propsOptions;let d=!1;if((n||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h<f.length;h++){let g=f[h];if(ks(e.emitsOptions,g))continue;const v=t[g];if(c)if(G(o,g))v!==o[g]&&(o[g]=v,d=!0);else{const E=Re(g);r[E]=cn(c,l,E,v,e,!1)}else v!==o[g]&&(o[g]=v,d=!0)}}}else{xo(e,t,r,o)&&(d=!0);let f;for(const h in l)(!t||!G(t,h)&&((f=gt(h))===h||!G(t,f)))&&(c?s&&(s[h]!==void 0||s[f]!==void 0)&&(r[h]=cn(c,l,h,void 0,e,!0)):delete r[h]);if(o!==l)for(const h in o)(!t||!G(t,h))&&(delete o[h],d=!0)}d&&Ke(e.attrs,"set","")}function xo(e,t,s,n){const[r,o]=e.propsOptions;let i=!1,l;if(t)for(let c in t){if(Dt(c))continue;const d=t[c];let f;r&&G(r,f=Re(c))?!o||!o.includes(f)?s[f]=d:(l||(l={}))[f]=d:ks(e.emitsOptions,c)||(!(c in n)||d!==n[c])&&(n[c]=d,i=!0)}if(o){const c=B(s),d=l||Z;for(let f=0;f<o.length;f++){const h=o[f];s[h]=cn(r,c,h,d[h],e,!G(d,h))}}return i}function cn(e,t,s,n,r,o){const i=e[s];if(i!=null){const l=G(i,"default");if(l&&n===void 0){const c=i.default;if(i.type!==Function&&!i.skipFactory&&U(c)){const{propsDefaults:d}=r;if(s in d)n=d[s];else{const f=es(r);n=d[s]=c.call(null,t),f()}}else n=c;r.ce&&r.ce._setProp(s,n)}i[0]&&(o&&!l?n=!1:i[1]&&(n===""||n===gt(s))&&(n=!0))}return n}const pl=new WeakMap;function wo(e,t,s=!1){const n=s?pl:t.propsCache,r=n.get(e);if(r)return r;const o=e.props,i={},l=[];let c=!1;if(!U(e)){const f=h=>{c=!0;const[g,v]=wo(h,t,!0);ve(i,g),v&&l.push(...v)};!s&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return X(e)&&n.set(e,xt),xt;if(M(o))for(let f=0;f<o.length;f++){const h=Re(o[f]);er(h)&&(i[h]=Z)}else if(o)for(const f in o){const h=Re(f);if(er(h)){const g=o[f],v=i[h]=M(g)||U(g)?{type:g}:ve({},g),E=v.type;let x=!1,$=!0;if(M(E))for(let H=0;H<E.length;++H){const j=E[H],z=U(j)&&j.name;if(z==="Boolean"){x=!0;break}else z==="String"&&($=!1)}else x=U(E)&&E.name==="Boolean";v[0]=x,v[1]=$,(x||G(v,"default"))&&l.push(h)}}const d=[i,l];return X(e)&&n.set(e,d),d}function er(e){return e[0]!=="$"&&!Dt(e)}const Pn=e=>e==="_"||e==="_ctx"||e==="$stable",In=e=>M(e)?e.map(He):[He(e)],gl=(e,t,s)=>{if(t._n)return t;const n=Li((...r)=>In(t(...r)),s);return n._c=!1,n},Co=(e,t,s)=>{const n=e._ctx;for(const r in e){if(Pn(r))continue;const o=e[r];if(U(o))t[r]=gl(r,o,n);else if(o!=null){const i=In(o);t[r]=()=>i}}},To=(e,t)=>{const s=In(t);e.slots.default=()=>s},Eo=(e,t,s)=>{for(const n in t)(s||!Pn(n))&&(e[n]=t[n])},_l=(e,t,s)=>{const n=e.slots=vo();if(e.vnode.shapeFlag&32){const r=t._;r?(Eo(n,t,s),s&&Rr(n,"_",r,!0)):Co(t,n)}else t&&To(e,t)},ml=(e,t,s)=>{const{vnode:n,slots:r}=e;let o=!0,i=Z;if(n.shapeFlag&32){const l=t._;l?s&&l===1?o=!1:Eo(r,t,s):(o=!t.$stable,Co(t,r)),i=t}else t&&(To(e,t),i={default:1});if(o)for(const l in r)!Pn(l)&&i[l]==null&&delete r[l]},me=Ml;function yl(e){return bl(e)}function bl(e,t){const s=Is();s.__VUE__=!0;const{insert:n,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:d,setElementText:f,parentNode:h,nextSibling:g,setScopeId:v=Ve,insertStaticContent:E}=e,x=(u,a,p,b=null,_=null,m=null,T=void 0,C=null,w=!!a.dynamicChildren)=>{if(u===a)return;u&&!Mt(u,a)&&(b=ns(u),$e(u,_,m,!0),u=null),a.patchFlag===-2&&(w=!1,a.dynamicChildren=null);const{type:y,ref:R,shapeFlag:O}=a;switch(y){case Ls:$(u,a,p,b);break;case rt:H(u,a,p,b);break;case Ys:u==null&&j(a,p,b,T);break;case he:oe(u,a,p,b,_,m,T,C,w);break;default:O&1?A(u,a,p,b,_,m,T,C,w):O&6?Ce(u,a,p,b,_,m,T,C,w):(O&64||O&128)&&y.process(u,a,p,b,_,m,T,C,w,Pt)}R!=null&&_?Ut(R,u&&u.ref,m,a||u,!a):R==null&&u&&u.ref!=null&&Ut(u.ref,null,m,u,!0)},$=(u,a,p,b)=>{if(u==null)n(a.el=l(a.children),p,b);else{const _=a.el=u.el;a.children!==u.children&&d(_,a.children)}},H=(u,a,p,b)=>{u==null?n(a.el=c(a.children||""),p,b):a.el=u.el},j=(u,a,p,b)=>{[u.el,u.anchor]=E(u.children,a,p,b,u.el,u.anchor)},z=({el:u,anchor:a},p,b)=>{let _;for(;u&&u!==a;)_=g(u),n(u,p,b),u=_;n(a,p,b)},I=({el:u,anchor:a})=>{let p;for(;u&&u!==a;)p=g(u),r(u),u=p;r(a)},A=(u,a,p,b,_,m,T,C,w)=>{if(a.type==="svg"?T="svg":a.type==="math"&&(T="mathml"),u==null)ue(a,p,b,_,m,T,C,w);else{const y=u.el&&u.el._isVueCE?u.el:null;try{y&&y._beginPatch(),S(u,a,_,m,T,C,w)}finally{y&&y._endPatch()}}},ue=(u,a,p,b,_,m,T,C)=>{let w,y;const{props:R,shapeFlag:O,transition:P,dirs:k}=u;if(w=u.el=i(u.type,m,R&&R.is,R),O&8?f(w,u.children):O&16&&L(u.children,w,null,b,_,Js(u,m),T,C),k&&it(u,null,b,"created"),se(w,u,u.scopeId,T,b),R){for(const Q in R)Q!=="value"&&!Dt(Q)&&o(w,Q,null,R[Q],m,b);"value"in R&&o(w,"value",null,R.value,m),(y=R.onVnodeBeforeMount)&&Le(y,b,u)}k&&it(u,null,b,"beforeMount");const W=vl(_,P);W&&P.beforeEnter(w),n(w,a,p),((y=R&&R.onVnodeMounted)||W||k)&&me(()=>{y&&Le(y,b,u),W&&P.enter(w),k&&it(u,null,b,"mounted")},_)},se=(u,a,p,b,_)=>{if(p&&v(u,p),b)for(let m=0;m<b.length;m++)v(u,b[m]);if(_){let m=_.subTree;if(a===m||Ro(m.type)&&(m.ssContent===a||m.ssFallback===a)){const T=_.vnode;se(u,T,T.scopeId,T.slotScopeIds,_.parent)}}},L=(u,a,p,b,_,m,T,C,w=0)=>{for(let y=w;y<u.length;y++){const R=u[y]=C?Qe(u[y]):He(u[y]);x(null,R,a,p,b,_,m,T,C)}},S=(u,a,p,b,_,m,T)=>{const C=a.el=u.el;let{patchFlag:w,dynamicChildren:y,dirs:R}=a;w|=u.patchFlag&16;const O=u.props||Z,P=a.props||Z;let k;if(p&<(p,!1),(k=P.onVnodeBeforeUpdate)&&Le(k,p,a,u),R&&it(a,u,p,"beforeUpdate"),p&<(p,!0),(O.innerHTML&&P.innerHTML==null||O.textContent&&P.textContent==null)&&f(C,""),y?F(u.dynamicChildren,y,C,p,b,Js(a,_),m):T||K(u,a,C,null,p,b,Js(a,_),m,!1),w>0){if(w&16)te(C,O,P,p,_);else if(w&2&&O.class!==P.class&&o(C,"class",null,P.class,_),w&4&&o(C,"style",O.style,P.style,_),w&8){const W=a.dynamicProps;for(let Q=0;Q<W.length;Q++){const J=W[Q],Se=O[J],xe=P[J];(xe!==Se||J==="value")&&o(C,J,Se,xe,_,p)}}w&1&&u.children!==a.children&&f(C,a.children)}else!T&&y==null&&te(C,O,P,p,_);((k=P.onVnodeUpdated)||R)&&me(()=>{k&&Le(k,p,a,u),R&&it(a,u,p,"updated")},b)},F=(u,a,p,b,_,m,T)=>{for(let C=0;C<a.length;C++){const w=u[C],y=a[C],R=w.el&&(w.type===he||!Mt(w,y)||w.shapeFlag&198)?h(w.el):p;x(w,y,R,null,b,_,m,T,!0)}},te=(u,a,p,b,_)=>{if(a!==p){if(a!==Z)for(const m in a)!Dt(m)&&!(m in p)&&o(u,m,a[m],null,_,b);for(const m in p){if(Dt(m))continue;const T=p[m],C=a[m];T!==C&&m!=="value"&&o(u,m,C,T,_,b)}"value"in p&&o(u,"value",a.value,p.value,_)}},oe=(u,a,p,b,_,m,T,C,w)=>{const y=a.el=u?u.el:l(""),R=a.anchor=u?u.anchor:l("");let{patchFlag:O,dynamicChildren:P,slotScopeIds:k}=a;k&&(C=C?C.concat(k):k),u==null?(n(y,p,b),n(R,p,b),L(a.children||[],p,R,_,m,T,C,w)):O>0&&O&64&&P&&u.dynamicChildren?(F(u.dynamicChildren,P,p,_,m,T,C),(a.key!=null||_&&a===_.subTree)&&Rn(u,a,!0)):K(u,a,p,R,_,m,T,C,w)},Ce=(u,a,p,b,_,m,T,C,w)=>{a.slotScopeIds=C,u==null?a.shapeFlag&512?_.ctx.activate(a,p,b,T,w):Oe(a,p,b,_,m,T,w):Fe(u,a,w)},Oe=(u,a,p,b,_,m,T)=>{const C=u.component=Ul(u,b,_);if(co(u)&&(C.ctx.renderer=Pt),Hl(C,!1,T),C.asyncDep){if(_&&_.registerDep(C,D,T),!u.el){const w=C.subTree=ne(rt);H(null,w,a,p),u.placeholder=w.el}}else D(C,u,a,p,_,m,T)},Fe=(u,a,p)=>{const b=a.component=u.component;if(Il(u,a,p))if(b.asyncDep&&!b.asyncResolved){N(b,a,p);return}else b.next=a,b.update();else a.el=u.el,b.vnode=a},D=(u,a,p,b,_,m,T)=>{const C=()=>{if(u.isMounted){let{next:O,bu:P,u:k,parent:W,vnode:Q}=u;{const Ne=Ao(u);if(Ne){O&&(O.el=Q.el,N(u,O,T)),Ne.asyncDep.then(()=>{u.isUnmounted||C()});return}}let J=O,Se;lt(u,!1),O?(O.el=Q.el,N(u,O,T)):O=Q,P&&cs(P),(Se=O.props&&O.props.onVnodeBeforeUpdate)&&Le(Se,W,O,Q),lt(u,!0);const xe=sr(u),De=u.subTree;u.subTree=xe,x(De,xe,h(De.el),ns(De),u,_,m),O.el=xe.el,J===null&&Rl(u,xe.el),k&&me(k,_),(Se=O.props&&O.props.onVnodeUpdated)&&me(()=>Le(Se,W,O,Q),_)}else{let O;const{el:P,props:k}=a,{bm:W,m:Q,parent:J,root:Se,type:xe}=u,De=Ht(a);lt(u,!1),W&&cs(W),!De&&(O=k&&k.onVnodeBeforeMount)&&Le(O,J,a),lt(u,!0);{Se.ce&&Se.ce._def.shadowRoot!==!1&&Se.ce._injectChildStyle(xe);const Ne=u.subTree=sr(u);x(null,Ne,p,b,u,_,m),a.el=Ne.el}if(Q&&me(Q,_),!De&&(O=k&&k.onVnodeMounted)){const Ne=a;me(()=>Le(O,J,Ne),_)}(a.shapeFlag&256||J&&Ht(J.vnode)&&J.vnode.shapeFlag&256)&&u.a&&me(u.a,_),u.isMounted=!0,a=p=b=null}};u.scope.on();const w=u.effect=new Lr(C);u.scope.off();const y=u.update=w.run.bind(w),R=u.job=w.runIfDirty.bind(w);R.i=u,R.id=u.uid,w.scheduler=()=>An(R),lt(u,!0),y()},N=(u,a,p)=>{a.component=u;const b=u.vnode.props;u.vnode=a,u.next=null,hl(u,a.props,b,p),ml(u,a.children,p),Je(),Bn(u),Ye()},K=(u,a,p,b,_,m,T,C,w=!1)=>{const y=u&&u.children,R=u?u.shapeFlag:0,O=a.children,{patchFlag:P,shapeFlag:k}=a;if(P>0){if(P&128){_t(y,O,p,b,_,m,T,C,w);return}else if(P&256){ge(y,O,p,b,_,m,T,C,w);return}}k&8?(R&16&&Ot(y,_,m),O!==y&&f(p,O)):R&16?k&16?_t(y,O,p,b,_,m,T,C,w):Ot(y,_,m,!0):(R&8&&f(p,""),k&16&&L(O,p,b,_,m,T,C,w))},ge=(u,a,p,b,_,m,T,C,w)=>{u=u||xt,a=a||xt;const y=u.length,R=a.length,O=Math.min(y,R);let P;for(P=0;P<O;P++){const k=a[P]=w?Qe(a[P]):He(a[P]);x(u[P],k,p,null,_,m,T,C,w)}y>R?Ot(u,_,m,!0,!1,O):L(a,p,b,_,m,T,C,w,O)},_t=(u,a,p,b,_,m,T,C,w)=>{let y=0;const R=a.length;let O=u.length-1,P=R-1;for(;y<=O&&y<=P;){const k=u[y],W=a[y]=w?Qe(a[y]):He(a[y]);if(Mt(k,W))x(k,W,p,null,_,m,T,C,w);else break;y++}for(;y<=O&&y<=P;){const k=u[O],W=a[P]=w?Qe(a[P]):He(a[P]);if(Mt(k,W))x(k,W,p,null,_,m,T,C,w);else break;O--,P--}if(y>O){if(y<=P){const k=P+1,W=k<R?a[k].el:b;for(;y<=P;)x(null,a[y]=w?Qe(a[y]):He(a[y]),p,W,_,m,T,C,w),y++}}else if(y>P)for(;y<=O;)$e(u[y],_,m,!0),y++;else{const k=y,W=y,Q=new Map;for(y=W;y<=P;y++){const Te=a[y]=w?Qe(a[y]):He(a[y]);Te.key!=null&&Q.set(Te.key,y)}let J,Se=0;const xe=P-W+1;let De=!1,Ne=0;const It=new Array(xe);for(y=0;y<xe;y++)It[y]=0;for(y=k;y<=O;y++){const Te=u[y];if(Se>=xe){$e(Te,_,m,!0);continue}let ke;if(Te.key!=null)ke=Q.get(Te.key);else for(J=W;J<=P;J++)if(It[J-W]===0&&Mt(Te,a[J])){ke=J;break}ke===void 0?$e(Te,_,m,!0):(It[ke-W]=y+1,ke>=Ne?Ne=ke:De=!0,x(Te,a[ke],p,null,_,m,T,C,w),Se++)}const Nn=De?Sl(It):xt;for(J=Nn.length-1,y=xe-1;y>=0;y--){const Te=W+y,ke=a[Te],kn=a[Te+1],Ln=Te+1<R?kn.el||kn.placeholder:b;It[y]===0?x(null,ke,p,Ln,_,m,T,C,w):De&&(J<0||y!==Nn[J]?ot(ke,p,Ln,2):J--)}}},ot=(u,a,p,b,_=null)=>{const{el:m,type:T,transition:C,children:w,shapeFlag:y}=u;if(y&6){ot(u.component.subTree,a,p,b);return}if(y&128){u.suspense.move(a,p,b);return}if(y&64){T.move(u,a,p,Pt);return}if(T===he){n(m,a,p);for(let O=0;O<w.length;O++)ot(w[O],a,p,b);n(u.anchor,a,p);return}if(T===Ys){z(u,a,p);return}if(b!==2&&y&1&&C)if(b===0)C.beforeEnter(m),n(m,a,p),me(()=>C.enter(m),_);else{const{leave:O,delayLeave:P,afterLeave:k}=C,W=()=>{u.ctx.isUnmounted?r(m):n(m,a,p)},Q=()=>{m._isLeaving&&m[ji](!0),O(m,()=>{W(),k&&k()})};P?P(m,W,Q):Q()}else n(m,a,p)},$e=(u,a,p,b=!1,_=!1)=>{const{type:m,props:T,ref:C,children:w,dynamicChildren:y,shapeFlag:R,patchFlag:O,dirs:P,cacheIndex:k}=u;if(O===-2&&(_=!1),C!=null&&(Je(),Ut(C,null,p,u,!0),Ye()),k!=null&&(a.renderCache[k]=void 0),R&256){a.ctx.deactivate(u);return}const W=R&1&&P,Q=!Ht(u);let J;if(Q&&(J=T&&T.onVnodeBeforeUnmount)&&Le(J,a,u),R&6)qo(u.component,p,b);else{if(R&128){u.suspense.unmount(p,b);return}W&&it(u,null,a,"beforeUnmount"),R&64?u.type.remove(u,a,p,Pt,b):y&&!y.hasOnce&&(m!==he||O>0&&O&64)?Ot(y,a,p,!1,!0):(m===he&&O&384||!_&&R&16)&&Ot(w,a,p),b&&$n(u)}(Q&&(J=T&&T.onVnodeUnmounted)||W)&&me(()=>{J&&Le(J,a,u),W&&it(u,null,a,"unmounted")},p)},$n=u=>{const{type:a,el:p,anchor:b,transition:_}=u;if(a===he){Bo(p,b);return}if(a===Ys){I(u);return}const m=()=>{r(p),_&&!_.persisted&&_.afterLeave&&_.afterLeave()};if(u.shapeFlag&1&&_&&!_.persisted){const{leave:T,delayLeave:C}=_,w=()=>T(p,m);C?C(u.el,m,w):w()}else m()},Bo=(u,a)=>{let p;for(;u!==a;)p=g(u),r(u),u=p;r(a)},qo=(u,a,p)=>{const{bum:b,scope:_,job:m,subTree:T,um:C,m:w,a:y}=u;tr(w),tr(y),b&&cs(b),_.stop(),m&&(m.flags|=8,$e(T,u,a,p)),C&&me(C,a),me(()=>{u.isUnmounted=!0},a)},Ot=(u,a,p,b=!1,_=!1,m=0)=>{for(let T=m;T<u.length;T++)$e(u[T],a,p,b,_)},ns=u=>{if(u.shapeFlag&6)return ns(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const a=g(u.anchor||u.el),p=a&&a[ro];return p?g(p):a};let Vs=!1;const Dn=(u,a,p)=>{u==null?a._vnode&&$e(a._vnode,null,null,!0):x(a._vnode||null,u,a,null,null,null,p),a._vnode=u,Vs||(Vs=!0,Bn(),to(),Vs=!1)},Pt={p:x,um:$e,m:ot,r:$n,mt:Oe,mc:L,pc:K,pbc:F,n:ns,o:e};return{render:Dn,hydrate:void 0,createApp:ul(Dn)}}function Js({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 lt({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function vl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Rn(e,t,s=!1){const n=e.children,r=t.children;if(M(n)&&M(r))for(let o=0;o<n.length;o++){const i=n[o];let l=r[o];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=r[o]=Qe(r[o]),l.el=i.el),!s&&l.patchFlag!==-2&&Rn(i,l)),l.type===Ls&&l.patchFlag!==-1&&(l.el=i.el),l.type===rt&&!l.el&&(l.el=i.el)}}function Sl(e){const t=e.slice(),s=[0];let n,r,o,i,l;const c=e.length;for(n=0;n<c;n++){const d=e[n];if(d!==0){if(r=s[s.length-1],e[r]<d){t[n]=r,s.push(n);continue}for(o=0,i=s.length-1;o<i;)l=o+i>>1,e[s[l]]<d?o=l+1:i=l;d<e[s[o]]&&(o>0&&(t[n]=s[o-1]),s[o]=n)}}for(o=s.length,i=s[o-1];o-- >0;)s[o]=i,i=t[i];return s}function Ao(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ao(t)}function tr(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const xl=Symbol.for("v-scx"),wl=()=>jt(xl);function ht(e,t,s){return Oo(e,t,s)}function Oo(e,t,s=Z){const{immediate:n,deep:r,flush:o,once:i}=s,l=ve({},s),c=t&&n||!t&&o!=="post";let d;if(zt){if(o==="sync"){const v=wl();d=v.__watcherHandles||(v.__watcherHandles=[])}else if(!c){const v=()=>{};return v.stop=Ve,v.resume=Ve,v.pause=Ve,v}}const f=pe;l.call=(v,E,x)=>We(v,f,E,x);let h=!1;o==="post"?l.scheduler=v=>{me(v,f&&f.suspense)}:o!=="sync"&&(h=!0,l.scheduler=(v,E)=>{E?v():An(v)}),l.augmentJob=v=>{t&&(v.flags|=4),h&&(v.flags|=2,f&&(v.id=f.uid,v.i=f))};const g=$i(e,t,l);return zt&&(d?d.push(g):c&&g()),g}function Cl(e,t,s){const n=this.proxy,r=re(e)?e.includes(".")?Po(n,e):()=>n[e]:e.bind(n,n);let o;U(t)?o=t:(o=t.handler,s=t);const i=es(this),l=Oo(r,o.bind(n),s);return i(),l}function Po(e,t){const s=t.split(".");return()=>{let n=e;for(let r=0;r<s.length&&n;r++)n=n[s[r]];return n}}const Tl=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Re(t)}Modifiers`]||e[`${gt(t)}Modifiers`];function El(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||Z;let r=s;const o=t.startsWith("update:"),i=o&&Tl(n,t.slice(7));i&&(i.trim&&(r=s.map(f=>re(f)?f.trim():f)),i.number&&(r=s.map(Ps)));let l,c=n[l=js(t)]||n[l=js(Re(t))];!c&&o&&(c=n[l=js(gt(t))]),c&&We(c,e,6,r);const d=n[l+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,We(d,e,6,r)}}const Al=new WeakMap;function Io(e,t,s=!1){const n=s?Al:t.emitsCache,r=n.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!U(e)){const c=d=>{const f=Io(d,t,!0);f&&(l=!0,ve(i,f))};!s&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(X(e)&&n.set(e,null),null):(M(o)?o.forEach(c=>i[c]=null):ve(i,o),X(e)&&n.set(e,i),i)}function ks(e,t){return!e||!Ts(t)?!1:(t=t.slice(2).replace(/Once$/,""),G(e,t[0].toLowerCase()+t.slice(1))||G(e,gt(t))||G(e,t))}function sr(e){const{type:t,vnode:s,proxy:n,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:c,render:d,renderCache:f,props:h,data:g,setupState:v,ctx:E,inheritAttrs:x}=e,$=_s(e);let H,j;try{if(s.shapeFlag&4){const I=r||n,A=I;H=He(d.call(A,I,f,h,v,g,E)),j=l}else{const I=t;H=He(I.length>1?I(h,{attrs:l,slots:i,emit:c}):I(h,null)),j=t.props?l:Ol(l)}}catch(I){Wt.length=0,$s(I,e,1),H=ne(rt)}let z=H;if(j&&x!==!1){const I=Object.keys(j),{shapeFlag:A}=z;I.length&&A&7&&(o&&I.some(gn)&&(j=Pl(j,o)),z=Et(z,j,!1,!0))}return s.dirs&&(z=Et(z,null,!1,!0),z.dirs=z.dirs?z.dirs.concat(s.dirs):s.dirs),s.transition&&On(z,s.transition),H=z,_s($),H}const Ol=e=>{let t;for(const s in e)(s==="class"||s==="style"||Ts(s))&&((t||(t={}))[s]=e[s]);return t},Pl=(e,t)=>{const s={};for(const n in e)(!gn(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function Il(e,t,s){const{props:n,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,d=o.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&c>=0){if(c&1024)return!0;if(c&16)return n?nr(n,i,d):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;h<f.length;h++){const g=f[h];if(i[g]!==n[g]&&!ks(d,g))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:n===i?!1:n?i?nr(n,i,d):!0:!!i;return!1}function nr(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let r=0;r<n.length;r++){const o=n[r];if(t[o]!==e[o]&&!ks(s,o))return!0}return!1}function Rl({vnode:e,parent:t},s){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=s,t=t.parent;else break}}const Ro=e=>e.__isSuspense;function Ml(e,t){t&&t.pendingBranch?M(e)?t.effects.push(...e):t.effects.push(e):ki(e)}const he=Symbol.for("v-fgt"),Ls=Symbol.for("v-txt"),rt=Symbol.for("v-cmt"),Ys=Symbol.for("v-stc"),Wt=[];let Ae=null;function V(e=!1){Wt.push(Ae=e?null:[])}function Fl(){Wt.pop(),Ae=Wt[Wt.length-1]||null}let Yt=1;function bs(e,t=!1){Yt+=e,e<0&&Ae&&t&&(Ae.hasOnce=!0)}function Mo(e){return e.dynamicChildren=Yt>0?Ae||xt:null,Fl(),Yt>0&&Ae&&Ae.push(e),e}function Y(e,t,s,n,r,o){return Mo(q(e,t,s,n,r,o,!0))}function pt(e,t,s,n,r){return Mo(ne(e,t,s,n,r,!0))}function vs(e){return e?e.__v_isVNode===!0:!1}function Mt(e,t){return e.type===t.type&&e.key===t.key}const Fo=({key:e})=>e??null,fs=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||le(e)||U(e)?{i:Ee,r:e,k:t,f:!!s}:e:null);function q(e,t=null,s=null,n=0,r=null,o=e===he?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Fo(t),ref:t&&fs(t),scopeId:no,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:o,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Ee};return l?(Mn(c,s),o&128&&e.normalize(c)):s&&(c.shapeFlag|=re(s)?8:16),Yt>0&&!i&&Ae&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Ae.push(c),c}const ne=$l;function $l(e,t=null,s=null,n=0,r=null,o=!1){if((!e||e===po)&&(e=rt),vs(e)){const l=Et(e,t,!0);return s&&Mn(l,s),Yt>0&&!o&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(ql(e)&&(e=e.__vccOpts),t){t=Dl(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=st(l)),X(c)&&(Tn(c)&&!M(c)&&(c=ve({},c)),t.style=yn(c))}const i=re(e)?1:Ro(e)?128:Ui(e)?64:X(e)?4:U(e)?2:0;return q(e,t,s,n,r,i,o,!0)}function Dl(e){return e?Tn(e)||So(e)?ve({},e):e:null}function Et(e,t,s=!1,n=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,d=t?Nl(r||{},t):r,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&Fo(d),ref:t&&t.ref?s&&o?M(o)?o.concat(fs(t)):[o,fs(t)]:fs(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==he?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Et(e.ssContent),ssFallback:e.ssFallback&&Et(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&n&&On(f,c.clone(f)),f}function vt(e=" ",t=0){return ne(Ls,null,e,t)}function we(e="",t=!1){return t?(V(),pt(rt,null,e)):ne(rt,null,e)}function He(e){return e==null||typeof e=="boolean"?ne(rt):M(e)?ne(he,null,e.slice()):vs(e)?Qe(e):ne(Ls,null,String(e))}function Qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Et(e)}function Mn(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(M(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),Mn(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!So(t)?t._ctx=Ee:r===3&&Ee&&(Ee.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else U(t)?(t={default:t,_ctx:Ee},s=32):(t=String(t),n&64?(s=16,t=[vt(t)]):s=8);e.children=t,e.shapeFlag|=s}function Nl(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const r in n)if(r==="class")t.class!==n.class&&(t.class=st([t.class,n.class]));else if(r==="style")t.style=yn([t.style,n.style]);else if(Ts(r)){const o=t[r],i=n[r];i&&o!==i&&!(M(o)&&o.includes(i))&&(t[r]=o?[].concat(o,i):i)}else r!==""&&(t[r]=n[r])}return t}function Le(e,t,s,n=null){We(e,t,7,[s,n])}const kl=yo();let Ll=0;function Ul(e,t,s){const n=e.type,r=(t?t.appContext:e.appContext)||kl,o={uid:Ll++,vnode:e,type:n,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Dr(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:wo(n,r),emitsOptions:Io(n,r),emit:null,emitted:null,propsDefaults:Z,inheritAttrs:n.inheritAttrs,ctx:Z,data:Z,props:Z,attrs:Z,slots:Z,refs:Z,setupState:Z,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 o.ctx={_:o},o.root=t?t.root:o,o.emit=El.bind(null,o),e.ce&&e.ce(o),o}let pe=null;const $o=()=>pe||Ee;let Ss,un;{const e=Is(),t=(s,n)=>{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};Ss=t("__VUE_INSTANCE_SETTERS__",s=>pe=s),un=t("__VUE_SSR_SETTERS__",s=>zt=s)}const es=e=>{const t=pe;return Ss(e),e.scope.on(),()=>{e.scope.off(),Ss(t)}},rr=()=>{pe&&pe.scope.off(),Ss(null)};function Do(e){return e.vnode.shapeFlag&4}let zt=!1;function Hl(e,t=!1,s=!1){t&&un(t);const{props:n,children:r}=e.vnode,o=Do(e);dl(e,n,o,t),_l(e,r,s||t);const i=o?Vl(e,t):void 0;return t&&un(!1),i}function Vl(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,sl);const{setup:n}=s;if(n){Je();const r=e.setupContext=n.length>1?Wl(e):null,o=es(e),i=Xt(n,e,0,[e.props,r]),l=Or(i);if(Ye(),o(),(l||e.sp)&&!Ht(e)&&lo(e),l){if(i.then(rr,rr),t)return i.then(c=>{or(e,c)}).catch(c=>{$s(c,e,0)});e.asyncDep=i}else or(e,i)}else No(e)}function or(e,t,s){U(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:X(t)&&(e.setupState=Xr(t)),No(e)}function No(e,t,s){const n=e.type;e.render||(e.render=n.render||Ve);{const r=es(e);Je();try{nl(e)}finally{Ye(),r()}}}const jl={get(e,t){return de(e,"get",""),e[t]}};function Wl(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,jl),slots:e.slots,emit:e.emit,expose:t}}function Us(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Xr(En(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in Vt)return Vt[s](e)},has(t,s){return s in t||s in Vt}})):e.proxy}function Bl(e,t=!0){return U(e)?e.displayName||e.name:e.name||t&&e.__name}function ql(e){return U(e)&&"__vccOpts"in e}const Pe=(e,t)=>Mi(e,t,zt);function fn(e,t,s){try{bs(-1);const n=arguments.length;return n===2?X(t)&&!M(t)?vs(t)?ne(e,null,[t]):ne(e,t):ne(e,null,t):(n>3?s=Array.prototype.slice.call(arguments,2):n===3&&vs(s)&&(s=[s]),ne(e,t,s))}finally{bs(1)}}const Kl="3.5.23";let an;const ir=typeof window<"u"&&window.trustedTypes;if(ir)try{an=ir.createPolicy("vue",{createHTML:e=>e})}catch{}const ko=an?e=>an.createHTML(e):e=>e,Gl="http://www.w3.org/2000/svg",Jl="http://www.w3.org/1998/Math/MathML",qe=typeof document<"u"?document:null,lr=qe&&qe.createElement("template"),Yl={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"?qe.createElementNS(Gl,e):t==="mathml"?qe.createElementNS(Jl,e):s?qe.createElement(e,{is:s}):qe.createElement(e);return e==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:e=>qe.createTextNode(e),createComment:e=>qe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>qe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,r,o){const i=s?s.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),s),!(r===o||!(r=r.nextSibling)););else{lr.innerHTML=ko(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const l=lr.content;if(n==="svg"||n==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,s)}return[i?i.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},zl=Symbol("_vtc");function Zl(e,t,s){const n=e[zl];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const cr=Symbol("_vod"),Xl=Symbol("_vsh"),Ql=Symbol(""),ec=/(?:^|;)\s*display\s*:/;function tc(e,t,s){const n=e.style,r=re(s);let o=!1;if(s&&!r){if(t)if(re(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();s[l]==null&&as(n,l,"")}else for(const i in t)s[i]==null&&as(n,i,"");for(const i in s)i==="display"&&(o=!0),as(n,i,s[i])}else if(r){if(t!==s){const i=n[Ql];i&&(s+=";"+i),n.cssText=s,o=ec.test(s)}}else t&&e.removeAttribute("style");cr in e&&(e[cr]=o?n.display:"",e[Xl]&&(n.display="none"))}const ur=/\s*!important$/;function as(e,t,s){if(M(s))s.forEach(n=>as(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=sc(e,t);ur.test(s)?e.setProperty(gt(n),s.replace(ur,""),"important"):e[n]=s}}const fr=["Webkit","Moz","ms"],zs={};function sc(e,t){const s=zs[t];if(s)return s;let n=Re(t);if(n!=="filter"&&n in e)return zs[t]=n;n=Os(n);for(let r=0;r<fr.length;r++){const o=fr[r]+n;if(o in e)return zs[t]=o}return t}const ar="http://www.w3.org/1999/xlink";function dr(e,t,s,n,r,o=ti(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(ar,t.slice(6,t.length)):e.setAttributeNS(ar,t,s):s==null||o&&!Mr(s)?e.removeAttribute(t):e.setAttribute(t,o?"":je(s)?String(s):s)}function hr(e,t,s,n,r){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?ko(s):s);return}const o=e.tagName;if(t==="value"&&o!=="PROGRESS"&&!o.includes("-")){const l=o==="OPTION"?e.getAttribute("value")||"":e.value,c=s==null?e.type==="checkbox"?"on":"":String(s);(l!==c||!("_value"in e))&&(e.value=c),s==null&&e.removeAttribute(t),e._value=s;return}let i=!1;if(s===""||s==null){const l=typeof e[t];l==="boolean"?s=Mr(s):s==null&&l==="string"?(s="",i=!0):l==="number"&&(s=0,i=!0)}try{e[t]=s}catch{}i&&e.removeAttribute(r||t)}function ut(e,t,s,n){e.addEventListener(t,s,n)}function nc(e,t,s,n){e.removeEventListener(t,s,n)}const pr=Symbol("_vei");function rc(e,t,s,n,r=null){const o=e[pr]||(e[pr]={}),i=o[t];if(n&&i)i.value=n;else{const[l,c]=oc(t);if(n){const d=o[t]=cc(n,r);ut(e,l,d,c)}else i&&(nc(e,l,i,c),o[t]=void 0)}}const gr=/(?:Once|Passive|Capture)$/;function oc(e){let t;if(gr.test(e)){t={};let n;for(;n=e.match(gr);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):gt(e.slice(2)),t]}let Zs=0;const ic=Promise.resolve(),lc=()=>Zs||(ic.then(()=>Zs=0),Zs=Date.now());function cc(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;We(uc(n,s.value),t,5,[n])};return s.value=e,s.attached=lc(),s}function uc(e,t){if(M(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 _r=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,fc=(e,t,s,n,r,o)=>{const i=r==="svg";t==="class"?Zl(e,n,i):t==="style"?tc(e,s,n):Ts(t)?gn(t)||rc(e,t,s,n,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ac(e,t,n,i))?(hr(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&dr(e,t,n,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(n))?hr(e,Re(t),n,o,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),dr(e,t,n,i))};function ac(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&_r(t)&&U(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return _r(t)&&re(s)?!1:t in e}const xs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return M(t)?s=>cs(t,s):t};function dc(e){e.target.composing=!0}function mr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Tt=Symbol("_assign");function yr(e,t,s){return t&&(e=e.trim()),s&&(e=Ps(e)),e}const ws={created(e,{modifiers:{lazy:t,trim:s,number:n}},r){e[Tt]=xs(r);const o=n||r.props&&r.props.type==="number";ut(e,t?"change":"input",i=>{i.target.composing||e[Tt](yr(e.value,s,o))}),(s||o)&&ut(e,"change",()=>{e.value=yr(e.value,s,o)}),t||(ut(e,"compositionstart",dc),ut(e,"compositionend",mr),ut(e,"change",mr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:r,number:o}},i){if(e[Tt]=xs(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?Ps(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||r&&e.value.trim()===c)||(e.value=c))}},hc={deep:!0,created(e,{value:t,modifiers:{number:s}},n){const r=Es(t);ut(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>s?Ps(Cs(i)):Cs(i));e[Tt](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,Ds(()=>{e._assigning=!1})}),e[Tt]=xs(n)},mounted(e,{value:t}){br(e,t)},beforeUpdate(e,t,s){e[Tt]=xs(s)},updated(e,{value:t}){e._assigning||br(e,t)}};function br(e,t){const s=e.multiple,n=M(t);if(!(s&&!n&&!Es(t))){for(let r=0,o=e.options.length;r<o;r++){const i=e.options[r],l=Cs(i);if(s)if(n){const c=typeof l;c==="string"||c==="number"?i.selected=t.some(d=>String(d)===String(l)):i.selected=ni(t,l)>-1}else i.selected=t.has(l);else if(Rs(Cs(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Cs(e){return"_value"in e?e._value:e.value}const pc=ve({patchProp:fc},Yl);let vr;function gc(){return vr||(vr=yl(pc))}const _c=((...e)=>{const t=gc().createApp(...e),{mount:s}=t;return t.mount=n=>{const r=yc(n);if(!r)return;const o=t._component;!U(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=s(r,!1,mc(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t});function mc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function yc(e){return re(e)?document.querySelector(e):e}let Lo;const Hs=e=>Lo=e,Uo=Symbol();function dn(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Bt;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Bt||(Bt={}));function bc(){const e=Nr(!0),t=e.run(()=>ie({}));let s=[],n=[];const r=En({install(o){Hs(r),r._a=o,o.provide(Uo,r),o.config.globalProperties.$pinia=r,n.forEach(i=>s.push(i)),n=[]},use(o){return this._a?s.push(o):n.push(o),this},_p:s,_a:null,_e:e,_s:new Map,state:t});return r}const Ho=()=>{};function Sr(e,t,s,n=Ho){e.add(t);const r=()=>{e.delete(t)&&n()};return!s&&kr()&&ri(r),r}function yt(e,...t){e.forEach(s=>{s(...t)})}const vc=e=>e(),xr=Symbol(),Xs=Symbol();function hn(e,t){e instanceof Map&&t instanceof Map?t.forEach((s,n)=>e.set(n,s)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const s in t){if(!t.hasOwnProperty(s))continue;const n=t[s],r=e[s];dn(r)&&dn(n)&&e.hasOwnProperty(s)&&!le(n)&&!tt(n)?e[s]=hn(r,n):e[s]=n}return e}const Sc=Symbol();function xc(e){return!dn(e)||!Object.prototype.hasOwnProperty.call(e,Sc)}const{assign:Ze}=Object;function wc(e){return!!(le(e)&&e.effect)}function Cc(e,t,s,n){const{state:r,actions:o,getters:i}=t,l=s.state.value[e];let c;function d(){l||(s.state.value[e]=r?r():{});const f=Oi(s.state.value[e]);return Ze(f,o,Object.keys(i||{}).reduce((h,g)=>(h[g]=En(Pe(()=>{Hs(s);const v=s._s.get(e);return i[g].call(v,v)})),h),{}))}return c=Vo(e,d,t,s,n,!0),c}function Vo(e,t,s={},n,r,o){let i;const l=Ze({actions:{}},s),c={deep:!0};let d,f,h=new Set,g=new Set,v;const E=n.state.value[e];!o&&!E&&(n.state.value[e]={}),ie({});let x;function $(L){let S;d=f=!1,typeof L=="function"?(L(n.state.value[e]),S={type:Bt.patchFunction,storeId:e,events:v}):(hn(n.state.value[e],L),S={type:Bt.patchObject,payload:L,storeId:e,events:v});const F=x=Symbol();Ds().then(()=>{x===F&&(d=!0)}),f=!0,yt(h,S,n.state.value[e])}const H=o?function(){const{state:S}=s,F=S?S():{};this.$patch(te=>{Ze(te,F)})}:Ho;function j(){i.stop(),h.clear(),g.clear(),n._s.delete(e)}const z=(L,S="")=>{if(xr in L)return L[Xs]=S,L;const F=function(){Hs(n);const te=Array.from(arguments),oe=new Set,Ce=new Set;function Oe(N){oe.add(N)}function Fe(N){Ce.add(N)}yt(g,{args:te,name:F[Xs],store:A,after:Oe,onError:Fe});let D;try{D=L.apply(this&&this.$id===e?this:A,te)}catch(N){throw yt(Ce,N),N}return D instanceof Promise?D.then(N=>(yt(oe,N),N)).catch(N=>(yt(Ce,N),Promise.reject(N))):(yt(oe,D),D)};return F[xr]=!0,F[Xs]=S,F},I={_p:n,$id:e,$onAction:Sr.bind(null,g),$patch:$,$reset:H,$subscribe(L,S={}){const F=Sr(h,L,S.detached,()=>te()),te=i.run(()=>ht(()=>n.state.value[e],oe=>{(S.flush==="sync"?f:d)&&L({storeId:e,type:Bt.direct,events:v},oe)},Ze({},c,S)));return F},$dispose:j},A=Fs(I);n._s.set(e,A);const se=(n._a&&n._a.runWithContext||vc)(()=>n._e.run(()=>(i=Nr()).run(()=>t({action:z}))));for(const L in se){const S=se[L];if(le(S)&&!wc(S)||tt(S))o||(E&&xc(S)&&(le(S)?S.value=E[L]:hn(S,E[L])),n.state.value[e][L]=S);else if(typeof S=="function"){const F=z(S,L);se[L]=F,l.actions[L]=S}}return Ze(A,se),Ze(B(A),se),Object.defineProperty(A,"$state",{get:()=>n.state.value[e],set:L=>{$(S=>{Ze(S,L)})}}),n._p.forEach(L=>{Ze(A,i.run(()=>L({store:A,app:n._a,pinia:n,options:l})))}),E&&o&&s.hydrate&&s.hydrate(A.$state,E),d=!0,f=!0,A}function Fn(e,t,s){let n;const r=typeof t=="function";n=r?s:t;function o(i,l){const c=al();return i=i||(c?jt(Uo,null):null),i&&Hs(i),i=Lo,i._s.has(e)||(r?Vo(e,t,n,i):Cc(e,n,i)),i._s.get(e)}return o.$id=e,o}class Tc{constructor(t,{autoReconnect:s=!0,reconnectInterval:n=2e3}={}){this.url=t,this.socket=null,this.autoReconnect=s,this.reconnectInterval=n,this.eventHandlers={open:[],message:[],close:[],error:[]}}connect(){this.socket&&this.socket.close(),this.socket=new WebSocket(this.url),this.socket.onopen=()=>{this._emit("open")},this.socket.onmessage=t=>{try{const s=JSON.parse(t.data);console.log("Received message:",s),this._emit("message",s)}catch{this._emit("message",t.data)}},this.socket.onerror=t=>{this._emit("error",t)},this.socket.onclose=()=>{this._emit("close"),this.autoReconnect&&setTimeout(()=>this.connect(),this.reconnectInterval)}}send(t){this.socket&&this.socket.readyState===WebSocket.OPEN?this.socket.send(JSON.stringify(t)):console.warn("WebSocket non connesso, messaggio scartato:",t)}on(t,s){this.eventHandlers[t]&&this.eventHandlers[t].push(s)}off(t,s){this.eventHandlers[t]&&(this.eventHandlers[t]=this.eventHandlers[t].filter(n=>n!==s))}_emit(t,s){for(const n of this.eventHandlers[t]||[])n(s)}disconnect(){this.autoReconnect=!1,this.socket&&(this.socket.close(),this.socket=null)}}let St=null;function Ec(e){return St||(console.log("initWebSocket called with",e),St=new Tc(e),St.connect()),St}function jo(){if(!St)throw new Error("WebSocket non inizializzato!");return St}const ft=Object.freeze({IDLE:"idle",RUNNING:"running",PAUSED:"paused"});function Ac(){return{status:null,result:null,startTimestamp:null,endTimestamp:null,info:null}}const Wo=Fn("toast",{state:()=>({toasts:[]}),actions:{push(e){const t=Date.now()+Math.random();this.toasts.push({id:t,title:e.title||"",message:e.message||"",severity:e.severity||"info",timeout:e.timeout??4e3}),setTimeout(()=>{this.remove(t)},e.timeout??4e3)},remove(e){this.toasts=this.toasts.filter(t=>t.id!==e)}}}),ts=Fn("ws",()=>{const e=ie(!1),t=ie(null),s=ie(null),n=ie([]),r=ie([]),o=ie(null),i=ie(ft.IDLE),l=ie({}),c=ie(!1),d=ie(0),f=ie(!1),h=ie(null),g=ie(!1);let v=!1;const E=Wo(),x=jo();x.on("open",()=>{e.value=!0,v=!0,x.send({cmd:"query_process_models",args:{}}),x.send({cmd:"query_seq_files",args:{}}),x.send({cmd:"get_runtime_control",args:{}})}),x.on("close",()=>{e.value=!1,v&&E.push({title:"Disconnected",message:"Backend connection lost",severity:"error"})}),x.on("error",A=>{s.value=A,console.error("WebSocket error:",A)}),x.on("message",A=>{if(A){if(A.cmd==="display_modal_popup"&&j(A.args),A.cmd==="set_available_process_models"&&(n.value=A.args),A.cmd==="set_available_seq_files"&&(r.value=A.args),A.cmd==="display_seq_structure"&&(o.value=A.args),A.cmd==="set_run_status"&&(i.value=A.args,i.value===ft.RUNNING)){let S=function(F){if(!F)return;if(F._exec)try{delete F._exec}catch{F._exec=void 0}const te=["Setup","Main","Cleanup"];for(const oe of te)(F[oe]?.Steps??[]).forEach(Ce=>S(Ce));(F.Steps??[]).forEach(oe=>S(oe)),Array.isArray(F.Sequences)&&F.Sequences.forEach(oe=>S(oe))};var ue=S;if(l.value={},t.value=null,o.value){S(o.value);try{o.value=typeof structuredClone=="function"?structuredClone(o.value):JSON.parse(JSON.stringify(o.value))}catch{o.value=Object.assign({},o.value)}}}if(A.cmd==="update_step_status"){const S=A.args,F=S.StepUUID;if(!F)return console.error("StepExecution missing StepUUID",S);l.value[F]||(l.value[F]=Ac());const te=l.value[F];te.status=S.Status||te.status,S.Timestamp&&(S.Status==="started"&&(te.startTimestamp=S.Timestamp),S.Status==="finished"&&(te.endTimestamp=S.Timestamp)),S.Result&&(te.result=S.Result),S.Info&&(te.info=S.Info);try{let Oe=function(D){if(D){D._exec?.selected&&(D._exec.selected=!1);for(const N of["Setup","Main","Cleanup"]){const K=D[N]?.Steps??[];for(const ge of K)Oe(ge)}(D.Steps??[]).forEach(N=>Oe(N)),Array.isArray(D.Sequences)&&D.Sequences.forEach(N=>Oe(N))}},Fe=function(D){if(!D)return!1;const N=D.UUID||D.uuid;if(N&&String(N).toLowerCase()===oe)return D._exec=D._exec||{},D._exec.status=S.Status,S.Result&&(D._exec.result=S.Result),S.Timestamp&&(D._exec.timestamp=S.Timestamp),S.Info&&(D._exec.info=S.Info),S.SelectStepOnGUI===!0&&(Oe(o.value),D._exec.selected=!0),S.Status==="started"&&(Oe(o.value),D._exec.selected=!0),Ce=!0,!0;const K=["Setup","Main","Cleanup"];for(const ge of K)if((D[ge]?.Steps??[]).some(_t=>Fe(_t)))return!0;return!!((D.Steps??[]).some(ge=>Fe(ge))||Array.isArray(D.Sequences)&&D.Sequences.some(ge=>Fe(ge)))};var se=Oe,L=Fe;const oe=String(F).toLowerCase();let Ce=!1;o.value&&Fe(o.value),Ce||console.warn("Step UUID not found in sequenceStructure",F)}catch(oe){console.error("Failed to update sequenceStructure",oe)}t.value={id:F,SelectStepOnGUI:S.SelectStepOnGUI,status:l.value[F]}}if(A.cmd==="runtime_control_updated"){const S=!!A.args?.paused,F=c.value;c.value=S,d.value=A.args?.throttle_ms??d.value,S?i.value=ft.PAUSED:i.value===ft.PAUSED&&(i.value=ft.RUNNING),S!==F&&E.push({title:S?"Paused":"Resumed",message:S?"Test execution has been paused":"Test execution resumed",severity:"info"})}if(A.cmd==="report_generated"&&(g.value=!0),A.cmd==="open_report_inline"){const S=window.open("","_blank");S.document.open(),S.document.write(A.args.html),S.document.close()}A.cmd==="backend_error"&&E.push({title:A.args.title,message:A.args.message,severity:A.args.severity})}});const $=A=>{A?.cmd==="start_run"&&(l.value={},c.value=!1),x?.send(A)},H=A=>l.value[A]||null,j=A=>{h.value=A,f.value=!0};return{isConnected:e,error:s,runStatus:i,paused:c,throttle:d,lastStepUpdateEvent:t,stepStatus:l,getStepExecution:H,processModels:n,seqFiles:r,hasLastReport:g,isModalVisible:f,modalContent:h,sequenceStructure:o,showModal:j,hideModal:()=>{h.value=null,f.value=!1},send:$,disconnect:()=>{x?.disconnect(),e.value=!1}}});const wr=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Oc=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,s,n)=>n?n.toUpperCase():s.toLowerCase()),Pc=e=>{const t=Oc(e);return t.charAt(0).toUpperCase()+t.slice(1)},Ic=(...e)=>e.filter((t,s,n)=>!!t&&t.trim()!==""&&n.indexOf(t)===s).join(" ").trim(),Cr=e=>e==="";var Ft={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const Rc=({name:e,iconNode:t,absoluteStrokeWidth:s,"absolute-stroke-width":n,strokeWidth:r,"stroke-width":o,size:i=Ft.width,color:l=Ft.stroke,...c},{slots:d})=>fn("svg",{...Ft,...c,width:i,height:i,stroke:l,"stroke-width":Cr(s)||Cr(n)||s===!0||n===!0?Number(r||o||Ft["stroke-width"])*24/Number(i):r||o||Ft["stroke-width"],class:Ic("lucide",c.class,...e?[`lucide-${wr(Pc(e))}-icon`,`lucide-${wr(e)}`]:["lucide-icon"])},[...t.map(f=>fn(...f)),...d.default?[d.default()]:[]]);const At=(e,t)=>(s,{slots:n,attrs:r})=>fn(Rc,{...r,...s,iconNode:t,name:e},n);const Mc=At("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);const Fc=At("circle-pause",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]]);const $c=At("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);const Dc=At("list-checks",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]]);const Tr=At("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);const Nc=At("square-stop",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]),ss=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s},kc={class:"modal-overlay"},Lc={class:"modal-content"},Uc={class:"list"},Hc=["onClick"],Vc={class:"modal-actions"},jc=["disabled"],Wc={__name:"FileSelector",props:{files:{type:Array,default:()=>[]},actions:{type:Object,default:()=>({select:null,cancel:null})},title:{type:String,default:"Select a File"}},emits:["close"],setup(e,{emit:t}){const s=e,n=t,r=ie(""),o=ie(null),i=Pe(()=>s.files.filter(f=>f.toLowerCase().includes(r.value.toLowerCase()))),l=f=>{o.value=f},c=()=>{o.value&&typeof s.actions.select=="function"&&s.actions.select(o.value),n("close")},d=()=>{typeof s.actions.cancel=="function"&&s.actions.cancel(),n("close")};return(f,h)=>(V(),Y("div",kc,[q("div",Lc,[q("h3",null,be(e.title),1),Jt(q("input",{"onUpdate:modelValue":h[0]||(h[0]=g=>r.value=g),type:"text",placeholder:"Search files...",class:"search"},null,512),[[ws,r.value]]),q("div",Uc,[(V(!0),Y(he,null,Qt(i.value,g=>(V(),Y("div",{key:g,class:st({selected:o.value===g}),onClick:v=>l(g)},be(g),11,Hc))),128))]),q("button",{class:"close-button",onClick:d},"×"),q("div",Vc,[q("button",{onClick:c,disabled:!o.value},"Select",8,jc),q("button",{onClick:d},"Cancel")])])]))}},Bc=ss(Wc,[["__scopeId","data-v-35961bca"]]),qc={__name:"SeqFileSelector",emits:["close"],setup(e,{emit:t}){const s=ts(),n=t,r=(i=>{const l={cmd:"get_seq_structure",args:{file_name:i}};s.send(l),n("close")}),o=(()=>{n("close")});return(i,l)=>(V(),pt(Bc,{files:ce(s).seqFiles,actions:{select:r,cancel:o},title:"Choose a config file"},null,8,["files","actions"]))}},Kc="/assets/full_logo-D1DRTUt8.svg";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Er=()=>{};function Gc(e,t){function s(...n){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(o)})}return s}function Jc(e,t={}){let s,n,r=Er;const o=c=>{clearTimeout(c),r(),r=Er};let i;return c=>{const d=Wn(e),f=Wn(t.maxWait);return s&&o(s),d<=0||f!==void 0&&f<=0?(n&&(o(n),n=void 0),Promise.resolve(c())):new Promise((h,g)=>{r=t.rejectOnCancel?g:h,i=c,f&&!n&&(n=setTimeout(()=>{s&&o(s),n=void 0,h(i())},f)),s=setTimeout(()=>{n&&o(n),n=void 0,h(c())},d)})}}function Yc(e,t=200,s={}){return Gc(Jc(t,s),e)}const zc=["src"],Zc={class:"controls"},Xc={class:"select-wrapper"},Qc=["disabled"],eu=["value"],tu=["disabled"],su=["disabled"],nu=["disabled"],ru=["disabled"],ou={class:"input-group"},iu=["disabled"],lu={__name:"RunPanel",setup(e){const t=ts(),s=ie(""),n=ie(!1),r=Pe(()=>t.runStatus===ft.RUNNING||t.runStatus===ft.PAUSED);ht(s,E=>{E&&t.send({cmd:"select_process_model",args:{name:E}})});function o(){n.value=!0}const i=()=>{const E={cmd:"start_run"};t.send(E)},l=()=>{t.send({cmd:"stop_requested"})},c=()=>{t.paused?t.send({cmd:"resume"}):t.send({cmd:"pause"})},d=()=>{t.send({cmd:"open_last_report"})},f=Pe(()=>t.paused?"Resume":"Pause"),h=Pe(()=>t.paused?Tr:Fc),g=Pe({get:()=>t.throttle??"",set:E=>v(Number(E))}),v=Yc(E=>{t.send({cmd:"set_throttle",args:{throttle_ms:E}})},200);return(E,x)=>(V(),Y(he,null,[q("div",{class:st(["panel",{disabled:!ce(t).isConnected}])},[q("img",{src:ce(Kc),alt:"Logo",width:"100"},null,8,zc),q("div",Zc,[q("div",Xc,[Jt(q("select",{"onUpdate:modelValue":x[0]||(x[0]=$=>s.value=$),disabled:r.value,required:"",class:st({"placeholder-shown":!s.value})},[x[3]||(x[3]=q("option",{disabled:"",value:""},"Select Model",-1)),(V(!0),Y(he,null,Qt(ce(t).processModels,$=>(V(),Y("option",{key:$,value:$},be($),9,eu))),128))],10,Qc),[[hc,s.value]]),ne(ce(Mc),{class:"select-arrow"})]),q("button",{onClick:o,disabled:!s.value||r.value},[ne(ce($c)),x[4]||(x[4]=vt("Open Sequence File ",-1))],8,tu),q("button",{onClick:i,disabled:!ce(t).sequenceStructure||r.value},[ne(ce(Tr)),x[5]||(x[5]=vt("Start run ",-1))],8,su),q("button",{disabled:!r.value,onClick:l},[ne(ce(Nc)),x[6]||(x[6]=vt("Stop ",-1))],8,nu),q("button",{disabled:!r.value,onClick:c},[(V(),pt(tl(h.value))),vt(be(f.value),1)],8,ru),q("div",ou,[x[7]||(x[7]=q("label",{for:"step-delay"},"Inter-step delay (ms)",-1)),Jt(q("input",{type:"number",id:"step-delay","onUpdate:modelValue":x[1]||(x[1]=$=>g.value=$),min:"0"},null,512),[[ws,g.value]])]),q("button",{disabled:!ce(t).hasLastReport,onClick:d},[ne(ce(Dc)),x[8]||(x[8]=vt("Open Last Report ",-1))],8,iu)])],2),n.value?(V(),pt(qc,{key:0,onClose:x[2]||(x[2]=$=>n.value=!1)})):we("",!0)],64))}},cu=ss(lu,[["__scopeId","data-v-340416f0"]]),uu={class:"tree-item"},fu=["data-uuid"],au={key:0,class:"chevron"},du={class:"label"},hu={class:"info-text"},pu={key:1,class:"type-badge"},gu={key:2,class:"empty-label"},_u={key:0,class:"tree-children"},mu={__name:"StepNode",props:{node:{type:Object,required:!0},expandAll:{type:Boolean,default:!1}},setup(e){const t=e,s=ie(t.expandAll),n=Pe(()=>Array.isArray(t.node.children)&&t.node.children.length>0),r=Pe(()=>t.node.empty===!0),o=Pe(()=>{const c=t.node.stepRef&&t.node.stepRef._exec?t.node.stepRef._exec:null,d=c&&c.status||t.node.status||null;if(!d)return null;const f=String(d).toLowerCase();if(f==="started")return"started";if(f==="finished"||f==="done"){const h=c&&(c.result||c.Result)?c.result||c.Result:t.node.result||null;if(!h)return"finished";const g=String(h).toLowerCase(),v=["pass","passed","done","ok","success"],E=["fail","failed","nok","error"];return v.includes(g)?"passed":E.includes(g)?"failed":"finished"}return f}),i=Pe(()=>t.node.stepRef&&t.node.stepRef._exec&&t.node.stepRef._exec.selected||t.node.selected||!1);ht(()=>t.expandAll,c=>{s.value=c});function l(){n.value&&(s.value=!s.value)}return(c,d)=>{const f=el("StepNode",!0);return V(),Y("li",uu,[q("div",{class:st(["tree-row",{empty:r.value,selected:i.value,"status-started":o.value==="started","status-passed":o.value==="passed","status-failed":o.value==="failed"}]),"data-uuid":e.node.uuid,onClick:l},[n.value?(V(),Y("span",au,be(s.value?"▼":"▶"),1)):we("",!0),q("span",du,be(e.node.label),1),q("span",hu,be(e.node.stepRef?._exec?.info||e.node.info||""),1),e.node.kind==="step"&&e.node.type?(V(),Y("span",pu,be(e.node.type),1)):we("",!0),r.value?(V(),Y("span",gu," (vuoto) ")):we("",!0)],10,fu),n.value&&s.value?(V(),Y("ul",_u,[(V(!0),Y(he,null,Qt(e.node.children,(h,g)=>(V(),pt(f,{key:g,node:h,"expand-all":e.expandAll},null,8,["node","expand-all"]))),128))])):we("",!0)])}}},yu=ss(mu,[["__scopeId","data-v-185ac474"]]),bu={class:"panel"},vu={key:0},Su={__name:"SeqViewer",setup(e){const t=ts();function s(r){if(!r)return null;const o={label:r.Name||r.name||r.type,kind:"sequence",uuid:r.uuid,stepRef:r,info:r.Info||r.info,children:[]};return["Setup","Main","Cleanup"].forEach(i=>{const l=r[i]?.Steps??[],c={label:i,kind:"section",empty:l.length===0,children:[]};l.length&&(c.children=l.map(d=>{if(d.type==="sub_sequence")return s(d);const f=d.UUID||d.uuid;return{label:d.Name||d.name,kind:"step",type:d.Type||d.type,info:d.Info||d.info,uuid:f,stepRef:d,children:[]}})),o.children.push(c)}),o}const n=Pe(()=>t.sequenceStructure?s(t.sequenceStructure):null);return ht(()=>t.lastStepUpdateEvent,r=>{if(!r)return;r.id;const o=r.id;o&&Ds(()=>{try{const i=document.querySelector(`[data-uuid="${o}"]`);i&&(r.SelectStepOnGUI===!0||r.status?.status==="started")?i.scrollIntoView({behavior:"smooth",block:"center"}):i||(console.warn("No element found for StepUUID",o),console.warn("Current tree root label:",n.value?.label))}catch(i){console.warn("Scroll to selected failed",i)}})}),(r,o)=>(V(),Y("div",bu,[n.value?(V(),Y("ul",vu,[ne(yu,{node:n.value,"expand-all":!0},null,8,["node"])])):we("",!0)]))}},xu={class:"toast-container"},wu=["onClick"],Cu={key:0},Tu={class:"message"},Eu={__name:"ToastContainer",setup(e){const t=Wo();return(s,n)=>(V(),pt(Vi,{to:"body"},[q("div",xu,[(V(!0),Y(he,null,Qt(ce(t).toasts,r=>(V(),Y("div",{key:r.id,class:st(["toast",r.severity])},[q("button",{class:"close",onClick:o=>ce(t).remove(r.id)},"×",8,wu),r.title?(V(),Y("strong",Cu,be(r.title),1)):we("",!0),q("div",Tu,be(r.message),1)],2))),128))])]))}},Au=ss(Eu,[["__scopeId","data-v-0bd7054f"]]),Ou={class:"modal-overlay"},Pu={class:"modal-content"},Iu={key:0},Ru={key:0},Mu={key:1},Fu={key:2,class:"response-box"},$u={key:3},Du={key:1,class:"modal-actions"},Nu=["onClick"],ku={__name:"Modal",props:{content:{type:[Object,String,Array,Number,Boolean],default:null},buttons:{type:Array,default:()=>[]}},setup(e){const t=ts(),s=ie(""),n=((r,o)=>{const i={cmd:"user_response",args:{request_id:o,button_pressed:r,response_text:s.value}};t.send(i),t.hideModal()});return(r,o)=>(V(),Y("div",Ou,[q("div",Pu,[e.content&&e.content.popup_data?(V(),Y("div",Iu,[e.content.popup_data.title?(V(),Y("h3",Ru,be(e.content.popup_data.title),1)):we("",!0),e.content.popup_data.msg?(V(),Y("p",Mu,be(e.content.popup_data.msg),1)):we("",!0),e.content.popup_data.isResponseBoxVisible?(V(),Y("div",Fu,[e.content.popup_data.isMultiline?Jt((V(),Y("textarea",{key:0,"onUpdate:modelValue":o[0]||(o[0]=i=>s.value=i)},null,512)),[[ws,s.value]]):Jt((V(),Y("input",{key:1,type:"text","onUpdate:modelValue":o[1]||(o[1]=i=>s.value=i)},null,512)),[[ws,s.value]])])):we("",!0),typeof e.content.popup_data!="object"||!e.content.popup_data.title&&!e.content.popup_data.msg?(V(),Y("pre",$u,""+be(JSON.stringify(e.content.popup_data,null,2))+`
|
|
2
|
+
`,1)):we("",!0)])):we("",!0),e.buttons.length>0?(V(),Y("div",Du,[(V(!0),Y(he,null,Qt(e.buttons,i=>(V(),Y("button",{key:i,onClick:l=>n(i,e.content.request_id)},be(i),9,Nu))),128))])):we("",!0)])]))}},Lu=ss(ku,[["__scopeId","data-v-9be45046"]]),Uu={class:"top-row"},Hu={__name:"App",setup(e){const t=ts();return fo(()=>{jo()}),(s,n)=>(V(),Y(he,null,[q("div",Uu,[ne(cu)]),ne(Su),ne(Au),ce(t).isModalVisible?(V(),pt(Lu,{key:0,content:ce(t).modalContent,buttons:ce(t).modalContent?.popup_data.buttons,onClose:n[0]||(n[0]=r=>ce(t).hideModal())},null,8,["content","buttons"])):we("",!0)],64))}},Vu=Fn("config",{state:()=>({wsPort:null,loaded:!1}),actions:{async loadConfig(){try{const e=await fetch("/config.json");console.log("Config response:",e);const t=await e.json();this.wsPort=t.wsPort,this.loaded=!0}catch(e){console.error("Failed to load config:",e)}}}});async function ju(){console.log("Bootstrap start");const e=_c(Hu),t=bc();e.use(t);const s=Vu();await s.loadConfig?.();const n=`ws://${window.location.hostname}:${s.wsPort}/ws`;console.log("Calling initWebSocket with",n),Ec(n),e.mount("#app"),console.log("App mounted")}ju();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.modal-overlay[data-v-35961bca]{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content[data-v-35961bca]{background:#fff;padding:20px;border-radius:8px;min-width:400px;max-width:80%;position:relative;box-shadow:0 4px 6px #0000001a}.modal-content h3[data-v-35961bca]{margin-bottom:20px}.close-button[data-v-35961bca]{position:absolute;top:10px;right:10px;background:none!important;font-size:1.5rem;color:#6b7280}.modal-actions[data-v-35961bca]{margin-top:20px;padding-top:15px;border-top:1px solid #e5e7eb;display:flex;gap:10px}.modal-actions button[data-v-35961bca]{flex:1;justify-content:center}.search[data-v-35961bca]{width:100%;padding:8px 12px;margin-bottom:12px;border-radius:6px;border:1px solid #d1d5db;box-sizing:border-box;font-size:.9rem}.list[data-v-35961bca]{height:300px;overflow-y:auto;border:1px solid #d1d5db;border-radius:6px}.list div[data-v-35961bca]{padding:10px 12px;cursor:pointer;transition:background-color .2s}.list div[data-v-35961bca]{border:1px solid #e5e7eb}.list div[data-v-35961bca]:first-child{border-top:none}.list div[data-v-35961bca]:hover{background-color:#f3f4f6}.list div.selected[data-v-35961bca]{background-color:#0366d6;color:#fff;font-weight:500}.panel[data-v-340416f0]{display:flex;align-items:center;gap:32px}.controls[data-v-340416f0]{display:flex;align-items:center;gap:12px;flex-grow:1}.panel-header[data-v-340416f0]{display:flex;justify-content:flex-end;padding:4px 4px 0 0}.controls button[data-v-340416f0]{min-width:120px;justify-content:center;gap:12px;height:40px}.select-wrapper[data-v-340416f0]{height:40px}.select-wrapper[data-v-340416f0]{position:relative;display:inline-flex;align-items:center}.select-wrapper select[data-v-340416f0]{appearance:none;-webkit-appearance:none;-moz-appearance:none;display:inline-flex;align-items:center;gap:6px;padding:0 32px 0 12px;border-radius:6px;border:0;background:#0366d6;color:#fff;cursor:pointer;font-size:13px;min-width:120px;justify-content:center;height:100%}.select-wrapper select.placeholder-shown[data-v-340416f0]{color:silver}.select-wrapper select[data-v-340416f0]:hover:not(:disabled){background:#0256c7}.select-wrapper select[data-v-340416f0]:disabled{opacity:.5;cursor:not-allowed}.select-arrow[data-v-340416f0]{position:absolute;right:10px;color:#fff;pointer-events:none}.paused-label[data-v-340416f0]{font-weight:700;color:#d9534f;margin-right:12px}.input-group[data-v-340416f0]{display:flex;align-items:center;gap:8px;background:#0366d6;color:#fff;padding:0 12px;border-radius:6px;height:40px;font-size:13px}.input-group input[data-v-340416f0]{width:50px;background-color:#fff;color:#111827;border:0;border-radius:4px;padding:4px;text-align:right}.tree-item[data-v-185ac474]{list-style:none;margin:2px 0}.tree-row[data-v-185ac474]{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;background:#f5f7fa;cursor:pointer;-webkit-user-select:none;user-select:none}.tree-row[data-v-185ac474]:hover{background:#e6ebf2}.tree-row.selected[data-v-185ac474]{background:#fff2cc;border-left:4px solid #b45309;box-shadow:0 1px #b453090f}.tree-row.empty[data-v-185ac474]{opacity:.45;font-style:italic;cursor:default}.chevron[data-v-185ac474]{width:14px;text-align:center;font-size:12px;color:#555}.label[data-v-185ac474]{font-family:monospace;font-size:13px;white-space:nowrap}.info-text[data-v-185ac474]{flex:1;text-align:center;font-family:monospace;font-size:12px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.type-badge[data-v-185ac474]{padding:1px 6px;border-radius:10px;font-size:11px;font-family:monospace;background:#dbeafe;color:#1e40af}.empty-label[data-v-185ac474]{font-size:11px;color:#888}.tree-children[data-v-185ac474]{padding-left:18px;margin-top:2px}.tree-row.status-started[data-v-185ac474]{background:linear-gradient(90deg,#dbeafe,#bfdbfe);border-left:4px solid #2563eb;color:#1e3a8a}.tree-row.status-passed[data-v-185ac474]{background:linear-gradient(90deg,#bbf7d0,#86efac);border-left:4px solid #16a34a;color:#065f46}.tree-row.status-failed[data-v-185ac474]{background:linear-gradient(90deg,#fecaca,#fca5a5);border-left:4px solid #dc2626;color:#7f1d1d}@keyframes pulse-blue-185ac474{0%,to{opacity:1;transform:translateY(0)}50%{opacity:.92;transform:translateY(-2px)}}.toast-container[data-v-0bd7054f]{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:99999;display:flex;flex-direction:column-reverse;gap:6px;pointer-events:none}.toast[data-v-0bd7054f]{position:relative;pointer-events:auto;min-width:500px;max-width:800px;padding:8px 12px;font-size:13px;line-height:1.3;color:#fff;border-radius:4px;box-shadow:0 2px 8px #0000002e}.toast .close[data-v-0bd7054f]{position:absolute;top:4px;right:6px;background:none;border:none;padding:0;color:#fff;font-size:14px;line-height:1;cursor:pointer;opacity:.6}.toast .close[data-v-0bd7054f]:hover{opacity:1}.toast strong[data-v-0bd7054f]{display:block;font-size:12px;font-weight:600;opacity:.9;margin-bottom:2px}.toast.info[data-v-0bd7054f]{background:#2196f3}.toast.warning[data-v-0bd7054f]{background:#ff9800}.toast.error[data-v-0bd7054f]{background:#f44336}.toast.fatal[data-v-0bd7054f]{background:#b71c1c}@keyframes slide-in-0bd7054f{0%{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-overlay[data-v-9be45046]{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content[data-v-9be45046]{background:#fff;padding:20px;border-radius:8px;min-width:400px;max-width:80%;position:relative;box-shadow:0 4px 6px #0000001a}.modal-actions[data-v-9be45046]{margin-top:20px;padding-top:15px;border-top:1px solid #e5e7eb;display:flex;gap:10px}.response-box[data-v-9be45046]{margin-top:15px}.response-box input[data-v-9be45046],.response-box textarea[data-v-9be45046]{width:100%;padding:10px 12px;border-radius:8px;border:1px solid #d1d5db;font-family:inherit;font-size:.95rem;box-sizing:border-box;background:#fff;transition:all .2s ease;outline:none}.response-box input[data-v-9be45046]:focus,.response-box textarea[data-v-9be45046]:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f126}.response-box textarea[data-v-9be45046]{min-height:100px;resize:vertical;line-height:1.4}.response-box input[data-v-9be45046]:hover,.response-box textarea[data-v-9be45046]:hover{border-color:#9ca3af}.modal-actions button[data-v-9be45046]{flex:1;justify-content:center}body{font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial;padding:20px;background:#f6f7fb;color:#111827}h1{font-size:18px;margin:0 0 12px}h2,h3{margin:0;color:#111827}h2{font-size:1.125rem}h3{font-size:1rem}button{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:6px;border:0;background:#0366d6;color:#fff;cursor:pointer;font-size:13px}button:hover:not(:disabled){background:#0256c7}button:disabled{opacity:.5;cursor:not-allowed}.disabled{pointer-events:none;opacity:.5}.panel{background:#fff;border-radius:8px;padding:16px;margin:16px 0;box-shadow:0 1px 3px #0000001a}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.panel-header h2,.panel-header h3{margin:0}.controls{display:flex;gap:8px;margin-top:8px}.status-badge{display:inline-block;padding:6px 10px;border-radius:999px;font-size:12px;background:#e5e7eb;color:#374151}.status-badge.connected{background:#dbeafe;color:#1e40af}.status-badge.disconnected{background:#fee2e2;color:#991b1b}.top-row{margin-bottom:16px}.top-row .panel{margin:0}pre{background-color:#f3f4f6;padding:10px;border-radius:6px}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link rel="icon" type="image/svg+xml" href="/logo.svg" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>pytestflow-gui</title>
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-480TOyh4.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-qEI3VAQU.css">
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<div id="app"></div>
|
|
13
|
+
</body>
|
|
14
|
+
</html>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
3
|
+
|
|
4
|
+
<svg
|
|
5
|
+
version="1.1"
|
|
6
|
+
id="svg1"
|
|
7
|
+
width="1823"
|
|
8
|
+
height="1160"
|
|
9
|
+
viewBox="0 0 1823 1160"
|
|
10
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
11
|
+
xmlns:svg="http://www.w3.org/2000/svg">
|
|
12
|
+
<defs
|
|
13
|
+
id="defs1" />
|
|
14
|
+
<g
|
|
15
|
+
id="g1">
|
|
16
|
+
<path
|
|
17
|
+
id="path1"
|
|
18
|
+
style="display:inline;fill:#53686D"
|
|
19
|
+
d="m 1465,14 v 25 25 l -41.25,0.25 -41.25,0.25 -41.75,-0.386719 -41.75,-0.384765 0.018,1.384765 0.02,1.386719 1.543,8.5 1.5429,8.5 -0.6699,9.458984 -0.6719,9.457036 -1.5097,5.54296 -1.5117,5.54102 -0.4961,2.25 -0.4961,2.25 h 109.5371 109.5391 l 8.3281,6.26953 8.3281,6.26953 19,13.89649 19,13.89453 0.5,0.44336 0.5,0.44531 -2.4551,1.64063 -2.457,1.64062 -17.043,13.12305 -17.0449,13.12304 -8.5,6.10938 -8.5,6.10937 -251,0.0176 -251,0.0176 0.2617,253.35156 0.2617,253.34961 -5.9589,3.67969 -5.961,3.67773 -4.54295,5.19336 -4.54102,5.19141 -3.46094,7.0293 -3.45898,7.02734 -1.02539,4.5 -1.02539,4.5 -0.0234,9.06836 -0.0254,9.06836 1.5957,5.43164 1.59766,5.43164 3.5,6.69922 3.50195,6.70117 6.02346,6.08008 6.0253,6.08008 8.127,3.91797 8.1289,3.91796 5,0.93946 5,0.93945 6.5664,0.11328 6.5664,0.11133 5.9043,-1.0918 5.9063,-1.09179 7.5273,-3.5625 7.5293,-3.5625 7.084,-7.09571 7.084,-7.0957 3.6132,-7.5 3.6133,-7.5 1.1856,-6.91602 1.1836,-6.91601 -0.5293,-7.58399 -0.5274,-7.58398 -2.1601,-6.38672 -2.1602,-6.38672 -3.3203,-5.11328 -3.3223,-5.11328 -4.2656,-4.23828 -4.2676,-4.23828 -4.8554,-3.11524 L 1066,707.79102 V 481.42578 255.06055 l 194.7871,-0.041 194.7852,-0.0391 4.7148,0.64453 4.7129,0.64648 V 281.13672 306 l 1.25,-0.0137 1.25,-0.0137 19,-14.25 19,-14.25 23,-17.43946 23,-17.4375 48.1074,-36.04882 48.1074,-36.04688 7.1036,-5 7.1035,-5 -0.012,-1.5 -0.012,-1.5 -7.1992,-5.18555 -7.1992,-5.18554 -24.1348,-17.81446 L 1599.2305,111.5 1565.3652,86.507812 1531.5,61.517578 1521,53.558594 1510.5,45.601562 1489.1113,29.800781 1467.7227,14 h -1.3614 z m -260.9023,15 -5.2989,1.121094 -5.2988,1.121094 -6,2.724609 -6,2.722656 -5.2988,4.21875 -5.3008,4.216797 -4.6738,6.019531 -4.6758,6.021485 -2.0567,3.664062 -2.0546,3.666016 -241.95708,0.002 -241.95508,0.002 -0.30273,1.572266 -0.30273,1.570312 2.78906,1.269531 2.78906,1.269532 9.51758,6.234375 9.51758,6.234375 14.98242,12.078125 14.98242,12.07812 5.4668,5.59766 5.46484,5.5957 h 210.05859 210.05857 l 4.4688,6.13672 4.4687,6.13672 5.3653,4.78125 5.3632,4.78125 5.8438,3.11523 5.8457,3.11524 7.2969,1.91211 7.2988,1.9121 7.5,0.0371 7.5,0.0371 7,-1.47656 7,-1.47461 6,-2.95508 6,-2.95312 5.0645,-4.30274 5.0644,-4.30273 4.1406,-5.05859 4.1426,-5.0586 3.1133,-6.27539 3.1152,-6.27734 1.4121,-6.66602 1.4121,-6.664056 -0.017,-7 -0.018,-7 -1.3164,-6.134766 -1.3184,-6.136718 -3.0586,-6.53711 -3.0586,-6.537109 -4.0175,-5.4375 -4.0196,-5.439453 -4.3203,-3.705078 -4.3203,-3.703125 -5,-2.837891 -5,-2.839844 -6.8555,-2.095703 L 1223.7891,29 h -9.8457 z M 217,56 v 224 224 h 1.39648 1.39454 l 3.25586,-5.07227 3.25585,-5.07421 7.36329,-9.67579 L 241.03125,474.5 253.01562,461.82617 265,449.1543 V 276.54688 103.9375 l 135.75,0.31445 135.75,0.31446 9.10547,1.69726 9.10742,1.69727 12.39258,2.96289 12.39453,2.96094 11,4.08398 11,4.08594 13.10742,6.34961 13.10938,6.34961 11.39062,7.43554 11.39258,7.4336 8.5,6.83007 8.5,6.82813 7.81641,7.60937 7.81836,7.60938 6.8457,8.01953 6.84375,8.01953 3.74609,5.48047 3.74414,5.48047 4.67578,7 4.67579,7 6.09375,11 6.09375,11 3.95898,10 3.95703,10 2.59375,8.23242 2.5918,8.23242 2.49414,9.83594 2.49414,9.83789 2.08398,12.42969 2.08399,12.43164 0.5957,16.34961 0.5957,16.34766 -1.22656,11.65234 -1.22461,11.65039 -1.96875,11.23047 -1.96679,11.23242 -3.45704,12.61719 -3.45703,12.61523 -3.99414,9.90235 -3.99219,9.90234 -5.39843,10.75 -5.39649,10.75 -6.93945,10.5 -6.93945,10.5 -8.04102,10 -8.04101,10 -10.37891,10.07227 -10.38086,10.07226 -7,5.56445 -7,5.56641 -10.33594,6.6875 -10.33789,6.6875 -10.16211,5.36914 -10.16406,5.36914 -11.62305,4.53711 -11.625,4.53516 -15.375,3.98828 -15.37695,3.98828 -11.5,1.65039 -11.5,1.65234 -54.25,0.47852 -54.25,0.48047 V 547.1582 509.11719 l -0.97461,-0.60157 -0.97461,-0.60156 -14.72851,1.09961 -14.72852,1.09961 -7.04687,1.46875 -7.04688,1.46875 -1.75,0.54297 -1.75,0.54102 v 210.76562 210.76563 l 0.72461,0.7246 0.72461,0.72461 2.02539,-0.54296 2.02539,-0.54493 21.75,-0.0137 L 426,936 V 784.625 633.24805 l 51.75,-0.16211 51.75,-0.16406 12,-1.02149 12,-1.02148 10.5,-2.00391 10.5,-2.00586 9.5,-2.38867 9.5,-2.39063 10.58594,-3.43164 10.58789,-3.43359 12.32617,-5.18359 12.32422,-5.1836 6.58789,-3.58008 6.58789,-3.58007 7.5,-4.5 7.5,-4.49805 7,-4.7168 7,-4.71484 8.35742,-6.58985 8.35547,-6.58984 10.44727,-9.79297 10.44726,-9.79492 8.19727,-9.36328 8.19531,-9.36328 6.31641,-8.63672 6.31445,-8.63672 6.84375,-11 6.8418,-11 5.55664,-11 5.55468,-11 5.45704,-14.52344 5.45507,-14.52148 3.57032,-13.97852 3.57031,-13.97656 2.55859,-15 2.55664,-15 0.86328,-18 0.86133,-18 -0.8789,-14.5 -0.88086,-14.5 -1.57617,-10.5 -1.57618,-10.5 -3.04297,-13.5 -3.04296,-13.5 -4.91211,-14.67188 -4.91407,-14.67187 -5.41992,-12.07813 -5.42187,-12.07617 -5.02149,-9.53906 -5.02148,-9.53906 -9.50195,-13.71094 -9.50196,-13.71289 -8.40625,-10 -8.40625,-10 L 708.39844,134.99609 696.5,123.49023 685.8457,114.99609 675.18945,106.5 664.8457,100.03906 654.5,93.580078 l -12,-6.189453 -12,-6.189453 -14,-5.558594 -14,-5.558594 L 590.35742,66.632812 578.21484,63.179688 563.35742,60.615234 548.5,58.048828 537.5,57.025391 526.5,56.001953 371.75,56 Z m 582,145 v 1.30469 1.30469 l 5.54492,13.41015 5.54492,13.4082 4.05274,12.26954 4.05469,12.26953 26.15039,0.26758 L 870.5,255.5 l 0.5,268 0.5,268 2.20703,9.65234 2.20703,9.65235 3.6875,10.84765 3.6875,10.84766 3.67774,8 3.67773,8 6.18164,9.80664 6.17969,9.80859 5.40039,6.69141 5.40039,6.69336 7.8457,7.57617 7.84766,7.57813 5,4.00781 5,4.00781 6.08398,4.08985 6.08204,4.08789 9.41796,5.01953 9.41602,5.01953 8.18555,3.00781 8.18554,3.00781 9.81446,2.6875 9.81445,2.6875 8.5,1.25196 8.4961,1.25195 13,0.0918 13,0.0898 10.4492,-1.48437 10.4512,-1.48633 6.5488,-1.58399 6.5508,-1.58398 8.5801,-2.85938 8.582,-2.86132 7.418,-3.38282 7.4199,-3.38281 8.2187,-5.10156 8.2207,-5.10156 8.2793,-6.29883 8.2813,-6.30078 8.123,-8.19336 8.1231,-8.19336 6.9433,-9.32422 6.9415,-9.32422 2.8828,-5 2.8828,-5 4.4043,-8.91406 4.4062,-8.91406 3.877,-11.8086 3.8789,-11.80859 2.2598,-11.77735 2.2617,-11.77734 0.01,-88.5 0.01,-88.5 4,-0.67578 4,-0.67578 125.2266,-0.0742 125.2265,-0.0742 1.4024,-2.25 1.4004,-2.25 2.9609,-5.5 2.9629,-5.5 3.3496,-6 3.3496,-6 11.1836,-19.5 11.1836,-19.5 4.9785,-9 4.9805,-9 3.8047,-7 3.8066,-7 3.6953,-6.5 3.6973,-6.5 5.1445,-8.82812 5.1465,-8.83008 v -0.38282 -0.38281 l 13.3594,-23.28906 13.3594,-23.28711 2.1406,-4.21094 2.1406,-4.20898 v -1.53711 -1.53711 l -181.1484,-0.25391 -181.1465,-0.25195 0.1191,-54 0.1192,-54 -0.5801,-10.75 -0.5821,-10.75 H 1177.8906 1151 v 91.99609 91.99805 l 163.4199,0.25195 163.4219,0.25391 -5.5859,10 -5.5879,10 -11.5157,20.5 -11.5136,20.5 -5.125,9 -5.1231,9 -141.1972,0.25391 -141.1954,0.2539 V 667.25391 781.5 l -1.4199,8 -1.4179,8 -3.9297,11.12695 -3.9317,11.12696 -4.7597,7.83984 -4.7598,7.83984 -6.0488,7.31446 -6.0508,7.3125 -7.0899,6.04687 -7.0898,6.04492 -7,4.1211 -7,4.11914 -6.5,3.1543 -6.5,3.15234 -6.5,2.125 -6.5,2.12305 -8.8809,1.52734 -8.8808,1.52539 h -8.7578 -8.7598 l -8.3594,-1.54492 -8.3613,-1.54492 -6.5,-2.09571 -6.5,-2.09765 -8,-3.96485 -8,-3.96679 -8,-5.3086 -8,-5.30664 -8.20508,-8.33594 -8.20508,-8.33398 -3.33789,-4.5 -3.33593,-4.5 -3.16993,-5.0293 -3.17187,-5.02929 -3.16211,-6.97071 -3.16406,-6.9707 -2.32032,-7.74609 -2.32031,-7.74805 -1.05469,-7.57617 L 925,777.85547 V 489.42773 201 h -63 z m -422,16 v 90.62695 90.62891 l 4.25,-0.70508 4.25,-0.70312 11.5,-1.39258 11.5,-1.39258 8.75,-0.0312 L 426,394 v -64 -64 h 50.81055 50.80859 l 8.44141,2.12305 8.43945,2.12304 5,2.4961 5,2.49609 6,4.29297 6,4.29297 5.1543,5.33789 5.15429,5.33789 4.45313,7 4.45312,7 2.23243,6 2.23046,6 1.89063,8.5 1.88867,8.5 0.0215,9.12109 0.0215,9.12305 -2.50586,9.87305 -2.50391,9.875 -3.92968,7.74414 -3.92969,7.74609 -4.54297,5.9043 -4.54492,5.90625 -4.77149,4.21484 -4.77148,4.21485 -4.23633,2.92773 -4.23633,2.92773 -6.96875,2.96485 -6.96875,2.9668 -7.29492,1.54296 -7.29492,1.54493 -60.5,0.38476 -60.5,0.38672 -11.66602,1.50781 -11.66406,1.50782 -8.83594,2.07812 -8.83398,2.08008 -8,2.59961 -8,2.59961 -8.5,3.56836 -8.5,3.56836 -6.5,3.45898 -6.5,3.45899 -6.7168,4.10156 -6.71679,4.10156 -8.78321,6.99219 -8.7832,6.99414 -7.77344,7.41211 -7.77344,7.41211 -6.85156,8.09375 -6.84961,8.0957 -5.79297,8.5 -5.79296,8.5 -6.78125,14 -6.78125,14 -3.02149,9.24805 -3.02148,9.24804 -2.01367,8.75196 -2.01172,8.75195 -1.04297,6.79297 -1.04492,6.79297 -1.45899,21.20703 -1.45898,21.20703 -0.0156,97.10938 -0.0137,97.10742 -5.4043,3.58789 -5.40625,3.58984 -3.52539,3.0957 -3.52734,3.09766 -3.52539,5.3125 -3.52735,5.31055 -2.08203,5.2832 -2.08203,5.2832 -1.0664,7.92188 -1.06641,7.92187 1.17187,8.00782 1.16993,8.00781 1.9414,4.68164 1.94336,4.68164 1.64844,3 1.64844,3 4.33203,5.14453 4.33008,5.14258 5.75586,3.82031 5.7539,3.82031 5.95703,2.40625 5.95508,2.4043 7.05274,0.75586 7.05273,0.75391 6,-0.51563 6,-0.51367 4.20508,-1.24805 4.20312,-1.24804 6.69922,-3.7461 6.69922,-3.74609 6.11328,-6.11524 6.11133,-6.11523 2.87695,-6 2.875,-6 1.32618,-4.30273 1.32617,-4.30274 0.63476,-8.69726 0.63477,-8.69727 -1.64453,-7 -1.64453,-7 -2.29102,-5 -2.28906,-5 -5.01758,-6 -5.01563,-6 -7.17968,-4.5 -7.17969,-4.5 0.39844,-109 0.40039,-109 1.60156,-9.26172 1.60156,-9.26367 2.65235,-10.73633 2.65429,-10.73828 3.79102,-9.00586 3.79297,-9.00586 3.73828,-6.99414 3.74023,-6.99414 4.94532,-7.2168 4.94531,-7.21679 6.41406,-7.51758 6.41211,-7.51758 7.73437,-6.6543 7.73438,-6.65625 8,-5.24023 8,-5.24219 8,-3.99219 8,-3.99414 7,-2.5 7,-2.5 9.5,-2.05664 9.5,-2.05469 3,-0.68554 3,-0.6836 68,-0.74218 68,-0.74219 7.36133,-1.70899 7.36328,-1.70703 8.35742,-2.84375 8.35938,-2.84179 9.27929,-4.89844 9.2793,-4.89649 8.67773,-6.71289 8.67579,-6.71289 6.20117,-6.73242 6.19922,-6.73242 3.69726,-5 3.69922,-5 3.48242,-6 3.48242,-6 3.70313,-8.875 3.70312,-8.87695 1.90821,-7.62305 1.90625,-7.625 1.20898,-12.5 1.20703,-12.5 -1.08789,-13.54883 -1.08789,-13.54883 -2,-8.57812 -2,-8.57813 -2.4082,-6.37304 -2.40625,-6.37305 -2.30469,-5 -2.30664,-5 -6.40625,-9.7168 -6.4082,-9.71875 -7.66797,-7.89453 -7.66797,-7.89258 -8.08594,-5.95312 -8.08398,-5.95117 -8.91602,-4.58399 -8.91406,-4.58203 -8.10156,-2.54101 -8.10352,-2.54102 -10.52539,-1.5625 L 527.24414,217 h -75.12305 z m 412.5,747.73828 -9,0.60352 -9,0.60351 -6,1.54297 -6,1.54297 -7.20508,3.51563 -7.20508,3.51757 -5.33789,4.87891 -5.33593,4.87891 -2.61914,4.83789 -2.6211,4.83984 -1.69336,5.873 -1.69531,5.8711 0.4707,10.6289 0.47071,10.627 1.61328,5.0449 1.61328,5.0449 3.1914,4.8184 3.19141,4.8184 4.58203,3.3964 4.58008,3.3965 6.27148,3.0508 6.26954,3.0527 5.73046,1.9981 5.72852,1.998 12.95117,3.4747 12.94922,3.4746 5.70117,2.5586 5.70117,2.5585 2.76368,2.8848 2.76562,2.8848 0.42383,5.2734 0.42187,5.2715 -2.34765,3.5 -2.3457,3.5 -4.45508,2.25 -4.45313,2.25 -8.03711,-0.012 -8.03906,-0.012 -5.5,-1.4551 -5.5,-1.4551 -7.04297,-3.5644 -7.04297,-3.5665 -8.76562,-6.5781 -8.76563,-6.5781 -1.1914,1.5312 -1.19141,1.5313 -9.89258,12.1113 -9.89258,12.1133 2.39258,2.5742 2.39258,2.5762 6,4.2852 6,4.2851 5,2.9199 5,2.92 8,3.3203 8,3.3222 8.5,1.795 8.5,1.7949 11.29297,0.07 11.29101,0.07 7.70899,-1.5723 7.70703,-1.5742 7.25781,-3.4668 7.25781,-3.4687 6.4961,-6.0782 6.49609,-6.0761 3.74414,-7.5782 3.7461,-7.5781 0.35742,-11.2715 0.35742,-11.2734 -2.06445,-6.7813 -2.06446,-6.7812 -2.96875,-4.668 -2.96679,-4.6679 -5.27735,-4.1719 -5.27929,-4.1719 -6.54492,-3.2949 -6.54688,-3.2969 -10,-3.0566 -10,-3.0586 -9.20898,-2.5313 -9.20704,-2.5332 -4.39453,-2.0644 -4.39257,-2.0645 -2.89844,-3.0254 -2.89844,-3.0254 v -5.3613 -5.3613 l 2.05859,-2.8223 2.0586,-2.8242 4.40234,-2.25 4.4043,-2.25 h 8.07812 8.07813 l 5.95898,1.5312 5.96094,1.5333 7.24414,3.416 7.24414,3.416 4.57617,3.1484 4.57617,3.1485 0.28321,-0.3457 0.28515,-0.3477 9.32032,-13.4219 9.32031,-13.42185 -3.42383,-2.90039 -3.42578,-2.90039 -7,-3.92969 -7,-3.93164 -10.52344,-3.42969 -10.52148,-3.42968 -8.97852,-1.19727 z m 611,0.86133 -15.5,0.0527 -15.5,0.0547 -7.9453,2.15625 -7.9473,2.1543 -8.0527,3.95117 -8.0547,3.94922 -6.8555,5.20117 -6.8574,5.19922 -6.4883,7.5918 -6.4902,7.58986 -4.832,10 -4.8321,10 -1.8144,8 -1.8145,8 0.1153,13.5 0.1152,13.5 2.1367,8 2.1367,8 3.8477,8 3.8476,8 4.6895,6.1992 4.6895,6.1992 5.2031,4.6817 5.2031,4.6797 5.5,3.7304 5.5,3.7286 4.0723,2.0703 4.0703,2.0703 6.4297,2.1875 6.4277,2.1875 7,1.3594 7,1.3574 13.5,-0.3809 13.5,-0.3808 8.9512,-2.6485 8.9492,-2.6484 7.7461,-4.0293 7.7441,-4.0293 6.7793,-5.6934 6.7774,-5.6933 5.6621,-6.7403 5.6601,-6.7382 3.5586,-6.7715 3.5567,-6.7715 2.6328,-8.9629 2.6308,-8.9629 0.543,-11.5 0.541,-11.5 -1.5976,-9.1426 -1.5977,-9.1426 -2.7246,-7.3496 -2.7227,-7.3476 -5.7617,-8.6114 -5.7597,-8.61325 -6.3028,-5.89649 -6.3047,-5.89648 -5.7754,-3.83203 -5.7734,-3.83399 -6.2988,-2.85546 -6.2969,-2.85547 -8.4082,-2.26172 z M 118,969 v 32.8516 h 38 v -0.043 l 18.25,0.4062 18.25,0.4043 5.56641,2.1934 5.5664,2.1934 2.57031,2.7461 2.56836,2.748 1.84766,3.5 1.8457,3.5 -0.004,9.5215 -0.002,9.5215 -2.79101,5.705 -2.79102,5.7032 -3.01172,2.1445 -3.00976,2.1445 -4.58594,1.3789 L 191.6815,1057 H 173.8418 156 v 0 h -38 v 80 h 19 19 v -23 -23 l 11.25,-0.016 11.25,-0.016 11.5,-0.9571 11.5,-0.957 8,-2.0274 8,-2.0253 7.26367,-3.5625 7.26367,-3.5625 5.12305,-5.1231 5.12305,-5.123 3.38086,-7.1192 3.38281,-7.1211 1.60547,-8.4453 1.60547,-8.4453 -0.57617,-10.5 -0.57618,-10.5 -1.55664,-5.8281 -1.55468,-5.8301 -2.74219,-5.63672 -2.74219,-5.63672 -5.51172,-5.64648 -5.50976,-5.64649 -5.4668,-2.76953 -5.4668,-2.76953 -5.52148,-1.91602 -5.52344,-1.91601 -9.5,-1.44532 -9.5,-1.44726 -36.25,-0.006 z m 139,0 0.002,0.75 v 0.75 l 28.5,49.873 28.498,49.875 v 33.375 33.377 h 19.5 19.5 v -33.5117 -33.5117 l 28.08203,-49.1192 28.08008,-49.11717 0.52539,-1.37109 L 410.21484,969 h -20.4414 -20.43946 l -16.37109,28.25 -16.37109,28.25 -1.61914,2.7227 -1.61719,2.7226 -17.92774,-30.95311 -17.92773,-30.95313 -20.25,-0.0195 z m 157,0 v 16.5 16.5 h 23.5 23.5 v 67.5 67.5 h 19 19 v -67.5 -67.5 h 24 24 V 985.5 969 h -66.5 z m 160,0 v 84 84 h 62.02344 62.02539 L 697.77344,1120.25 697.5,1103.5 654.75,1103.2402 612,1102.9785 V 1085.9902 1069 h 37.5 37.5 v -16 -16 H 649.5 612 v -17 -17 h 41.5 41.5 v -17 -17 h -60.5 z m 294,0 v 16.5 16.5 h 24 24 v 67.5 67.5 h 19 19 v -67.5 -67.5 h 23.5 23.5 V 985.5 969 h -66.5 z m 160,0 v 84 84 h 19 19 v -32.4883 -32.4863 l 36.75,-0.2637 36.75,-0.2617 0.2734,-16.75 0.2754,-16.75 H 1103.0234 1066 v -17.4883 -17.4883 l 38.75,-0.2617 38.75,-0.2617 0.2734,-16.75 0.2754,-16.75 h -58.0254 z m 147,0 v 84 84 h 55.0234 55.0254 l -0.2754,-16.75 -0.2734,-16.75 -35.75,-0.2617 -35.75,-0.2637 V 1035.9883 969 h -19 z m 305.7676,0 0.4707,1.75 0.4726,1.75 27.2696,78 27.2695,78 1.4688,4.25 1.4687,4.25 h 14.248 14.2481 l 17.9082,-57.3965 17.9082,-57.3945 0.6484,1.1445 0.6485,1.1465 16.6484,53 16.6465,53 1.0312,3.25 1.0313,3.25 H 1654.5781 1669 v -0.3984 -0.4004 l 28.375,-81.3496 28.377,-81.3516 0.6914,-2.25 0.6914,-2.25 h -20.4258 -20.4258 l -16.3926,47.4258 -16.3906,47.4258 -0.6406,-1.1758 -0.6406,-1.1758 -10.6836,-35 -10.6817,-35 -3.4824,-11.25 -3.4824,-11.25 H 1603.9453 1584 v 0.44727 0.44531 l -14.1094,45.80472 -14.1094,45.8027 -0.6484,1.1934 -0.6484,1.1933 -13.4004,-39.1933 -13.4004,-39.1934 -2.9356,-8.25 -2.9375,-8.25 h -20.5214 z m -103.2676,29.66797 8.5,0.002 h 8.5 l 5.5,1.81243 5.5,1.8145 5,3.1855 5,3.1875 5.5,5.9629 5.5,5.961 2.7598,5.6602 2.7597,5.6602 1.6153,6.2929 1.6172,6.2929 -0.5176,10.5 -0.5196,10.5 -2.2558,6 -2.2578,6 -3.211,5 -3.2109,5 -3.6445,3.7051 -3.6446,3.7051 -4.2441,2.8984 -4.2461,2.8965 -5.6523,2.0976 -5.6524,2.0958 -7.3476,0.4902 -7.3477,0.4902 -4.7852,-0.8613 -4.7832,-0.8614 -6.2168,-2.9257 -6.2148,-2.9258 -5.1973,-4.6973 -5.1972,-4.6992 -4.0625,-6.084 -4.0645,-6.084 -2.2012,-7.1211 -2.2031,-7.1191 0.014,-10 0.014,-10 1.791,-5.9707 1.791,-5.9688 2.0215,-4.0312 2.0195,-4.0293 3.9649,-5.3086 3.9628,-5.3086 5.9219,-4.3594 5.9238,-4.3593 6.75,-2.2481 z" />
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import traceback
|
|
3
|
+
from pytestflow.backend.event_bus import event_bus, pending_requests
|
|
4
|
+
from pytestflow.backend import sequences_info
|
|
5
|
+
from pytestflow.core.seq_file_runner import run_sequence_file
|
|
6
|
+
from pytestflow.core.runtime_control import runtime_control
|
|
7
|
+
from pytestflow.backend.report_manager import report_manager
|
|
8
|
+
from pytestflow.config.config_manager import ConfigManager
|
|
9
|
+
import sys
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class UserSession:
|
|
14
|
+
def __init__(self):
|
|
15
|
+
self.process_model_callbacks = None
|
|
16
|
+
|
|
17
|
+
def set_selected_process_model_callbacks(self, callbacks):
|
|
18
|
+
self.process_model_callbacks = callbacks
|
|
19
|
+
|
|
20
|
+
def get_selected_process_model_callbacks(self):
|
|
21
|
+
return self.process_model_callbacks
|
|
22
|
+
|
|
23
|
+
def set_selected_process_model(self, name):
|
|
24
|
+
self.selected_process_model = name
|
|
25
|
+
|
|
26
|
+
def get_selected_process_model(self):
|
|
27
|
+
return self.selected_process_model
|
|
28
|
+
|
|
29
|
+
user_session = UserSession()
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def get_available_process_models():
|
|
33
|
+
"""Returns a list of available process model names from the process_models folder."""
|
|
34
|
+
process_models = []
|
|
35
|
+
try:
|
|
36
|
+
config = ConfigManager()
|
|
37
|
+
PROCESS_MODELS_FOLDER = config.get_path("process_models")
|
|
38
|
+
pm_folder = Path(PROCESS_MODELS_FOLDER)
|
|
39
|
+
if pm_folder.exists() and pm_folder.is_dir():
|
|
40
|
+
for file in pm_folder.glob("*.py"):
|
|
41
|
+
if file.name == "__init__.py":
|
|
42
|
+
continue
|
|
43
|
+
process_models.append(file.stem)
|
|
44
|
+
except Exception as e:
|
|
45
|
+
print(f"Error loading process models: {e}", file=sys.stderr)
|
|
46
|
+
return process_models
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
async def handle_query_process_models(args):
|
|
50
|
+
list_of_process_models = get_available_process_models()
|
|
51
|
+
await event_bus.emit("outbound", {
|
|
52
|
+
"cmd": "set_available_process_models",
|
|
53
|
+
"args": list_of_process_models
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
async def handle_select_process_model(args):
|
|
57
|
+
model_name = args.get("name")
|
|
58
|
+
if model_name:
|
|
59
|
+
user_session.set_selected_process_model(model_name)
|
|
60
|
+
await event_bus.emit("outbound", {
|
|
61
|
+
"cmd": "process_model_selected",
|
|
62
|
+
"args": model_name
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
async def handle_query_seq_files(args):
|
|
66
|
+
list_of_seq_files = sequences_info.get_available_sequences()
|
|
67
|
+
await event_bus.emit("outbound", {
|
|
68
|
+
"cmd": "set_available_seq_files",
|
|
69
|
+
"args": list_of_seq_files
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
async def handle_get_seq_structure(args):
|
|
73
|
+
seq_struct, hooks = sequences_info.get_seq_structure(args["file_name"])
|
|
74
|
+
user_session.set_selected_process_model_callbacks(hooks)
|
|
75
|
+
await event_bus.emit("outbound", {
|
|
76
|
+
"cmd": "display_seq_structure",
|
|
77
|
+
"args": seq_struct
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
async def handle_start_run(args):
|
|
81
|
+
if True:
|
|
82
|
+
try:
|
|
83
|
+
process_model_callbacks = user_session.get_selected_process_model_callbacks()
|
|
84
|
+
args = args or {}
|
|
85
|
+
|
|
86
|
+
runtime_control.set_stop_requested(False)
|
|
87
|
+
|
|
88
|
+
await event_bus.emit("outbound", {
|
|
89
|
+
"cmd": "set_run_status",
|
|
90
|
+
"args": "running"
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
await asyncio.to_thread(run_sequence_file, process_model_callbacks, user_session.get_selected_process_model())
|
|
94
|
+
if report_manager.has_report():
|
|
95
|
+
await event_bus.emit("outbound", {
|
|
96
|
+
"cmd": "report_generated",
|
|
97
|
+
"args": ""
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
except (KeyboardInterrupt, asyncio.CancelledError):
|
|
101
|
+
print("⚠️ Cancellation detected - shutting down runtime")
|
|
102
|
+
runtime_control.shutdown()
|
|
103
|
+
raise
|
|
104
|
+
|
|
105
|
+
finally:
|
|
106
|
+
await event_bus.emit("outbound", {
|
|
107
|
+
"cmd": "set_run_status",
|
|
108
|
+
"args": "idle"
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
async def handle_modal_response(args):
|
|
113
|
+
runtime_control.set_popup_response(
|
|
114
|
+
args.get("request_id"),
|
|
115
|
+
args.get("button_pressed"),
|
|
116
|
+
args.get("response_text")
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
async def _emit_runtime_control_updated():
|
|
120
|
+
await event_bus.emit("outbound", {
|
|
121
|
+
"cmd": "runtime_control_updated",
|
|
122
|
+
"args": runtime_control.snapshot()
|
|
123
|
+
})
|
|
124
|
+
|
|
125
|
+
async def handle_stop_requested(args):
|
|
126
|
+
runtime_control.set_stop_requested(True)
|
|
127
|
+
await _emit_runtime_control_updated()
|
|
128
|
+
|
|
129
|
+
async def handle_pause(args):
|
|
130
|
+
runtime_control.set_paused(True)
|
|
131
|
+
await _emit_runtime_control_updated()
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
async def handle_resume(args):
|
|
135
|
+
runtime_control.set_paused(False)
|
|
136
|
+
await _emit_runtime_control_updated()
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
async def handle_set_throttle(args):
|
|
140
|
+
throttle_value = None
|
|
141
|
+
if isinstance(args, dict):
|
|
142
|
+
if "throttle_ms" in args:
|
|
143
|
+
throttle_value = args["throttle_ms"]
|
|
144
|
+
elif "throttle" in args:
|
|
145
|
+
throttle_value = args["throttle"]
|
|
146
|
+
else:
|
|
147
|
+
throttle_value = args
|
|
148
|
+
|
|
149
|
+
if throttle_value is None:
|
|
150
|
+
raise ValueError("Missing throttle value. Expected 'throttle_ms'.")
|
|
151
|
+
|
|
152
|
+
runtime_control.set_throttle_ms(float(throttle_value))
|
|
153
|
+
await _emit_runtime_control_updated()
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
async def handle_get_runtime_control(args):
|
|
157
|
+
await event_bus.emit("outbound", {
|
|
158
|
+
"cmd": "runtime_control_updated",
|
|
159
|
+
"args": runtime_control.snapshot()
|
|
160
|
+
})
|
|
161
|
+
|
|
162
|
+
async def handle_open_last_report(args):
|
|
163
|
+
last_report = report_manager.get_last_report()
|
|
164
|
+
if not last_report:
|
|
165
|
+
await event_bus.emit("outbound", {
|
|
166
|
+
"cmd": "toast",
|
|
167
|
+
"args": {
|
|
168
|
+
"type": "error",
|
|
169
|
+
"message": "No report available"
|
|
170
|
+
}
|
|
171
|
+
})
|
|
172
|
+
return
|
|
173
|
+
with open(last_report, "r", encoding="utf-8", errors="replace") as f:
|
|
174
|
+
html = f.read()
|
|
175
|
+
|
|
176
|
+
await event_bus.emit("outbound", {
|
|
177
|
+
"cmd": "open_report_inline",
|
|
178
|
+
"args": {
|
|
179
|
+
"html": html
|
|
180
|
+
}
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
# This wraps handlers to catch exceptions and send error messages to frontend
|
|
185
|
+
def handler_guard(handler):
|
|
186
|
+
async def wrapped(args):
|
|
187
|
+
try:
|
|
188
|
+
await handler(args)
|
|
189
|
+
except Exception as e:
|
|
190
|
+
traceback.print_exc()
|
|
191
|
+
|
|
192
|
+
await event_bus.emit("outbound", {
|
|
193
|
+
"cmd": "backend_error",
|
|
194
|
+
"args": {
|
|
195
|
+
"title": "Errore backend",
|
|
196
|
+
"message": str(e),
|
|
197
|
+
"severity": "error"
|
|
198
|
+
}
|
|
199
|
+
})
|
|
200
|
+
return wrapped
|
|
201
|
+
|
|
202
|
+
def init_handlers():
|
|
203
|
+
event_bus.on("query_process_models", handler_guard(handle_query_process_models))
|
|
204
|
+
event_bus.on("select_process_model", handler_guard(handle_select_process_model))
|
|
205
|
+
event_bus.on("query_seq_files", handler_guard(handle_query_seq_files))
|
|
206
|
+
event_bus.on("get_seq_structure", handler_guard(handle_get_seq_structure))
|
|
207
|
+
event_bus.on("start_run", handler_guard(handle_start_run))
|
|
208
|
+
event_bus.on("user_response", handler_guard(handle_modal_response))
|
|
209
|
+
event_bus.on("pause", handler_guard(handle_pause))
|
|
210
|
+
event_bus.on("resume", handler_guard(handle_resume))
|
|
211
|
+
event_bus.on("set_throttle", handler_guard(handle_set_throttle))
|
|
212
|
+
event_bus.on("stop_requested", handler_guard(handle_stop_requested))
|
|
213
|
+
event_bus.on("get_runtime_control", handler_guard(handle_get_runtime_control))
|
|
214
|
+
event_bus.on("open_last_report", handler_guard(handle_open_last_report))
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class ReportManager:
|
|
2
|
+
def __init__(self):
|
|
3
|
+
self._last_report: None
|
|
4
|
+
# self.report_dir = REPORTS_FOLDER # for future use
|
|
5
|
+
|
|
6
|
+
def set_last_report(self, path: str):
|
|
7
|
+
self._last_report = path
|
|
8
|
+
|
|
9
|
+
def get_last_report(self) -> str | None:
|
|
10
|
+
return self._last_report
|
|
11
|
+
|
|
12
|
+
def has_report(self) -> bool:
|
|
13
|
+
return self._last_report is not None
|
|
14
|
+
|
|
15
|
+
report_manager = ReportManager()
|