local-serverless-stack 0.0.1

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.
Files changed (49) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/LICENSE +21 -0
  3. package/README.md +653 -0
  4. package/bin/cli.js +204 -0
  5. package/dist/server/dev/dynamo-proxy.d.ts +3 -0
  6. package/dist/server/dev/dynamo-proxy.d.ts.map +1 -0
  7. package/dist/server/dev/dynamo-proxy.js +35 -0
  8. package/dist/server/dev/dynamo-proxy.js.map +1 -0
  9. package/dist/server/index.d.ts +2 -0
  10. package/dist/server/index.d.ts.map +1 -0
  11. package/dist/server/index.js +67 -0
  12. package/dist/server/index.js.map +1 -0
  13. package/dist/server/routes/resources.d.ts +3 -0
  14. package/dist/server/routes/resources.d.ts.map +1 -0
  15. package/dist/server/routes/resources.js +16 -0
  16. package/dist/server/routes/resources.js.map +1 -0
  17. package/dist/server/routes/services.d.ts +5 -0
  18. package/dist/server/routes/services.d.ts.map +1 -0
  19. package/dist/server/routes/services.js +217 -0
  20. package/dist/server/routes/services.js.map +1 -0
  21. package/dist/server/services/cache-manager.d.ts +21 -0
  22. package/dist/server/services/cache-manager.d.ts.map +1 -0
  23. package/dist/server/services/cache-manager.js +70 -0
  24. package/dist/server/services/cache-manager.js.map +1 -0
  25. package/dist/server/services/cloudformation-parser.d.ts +88 -0
  26. package/dist/server/services/cloudformation-parser.d.ts.map +1 -0
  27. package/dist/server/services/cloudformation-parser.js +112 -0
  28. package/dist/server/services/cloudformation-parser.js.map +1 -0
  29. package/dist/server/services/localstack-manager.d.ts +23 -0
  30. package/dist/server/services/localstack-manager.d.ts.map +1 -0
  31. package/dist/server/services/localstack-manager.js +142 -0
  32. package/dist/server/services/localstack-manager.js.map +1 -0
  33. package/dist/server/services/process-manager.d.ts +41 -0
  34. package/dist/server/services/process-manager.d.ts.map +1 -0
  35. package/dist/server/services/process-manager.js +119 -0
  36. package/dist/server/services/process-manager.js.map +1 -0
  37. package/dist/server/services/resource-provisioner.d.ts +37 -0
  38. package/dist/server/services/resource-provisioner.d.ts.map +1 -0
  39. package/dist/server/services/resource-provisioner.js +539 -0
  40. package/dist/server/services/resource-provisioner.js.map +1 -0
  41. package/dist/ui/assets/index-7WT0rkfU.css +1 -0
  42. package/dist/ui/assets/index-M0lXeUj-.js +19 -0
  43. package/dist/ui/index.html +16 -0
  44. package/package.json +89 -0
  45. package/packages/serverless-plugin/README.md +95 -0
  46. package/packages/serverless-plugin/dist/index.d.ts +2 -0
  47. package/packages/serverless-plugin/dist/index.d.ts.map +1 -0
  48. package/packages/serverless-plugin/dist/index.js +88 -0
  49. package/packages/serverless-plugin/dist/index.js.map +1 -0
@@ -0,0 +1,19 @@
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 i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function s(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=s(r);fetch(r.href,i)}})();/**
2
+ * @vue/shared v3.5.27
3
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
+ * @license MIT
5
+ **/function Ds(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const V={},ot=[],Pe=()=>{},Hn=()=>!1,Qt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ls=e=>e.startsWith("onUpdate:"),X=Object.assign,Ns=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},qr=Object.prototype.hasOwnProperty,j=(e,t)=>qr.call(e,t),I=Array.isArray,lt=e=>Xt(e)==="[object Map]",jn=e=>Xt(e)==="[object Set]",M=e=>typeof e=="function",z=e=>typeof e=="string",ke=e=>typeof e=="symbol",G=e=>e!==null&&typeof e=="object",Un=e=>(G(e)||M(e))&&M(e.then)&&M(e.catch),Kn=Object.prototype.toString,Xt=e=>Kn.call(e),Jr=e=>Xt(e).slice(8,-1),Vn=e=>Xt(e)==="[object Object]",Hs=e=>z(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,vt=Ds(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zt=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},kr=/-\w/g,qe=Zt(e=>e.replace(kr,t=>t.slice(1).toUpperCase())),Gr=/\B([A-Z])/g,Ge=Zt(e=>e.replace(Gr,"-$1").toLowerCase()),Bn=Zt(e=>e.charAt(0).toUpperCase()+e.slice(1)),ds=Zt(e=>e?`on${Bn(e)}`:""),We=(e,t)=>!Object.is(e,t),Kt=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},Wn=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},js=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let ln;const es=()=>ln||(ln=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ts(e){if(I(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],r=z(n)?Xr(n):ts(n);if(r)for(const i in r)t[i]=r[i]}return t}else if(z(e)||G(e))return e}const Yr=/;(?![^(]*\))/g,zr=/:([^]+)/,Qr=/\/\*[^]*?\*\//g;function Xr(e){const t={};return e.replace(Qr,"").split(Yr).forEach(s=>{if(s){const n=s.split(zr);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function ss(e){let t="";if(z(e))t=e;else if(I(e))for(let s=0;s<e.length;s++){const n=ss(e[s]);n&&(t+=n+" ")}else if(G(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const Zr="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",ei=Ds(Zr);function qn(e){return!!e||e===""}const Jn=e=>!!(e&&e.__v_isRef===!0),Z=e=>z(e)?e:e==null?"":I(e)||G(e)&&(e.toString===Kn||!M(e.toString))?Jn(e)?Z(e.value):JSON.stringify(e,kn,2):String(e),kn=(e,t)=>Jn(t)?kn(e,t.value):lt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,r],i)=>(s[hs(n,i)+" =>"]=r,s),{})}:jn(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>hs(s))}:ke(t)?hs(t):G(t)&&!I(t)&&!Vn(t)?String(t):t,hs=(e,t="")=>{var s;return ke(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/**
6
+ * @vue/reactivity v3.5.27
7
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
8
+ * @license MIT
9
+ **/let ce;class ti{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=ce,!t&&ce&&(this.index=(ce.scopes||(ce.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=ce;try{return ce=this,t()}finally{ce=s}}}on(){++this._on===1&&(this.prevScope=ce,ce=this)}off(){this._on>0&&--this._on===0&&(ce=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 si(){return ce}let J;const ps=new WeakSet;class Gn{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,ce&&ce.active&&ce.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,ps.has(this)&&(ps.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||zn(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,cn(this),Qn(this);const t=J,s=me;J=this,me=!0;try{return this.fn()}finally{Xn(this),J=t,me=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Vs(t);this.deps=this.depsTail=void 0,cn(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?ps.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Cs(this)&&this.run()}get dirty(){return Cs(this)}}let Yn=0,yt,xt;function zn(e,t=!1){if(e.flags|=8,t){e.next=xt,xt=e;return}e.next=yt,yt=e}function Us(){Yn++}function Ks(){if(--Yn>0)return;if(xt){let t=xt;for(xt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;yt;){let t=yt;for(yt=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 Qn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Xn(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),Vs(n),ni(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function Cs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Zn(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Zn(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Et)||(e.globalVersion=Et,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Cs(e))))return;e.flags|=2;const t=e.dep,s=J,n=me;J=e,me=!0;try{Qn(e);const r=e.fn(e._value);(t.version===0||We(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{J=s,me=n,Xn(e),e.flags&=-3}}function Vs(e,t=!1){const{dep:s,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let i=s.computed.deps;i;i=i.nextDep)Vs(i,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function ni(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 er=[];function Le(){er.push(me),me=!1}function Ne(){const e=er.pop();me=e===void 0?!0:e}function cn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=J;J=void 0;try{t()}finally{J=s}}}let Et=0;class ri{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 Bs{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(!J||!me||J===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==J)s=this.activeLink=new ri(J,this),J.deps?(s.prevDep=J.depsTail,J.depsTail.nextDep=s,J.depsTail=s):J.deps=J.depsTail=s,tr(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=J.depsTail,s.nextDep=void 0,J.depsTail.nextDep=s,J.depsTail=s,J.deps===s&&(J.deps=n)}return s}trigger(t){this.version++,Et++,this.notify(t)}notify(t){Us();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Ks()}}}function tr(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)tr(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Ts=new WeakMap,tt=Symbol(""),Es=Symbol(""),Ot=Symbol("");function ee(e,t,s){if(me&&J){let n=Ts.get(e);n||Ts.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new Bs),r.map=n,r.key=s),r.track()}}function $e(e,t,s,n,r,i){const o=Ts.get(e);if(!o){Et++;return}const l=f=>{f&&f.trigger()};if(Us(),t==="clear")o.forEach(l);else{const f=I(e),h=f&&Hs(s);if(f&&s==="length"){const a=Number(n);o.forEach((p,w)=>{(w==="length"||w===Ot||!ke(w)&&w>=a)&&l(p)})}else switch((s!==void 0||o.has(void 0))&&l(o.get(s)),h&&l(o.get(Ot)),t){case"add":f?h&&l(o.get("length")):(l(o.get(tt)),lt(e)&&l(o.get(Es)));break;case"delete":f||(l(o.get(tt)),lt(e)&&l(o.get(Es)));break;case"set":lt(e)&&l(o.get(tt));break}}Ks()}function nt(e){const t=H(e);return t===e?t:(ee(t,"iterate",Ot),ge(e)?t:t.map(ve))}function ns(e){return ee(e=H(e),"iterate",Ot),e}function Ue(e,t){return He(e)?ut(st(e)?ve(t):t):ve(t)}const ii={__proto__:null,[Symbol.iterator](){return gs(this,Symbol.iterator,e=>Ue(this,e))},concat(...e){return nt(this).concat(...e.map(t=>I(t)?nt(t):t))},entries(){return gs(this,"entries",e=>(e[1]=Ue(this,e[1]),e))},every(e,t){return Ie(this,"every",e,t,void 0,arguments)},filter(e,t){return Ie(this,"filter",e,t,s=>s.map(n=>Ue(this,n)),arguments)},find(e,t){return Ie(this,"find",e,t,s=>Ue(this,s),arguments)},findIndex(e,t){return Ie(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ie(this,"findLast",e,t,s=>Ue(this,s),arguments)},findLastIndex(e,t){return Ie(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ie(this,"forEach",e,t,void 0,arguments)},includes(...e){return _s(this,"includes",e)},indexOf(...e){return _s(this,"indexOf",e)},join(e){return nt(this).join(e)},lastIndexOf(...e){return _s(this,"lastIndexOf",e)},map(e,t){return Ie(this,"map",e,t,void 0,arguments)},pop(){return _t(this,"pop")},push(...e){return _t(this,"push",e)},reduce(e,...t){return fn(this,"reduce",e,t)},reduceRight(e,...t){return fn(this,"reduceRight",e,t)},shift(){return _t(this,"shift")},some(e,t){return Ie(this,"some",e,t,void 0,arguments)},splice(...e){return _t(this,"splice",e)},toReversed(){return nt(this).toReversed()},toSorted(e){return nt(this).toSorted(e)},toSpliced(...e){return nt(this).toSpliced(...e)},unshift(...e){return _t(this,"unshift",e)},values(){return gs(this,"values",e=>Ue(this,e))}};function gs(e,t,s){const n=ns(e),r=n[t]();return n!==e&&!ge(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=s(i.value)),i}),r}const oi=Array.prototype;function Ie(e,t,s,n,r,i){const o=ns(e),l=o!==e&&!ge(e),f=o[t];if(f!==oi[t]){const p=f.apply(e,i);return l?ve(p):p}let h=s;o!==e&&(l?h=function(p,w){return s.call(this,Ue(e,p),w,e)}:s.length>2&&(h=function(p,w){return s.call(this,p,w,e)}));const a=f.call(o,h,n);return l&&r?r(a):a}function fn(e,t,s,n){const r=ns(e);let i=s;return r!==e&&(ge(e)?s.length>3&&(i=function(o,l,f){return s.call(this,o,l,f,e)}):i=function(o,l,f){return s.call(this,o,Ue(e,l),f,e)}),r[t](i,...n)}function _s(e,t,s){const n=H(e);ee(n,"iterate",Ot);const r=n[t](...s);return(r===-1||r===!1)&&ks(s[0])?(s[0]=H(s[0]),n[t](...s)):r}function _t(e,t,s=[]){Le(),Us();const n=H(e)[t].apply(e,s);return Ks(),Ne(),n}const li=Ds("__proto__,__v_isRef,__isVue"),sr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ke));function ci(e){ke(e)||(e=String(e));const t=H(this);return ee(t,"has",e),t.hasOwnProperty(e)}class nr{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(r?i?bi:lr:i?or:ir).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=I(t);if(!r){let f;if(o&&(f=ii[s]))return f;if(s==="hasOwnProperty")return ci}const l=Reflect.get(t,s,te(t)?t:n);if((ke(s)?sr.has(s):li(s))||(r||ee(t,"get",s),i))return l;if(te(l)){const f=o&&Hs(s)?l:l.value;return r&&G(f)?As(f):f}return G(l)?r?As(l):qs(l):l}}class rr extends nr{constructor(t=!1){super(!1,t)}set(t,s,n,r){let i=t[s];const o=I(t)&&Hs(s);if(!this._isShallow){const h=He(i);if(!ge(n)&&!He(n)&&(i=H(i),n=H(n)),!o&&te(i)&&!te(n))return h||(i.value=n),!0}const l=o?Number(s)<t.length:j(t,s),f=Reflect.set(t,s,n,te(t)?t:r);return t===H(r)&&(l?We(n,i)&&$e(t,"set",s,n):$e(t,"add",s,n)),f}deleteProperty(t,s){const n=j(t,s);t[s];const r=Reflect.deleteProperty(t,s);return r&&n&&$e(t,"delete",s,void 0),r}has(t,s){const n=Reflect.has(t,s);return(!ke(s)||!sr.has(s))&&ee(t,"has",s),n}ownKeys(t){return ee(t,"iterate",I(t)?"length":tt),Reflect.ownKeys(t)}}class fi extends nr{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const ui=new rr,ai=new fi,di=new rr(!0);const Os=e=>e,Ht=e=>Reflect.getPrototypeOf(e);function hi(e,t,s){return function(...n){const r=this.__v_raw,i=H(r),o=lt(i),l=e==="entries"||e===Symbol.iterator&&o,f=e==="keys"&&o,h=r[e](...n),a=s?Os:t?ut:ve;return!t&&ee(i,"iterate",f?Es:tt),X(Object.create(h),{next(){const{value:p,done:w}=h.next();return w?{value:p,done:w}:{value:l?[a(p[0]),a(p[1])]:a(p),done:w}}})}}function jt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function pi(e,t){const s={get(r){const i=this.__v_raw,o=H(i),l=H(r);e||(We(r,l)&&ee(o,"get",r),ee(o,"get",l));const{has:f}=Ht(o),h=t?Os:e?ut:ve;if(f.call(o,r))return h(i.get(r));if(f.call(o,l))return h(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&ee(H(r),"iterate",tt),r.size},has(r){const i=this.__v_raw,o=H(i),l=H(r);return e||(We(r,l)&&ee(o,"has",r),ee(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,f=H(l),h=t?Os:e?ut:ve;return!e&&ee(f,"iterate",tt),l.forEach((a,p)=>r.call(i,h(a),h(p),o))}};return X(s,e?{add:jt("add"),set:jt("set"),delete:jt("delete"),clear:jt("clear")}:{add(r){!t&&!ge(r)&&!He(r)&&(r=H(r));const i=H(this);return Ht(i).has.call(i,r)||(i.add(r),$e(i,"add",r,r)),this},set(r,i){!t&&!ge(i)&&!He(i)&&(i=H(i));const o=H(this),{has:l,get:f}=Ht(o);let h=l.call(o,r);h||(r=H(r),h=l.call(o,r));const a=f.call(o,r);return o.set(r,i),h?We(i,a)&&$e(o,"set",r,i):$e(o,"add",r,i),this},delete(r){const i=H(this),{has:o,get:l}=Ht(i);let f=o.call(i,r);f||(r=H(r),f=o.call(i,r)),l&&l.call(i,r);const h=i.delete(r);return f&&$e(i,"delete",r,void 0),h},clear(){const r=H(this),i=r.size!==0,o=r.clear();return i&&$e(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=hi(r,e,t)}),s}function Ws(e,t){const s=pi(e,t);return(n,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get(j(s,r)&&r in n?s:n,r,i)}const gi={get:Ws(!1,!1)},_i={get:Ws(!1,!0)},mi={get:Ws(!0,!1)};const ir=new WeakMap,or=new WeakMap,lr=new WeakMap,bi=new WeakMap;function vi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function yi(e){return e.__v_skip||!Object.isExtensible(e)?0:vi(Jr(e))}function qs(e){return He(e)?e:Js(e,!1,ui,gi,ir)}function xi(e){return Js(e,!1,di,_i,or)}function As(e){return Js(e,!0,ai,mi,lr)}function Js(e,t,s,n,r){if(!G(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=yi(e);if(i===0)return e;const o=r.get(e);if(o)return o;const l=new Proxy(e,i===2?n:s);return r.set(e,l),l}function st(e){return He(e)?st(e.__v_raw):!!(e&&e.__v_isReactive)}function He(e){return!!(e&&e.__v_isReadonly)}function ge(e){return!!(e&&e.__v_isShallow)}function ks(e){return e?!!e.__v_raw:!1}function H(e){const t=e&&e.__v_raw;return t?H(t):e}function Si(e){return!j(e,"__v_skip")&&Object.isExtensible(e)&&Wn(e,"__v_skip",!0),e}const ve=e=>G(e)?qs(e):e,ut=e=>G(e)?As(e):e;function te(e){return e?e.__v_isRef===!0:!1}function ae(e){return wi(e,!1)}function wi(e,t){return te(e)?e:new Ci(e,t)}class Ci{constructor(t,s){this.dep=new Bs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:H(t),this._value=s?t:ve(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||ge(t)||He(t);t=n?t:H(t),We(t,s)&&(this._rawValue=t,this._value=n?t:ve(t),this.dep.trigger())}}function Ti(e){return te(e)?e.value:e}const Ei={get:(e,t,s)=>t==="__v_raw"?e:Ti(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return te(r)&&!te(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function cr(e){return st(e)?e:new Proxy(e,Ei)}class Oi{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new Bs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Et-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&J!==this)return zn(this,!0),!0}get value(){const t=this.dep.track();return Zn(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Ai(e,t,s=!1){let n,r;return M(e)?n=e:(n=e.get,r=e.set),new Oi(n,r,s)}const Ut={},qt=new WeakMap;let et;function Pi(e,t=!1,s=et){if(s){let n=qt.get(s);n||qt.set(s,n=[]),n.push(e)}}function Ri(e,t,s=V){const{immediate:n,deep:r,once:i,scheduler:o,augmentJob:l,call:f}=s,h=A=>r?A:ge(A)||r===!1||r===0?De(A,1):De(A);let a,p,w,C,F=!1,$=!1;if(te(e)?(p=()=>e.value,F=ge(e)):st(e)?(p=()=>h(e),F=!0):I(e)?($=!0,F=e.some(A=>st(A)||ge(A)),p=()=>e.map(A=>{if(te(A))return A.value;if(st(A))return h(A);if(M(A))return f?f(A,2):A()})):M(e)?t?p=f?()=>f(e,2):e:p=()=>{if(w){Le();try{w()}finally{Ne()}}const A=et;et=a;try{return f?f(e,3,[C]):e(C)}finally{et=A}}:p=Pe,t&&r){const A=p,P=r===!0?1/0:r;p=()=>De(A(),P)}const Q=si(),D=()=>{a.stop(),Q&&Q.active&&Ns(Q.effects,a)};if(i&&t){const A=t;t=(...P)=>{A(...P),D()}}let K=$?new Array(e.length).fill(Ut):Ut;const k=A=>{if(!(!(a.flags&1)||!a.dirty&&!A))if(t){const P=a.run();if(r||F||($?P.some((B,N)=>We(B,K[N])):We(P,K))){w&&w();const B=et;et=a;try{const N=[P,K===Ut?void 0:$&&K[0]===Ut?[]:K,C];K=P,f?f(t,3,N):t(...N)}finally{et=B}}}else a.run()};return l&&l(k),a=new Gn(p),a.scheduler=o?()=>o(k,!1):k,C=A=>Pi(A,!1,a),w=a.onStop=()=>{const A=qt.get(a);if(A){if(f)f(A,4);else for(const P of A)P();qt.delete(a)}},t?n?k(!0):K=a.run():o?o(k.bind(null,!0),!0):a.run(),D.pause=a.pause.bind(a),D.resume=a.resume.bind(a),D.stop=D,D}function De(e,t=1/0,s){if(t<=0||!G(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,te(e))De(e.value,t,s);else if(I(e))for(let n=0;n<e.length;n++)De(e[n],t,s);else if(jn(e)||lt(e))e.forEach(n=>{De(n,t,s)});else if(Vn(e)){for(const n in e)De(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&De(e[n],t,s)}return e}/**
10
+ * @vue/runtime-core v3.5.27
11
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
12
+ * @license MIT
13
+ **/function It(e,t,s,n){try{return n?e(...n):e()}catch(r){rs(r,t,s)}}function Re(e,t,s,n){if(M(e)){const r=It(e,t,s,n);return r&&Un(r)&&r.catch(i=>{rs(i,t,s)}),r}if(I(e)){const r=[];for(let i=0;i<e.length;i++)r.push(Re(e[i],t,s,n));return r}}function rs(e,t,s,n=!0){const r=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:o}=t&&t.appContext.config||V;if(t){let l=t.parent;const f=t.proxy,h=`https://vuejs.org/error-reference/#runtime-${s}`;for(;l;){const a=l.ec;if(a){for(let p=0;p<a.length;p++)if(a[p](e,f,h)===!1)return}l=l.parent}if(i){Le(),It(i,null,10,[e,f,h]),Ne();return}}Ii(e,s,r,n,o)}function Ii(e,t,s,n=!0,r=!1){if(r)throw e;console.error(e)}const re=[];let Ee=-1;const ct=[];let Ke=null,rt=0;const fr=Promise.resolve();let Jt=null;function Mi(e){const t=Jt||fr;return e?t.then(this?e.bind(this):e):t}function Fi(e){let t=Ee+1,s=re.length;for(;t<s;){const n=t+s>>>1,r=re[n],i=At(r);i<e||i===e&&r.flags&2?t=n+1:s=n}return t}function Gs(e){if(!(e.flags&1)){const t=At(e),s=re[re.length-1];!s||!(e.flags&2)&&t>=At(s)?re.push(e):re.splice(Fi(t),0,e),e.flags|=1,ur()}}function ur(){Jt||(Jt=fr.then(dr))}function $i(e){I(e)?ct.push(...e):Ke&&e.id===-1?Ke.splice(rt+1,0,e):e.flags&1||(ct.push(e),e.flags|=1),ur()}function un(e,t,s=Ee+1){for(;s<re.length;s++){const n=re[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;re.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function ar(e){if(ct.length){const t=[...new Set(ct)].sort((s,n)=>At(s)-At(n));if(ct.length=0,Ke){Ke.push(...t);return}for(Ke=t,rt=0;rt<Ke.length;rt++){const s=Ke[rt];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Ke=null,rt=0}}const At=e=>e.id==null?e.flags&2?-1:1/0:e.id;function dr(e){try{for(Ee=0;Ee<re.length;Ee++){const t=re[Ee];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),It(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Ee<re.length;Ee++){const t=re[Ee];t&&(t.flags&=-2)}Ee=-1,re.length=0,ar(),Jt=null,(re.length||ct.length)&&dr()}}let pe=null,hr=null;function kt(e){const t=pe;return pe=e,hr=e&&e.type.__scopeId||null,t}function Di(e,t=pe,s){if(!t||e._n)return e;const n=(...r)=>{n._d&&yn(-1);const i=kt(t);let o;try{o=e(...r)}finally{kt(i),n._d&&yn(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function Li(e,t){if(pe===null)return e;const s=fs(pe),n=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[i,o,l,f=V]=t[r];i&&(M(i)&&(i={mounted:i,updated:i}),i.deep&&De(o),n.push({dir:i,instance:s,value:o,oldValue:void 0,arg:l,modifiers:f}))}return e}function Xe(e,t,s,n){const r=e.dirs,i=t&&t.dirs;for(let o=0;o<r.length;o++){const l=r[o];i&&(l.oldValue=i[o].value);let f=l.dir[n];f&&(Le(),Re(f,s,8,[e.el,l,e,t]),Ne())}}function Ni(e,t){if(ie){let s=ie.provides;const n=ie.parent&&ie.parent.provides;n===s&&(s=ie.provides=Object.create(n)),s[e]=t}}function Vt(e,t,s=!1){const n=jo();if(n||ft){let r=ft?ft._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&&M(t)?t.call(n&&n.proxy):t}}const Hi=Symbol.for("v-scx"),ji=()=>Vt(Hi);function ms(e,t,s){return pr(e,t,s)}function pr(e,t,s=V){const{immediate:n,deep:r,flush:i,once:o}=s,l=X({},s),f=t&&n||!t&&i!=="post";let h;if(Rt){if(i==="sync"){const C=ji();h=C.__watcherHandles||(C.__watcherHandles=[])}else if(!f){const C=()=>{};return C.stop=Pe,C.resume=Pe,C.pause=Pe,C}}const a=ie;l.call=(C,F,$)=>Re(C,a,F,$);let p=!1;i==="post"?l.scheduler=C=>{ue(C,a&&a.suspense)}:i!=="sync"&&(p=!0,l.scheduler=(C,F)=>{F?C():Gs(C)}),l.augmentJob=C=>{t&&(C.flags|=4),p&&(C.flags|=2,a&&(C.id=a.uid,C.i=a))};const w=Ri(e,t,l);return Rt&&(h?h.push(w):f&&w()),w}function Ui(e,t,s){const n=this.proxy,r=z(e)?e.includes(".")?gr(n,e):()=>n[e]:e.bind(n,n);let i;M(t)?i=t:(i=t.handler,s=t);const o=Mt(this),l=pr(r,i.bind(n),s);return o(),l}function gr(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 Ki=Symbol("_vte"),Vi=e=>e.__isTeleport,Bi=Symbol("_leaveCb");function Ys(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Ys(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 zs(e,t){return M(e)?X({name:e.name},t,{setup:e}):e}function _r(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Gt=new WeakMap;function St(e,t,s,n,r=!1){if(I(e)){e.forEach((F,$)=>St(F,t&&(I(t)?t[$]:t),s,n,r));return}if(wt(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&St(e,t,s,n.component.subTree);return}const i=n.shapeFlag&4?fs(n.component):n.el,o=r?null:i,{i:l,r:f}=e,h=t&&t.r,a=l.refs===V?l.refs={}:l.refs,p=l.setupState,w=H(p),C=p===V?Hn:F=>j(w,F);if(h!=null&&h!==f){if(an(t),z(h))a[h]=null,C(h)&&(p[h]=null);else if(te(h)){h.value=null;const F=t;F.k&&(a[F.k]=null)}}if(M(f))It(f,l,12,[o,a]);else{const F=z(f),$=te(f);if(F||$){const Q=()=>{if(e.f){const D=F?C(f)?p[f]:a[f]:f.value;if(r)I(D)&&Ns(D,i);else if(I(D))D.includes(i)||D.push(i);else if(F)a[f]=[i],C(f)&&(p[f]=a[f]);else{const K=[i];f.value=K,e.k&&(a[e.k]=K)}}else F?(a[f]=o,C(f)&&(p[f]=o)):$&&(f.value=o,e.k&&(a[e.k]=o))};if(o){const D=()=>{Q(),Gt.delete(e)};D.id=-1,Gt.set(e,D),ue(D,s)}else an(e),Q()}}}function an(e){const t=Gt.get(e);t&&(t.flags|=8,Gt.delete(e))}es().requestIdleCallback;es().cancelIdleCallback;const wt=e=>!!e.type.__asyncLoader,mr=e=>e.type.__isKeepAlive;function Wi(e,t){br(e,"a",t)}function qi(e,t){br(e,"da",t)}function br(e,t,s=ie){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(is(t,n,s),s){let r=s.parent;for(;r&&r.parent;)mr(r.parent.vnode)&&Ji(n,t,s,r),r=r.parent}}function Ji(e,t,s,n){const r=is(t,e,n,!0);vr(()=>{Ns(n[t],r)},s)}function is(e,t,s=ie,n=!1){if(s){const r=s[e]||(s[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Le();const l=Mt(s),f=Re(t,s,e,o);return l(),Ne(),f});return n?r.unshift(i):r.push(i),i}}const je=e=>(t,s=ie)=>{(!Rt||e==="sp")&&is(e,(...n)=>t(...n),s)},ki=je("bm"),os=je("m"),Gi=je("bu"),Yi=je("u"),zi=je("bum"),vr=je("um"),Qi=je("sp"),Xi=je("rtg"),Zi=je("rtc");function eo(e,t=ie){is("ec",e,t)}const to=Symbol.for("v-ndc");function so(e,t,s,n){let r;const i=s,o=I(e);if(o||z(e)){const l=o&&st(e);let f=!1,h=!1;l&&(f=!ge(e),h=He(e),e=ns(e)),r=new Array(e.length);for(let a=0,p=e.length;a<p;a++)r[a]=t(f?h?ut(ve(e[a])):ve(e[a]):e[a],a,void 0,i)}else if(typeof e=="number"){r=new Array(e);for(let l=0;l<e;l++)r[l]=t(l+1,l,void 0,i)}else if(G(e))if(e[Symbol.iterator])r=Array.from(e,(l,f)=>t(l,f,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let f=0,h=l.length;f<h;f++){const a=l[f];r[f]=t(e[a],a,f,i)}}else r=[];return r}const Ps=e=>e?Ur(e)?fs(e):Ps(e.parent):null,Ct=X(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=>Ps(e.parent),$root:e=>Ps(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>xr(e),$forceUpdate:e=>e.f||(e.f=()=>{Gs(e.update)}),$nextTick:e=>e.n||(e.n=Mi.bind(e.proxy)),$watch:e=>Ui.bind(e)}),bs=(e,t)=>e!==V&&!e.__isScriptSetup&&j(e,t),no={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:i,accessCache:o,type:l,appContext:f}=e;if(t[0]!=="$"){const w=o[t];if(w!==void 0)switch(w){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return i[t]}else{if(bs(n,t))return o[t]=1,n[t];if(r!==V&&j(r,t))return o[t]=2,r[t];if(j(i,t))return o[t]=3,i[t];if(s!==V&&j(s,t))return o[t]=4,s[t];Rs&&(o[t]=0)}}const h=Ct[t];let a,p;if(h)return t==="$attrs"&&ee(e.attrs,"get",""),h(e);if((a=l.__cssModules)&&(a=a[t]))return a;if(s!==V&&j(s,t))return o[t]=4,s[t];if(p=f.config.globalProperties,j(p,t))return p[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:i}=e;return bs(r,t)?(r[t]=s,!0):n!==V&&j(n,t)?(n[t]=s,!0):j(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,props:i,type:o}},l){let f;return!!(s[l]||e!==V&&l[0]!=="$"&&j(e,l)||bs(t,l)||j(i,l)||j(n,l)||j(Ct,l)||j(r.config.globalProperties,l)||(f=o.__cssModules)&&f[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:j(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function dn(e){return I(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Rs=!0;function ro(e){const t=xr(e),s=e.proxy,n=e.ctx;Rs=!1,t.beforeCreate&&hn(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:f,inject:h,created:a,beforeMount:p,mounted:w,beforeUpdate:C,updated:F,activated:$,deactivated:Q,beforeDestroy:D,beforeUnmount:K,destroyed:k,unmounted:A,render:P,renderTracked:B,renderTriggered:N,errorCaptured:he,serverPrefetch:Ft,expose:Ye,inheritAttrs:dt,components:$t,directives:Dt,filters:us}=t;if(h&&io(h,n,null),o)for(const Y in o){const W=o[Y];M(W)&&(n[Y]=W.bind(s))}if(r){const Y=r.call(s,s);G(Y)&&(e.data=qs(Y))}if(Rs=!0,i)for(const Y in i){const W=i[Y],ze=M(W)?W.bind(s,s):M(W.get)?W.get.bind(s,s):Pe,Lt=!M(W)&&M(W.set)?W.set.bind(s):Pe,Qe=qo({get:ze,set:Lt});Object.defineProperty(n,Y,{enumerable:!0,configurable:!0,get:()=>Qe.value,set:ye=>Qe.value=ye})}if(l)for(const Y in l)yr(l[Y],n,s,Y);if(f){const Y=M(f)?f.call(s):f;Reflect.ownKeys(Y).forEach(W=>{Ni(W,Y[W])})}a&&hn(a,e,"c");function se(Y,W){I(W)?W.forEach(ze=>Y(ze.bind(s))):W&&Y(W.bind(s))}if(se(ki,p),se(os,w),se(Gi,C),se(Yi,F),se(Wi,$),se(qi,Q),se(eo,he),se(Zi,B),se(Xi,N),se(zi,K),se(vr,A),se(Qi,Ft),I(Ye))if(Ye.length){const Y=e.exposed||(e.exposed={});Ye.forEach(W=>{Object.defineProperty(Y,W,{get:()=>s[W],set:ze=>s[W]=ze,enumerable:!0})})}else e.exposed||(e.exposed={});P&&e.render===Pe&&(e.render=P),dt!=null&&(e.inheritAttrs=dt),$t&&(e.components=$t),Dt&&(e.directives=Dt),Ft&&_r(e)}function io(e,t,s=Pe){I(e)&&(e=Is(e));for(const n in e){const r=e[n];let i;G(r)?"default"in r?i=Vt(r.from||n,r.default,!0):i=Vt(r.from||n):i=Vt(r),te(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[n]=i}}function hn(e,t,s){Re(I(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function yr(e,t,s,n){let r=n.includes(".")?gr(s,n):()=>s[n];if(z(e)){const i=t[e];M(i)&&ms(r,i)}else if(M(e))ms(r,e.bind(s));else if(G(e))if(I(e))e.forEach(i=>yr(i,t,s,n));else{const i=M(e.handler)?e.handler.bind(s):t[e.handler];M(i)&&ms(r,i,e)}}function xr(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let f;return l?f=l:!r.length&&!s&&!n?f=t:(f={},r.length&&r.forEach(h=>Yt(f,h,o,!0)),Yt(f,t,o)),G(t)&&i.set(t,f),f}function Yt(e,t,s,n=!1){const{mixins:r,extends:i}=t;i&&Yt(e,i,s,!0),r&&r.forEach(o=>Yt(e,o,s,!0));for(const o in t)if(!(n&&o==="expose")){const l=oo[o]||s&&s[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const oo={data:pn,props:gn,emits:gn,methods:bt,computed:bt,beforeCreate:ne,created:ne,beforeMount:ne,mounted:ne,beforeUpdate:ne,updated:ne,beforeDestroy:ne,beforeUnmount:ne,destroyed:ne,unmounted:ne,activated:ne,deactivated:ne,errorCaptured:ne,serverPrefetch:ne,components:bt,directives:bt,watch:co,provide:pn,inject:lo};function pn(e,t){return t?e?function(){return X(M(e)?e.call(this,this):e,M(t)?t.call(this,this):t)}:t:e}function lo(e,t){return bt(Is(e),Is(t))}function Is(e){if(I(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function ne(e,t){return e?[...new Set([].concat(e,t))]:t}function bt(e,t){return e?X(Object.create(null),e,t):t}function gn(e,t){return e?I(e)&&I(t)?[...new Set([...e,...t])]:X(Object.create(null),dn(e),dn(t??{})):t}function co(e,t){if(!e)return t;if(!t)return e;const s=X(Object.create(null),e);for(const n in t)s[n]=ne(e[n],t[n]);return s}function Sr(){return{app:null,config:{isNativeTag:Hn,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 fo=0;function uo(e,t){return function(n,r=null){M(n)||(n=X({},n)),r!=null&&!G(r)&&(r=null);const i=Sr(),o=new WeakSet,l=[];let f=!1;const h=i.app={_uid:fo++,_component:n,_props:r,_container:null,_context:i,_instance:null,version:Jo,get config(){return i.config},set config(a){},use(a,...p){return o.has(a)||(a&&M(a.install)?(o.add(a),a.install(h,...p)):M(a)&&(o.add(a),a(h,...p))),h},mixin(a){return i.mixins.includes(a)||i.mixins.push(a),h},component(a,p){return p?(i.components[a]=p,h):i.components[a]},directive(a,p){return p?(i.directives[a]=p,h):i.directives[a]},mount(a,p,w){if(!f){const C=h._ceVNode||be(n,r);return C.appContext=i,w===!0?w="svg":w===!1&&(w=void 0),e(C,a,w),f=!0,h._container=a,a.__vue_app__=h,fs(C.component)}},onUnmount(a){l.push(a)},unmount(){f&&(Re(l,h._instance,16),e(null,h._container),delete h._container.__vue_app__)},provide(a,p){return i.provides[a]=p,h},runWithContext(a){const p=ft;ft=h;try{return a()}finally{ft=p}}};return h}}let ft=null;const ao=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${qe(t)}Modifiers`]||e[`${Ge(t)}Modifiers`];function ho(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||V;let r=s;const i=t.startsWith("update:"),o=i&&ao(n,t.slice(7));o&&(o.trim&&(r=s.map(a=>z(a)?a.trim():a)),o.number&&(r=s.map(js)));let l,f=n[l=ds(t)]||n[l=ds(qe(t))];!f&&i&&(f=n[l=ds(Ge(t))]),f&&Re(f,e,6,r);const h=n[l+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Re(h,e,6,r)}}const po=new WeakMap;function wr(e,t,s=!1){const n=s?po:t.emitsCache,r=n.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!M(e)){const f=h=>{const a=wr(h,t,!0);a&&(l=!0,X(o,a))};!s&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!i&&!l?(G(e)&&n.set(e,null),null):(I(i)?i.forEach(f=>o[f]=null):X(o,i),G(e)&&n.set(e,o),o)}function ls(e,t){return!e||!Qt(t)?!1:(t=t.slice(2).replace(/Once$/,""),j(e,t[0].toLowerCase()+t.slice(1))||j(e,Ge(t))||j(e,t))}function _n(e){const{type:t,vnode:s,proxy:n,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:f,render:h,renderCache:a,props:p,data:w,setupState:C,ctx:F,inheritAttrs:$}=e,Q=kt(e);let D,K;try{if(s.shapeFlag&4){const A=r||n,P=A;D=Ae(h.call(P,A,a,p,C,w,F)),K=l}else{const A=t;D=Ae(A.length>1?A(p,{attrs:l,slots:o,emit:f}):A(p,null)),K=t.props?l:go(l)}}catch(A){Tt.length=0,rs(A,e,1),D=be(Je)}let k=D;if(K&&$!==!1){const A=Object.keys(K),{shapeFlag:P}=k;A.length&&P&7&&(i&&A.some(Ls)&&(K=_o(K,i)),k=at(k,K,!1,!0))}return s.dirs&&(k=at(k,null,!1,!0),k.dirs=k.dirs?k.dirs.concat(s.dirs):s.dirs),s.transition&&Ys(k,s.transition),D=k,kt(Q),D}const go=e=>{let t;for(const s in e)(s==="class"||s==="style"||Qt(s))&&((t||(t={}))[s]=e[s]);return t},_o=(e,t)=>{const s={};for(const n in e)(!Ls(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function mo(e,t,s){const{props:n,children:r,component:i}=e,{props:o,children:l,patchFlag:f}=t,h=i.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&f>=0){if(f&1024)return!0;if(f&16)return n?mn(n,o,h):!!o;if(f&8){const a=t.dynamicProps;for(let p=0;p<a.length;p++){const w=a[p];if(o[w]!==n[w]&&!ls(h,w))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:n===o?!1:n?o?mn(n,o,h):!0:!!o;return!1}function mn(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 i=n[r];if(t[i]!==e[i]&&!ls(s,i))return!0}return!1}function bo({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 Cr={},Tr=()=>Object.create(Cr),Er=e=>Object.getPrototypeOf(e)===Cr;function vo(e,t,s,n=!1){const r={},i=Tr();e.propsDefaults=Object.create(null),Or(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);s?e.props=n?r:xi(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function yo(e,t,s,n){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=H(r),[f]=e.propsOptions;let h=!1;if((n||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let p=0;p<a.length;p++){let w=a[p];if(ls(e.emitsOptions,w))continue;const C=t[w];if(f)if(j(i,w))C!==i[w]&&(i[w]=C,h=!0);else{const F=qe(w);r[F]=Ms(f,l,F,C,e,!1)}else C!==i[w]&&(i[w]=C,h=!0)}}}else{Or(e,t,r,i)&&(h=!0);let a;for(const p in l)(!t||!j(t,p)&&((a=Ge(p))===p||!j(t,a)))&&(f?s&&(s[p]!==void 0||s[a]!==void 0)&&(r[p]=Ms(f,l,p,void 0,e,!0)):delete r[p]);if(i!==l)for(const p in i)(!t||!j(t,p))&&(delete i[p],h=!0)}h&&$e(e.attrs,"set","")}function Or(e,t,s,n){const[r,i]=e.propsOptions;let o=!1,l;if(t)for(let f in t){if(vt(f))continue;const h=t[f];let a;r&&j(r,a=qe(f))?!i||!i.includes(a)?s[a]=h:(l||(l={}))[a]=h:ls(e.emitsOptions,f)||(!(f in n)||h!==n[f])&&(n[f]=h,o=!0)}if(i){const f=H(s),h=l||V;for(let a=0;a<i.length;a++){const p=i[a];s[p]=Ms(r,f,p,h[p],e,!j(h,p))}}return o}function Ms(e,t,s,n,r,i){const o=e[s];if(o!=null){const l=j(o,"default");if(l&&n===void 0){const f=o.default;if(o.type!==Function&&!o.skipFactory&&M(f)){const{propsDefaults:h}=r;if(s in h)n=h[s];else{const a=Mt(r);n=h[s]=f.call(null,t),a()}}else n=f;r.ce&&r.ce._setProp(s,n)}o[0]&&(i&&!l?n=!1:o[1]&&(n===""||n===Ge(s))&&(n=!0))}return n}const xo=new WeakMap;function Ar(e,t,s=!1){const n=s?xo:t.propsCache,r=n.get(e);if(r)return r;const i=e.props,o={},l=[];let f=!1;if(!M(e)){const a=p=>{f=!0;const[w,C]=Ar(p,t,!0);X(o,w),C&&l.push(...C)};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!f)return G(e)&&n.set(e,ot),ot;if(I(i))for(let a=0;a<i.length;a++){const p=qe(i[a]);bn(p)&&(o[p]=V)}else if(i)for(const a in i){const p=qe(a);if(bn(p)){const w=i[a],C=o[p]=I(w)||M(w)?{type:w}:X({},w),F=C.type;let $=!1,Q=!0;if(I(F))for(let D=0;D<F.length;++D){const K=F[D],k=M(K)&&K.name;if(k==="Boolean"){$=!0;break}else k==="String"&&(Q=!1)}else $=M(F)&&F.name==="Boolean";C[0]=$,C[1]=Q,($||j(C,"default"))&&l.push(p)}}const h=[o,l];return G(e)&&n.set(e,h),h}function bn(e){return e[0]!=="$"&&!vt(e)}const Qs=e=>e==="_"||e==="_ctx"||e==="$stable",Xs=e=>I(e)?e.map(Ae):[Ae(e)],So=(e,t,s)=>{if(t._n)return t;const n=Di((...r)=>Xs(t(...r)),s);return n._c=!1,n},Pr=(e,t,s)=>{const n=e._ctx;for(const r in e){if(Qs(r))continue;const i=e[r];if(M(i))t[r]=So(r,i,n);else if(i!=null){const o=Xs(i);t[r]=()=>o}}},Rr=(e,t)=>{const s=Xs(t);e.slots.default=()=>s},Ir=(e,t,s)=>{for(const n in t)(s||!Qs(n))&&(e[n]=t[n])},wo=(e,t,s)=>{const n=e.slots=Tr();if(e.vnode.shapeFlag&32){const r=t._;r?(Ir(n,t,s),s&&Wn(n,"_",r,!0)):Pr(t,n)}else t&&Rr(e,t)},Co=(e,t,s)=>{const{vnode:n,slots:r}=e;let i=!0,o=V;if(n.shapeFlag&32){const l=t._;l?s&&l===1?i=!1:Ir(r,t,s):(i=!t.$stable,Pr(t,r)),o=t}else t&&(Rr(e,t),o={default:1});if(i)for(const l in r)!Qs(l)&&o[l]==null&&delete r[l]},ue=Po;function To(e){return Eo(e)}function Eo(e,t){const s=es();s.__VUE__=!0;const{insert:n,remove:r,patchProp:i,createElement:o,createText:l,createComment:f,setText:h,setElementText:a,parentNode:p,nextSibling:w,setScopeId:C=Pe,insertStaticContent:F}=e,$=(c,u,d,b=null,g=null,_=null,x=void 0,y=null,v=!!u.dynamicChildren)=>{if(c===u)return;c&&!mt(c,u)&&(b=Nt(c),ye(c,g,_,!0),c=null),u.patchFlag===-2&&(v=!1,u.dynamicChildren=null);const{type:m,ref:E,shapeFlag:S}=u;switch(m){case cs:Q(c,u,d,b);break;case Je:D(c,u,d,b);break;case ys:c==null&&K(u,d,b,x);break;case _e:$t(c,u,d,b,g,_,x,y,v);break;default:S&1?P(c,u,d,b,g,_,x,y,v):S&6?Dt(c,u,d,b,g,_,x,y,v):(S&64||S&128)&&m.process(c,u,d,b,g,_,x,y,v,pt)}E!=null&&g?St(E,c&&c.ref,_,u||c,!u):E==null&&c&&c.ref!=null&&St(c.ref,null,_,c,!0)},Q=(c,u,d,b)=>{if(c==null)n(u.el=l(u.children),d,b);else{const g=u.el=c.el;u.children!==c.children&&h(g,u.children)}},D=(c,u,d,b)=>{c==null?n(u.el=f(u.children||""),d,b):u.el=c.el},K=(c,u,d,b)=>{[c.el,c.anchor]=F(c.children,u,d,b,c.el,c.anchor)},k=({el:c,anchor:u},d,b)=>{let g;for(;c&&c!==u;)g=w(c),n(c,d,b),c=g;n(u,d,b)},A=({el:c,anchor:u})=>{let d;for(;c&&c!==u;)d=w(c),r(c),c=d;r(u)},P=(c,u,d,b,g,_,x,y,v)=>{if(u.type==="svg"?x="svg":u.type==="math"&&(x="mathml"),c==null)B(u,d,b,g,_,x,y,v);else{const m=c.el&&c.el._isVueCE?c.el:null;try{m&&m._beginPatch(),Ft(c,u,g,_,x,y,v)}finally{m&&m._endPatch()}}},B=(c,u,d,b,g,_,x,y)=>{let v,m;const{props:E,shapeFlag:S,transition:T,dirs:R}=c;if(v=c.el=o(c.type,_,E&&E.is,E),S&8?a(v,c.children):S&16&&he(c.children,v,null,b,g,vs(c,_),x,y),R&&Xe(c,null,b,"created"),N(v,c,c.scopeId,x,b),E){for(const q in E)q!=="value"&&!vt(q)&&i(v,q,null,E[q],_,b);"value"in E&&i(v,"value",null,E.value,_),(m=E.onVnodeBeforeMount)&&Ce(m,b,c)}R&&Xe(c,null,b,"beforeMount");const L=Oo(g,T);L&&T.beforeEnter(v),n(v,u,d),((m=E&&E.onVnodeMounted)||L||R)&&ue(()=>{m&&Ce(m,b,c),L&&T.enter(v),R&&Xe(c,null,b,"mounted")},g)},N=(c,u,d,b,g)=>{if(d&&C(c,d),b)for(let _=0;_<b.length;_++)C(c,b[_]);if(g){let _=g.subTree;if(u===_||Dr(_.type)&&(_.ssContent===u||_.ssFallback===u)){const x=g.vnode;N(c,x,x.scopeId,x.slotScopeIds,g.parent)}}},he=(c,u,d,b,g,_,x,y,v=0)=>{for(let m=v;m<c.length;m++){const E=c[m]=y?Ve(c[m]):Ae(c[m]);$(null,E,u,d,b,g,_,x,y)}},Ft=(c,u,d,b,g,_,x)=>{const y=u.el=c.el;let{patchFlag:v,dynamicChildren:m,dirs:E}=u;v|=c.patchFlag&16;const S=c.props||V,T=u.props||V;let R;if(d&&Ze(d,!1),(R=T.onVnodeBeforeUpdate)&&Ce(R,d,u,c),E&&Xe(u,c,d,"beforeUpdate"),d&&Ze(d,!0),(S.innerHTML&&T.innerHTML==null||S.textContent&&T.textContent==null)&&a(y,""),m?Ye(c.dynamicChildren,m,y,d,b,vs(u,g),_):x||W(c,u,y,null,d,b,vs(u,g),_,!1),v>0){if(v&16)dt(y,S,T,d,g);else if(v&2&&S.class!==T.class&&i(y,"class",null,T.class,g),v&4&&i(y,"style",S.style,T.style,g),v&8){const L=u.dynamicProps;for(let q=0;q<L.length;q++){const U=L[q],oe=S[U],le=T[U];(le!==oe||U==="value")&&i(y,U,oe,le,g,d)}}v&1&&c.children!==u.children&&a(y,u.children)}else!x&&m==null&&dt(y,S,T,d,g);((R=T.onVnodeUpdated)||E)&&ue(()=>{R&&Ce(R,d,u,c),E&&Xe(u,c,d,"updated")},b)},Ye=(c,u,d,b,g,_,x)=>{for(let y=0;y<u.length;y++){const v=c[y],m=u[y],E=v.el&&(v.type===_e||!mt(v,m)||v.shapeFlag&198)?p(v.el):d;$(v,m,E,null,b,g,_,x,!0)}},dt=(c,u,d,b,g)=>{if(u!==d){if(u!==V)for(const _ in u)!vt(_)&&!(_ in d)&&i(c,_,u[_],null,g,b);for(const _ in d){if(vt(_))continue;const x=d[_],y=u[_];x!==y&&_!=="value"&&i(c,_,y,x,g,b)}"value"in d&&i(c,"value",u.value,d.value,g)}},$t=(c,u,d,b,g,_,x,y,v)=>{const m=u.el=c?c.el:l(""),E=u.anchor=c?c.anchor:l("");let{patchFlag:S,dynamicChildren:T,slotScopeIds:R}=u;R&&(y=y?y.concat(R):R),c==null?(n(m,d,b),n(E,d,b),he(u.children||[],d,E,g,_,x,y,v)):S>0&&S&64&&T&&c.dynamicChildren&&c.dynamicChildren.length===T.length?(Ye(c.dynamicChildren,T,d,g,_,x,y),(u.key!=null||g&&u===g.subTree)&&Mr(c,u,!0)):W(c,u,d,E,g,_,x,y,v)},Dt=(c,u,d,b,g,_,x,y,v)=>{u.slotScopeIds=y,c==null?u.shapeFlag&512?g.ctx.activate(u,d,b,x,v):us(u,d,b,g,_,x,v):en(c,u,v)},us=(c,u,d,b,g,_,x)=>{const y=c.component=Ho(c,b,g);if(mr(c)&&(y.ctx.renderer=pt),Uo(y,!1,x),y.asyncDep){if(g&&g.registerDep(y,se,x),!c.el){const v=y.subTree=be(Je);D(null,v,u,d),c.placeholder=v.el}}else se(y,c,u,d,g,_,x)},en=(c,u,d)=>{const b=u.component=c.component;if(mo(c,u,d))if(b.asyncDep&&!b.asyncResolved){Y(b,u,d);return}else b.next=u,b.update();else u.el=c.el,b.vnode=u},se=(c,u,d,b,g,_,x)=>{const y=()=>{if(c.isMounted){let{next:S,bu:T,u:R,parent:L,vnode:q}=c;{const Se=Fr(c);if(Se){S&&(S.el=q.el,Y(c,S,x)),Se.asyncDep.then(()=>{c.isUnmounted||y()});return}}let U=S,oe;Ze(c,!1),S?(S.el=q.el,Y(c,S,x)):S=q,T&&Kt(T),(oe=S.props&&S.props.onVnodeBeforeUpdate)&&Ce(oe,L,S,q),Ze(c,!0);const le=_n(c),xe=c.subTree;c.subTree=le,$(xe,le,p(xe.el),Nt(xe),c,g,_),S.el=le.el,U===null&&bo(c,le.el),R&&ue(R,g),(oe=S.props&&S.props.onVnodeUpdated)&&ue(()=>Ce(oe,L,S,q),g)}else{let S;const{el:T,props:R}=u,{bm:L,m:q,parent:U,root:oe,type:le}=c,xe=wt(u);Ze(c,!1),L&&Kt(L),!xe&&(S=R&&R.onVnodeBeforeMount)&&Ce(S,U,u),Ze(c,!0);{oe.ce&&oe.ce._def.shadowRoot!==!1&&oe.ce._injectChildStyle(le);const Se=c.subTree=_n(c);$(null,Se,d,b,c,g,_),u.el=Se.el}if(q&&ue(q,g),!xe&&(S=R&&R.onVnodeMounted)){const Se=u;ue(()=>Ce(S,U,Se),g)}(u.shapeFlag&256||U&&wt(U.vnode)&&U.vnode.shapeFlag&256)&&c.a&&ue(c.a,g),c.isMounted=!0,u=d=b=null}};c.scope.on();const v=c.effect=new Gn(y);c.scope.off();const m=c.update=v.run.bind(v),E=c.job=v.runIfDirty.bind(v);E.i=c,E.id=c.uid,v.scheduler=()=>Gs(E),Ze(c,!0),m()},Y=(c,u,d)=>{u.component=c;const b=c.vnode.props;c.vnode=u,c.next=null,yo(c,u.props,b,d),Co(c,u.children,d),Le(),un(c),Ne()},W=(c,u,d,b,g,_,x,y,v=!1)=>{const m=c&&c.children,E=c?c.shapeFlag:0,S=u.children,{patchFlag:T,shapeFlag:R}=u;if(T>0){if(T&128){Lt(m,S,d,b,g,_,x,y,v);return}else if(T&256){ze(m,S,d,b,g,_,x,y,v);return}}R&8?(E&16&&ht(m,g,_),S!==m&&a(d,S)):E&16?R&16?Lt(m,S,d,b,g,_,x,y,v):ht(m,g,_,!0):(E&8&&a(d,""),R&16&&he(S,d,b,g,_,x,y,v))},ze=(c,u,d,b,g,_,x,y,v)=>{c=c||ot,u=u||ot;const m=c.length,E=u.length,S=Math.min(m,E);let T;for(T=0;T<S;T++){const R=u[T]=v?Ve(u[T]):Ae(u[T]);$(c[T],R,d,null,g,_,x,y,v)}m>E?ht(c,g,_,!0,!1,S):he(u,d,b,g,_,x,y,v,S)},Lt=(c,u,d,b,g,_,x,y,v)=>{let m=0;const E=u.length;let S=c.length-1,T=E-1;for(;m<=S&&m<=T;){const R=c[m],L=u[m]=v?Ve(u[m]):Ae(u[m]);if(mt(R,L))$(R,L,d,null,g,_,x,y,v);else break;m++}for(;m<=S&&m<=T;){const R=c[S],L=u[T]=v?Ve(u[T]):Ae(u[T]);if(mt(R,L))$(R,L,d,null,g,_,x,y,v);else break;S--,T--}if(m>S){if(m<=T){const R=T+1,L=R<E?u[R].el:b;for(;m<=T;)$(null,u[m]=v?Ve(u[m]):Ae(u[m]),d,L,g,_,x,y,v),m++}}else if(m>T)for(;m<=S;)ye(c[m],g,_,!0),m++;else{const R=m,L=m,q=new Map;for(m=L;m<=T;m++){const fe=u[m]=v?Ve(u[m]):Ae(u[m]);fe.key!=null&&q.set(fe.key,m)}let U,oe=0;const le=T-L+1;let xe=!1,Se=0;const gt=new Array(le);for(m=0;m<le;m++)gt[m]=0;for(m=R;m<=S;m++){const fe=c[m];if(oe>=le){ye(fe,g,_,!0);continue}let we;if(fe.key!=null)we=q.get(fe.key);else for(U=L;U<=T;U++)if(gt[U-L]===0&&mt(fe,u[U])){we=U;break}we===void 0?ye(fe,g,_,!0):(gt[we-L]=m+1,we>=Se?Se=we:xe=!0,$(fe,u[we],d,null,g,_,x,y,v),oe++)}const nn=xe?Ao(gt):ot;for(U=nn.length-1,m=le-1;m>=0;m--){const fe=L+m,we=u[fe],rn=u[fe+1],on=fe+1<E?rn.el||$r(rn):b;gt[m]===0?$(null,we,d,on,g,_,x,y,v):xe&&(U<0||m!==nn[U]?Qe(we,d,on,2):U--)}}},Qe=(c,u,d,b,g=null)=>{const{el:_,type:x,transition:y,children:v,shapeFlag:m}=c;if(m&6){Qe(c.component.subTree,u,d,b);return}if(m&128){c.suspense.move(u,d,b);return}if(m&64){x.move(c,u,d,pt);return}if(x===_e){n(_,u,d);for(let S=0;S<v.length;S++)Qe(v[S],u,d,b);n(c.anchor,u,d);return}if(x===ys){k(c,u,d);return}if(b!==2&&m&1&&y)if(b===0)y.beforeEnter(_),n(_,u,d),ue(()=>y.enter(_),g);else{const{leave:S,delayLeave:T,afterLeave:R}=y,L=()=>{c.ctx.isUnmounted?r(_):n(_,u,d)},q=()=>{_._isLeaving&&_[Bi](!0),S(_,()=>{L(),R&&R()})};T?T(_,L,q):q()}else n(_,u,d)},ye=(c,u,d,b=!1,g=!1)=>{const{type:_,props:x,ref:y,children:v,dynamicChildren:m,shapeFlag:E,patchFlag:S,dirs:T,cacheIndex:R}=c;if(S===-2&&(g=!1),y!=null&&(Le(),St(y,null,d,c,!0),Ne()),R!=null&&(u.renderCache[R]=void 0),E&256){u.ctx.deactivate(c);return}const L=E&1&&T,q=!wt(c);let U;if(q&&(U=x&&x.onVnodeBeforeUnmount)&&Ce(U,u,c),E&6)Wr(c.component,d,b);else{if(E&128){c.suspense.unmount(d,b);return}L&&Xe(c,null,u,"beforeUnmount"),E&64?c.type.remove(c,u,d,pt,b):m&&!m.hasOnce&&(_!==_e||S>0&&S&64)?ht(m,u,d,!1,!0):(_===_e&&S&384||!g&&E&16)&&ht(v,u,d),b&&tn(c)}(q&&(U=x&&x.onVnodeUnmounted)||L)&&ue(()=>{U&&Ce(U,u,c),L&&Xe(c,null,u,"unmounted")},d)},tn=c=>{const{type:u,el:d,anchor:b,transition:g}=c;if(u===_e){Br(d,b);return}if(u===ys){A(c);return}const _=()=>{r(d),g&&!g.persisted&&g.afterLeave&&g.afterLeave()};if(c.shapeFlag&1&&g&&!g.persisted){const{leave:x,delayLeave:y}=g,v=()=>x(d,_);y?y(c.el,_,v):v()}else _()},Br=(c,u)=>{let d;for(;c!==u;)d=w(c),r(c),c=d;r(u)},Wr=(c,u,d)=>{const{bum:b,scope:g,job:_,subTree:x,um:y,m:v,a:m}=c;vn(v),vn(m),b&&Kt(b),g.stop(),_&&(_.flags|=8,ye(x,c,u,d)),y&&ue(y,u),ue(()=>{c.isUnmounted=!0},u)},ht=(c,u,d,b=!1,g=!1,_=0)=>{for(let x=_;x<c.length;x++)ye(c[x],u,d,b,g)},Nt=c=>{if(c.shapeFlag&6)return Nt(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const u=w(c.anchor||c.el),d=u&&u[Ki];return d?w(d):u};let as=!1;const sn=(c,u,d)=>{let b;c==null?u._vnode&&(ye(u._vnode,null,null,!0),b=u._vnode.component):$(u._vnode||null,c,u,null,null,null,d),u._vnode=c,as||(as=!0,un(b),ar(),as=!1)},pt={p:$,um:ye,m:Qe,r:tn,mt:us,mc:he,pc:W,pbc:Ye,n:Nt,o:e};return{render:sn,hydrate:void 0,createApp:uo(sn)}}function vs({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 Ze({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Oo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Mr(e,t,s=!1){const n=e.children,r=t.children;if(I(n)&&I(r))for(let i=0;i<n.length;i++){const o=n[i];let l=r[i];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=r[i]=Ve(r[i]),l.el=o.el),!s&&l.patchFlag!==-2&&Mr(o,l)),l.type===cs&&(l.patchFlag!==-1?l.el=o.el:l.__elIndex=i+(e.type===_e?1:0)),l.type===Je&&!l.el&&(l.el=o.el)}}function Ao(e){const t=e.slice(),s=[0];let n,r,i,o,l;const f=e.length;for(n=0;n<f;n++){const h=e[n];if(h!==0){if(r=s[s.length-1],e[r]<h){t[n]=r,s.push(n);continue}for(i=0,o=s.length-1;i<o;)l=i+o>>1,e[s[l]]<h?i=l+1:o=l;h<e[s[i]]&&(i>0&&(t[n]=s[i-1]),s[i]=n)}}for(i=s.length,o=s[i-1];i-- >0;)s[i]=o,o=t[o];return s}function Fr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Fr(t)}function vn(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function $r(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?$r(t.subTree):null}const Dr=e=>e.__isSuspense;function Po(e,t){t&&t.pendingBranch?I(e)?t.effects.push(...e):t.effects.push(e):$i(e)}const _e=Symbol.for("v-fgt"),cs=Symbol.for("v-txt"),Je=Symbol.for("v-cmt"),ys=Symbol.for("v-stc"),Tt=[];let de=null;function Oe(e=!1){Tt.push(de=e?null:[])}function Ro(){Tt.pop(),de=Tt[Tt.length-1]||null}let Pt=1;function yn(e,t=!1){Pt+=e,e<0&&de&&t&&(de.hasOnce=!0)}function Lr(e){return e.dynamicChildren=Pt>0?de||ot:null,Ro(),Pt>0&&de&&de.push(e),e}function Me(e,t,s,n,r,i){return Lr(O(e,t,s,n,r,i,!0))}function Io(e,t,s,n,r){return Lr(be(e,t,s,n,r,!0))}function Nr(e){return e?e.__v_isVNode===!0:!1}function mt(e,t){return e.type===t.type&&e.key===t.key}const Hr=({key:e})=>e??null,Bt=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?z(e)||te(e)||M(e)?{i:pe,r:e,k:t,f:!!s}:e:null);function O(e,t=null,s=null,n=0,r=null,i=e===_e?0:1,o=!1,l=!1){const f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Hr(t),ref:t&&Bt(t),scopeId:hr,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:pe};return l?(Zs(f,s),i&128&&e.normalize(f)):s&&(f.shapeFlag|=z(s)?8:16),Pt>0&&!o&&de&&(f.patchFlag>0||i&6)&&f.patchFlag!==32&&de.push(f),f}const be=Mo;function Mo(e,t=null,s=null,n=0,r=null,i=!1){if((!e||e===to)&&(e=Je),Nr(e)){const l=at(e,t,!0);return s&&Zs(l,s),Pt>0&&!i&&de&&(l.shapeFlag&6?de[de.indexOf(e)]=l:de.push(l)),l.patchFlag=-2,l}if(Wo(e)&&(e=e.__vccOpts),t){t=Fo(t);let{class:l,style:f}=t;l&&!z(l)&&(t.class=ss(l)),G(f)&&(ks(f)&&!I(f)&&(f=X({},f)),t.style=ts(f))}const o=z(e)?1:Dr(e)?128:Vi(e)?64:G(e)?4:M(e)?2:0;return O(e,t,s,n,r,o,i,!0)}function Fo(e){return e?ks(e)||Er(e)?X({},e):e:null}function at(e,t,s=!1,n=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:f}=e,h=t?Do(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:h,key:h&&Hr(h),ref:t&&t.ref?s&&i?I(i)?i.concat(Bt(t)):[i,Bt(t)]:Bt(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==_e?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:f,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&at(e.ssContent),ssFallback:e.ssFallback&&at(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return f&&n&&Ys(a,f.clone(a)),a}function jr(e=" ",t=0){return be(cs,null,e,t)}function $o(e="",t=!1){return t?(Oe(),Io(Je,null,e)):be(Je,null,e)}function Ae(e){return e==null||typeof e=="boolean"?be(Je):I(e)?be(_e,null,e.slice()):Nr(e)?Ve(e):be(cs,null,String(e))}function Ve(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:at(e)}function Zs(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(I(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),Zs(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!Er(t)?t._ctx=pe:r===3&&pe&&(pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else M(t)?(t={default:t,_ctx:pe},s=32):(t=String(t),n&64?(s=16,t=[jr(t)]):s=8);e.children=t,e.shapeFlag|=s}function Do(...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=ss([t.class,n.class]));else if(r==="style")t.style=ts([t.style,n.style]);else if(Qt(r)){const i=t[r],o=n[r];o&&i!==o&&!(I(i)&&i.includes(o))&&(t[r]=i?[].concat(i,o):o)}else r!==""&&(t[r]=n[r])}return t}function Ce(e,t,s,n=null){Re(e,t,7,[s,n])}const Lo=Sr();let No=0;function Ho(e,t,s){const n=e.type,r=(t?t.appContext:e.appContext)||Lo,i={uid:No++,vnode:e,type:n,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new ti(!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:Ar(n,r),emitsOptions:wr(n,r),emit:null,emitted:null,propsDefaults:V,inheritAttrs:n.inheritAttrs,ctx:V,data:V,props:V,attrs:V,slots:V,refs:V,setupState:V,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=ho.bind(null,i),e.ce&&e.ce(i),i}let ie=null;const jo=()=>ie||pe;let zt,Fs;{const e=es(),t=(s,n)=>{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};zt=t("__VUE_INSTANCE_SETTERS__",s=>ie=s),Fs=t("__VUE_SSR_SETTERS__",s=>Rt=s)}const Mt=e=>{const t=ie;return zt(e),e.scope.on(),()=>{e.scope.off(),zt(t)}},xn=()=>{ie&&ie.scope.off(),zt(null)};function Ur(e){return e.vnode.shapeFlag&4}let Rt=!1;function Uo(e,t=!1,s=!1){t&&Fs(t);const{props:n,children:r}=e.vnode,i=Ur(e);vo(e,n,i,t),wo(e,r,s||t);const o=i?Ko(e,t):void 0;return t&&Fs(!1),o}function Ko(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,no);const{setup:n}=s;if(n){Le();const r=e.setupContext=n.length>1?Bo(e):null,i=Mt(e),o=It(n,e,0,[e.props,r]),l=Un(o);if(Ne(),i(),(l||e.sp)&&!wt(e)&&_r(e),l){if(o.then(xn,xn),t)return o.then(f=>{Sn(e,f)}).catch(f=>{rs(f,e,0)});e.asyncDep=o}else Sn(e,o)}else Kr(e)}function Sn(e,t,s){M(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:G(t)&&(e.setupState=cr(t)),Kr(e)}function Kr(e,t,s){const n=e.type;e.render||(e.render=n.render||Pe);{const r=Mt(e);Le();try{ro(e)}finally{Ne(),r()}}}const Vo={get(e,t){return ee(e,"get",""),e[t]}};function Bo(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Vo),slots:e.slots,emit:e.emit,expose:t}}function fs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(cr(Si(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in Ct)return Ct[s](e)},has(t,s){return s in t||s in Ct}})):e.proxy}function Wo(e){return M(e)&&"__vccOpts"in e}const qo=(e,t)=>Ai(e,t,Rt),Jo="3.5.27";/**
14
+ * @vue/runtime-dom v3.5.27
15
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
16
+ * @license MIT
17
+ **/let $s;const wn=typeof window<"u"&&window.trustedTypes;if(wn)try{$s=wn.createPolicy("vue",{createHTML:e=>e})}catch{}const Vr=$s?e=>$s.createHTML(e):e=>e,ko="http://www.w3.org/2000/svg",Go="http://www.w3.org/1998/Math/MathML",Fe=typeof document<"u"?document:null,Cn=Fe&&Fe.createElement("template"),Yo={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"?Fe.createElementNS(ko,e):t==="mathml"?Fe.createElementNS(Go,e):s?Fe.createElement(e,{is:s}):Fe.createElement(e);return e==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:e=>Fe.createTextNode(e),createComment:e=>Fe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Fe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,r,i){const o=s?s.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),s),!(r===i||!(r=r.nextSibling)););else{Cn.innerHTML=Vr(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const l=Cn.content;if(n==="svg"||n==="mathml"){const f=l.firstChild;for(;f.firstChild;)l.appendChild(f.firstChild);l.removeChild(f)}t.insertBefore(l,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},zo=Symbol("_vtc");function Qo(e,t,s){const n=e[zo];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Tn=Symbol("_vod"),Xo=Symbol("_vsh"),Zo=Symbol(""),el=/(?:^|;)\s*display\s*:/;function tl(e,t,s){const n=e.style,r=z(s);let i=!1;if(s&&!r){if(t)if(z(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&Wt(n,l,"")}else for(const o in t)s[o]==null&&Wt(n,o,"");for(const o in s)o==="display"&&(i=!0),Wt(n,o,s[o])}else if(r){if(t!==s){const o=n[Zo];o&&(s+=";"+o),n.cssText=s,i=el.test(s)}}else t&&e.removeAttribute("style");Tn in e&&(e[Tn]=i?n.display:"",e[Xo]&&(n.display="none"))}const En=/\s*!important$/;function Wt(e,t,s){if(I(s))s.forEach(n=>Wt(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=sl(e,t);En.test(s)?e.setProperty(Ge(n),s.replace(En,""),"important"):e[n]=s}}const On=["Webkit","Moz","ms"],xs={};function sl(e,t){const s=xs[t];if(s)return s;let n=qe(t);if(n!=="filter"&&n in e)return xs[t]=n;n=Bn(n);for(let r=0;r<On.length;r++){const i=On[r]+n;if(i in e)return xs[t]=i}return t}const An="http://www.w3.org/1999/xlink";function Pn(e,t,s,n,r,i=ei(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(An,t.slice(6,t.length)):e.setAttributeNS(An,t,s):s==null||i&&!qn(s)?e.removeAttribute(t):e.setAttribute(t,i?"":ke(s)?String(s):s)}function Rn(e,t,s,n,r){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?Vr(s):s);return}const i=e.tagName;if(t==="value"&&i!=="PROGRESS"&&!i.includes("-")){const l=i==="OPTION"?e.getAttribute("value")||"":e.value,f=s==null?e.type==="checkbox"?"on":"":String(s);(l!==f||!("_value"in e))&&(e.value=f),s==null&&e.removeAttribute(t),e._value=s;return}let o=!1;if(s===""||s==null){const l=typeof e[t];l==="boolean"?s=qn(s):s==null&&l==="string"?(s="",o=!0):l==="number"&&(s=0,o=!0)}try{e[t]=s}catch{}o&&e.removeAttribute(r||t)}function it(e,t,s,n){e.addEventListener(t,s,n)}function nl(e,t,s,n){e.removeEventListener(t,s,n)}const In=Symbol("_vei");function rl(e,t,s,n,r=null){const i=e[In]||(e[In]={}),o=i[t];if(n&&o)o.value=n;else{const[l,f]=il(t);if(n){const h=i[t]=cl(n,r);it(e,l,h,f)}else o&&(nl(e,l,o,f),i[t]=void 0)}}const Mn=/(?:Once|Passive|Capture)$/;function il(e){let t;if(Mn.test(e)){t={};let n;for(;n=e.match(Mn);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Ge(e.slice(2)),t]}let Ss=0;const ol=Promise.resolve(),ll=()=>Ss||(ol.then(()=>Ss=0),Ss=Date.now());function cl(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;Re(fl(n,s.value),t,5,[n])};return s.value=e,s.attached=ll(),s}function fl(e,t){if(I(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 Fn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ul=(e,t,s,n,r,i)=>{const o=r==="svg";t==="class"?Qo(e,n,o):t==="style"?tl(e,s,n):Qt(t)?Ls(t)||rl(e,t,s,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):al(e,t,n,o))?(Rn(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Pn(e,t,n,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!z(n))?Rn(e,qe(t),n,i,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Pn(e,t,n,o))};function al(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Fn(t)&&M(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 Fn(t)&&z(s)?!1:t in e}const $n=e=>{const t=e.props["onUpdate:modelValue"]||!1;return I(t)?s=>Kt(t,s):t};function dl(e){e.target.composing=!0}function Dn(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ws=Symbol("_assign");function Ln(e,t,s){return t&&(e=e.trim()),s&&(e=js(e)),e}const hl={created(e,{modifiers:{lazy:t,trim:s,number:n}},r){e[ws]=$n(r);const i=n||r.props&&r.props.type==="number";it(e,t?"change":"input",o=>{o.target.composing||e[ws](Ln(e.value,s,i))}),(s||i)&&it(e,"change",()=>{e.value=Ln(e.value,s,i)}),t||(it(e,"compositionstart",dl),it(e,"compositionend",Dn),it(e,"change",Dn))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:r,number:i}},o){if(e[ws]=$n(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?js(e.value):e.value,f=t??"";l!==f&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||r&&e.value.trim()===f)||(e.value=f))}},pl={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},gl=(e,t)=>{const s=e._withKeys||(e._withKeys={}),n=t.join(".");return s[n]||(s[n]=(r=>{if(!("key"in r))return;const i=Ge(r.key);if(t.some(o=>o===i||pl[o]===i))return e(r)}))},_l=X({patchProp:ul},Yo);let Nn;function ml(){return Nn||(Nn=To(_l))}const bl=((...e)=>{const t=ml().createApp(...e),{mount:s}=t;return t.mount=n=>{const r=yl(n);if(!r)return;const i=t._component;!M(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=s(r,!1,vl(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t});function vl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function yl(e){return z(e)?document.querySelector(e):e}const xl="";async function Te(e,t){const s=await fetch(`${xl}${e}`,{headers:{"Content-Type":"application/json",...t==null?void 0:t.headers},...t});if(!s.ok){const n=await s.json().catch(()=>({error:s.statusText}));throw new Error(n.error||"Request failed")}return s.json()}const Be={checkHealth:()=>Te("/api/health"),listServices:()=>Te("/api/services"),getService:e=>Te(`/api/services/${e}`),registerService:e=>Te("/api/services/register",{method:"POST",body:JSON.stringify({servicePath:e})}),deleteService:e=>Te(`/api/services/${e}`,{method:"DELETE"}),updateServiceStatus:(e,t,s)=>Te(`/api/services/${e}/status`,{method:"PATCH",body:JSON.stringify({status:t,pid:s})}),startService:(e,t)=>Te(`/api/services/${e}/start`,{method:"POST",body:JSON.stringify(t||{})}),stopService:e=>Te(`/api/services/${e}/stop`,{method:"POST"}),getServiceLogs:e=>Te(`/api/services/${e}/logs`),listResources:()=>Te("/api/resources")},Sl={class:"card"},wl={class:"card-header"},Cl={style:{display:"flex",gap:"0.5rem","align-items":"center"}},Tl=["disabled"],El={key:0,class:"loading"},Ol={key:1,class:"empty-state"},Al={key:2,class:"table"},Pl={style:{"font-family":"monospace","font-size":"0.875rem"}},Rl={class:"actions"},Il=["disabled","onClick"],Ml=["disabled","onClick"],Fl=["onClick"],$l=["onClick"],Dl={key:3,class:"modal"},Ll={class:"modal-content"},Nl={class:"modal-header"},Hl={class:"logs"},jl=zs({__name:"ServicesList",setup(e){const t=ae([]),s=ae(!0),n=ae(!1),r=ae(""),i=ae(null),o=ae([]),l=ae("stopped"),f=ae(null),h=ae({}),a=ae({});async function p(){try{t.value=await Be.listServices()}catch(P){console.error("Failed to load services:",P)}finally{s.value=!1}}async function w(P){if(!h.value[P]){h.value={...h.value,[P]:!0};try{await Be.startService(P),await p()}catch(B){alert(`Failed to start service: ${B.message}`)}finally{h.value={...h.value,[P]:!1}}}}async function C(P){if(!a.value[P]){a.value={...a.value,[P]:!0};try{await Be.stopService(P),await p()}catch(B){alert(`Failed to stop service: ${B.message}`)}finally{a.value={...a.value,[P]:!1}}}}async function F(P){try{const B=await Be.getServiceLogs(P);o.value=B.logs||[],l.value=B.status||"stopped"}catch(B){console.error("Failed to fetch logs:",B)}}function $(P){i.value=P,F(P),f.value&&window.clearInterval(f.value),f.value=window.setInterval(()=>F(P),2e3)}function Q(){i.value=null,o.value=[],f.value&&window.clearInterval(f.value),f.value=null}async function D(){if(r.value.trim()){n.value=!0;try{await Be.registerService(r.value),r.value="",await p()}catch(P){alert(`Failed to register service: ${P.message}`)}finally{n.value=!1}}}async function K(P){if(confirm(`Delete service "${P}"?`))try{await Be.deleteService(P),await p()}catch(B){alert(`Failed to delete service: ${B.message}`)}}function k(P){return new Date(P).toLocaleString()}function A(P){switch(P){case"running":return"badge-success";case"registered":return"badge-warning";default:return"badge-danger"}}return os(()=>{p(),setInterval(p,1e4)}),(P,B)=>(Oe(),Me("div",Sl,[O("div",wl,[B[1]||(B[1]=O("h2",{class:"card-title"}," Microservices ",-1)),O("div",Cl,[Li(O("input",{"onUpdate:modelValue":B[0]||(B[0]=N=>r.value=N),type:"text",placeholder:"/path/to/microservice",style:{padding:"0.5rem",background:"var(--bg)",border:"1px solid var(--border)","border-radius":"0.375rem",color:"var(--text)",width:"300px"},onKeyup:gl(D,["enter"])},null,544),[[hl,r.value]]),O("button",{class:"btn btn-primary",disabled:n.value||!r.value.trim(),onClick:D},Z(n.value?"Registering...":"Register"),9,Tl)])]),s.value?(Oe(),Me("div",El," Loading services... ")):t.value.length===0?(Oe(),Me("div",Ol," No services registered yet. Register your first microservice above. ")):(Oe(),Me("table",Al,[B[2]||(B[2]=O("thead",null,[O("tr",null,[O("th",null,"Name"),O("th",null,"Status"),O("th",null,"Path"),O("th",null,"Resources"),O("th",null,"Last Updated"),O("th",null,"Actions")])],-1)),O("tbody",null,[(Oe(!0),Me(_e,null,so(t.value,N=>(Oe(),Me("tr",{key:N.name},[O("td",null,[O("strong",null,Z(N.name),1)]),O("td",null,[O("span",{class:ss(["badge",A(N.status)])},Z(N.status),3)]),O("td",Pl,Z(N.root),1),O("td",null,Z(N.resourcesCount||0),1),O("td",null,Z(k(N.lastUpdated)),1),O("td",null,[O("div",Rl,[O("button",{class:"btn btn-sm",disabled:N.status==="running"||h.value[N.name],onClick:he=>w(N.name)},Z(h.value[N.name]?"Starting...":"Start"),9,Il),O("button",{class:"btn btn-sm btn-secondary",disabled:N.status!=="running"||a.value[N.name],onClick:he=>C(N.name)},Z(a.value[N.name]?"Stopping...":"Stop"),9,Ml),O("button",{class:"btn btn-sm",onClick:he=>$(N.name)}," Logs ",8,Fl),O("button",{class:"btn btn-sm btn-danger",onClick:he=>K(N.name)}," Delete ",8,$l)])])]))),128))])])),i.value?(Oe(),Me("div",Dl,[O("div",Ll,[O("div",Nl,[O("h3",null,"Logs — "+Z(i.value)+" ("+Z(l.value)+")",1),O("button",{class:"btn btn-sm",onClick:Q}," Close ")]),O("pre",Hl,Z(o.value.join(`
18
+ `))+`
19
+ `,1)])])):$o("",!0)]))}}),Ul=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s},Kl=Ul(jl,[["__scopeId","data-v-af35b7d4"]]),Vl={class:"grid grid-cols-3"},Bl={class:"stat-card"},Wl={class:"stat-value"},ql={class:"stat-card"},Jl={class:"stat-value"},kl={class:"stat-card"},Gl={class:"stat-value"},Yl=zs({__name:"ResourcesOverview",setup(e){const t=ae({tables:[],queues:[],topics:[]}),s=ae(!0);async function n(){try{t.value=await Be.listResources()}catch(r){console.error("Failed to load resources:",r)}finally{s.value=!1}}return os(()=>{n(),setInterval(n,15e3)}),(r,i)=>(Oe(),Me("div",Vl,[O("div",Bl,[i[0]||(i[0]=O("div",{class:"stat-label"}," DynamoDB Tables ",-1)),O("div",Wl,Z(s.value?"...":t.value.tables.length),1)]),O("div",ql,[i[1]||(i[1]=O("div",{class:"stat-label"}," SQS Queues ",-1)),O("div",Jl,Z(s.value?"...":t.value.queues.length),1)]),O("div",kl,[i[2]||(i[2]=O("div",{class:"stat-label"}," SNS Topics ",-1)),O("div",Gl,Z(s.value?"...":t.value.topics.length),1)])]))}}),zl={class:"header"},Ql={class:"header-subtitle"},Xl={class:"container"},Zl=zs({__name:"App",setup(e){const t=ae({status:"unknown",localstack:!1});async function s(){try{t.value=await Be.checkHealth()}catch(n){console.error("Health check failed:",n)}}return os(()=>{s(),setInterval(s,1e4)}),(n,r)=>(Oe(),Me("div",null,[O("header",zl,[r[1]||(r[1]=O("h1",null,"Local Serverless Stack Orchestrator",-1)),O("p",Ql,[r[0]||(r[0]=jr(" Local development control plane • LocalStack: ",-1)),O("span",{style:ts({color:t.value.localstack?"var(--success)":"var(--danger)"})},Z(t.value.localstack?"✓ Running":"✗ Offline"),5)])]),O("div",Xl,[be(Yl),be(Kl)])]))}});bl(Zl).mount("#app");
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>LSS Orchestrator</title>
8
+ <script type="module" crossorigin src="/assets/index-M0lXeUj-.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-7WT0rkfU.css">
10
+ </head>
11
+
12
+ <body>
13
+ <div id="app"></div>
14
+ </body>
15
+
16
+ </html>
package/package.json ADDED
@@ -0,0 +1,89 @@
1
+ {
2
+ "name": "local-serverless-stack",
3
+ "version": "0.0.1",
4
+ "description": "Local control plane for serverless development with LocalStack orchestration",
5
+ "author": "LSS Contributors",
6
+ "license": "MIT",
7
+ "bin": {
8
+ "lss": "./bin/cli.js"
9
+ },
10
+ "keywords": [
11
+ "serverless",
12
+ "localstack",
13
+ "lambda",
14
+ "development",
15
+ "orchestrator",
16
+ "aws",
17
+ "local"
18
+ ],
19
+ "files": [
20
+ "bin/",
21
+ "dist/",
22
+ "packages/serverless-plugin/dist/",
23
+ "README.md",
24
+ "LICENSE",
25
+ "CHANGELOG.md"
26
+ ],
27
+ "workspaces": [
28
+ "packages/*"
29
+ ],
30
+ "scripts": {
31
+ "build": "npm run server:build && npm run ui:build && npm run plugin:build",
32
+ "server:dev": "tsx watch src/server/index.ts",
33
+ "server:build": "tsc --project src/server/tsconfig.json",
34
+ "ui:dev": "cd src/ui && npm run dev",
35
+ "ui:build": "cd src/ui && npm run build",
36
+ "plugin:build": "npm run build -w packages/serverless-plugin",
37
+ "dev": "concurrently \"npm run server:dev\" \"npm run ui:dev\"",
38
+ "setup": "npm install && cd src/ui && npm install",
39
+ "prepublishOnly": "npm run build",
40
+ "test": "jest",
41
+ "test:watch": "jest --watch",
42
+ "test:coverage": "jest --coverage",
43
+ "test:integration": "jest tests/integration",
44
+ "test:cli": "jest tests/integration/cli.test.ts",
45
+ "test:orchestrator": "jest tests/integration/orchestrator.test.ts",
46
+ "test:plugin": "jest tests/integration/plugin.test.ts",
47
+ "lint": "eslint .",
48
+ "lint:fix": "eslint . --fix"
49
+ },
50
+ "dependencies": {
51
+ "@aws-sdk/client-dynamodb": "^3.709.0",
52
+ "@aws-sdk/client-lambda": "^3.709.0",
53
+ "@aws-sdk/client-sns": "^3.709.0",
54
+ "@aws-sdk/client-sqs": "^3.709.0",
55
+ "@aws-sdk/lib-dynamodb": "^3.709.0",
56
+ "adm-zip": "^0.5.16",
57
+ "cors": "^2.8.5",
58
+ "express": "^4.21.2"
59
+ },
60
+ "devDependencies": {
61
+ "@eslint/js": "^9.39.2",
62
+ "@types/adm-zip": "^0.5.7",
63
+ "@types/cors": "^2.8.17",
64
+ "@types/express": "^5.0.0",
65
+ "@types/jest": "^29.5.14",
66
+ "@types/node": "^20.19.30",
67
+ "@typescript-eslint/eslint-plugin": "^8.53.1",
68
+ "@typescript-eslint/parser": "^8.53.1",
69
+ "concurrently": "^9.1.2",
70
+ "eslint": "^9.39.2",
71
+ "eslint-plugin-vue": "^10.7.0",
72
+ "jest": "^29.7.0",
73
+ "ts-jest": "^29.4.6",
74
+ "ts-node": "^10.9.2",
75
+ "typescript": "^5.7.3",
76
+ "typescript-eslint": "^8.53.1"
77
+ },
78
+ "engines": {
79
+ "node": ">=18.0.0"
80
+ },
81
+ "repository": {
82
+ "type": "git",
83
+ "url": "https://github.com/your-org/local-serverless-stack.git"
84
+ },
85
+ "bugs": {
86
+ "url": "https://github.com/your-org/local-serverless-stack/issues"
87
+ },
88
+ "homepage": "https://github.com/your-org/local-serverless-stack#readme"
89
+ }
@@ -0,0 +1,95 @@
1
+ # Serverless Orchestrator Plugin
2
+
3
+ Automatically register your Serverless microservices with the Local Serverless Stack Local Orchestrator.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install --save-dev lss-serverless-plugin
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ Add the plugin to your `serverless.yml`:
14
+
15
+ ```yaml
16
+ plugins:
17
+ - lss-serverless-plugin
18
+
19
+ custom:
20
+ orchestrator:
21
+ enabled: true
22
+ orchestratorUrl: http://localhost:3100
23
+ ```
24
+
25
+ ## How it works
26
+
27
+ After running `sls package` or `sls deploy`:
28
+
29
+ 1. The plugin reads your CloudFormation template from `.serverless/`
30
+ 2. Sends a registration request to the Orchestrator
31
+ 3. The Orchestrator provisions resources (DynamoDB, SQS, SNS) to LocalStack
32
+
33
+ ## Configuration Options
34
+
35
+ - `enabled` (boolean, default: `true`): Enable/disable the plugin
36
+ - `orchestratorUrl` (string, default: `http://localhost:3100`): Orchestrator API endpoint
37
+
38
+ ### Example with custom config:
39
+
40
+ ```yaml
41
+ plugins:
42
+ - lss-serverless-plugin
43
+
44
+ custom:
45
+ orchestrator:
46
+ enabled: true
47
+ orchestratorUrl: http://my-orchestrator:3100
48
+ ```
49
+
50
+ ## Environment Variables (optional)
51
+
52
+ You can also use environment variables to override the configuration:
53
+
54
+ ```bash
55
+ ORCHESTRATOR_URL=http://localhost:3100 sls package
56
+ ```
57
+
58
+ ## Features
59
+
60
+ ✅ Auto-registers on `sls package`
61
+ ✅ Auto-registers on `sls deploy`
62
+ ✅ Non-blocking: deployment continues even if orchestrator is unavailable
63
+ ✅ Colored console output
64
+ ✅ Minimal dependencies
65
+
66
+ ## Behavior
67
+
68
+ - If the Orchestrator is unavailable, the plugin logs a warning but doesn't fail the deployment
69
+ - The plugin is compatible with all Serverless Framework providers
70
+ - It only reads existing `.serverless/cloudformation-template-update-stack.json` files (doesn't create them)
71
+
72
+ ## Troubleshooting
73
+
74
+ **"Orchestrator unavailable" message**
75
+
76
+ Make sure the Orchestrator is running:
77
+
78
+ ```bash
79
+ cd orchestrator
80
+ npm run server
81
+ ```
82
+
83
+ **Plugin not found**
84
+
85
+ Make sure you're using a recent version of Serverless Framework (3.0+) and that the plugin is installed in `node_modules`.
86
+
87
+ ## Development
88
+
89
+ ```bash
90
+ # Build
91
+ npm run build
92
+
93
+ # Watch mode
94
+ npm run dev
95
+ ```
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const chalk_1 = __importDefault(require("chalk"));
7
+ class ServerlessOrchestratorPlugin {
8
+ serverless;
9
+ orchestratorUrl;
10
+ enabled;
11
+ hooks;
12
+ constructor(serverless, options = {}) {
13
+ this.serverless = serverless;
14
+ const customConfig = (this.serverless.service?.custom || {}).orchestrator || {};
15
+ // Merge priority: env > options > custom > defaults
16
+ const merged = {
17
+ enabled: true,
18
+ orchestratorUrl: 'http://localhost:3100',
19
+ ...customConfig,
20
+ ...options,
21
+ };
22
+ if (process.env.ORCHESTRATOR_URL) {
23
+ merged.orchestratorUrl = process.env.ORCHESTRATOR_URL;
24
+ }
25
+ if (process.env.ORCHESTRATOR_ENABLED) {
26
+ merged.enabled = process.env.ORCHESTRATOR_ENABLED !== 'false';
27
+ }
28
+ this.orchestratorUrl = merged.orchestratorUrl;
29
+ this.enabled = merged.enabled !== false;
30
+ this.hooks = {
31
+ 'after:package:finalize': this.registerWithOrchestrator.bind(this),
32
+ // 'after:deploy:deploy': this.registerWithOrchestrator.bind(this),
33
+ 'before:offline:start': this.registerWithOrchestrator.bind(this),
34
+ 'before:offline:start:init': this.registerWithOrchestrator.bind(this),
35
+ };
36
+ }
37
+ log(message, type = 'info') {
38
+ const timestamp = new Date().toLocaleTimeString();
39
+ let formattedMessage = '';
40
+ switch (type) {
41
+ case 'success':
42
+ formattedMessage = chalk_1.default.green(`✓ [${timestamp}] ${message}`);
43
+ break;
44
+ case 'error':
45
+ formattedMessage = chalk_1.default.red(`✗ [${timestamp}] ${message}`);
46
+ break;
47
+ default:
48
+ formattedMessage = chalk_1.default.blue(`ℹ [${timestamp}] ${message}`);
49
+ }
50
+ console.log(formattedMessage);
51
+ }
52
+ async registerWithOrchestrator() {
53
+ if (!this.enabled) {
54
+ return;
55
+ }
56
+ const servicePath = this.serverless.config.servicePath;
57
+ const serviceName = this.serverless.service?.service || this.serverless.config.service || 'unknown';
58
+ // Extract invoke port from serverless-offline configuration
59
+ const serverlessOfflineConfig = this.serverless.service?.custom?.['serverless-offline'];
60
+ const invokePort = serverlessOfflineConfig?.lambdaPort;
61
+ this.log(`Registering service "${serviceName}" with orchestrator at ${this.orchestratorUrl}...`, 'info');
62
+ try {
63
+ const response = await fetch(`${this.orchestratorUrl}/api/services/register`, {
64
+ method: 'POST',
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ },
68
+ body: JSON.stringify({
69
+ servicePath,
70
+ invokePort,
71
+ }),
72
+ });
73
+ if (!response.ok) {
74
+ const error = (await response.json().catch(() => ({ error: response.statusText })));
75
+ throw new Error(error.error || `HTTP ${response.status}`);
76
+ }
77
+ const result = (await response.json());
78
+ this.log(`Orchestrator: Registered ${result.resourcesCount} resources for "${serviceName}"`, 'success');
79
+ }
80
+ catch (error) {
81
+ // Non-blocking error: log but don't fail the deployment
82
+ this.log(`Orchestrator unavailable or registration failed: ${error.message}. Continuing without orchestrator sync.`, 'error');
83
+ }
84
+ }
85
+ }
86
+ // Export for serverless framework (CommonJS)
87
+ module.exports = ServerlessOrchestratorPlugin;
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAwB1B,MAAM,4BAA4B;IACxB,UAAU,CAAqB;IAC/B,eAAe,CAAS;IACxB,OAAO,CAAU;IAClB,KAAK,CAAsC;IAElD,YAAY,UAA8B,EAAE,UAAyB,EAAE;QACrE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;QAEhF,oDAAoD;QACpD,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,uBAAuB;YACxC,GAAG,YAAY;YACf,GAAG,OAAO;SACM,CAAC;QAEnB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACjC,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACxD,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YACrC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,OAAO,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAgB,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC;QAExC,IAAI,CAAC,KAAK,GAAG;YACX,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClE,mEAAmE;YACnE,sBAAsB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YAChE,2BAA2B,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;SACtE,CAAC;IACJ,CAAC;IAEO,GAAG,CAAC,OAAe,EAAE,OAAqC,MAAM;QACtE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,CAAC;QAElD,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS;gBACZ,gBAAgB,GAAG,eAAK,CAAC,KAAK,CAAC,MAAM,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;gBAC9D,MAAM;YACR,KAAK,OAAO;gBACV,gBAAgB,GAAG,eAAK,CAAC,GAAG,CAAC,MAAM,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;gBAC5D,MAAM;YACR;gBACE,gBAAgB,GAAG,eAAK,CAAC,IAAI,CAAC,MAAM,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,wBAAwB;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;QAEpG,4DAA4D;QAC5D,MAAM,uBAAuB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,oBAAoB,CAAC,CAAC;QACxF,MAAM,UAAU,GAAG,uBAAuB,EAAE,UAAU,CAAC;QAEvD,IAAI,CAAC,GAAG,CAAC,wBAAwB,WAAW,0BAA0B,IAAI,CAAC,eAAe,KAAK,EAAE,MAAM,CAAC,CAAC;QAEzG,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,wBAAwB,EAAE;gBAC5E,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,WAAW;oBACX,UAAU;iBACX,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAQ,CAAC;gBAC3F,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAQ,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,4BAA4B,MAAM,CAAC,cAAc,mBAAmB,WAAW,GAAG,EAAE,SAAS,CAAC,CAAC;QAC1G,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,wDAAwD;YACxD,IAAI,CAAC,GAAG,CACN,oDAAoD,KAAK,CAAC,OAAO,yCAAyC,EAC1G,OAAO,CACR,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,6CAA6C;AAC7C,MAAM,CAAC,OAAO,GAAG,4BAA4B,CAAC"}