diff --git a/docs/assets/AlertDialog-_72FqRCT.js b/docs/assets/AlertDialog-_72FqRCT.js deleted file mode 100644 index dd3468d..0000000 --- a/docs/assets/AlertDialog-_72FqRCT.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,G as t,J as n,K as r,St as i,U as a,X as o,Y as s,Z as c,jt as l,pt as u,q as d,st as f}from"./vendor-ui-DBxeWLyT.js";import{Bt as p,Rt as m}from"./index-Cch-Ig40.js";var h={key:0,class:`fixed inset-0 z-50 flex items-center justify-center`},g={class:`relative bg-card border rounded-lg shadow-lg p-6 max-w-md w-full mx-4 z-10`},_={class:`text-lg font-semibold mb-2`},v={class:`text-sm text-muted-foreground mb-6 whitespace-pre-line`},y={class:`flex justify-end gap-2`},b=c({__name:`AlertDialog`,setup(c,{expose:b}){let{t:x}=p(),S=i(!1),C=i(null),w=e=>{C.value=e,S.value=!0},T=()=>{C.value?.onConfirm&&C.value.onConfirm(),S.value=!1},E=()=>{S.value=!1};return b({show:w}),(i,c)=>(f(),r(a,{to:`body`},[S.value?(f(),n(`div`,h,[t(`div`,{class:`fixed inset-0 bg-black/50`,onClick:E}),t(`div`,g,[t(`h2`,_,l(C.value?.title),1),t(`p`,v,l(C.value?.message),1),t(`div`,y,[C.value?.onConfirm?(f(),r(e(m),{key:0,onClick:E,variant:`outline`},{default:u(()=>[s(l(e(x)(`common.cancel`)),1)]),_:1})):d(``,!0),o(e(m),{onClick:T,variant:`default`},{default:u(()=>[s(l(e(x)(`common.confirm`)),1)]),_:1})])])])):d(``,!0)]))}});export{b as t}; \ No newline at end of file diff --git a/docs/assets/AlertDialog-vN9u2C5f.js b/docs/assets/AlertDialog-vN9u2C5f.js new file mode 100644 index 0000000..f98c424 --- /dev/null +++ b/docs/assets/AlertDialog-vN9u2C5f.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Dt as n,Kt as r,Mt as i,Nt as a,On as o,Ot as s,hn as c,in as l,jt as u,kt as d,wt as f}from"./game-logic-B_TBzmsj.js";import{M as p,P as m}from"./index-BLxCTx9W.js";var h={key:0,class:`fixed inset-0 z-50 flex items-center justify-center`},g={class:`relative bg-card border rounded-lg shadow-lg p-6 max-w-md w-full mx-4 z-10`},_={class:`text-lg font-semibold mb-2`},v={class:`text-sm text-muted-foreground mb-6 whitespace-pre-line`},y={class:`flex justify-end gap-2`},b=a({__name:`AlertDialog`,setup(a,{expose:b}){let{t:x}=m(),S=c(!1),C=c(null),w=e=>{C.value=e,S.value=!0},T=()=>{C.value?.onConfirm&&C.value.onConfirm(),S.value=!1},E=()=>{S.value=!1};return b({show:w}),(a,c)=>(r(),s(f,{to:`body`},[S.value?(r(),e(`div`,h,[n(`div`,{class:`fixed inset-0 bg-black/50`,onClick:E}),n(`div`,g,[n(`h2`,_,o(C.value?.title),1),n(`p`,v,o(C.value?.message),1),n(`div`,y,[C.value?.onConfirm?(r(),s(t(p),{key:0,onClick:E,variant:`outline`},{default:l(()=>[u(o(t(x)(`common.cancel`)),1)]),_:1})):d(``,!0),i(t(p),{onClick:T,variant:`default`},{default:l(()=>[u(o(t(x)(`common.confirm`)),1)]),_:1})])])])):d(``,!0)]))}});export{b as t}; \ No newline at end of file diff --git a/docs/assets/BattleReportDialog-CsuxK00l.js b/docs/assets/BattleReportDialog-CsuxK00l.js new file mode 100644 index 0000000..e550dec --- /dev/null +++ b/docs/assets/BattleReportDialog-CsuxK00l.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Ct as n,Dt as r,Et as i,Jt as a,Kt as o,Mt as s,Nt as c,On as l,Ot as u,Tn as ee,hn as d,in as f,jt as p,kt as m,tn as h}from"./game-logic-B_TBzmsj.js";import{a as te,c as ne,p as re}from"./vendor-icons-B6ER66fi.js";import{t as g}from"./TooltipProvider-Bx7lfIFp.js";import{D as _,E as v,F as ie,I as ae,M as oe,P as se,S as ce,T as y,b as le,n as ue,r as b,v as de,w as x,x as S,y as C}from"./index-BLxCTx9W.js";import{t as w}from"./useGameConfig-chMIsHFg.js";var T={key:0,class:`space-y-4`},E={class:`grid grid-cols-1 md:grid-cols-2 gap-4 text-sm`},D={class:`p-3 bg-blue-50 dark:bg-blue-950/20 rounded-lg`},O={class:`font-medium text-blue-600 dark:text-blue-400 mb-1`},k={key:0,class:`text-xs text-muted-foreground`},A={key:1,class:`text-xs text-muted-foreground`},j={class:`p-3 bg-red-50 dark:bg-red-950/20 rounded-lg`},M={class:`font-medium text-red-600 dark:text-red-400 mb-1`},N={key:0,class:`text-xs text-muted-foreground`},P={key:1,class:`text-xs text-muted-foreground`},F={class:`text-lg font-bold`},I={key:0,class:`text-sm mt-1`},L={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},R={class:`space-y-2`},z={class:`text-sm font-medium text-red-600 dark:text-red-400`},B={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},V={class:`text-muted-foreground`},H={class:`ml-2 font-medium`},fe={key:0,class:`text-muted-foreground`},pe={class:`space-y-2`},me={class:`text-sm font-medium text-red-600 dark:text-red-400`},he={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},ge={class:`text-muted-foreground`},_e={class:`ml-2 font-medium`},ve={class:`text-muted-foreground`},ye={class:`ml-2 font-medium`},be={key:0,class:`text-muted-foreground`},xe={key:0,class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Se={key:0,class:`space-y-2`},Ce={class:`text-sm font-medium text-blue-600 dark:text-blue-400`},we={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},Te={class:`text-muted-foreground`},Ee={class:`ml-2 font-medium`},De={key:1,class:`space-y-2`},Oe={class:`text-sm font-medium text-blue-600 dark:text-blue-400`},ke={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},Ae={class:`text-muted-foreground`},je={class:`ml-2 font-medium`},Me={class:`text-muted-foreground`},Ne={class:`ml-2 font-medium`},Pe={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Fe={key:0,class:`p-3 bg-green-50 dark:bg-green-950 rounded-lg`},Ie={class:`text-sm font-medium mb-2 text-green-600 dark:text-green-400`},Le={class:`flex flex-wrap gap-3 text-xs`},Re={key:0,class:`flex items-center gap-1`},ze={key:1,class:`flex items-center gap-1`},Be={key:2,class:`flex items-center gap-1`},Ve={key:1,class:`p-3 bg-muted rounded-lg`},He={class:`text-sm font-medium mb-2`},Ue={class:`flex flex-wrap gap-3 text-xs`},We={key:0,class:`flex items-center gap-1`},Ge={key:1,class:`flex items-center gap-1`},Ke={key:0,class:`text-xs text-muted-foreground mt-2`},qe={key:1,class:`space-y-2`},Je={key:0,class:`relative pl-6 space-y-4`},Ye={class:`border rounded-lg p-3 bg-card hover:shadow-md transition-shadow`},Xe={class:`flex items-center justify-between mb-3`},Ze={class:`text-sm font-semibold`},Qe={class:`flex gap-3 text-xs text-muted-foreground`},$e={class:`flex items-center gap-1`},et={class:`flex items-center gap-1`},tt={class:`grid grid-cols-1 md:grid-cols-2 gap-3`},nt={class:`bg-red-50 dark:bg-red-950/20 rounded p-2`},rt={class:`text-xs font-medium text-red-600 dark:text-red-400 mb-1.5`},it={class:`text-xs space-y-0.5`},at={class:`text-muted-foreground`},ot={class:`font-medium`},st={key:0,class:`text-muted-foreground italic`},ct={class:`bg-blue-50 dark:bg-blue-950/20 rounded p-2`},lt={class:`text-xs font-medium text-blue-600 dark:text-blue-400 mb-1.5`},ut={class:`text-xs space-y-0.5`},dt={class:`text-muted-foreground`},U={class:`font-medium`},ft={class:`text-muted-foreground`},pt={class:`font-medium`},mt={key:0,class:`text-muted-foreground italic`},W=c({__name:`BattleReportDialog`,props:{report:{},open:{type:Boolean}},emits:[`update:open`],setup(c,{emit:W}){let G=c,ht=W,K=ae(),gt=ie(),{t:q}=se(),{SHIPS:J,DEFENSES:Y}=w(),X=d(G.open),Z=d(!1),Q=i(()=>G.report?K.player.planets.find(e=>e.id===G.report.attackerPlanetId):null),$=i(()=>G.report?K.player.planets.find(e=>e.id===G.report.defenderPlanetId)||Object.values(gt.planets).find(e=>e.id===G.report.defenderPlanetId):null);h(()=>G.open,e=>{X.value=e,e&&(Z.value=!1)}),h(X,e=>{ht(`update:open`,e)});let _t=e=>e===`attacker`?`bg-green-50 dark:bg-green-950 text-green-700 dark:text-green-300`:e===`defender`?`bg-red-50 dark:bg-red-950 text-red-700 dark:text-red-300`:`bg-gray-50 dark:bg-gray-950 text-gray-700 dark:text-gray-300`;return(i,d)=>(o(),u(t(ce),{open:X.value,"onUpdate:open":d[1]||=e=>X.value=e},{default:f(()=>[s(t(S),{class:`max-w-4xl max-h-[90vh] overflow-y-auto`},{default:f(()=>[s(t(C),null,{default:f(()=>[s(t(de),{class:`flex items-center gap-2`},{default:f(()=>[s(t(te),{class:`h-5 w-5`}),p(` `+l(t(q)(`messagesView.battleReport`)),1)]),_:1}),c.report?(o(),u(t(le),{key:0},{default:f(()=>[p(l(t(ue)(c.report.timestamp)),1)]),_:1})):m(``,!0)]),_:1}),c.report?(o(),e(`div`,T,[r(`div`,E,[r(`div`,D,[r(`p`,O,l(t(q)(`simulatorView.attacker`)),1),Q.value?(o(),e(`p`,k,l(Q.value.name)+` [`+l(Q.value.position.galaxy)+`:`+l(Q.value.position.system)+`:`+l(Q.value.position.position)+`] `,1)):(o(),e(`p`,A,l(c.report.attackerPlanetId),1))]),r(`div`,j,[r(`p`,M,l(t(q)(`simulatorView.defender`)),1),$.value?(o(),e(`p`,N,l($.value.name)+` [`+l($.value.position.galaxy)+`:`+l($.value.position.system)+`:`+l($.value.position.position)+`] `,1)):(o(),e(`p`,P,l(c.report.defenderPlanetId),1))])]),r(`div`,{class:ee([`text-center p-4 rounded-lg`,_t(c.report.winner)])},[r(`p`,F,l(c.report.winner===`attacker`?t(q)(`messagesView.victory`):c.report.winner===`defender`?t(q)(`messagesView.defeat`):t(q)(`messagesView.draw`)),1),c.report.rounds?(o(),e(`p`,I,l(t(q)(`simulatorView.afterRounds`).replace(`{rounds}`,String(c.report.rounds))),1)):m(``,!0)],2),r(`div`,L,[r(`div`,R,[r(`p`,z,l(t(q)(`messagesView.attackerLosses`)),1),r(`div`,B,[(o(!0),e(n,null,a(c.report.attackerLosses,(n,i)=>(o(),e(`div`,{key:i},[r(`span`,V,l(t(J)[i].name)+`:`,1),r(`span`,H,l(n),1)]))),128)),Object.keys(c.report.attackerLosses).length===0?(o(),e(`p`,fe,l(t(q)(`messagesView.noLosses`)),1)):m(``,!0)])]),r(`div`,pe,[r(`p`,me,l(t(q)(`messagesView.defenderLosses`)),1),r(`div`,he,[(o(!0),e(n,null,a(c.report.defenderLosses.fleet,(n,i)=>(o(),e(`div`,{key:i},[r(`span`,ge,l(t(J)[i].name)+`:`,1),r(`span`,_e,l(n),1)]))),128)),(o(!0),e(n,null,a(c.report.defenderLosses.defense,(n,i)=>(o(),e(`div`,{key:i},[r(`span`,ve,l(t(Y)[i].name)+`:`,1),r(`span`,ye,l(n),1)]))),128)),Object.keys(c.report.defenderLosses.fleet).length===0&&Object.keys(c.report.defenderLosses.defense).length===0?(o(),e(`p`,be,l(t(q)(`messagesView.noLosses`)),1)):m(``,!0)])])]),c.report.attackerRemaining||c.report.defenderRemaining?(o(),e(`div`,xe,[c.report.attackerRemaining&&Object.keys(c.report.attackerRemaining).length>0?(o(),e(`div`,Se,[r(`p`,Ce,l(t(q)(`messagesView.attackerRemaining`)),1),r(`div`,we,[(o(!0),e(n,null,a(c.report.attackerRemaining,(n,i)=>(o(),e(`div`,{key:i},[r(`span`,Te,l(t(J)[i].name)+`:`,1),r(`span`,Ee,l(n),1)]))),128))])])):m(``,!0),c.report.defenderRemaining&&(Object.keys(c.report.defenderRemaining.fleet||{}).length>0||Object.keys(c.report.defenderRemaining.defense||{}).length>0)?(o(),e(`div`,De,[r(`p`,Oe,l(t(q)(`messagesView.defenderRemaining`)),1),r(`div`,ke,[(o(!0),e(n,null,a(c.report.defenderRemaining.fleet,(n,i)=>(o(),e(`div`,{key:i},[r(`span`,Ae,l(t(J)[i].name)+`:`,1),r(`span`,je,l(n),1)]))),128)),(o(!0),e(n,null,a(c.report.defenderRemaining.defense,(n,i)=>(o(),e(`div`,{key:i},[r(`span`,Me,l(t(Y)[i].name)+`:`,1),r(`span`,Ne,l(n),1)]))),128))])])):m(``,!0)])):m(``,!0),r(`div`,Pe,[c.report.plunder&&(c.report.plunder.metal>0||c.report.plunder.crystal>0||c.report.plunder.deuterium>0)?(o(),e(`div`,Fe,[r(`p`,Ie,l(t(q)(`messagesView.plunder`)),1),r(`div`,Le,[c.report.plunder.metal>0?(o(),e(`span`,Re,[s(x,{type:`metal`,size:`sm`}),p(` `+l(t(b)(c.report.plunder.metal)),1)])):m(``,!0),c.report.plunder.crystal>0?(o(),e(`span`,ze,[s(x,{type:`crystal`,size:`sm`}),p(` `+l(t(b)(c.report.plunder.crystal)),1)])):m(``,!0),c.report.plunder.deuterium>0?(o(),e(`span`,Be,[s(x,{type:`deuterium`,size:`sm`}),p(` `+l(t(b)(c.report.plunder.deuterium)),1)])):m(``,!0)])])):m(``,!0),c.report.debrisField&&(c.report.debrisField.metal>0||c.report.debrisField.crystal>0)?(o(),e(`div`,Ve,[r(`p`,He,l(t(q)(`messagesView.debrisField`)),1),r(`div`,Ue,[c.report.debrisField.metal>0?(o(),e(`span`,We,[s(x,{type:`metal`,size:`sm`}),p(` `+l(t(b)(c.report.debrisField.metal)),1)])):m(``,!0),c.report.debrisField.crystal>0?(o(),e(`span`,Ge,[s(x,{type:`crystal`,size:`sm`}),p(` `+l(t(b)(c.report.debrisField.crystal)),1)])):m(``,!0)]),c.report.moonChance&&c.report.moonChance>0?(o(),e(`p`,Ke,l(t(q)(`messagesView.moonChance`))+`: `+l((c.report.moonChance*100).toFixed(1))+`% `,1)):m(``,!0)])):m(``,!0)]),c.report.roundDetails&&c.report.roundDetails.length>0?(o(),e(`div`,qe,[s(t(oe),{onClick:d[0]||=e=>Z.value=!Z.value,variant:`outline`,size:`sm`,class:`w-full`},{default:f(()=>[p(l(Z.value?t(q)(`messagesView.hideRoundDetails`):t(q)(`messagesView.showRoundDetails`)),1)]),_:1}),Z.value?(o(),e(`div`,Je,[d[3]||=r(`div`,{class:`absolute left-2 top-0 bottom-0 w-0.5 bg-border`},null,-1),(o(!0),e(n,null,a(c.report.roundDetails,i=>(o(),e(`div`,{key:i.round,class:`relative`},[d[2]||=r(`div`,{class:`absolute -left-6 top-3 w-4 h-4 rounded-full bg-primary border-2 border-background`},null,-1),r(`div`,Ye,[r(`div`,Xe,[r(`p`,Ze,l(t(q)(`messagesView.round`).replace(`{round}`,String(i.round))),1),s(t(g),{"delay-duration":300},{default:f(()=>[r(`div`,Qe,[s(t(_),null,{default:f(()=>[s(t(y),{"as-child":``},{default:f(()=>[r(`span`,$e,[s(t(ne),{class:`h-3 w-3`}),p(` `+l(t(b)(i.attackerRemainingPower)),1)])]),_:2},1024),s(t(v),null,{default:f(()=>[r(`p`,null,l(t(q)(`messagesView.attackerRemainingPower`)),1)]),_:1})]),_:2},1024),s(t(_),null,{default:f(()=>[s(t(y),{"as-child":``},{default:f(()=>[r(`span`,et,[s(t(re),{class:`h-3 w-3`}),p(` `+l(t(b)(i.defenderRemainingPower)),1)])]),_:2},1024),s(t(v),null,{default:f(()=>[r(`p`,null,l(t(q)(`messagesView.defenderRemainingPower`)),1)]),_:1})]),_:2},1024)])]),_:2},1024)]),r(`div`,tt,[r(`div`,nt,[r(`p`,rt,l(t(q)(`messagesView.attackerLosses`)),1),r(`div`,it,[(o(!0),e(n,null,a(i.attackerLosses,(n,i)=>(o(),e(`div`,{key:i,class:`flex justify-between`},[r(`span`,at,l(t(J)[i].name),1),r(`span`,ot,`-`+l(n),1)]))),128)),Object.keys(i.attackerLosses).length===0?(o(),e(`p`,st,l(t(q)(`messagesView.noLosses`)),1)):m(``,!0)])]),r(`div`,ct,[r(`p`,lt,l(t(q)(`messagesView.defenderLosses`)),1),r(`div`,ut,[(o(!0),e(n,null,a(i.defenderLosses.fleet,(n,i)=>(o(),e(`div`,{key:i,class:`flex justify-between`},[r(`span`,dt,l(t(J)[i].name),1),r(`span`,U,`-`+l(n),1)]))),128)),(o(!0),e(n,null,a(i.defenderLosses.defense,(n,i)=>(o(),e(`div`,{key:i,class:`flex justify-between`},[r(`span`,ft,l(t(Y)[i].name),1),r(`span`,pt,`-`+l(n),1)]))),128)),Object.keys(i.defenderLosses.fleet).length===0&&Object.keys(i.defenderLosses.defense).length===0?(o(),e(`p`,mt,l(t(q)(`messagesView.noLosses`)),1)):m(``,!0)])])])])]))),128))])):m(``,!0)])):m(``,!0)])):m(``,!0)]),_:1})]),_:1},8,[`open`]))}});export{W as t}; \ No newline at end of file diff --git a/docs/assets/BattleSimulatorView-BCwWxQsd.js b/docs/assets/BattleSimulatorView-BCwWxQsd.js new file mode 100644 index 0000000..42fb5bc --- /dev/null +++ b/docs/assets/BattleSimulatorView-BCwWxQsd.js @@ -0,0 +1 @@ +import{At as e,C as t,Cn as n,Ct as r,Dt as i,Jt as a,Kt as o,Mt as s,Nt as c,On as l,Ot as u,et as d,hn as f,in as p,jt as m,yn as h}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-DiSZfaku.js";import"./vendor-reka-ui-ICOW9z5F.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import{c as ee,g as te,p as ne,t as re}from"./vendor-icons-B6ER66fi.js";import"./TooltipProvider-Bx7lfIFp.js";import{t as g}from"./CardDescription-CtUtXM5o.js";import{d as _,m as v}from"./game-config-D-D7cMgJ.js";import{M as y,O as b,P as x,c as S,l as C,s as w,t as T,u as E,w as D}from"./index-BLxCTx9W.js";import{t as ie}from"./useGameConfig-chMIsHFg.js";import{t as ae}from"./BattleReportDialog-CsuxK00l.js";var oe={class:`container mx-auto p-4 sm:p-6 space-y-6`},se={class:`text-2xl sm:text-3xl font-bold`},ce={class:`flex gap-2 border-b`},le={class:`text-sm font-medium mb-3`},ue={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},O={class:`text-sm font-medium mb-3`},k={class:`grid grid-cols-3 gap-3`},A={class:`space-y-1`},j={class:`space-y-1`},M={class:`space-y-1`},N={class:`text-sm font-medium mb-3`},P={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},F={class:`text-sm font-medium mb-3`},I={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},L={class:`text-sm font-medium mb-3`},R={class:`grid grid-cols-3 gap-3`},z={class:`space-y-1`},B={class:`space-y-1`},V={class:`space-y-1`},H={class:`text-sm font-medium mb-3`},de={class:`grid grid-cols-3 gap-3`},fe={class:`space-y-1`},pe={class:`space-y-1`},me={class:`space-y-1`},he={class:`flex gap-2`},U=c({__name:`BattleSimulatorView`,setup(c){let{t:U}=x(),{SHIPS:W,DEFENSES:ge}=ie(),G=f({[v.LightFighter]:0,[v.HeavyFighter]:0,[v.Cruiser]:0,[v.Battleship]:0,[v.SmallCargo]:0,[v.LargeCargo]:0,[v.ColonyShip]:0,[v.Recycler]:0,[v.EspionageProbe]:0,[v.DarkMatterHarvester]:0}),K=f(`attacker`),q=f({weapon:0,shield:0,armor:0}),J=f({[v.LightFighter]:0,[v.HeavyFighter]:0,[v.Cruiser]:0,[v.Battleship]:0,[v.SmallCargo]:0,[v.LargeCargo]:0,[v.ColonyShip]:0,[v.Recycler]:0,[v.EspionageProbe]:0,[v.DarkMatterHarvester]:0}),Y=f({[_.RocketLauncher]:0,[_.LightLaser]:0,[_.HeavyLaser]:0,[_.GaussCannon]:0,[_.IonCannon]:0,[_.PlasmaTurret]:0,[_.SmallShieldDome]:0,[_.LargeShieldDome]:0}),X=f({weapon:0,shield:0,armor:0}),Z=f({metal:1e5,crystal:5e4,deuterium:25e3,darkMatter:100,energy:0}),Q=f(null),$=f(!1),_e=async()=>{let e={ships:h(G.value),weaponTech:q.value.weapon,shieldTech:q.value.shield,armorTech:q.value.armor},n={ships:h(J.value),defense:h(Y.value),weaponTech:X.value.weapon,shieldTech:X.value.shield,armorTech:X.value.armor},r=await t.simulateBattle({attacker:e,defender:n}),i=r.winner===`attacker`?await t.calculatePlunder({defenderResources:h(Z.value),attackerFleet:r.attackerRemaining}):{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},a=await t.calculateDebris({attackerLosses:r.attackerLosses,defenderLosses:r.defenderLosses}),o=d(a)/100;Q.value={id:`sim_${Date.now()}`,timestamp:Date.now(),attackerId:`simulator_attacker`,defenderId:`simulator_defender`,attackerPlanetId:`sim_attacker`,defenderPlanetId:`sim_defender`,attackerFleet:G.value,defenderFleet:J.value,defenderDefense:Y.value,attackerLosses:r.attackerLosses,defenderLosses:r.defenderLosses,winner:r.winner,plunder:i,debrisField:a,rounds:r.rounds,attackerRemaining:r.attackerRemaining,defenderRemaining:r.defenderRemaining,roundDetails:r.roundDetails,moonChance:o},$.value=!0},ve=()=>{Object.keys(G.value).forEach(e=>{G.value[e]=0}),Object.keys(J.value).forEach(e=>{J.value[e]=0}),Object.keys(Y.value).forEach(e=>{Y.value[e]=0}),q.value={weapon:0,shield:0,armor:0},X.value={weapon:0,shield:0,armor:0},Q.value=null,$.value=!1};return(t,c)=>(o(),e(`div`,oe,[i(`h1`,se,l(n(U)(`simulatorView.title`)),1),i(`div`,ce,[s(n(y),{onClick:c[0]||=e=>K.value=`attacker`,variant:K.value===`attacker`?`default`:`ghost`,class:`rounded-b-none`},{default:p(()=>[s(n(ee)),m(` `+l(n(U)(`simulatorView.attacker`)),1)]),_:1},8,[`variant`]),s(n(y),{onClick:c[1]||=e=>K.value=`defender`,variant:K.value===`defender`?`default`:`ghost`,class:`rounded-b-none`},{default:p(()=>[s(n(ne)),m(` `+l(n(U)(`simulatorView.defender`)),1)]),_:1},8,[`variant`])]),K.value===`attacker`?(o(),u(n(E),{key:0},{default:p(()=>[s(n(S),null,{default:p(()=>[s(n(w),null,{default:p(()=>[m(l(n(U)(`simulatorView.attackerConfig`)),1)]),_:1}),s(n(g),null,{default:p(()=>[m(l(n(U)(`simulatorView.attackerConfigDesc`)),1)]),_:1})]),_:1}),s(n(C),{class:`space-y-4`},{default:p(()=>[i(`div`,null,[i(`h3`,le,l(n(U)(`simulatorView.fleet`)),1),i(`div`,ue,[(o(!0),e(r,null,a(Object.values(n(v)),t=>(o(),e(`div`,{key:t,class:`space-y-1`},[s(n(T),{for:`attacker-${t}`,class:`text-xs`},{default:p(()=>[m(l(n(W)[t].name),1)]),_:2},1032,[`for`]),s(n(b),{id:`attacker-${t}`,modelValue:G.value[t],"onUpdate:modelValue":e=>G.value[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]))),128))])]),i(`div`,null,[i(`h3`,O,l(n(U)(`simulatorView.techLevels`)),1),i(`div`,k,[i(`div`,A,[s(n(T),{for:`attacker-weapon`,class:`text-xs`},{default:p(()=>[m(l(n(U)(`simulatorView.weapon`)),1)]),_:1}),s(n(b),{id:`attacker-weapon`,modelValue:q.value.weapon,"onUpdate:modelValue":c[2]||=e=>q.value.weapon=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),i(`div`,j,[s(n(T),{for:`attacker-shield`,class:`text-xs`},{default:p(()=>[m(l(n(U)(`simulatorView.shield`)),1)]),_:1}),s(n(b),{id:`attacker-shield`,modelValue:q.value.shield,"onUpdate:modelValue":c[3]||=e=>q.value.shield=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),i(`div`,M,[s(n(T),{for:`attacker-armor`,class:`text-xs`},{default:p(()=>[m(l(n(U)(`simulatorView.armor`)),1)]),_:1}),s(n(b),{id:`attacker-armor`,modelValue:q.value.armor,"onUpdate:modelValue":c[4]||=e=>q.value.armor=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])])])])]),_:1})]),_:1})):(o(),u(n(E),{key:1},{default:p(()=>[s(n(S),null,{default:p(()=>[s(n(w),null,{default:p(()=>[m(l(n(U)(`simulatorView.defenderConfig`)),1)]),_:1}),s(n(g),null,{default:p(()=>[m(l(n(U)(`simulatorView.defenderConfigDesc`)),1)]),_:1})]),_:1}),s(n(C),{class:`space-y-4`},{default:p(()=>[i(`div`,null,[i(`h3`,N,l(n(U)(`simulatorView.fleet`)),1),i(`div`,P,[(o(!0),e(r,null,a(Object.values(n(v)),t=>(o(),e(`div`,{key:t,class:`space-y-1`},[s(n(T),{for:`defender-${t}`,class:`text-xs`},{default:p(()=>[m(l(n(W)[t].name),1)]),_:2},1032,[`for`]),s(n(b),{id:`defender-${t}`,modelValue:J.value[t],"onUpdate:modelValue":e=>J.value[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]))),128))])]),i(`div`,null,[i(`h3`,F,l(n(U)(`simulatorView.defenseStructures`)),1),i(`div`,I,[(o(!0),e(r,null,a(Object.values(n(_)),t=>(o(),e(`div`,{key:t,class:`space-y-1`},[s(n(T),{for:`defense-${t}`,class:`text-xs`},{default:p(()=>[m(l(n(ge)[t].name),1)]),_:2},1032,[`for`]),s(n(b),{id:`defense-${t}`,modelValue:Y.value[t],"onUpdate:modelValue":e=>Y.value[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]))),128))])]),i(`div`,null,[i(`h3`,L,l(n(U)(`simulatorView.techLevels`)),1),i(`div`,R,[i(`div`,z,[s(n(T),{for:`defender-weapon`,class:`text-xs`},{default:p(()=>[m(l(n(U)(`simulatorView.weapon`)),1)]),_:1}),s(n(b),{id:`defender-weapon`,modelValue:X.value.weapon,"onUpdate:modelValue":c[5]||=e=>X.value.weapon=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),i(`div`,B,[s(n(T),{for:`defender-shield`,class:`text-xs`},{default:p(()=>[m(l(n(U)(`simulatorView.shield`)),1)]),_:1}),s(n(b),{id:`defender-shield`,modelValue:X.value.shield,"onUpdate:modelValue":c[6]||=e=>X.value.shield=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),i(`div`,V,[s(n(T),{for:`defender-armor`,class:`text-xs`},{default:p(()=>[m(l(n(U)(`simulatorView.armor`)),1)]),_:1}),s(n(b),{id:`defender-armor`,modelValue:X.value.armor,"onUpdate:modelValue":c[7]||=e=>X.value.armor=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])])])]),i(`div`,null,[i(`h3`,H,l(n(U)(`simulatorView.defenderResources`)),1),i(`div`,de,[i(`div`,fe,[s(n(T),{for:`defender-metal`,class:`text-xs flex items-center gap-1`},{default:p(()=>[s(D,{type:`metal`,size:`sm`}),m(` `+l(n(U)(`resources.metal`)),1)]),_:1}),s(n(b),{id:`defender-metal`,modelValue:Z.value.metal,"onUpdate:modelValue":c[8]||=e=>Z.value.metal=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),i(`div`,pe,[s(n(T),{for:`defender-crystal`,class:`text-xs flex items-center gap-1`},{default:p(()=>[s(D,{type:`crystal`,size:`sm`}),m(` `+l(n(U)(`resources.crystal`)),1)]),_:1}),s(n(b),{id:`defender-crystal`,modelValue:Z.value.crystal,"onUpdate:modelValue":c[9]||=e=>Z.value.crystal=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),i(`div`,me,[s(n(T),{for:`defender-deuterium`,class:`text-xs flex items-center gap-1`},{default:p(()=>[s(D,{type:`deuterium`,size:`sm`}),m(` `+l(n(U)(`resources.deuterium`)),1)]),_:1}),s(n(b),{id:`defender-deuterium`,modelValue:Z.value.deuterium,"onUpdate:modelValue":c[10]||=e=>Z.value.deuterium=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])])])])]),_:1})]),_:1})),i(`div`,he,[s(n(y),{onClick:_e,class:`flex-1`,size:`lg`},{default:p(()=>[s(n(re),{class:`h-4 w-4 mr-2`}),m(` `+l(n(U)(`simulatorView.startSimulation`)),1)]),_:1}),s(n(y),{onClick:ve,variant:`outline`,size:`lg`},{default:p(()=>[s(n(te),{class:`h-4 w-4 mr-2`}),m(` `+l(n(U)(`simulatorView.reset`)),1)]),_:1})]),s(ae,{open:$.value,"onUpdate:open":c[11]||=e=>$.value=e,report:Q.value},null,8,[`open`,`report`])]))}});export{U as default}; \ No newline at end of file diff --git a/docs/assets/BattleSimulatorView-DADwA9bi.js b/docs/assets/BattleSimulatorView-DADwA9bi.js deleted file mode 100644 index 2a71ee4..0000000 --- a/docs/assets/BattleSimulatorView-DADwA9bi.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,G as t,H as n,J as r,K as i,Ot as a,St as o,W as s,X as c,Y as l,Z as u,jt as d,lt as f,pt as p,q as m,st as h}from"./vendor-ui-DBxeWLyT.js";import"./vendor-vue-Bqq1sBNf.js";import{t as g}from"./CardDescription-CRV0m8La.js";import{$ as _,Bt as ee,Ct as te,Et as v,G as y,K as b,Mt as ne,O as re,Pt as x,Rt as S,St as ie,Tt as C,V as w,bt as ae,dt as T,ft as E,it as D,jt as O,lt as k,st as A,tt as j,ut as M,xt as oe}from"./index-Cch-Ig40.js";import{t as se}from"./useGameConfig-D2EZdt1x.js";var ce=O(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),le=O(`trophy`,[[`path`,{d:`M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978`,key:`1n3hpd`}],[`path`,{d:`M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978`,key:`rfe1zi`}],[`path`,{d:`M18 9h1.5a1 1 0 0 0 0-5H18`,key:`7xy6bh`}],[`path`,{d:`M4 22h16`,key:`57wxv0`}],[`path`,{d:`M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z`,key:`1mhfuq`}],[`path`,{d:`M6 9H4.5a1 1 0 0 1 0-5H6`,key:`tex48p`}]]),N=(e,t=0,n=.1)=>Math.floor(e*(1+t*n)),P=(e,t=!1)=>{let n=[];if(e.ships){for(let[t,r]of Object.entries(e.ships))if(r>0){let i=j[t];n.push({type:t,count:r,attack:N(i.attack,e.weaponTech),shield:N(i.shield,e.shieldTech),armor:N(i.armor,e.armorTech)})}}if(t&&e.defense){for(let[t,r]of Object.entries(e.defense))if(r>0){let i=_[t];n.push({type:t,count:r,attack:N(i.attack,e.weaponTech),shield:N(i.shield,e.shieldTech),armor:N(i.armor,e.armorTech)})}}return n},F=(e,t)=>{let n=e.attack,r=t.shield,i=t.armor,a=0,o=0;if(n.01)return{destroyed:0,damagedShield:0};let s=n;if(s>r)s-=r,o=r;else return o=s,{destroyed:0,damagedShield:o};if(s>i)a=1;else{let e=s/i;Math.random(){let n={},r={},i={};for(let n of e)for(let e=0;e0){if(a.count-=o,Object.values(A).includes(a.type)){let e=a.type;r[e]=(r[e]||0)+o}else{let e=a.type;i[e]=(i[e]||0)+o}a.count<=0&&t.splice(e,1)}}for(let r of t)for(let t=0;t0){i.count-=a;let r=i.type;n[r]=(n[r]||0)+a,i.count<=0&&e.splice(t,1)}}let a=e.reduce((e,t)=>e+t.count*t.attack,0),o=t.reduce((e,t)=>e+t.count*t.attack,0);return{attackerLosses:n,defenderLosses:{fleet:r,defense:i},attackerRemainingPower:a,defenderRemainingPower:o}};const ue=(e,t,n=6)=>{let r=P(e,!1),i=P(t,!0),a={},o={},s={},c=[],l=0;for(let e=0;e0&&(u[e]=n,s[e]=t-n)}let d={};for(let e of r)e.count>0&&(d[e.type]=e.count);let f={},p={};for(let e of i)e.count>0&&(Object.values(A).includes(e.type)?f[e.type]=e.count:p[e.type]=e.count);for(let[e,t]of Object.entries(u))p[e]=(p[e]||0)+t;let m;return m=r.length===0&&i.length===0?`draw`:r.length===0?`defender`:i.length===0?`attacker`:`draw`,{winner:m,rounds:l,attackerLosses:a,defenderLosses:{fleet:o,defense:s},attackerRemaining:d,defenderRemaining:{fleet:f,defense:p},roundDetails:c}},de=(e,t)=>{let n=0;for(let[e,r]of Object.entries(t)){let t=j[e];n+=t.cargoCapacity*r}let r={metal:Math.floor(e.metal*.5),crystal:Math.floor(e.crystal*.5),deuterium:Math.floor(e.deuterium*.5),darkMatter:Math.floor(e.darkMatter*.5),energy:0},i=r.metal+r.crystal+r.deuterium+r.darkMatter;if(n>=i)return r;let a=n/i;return{metal:Math.floor(r.metal*a),crystal:Math.floor(r.crystal*a),deuterium:Math.floor(r.deuterium*a),darkMatter:Math.floor(r.darkMatter*a),energy:0}},fe=(e,t)=>{let n=0,r=0;for(let[t,i]of Object.entries(e)){let e=j[t];n+=e.cost.metal*i*.3,r+=e.cost.crystal*i*.3}for(let[e,i]of Object.entries(t.fleet)){let t=j[e];n+=t.cost.metal*i*.3,r+=t.cost.crystal*i*.3}for(let[e,i]of Object.entries(t.defense)){let t=_[e];n+=t.cost.metal*i*.3,r+=t.cost.crystal*i*.3}return{metal:Math.floor(n),crystal:Math.floor(r),deuterium:0,darkMatter:0,energy:0}};var pe={class:`container mx-auto p-4 sm:p-6 space-y-6`},me={class:`text-2xl sm:text-3xl font-bold`},L={class:`flex gap-2 border-b`},R={class:`text-sm font-medium mb-3`},z={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},he={class:`text-sm font-medium mb-3`},ge={class:`grid grid-cols-3 gap-3`},_e={class:`space-y-1`},ve={class:`space-y-1`},ye={class:`space-y-1`},be={class:`text-sm font-medium mb-3`},xe={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},Se={class:`text-sm font-medium mb-3`},Ce={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},we={class:`text-sm font-medium mb-3`},Te={class:`grid grid-cols-3 gap-3`},Ee={class:`space-y-1`},De={class:`space-y-1`},Oe={class:`space-y-1`},ke={class:`text-sm font-medium mb-3`},Ae={class:`grid grid-cols-3 gap-3`},je={class:`space-y-1`},Me={class:`space-y-1`},Ne={class:`space-y-1`},Pe={class:`flex gap-2`},Fe={key:0,class:`space-y-4`},Ie={class:`text-lg font-bold`},Le={class:`text-sm mt-1`},Re={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},ze={class:`space-y-2`},Be={class:`text-sm font-medium text-red-600 dark:text-red-400`},Ve={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},He={class:`text-muted-foreground`},Ue={class:`ml-2 font-medium`},We={key:0,class:`text-muted-foreground`},Ge={class:`space-y-2`},Ke={class:`text-sm font-medium text-red-600 dark:text-red-400`},qe={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},Je={class:`text-muted-foreground`},Ye={class:`ml-2 font-medium`},Xe={class:`text-muted-foreground`},Ze={class:`ml-2 font-medium`},Qe={key:0,class:`text-muted-foreground`},$e={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},et={class:`space-y-2`},tt={class:`text-sm font-medium text-blue-600 dark:text-blue-400`},nt={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},rt={class:`text-muted-foreground`},it={class:`ml-2 font-medium`},at={key:0,class:`text-muted-foreground`},ot={class:`space-y-2`},st={class:`text-sm font-medium text-blue-600 dark:text-blue-400`},ct={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},lt={class:`text-muted-foreground`},B={class:`ml-2 font-medium`},ut={class:`text-muted-foreground`},dt={class:`ml-2 font-medium`},ft={key:0,class:`text-muted-foreground`},pt={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},mt={key:0,class:`p-3 bg-green-50 dark:bg-green-950 rounded-lg`},ht={class:`text-sm font-medium mb-2 text-green-600 dark:text-green-400`},gt={class:`flex flex-wrap gap-3 text-xs`},_t={key:0,class:`flex items-center gap-1`},vt={key:1,class:`flex items-center gap-1`},yt={key:2,class:`flex items-center gap-1`},bt={key:1,class:`p-3 bg-muted rounded-lg`},xt={class:`text-sm font-medium mb-2`},St={class:`flex flex-wrap gap-3 text-xs`},Ct={key:0,class:`flex items-center gap-1`},wt={key:1,class:`flex items-center gap-1`},Tt={key:0,class:`text-xs text-muted-foreground mt-2`},Et={class:`space-y-2`},Dt={key:0,class:`relative pl-6 space-y-4`},Ot={class:`border rounded-lg p-3 bg-card hover:shadow-md transition-shadow`},kt={class:`flex items-center justify-between mb-3`},At={class:`text-sm font-semibold`},jt={class:`flex gap-3 text-xs text-muted-foreground`},Mt=[`title`],Nt=[`title`],Pt={class:`grid grid-cols-1 md:grid-cols-2 gap-3`},Ft={class:`bg-red-50 dark:bg-red-950/20 rounded p-2`},It={class:`text-xs font-medium text-red-600 dark:text-red-400 mb-1.5`},Lt={class:`text-xs space-y-0.5`},Rt={class:`text-muted-foreground`},zt={class:`font-medium`},Bt={key:0,class:`text-muted-foreground italic`},Vt={class:`bg-blue-50 dark:bg-blue-950/20 rounded p-2`},Ht={class:`text-xs font-medium text-blue-600 dark:text-blue-400 mb-1.5`},Ut={class:`text-xs space-y-0.5`},Wt={class:`text-muted-foreground`},Gt={class:`font-medium`},Kt={class:`text-muted-foreground`},qt={class:`font-medium`},Jt={key:0,class:`text-muted-foreground italic`},V=u({__name:`BattleSimulatorView`,setup(u){let{t:_}=ee(),{SHIPS:O,DEFENSES:j}=se(),N=o({[A.LightFighter]:0,[A.HeavyFighter]:0,[A.Cruiser]:0,[A.Battleship]:0,[A.SmallCargo]:0,[A.LargeCargo]:0,[A.ColonyShip]:0,[A.Recycler]:0,[A.EspionageProbe]:0,[A.DarkMatterHarvester]:0}),P=o(`attacker`),F=o({weapon:0,shield:0,armor:0}),I=o({[A.LightFighter]:0,[A.HeavyFighter]:0,[A.Cruiser]:0,[A.Battleship]:0,[A.SmallCargo]:0,[A.LargeCargo]:0,[A.ColonyShip]:0,[A.Recycler]:0,[A.EspionageProbe]:0,[A.DarkMatterHarvester]:0}),V=o({[D.RocketLauncher]:0,[D.LightLaser]:0,[D.HeavyLaser]:0,[D.GaussCannon]:0,[D.IonCannon]:0,[D.PlasmaTurret]:0,[D.SmallShieldDome]:0,[D.LargeShieldDome]:0}),H=o({weapon:0,shield:0,armor:0}),U=o({metal:1e5,crystal:5e4,deuterium:25e3,darkMatter:100,energy:0}),W=o(null),G=o(0),K=o({}),q=o({fleet:{},defense:{}}),J=o([]),Y=o(!1),X=o(!1),Z=s(()=>!W.value||W.value.winner!==`attacker`?{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0}:de(U.value,N.value)),Q=s(()=>W.value?fe(W.value.attackerLosses,W.value.defenderLosses):{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0}),Yt=e=>re(e),$=s(()=>Q.value?Yt(Q.value):0),Xt=()=>{let e=ue({ships:N.value,weaponTech:F.value.weapon,shieldTech:F.value.shield,armorTech:F.value.armor},{ships:I.value,defense:V.value,weaponTech:H.value.weapon,shieldTech:H.value.shield,armorTech:H.value.armor});G.value=e.rounds,K.value=e.attackerRemaining,q.value=e.defenderRemaining,J.value=e.roundDetails,Y.value=!1,W.value={id:`sim_${Date.now()}`,timestamp:Date.now(),attackerId:`simulator_attacker`,defenderId:`simulator_defender`,attackerPlanetId:`sim_attacker`,defenderPlanetId:`sim_defender`,attackerFleet:N.value,defenderFleet:I.value,defenderDefense:V.value,attackerLosses:e.attackerLosses,defenderLosses:e.defenderLosses,winner:e.winner,plunder:Z.value,debrisField:Q.value},X.value=!0},Zt=()=>{Object.keys(N.value).forEach(e=>{N.value[e]=0}),Object.keys(I.value).forEach(e=>{I.value[e]=0}),Object.keys(V.value).forEach(e=>{V.value[e]=0}),F.value={weapon:0,shield:0,armor:0},H.value={weapon:0,shield:0,armor:0},W.value=null,G.value=0,K.value={},q.value={fleet:{},defense:{}},J.value=[],Y.value=!1,X.value=!1},Qt=e=>e===`attacker`?`bg-green-50 dark:bg-green-950 text-green-700 dark:text-green-300`:e===`defender`?`bg-red-50 dark:bg-red-950 text-red-700 dark:text-red-300`:`bg-gray-50 dark:bg-gray-950 text-gray-700 dark:text-gray-300`;return(o,s)=>(h(),r(`div`,pe,[t(`h1`,me,d(e(_)(`simulatorView.title`)),1),t(`div`,L,[c(e(S),{onClick:s[0]||=e=>P.value=`attacker`,variant:P.value===`attacker`?`default`:`ghost`,class:`rounded-b-none`},{default:p(()=>[c(e(C)),l(` `+d(e(_)(`simulatorView.attacker`)),1)]),_:1},8,[`variant`]),c(e(S),{onClick:s[1]||=e=>P.value=`defender`,variant:P.value===`defender`?`default`:`ghost`,class:`rounded-b-none`},{default:p(()=>[c(e(v)),l(` `+d(e(_)(`simulatorView.defender`)),1)]),_:1},8,[`variant`])]),P.value===`attacker`?(h(),i(e(E),{key:0},{default:p(()=>[c(e(M),null,{default:p(()=>[c(e(k),null,{default:p(()=>[l(d(e(_)(`simulatorView.attackerConfig`)),1)]),_:1}),c(e(g),null,{default:p(()=>[l(d(e(_)(`simulatorView.attackerConfigDesc`)),1)]),_:1})]),_:1}),c(e(T),{class:`space-y-4`},{default:p(()=>[t(`div`,null,[t(`h3`,R,d(e(_)(`simulatorView.fleet`)),1),t(`div`,z,[(h(!0),r(n,null,f(Object.values(e(A)),t=>(h(),r(`div`,{key:t,class:`space-y-1`},[c(e(y),{for:`attacker-${t}`,class:`text-xs`},{default:p(()=>[l(d(e(O)[t].name),1)]),_:2},1032,[`for`]),c(e(b),{id:`attacker-${t}`,modelValue:N.value[t],"onUpdate:modelValue":e=>N.value[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]))),128))])]),t(`div`,null,[t(`h3`,he,d(e(_)(`simulatorView.techLevels`)),1),t(`div`,ge,[t(`div`,_e,[c(e(y),{for:`attacker-weapon`,class:`text-xs`},{default:p(()=>[l(d(e(_)(`simulatorView.weapon`)),1)]),_:1}),c(e(b),{id:`attacker-weapon`,modelValue:F.value.weapon,"onUpdate:modelValue":s[2]||=e=>F.value.weapon=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),t(`div`,ve,[c(e(y),{for:`attacker-shield`,class:`text-xs`},{default:p(()=>[l(d(e(_)(`simulatorView.shield`)),1)]),_:1}),c(e(b),{id:`attacker-shield`,modelValue:F.value.shield,"onUpdate:modelValue":s[3]||=e=>F.value.shield=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),t(`div`,ye,[c(e(y),{for:`attacker-armor`,class:`text-xs`},{default:p(()=>[l(d(e(_)(`simulatorView.armor`)),1)]),_:1}),c(e(b),{id:`attacker-armor`,modelValue:F.value.armor,"onUpdate:modelValue":s[4]||=e=>F.value.armor=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])])])])]),_:1})]),_:1})):(h(),i(e(E),{key:1},{default:p(()=>[c(e(M),null,{default:p(()=>[c(e(k),null,{default:p(()=>[l(d(e(_)(`simulatorView.defenderConfig`)),1)]),_:1}),c(e(g),null,{default:p(()=>[l(d(e(_)(`simulatorView.defenderConfigDesc`)),1)]),_:1})]),_:1}),c(e(T),{class:`space-y-4`},{default:p(()=>[t(`div`,null,[t(`h3`,be,d(e(_)(`simulatorView.fleet`)),1),t(`div`,xe,[(h(!0),r(n,null,f(Object.values(e(A)),t=>(h(),r(`div`,{key:t,class:`space-y-1`},[c(e(y),{for:`defender-${t}`,class:`text-xs`},{default:p(()=>[l(d(e(O)[t].name),1)]),_:2},1032,[`for`]),c(e(b),{id:`defender-${t}`,modelValue:I.value[t],"onUpdate:modelValue":e=>I.value[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]))),128))])]),t(`div`,null,[t(`h3`,Se,d(e(_)(`simulatorView.defenseStructures`)),1),t(`div`,Ce,[(h(!0),r(n,null,f(Object.values(e(D)),t=>(h(),r(`div`,{key:t,class:`space-y-1`},[c(e(y),{for:`defense-${t}`,class:`text-xs`},{default:p(()=>[l(d(e(j)[t].name),1)]),_:2},1032,[`for`]),c(e(b),{id:`defense-${t}`,modelValue:V.value[t],"onUpdate:modelValue":e=>V.value[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]))),128))])]),t(`div`,null,[t(`h3`,we,d(e(_)(`simulatorView.techLevels`)),1),t(`div`,Te,[t(`div`,Ee,[c(e(y),{for:`defender-weapon`,class:`text-xs`},{default:p(()=>[l(d(e(_)(`simulatorView.weapon`)),1)]),_:1}),c(e(b),{id:`defender-weapon`,modelValue:H.value.weapon,"onUpdate:modelValue":s[5]||=e=>H.value.weapon=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),t(`div`,De,[c(e(y),{for:`defender-shield`,class:`text-xs`},{default:p(()=>[l(d(e(_)(`simulatorView.shield`)),1)]),_:1}),c(e(b),{id:`defender-shield`,modelValue:H.value.shield,"onUpdate:modelValue":s[6]||=e=>H.value.shield=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),t(`div`,Oe,[c(e(y),{for:`defender-armor`,class:`text-xs`},{default:p(()=>[l(d(e(_)(`simulatorView.armor`)),1)]),_:1}),c(e(b),{id:`defender-armor`,modelValue:H.value.armor,"onUpdate:modelValue":s[7]||=e=>H.value.armor=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])])])]),t(`div`,null,[t(`h3`,ke,d(e(_)(`simulatorView.defenderResources`)),1),t(`div`,Ae,[t(`div`,je,[c(e(y),{for:`defender-metal`,class:`text-xs flex items-center gap-1`},{default:p(()=>[c(x,{type:`metal`,size:`sm`}),l(` `+d(e(_)(`resources.metal`)),1)]),_:1}),c(e(b),{id:`defender-metal`,modelValue:U.value.metal,"onUpdate:modelValue":s[8]||=e=>U.value.metal=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),t(`div`,Me,[c(e(y),{for:`defender-crystal`,class:`text-xs flex items-center gap-1`},{default:p(()=>[c(x,{type:`crystal`,size:`sm`}),l(` `+d(e(_)(`resources.crystal`)),1)]),_:1}),c(e(b),{id:`defender-crystal`,modelValue:U.value.crystal,"onUpdate:modelValue":s[9]||=e=>U.value.crystal=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])]),t(`div`,Ne,[c(e(y),{for:`defender-deuterium`,class:`text-xs flex items-center gap-1`},{default:p(()=>[c(x,{type:`deuterium`,size:`sm`}),l(` `+d(e(_)(`resources.deuterium`)),1)]),_:1}),c(e(b),{id:`defender-deuterium`,modelValue:U.value.deuterium,"onUpdate:modelValue":s[10]||=e=>U.value.deuterium=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`modelValue`])])])])]),_:1})]),_:1})),t(`div`,Pe,[c(e(S),{onClick:Xt,class:`flex-1`,size:`lg`},{default:p(()=>[c(e(te),{class:`h-4 w-4 mr-2`}),l(` `+d(e(_)(`simulatorView.startSimulation`)),1)]),_:1}),c(e(S),{onClick:Zt,variant:`outline`,size:`lg`},{default:p(()=>[c(e(ce),{class:`h-4 w-4 mr-2`}),l(` `+d(e(_)(`simulatorView.reset`)),1)]),_:1})]),c(e(ne),{open:X.value,"onUpdate:open":s[12]||=e=>X.value=e},{default:p(()=>[c(e(ie),{class:`max-w-4xl max-h-[90vh] overflow-y-auto`},{default:p(()=>[c(e(oe),null,{default:p(()=>[c(e(ae),{class:`flex items-center gap-2`},{default:p(()=>[c(e(le),{class:`h-5 w-5`}),l(` `+d(e(_)(`simulatorView.battleResult`)),1)]),_:1})]),_:1}),W.value?(h(),r(`div`,Fe,[t(`div`,{class:a([`text-center p-4 rounded-lg`,Qt(W.value.winner)])},[t(`p`,Ie,d(W.value.winner===`attacker`?e(_)(`simulatorView.attackerVictory`):W.value.winner===`defender`?e(_)(`simulatorView.defenderVictory`):e(_)(`simulatorView.draw`)),1),t(`p`,Le,d(e(_)(`simulatorView.afterRounds`).replace(`{rounds}`,String(G.value))),1)],2),t(`div`,Re,[t(`div`,ze,[t(`p`,Be,d(e(_)(`simulatorView.attackerLosses`)),1),t(`div`,Ve,[(h(!0),r(n,null,f(W.value.attackerLosses,(n,i)=>(h(),r(`div`,{key:i},[t(`span`,He,d(e(O)[i].name)+`:`,1),t(`span`,Ue,d(n),1)]))),128)),Object.keys(W.value.attackerLosses).length===0?(h(),r(`p`,We,d(e(_)(`simulatorView.noLosses`)),1)):m(``,!0)])]),t(`div`,Ge,[t(`p`,Ke,d(e(_)(`simulatorView.defenderLosses`)),1),t(`div`,qe,[(h(!0),r(n,null,f(W.value.defenderLosses.fleet,(n,i)=>(h(),r(`div`,{key:i},[t(`span`,Je,d(e(O)[i].name)+`:`,1),t(`span`,Ye,d(n),1)]))),128)),(h(!0),r(n,null,f(W.value.defenderLosses.defense,(n,i)=>(h(),r(`div`,{key:i},[t(`span`,Xe,d(e(j)[i].name)+`:`,1),t(`span`,Ze,d(n),1)]))),128)),Object.keys(W.value.defenderLosses.fleet).length===0&&Object.keys(W.value.defenderLosses.defense).length===0?(h(),r(`p`,Qe,d(e(_)(`simulatorView.noLosses`)),1)):m(``,!0)])])]),t(`div`,$e,[t(`div`,et,[t(`p`,tt,d(e(_)(`simulatorView.attackerRemaining`)),1),t(`div`,nt,[(h(!0),r(n,null,f(K.value,(n,i)=>(h(),r(`div`,{key:i},[t(`span`,rt,d(e(O)[i].name)+`:`,1),t(`span`,it,d(n),1)]))),128)),Object.keys(K.value).length===0?(h(),r(`p`,at,d(e(_)(`simulatorView.allDestroyed`)),1)):m(``,!0)])]),t(`div`,ot,[t(`p`,st,d(e(_)(`simulatorView.defenderRemaining`)),1),t(`div`,ct,[(h(!0),r(n,null,f(q.value.fleet,(n,i)=>(h(),r(`div`,{key:i},[t(`span`,lt,d(e(O)[i].name)+`:`,1),t(`span`,B,d(n),1)]))),128)),(h(!0),r(n,null,f(q.value.defense,(n,i)=>(h(),r(`div`,{key:i},[t(`span`,ut,d(e(j)[i].name)+`:`,1),t(`span`,dt,d(n),1)]))),128)),Object.keys(q.value.fleet).length===0&&Object.keys(q.value.defense).length===0?(h(),r(`p`,ft,d(e(_)(`simulatorView.allDestroyed`)),1)):m(``,!0)])])]),t(`div`,pt,[Z.value.metal>0||Z.value.crystal>0||Z.value.deuterium>0?(h(),r(`div`,mt,[t(`p`,ht,d(e(_)(`simulatorView.plunderableResources`)),1),t(`div`,gt,[Z.value.metal>0?(h(),r(`span`,_t,[c(x,{type:`metal`,size:`sm`}),l(` `+d(e(w)(Z.value.metal)),1)])):m(``,!0),Z.value.crystal>0?(h(),r(`span`,vt,[c(x,{type:`crystal`,size:`sm`}),l(` `+d(e(w)(Z.value.crystal)),1)])):m(``,!0),Z.value.deuterium>0?(h(),r(`span`,yt,[c(x,{type:`deuterium`,size:`sm`}),l(` `+d(e(w)(Z.value.deuterium)),1)])):m(``,!0)])])):m(``,!0),Q.value.metal>0||Q.value.crystal>0?(h(),r(`div`,bt,[t(`p`,xt,d(e(_)(`simulatorView.debrisField`)),1),t(`div`,St,[Q.value.metal>0?(h(),r(`span`,Ct,[c(x,{type:`metal`,size:`sm`}),l(` `+d(e(w)(Q.value.metal)),1)])):m(``,!0),Q.value.crystal>0?(h(),r(`span`,wt,[c(x,{type:`crystal`,size:`sm`}),l(` `+d(e(w)(Q.value.crystal)),1)])):m(``,!0)]),$.value>0?(h(),r(`p`,Tt,d(e(_)(`simulatorView.moonChance`))+`: `+d($.value)+`%`,1)):m(``,!0)])):m(``,!0)]),t(`div`,Et,[c(e(S),{onClick:s[11]||=e=>Y.value=!Y.value,variant:`outline`,size:`sm`,class:`w-full`},{default:p(()=>[l(d(Y.value?e(_)(`simulatorView.hideRoundDetails`):e(_)(`simulatorView.showRoundDetails`)),1)]),_:1}),Y.value?(h(),r(`div`,Dt,[s[14]||=t(`div`,{class:`absolute left-2 top-0 bottom-0 w-0.5 bg-border`},null,-1),(h(!0),r(n,null,f(J.value,i=>(h(),r(`div`,{key:i.round,class:`relative`},[s[13]||=t(`div`,{class:`absolute -left-6 top-3 w-4 h-4 rounded-full bg-primary border-2 border-background`},null,-1),t(`div`,Ot,[t(`div`,kt,[t(`p`,At,d(e(_)(`simulatorView.round`).replace(`{round}`,String(i.round))),1),t(`div`,jt,[t(`span`,{class:`flex items-center gap-1`,title:e(_)(`simulatorView.attackerRemainingPower`)},[c(e(C),{class:`h-3 w-3`}),l(` `+d(e(w)(i.attackerRemainingPower)),1)],8,Mt),t(`span`,{class:`flex items-center gap-1`,title:e(_)(`simulatorView.defenderRemainingPower`)},[c(e(v),{class:`h-3 w-3`}),l(` `+d(e(w)(i.defenderRemainingPower)),1)],8,Nt)])]),t(`div`,Pt,[t(`div`,Ft,[t(`p`,It,d(e(_)(`simulatorView.attackerLosses`)),1),t(`div`,Lt,[(h(!0),r(n,null,f(i.attackerLosses,(n,i)=>(h(),r(`div`,{key:i,class:`flex justify-between`},[t(`span`,Rt,d(e(O)[i].name),1),t(`span`,zt,`-`+d(n),1)]))),128)),Object.keys(i.attackerLosses).length===0?(h(),r(`p`,Bt,d(e(_)(`simulatorView.noLosses`)),1)):m(``,!0)])]),t(`div`,Vt,[t(`p`,Ht,d(e(_)(`simulatorView.defenderLosses`)),1),t(`div`,Ut,[(h(!0),r(n,null,f(i.defenderLosses.fleet,(n,i)=>(h(),r(`div`,{key:i,class:`flex justify-between`},[t(`span`,Wt,d(e(O)[i].name),1),t(`span`,Gt,`-`+d(n),1)]))),128)),(h(!0),r(n,null,f(i.defenderLosses.defense,(n,i)=>(h(),r(`div`,{key:i,class:`flex justify-between`},[t(`span`,Kt,d(e(j)[i].name),1),t(`span`,qt,`-`+d(n),1)]))),128)),Object.keys(i.defenderLosses.fleet).length===0&&Object.keys(i.defenderLosses.defense).length===0?(h(),r(`p`,Jt,d(e(_)(`simulatorView.noLosses`)),1)):m(``,!0)])])])])]))),128))])):m(``,!0)])])):m(``,!0)]),_:1})]),_:1},8,[`open`])]))}});export{V as default}; \ No newline at end of file diff --git a/docs/assets/BuildingsView-DhLhA5iU.js b/docs/assets/BuildingsView-DhLhA5iU.js deleted file mode 100644 index dbff817..0000000 --- a/docs/assets/BuildingsView-DhLhA5iU.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,G as t,H as n,J as r,K as i,Ot as a,St as ee,W as o,X as s,Y as c,Z as te,jt as l,lt as ne,pt as u,q as d,st as f}from"./vendor-ui-DBxeWLyT.js";import"./vendor-vue-Bqq1sBNf.js";import{t as re}from"./CardDescription-CRV0m8La.js";import{Bt as p,C as m,H as ie,It as ae,J as oe,Pt as h,Rt as g,S as se,V as _,Vt as ce,W as v,X as le,Y as y,b,dt as x,ft as S,jt as C,lt as w,q as T,rt as E,ut as D,x as O,yt as k}from"./index-Cch-Ig40.js";import{t as A}from"./useGameConfig-D2EZdt1x.js";import{t as j}from"./AlertDialog-_72FqRCT.js";var M=C(`clock`,[[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),N=C(`grid-3x3`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M3 15h18`,key:`5xshup`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]]),P={key:0,class:`container mx-auto p-4 sm:p-6`},F={class:`flex justify-between items-center mb-4 sm:mb-6 gap-2`},I={class:`text-2xl sm:text-3xl font-bold`},L={class:`text-xs sm:text-sm`},R={class:`flex items-center gap-1.5 text-muted-foreground`},z={class:`grid grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4`},B={class:`flex justify-between items-start gap-2`},V={class:`min-w-0 flex-1`},H={class:`space-y-3`},U={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},W={class:`text-muted-foreground mb-1 sm:mb-2`},ue={class:`space-y-1 sm:space-y-1.5`},de={class:`flex items-center gap-1.5 sm:gap-2`},fe={class:`text-xs`},pe={class:`flex items-center gap-1.5 sm:gap-2`},me={class:`text-xs`},he={class:`flex items-center gap-1.5 sm:gap-2`},ge={class:`text-xs`},_e={class:`text-xs sm:text-sm space-y-0.5 sm:space-y-1`},ve={class:`flex items-center gap-1.5 text-muted-foreground`},ye={class:`flex items-center gap-1.5 text-muted-foreground`},be={key:1,class:`text-xs text-muted-foreground`},xe={class:`flex gap-2 flex-wrap`},G=te({__name:`BuildingsView`,setup(te){let C=ce(),G=k(),{t:K}=p(),{BUILDINGS:q}=A(),J=o(()=>C.currentPlanet),Y=ee(null),Se=o(()=>J.value?Object.values(E).filter(e=>{let t=q.value[e];return J.value.isMoon?t.moonOnly===!0:t.moonOnly!==!0}):[]),Ce=e=>{if(!C.currentPlanet||!m(C.currentPlanet,e,C.player.technologies,C.player.officers).valid)return!1;let t=O(C.currentPlanet,e,C.player.officers);return C.currentPlanet.buildQueue.push(t),!0},we=e=>le(e),Te=e=>{Ce(e)||Y.value?.show({title:K(`buildingsView.upgradeFailed`),message:K(`buildingsView.upgradeFailedMessage`)})},X=e=>J.value?.buildings[e]||0,Z=e=>{if(!J.value||J.value.buildQueue.length>0)return!1;let t=Q(e,X(e)+1);return J.value.resources.metal>=t.metal&&J.value.resources.crystal>=t.crystal&&J.value.resources.deuterium>=t.deuterium},Q=(e,t)=>T(e,t),Ee=(e,t)=>oe(e,t),De=e=>{if(!C.currentPlanet||!se(C.currentPlanet,e,C.player.officers).valid)return!1;let t=b(C.currentPlanet,e,C.player.officers);return C.currentPlanet.buildQueue.push(t),!0},Oe=e=>{De(e)||Y.value?.show({title:K(`buildingsView.demolishFailed`),message:K(`buildingsView.demolishFailedMessage`)})},ke=e=>!J.value||J.value.buildQueue.length>0?!1:X(e)>0,$=e=>y(e,X(e));return(ee,o)=>J.value?(f(),r(`div`,P,[t(`div`,F,[t(`h1`,I,l(e(K)(`buildingsView.title`)),1),t(`div`,L,[t(`span`,R,[s(e(N),{size:14}),c(` `+l(we(J.value))+` / `+l(J.value.maxSpace),1)])])]),t(`div`,z,[(f(!0),r(n,null,ne(Se.value,n=>(f(),i(e(S),{key:n},{default:u(()=>[s(e(D),null,{default:u(()=>[t(`div`,B,[t(`div`,V,[s(e(w),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:t=>e(G).openBuilding(n,X(n))},{default:u(()=>[c(l(e(q)[n].name),1)]),_:2},1032,[`onClick`]),s(e(re),{class:`text-xs sm:text-sm`},{default:u(()=>[c(l(e(q)[n].description),1)]),_:2},1024)]),s(e(ae),{variant:`secondary`,class:`text-xs whitespace-nowrap flex-shrink-0`},{default:u(()=>[c(`Lv `+l(X(n)),1)]),_:2},1024)])]),_:2},1024),s(e(x),null,{default:u(()=>[t(`div`,H,[t(`div`,U,[t(`p`,W,l(e(K)(`buildingsView.upgradeCost`))+`:`,1),t(`div`,ue,[t(`div`,de,[s(h,{type:`metal`,size:`sm`}),t(`span`,fe,l(e(K)(`resources.metal`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(J.value.resources.metal,Q(n,X(n)+1).metal)])},l(e(_)(Q(n,X(n)+1).metal)),3)]),t(`div`,pe,[s(h,{type:`crystal`,size:`sm`}),t(`span`,me,l(e(K)(`resources.crystal`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(J.value.resources.crystal,Q(n,X(n)+1).crystal)])},l(e(_)(Q(n,X(n)+1).crystal)),3)]),t(`div`,he,[s(h,{type:`deuterium`,size:`sm`}),t(`span`,ge,l(e(K)(`resources.deuterium`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(J.value.resources.deuterium,Q(n,X(n)+1).deuterium)])},l(e(_)(Q(n,X(n)+1).deuterium)),3)])])]),t(`div`,_e,[t(`div`,ve,[s(e(M),{size:14,class:`flex-shrink-0`}),t(`span`,null,l(e(ie)(Ee(n,X(n)+1))),1)]),t(`div`,ye,[s(e(N),{size:14,class:`flex-shrink-0`}),t(`span`,null,l(e(q)[n].spaceUsage),1)])]),s(e(g),{onClick:e=>Te(n),disabled:!Z(n),class:`w-full`},{default:u(()=>[c(l(e(K)(`buildingsView.upgrade`)),1)]),_:1},8,[`onClick`,`disabled`]),X(n)>0?(f(),i(e(g),{key:0,onClick:e=>Oe(n),disabled:!ke(n),variant:`destructive`,class:`w-full`},{default:u(()=>[c(l(e(K)(`buildingsView.demolish`)),1)]),_:1},8,[`onClick`,`disabled`])):d(``,!0),X(n)>0?(f(),r(`div`,be,[t(`p`,null,l(e(K)(`buildingsView.demolishRefund`))+`:`,1),t(`div`,xe,[t(`span`,null,l(e(_)($(n).metal))+` `+l(e(K)(`resources.metal`)),1),t(`span`,null,l(e(_)($(n).crystal))+` `+l(e(K)(`resources.crystal`)),1),t(`span`,null,l(e(_)($(n).deuterium))+` `+l(e(K)(`resources.deuterium`)),1)])])):d(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),s(j,{ref_key:`alertDialog`,ref:Y},null,512)])):d(``,!0)}});export{G as default}; \ No newline at end of file diff --git a/docs/assets/BuildingsView-zu1MPaUF.js b/docs/assets/BuildingsView-zu1MPaUF.js new file mode 100644 index 0000000..57dfd18 --- /dev/null +++ b/docs/assets/BuildingsView-zu1MPaUF.js @@ -0,0 +1,2 @@ +import{At as e,Cn as t,Ct as n,Dt as r,Et as i,Jt as a,Kt as o,M as s,Mt as c,N as ee,Nt as l,O as u,On as d,Ot as f,P as p,Tn as m,ct as te,dt as ne,hn as h,in as g,j as _,jt as v,k as re,kt as y,lt as ie,ut as ae}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-DiSZfaku.js";import"./vendor-reka-ui-ICOW9z5F.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import{M as b,z as oe}from"./vendor-icons-B6ER66fi.js";import{t as se}from"./CardDescription-CtUtXM5o.js";import{h as ce,u as x}from"./game-config-D-D7cMgJ.js";import{A as le,I as ue,M as S,P as C,_ as w,c as T,i as E,l as D,o as O,r as k,s as A,u as j,w as M}from"./index-BLxCTx9W.js";import{t as N}from"./useGameConfig-chMIsHFg.js";import{t as P}from"./AlertDialog-vN9u2C5f.js";import{t as F}from"./CardUnlockOverlay-BVmeYgHN.js";var I={key:0,class:`container mx-auto p-4 sm:p-6`},L={class:`flex justify-between items-center mb-4 sm:mb-6 gap-2`},R={class:`text-2xl sm:text-3xl font-bold`},z={class:`text-xs sm:text-sm`},B={class:`flex items-center gap-1.5 text-muted-foreground`},V={class:`grid grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4`},H={class:`flex justify-between items-start gap-2`},U={class:`min-w-0 flex-1`},de={class:`space-y-3`},fe={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},pe={class:`text-muted-foreground mb-1 sm:mb-2`},me={class:`space-y-1 sm:space-y-1.5`},he={class:`flex items-center gap-1.5 sm:gap-2`},ge={class:`text-xs`},_e={class:`flex items-center gap-1.5 sm:gap-2`},ve={class:`text-xs`},ye={class:`flex items-center gap-1.5 sm:gap-2`},be={class:`text-xs`},xe={class:`text-xs sm:text-sm space-y-0.5 sm:space-y-1`},Se={class:`flex items-center gap-1.5 text-muted-foreground`},Ce={class:`flex items-center gap-1.5 text-muted-foreground`},we={key:1,class:`text-xs text-muted-foreground`},Te={class:`flex gap-2 flex-wrap`},W=l({__name:`BuildingsView`,setup(l){let W=ue(),Ee=w(),{t:G}=C(),{BUILDINGS:K,TECHNOLOGIES:De}=N(),q=i(()=>W.currentPlanet),J=h(null),Oe=i(()=>q.value?Object.values(x).filter(e=>{let t=K.value[e];return q.value.isMoon?t.moonOnly===!0:t.moonOnly!==!0}):[]),ke=e=>{if(!W.currentPlanet||!s(W.currentPlanet,e,W.player.technologies,W.player.officers).valid)return!1;let t=re(W.currentPlanet,e,W.player.officers);return W.currentPlanet.buildQueue.push(t),!0},Ae=e=>ne(e),je=e=>{if(!X(e)){J.value?.show({title:G(`common.requirementsNotMet`),message:Z(e)});return}ke(e)||J.value?.show({title:G(`buildingsView.upgradeFailed`),message:G(`buildingsView.upgradeFailedMessage`)})},Y=e=>q.value?.buildings[e]||0,X=e=>{if(!q.value)return!1;let t=K.value[e],n=p(t,Y(e)+1);return!n||Object.keys(n).length===0?!0:ee(q.value,W.player.technologies,n)},Me=e=>{if(!q.value)return G(`buildingsView.upgrade`);let t=K.value[e],n=Y(e);return t.maxLevel!==void 0&&n>=t.maxLevel?G(`buildingsView.maxLevelReached`):q.value.buildQueue.length>0||X(e)?G(`buildingsView.upgrade`):G(`buildingsView.requirementsNotMet`)},Z=e=>{let t=K.value[e],n=p(t,Y(e)+1);if(!n||!q.value)return``;let r=[];for(let[e,t]of Object.entries(n))if(Object.values(x).includes(e)){let n=e,i=q.value.buildings[n]||0,a=K.value[n]?.name||n,o=i>=t?`✓`:`✗`;r.push(`${o} ${a}: Lv ${t} (${G(`common.current`)}: Lv ${i})`)}else if(Object.values(ce).includes(e)){let n=e,i=W.player.technologies[n]||0,a=De.value[n]?.name||n,o=i>=t?`✓`:`✗`;r.push(`${o} ${a}: Lv ${t} (${G(`common.current`)}: Lv ${i})`)}return r.join(` +`)},Ne=e=>{if(!q.value)return!1;let t=K.value[e],n=Y(e);if(t.maxLevel!==void 0&&n>=t.maxLevel||q.value.buildQueue.length>0||!s(q.value,e,W.player.technologies,W.player.officers).valid)return!1;let r=Q(e,n+1);return q.value.resources.metal>=r.metal&&q.value.resources.crystal>=r.crystal&&q.value.resources.deuterium>=r.deuterium},Q=(e,t)=>te(e,t),Pe=(e,t)=>ie(e,t),Fe=e=>{if(!W.currentPlanet||!_(W.currentPlanet,e,W.player.officers).valid)return!1;let t=u(W.currentPlanet,e,W.player.officers);return W.currentPlanet.buildQueue.push(t),!0},Ie=e=>{Fe(e)||J.value?.show({title:G(`buildingsView.demolishFailed`),message:G(`buildingsView.demolishFailedMessage`)})},Le=e=>!q.value||q.value.buildQueue.length>0?!1:Y(e)>0,$=e=>ae(e,Y(e));return(i,s)=>q.value?(o(),e(`div`,I,[r(`div`,L,[r(`h1`,R,d(t(G)(`buildingsView.title`)),1),r(`div`,z,[r(`span`,B,[c(t(b),{size:14}),v(` `+d(Ae(q.value))+` / `+d(q.value.maxSpace),1)])])]),r(`div`,V,[(o(!0),e(n,null,a(Oe.value,n=>(o(),f(t(j),{key:n,class:`relative`},{default:g(()=>[c(F,{requirements:t(K)[n].requirements,currentLevel:Y(n)},null,8,[`requirements`,`currentLevel`]),c(t(T),null,{default:g(()=>[r(`div`,H,[r(`div`,U,[c(t(A),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:e=>t(Ee).openBuilding(n,Y(n))},{default:g(()=>[v(d(t(K)[n].name),1)]),_:2},1032,[`onClick`]),c(t(se),{class:`text-xs sm:text-sm`},{default:g(()=>[v(d(t(K)[n].description),1)]),_:2},1024)]),c(t(le),{variant:`secondary`,class:`text-xs whitespace-nowrap flex-shrink-0`},{default:g(()=>[v(`Lv `+d(Y(n)),1)]),_:2},1024)])]),_:2},1024),c(t(D),null,{default:g(()=>[r(`div`,de,[r(`div`,fe,[r(`p`,pe,d(t(G)(`buildingsView.upgradeCost`))+`:`,1),r(`div`,me,[r(`div`,he,[c(M,{type:`metal`,size:`sm`}),r(`span`,ge,d(t(G)(`resources.metal`))+`:`,1),r(`span`,{class:m([`font-medium text-xs sm:text-sm`,t(O)(q.value.resources.metal,Q(n,Y(n)+1).metal)])},d(t(k)(Q(n,Y(n)+1).metal)),3)]),r(`div`,_e,[c(M,{type:`crystal`,size:`sm`}),r(`span`,ve,d(t(G)(`resources.crystal`))+`:`,1),r(`span`,{class:m([`font-medium text-xs sm:text-sm`,t(O)(q.value.resources.crystal,Q(n,Y(n)+1).crystal)])},d(t(k)(Q(n,Y(n)+1).crystal)),3)]),r(`div`,ye,[c(M,{type:`deuterium`,size:`sm`}),r(`span`,be,d(t(G)(`resources.deuterium`))+`:`,1),r(`span`,{class:m([`font-medium text-xs sm:text-sm`,t(O)(q.value.resources.deuterium,Q(n,Y(n)+1).deuterium)])},d(t(k)(Q(n,Y(n)+1).deuterium)),3)])])]),r(`div`,xe,[r(`div`,Se,[c(t(oe),{size:14,class:`flex-shrink-0`}),r(`span`,null,d(t(E)(Pe(n,Y(n)+1))),1)]),r(`div`,Ce,[c(t(b),{size:14,class:`flex-shrink-0`}),r(`span`,null,d(t(K)[n].spaceUsage),1)])]),c(t(S),{onClick:e=>je(n),disabled:!Ne(n),class:`w-full`},{default:g(()=>[v(d(Me(n)),1)]),_:2},1032,[`onClick`,`disabled`]),Y(n)>0?(o(),f(t(S),{key:0,onClick:e=>Ie(n),disabled:!Le(n),variant:`destructive`,class:`w-full`},{default:g(()=>[v(d(t(G)(`buildingsView.demolish`)),1)]),_:1},8,[`onClick`,`disabled`])):y(``,!0),Y(n)>0?(o(),e(`div`,we,[r(`p`,null,d(t(G)(`buildingsView.demolishRefund`))+`:`,1),r(`div`,Te,[r(`span`,null,d(t(k)($(n).metal))+` `+d(t(G)(`resources.metal`)),1),r(`span`,null,d(t(k)($(n).crystal))+` `+d(t(G)(`resources.crystal`)),1),r(`span`,null,d(t(k)($(n).deuterium))+` `+d(t(G)(`resources.deuterium`)),1)])])):y(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),c(P,{ref_key:`alertDialog`,ref:J},null,512)])):y(``,!0)}});export{W as default}; \ No newline at end of file diff --git a/docs/assets/CardDescription-CRV0m8La.js b/docs/assets/CardDescription-CRV0m8La.js deleted file mode 100644 index 4b85e4e..0000000 --- a/docs/assets/CardDescription-CRV0m8La.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,J as t,Ot as n,Z as r,st as i,ut as a}from"./vendor-ui-DBxeWLyT.js";import{zt as o}from"./index-Cch-Ig40.js";var s=r({__name:`CardDescription`,props:{class:{}},setup(r){let s=r;return(r,c)=>(i(),t(`p`,{"data-slot":`card-description`,class:n(e(o)(`text-muted-foreground text-sm`,s.class))},[a(r.$slots,`default`)],2))}});export{s as t}; \ No newline at end of file diff --git a/docs/assets/CardDescription-CtUtXM5o.js b/docs/assets/CardDescription-CtUtXM5o.js new file mode 100644 index 0000000..af27b34 --- /dev/null +++ b/docs/assets/CardDescription-CtUtXM5o.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Kt as n,Nt as r,Tn as i,Yt as a}from"./game-logic-B_TBzmsj.js";import{N as o}from"./index-BLxCTx9W.js";var s=r({__name:`CardDescription`,props:{class:{}},setup(r){let s=r;return(r,c)=>(n(),e(`p`,{"data-slot":`card-description`,class:i(t(o)(`text-muted-foreground text-sm`,s.class))},[a(r.$slots,`default`)],2))}});export{s as t}; \ No newline at end of file diff --git a/docs/assets/CardUnlockOverlay-BVmeYgHN.js b/docs/assets/CardUnlockOverlay-BVmeYgHN.js new file mode 100644 index 0000000..47340de --- /dev/null +++ b/docs/assets/CardUnlockOverlay-BVmeYgHN.js @@ -0,0 +1,2 @@ +import{At as e,Cn as t,Dt as n,Et as r,Kt as i,Mt as a,N as o,Nt as s,On as c,hn as l,in as u,jt as d,kt as f}from"./game-logic-B_TBzmsj.js";import{D as p}from"./vendor-icons-B6ER66fi.js";import{h as m,u as h}from"./game-config-D-D7cMgJ.js";import{I as g,M as _,P as v}from"./index-BLxCTx9W.js";import{t as y}from"./useGameConfig-chMIsHFg.js";import{t as b}from"./AlertDialog-vN9u2C5f.js";var x={key:0,class:`absolute inset-0 z-10 bg-background/70 backdrop-blur-[2px] rounded-lg flex items-center justify-center`},S={class:`text-center p-4 space-y-2`},C={class:`flex justify-center`},w={class:`rounded-full bg-muted p-2`},T={class:`text-xs font-medium text-muted-foreground`},E=s({__name:`CardUnlockOverlay`,props:{requirements:{},currentLevel:{}},setup(s){let E=s,D=g(),{t:O}=v(),{BUILDINGS:k,TECHNOLOGIES:A}=y(),j=l(null),M=r(()=>E.currentLevel!==void 0&&E.currentLevel>0||!E.requirements||!D.currentPlanet?!0:o(D.currentPlanet,D.player.technologies,E.requirements)),N=()=>{if(!E.requirements||!D.currentPlanet)return``;let e=[];for(let[t,n]of Object.entries(E.requirements))if(Object.values(h).includes(t)){let r=t,i=D.currentPlanet.buildings[r]||0,a=k.value[r]?.name||r,o=i>=n?`✓`:`✗`;e.push(`${o} ${a}: Lv ${n} (${O(`common.current`)}: Lv ${i})`)}else if(Object.values(m).includes(t)){let r=t,i=D.player.technologies[r]||0,a=A.value[r]?.name||r,o=i>=n?`✓`:`✗`;e.push(`${o} ${a}: Lv ${n} (${O(`common.current`)}: Lv ${i})`)}return e.join(` +`)},P=()=>{j.value?.show({title:O(`common.requirementsNotMet`),message:N()})};return(r,o)=>M.value?f(``,!0):(i(),e(`div`,x,[n(`div`,S,[n(`div`,C,[n(`div`,w,[a(t(p),{size:20,class:`text-muted-foreground`})])]),n(`p`,T,c(t(O)(`common.locked`)),1),a(t(_),{variant:`outline`,size:`sm`,onClick:P,class:`text-xs`},{default:u(()=>[d(c(t(O)(`common.viewRequirements`)),1)]),_:1})]),a(b,{ref_key:`requirementsDialog`,ref:j},null,512)]))}});export{E as t}; \ No newline at end of file diff --git a/docs/assets/CardUnlockOverlay-SeY-L1Ut.js b/docs/assets/CardUnlockOverlay-SeY-L1Ut.js deleted file mode 100644 index 211b39b..0000000 --- a/docs/assets/CardUnlockOverlay-SeY-L1Ut.js +++ /dev/null @@ -1,2 +0,0 @@ -import{Dt as e,G as t,J as n,St as r,W as i,X as a,Y as o,Z as s,jt as c,pt as l,q as u,st as d}from"./vendor-ui-DBxeWLyT.js";import{n as f}from"./UnlockRequirement-BdFx1RC0.js";import{Bt as p,Rt as m,Vt as h,ct as g,rt as _,w as v}from"./index-Cch-Ig40.js";import{t as y}from"./useGameConfig-D2EZdt1x.js";import{t as b}from"./AlertDialog-_72FqRCT.js";var x={key:0,class:`absolute inset-0 z-10 bg-background/70 backdrop-blur-[2px] rounded-lg flex items-center justify-center`},S={class:`text-center p-4 space-y-2`},C={class:`flex justify-center`},w={class:`rounded-full bg-muted p-2`},T={class:`text-xs font-medium text-muted-foreground`},E=s({__name:`CardUnlockOverlay`,props:{requirements:{}},setup(s){let E=s,D=h(),{t:O}=p(),{BUILDINGS:k,TECHNOLOGIES:A}=y(),j=r(null),M=i(()=>!E.requirements||!D.currentPlanet?!0:v(D.currentPlanet,D.player.technologies,E.requirements)),N=()=>{if(!E.requirements||!D.currentPlanet)return``;let e=[];for(let[t,n]of Object.entries(E.requirements))if(Object.values(_).includes(t)){let r=t,i=D.currentPlanet.buildings[r]||0,a=k.value[r]?.name||r,o=i>=n?`✓`:`✗`;e.push(`${o} ${a}: Lv ${n} (${O(`common.current`)}: Lv ${i})`)}else if(Object.values(g).includes(t)){let r=t,i=D.player.technologies[r]||0,a=A.value[r]?.name||r,o=i>=n?`✓`:`✗`;e.push(`${o} ${a}: Lv ${n} (${O(`common.current`)}: Lv ${i})`)}return e.join(` -`)},P=()=>{j.value?.show({title:O(`common.requirementsNotMet`),message:N()})};return(r,i)=>M.value?u(``,!0):(d(),n(`div`,x,[t(`div`,S,[t(`div`,C,[t(`div`,w,[a(e(f),{size:20,class:`text-muted-foreground`})])]),t(`p`,T,c(e(O)(`common.locked`)),1),a(e(m),{variant:`outline`,size:`sm`,onClick:P,class:`text-xs`},{default:l(()=>[o(c(e(O)(`common.viewRequirements`)),1)]),_:1})]),a(b,{ref_key:`requirementsDialog`,ref:j},null,512)]))}});export{E as t}; \ No newline at end of file diff --git a/docs/assets/DefenseView-Dgqev78h.js b/docs/assets/DefenseView-Dgqev78h.js deleted file mode 100644 index d9c4bda..0000000 --- a/docs/assets/DefenseView-Dgqev78h.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,G as t,H as n,J as r,K as i,Ot as a,St as o,W as ee,X as s,Y as c,Z as l,jt as u,lt as te,pt as d,q as f,st as p}from"./vendor-ui-DBxeWLyT.js";import"./vendor-vue-Bqq1sBNf.js";import{t as m}from"./UnlockRequirement-BdFx1RC0.js";import{t as ne}from"./CardDescription-CRV0m8La.js";import{Bt as re,G as ie,It as ae,K as oe,Pt as h,Rt as se,V as g,Vt as _,W as v,dt as y,ft as b,it as x,lt as S,rt as C,ut as w,w as T,yt as E}from"./index-Cch-Ig40.js";import{t as D}from"./useGameConfig-D2EZdt1x.js";import{t as O}from"./AlertDialog-_72FqRCT.js";import{t as k}from"./CardUnlockOverlay-SeY-L1Ut.js";import{i as A,t as j}from"./shipValidation-Cx6mhfwF.js";var M={key:0,class:`container mx-auto p-4 sm:p-6`},N={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},P={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},F={class:`flex justify-between items-start gap-2`},I={class:`min-w-0 flex-1`},L={class:`space-y-3 sm:space-y-4`},R={class:`grid grid-cols-2 gap-2 text-xs sm:text-sm`},z={class:`text-muted-foreground`},B={class:`font-medium`},V={class:`text-muted-foreground`},H={class:`font-medium`},U={class:`text-muted-foreground`},W={class:`font-medium`},ce={class:`text-muted-foreground`},G={class:`font-medium`},le={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},ue={class:`text-muted-foreground mb-1 sm:mb-2`},de={class:`space-y-1 sm:space-y-1.5`},fe={class:`flex items-center gap-1.5 sm:gap-2`},pe={class:`text-xs`},me={class:`flex items-center gap-1.5 sm:gap-2`},he={class:`text-xs`},ge={class:`flex items-center gap-1.5 sm:gap-2`},_e={class:`text-xs`},ve={class:`space-y-2`},ye={key:0,class:`text-xs text-muted-foreground`},be={key:0,class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2 p-2.5 sm:p-3 bg-muted rounded-lg`},xe={class:`font-medium text-muted-foreground`},Se={class:`space-y-1 sm:space-y-1.5`},Ce={class:`flex items-center gap-1.5 sm:gap-2`},we={class:`text-xs`},Te={class:`flex items-center gap-1.5 sm:gap-2`},Ee={class:`text-xs`},De={class:`flex items-center gap-1.5 sm:gap-2`},Oe={class:`text-xs`},K=l({__name:`DefenseView`,setup(l){let K=_(),ke=E(),{t:q}=re(),{DEFENSES:J}=D(),Y=ee(()=>K.currentPlanet),X=o(null),Z=o({[x.RocketLauncher]:0,[x.LightLaser]:0,[x.HeavyLaser]:0,[x.GaussCannon]:0,[x.IonCannon]:0,[x.PlasmaTurret]:0,[x.SmallShieldDome]:0,[x.LargeShieldDome]:0}),Q=e=>e===x.SmallShieldDome||e===x.LargeShieldDome,Ae=(e,t)=>{if(!K.currentPlanet||!A(K.currentPlanet,e,t,K.player.technologies).valid)return!1;let n=j(K.currentPlanet,e,t,K.player.officers);return K.currentPlanet.buildQueue.push(n),!0},je=e=>{let t=Z.value[e];if(t<=0){X.value?.show({title:q(`defenseView.inputError`),message:q(`defenseView.inputErrorMessage`)});return}Ae(e,t)?Z.value[e]=0:X.value?.show({title:q(`defenseView.buildFailed`),message:q(`defenseView.buildFailedMessage`)})},Me=e=>{if(!Y.value)return!1;let t=Z.value[e];if(t<=0||Q(e)&&(Y.value.defense[e]>0||t>1))return!1;let n=J.value[e],r={metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t};return T(Y.value,K.player.technologies,n.requirements)&&Y.value.resources.metal>=r.metal&&Y.value.resources.crystal>=r.crystal&&Y.value.resources.deuterium>=r.deuterium},$=e=>{let t=Z.value[e],n=J.value[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t}};return(o,ee)=>Y.value?(p(),r(`div`,M,[s(m,{"required-building":e(C).Shipyard,"required-level":1},null,8,[`required-building`]),t(`h1`,N,u(e(q)(`defenseView.title`)),1),t(`div`,P,[(p(!0),r(n,null,te(Object.values(e(x)),n=>(p(),i(e(b),{key:n,class:`relative`},{default:d(()=>[s(k,{requirements:e(J)[n].requirements},null,8,[`requirements`]),s(e(w),null,{default:d(()=>[t(`div`,F,[t(`div`,I,[s(e(S),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:t=>e(ke).openDefense(n)},{default:d(()=>[c(u(e(J)[n].name),1)]),_:2},1032,[`onClick`]),s(e(ne),{class:`text-xs sm:text-sm`},{default:d(()=>[c(u(e(J)[n].description),1)]),_:2},1024)]),s(e(ae),{variant:`secondary`,class:`text-xs whitespace-nowrap flex-shrink-0`},{default:d(()=>[c(u(Y.value.defense[n]),1)]),_:2},1024)])]),_:2},1024),s(e(y),null,{default:d(()=>[t(`div`,L,[t(`div`,R,[t(`div`,null,[t(`p`,z,u(e(q)(`defenseView.attack`)),1),t(`p`,B,u(e(J)[n].attack),1)]),t(`div`,null,[t(`p`,V,u(e(q)(`defenseView.shield`)),1),t(`p`,H,u(e(J)[n].shield),1)]),t(`div`,null,[t(`p`,U,u(e(q)(`defenseView.armor`)),1),t(`p`,W,u(e(J)[n].armor),1)]),t(`div`,null,[t(`p`,ce,u(e(q)(`defenseView.buildTime`)),1),t(`p`,G,u(e(J)[n].buildTime)+u(e(q)(`defenseView.seconds`)),1)])]),t(`div`,le,[t(`p`,ue,u(e(q)(`defenseView.unitCost`))+`:`,1),t(`div`,de,[t(`div`,fe,[s(h,{type:`metal`,size:`sm`}),t(`span`,pe,u(e(q)(`resources.metal`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(Y.value.resources.metal,e(J)[n].cost.metal)])},u(e(g)(e(J)[n].cost.metal)),3)]),t(`div`,me,[s(h,{type:`crystal`,size:`sm`}),t(`span`,he,u(e(q)(`resources.crystal`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(Y.value.resources.crystal,e(J)[n].cost.crystal)])},u(e(g)(e(J)[n].cost.crystal)),3)]),t(`div`,ge,[s(h,{type:`deuterium`,size:`sm`}),t(`span`,_e,u(e(q)(`resources.deuterium`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(Y.value.resources.deuterium,e(J)[n].cost.deuterium)])},u(e(g)(e(J)[n].cost.deuterium)),3)])])]),t(`div`,ve,[s(e(ie),{for:`quantity-${n}`,class:`text-xs sm:text-sm`},{default:d(()=>[c(u(e(q)(`defenseView.buildQuantity`)),1)]),_:1},8,[`for`]),s(e(oe),{id:`quantity-${n}`,modelValue:Z.value[n],"onUpdate:modelValue":e=>Z.value[n]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:Q(n)&&Y.value.defense[n]>0?0:void 0,disabled:Q(n)&&Y.value.defense[n]>0,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`max`,`disabled`]),Q(n)&&Y.value.defense[n]>0?(p(),r(`p`,ye,u(e(q)(`defenseView.shieldDomeBuilt`)),1)):f(``,!0)]),Z.value[n]>0?(p(),r(`div`,be,[t(`p`,xe,u(e(q)(`defenseView.totalCost`))+`:`,1),t(`div`,Se,[t(`div`,Ce,[s(h,{type:`metal`,size:`sm`}),t(`span`,we,u(e(q)(`resources.metal`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(Y.value.resources.metal,$(n).metal)])},u(e(g)($(n).metal)),3)]),t(`div`,Te,[s(h,{type:`crystal`,size:`sm`}),t(`span`,Ee,u(e(q)(`resources.crystal`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(Y.value.resources.crystal,$(n).crystal)])},u(e(g)($(n).crystal)),3)]),t(`div`,De,[s(h,{type:`deuterium`,size:`sm`}),t(`span`,Oe,u(e(q)(`resources.deuterium`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(Y.value.resources.deuterium,$(n).deuterium)])},u(e(g)($(n).deuterium)),3)])])])):f(``,!0),s(e(se),{onClick:e=>je(n),disabled:!Me(n),class:`w-full`},{default:d(()=>[c(u(e(q)(`defenseView.build`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),s(O,{ref_key:`alertDialog`,ref:X},null,512)])):f(``,!0)}});export{K as default}; \ No newline at end of file diff --git a/docs/assets/DefenseView-qV0qTXQw.js b/docs/assets/DefenseView-qV0qTXQw.js new file mode 100644 index 0000000..bd4a7d5 --- /dev/null +++ b/docs/assets/DefenseView-qV0qTXQw.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Ct as n,Dt as r,Et as ee,Jt as te,Kt as i,Mt as a,N as o,Nt as s,On as c,Ot as ne,Tn as l,hn as u,i as d,in as f,jt as p,kt as m,t as re}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import"./vendor-vue-router-_-a8jZbv.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-DiSZfaku.js";import"./vendor-reka-ui-ICOW9z5F.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import"./vendor-icons-B6ER66fi.js";import{t as ie}from"./CardDescription-CtUtXM5o.js";import{d as h,u as ae}from"./game-config-D-D7cMgJ.js";import{A as oe,I as se,M as ce,O as g,P as _,_ as v,c as y,l as b,o as x,r as S,s as C,t as w,u as T,w as E}from"./index-BLxCTx9W.js";import{t as D}from"./useGameConfig-chMIsHFg.js";import{t as O}from"./AlertDialog-vN9u2C5f.js";import{t as k}from"./CardUnlockOverlay-BVmeYgHN.js";import{t as A}from"./UnlockRequirement-CoN2_Hgq.js";var j={key:0,class:`container mx-auto p-4 sm:p-6`},M={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},N={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},P={class:`flex justify-between items-start gap-2`},F={class:`min-w-0 flex-1`},I={class:`space-y-3 sm:space-y-4`},L={class:`grid grid-cols-2 gap-2 text-xs sm:text-sm`},R={class:`text-muted-foreground`},z={class:`font-medium`},B={class:`text-muted-foreground`},V={class:`font-medium`},H={class:`text-muted-foreground`},U={class:`font-medium`},le={class:`text-muted-foreground`},W={class:`font-medium`},ue={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},de={class:`text-muted-foreground mb-1 sm:mb-2`},fe={class:`space-y-1 sm:space-y-1.5`},pe={class:`flex items-center gap-1.5 sm:gap-2`},me={class:`text-xs`},he={class:`flex items-center gap-1.5 sm:gap-2`},ge={class:`text-xs`},_e={class:`flex items-center gap-1.5 sm:gap-2`},ve={class:`text-xs`},ye={class:`space-y-2`},be={key:0,class:`text-xs text-muted-foreground`},xe={key:0,class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2 p-2.5 sm:p-3 bg-muted rounded-lg`},Se={class:`font-medium text-muted-foreground`},Ce={class:`space-y-1 sm:space-y-1.5`},we={class:`flex items-center gap-1.5 sm:gap-2`},Te={class:`text-xs`},Ee={class:`flex items-center gap-1.5 sm:gap-2`},De={class:`text-xs`},Oe={class:`flex items-center gap-1.5 sm:gap-2`},G={class:`text-xs`},K=s({__name:`DefenseView`,setup(s){let K=se(),ke=v(),{t:q}=_(),{DEFENSES:J}=D(),Y=ee(()=>K.currentPlanet),X=u(null),Z=u({[h.RocketLauncher]:0,[h.LightLaser]:0,[h.HeavyLaser]:0,[h.GaussCannon]:0,[h.IonCannon]:0,[h.PlasmaTurret]:0,[h.SmallShieldDome]:0,[h.LargeShieldDome]:0,[h.PlanetaryShield]:0}),Q=e=>e===h.SmallShieldDome||e===h.LargeShieldDome,Ae=(e,t)=>{if(!K.currentPlanet||!d(K.currentPlanet,e,t,K.player.technologies).valid)return!1;let n=re(K.currentPlanet,e,t,K.player.officers);return K.currentPlanet.buildQueue.push(n),!0},je=e=>{let t=Z.value[e];if(t<=0){X.value?.show({title:q(`defenseView.inputError`),message:q(`defenseView.inputErrorMessage`)});return}Ae(e,t)?Z.value[e]=0:X.value?.show({title:q(`defenseView.buildFailed`),message:q(`defenseView.buildFailedMessage`)})},Me=e=>{if(!Y.value)return!1;let t=Z.value[e];if(t<=0||Q(e)&&(Y.value.defense[e]>0||t>1))return!1;let n=J.value[e],r={metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t};return o(Y.value,K.player.technologies,n.requirements)&&Y.value.resources.metal>=r.metal&&Y.value.resources.crystal>=r.crystal&&Y.value.resources.deuterium>=r.deuterium},$=e=>{let t=Z.value[e],n=J.value[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t}};return(ee,o)=>Y.value?(i(),e(`div`,j,[a(A,{"required-building":t(ae).Shipyard,"required-level":1},null,8,[`required-building`]),r(`h1`,M,c(t(q)(`defenseView.title`)),1),r(`div`,N,[(i(!0),e(n,null,te(Object.values(t(h)),n=>(i(),ne(t(T),{key:n,class:`relative`},{default:f(()=>[a(k,{requirements:t(J)[n].requirements},null,8,[`requirements`]),a(t(y),null,{default:f(()=>[r(`div`,P,[r(`div`,F,[a(t(C),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:e=>t(ke).openDefense(n)},{default:f(()=>[p(c(t(J)[n].name),1)]),_:2},1032,[`onClick`]),a(t(ie),{class:`text-xs sm:text-sm`},{default:f(()=>[p(c(t(J)[n].description),1)]),_:2},1024)]),a(t(oe),{variant:`secondary`,class:`text-xs whitespace-nowrap flex-shrink-0`},{default:f(()=>[p(c(Y.value.defense[n]),1)]),_:2},1024)])]),_:2},1024),a(t(b),null,{default:f(()=>[r(`div`,I,[r(`div`,L,[r(`div`,null,[r(`p`,R,c(t(q)(`defenseView.attack`)),1),r(`p`,z,c(t(J)[n].attack),1)]),r(`div`,null,[r(`p`,B,c(t(q)(`defenseView.shield`)),1),r(`p`,V,c(t(J)[n].shield),1)]),r(`div`,null,[r(`p`,H,c(t(q)(`defenseView.armor`)),1),r(`p`,U,c(t(J)[n].armor),1)]),r(`div`,null,[r(`p`,le,c(t(q)(`defenseView.buildTime`)),1),r(`p`,W,c(t(J)[n].buildTime)+c(t(q)(`defenseView.seconds`)),1)])]),r(`div`,ue,[r(`p`,de,c(t(q)(`defenseView.unitCost`))+`:`,1),r(`div`,fe,[r(`div`,pe,[a(E,{type:`metal`,size:`sm`}),r(`span`,me,c(t(q)(`resources.metal`))+`:`,1),r(`span`,{class:l([`font-medium text-xs sm:text-sm`,t(x)(Y.value.resources.metal,t(J)[n].cost.metal)])},c(t(S)(t(J)[n].cost.metal)),3)]),r(`div`,he,[a(E,{type:`crystal`,size:`sm`}),r(`span`,ge,c(t(q)(`resources.crystal`))+`:`,1),r(`span`,{class:l([`font-medium text-xs sm:text-sm`,t(x)(Y.value.resources.crystal,t(J)[n].cost.crystal)])},c(t(S)(t(J)[n].cost.crystal)),3)]),r(`div`,_e,[a(E,{type:`deuterium`,size:`sm`}),r(`span`,ve,c(t(q)(`resources.deuterium`))+`:`,1),r(`span`,{class:l([`font-medium text-xs sm:text-sm`,t(x)(Y.value.resources.deuterium,t(J)[n].cost.deuterium)])},c(t(S)(t(J)[n].cost.deuterium)),3)])])]),r(`div`,ye,[a(t(w),{for:`quantity-${n}`,class:`text-xs sm:text-sm`},{default:f(()=>[p(c(t(q)(`defenseView.buildQuantity`)),1)]),_:1},8,[`for`]),a(t(g),{id:`quantity-${n}`,modelValue:Z.value[n],"onUpdate:modelValue":e=>Z.value[n]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:Q(n)&&Y.value.defense[n]>0?0:void 0,disabled:Q(n)&&Y.value.defense[n]>0,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`max`,`disabled`]),Q(n)&&Y.value.defense[n]>0?(i(),e(`p`,be,c(t(q)(`defenseView.shieldDomeBuilt`)),1)):m(``,!0)]),Z.value[n]>0?(i(),e(`div`,xe,[r(`p`,Se,c(t(q)(`defenseView.totalCost`))+`:`,1),r(`div`,Ce,[r(`div`,we,[a(E,{type:`metal`,size:`sm`}),r(`span`,Te,c(t(q)(`resources.metal`))+`:`,1),r(`span`,{class:l([`font-medium text-xs sm:text-sm`,t(x)(Y.value.resources.metal,$(n).metal)])},c(t(S)($(n).metal)),3)]),r(`div`,Ee,[a(E,{type:`crystal`,size:`sm`}),r(`span`,De,c(t(q)(`resources.crystal`))+`:`,1),r(`span`,{class:l([`font-medium text-xs sm:text-sm`,t(x)(Y.value.resources.crystal,$(n).crystal)])},c(t(S)($(n).crystal)),3)]),r(`div`,Oe,[a(E,{type:`deuterium`,size:`sm`}),r(`span`,G,c(t(q)(`resources.deuterium`))+`:`,1),r(`span`,{class:l([`font-medium text-xs sm:text-sm`,t(x)(Y.value.resources.deuterium,$(n).deuterium)])},c(t(S)($(n).deuterium)),3)])])])):m(``,!0),a(t(ce),{onClick:e=>je(n),disabled:!Me(n),class:`w-full`},{default:f(()=>[p(c(t(q)(`defenseView.build`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),a(O,{ref_key:`alertDialog`,ref:X},null,512)])):m(``,!0)}});export{K as default}; \ No newline at end of file diff --git a/docs/assets/FleetView-Br_OwWg4.js b/docs/assets/FleetView-Br_OwWg4.js new file mode 100644 index 0000000..d37fe40 --- /dev/null +++ b/docs/assets/FleetView-Br_OwWg4.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Ct as n,Dt as r,Et as i,F as a,Gt as o,Jt as s,Kt as c,Mt as l,Nt as ee,On as u,Ot as d,S as te,Tn as f,Wt as ne,Xt as re,a as ie,d as p,f as m,hn as h,in as g,jt as _,kt as v,m as ae,n as oe,p as y,rt as b,u as se}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import{a as ce,o as le}from"./vendor-vue-router-_-a8jZbv.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-DiSZfaku.js";import"./vendor-reka-ui-ICOW9z5F.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import{I as ue,S as de,_ as fe,c as pe,d as me,r as he,v as ge}from"./vendor-icons-B6ER66fi.js";import{t as x}from"./CardDescription-CtUtXM5o.js";import{f as S,m as C,u as _e}from"./game-config-D-D7cMgJ.js";import{A as w,F as ve,I as ye,M as T,O as E,P as be,c as D,i as O,k as xe,l as k,r as A,s as j,t as M,u as N,w as P}from"./index-BLxCTx9W.js";import{t as Se}from"./useGameConfig-chMIsHFg.js";import{t as Ce}from"./AlertDialog-vN9u2C5f.js";import{t as we}from"./UnlockRequirement-CoN2_Hgq.js";var Te={key:0,class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},Ee={class:`text-2xl sm:text-3xl font-bold`},De={class:`flex gap-2 border-b`},Oe={key:0},ke={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},Ae={class:`flex justify-between items-start`},je={class:`font-semibold text-sm sm:text-base`},Me={class:`text-xl sm:text-2xl font-bold`},Ne={class:`text-xs sm:text-sm text-muted-foreground space-y-1`},Pe={key:1,class:`space-y-4`},Fe={class:`flex justify-between items-center`},Ie={class:`text-sm font-medium`},Le={class:`text-sm font-bold`},Re={class:`grid grid-cols-1 sm:grid-cols-2 gap-3 sm:gap-4`},ze={class:`flex gap-2`},Be={class:`grid grid-cols-3 gap-2 sm:gap-4`},Ve={class:`space-y-2`},He={class:`space-y-2`},Ue={class:`space-y-2`},We={class:`grid grid-cols-2 sm:grid-cols-3 gap-2`},Ge={class:`grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4`},Ke={class:`space-y-2`},qe={class:`space-y-2`},Je={class:`space-y-2`},Ye={class:`text-xs sm:text-sm text-muted-foreground mt-2`},Xe={class:`flex justify-between text-xs sm:text-sm`},Ze={class:`text-muted-foreground`},Qe={class:`flex items-center gap-1.5`},F={class:`text-muted-foreground`},$e={key:0,class:`flex justify-between text-xs sm:text-sm`},et={class:`text-muted-foreground`},tt={key:2,class:`space-y-4`},nt={class:`flex justify-between items-start`},rt={class:`text-xs sm:text-sm font-medium mb-2`},it={class:`flex flex-wrap gap-2`},at={key:0},ot={class:`text-xs sm:text-sm font-medium mb-2`},st={class:`flex flex-wrap gap-2 text-xs`},ct={key:0,class:`flex items-center gap-1`},lt={key:1,class:`flex items-center gap-1`},ut={key:2,class:`flex items-center gap-1`},dt={key:3,class:`flex items-center gap-1`},ft={class:`space-y-2`},pt={class:`flex justify-between text-xs sm:text-sm`},mt={class:`flex gap-2`},I=ee({__name:`FleetView`,setup(ee){let I=ce(),ht=le(),L=ye(),gt=ve(),{t:R}=be(),{SHIPS:z}=Se(),B=i(()=>L.currentPlanet),V=h(null),H=h(Date.now()),U=null,_t=i(()=>a(b(L.player.officers,Date.now()).additionalFleetSlots)),W=h(`fleet`),G=h({[C.LightFighter]:0,[C.HeavyFighter]:0,[C.Cruiser]:0,[C.Battleship]:0,[C.SmallCargo]:0,[C.LargeCargo]:0,[C.ColonyShip]:0,[C.Recycler]:0,[C.EspionageProbe]:0,[C.DarkMatterHarvester]:0,[C.Deathstar]:0}),K=h({galaxy:1,system:1,position:1}),q=h(S.Attack),J=h({metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0});ne(()=>{U=window.setInterval(()=>{H.value=Date.now()},1e3);let{galaxy:e,system:t,position:n,mission:r}=I.query;(e||t||n)&&(e&&(K.value.galaxy=Number(e)),t&&(K.value.system=Number(t)),n&&(K.value.position=Number(n)),r===`spy`?q.value=S.Spy:r===`attack`?q.value=S.Attack:r===`colonize`&&(q.value=S.Colonize),W.value=`send`,ht.replace({path:`/fleet`}))}),o(()=>{U&&clearInterval(U)});let Y=i(()=>[{type:S.Attack,name:R(`fleetView.attackMission`),icon:pe},{type:S.Transport,name:R(`fleetView.transport`),icon:de},{type:S.Colonize,name:R(`fleetView.colonize`),icon:fe},{type:S.Spy,name:R(`fleetView.spy`),icon:ue},{type:S.Deploy,name:R(`fleetView.deploy`),icon:he},{type:S.Recycle,name:R(`fleetView.recycle`),icon:ge},{type:S.Destroy,name:R(`fleetView.destroy`),icon:me}]),vt=e=>Y.value.find(t=>t.type===e)?.name||e,yt=e=>L.player.planets.find(t=>t.id===e)?.name||R(`fleetView.unknownPlanet`),X=()=>{let e=0;for(let[t,n]of Object.entries(G.value))if(n>0){let r=z.value[t];e+=r.cargoCapacity*n}return e},Z=()=>J.value.metal+J.value.crystal+J.value.deuterium+J.value.darkMatter,Q=()=>{let e=b(L.player.officers,Date.now());return se(G.value,e.fuelConsumptionReduction,J.value)},bt=()=>{if(!B.value)return 0;let e=m(B.value.position,K.value),t=b(L.player.officers,Date.now());return y(e,p(G.value,t.fleetSpeedBonus))},$=()=>{if(!Object.values(G.value).some(e=>e>0))return{valid:!1,errorKey:`fleetView.noShipsSelected`};if(B.value&&K.value.galaxy===B.value.position.galaxy&&K.value.system===B.value.position.system&&K.value.position===B.value.position.position)return{valid:!1,errorKey:`fleetView.cannotSendToOwnPlanet`};if(q.value===S.Transport&&Z()>X())return{valid:!1,errorKey:`fleetView.cargoExceedsCapacity`};if(q.value===S.Colonize&&(!G.value[C.ColonyShip]||(G.value[C.ColonyShip]??0)<1))return{valid:!1,errorKey:`fleetView.noColonyShip`};if(q.value===S.Recycle){let e=`debris_${K.value.galaxy}_${K.value.system}_${K.value.position}`,t=gt.debrisFields[e];if(!t||t.resources.metal===0&&t.resources.crystal===0)return{valid:!1,errorKey:`fleetView.noDebrisAtTarget`}}return q.value===S.Destroy&&(!G.value[C.Deathstar]||(G.value[C.Deathstar]??0)<1)?{valid:!1,errorKey:`fleetView.noDeathstar`}:{valid:!0}},xt=(e,t,n,r={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0})=>{if(!L.currentPlanet)return!1;let i=L.player.fleetMissions.length,a=ie(L.currentPlanet,n,r,L.player.officers,i);if(!a.valid)return!1;let o=t===S.Transport;oe(L.currentPlanet,n,a.fuelNeeded,o,r);let s=y(m(L.currentPlanet.position,e),p(n,b(L.player.officers,Date.now()).fleetSpeedBonus)),c=ae(L.player.id,L.currentPlanet.id,e,t,n,r,s);return L.player.fleetMissions.push(c),!0},St=()=>{if(!B.value)return;let e=$();if(!e.valid){V.value?.show({title:R(`fleetView.sendFailed`),message:e.errorKey?R(e.errorKey):R(`fleetView.sendFailedMessage`)});return}let t={};for(let[e,n]of Object.entries(G.value))n>0&&(t[e]=n);xt(K.value,q.value,t,q.value===S.Transport?J.value:void 0)?(Object.keys(G.value).forEach(e=>{G.value[e]=0}),J.value={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},W.value=`missions`):V.value?.show({title:R(`fleetView.sendFailed`),message:R(`fleetView.sendFailedMessage`)})},Ct=e=>{let t=L.player.fleetMissions.find(t=>t.id===e);return t?te(t,Date.now()):!1},wt=e=>{Ct(e)||V.value?.show({title:R(`fleetView.recallFailed`),message:R(`fleetView.recallFailedMessage`)})},Tt=e=>{let t=H.value,n=e.status===`outbound`?e.arrivalTime:e.returnTime;return Math.max(0,(n-t)/1e3)},Et=e=>{let t=H.value;if(e.status===`outbound`){let n=e.arrivalTime-e.departureTime,r=t-e.departureTime;return Math.max(0,Math.min(100,r/n*100))}else{let n=e.arrivalTime,r=e.returnTime-n,i=t-n;return Math.max(0,Math.min(100,i/r*100))}};return(i,a)=>B.value?(c(),e(`div`,Te,[l(we,{"required-building":t(_e).Shipyard,"required-level":1},null,8,[`required-building`]),r(`h1`,Ee,u(t(R)(`fleetView.title`)),1),r(`div`,De,[l(t(T),{onClick:a[0]||=e=>W.value=`fleet`,variant:W.value===`fleet`?`default`:`ghost`,class:`rounded-b-none`},{default:g(()=>[_(u(t(R)(`fleetView.fleetOverview`)),1)]),_:1},8,[`variant`]),l(t(T),{onClick:a[1]||=e=>W.value=`send`,variant:W.value===`send`?`default`:`ghost`,class:`rounded-b-none`},{default:g(()=>[_(u(t(R)(`fleetView.sendFleet`)),1)]),_:1},8,[`variant`]),l(t(T),{onClick:a[2]||=e=>W.value=`missions`,variant:W.value===`missions`?`default`:`ghost`,class:`rounded-b-none`},{default:g(()=>[_(u(t(R)(`fleetView.flightMissions`))+` `,1),t(L).player.fleetMissions.length>0?(c(),d(t(w),{key:0,variant:`secondary`,class:`ml-1`},{default:g(()=>[_(u(t(L).player.fleetMissions.length),1)]),_:1})):v(``,!0)]),_:1},8,[`variant`])]),W.value===`fleet`?(c(),e(`div`,Oe,[l(t(N),null,{default:g(()=>[l(t(D),null,{default:g(()=>[l(t(j),null,{default:g(()=>[_(u(t(R)(`fleetView.currentPlanetFleet`)),1)]),_:1}),l(t(x),null,{default:g(()=>[_(u(B.value.name)+` [`+u(B.value.position.galaxy)+`:`+u(B.value.position.system)+`:`+u(B.value.position.position)+`] `,1)]),_:1})]),_:1}),l(t(k),null,{default:g(()=>[r(`div`,ke,[(c(!0),e(n,null,s(B.value.fleet,(n,i)=>(c(),e(`div`,{key:i,class:`p-3 sm:p-4 border rounded-lg space-y-2`},[r(`div`,Ae,[r(`div`,null,[r(`h3`,je,u(t(z)[i].name),1),r(`p`,Me,u(t(A)(n)),1)])]),r(`div`,Ne,[r(`p`,null,u(t(R)(`fleetView.attack`))+`: `+u(t(z)[i].attack),1),r(`p`,null,u(t(R)(`fleetView.shield`))+`: `+u(t(z)[i].shield),1),r(`p`,null,u(t(R)(`fleetView.armor`))+`: `+u(t(z)[i].armor),1),r(`p`,null,u(t(R)(`fleetView.speed`))+`: `+u(t(A)(t(z)[i].speed)),1),r(`p`,null,u(t(R)(`fleetView.cargo`))+`: `+u(t(A)(t(z)[i].cargoCapacity)),1)])]))),128))])]),_:1})]),_:1})])):v(``,!0),W.value===`send`?(c(),e(`div`,Pe,[l(t(N),null,{default:g(()=>[l(t(k),{class:`py-4`},{default:g(()=>[r(`div`,Fe,[r(`span`,Ie,u(t(R)(`fleetView.fleetMissionSlots`))+`:`,1),r(`span`,Le,u(t(L).player.fleetMissions.length)+` / `+u(_t.value),1)])]),_:1})]),_:1}),l(t(N),null,{default:g(()=>[l(t(D),null,{default:g(()=>[l(t(j),null,{default:g(()=>[_(u(t(R)(`fleetView.selectFleet`)),1)]),_:1}),l(t(x),null,{default:g(()=>[_(u(t(R)(`fleetView.selectFleetDescription`)),1)]),_:1})]),_:1}),l(t(k),null,{default:g(()=>[r(`div`,Re,[(c(!0),e(n,null,s(B.value.fleet,(n,i)=>(c(),e(`div`,{key:i,class:`space-y-2`},[l(t(M),{for:`ship-${i}`,class:`text-xs sm:text-sm`},{default:g(()=>[_(u(t(z)[i].name)+` (`+u(t(R)(`fleetView.available`))+`: `+u(n)+`) `,1)]),_:2},1032,[`for`]),r(`div`,ze,[l(t(E),{id:`ship-${i}`,modelValue:G.value[i],"onUpdate:modelValue":e=>G.value[i]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:n,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`max`]),l(t(T),{onClick:e=>G.value[i]=n,variant:`outline`,size:`sm`},{default:g(()=>[_(u(t(R)(`fleetView.all`)),1)]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1}),l(t(N),null,{default:g(()=>[l(t(D),null,{default:g(()=>[l(t(j),null,{default:g(()=>[_(u(t(R)(`fleetView.targetCoordinates`)),1)]),_:1})]),_:1}),l(t(k),null,{default:g(()=>[r(`div`,Be,[r(`div`,Ve,[l(t(M),{for:`galaxy`,class:`text-xs sm:text-sm`},{default:g(()=>[_(u(t(R)(`fleetView.galaxy`)),1)]),_:1}),l(t(E),{id:`galaxy`,modelValue:K.value.galaxy,"onUpdate:modelValue":a[3]||=e=>K.value.galaxy=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:`9`,placeholder:`1`},null,8,[`modelValue`])]),r(`div`,He,[l(t(M),{for:`system`,class:`text-xs sm:text-sm`},{default:g(()=>[_(u(t(R)(`fleetView.system`)),1)]),_:1}),l(t(E),{id:`system`,modelValue:K.value.system,"onUpdate:modelValue":a[4]||=e=>K.value.system=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:`10`,placeholder:`1`},null,8,[`modelValue`])]),r(`div`,Ue,[l(t(M),{for:`position`,class:`text-xs sm:text-sm`},{default:g(()=>[_(u(t(R)(`fleetView.position`)),1)]),_:1}),l(t(E),{id:`position`,modelValue:K.value.position,"onUpdate:modelValue":a[5]||=e=>K.value.position=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:`10`,placeholder:`1`},null,8,[`modelValue`])])])]),_:1})]),_:1}),l(t(N),null,{default:g(()=>[l(t(D),null,{default:g(()=>[l(t(j),null,{default:g(()=>[_(u(t(R)(`fleetView.missionType`)),1)]),_:1})]),_:1}),l(t(k),null,{default:g(()=>[r(`div`,We,[(c(!0),e(n,null,s(Y.value,e=>(c(),d(t(T),{key:e.type,onClick:t=>q.value=e.type,variant:q.value===e.type?`default`:`outline`,class:`justify-start`},{default:g(()=>[(c(),d(re(e.icon),{class:`h-4 w-4 mr-2`})),_(` `+u(e.name),1)]),_:2},1032,[`onClick`,`variant`]))),128))])]),_:1})]),_:1}),q.value===t(S).Transport?(c(),d(t(N),{key:0},{default:g(()=>[l(t(D),null,{default:g(()=>[l(t(j),null,{default:g(()=>[_(u(t(R)(`fleetView.transportResources`)),1)]),_:1})]),_:1}),l(t(k),null,{default:g(()=>[r(`div`,Ge,[r(`div`,Ke,[l(t(M),{for:`cargo-metal`,class:`text-xs sm:text-sm flex items-center gap-2`},{default:g(()=>[l(P,{type:`metal`,size:`sm`}),_(` `+u(t(R)(`resources.metal`))+` (`+u(t(R)(`fleetView.available`))+`: `+u(t(A)(B.value.resources.metal))+`) `,1)]),_:1}),l(t(E),{id:`cargo-metal`,modelValue:J.value.metal,"onUpdate:modelValue":a[6]||=e=>J.value.metal=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:B.value.resources.metal,placeholder:`0`},null,8,[`modelValue`,`max`])]),r(`div`,qe,[l(t(M),{for:`cargo-crystal`,class:`text-xs sm:text-sm flex items-center gap-2`},{default:g(()=>[l(P,{type:`crystal`,size:`sm`}),_(` `+u(t(R)(`resources.crystal`))+` (`+u(t(R)(`fleetView.available`))+`: `+u(t(A)(B.value.resources.crystal))+`) `,1)]),_:1}),l(t(E),{id:`cargo-crystal`,modelValue:J.value.crystal,"onUpdate:modelValue":a[7]||=e=>J.value.crystal=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:B.value.resources.crystal,placeholder:`0`},null,8,[`modelValue`,`max`])]),r(`div`,Je,[l(t(M),{for:`cargo-deuterium`,class:`text-xs sm:text-sm flex items-center gap-2`},{default:g(()=>[l(P,{type:`deuterium`,size:`sm`}),_(` `+u(t(R)(`resources.deuterium`))+` (`+u(t(R)(`fleetView.available`))+`: `+u(t(A)(B.value.resources.deuterium))+`) `,1)]),_:1}),l(t(E),{id:`cargo-deuterium`,modelValue:J.value.deuterium,"onUpdate:modelValue":a[8]||=e=>J.value.deuterium=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:B.value.resources.deuterium,placeholder:`0`},null,8,[`modelValue`,`max`])])]),r(`p`,Ye,u(t(R)(`fleetView.totalCargoCapacity`))+`: `+u(t(A)(X()))+` | `+u(t(R)(`fleetView.used`))+`: `+u(t(A)(Z())),1)]),_:1})]),_:1})):v(``,!0),l(t(N),null,{default:g(()=>[l(t(D),null,{default:g(()=>[l(t(j),null,{default:g(()=>[_(u(t(R)(`fleetView.missionInfo`)),1)]),_:1})]),_:1}),l(t(k),{class:`space-y-2`},{default:g(()=>[r(`div`,Xe,[r(`span`,Ze,u(t(R)(`fleetView.fuelConsumption`))+`:`,1),r(`span`,Qe,[l(P,{type:`deuterium`,size:`sm`}),r(`span`,{class:f(Q()>B.value.resources.deuterium?`text-red-600 dark:text-red-400 font-medium`:``)},u(t(A)(Q())),3),r(`span`,F,`/ `+u(t(A)(B.value.resources.deuterium)),1)])]),Object.values(G.value).some(e=>e>0)?(c(),e(`div`,$e,[r(`span`,et,u(t(R)(`fleetView.flightTime`))+`:`,1),r(`span`,null,u(t(O)(bt())),1)])):v(``,!0)]),_:1})]),_:1}),l(t(T),{onClick:St,disabled:!$(),class:`w-full`,size:`lg`},{default:g(()=>[_(u(t(R)(`fleetView.sendFleet`)),1)]),_:1},8,[`disabled`])])):v(``,!0),W.value===`missions`?(c(),e(`div`,tt,[t(L).player.fleetMissions.length===0?(c(),d(t(N),{key:0},{default:g(()=>[l(t(k),{class:`py-8 text-center text-muted-foreground`},{default:g(()=>[_(u(t(R)(`fleetView.noFlightMissions`)),1)]),_:1})]),_:1})):v(``,!0),(c(!0),e(n,null,s(t(L).player.fleetMissions,i=>(c(),d(t(N),{key:i.id},{default:g(()=>[l(t(D),null,{default:g(()=>[r(`div`,nt,[r(`div`,null,[l(t(j),{class:`text-base sm:text-lg`},{default:g(()=>[_(u(vt(i.missionType)),1)]),_:2},1024),l(t(x),{class:`text-xs sm:text-sm`},{default:g(()=>[_(u(yt(i.originPlanetId))+` → [`+u(i.targetPosition.galaxy)+`:`+u(i.targetPosition.system)+`:`+u(i.targetPosition.position)+`] `,1)]),_:2},1024)]),l(t(w),{variant:i.status===`outbound`?`default`:`secondary`},{default:g(()=>[_(u(i.status===`outbound`?t(R)(`fleetView.outbound`):t(R)(`fleetView.returning`)),1)]),_:2},1032,[`variant`])])]),_:2},1024),l(t(k),{class:`space-y-3`},{default:g(()=>[r(`div`,null,[r(`p`,rt,u(t(R)(`fleetView.fleetComposition`))+`:`,1),r(`div`,it,[(c(!0),e(n,null,s(i.fleet,(e,n)=>(c(),d(t(w),{key:n,variant:`outline`},{default:g(()=>[_(u(t(z)[n].name)+`: `+u(e),1)]),_:2},1024))),128))])]),i.cargo.metal>0||i.cargo.crystal>0||i.cargo.deuterium>0||i.cargo.darkMatter>0?(c(),e(`div`,at,[r(`p`,ot,u(t(R)(`fleetView.carryingResources`))+`:`,1),r(`div`,st,[i.cargo.metal>0?(c(),e(`span`,ct,[l(P,{type:`metal`,size:`sm`}),_(` `+u(t(A)(i.cargo.metal)),1)])):v(``,!0),i.cargo.crystal>0?(c(),e(`span`,lt,[l(P,{type:`crystal`,size:`sm`}),_(` `+u(t(A)(i.cargo.crystal)),1)])):v(``,!0),i.cargo.deuterium>0?(c(),e(`span`,ut,[l(P,{type:`deuterium`,size:`sm`}),_(` `+u(t(A)(i.cargo.deuterium)),1)])):v(``,!0),i.cargo.darkMatter>0?(c(),e(`span`,dt,[l(P,{type:`darkMatter`,size:`sm`}),_(` `+u(t(A)(i.cargo.darkMatter)),1)])):v(``,!0)])])):v(``,!0),r(`div`,ft,[r(`div`,pt,[r(`span`,null,u(i.status===`outbound`?t(R)(`fleetView.arrivalTime`):t(R)(`fleetView.returnTime`))+`:`,1),r(`span`,null,u(t(O)(Tt(i))),1)]),l(t(xe),{"model-value":Et(i)},null,8,[`model-value`])]),r(`div`,mt,[i.status===`outbound`?(c(),d(t(T),{key:0,onClick:e=>wt(i.id),variant:`outline`,size:`sm`,class:`w-full`},{default:g(()=>[_(u(t(R)(`fleetView.recallFleet`)),1)]),_:1},8,[`onClick`])):v(``,!0)])]),_:2},1024)]),_:2},1024))),128))])):v(``,!0),l(Ce,{ref_key:`alertDialog`,ref:V},null,512)])):v(``,!0)}});export{I as default}; \ No newline at end of file diff --git a/docs/assets/FleetView-BtTh_NDj.js b/docs/assets/FleetView-BtTh_NDj.js deleted file mode 100644 index 1e713c6..0000000 --- a/docs/assets/FleetView-BtTh_NDj.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,G as t,H as n,J as r,K as i,Ot as a,St as o,W as s,X as c,Y as l,Z as ee,at as te,dt as ne,jt as u,lt as d,pt as f,q as p,st as m}from"./vendor-ui-DBxeWLyT.js";import{o as re,s as ie}from"./vendor-vue-Bqq1sBNf.js";import{t as ae}from"./eye-B5ACPUPU.js";import{t as h}from"./UnlockRequirement-BdFx1RC0.js";import{t as g}from"./CardDescription-CRV0m8La.js";import{Bt as oe,Dt as se,F as _,Ft as ce,G as v,H as y,It as b,K as x,Ot as le,Pt as S,Rt as C,T as ue,Tt as de,V as w,Vt as fe,_ as pe,at as T,dt as E,ft as D,g as me,h as O,i as k,lt as A,m as j,r as he,rt as ge,st as M,ut as N,wt as P}from"./index-Cch-Ig40.js";import{t as F}from"./useGameConfig-D2EZdt1x.js";import{t as I}from"./AlertDialog-_72FqRCT.js";import{a as L,n as _e}from"./shipValidation-Cx6mhfwF.js";var ve={key:0,class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},ye={class:`text-2xl sm:text-3xl font-bold`},be={class:`flex gap-2 border-b`},xe={key:0},Se={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},Ce={class:`flex justify-between items-start`},we={class:`font-semibold text-sm sm:text-base`},Te={class:`text-xl sm:text-2xl font-bold`},Ee={class:`text-xs sm:text-sm text-muted-foreground space-y-1`},De={key:1,class:`space-y-4`},Oe={class:`flex justify-between items-center`},ke={class:`text-sm font-medium`},Ae={class:`text-sm font-bold`},je={class:`grid grid-cols-1 sm:grid-cols-2 gap-3 sm:gap-4`},Me={class:`flex gap-2`},Ne={class:`grid grid-cols-3 gap-2 sm:gap-4`},Pe={class:`space-y-2`},Fe={class:`space-y-2`},Ie={class:`space-y-2`},Le={class:`grid grid-cols-2 sm:grid-cols-3 gap-2`},Re={class:`grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4`},ze={class:`space-y-2`},Be={class:`space-y-2`},Ve={class:`space-y-2`},He={class:`text-xs sm:text-sm text-muted-foreground mt-2`},Ue={class:`flex justify-between text-xs sm:text-sm`},We={class:`text-muted-foreground`},Ge={class:`flex items-center gap-1.5`},Ke={class:`text-muted-foreground`},qe={key:0,class:`flex justify-between text-xs sm:text-sm`},Je={class:`text-muted-foreground`},Ye={key:2,class:`space-y-4`},Xe={class:`flex justify-between items-start`},Ze={class:`text-xs sm:text-sm font-medium mb-2`},Qe={class:`flex flex-wrap gap-2`},$e={key:0},et={class:`text-xs sm:text-sm font-medium mb-2`},tt={class:`flex flex-wrap gap-2 text-xs`},nt={key:0,class:`flex items-center gap-1`},rt={key:1,class:`flex items-center gap-1`},it={key:2,class:`flex items-center gap-1`},at={key:3,class:`flex items-center gap-1`},ot={class:`space-y-2`},st={class:`flex justify-between text-xs sm:text-sm`},ct={class:`flex gap-2`},R=ee({__name:`FleetView`,setup(ee){let R=re(),lt=ie(),z=fe(),{t:B}=oe(),{SHIPS:V}=F(),H=s(()=>z.currentPlanet),U=o(null),ut=s(()=>ue(_(z.player.officers,Date.now()).additionalFleetSlots)),W=o(`fleet`),G=o({[M.LightFighter]:0,[M.HeavyFighter]:0,[M.Cruiser]:0,[M.Battleship]:0,[M.SmallCargo]:0,[M.LargeCargo]:0,[M.ColonyShip]:0,[M.Recycler]:0,[M.EspionageProbe]:0}),K=o({galaxy:1,system:1,position:1}),q=o(T.Attack),J=o({metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0});te(()=>{let{galaxy:e,system:t,position:n,mission:r}=R.query;(e||t||n)&&(e&&(K.value.galaxy=Number(e)),t&&(K.value.system=Number(t)),n&&(K.value.position=Number(n)),r===`spy`?q.value=T.Spy:r===`attack`?q.value=T.Attack:r===`colonize`&&(q.value=T.Colonize),W.value=`send`,lt.replace({path:`/fleet`}))});let Y=s(()=>[{type:T.Attack,name:B(`fleetView.attackMission`),icon:de},{type:T.Transport,name:B(`fleetView.transport`),icon:le},{type:T.Colonize,name:B(`fleetView.colonize`),icon:se},{type:T.Spy,name:B(`fleetView.spy`),icon:ae},{type:T.Deploy,name:B(`fleetView.deploy`),icon:P}]),dt=e=>Y.value.find(t=>t.type===e)?.name||e,ft=e=>z.player.planets.find(t=>t.id===e)?.name||B(`fleetView.unknownPlanet`),X=()=>{let e=0;for(let[t,n]of Object.entries(G.value))if(n>0){let r=V.value[t];e+=r.cargoCapacity*n}return e},Z=()=>J.value.metal+J.value.crystal+J.value.deuterium+J.value.darkMatter,Q=()=>{let e=_(z.player.officers,Date.now());return he(G.value,e.fuelConsumptionReduction,J.value)},pt=()=>{if(!H.value)return 0;let e=j(H.value.position,K.value),t=_(z.player.officers,Date.now());return O(e,k(G.value,t.fleetSpeedBonus))},mt=()=>!(!Object.values(G.value).some(e=>e>0)||q.value===T.Transport&&Z()>X()||q.value===T.Colonize&&(!G.value[M.ColonyShip]||(G.value[M.ColonyShip]??0)<1)),ht=(e,t,n,r={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0})=>{if(!z.currentPlanet)return!1;let i=z.player.fleetMissions.length,a=L(z.currentPlanet,n,r,z.player.officers,i);if(!a.valid)return!1;let o=t===T.Transport;_e(z.currentPlanet,n,a.fuelNeeded,o,r);let s=O(j(z.currentPlanet.position,e),k(n,_(z.player.officers,Date.now()).fleetSpeedBonus)),c=me(z.player.id,z.currentPlanet.id,e,t,n,r,s);return z.player.fleetMissions.push(c),!0},gt=()=>{if(!H.value)return;let e={};for(let[t,n]of Object.entries(G.value))n>0&&(e[t]=n);ht(K.value,q.value,e,q.value===T.Transport?J.value:void 0)?(Object.keys(G.value).forEach(e=>{G.value[e]=0}),J.value={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},W.value=`missions`):U.value?.show({title:B(`fleetView.sendFailed`),message:B(`fleetView.sendFailedMessage`)})},_t=e=>{let t=z.player.fleetMissions.find(t=>t.id===e);return t?pe(t,Date.now()):!1},vt=e=>{_t(e)||U.value?.show({title:B(`fleetView.recallFailed`),message:B(`fleetView.recallFailedMessage`)})},$=e=>{let t=Date.now(),n=e.status===`outbound`?e.arrivalTime:e.returnTime;return Math.max(0,(n-t)/1e3)},yt=e=>{let t=Date.now();if(e.status===`outbound`){let n=e.arrivalTime-e.departureTime,r=t-e.departureTime;return Math.min(100,r/n*100)}else{let n=e.arrivalTime,r=e.returnTime-n,i=t-n;return Math.min(100,i/r*100)}};return(o,s)=>H.value?(m(),r(`div`,ve,[c(h,{"required-building":e(ge).Shipyard,"required-level":1},null,8,[`required-building`]),t(`h1`,ye,u(e(B)(`fleetView.title`)),1),t(`div`,be,[c(e(C),{onClick:s[0]||=e=>W.value=`fleet`,variant:W.value===`fleet`?`default`:`ghost`,class:`rounded-b-none`},{default:f(()=>[l(u(e(B)(`fleetView.fleetOverview`)),1)]),_:1},8,[`variant`]),c(e(C),{onClick:s[1]||=e=>W.value=`send`,variant:W.value===`send`?`default`:`ghost`,class:`rounded-b-none`},{default:f(()=>[l(u(e(B)(`fleetView.sendFleet`)),1)]),_:1},8,[`variant`]),c(e(C),{onClick:s[2]||=e=>W.value=`missions`,variant:W.value===`missions`?`default`:`ghost`,class:`rounded-b-none`},{default:f(()=>[l(u(e(B)(`fleetView.flightMissions`))+` `,1),e(z).player.fleetMissions.length>0?(m(),i(e(b),{key:0,variant:`secondary`,class:`ml-1`},{default:f(()=>[l(u(e(z).player.fleetMissions.length),1)]),_:1})):p(``,!0)]),_:1},8,[`variant`])]),W.value===`fleet`?(m(),r(`div`,xe,[c(e(D),null,{default:f(()=>[c(e(N),null,{default:f(()=>[c(e(A),null,{default:f(()=>[l(u(e(B)(`fleetView.currentPlanetFleet`)),1)]),_:1}),c(e(g),null,{default:f(()=>[l(u(H.value.name)+` [`+u(H.value.position.galaxy)+`:`+u(H.value.position.system)+`:`+u(H.value.position.position)+`] `,1)]),_:1})]),_:1}),c(e(E),null,{default:f(()=>[t(`div`,Se,[(m(!0),r(n,null,d(H.value.fleet,(n,i)=>(m(),r(`div`,{key:i,class:`p-3 sm:p-4 border rounded-lg space-y-2`},[t(`div`,Ce,[t(`div`,null,[t(`h3`,we,u(e(V)[i].name),1),t(`p`,Te,u(e(w)(n)),1)])]),t(`div`,Ee,[t(`p`,null,u(e(B)(`fleetView.attack`))+`: `+u(e(V)[i].attack),1),t(`p`,null,u(e(B)(`fleetView.shield`))+`: `+u(e(V)[i].shield),1),t(`p`,null,u(e(B)(`fleetView.armor`))+`: `+u(e(V)[i].armor),1),t(`p`,null,u(e(B)(`fleetView.speed`))+`: `+u(e(w)(e(V)[i].speed)),1),t(`p`,null,u(e(B)(`fleetView.cargo`))+`: `+u(e(w)(e(V)[i].cargoCapacity)),1)])]))),128))])]),_:1})]),_:1})])):p(``,!0),W.value===`send`?(m(),r(`div`,De,[c(e(D),null,{default:f(()=>[c(e(E),{class:`py-4`},{default:f(()=>[t(`div`,Oe,[t(`span`,ke,u(e(B)(`fleetView.fleetMissionSlots`))+`:`,1),t(`span`,Ae,u(e(z).player.fleetMissions.length)+` / `+u(ut.value),1)])]),_:1})]),_:1}),c(e(D),null,{default:f(()=>[c(e(N),null,{default:f(()=>[c(e(A),null,{default:f(()=>[l(u(e(B)(`fleetView.selectFleet`)),1)]),_:1}),c(e(g),null,{default:f(()=>[l(u(e(B)(`fleetView.selectFleetDescription`)),1)]),_:1})]),_:1}),c(e(E),null,{default:f(()=>[t(`div`,je,[(m(!0),r(n,null,d(H.value.fleet,(n,i)=>(m(),r(`div`,{key:i,class:`space-y-2`},[c(e(v),{for:`ship-${i}`,class:`text-xs sm:text-sm`},{default:f(()=>[l(u(e(V)[i].name)+` (`+u(e(B)(`fleetView.available`))+`: `+u(n)+`) `,1)]),_:2},1032,[`for`]),t(`div`,Me,[c(e(x),{id:`ship-${i}`,modelValue:G.value[i],"onUpdate:modelValue":e=>G.value[i]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:n,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`max`]),c(e(C),{onClick:e=>G.value[i]=n,variant:`outline`,size:`sm`},{default:f(()=>[l(u(e(B)(`fleetView.all`)),1)]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1}),c(e(D),null,{default:f(()=>[c(e(N),null,{default:f(()=>[c(e(A),null,{default:f(()=>[l(u(e(B)(`fleetView.targetCoordinates`)),1)]),_:1})]),_:1}),c(e(E),null,{default:f(()=>[t(`div`,Ne,[t(`div`,Pe,[c(e(v),{for:`galaxy`,class:`text-xs sm:text-sm`},{default:f(()=>[l(u(e(B)(`fleetView.galaxy`)),1)]),_:1}),c(e(x),{id:`galaxy`,modelValue:K.value.galaxy,"onUpdate:modelValue":s[3]||=e=>K.value.galaxy=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:`9`,placeholder:`1`},null,8,[`modelValue`])]),t(`div`,Fe,[c(e(v),{for:`system`,class:`text-xs sm:text-sm`},{default:f(()=>[l(u(e(B)(`fleetView.system`)),1)]),_:1}),c(e(x),{id:`system`,modelValue:K.value.system,"onUpdate:modelValue":s[4]||=e=>K.value.system=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:`10`,placeholder:`1`},null,8,[`modelValue`])]),t(`div`,Ie,[c(e(v),{for:`position`,class:`text-xs sm:text-sm`},{default:f(()=>[l(u(e(B)(`fleetView.position`)),1)]),_:1}),c(e(x),{id:`position`,modelValue:K.value.position,"onUpdate:modelValue":s[5]||=e=>K.value.position=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:`10`,placeholder:`1`},null,8,[`modelValue`])])])]),_:1})]),_:1}),c(e(D),null,{default:f(()=>[c(e(N),null,{default:f(()=>[c(e(A),null,{default:f(()=>[l(u(e(B)(`fleetView.missionType`)),1)]),_:1})]),_:1}),c(e(E),null,{default:f(()=>[t(`div`,Le,[(m(!0),r(n,null,d(Y.value,t=>(m(),i(e(C),{key:t.type,onClick:e=>q.value=t.type,variant:q.value===t.type?`default`:`outline`,class:`justify-start`},{default:f(()=>[(m(),i(ne(t.icon),{class:`h-4 w-4 mr-2`})),l(` `+u(t.name),1)]),_:2},1032,[`onClick`,`variant`]))),128))])]),_:1})]),_:1}),q.value===e(T).Transport?(m(),i(e(D),{key:0},{default:f(()=>[c(e(N),null,{default:f(()=>[c(e(A),null,{default:f(()=>[l(u(e(B)(`fleetView.transportResources`)),1)]),_:1})]),_:1}),c(e(E),null,{default:f(()=>[t(`div`,Re,[t(`div`,ze,[c(e(v),{for:`cargo-metal`,class:`text-xs sm:text-sm flex items-center gap-2`},{default:f(()=>[c(S,{type:`metal`,size:`sm`}),l(` `+u(e(B)(`resources.metal`))+` (`+u(e(B)(`fleetView.available`))+`: `+u(e(w)(H.value.resources.metal))+`) `,1)]),_:1}),c(e(x),{id:`cargo-metal`,modelValue:J.value.metal,"onUpdate:modelValue":s[6]||=e=>J.value.metal=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:H.value.resources.metal,placeholder:`0`},null,8,[`modelValue`,`max`])]),t(`div`,Be,[c(e(v),{for:`cargo-crystal`,class:`text-xs sm:text-sm flex items-center gap-2`},{default:f(()=>[c(S,{type:`crystal`,size:`sm`}),l(` `+u(e(B)(`resources.crystal`))+` (`+u(e(B)(`fleetView.available`))+`: `+u(e(w)(H.value.resources.crystal))+`) `,1)]),_:1}),c(e(x),{id:`cargo-crystal`,modelValue:J.value.crystal,"onUpdate:modelValue":s[7]||=e=>J.value.crystal=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:H.value.resources.crystal,placeholder:`0`},null,8,[`modelValue`,`max`])]),t(`div`,Ve,[c(e(v),{for:`cargo-deuterium`,class:`text-xs sm:text-sm flex items-center gap-2`},{default:f(()=>[c(S,{type:`deuterium`,size:`sm`}),l(` `+u(e(B)(`resources.deuterium`))+` (`+u(e(B)(`fleetView.available`))+`: `+u(e(w)(H.value.resources.deuterium))+`) `,1)]),_:1}),c(e(x),{id:`cargo-deuterium`,modelValue:J.value.deuterium,"onUpdate:modelValue":s[8]||=e=>J.value.deuterium=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:H.value.resources.deuterium,placeholder:`0`},null,8,[`modelValue`,`max`])])]),t(`p`,He,u(e(B)(`fleetView.totalCargoCapacity`))+`: `+u(e(w)(X()))+` | `+u(e(B)(`fleetView.used`))+`: `+u(e(w)(Z())),1)]),_:1})]),_:1})):p(``,!0),c(e(D),null,{default:f(()=>[c(e(N),null,{default:f(()=>[c(e(A),null,{default:f(()=>[l(u(e(B)(`fleetView.missionInfo`)),1)]),_:1})]),_:1}),c(e(E),{class:`space-y-2`},{default:f(()=>[t(`div`,Ue,[t(`span`,We,u(e(B)(`fleetView.fuelConsumption`))+`:`,1),t(`span`,Ge,[c(S,{type:`deuterium`,size:`sm`}),t(`span`,{class:a(Q()>H.value.resources.deuterium?`text-red-600 dark:text-red-400 font-medium`:``)},u(e(w)(Q())),3),t(`span`,Ke,`/ `+u(e(w)(H.value.resources.deuterium)),1)])]),Object.values(G.value).some(e=>e>0)?(m(),r(`div`,qe,[t(`span`,Je,u(e(B)(`fleetView.flightTime`))+`:`,1),t(`span`,null,u(e(y)(pt())),1)])):p(``,!0)]),_:1})]),_:1}),c(e(C),{onClick:gt,disabled:!mt(),class:`w-full`,size:`lg`},{default:f(()=>[l(u(e(B)(`fleetView.sendFleet`)),1)]),_:1},8,[`disabled`])])):p(``,!0),W.value===`missions`?(m(),r(`div`,Ye,[e(z).player.fleetMissions.length===0?(m(),i(e(D),{key:0},{default:f(()=>[c(e(E),{class:`py-8 text-center text-muted-foreground`},{default:f(()=>[l(u(e(B)(`fleetView.noFlightMissions`)),1)]),_:1})]),_:1})):p(``,!0),(m(!0),r(n,null,d(e(z).player.fleetMissions,a=>(m(),i(e(D),{key:a.id},{default:f(()=>[c(e(N),null,{default:f(()=>[t(`div`,Xe,[t(`div`,null,[c(e(A),{class:`text-base sm:text-lg`},{default:f(()=>[l(u(dt(a.missionType)),1)]),_:2},1024),c(e(g),{class:`text-xs sm:text-sm`},{default:f(()=>[l(u(ft(a.originPlanetId))+` → [`+u(a.targetPosition.galaxy)+`:`+u(a.targetPosition.system)+`:`+u(a.targetPosition.position)+`] `,1)]),_:2},1024)]),c(e(b),{variant:a.status===`outbound`?`default`:`secondary`},{default:f(()=>[l(u(a.status===`outbound`?e(B)(`fleetView.outbound`):e(B)(`fleetView.returning`)),1)]),_:2},1032,[`variant`])])]),_:2},1024),c(e(E),{class:`space-y-3`},{default:f(()=>[t(`div`,null,[t(`p`,Ze,u(e(B)(`fleetView.fleetComposition`))+`:`,1),t(`div`,Qe,[(m(!0),r(n,null,d(a.fleet,(t,n)=>(m(),i(e(b),{key:n,variant:`outline`},{default:f(()=>[l(u(e(V)[n].name)+`: `+u(t),1)]),_:2},1024))),128))])]),a.cargo.metal>0||a.cargo.crystal>0||a.cargo.deuterium>0||a.cargo.darkMatter>0?(m(),r(`div`,$e,[t(`p`,et,u(e(B)(`fleetView.carryingResources`))+`:`,1),t(`div`,tt,[a.cargo.metal>0?(m(),r(`span`,nt,[c(S,{type:`metal`,size:`sm`}),l(` `+u(e(w)(a.cargo.metal)),1)])):p(``,!0),a.cargo.crystal>0?(m(),r(`span`,rt,[c(S,{type:`crystal`,size:`sm`}),l(` `+u(e(w)(a.cargo.crystal)),1)])):p(``,!0),a.cargo.deuterium>0?(m(),r(`span`,it,[c(S,{type:`deuterium`,size:`sm`}),l(` `+u(e(w)(a.cargo.deuterium)),1)])):p(``,!0),a.cargo.darkMatter>0?(m(),r(`span`,at,[c(S,{type:`darkMatter`,size:`sm`}),l(` `+u(e(w)(a.cargo.darkMatter)),1)])):p(``,!0)])])):p(``,!0),t(`div`,ot,[t(`div`,st,[t(`span`,null,u(a.status===`outbound`?e(B)(`fleetView.arrivalTime`):e(B)(`fleetView.returnTime`))+`:`,1),t(`span`,null,u(e(y)($(a))),1)]),c(e(ce),{"model-value":yt(a)},null,8,[`model-value`])]),t(`div`,ct,[a.status===`outbound`?(m(),i(e(C),{key:0,onClick:e=>vt(a.id),variant:`outline`,size:`sm`,class:`w-full`},{default:f(()=>[l(u(e(B)(`fleetView.recallFleet`)),1)]),_:1},8,[`onClick`])):p(``,!0)])]),_:2},1024)]),_:2},1024))),128))])):p(``,!0),c(I,{ref_key:`alertDialog`,ref:U},null,512)])):p(``,!0)}});export{R as default}; \ No newline at end of file diff --git a/docs/assets/GMView-BpYTLGiZ.js b/docs/assets/GMView-BpYTLGiZ.js new file mode 100644 index 0000000..63021e7 --- /dev/null +++ b/docs/assets/GMView-BpYTLGiZ.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Ct as n,Dt as r,Et as ee,Jt as i,Kt as a,Mt as o,Nt as s,On as c,Ot as te,hn as l,in as u,jt as d,kt as f}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-DiSZfaku.js";import"./vendor-reka-ui-ICOW9z5F.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import"./vendor-icons-B6ER66fi.js";import{t as p}from"./CardDescription-CtUtXM5o.js";import{d as ne,h as re,m as ie,p as m,u as ae}from"./game-config-D-D7cMgJ.js";import{A as oe,I as se,M as h,O as g,P as ce,c as _,l as v,s as y,t as b,u as x}from"./index-BLxCTx9W.js";import{t as le}from"./useGameConfig-chMIsHFg.js";import{a as ue,i as de,n as fe,r as pe,t as S}from"./SelectValue-BvfAhGU7.js";var C={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},w={class:`flex items-center justify-between`},T={class:`text-2xl sm:text-3xl font-bold`},E={key:0,class:`flex flex-wrap gap-2 border-b`},D={key:1,class:`space-y-4`},O={class:`flex gap-2`},k={key:2,class:`space-y-4`},A={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},j={class:`flex gap-2`},M={key:3,class:`space-y-4`},N={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},P={class:`flex gap-2`},F={key:4,class:`space-y-4`},I={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},L={class:`flex gap-2`},R={key:5,class:`space-y-4`},z={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},B={class:`flex gap-2`},me={key:6,class:`space-y-4`},he={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},ge={class:`flex gap-2`},V=s({__name:`GMView`,setup(s){let V=se(),{t:H}=ce(),{BUILDINGS:_e,TECHNOLOGIES:ve,SHIPS:ye,DEFENSES:be,OFFICERS:xe}=le(),U=l(V.player.planets[0]?.id||``),W=l(`resources`),G=l({});Object.values(m).forEach(e=>{let t=V.player.officers[e];if(t&&t.expiresAt){let n=Math.ceil((t.expiresAt-Date.now())/(1e3*60*60*24));G.value[e]=Math.max(0,n)}else G.value[e]=0});let K=ee(()=>V.player.planets.find(e=>e.id===U.value)),Se=[`metal`,`crystal`,`deuterium`,`darkMatter`],Ce=Object.values(ae),we=Object.values(re),Te=Object.values(ie),Ee=Object.values(ne),q=Object.values(m),J=(e,t)=>{K.value&&(K.value.resources[e]+=t)},Y=(e,t)=>{K.value&&(K.value.buildings[e]=t)},X=(e,t)=>{V.player.technologies[e]=t},Z=(e,t)=>{K.value&&(K.value.fleet[e]=(K.value.fleet[e]||0)+t)},Q=(e,t)=>{K.value&&(K.value.defense[e]=(K.value.defense[e]||0)+t)},$=(e,t)=>{G.value[e]=t;let n=Date.now(),r=n+t*24*60*60*1e3;V.player.officers[e]?(V.player.officers[e].expiresAt=r,V.player.officers[e].active=!0,V.player.officers[e].hiredAt||(V.player.officers[e].hiredAt=n)):V.player.officers[e]={type:e,active:!0,hiredAt:n,expiresAt:r}},De=()=>{confirm(H(`gmView.resetGameConfirm`))&&(localStorage.clear(),location.reload())};return(ee,s)=>(a(),e(`div`,C,[r(`div`,w,[r(`h1`,T,c(t(H)(`gmView.title`)),1),o(t(oe),{variant:`destructive`},{default:u(()=>[d(c(t(H)(`gmView.adminOnly`)),1)]),_:1})]),o(t(x),null,{default:u(()=>[o(t(_),null,{default:u(()=>[o(t(y),null,{default:u(()=>[d(c(t(H)(`gmView.selectPlanet`)),1)]),_:1})]),_:1}),o(t(v),null,{default:u(()=>[o(t(ue),{modelValue:U.value,"onUpdate:modelValue":s[0]||=e=>U.value=e},{default:u(()=>[o(t(fe),null,{default:u(()=>[o(t(S),{placeholder:t(H)(`gmView.choosePlanet`)},null,8,[`placeholder`])]),_:1}),o(t(de),null,{default:u(()=>[(a(!0),e(n,null,i(t(V).player.planets,e=>(a(),te(t(pe),{key:e.id,value:e.id},{default:u(()=>[d(c(e.name)+` (`+c(e.position.galaxy)+`:`+c(e.position.system)+`:`+c(e.position.position)+`) `,1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])]),_:1})]),_:1}),K.value?(a(),e(`div`,E,[o(t(h),{onClick:s[1]||=e=>W.value=`resources`,variant:W.value===`resources`?`default`:`ghost`,class:`rounded-b-none`},{default:u(()=>[d(c(t(H)(`gmView.resources`)),1)]),_:1},8,[`variant`]),o(t(h),{onClick:s[2]||=e=>W.value=`buildings`,variant:W.value===`buildings`?`default`:`ghost`,class:`rounded-b-none`},{default:u(()=>[d(c(t(H)(`gmView.buildings`)),1)]),_:1},8,[`variant`]),o(t(h),{onClick:s[3]||=e=>W.value=`research`,variant:W.value===`research`?`default`:`ghost`,class:`rounded-b-none`},{default:u(()=>[d(c(t(H)(`gmView.research`)),1)]),_:1},8,[`variant`]),o(t(h),{onClick:s[4]||=e=>W.value=`ships`,variant:W.value===`ships`?`default`:`ghost`,class:`rounded-b-none`},{default:u(()=>[d(c(t(H)(`gmView.ships`)),1)]),_:1},8,[`variant`]),o(t(h),{onClick:s[5]||=e=>W.value=`defense`,variant:W.value===`defense`?`default`:`ghost`,class:`rounded-b-none`},{default:u(()=>[d(c(t(H)(`gmView.defense`)),1)]),_:1},8,[`variant`]),o(t(h),{onClick:s[6]||=e=>W.value=`officers`,variant:W.value===`officers`?`default`:`ghost`,class:`rounded-b-none`},{default:u(()=>[d(c(t(H)(`gmView.officers`)),1)]),_:1},8,[`variant`])])):f(``,!0),K.value&&W.value===`resources`?(a(),e(`div`,D,[o(t(x),null,{default:u(()=>[o(t(_),null,{default:u(()=>[o(t(y),null,{default:u(()=>[d(c(t(H)(`gmView.modifyResources`)),1)]),_:1}),o(t(p),null,{default:u(()=>[d(c(t(H)(`gmView.resourcesDesc`)),1)]),_:1})]),_:1}),o(t(v),{class:`space-y-4`},{default:u(()=>[(a(),e(n,null,i(Se,e=>r(`div`,{key:e,class:`space-y-2`},[o(t(b),null,{default:u(()=>[d(c(t(H)(`resources.${e}`)),1)]),_:2},1024),r(`div`,O,[o(t(g),{modelValue:K.value.resources[e],"onUpdate:modelValue":t=>K.value.resources[e]=t,modelModifiers:{number:!0},type:`number`,min:`0`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),o(t(h),{onClick:t=>J(e,1e6),variant:`outline`,size:`sm`},{default:u(()=>[...s[7]||=[d(`+1M`,-1)]]),_:1},8,[`onClick`]),o(t(h),{onClick:t=>J(e,1e7),variant:`outline`,size:`sm`},{default:u(()=>[...s[8]||=[d(`+10M`,-1)]]),_:1},8,[`onClick`])])])),64))]),_:1})]),_:1})])):f(``,!0),K.value&&W.value===`buildings`?(a(),e(`div`,k,[o(t(x),null,{default:u(()=>[o(t(_),null,{default:u(()=>[o(t(y),null,{default:u(()=>[d(c(t(H)(`gmView.modifyBuildings`)),1)]),_:1}),o(t(p),null,{default:u(()=>[d(c(t(H)(`gmView.buildingsDesc`)),1)]),_:1})]),_:1}),o(t(v),null,{default:u(()=>[r(`div`,A,[(a(!0),e(n,null,i(t(Ce),n=>(a(),e(`div`,{key:n,class:`space-y-2`},[o(t(b),null,{default:u(()=>[d(c(t(_e)[n].name),1)]),_:2},1024),r(`div`,j,[o(t(g),{modelValue:K.value.buildings[n],"onUpdate:modelValue":e=>K.value.buildings[n]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:`100`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),o(t(h),{onClick:e=>Y(n,10),variant:`outline`,size:`sm`},{default:u(()=>[...s[9]||=[d(`Lv 10`,-1)]]),_:1},8,[`onClick`]),o(t(h),{onClick:e=>Y(n,30),variant:`outline`,size:`sm`},{default:u(()=>[...s[10]||=[d(`Lv 30`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),W.value===`research`?(a(),e(`div`,M,[o(t(x),null,{default:u(()=>[o(t(_),null,{default:u(()=>[o(t(y),null,{default:u(()=>[d(c(t(H)(`gmView.modifyResearch`)),1)]),_:1}),o(t(p),null,{default:u(()=>[d(c(t(H)(`gmView.researchDesc`)),1)]),_:1})]),_:1}),o(t(v),null,{default:u(()=>[r(`div`,N,[(a(!0),e(n,null,i(t(we),n=>(a(),e(`div`,{key:n,class:`space-y-2`},[o(t(b),null,{default:u(()=>[d(c(t(ve)[n].name),1)]),_:2},1024),r(`div`,P,[o(t(g),{modelValue:t(V).player.technologies[n],"onUpdate:modelValue":e=>t(V).player.technologies[n]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:`50`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),o(t(h),{onClick:e=>X(n,10),variant:`outline`,size:`sm`},{default:u(()=>[...s[11]||=[d(`Lv 10`,-1)]]),_:1},8,[`onClick`]),o(t(h),{onClick:e=>X(n,20),variant:`outline`,size:`sm`},{default:u(()=>[...s[12]||=[d(`Lv 20`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),K.value&&W.value===`ships`?(a(),e(`div`,F,[o(t(x),null,{default:u(()=>[o(t(_),null,{default:u(()=>[o(t(y),null,{default:u(()=>[d(c(t(H)(`gmView.modifyShips`)),1)]),_:1}),o(t(p),null,{default:u(()=>[d(c(t(H)(`gmView.shipsDesc`)),1)]),_:1})]),_:1}),o(t(v),null,{default:u(()=>[r(`div`,I,[(a(!0),e(n,null,i(t(Te),n=>(a(),e(`div`,{key:n,class:`space-y-2`},[o(t(b),null,{default:u(()=>[d(c(t(ye)[n].name),1)]),_:2},1024),r(`div`,L,[o(t(g),{modelValue:K.value.fleet[n],"onUpdate:modelValue":e=>K.value.fleet[n]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),o(t(h),{onClick:e=>Z(n,100),variant:`outline`,size:`sm`},{default:u(()=>[...s[13]||=[d(`+100`,-1)]]),_:1},8,[`onClick`]),o(t(h),{onClick:e=>Z(n,1e3),variant:`outline`,size:`sm`},{default:u(()=>[...s[14]||=[d(`+1K`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),K.value&&W.value===`defense`?(a(),e(`div`,R,[o(t(x),null,{default:u(()=>[o(t(_),null,{default:u(()=>[o(t(y),null,{default:u(()=>[d(c(t(H)(`gmView.modifyDefense`)),1)]),_:1}),o(t(p),null,{default:u(()=>[d(c(t(H)(`gmView.defenseDesc`)),1)]),_:1})]),_:1}),o(t(v),null,{default:u(()=>[r(`div`,z,[(a(!0),e(n,null,i(t(Ee),n=>(a(),e(`div`,{key:n,class:`space-y-2`},[o(t(b),null,{default:u(()=>[d(c(t(be)[n].name),1)]),_:2},1024),r(`div`,B,[o(t(g),{modelValue:K.value.defense[n],"onUpdate:modelValue":e=>K.value.defense[n]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),o(t(h),{onClick:e=>Q(n,100),variant:`outline`,size:`sm`},{default:u(()=>[...s[15]||=[d(`+100`,-1)]]),_:1},8,[`onClick`]),o(t(h),{onClick:e=>Q(n,1e3),variant:`outline`,size:`sm`},{default:u(()=>[...s[16]||=[d(`+1K`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),W.value===`officers`?(a(),e(`div`,me,[o(t(x),null,{default:u(()=>[o(t(_),null,{default:u(()=>[o(t(y),null,{default:u(()=>[d(c(t(H)(`gmView.modifyOfficers`)),1)]),_:1}),o(t(p),null,{default:u(()=>[d(c(t(H)(`gmView.officersDesc`)),1)]),_:1})]),_:1}),o(t(v),null,{default:u(()=>[r(`div`,he,[(a(!0),e(n,null,i(t(q),n=>(a(),e(`div`,{key:n,class:`space-y-2`},[o(t(b),null,{default:u(()=>[d(c(t(xe)[n].name),1)]),_:2},1024),r(`div`,ge,[o(t(g),{modelValue:G.value[n],"onUpdate:modelValue":e=>G.value[n]=e,modelModifiers:{number:!0},type:`number`,min:`0`,placeholder:t(H)(`gmView.days`),class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),o(t(h),{onClick:e=>$(n,7),variant:`outline`,size:`sm`},{default:u(()=>[d(`7`+c(t(H)(`gmView.days`)),1)]),_:1},8,[`onClick`]),o(t(h),{onClick:e=>$(n,30),variant:`outline`,size:`sm`},{default:u(()=>[d(`30`+c(t(H)(`gmView.days`)),1)]),_:1},8,[`onClick`]),o(t(h),{onClick:e=>$(n,365),variant:`outline`,size:`sm`},{default:u(()=>[d(`365`+c(t(H)(`gmView.days`)),1)]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),o(t(x),{class:`border-destructive`},{default:u(()=>[o(t(_),null,{default:u(()=>[o(t(y),{class:`text-destructive`},{default:u(()=>[d(c(t(H)(`gmView.dangerZone`)),1)]),_:1}),o(t(p),null,{default:u(()=>[d(c(t(H)(`gmView.dangerZoneDesc`)),1)]),_:1})]),_:1}),o(t(v),{class:`space-y-2`},{default:u(()=>[o(t(h),{onClick:De,variant:`destructive`,class:`w-full`},{default:u(()=>[d(c(t(H)(`gmView.resetGame`)),1)]),_:1})]),_:1})]),_:1})]))}});export{V as default}; \ No newline at end of file diff --git a/docs/assets/GalaxyView-BQhXx0XP.js b/docs/assets/GalaxyView-BQhXx0XP.js deleted file mode 100644 index 2bfe801..0000000 --- a/docs/assets/GalaxyView-BQhXx0XP.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,G as t,H as n,J as r,K as i,Ot as a,Q as o,R as s,St as c,X as l,Y as u,Z as d,a as f,at as ee,c as p,d as m,f as h,i as g,jt as _,kt as v,l as y,lt as b,m as x,n as S,o as C,p as w,pt as T,q as E,r as D,rt as O,s as te,st as k,u as A,ut as j,z as M}from"./vendor-ui-DBxeWLyT.js";import{s as ne}from"./vendor-vue-Bqq1sBNf.js";import{t as re}from"./eye-B5ACPUPU.js";import{t as ie}from"./CardDescription-CRV0m8La.js";import{A as N,Bt as P,Dt as F,G as I,It as L,Rt as R,Tt as ae,Vt as oe,dt as z,ft as B,jt as V,k as se,kt as H,lt as U,ut as W,zt as G}from"./index-Cch-Ig40.js";import{t as K}from"./AlertDialog-_72FqRCT.js";var ce=V(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),q=V(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),le=V(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),J=d({__name:`Select`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},defaultValue:{},modelValue:{},by:{type:[String,Function]},dir:{},multiple:{type:Boolean},autocomplete:{},disabled:{type:Boolean},name:{},required:{type:Boolean}},emits:[`update:modelValue`,`update:open`],setup(t,{emit:n}){let r=s(t,n);return(t,n)=>(k(),i(e(x),O({"data-slot":`select`},e(r)),{default:T(e=>[j(t.$slots,`default`,v(o(e)))]),_:3},16))}}),Y=d({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean},position:{default:`popper`},bodyLock:{type:Boolean},side:{},sideOffset:{},sideFlip:{type:Boolean},align:{},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(t,{emit:n}){let r=t,o=n,c=s(S(r,`class`),o);return(n,o)=>(k(),i(e(p),null,{default:T(()=>[l(e(w),O({"data-slot":`select-content`},{...n.$attrs,...e(c)},{class:e(G)(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--reka-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md`,t.position===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,r.class)}),{default:T(()=>[l(e(fe)),l(e(D),{class:a(e(G)(`p-1`,t.position===`popper`&&`h-[var(--reka-select-trigger-height)] w-full min-w-[var(--reka-select-trigger-width)] scroll-my-1`))},{default:T(()=>[j(n.$slots,`default`)]),_:3},8,[`class`]),l(e(de))]),_:3},16,[`class`])]),_:3}))}}),ue={class:`absolute right-2 flex size-3.5 items-center justify-center`},X=d({__name:`SelectItem`,props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{}},setup(n){let r=n,a=M(S(r,`class`));return(n,o)=>(k(),i(e(m),O({"data-slot":`select-item`},e(a),{class:e(G)(`focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,r.class)}),{default:T(()=>[t(`span`,ue,[l(e(A),null,{default:T(()=>[j(n.$slots,`indicator-icon`,{},()=>[l(e(ce),{class:`size-4`})])]),_:3})]),l(e(y),null,{default:T(()=>[j(n.$slots,`default`)]),_:3})]),_:3},16,[`class`]))}}),de=d({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean},as:{},class:{}},setup(t){let n=t,r=M(S(n,`class`));return(t,a)=>(k(),i(e(te),O({"data-slot":`select-scroll-down-button`},e(r),{class:e(G)(`flex cursor-default items-center justify-center py-1`,n.class)}),{default:T(()=>[j(t.$slots,`default`,{},()=>[l(e(q),{class:`size-4`})])]),_:3},16,[`class`]))}}),fe=d({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean},as:{},class:{}},setup(t){let n=t,r=M(S(n,`class`));return(t,a)=>(k(),i(e(C),O({"data-slot":`select-scroll-up-button`},e(r),{class:e(G)(`flex cursor-default items-center justify-center py-1`,n.class)}),{default:T(()=>[j(t.$slots,`default`,{},()=>[l(e(le),{class:`size-4`})])]),_:3},16,[`class`]))}}),Z=d({__name:`SelectTrigger`,props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{},size:{default:`default`}},setup(t){let n=t,r=M(S(n,`class`,`size`));return(a,o)=>(k(),i(e(f),O({"data-slot":`select-trigger`,"data-size":t.size},e(r),{class:e(G)(`border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,n.class)}),{default:T(()=>[j(a.$slots,`default`),l(e(h),{"as-child":``},{default:T(()=>[l(e(q),{class:`size-4 opacity-50`})]),_:1})]),_:3},16,[`data-size`,`class`]))}}),Q=d({__name:`SelectValue`,props:{placeholder:{},asChild:{type:Boolean},as:{}},setup(t){let n=t;return(t,r)=>(k(),i(e(g),O({"data-slot":`select-value`},n),{default:T(()=>[j(t.$slots,`default`)]),_:3},16))}}),pe={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},me={class:`text-2xl sm:text-3xl font-bold`},he={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},ge={class:`space-y-2`},_e={class:`space-y-2`},ve={class:`col-span-2 sm:col-span-1 flex items-end`},ye={class:`space-y-2`},be={class:`w-8 sm:w-12 text-center`},$={class:`flex-1 min-w-0`},xe={key:0,class:`space-y-1`},Se={class:`flex items-center gap-2`},Ce={class:`font-semibold text-sm sm:text-base truncate`},we={class:`text-xs text-muted-foreground`},Te={key:1,class:`text-sm text-muted-foreground`},Ee={class:`flex gap-1 sm:gap-2 flex-shrink-0`},De=d({__name:`GalaxyView`,setup(o){let s=oe(),d=ne(),{t:f}=P(),p=c(null),m=c(1),h=c(1),g=c(1),v=c(1),y=c([]);ee(()=>{s.currentPlanet&&(g.value=s.currentPlanet.position.galaxy,v.value=s.currentPlanet.position.system,m.value=g.value,h.value=v.value,S())});let x=(e,t)=>N(e,t).map(n=>{let r=se(e,t,n.position),i=s.universePlanets[r]||null;return{position:n.position,planet:i}}),S=()=>{g.value=m.value,v.value=h.value,y.value=x(g.value,v.value)},C=()=>{s.currentPlanet&&(g.value=s.currentPlanet.position.galaxy,v.value=s.currentPlanet.position.system,m.value=g.value,h.value=v.value,S())},w=e=>e?e.ownerId===s.player.id:!1,D=e=>{s.currentPlanetId=e,d.push(`/overview`)},O=(e,t,n)=>{let r=e?e.position:{galaxy:g.value,system:v.value,position:n},i=`${r.galaxy}:${r.system}:${r.position}`,a=``,o=``;t===`spy`?(o=f(`galaxyView.scoutPlanetTitle`),a=f(`galaxyView.scoutPlanetMessage`).replace(`{coordinates}`,i)):t===`attack`?(o=f(`galaxyView.attackPlanetTitle`),a=f(`galaxyView.attackPlanetMessage`).replace(`{coordinates}`,i)):t===`colonize`&&(o=f(`galaxyView.colonizePlanetTitle`),a=f(`galaxyView.colonizePlanetMessage`).replace(`{coordinates}`,i)),p.value?.show({title:o,message:a,onConfirm:()=>{d.push({path:`/fleet`,query:{galaxy:r.galaxy,system:r.system,position:r.position,mission:t}})}})};return(o,c)=>(k(),r(`div`,pe,[t(`h1`,me,_(e(f)(`galaxyView.title`)),1),l(e(B),null,{default:T(()=>[l(e(W),null,{default:T(()=>[l(e(U),null,{default:T(()=>[u(_(e(f)(`galaxyView.selectCoordinates`)),1)]),_:1})]),_:1}),l(e(z),null,{default:T(()=>[t(`div`,he,[t(`div`,ge,[l(e(I),{for:`select-galaxy`,class:`text-xs sm:text-sm`},{default:T(()=>[u(_(e(f)(`galaxyView.galaxy`)),1)]),_:1}),(k(),i(e(J),{key:e(s).locale,"model-value":String(m.value),"onUpdate:modelValue":c[0]||=e=>{m.value=Number(e),S()}},{default:T(()=>[l(e(Z),{id:`select-galaxy`,class:`w-full`},{default:T(()=>[l(e(Q),{placeholder:e(f)(`galaxyView.selectGalaxy`)},null,8,[`placeholder`])]),_:1}),l(e(Y),null,{default:T(()=>[(k(),r(n,null,b(9,t=>l(e(X),{key:t,value:String(t)},{default:T(()=>[u(_(e(f)(`galaxyView.galaxy`))+` `+_(t),1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`model-value`]))]),t(`div`,_e,[l(e(I),{for:`select-system`,class:`text-xs sm:text-sm`},{default:T(()=>[u(_(e(f)(`galaxyView.system`)),1)]),_:1}),(k(),i(e(J),{key:`${e(s).locale}-system`,"model-value":String(h.value),"onUpdate:modelValue":c[1]||=e=>{h.value=Number(e),S()}},{default:T(()=>[l(e(Z),{id:`select-system`,class:`w-full`},{default:T(()=>[l(e(Q),{placeholder:e(f)(`galaxyView.selectSystem`)},null,8,[`placeholder`])]),_:1}),l(e(Y),null,{default:T(()=>[(k(),r(n,null,b(10,t=>l(e(X),{key:t,value:String(t)},{default:T(()=>[u(_(e(f)(`galaxyView.system`))+` `+_(t),1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`model-value`]))]),t(`div`,ve,[l(e(R),{onClick:C,variant:`outline`,class:`w-full`},{default:T(()=>[l(e(H),{class:`h-4 w-4 mr-2`}),u(` `+_(e(f)(`galaxyView.myPlanet`)),1)]),_:1})])])]),_:1})]),_:1}),l(e(B),null,{default:T(()=>[l(e(W),null,{default:T(()=>[l(e(U),null,{default:T(()=>[u(_(e(f)(`galaxyView.galaxy`))+` `+_(g.value)+`:`+_(v.value),1)]),_:1}),l(e(ie),null,{default:T(()=>[u(_(e(f)(`galaxyView.totalPositions`)),1)]),_:1})]),_:1}),l(e(z),null,{default:T(()=>[t(`div`,ye,[(k(!0),r(n,null,b(y.value,n=>(k(),r(`div`,{key:n.position,class:a([`flex items-center gap-2 sm:gap-4 p-2 sm:p-3 border rounded-lg hover:bg-muted/50 transition-colors`,{"bg-blue-50 dark:bg-blue-950 border-blue-300 dark:border-blue-700":w(n.planet),"bg-muted/30":!n.planet}])},[t(`div`,be,[l(e(L),{variant:`outline`,class:`text-xs sm:text-sm`},{default:T(()=>[u(_(n.position),1)]),_:2},1024)]),t(`div`,$,[n.planet?(k(),r(`div`,xe,[t(`div`,Se,[t(`h3`,Ce,_(n.planet.name),1),w(n.planet)?(k(),i(e(L),{key:0,variant:`default`,class:`text-xs`},{default:T(()=>[u(_(e(f)(`galaxyView.mine`)),1)]),_:1})):(k(),i(e(L),{key:1,variant:`secondary`,class:`text-xs`},{default:T(()=>[u(_(e(f)(`galaxyView.hostile`)),1)]),_:1}))]),t(`p`,we,` [`+_(n.planet.position.galaxy)+`:`+_(n.planet.position.system)+`:`+_(n.planet.position.position)+`] `,1)])):(k(),r(`div`,Te,_(e(f)(`galaxyView.emptySlot`)),1))]),t(`div`,Ee,[n.planet&&!w(n.planet)?(k(),i(e(R),{key:0,onClick:e=>O(n.planet,`spy`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`,title:e(f)(`galaxyView.scout`)},{default:T(()=>[l(e(re),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`,`title`])):E(``,!0),n.planet&&!w(n.planet)?(k(),i(e(R),{key:1,onClick:e=>O(n.planet,`attack`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`,title:e(f)(`galaxyView.attack`)},{default:T(()=>[l(e(ae),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`,`title`])):E(``,!0),n.planet?E(``,!0):(k(),i(e(R),{key:2,onClick:e=>O(null,`colonize`,n.position),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`,title:e(f)(`galaxyView.colonize`)},{default:T(()=>[l(e(F),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`,`title`])),n.planet&&w(n.planet)?(k(),i(e(R),{key:3,onClick:e=>D(n.planet.id),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`,title:e(f)(`galaxyView.switch`)},{default:T(()=>[l(e(H),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`,`title`])):E(``,!0)])],2))),128))])]),_:1})]),_:1}),l(K,{ref_key:`actionDialog`,ref:p},null,512)]))}});export{De as default}; \ No newline at end of file diff --git a/docs/assets/GalaxyView-BaUVuvAs.js b/docs/assets/GalaxyView-BaUVuvAs.js new file mode 100644 index 0000000..c9c3570 --- /dev/null +++ b/docs/assets/GalaxyView-BaUVuvAs.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Ct as n,Dt as r,Jt as i,Kt as a,Mt as o,Nt as ee,On as s,Ot as c,Tn as te,V as l,Wt as ne,hn as u,in as d,jt as f,kt as p,z as re}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import{o as ie}from"./vendor-vue-router-_-a8jZbv.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-DiSZfaku.js";import"./vendor-reka-ui-ICOW9z5F.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import{I as ae,_ as oe,c as se,j as m,v as ce}from"./vendor-icons-B6ER66fi.js";import{t as le}from"./TooltipProvider-Bx7lfIFp.js";import{t as ue}from"./CardDescription-CtUtXM5o.js";import"./game-config-D-D7cMgJ.js";import{A as h,D as g,E as _,F as de,I as fe,M as v,P as pe,T as y,c as b,l as x,r as S,s as C,t as w,u as T}from"./index-BLxCTx9W.js";import{t as me}from"./AlertDialog-vN9u2C5f.js";import{a as E,i as D,n as O,r as k,t as A}from"./SelectValue-BvfAhGU7.js";var he={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},j={class:`text-2xl sm:text-3xl font-bold`},M={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},N={class:`space-y-2`},P={class:`space-y-2`},F={class:`col-span-2 sm:col-span-1 flex items-end`},I={class:`space-y-2`},L={class:`w-8 sm:w-12 text-center`},R={class:`flex-1 min-w-0`},z={key:0,class:`space-y-1`},ge={class:`flex items-center gap-2`},_e={class:`font-semibold text-sm sm:text-base truncate`},ve={class:`text-xs text-muted-foreground`},ye={key:1,class:`text-sm text-muted-foreground`},be={key:2,class:`mt-2 p-2 bg-amber-50 dark:bg-amber-950/30 border border-amber-200 dark:border-amber-800 rounded text-xs`},xe={class:`flex items-center gap-2 text-amber-700 dark:text-amber-400 font-medium mb-1`},Se={class:`flex gap-3 text-xs`},Ce={class:`flex items-center gap-1`},we={class:`text-muted-foreground`},Te={class:`font-medium`},Ee={class:`flex items-center gap-1`},De={class:`text-muted-foreground`},Oe={class:`font-medium`},ke={class:`flex gap-1 sm:gap-2 flex-shrink-0`},B=ee({__name:`GalaxyView`,setup(ee){let B=fe(),V=de(),H=ie(),{t:U}=pe(),W=u(null),G=u(1),K=u(1),q=u(1),J=u(1),Y=u([]);ne(()=>{B.currentPlanet&&(q.value=B.currentPlanet.position.galaxy,J.value=B.currentPlanet.position.system,G.value=q.value,K.value=J.value,Z())});let Ae=(e,t)=>l(e,t).map(n=>{let r=re(e,t,n.position),i=B.player.planets.find(r=>r.position.galaxy===e&&r.position.system===t&&r.position.position===n.position)||V.planets[r]||null;return{position:n.position,planet:i}}),X=(e,t,n)=>{let r=`debris_${e}_${t}_${n}`;return V.debrisFields[r]||null},Z=()=>{q.value=G.value,J.value=K.value,Y.value=Ae(q.value,J.value)},je=()=>{B.currentPlanet&&(q.value=B.currentPlanet.position.galaxy,J.value=B.currentPlanet.position.system,G.value=q.value,K.value=J.value,Z())},Q=e=>e?e.ownerId===B.player.id:!1,Me=e=>{B.currentPlanetId=e,H.push(`/`)},$=(e,t,n)=>{let r=e?e.position:{galaxy:q.value,system:J.value,position:n},i=`${r.galaxy}:${r.system}:${r.position}`,a=``,o=``;t===`spy`?(o=U(`galaxyView.scoutPlanetTitle`),a=U(`galaxyView.scoutPlanetMessage`).replace(`{coordinates}`,i)):t===`attack`?(o=U(`galaxyView.attackPlanetTitle`),a=U(`galaxyView.attackPlanetMessage`).replace(`{coordinates}`,i)):t===`colonize`?(o=U(`galaxyView.colonizePlanetTitle`),a=U(`galaxyView.colonizePlanetMessage`).replace(`{coordinates}`,i)):t===`recycle`&&(o=U(`galaxyView.recyclePlanetTitle`),a=U(`galaxyView.recyclePlanetMessage`).replace(`{coordinates}`,i)),W.value?.show({title:o,message:a,onConfirm:()=>{H.push({path:`/fleet`,query:{galaxy:r.galaxy,system:r.system,position:r.position,mission:t}})}})};return(ee,l)=>(a(),e(`div`,he,[r(`h1`,j,s(t(U)(`galaxyView.title`)),1),o(t(T),null,{default:d(()=>[o(t(b),null,{default:d(()=>[o(t(C),null,{default:d(()=>[f(s(t(U)(`galaxyView.selectCoordinates`)),1)]),_:1})]),_:1}),o(t(x),null,{default:d(()=>[r(`div`,M,[r(`div`,N,[o(t(w),{for:`select-galaxy`,class:`text-xs sm:text-sm`},{default:d(()=>[f(s(t(U)(`galaxyView.galaxy`)),1)]),_:1}),(a(),c(t(E),{key:t(B).locale,"model-value":String(G.value),"onUpdate:modelValue":l[0]||=e=>{G.value=Number(e),Z()}},{default:d(()=>[o(t(O),{id:`select-galaxy`,class:`w-full`},{default:d(()=>[o(t(A),{placeholder:t(U)(`galaxyView.selectGalaxy`)},null,8,[`placeholder`])]),_:1}),o(t(D),null,{default:d(()=>[(a(),e(n,null,i(9,e=>o(t(k),{key:e,value:String(e)},{default:d(()=>[f(s(t(U)(`galaxyView.galaxy`))+` `+s(e),1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`model-value`]))]),r(`div`,P,[o(t(w),{for:`select-system`,class:`text-xs sm:text-sm`},{default:d(()=>[f(s(t(U)(`galaxyView.system`)),1)]),_:1}),(a(),c(t(E),{key:`${t(B).locale}-system`,"model-value":String(K.value),"onUpdate:modelValue":l[1]||=e=>{K.value=Number(e),Z()}},{default:d(()=>[o(t(O),{id:`select-system`,class:`w-full`},{default:d(()=>[o(t(A),{placeholder:t(U)(`galaxyView.selectSystem`)},null,8,[`placeholder`])]),_:1}),o(t(D),null,{default:d(()=>[(a(),e(n,null,i(10,e=>o(t(k),{key:e,value:String(e)},{default:d(()=>[f(s(t(U)(`galaxyView.system`))+` `+s(e),1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`model-value`]))]),r(`div`,F,[o(t(v),{onClick:je,variant:`outline`,class:`w-full`},{default:d(()=>[o(t(m),{class:`h-4 w-4 mr-2`}),f(` `+s(t(U)(`galaxyView.myPlanet`)),1)]),_:1})])])]),_:1})]),_:1}),o(t(T),null,{default:d(()=>[o(t(b),null,{default:d(()=>[o(t(C),null,{default:d(()=>[f(s(t(U)(`galaxyView.galaxy`))+` `+s(q.value)+`:`+s(J.value),1)]),_:1}),o(t(ue),null,{default:d(()=>[f(s(t(U)(`galaxyView.totalPositions`)),1)]),_:1})]),_:1}),o(t(x),null,{default:d(()=>[r(`div`,I,[(a(!0),e(n,null,i(Y.value,n=>(a(),e(`div`,{key:n.position,class:te([`flex items-center gap-2 sm:gap-4 p-2 sm:p-3 border rounded-lg hover:bg-muted/50 transition-colors`,{"bg-blue-50 dark:bg-blue-950 border-blue-300 dark:border-blue-700":Q(n.planet),"bg-muted/30":!n.planet}])},[r(`div`,L,[o(t(h),{variant:`outline`,class:`text-xs sm:text-sm`},{default:d(()=>[f(s(n.position),1)]),_:2},1024)]),r(`div`,R,[n.planet?(a(),e(`div`,z,[r(`div`,ge,[r(`h3`,_e,s(n.planet.name),1),Q(n.planet)?(a(),c(t(h),{key:0,variant:`default`,class:`text-xs`},{default:d(()=>[f(s(t(U)(`galaxyView.mine`)),1)]),_:1})):(a(),c(t(h),{key:1,variant:`secondary`,class:`text-xs`},{default:d(()=>[f(s(t(U)(`galaxyView.hostile`)),1)]),_:1}))]),r(`p`,ve,` [`+s(n.planet.position.galaxy)+`:`+s(n.planet.position.system)+`:`+s(n.planet.position.position)+`] `,1)])):(a(),e(`div`,ye,s(t(U)(`galaxyView.emptySlot`)),1)),X(q.value,J.value,n.position)?(a(),e(`div`,be,[r(`div`,xe,[r(`span`,null,s(t(U)(`galaxyView.debrisField`)),1)]),r(`div`,Se,[r(`span`,Ce,[r(`span`,we,s(t(U)(`resources.metal`))+`:`,1),r(`span`,Te,s(t(S)(X(q.value,J.value,n.position).resources.metal)),1)]),r(`span`,Ee,[r(`span`,De,s(t(U)(`resources.crystal`))+`:`,1),r(`span`,Oe,s(t(S)(X(q.value,J.value,n.position).resources.crystal)),1)])])])):p(``,!0)]),r(`div`,ke,[o(t(le),{"delay-duration":300},{default:d(()=>[n.planet&&!Q(n.planet)?(a(),c(t(g),{key:0},{default:d(()=>[o(t(y),{"as-child":``},{default:d(()=>[o(t(v),{onClick:e=>$(n.planet,`spy`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:d(()=>[o(t(ae),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),o(t(_),null,{default:d(()=>[r(`p`,null,s(t(U)(`galaxyView.scout`)),1)]),_:1})]),_:2},1024)):p(``,!0),n.planet&&!Q(n.planet)?(a(),c(t(g),{key:1},{default:d(()=>[o(t(y),{"as-child":``},{default:d(()=>[o(t(v),{onClick:e=>$(n.planet,`attack`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:d(()=>[o(t(se),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),o(t(_),null,{default:d(()=>[r(`p`,null,s(t(U)(`galaxyView.attack`)),1)]),_:1})]),_:2},1024)):p(``,!0),n.planet?p(``,!0):(a(),c(t(g),{key:2},{default:d(()=>[o(t(y),{"as-child":``},{default:d(()=>[o(t(v),{onClick:e=>$(null,`colonize`,n.position),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:d(()=>[o(t(oe),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),o(t(_),null,{default:d(()=>[r(`p`,null,s(t(U)(`galaxyView.colonize`)),1)]),_:1})]),_:2},1024)),n.planet&&Q(n.planet)?(a(),c(t(g),{key:3},{default:d(()=>[o(t(y),{"as-child":``},{default:d(()=>[o(t(v),{onClick:e=>Me(n.planet.id),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:d(()=>[o(t(m),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),o(t(_),null,{default:d(()=>[r(`p`,null,s(t(U)(`galaxyView.switch`)),1)]),_:1})]),_:2},1024)):p(``,!0),X(q.value,J.value,n.position)?(a(),c(t(g),{key:4},{default:d(()=>[o(t(y),{"as-child":``},{default:d(()=>[o(t(v),{onClick:e=>$(n.planet,`recycle`,n.position),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:d(()=>[o(t(ce),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),o(t(_),null,{default:d(()=>[r(`p`,null,s(t(U)(`galaxyView.recycle`)),1)]),_:1})]),_:2},1024)):p(``,!0)]),_:2},1024)])],2))),128))])]),_:1})]),_:1}),o(me,{ref_key:`actionDialog`,ref:W},null,512)]))}});export{B as default}; \ No newline at end of file diff --git a/docs/assets/MessagesView-0qhXN5qt.js b/docs/assets/MessagesView-0qhXN5qt.js deleted file mode 100644 index c41771a..0000000 --- a/docs/assets/MessagesView-0qhXN5qt.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,G as t,H as n,J as r,K as i,St as a,W as o,X as s,Y as c,Z as ee,jt as l,lt as u,pt as d,q as f,st as p}from"./vendor-ui-DBxeWLyT.js";import"./vendor-vue-Bqq1sBNf.js";import{t as m}from"./CardDescription-CRV0m8La.js";import{B as h,Bt as te,It as g,Pt as _,Rt as v,V as y,Vt as ne,dt as b,ft as x,lt as S,ut as C}from"./index-Cch-Ig40.js";import{t as re}from"./useGameConfig-D2EZdt1x.js";var ie={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},ae={class:`text-2xl sm:text-3xl font-bold`},oe={class:`flex gap-2 border-b`},se={key:0,class:`space-y-4`},w={class:`flex justify-between items-start gap-2`},T={class:`min-w-0 flex-1`},E={class:`text-sm font-medium mb-2`},D={class:`grid grid-cols-2 sm:grid-cols-3 gap-2`},O={class:`text-muted-foreground`},k={class:`ml-1 font-medium`},A={class:`text-sm font-medium mb-2`},j={class:`grid grid-cols-2 sm:grid-cols-3 gap-2`},M={class:`text-muted-foreground`},N={class:`ml-1 font-medium`},P={key:0},F={class:`text-sm font-medium mb-2`},I={class:`grid grid-cols-2 sm:grid-cols-3 gap-2`},L={class:`text-muted-foreground`},R={class:`ml-1 font-medium`},z={class:`grid grid-cols-1 sm:grid-cols-2 gap-4`},B={class:`p-3 bg-muted rounded-lg`},V={class:`text-sm font-medium mb-2 text-red-600`},H={class:`space-y-1 text-xs`},U={key:0,class:`text-muted-foreground`},W={class:`p-3 bg-muted rounded-lg`},G={class:`text-sm font-medium mb-2 text-red-600`},K={class:`space-y-1 text-xs`},ce={key:0,class:`text-muted-foreground`},le={key:1,class:`p-3 bg-green-50 dark:bg-green-950 rounded-lg`},ue={class:`text-sm font-medium mb-2 text-green-600`},de={class:`flex flex-wrap gap-3 text-xs sm:text-sm`},fe={key:0,class:`flex items-center gap-1`},pe={key:1,class:`flex items-center gap-1`},me={key:2,class:`flex items-center gap-1`},he={key:2,class:`p-3 bg-muted rounded-lg`},ge={class:`text-sm font-medium mb-2`},_e={class:`flex flex-wrap gap-3 text-xs sm:text-sm`},ve={key:0,class:`flex items-center gap-1`},ye={key:1,class:`flex items-center gap-1`},be={key:1,class:`space-y-4`},xe={class:`flex justify-between items-start gap-2`},Se={class:`text-sm font-medium mb-2`},Ce={class:`flex flex-wrap gap-3 text-xs sm:text-sm`},we={class:`flex items-center gap-1`},Te={class:`flex items-center gap-1`},Ee={class:`flex items-center gap-1`},De={key:0},Oe={class:`text-sm font-medium mb-2`},ke={class:`grid grid-cols-2 sm:grid-cols-3 gap-2`},Ae={class:`text-muted-foreground`},je={class:`ml-1 font-medium`},Me={key:1},Ne={class:`text-sm font-medium mb-2`},Pe={class:`grid grid-cols-2 sm:grid-cols-3 gap-2`},Fe={class:`text-muted-foreground`},Ie={class:`ml-1 font-medium`},Le={key:2},Re={class:`text-sm font-medium mb-2`},ze={class:`grid grid-cols-2 sm:grid-cols-3 gap-2`},Be={key:0,class:`text-xs sm:text-sm`},q={class:`text-muted-foreground`},Ve={class:`ml-1 font-medium`},J=ee({__name:`MessagesView`,setup(ee){let J=ne(),{t:Y}=te(),{SHIPS:X,DEFENSES:Z,BUILDINGS:He}=re(),Q=a(`battles`),Ue=o(()=>[...J.player.battleReports].sort((e,t)=>t.timestamp-e.timestamp)),We=o(()=>[...J.player.spyReports].sort((e,t)=>t.timestamp-e.timestamp)),$=e=>e?Object.values(e).some(e=>e>0):!1;return(a,o)=>(p(),r(`div`,ie,[t(`h1`,ae,l(e(Y)(`messagesView.title`)),1),t(`div`,oe,[s(e(v),{onClick:o[0]||=e=>Q.value=`battles`,variant:Q.value===`battles`?`default`:`ghost`,class:`rounded-b-none`},{default:d(()=>[c(l(e(Y)(`messagesView.battleReports`))+` `,1),e(J).player.battleReports.length>0?(p(),i(e(g),{key:0,variant:`secondary`,class:`ml-1`},{default:d(()=>[c(l(e(J).player.battleReports.length),1)]),_:1})):f(``,!0)]),_:1},8,[`variant`]),s(e(v),{onClick:o[1]||=e=>Q.value=`spy`,variant:Q.value===`spy`?`default`:`ghost`,class:`rounded-b-none`},{default:d(()=>[c(l(e(Y)(`messagesView.spyReports`))+` `,1),e(J).player.spyReports.length>0?(p(),i(e(g),{key:0,variant:`secondary`,class:`ml-1`},{default:d(()=>[c(l(e(J).player.spyReports.length),1)]),_:1})):f(``,!0)]),_:1},8,[`variant`])]),Q.value===`battles`?(p(),r(`div`,se,[e(J).player.battleReports.length===0?(p(),i(e(x),{key:0},{default:d(()=>[s(e(b),{class:`py-8 text-center text-muted-foreground`},{default:d(()=>[c(l(e(Y)(`messagesView.noBattleReports`)),1)]),_:1})]),_:1})):f(``,!0),(p(!0),r(n,null,u(Ue.value,a=>(p(),i(e(x),{key:a.id},{default:d(()=>[s(e(C),null,{default:d(()=>[t(`div`,w,[t(`div`,T,[s(e(S),{class:`text-base sm:text-lg`},{default:d(()=>[c(l(e(Y)(`messagesView.battleReport`)),1)]),_:1}),s(e(m),{class:`text-xs sm:text-sm`},{default:d(()=>[c(l(e(h)(a.timestamp)),1)]),_:2},1024)]),s(e(g),{variant:a.winner===`attacker`?`default`:a.winner===`defender`?`destructive`:`secondary`},{default:d(()=>[c(l(a.winner===`attacker`?e(Y)(`messagesView.victory`):a.winner===`defender`?e(Y)(`messagesView.defeat`):e(Y)(`messagesView.draw`)),1)]),_:2},1032,[`variant`])])]),_:2},1024),s(e(b),{class:`space-y-4`},{default:d(()=>[t(`div`,null,[t(`p`,E,l(e(Y)(`messagesView.attackerFleet`))+`:`,1),t(`div`,D,[(p(!0),r(n,null,u(a.attackerFleet,(n,i)=>(p(),r(`div`,{key:i,class:`text-xs sm:text-sm`},[t(`span`,O,l(e(X)[i].name)+`:`,1),t(`span`,k,l(n),1)]))),128))])]),t(`div`,null,[t(`p`,A,l(e(Y)(`messagesView.defenderFleet`))+`:`,1),t(`div`,j,[(p(!0),r(n,null,u(a.defenderFleet,(n,i)=>(p(),r(`div`,{key:i,class:`text-xs sm:text-sm`},[t(`span`,M,l(e(X)[i].name)+`:`,1),t(`span`,N,l(n),1)]))),128))])]),$(a.defenderDefense)?(p(),r(`div`,P,[t(`p`,F,l(e(Y)(`messagesView.defenderDefense`))+`:`,1),t(`div`,I,[(p(!0),r(n,null,u(a.defenderDefense,(n,i)=>(p(),r(`div`,{key:i,class:`text-xs sm:text-sm`},[t(`span`,L,l(e(Z)[i].name)+`:`,1),t(`span`,R,l(n),1)]))),128))])])):f(``,!0),t(`div`,z,[t(`div`,B,[t(`p`,V,l(e(Y)(`messagesView.attackerLosses`))+`:`,1),t(`div`,H,[(p(!0),r(n,null,u(a.attackerLosses,(t,n)=>(p(),r(`div`,{key:n},l(e(X)[n].name)+`: `+l(t),1))),128)),Object.keys(a.attackerLosses).length===0?(p(),r(`p`,U,l(e(Y)(`messagesView.noLosses`)),1)):f(``,!0)])]),t(`div`,W,[t(`p`,G,l(e(Y)(`messagesView.defenderLosses`))+`:`,1),t(`div`,K,[(p(!0),r(n,null,u(a.defenderLosses.fleet,(t,n)=>(p(),r(`div`,{key:n},l(e(X)[n].name)+`: `+l(t),1))),128)),(p(!0),r(n,null,u(a.defenderLosses.defense,(t,n)=>(p(),r(`div`,{key:n},l(e(Z)[n].name)+`: `+l(t),1))),128)),Object.keys(a.defenderLosses.fleet).length===0&&Object.keys(a.defenderLosses.defense).length===0?(p(),r(`p`,ce,l(e(Y)(`messagesView.noLosses`)),1)):f(``,!0)])])]),a.plunder.metal>0||a.plunder.crystal>0||a.plunder.deuterium>0?(p(),r(`div`,le,[t(`p`,ue,l(e(Y)(`messagesView.plunder`))+`:`,1),t(`div`,de,[a.plunder.metal>0?(p(),r(`span`,fe,[s(_,{type:`metal`,size:`sm`}),c(` `+l(e(y)(a.plunder.metal)),1)])):f(``,!0),a.plunder.crystal>0?(p(),r(`span`,pe,[s(_,{type:`crystal`,size:`sm`}),c(` `+l(e(y)(a.plunder.crystal)),1)])):f(``,!0),a.plunder.deuterium>0?(p(),r(`span`,me,[s(_,{type:`deuterium`,size:`sm`}),c(` `+l(e(y)(a.plunder.deuterium)),1)])):f(``,!0)])])):f(``,!0),a.debrisField.metal>0||a.debrisField.crystal>0?(p(),r(`div`,he,[t(`p`,ge,l(e(Y)(`messagesView.debrisField`))+`:`,1),t(`div`,_e,[a.debrisField.metal>0?(p(),r(`span`,ve,[s(_,{type:`metal`,size:`sm`}),c(` `+l(e(y)(a.debrisField.metal)),1)])):f(``,!0),a.debrisField.crystal>0?(p(),r(`span`,ye,[s(_,{type:`crystal`,size:`sm`}),c(` `+l(e(y)(a.debrisField.crystal)),1)])):f(``,!0)])])):f(``,!0)]),_:2},1024)]),_:2},1024))),128))])):f(``,!0),Q.value===`spy`?(p(),r(`div`,be,[e(J).player.spyReports.length===0?(p(),i(e(x),{key:0},{default:d(()=>[s(e(b),{class:`py-8 text-center text-muted-foreground`},{default:d(()=>[c(l(e(Y)(`messagesView.noSpyReports`)),1)]),_:1})]),_:1})):f(``,!0),(p(!0),r(n,null,u(We.value,a=>(p(),i(e(x),{key:a.id},{default:d(()=>[s(e(C),null,{default:d(()=>[t(`div`,xe,[t(`div`,null,[s(e(S),{class:`text-base sm:text-lg`},{default:d(()=>[c(l(e(Y)(`messagesView.spyReport`)),1)]),_:1}),s(e(m),{class:`text-xs sm:text-sm`},{default:d(()=>[c(l(e(h)(a.timestamp)),1)]),_:2},1024)]),s(e(g),{variant:`outline`},{default:d(()=>[c(l(a.targetPlanetId),1)]),_:2},1024)])]),_:2},1024),s(e(b),{class:`space-y-4`},{default:d(()=>[t(`div`,null,[t(`p`,Se,l(e(Y)(`messagesView.resources`))+`:`,1),t(`div`,Ce,[t(`span`,we,[s(_,{type:`metal`,size:`sm`}),c(` `+l(e(y)(a.resources.metal)),1)]),t(`span`,Te,[s(_,{type:`crystal`,size:`sm`}),c(` `+l(e(y)(a.resources.crystal)),1)]),t(`span`,Ee,[s(_,{type:`deuterium`,size:`sm`}),c(` `+l(e(y)(a.resources.deuterium)),1)])])]),a.fleet?(p(),r(`div`,De,[t(`p`,Oe,l(e(Y)(`messagesView.fleet`))+`:`,1),t(`div`,ke,[(p(!0),r(n,null,u(a.fleet,(n,i)=>(p(),r(`div`,{key:i,class:`text-xs sm:text-sm`},[t(`span`,Ae,l(e(X)[i].name)+`:`,1),t(`span`,je,l(n),1)]))),128))])])):f(``,!0),a.defense&&$(a.defense)?(p(),r(`div`,Me,[t(`p`,Ne,l(e(Y)(`messagesView.defense`))+`:`,1),t(`div`,Pe,[(p(!0),r(n,null,u(a.defense,(n,i)=>(p(),r(`div`,{key:i,class:`text-xs sm:text-sm`},[t(`span`,Fe,l(e(Z)[i].name)+`:`,1),t(`span`,Ie,l(n),1)]))),128))])])):f(``,!0),a.buildings?(p(),r(`div`,Le,[t(`p`,Re,l(e(Y)(`messagesView.buildings`))+`:`,1),t(`div`,ze,[(p(!0),r(n,null,u(a.buildings,(i,a)=>(p(),r(n,{key:a},[i&&i>0?(p(),r(`div`,Be,[t(`span`,q,l(e(He)[a].name)+`:`,1),t(`span`,Ve,`Lv `+l(i),1)])):f(``,!0)],64))),128))])])):f(``,!0)]),_:2},1024)]),_:2},1024))),128))])):f(``,!0)]))}});export{J as default}; \ No newline at end of file diff --git a/docs/assets/MessagesView-DeWAwjjT.js b/docs/assets/MessagesView-DeWAwjjT.js new file mode 100644 index 0000000..4b83ec1 --- /dev/null +++ b/docs/assets/MessagesView-DeWAwjjT.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Ct as n,Dt as r,Et as i,Jt as a,Kt as o,Mt as s,Nt as c,On as l,Ot as u,hn as d,in as f,jt as p,kt as m,tn as h,xt as g}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-DiSZfaku.js";import"./vendor-reka-ui-ICOW9z5F.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import{I as _,c as v,n as y}from"./vendor-icons-B6ER66fi.js";import"./TooltipProvider-Bx7lfIFp.js";import{t as b}from"./CardDescription-CtUtXM5o.js";import"./game-config-D-D7cMgJ.js";import{A as x,F as S,I as C,M as w,P as T,S as E,b as D,c as O,l as k,n as A,r as j,s as M,u as N,v as P,w as F,x as I,y as L}from"./index-BLxCTx9W.js";import{t as R}from"./useGameConfig-chMIsHFg.js";import{t as z}from"./BattleReportDialog-CsuxK00l.js";var B={key:0,class:`space-y-4`},V={class:`p-3 bg-muted rounded-lg`},H={class:`text-sm font-medium mb-2`},U={key:0,class:`text-xs text-muted-foreground`},W={key:1,class:`text-xs text-muted-foreground`},ee={class:`text-sm font-medium mb-2`},te={class:`flex flex-wrap gap-3 text-xs sm:text-sm`},G={class:`flex items-center gap-1`},K={class:`flex items-center gap-1`},q={class:`flex items-center gap-1`},J={class:`flex items-center gap-1`},Y={key:0},X={class:`text-sm font-medium mb-2`},Z={class:`grid grid-cols-2 sm:grid-cols-3 gap-2 text-xs sm:text-sm`},ne={class:`text-muted-foreground`},re={class:`ml-1 font-medium`},ie={key:1},ae={class:`text-sm font-medium mb-2`},oe={class:`grid grid-cols-2 sm:grid-cols-3 gap-2 text-xs sm:text-sm`},se={key:0,class:`block`},ce={class:`text-muted-foreground`},le={class:`ml-1 font-medium`},ue={key:2},de={class:`text-sm font-medium mb-2`},fe={class:`grid grid-cols-2 sm:grid-cols-3 gap-2 text-xs sm:text-sm`},pe={class:`text-muted-foreground`},me={class:`ml-1 font-medium`},Q=c({__name:`SpyReportDialog`,props:{report:{},open:{type:Boolean}},emits:[`update:open`],setup(c,{emit:g}){let v=c,y=g,b=C(),x=S(),{t:w}=T(),{SHIPS:O,DEFENSES:k,BUILDINGS:M}=R(),N=d(v.open),z=i(()=>v.report?b.player.planets.find(e=>e.id===v.report.targetPlanetId)||Object.values(x.planets).find(e=>e.id===v.report.targetPlanetId):null);h(()=>v.open,e=>{N.value=e}),h(N,e=>{y(`update:open`,e)});let Q=e=>e?Object.values(e).some(e=>e>0):!1;return(i,d)=>(o(),u(t(E),{open:N.value,"onUpdate:open":d[0]||=e=>N.value=e},{default:f(()=>[s(t(I),{class:`max-w-2xl max-h-[90vh] overflow-y-auto`},{default:f(()=>[s(t(L),null,{default:f(()=>[s(t(P),{class:`flex items-center gap-2`},{default:f(()=>[s(t(_),{class:`h-5 w-5`}),p(` `+l(t(w)(`messagesView.spyReport`)),1)]),_:1}),c.report?(o(),u(t(D),{key:0},{default:f(()=>[p(l(t(A)(c.report.timestamp)),1)]),_:1})):m(``,!0)]),_:1}),c.report?(o(),e(`div`,B,[r(`div`,V,[r(`p`,H,l(t(w)(`messagesView.targetPlanet`)),1),z.value?(o(),e(`p`,U,l(z.value.name)+` [`+l(z.value.position.galaxy)+`:`+l(z.value.position.system)+`:`+l(z.value.position.position)+`] `,1)):(o(),e(`p`,W,l(c.report.targetPlanetId),1))]),r(`div`,null,[r(`p`,ee,l(t(w)(`messagesView.resources`))+`:`,1),r(`div`,te,[r(`span`,G,[s(F,{type:`metal`,size:`sm`}),p(` `+l(t(j)(c.report.resources.metal)),1)]),r(`span`,K,[s(F,{type:`crystal`,size:`sm`}),p(` `+l(t(j)(c.report.resources.crystal)),1)]),r(`span`,q,[s(F,{type:`deuterium`,size:`sm`}),p(` `+l(t(j)(c.report.resources.deuterium)),1)]),r(`span`,J,[s(F,{type:`darkMatter`,size:`sm`}),p(` `+l(t(j)(c.report.resources.darkMatter)),1)])])]),c.report.fleet&&Object.keys(c.report.fleet).length>0?(o(),e(`div`,Y,[r(`p`,X,l(t(w)(`messagesView.fleet`))+`:`,1),r(`div`,Z,[(o(!0),e(n,null,a(c.report.fleet,(n,i)=>(o(),e(`div`,{key:i},[r(`span`,ne,l(t(O)[i].name)+`:`,1),r(`span`,re,l(n),1)]))),128))])])):m(``,!0),c.report.defense&&Q(c.report.defense)?(o(),e(`div`,ie,[r(`p`,ae,l(t(w)(`messagesView.defense`))+`:`,1),r(`div`,oe,[(o(!0),e(n,null,a(c.report.defense,(n,i)=>(o(),e(`div`,{key:i},[n&&n>0?(o(),e(`span`,se,[r(`span`,ce,l(t(k)[i].name)+`:`,1),r(`span`,le,l(n),1)])):m(``,!0)]))),128))])])):m(``,!0),c.report.buildings&&Object.keys(c.report.buildings).length>0?(o(),e(`div`,ue,[r(`p`,de,l(t(w)(`messagesView.buildings`))+`:`,1),r(`div`,fe,[(o(!0),e(n,null,a(c.report.buildings,(n,i)=>(o(),e(`div`,{key:i},[r(`span`,pe,l(t(M)[i].name)+`:`,1),r(`span`,me,`Lv.`+l(n),1)]))),128))])])):m(``,!0)])):m(``,!0)]),_:1})]),_:1},8,[`open`]))}}),he={class:`container mx-auto p-4 sm:p-6 space-y-6`},ge={class:`text-2xl sm:text-3xl font-bold`},_e={class:`flex gap-2 border-b`},ve={key:0,class:`space-y-2`},ye={class:`flex justify-between items-center gap-2`},$={class:`flex items-center gap-2 min-w-0 flex-1`},be={key:1,class:`space-y-2`},xe={class:`flex justify-between items-center gap-2`},Se={class:`flex items-center gap-2 min-w-0 flex-1`},Ce=c({__name:`MessagesView`,setup(c){let h=C(),{t:S}=T(),E=d(`battles`),D=d(!1),j=d(!1),P=d(null),F=d(null),I=i(()=>[...h.player.battleReports].sort((e,t)=>t.timestamp-e.timestamp)),L=i(()=>[...h.player.spyReports].sort((e,t)=>t.timestamp-e.timestamp)),R=i(()=>h.player.battleReports.filter(e=>!e.read).length),B=i(()=>h.player.spyReports.filter(e=>!e.read).length),V=e=>{P.value=e,D.value=!0,e.read||=!0},H=e=>{F.value=e,j.value=!0,e.read||=!0},U=e=>{let t=h.player.battleReports.findIndex(t=>t.id===e);t>-1&&h.player.battleReports.splice(t,1)},W=e=>{let t=h.player.spyReports.findIndex(t=>t.id===e);t>-1&&h.player.spyReports.splice(t,1)};return(i,c)=>(o(),e(`div`,he,[r(`h1`,ge,l(t(S)(`messagesView.title`)),1),r(`div`,_e,[s(t(w),{onClick:c[0]||=e=>E.value=`battles`,variant:E.value===`battles`?`default`:`ghost`,class:`rounded-b-none`},{default:f(()=>[s(t(v),{class:`h-4 w-4 mr-2`}),p(` `+l(t(S)(`messagesView.battles`))+` `,1),R.value>0?(o(),u(t(x),{key:0,variant:`destructive`,class:`ml-2`},{default:f(()=>[p(l(R.value),1)]),_:1})):m(``,!0)]),_:1},8,[`variant`]),s(t(w),{onClick:c[1]||=e=>E.value=`spy`,variant:E.value===`spy`?`default`:`ghost`,class:`rounded-b-none`},{default:f(()=>[s(t(_),{class:`h-4 w-4 mr-2`}),p(` `+l(t(S)(`messagesView.spy`))+` `,1),B.value>0?(o(),u(t(x),{key:0,variant:`destructive`,class:`ml-2`},{default:f(()=>[p(l(B.value),1)]),_:1})):m(``,!0)]),_:1},8,[`variant`])]),E.value===`battles`?(o(),e(`div`,ve,[t(h).player.battleReports.length===0?(o(),u(t(N),{key:0},{default:f(()=>[s(t(k),{class:`py-8 text-center text-muted-foreground`},{default:f(()=>[p(l(t(S)(`messagesView.noBattleReports`)),1)]),_:1})]),_:1})):m(``,!0),(o(!0),e(n,null,a(I.value,e=>(o(),u(t(N),{key:e.id,onClick:t=>V(e),class:`cursor-pointer hover:shadow-md transition-shadow`},{default:f(()=>[s(t(O),{class:`pb-3`},{default:f(()=>[r(`div`,ye,[r(`div`,$,[s(t(v),{class:`h-4 w-4 flex-shrink-0`}),s(t(M),{class:`text-base sm:text-lg`},{default:f(()=>[p(l(t(S)(`messagesView.battleReport`)),1)]),_:1}),e.read?m(``,!0):(o(),u(t(x),{key:0,variant:`default`,class:`text-xs`},{default:f(()=>[p(l(t(S)(`messagesView.unread`)),1)]),_:1})),s(t(x),{variant:e.winner===`attacker`?`default`:e.winner===`defender`?`destructive`:`secondary`,class:`text-xs`},{default:f(()=>[p(l(e.winner===`attacker`?t(S)(`messagesView.victory`):e.winner===`defender`?t(S)(`messagesView.defeat`):t(S)(`messagesView.draw`)),1)]),_:2},1032,[`variant`])]),s(t(w),{onClick:g(t=>U(e.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:f(()=>[s(t(y),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),s(t(b),{class:`text-xs sm:text-sm`},{default:f(()=>[p(l(t(A)(e.timestamp)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))])):m(``,!0),E.value===`spy`?(o(),e(`div`,be,[t(h).player.spyReports.length===0?(o(),u(t(N),{key:0},{default:f(()=>[s(t(k),{class:`py-8 text-center text-muted-foreground`},{default:f(()=>[p(l(t(S)(`messagesView.noSpyReports`)),1)]),_:1})]),_:1})):m(``,!0),(o(!0),e(n,null,a(L.value,e=>(o(),u(t(N),{key:e.id,onClick:t=>H(e),class:`cursor-pointer hover:shadow-md transition-shadow`},{default:f(()=>[s(t(O),{class:`pb-3`},{default:f(()=>[r(`div`,xe,[r(`div`,Se,[s(t(_),{class:`h-4 w-4 flex-shrink-0`}),s(t(M),{class:`text-base sm:text-lg`},{default:f(()=>[p(l(t(S)(`messagesView.spyReport`)),1)]),_:1}),e.read?m(``,!0):(o(),u(t(x),{key:0,variant:`default`,class:`text-xs`},{default:f(()=>[p(l(t(S)(`messagesView.unread`)),1)]),_:1})),s(t(x),{variant:`outline`,class:`text-xs`},{default:f(()=>[p(l(e.targetPlanetId),1)]),_:2},1024)]),s(t(w),{onClick:g(t=>W(e.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:f(()=>[s(t(y),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),s(t(b),{class:`text-xs sm:text-sm`},{default:f(()=>[p(l(t(A)(e.timestamp)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))])):m(``,!0),s(z,{open:D.value,"onUpdate:open":c[2]||=e=>D.value=e,report:P.value},null,8,[`open`,`report`]),s(Q,{open:j.value,"onUpdate:open":c[3]||=e=>j.value=e,report:F.value},null,8,[`open`,`report`])]))}});export{Ce as default}; \ No newline at end of file diff --git a/docs/assets/OfficersView-B0Yv-kWu.js b/docs/assets/OfficersView-B0Yv-kWu.js deleted file mode 100644 index 4b03726..0000000 --- a/docs/assets/OfficersView-B0Yv-kWu.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,G as t,H as n,J as r,K as i,Ot as a,St as o,W as s,X as c,Y as l,Z as ee,jt as u,lt as te,pt as d,q as f,st as p}from"./vendor-ui-DBxeWLyT.js";import"./vendor-vue-Bqq1sBNf.js";import{t as ne}from"./CardDescription-CRV0m8La.js";import{B as re,Bt as ie,H as ae,I as oe,It as m,L as se,N as h,Nt as ce,P as g,Pt as _,R as v,Rt as y,V as b,Vt as le,W as x,dt as S,ft as C,lt as w,ot as T,ut as E,z as D}from"./index-Cch-Ig40.js";import{t as O}from"./useGameConfig-D2EZdt1x.js";import{t as k}from"./AlertDialog-_72FqRCT.js";var A={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},j={class:`text-2xl sm:text-3xl font-bold`},M={class:`grid grid-cols-2 sm:grid-cols-3 gap-4 sm:gap-6`},N={class:`flex justify-between items-start gap-2`},P={class:`min-w-0 flex-1`},F={key:0,class:`p-3 bg-blue-50 dark:bg-blue-950 rounded-lg`},I={class:`space-y-1 text-xs sm:text-sm`},L={class:`font-medium text-blue-700 dark:text-blue-300`},R={class:`text-muted-foreground`},z={class:`text-muted-foreground`},B={class:`space-y-2`},V={class:`text-sm font-medium text-muted-foreground`},H={class:`space-y-1.5`},U={class:`flex items-center gap-2`},W={class:`text-xs`},ue={class:`flex items-center gap-2`},de={class:`text-xs`},G={class:`flex items-center gap-2`},fe={class:`text-xs`},pe={key:0,class:`flex items-center gap-2`},me={class:`text-xs`},he={class:`space-y-2`},ge={class:`text-sm font-medium text-muted-foreground`},_e={class:`space-y-1 text-xs sm:text-sm`},ve={key:0,class:`flex items-center gap-2`},ye={key:1,class:`flex items-center gap-2`},be={key:2,class:`flex items-center gap-2`},xe={key:3,class:`flex items-center gap-2`},Se={key:4,class:`flex items-center gap-2`},Ce={key:5,class:`flex items-center gap-2`},we={key:6,class:`flex items-center gap-2`},Te={key:7,class:`flex items-center gap-2`},Ee={key:8,class:`flex items-center gap-2`},De={key:9,class:`flex items-center gap-2`},Oe={class:`flex gap-2`},K=ee({__name:`OfficersView`,setup(ee){let{t:K}=ie(),{OFFICERS:q}=O(),J=le(),Y=s(()=>J.currentPlanet),X=o(null),Z=o(null),Q=e=>{let t=J.player.officers[e],n=Date.now();return t.active&&(!t.expiresAt||t.expiresAt>n)},ke=e=>J.player.officers[e].expiresAt||0,Ae=e=>{let t=J.player.officers[e];if(!t.expiresAt)return 0;let n=Date.now();return Math.max(0,Math.floor((t.expiresAt-n)/1e3))},$=e=>{if(!Y.value)return!1;let t=q.value[e];return Y.value.resources.metal>=t.cost.metal&&Y.value.resources.crystal>=t.cost.crystal&&Y.value.resources.deuterium>=t.cost.deuterium&&Y.value.resources.darkMatter>=t.cost.darkMatter},je=(e,t=7)=>{if(!J.currentPlanet)return!1;let n=v(e);return h(J.currentPlanet.resources,n)?(g(J.currentPlanet.resources,n),J.player.officers[e]=oe(e,t),!0):!1},Me=e=>{Z.value?.show({title:K(`officersView.hireTitle`),message:K(`officersView.hireMessage`).replace(`{name}`,q.value[e].name),onConfirm:()=>{je(e,7)||X.value?.show({title:K(`officersView.hireFailed`),message:K(`officersView.insufficientResources`)})}})},Ne=(e,t=7)=>{if(!J.currentPlanet)return!1;let n=v(e);if(!h(J.currentPlanet.resources,n))return!1;g(J.currentPlanet.resources,n);let r=Date.now();return J.player.officers[e]=D(J.player.officers[e],t,r),!0},Pe=e=>{Z.value?.show({title:K(`officersView.renewTitle`),message:K(`officersView.renewMessage`).replace(`{name}`,q.value[e].name),onConfirm:()=>{Ne(e,7)||X.value?.show({title:K(`officersView.renewFailed`),message:K(`officersView.insufficientResources`)})}})},Fe=e=>{Z.value?.show({title:K(`officersView.dismissTitle`),message:K(`officersView.dismissMessage`).replace(`{name}`,q.value[e].name),onConfirm:()=>{J.player.officers[e]=se(e)}})};return(o,s)=>(p(),r(`div`,A,[t(`h1`,j,u(e(K)(`officersView.title`)),1),t(`div`,M,[(p(!0),r(n,null,te(Object.values(e(T)),n=>(p(),i(e(C),{key:n},{default:d(()=>[c(e(E),null,{default:d(()=>[t(`div`,N,[t(`div`,P,[c(e(w),{class:`text-lg sm:text-xl`},{default:d(()=>[l(u(e(q)[n].name),1)]),_:2},1024),c(e(ne),{class:`text-xs sm:text-sm`},{default:d(()=>[l(u(e(q)[n].description),1)]),_:2},1024)]),Q(n)?(p(),i(e(m),{key:0,variant:`default`,class:`text-xs`},{default:d(()=>[l(u(e(K)(`officersView.activated`)),1)]),_:1})):(p(),i(e(m),{key:1,variant:`outline`,class:`text-xs`},{default:d(()=>[l(u(e(K)(`officersView.inactive`)),1)]),_:1}))])]),_:2},1024),c(e(S),{class:`space-y-4`},{default:d(()=>[Q(n)?(p(),r(`div`,F,[t(`div`,I,[t(`p`,L,u(e(K)(`officersView.activeStatus`)),1),t(`p`,R,u(e(K)(`officersView.expirationTime`))+`: `+u(e(re)(ke(n))),1),t(`p`,z,u(e(K)(`officersView.remainingTime`))+`: `+u(e(ae)(Ae(n))),1)])])):f(``,!0),t(`div`,B,[t(`p`,V,u(e(K)(`officersView.recruitCost`))+` (7`+u(e(K)(`officersView.days`))+`):`,1),t(`div`,H,[t(`div`,U,[c(_,{type:`metal`,size:`sm`}),t(`span`,W,u(e(K)(`resources.metal`))+`:`,1),t(`span`,{class:a([`font-medium text-sm`,Y.value?e(x)(Y.value.resources.metal,e(q)[n].cost.metal):``])},u(e(b)(e(q)[n].cost.metal)),3)]),t(`div`,ue,[c(_,{type:`crystal`,size:`sm`}),t(`span`,de,u(e(K)(`resources.crystal`))+`:`,1),t(`span`,{class:a([`font-medium text-sm`,Y.value?e(x)(Y.value.resources.crystal,e(q)[n].cost.crystal):``])},u(e(b)(e(q)[n].cost.crystal)),3)]),t(`div`,G,[c(_,{type:`deuterium`,size:`sm`}),t(`span`,fe,u(e(K)(`resources.deuterium`))+`:`,1),t(`span`,{class:a([`font-medium text-sm`,Y.value?e(x)(Y.value.resources.deuterium,e(q)[n].cost.deuterium):``])},u(e(b)(e(q)[n].cost.deuterium)),3)]),e(q)[n].cost.darkMatter>0?(p(),r(`div`,pe,[c(_,{type:`darkMatter`,size:`sm`}),t(`span`,me,u(e(K)(`resources.darkMatter`))+`:`,1),t(`span`,{class:a([`font-medium text-sm`,Y.value?e(x)(Y.value.resources.darkMatter,e(q)[n].cost.darkMatter):``])},u(e(b)(e(q)[n].cost.darkMatter)),3)])):f(``,!0)])]),t(`div`,he,[t(`p`,ge,u(e(K)(`officersView.benefitsBonus`))+`:`,1),t(`div`,_e,[e(q)[n].benefits.resourceProductionBonus?(p(),r(`div`,ve,[s[0]||=t(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),t(`span`,null,u(e(K)(`officersView.resourceProduction`))+` +`+u(e(q)[n].benefits.resourceProductionBonus)+`%`,1)])):f(``,!0),e(q)[n].benefits.darkMatterProductionBonus?(p(),r(`div`,ye,[s[1]||=t(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),t(`span`,null,u(e(K)(`officersView.darkMatterProduction`))+` +`+u(e(q)[n].benefits.darkMatterProductionBonus)+`%`,1)])):f(``,!0),e(q)[n].benefits.buildingSpeedBonus?(p(),r(`div`,be,[s[2]||=t(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),t(`span`,null,u(e(K)(`officersView.buildingSpeed`))+` +`+u(e(q)[n].benefits.buildingSpeedBonus)+`%`,1)])):f(``,!0),e(q)[n].benefits.researchSpeedBonus?(p(),r(`div`,xe,[s[3]||=t(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),t(`span`,null,u(e(K)(`officersView.researchSpeed`))+` +`+u(e(q)[n].benefits.researchSpeedBonus)+`%`,1)])):f(``,!0),e(q)[n].benefits.fleetSpeedBonus?(p(),r(`div`,Se,[s[4]||=t(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),t(`span`,null,u(e(K)(`officersView.fleetSpeed`))+` +`+u(e(q)[n].benefits.fleetSpeedBonus)+`%`,1)])):f(``,!0),e(q)[n].benefits.fuelConsumptionReduction?(p(),r(`div`,Ce,[s[5]||=t(`span`,{class:`text-green-600 dark:text-green-400`},`↓`,-1),t(`span`,null,u(e(K)(`officersView.fuelConsumption`))+` -`+u(e(q)[n].benefits.fuelConsumptionReduction)+`%`,1)])):f(``,!0),e(q)[n].benefits.defenseBonus?(p(),r(`div`,we,[s[6]||=t(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),t(`span`,null,u(e(K)(`officersView.defense`))+` +`+u(e(q)[n].benefits.defenseBonus)+`%`,1)])):f(``,!0),e(q)[n].benefits.storageCapacityBonus?(p(),r(`div`,Te,[s[7]||=t(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),t(`span`,null,u(e(K)(`officersView.storageCapacity`))+` +`+u(e(q)[n].benefits.storageCapacityBonus)+`%`,1)])):f(``,!0),e(q)[n].benefits.additionalBuildQueue?(p(),r(`div`,Ee,[s[8]||=t(`span`,{class:`text-green-600 dark:text-green-400`},`+`,-1),t(`span`,null,u(e(K)(`officersView.buildQueue`))+` +`+u(e(q)[n].benefits.additionalBuildQueue),1)])):f(``,!0),e(q)[n].benefits.additionalFleetSlots?(p(),r(`div`,De,[s[9]||=t(`span`,{class:`text-green-600 dark:text-green-400`},`+`,-1),t(`span`,null,u(e(K)(`officersView.fleetSlots`))+` +`+u(e(q)[n].benefits.additionalFleetSlots),1)])):f(``,!0)])]),t(`div`,Oe,[Q(n)?f(``,!0):(p(),i(e(y),{key:0,onClick:e=>Me(n),disabled:!$(n),class:`flex-1`},{default:d(()=>[l(u(e(K)(`officersView.hire`))+` (7`+u(e(K)(`officersView.days`))+`) `,1)]),_:1},8,[`onClick`,`disabled`])),Q(n)?(p(),i(e(y),{key:1,onClick:e=>Pe(n),disabled:!$(n),class:`flex-1`},{default:d(()=>[l(u(e(K)(`officersView.renew`))+` (7`+u(e(K)(`officersView.days`))+`) `,1)]),_:1},8,[`onClick`,`disabled`])):f(``,!0),Q(n)?(p(),i(e(y),{key:2,onClick:e=>Fe(n),variant:`outline`,size:`sm`},{default:d(()=>[l(u(e(K)(`officersView.dismiss`)),1)]),_:1},8,[`onClick`])):f(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),c(k,{ref_key:`alertDialog`,ref:X},null,512),c(ce,{ref_key:`confirmDialog`,ref:Z},null,512)]))}});export{K as default}; \ No newline at end of file diff --git a/docs/assets/OfficersView-Dwb7TW1z.js b/docs/assets/OfficersView-Dwb7TW1z.js new file mode 100644 index 0000000..382dfff --- /dev/null +++ b/docs/assets/OfficersView-Dwb7TW1z.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Ct as n,Dt as r,Et as ee,Jt as te,Kt as i,Mt as a,Nt as o,On as s,Ot as c,Q as l,Tn as u,Z as d,at as ne,hn as f,in as p,it as re,jt as m,kt as h,ot as g,st as _}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-DiSZfaku.js";import"./vendor-reka-ui-ICOW9z5F.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import{t as ie}from"./CardDescription-CtUtXM5o.js";import{p as v}from"./game-config-D-D7cMgJ.js";import{A as y,C as b,I as ae,M as x,P as oe,c as se,i as ce,l as le,n as S,o as C,r as w,s as T,u as E,w as D}from"./index-BLxCTx9W.js";import{t as O}from"./useGameConfig-chMIsHFg.js";import{t as k}from"./AlertDialog-vN9u2C5f.js";var A={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},j={class:`text-2xl sm:text-3xl font-bold`},M={class:`grid grid-cols-2 sm:grid-cols-3 gap-4 sm:gap-6`},N={class:`flex justify-between items-start gap-2`},P={class:`min-w-0 flex-1`},F={key:0,class:`p-3 bg-blue-50 dark:bg-blue-950 rounded-lg`},I={class:`space-y-1 text-xs sm:text-sm`},L={class:`font-medium text-blue-700 dark:text-blue-300`},R={class:`text-muted-foreground`},z={class:`text-muted-foreground`},B={class:`space-y-2`},V={class:`text-sm font-medium text-muted-foreground`},H={class:`space-y-1.5`},U={class:`flex items-center gap-2`},W={class:`text-xs`},ue={class:`flex items-center gap-2`},de={class:`text-xs`},G={class:`flex items-center gap-2`},fe={class:`text-xs`},pe={key:0,class:`flex items-center gap-2`},me={class:`text-xs`},he={class:`space-y-2`},ge={class:`text-sm font-medium text-muted-foreground`},_e={class:`space-y-1 text-xs sm:text-sm`},ve={key:0,class:`flex items-center gap-2`},ye={key:1,class:`flex items-center gap-2`},be={key:2,class:`flex items-center gap-2`},xe={key:3,class:`flex items-center gap-2`},Se={key:4,class:`flex items-center gap-2`},Ce={key:5,class:`flex items-center gap-2`},we={key:6,class:`flex items-center gap-2`},Te={key:7,class:`flex items-center gap-2`},Ee={key:8,class:`flex items-center gap-2`},De={key:9,class:`flex items-center gap-2`},Oe={class:`flex gap-2`},K=o({__name:`OfficersView`,setup(o){let{t:K}=oe(),{OFFICERS:q}=O(),J=ae(),Y=ee(()=>J.currentPlanet),X=f(null),Z=f(null),Q=e=>{let t=J.player.officers[e],n=Date.now();return t.active&&(!t.expiresAt||t.expiresAt>n)},ke=e=>J.player.officers[e].expiresAt||0,Ae=e=>{let t=J.player.officers[e];if(!t.expiresAt)return 0;let n=Date.now();return Math.max(0,Math.floor((t.expiresAt-n)/1e3))},$=e=>{if(!Y.value)return!1;let t=q.value[e];return Y.value.resources.metal>=t.cost.metal&&Y.value.resources.crystal>=t.cost.crystal&&Y.value.resources.deuterium>=t.cost.deuterium&&Y.value.resources.darkMatter>=t.cost.darkMatter},je=(e,t=7)=>{if(!J.currentPlanet)return!1;let n=g(e);return d(J.currentPlanet.resources,n)?(l(J.currentPlanet.resources,n),J.player.officers[e]=re(e,t),!0):!1},Me=e=>{Z.value?.show({title:K(`officersView.hireTitle`),message:K(`officersView.hireMessage`).replace(`{name}`,q.value[e].name),onConfirm:()=>{je(e,7)||X.value?.show({title:K(`officersView.hireFailed`),message:K(`officersView.insufficientResources`)})}})},Ne=(e,t=7)=>{if(!J.currentPlanet)return!1;let n=g(e);if(!d(J.currentPlanet.resources,n))return!1;l(J.currentPlanet.resources,n);let r=Date.now();return J.player.officers[e]=_(J.player.officers[e],t,r),!0},Pe=e=>{Z.value?.show({title:K(`officersView.renewTitle`),message:K(`officersView.renewMessage`).replace(`{name}`,q.value[e].name),onConfirm:()=>{Ne(e,7)||X.value?.show({title:K(`officersView.renewFailed`),message:K(`officersView.insufficientResources`)})}})},Fe=e=>{Z.value?.show({title:K(`officersView.dismissTitle`),message:K(`officersView.dismissMessage`).replace(`{name}`,q.value[e].name),onConfirm:()=>{J.player.officers[e]=ne(e)}})};return(ee,o)=>(i(),e(`div`,A,[r(`h1`,j,s(t(K)(`officersView.title`)),1),r(`div`,M,[(i(!0),e(n,null,te(Object.values(t(v)),n=>(i(),c(t(E),{key:n},{default:p(()=>[a(t(se),null,{default:p(()=>[r(`div`,N,[r(`div`,P,[a(t(T),{class:`text-lg sm:text-xl`},{default:p(()=>[m(s(t(q)[n].name),1)]),_:2},1024),a(t(ie),{class:`text-xs sm:text-sm`},{default:p(()=>[m(s(t(q)[n].description),1)]),_:2},1024)]),Q(n)?(i(),c(t(y),{key:0,variant:`default`,class:`text-xs`},{default:p(()=>[m(s(t(K)(`officersView.activated`)),1)]),_:1})):(i(),c(t(y),{key:1,variant:`outline`,class:`text-xs`},{default:p(()=>[m(s(t(K)(`officersView.inactive`)),1)]),_:1}))])]),_:2},1024),a(t(le),{class:`space-y-4`},{default:p(()=>[Q(n)?(i(),e(`div`,F,[r(`div`,I,[r(`p`,L,s(t(K)(`officersView.activeStatus`)),1),r(`p`,R,s(t(K)(`officersView.expirationTime`))+`: `+s(t(S)(ke(n))),1),r(`p`,z,s(t(K)(`officersView.remainingTime`))+`: `+s(t(ce)(Ae(n))),1)])])):h(``,!0),r(`div`,B,[r(`p`,V,s(t(K)(`officersView.recruitCost`))+` (7`+s(t(K)(`officersView.days`))+`):`,1),r(`div`,H,[r(`div`,U,[a(D,{type:`metal`,size:`sm`}),r(`span`,W,s(t(K)(`resources.metal`))+`:`,1),r(`span`,{class:u([`font-medium text-sm`,Y.value?t(C)(Y.value.resources.metal,t(q)[n].cost.metal):``])},s(t(w)(t(q)[n].cost.metal)),3)]),r(`div`,ue,[a(D,{type:`crystal`,size:`sm`}),r(`span`,de,s(t(K)(`resources.crystal`))+`:`,1),r(`span`,{class:u([`font-medium text-sm`,Y.value?t(C)(Y.value.resources.crystal,t(q)[n].cost.crystal):``])},s(t(w)(t(q)[n].cost.crystal)),3)]),r(`div`,G,[a(D,{type:`deuterium`,size:`sm`}),r(`span`,fe,s(t(K)(`resources.deuterium`))+`:`,1),r(`span`,{class:u([`font-medium text-sm`,Y.value?t(C)(Y.value.resources.deuterium,t(q)[n].cost.deuterium):``])},s(t(w)(t(q)[n].cost.deuterium)),3)]),t(q)[n].cost.darkMatter>0?(i(),e(`div`,pe,[a(D,{type:`darkMatter`,size:`sm`}),r(`span`,me,s(t(K)(`resources.darkMatter`))+`:`,1),r(`span`,{class:u([`font-medium text-sm`,Y.value?t(C)(Y.value.resources.darkMatter,t(q)[n].cost.darkMatter):``])},s(t(w)(t(q)[n].cost.darkMatter)),3)])):h(``,!0)])]),r(`div`,he,[r(`p`,ge,s(t(K)(`officersView.benefitsBonus`))+`:`,1),r(`div`,_e,[t(q)[n].benefits.resourceProductionBonus?(i(),e(`div`,ve,[o[0]||=r(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),r(`span`,null,s(t(K)(`officersView.resourceProduction`))+` +`+s(t(q)[n].benefits.resourceProductionBonus)+`%`,1)])):h(``,!0),t(q)[n].benefits.darkMatterProductionBonus?(i(),e(`div`,ye,[o[1]||=r(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),r(`span`,null,s(t(K)(`officersView.darkMatterProduction`))+` +`+s(t(q)[n].benefits.darkMatterProductionBonus)+`%`,1)])):h(``,!0),t(q)[n].benefits.buildingSpeedBonus?(i(),e(`div`,be,[o[2]||=r(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),r(`span`,null,s(t(K)(`officersView.buildingSpeed`))+` +`+s(t(q)[n].benefits.buildingSpeedBonus)+`%`,1)])):h(``,!0),t(q)[n].benefits.researchSpeedBonus?(i(),e(`div`,xe,[o[3]||=r(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),r(`span`,null,s(t(K)(`officersView.researchSpeed`))+` +`+s(t(q)[n].benefits.researchSpeedBonus)+`%`,1)])):h(``,!0),t(q)[n].benefits.fleetSpeedBonus?(i(),e(`div`,Se,[o[4]||=r(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),r(`span`,null,s(t(K)(`officersView.fleetSpeed`))+` +`+s(t(q)[n].benefits.fleetSpeedBonus)+`%`,1)])):h(``,!0),t(q)[n].benefits.fuelConsumptionReduction?(i(),e(`div`,Ce,[o[5]||=r(`span`,{class:`text-green-600 dark:text-green-400`},`↓`,-1),r(`span`,null,s(t(K)(`officersView.fuelConsumption`))+` -`+s(t(q)[n].benefits.fuelConsumptionReduction)+`%`,1)])):h(``,!0),t(q)[n].benefits.defenseBonus?(i(),e(`div`,we,[o[6]||=r(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),r(`span`,null,s(t(K)(`officersView.defense`))+` +`+s(t(q)[n].benefits.defenseBonus)+`%`,1)])):h(``,!0),t(q)[n].benefits.storageCapacityBonus?(i(),e(`div`,Te,[o[7]||=r(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),r(`span`,null,s(t(K)(`officersView.storageCapacity`))+` +`+s(t(q)[n].benefits.storageCapacityBonus)+`%`,1)])):h(``,!0),t(q)[n].benefits.additionalBuildQueue?(i(),e(`div`,Ee,[o[8]||=r(`span`,{class:`text-green-600 dark:text-green-400`},`+`,-1),r(`span`,null,s(t(K)(`officersView.buildQueue`))+` +`+s(t(q)[n].benefits.additionalBuildQueue),1)])):h(``,!0),t(q)[n].benefits.additionalFleetSlots?(i(),e(`div`,De,[o[9]||=r(`span`,{class:`text-green-600 dark:text-green-400`},`+`,-1),r(`span`,null,s(t(K)(`officersView.fleetSlots`))+` +`+s(t(q)[n].benefits.additionalFleetSlots),1)])):h(``,!0)])]),r(`div`,Oe,[Q(n)?h(``,!0):(i(),c(t(x),{key:0,onClick:e=>Me(n),disabled:!$(n),class:`flex-1`},{default:p(()=>[m(s(t(K)(`officersView.hire`))+` (7`+s(t(K)(`officersView.days`))+`) `,1)]),_:1},8,[`onClick`,`disabled`])),Q(n)?(i(),c(t(x),{key:1,onClick:e=>Pe(n),disabled:!$(n),class:`flex-1`},{default:p(()=>[m(s(t(K)(`officersView.renew`))+` (7`+s(t(K)(`officersView.days`))+`) `,1)]),_:1},8,[`onClick`,`disabled`])):h(``,!0),Q(n)?(i(),c(t(x),{key:2,onClick:e=>Fe(n),variant:`outline`,size:`sm`},{default:p(()=>[m(s(t(K)(`officersView.dismiss`)),1)]),_:1},8,[`onClick`])):h(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),a(k,{ref_key:`alertDialog`,ref:X},null,512),a(b,{ref_key:`confirmDialog`,ref:Z},null,512)]))}});export{K as default}; \ No newline at end of file diff --git a/docs/assets/OverviewView-C4I-SjLt.js b/docs/assets/OverviewView-C4I-SjLt.js new file mode 100644 index 0000000..245edb3 --- /dev/null +++ b/docs/assets/OverviewView-C4I-SjLt.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Ct as n,Dt as r,Et as i,I as a,J as ee,Jt as o,K as te,Kt as s,L as c,Mt as l,Nt as ne,On as u,Ot as d,Tn as f,in as p,jt as m,kt as h,q as re,rt as ie}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-DiSZfaku.js";import"./vendor-reka-ui-ICOW9z5F.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import{t as g}from"./CardDescription-CtUtXM5o.js";import"./game-config-D-D7cMgJ.js";import{A as _,I as v,M as y,P as ae,a as oe,c as b,d as se,f as x,g as ce,h as le,l as S,m as C,p as w,r as T,s as E,u as D,w as O}from"./index-BLxCTx9W.js";import{t as k}from"./useGameConfig-chMIsHFg.js";var A={key:0,class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},j={class:`text-center`},M={class:`text-2xl sm:text-3xl font-bold mb-1 sm:mb-2 flex items-center justify-center gap-2`},N={class:`text-xs sm:text-sm text-muted-foreground`},P={key:0,class:`mt-2`},F={key:1,class:`mt-2`},I={class:`flex items-center gap-2`},L={class:`space-y-4`},R={class:`flex items-center gap-2 mb-2`},z={class:`font-semibold`},B={key:0,class:`ml-6 space-y-1 text-sm`},V={class:`flex justify-between`},H={class:`text-muted-foreground`},U={class:`text-green-600 dark:text-green-400`},W={class:`text-muted-foreground ml-4`},ue={class:`flex justify-between font-semibold pt-1 border-t mt-1`},de={class:`text-green-600 dark:text-green-400`},fe={class:`space-y-2`},pe={key:0,class:`flex justify-between text-sm`},me={class:`text-muted-foreground`},he={class:`text-red-600 dark:text-red-400`},ge={key:1,class:`flex justify-between text-sm`},_e={class:`text-muted-foreground`},ve={class:`text-red-600 dark:text-red-400`},ye={key:2,class:`flex justify-between text-sm`},be={class:`text-muted-foreground`},xe={class:`text-red-600 dark:text-red-400`},Se={key:3,class:`flex justify-between font-semibold pt-2 border-t`},Ce={class:`text-red-600 dark:text-red-400`},we={key:4,class:`text-sm text-muted-foreground text-center py-2`},Te={class:`grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3 sm:gap-4`},Ee={class:`text-xs sm:text-sm text-muted-foreground`},De={class:`text-lg sm:text-xl font-bold`},G=ne({__name:`OverviewView`,setup(ne){let G=v(),{t:K}=ae(),{SHIPS:Oe}=k(),q=i(()=>G.currentPlanet),J=i(()=>q.value?c(q.value,G.player.officers):null),Y=i(()=>q.value?a(q.value,G.player.officers):null),ke=i(()=>q.value?re(q.value):0),X=i(()=>{if(!q.value)return null;let e=ie(G.player.officers,Date.now());return ee(q.value,e)}),Z=i(()=>q.value?te(q.value):null),Q=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`},{key:`energy`}],$=i(()=>!q.value||q.value.isMoon?null:Ae(q.value.id)),Ae=e=>G.player.planets.find(t=>t.isMoon&&t.parentPlanetId===e)||null,je=()=>{$.value&&(G.currentPlanetId=$.value.id)},Me=()=>{q.value?.parentPlanetId&&(G.currentPlanetId=q.value.parentPlanetId)};return(i,a)=>q.value?(s(),e(`div`,A,[r(`div`,j,[r(`h1`,M,[m(u(q.value.name)+` `,1),q.value.isMoon?(s(),d(t(_),{key:0,variant:`secondary`},{default:p(()=>[m(u(t(K)(`planet.moon`)),1)]),_:1})):h(``,!0)]),r(`p`,N,u(t(K)(`planet.position`))+`: [`+u(q.value.position.galaxy)+`:`+u(q.value.position.system)+`:`+u(q.value.position.position)+`] `,1),!q.value.isMoon&&$.value?(s(),e(`div`,P,[l(t(y),{onClick:je,variant:`outline`,size:`sm`},{default:p(()=>[a[0]||=r(`span`,{class:`mr-2`},`🌙`,-1),m(` `+u(t(K)(`planet.switchToMoon`)),1)]),_:1})])):h(``,!0),q.value.isMoon?(s(),e(`div`,F,[l(t(y),{onClick:Me,variant:`outline`,size:`sm`},{default:p(()=>[m(u(t(K)(`planet.backToPlanet`)),1)]),_:1})])):h(``,!0)]),l(t(D),null,{default:p(()=>[l(t(b),null,{default:p(()=>[l(t(E),null,{default:p(()=>[m(u(t(K)(`overview.resourceOverview`)),1)]),_:1})]),_:1}),l(t(S),null,{default:p(()=>[l(t(ce),null,{default:p(()=>[l(t(se),null,{default:p(()=>[l(t(w),null,{default:p(()=>[l(t(x),null,{default:p(()=>[m(u(t(K)(`common.resourceType`)),1)]),_:1}),l(t(x),{class:`text-right`},{default:p(()=>[m(u(t(K)(`resources.current`)),1)]),_:1}),l(t(x),{class:`text-right`},{default:p(()=>[m(u(t(K)(`resources.max`)),1)]),_:1}),l(t(x),{class:`text-right`},{default:p(()=>[m(u(t(K)(`resources.production`))+u(t(K)(`resources.perHour`)),1)]),_:1}),l(t(x),{class:`text-right`},{default:p(()=>[m(u(t(K)(`resources.consumption`))+u(t(K)(`resources.perHour`)),1)]),_:1})]),_:1})]),_:1}),l(t(le),null,{default:p(()=>[(s(),e(n,null,o(Q,i=>l(t(w),{key:i.key},{default:p(()=>[l(t(C),{class:`font-medium`},{default:p(()=>[r(`div`,I,[l(O,{type:i.key,size:`sm`},null,8,[`type`]),m(` `+u(t(K)(`resources.${i.key}`)),1)])]),_:2},1024),l(t(C),{class:f([`text-right`,t(oe)(q.value.resources[i.key],Y.value?.[i.key]||1/0)])},{default:p(()=>[m(u(t(T)(q.value.resources[i.key])),1)]),_:2},1032,[`class`]),l(t(C),{class:`text-right text-muted-foreground`},{default:p(()=>[m(u(t(T)(Y.value?.[i.key]||0)),1)]),_:2},1024),l(t(C),{class:`text-right text-green-600 dark:text-green-400`},{default:p(()=>[m(` +`+u(t(T)(J.value?.[i.key]||0)),1)]),_:2},1024),l(t(C),{class:`text-right text-red-600 dark:text-red-400`},{default:p(()=>[i.key===`energy`?(s(),e(n,{key:0},[m(` -`+u(t(T)(ke.value)),1)],64)):(s(),e(n,{key:1},[m(` - `)],64))]),_:2},1024)]),_:2},1024)),64))]),_:1})]),_:1})]),_:1})]),_:1}),l(t(D),null,{default:p(()=>[l(t(b),null,{default:p(()=>[l(t(E),null,{default:p(()=>[m(u(t(K)(`overview.productionSources`)),1)]),_:1}),l(t(g),null,{default:p(()=>[m(u(t(K)(`overview.productionSourcesDesc`)),1)]),_:1})]),_:1}),l(t(S),null,{default:p(()=>[r(`div`,L,[(s(),e(n,null,o(Q,i=>r(`div`,{key:i.key,class:`border-b last:border-b-0 pb-4 last:pb-0`},[r(`div`,R,[l(O,{type:i.key,size:`sm`},null,8,[`type`]),r(`span`,z,u(t(K)(`resources.${i.key}`)),1)]),X.value?(s(),e(`div`,B,[r(`div`,V,[r(`span`,H,u(t(K)(X.value[i.key].buildingName))+` (`+u(t(K)(`common.level`))+` `+u(X.value[i.key].buildingLevel)+`) `,1),r(`span`,U,` +`+u(t(T)(Math.floor(X.value[i.key].baseProduction)))+`/`+u(t(K)(`resources.hour`)),1)]),(s(!0),e(n,null,o(X.value[i.key].bonuses,(n,i)=>(s(),e(`div`,{key:i,class:`flex justify-between`},[r(`span`,W,u(t(K)(n.name)),1),r(`span`,{class:f(n.value>0?`text-green-600 dark:text-green-400`:`text-red-600 dark:text-red-400`)},u(n.value>0?`+`:``)+u(n.value)+`% `,3)]))),128)),r(`div`,ue,[r(`span`,null,u(t(K)(`overview.totalProduction`)),1),r(`span`,de,` +`+u(t(T)(Math.floor(X.value[i.key].finalProduction)))+`/`+u(t(K)(`resources.hour`)),1)])])):h(``,!0)])),64))])]),_:1})]),_:1}),l(t(D),null,{default:p(()=>[l(t(b),null,{default:p(()=>[l(t(E),null,{default:p(()=>[m(u(t(K)(`overview.consumptionSources`)),1)]),_:1}),l(t(g),null,{default:p(()=>[m(u(t(K)(`overview.consumptionSourcesDesc`)),1)]),_:1})]),_:1}),l(t(S),null,{default:p(()=>[r(`div`,fe,[Z.value&&Z.value.metalMine.buildingLevel>0?(s(),e(`div`,pe,[r(`span`,me,u(t(K)(Z.value.metalMine.buildingName))+` (`+u(t(K)(`common.level`))+` `+u(Z.value.metalMine.buildingLevel)+`) `,1),r(`span`,he,` -`+u(t(T)(Math.floor(Z.value.metalMine.consumption)))+`/`+u(t(K)(`resources.hour`)),1)])):h(``,!0),Z.value&&Z.value.crystalMine.buildingLevel>0?(s(),e(`div`,ge,[r(`span`,_e,u(t(K)(Z.value.crystalMine.buildingName))+` (`+u(t(K)(`common.level`))+` `+u(Z.value.crystalMine.buildingLevel)+`) `,1),r(`span`,ve,` -`+u(t(T)(Math.floor(Z.value.crystalMine.consumption)))+`/`+u(t(K)(`resources.hour`)),1)])):h(``,!0),Z.value&&Z.value.deuteriumSynthesizer.buildingLevel>0?(s(),e(`div`,ye,[r(`span`,be,u(t(K)(Z.value.deuteriumSynthesizer.buildingName))+` (`+u(t(K)(`common.level`))+` `+u(Z.value.deuteriumSynthesizer.buildingLevel)+`) `,1),r(`span`,xe,` -`+u(t(T)(Math.floor(Z.value.deuteriumSynthesizer.consumption)))+`/`+u(t(K)(`resources.hour`)),1)])):h(``,!0),Z.value?(s(),e(`div`,Se,[r(`span`,null,u(t(K)(`overview.totalConsumption`)),1),r(`span`,Ce,` -`+u(t(T)(Math.floor(Z.value.total)))+`/`+u(t(K)(`resources.hour`)),1)])):h(``,!0),Z.value&&Z.value.total===0?(s(),e(`div`,we,u(t(K)(`overview.noConsumption`)),1)):h(``,!0)])]),_:1})]),_:1}),l(t(D),null,{default:p(()=>[l(t(b),null,{default:p(()=>[l(t(E),null,{default:p(()=>[m(u(t(K)(`overview.fleetInfo`)),1)]),_:1}),l(t(g),null,{default:p(()=>[m(u(t(K)(`overview.currentShips`)),1)]),_:1})]),_:1}),l(t(S),null,{default:p(()=>[r(`div`,Te,[(s(!0),e(n,null,o(q.value.fleet,(n,i)=>(s(),e(`div`,{key:i},[r(`p`,Ee,u(t(Oe)[i].name),1),r(`p`,De,u(n),1)]))),128))])]),_:1})]),_:1})])):h(``,!0)}});export{G as default}; \ No newline at end of file diff --git a/docs/assets/OverviewView-CmVFZWGR.js b/docs/assets/OverviewView-CmVFZWGR.js deleted file mode 100644 index 09a61bb..0000000 --- a/docs/assets/OverviewView-CmVFZWGR.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,G as t,H as n,J as r,K as i,Ot as a,W as o,X as s,Y as c,Z as l,jt as u,lt as d,pt as f,q as p,st as m}from"./vendor-ui-DBxeWLyT.js";import"./vendor-vue-Bqq1sBNf.js";import{t as h}from"./CardDescription-CRV0m8La.js";import{Bt as g,D as ee,E as te,F as _,It as v,M as y,Pt as b,Rt as x,U as S,V as C,Vt as w,_t as T,dt as E,ft as D,gt as O,ht as k,j as A,lt as j,mt as M,pt as N,ut as P,vt as F}from"./index-Cch-Ig40.js";import{t as I}from"./useGameConfig-D2EZdt1x.js";var L={key:0,class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},R={class:`text-center`},z={class:`text-2xl sm:text-3xl font-bold mb-1 sm:mb-2 flex items-center justify-center gap-2`},B={class:`text-xs sm:text-sm text-muted-foreground`},V={key:0,class:`mt-2`},H={key:1,class:`mt-2`},U={class:`flex items-center gap-2`},W={class:`grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3 sm:gap-4`},G={class:`text-xs sm:text-sm text-muted-foreground`},K={class:`text-lg sm:text-xl font-bold`},q=l({__name:`OverviewView`,setup(l){let q=w(),{t:J}=g(),{SHIPS:Y}=I(),X=o(()=>q.currentPlanet),Z=o(()=>X.value?ee(X.value,q.player.officers):null),Q=o(()=>X.value?te(X.value,q.player.officers):null),ne=o(()=>{if(!X.value)return 0;let e=_(q.player.officers,Date.now());return y(X.value,{energyProductionBonus:e.energyProductionBonus})}),re=o(()=>X.value?A(X.value):0),ie=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`},{key:`energy`}],$=o(()=>!X.value||X.value.isMoon?null:ae(X.value.id)),ae=e=>q.player.planets.find(t=>t.isMoon&&t.parentPlanetId===e)||null,oe=()=>{$.value&&(q.currentPlanetId=$.value.id)},se=()=>{X.value?.parentPlanetId&&(q.currentPlanetId=X.value.parentPlanetId)};return(o,l)=>X.value?(m(),r(`div`,L,[t(`div`,R,[t(`h1`,z,[c(u(X.value.name)+` `,1),X.value.isMoon?(m(),i(e(v),{key:0,variant:`secondary`},{default:f(()=>[c(u(e(J)(`planet.moon`)),1)]),_:1})):p(``,!0)]),t(`p`,B,u(e(J)(`planet.position`))+`: [`+u(X.value.position.galaxy)+`:`+u(X.value.position.system)+`:`+u(X.value.position.position)+`] `,1),!X.value.isMoon&&$.value?(m(),r(`div`,V,[s(e(x),{onClick:oe,variant:`outline`,size:`sm`},{default:f(()=>[l[0]||=t(`span`,{class:`mr-2`},`🌙`,-1),c(` `+u(e(J)(`planet.switchToMoon`)),1)]),_:1})])):p(``,!0),X.value.isMoon?(m(),r(`div`,H,[s(e(x),{onClick:se,variant:`outline`,size:`sm`},{default:f(()=>[c(u(e(J)(`planet.backToPlanet`)),1)]),_:1})])):p(``,!0)]),s(e(D),null,{default:f(()=>[s(e(P),null,{default:f(()=>[s(e(j),null,{default:f(()=>[c(u(e(J)(`overview.resourceOverview`)),1)]),_:1})]),_:1}),s(e(E),null,{default:f(()=>[s(e(F),null,{default:f(()=>[s(e(N),null,{default:f(()=>[s(e(k),null,{default:f(()=>[s(e(M),null,{default:f(()=>[c(u(e(J)(`common.resourceType`)),1)]),_:1}),s(e(M),{class:`text-right`},{default:f(()=>[c(u(e(J)(`resources.current`)),1)]),_:1}),s(e(M),{class:`text-right`},{default:f(()=>[c(u(e(J)(`resources.max`)),1)]),_:1}),s(e(M),{class:`text-right`},{default:f(()=>[c(u(e(J)(`resources.production`))+u(e(J)(`resources.perHour`)),1)]),_:1})]),_:1})]),_:1}),s(e(T),null,{default:f(()=>[(m(),r(n,null,d(ie,i=>s(e(k),{key:i.key},{default:f(()=>[s(e(O),{class:`font-medium`},{default:f(()=>[t(`div`,U,[s(b,{type:i.key,size:`sm`},null,8,[`type`]),c(` `+u(e(J)(`resources.${i.key}`)),1)])]),_:2},1024),i.key===`energy`?(m(),r(n,{key:0},[s(e(O),{class:a([`text-right`,X.value.resources[i.key]>=0?`text-green-600 dark:text-green-400`:`text-red-600 dark:text-red-400`])},{default:f(()=>[c(u(e(C)(X.value.resources[i.key])),1)]),_:2},1032,[`class`]),s(e(O),{class:`text-right text-muted-foreground`},{default:f(()=>[...l[1]||=[c(`-`,-1)]]),_:1}),s(e(O),{class:`text-right text-muted-foreground`},{default:f(()=>[c(u(e(C)(ne.value))+` / `+u(e(C)(re.value)),1)]),_:1})],64)):(m(),r(n,{key:1},[s(e(O),{class:a([`text-right`,e(S)(X.value.resources[i.key],Q.value?.[i.key]||1/0)])},{default:f(()=>[c(u(e(C)(X.value.resources[i.key])),1)]),_:2},1032,[`class`]),s(e(O),{class:`text-right text-muted-foreground`},{default:f(()=>[c(u(e(C)(Q.value?.[i.key]||0)),1)]),_:2},1024),s(e(O),{class:`text-right text-muted-foreground`},{default:f(()=>[c(u(e(C)(Z.value?.[i.key]||0)),1)]),_:2},1024)],64))]),_:2},1024)),64))]),_:1})]),_:1})]),_:1})]),_:1}),s(e(D),null,{default:f(()=>[s(e(P),null,{default:f(()=>[s(e(j),null,{default:f(()=>[c(u(e(J)(`overview.fleetInfo`)),1)]),_:1}),s(e(h),null,{default:f(()=>[c(u(e(J)(`overview.currentShips`)),1)]),_:1})]),_:1}),s(e(E),null,{default:f(()=>[t(`div`,W,[(m(!0),r(n,null,d(X.value.fleet,(n,i)=>(m(),r(`div`,{key:i},[t(`p`,G,u(e(Y)[i].name),1),t(`p`,K,u(n),1)]))),128))])]),_:1})]),_:1})])):p(``,!0)}});export{q as default}; \ No newline at end of file diff --git a/docs/assets/ResearchView-9cX9kBtt.js b/docs/assets/ResearchView-9cX9kBtt.js new file mode 100644 index 0000000..e8858bf --- /dev/null +++ b/docs/assets/ResearchView-9cX9kBtt.js @@ -0,0 +1,2 @@ +import{At as e,Cn as t,Ct as n,Dt as r,E as i,Et as a,Jt as o,Kt as s,Mt as c,N as l,Nt as u,On as d,Ot as ee,P as f,T as p,Tn as m,gt as te,hn as h,in as g,jt as _,kt as ne}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import"./vendor-vue-router-_-a8jZbv.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-DiSZfaku.js";import"./vendor-reka-ui-ICOW9z5F.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import"./vendor-icons-B6ER66fi.js";import{t as re}from"./CardDescription-CtUtXM5o.js";import{h as v,u as y}from"./game-config-D-D7cMgJ.js";import{A as ie,I as ae,M as oe,P as se,_ as ce,c as le,l as b,o as x,r as S,s as C,u as w,w as T}from"./index-BLxCTx9W.js";import{t as E}from"./useGameConfig-chMIsHFg.js";import{t as D}from"./AlertDialog-vN9u2C5f.js";import{t as O}from"./CardUnlockOverlay-BVmeYgHN.js";import{t as k}from"./UnlockRequirement-CoN2_Hgq.js";var A={key:0,class:`container mx-auto p-4 sm:p-6`},j={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},M={class:`grid grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4`},N={class:`flex justify-between items-start gap-2`},P={class:`min-w-0 flex-1`},F={class:`space-y-2.5 sm:space-y-3`},I={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},L={class:`text-muted-foreground mb-1 sm:mb-2`},R={class:`space-y-1 sm:space-y-1.5`},z={class:`flex items-center gap-1.5 sm:gap-2`},ue={class:`text-xs`},B={class:`flex items-center gap-1.5 sm:gap-2`},V={class:`text-xs`},H={class:`flex items-center gap-1.5 sm:gap-2`},U={class:`text-xs`},W=u({__name:`ResearchView`,setup(u){let W=ae(),de=ce(),{t:G}=se(),{TECHNOLOGIES:K,BUILDINGS:fe}=E(),q=a(()=>W.currentPlanet),J=a(()=>W.player),Y=h(null),X=e=>{if(!W.currentPlanet||!i(W.currentPlanet,e,W.player.technologies,W.player.researchQueue).valid)return!1;let t=W.player.technologies[e]||0,{queueItem:n}=p(W.currentPlanet,e,t,W.player.officers);return W.player.researchQueue.push(n),!0},Z=e=>{if(!q.value)return!1;let t=K.value[e],n=f(t,Q(e)+1);return!n||Object.keys(n).length===0?!0:l(q.value,W.player.technologies,n)},pe=e=>{if(!q.value)return G(`researchView.research`);let t=K.value[e],n=Q(e);return t.maxLevel!==void 0&&n>=t.maxLevel?G(`researchView.maxLevelReached`):J.value.researchQueue.length>0||Z(e)?G(`researchView.research`):G(`buildingsView.requirementsNotMet`)},me=e=>{let t=K.value[e],n=f(t,Q(e)+1);if(!n||!q.value)return``;let r=[];for(let[e,t]of Object.entries(n))if(Object.values(y).includes(e)){let n=e,i=q.value.buildings[n]||0,a=fe.value[n]?.name||n,o=i>=t?`✓`:`✗`;r.push(`${o} ${a}: Lv ${t} (${G(`common.current`)}: Lv ${i})`)}else if(Object.values(v).includes(e)){let n=e,i=W.player.technologies[n]||0,a=K.value[n]?.name||n,o=i>=t?`✓`:`✗`;r.push(`${o} ${a}: Lv ${t} (${G(`common.current`)}: Lv ${i})`)}return r.join(` +`)},he=e=>{if(!Z(e)){Y.value?.show({title:G(`common.requirementsNotMet`),message:me(e)});return}X(e)||Y.value?.show({title:G(`researchView.researchFailed`),message:G(`researchView.researchFailedMessage`)})},Q=e=>J.value.technologies[e]||0,ge=e=>{if(!q.value)return!1;let t=K.value[e],n=Q(e);if(t.maxLevel!==void 0&&n>=t.maxLevel||J.value.researchQueue.length>0)return!1;let r=$(e,n+1);return l(q.value,W.player.technologies,t.requirements)&&q.value.resources.metal>=r.metal&&q.value.resources.crystal>=r.crystal&&q.value.resources.deuterium>=r.deuterium},$=(e,t)=>te(e,t);return(i,a)=>q.value?(s(),e(`div`,A,[c(k,{"required-building":t(y).ResearchLab,"required-level":1},null,8,[`required-building`]),r(`h1`,j,d(t(G)(`researchView.title`)),1),r(`div`,M,[(s(!0),e(n,null,o(Object.values(t(v)),e=>(s(),ee(t(w),{key:e,class:`relative`},{default:g(()=>[c(O,{requirements:t(K)[e].requirements,currentLevel:Q(e)},null,8,[`requirements`,`currentLevel`]),c(t(le),null,{default:g(()=>[r(`div`,N,[r(`div`,P,[c(t(C),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:n=>t(de).openTechnology(e,Q(e))},{default:g(()=>[_(d(t(K)[e].name),1)]),_:2},1032,[`onClick`]),c(t(re),{class:`text-xs sm:text-sm`},{default:g(()=>[_(d(t(K)[e].description),1)]),_:2},1024)]),c(t(ie),{variant:`secondary`,class:`text-xs whitespace-nowrap flex-shrink-0`},{default:g(()=>[_(`Lv `+d(Q(e)),1)]),_:2},1024)])]),_:2},1024),c(t(b),null,{default:g(()=>[r(`div`,F,[r(`div`,I,[r(`p`,L,d(t(G)(`researchView.researchCost`))+`:`,1),r(`div`,R,[r(`div`,z,[c(T,{type:`metal`,size:`sm`}),r(`span`,ue,d(t(G)(`resources.metal`))+`:`,1),r(`span`,{class:m([`font-medium text-xs sm:text-sm`,t(x)(q.value.resources.metal,$(e,Q(e)+1).metal)])},d(t(S)($(e,Q(e)+1).metal)),3)]),r(`div`,B,[c(T,{type:`crystal`,size:`sm`}),r(`span`,V,d(t(G)(`resources.crystal`))+`:`,1),r(`span`,{class:m([`font-medium text-xs sm:text-sm`,t(x)(q.value.resources.crystal,$(e,Q(e)+1).crystal)])},d(t(S)($(e,Q(e)+1).crystal)),3)]),r(`div`,H,[c(T,{type:`deuterium`,size:`sm`}),r(`span`,U,d(t(G)(`resources.deuterium`))+`:`,1),r(`span`,{class:m([`font-medium text-xs sm:text-sm`,t(x)(q.value.resources.deuterium,$(e,Q(e)+1).deuterium)])},d(t(S)($(e,Q(e)+1).deuterium)),3)])])]),c(t(oe),{onClick:t=>he(e),disabled:!ge(e),class:`w-full`},{default:g(()=>[_(d(pe(e)),1)]),_:2},1032,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),c(D,{ref_key:`alertDialog`,ref:Y},null,512)])):ne(``,!0)}});export{W as default}; \ No newline at end of file diff --git a/docs/assets/ResearchView-BnXltulQ.js b/docs/assets/ResearchView-BnXltulQ.js deleted file mode 100644 index 068c185..0000000 --- a/docs/assets/ResearchView-BnXltulQ.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,G as t,H as n,J as r,K as ee,Ot as i,St as te,W as a,X as o,Y as s,Z as c,jt as l,lt as u,pt as d,q as ne,st as f}from"./vendor-ui-DBxeWLyT.js";import"./vendor-vue-Bqq1sBNf.js";import{t as re}from"./UnlockRequirement-BdFx1RC0.js";import{t as ie}from"./CardDescription-CRV0m8La.js";import{Bt as ae,It as p,Pt as m,Rt as h,V as g,Vt as oe,W as _,Z as v,ct as y,dt as b,ft as x,lt as S,rt as C,ut as w,v as T,w as E,y as D,yt as O}from"./index-Cch-Ig40.js";import{t as k}from"./useGameConfig-D2EZdt1x.js";import{t as A}from"./AlertDialog-_72FqRCT.js";import{t as j}from"./CardUnlockOverlay-SeY-L1Ut.js";var M={key:0,class:`container mx-auto p-4 sm:p-6`},N={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},P={class:`grid grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4`},F={class:`flex justify-between items-start gap-2`},se={class:`min-w-0 flex-1`},I={class:`space-y-2.5 sm:space-y-3`},L={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},R={class:`text-muted-foreground mb-1 sm:mb-2`},z={class:`space-y-1 sm:space-y-1.5`},B={class:`flex items-center gap-1.5 sm:gap-2`},V={class:`text-xs`},H={class:`flex items-center gap-1.5 sm:gap-2`},U={class:`text-xs`},W={class:`flex items-center gap-1.5 sm:gap-2`},G={class:`text-xs`},K=c({__name:`ResearchView`,setup(c){let K=oe(),ce=O(),{t:q}=ae(),{TECHNOLOGIES:J}=k(),Y=a(()=>K.currentPlanet),X=a(()=>K.player),Z=te(null),le=e=>{if(!K.currentPlanet||!D(K.currentPlanet,e,K.player.technologies,K.player.researchQueue).valid)return!1;let t=K.player.technologies[e]||0,{queueItem:n}=T(K.currentPlanet,e,t,K.player.officers);return K.player.researchQueue.push(n),!0},ue=e=>{le(e)||Z.value?.show({title:q(`researchView.researchFailed`),message:q(`researchView.researchFailedMessage`)})},Q=e=>X.value.technologies[e]||0,de=e=>{if(!Y.value||X.value.researchQueue.length>0)return!1;let t=J.value[e],n=$(e,Q(e)+1);return E(Y.value,K.player.technologies,t.requirements)&&Y.value.resources.metal>=n.metal&&Y.value.resources.crystal>=n.crystal&&Y.value.resources.deuterium>=n.deuterium},$=(e,t)=>v(e,t);return(te,a)=>Y.value?(f(),r(`div`,M,[o(re,{"required-building":e(C).ResearchLab,"required-level":1},null,8,[`required-building`]),t(`h1`,N,l(e(q)(`researchView.title`)),1),t(`div`,P,[(f(!0),r(n,null,u(Object.values(e(y)),n=>(f(),ee(e(x),{key:n,class:`relative`},{default:d(()=>[o(j,{requirements:e(J)[n].requirements},null,8,[`requirements`]),o(e(w),null,{default:d(()=>[t(`div`,F,[t(`div`,se,[o(e(S),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:t=>e(ce).openTechnology(n,Q(n))},{default:d(()=>[s(l(e(J)[n].name),1)]),_:2},1032,[`onClick`]),o(e(ie),{class:`text-xs sm:text-sm`},{default:d(()=>[s(l(e(J)[n].description),1)]),_:2},1024)]),o(e(p),{variant:`secondary`,class:`text-xs whitespace-nowrap flex-shrink-0`},{default:d(()=>[s(`Lv `+l(Q(n)),1)]),_:2},1024)])]),_:2},1024),o(e(b),null,{default:d(()=>[t(`div`,I,[t(`div`,L,[t(`p`,R,l(e(q)(`researchView.researchCost`))+`:`,1),t(`div`,z,[t(`div`,B,[o(m,{type:`metal`,size:`sm`}),t(`span`,V,l(e(q)(`resources.metal`))+`:`,1),t(`span`,{class:i([`font-medium text-xs sm:text-sm`,e(_)(Y.value.resources.metal,$(n,Q(n)+1).metal)])},l(e(g)($(n,Q(n)+1).metal)),3)]),t(`div`,H,[o(m,{type:`crystal`,size:`sm`}),t(`span`,U,l(e(q)(`resources.crystal`))+`:`,1),t(`span`,{class:i([`font-medium text-xs sm:text-sm`,e(_)(Y.value.resources.crystal,$(n,Q(n)+1).crystal)])},l(e(g)($(n,Q(n)+1).crystal)),3)]),t(`div`,W,[o(m,{type:`deuterium`,size:`sm`}),t(`span`,G,l(e(q)(`resources.deuterium`))+`:`,1),t(`span`,{class:i([`font-medium text-xs sm:text-sm`,e(_)(Y.value.resources.deuterium,$(n,Q(n)+1).deuterium)])},l(e(g)($(n,Q(n)+1).deuterium)),3)])])]),o(e(h),{onClick:e=>ue(n),disabled:!de(n),class:`w-full`},{default:d(()=>[s(l(e(q)(`researchView.research`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),o(A,{ref_key:`alertDialog`,ref:Z},null,512)])):ne(``,!0)}});export{K as default}; \ No newline at end of file diff --git a/docs/assets/SelectValue-BvfAhGU7.js b/docs/assets/SelectValue-BvfAhGU7.js new file mode 100644 index 0000000..6146220 --- /dev/null +++ b/docs/assets/SelectValue-BvfAhGU7.js @@ -0,0 +1 @@ +import{Cn as e,Dt as t,En as n,Ft as r,Kt as i,Mt as a,Nt as o,Ot as s,Tn as c,Vt as l,Yt as u,in as d}from"./game-logic-B_TBzmsj.js";import{c as f}from"./vendor-others-DiSZfaku.js";import{H as p,U as m,_ as h,c as g,d as _,f as v,g as y,h as b,l as x,m as S,p as C,s as w,u as T,v as E}from"./vendor-reka-ui-ICOW9z5F.js";import{H as D,U as O,W as k}from"./vendor-icons-B6ER66fi.js";import{N as A}from"./index-BLxCTx9W.js";var j=o({__name:`Select`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},defaultValue:{},modelValue:{},by:{type:[String,Function]},dir:{},multiple:{type:Boolean},autocomplete:{},disabled:{type:Boolean},name:{},required:{type:Boolean}},emits:[`update:modelValue`,`update:open`],setup(t,{emit:a}){let o=p(t,a);return(t,a)=>(i(),s(e(E),l({"data-slot":`select`},e(o)),{default:d(e=>[u(t.$slots,`default`,n(r(e)))]),_:3},16))}}),M=o({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean},position:{default:`popper`},bodyLock:{type:Boolean},side:{},sideOffset:{},sideFlip:{type:Boolean},align:{},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(t,{emit:n}){let r=t,o=n,m=p(f(r,`class`),o);return(n,o)=>(i(),s(e(v),null,{default:d(()=>[a(e(h),l({"data-slot":`select-content`},{...n.$attrs,...e(m)},{class:e(A)(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--reka-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md`,t.position===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,r.class)}),{default:d(()=>[a(e(I)),a(e(w),{class:c(e(A)(`p-1`,t.position===`popper`&&`h-[var(--reka-select-trigger-height)] w-full min-w-[var(--reka-select-trigger-width)] scroll-my-1`))},{default:d(()=>[u(n.$slots,`default`)]),_:3},8,[`class`]),a(e(F))]),_:3},16,[`class`])]),_:3}))}}),N={class:`absolute right-2 flex size-3.5 items-center justify-center`},P=o({__name:`SelectItem`,props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{}},setup(n){let r=n,o=m(f(r,`class`));return(n,c)=>(i(),s(e(b),l({"data-slot":`select-item`},e(o),{class:e(A)(`focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,r.class)}),{default:d(()=>[t(`span`,N,[a(e(S),null,{default:d(()=>[u(n.$slots,`indicator-icon`,{},()=>[a(e(k),{class:`size-4`})])]),_:3})]),a(e(C),null,{default:d(()=>[u(n.$slots,`default`)]),_:3})]),_:3},16,[`class`]))}}),F=o({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean},as:{},class:{}},setup(t){let n=t,r=m(f(n,`class`));return(t,o)=>(i(),s(e(_),l({"data-slot":`select-scroll-down-button`},e(r),{class:e(A)(`flex cursor-default items-center justify-center py-1`,n.class)}),{default:d(()=>[u(t.$slots,`default`,{},()=>[a(e(O),{class:`size-4`})])]),_:3},16,[`class`]))}}),I=o({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean},as:{},class:{}},setup(t){let n=t,r=m(f(n,`class`));return(t,o)=>(i(),s(e(T),l({"data-slot":`select-scroll-up-button`},e(r),{class:e(A)(`flex cursor-default items-center justify-center py-1`,n.class)}),{default:d(()=>[u(t.$slots,`default`,{},()=>[a(e(D),{class:`size-4`})])]),_:3},16,[`class`]))}}),L=o({__name:`SelectTrigger`,props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{},size:{default:`default`}},setup(t){let n=t,r=m(f(n,`class`,`size`));return(o,c)=>(i(),s(e(x),l({"data-slot":`select-trigger`,"data-size":t.size},e(r),{class:e(A)(`border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,n.class)}),{default:d(()=>[u(o.$slots,`default`),a(e(y),{"as-child":``},{default:d(()=>[a(e(O),{class:`size-4 opacity-50`})]),_:1})]),_:3},16,[`data-size`,`class`]))}}),R=o({__name:`SelectValue`,props:{placeholder:{},asChild:{type:Boolean},as:{}},setup(t){let n=t;return(t,r)=>(i(),s(e(g),l({"data-slot":`select-value`},n),{default:d(()=>[u(t.$slots,`default`)]),_:3},16))}});export{j as a,M as i,L as n,P as r,R as t}; \ No newline at end of file diff --git a/docs/assets/SettingsView-CGxApjTn.js b/docs/assets/SettingsView-CGxApjTn.js new file mode 100644 index 0000000..431dcb5 --- /dev/null +++ b/docs/assets/SettingsView-CGxApjTn.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Dt as n,En as r,Ft as i,Kt as a,Mt as o,Nt as s,On as c,Ot as l,Tn as u,Vt as d,Xt as ee,Yt as f,hn as p,in as m,jt as h,kt as te}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import{c as g,n as _}from"./vendor-others-DiSZfaku.js";import{A as v,D as y,E as b,H as x,M as S,N as C,O as w,j as T,k as E}from"./vendor-reka-ui-ICOW9z5F.js";import{t as D}from"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import{L as O,R as k,T as A,b as j,i as M,s as N,y as P}from"./vendor-icons-B6ER66fi.js";import{t as F}from"./CardDescription-CtUtXM5o.js";import{I as ne,L as I,M as L,N as R,P as z,c as B,j as V,l as H,s as U,u as W}from"./index-BLxCTx9W.js";var G=s({__name:`AlertDialog`,props:{open:{type:Boolean},defaultOpen:{type:Boolean}},emits:[`update:open`],setup(e,{emit:n}){let o=x(e,n);return(e,n)=>(a(),l(t(y),d({"data-slot":`alert-dialog`},t(o)),{default:m(t=>[f(e.$slots,`default`,r(i(t)))]),_:3},16))}}),K=s({__name:`AlertDialogAction`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let n=e,r=g(n,`class`);return(e,i)=>(a(),l(t(C),d(t(r),{class:t(R)(t(V)(),n.class)}),{default:m(()=>[f(e.$slots,`default`)]),_:3},16,[`class`]))}}),q=s({__name:`AlertDialogCancel`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let n=e,r=g(n,`class`);return(e,i)=>(a(),l(t(T),d(t(r),{class:t(R)(t(V)({variant:`outline`}),`mt-2 sm:mt-0`,n.class)}),{default:m(()=>[f(e.$slots,`default`)]),_:3},16,[`class`]))}}),J=s({inheritAttrs:!1,__name:`AlertDialogContent`,props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:n}){let r=e,i=n,s=x(g(r,`class`),i);return(e,n)=>(a(),l(t(w),null,{default:m(()=>[o(t(E),{"data-slot":`alert-dialog-overlay`,class:`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80`}),o(t(S),d({"data-slot":`alert-dialog-content`},{...e.$attrs,...t(s)},{class:t(R)(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg`,r.class)}),{default:m(()=>[f(e.$slots,`default`)]),_:3},16,[`class`])]),_:3}))}}),Y=s({__name:`AlertDialogDescription`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let n=e,r=g(n,`class`);return(e,i)=>(a(),l(t(v),d({"data-slot":`alert-dialog-description`},t(r),{class:t(R)(`text-muted-foreground text-sm`,n.class)}),{default:m(()=>[f(e.$slots,`default`)]),_:3},16,[`class`]))}}),X=s({__name:`AlertDialogFooter`,props:{class:{}},setup(n){let r=n;return(n,i)=>(a(),e(`div`,{"data-slot":`alert-dialog-footer`,class:u(t(R)(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,r.class))},[f(n.$slots,`default`)],2))}}),Z=s({__name:`AlertDialogHeader`,props:{class:{}},setup(n){let r=n;return(n,i)=>(a(),e(`div`,{"data-slot":`alert-dialog-header`,class:u(t(R)(`flex flex-col gap-2 text-center sm:text-left`,r.class))},[f(n.$slots,`default`)],2))}}),re=s({__name:`AlertDialogTitle`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let n=e,r=g(n,`class`);return(e,i)=>(a(),l(t(b),d({"data-slot":`alert-dialog-title`},t(r),{class:t(R)(`text-lg font-semibold`,n.class)}),{default:m(()=>[f(e.$slots,`default`)]),_:3},16,[`class`]))}}),ie=D(),ae={class:`container mx-auto p-4 sm:p-6 space-y-6`},oe={class:`flex items-center justify-between`},se={class:`text-2xl font-bold`},ce={class:`flex items-center justify-between p-4 border rounded-lg`},le={class:`space-y-1`},ue={class:`font-medium`},de={class:`text-sm text-muted-foreground`},fe={class:`flex items-center justify-between p-4 border rounded-lg`},pe={class:`space-y-1`},me={class:`font-medium`},he={class:`text-sm text-muted-foreground`},ge={class:`flex gap-2`},_e={class:`flex items-center justify-between p-4 border rounded-lg border-destructive/50`},ve={class:`space-y-1`},ye={class:`font-medium text-destructive`},be={class:`text-sm text-muted-foreground`},xe={class:`flex items-center justify-between p-4 border rounded-lg`},Se={class:`space-y-1`},Ce={class:`font-medium`},we={class:`text-sm text-muted-foreground`},Te={class:`space-y-2`},Ee={class:`flex items-center justify-between text-sm`},De={class:`text-muted-foreground`},Oe={class:`font-medium`},Q={class:`flex items-center justify-between text-sm`},ke={class:`text-muted-foreground`},Ae={class:`font-medium`},je={class:`pt-2 border-t space-y-2`},Me={class:`text-sm font-medium`},Ne={class:`flex flex-col gap-2`},Pe={class:`ml-auto text-xs text-muted-foreground`},$=s({__name:`SettingsView`,setup(r){let{t:i}=z(),s=ne(),u=p(),d=p(!1),f=p(!1),g=p(``),v=p(``),y=null,b=()=>{window.open(`https://github.com/${I.author}/${I.name}`,`_blank`)},x=()=>{window.open(`https://qm.qq.com/q/${I.id}`,`_blank`)},S=async()=>{try{d.value=!0;let e=localStorage.getItem(I.name),t=localStorage.getItem(`${I.name}-universe`);if(!e){_.error(i(`settings.exportFailed`));return}let n={game:e,universe:t||null},r=`${I.name}-${new Date().toISOString().slice(0,10)}-${Date.now()}.json`,a=JSON.stringify(n,null,2);(0,ie.saveAs)(new Blob([a],{type:`application/json`}),r),_.success(i(`settings.exportSuccess`))}catch(e){console.error(`Export failed:`,e),_.error(i(`settings.exportFailed`))}finally{d.value=!1}},C=()=>{u.value?.click()},w=e=>{let t=e.target.files?.[0];t&&(g.value=i(`settings.importConfirmTitle`),v.value=i(`settings.importConfirmMessage`),f.value=!0,s.isPaused=!0,y=()=>T(t))},T=async e=>{try{let t=new FileReader;t.onload=e=>{try{let t=e.target?.result;if(typeof t==`string`){let e=JSON.parse(t);if(typeof e==`string`||!e.game){localStorage.setItem(I.name,t),_.success(i(`settings.importSuccess`)),setTimeout(()=>window.location.reload(),1e3);return}e.game&&localStorage.setItem(I.name,e.game),e.universe&&localStorage.setItem(`${I.name}-universe`,e.universe),_.success(i(`settings.importSuccess`)),setTimeout(()=>window.location.reload(),1e3)}else _.error(i(`settings.importFailed`))}catch(e){let t=e instanceof Error?e.message:String(e);_.error(i(`settings.importFailed`)+`: `+t)}},t.readAsText(e)}catch(e){console.error(`Import failed:`,e),_.error(i(`settings.importFailed`))}},E=()=>{g.value=i(`settings.clearConfirmTitle`),v.value=i(`settings.clearConfirmMessage`),f.value=!0,y=D},D=()=>{localStorage.clear(),window.location.reload()},R=()=>{s.isPaused=!s.isPaused,s.isPaused?_.info(i(`settings.gamePaused`)):_.success(i(`settings.gameResumed`))},V=()=>{y&&=(y(),null),f.value=!1},$=()=>{s.isPaused=!1,y=null,f.value=!1,u.value&&(u.value.value=``)};return(r,p)=>(a(),e(`div`,ae,[n(`div`,oe,[n(`h1`,se,c(t(i)(`nav.settings`)),1)]),o(t(W),null,{default:m(()=>[o(t(B),null,{default:m(()=>[o(t(U),null,{default:m(()=>[h(c(t(i)(`settings.dataManagement`)),1)]),_:1}),o(t(F),null,{default:m(()=>[h(c(t(i)(`settings.dataManagementDesc`)),1)]),_:1})]),_:1}),o(t(H),{class:`space-y-4`},{default:m(()=>[n(`div`,ce,[n(`div`,le,[n(`h3`,ue,c(t(i)(`settings.exportData`)),1),n(`p`,de,c(t(i)(`settings.exportDataDesc`)),1)]),o(t(L),{onClick:S,disabled:d.value},{default:m(()=>[o(t(k),{class:`mr-2 h-4 w-4`}),h(` `+c(d.value?t(i)(`settings.exporting`):t(i)(`settings.export`)),1)]),_:1},8,[`disabled`])]),n(`div`,fe,[n(`div`,pe,[n(`h3`,me,c(t(i)(`settings.importData`)),1),n(`p`,he,c(t(i)(`settings.importDataDesc`)),1)]),n(`div`,ge,[n(`input`,{ref_key:`fileInputRef`,ref:u,type:`file`,accept:`.json`,class:`hidden`,onChange:w},null,544),o(t(L),{onClick:C,variant:`outline`},{default:m(()=>[o(t(M),{class:`mr-2 h-4 w-4`}),h(` `+c(t(i)(`settings.selectFile`)),1)]),_:1})])]),n(`div`,_e,[n(`div`,ve,[n(`h3`,ye,c(t(i)(`settings.clearData`)),1),n(`p`,be,c(t(i)(`settings.clearDataDesc`)),1)]),o(t(L),{onClick:E,variant:`destructive`},{default:m(()=>[o(t(N),{class:`mr-2 h-4 w-4`}),h(` `+c(t(i)(`settings.clear`)),1)]),_:1})])]),_:1})]),_:1}),o(t(W),null,{default:m(()=>[o(t(B),null,{default:m(()=>[o(t(U),null,{default:m(()=>[h(c(t(i)(`settings.gameSettings`)),1)]),_:1}),o(t(F),null,{default:m(()=>[h(c(t(i)(`settings.gameSettingsDesc`)),1)]),_:1})]),_:1}),o(t(H),{class:`space-y-4`},{default:m(()=>[n(`div`,xe,[n(`div`,Se,[n(`h3`,Ce,c(t(i)(`settings.gamePause`)),1),n(`p`,we,c(t(i)(`settings.gamePauseDesc`)),1)]),o(t(L),{onClick:R,variant:t(s).isPaused?`default`:`outline`},{default:m(()=>[(a(),l(ee(t(s).isPaused?t(P):t(j)),{class:`mr-2 h-4 w-4`})),h(` `+c(t(s).isPaused?t(i)(`settings.resume`):t(i)(`settings.pause`)),1)]),_:1},8,[`variant`])])]),_:1})]),_:1}),o(t(W),null,{default:m(()=>[o(t(B),null,{default:m(()=>[o(t(U),null,{default:m(()=>[h(c(t(i)(`settings.about`)),1)]),_:1})]),_:1}),o(t(H),{class:`space-y-4`},{default:m(()=>[n(`div`,Te,[n(`div`,Ee,[n(`span`,De,c(t(i)(`settings.version`))+`:`,1),n(`span`,Oe,c(t(I).version),1)]),n(`div`,Q,[n(`span`,ke,c(t(i)(`settings.buildDate`))+`:`,1),n(`span`,Ae,c(new Date(t(I).buildDate).toLocaleString()),1)])]),n(`div`,je,[n(`h3`,Me,c(t(i)(`settings.community`)),1),n(`div`,Ne,[o(t(L),{variant:`outline`,class:`w-full justify-start`,onClick:b},{default:m(()=>[o(t(O),{class:`mr-2 h-4 w-4`}),h(` `+c(t(i)(`settings.github`)),1)]),_:1}),t(s).locale===`zh-CN`||t(s).locale===`zh-TW`?(a(),l(t(L),{key:0,variant:`outline`,class:`w-full justify-start`,onClick:x},{default:m(()=>[o(t(A),{class:`mr-2 h-4 w-4`}),h(` `+c(t(i)(`settings.qqGroup`))+` `,1),n(`span`,Pe,c(t(I).qq),1)]),_:1})):te(``,!0)])])]),_:1})]),_:1}),o(t(G),{open:f.value,"onUpdate:open":p[0]||=e=>f.value=e},{default:m(()=>[o(t(J),null,{default:m(()=>[o(t(Z),null,{default:m(()=>[o(t(re),null,{default:m(()=>[h(c(g.value),1)]),_:1}),o(t(Y),null,{default:m(()=>[h(c(v.value),1)]),_:1})]),_:1}),o(t(X),null,{default:m(()=>[o(t(q),{onClick:$},{default:m(()=>[h(c(t(i)(`common.cancel`)),1)]),_:1}),o(t(K),{onClick:V},{default:m(()=>[h(c(t(i)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{$ as default}; \ No newline at end of file diff --git a/docs/assets/SettingsView-VjOhq7qI.js b/docs/assets/SettingsView-VjOhq7qI.js deleted file mode 100644 index 29d6486..0000000 --- a/docs/assets/SettingsView-VjOhq7qI.js +++ /dev/null @@ -1 +0,0 @@ -import{t as e}from"./rolldown-runtime-CIDIeb-o.js";import{C as t,D as n,Dt as r,E as i,G as a,J as o,K as s,O as c,Ot as l,Q as u,R as d,S as f,St as p,T as m,X as h,Y as g,Z as _,jt as v,k as y,kt as b,n as x,pt as S,q as C,rt as w,st as T,ut as E,w as D}from"./vendor-ui-DBxeWLyT.js";import{t as O}from"./vendor-vue-Bqq1sBNf.js";import{t as k}from"./CardDescription-CRV0m8La.js";import{Bt as ee,G as A,Ht as j,K as te,Lt as M,Rt as N,Vt as ne,dt as P,ft as F,jt as I,lt as L,ut as R,zt as z}from"./index-Cch-Ig40.js";var B=I(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),V=I(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),H=I(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),U=I(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),W=I(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),G=_({__name:`AlertDialog`,props:{open:{type:Boolean},defaultOpen:{type:Boolean}},emits:[`update:open`],setup(e,{emit:n}){let i=d(e,n);return(e,n)=>(T(),s(r(t),w({"data-slot":`alert-dialog`},r(i)),{default:S(t=>[E(e.$slots,`default`,b(u(t)))]),_:3},16))}}),K=_({__name:`AlertDialogAction`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=x(t,`class`);return(e,i)=>(T(),s(r(y),w(r(n),{class:r(z)(r(M)(),t.class)}),{default:S(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}}),q=_({__name:`AlertDialogCancel`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,i=x(t,`class`);return(e,a)=>(T(),s(r(n),w(r(i),{class:r(z)(r(M)({variant:`outline`}),`mt-2 sm:mt-0`,t.class)}),{default:S(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}}),J=_({inheritAttrs:!1,__name:`AlertDialogContent`,props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=d(x(n,`class`),i);return(e,t)=>(T(),s(r(D),null,{default:S(()=>[h(r(m),{"data-slot":`alert-dialog-overlay`,class:`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80`}),h(r(c),w({"data-slot":`alert-dialog-content`},{...e.$attrs,...r(a)},{class:r(z)(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg`,n.class)}),{default:S(()=>[E(e.$slots,`default`)]),_:3},16,[`class`])]),_:3}))}}),Y=_({__name:`AlertDialogDescription`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=x(t,`class`);return(e,a)=>(T(),s(r(i),w({"data-slot":`alert-dialog-description`},r(n),{class:r(z)(`text-muted-foreground text-sm`,t.class)}),{default:S(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}}),X=_({__name:`AlertDialogFooter`,props:{class:{}},setup(e){let t=e;return(e,n)=>(T(),o(`div`,{"data-slot":`alert-dialog-footer`,class:l(r(z)(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,t.class))},[E(e.$slots,`default`)],2))}}),Z=_({__name:`AlertDialogHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(T(),o(`div`,{"data-slot":`alert-dialog-header`,class:l(r(z)(`flex flex-col gap-2 text-center sm:text-left`,t.class))},[E(e.$slots,`default`)],2))}}),re=_({__name:`AlertDialogTitle`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=x(t,`class`);return(e,i)=>(T(),s(r(f),w({"data-slot":`alert-dialog-title`},r(n),{class:r(z)(`text-lg font-semibold`,t.class)}),{default:S(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}}),ie=e(((e,t)=>{(function(t,n){typeof define==`function`&&define.amd?define([],n):e===void 0?(n(),t.FileSaver={exports:{}}.exports):n()})(e,function(){function e(e,t){return t===void 0?t={autoBom:!1}:typeof t!=`object`&&(console.warn(`Deprecated: Expected third argument to be a object`),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function n(e,t,n){var r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){s(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function r(e){var t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return 200<=t.status&&299>=t.status}function i(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{var t=document.createEvent(`MouseEvents`);t.initMouseEvent(`click`,!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var a=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:void 0,o=a.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),s=a.saveAs||(typeof window!=`object`||window!==a?function(){}:`download`in HTMLAnchorElement.prototype&&!o?function(e,t,o){var s=a.URL||a.webkitURL,c=document.createElement(`a`);t=t||e.name||`download`,c.download=t,c.rel=`noopener`,typeof e==`string`?(c.href=e,c.origin===location.origin?i(c):r(c.href)?n(e,t,o):i(c,c.target=`_blank`)):(c.href=s.createObjectURL(e),setTimeout(function(){s.revokeObjectURL(c.href)},4e4),setTimeout(function(){i(c)},0))}:`msSaveOrOpenBlob`in navigator?function(t,a,o){if(a=a||t.name||`download`,typeof t!=`string`)navigator.msSaveOrOpenBlob(e(t,o),a);else if(r(t))n(t,a,o);else{var s=document.createElement(`a`);s.href=t,s.target=`_blank`,setTimeout(function(){i(s)})}}:function(e,t,r,i){if(i||=open(``,`_blank`),i&&(i.document.title=i.document.body.innerText=`downloading...`),typeof e==`string`)return n(e,t,r);var s=e.type===`application/octet-stream`,c=/constructor/i.test(a.HTMLElement)||a.safari,l=/CriOS\/[\d]+/.test(navigator.userAgent);if((l||s&&c||o)&&typeof FileReader<`u`){var u=new FileReader;u.onloadend=function(){var e=u.result;e=l?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),i?i.location.href=e:location=e,i=null},u.readAsDataURL(e)}else{var d=a.URL||a.webkitURL,f=d.createObjectURL(e);i?i.location=f:location.href=f,i=null,setTimeout(function(){d.revokeObjectURL(f)},4e4)}});a.saveAs=s.saveAs=s,t!==void 0&&(t.exports=s)})}))(),ae={class:`container mx-auto p-4 sm:p-6 space-y-6`},oe={class:`flex items-center justify-between`},se={class:`text-2xl font-bold`},ce={class:`flex items-center justify-between p-4 border rounded-lg`},le={class:`space-y-1`},ue={class:`font-medium`},de={class:`text-sm text-muted-foreground`},fe={class:`flex items-center justify-between p-4 border rounded-lg`},pe={class:`space-y-1`},me={class:`font-medium`},he={class:`text-sm text-muted-foreground`},ge={class:`flex gap-2`},_e={class:`flex items-center justify-between p-4 border rounded-lg border-destructive/50`},ve={class:`space-y-1`},ye={class:`font-medium text-destructive`},be={class:`text-sm text-muted-foreground`},xe={class:`flex items-center justify-between`},Se={class:`flex items-center justify-between`},Ce={class:`space-y-1`},we={class:`text-sm text-muted-foreground`},Te={class:`space-y-2`},Ee={class:`flex items-center justify-between text-sm`},De={class:`text-muted-foreground`},Oe={class:`font-medium`},Q={class:`flex items-center justify-between text-sm`},ke={class:`text-muted-foreground`},Ae={class:`font-medium`},je={class:`pt-2 border-t space-y-2`},Me={class:`text-sm font-medium`},Ne={class:`flex flex-col gap-2`},Pe={class:`ml-auto text-xs text-muted-foreground`},$=_({__name:`SettingsView`,setup(e){let{t}=ee(),n=ne(),i=p(),c=p(!1),l=p(n.player.name),u=p(!1),d=p(``),f=p(``),m=null,_=()=>{window.open(`https://github.com/${j.author}/${j.name}`,`_blank`)},y=()=>{window.open(`https://qm.qq.com/q/${j.id}`,`_blank`)},b=async()=>{try{c.value=!0;let e=localStorage.getItem(j.name);if(!e){O.error(t(`settings.exportFailed`));return}let n=`${j.name}-${new Date().toISOString().slice(0,10)}-${Date.now()}.json`;(0,ie.saveAs)(new Blob([e],{type:`application/json`}),n),O.success(t(`settings.exportSuccess`))}catch(e){console.error(`Export failed:`,e),O.error(t(`settings.exportFailed`))}finally{c.value=!1}},x=()=>{i.value?.click()},w=e=>{let n=e.target.files?.[0];n&&(d.value=t(`settings.importConfirmTitle`),f.value=t(`settings.importConfirmMessage`),u.value=!0,m=()=>E(n))},E=async e=>{try{let n=new FileReader;n.onload=e=>{try{let n=e.target?.result;typeof n==`string`?(localStorage.setItem(j.name,n),O.success(t(`settings.importSuccess`)),setTimeout(()=>location.reload(),500)):O.error(t(`settings.importFailed`))}catch(e){let n=e instanceof Error?e.message:String(e);O.error(t(`settings.importFailed`)+`: `+n)}},n.readAsText(e)}catch(e){console.error(`Import failed:`,e),O.error(t(`settings.importFailed`))}},D=()=>{d.value=t(`settings.clearConfirmTitle`),f.value=t(`settings.clearConfirmMessage`),u.value=!0,m=M},M=()=>{localStorage.clear(),window.location.reload()},I=()=>{l.value.trim()&&(n.player.name=l.value.trim())},z=()=>{m&&=(m(),null),u.value=!1},$=()=>{m=null,u.value=!1,i.value&&(i.value.value=``)};return(e,p)=>(T(),o(`div`,ae,[a(`div`,oe,[a(`h1`,se,v(r(t)(`nav.settings`)),1)]),h(r(F),null,{default:S(()=>[h(r(R),null,{default:S(()=>[h(r(L),null,{default:S(()=>[g(v(r(t)(`settings.dataManagement`)),1)]),_:1}),h(r(k),null,{default:S(()=>[g(v(r(t)(`settings.dataManagementDesc`)),1)]),_:1})]),_:1}),h(r(P),{class:`space-y-4`},{default:S(()=>[a(`div`,ce,[a(`div`,le,[a(`h3`,ue,v(r(t)(`settings.exportData`)),1),a(`p`,de,v(r(t)(`settings.exportDataDesc`)),1)]),h(r(N),{onClick:b,disabled:c.value},{default:S(()=>[h(r(B),{class:`mr-2 h-4 w-4`}),g(` `+v(c.value?r(t)(`settings.exporting`):r(t)(`settings.export`)),1)]),_:1},8,[`disabled`])]),a(`div`,fe,[a(`div`,pe,[a(`h3`,me,v(r(t)(`settings.importData`)),1),a(`p`,he,v(r(t)(`settings.importDataDesc`)),1)]),a(`div`,ge,[a(`input`,{ref_key:`fileInputRef`,ref:i,type:`file`,accept:`.json`,class:`hidden`,onChange:w},null,544),h(r(N),{onClick:x,variant:`outline`},{default:S(()=>[h(r(W),{class:`mr-2 h-4 w-4`}),g(` `+v(r(t)(`settings.selectFile`)),1)]),_:1})])]),a(`div`,_e,[a(`div`,ve,[a(`h3`,ye,v(r(t)(`settings.clearData`)),1),a(`p`,be,v(r(t)(`settings.clearDataDesc`)),1)]),h(r(N),{onClick:D,variant:`destructive`},{default:S(()=>[h(r(U),{class:`mr-2 h-4 w-4`}),g(` `+v(r(t)(`settings.clear`)),1)]),_:1})])]),_:1})]),_:1}),h(r(F),null,{default:S(()=>[h(r(R),null,{default:S(()=>[h(r(L),null,{default:S(()=>[g(v(r(t)(`settings.gameSettings`)),1)]),_:1}),h(r(k),null,{default:S(()=>[g(v(r(t)(`settings.gameSettingsDesc`)),1)]),_:1})]),_:1}),h(r(P),{class:`space-y-4`},{default:S(()=>[a(`div`,xe,[h(r(A),{for:`player-name`},{default:S(()=>[g(v(r(t)(`settings.playerName`)),1)]),_:1}),h(r(te),{id:`player-name`,modelValue:l.value,"onUpdate:modelValue":p[0]||=e=>l.value=e,onBlur:I,class:`max-w-xs`},null,8,[`modelValue`])]),a(`div`,Se,[a(`div`,Ce,[h(r(A),null,{default:S(()=>[g(v(r(t)(`settings.gameSpeed`)),1)]),_:1}),a(`p`,we,v(r(t)(`settings.gameSpeedDesc`)),1)]),p[2]||=a(`div`,{class:`text-2xl font-bold`},`1x`,-1)])]),_:1})]),_:1}),h(r(F),null,{default:S(()=>[h(r(R),null,{default:S(()=>[h(r(L),null,{default:S(()=>[g(v(r(t)(`settings.about`)),1)]),_:1})]),_:1}),h(r(P),{class:`space-y-4`},{default:S(()=>[a(`div`,Te,[a(`div`,Ee,[a(`span`,De,v(r(t)(`settings.version`))+`:`,1),a(`span`,Oe,v(r(j).version),1)]),a(`div`,Q,[a(`span`,ke,v(r(t)(`settings.buildDate`))+`:`,1),a(`span`,Ae,v(new Date().toLocaleDateString()),1)])]),a(`div`,je,[a(`h3`,Me,v(r(t)(`settings.community`)),1),a(`div`,Ne,[h(r(N),{variant:`outline`,class:`w-full justify-start`,onClick:_},{default:S(()=>[h(r(V),{class:`mr-2 h-4 w-4`}),g(` `+v(r(t)(`settings.github`)),1)]),_:1}),r(n).locale===`zh-CN`||r(n).locale===`zh-TW`?(T(),s(r(N),{key:0,variant:`outline`,class:`w-full justify-start`,onClick:y},{default:S(()=>[h(r(H),{class:`mr-2 h-4 w-4`}),g(` `+v(r(t)(`settings.qqGroup`))+` `,1),a(`span`,Pe,v(r(j).qq),1)]),_:1})):C(``,!0)])])]),_:1})]),_:1}),h(r(G),{open:u.value,"onUpdate:open":p[1]||=e=>u.value=e},{default:S(()=>[h(r(J),null,{default:S(()=>[h(r(Z),null,{default:S(()=>[h(r(re),null,{default:S(()=>[g(v(d.value),1)]),_:1}),h(r(Y),null,{default:S(()=>[g(v(f.value),1)]),_:1})]),_:1}),h(r(X),null,{default:S(()=>[h(r(q),{onClick:$},{default:S(()=>[g(v(r(t)(`common.cancel`)),1)]),_:1}),h(r(K),{onClick:z},{default:S(()=>[g(v(r(t)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{$ as default}; \ No newline at end of file diff --git a/docs/assets/ShipyardView-D4UNn323.js b/docs/assets/ShipyardView-D4UNn323.js new file mode 100644 index 0000000..e2b6373 --- /dev/null +++ b/docs/assets/ShipyardView-D4UNn323.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Ct as n,Dn as r,Dt as i,Et as a,Jt as ee,Kt as o,Mt as s,N as c,Nt as l,On as u,Ot as d,Tn as f,c as p,hn as m,in as h,jt as g,kt as _,o as te,r as ne,s as re}from"./game-logic-B_TBzmsj.js";import"./vendor-pinia-C_5mk-F1.js";import"./vendor-vue-router-_-a8jZbv.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-DEf7ySVe.js";import"./vendor-others-DiSZfaku.js";import"./vendor-reka-ui-ICOW9z5F.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CXzdKKhY.js";import"./vendor-icons-B6ER66fi.js";import{t as ie}from"./CardDescription-CtUtXM5o.js";import{m as v,u as ae}from"./game-config-D-D7cMgJ.js";import{I as oe,M as se,O as ce,P as le,_ as ue,c as y,l as b,o as x,r as S,s as C,t as w,u as T,w as E}from"./index-BLxCTx9W.js";import{t as D}from"./useGameConfig-chMIsHFg.js";import{t as O}from"./AlertDialog-vN9u2C5f.js";import{t as k}from"./CardUnlockOverlay-BVmeYgHN.js";import{t as A}from"./UnlockRequirement-CoN2_Hgq.js";var j={key:0,class:`container mx-auto p-4 sm:p-6`},M={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},N={class:`mb-4 sm:mb-6 p-3 sm:p-4 bg-muted/50 rounded-lg border`},P={class:`flex items-center justify-between`},F={class:`text-sm sm:text-base font-medium`},I={class:`text-sm sm:text-base font-bold`},L={class:`mt-2`},R={class:`w-full bg-background rounded-full h-2.5 sm:h-3 overflow-hidden`},z={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},B={class:`space-y-3 sm:space-y-4`},V={class:`grid grid-cols-2 gap-2 text-xs sm:text-sm`},H={class:`text-muted-foreground`},U={class:`font-medium`},de={class:`text-muted-foreground`},fe={class:`font-medium`},pe={class:`text-muted-foreground`},me={class:`font-medium`},he={class:`text-muted-foreground`},ge={class:`font-medium`},_e={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},ve={class:`text-muted-foreground mb-1 sm:mb-2`},ye={class:`space-y-1 sm:space-y-1.5`},be={class:`flex items-center gap-1.5 sm:gap-2`},xe={class:`text-xs`},Se={class:`flex items-center gap-1.5 sm:gap-2`},Ce={class:`text-xs`},we={class:`flex items-center gap-1.5 sm:gap-2`},Te={class:`text-xs`},Ee={class:`space-y-2`},De={key:0,class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2 p-2.5 sm:p-3 bg-muted rounded-lg`},Oe={class:`font-medium text-muted-foreground`},ke={class:`space-y-1 sm:space-y-1.5`},Ae={class:`flex items-center gap-1.5 sm:gap-2`},je={class:`text-xs`},Me={class:`flex items-center gap-1.5 sm:gap-2`},Ne={class:`text-xs`},Pe={class:`flex items-center gap-1.5 sm:gap-2`},Fe={class:`text-xs`},W=l({__name:`ShipyardView`,setup(l){let W=oe(),G=ue(),{t:K}=le(),{SHIPS:q}=D(),J=a(()=>W.currentPlanet),Y=m(null),X=a(()=>J.value?re(J.value.fleet):0),Z=a(()=>J.value?p(J.value,W.player.technologies):0),Q=m({[v.LightFighter]:0,[v.HeavyFighter]:0,[v.Cruiser]:0,[v.Battleship]:0,[v.SmallCargo]:0,[v.LargeCargo]:0,[v.ColonyShip]:0,[v.Recycler]:0,[v.EspionageProbe]:0,[v.DarkMatterHarvester]:0,[v.Deathstar]:0}),Ie=(e,t)=>{if(!W.currentPlanet||!te(W.currentPlanet,e,t,W.player.technologies).valid)return!1;let n=ne(W.currentPlanet,e,t,W.player.officers);return W.currentPlanet.buildQueue.push(n),!0},Le=e=>{let t=Q.value[e];if(t<=0){Y.value?.show({title:K(`shipyardView.inputError`),message:K(`shipyardView.inputErrorMessage`)});return}Ie(e,t)?Q.value[e]=0:Y.value?.show({title:K(`shipyardView.buildFailed`),message:K(`shipyardView.buildFailedMessage`)})},Re=e=>{if(!J.value)return!1;let t=Q.value[e];if(t<=0)return!1;let n=q.value[e],r={metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t};return c(J.value,W.player.technologies,n.requirements)&&J.value.resources.metal>=r.metal&&J.value.resources.crystal>=r.crystal&&J.value.resources.deuterium>=r.deuterium},$=e=>{let t=Q.value[e],n=q.value[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t}};return(a,c)=>J.value?(o(),e(`div`,j,[s(A,{"required-building":t(ae).Shipyard,"required-level":1},null,8,[`required-building`]),i(`h1`,M,u(t(K)(`shipyardView.title`)),1),i(`div`,N,[i(`div`,P,[i(`div`,F,u(t(K)(`shipyardView.fleetStorage`))+`:`,1),i(`div`,I,[i(`span`,{class:f(X.value>Z.value?`text-destructive`:`text-primary`)},u(t(S)(X.value)),3),c[0]||=i(`span`,{class:`text-muted-foreground mx-1`},`/`,-1),i(`span`,null,u(t(S)(Z.value)),1)])]),i(`div`,L,[i(`div`,R,[i(`div`,{class:f([`h-full transition-all duration-300`,X.value>Z.value?`bg-destructive`:`bg-primary`]),style:r({width:`${Math.min(X.value/Z.value*100,100)}%`})},null,6)])])]),i(`div`,z,[(o(!0),e(n,null,ee(Object.values(t(v)),n=>(o(),d(t(T),{key:n,class:`relative`},{default:h(()=>[s(k,{requirements:t(q)[n].requirements},null,8,[`requirements`]),s(t(y),null,{default:h(()=>[s(t(C),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:e=>t(G).openShip(n)},{default:h(()=>[g(u(t(q)[n].name),1)]),_:2},1032,[`onClick`]),s(t(ie),{class:`text-xs sm:text-sm`},{default:h(()=>[g(u(t(q)[n].description),1)]),_:2},1024)]),_:2},1024),s(t(b),null,{default:h(()=>[i(`div`,B,[i(`div`,V,[i(`div`,null,[i(`p`,H,u(t(K)(`shipyardView.attack`)),1),i(`p`,U,u(t(q)[n].attack),1)]),i(`div`,null,[i(`p`,de,u(t(K)(`shipyardView.shield`)),1),i(`p`,fe,u(t(q)[n].shield),1)]),i(`div`,null,[i(`p`,pe,u(t(K)(`shipyardView.speed`)),1),i(`p`,me,u(t(q)[n].speed),1)]),i(`div`,null,[i(`p`,he,u(t(K)(`shipyardView.cargoCapacity`)),1),i(`p`,ge,u(t(S)(t(q)[n].cargoCapacity)),1)])]),i(`div`,_e,[i(`p`,ve,u(t(K)(`shipyardView.unitCost`))+`:`,1),i(`div`,ye,[i(`div`,be,[s(E,{type:`metal`,size:`sm`}),i(`span`,xe,u(t(K)(`resources.metal`))+`:`,1),i(`span`,{class:f([`font-medium text-xs sm:text-sm`,t(x)(J.value.resources.metal,t(q)[n].cost.metal)])},u(t(S)(t(q)[n].cost.metal)),3)]),i(`div`,Se,[s(E,{type:`crystal`,size:`sm`}),i(`span`,Ce,u(t(K)(`resources.crystal`))+`:`,1),i(`span`,{class:f([`font-medium text-xs sm:text-sm`,t(x)(J.value.resources.crystal,t(q)[n].cost.crystal)])},u(t(S)(t(q)[n].cost.crystal)),3)]),i(`div`,we,[s(E,{type:`deuterium`,size:`sm`}),i(`span`,Te,u(t(K)(`resources.deuterium`))+`:`,1),i(`span`,{class:f([`font-medium text-xs sm:text-sm`,t(x)(J.value.resources.deuterium,t(q)[n].cost.deuterium)])},u(t(S)(t(q)[n].cost.deuterium)),3)])])]),i(`div`,Ee,[s(t(w),{for:`quantity-${n}`,class:`text-xs sm:text-sm`},{default:h(()=>[g(u(t(K)(`shipyardView.buildQuantity`)),1)]),_:1},8,[`for`]),s(t(ce),{id:`quantity-${n}`,modelValue:Q.value[n],"onUpdate:modelValue":e=>Q.value[n]=e,modelModifiers:{number:!0},type:`number`,min:`0`,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]),Q.value[n]>0?(o(),e(`div`,De,[i(`p`,Oe,u(t(K)(`shipyardView.totalCost`))+`:`,1),i(`div`,ke,[i(`div`,Ae,[s(E,{type:`metal`,size:`sm`}),i(`span`,je,u(t(K)(`resources.metal`))+`:`,1),i(`span`,{class:f([`font-medium text-xs sm:text-sm`,t(x)(J.value.resources.metal,$(n).metal)])},u(t(S)($(n).metal)),3)]),i(`div`,Me,[s(E,{type:`crystal`,size:`sm`}),i(`span`,Ne,u(t(K)(`resources.crystal`))+`:`,1),i(`span`,{class:f([`font-medium text-xs sm:text-sm`,t(x)(J.value.resources.crystal,$(n).crystal)])},u(t(S)($(n).crystal)),3)]),i(`div`,Pe,[s(E,{type:`deuterium`,size:`sm`}),i(`span`,Fe,u(t(K)(`resources.deuterium`))+`:`,1),i(`span`,{class:f([`font-medium text-xs sm:text-sm`,t(x)(J.value.resources.deuterium,$(n).deuterium)])},u(t(S)($(n).deuterium)),3)])])])):_(``,!0),s(t(se),{onClick:e=>Le(n),disabled:!Re(n),class:`w-full`},{default:h(()=>[g(u(t(K)(`shipyardView.build`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),s(O,{ref_key:`alertDialog`,ref:Y},null,512)])):_(``,!0)}});export{W as default}; \ No newline at end of file diff --git a/docs/assets/ShipyardView-DXEuisRD.js b/docs/assets/ShipyardView-DXEuisRD.js deleted file mode 100644 index 8b55cee..0000000 --- a/docs/assets/ShipyardView-DXEuisRD.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,G as t,H as n,J as r,K as i,Ot as a,St as o,W as ee,X as s,Y as c,Z as l,jt as u,lt as te,pt as d,q as f,st as p}from"./vendor-ui-DBxeWLyT.js";import"./vendor-vue-Bqq1sBNf.js";import{t as m}from"./UnlockRequirement-BdFx1RC0.js";import{t as ne}from"./CardDescription-CRV0m8La.js";import{Bt as re,G as ie,K as ae,Pt as h,Rt as oe,V as g,Vt as _,W as v,dt as y,ft as b,lt as x,rt as S,st as C,ut as w,w as T,yt as E}from"./index-Cch-Ig40.js";import{t as D}from"./useGameConfig-D2EZdt1x.js";import{t as O}from"./AlertDialog-_72FqRCT.js";import{t as k}from"./CardUnlockOverlay-SeY-L1Ut.js";import{o as A,r as j}from"./shipValidation-Cx6mhfwF.js";var M={key:0,class:`container mx-auto p-4 sm:p-6`},N={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},P={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},F={class:`space-y-3 sm:space-y-4`},I={class:`grid grid-cols-2 gap-2 text-xs sm:text-sm`},L={class:`text-muted-foreground`},R={class:`font-medium`},z={class:`text-muted-foreground`},B={class:`font-medium`},V={class:`text-muted-foreground`},H={class:`font-medium`},U={class:`text-muted-foreground`},W={class:`font-medium`},se={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},G={class:`text-muted-foreground mb-1 sm:mb-2`},K={class:`space-y-1 sm:space-y-1.5`},ce={class:`flex items-center gap-1.5 sm:gap-2`},le={class:`text-xs`},ue={class:`flex items-center gap-1.5 sm:gap-2`},de={class:`text-xs`},fe={class:`flex items-center gap-1.5 sm:gap-2`},pe={class:`text-xs`},me={class:`space-y-2`},he={key:0,class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2 p-2.5 sm:p-3 bg-muted rounded-lg`},ge={class:`font-medium text-muted-foreground`},_e={class:`space-y-1 sm:space-y-1.5`},ve={class:`flex items-center gap-1.5 sm:gap-2`},ye={class:`text-xs`},be={class:`flex items-center gap-1.5 sm:gap-2`},xe={class:`text-xs`},Se={class:`flex items-center gap-1.5 sm:gap-2`},Ce={class:`text-xs`},q=l({__name:`ShipyardView`,setup(l){let q=_(),we=E(),{t:J}=re(),{SHIPS:Y}=D(),X=ee(()=>q.currentPlanet),Z=o(null),Q=o({[C.LightFighter]:0,[C.HeavyFighter]:0,[C.Cruiser]:0,[C.Battleship]:0,[C.SmallCargo]:0,[C.LargeCargo]:0,[C.ColonyShip]:0,[C.Recycler]:0,[C.EspionageProbe]:0,[C.DarkMatterHarvester]:0}),Te=(e,t)=>{if(!q.currentPlanet||!A(q.currentPlanet,e,t,q.player.technologies).valid)return!1;let n=j(q.currentPlanet,e,t,q.player.officers);return q.currentPlanet.buildQueue.push(n),!0},Ee=e=>{let t=Q.value[e];if(t<=0){Z.value?.show({title:J(`shipyardView.inputError`),message:J(`shipyardView.inputErrorMessage`)});return}Te(e,t)?Q.value[e]=0:Z.value?.show({title:J(`shipyardView.buildFailed`),message:J(`shipyardView.buildFailedMessage`)})},De=e=>{if(!X.value)return!1;let t=Q.value[e];if(t<=0)return!1;let n=Y.value[e],r={metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t};return T(X.value,q.player.technologies,n.requirements)&&X.value.resources.metal>=r.metal&&X.value.resources.crystal>=r.crystal&&X.value.resources.deuterium>=r.deuterium},$=e=>{let t=Q.value[e],n=Y.value[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t}};return(o,ee)=>X.value?(p(),r(`div`,M,[s(m,{"required-building":e(S).Shipyard,"required-level":1},null,8,[`required-building`]),t(`h1`,N,u(e(J)(`shipyardView.title`)),1),t(`div`,P,[(p(!0),r(n,null,te(Object.values(e(C)),n=>(p(),i(e(b),{key:n,class:`relative`},{default:d(()=>[s(k,{requirements:e(Y)[n].requirements},null,8,[`requirements`]),s(e(w),null,{default:d(()=>[s(e(x),{class:`text-base sm:text-lg cursor-pointer hover:text-primary transition-colors`,onClick:t=>e(we).openShip(n)},{default:d(()=>[c(u(e(Y)[n].name),1)]),_:2},1032,[`onClick`]),s(e(ne),{class:`text-xs sm:text-sm`},{default:d(()=>[c(u(e(Y)[n].description),1)]),_:2},1024)]),_:2},1024),s(e(y),null,{default:d(()=>[t(`div`,F,[t(`div`,I,[t(`div`,null,[t(`p`,L,u(e(J)(`shipyardView.attack`)),1),t(`p`,R,u(e(Y)[n].attack),1)]),t(`div`,null,[t(`p`,z,u(e(J)(`shipyardView.shield`)),1),t(`p`,B,u(e(Y)[n].shield),1)]),t(`div`,null,[t(`p`,V,u(e(J)(`shipyardView.speed`)),1),t(`p`,H,u(e(Y)[n].speed),1)]),t(`div`,null,[t(`p`,U,u(e(J)(`shipyardView.cargoCapacity`)),1),t(`p`,W,u(e(g)(e(Y)[n].cargoCapacity)),1)])]),t(`div`,se,[t(`p`,G,u(e(J)(`shipyardView.unitCost`))+`:`,1),t(`div`,K,[t(`div`,ce,[s(h,{type:`metal`,size:`sm`}),t(`span`,le,u(e(J)(`resources.metal`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(X.value.resources.metal,e(Y)[n].cost.metal)])},u(e(g)(e(Y)[n].cost.metal)),3)]),t(`div`,ue,[s(h,{type:`crystal`,size:`sm`}),t(`span`,de,u(e(J)(`resources.crystal`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(X.value.resources.crystal,e(Y)[n].cost.crystal)])},u(e(g)(e(Y)[n].cost.crystal)),3)]),t(`div`,fe,[s(h,{type:`deuterium`,size:`sm`}),t(`span`,pe,u(e(J)(`resources.deuterium`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(X.value.resources.deuterium,e(Y)[n].cost.deuterium)])},u(e(g)(e(Y)[n].cost.deuterium)),3)])])]),t(`div`,me,[s(e(ie),{for:`quantity-${n}`,class:`text-xs sm:text-sm`},{default:d(()=>[c(u(e(J)(`shipyardView.buildQuantity`)),1)]),_:1},8,[`for`]),s(e(ae),{id:`quantity-${n}`,modelValue:Q.value[n],"onUpdate:modelValue":e=>Q.value[n]=e,modelModifiers:{number:!0},type:`number`,min:`0`,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]),Q.value[n]>0?(p(),r(`div`,he,[t(`p`,ge,u(e(J)(`shipyardView.totalCost`))+`:`,1),t(`div`,_e,[t(`div`,ve,[s(h,{type:`metal`,size:`sm`}),t(`span`,ye,u(e(J)(`resources.metal`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(X.value.resources.metal,$(n).metal)])},u(e(g)($(n).metal)),3)]),t(`div`,be,[s(h,{type:`crystal`,size:`sm`}),t(`span`,xe,u(e(J)(`resources.crystal`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(X.value.resources.crystal,$(n).crystal)])},u(e(g)($(n).crystal)),3)]),t(`div`,Se,[s(h,{type:`deuterium`,size:`sm`}),t(`span`,Ce,u(e(J)(`resources.deuterium`))+`:`,1),t(`span`,{class:a([`font-medium text-xs sm:text-sm`,e(v)(X.value.resources.deuterium,$(n).deuterium)])},u(e(g)($(n).deuterium)),3)])])])):f(``,!0),s(e(oe),{onClick:e=>Ee(n),disabled:!De(n),class:`w-full`},{default:d(()=>[c(u(e(J)(`shipyardView.build`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),s(O,{ref_key:`alertDialog`,ref:Z},null,512)])):f(``,!0)}});export{q as default}; \ No newline at end of file diff --git a/docs/assets/TooltipProvider-Bx7lfIFp.js b/docs/assets/TooltipProvider-Bx7lfIFp.js new file mode 100644 index 0000000..9be2214 --- /dev/null +++ b/docs/assets/TooltipProvider-Bx7lfIFp.js @@ -0,0 +1 @@ +import{Cn as e,En as t,Ft as n,Kt as r,Nt as i,Ot as a,Yt as o,in as s}from"./game-logic-B_TBzmsj.js";import{a as c}from"./vendor-reka-ui-ICOW9z5F.js";var l=i({__name:`TooltipProvider`,props:{delayDuration:{default:0},skipDelayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean}},setup(i){let l=i;return(i,u)=>(r(),a(e(c),t(n(l)),{default:s(()=>[o(i.$slots,`default`)]),_:3},16))}});export{l as t}; \ No newline at end of file diff --git a/docs/assets/UnlockRequirement-BdFx1RC0.js b/docs/assets/UnlockRequirement-BdFx1RC0.js deleted file mode 100644 index def9571..0000000 --- a/docs/assets/UnlockRequirement-BdFx1RC0.js +++ /dev/null @@ -1 +0,0 @@ -import{Dt as e,G as t,J as n,W as r,X as i,Y as a,Z as o,jt as s,pt as c,q as l,st as u}from"./vendor-ui-DBxeWLyT.js";import{s as d}from"./vendor-vue-Bqq1sBNf.js";import{t as f}from"./CardDescription-CRV0m8La.js";import{At as p,Bt as m,It as h,Rt as g,Vt as _,dt as v,ft as y,jt as b,lt as x,ut as S}from"./index-Cch-Ig40.js";import{t as C}from"./useGameConfig-D2EZdt1x.js";var w=b(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),T={key:0,class:`fixed inset-0 z-50 bg-background/80 backdrop-blur-sm flex items-center justify-center p-4`},E={class:`flex justify-center mb-4`},D={class:`rounded-full bg-muted p-4`},O={class:`p-4 bg-muted rounded-lg space-y-2`},k={class:`text-sm font-medium text-center`},A={class:`flex items-center justify-center gap-2`},j={class:`text-base sm:text-lg font-bold`},M={key:0,class:`text-xs text-center text-muted-foreground`},N={class:`flex gap-2`},P=o({__name:`UnlockRequirement`,props:{requiredBuilding:{},requiredLevel:{}},setup(o){let b=o,P=d(),F=_(),{t:I}=m(),{BUILDINGS:L}=C(),R=r(()=>L.value[b.requiredBuilding]?.name||b.requiredBuilding),z=r(()=>F.currentPlanet&&F.currentPlanet.buildings[b.requiredBuilding]||0),B=r(()=>z.value>=b.requiredLevel),V=()=>{P.push(`/buildings`)};return(r,d)=>B.value?l(``,!0):(u(),n(`div`,T,[i(e(y),{class:`max-w-md w-full`},{default:c(()=>[i(e(S),{class:`text-center`},{default:c(()=>[t(`div`,E,[t(`div`,D,[i(e(w),{size:48,class:`text-muted-foreground`})])]),i(e(x),{class:`text-xl sm:text-2xl`},{default:c(()=>[a(s(e(I)(`common.featureLocked`)),1)]),_:1}),i(e(f),{class:`text-sm sm:text-base`},{default:c(()=>[a(s(e(I)(`common.unlockRequired`)),1)]),_:1})]),_:1}),i(e(v),{class:`space-y-4`},{default:c(()=>[t(`div`,O,[t(`p`,k,s(e(I)(`common.requiredBuilding`))+`:`,1),t(`div`,A,[t(`span`,j,s(R.value),1),i(e(h),{variant:`default`},{default:c(()=>[a(`Lv `+s(o.requiredLevel),1)]),_:1})]),z.value===void 0?l(``,!0):(u(),n(`p`,M,s(e(I)(`common.currentLevel`))+`: Lv `+s(z.value),1))]),t(`div`,N,[i(e(g),{onClick:V,class:`flex-1`},{default:c(()=>[i(e(p),{size:16,class:`mr-2`}),a(` `+s(e(I)(`common.goToBuildings`)),1)]),_:1})])]),_:1})]),_:1})]))}});export{w as n,P as t}; \ No newline at end of file diff --git a/docs/assets/UnlockRequirement-CoN2_Hgq.js b/docs/assets/UnlockRequirement-CoN2_Hgq.js new file mode 100644 index 0000000..ef13606 --- /dev/null +++ b/docs/assets/UnlockRequirement-CoN2_Hgq.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Dt as n,Et as r,Kt as i,Mt as a,Nt as o,On as s,in as c,jt as l,kt as u}from"./game-logic-B_TBzmsj.js";import{o as d}from"./vendor-vue-router-_-a8jZbv.js";import{D as f,G as p}from"./vendor-icons-B6ER66fi.js";import{t as m}from"./CardDescription-CtUtXM5o.js";import{A as h,I as g,M as _,P as v,c as y,l as b,s as x,u as S}from"./index-BLxCTx9W.js";import{t as C}from"./useGameConfig-chMIsHFg.js";var w={key:0,class:`fixed inset-0 z-50 bg-background/80 backdrop-blur-sm flex items-center justify-center p-4`},T={class:`flex justify-center mb-4`},E={class:`rounded-full bg-muted p-4`},D={class:`p-4 bg-muted rounded-lg space-y-2`},O={class:`text-sm font-medium text-center`},k={class:`flex items-center justify-center gap-2`},A={class:`text-base sm:text-lg font-bold`},j={key:0,class:`text-xs text-center text-muted-foreground`},M={class:`flex gap-2`},N=o({__name:`UnlockRequirement`,props:{requiredBuilding:{},requiredLevel:{}},setup(o){let N=o,P=d(),F=g(),{t:I}=v(),{BUILDINGS:L}=C(),R=r(()=>L.value[N.requiredBuilding]?.name||N.requiredBuilding),z=r(()=>F.currentPlanet&&F.currentPlanet.buildings[N.requiredBuilding]||0),B=r(()=>z.value>=N.requiredLevel),V=()=>{P.push(`/buildings`)};return(r,d)=>B.value?u(``,!0):(i(),e(`div`,w,[a(t(S),{class:`max-w-md w-full`},{default:c(()=>[a(t(y),{class:`text-center`},{default:c(()=>[n(`div`,T,[n(`div`,E,[a(t(f),{size:48,class:`text-muted-foreground`})])]),a(t(x),{class:`text-xl sm:text-2xl`},{default:c(()=>[l(s(t(I)(`common.featureLocked`)),1)]),_:1}),a(t(m),{class:`text-sm sm:text-base`},{default:c(()=>[l(s(t(I)(`common.unlockRequired`)),1)]),_:1})]),_:1}),a(t(b),{class:`space-y-4`},{default:c(()=>[n(`div`,D,[n(`p`,O,s(t(I)(`common.requiredBuilding`))+`:`,1),n(`div`,k,[n(`span`,A,s(R.value),1),a(t(h),{variant:`default`},{default:c(()=>[l(`Lv `+s(o.requiredLevel),1)]),_:1})]),z.value===void 0?u(``,!0):(i(),e(`p`,j,s(t(I)(`common.currentLevel`))+`: Lv `+s(z.value),1))]),n(`div`,M,[a(t(_),{onClick:V,class:`flex-1`},{default:c(()=>[a(t(p),{size:16,class:`mr-2`}),l(` `+s(t(I)(`common.goToBuildings`)),1)]),_:1})])]),_:1})]),_:1})]))}});export{N as t}; \ No newline at end of file diff --git a/docs/assets/battle.worker-CNO8oZzx.js b/docs/assets/battle.worker-CNO8oZzx.js new file mode 100644 index 0000000..6079c0b --- /dev/null +++ b/docs/assets/battle.worker-CNO8oZzx.js @@ -0,0 +1 @@ +(function(){let e={MetalMine:`metalMine`,CrystalMine:`crystalMine`,DeuteriumSynthesizer:`deuteriumSynthesizer`,SolarPlant:`solarPlant`,RoboticsFactory:`roboticsFactory`,NaniteFactory:`naniteFactory`,Shipyard:`shipyard`,ResearchLab:`researchLab`,MetalStorage:`metalStorage`,CrystalStorage:`crystalStorage`,DeuteriumTank:`deuteriumTank`,DarkMatterCollector:`darkMatterCollector`,Terraformer:`terraformer`,LunarBase:`lunarBase`,SensorPhalanx:`sensorPhalanx`,JumpGate:`jumpGate`,PlanetDestroyerFactory:`planetDestroyerFactory`},t={EnergyTechnology:`energyTechnology`,LaserTechnology:`laserTechnology`,IonTechnology:`ionTechnology`,HyperspaceTechnology:`hyperspaceTechnology`,PlasmaTechnology:`plasmaTechnology`,ComputerTechnology:`computerTechnology`,CombustionDrive:`combustionDrive`,ImpulseDrive:`impulseDrive`,HyperspaceDrive:`hyperspaceDrive`,DarkMatterTechnology:`darkMatterTechnology`,TerraformingTechnology:`terraformingTechnology`,PlanetDestructionTech:`planetDestructionTech`},n={RocketLauncher:`rocketLauncher`,LightLaser:`lightLaser`,HeavyLaser:`heavyLaser`,GaussCannon:`gaussCannon`,IonCannon:`ionCannon`,PlasmaTurret:`plasmaTurret`,SmallShieldDome:`smallShieldDome`,LargeShieldDome:`largeShieldDome`,PlanetaryShield:`planetaryShield`},r={LightFighter:`lightFighter`,HeavyFighter:`heavyFighter`,Cruiser:`cruiser`,Battleship:`battleship`,SmallCargo:`smallCargo`,LargeCargo:`largeCargo`,ColonyShip:`colonyShip`,Recycler:`recycler`,EspionageProbe:`espionageProbe`,DarkMatterHarvester:`darkMatterHarvester`,Deathstar:`deathstar`},i={Commander:`commander`,Admiral:`admiral`,Engineer:`engineer`,Geologist:`geologist`,Technocrat:`technocrat`,DarkMatterSpecialist:`darkMatterSpecialist`};e.MetalMine,e.MetalMine,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.CrystalMine,e.CrystalMine,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.DeuteriumSynthesizer,e.DeuteriumSynthesizer,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.SolarPlant,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.RoboticsFactory,e.RoboticsFactory,e.MetalMine,e.CrystalMine,e.DeuteriumSynthesizer,e.ResearchLab,e.SolarPlant,e.ResearchLab,e.SolarPlant,e.MetalMine,e.CrystalMine,e.ResearchLab,e.NaniteFactory,e.NaniteFactory,e.NaniteFactory,e.RoboticsFactory,e.ResearchLab,e.Shipyard,t.ComputerTechnology,e.ResearchLab,e.Shipyard,t.ComputerTechnology,e.Shipyard,e.Shipyard,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.ResearchLab,e.MetalMine,e.CrystalMine,e.DeuteriumSynthesizer,e.RoboticsFactory,e.MetalMine,e.CrystalMine,e.DeuteriumSynthesizer,e.RoboticsFactory,e.NaniteFactory,t.EnergyTechnology,e.MetalStorage,e.MetalStorage,e.MetalMine,e.MetalMine,e.RoboticsFactory,e.MetalMine,e.RoboticsFactory,e.CrystalStorage,e.CrystalStorage,e.CrystalMine,e.CrystalMine,e.RoboticsFactory,e.CrystalMine,e.RoboticsFactory,e.DeuteriumTank,e.DeuteriumTank,e.DeuteriumSynthesizer,e.DeuteriumSynthesizer,e.RoboticsFactory,e.DeuteriumSynthesizer,e.RoboticsFactory,e.DarkMatterCollector,e.DarkMatterCollector,e.ResearchLab,t.DarkMatterTechnology,e.ResearchLab,t.DarkMatterTechnology,e.RoboticsFactory,e.ResearchLab,t.DarkMatterTechnology,e.NaniteFactory,e.Terraformer,e.Terraformer,e.ResearchLab,e.RoboticsFactory,t.TerraformingTechnology,e.ResearchLab,t.TerraformingTechnology,e.NaniteFactory,e.ResearchLab,t.TerraformingTechnology,e.NaniteFactory,e.LunarBase,e.LunarBase,e.RoboticsFactory,e.RoboticsFactory,e.NaniteFactory,e.SensorPhalanx,e.SensorPhalanx,e.LunarBase,e.LunarBase,t.ComputerTechnology,e.LunarBase,t.ComputerTechnology,e.NaniteFactory,e.JumpGate,e.JumpGate,e.LunarBase,t.HyperspaceTechnology,e.LunarBase,t.HyperspaceTechnology,e.NaniteFactory,e.PlanetDestroyerFactory,e.PlanetDestroyerFactory,e.Shipyard,e.RoboticsFactory,e.NaniteFactory,t.PlanetDestructionTech,e.Shipyard,e.NaniteFactory,t.PlanetDestructionTech,t.HyperspaceTechnology,t.EnergyTechnology,t.EnergyTechnology,e.ResearchLab,e.ResearchLab,e.SolarPlant,e.ResearchLab,e.SolarPlant,e.RoboticsFactory,e.ResearchLab,e.RoboticsFactory,e.NaniteFactory,t.LaserTechnology,t.LaserTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.Shipyard,t.IonTechnology,t.IonTechnology,e.ResearchLab,t.LaserTechnology,t.EnergyTechnology,e.ResearchLab,t.LaserTechnology,t.EnergyTechnology,e.ResearchLab,t.LaserTechnology,e.NaniteFactory,t.HyperspaceTechnology,t.HyperspaceTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.NaniteFactory,t.PlasmaTechnology,t.PlasmaTechnology,e.ResearchLab,t.EnergyTechnology,t.LaserTechnology,t.IonTechnology,e.ResearchLab,t.EnergyTechnology,t.IonTechnology,e.NaniteFactory,e.ResearchLab,t.EnergyTechnology,t.IonTechnology,e.NaniteFactory,t.ComputerTechnology,t.ComputerTechnology,e.ResearchLab,e.ResearchLab,e.ResearchLab,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,t.CombustionDrive,t.CombustionDrive,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.Shipyard,t.ImpulseDrive,t.ImpulseDrive,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.Shipyard,t.HyperspaceDrive,t.HyperspaceDrive,e.ResearchLab,t.HyperspaceTechnology,e.ResearchLab,t.HyperspaceTechnology,e.Shipyard,e.ResearchLab,t.HyperspaceTechnology,e.NaniteFactory,t.DarkMatterTechnology,t.DarkMatterTechnology,e.ResearchLab,t.HyperspaceTechnology,e.ResearchLab,t.HyperspaceTechnology,e.RoboticsFactory,t.EnergyTechnology,e.ResearchLab,t.HyperspaceTechnology,e.NaniteFactory,t.EnergyTechnology,t.TerraformingTechnology,t.TerraformingTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.RoboticsFactory,e.ResearchLab,t.EnergyTechnology,e.NaniteFactory,t.PlanetDestructionTech,t.PlanetDestructionTech,e.ResearchLab,t.HyperspaceTechnology,t.HyperspaceDrive,t.PlasmaTechnology,e.ResearchLab,t.HyperspaceTechnology,t.HyperspaceDrive,t.PlasmaTechnology,e.NaniteFactory;let a={[r.LightFighter]:{id:r.LightFighter,name:`轻型战斗机`,description:`基础战斗单位`,cost:{metal:3e3,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,cargoCapacity:50,attack:50,shield:10,armor:400,speed:12500,fuelConsumption:20,storageUsage:5,requirements:{[e.Shipyard]:1,[t.CombustionDrive]:1}},[r.HeavyFighter]:{id:r.HeavyFighter,name:`重型战斗机`,description:`强力战斗单位`,cost:{metal:6e3,crystal:4e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:100,attack:150,shield:25,armor:1e3,speed:1e4,fuelConsumption:75,storageUsage:10,requirements:{[e.Shipyard]:3,[t.ImpulseDrive]:2}},[r.Cruiser]:{id:r.Cruiser,name:`巡洋舰`,description:`中型战舰`,cost:{metal:2e4,crystal:7e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:800,attack:400,shield:50,armor:2700,speed:15e3,fuelConsumption:300,storageUsage:15,requirements:{[e.Shipyard]:5,[t.ImpulseDrive]:4,[t.IonTechnology]:2}},[r.Battleship]:{id:r.Battleship,name:`战列舰`,description:`重型战舰`,cost:{metal:45e3,crystal:15e3,deuterium:0,darkMatter:0,energy:0},buildTime:90,cargoCapacity:1500,attack:1e3,shield:200,armor:6e3,speed:1e4,fuelConsumption:500,storageUsage:25,requirements:{[e.Shipyard]:7,[t.HyperspaceDrive]:4}},[r.SmallCargo]:{id:r.SmallCargo,name:`小型运输船`,description:`运输资源`,cost:{metal:2e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:15,cargoCapacity:5e3,attack:5,shield:10,armor:400,speed:5e3,fuelConsumption:10,storageUsage:10,requirements:{[e.Shipyard]:2,[t.CombustionDrive]:2}},[r.LargeCargo]:{id:r.LargeCargo,name:`大型运输船`,description:`大量运输资源`,cost:{metal:6e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:25e3,attack:5,shield:25,armor:1200,speed:7500,fuelConsumption:50,storageUsage:20,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.ColonyShip]:{id:r.ColonyShip,name:`殖民船`,description:`建立新殖民地`,cost:{metal:1e4,crystal:2e4,deuterium:1e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:7500,attack:50,shield:100,armor:3e3,speed:2500,fuelConsumption:1e3,storageUsage:40,requirements:{[e.Shipyard]:4,[t.ImpulseDrive]:3}},[r.Recycler]:{id:r.Recycler,name:`回收船`,description:`回收废墟资源`,cost:{metal:1e4,crystal:6e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:2e4,attack:1,shield:10,armor:1600,speed:2e3,fuelConsumption:300,storageUsage:30,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.EspionageProbe]:{id:r.EspionageProbe,name:`间谍探测器`,description:`侦察敌方星球`,cost:{metal:0,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:5,cargoCapacity:5,attack:0,shield:0,armor:100,speed:1e8,fuelConsumption:1,storageUsage:2,requirements:{[e.Shipyard]:3,[t.CombustionDrive]:3}},[r.DarkMatterHarvester]:{id:r.DarkMatterHarvester,name:`暗物质采集船`,description:`专门用于采集暗物质的特殊飞船`,cost:{metal:1e5,crystal:15e4,deuterium:5e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:1e3,attack:10,shield:50,armor:2e3,speed:5e3,fuelConsumption:500,storageUsage:50,requirements:{[e.Shipyard]:8,[t.HyperspaceDrive]:5,[t.DarkMatterTechnology]:1}},[r.Deathstar]:{id:r.Deathstar,name:`死星`,description:`终极武器,能够摧毁整个行星`,cost:{metal:5e6,crystal:4e6,deuterium:1e6,darkMatter:0,energy:0},buildTime:600,cargoCapacity:1e6,attack:2e5,shield:5e4,armor:9e5,speed:100,fuelConsumption:1,storageUsage:100,requirements:{[e.PlanetDestroyerFactory]:10,[t.PlanetDestructionTech]:7,[t.HyperspaceDrive]:7}}},o={[n.RocketLauncher]:{id:n.RocketLauncher,name:`火箭发射器`,description:`基础防御设施`,cost:{metal:2e3,crystal:0,deuterium:0,darkMatter:0,energy:0},buildTime:10,attack:80,shield:20,armor:200,requirements:{[e.Shipyard]:1}},[n.LightLaser]:{id:n.LightLaser,name:`轻型激光炮`,description:`激光防御武器`,cost:{metal:1500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildTime:12,attack:100,shield:25,armor:200,requirements:{[e.Shipyard]:2,[t.LaserTechnology]:3}},[n.HeavyLaser]:{id:n.HeavyLaser,name:`重型激光炮`,description:`强力激光武器`,cost:{metal:6e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,attack:250,shield:100,armor:800,requirements:{[e.Shipyard]:4,[t.LaserTechnology]:6}},[n.GaussCannon]:{id:n.GaussCannon,name:`高斯炮`,description:`电磁加速武器`,cost:{metal:2e4,crystal:15e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:35,attack:1100,shield:200,armor:3500,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.IonCannon]:{id:n.IonCannon,name:`离子炮`,description:`离子武器系统`,cost:{metal:2e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:150,shield:500,armor:800,requirements:{[e.Shipyard]:4,[t.IonTechnology]:4}},[n.PlasmaTurret]:{id:n.PlasmaTurret,name:`等离子炮台`,description:`最强防御武器`,cost:{metal:5e4,crystal:5e4,deuterium:3e4,darkMatter:0,energy:0},buildTime:60,attack:3e3,shield:300,armor:1e4,requirements:{[e.Shipyard]:8,[t.PlasmaTechnology]:7}},[n.SmallShieldDome]:{id:n.SmallShieldDome,name:`小型护盾罩`,description:`保护星球的能量护盾`,cost:{metal:1e4,crystal:1e4,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:1,shield:2e3,armor:2e3,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:3}},[n.LargeShieldDome]:{id:n.LargeShieldDome,name:`大型护盾罩`,description:`强大的星球护盾`,cost:{metal:5e4,crystal:5e4,deuterium:0,darkMatter:0,energy:0},buildTime:60,attack:1,shield:1e4,armor:1e4,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.PlanetaryShield]:{id:n.PlanetaryShield,name:`行星护盾`,description:`保护行星免受毁灭攻击的超级护盾`,cost:{metal:2e6,crystal:2e6,deuterium:1e6,darkMatter:0,energy:0},buildTime:180,attack:1,shield:1e5,armor:1e5,requirements:{[e.Shipyard]:10,[t.EnergyTechnology]:10,[t.HyperspaceTechnology]:8}}};i.Commander,i.Commander,i.Admiral,i.Admiral,i.Engineer,i.Engineer,i.Geologist,i.Geologist,i.Technocrat,i.Technocrat,i.DarkMatterSpecialist,i.DarkMatterSpecialist;let s={SIMULATE_BATTLE:`SIMULATE_BATTLE`,CALCULATE_PLUNDER:`CALCULATE_PLUNDER`,CALCULATE_DEBRIS:`CALCULATE_DEBRIS`,SUCCESS:`SUCCESS`,ERROR:`ERROR`},c=(e,t=0,n=.1)=>Math.floor(e*(1+t*n)),l=(e,t=!1)=>{let n=[];if(e.ships){for(let[t,r]of Object.entries(e.ships))if(r>0){let i=a[t];n.push({type:t,count:r,attack:c(i.attack,e.weaponTech),shield:c(i.shield,e.shieldTech),armor:c(i.armor,e.armorTech)})}}if(t&&e.defense){for(let[t,r]of Object.entries(e.defense))if(r>0){let i=o[t];n.push({type:t,count:r,attack:c(i.attack,e.weaponTech),shield:c(i.shield,e.shieldTech),armor:c(i.armor,e.armorTech)})}}return n},u=(e,t)=>{let n=e.attack,r=t.shield,i=t.armor,a=0,o=0;if(n.01)return{destroyed:0,damagedShield:0};let s=n;if(s>r)s-=r,o=r;else return o=s,{destroyed:0,damagedShield:o};if(s>i)a=1;else{let e=s/i;Math.random(){let n={},i={},a={};for(let n of e)for(let e=0;e0){if(o.count-=s,Object.values(r).includes(o.type)){let e=o.type;i[e]=(i[e]||0)+s}else{let e=o.type;a[e]=(a[e]||0)+s}o.count<=0&&t.splice(e,1)}}for(let r of t)for(let t=0;t0){i.count-=a;let r=i.type;n[r]=(n[r]||0)+a,i.count<=0&&e.splice(t,1)}}let o=e.reduce((e,t)=>e+t.count*t.attack,0),s=t.reduce((e,t)=>e+t.count*t.attack,0);return{attackerLosses:n,defenderLosses:{fleet:i,defense:a},attackerRemainingPower:o,defenderRemainingPower:s}},f=(e,t,n=6)=>{let i=l(e,!1),a=l(t,!0),o={},s={},c={},u=[],f=0;for(let e=0;e0&&(p[e]=n,c[e]=t-n)}let m={};for(let e of i)e.count>0&&(m[e.type]=e.count);let h={},g={};for(let e of a)e.count>0&&(Object.values(r).includes(e.type)?h[e.type]=e.count:g[e.type]=e.count);for(let[e,t]of Object.entries(p))g[e]=(g[e]||0)+t;let _;return _=i.length===0&&a.length===0?`draw`:i.length===0?`defender`:a.length===0?`attacker`:`draw`,{winner:_,rounds:f,attackerLosses:o,defenderLosses:{fleet:s,defense:c},attackerRemaining:m,defenderRemaining:{fleet:h,defense:g},roundDetails:u}},p=(e,t)=>{let n=0;for(let[e,r]of Object.entries(t)){let t=a[e];n+=t.cargoCapacity*r}let r={metal:Math.floor(e.metal*.5),crystal:Math.floor(e.crystal*.5),deuterium:Math.floor(e.deuterium*.5),darkMatter:Math.floor(e.darkMatter*.5),energy:0},i=r.metal+r.crystal+r.deuterium+r.darkMatter;if(n>=i)return r;let o=n/i;return{metal:Math.floor(r.metal*o),crystal:Math.floor(r.crystal*o),deuterium:Math.floor(r.deuterium*o),darkMatter:Math.floor(r.darkMatter*o),energy:0}},m=(e,t)=>{let n=0,r=0;for(let[t,i]of Object.entries(e)){let e=a[t];n+=e.cost.metal*i*.3,r+=e.cost.crystal*i*.3}for(let[e,i]of Object.entries(t.fleet)){let t=a[e];n+=t.cost.metal*i*.3,r+=t.cost.crystal*i*.3}for(let[e,i]of Object.entries(t.defense)){let t=o[e];n+=t.cost.metal*i*.3,r+=t.cost.crystal*i*.3}return{metal:Math.floor(n),crystal:Math.floor(r),deuterium:0,darkMatter:0,energy:0}};self.onmessage=e=>{let{id:t,type:n,payload:r}=e.data;try{let e;switch(n){case s.SIMULATE_BATTLE:{let{attacker:t,defender:n,maxRounds:i=6}=r;e=f(t,n,i);break}case s.CALCULATE_PLUNDER:{let{defenderResources:t,attackerFleet:n}=r;e=p(t,n);break}case s.CALCULATE_DEBRIS:{let{attackerLosses:t,defenderLosses:n}=r;e=m(t,n);break}default:throw Error(`Unknown message type: ${n}`)}let i={id:t,type:s.SUCCESS,success:!0,data:e};self.postMessage(i)}catch(e){let n={id:t,type:s.ERROR,success:!1,error:e instanceof Error?e.message:String(e)};self.postMessage(n)}}})(); \ No newline at end of file diff --git a/docs/assets/eye-B5ACPUPU.js b/docs/assets/eye-B5ACPUPU.js deleted file mode 100644 index f4c12a0..0000000 --- a/docs/assets/eye-B5ACPUPU.js +++ /dev/null @@ -1 +0,0 @@ -import{jt as e}from"./index-Cch-Ig40.js";var t=e(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]);export{t}; \ No newline at end of file diff --git a/docs/assets/game-config-D-D7cMgJ.js b/docs/assets/game-config-D-D7cMgJ.js new file mode 100644 index 0000000..7b2f1a3 --- /dev/null +++ b/docs/assets/game-config-D-D7cMgJ.js @@ -0,0 +1 @@ +const e={MetalMine:`metalMine`,CrystalMine:`crystalMine`,DeuteriumSynthesizer:`deuteriumSynthesizer`,SolarPlant:`solarPlant`,RoboticsFactory:`roboticsFactory`,NaniteFactory:`naniteFactory`,Shipyard:`shipyard`,ResearchLab:`researchLab`,MetalStorage:`metalStorage`,CrystalStorage:`crystalStorage`,DeuteriumTank:`deuteriumTank`,DarkMatterCollector:`darkMatterCollector`,Terraformer:`terraformer`,LunarBase:`lunarBase`,SensorPhalanx:`sensorPhalanx`,JumpGate:`jumpGate`,PlanetDestroyerFactory:`planetDestroyerFactory`},t={EnergyTechnology:`energyTechnology`,LaserTechnology:`laserTechnology`,IonTechnology:`ionTechnology`,HyperspaceTechnology:`hyperspaceTechnology`,PlasmaTechnology:`plasmaTechnology`,ComputerTechnology:`computerTechnology`,CombustionDrive:`combustionDrive`,ImpulseDrive:`impulseDrive`,HyperspaceDrive:`hyperspaceDrive`,DarkMatterTechnology:`darkMatterTechnology`,TerraformingTechnology:`terraformingTechnology`,PlanetDestructionTech:`planetDestructionTech`},n={RocketLauncher:`rocketLauncher`,LightLaser:`lightLaser`,HeavyLaser:`heavyLaser`,GaussCannon:`gaussCannon`,IonCannon:`ionCannon`,PlasmaTurret:`plasmaTurret`,SmallShieldDome:`smallShieldDome`,LargeShieldDome:`largeShieldDome`,PlanetaryShield:`planetaryShield`},r={LightFighter:`lightFighter`,HeavyFighter:`heavyFighter`,Cruiser:`cruiser`,Battleship:`battleship`,SmallCargo:`smallCargo`,LargeCargo:`largeCargo`,ColonyShip:`colonyShip`,Recycler:`recycler`,EspionageProbe:`espionageProbe`,DarkMatterHarvester:`darkMatterHarvester`,Deathstar:`deathstar`},i={Attack:`attack`,Transport:`transport`,Colonize:`colonize`,Spy:`spy`,Deploy:`deploy`,Expedition:`expedition`,HarvestDarkMatter:`harvestDarkMatter`,Recycle:`recycle`,Destroy:`destroy`},a={Commander:`commander`,Admiral:`admiral`,Engineer:`engineer`,Geologist:`geologist`,Technocrat:`technocrat`,DarkMatterSpecialist:`darkMatterSpecialist`},o={[e.MetalMine]:{id:e.MetalMine,name:`金属矿`,description:`开采金属资源`,baseCost:{metal:60,crystal:15,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:1.5,spaceUsage:1,planetOnly:!0,requirements:{[e.SolarPlant]:1},levelRequirements:{10:{[e.RoboticsFactory]:2},20:{[e.RoboticsFactory]:5,[e.ResearchLab]:3},30:{[e.NaniteFactory]:1,[e.ResearchLab]:8}}},[e.CrystalMine]:{id:e.CrystalMine,name:`晶体矿`,description:`开采晶体资源`,baseCost:{metal:48,crystal:24,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:1.6,spaceUsage:1,planetOnly:!0,requirements:{[e.SolarPlant]:1},levelRequirements:{10:{[e.RoboticsFactory]:2},20:{[e.RoboticsFactory]:5,[e.ResearchLab]:3},30:{[e.NaniteFactory]:1,[e.ResearchLab]:8}}},[e.DeuteriumSynthesizer]:{id:e.DeuteriumSynthesizer,name:`重氢合成器`,description:`合成重氢资源`,baseCost:{metal:225,crystal:75,deuterium:0,darkMatter:0,energy:0},baseTime:20,costMultiplier:1.5,spaceUsage:2,planetOnly:!0,requirements:{[e.SolarPlant]:1},levelRequirements:{10:{[e.RoboticsFactory]:2},20:{[e.RoboticsFactory]:5,[e.ResearchLab]:3},30:{[e.NaniteFactory]:1,[e.ResearchLab]:8}}},[e.SolarPlant]:{id:e.SolarPlant,name:`太阳能电站`,description:`提供能源`,baseCost:{metal:75,crystal:30,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:1.5,spaceUsage:2,levelRequirements:{15:{[e.RoboticsFactory]:3},25:{[e.RoboticsFactory]:6,[e.ResearchLab]:5},35:{[e.NaniteFactory]:1,[e.ResearchLab]:10}}},[e.RoboticsFactory]:{id:e.RoboticsFactory,name:`机器人工厂`,description:`加快建造速度`,baseCost:{metal:400,crystal:120,deuterium:200,darkMatter:0,energy:0},baseTime:40,costMultiplier:2,spaceUsage:4,requirements:{[e.MetalMine]:2,[e.CrystalMine]:2,[e.DeuteriumSynthesizer]:2},levelRequirements:{5:{[e.ResearchLab]:3,[e.SolarPlant]:8},8:{[e.ResearchLab]:6,[e.SolarPlant]:12,[e.MetalMine]:12,[e.CrystalMine]:12},10:{[e.ResearchLab]:8,[e.NaniteFactory]:1}}},[e.NaniteFactory]:{id:e.NaniteFactory,name:`纳米工厂`,description:`增加建造队列数量,每级+1队列`,baseCost:{metal:1e6,crystal:5e5,deuterium:1e5,darkMatter:0,energy:0},baseTime:240,costMultiplier:2,spaceUsage:8,maxLevel:10,requirements:{[e.RoboticsFactory]:10},levelRequirements:{3:{[e.ResearchLab]:10,[e.Shipyard]:8,[t.ComputerTechnology]:8},5:{[e.ResearchLab]:12,[e.Shipyard]:10,[t.ComputerTechnology]:10}}},[e.Shipyard]:{id:e.Shipyard,name:`船坞`,description:`建造舰船`,baseCost:{metal:400,crystal:200,deuterium:100,darkMatter:0,energy:0},baseTime:30,costMultiplier:2,spaceUsage:5,fleetStorageBonus:1e3,requirements:{[e.RoboticsFactory]:2},levelRequirements:{8:{[e.RoboticsFactory]:5,[e.ResearchLab]:5},12:{[e.RoboticsFactory]:8,[e.ResearchLab]:8,[e.NaniteFactory]:2}}},[e.ResearchLab]:{id:e.ResearchLab,name:`研究实验室`,description:`研究科技`,baseCost:{metal:200,crystal:400,deuterium:200,darkMatter:0,energy:0},baseTime:30,costMultiplier:2,spaceUsage:3,requirements:{[e.MetalMine]:3,[e.CrystalMine]:3,[e.DeuteriumSynthesizer]:3},levelRequirements:{8:{[e.RoboticsFactory]:5,[e.MetalMine]:10,[e.CrystalMine]:10,[e.DeuteriumSynthesizer]:10},12:{[e.RoboticsFactory]:8,[e.NaniteFactory]:1,[t.EnergyTechnology]:5}}},[e.MetalStorage]:{id:e.MetalStorage,name:`金属仓库`,description:`增加金属存储上限`,baseCost:{metal:1e3,crystal:0,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:2,spaceUsage:1,requirements:{[e.MetalMine]:2},levelRequirements:{8:{[e.MetalMine]:15,[e.RoboticsFactory]:3},12:{[e.MetalMine]:25,[e.RoboticsFactory]:6}}},[e.CrystalStorage]:{id:e.CrystalStorage,name:`晶体仓库`,description:`增加晶体存储上限`,baseCost:{metal:1e3,crystal:500,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:2,spaceUsage:1,requirements:{[e.CrystalMine]:2},levelRequirements:{8:{[e.CrystalMine]:15,[e.RoboticsFactory]:3},12:{[e.CrystalMine]:25,[e.RoboticsFactory]:6}}},[e.DeuteriumTank]:{id:e.DeuteriumTank,name:`重氢罐`,description:`增加重氢存储上限`,baseCost:{metal:1e3,crystal:1e3,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:2,spaceUsage:1,requirements:{[e.DeuteriumSynthesizer]:2},levelRequirements:{8:{[e.DeuteriumSynthesizer]:15,[e.RoboticsFactory]:3},12:{[e.DeuteriumSynthesizer]:25,[e.RoboticsFactory]:6}}},[e.DarkMatterCollector]:{id:e.DarkMatterCollector,name:`暗物质收集器`,description:`收集稀有的暗物质资源`,baseCost:{metal:5e4,crystal:1e5,deuterium:5e4,darkMatter:0,energy:0},baseTime:90,costMultiplier:2,spaceUsage:6,planetOnly:!0,requirements:{[e.ResearchLab]:5,[t.DarkMatterTechnology]:1},levelRequirements:{5:{[e.ResearchLab]:8,[t.DarkMatterTechnology]:3,[e.RoboticsFactory]:8},8:{[e.ResearchLab]:10,[t.DarkMatterTechnology]:5,[e.NaniteFactory]:2}}},[e.Terraformer]:{id:e.Terraformer,name:`地形改造器`,description:`改造行星地形,每级增加5个可用空间`,baseCost:{metal:0,crystal:5e4,deuterium:1e5,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,spaceUsage:5,planetOnly:!0,requirements:{[e.ResearchLab]:10,[e.RoboticsFactory]:8,[t.TerraformingTechnology]:1},levelRequirements:{5:{[e.ResearchLab]:12,[t.TerraformingTechnology]:3,[e.NaniteFactory]:1},8:{[e.ResearchLab]:14,[t.TerraformingTechnology]:5,[e.NaniteFactory]:3}}},[e.LunarBase]:{id:e.LunarBase,name:`月球基地`,description:`增加月球可用空间`,baseCost:{metal:2e4,crystal:4e4,deuterium:2e4,darkMatter:0,energy:0},baseTime:45,costMultiplier:2,spaceUsage:0,moonOnly:!0,levelRequirements:{5:{[e.RoboticsFactory]:5},8:{[e.RoboticsFactory]:8,[e.NaniteFactory]:1}}},[e.SensorPhalanx]:{id:e.SensorPhalanx,name:`传感器阵列`,description:`侦测周围星系的舰队活动`,baseCost:{metal:2e4,crystal:4e4,deuterium:2e4,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,spaceUsage:6,moonOnly:!0,requirements:{[e.LunarBase]:1},levelRequirements:{5:{[e.LunarBase]:5,[t.ComputerTechnology]:5},8:{[e.LunarBase]:8,[t.ComputerTechnology]:8,[e.NaniteFactory]:2}}},[e.JumpGate]:{id:e.JumpGate,name:`跳跃门`,description:`瞬间传送舰队到其他月球`,baseCost:{metal:2e6,crystal:4e6,deuterium:2e6,darkMatter:0,energy:0},baseTime:240,costMultiplier:2,spaceUsage:10,moonOnly:!0,maxLevel:5,requirements:{[e.LunarBase]:1,[t.HyperspaceTechnology]:7},levelRequirements:{3:{[e.LunarBase]:5,[t.HyperspaceTechnology]:10,[e.NaniteFactory]:3}}},[e.PlanetDestroyerFactory]:{id:e.PlanetDestroyerFactory,name:`行星毁灭者工厂`,description:`建造能够摧毁行星的终极武器`,baseCost:{metal:5e6,crystal:4e6,deuterium:1e6,darkMatter:0,energy:0},baseTime:300,costMultiplier:2,spaceUsage:15,planetOnly:!0,maxLevel:3,requirements:{[e.Shipyard]:12,[e.RoboticsFactory]:10,[e.NaniteFactory]:5,[t.PlanetDestructionTech]:1},levelRequirements:{3:{[e.Shipyard]:14,[e.NaniteFactory]:8,[t.PlanetDestructionTech]:3,[t.HyperspaceTechnology]:10}}}},s={[t.EnergyTechnology]:{id:t.EnergyTechnology,name:`能源技术`,description:`提高能源利用效率`,baseCost:{metal:0,crystal:800,deuterium:400,darkMatter:0,energy:0},baseTime:30,costMultiplier:2,requirements:{[e.ResearchLab]:1},levelRequirements:{5:{[e.ResearchLab]:3,[e.SolarPlant]:10},8:{[e.ResearchLab]:5,[e.SolarPlant]:15,[e.RoboticsFactory]:3},12:{[e.ResearchLab]:8,[e.RoboticsFactory]:6,[e.NaniteFactory]:1}}},[t.LaserTechnology]:{id:t.LaserTechnology,name:`激光技术`,description:`开发激光武器`,baseCost:{metal:200,crystal:100,deuterium:0,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:1,[t.EnergyTechnology]:2},levelRequirements:{6:{[e.ResearchLab]:5,[t.EnergyTechnology]:5,[e.Shipyard]:3},10:{[e.ResearchLab]:8,[t.EnergyTechnology]:8,[e.Shipyard]:6}}},[t.IonTechnology]:{id:t.IonTechnology,name:`离子技术`,description:`开发离子武器`,baseCost:{metal:1e3,crystal:300,deuterium:100,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:4,[t.LaserTechnology]:5,[t.EnergyTechnology]:4},levelRequirements:{5:{[e.ResearchLab]:8,[t.LaserTechnology]:10,[t.EnergyTechnology]:8},8:{[e.ResearchLab]:10,[t.LaserTechnology]:12,[e.NaniteFactory]:2}}},[t.HyperspaceTechnology]:{id:t.HyperspaceTechnology,name:`超空间技术`,description:`研究超空间跳跃`,baseCost:{metal:0,crystal:4e3,deuterium:2e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:7,[t.EnergyTechnology]:5},levelRequirements:{5:{[e.ResearchLab]:10,[t.EnergyTechnology]:8,[e.Shipyard]:5},8:{[e.ResearchLab]:12,[t.EnergyTechnology]:10,[e.NaniteFactory]:2}}},[t.PlasmaTechnology]:{id:t.PlasmaTechnology,name:`等离子技术`,description:`开发等离子武器`,baseCost:{metal:2e3,crystal:4e3,deuterium:1e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:4,[t.EnergyTechnology]:8,[t.LaserTechnology]:10,[t.IonTechnology]:5},levelRequirements:{5:{[e.ResearchLab]:10,[t.EnergyTechnology]:12,[t.IonTechnology]:8,[e.NaniteFactory]:1},8:{[e.ResearchLab]:12,[t.EnergyTechnology]:15,[t.IonTechnology]:10,[e.NaniteFactory]:3}}},[t.ComputerTechnology]:{id:t.ComputerTechnology,name:`计算机技术`,description:`增加研究队列数量,每级+1队列`,baseCost:{metal:0,crystal:400,deuterium:600,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,fleetStorageBonus:500,maxLevel:10,requirements:{[e.ResearchLab]:1},levelRequirements:{3:{[e.ResearchLab]:5},5:{[e.ResearchLab]:8,[e.RoboticsFactory]:5},8:{[e.ResearchLab]:10,[e.NaniteFactory]:2}}},[t.CombustionDrive]:{id:t.CombustionDrive,name:`燃烧引擎`,description:`基础推进系统`,baseCost:{metal:400,crystal:0,deuterium:600,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:1,[t.EnergyTechnology]:1},levelRequirements:{5:{[e.ResearchLab]:5,[t.EnergyTechnology]:3,[e.Shipyard]:2},8:{[e.ResearchLab]:8,[t.EnergyTechnology]:5,[e.Shipyard]:5}}},[t.ImpulseDrive]:{id:t.ImpulseDrive,name:`脉冲引擎`,description:`高级推进系统`,baseCost:{metal:2e3,crystal:4e3,deuterium:600,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:2,[t.EnergyTechnology]:1},levelRequirements:{5:{[e.ResearchLab]:6,[t.EnergyTechnology]:4,[e.Shipyard]:3},8:{[e.ResearchLab]:8,[t.EnergyTechnology]:6,[e.Shipyard]:6}}},[t.HyperspaceDrive]:{id:t.HyperspaceDrive,name:`超空间引擎`,description:`超空间推进系统`,baseCost:{metal:1e4,crystal:2e4,deuterium:6e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:7,[t.HyperspaceTechnology]:3},levelRequirements:{5:{[e.ResearchLab]:10,[t.HyperspaceTechnology]:6,[e.Shipyard]:8},8:{[e.ResearchLab]:12,[t.HyperspaceTechnology]:8,[e.NaniteFactory]:3}}},[t.DarkMatterTechnology]:{id:t.DarkMatterTechnology,name:`暗物质技术`,description:`研究暗物质的性质和应用`,baseCost:{metal:1e5,crystal:2e5,deuterium:1e5,darkMatter:0,energy:0},baseTime:180,costMultiplier:2,requirements:{[e.ResearchLab]:8,[t.HyperspaceTechnology]:5},levelRequirements:{3:{[e.ResearchLab]:10,[t.HyperspaceTechnology]:8,[e.RoboticsFactory]:10,[t.EnergyTechnology]:10},5:{[e.ResearchLab]:12,[t.HyperspaceTechnology]:10,[e.NaniteFactory]:2,[t.EnergyTechnology]:12}}},[t.TerraformingTechnology]:{id:t.TerraformingTechnology,name:`地形改造技术`,description:`研究行星地形改造技术,每级为所有行星增加5个可用空间`,baseCost:{metal:0,crystal:2e4,deuterium:4e4,darkMatter:0,energy:0},baseTime:90,costMultiplier:2,requirements:{[e.ResearchLab]:8,[t.EnergyTechnology]:6},levelRequirements:{5:{[e.ResearchLab]:12,[t.EnergyTechnology]:10,[e.RoboticsFactory]:10},8:{[e.ResearchLab]:14,[t.EnergyTechnology]:12,[e.NaniteFactory]:3}}},[t.PlanetDestructionTech]:{id:t.PlanetDestructionTech,name:`行星毁灭技术`,description:`研究如何摧毁整个行星的恐怖技术`,baseCost:{metal:4e6,crystal:8e6,deuterium:4e6,darkMatter:0,energy:0},baseTime:300,costMultiplier:2,maxLevel:5,requirements:{[e.ResearchLab]:12,[t.HyperspaceTechnology]:8,[t.HyperspaceDrive]:6,[t.PlasmaTechnology]:7},levelRequirements:{3:{[e.ResearchLab]:14,[t.HyperspaceTechnology]:12,[t.HyperspaceDrive]:10,[t.PlasmaTechnology]:10,[e.NaniteFactory]:5}}}},c={[r.LightFighter]:{id:r.LightFighter,name:`轻型战斗机`,description:`基础战斗单位`,cost:{metal:3e3,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,cargoCapacity:50,attack:50,shield:10,armor:400,speed:12500,fuelConsumption:20,storageUsage:5,requirements:{[e.Shipyard]:1,[t.CombustionDrive]:1}},[r.HeavyFighter]:{id:r.HeavyFighter,name:`重型战斗机`,description:`强力战斗单位`,cost:{metal:6e3,crystal:4e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:100,attack:150,shield:25,armor:1e3,speed:1e4,fuelConsumption:75,storageUsage:10,requirements:{[e.Shipyard]:3,[t.ImpulseDrive]:2}},[r.Cruiser]:{id:r.Cruiser,name:`巡洋舰`,description:`中型战舰`,cost:{metal:2e4,crystal:7e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:800,attack:400,shield:50,armor:2700,speed:15e3,fuelConsumption:300,storageUsage:15,requirements:{[e.Shipyard]:5,[t.ImpulseDrive]:4,[t.IonTechnology]:2}},[r.Battleship]:{id:r.Battleship,name:`战列舰`,description:`重型战舰`,cost:{metal:45e3,crystal:15e3,deuterium:0,darkMatter:0,energy:0},buildTime:90,cargoCapacity:1500,attack:1e3,shield:200,armor:6e3,speed:1e4,fuelConsumption:500,storageUsage:25,requirements:{[e.Shipyard]:7,[t.HyperspaceDrive]:4}},[r.SmallCargo]:{id:r.SmallCargo,name:`小型运输船`,description:`运输资源`,cost:{metal:2e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:15,cargoCapacity:5e3,attack:5,shield:10,armor:400,speed:5e3,fuelConsumption:10,storageUsage:10,requirements:{[e.Shipyard]:2,[t.CombustionDrive]:2}},[r.LargeCargo]:{id:r.LargeCargo,name:`大型运输船`,description:`大量运输资源`,cost:{metal:6e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:25e3,attack:5,shield:25,armor:1200,speed:7500,fuelConsumption:50,storageUsage:20,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.ColonyShip]:{id:r.ColonyShip,name:`殖民船`,description:`建立新殖民地`,cost:{metal:1e4,crystal:2e4,deuterium:1e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:7500,attack:50,shield:100,armor:3e3,speed:2500,fuelConsumption:1e3,storageUsage:40,requirements:{[e.Shipyard]:4,[t.ImpulseDrive]:3}},[r.Recycler]:{id:r.Recycler,name:`回收船`,description:`回收废墟资源`,cost:{metal:1e4,crystal:6e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:2e4,attack:1,shield:10,armor:1600,speed:2e3,fuelConsumption:300,storageUsage:30,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.EspionageProbe]:{id:r.EspionageProbe,name:`间谍探测器`,description:`侦察敌方星球`,cost:{metal:0,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:5,cargoCapacity:5,attack:0,shield:0,armor:100,speed:1e8,fuelConsumption:1,storageUsage:2,requirements:{[e.Shipyard]:3,[t.CombustionDrive]:3}},[r.DarkMatterHarvester]:{id:r.DarkMatterHarvester,name:`暗物质采集船`,description:`专门用于采集暗物质的特殊飞船`,cost:{metal:1e5,crystal:15e4,deuterium:5e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:1e3,attack:10,shield:50,armor:2e3,speed:5e3,fuelConsumption:500,storageUsage:50,requirements:{[e.Shipyard]:8,[t.HyperspaceDrive]:5,[t.DarkMatterTechnology]:1}},[r.Deathstar]:{id:r.Deathstar,name:`死星`,description:`终极武器,能够摧毁整个行星`,cost:{metal:5e6,crystal:4e6,deuterium:1e6,darkMatter:0,energy:0},buildTime:600,cargoCapacity:1e6,attack:2e5,shield:5e4,armor:9e5,speed:100,fuelConsumption:1,storageUsage:100,requirements:{[e.PlanetDestroyerFactory]:10,[t.PlanetDestructionTech]:7,[t.HyperspaceDrive]:7}}},l={[n.RocketLauncher]:{id:n.RocketLauncher,name:`火箭发射器`,description:`基础防御设施`,cost:{metal:2e3,crystal:0,deuterium:0,darkMatter:0,energy:0},buildTime:10,attack:80,shield:20,armor:200,requirements:{[e.Shipyard]:1}},[n.LightLaser]:{id:n.LightLaser,name:`轻型激光炮`,description:`激光防御武器`,cost:{metal:1500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildTime:12,attack:100,shield:25,armor:200,requirements:{[e.Shipyard]:2,[t.LaserTechnology]:3}},[n.HeavyLaser]:{id:n.HeavyLaser,name:`重型激光炮`,description:`强力激光武器`,cost:{metal:6e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,attack:250,shield:100,armor:800,requirements:{[e.Shipyard]:4,[t.LaserTechnology]:6}},[n.GaussCannon]:{id:n.GaussCannon,name:`高斯炮`,description:`电磁加速武器`,cost:{metal:2e4,crystal:15e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:35,attack:1100,shield:200,armor:3500,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.IonCannon]:{id:n.IonCannon,name:`离子炮`,description:`离子武器系统`,cost:{metal:2e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:150,shield:500,armor:800,requirements:{[e.Shipyard]:4,[t.IonTechnology]:4}},[n.PlasmaTurret]:{id:n.PlasmaTurret,name:`等离子炮台`,description:`最强防御武器`,cost:{metal:5e4,crystal:5e4,deuterium:3e4,darkMatter:0,energy:0},buildTime:60,attack:3e3,shield:300,armor:1e4,requirements:{[e.Shipyard]:8,[t.PlasmaTechnology]:7}},[n.SmallShieldDome]:{id:n.SmallShieldDome,name:`小型护盾罩`,description:`保护星球的能量护盾`,cost:{metal:1e4,crystal:1e4,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:1,shield:2e3,armor:2e3,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:3}},[n.LargeShieldDome]:{id:n.LargeShieldDome,name:`大型护盾罩`,description:`强大的星球护盾`,cost:{metal:5e4,crystal:5e4,deuterium:0,darkMatter:0,energy:0},buildTime:60,attack:1,shield:1e4,armor:1e4,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.PlanetaryShield]:{id:n.PlanetaryShield,name:`行星护盾`,description:`保护行星免受毁灭攻击的超级护盾`,cost:{metal:2e6,crystal:2e6,deuterium:1e6,darkMatter:0,energy:0},buildTime:180,attack:1,shield:1e5,armor:1e5,requirements:{[e.Shipyard]:10,[t.EnergyTechnology]:10,[t.HyperspaceTechnology]:8}}},u={[a.Commander]:{id:a.Commander,name:`指挥官`,description:`提升建筑速度和管理能力`,cost:{metal:0,crystal:5e4,deuterium:25e3,darkMatter:0,energy:0},weeklyMaintenance:{metal:0,crystal:5e3,deuterium:2500,darkMatter:0,energy:0},benefits:{buildingSpeedBonus:10,additionalBuildQueue:1,storageCapacityBonus:10}},[a.Admiral]:{id:a.Admiral,name:`上将`,description:`提升舰队作战能力`,cost:{metal:5e4,crystal:25e3,deuterium:0,darkMatter:0,energy:0},weeklyMaintenance:{metal:5e3,crystal:2500,deuterium:0,darkMatter:0,energy:0},benefits:{additionalFleetSlots:2,fleetSpeedBonus:10,fuelConsumptionReduction:10}},[a.Engineer]:{id:a.Engineer,name:`工程师`,description:`增强防御和能量系统`,cost:{metal:4e4,crystal:2e4,deuterium:1e4,darkMatter:0,energy:0},weeklyMaintenance:{metal:4e3,crystal:2e3,deuterium:1e3,darkMatter:0,energy:0},benefits:{defenseBonus:15,energyProductionBonus:10,buildingSpeedBonus:5}},[a.Geologist]:{id:a.Geologist,name:`地质学家`,description:`提高资源开采效率`,cost:{metal:3e4,crystal:3e4,deuterium:2e4,darkMatter:0,energy:0},weeklyMaintenance:{metal:3e3,crystal:3e3,deuterium:2e3,darkMatter:0,energy:0},benefits:{resourceProductionBonus:15,storageCapacityBonus:10}},[a.Technocrat]:{id:a.Technocrat,name:`技术专家`,description:`加快科技研究速度`,cost:{metal:2e4,crystal:4e4,deuterium:2e4,darkMatter:0,energy:0},weeklyMaintenance:{metal:2e3,crystal:4e3,deuterium:2e3,darkMatter:0,energy:0},benefits:{researchSpeedBonus:15}},[a.DarkMatterSpecialist]:{id:a.DarkMatterSpecialist,name:`暗物质专家`,description:`提升暗物质采集效率`,cost:{metal:5e4,crystal:1e5,deuterium:5e4,darkMatter:100,energy:0},weeklyMaintenance:{metal:5e3,crystal:1e4,deuterium:5e3,darkMatter:10,energy:0},benefits:{darkMatterProductionBonus:25}}},d={minDebrisField:1e5,baseChance:1,maxChance:20,chancePerDebris:1e5,baseSize:60,lunarBaseSpaceBonus:5},f={baseSize:200,terraformerSpaceBonus:5,terraformingTechSpaceBonus:3},p={baseStorage:1e3,shipyardBonus:1e3,computerTechBonus:500},m={SIMULATE_BATTLE:`SIMULATE_BATTLE`,CALCULATE_PLUNDER:`CALCULATE_PLUNDER`,CALCULATE_DEBRIS:`CALCULATE_DEBRIS`,SUCCESS:`SUCCESS`,ERROR:`ERROR`};export{d as a,c,n as d,i as f,t as h,p as i,s as l,r as m,o as n,u as o,a as p,l as r,f as s,m as t,e as u}; \ No newline at end of file diff --git a/docs/assets/game-i18n-DEf7ySVe.js b/docs/assets/game-i18n-DEf7ySVe.js new file mode 100644 index 0000000..071f1f2 --- /dev/null +++ b/docs/assets/game-i18n-DEf7ySVe.js @@ -0,0 +1,57 @@ +var e={common:{confirm:`确认`,cancel:`取消`,delete:`删除`,edit:`编辑`,save:`保存`,close:`关闭`,back:`返回`,next:`下一步`,previous:`上一步`,submit:`提交`,reset:`重置`,search:`搜索`,filter:`筛选`,loading:`加载中...`,noData:`暂无数据`,error:`错误`,success:`成功`,warning:`警告`,info:`信息`,resourceType:`资源类型`,playerName:`指挥官`,timeHour:`时`,timeMinute:`分`,timeSecond:`秒`,featureLocked:`功能已锁定`,unlockRequired:`需要解锁前置建筑`,requiredBuilding:`所需建筑`,currentLevel:`当前等级`,goToBuildings:`前往建筑页面`,locked:`已锁定`,viewRequirements:`查看前置条件`,requirementsNotMet:`前置条件未满足`,current:`当前`,level:`等级`},errors:{requirementsNotMet:`不满足前置条件`,insufficientResources:`资源不足`,insufficientFleetStorage:`舰队仓储空间不足`,shieldDomeLimit:`护盾罩数量限制`,fleetMissionsFull:`舰队任务槽位已满`,insufficientFleet:`舰队数量不足`,insufficientFuel:`燃料不足`,planetOnly:`该建筑只能在行星上建造`,moonOnly:`该建筑只能在月球上建造`,buildQueueFull:`建造队列已满`,insufficientSpace:`空间不足`,buildingLevelZero:`建筑等级为0,无法拆除`,researchQueueFull:`研究队列已满`,moonExists:`已存在月球`,insufficientDebris:`残骸场不足`},nav:{overview:`总览`,buildings:`建筑`,research:`研究`,shipyard:`船坞`,defense:`防御`,fleet:`舰队`,officers:`军官`,simulator:`模拟`,galaxy:`星系`,messages:`消息`,settings:`设置`,gm:`GM`},sidebar:{language:`语言`,lightMode:`日间模式`,darkMode:`夜间模式`,collapse:`收起菜单`,expand:`展开菜单`},resources:{metal:`金属`,crystal:`晶体`,deuterium:`重氢`,darkMatter:`暗物质`,energy:`能量`,production:`产量`,consumption:`消耗`,capacity:`容量`,current:`当前储量`,max:`最大容量`,perHour:`小时`,perMinute:`分钟`,hour:`小时`,noEnergy:`能量不足`},planet:{planet:`星球`,moon:`月球`,colony:`殖民地`,position:`位置`,coordinates:`坐标`,switchToMoon:`查看月球`,backToPlanet:`返回母星`,fields:`场地`,temperature:`温度`,homePlanet:`母星`,planetPrefix:`星球`,moonSuffix:`的月球`,colonyPrefix:`殖民地`},player:{points:`总积分`},buildings:{metalMine:`金属矿`,crystalMine:`晶体矿`,deuteriumSynthesizer:`重氢合成器`,solarPlant:`太阳能电站`,roboticsFactory:`机器人工厂`,naniteFactory:`纳米工厂`,shipyard:`船坞`,researchLab:`研究实验室`,metalStorage:`金属仓库`,crystalStorage:`晶体仓库`,deuteriumTank:`重氢罐`,darkMatterCollector:`暗物质收集器`,terraformer:`地形改造器`,lunarBase:`月球基地`,sensorPhalanx:`传感器阵列`,jumpGate:`跳跃门`,planetDestroyerFactory:`行星毁灭者工厂`,buildTime:`建造时间`,production:`产量`,consumption:`消耗`,totalCost:`累积成本`,totalPoints:`累积积分`,levelRange:`等级范围`},buildingDescriptions:{metalMine:`开采金属资源`,crystalMine:`开采晶体资源`,deuteriumSynthesizer:`合成重氢资源`,solarPlant:`提供能源`,roboticsFactory:`加快建造速度`,naniteFactory:`增加建造队列数量,每级+1队列(最多10级)`,shipyard:`建造舰船`,researchLab:`研究科技`,metalStorage:`增加金属存储上限`,crystalStorage:`增加晶体存储上限`,deuteriumTank:`增加重氢存储上限`,darkMatterCollector:`收集稀有的暗物质资源`,terraformer:`改造行星地形,每级增加5个可用空间`,lunarBase:`增加月球可用空间,每级+5空间`,sensorPhalanx:`侦测周围星系的舰队活动`,jumpGate:`瞬间传送舰队到其他月球`,planetDestroyerFactory:`建造能够摧毁行星的终极武器`},ships:{lightFighter:`轻型战斗机`,heavyFighter:`重型战斗机`,cruiser:`巡洋舰`,battleship:`战列舰`,smallCargo:`小型运输船`,largeCargo:`大型运输船`,colonyShip:`殖民船`,recycler:`回收船`,espionageProbe:`间谍探测器`,darkMatterHarvester:`暗物质采集船`,deathstar:`死星`},shipDescriptions:{lightFighter:`基础战斗单位`,heavyFighter:`重装战斗机`,cruiser:`中型战舰,攻守平衡`,battleship:`强力战舰`,smallCargo:`运输少量资源`,largeCargo:`运输大量资源`,colonyShip:`用于殖民新星球`,recycler:`收集残骸场资源`,espionageProbe:`侦察敌方星球`,darkMatterHarvester:`专门用于采集暗物质的特殊飞船`,deathstar:`终极武器,能够摧毁整个行星`},defenses:{rocketLauncher:`火箭发射器`,lightLaser:`轻型激光炮`,heavyLaser:`重型激光炮`,gaussCannon:`高斯炮`,ionCannon:`离子炮`,plasmaTurret:`等离子炮塔`,smallShieldDome:`小型护盾罩`,largeShieldDome:`大型护盾罩`,planetaryShield:`行星护盾`},defenseDescriptions:{rocketLauncher:`基础防御设施`,lightLaser:`轻型能量武器`,heavyLaser:`重型能量武器`,gaussCannon:`高速动能武器`,ionCannon:`破坏护盾的利器`,plasmaTurret:`强力防御设施`,smallShieldDome:`保护整个星球的小型护盾`,largeShieldDome:`保护整个星球的大型护盾`,planetaryShield:`保护行星免受毁灭攻击的超级护盾`},research:{researchTime:`研究时间`,totalCost:`累积成本`,totalPoints:`累积积分`,levelRange:`等级范围`},technologies:{energyTechnology:`能源技术`,laserTechnology:`激光技术`,ionTechnology:`离子技术`,hyperspaceTechnology:`超空间技术`,plasmaTechnology:`等离子技术`,computerTechnology:`计算机技术`,combustionDrive:`燃烧引擎`,impulseDrive:`脉冲引擎`,hyperspaceDrive:`超空间引擎`,darkMatterTechnology:`暗物质技术`,terraformingTechnology:`地形改造技术`,planetDestructionTech:`行星毁灭技术`},technologyDescriptions:{energyTechnology:`提高能源利用效率`,laserTechnology:`激光武器和防御的基础`,ionTechnology:`离子武器技术`,hyperspaceTechnology:`超空间跳跃技术`,plasmaTechnology:`等离子武器技术`,computerTechnology:`增加研究队列数量,每级+1队列(最多10级)`,combustionDrive:`基础推进技术`,impulseDrive:`中级推进技术`,hyperspaceDrive:`高级推进技术`,darkMatterTechnology:`研究暗物质的性质和应用`,terraformingTechnology:`研究行星地形改造技术,每级为所有行星增加3个可用空间`,planetDestructionTech:`研究如何摧毁整个行星的恐怖技术`},officers:{commander:`指挥官`,admiral:`上将`,engineer:`工程师`,geologist:`地质学家`,technocrat:`技术专家`,darkMatterSpecialist:`暗物质专家`,resourceBonus:`资源产量加成`,darkMatterBonus:`暗物质产量加成`,energyBonus:`能量产量加成`},officerDescriptions:{commander:`提升建筑速度和管理能力`,admiral:`提升舰队战斗力和速度`,engineer:`提升能源和防御能力`,geologist:`提升资源产量`,technocrat:`提升研究速度和间谍能力`,darkMatterSpecialist:`提升暗物质采集效率`},queue:{buildQueue:`建造队列`,researchQueue:`研究队列`,building:`建造中`,researching:`研究中`,remaining:`剩余时间`,cancel:`取消`,cancelBuild:`取消建造`,cancelResearch:`取消研究`,confirmCancel:`确定要取消吗?将返还50%的资源。`,level:`等级`,quantity:`数量`,upgradeToLevel:`升级到等级`},overview:{title:`星球总览`,resourceOverview:`资源概览`,fleetInfo:`舰队`,currentShips:`当前星球的舰船数量`,productionSources:`资源获取来源`,productionSourcesDesc:`详细的资源产量及加成信息`,consumptionSources:`能量消耗来源`,consumptionSourcesDesc:`各建筑的能量消耗详情`,totalProduction:`总产量`,totalConsumption:`总消耗`,noConsumption:`当前无能量消耗`},buildingsView:{title:`建筑`,usedSpace:`已用空间`,spaceUsage:`占用空间`,level:`等级`,upgradeCost:`升级消耗`,buildTime:`建造时间`,upgrade:`升级`,maxLevelReached:`等级已满`,requirementsNotMet:`条件不足`,upgradeFailed:`升级失败`,upgradeFailedMessage:`请检查资源是否足够、空间是否充足或是否有其他建造任务。`,demolish:`拆除`,demolishRefund:`拆除返还`,demolishFailed:`拆除失败`,demolishFailedMessage:`无法拆除该建筑,请检查建造队列是否已满或建筑等级是否为0。`},researchView:{title:`研究`,researchCost:`研究消耗`,research:`研究`,maxLevelReached:`等级已满`,researchFailed:`研究失败`,researchFailedMessage:`请检查资源是否足够、前置条件是否满足,或是否有其他研究任务。`},shipyard:{attack:`攻击力`,shield:`护盾`,armor:`装甲`,speed:`速度`,cargoCapacity:`载货量`,fuelConsumption:`燃料消耗`,buildCost:`建造成本`,buildTime:`建造时间`,perUnit:`每个单位`,batchCalculator:`批量建造计算器`,quantity:`数量`,totalCost:`总成本`,totalTime:`总时间`},shipyardView:{title:`船坞`,fleetStorage:`舰队仓储`,attack:`攻击力`,shield:`护盾`,speed:`速度`,cargoCapacity:`载货量`,unitCost:`单位成本`,buildQuantity:`建造数量`,totalCost:`总成本`,build:`建造`,inputError:`输入错误`,inputErrorMessage:`请输入建造数量!`,buildFailed:`建造失败`,buildFailedMessage:`请检查资源是否足够或前置条件是否满足。`},defense:{attack:`攻击力`,shield:`护盾`,armor:`装甲`,buildCost:`建造成本`,buildTime:`建造时间`,perUnit:`每个单位`,batchCalculator:`批量建造计算器`,quantity:`数量`,totalCost:`总成本`,totalTime:`总时间`},defenseView:{title:`防御设施`,attack:`攻击力`,shield:`护盾`,armor:`装甲`,buildTime:`建造时间`,seconds:`秒`,unitCost:`单位成本`,buildQuantity:`建造数量`,totalCost:`总成本`,build:`建造`,shieldDomeBuilt:`护盾罩已建造`,inputError:`输入错误`,inputErrorMessage:`请输入建造数量!`,buildFailed:`建造失败`,buildFailedMessage:`请检查资源是否足够或前置条件是否满足。护盾罩只能建造一个。`},fleetView:{title:`舰队管理`,fleetOverview:`舰队总览`,sendFleet:`派遣舰队`,flightMissions:`飞行任务`,currentPlanetFleet:`当前星球舰队`,attack:`攻击`,shield:`护盾`,armor:`装甲`,speed:`速度`,cargo:`载货`,selectFleet:`选择舰队`,selectFleetDescription:`选择要派遣的舰船数量`,available:`可用`,all:`全部`,targetCoordinates:`目标坐标`,galaxy:`银河系`,system:`星系`,position:`位置`,missionType:`任务类型`,missionInfo:`任务信息`,fuelConsumption:`燃料消耗`,flightTime:`飞行时间`,attackMission:`攻击`,transport:`运输`,colonize:`殖民`,spy:`侦察`,deploy:`部署`,recycle:`回收`,destroy:`行星毁灭`,transportResources:`运输资源`,totalCargoCapacity:`总载货量`,used:`已用`,noFlightMissions:`暂无飞行任务`,outbound:`前往`,returning:`返回`,fleetComposition:`舰队组成`,carryingResources:`携带资源`,arrivalTime:`到达时间`,returnTime:`返回时间`,recallFleet:`召回舰队`,sendFailed:`派遣失败`,sendFailedMessage:`请检查舰队数量、燃料是否充足,或载货量是否超出限制。`,recallFailed:`召回失败`,recallFailedMessage:`该任务无法召回。`,unknownPlanet:`未知星球`,fleetMissionSlots:`舰队任务槽位`,noShipsSelected:`未选择舰船`,cannotSendToOwnPlanet:`无法派遣舰队到自己的星球`,cargoExceedsCapacity:`载货量超出限制`,noColonyShip:`需要殖民船才能执行殖民任务`,noDebrisAtTarget:`目标坐标没有残骸场或残骸场已空`,noDeathstar:`需要死星才能执行毁灭任务`},officersView:{title:`军官`,activated:`已激活`,inactive:`未激活`,activeStatus:`激活状态`,expirationTime:`到期时间`,remainingTime:`剩余时间`,recruitCost:`招募成本`,days:`天`,benefitsBonus:`效果加成`,resourceProduction:`资源产量`,darkMatterProduction:`暗物质产量`,energyProduction:`电量产出`,buildingSpeed:`建筑速度`,researchSpeed:`研究速度`,fleetSpeed:`舰队速度`,fuelConsumption:`燃料消耗`,defense:`防御力`,storageCapacity:`仓储容量`,buildQueue:`建筑队列`,fleetSlots:`舰队槽位`,hire:`招募`,renew:`续约`,dismiss:`解雇`,hireTitle:`招募军官`,hireMessage:`确定要招募 {name} 吗?有效期为7天。`,renewTitle:`续约军官`,renewMessage:`确定要为 {name} 续约7天吗?`,dismissTitle:`解雇军官`,dismissMessage:`确定要解雇 {name} 吗?不会返还任何费用。`,hireFailed:`招募失败`,renewFailed:`续约失败`,insufficientResources:`资源不足!`},galaxyView:{title:`星系`,selectCoordinates:`选择坐标`,galaxy:`银河系`,selectGalaxy:`选择银河系`,system:`星系`,selectSystem:`选择星系`,view:`查看`,myPlanet:`我的星球`,totalPositions:`共10个星球位置`,mine:`我的`,hostile:`敌对`,emptySlot:`空位 - 可殖民`,scout:`侦察`,attack:`攻击`,colonize:`殖民`,switch:`切换`,recycle:`回收`,debrisField:`残骸场`,scoutPlanetTitle:`侦察星球`,attackPlanetTitle:`攻击星球`,colonizePlanetTitle:`殖民星球`,recyclePlanetTitle:`回收残骸`,scoutPlanetMessage:`确定要派遣间谍探测器侦察星球 [{coordinates}] 吗? + +请前往舰队页面选择舰船并派遣。`,attackPlanetMessage:`确定要攻击星球 [{coordinates}] 吗? + +请前往舰队页面选择舰船并派遣。`,colonizePlanetMessage:`确定要殖民位置 [{coordinates}] 吗? + +请前往舰队页面派遣殖民船。`,recyclePlanetMessage:`确定要回收位置 [{coordinates}] 的残骸吗? + +请前往舰队页面派遣回收船。`},messagesView:{title:`消息中心`,battles:`战斗`,spy:`侦查`,battleReports:`战斗报告`,spyReports:`间谍报告`,noBattleReports:`暂无战斗报告`,noSpyReports:`暂无间谍报告`,battleReport:`战斗报告`,spyReport:`间谍报告`,victory:`胜利`,defeat:`失败`,draw:`平局`,attackerFleet:`攻击方舰队`,defenderFleet:`防守方舰队`,defenderDefense:`防守方防御`,attackerLosses:`攻击方损失`,defenderLosses:`防守方损失`,noLosses:`无损失`,plunder:`掠夺资源`,debrisField:`残骸场`,resources:`资源`,fleet:`舰队`,defense:`防御`,buildings:`建筑`,unread:`未读`,targetPlanet:`目标星球`,attackerRemaining:`攻击方剩余`,defenderRemaining:`防守方剩余`,moonChance:`月球生成概率`,showRoundDetails:`显示回合详情`,hideRoundDetails:`隐藏回合详情`,round:`第{round}回合`,attackerRemainingPower:`攻击方剩余火力`,defenderRemainingPower:`防守方剩余火力`},simulatorView:{title:`战斗模拟器`,attacker:`攻击方`,defender:`防守方`,attackerConfig:`攻击方配置`,attackerConfigDesc:`设置攻击方的舰队和科技等级`,defenderConfig:`防守方配置`,defenderConfigDesc:`设置防守方的舰队、防御和科技等级`,fleet:`舰队`,defenseStructures:`防御设施`,techLevels:`科技等级`,weapon:`武器`,shield:`护盾`,armor:`装甲`,defenderResources:`防守方资源(用于掠夺计算)`,startSimulation:`开始模拟`,reset:`重置`,battleResult:`战斗结果`,attackerVictory:`攻击方胜利`,defenderVictory:`防守方胜利`,draw:`平局`,afterRounds:`经过 {rounds} 回合战斗`,attackerLosses:`攻击方损失`,defenderLosses:`防守方损失`,noLosses:`无损失`,attackerRemaining:`攻击方剩余`,defenderRemaining:`防守方剩余`,allDestroyed:`全部摧毁`,plunderableResources:`可掠夺资源`,debrisField:`残骸场`,moonChance:`月球生成概率`,showRoundDetails:`显示回合详情`,hideRoundDetails:`隐藏回合详情`,round:`第 {round} 回合`,attackerRemainingPower:`攻击方剩余火力`,defenderRemainingPower:`防守方剩余火力`},settings:{dataManagement:`数据管理`,dataManagementDesc:`导出、导入或清除游戏数据`,exportData:`导出数据`,exportDataDesc:`将游戏进度导出为JSON文件`,export:`导出`,exporting:`导出中...`,exportSuccess:`导出成功`,exportFailed:`导出失败,请重试`,importData:`导入数据`,importDataDesc:`从JSON文件恢复游戏进度`,selectFile:`导入`,importSuccess:`导入成功`,importConfirmTitle:`确认导入数据`,importConfirmMessage:`导入数据将覆盖当前游戏进度,此操作不可撤销。确定要继续吗?`,importFailed:`导入失败,请检查文件格式`,clearData:`清除数据`,clearDataDesc:`删除所有游戏数据并重置游戏`,clear:`清除`,clearConfirmTitle:`确认清除数据`,clearConfirmMessage:`这将删除所有游戏数据并重新开始,此操作不可撤销。确定要继续吗?`,gameSettings:`游戏设置`,gameSettingsDesc:`调整游戏参数和偏好设置`,gamePause:`游戏暂停`,gamePauseDesc:`暂停或恢复游戏时间和资源生产`,pause:`暂停`,resume:`恢复`,gamePaused:`游戏已暂停`,gameResumed:`游戏已恢复`,playerName:`玩家名称`,gameSpeed:`游戏速度`,gameSpeedDesc:`当前游戏速度倍率`,about:`关于`,version:`版本`,buildDate:`构建日期`,community:`社区`,github:`GitHub 仓库`,qqGroup:`QQ 交流群`},gmView:{title:`GM 管理面板`,adminOnly:`仅管理员`,selectPlanet:`选择星球`,choosePlanet:`选择一个星球`,resources:`资源`,buildings:`建筑`,research:`科技`,ships:`舰船`,defense:`防御`,officers:`军官`,modifyResources:`修改资源`,resourcesDesc:`快速修改星球资源数量`,modifyBuildings:`修改建筑`,buildingsDesc:`快速设置建筑等级`,modifyResearch:`修改科技`,researchDesc:`快速设置科技等级`,modifyShips:`修改舰船`,shipsDesc:`快速设置舰船数量`,modifyDefense:`修改防御`,defenseDesc:`快速设置防御数量`,modifyOfficers:`修改军官`,officersDesc:`快速设置军官到期时间`,days:`天`,dangerZone:`危险区域`,dangerZoneDesc:`以下操作不可撤销,请谨慎操作`,resetGame:`重置游戏`,resetGameConfirm:`确定要重置游戏吗?这将删除所有数据!`}},t={common:{confirm:`確認`,cancel:`取消`,delete:`刪除`,edit:`編輯`,save:`儲存`,close:`關閉`,back:`返回`,next:`下一步`,previous:`上一步`,submit:`提交`,reset:`重置`,search:`搜尋`,filter:`篩選`,loading:`載入中...`,noData:`暫無資料`,error:`錯誤`,success:`成功`,warning:`警告`,info:`資訊`,resourceType:`資源類型`,playerName:`指揮官`,timeHour:`時`,timeMinute:`分`,timeSecond:`秒`,featureLocked:`功能已鎖定`,unlockRequired:`需要解鎖前置建築`,requiredBuilding:`所需建築`,currentLevel:`當前等級`,goToBuildings:`前往建築頁面`,locked:`已鎖定`,viewRequirements:`查看前置條件`,requirementsNotMet:`前置條件未滿足`,current:`當前`,level:`等級`},errors:{requirementsNotMet:`不滿足前置條件`,insufficientResources:`資源不足`,insufficientFleetStorage:`艦隊倉儲空間不足`,shieldDomeLimit:`護盾罩數量限制`,fleetMissionsFull:`艦隊任務槽位已滿`,insufficientFleet:`艦隊數量不足`,insufficientFuel:`燃料不足`,planetOnly:`該建築只能在行星上建造`,moonOnly:`該建築只能在月球上建造`,buildQueueFull:`建造隊列已滿`,insufficientSpace:`空間不足`,buildingLevelZero:`建築等級為0,無法拆除`,researchQueueFull:`研究隊列已滿`,moonExists:`已存在月球`,insufficientDebris:`殘骸場不足`},nav:{overview:`總覽`,buildings:`建築`,research:`研究`,shipyard:`船塢`,defense:`防禦`,fleet:`艦隊`,officers:`軍官`,simulator:`模擬`,galaxy:`星系`,messages:`訊息`,settings:`設定`,gm:`GM`},sidebar:{language:`語言`,lightMode:`日間模式`,darkMode:`夜間模式`,collapse:`收起選單`,expand:`展開選單`},resources:{metal:`金屬`,crystal:`晶體`,deuterium:`重氫`,darkMatter:`暗物質`,energy:`能量`,production:`產量`,consumption:`消耗`,capacity:`容量`,current:`當前儲量`,max:`最大容量`,perHour:`小時`,perMinute:`分鐘`,hour:`小時`,noEnergy:`能量不足`},planet:{planet:`星球`,moon:`月球`,colony:`殖民地`,position:`位置`,coordinates:`座標`,switchToMoon:`查看月球`,backToPlanet:`返回母星`,fields:`場地`,temperature:`溫度`,homePlanet:`母星`,planetPrefix:`星球`,moonSuffix:`的月球`,colonyPrefix:`殖民地`},player:{points:`總積分`},buildings:{metalMine:`金屬礦`,crystalMine:`晶體礦`,deuteriumSynthesizer:`重氫合成器`,solarPlant:`太陽能電站`,roboticsFactory:`機器人工廠`,naniteFactory:`納米工廠`,shipyard:`船塢`,researchLab:`研究實驗室`,metalStorage:`金屬倉庫`,crystalStorage:`晶體倉庫`,deuteriumTank:`重氫罐`,darkMatterCollector:`暗物質收集器`,terraformer:`地形改造器`,lunarBase:`月球基地`,sensorPhalanx:`傳感器陣列`,jumpGate:`跳躍門`,planetDestroyerFactory:`行星毀滅者工廠`,buildTime:`建造時間`,production:`產量`,consumption:`消耗`,totalCost:`累積成本`,totalPoints:`累積積分`,levelRange:`等級範圍`},buildingDescriptions:{metalMine:`開採金屬資源`,crystalMine:`開採晶體資源`,deuteriumSynthesizer:`合成重氫資源`,solarPlant:`提供能源`,roboticsFactory:`加快建造速度`,naniteFactory:`增加建造佇列數量,每級+1佇列(最多10級)`,shipyard:`建造艦船`,researchLab:`研究科技`,metalStorage:`增加金屬儲存上限`,crystalStorage:`增加晶體儲存上限`,deuteriumTank:`增加重氫儲存上限`,darkMatterCollector:`收集稀有的暗物質資源`,terraformer:`改造行星地形,每級增加5個可用空間`,lunarBase:`增加月球可用空間,每級+5空間`,sensorPhalanx:`偵測周圍星系的艦隊活動`,jumpGate:`瞬間傳送艦隊到其他月球`,planetDestroyerFactory:`建造能夠摧毀行星的終極武器`},ships:{lightFighter:`輕型戰鬥機`,heavyFighter:`重型戰鬥機`,cruiser:`巡洋艦`,battleship:`戰列艦`,smallCargo:`小型運輸船`,largeCargo:`大型運輸船`,colonyShip:`殖民船`,recycler:`回收船`,espionageProbe:`間諜探測器`,darkMatterHarvester:`暗物質採集船`,deathstar:`死星`},shipDescriptions:{lightFighter:`基礎戰鬥單位`,heavyFighter:`重裝戰鬥機`,cruiser:`中型戰艦,攻守平衡`,battleship:`強力戰艦`,smallCargo:`運輸少量資源`,largeCargo:`運輸大量資源`,colonyShip:`用於殖民新星球`,recycler:`收集殘骸場資源`,espionageProbe:`偵察敵方星球`,darkMatterHarvester:`專門用於採集暗物質的特殊飛船`,deathstar:`終極武器,能夠摧毀整個行星`},defenses:{rocketLauncher:`火箭發射器`,lightLaser:`輕型激光炮`,heavyLaser:`重型激光炮`,gaussCannon:`高斯炮`,ionCannon:`離子炮`,plasmaTurret:`等離子炮塔`,smallShieldDome:`小型護盾罩`,largeShieldDome:`大型護盾罩`,planetaryShield:`行星護盾`},defenseDescriptions:{rocketLauncher:`基礎防禦設施`,lightLaser:`輕型能量武器`,heavyLaser:`重型能量武器`,gaussCannon:`高速動能武器`,ionCannon:`破壞護盾的利器`,plasmaTurret:`強力防禦設施`,smallShieldDome:`保護整個星球的小型護盾`,largeShieldDome:`保護整個星球的大型護盾`,planetaryShield:`保護行星免受毀滅攻擊的超級護盾`},research:{researchTime:`研究時間`,totalCost:`累積成本`,totalPoints:`累積積分`,levelRange:`等級範圍`},technologies:{energyTechnology:`能源技術`,laserTechnology:`激光技術`,ionTechnology:`離子技術`,hyperspaceTechnology:`超空間技術`,plasmaTechnology:`等離子技術`,computerTechnology:`計算機技術`,combustionDrive:`燃燒引擎`,impulseDrive:`脈衝引擎`,hyperspaceDrive:`超空間引擎`,darkMatterTechnology:`暗物質技術`,terraformingTechnology:`地形改造技術`,planetDestructionTech:`行星毀滅技術`},technologyDescriptions:{energyTechnology:`提高能源利用效率`,laserTechnology:`激光武器和防禦的基礎`,ionTechnology:`離子武器技術`,hyperspaceTechnology:`超空間跳躍技術`,plasmaTechnology:`等離子武器技術`,computerTechnology:`增加研究佇列數量,每級+1佇列(最多10級)`,combustionDrive:`基礎推進技術`,impulseDrive:`中級推進技術`,hyperspaceDrive:`高級推進技術`,darkMatterTechnology:`研究暗物質的性質和應用`,terraformingTechnology:`研究行星地形改造技術,每級為所有行星增加3個可用空間`,planetDestructionTech:`研究如何摧毀整個行星的恐怖技術`},officers:{commander:`指揮官`,admiral:`上將`,engineer:`工程師`,geologist:`地質學家`,technocrat:`技術專家`,darkMatterSpecialist:`暗物質專家`,resourceBonus:`資源生產加成`,darkMatterBonus:`暗物質生產加成`,energyBonus:`能量生產加成`},officerDescriptions:{commander:`提升建築速度和管理能力`,admiral:`提升艦隊戰鬥力和速度`,engineer:`提升能源和防禦能力`,geologist:`提升資源產量`,technocrat:`提升研究速度和間諜能力`,darkMatterSpecialist:`提升暗物質採集效率`},queue:{buildQueue:`建造佇列`,researchQueue:`研究佇列`,building:`建造中`,researching:`研究中`,remaining:`剩餘時間`,cancel:`取消`,cancelBuild:`取消建造`,cancelResearch:`取消研究`,confirmCancel:`確定要取消嗎?將返還50%的資源。`,level:`等級`,upgradeToLevel:`升級到等級`},overview:{title:`星球總覽`,resourceOverview:`資源概覽`,fleetInfo:`艦隊資訊`,currentShips:`當前星球的艦船數量`,productionSources:`生產來源`,productionSourcesDesc:`詳細資源生產和加成資訊`,consumptionSources:`消耗來源`,consumptionSourcesDesc:`建築能量消耗詳情`,totalProduction:`總產量`,totalConsumption:`總消耗`,noConsumption:`無能量消耗`},buildingsView:{title:`建築`,usedSpace:`已用空間`,spaceUsage:`佔用空間`,level:`等級`,upgradeCost:`升級消耗`,buildTime:`建造時間`,upgrade:`升級`,maxLevelReached:`等級已滿`,requirementsNotMet:`條件不足`,upgradeFailed:`升級失敗`,upgradeFailedMessage:`請檢查資源是否足夠、空間是否充足或是否有其他建造任務。`,demolish:`拆除`,demolishRefund:`拆除返還`,demolishFailed:`拆除失敗`,demolishFailedMessage:`無法拆除該建築,請檢查建造隊列是否已滿或建築等級是否為0。`},researchView:{title:`研究`,researchCost:`研究消耗`,research:`研究`,maxLevelReached:`等級已滿`,researchFailed:`研究失敗`,researchFailedMessage:`請檢查資源是否足夠、前置條件是否滿足,或是否有其他研究任務。`},shipyard:{attack:`攻擊力`,shield:`護盾`,armor:`裝甲`,speed:`速度`,cargoCapacity:`載貨量`,fuelConsumption:`燃料消耗`,buildCost:`建造成本`,buildTime:`建造時間`,perUnit:`每個單位`,batchCalculator:`批量建造計算器`,quantity:`數量`,totalCost:`總成本`,totalTime:`總時間`},shipyardView:{title:`船塢`,fleetStorage:`艦隊倉儲`,attack:`攻擊力`,shield:`護盾`,speed:`速度`,cargoCapacity:`載貨量`,unitCost:`單位成本`,buildQuantity:`建造數量`,totalCost:`總成本`,build:`建造`,inputError:`輸入錯誤`,inputErrorMessage:`請輸入建造數量!`,buildFailed:`建造失敗`,buildFailedMessage:`請檢查資源是否足夠或前置條件是否滿足。`},defense:{attack:`攻擊力`,shield:`護盾`,armor:`裝甲`,buildCost:`建造成本`,buildTime:`建造時間`,perUnit:`每個單位`,batchCalculator:`批量建造計算器`,quantity:`數量`,totalCost:`總成本`,totalTime:`總時間`},defenseView:{title:`防禦設施`,attack:`攻擊力`,shield:`護盾`,armor:`裝甲`,buildTime:`建造時間`,seconds:`秒`,unitCost:`單位成本`,buildQuantity:`建造數量`,totalCost:`總成本`,build:`建造`,shieldDomeBuilt:`護盾罩已建造`,inputError:`輸入錯誤`,inputErrorMessage:`請輸入建造數量!`,buildFailed:`建造失敗`,buildFailedMessage:`請檢查資源是否足夠或前置條件是否滿足。護盾罩只能建造一個。`},fleetView:{title:`艦隊管理`,fleetOverview:`艦隊總覽`,sendFleet:`派遣艦隊`,flightMissions:`飛行任務`,currentPlanetFleet:`當前星球艦隊`,attack:`攻擊`,shield:`護盾`,armor:`裝甲`,speed:`速度`,cargo:`載貨`,selectFleet:`選擇艦隊`,selectFleetDescription:`選擇要派遣的艦船數量`,available:`可用`,all:`全部`,targetCoordinates:`目標座標`,galaxy:`銀河系`,system:`星系`,position:`位置`,missionType:`任務類型`,missionInfo:`任務資訊`,fuelConsumption:`燃料消耗`,flightTime:`飛行時間`,attackMission:`攻擊`,transport:`運輸`,colonize:`殖民`,spy:`偵察`,deploy:`部署`,recycle:`回收`,transportResources:`運輸資源`,totalCargoCapacity:`總載貨量`,used:`已用`,noFlightMissions:`暫無飛行任務`,outbound:`前往`,returning:`返回`,fleetComposition:`艦隊組成`,carryingResources:`攜帶資源`,arrivalTime:`到達時間`,returnTime:`返回時間`,recallFleet:`召回艦隊`,sendFailed:`派遣失敗`,sendFailedMessage:`請檢查艦隊數量、燃料是否充足,或載貨量是否超出限制。`,recallFailed:`召回失敗`,recallFailedMessage:`該任務無法召回。`,unknownPlanet:`未知星球`,fleetMissionSlots:`艦隊任務槽位`,noShipsSelected:`未選擇艦船`,cannotSendToOwnPlanet:`無法派遣艦隊到自己的星球`,cargoExceedsCapacity:`載貨量超出限制`,noColonyShip:`需要殖民船才能執行殖民任務`,noDebrisAtTarget:`目標坐標沒有殘骸場或殘骸場已空`},officersView:{title:`軍官`,activated:`已啟用`,inactive:`未啟用`,activeStatus:`啟用狀態`,expirationTime:`到期時間`,remainingTime:`剩餘時間`,recruitCost:`招募成本`,days:`天`,benefitsBonus:`效果加成`,resourceProduction:`資源產量`,darkMatterProduction:`暗物質產量`,energyProduction:`電量產出`,buildingSpeed:`建築速度`,researchSpeed:`研究速度`,fleetSpeed:`艦隊速度`,fuelConsumption:`燃料消耗`,defense:`防禦力`,storageCapacity:`倉儲容量`,buildQueue:`建築佇列`,fleetSlots:`艦隊槽位`,hire:`招募`,renew:`續約`,dismiss:`解雇`,hireTitle:`招募軍官`,hireMessage:`確定要招募 {name} 嗎?有效期為7天。`,renewTitle:`續約軍官`,renewMessage:`確定要為 {name} 續約7天嗎?`,dismissTitle:`解雇軍官`,dismissMessage:`確定要解雇 {name} 嗎?不會返還任何費用。`,hireFailed:`招募失敗`,renewFailed:`續約失敗`,insufficientResources:`資源不足!`},galaxyView:{title:`星系`,selectCoordinates:`選擇座標`,galaxy:`銀河系`,selectGalaxy:`選擇銀河系`,system:`星系`,selectSystem:`選擇星系`,view:`查看`,myPlanet:`我的星球`,totalPositions:`共10個星球位置`,mine:`我的`,hostile:`敵對`,emptySlot:`空位 - 可殖民`,scout:`偵察`,attack:`攻擊`,colonize:`殖民`,switch:`切換`,recycle:`回收`,debrisField:`殘骸場`,scoutPlanetTitle:`偵察星球`,attackPlanetTitle:`攻擊星球`,colonizePlanetTitle:`殖民星球`,recyclePlanetTitle:`回收殘骸`,scoutPlanetMessage:`確定要派遣間諜探測器偵察星球 [{coordinates}] 嗎? + +請前往艦隊頁面選擇艦船並派遣。`,attackPlanetMessage:`確定要攻擊星球 [{coordinates}] 嗎? + +請前往艦隊頁面選擇艦船並派遣。`,colonizePlanetMessage:`確定要殖民位置 [{coordinates}] 嗎? + +請前往艦隊頁面派遣殖民船。`,recyclePlanetMessage:`確定要回收位置 [{coordinates}] 的殘骸嗎? + +請前往艦隊頁面派遣回收船。`},messagesView:{title:`訊息中心`,battles:`戰鬥`,spy:`偵查`,battleReports:`戰鬥報告`,spyReports:`間諜報告`,noBattleReports:`暫無戰鬥報告`,noSpyReports:`暫無間諜報告`,battleReport:`戰鬥報告`,spyReport:`間諜報告`,victory:`勝利`,defeat:`失敗`,draw:`平局`,attackerFleet:`攻擊方艦隊`,defenderFleet:`防守方艦隊`,defenderDefense:`防守方防禦`,attackerLosses:`攻擊方損失`,defenderLosses:`防守方損失`,noLosses:`無損失`,plunder:`掠奪資源`,debrisField:`殘骸場`,resources:`資源`,fleet:`艦隊`,defense:`防禦`,buildings:`建築`,unread:`未讀`,targetPlanet:`目標星球`,attackerRemaining:`攻擊方剩餘`,defenderRemaining:`防守方剩餘`,moonChance:`月球生成機率`,showRoundDetails:`顯示回合詳情`,hideRoundDetails:`隱藏回合詳情`,round:`第{round}回合`,attackerRemainingPower:`攻擊方剩餘火力`,defenderRemainingPower:`防守方剩餘火力`},simulatorView:{title:`戰鬥模擬器`,attacker:`攻擊方`,defender:`防守方`,attackerConfig:`攻擊方配置`,attackerConfigDesc:`設置攻擊方的艦隊和科技等級`,defenderConfig:`防守方配置`,defenderConfigDesc:`設置防守方的艦隊、防禦和科技等級`,fleet:`艦隊`,defenseStructures:`防禦設施`,techLevels:`科技等級`,weapon:`武器`,shield:`護盾`,armor:`裝甲`,defenderResources:`防守方資源(用於掠奪計算)`,startSimulation:`開始模擬`,reset:`重置`,battleResult:`戰鬥結果`,attackerVictory:`攻擊方勝利`,defenderVictory:`防守方勝利`,draw:`平局`,afterRounds:`經過 {rounds} 回合戰鬥`,attackerLosses:`攻擊方損失`,defenderLosses:`防守方損失`,noLosses:`無損失`,attackerRemaining:`攻擊方剩餘`,defenderRemaining:`防守方剩餘`,allDestroyed:`全部摧毀`,plunderableResources:`可掠奪資源`,debrisField:`殘骸場`,moonChance:`月球生成機率`,showRoundDetails:`顯示回合詳情`,hideRoundDetails:`隱藏回合詳情`,round:`第 {round} 回合`,attackerRemainingPower:`攻擊方剩餘火力`,defenderRemainingPower:`防守方剩餘火力`},settings:{dataManagement:`資料管理`,dataManagementDesc:`匯出、匯入或清除遊戲資料`,exportData:`匯出資料`,exportDataDesc:`將遊戲進度匯出為JSON檔案`,export:`匯出`,exporting:`匯出中...`,exportSuccess:`匯出成功`,exportFailed:`匯出失敗,請重試`,importData:`匯入資料`,importDataDesc:`從JSON檔案恢復遊戲進度`,selectFile:`匯入`,importSuccess:`匯入成功`,importConfirmTitle:`確認匯入資料`,importConfirmMessage:`匯入資料將覆蓋目前遊戲進度,此操作不可撤銷。確定要繼續嗎?`,importFailed:`匯入失敗,請檢查檔案格式`,clearData:`清除資料`,clearDataDesc:`刪除所有遊戲資料並重置遊戲`,clear:`清除`,clearConfirmTitle:`確認清除資料`,clearConfirmMessage:`這將刪除所有遊戲資料並重新開始,此操作不可撤銷。確定要繼續嗎?`,gameSettings:`遊戲設定`,gameSettingsDesc:`調整遊戲參數和偏好設定`,gamePause:`遊戲暫停`,gamePauseDesc:`暫停或恢復遊戲時間和資源生產`,pause:`暫停`,resume:`恢復`,gamePaused:`遊戲已暫停`,gameResumed:`遊戲已恢復`,playerName:`玩家名稱`,gameSpeed:`遊戲速度`,gameSpeedDesc:`目前遊戲速度倍率`,about:`關於`,version:`版本`,buildDate:`建置日期`,community:`社群`,github:`GitHub 儲存庫`,qqGroup:`QQ 交流群`},gmView:{title:`GM 管理面板`,adminOnly:`僅管理員`,selectPlanet:`選擇星球`,choosePlanet:`選擇一個星球`,resources:`資源`,buildings:`建築`,research:`科技`,ships:`艦船`,defense:`防禦`,officers:`軍官`,modifyResources:`修改資源`,resourcesDesc:`快速修改星球資源數量`,modifyBuildings:`修改建築`,buildingsDesc:`快速設定建築等級`,modifyResearch:`修改科技`,researchDesc:`快速設定科技等級`,modifyShips:`修改艦船`,shipsDesc:`快速設定艦船數量`,modifyDefense:`修改防禦`,defenseDesc:`快速設定防禦數量`,modifyOfficers:`修改軍官`,officersDesc:`快速設定軍官到期時間`,days:`天`,dangerZone:`危險區域`,dangerZoneDesc:`以下操作不可撤銷,請謹慎操作`,resetGame:`重置遊戲`,resetGameConfirm:`確定要重置遊戲嗎?這將刪除所有資料!`}},n={common:{confirm:`Confirm`,cancel:`Cancel`,delete:`Delete`,edit:`Edit`,save:`Save`,close:`Close`,back:`Back`,next:`Next`,previous:`Previous`,submit:`Submit`,reset:`Reset`,search:`Search`,filter:`Filter`,loading:`Loading...`,noData:`No Data`,error:`Error`,success:`Success`,warning:`Warning`,info:`Info`,resourceType:`Resource Type`,playerName:`Commander`,timeHour:`h`,timeMinute:`m`,timeSecond:`s`,featureLocked:`Feature Locked`,unlockRequired:`Building Required`,requiredBuilding:`Required Building`,currentLevel:`Current Level`,goToBuildings:`Go to Buildings`,locked:`Locked`,viewRequirements:`View Requirements`,requirementsNotMet:`Requirements Not Met`,current:`Current`,level:`Level`},errors:{requirementsNotMet:`Requirements not met`,insufficientResources:`Insufficient resources`,insufficientFleetStorage:`Insufficient fleet storage`,shieldDomeLimit:`Shield dome limit reached`,fleetMissionsFull:`Fleet mission slots full`,insufficientFleet:`Insufficient fleet`,insufficientFuel:`Insufficient fuel`,planetOnly:`This building can only be built on planets`,moonOnly:`This building can only be built on moons`,buildQueueFull:`Build queue full`,insufficientSpace:`Insufficient space`,buildingLevelZero:`Building level is 0, cannot demolish`,researchQueueFull:`Research queue full`,moonExists:`Moon already exists`,insufficientDebris:`Insufficient debris field`},nav:{overview:`Overview`,buildings:`Buildings`,research:`Research`,shipyard:`Shipyard`,defense:`Defense`,fleet:`Fleet`,officers:`Officers`,simulator:`Simulator`,galaxy:`Galaxy`,messages:`Messages`,settings:`Settings`,gm:`GM`},sidebar:{language:`Language`,lightMode:`Light Mode`,darkMode:`Dark Mode`,collapse:`Collapse`,expand:`Expand`},resources:{metal:`Metal`,crystal:`Crystal`,deuterium:`Deuterium`,darkMatter:`Dark Matter`,energy:`Energy`,production:`Production`,consumption:`Consumption`,capacity:`Capacity`,current:`Current`,max:`Max Capacity`,perHour:`hour`,perMinute:`min`,hour:`hour`,noEnergy:`No Energy`},planet:{planet:`Planet`,moon:`Moon`,colony:`Colony`,position:`Position`,coordinates:`Coordinates`,switchToMoon:`View Moon`,backToPlanet:`Back to Planet`,fields:`Fields`,temperature:`Temperature`,homePlanet:`Home Planet`,planetPrefix:`Planet`,moonSuffix:`'s Moon`,colonyPrefix:`Colony`},player:{points:`Total Points`},buildings:{metalMine:`Metal Mine`,crystalMine:`Crystal Mine`,deuteriumSynthesizer:`Deuterium Synthesizer`,solarPlant:`Solar Plant`,roboticsFactory:`Robotics Factory`,naniteFactory:`Nanite Factory`,shipyard:`Shipyard`,researchLab:`Research Lab`,metalStorage:`Metal Storage`,crystalStorage:`Crystal Storage`,deuteriumTank:`Deuterium Tank`,darkMatterCollector:`Dark Matter Collector`,terraformer:`Terraformer`,lunarBase:`Lunar Base`,sensorPhalanx:`Sensor Phalanx`,jumpGate:`Jump Gate`,planetDestroyerFactory:`Planet Destroyer Factory`,buildTime:`Build Time`,production:`Production`,consumption:`Consumption`,totalCost:`Total Cost`,totalPoints:`Total Points`,levelRange:`Level Range`},buildingDescriptions:{metalMine:`Extracts metal resources`,crystalMine:`Extracts crystal resources`,deuteriumSynthesizer:`Synthesizes deuterium resources`,solarPlant:`Provides energy`,roboticsFactory:`Accelerates construction speed`,naniteFactory:`Increases build queue capacity, +1 per level (max 10 levels)`,shipyard:`Constructs ships`,researchLab:`Researches technologies`,metalStorage:`Increases metal storage capacity`,crystalStorage:`Increases crystal storage capacity`,deuteriumTank:`Increases deuterium storage capacity`,darkMatterCollector:`Collects rare dark matter resources`,terraformer:`Terraforms planet surface, adds 5 available space per level`,lunarBase:`Increases available space on the moon, +5 space per level`,sensorPhalanx:`Detects fleet activities in surrounding systems`,jumpGate:`Instantly transfers fleets to other moons`,planetDestroyerFactory:`Constructs ultimate weapons capable of destroying planets`},ships:{lightFighter:`Light Fighter`,heavyFighter:`Heavy Fighter`,cruiser:`Cruiser`,battleship:`Battleship`,smallCargo:`Small Cargo`,largeCargo:`Large Cargo`,colonyShip:`Colony Ship`,recycler:`Recycler`,espionageProbe:`Espionage Probe`,darkMatterHarvester:`Dark Matter Harvester`,deathstar:`Deathstar`},shipDescriptions:{lightFighter:`Basic combat unit`,heavyFighter:`Heavily armored fighter`,cruiser:`Medium warship, balanced offense and defense`,battleship:`Powerful warship`,smallCargo:`Transports small amounts of resources`,largeCargo:`Transports large amounts of resources`,colonyShip:`Used to colonize new planets`,recycler:`Collects debris field resources`,espionageProbe:`Scouts enemy planets`,darkMatterHarvester:`Special ship for harvesting dark matter`,deathstar:`Ultimate weapon capable of destroying entire planets`},defenses:{rocketLauncher:`Rocket Launcher`,lightLaser:`Light Laser`,heavyLaser:`Heavy Laser`,gaussCannon:`Gauss Cannon`,ionCannon:`Ion Cannon`,plasmaTurret:`Plasma Turret`,smallShieldDome:`Small Shield Dome`,largeShieldDome:`Large Shield Dome`,planetaryShield:`Planetary Shield`},defenseDescriptions:{rocketLauncher:`Basic defense facility`,lightLaser:`Light energy weapon`,heavyLaser:`Heavy energy weapon`,gaussCannon:`High-speed kinetic weapon`,ionCannon:`Effective against shields`,plasmaTurret:`Powerful defense facility`,smallShieldDome:`Small shield protecting the entire planet`,largeShieldDome:`Large shield protecting the entire planet`,planetaryShield:`Super shield protecting planet from destruction attacks`},research:{researchTime:`Research Time`,totalCost:`Total Cost`,totalPoints:`Total Points`,levelRange:`Level Range`},technologies:{energyTechnology:`Energy Technology`,laserTechnology:`Laser Technology`,ionTechnology:`Ion Technology`,hyperspaceTechnology:`Hyperspace Technology`,plasmaTechnology:`Plasma Technology`,computerTechnology:`Computer Technology`,combustionDrive:`Combustion Drive`,impulseDrive:`Impulse Drive`,hyperspaceDrive:`Hyperspace Drive`,darkMatterTechnology:`Dark Matter Technology`,terraformingTechnology:`Terraforming Technology`,planetDestructionTech:`Planet Destruction Technology`},technologyDescriptions:{energyTechnology:`Improves energy efficiency`,laserTechnology:`Foundation of laser weapons and defense`,ionTechnology:`Ion weapon technology`,hyperspaceTechnology:`Hyperspace jump technology`,plasmaTechnology:`Plasma weapon technology`,computerTechnology:`Increases research queue capacity, +1 per level (max 10 levels)`,combustionDrive:`Basic propulsion technology`,impulseDrive:`Intermediate propulsion technology`,hyperspaceDrive:`Advanced propulsion technology`,darkMatterTechnology:`Research into dark matter properties and applications`,terraformingTechnology:`Research planet terraforming technology, adds 3 available space to all planets per level`,planetDestructionTech:`Terrifying technology for destroying entire planets`},officers:{commander:`Commander`,admiral:`Admiral`,engineer:`Engineer`,geologist:`Geologist`,technocrat:`Technocrat`,darkMatterSpecialist:`Dark Matter Specialist`,resourceBonus:`Resource Production Bonus`,darkMatterBonus:`Dark Matter Production Bonus`,energyBonus:`Energy Production Bonus`},officerDescriptions:{commander:`Improves building speed and management`,admiral:`Improves fleet combat and speed`,engineer:`Improves energy and defense`,geologist:`Improves resource production`,technocrat:`Improves research speed and espionage`,darkMatterSpecialist:`Improves dark matter collection efficiency`},queue:{buildQueue:`Build Queue`,researchQueue:`Research Queue`,building:`Building`,researching:`Researching`,remaining:`Remaining`,cancel:`Cancel`,cancelBuild:`Cancel Build`,cancelResearch:`Cancel Research`,confirmCancel:`Are you sure you want to cancel? 50% of resources will be refunded.`,level:`Level`,quantity:`Quantity`,upgradeToLevel:`Upgrade to Level`},overview:{title:`Planet Overview`,resourceOverview:`Resources`,fleetInfo:`Fleet`,currentShips:`Ships on this planet`,productionSources:`Production Sources`,productionSourcesDesc:`Detailed resource production and bonus information`,consumptionSources:`Consumption Sources`,consumptionSourcesDesc:`Energy consumption details for buildings`,totalProduction:`Total Production`,totalConsumption:`Total Consumption`,noConsumption:`No energy consumption`},buildingsView:{title:`Buildings`,usedSpace:`Used Space`,spaceUsage:`Space Usage`,level:`Level`,upgradeCost:`Upgrade Cost`,buildTime:`Build Time`,upgrade:`Upgrade`,maxLevelReached:`Max Level Reached`,requirementsNotMet:`Requirements Not Met`,upgradeFailed:`Upgrade Failed`,upgradeFailedMessage:`Please check if you have enough resources, space, or if there are other build tasks.`,demolish:`Demolish`,demolishRefund:`Demolish Refund`,demolishFailed:`Demolish Failed`,demolishFailedMessage:`Unable to demolish this building. Please check if the build queue is full or the building level is 0.`},researchView:{title:`Research`,researchCost:`Research Cost`,research:`Research`,maxLevelReached:`Max Level Reached`,researchFailed:`Research Failed`,researchFailedMessage:`Please check if you have enough resources, prerequisites are met, or if there are other research tasks.`},shipyard:{attack:`Attack`,shield:`Shield`,armor:`Armor`,speed:`Speed`,cargoCapacity:`Cargo Capacity`,fuelConsumption:`Fuel Consumption`,buildCost:`Build Cost`,buildTime:`Build Time`,perUnit:`Per Unit`,batchCalculator:`Batch Calculator`,quantity:`Quantity`,totalCost:`Total Cost`,totalTime:`Total Time`},shipyardView:{title:`Shipyard`,fleetStorage:`Fleet Storage`,attack:`Attack`,shield:`Shield`,speed:`Speed`,cargoCapacity:`Cargo Capacity`,unitCost:`Unit Cost`,buildQuantity:`Build Quantity`,totalCost:`Total Cost`,build:`Build`,inputError:`Input Error`,inputErrorMessage:`Please enter build quantity!`,buildFailed:`Build Failed`,buildFailedMessage:`Please check if you have enough resources or if prerequisites are met.`},defense:{attack:`Attack`,shield:`Shield`,armor:`Armor`,buildCost:`Build Cost`,buildTime:`Build Time`,perUnit:`Per Unit`,batchCalculator:`Batch Calculator`,quantity:`Quantity`,totalCost:`Total Cost`,totalTime:`Total Time`},defenseView:{title:`Defense`,attack:`Attack`,shield:`Shield`,armor:`Armor`,buildTime:`Build Time`,seconds:`s`,unitCost:`Unit Cost`,buildQuantity:`Build Quantity`,totalCost:`Total Cost`,build:`Build`,shieldDomeBuilt:`Shield dome already built`,inputError:`Input Error`,inputErrorMessage:`Please enter build quantity!`,buildFailed:`Build Failed`,buildFailedMessage:`Please check if you have enough resources or if prerequisites are met. Shield domes can only be built once.`},fleetView:{title:`Fleet Management`,fleetOverview:`Fleet Overview`,sendFleet:`Send Fleet`,flightMissions:`Flight Missions`,currentPlanetFleet:`Current Planet Fleet`,attack:`Attack`,shield:`Shield`,armor:`Armor`,speed:`Speed`,cargo:`Cargo`,selectFleet:`Select Fleet`,selectFleetDescription:`Select the number of ships to send`,available:`Available`,all:`All`,targetCoordinates:`Target Coordinates`,galaxy:`Galaxy`,system:`System`,position:`Position`,missionType:`Mission Type`,missionInfo:`Mission Info`,fuelConsumption:`Fuel Consumption`,flightTime:`Flight Time`,attackMission:`Attack`,transport:`Transport`,colonize:`Colonize`,spy:`Spy`,deploy:`Deploy`,recycle:`Recycle`,destroy:`Planet Destruction`,transportResources:`Transport Resources`,totalCargoCapacity:`Total Cargo Capacity`,used:`Used`,noFlightMissions:`No flight missions`,outbound:`Outbound`,returning:`Returning`,fleetComposition:`Fleet Composition`,carryingResources:`Carrying Resources`,arrivalTime:`Arrival Time`,returnTime:`Return Time`,recallFleet:`Recall Fleet`,sendFailed:`Send Failed`,sendFailedMessage:`Please check fleet count, fuel availability, or cargo capacity limits.`,recallFailed:`Recall Failed`,recallFailedMessage:`This mission cannot be recalled.`,unknownPlanet:`Unknown Planet`,fleetMissionSlots:`Fleet Mission Slots`,noShipsSelected:`No ships selected`,cannotSendToOwnPlanet:`Cannot send fleet to your own planet`,cargoExceedsCapacity:`Cargo exceeds capacity`,noColonyShip:`Colony ship required for colonization mission`,noDebrisAtTarget:`No debris field at target coordinates or debris field is empty`,noDeathstar:`Deathstar required for destruction mission`},officersView:{title:`Officers`,activated:`Activated`,inactive:`Inactive`,activeStatus:`Active Status`,expirationTime:`Expiration Time`,remainingTime:`Remaining Time`,recruitCost:`Recruitment Cost`,days:`days`,benefitsBonus:`Benefits Bonus`,resourceProduction:`Resource Production`,darkMatterProduction:`Dark Matter Production`,energyProduction:`Energy Production`,buildingSpeed:`Building Speed`,researchSpeed:`Research Speed`,fleetSpeed:`Fleet Speed`,fuelConsumption:`Fuel Consumption`,defense:`Defense`,storageCapacity:`Storage Capacity`,buildQueue:`Build Queue`,fleetSlots:`Fleet Slots`,hire:`Hire`,renew:`Renew`,dismiss:`Dismiss`,hireTitle:`Hire Officer`,hireMessage:`Are you sure you want to hire {name}? Valid for 7 days.`,renewTitle:`Renew Officer`,renewMessage:`Are you sure you want to renew {name} for 7 days?`,dismissTitle:`Dismiss Officer`,dismissMessage:`Are you sure you want to dismiss {name}? No refunds will be given.`,hireFailed:`Hire Failed`,renewFailed:`Renew Failed`,insufficientResources:`Insufficient resources!`},galaxyView:{title:`Galaxy`,selectCoordinates:`Select Coordinates`,galaxy:`Galaxy`,selectGalaxy:`Select Galaxy`,system:`System`,selectSystem:`Select System`,view:`View`,myPlanet:`My Planet`,totalPositions:`10 planet positions total`,mine:`Mine`,hostile:`Hostile`,emptySlot:`Empty - Colonizable`,scout:`Scout`,attack:`Attack`,colonize:`Colonize`,switch:`Switch`,recycle:`Recycle`,debrisField:`Debris Field`,scoutPlanetTitle:`Scout Planet`,attackPlanetTitle:`Attack Planet`,colonizePlanetTitle:`Colonize Planet`,recyclePlanetTitle:`Recycle Debris`,scoutPlanetMessage:`Are you sure you want to send espionage probes to scout planet [{coordinates}]? + +Please go to the fleet page to select ships and send.`,attackPlanetMessage:`Are you sure you want to attack planet [{coordinates}]? + +Please go to the fleet page to select ships and send.`,colonizePlanetMessage:`Are you sure you want to colonize position [{coordinates}]? + +Please go to the fleet page to send a colony ship.`,recyclePlanetMessage:`Are you sure you want to recycle debris at position [{coordinates}]? + +Please go to the fleet page to send recycler ships.`},messagesView:{title:`Messages`,battles:`Battles`,spy:`Spy`,battleReports:`Battle Reports`,spyReports:`Spy Reports`,noBattleReports:`No battle reports`,noSpyReports:`No spy reports`,battleReport:`Battle Report`,spyReport:`Spy Report`,victory:`Victory`,defeat:`Defeat`,draw:`Draw`,attackerFleet:`Attacker Fleet`,defenderFleet:`Defender Fleet`,defenderDefense:`Defender Defense`,attackerLosses:`Attacker Losses`,defenderLosses:`Defender Losses`,noLosses:`No losses`,plunder:`Plunder`,debrisField:`Debris Field`,resources:`Resources`,fleet:`Fleet`,defense:`Defense`,buildings:`Buildings`,unread:`Unread`,targetPlanet:`Target Planet`},simulatorView:{title:`Battle Simulator`,attacker:`Attacker`,defender:`Defender`,attackerConfig:`Attacker Configuration`,attackerConfigDesc:`Configure attacker fleet and technology levels`,defenderConfig:`Defender Configuration`,defenderConfigDesc:`Configure defender fleet, defense, and technology levels`,fleet:`Fleet`,defenseStructures:`Defense Structures`,techLevels:`Technology Levels`,weapon:`Weapon`,shield:`Shield`,armor:`Armor`,defenderResources:`Defender Resources (for plunder calculation)`,startSimulation:`Start Simulation`,reset:`Reset`,battleResult:`Battle Result`,attackerVictory:`Attacker Victory`,defenderVictory:`Defender Victory`,draw:`Draw`,afterRounds:`After {rounds} rounds`,attackerLosses:`Attacker Losses`,defenderLosses:`Defender Losses`,noLosses:`No losses`,attackerRemaining:`Attacker Remaining`,defenderRemaining:`Defender Remaining`,allDestroyed:`All destroyed`,plunderableResources:`Plunderable Resources`,debrisField:`Debris Field`,moonChance:`Moon chance`,showRoundDetails:`Show round details`,hideRoundDetails:`Hide round details`,round:`Round {round}`,attackerRemainingPower:`Attacker remaining power`,defenderRemainingPower:`Defender remaining power`},settings:{dataManagement:`Data Management`,dataManagementDesc:`Export, import, or clear game data`,exportData:`Export Data`,exportDataDesc:`Export game progress as JSON file`,export:`Export`,exporting:`Exporting...`,exportSuccess:`Export successful`,exportFailed:`Export failed, please try again`,importData:`Import Data`,importDataDesc:`Restore game progress from JSON file`,selectFile:`Select File`,importSuccess:`Import successful`,importConfirmTitle:`Confirm Import`,importConfirmMessage:`Importing will overwrite current game progress. This action cannot be undone. Continue?`,importFailed:`Import failed, please check file format`,clearData:`Clear Data`,clearDataDesc:`Delete all game data and reset`,clear:`Clear`,clearConfirmTitle:`Confirm Clear Data`,clearConfirmMessage:`This will delete all game data and start over. This action cannot be undone. Continue?`,gameSettings:`Game Settings`,gameSettingsDesc:`Adjust game parameters and preferences`,gamePause:`Game Pause`,gamePauseDesc:`Pause or resume game time and resource production`,pause:`Pause`,resume:`Resume`,gamePaused:`Game paused`,gameResumed:`Game resumed`,playerName:`Player Name`,gameSpeed:`Game Speed`,gameSpeedDesc:`Current game speed multiplier`,about:`About`,version:`Version`,buildDate:`Build Date`,community:`Community`,github:`GitHub Repository`,qqGroup:`QQ Group`},gmView:{title:`GM Control Panel`,adminOnly:`Admin Only`,selectPlanet:`Select Planet`,choosePlanet:`Choose a planet`,resources:`Resources`,buildings:`Buildings`,research:`Research`,ships:`Ships`,defense:`Defense`,officers:`Officers`,modifyResources:`Modify Resources`,resourcesDesc:`Quickly modify planet resources`,modifyBuildings:`Modify Buildings`,buildingsDesc:`Quickly set building levels`,modifyResearch:`Modify Research`,researchDesc:`Quickly set research levels`,modifyShips:`Modify Ships`,shipsDesc:`Quickly set ship counts`,modifyDefense:`Modify Defense`,defenseDesc:`Quickly set defense counts`,modifyOfficers:`Modify Officers`,officersDesc:`Quickly set officer expiration time`,days:`d`,dangerZone:`Danger Zone`,dangerZoneDesc:`The following operations are irreversible`,resetGame:`Reset Game`,resetGameConfirm:`Are you sure you want to reset the game? This will delete all data!`}},r={common:{confirm:`Bestätigen`,cancel:`Abbrechen`,delete:`Löschen`,edit:`Bearbeiten`,save:`Speichern`,close:`Schließen`,back:`Zurück`,next:`Weiter`,previous:`Vorherige`,submit:`Absenden`,reset:`Zurücksetzen`,search:`Suchen`,filter:`Filtern`,loading:`Laden...`,noData:`Keine Daten`,error:`Fehler`,success:`Erfolg`,warning:`Warnung`,info:`Info`,resourceType:`Ressourcentyp`,playerName:`Kommandant`,timeHour:`Std`,timeMinute:`Min`,timeSecond:`Sek`,featureLocked:`Funktion gesperrt`,unlockRequired:`Gebäude erforderlich`,requiredBuilding:`Erforderliches Gebäude`,currentLevel:`Aktuelles Level`,goToBuildings:`Zu Gebäuden`,locked:`Gesperrt`,viewRequirements:`Anforderungen anzeigen`,requirementsNotMet:`Anforderungen nicht erfüllt`,current:`Aktuell`,level:`Stufe`},errors:{requirementsNotMet:`Anforderungen nicht erfüllt`,insufficientResources:`Unzureichende Ressourcen`,insufficientFleetStorage:`Unzureichender Flottenspeicher`,shieldDomeLimit:`Schildkuppel-Limit erreicht`,fleetMissionsFull:`Flottenmissionsplätze voll`,insufficientFleet:`Unzureichende Flotte`,insufficientFuel:`Unzureichender Treibstoff`,planetOnly:`Dieses Gebäude kann nur auf Planeten gebaut werden`,moonOnly:`Dieses Gebäude kann nur auf Monden gebaut werden`,buildQueueFull:`Bauauftrag voll`,insufficientSpace:`Unzureichender Platz`,buildingLevelZero:`Gebäudelevel ist 0, kann nicht abgerissen werden`,researchQueueFull:`Forschungsauftrag voll`,moonExists:`Mond existiert bereits`,insufficientDebris:`Unzureichendes Trümmerfeld`},nav:{overview:`Übersicht`,buildings:`Gebäude`,research:`Forschung`,shipyard:`Raumschiffwerft`,defense:`Verteidigung`,fleet:`Flotte`,officers:`Offiziere`,simulator:`Simulator`,galaxy:`Galaxie`,messages:`Nachrichten`,settings:`Einstellungen`,gm:`GM`},sidebar:{language:`Sprache`,lightMode:`Heller Modus`,darkMode:`Dunkler Modus`,collapse:`Einklappen`,expand:`Ausklappen`},resources:{metal:`Metall`,crystal:`Kristall`,deuterium:`Deuterium`,darkMatter:`Dunkle Materie`,energy:`Energie`,production:`Produktion`,consumption:`Verbrauch`,capacity:`Kapazität`,current:`Aktuell`,max:`Max. Kapazität`,perHour:`Stunde`,perMinute:`Min`,hour:`Stunde`,noEnergy:`Keine Energie`},planet:{planet:`Planet`,moon:`Mond`,colony:`Kolonie`,position:`Position`,coordinates:`Koordinaten`,switchToMoon:`Zum Mond`,backToPlanet:`Zurück zum Planeten`,fields:`Felder`,temperature:`Temperatur`,homePlanet:`Heimatplanet`,planetPrefix:`Planet`,moonSuffix:`s Mond`,colonyPrefix:`Kolonie`},player:{points:`Gesamtpunkte`},buildings:{metalMine:`Metallmine`,crystalMine:`Kristallmine`,deuteriumSynthesizer:`Deuterium-Synthesizer`,solarPlant:`Solarkraftwerk`,roboticsFactory:`Roboterfabrik`,naniteFactory:`Nanitenfabrik`,shipyard:`Raumschiffwerft`,researchLab:`Forschungslabor`,metalStorage:`Metallspeicher`,crystalStorage:`Kristallspeicher`,deuteriumTank:`Deuteriumtank`,darkMatterCollector:`Dunkle-Materie-Kollektor`,terraformer:`Terraformer`,lunarBase:`Mondbasis`,sensorPhalanx:`Sensorphalanx`,jumpGate:`Sprungtor`,planetDestroyerFactory:`Planetenzerstörer-Fabrik`,buildTime:`Bauzeit`,production:`Produktion`,consumption:`Verbrauch`,totalCost:`Gesamtkosten`,totalPoints:`Gesamtpunkte`,levelRange:`Stufenbereich`},buildingDescriptions:{metalMine:`Fördert Metallressourcen`,crystalMine:`Fördert Kristallressourcen`,deuteriumSynthesizer:`Synthesiert Deuteriumressourcen`,solarPlant:`Liefert Energie`,roboticsFactory:`Beschleunigt Baugeschwindigkeit`,naniteFactory:`Erhöht Bauauftragskapazität, +1 pro Stufe (max 10 Stufen)`,shipyard:`Baut Schiffe`,researchLab:`Erforscht Technologien`,metalStorage:`Erhöht Metallspeicherkapazität`,crystalStorage:`Erhöht Kristallspeicherkapazität`,deuteriumTank:`Erhöht Deuteriumspeicherkapazität`,darkMatterCollector:`Sammelt seltene Dunkle-Materie-Ressourcen`,terraformer:`Terraformt Planetenoberfläche, erhöht verfügbaren Platz um 5 pro Stufe`,lunarBase:`Erhöht verfügbaren Platz auf dem Mond, +5 Platz pro Stufe`,sensorPhalanx:`Erkennt Flottenaktivitäten in umliegenden Systemen`,jumpGate:`Überträgt Flotten sofort zu anderen Monden`,planetDestroyerFactory:`Konstruiert ultimative Waffen zur Zerstörung von Planeten`},ships:{lightFighter:`Leichter Jäger`,heavyFighter:`Schwerer Jäger`,cruiser:`Kreuzer`,battleship:`Schlachtschiff`,smallCargo:`Kleiner Transporter`,largeCargo:`Großer Transporter`,colonyShip:`Kolonieschiff`,recycler:`Recycler`,espionageProbe:`Spionagesonde`,darkMatterHarvester:`Dunkle-Materie-Ernter`,deathstar:`Todesstern`},shipDescriptions:{lightFighter:`Grundlegende Kampfeinheit`,heavyFighter:`Schwer gepanzerter Jäger`,cruiser:`Mittleres Kriegsschiff, ausgewogene Offensive und Defensive`,battleship:`Mächtiges Kriegsschiff`,smallCargo:`Transportiert kleine Mengen Ressourcen`,largeCargo:`Transportiert große Mengen Ressourcen`,colonyShip:`Zur Kolonisierung neuer Planeten`,recycler:`Sammelt Trümmerfeld-Ressourcen`,espionageProbe:`Späht feindliche Planeten aus`,darkMatterHarvester:`Spezielles Schiff zum Ernten von Dunkler Materie`,deathstar:`Ultimative Waffe, die ganze Planeten zerstören kann`},defenses:{rocketLauncher:`Raketenwerfer`,lightLaser:`Leichtes Lasergeschütz`,heavyLaser:`Schweres Lasergeschütz`,gaussCannon:`Gaußkanone`,ionCannon:`Ionengeschütz`,plasmaTurret:`Plasmawerfer`,smallShieldDome:`Kleine Schildkuppel`,largeShieldDome:`Große Schildkuppel`,planetaryShield:`Planetarschild`},defenseDescriptions:{rocketLauncher:`Grundlegende Verteidigungsanlage`,lightLaser:`Leichte Energiewaffe`,heavyLaser:`Schwere Energiewaffe`,gaussCannon:`Hochgeschwindigkeits-Kinetikwaffe`,ionCannon:`Effektiv gegen Schilde`,plasmaTurret:`Mächtige Verteidigungsanlage`,smallShieldDome:`Kleiner Schild zum Schutz des gesamten Planeten`,largeShieldDome:`Großer Schild zum Schutz des gesamten Planeten`,planetaryShield:`Superschild zum Schutz des Planeten vor Vernichtungsangriffen`},research:{researchTime:`Forschungszeit`,totalCost:`Gesamtkosten`,totalPoints:`Gesamtpunkte`,levelRange:`Stufenbereich`},technologies:{energyTechnology:`Energietechnik`,laserTechnology:`Lasertechnik`,ionTechnology:`Ionentechnik`,hyperspaceTechnology:`Hyperraumtechnik`,plasmaTechnology:`Plasmatechnik`,computerTechnology:`Computertechnologie`,combustionDrive:`Verbrennungsantrieb`,impulseDrive:`Impulsantrieb`,hyperspaceDrive:`Hyperraumantrieb`,darkMatterTechnology:`Dunkle-Materie-Technologie`,terraformingTechnology:`Terraforming-Technologie`,planetDestructionTech:`Planetenzerstörungstechnologie`},technologyDescriptions:{energyTechnology:`Verbessert Energieeffizienz`,laserTechnology:`Grundlage für Laserwaffen und -verteidigung`,ionTechnology:`Ionenwaffentechnologie`,hyperspaceTechnology:`Hyperraumsprung-Technologie`,plasmaTechnology:`Plasmawaffentechnologie`,computerTechnology:`Erhöht Forschungsauftragskapazität, +1 pro Stufe (max 10 Stufen)`,combustionDrive:`Grundlegende Antriebstechnologie`,impulseDrive:`Mittlere Antriebstechnologie`,hyperspaceDrive:`Fortgeschrittene Antriebstechnologie`,darkMatterTechnology:`Forschung zu Eigenschaften und Anwendungen von Dunkler Materie`,terraformingTechnology:`Forschung zur Planeten-Terraforming-Technologie, erhöht verfügbaren Platz aller Planeten um 3 pro Stufe`,planetDestructionTech:`Schreckliche Technologie zur Zerstörung ganzer Planeten`},officers:{commander:`Kommandant`,admiral:`Admiral`,engineer:`Ingenieur`,geologist:`Geologe`,technocrat:`Technokrat`,darkMatterSpecialist:`Dunkle-Materie-Spezialist`,resourceBonus:`Ressourcenproduktionsbonus`,darkMatterBonus:`Dunkle-Materie-Produktionsbonus`,energyBonus:`Energieproduktionsbonus`},officerDescriptions:{commander:`Verbessert Baugeschwindigkeit und Management`,admiral:`Verbessert Flottenkampf und Geschwindigkeit`,engineer:`Verbessert Energie und Verteidigung`,geologist:`Verbessert Ressourcenproduktion`,technocrat:`Verbessert Forschungsgeschwindigkeit und Spionage`,darkMatterSpecialist:`Verbessert Dunkle-Materie-Sammlungseffizienz`},queue:{buildQueue:`Bauauftrag`,researchQueue:`Forschungsauftrag`,building:`Im Bau`,researching:`In Forschung`,remaining:`Verbleibend`,cancel:`Abbrechen`,cancelBuild:`Bau abbrechen`,cancelResearch:`Forschung abbrechen`,confirmCancel:`Möchten Sie wirklich abbrechen? 50% der Ressourcen werden zurückerstattet.`,level:`Stufe`,upgradeToLevel:`Auf Stufe aufrüsten`},overview:{title:`Planetenübersicht`,resourceOverview:`Ressourcen`,fleetInfo:`Flotte`,currentShips:`Schiffe auf diesem Planeten`,productionSources:`Produktionsquellen`,productionSourcesDesc:`Detaillierte Ressourcenproduktion und Bonusinformationen`,consumptionSources:`Verbrauchsquellen`,consumptionSourcesDesc:`Energieverbrauchsdetails für Gebäude`,totalProduction:`Gesamtproduktion`,totalConsumption:`Gesamtverbrauch`,noConsumption:`Kein Energieverbrauch`},buildingsView:{title:`Gebäude`,usedSpace:`Verwendeter Platz`,spaceUsage:`Platzbedarf`,level:`Stufe`,upgradeCost:`Ausbaukosten`,buildTime:`Bauzeit`,upgrade:`Ausbauen`,maxLevelReached:`Maximale Stufe erreicht`,requirementsNotMet:`Anforderungen nicht erfüllt`,upgradeFailed:`Ausbau fehlgeschlagen`,upgradeFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen, Platz oder keine anderen Bauaufträge haben.`,demolish:`Abreißen`,demolishRefund:`Abriss-Rückerstattung`,demolishFailed:`Abriss fehlgeschlagen`,demolishFailedMessage:`Abriss nicht möglich. Bitte überprüfen Sie, ob die Bauqueue voll ist oder die Gebäudestufe 0 ist.`},researchView:{title:`Forschung`,researchCost:`Forschungskosten`,research:`Forschen`,maxLevelReached:`Maximale Stufe erreicht`,researchFailed:`Forschung fehlgeschlagen`,researchFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen haben, die Voraussetzungen erfüllt sind oder keine anderen Forschungsaufträge vorhanden sind.`},shipyard:{attack:`Angriff`,shield:`Schild`,armor:`Panzerung`,speed:`Geschwindigkeit`,cargoCapacity:`Ladekapazität`,fuelConsumption:`Treibstoffverbrauch`,buildCost:`Baukosten`,buildTime:`Bauzeit`,perUnit:`Pro Einheit`,batchCalculator:`Batch-Rechner`,quantity:`Menge`,totalCost:`Gesamtkosten`,totalTime:`Gesamtzeit`},shipyardView:{title:`Raumschiffwerft`,fleetStorage:`Flottenspeicher`,attack:`Angriff`,shield:`Schild`,speed:`Geschwindigkeit`,cargoCapacity:`Ladekapazität`,unitCost:`Stückkosten`,buildQuantity:`Baumenge`,totalCost:`Gesamtkosten`,build:`Bauen`,inputError:`Eingabefehler`,inputErrorMessage:`Bitte Baumenge eingeben!`,buildFailed:`Bau fehlgeschlagen`,buildFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen haben oder die Voraussetzungen erfüllt sind.`},defense:{attack:`Angriff`,shield:`Schild`,armor:`Panzerung`,buildCost:`Baukosten`,buildTime:`Bauzeit`,perUnit:`Pro Einheit`,batchCalculator:`Batch-Rechner`,quantity:`Menge`,totalCost:`Gesamtkosten`,totalTime:`Gesamtzeit`},defenseView:{title:`Verteidigung`,attack:`Angriff`,shield:`Schild`,armor:`Panzerung`,buildTime:`Bauzeit`,seconds:`s`,unitCost:`Stückkosten`,buildQuantity:`Baumenge`,totalCost:`Gesamtkosten`,build:`Bauen`,shieldDomeBuilt:`Schildkuppel bereits gebaut`,inputError:`Eingabefehler`,inputErrorMessage:`Bitte Baumenge eingeben!`,buildFailed:`Bau fehlgeschlagen`,buildFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen haben oder die Voraussetzungen erfüllt sind. Schildkuppeln können nur einmal gebaut werden.`},fleetView:{title:`Flottenverwaltung`,fleetOverview:`Flottenübersicht`,sendFleet:`Flotte senden`,flightMissions:`Flugmissionen`,currentPlanetFleet:`Flotte auf diesem Planeten`,attack:`Angriff`,shield:`Schild`,armor:`Panzerung`,speed:`Geschwindigkeit`,cargo:`Fracht`,selectFleet:`Flotte auswählen`,selectFleetDescription:`Wählen Sie die Anzahl der zu sendenden Schiffe`,available:`Verfügbar`,all:`Alle`,targetCoordinates:`Zielkoordinaten`,galaxy:`Galaxie`,system:`System`,position:`Position`,missionType:`Missionstyp`,missionInfo:`Missionsinfo`,fuelConsumption:`Treibstoffverbrauch`,flightTime:`Flugzeit`,attackMission:`Angriff`,transport:`Transport`,colonize:`Kolonisieren`,spy:`Spionage`,deploy:`Stationieren`,recycle:`Recyceln`,transportResources:`Ressourcen transportieren`,totalCargoCapacity:`Gesamtladekapazität`,used:`Verwendet`,noFlightMissions:`Keine Flugmissionen`,outbound:`Hinflug`,returning:`Rückflug`,fleetComposition:`Flottenzusammensetzung`,carryingResources:`Transportierte Ressourcen`,arrivalTime:`Ankunftszeit`,returnTime:`Rückkehrzeit`,recallFleet:`Flotte zurückrufen`,sendFailed:`Senden fehlgeschlagen`,sendFailedMessage:`Bitte überprüfen Sie Flottenanzahl, Treibstoffverfügbarkeit oder Ladekapazitätsgrenzen.`,recallFailed:`Zurückrufen fehlgeschlagen`,recallFailedMessage:`Diese Mission kann nicht zurückgerufen werden.`,unknownPlanet:`Unbekannter Planet`,fleetMissionSlots:`Flottenmissionsplätze`,noShipsSelected:`Keine Schiffe ausgewählt`,cannotSendToOwnPlanet:`Flotte kann nicht zu eigenem Planeten gesendet werden`,cargoExceedsCapacity:`Fracht überschreitet Kapazität`,noColonyShip:`Kolonieschiff für Kolonisierungsmission erforderlich`,noDebrisAtTarget:`Kein Trümmerfeld an Zielkoordinaten oder Trümmerfeld ist leer`},officersView:{title:`Offiziere`,activated:`Aktiviert`,inactive:`Inaktiv`,activeStatus:`Aktivierungsstatus`,expirationTime:`Ablaufzeit`,remainingTime:`Verbleibende Zeit`,recruitCost:`Rekrutierungskosten`,days:`Tage`,benefitsBonus:`Vorteile`,resourceProduction:`Ressourcenproduktion`,darkMatterProduction:`Dunkle-Materie-Produktion`,energyProduction:`Energieproduktion`,buildingSpeed:`Baugeschwindigkeit`,researchSpeed:`Forschungsgeschwindigkeit`,fleetSpeed:`Flottengeschwindigkeit`,fuelConsumption:`Treibstoffverbrauch`,defense:`Verteidigung`,storageCapacity:`Lagerkapazität`,buildQueue:`Bauauftrag`,fleetSlots:`Flottenslots`,hire:`Rekrutieren`,renew:`Verlängern`,dismiss:`Entlassen`,hireTitle:`Offizier rekrutieren`,hireMessage:`Möchten Sie wirklich {name} rekrutieren? Gültig für 7 Tage.`,renewTitle:`Offizier verlängern`,renewMessage:`Möchten Sie wirklich {name} für 7 Tage verlängern?`,dismissTitle:`Offizier entlassen`,dismissMessage:`Möchten Sie wirklich {name} entlassen? Es werden keine Kosten zurückerstattet.`,hireFailed:`Rekrutierung fehlgeschlagen`,renewFailed:`Verlängerung fehlgeschlagen`,insufficientResources:`Nicht genug Ressourcen!`},galaxyView:{title:`Galaxie`,selectCoordinates:`Koordinaten auswählen`,galaxy:`Galaxie`,selectGalaxy:`Galaxie auswählen`,system:`System`,selectSystem:`System auswählen`,view:`Anzeigen`,myPlanet:`Mein Planet`,totalPositions:`Insgesamt 10 Planetenpositionen`,mine:`Mein`,hostile:`Feindlich`,emptySlot:`Leer - Kolonisierbar`,scout:`Spähen`,attack:`Angriff`,colonize:`Kolonisieren`,switch:`Wechseln`,recycle:`Recyceln`,debrisField:`Trümmerfeld`,scoutPlanetTitle:`Planet ausspionieren`,attackPlanetTitle:`Planet angreifen`,colonizePlanetTitle:`Planet kolonisieren`,recyclePlanetTitle:`Trümmer recyceln`,scoutPlanetMessage:`Möchten Sie wirklich Spionagesonden senden, um Planet [{coordinates}] auszuspionieren? + +Bitte gehen Sie zur Flottenseite, um Schiffe auszuwählen und zu senden.`,attackPlanetMessage:`Möchten Sie wirklich Planet [{coordinates}] angreifen? + +Bitte gehen Sie zur Flottenseite, um Schiffe auszuwählen und zu senden.`,colonizePlanetMessage:`Möchten Sie wirklich Position [{coordinates}] kolonisieren? + +Bitte gehen Sie zur Flottenseite, um ein Kolonieschiff zu senden.`,recyclePlanetMessage:`Möchten Sie wirklich Trümmer bei Position [{coordinates}] recyceln? + +Bitte gehen Sie zur Flottenseite, um Recycler zu senden.`},messagesView:{title:`Nachrichten`,battles:`Kämpfe`,spy:`Spionage`,battleReports:`Kampfberichte`,spyReports:`Spionageberichte`,noBattleReports:`Keine Kampfberichte`,noSpyReports:`Keine Spionageberichte`,battleReport:`Kampfbericht`,spyReport:`Spionagebericht`,victory:`Sieg`,defeat:`Niederlage`,draw:`Unentschieden`,attackerFleet:`Angreiferflotte`,defenderFleet:`Verteidigerflotte`,defenderDefense:`Verteidigerverteidigung`,attackerLosses:`Angreiferverluste`,defenderLosses:`Verteidigerverluste`,noLosses:`Keine Verluste`,plunder:`Beute`,debrisField:`Trümmerfeld`,resources:`Ressourcen`,fleet:`Flotte`,defense:`Verteidigung`,buildings:`Gebäude`,unread:`Ungelesen`,targetPlanet:`Zielplanet`,attackerRemaining:`Angreifer verblieben`,defenderRemaining:`Verteidiger verblieben`,moonChance:`Mondchance`,showRoundDetails:`Rundendetails anzeigen`,hideRoundDetails:`Rundendetails ausblenden`,round:`Runde {round}`,attackerRemainingPower:`Verbleibende Angreiferkraft`,defenderRemainingPower:`Verbleibende Verteidigerkraft`},simulatorView:{title:`Kampfsimulator`,attacker:`Angreifer`,defender:`Verteidiger`,attackerConfig:`Angreiferkonfiguration`,attackerConfigDesc:`Angreiferflotte und Technologiestufen konfigurieren`,defenderConfig:`Verteidigerkonfiguration`,defenderConfigDesc:`Verteidigerflotte, Verteidigung und Technologiestufen konfigurieren`,fleet:`Flotte`,defenseStructures:`Verteidigungsanlagen`,techLevels:`Technologiestufen`,weapon:`Waffe`,shield:`Schild`,armor:`Panzerung`,defenderResources:`Verteidigerressourcen (für Beuteberechnung)`,startSimulation:`Simulation starten`,reset:`Zurücksetzen`,battleResult:`Kampfergebnis`,attackerVictory:`Angreifer Sieg`,defenderVictory:`Verteidiger Sieg`,draw:`Unentschieden`,afterRounds:`Nach {rounds} Runden`,attackerLosses:`Angreiferverluste`,defenderLosses:`Verteidigerverluste`,noLosses:`Keine Verluste`,attackerRemaining:`Angreifer verblieben`,defenderRemaining:`Verteidiger verblieben`,allDestroyed:`Alle zerstört`,plunderableResources:`Erbeutbare Ressourcen`,debrisField:`Trümmerfeld`,moonChance:`Mondchance`,showRoundDetails:`Rundendetails anzeigen`,hideRoundDetails:`Rundendetails ausblenden`,round:`Runde {round}`,attackerRemainingPower:`Verbleibende Angreiferkraft`,defenderRemainingPower:`Verbleibende Verteidigerkraft`},settings:{dataManagement:`Datenverwaltung`,dataManagementDesc:`Spieldaten exportieren, importieren oder löschen`,exportData:`Daten exportieren`,exportDataDesc:`Spielfortschritt als JSON-Datei exportieren`,export:`Exportieren`,exporting:`Exportieren...`,exportSuccess:`Export erfolgreich`,exportFailed:`Export fehlgeschlagen, bitte erneut versuchen`,importData:`Daten importieren`,importDataDesc:`Spielfortschritt aus JSON-Datei wiederherstellen`,selectFile:`Datei auswählen`,importSuccess:`Import erfolgreich`,importConfirmTitle:`Import bestätigen`,importConfirmMessage:`Beim Importieren wird der aktuelle Spielfortschritt überschrieben. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?`,importFailed:`Import fehlgeschlagen, bitte Dateiformat überprüfen`,clearData:`Daten löschen`,clearDataDesc:`Alle Spieldaten löschen und zurücksetzen`,clear:`Löschen`,clearConfirmTitle:`Löschen bestätigen`,clearConfirmMessage:`Alle Spieldaten werden gelöscht und von vorne begonnen. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?`,gameSettings:`Spieleinstellungen`,gameSettingsDesc:`Spielparameter und Einstellungen anpassen`,gamePause:`Spielpause`,gamePauseDesc:`Spielzeit und Ressourcenproduktion pausieren oder fortsetzen`,pause:`Pausieren`,resume:`Fortsetzen`,gamePaused:`Spiel pausiert`,gameResumed:`Spiel fortgesetzt`,playerName:`Spielername`,gameSpeed:`Spielgeschwindigkeit`,gameSpeedDesc:`Aktueller Spielgeschwindigkeitsmultiplikator`,about:`Über`,version:`Version`,buildDate:`Build-Datum`,community:`Community`,github:`GitHub-Repository`,qqGroup:`QQ-Gruppe`},gmView:{title:`GM-Kontrollpanel`,adminOnly:`Nur Admin`,selectPlanet:`Planet auswählen`,choosePlanet:`Einen Planeten auswählen`,resources:`Ressourcen`,buildings:`Gebäude`,research:`Forschung`,ships:`Schiffe`,defense:`Verteidigung`,officers:`Offiziere`,modifyResources:`Ressourcen ändern`,resourcesDesc:`Planetenressourcen schnell ändern`,modifyBuildings:`Gebäude ändern`,buildingsDesc:`Gebäudelevel schnell festlegen`,modifyResearch:`Forschung ändern`,researchDesc:`Forschungslevel schnell festlegen`,modifyShips:`Schiffe ändern`,shipsDesc:`Schiffsanzahl schnell festlegen`,modifyDefense:`Verteidigung ändern`,defenseDesc:`Verteidigungsanzahl schnell festlegen`,modifyOfficers:`Offiziere ändern`,officersDesc:`Offiziersablaufzeit schnell festlegen`,days:`T`,dangerZone:`Gefahrenzone`,dangerZoneDesc:`Die folgenden Vorgänge sind irreversibel`,resetGame:`Spiel zurücksetzen`,resetGameConfirm:`Möchten Sie das Spiel wirklich zurücksetzen? Alle Daten werden gelöscht!`}},i={common:{confirm:`Подтвердить`,cancel:`Отмена`,delete:`Удалить`,edit:`Редактировать`,save:`Сохранить`,close:`Закрыть`,back:`Назад`,next:`Далее`,previous:`Предыдущий`,submit:`Отправить`,reset:`Сбросить`,search:`Поиск`,filter:`Фильтр`,loading:`Загрузка...`,noData:`Нет данных`,error:`Ошибка`,success:`Успешно`,warning:`Предупреждение`,info:`Информация`,resourceType:`Тип ресурса`,playerName:`Командир`,timeHour:`ч`,timeMinute:`мин`,timeSecond:`сек`,featureLocked:`Функция заблокирована`,unlockRequired:`Требуется здание`,requiredBuilding:`Необходимое здание`,currentLevel:`Текущий уровень`,goToBuildings:`К зданиям`,locked:`Заблокировано`,viewRequirements:`Просмотр требований`,requirementsNotMet:`Требования не выполнены`,current:`Текущий`,level:`Уровень`},errors:{requirementsNotMet:`Требования не выполнены`,insufficientResources:`Недостаточно ресурсов`,insufficientFleetStorage:`Недостаточно места для флота`,shieldDomeLimit:`Достигнут лимит щитовых куполов`,fleetMissionsFull:`Слоты миссий флота заполнены`,insufficientFleet:`Недостаточно флота`,insufficientFuel:`Недостаточно топлива`,planetOnly:`Это здание можно построить только на планетах`,moonOnly:`Это здание можно построить только на лунах`,buildQueueFull:`Очередь строительства заполнена`,insufficientSpace:`Недостаточно места`,buildingLevelZero:`Уровень здания 0, нельзя снести`,researchQueueFull:`Очередь исследований заполнена`,moonExists:`Луна уже существует`,insufficientDebris:`Недостаточно обломков`},nav:{overview:`Обзор`,buildings:`Здания`,research:`Исследования`,shipyard:`Верфь`,defense:`Оборона`,fleet:`Флот`,officers:`Офицеры`,simulator:`Симулятор`,galaxy:`Галактика`,messages:`Сообщения`,settings:`Настройки`,gm:`GM`},sidebar:{language:`Язык`,lightMode:`Светлая тема`,darkMode:`Тёмная тема`,collapse:`Свернуть`,expand:`Развернуть`},resources:{metal:`Металл`,crystal:`Кристалл`,deuterium:`Дейтерий`,darkMatter:`Тёмная материя`,energy:`Энергия`,production:`Производство`,consumption:`Потребление`,capacity:`Вместимость`,current:`Текущий`,max:`Макс. вместимость`,perHour:`час`,perMinute:`мин`,hour:`час`,noEnergy:`Нет энергии`},planet:{planet:`Планета`,moon:`Луна`,colony:`Колония`,position:`Позиция`,coordinates:`Координаты`,switchToMoon:`На луну`,backToPlanet:`Вернуться на планету`,fields:`Поля`,temperature:`Температура`,homePlanet:`Родная планета`,planetPrefix:`Планета`,moonSuffix:`я луна`,colonyPrefix:`Колония`},player:{points:`Всего очков`},buildings:{metalMine:`Рудник металла`,crystalMine:`Рудник кристалла`,deuteriumSynthesizer:`Синтезатор дейтерия`,solarPlant:`Солнечная электростанция`,roboticsFactory:`Фабрика роботов`,naniteFactory:`Нанитная фабрика`,shipyard:`Верфь`,researchLab:`Исследовательская лаборатория`,metalStorage:`Хранилище металла`,crystalStorage:`Хранилище кристалла`,deuteriumTank:`Цистерна дейтерия`,darkMatterCollector:`Коллектор тёмной материи`,terraformer:`Терраформер`,lunarBase:`Лунная база`,sensorPhalanx:`Сенсорная фаланга`,jumpGate:`Прыжковые ворота`,planetDestroyerFactory:`Фабрика разрушителей планет`,buildTime:`Время строительства`,production:`Производство`,consumption:`Потребление`,totalCost:`Общая стоимость`,totalPoints:`Общие очки`,levelRange:`Диапазон уровней`},buildingDescriptions:{metalMine:`Добывает металлические ресурсы`,crystalMine:`Добывает кристаллические ресурсы`,deuteriumSynthesizer:`Синтезирует дейтериевые ресурсы`,solarPlant:`Обеспечивает энергией`,roboticsFactory:`Ускоряет скорость строительства`,naniteFactory:`Увеличивает вместимость очереди строительства, +1 за уровень (макс 10 уровней)`,shipyard:`Строит корабли`,researchLab:`Исследует технологии`,metalStorage:`Увеличивает ёмкость хранилища металла`,crystalStorage:`Увеличивает ёмкость хранилища кристалла`,deuteriumTank:`Увеличивает ёмкость хранилища дейтерия`,darkMatterCollector:`Собирает редкие ресурсы тёмной материи`,terraformer:`Терраформирует поверхность планеты, увеличивает доступное пространство на 5 за уровень`,lunarBase:`Увеличивает доступное пространство на луне, +5 пространства за уровень`,sensorPhalanx:`Обнаруживает активность флота в окружающих системах`,jumpGate:`Мгновенно переносит флоты на другие луны`,planetDestroyerFactory:`Производит абсолютное оружие, способное уничтожать планеты`},ships:{lightFighter:`Лёгкий истребитель`,heavyFighter:`Тяжёлый истребитель`,cruiser:`Крейсер`,battleship:`Линкор`,smallCargo:`Малый транспорт`,largeCargo:`Большой транспорт`,colonyShip:`Колонизатор`,recycler:`Переработчик`,espionageProbe:`Шпионский зонд`,darkMatterHarvester:`Сборщик тёмной материи`,deathstar:`Звезда Смерти`},shipDescriptions:{lightFighter:`Базовая боевая единица`,heavyFighter:`Тяжелобронированный истребитель`,cruiser:`Средний боевой корабль, сбалансированная атака и защита`,battleship:`Мощный боевой корабль`,smallCargo:`Транспортирует небольшое количество ресурсов`,largeCargo:`Транспортирует большое количество ресурсов`,colonyShip:`Используется для колонизации новых планет`,recycler:`Собирает ресурсы с поля обломков`,espionageProbe:`Разведывает вражеские планеты`,darkMatterHarvester:`Специальный корабль для сбора тёмной материи`,deathstar:`Абсолютное оружие, способное уничтожать целые планеты`},defenses:{rocketLauncher:`Ракетная установка`,lightLaser:`Лёгкий лазер`,heavyLaser:`Тяжёлый лазер`,gaussCannon:`Гауссова пушка`,ionCannon:`Ионное орудие`,plasmaTurret:`Плазменная турель`,smallShieldDome:`Малый щитовой купол`,largeShieldDome:`Большой щитовой купол`,planetaryShield:`Планетарный щит`},defenseDescriptions:{rocketLauncher:`Базовое оборонительное сооружение`,lightLaser:`Лёгкое энергетическое оружие`,heavyLaser:`Тяжёлое энергетическое оружие`,gaussCannon:`Высокоскоростное кинетическое оружие`,ionCannon:`Эффективно против щитов`,plasmaTurret:`Мощное оборонительное сооружение`,smallShieldDome:`Малый щит, защищающий всю планету`,largeShieldDome:`Большой щит, защищающий всю планету`,planetaryShield:`Суперщит, защищающий планету от атак уничтожения`},research:{researchTime:`Время исследования`,totalCost:`Общая стоимость`,totalPoints:`Общие очки`,levelRange:`Диапазон уровней`},technologies:{energyTechnology:`Энергетическая технология`,laserTechnology:`Лазерная технология`,ionTechnology:`Ионная технология`,hyperspaceTechnology:`Гиперпространственная технология`,plasmaTechnology:`Плазменная технология`,computerTechnology:`Компьютерная технология`,combustionDrive:`Реактивный двигатель`,impulseDrive:`Импульсный двигатель`,hyperspaceDrive:`Гиперпространственный двигатель`,darkMatterTechnology:`Технология тёмной материи`,terraformingTechnology:`Технология терраформирования`,planetDestructionTech:`Технология уничтожения планет`},technologyDescriptions:{energyTechnology:`Улучшает энергоэффективность`,laserTechnology:`Основа лазерного оружия и обороны`,ionTechnology:`Технология ионного оружия`,hyperspaceTechnology:`Технология гиперпространственных прыжков`,plasmaTechnology:`Технология плазменного оружия`,computerTechnology:`Увеличивает вместимость очереди исследований, +1 за уровень (макс 10 уровней)`,combustionDrive:`Базовая технология двигателей`,impulseDrive:`Средняя технология двигателей`,hyperspaceDrive:`Продвинутая технология двигателей`,darkMatterTechnology:`Исследование свойств и применения тёмной материи`,terraformingTechnology:`Исследование технологии терраформирования планет, увеличивает доступное пространство всех планет на 3 за уровень`,planetDestructionTech:`Исследование ужасающей технологии уничтожения целых планет`},officers:{commander:`Командир`,admiral:`Адмирал`,engineer:`Инженер`,geologist:`Геолог`,technocrat:`Технократ`,darkMatterSpecialist:`Специалист по тёмной материи`,resourceBonus:`Бонус производства ресурсов`,darkMatterBonus:`Бонус производства тёмной материи`,energyBonus:`Бонус производства энергии`},officerDescriptions:{commander:`Улучшает скорость строительства и управление`,admiral:`Улучшает боевую мощь и скорость флота`,engineer:`Улучшает энергию и оборону`,geologist:`Улучшает производство ресурсов`,technocrat:`Улучшает скорость исследований и шпионаж`,darkMatterSpecialist:`Улучшает эффективность сбора тёмной материи`},queue:{buildQueue:`Очередь строительства`,researchQueue:`Очередь исследований`,building:`Строится`,researching:`Исследуется`,remaining:`Осталось`,cancel:`Отменить`,cancelBuild:`Отменить строительство`,cancelResearch:`Отменить исследование`,confirmCancel:`Вы уверены, что хотите отменить? 50% ресурсов будет возвращено.`,level:`Уровень`,upgradeToLevel:`Улучшить до уровня`},overview:{title:`Обзор планеты`,resourceOverview:`Ресурсы`,fleetInfo:`Флот`,currentShips:`Корабли на этой планете`,productionSources:`Источники производства`,productionSourcesDesc:`Подробная информация о производстве ресурсов и бонусах`,consumptionSources:`Источники потребления`,consumptionSourcesDesc:`Детали потребления энергии зданиями`,totalProduction:`Общее производство`,totalConsumption:`Общее потребление`,noConsumption:`Нет потребления энергии`},buildingsView:{title:`Здания`,usedSpace:`Использовано полей`,spaceUsage:`Использование полей`,level:`Уровень`,upgradeCost:`Стоимость улучшения`,buildTime:`Время строительства`,upgrade:`Улучшить`,maxLevelReached:`Достигнут максимальный уровень`,requirementsNotMet:`Требования не выполнены`,upgradeFailed:`Улучшение не удалось`,upgradeFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов, места или нет других задач строительства.`,demolish:`Снести`,demolishRefund:`Возврат от сноса`,demolishFailed:`Снос не удался`,demolishFailedMessage:`Невозможно снести это здание. Проверьте, не заполнена ли очередь строительства или уровень здания не равен 0.`},researchView:{title:`Исследования`,researchCost:`Стоимость исследования`,research:`Исследовать`,maxLevelReached:`Достигнут максимальный уровень`,researchFailed:`Исследование не удалось`,researchFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов, выполнены ли предварительные условия или нет других исследовательских задач.`},shipyard:{attack:`Атака`,shield:`Щит`,armor:`Броня`,speed:`Скорость`,cargoCapacity:`Грузоподъёмность`,fuelConsumption:`Расход топлива`,buildCost:`Стоимость постройки`,buildTime:`Время строительства`,perUnit:`За единицу`,batchCalculator:`Калькулятор партий`,quantity:`Количество`,totalCost:`Общая стоимость`,totalTime:`Общее время`},shipyardView:{title:`Верфь`,fleetStorage:`Хранилище флота`,attack:`Атака`,shield:`Щит`,speed:`Скорость`,cargoCapacity:`Грузоподъёмность`,unitCost:`Стоимость единицы`,buildQuantity:`Количество для постройки`,totalCost:`Общая стоимость`,build:`Построить`,inputError:`Ошибка ввода`,inputErrorMessage:`Пожалуйста, введите количество для постройки!`,buildFailed:`Постройка не удалась`,buildFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов или выполнены ли предварительные условия.`},defense:{attack:`Атака`,shield:`Щит`,armor:`Броня`,buildCost:`Стоимость постройки`,buildTime:`Время строительства`,perUnit:`За единицу`,batchCalculator:`Калькулятор партий`,quantity:`Количество`,totalCost:`Общая стоимость`,totalTime:`Общее время`},defenseView:{title:`Оборона`,attack:`Атака`,shield:`Щит`,armor:`Броня`,buildTime:`Время постройки`,seconds:`с`,unitCost:`Стоимость единицы`,buildQuantity:`Количество для постройки`,totalCost:`Общая стоимость`,build:`Построить`,shieldDomeBuilt:`Щитовой купол уже построен`,inputError:`Ошибка ввода`,inputErrorMessage:`Пожалуйста, введите количество для постройки!`,buildFailed:`Постройка не удалась`,buildFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов или выполнены ли предварительные условия. Щитовые купола можно построить только один раз.`},fleetView:{title:`Управление флотом`,fleetOverview:`Обзор флота`,sendFleet:`Отправить флот`,flightMissions:`Полетные миссии`,currentPlanetFleet:`Флот на этой планете`,attack:`Атака`,shield:`Щит`,armor:`Броня`,speed:`Скорость`,cargo:`Груз`,selectFleet:`Выбрать флот`,selectFleetDescription:`Выберите количество кораблей для отправки`,available:`Доступно`,all:`Все`,targetCoordinates:`Целевые координаты`,galaxy:`Галактика`,system:`Система`,position:`Позиция`,missionType:`Тип миссии`,missionInfo:`Информация о миссии`,fuelConsumption:`Расход топлива`,flightTime:`Время полета`,attackMission:`Атака`,transport:`Транспорт`,colonize:`Колонизация`,spy:`Разведка`,deploy:`Размещение`,recycle:`Переработка`,transportResources:`Транспортировка ресурсов`,totalCargoCapacity:`Общая грузоподъёмность`,used:`Использовано`,noFlightMissions:`Нет полетных миссий`,outbound:`Туда`,returning:`Возвращение`,fleetComposition:`Состав флота`,carryingResources:`Перевозимые ресурсы`,arrivalTime:`Время прибытия`,returnTime:`Время возврата`,recallFleet:`Отозвать флот`,sendFailed:`Отправка не удалась`,sendFailedMessage:`Пожалуйста, проверьте количество флота, наличие топлива или ограничения грузоподъёмности.`,recallFailed:`Отзыв не удался`,recallFailedMessage:`Эта миссия не может быть отозвана.`,unknownPlanet:`Неизвестная планета`,fleetMissionSlots:`Слоты миссий флота`,noShipsSelected:`Корабли не выбраны`,cannotSendToOwnPlanet:`Невозможно отправить флот на свою планету`,cargoExceedsCapacity:`Груз превышает вместимость`,noColonyShip:`Для колонизационной миссии требуется колониальный корабль`,noDebrisAtTarget:`Нет поля обломков по целевым координатам или поле обломков пусто`},officersView:{title:`Офицеры`,activated:`Активирован`,inactive:`Неактивен`,activeStatus:`Статус активации`,expirationTime:`Время истечения`,remainingTime:`Оставшееся время`,recruitCost:`Стоимость найма`,days:`дн.`,benefitsBonus:`Бонусы`,resourceProduction:`Производство ресурсов`,darkMatterProduction:`Производство тёмной материи`,energyProduction:`Производство энергии`,buildingSpeed:`Скорость строительства`,researchSpeed:`Скорость исследований`,fleetSpeed:`Скорость флота`,fuelConsumption:`Расход топлива`,defense:`Защита`,storageCapacity:`Вместимость хранилища`,buildQueue:`Очередь строительства`,fleetSlots:`Слоты флота`,hire:`Нанять`,renew:`Продлить`,dismiss:`Уволить`,hireTitle:`Нанять офицера`,hireMessage:`Вы уверены, что хотите нанять {name}? Действует 7 дней.`,renewTitle:`Продлить офицера`,renewMessage:`Вы уверены, что хотите продлить {name} на 7 дней?`,dismissTitle:`Уволить офицера`,dismissMessage:`Вы уверены, что хотите уволить {name}? Средства не возвращаются.`,hireFailed:`Найм не удался`,renewFailed:`Продление не удалось`,insufficientResources:`Недостаточно ресурсов!`},galaxyView:{title:`Галактика`,selectCoordinates:`Выбрать координаты`,galaxy:`Галактика`,selectGalaxy:`Выбрать галактику`,system:`Система`,selectSystem:`Выбрать систему`,view:`Показать`,myPlanet:`Моя планета`,totalPositions:`Всего 10 позиций планет`,mine:`Моя`,hostile:`Враждебная`,emptySlot:`Пусто - можно колонизировать`,scout:`Разведка`,attack:`Атака`,colonize:`Колонизация`,switch:`Переключить`,recycle:`Переработка`,debrisField:`Поле обломков`,scoutPlanetTitle:`Разведать планету`,attackPlanetTitle:`Атаковать планету`,colonizePlanetTitle:`Колонизировать планету`,recyclePlanetTitle:`Переработать обломки`,scoutPlanetMessage:`Вы уверены, что хотите отправить шпионские зонды для разведки планеты [{coordinates}]? + +Перейдите на страницу флота, чтобы выбрать корабли и отправить.`,attackPlanetMessage:`Вы уверены, что хотите атаковать планету [{coordinates}]? + +Перейдите на страницу флота, чтобы выбрать корабли и отправить.`,colonizePlanetMessage:`Вы уверены, что хотите колонизировать позицию [{coordinates}]? + +Перейдите на страницу флота, чтобы отправить колонизационный корабль.`,recyclePlanetMessage:`Вы уверены, что хотите переработать обломки в позиции [{coordinates}]? + +Перейдите на страницу флота, чтобы отправить переработчики.`},messagesView:{title:`Сообщения`,battles:`Битвы`,spy:`Разведка`,battleReports:`Отчёты о боях`,spyReports:`Отчёты разведки`,noBattleReports:`Нет отчётов о боях`,noSpyReports:`Нет отчётов разведки`,battleReport:`Отчёт о бое`,spyReport:`Отчёт разведки`,victory:`Победа`,defeat:`Поражение`,draw:`Ничья`,attackerFleet:`Флот нападающего`,defenderFleet:`Флот защитника`,defenderDefense:`Оборона защитника`,attackerLosses:`Потери нападающего`,defenderLosses:`Потери защитника`,noLosses:`Без потерь`,plunder:`Добыча`,debrisField:`Поле обломков`,resources:`Ресурсы`,fleet:`Флот`,defense:`Оборона`,buildings:`Здания`,unread:`Непрочитано`,targetPlanet:`Целевая планета`,attackerRemaining:`Осталось у нападающего`,defenderRemaining:`Осталось у защитника`,moonChance:`Шанс появления луны`,showRoundDetails:`Показать детали раундов`,hideRoundDetails:`Скрыть детали раундов`,round:`Раунд {round}`,attackerRemainingPower:`Оставшаяся мощь нападающего`,defenderRemainingPower:`Оставшаяся мощь защитника`},simulatorView:{title:`Симулятор боя`,attacker:`Нападающий`,defender:`Защитник`,attackerConfig:`Настройки нападающего`,attackerConfigDesc:`Настроить флот и уровни технологий нападающего`,defenderConfig:`Настройки защитника`,defenderConfigDesc:`Настроить флот, оборону и уровни технологий защитника`,fleet:`Флот`,defenseStructures:`Оборонительные сооружения`,techLevels:`Уровни технологий`,weapon:`Оружие`,shield:`Щит`,armor:`Броня`,defenderResources:`Ресурсы защитника (для расчёта добычи)`,startSimulation:`Начать симуляцию`,reset:`Сбросить`,battleResult:`Результат боя`,attackerVictory:`Победа нападающего`,defenderVictory:`Победа защитника`,draw:`Ничья`,afterRounds:`После {rounds} раундов`,attackerLosses:`Потери нападающего`,defenderLosses:`Потери защитника`,noLosses:`Без потерь`,attackerRemaining:`Осталось у нападающего`,defenderRemaining:`Осталось у защитника`,allDestroyed:`Всё уничтожено`,plunderableResources:`Доступная добыча`,debrisField:`Поле обломков`,moonChance:`Шанс появления луны`,showRoundDetails:`Показать детали раундов`,hideRoundDetails:`Скрыть детали раундов`,round:`Раунд {round}`,attackerRemainingPower:`Оставшаяся мощь нападающего`,defenderRemainingPower:`Оставшаяся мощь защитника`},settings:{dataManagement:`Управление данными`,dataManagementDesc:`Экспорт, импорт или очистка игровых данных`,exportData:`Экспорт данных`,exportDataDesc:`Экспортировать прогресс игры в JSON файл`,export:`Экспорт`,exporting:`Экспорт...`,exportSuccess:`Экспорт успешен`,exportFailed:`Экспорт не удался, попробуйте еще раз`,importData:`Импорт данных`,importDataDesc:`Восстановить прогресс игры из JSON файла`,selectFile:`Выбрать файл`,importSuccess:`Импорт успешен`,importConfirmTitle:`Подтвердить импорт`,importConfirmMessage:`Импорт перезапишет текущий прогресс игры. Это действие невозможно отменить. Продолжить?`,importFailed:`Импорт не удался, проверьте формат файла`,clearData:`Очистить данные`,clearDataDesc:`Удалить все игровые данные и сбросить`,clear:`Очистить`,clearConfirmTitle:`Подтвердить очистку данных`,clearConfirmMessage:`Все игровые данные будут удалены и игра начнется заново. Это действие невозможно отменить. Продолжить?`,gameSettings:`Настройки игры`,gameSettingsDesc:`Настроить параметры и предпочтения игры`,gamePause:`Пауза игры`,gamePauseDesc:`Приостановить или возобновить игровое время и производство ресурсов`,pause:`Пауза`,resume:`Возобновить`,gamePaused:`Игра приостановлена`,gameResumed:`Игра возобновлена`,playerName:`Имя игрока`,gameSpeed:`Скорость игры`,gameSpeedDesc:`Текущий множитель скорости игры`,about:`О программе`,version:`Версия`,buildDate:`Дата сборки`,community:`Сообщество`,github:`Репозиторий GitHub`,qqGroup:`Группа QQ`},gmView:{title:`Панель управления GM`,adminOnly:`Только для администратора`,selectPlanet:`Выбрать планету`,choosePlanet:`Выберите планету`,resources:`Ресурсы`,buildings:`Здания`,research:`Исследования`,ships:`Корабли`,defense:`Оборона`,officers:`Офицеры`,modifyResources:`Изменить ресурсы`,resourcesDesc:`Быстрое изменение ресурсов планеты`,modifyBuildings:`Изменить здания`,buildingsDesc:`Быстрая установка уровней зданий`,modifyResearch:`Изменить исследования`,researchDesc:`Быстрая установка уровней исследований`,modifyShips:`Изменить корабли`,shipsDesc:`Быстрая установка количества кораблей`,modifyDefense:`Изменить оборону`,defenseDesc:`Быстрая установка количества обороны`,modifyOfficers:`Изменить офицеров`,officersDesc:`Быстрая установка времени истечения офицеров`,days:`д`,dangerZone:`Опасная зона`,dangerZoneDesc:`Следующие операции необратимы`,resetGame:`Сбросить игру`,resetGameConfirm:`Вы уверены, что хотите сбросить игру? Все данные будут удалены!`}},a={common:{confirm:`확인`,cancel:`취소`,delete:`삭제`,edit:`편집`,save:`저장`,close:`닫기`,back:`돌아가기`,next:`다음`,previous:`이전`,submit:`제출`,reset:`초기화`,search:`검색`,filter:`필터`,loading:`로딩 중...`,noData:`데이터 없음`,error:`오류`,success:`성공`,warning:`경고`,info:`정보`,resourceType:`자원 유형`,playerName:`사령관`,timeHour:`시간`,timeMinute:`분`,timeSecond:`초`,featureLocked:`기능 잠김`,unlockRequired:`건물 필요`,requiredBuilding:`필요한 건물`,currentLevel:`현재 레벨`,goToBuildings:`건물로 이동`,locked:`잠김`,viewRequirements:`요구사항 보기`,requirementsNotMet:`요구사항 미충족`,current:`현재`,level:`레벨`},errors:{requirementsNotMet:`전제 조건 미충족`,insufficientResources:`자원 부족`,insufficientFleetStorage:`함대 저장소 부족`,shieldDomeLimit:`실드 돔 한도 도달`,fleetMissionsFull:`함대 임무 슬롯 가득 참`,insufficientFleet:`함대 부족`,insufficientFuel:`연료 부족`,planetOnly:`이 건물은 행성에서만 지을 수 있습니다`,moonOnly:`이 건물은 위성에서만 지을 수 있습니다`,buildQueueFull:`건설 대기열 가득 참`,insufficientSpace:`공간 부족`,buildingLevelZero:`건물 레벨이 0이므로 철거할 수 없습니다`,researchQueueFull:`연구 대기열 가득 참`,moonExists:`위성이 이미 존재합니다`,insufficientDebris:`잔해장 부족`},nav:{overview:`개요`,buildings:`건물`,research:`연구`,shipyard:`조선소`,defense:`방어`,fleet:`함대`,officers:`장교`,simulator:`시뮬레이터`,galaxy:`은하계`,messages:`메시지`,settings:`설정`,gm:`GM`},sidebar:{language:`언어`,lightMode:`라이트 모드`,darkMode:`다크 모드`,collapse:`메뉴 접기`,expand:`메뉴 펼치기`},resources:{metal:`금속`,crystal:`크리스탈`,deuterium:`중수소`,darkMatter:`암흑 물질`,energy:`에너지`,production:`생산량`,consumption:`소비량`,capacity:`용량`,current:`현재 저장량`,max:`최대 용량`,perHour:`시간`,perMinute:`분`,hour:`시간`,noEnergy:`에너지 부족`},planet:{planet:`행성`,moon:`위성`,colony:`식민지`,position:`위치`,coordinates:`좌표`,switchToMoon:`위성 보기`,backToPlanet:`모행성으로 돌아가기`,fields:`필드`,temperature:`온도`,homePlanet:`모행성`,planetPrefix:`행성`,moonSuffix:`의 위성`,colonyPrefix:`식민지`},player:{points:`총 점수`},buildings:{metalMine:`금속 광산`,crystalMine:`크리스탈 광산`,deuteriumSynthesizer:`중수소 합성기`,solarPlant:`태양광 발전소`,roboticsFactory:`로봇 공장`,naniteFactory:`나노 공장`,shipyard:`조선소`,researchLab:`연구소`,metalStorage:`금속 창고`,crystalStorage:`크리스탈 창고`,deuteriumTank:`중수소 탱크`,darkMatterCollector:`암흑 물질 수집기`,terraformer:`지형 변환기`,lunarBase:`달 기지`,sensorPhalanx:`센서 팔랑크스`,jumpGate:`점프 게이트`,planetDestroyerFactory:`행성 파괴 공장`,buildTime:`건설 시간`,production:`생산량`,consumption:`소비`,totalCost:`총 비용`,totalPoints:`총 점수`,levelRange:`레벨 범위`},buildingDescriptions:{metalMine:`금속 자원 채굴`,crystalMine:`크리스탈 자원 채굴`,deuteriumSynthesizer:`중수소 자원 합성`,solarPlant:`에너지 제공`,roboticsFactory:`건설 속도 향상`,naniteFactory:`건설 대기열 수 증가, 레벨당 +1 (최대 10레벨)`,shipyard:`함선 건조`,researchLab:`기술 연구`,metalStorage:`금속 저장 용량 증가`,crystalStorage:`크리스탈 저장 용량 증가`,deuteriumTank:`중수소 저장 용량 증가`,darkMatterCollector:`희귀한 암흑 물질 자원 수집`,terraformer:`행성 지형 개조, 레벨당 가용 공간 5 증가`,lunarBase:`달 가용 공간 증가, 레벨당 +5 공간`,sensorPhalanx:`주변 행성계의 함대 활동 감지`,jumpGate:`다른 위성으로 함대 순간 이동`,planetDestroyerFactory:`행성을 파괴할 수 있는 궁극 병기 건조`},ships:{lightFighter:`경전투기`,heavyFighter:`중전투기`,cruiser:`순양함`,battleship:`전함`,smallCargo:`소형 수송선`,largeCargo:`대형 수송선`,colonyShip:`식민선`,recycler:`재활용선`,espionageProbe:`정찰기`,darkMatterHarvester:`암흑 물질 채취선`,deathstar:`데스스타`},shipDescriptions:{lightFighter:`기본 전투 유닛`,heavyFighter:`중장갑 전투기`,cruiser:`중형 전함, 공격과 방어 균형`,battleship:`강력한 전함`,smallCargo:`소량의 자원 운송`,largeCargo:`대량의 자원 운송`,colonyShip:`새로운 행성 식민에 사용`,recycler:`잔해장 자원 수집`,espionageProbe:`적 행성 정찰`,darkMatterHarvester:`암흑 물질 채취 전용 특수 함선`,deathstar:`행성 전체를 파괴할 수 있는 궁극 병기`},defenses:{rocketLauncher:`로켓 발사대`,lightLaser:`경량 레이저포`,heavyLaser:`중형 레이저포`,gaussCannon:`가우스 캐논`,ionCannon:`이온 캐논`,plasmaTurret:`플라즈마 포탑`,smallShieldDome:`소형 실드 돔`,largeShieldDome:`대형 실드 돔`,planetaryShield:`행성 실드`},defenseDescriptions:{rocketLauncher:`기본 방어 시설`,lightLaser:`경량 에너지 무기`,heavyLaser:`중형 에너지 무기`,gaussCannon:`고속 운동 에너지 무기`,ionCannon:`실드 파괴의 이기`,plasmaTurret:`강력한 방어 시설`,smallShieldDome:`행성 전체를 보호하는 소형 실드`,largeShieldDome:`행성 전체를 보호하는 대형 실드`,planetaryShield:`파괴 공격으로부터 행성을 보호하는 초급 실드`},research:{researchTime:`연구 시간`,totalCost:`총 비용`,totalPoints:`총 점수`,levelRange:`레벨 범위`},technologies:{energyTechnology:`에너지 기술`,laserTechnology:`레이저 기술`,ionTechnology:`이온 기술`,hyperspaceTechnology:`초공간 기술`,plasmaTechnology:`플라즈마 기술`,computerTechnology:`컴퓨터 기술`,combustionDrive:`연소 엔진`,impulseDrive:`임펄스 엔진`,hyperspaceDrive:`초공간 엔진`,darkMatterTechnology:`암흑 물질 기술`,terraformingTechnology:`지형 변환 기술`,planetDestructionTech:`행성 파괴 기술`},technologyDescriptions:{energyTechnology:`에너지 이용 효율 향상`,laserTechnology:`레이저 무기와 방어의 기초`,ionTechnology:`이온 무기 기술`,hyperspaceTechnology:`초공간 점프 기술`,plasmaTechnology:`플라즈마 무기 기술`,computerTechnology:`연구 대기열 수 증가, 레벨당 +1 (최대 10레벨)`,combustionDrive:`기본 추진 기술`,impulseDrive:`중급 추진 기술`,hyperspaceDrive:`고급 추진 기술`,darkMatterTechnology:`암흑 물질의 성질과 응용 연구`,terraformingTechnology:`행성 지형 개조 기술 연구, 레벨당 모든 행성의 가용 공간 3 증가`,planetDestructionTech:`행성 전체를 파괴하는 공포의 기술 연구`},officers:{commander:`사령관`,admiral:`제독`,engineer:`엔지니어`,geologist:`지질학자`,technocrat:`기술 전문가`,darkMatterSpecialist:`암흑 물질 전문가`,resourceBonus:`자원 생산 보너스`,darkMatterBonus:`암흑 물질 생산 보너스`,energyBonus:`에너지 생산 보너스`},officerDescriptions:{commander:`건설 속도 및 관리 능력 향상`,admiral:`함대 전투력 및 속도 향상`,engineer:`에너지 및 방어력 향상`,geologist:`자원 생산량 향상`,technocrat:`연구 속도 및 정찰 능력 향상`,darkMatterSpecialist:`암흑 물질 수집 효율 향상`},queue:{buildQueue:`건설 대기열`,researchQueue:`연구 대기열`,building:`건설 중`,researching:`연구 중`,remaining:`남은 시간`,cancel:`취소`,cancelBuild:`건설 취소`,cancelResearch:`연구 취소`,confirmCancel:`취소하시겠습니까? 자원의 50%가 환불됩니다.`,level:`레벨`,upgradeToLevel:`레벨로 업그레이드`},overview:{title:`행성 개요`,resourceOverview:`자원 개요`,fleetInfo:`함대`,currentShips:`현재 행성의 함선 수`,productionSources:`생산 소스`,productionSourcesDesc:`상세 자원 생산 및 보너스 정보`,consumptionSources:`소비 소스`,consumptionSourcesDesc:`건물 에너지 소비 세부 정보`,totalProduction:`총 생산량`,totalConsumption:`총 소비량`,noConsumption:`에너지 소비 없음`},buildingsView:{title:`건물`,usedSpace:`사용된 공간`,spaceUsage:`공간 사용`,level:`레벨`,upgradeCost:`업그레이드 비용`,buildTime:`건설 시간`,upgrade:`업그레이드`,maxLevelReached:`최대 레벨 도달`,requirementsNotMet:`요구 사항 미충족`,upgradeFailed:`업그레이드 실패`,upgradeFailedMessage:`자원이 충분한지, 공간이 충분한지, 또는 다른 건설 작업이 있는지 확인하세요.`,demolish:`철거`,demolishRefund:`철거 환불`,demolishFailed:`철거 실패`,demolishFailedMessage:`이 건물을 철거할 수 없습니다. 건설 대기열이 가득 찼거나 건물 레벨이 0인지 확인하세요.`},researchView:{title:`연구`,researchCost:`연구 비용`,research:`연구`,maxLevelReached:`최대 레벨 도달`,researchFailed:`연구 실패`,researchFailedMessage:`자원이 충분한지, 전제 조건이 충족되었는지, 또는 다른 연구 작업이 있는지 확인하세요.`},shipyard:{attack:`공격력`,shield:`쉴드`,armor:`장갑`,speed:`속도`,cargoCapacity:`화물 용량`,fuelConsumption:`연료 소비`,buildCost:`건설 비용`,buildTime:`건설 시간`,perUnit:`단위당`,batchCalculator:`일괄 계산기`,quantity:`수량`,totalCost:`총 비용`,totalTime:`총 시간`},shipyardView:{title:`조선소`,fleetStorage:`함대 저장소`,attack:`공격력`,shield:`실드`,speed:`속도`,cargoCapacity:`적재량`,unitCost:`단위 비용`,buildQuantity:`건조 수량`,totalCost:`총 비용`,build:`건조`,inputError:`입력 오류`,inputErrorMessage:`건조 수량을 입력하세요!`,buildFailed:`건조 실패`,buildFailedMessage:`자원이 충분한지 또는 전제 조건이 충족되었는지 확인하세요.`},defense:{attack:`공격력`,shield:`쉴드`,armor:`장갑`,buildCost:`건설 비용`,buildTime:`건설 시간`,perUnit:`단위당`,batchCalculator:`일괄 계산기`,quantity:`수량`,totalCost:`총 비용`,totalTime:`총 시간`},defenseView:{title:`방어 시설`,attack:`공격력`,shield:`실드`,armor:`장갑`,buildTime:`건설 시간`,seconds:`초`,unitCost:`단위 비용`,buildQuantity:`건조 수량`,totalCost:`총 비용`,build:`건조`,shieldDomeBuilt:`실드 돔이 이미 건설됨`,inputError:`입력 오류`,inputErrorMessage:`건조 수량을 입력하세요!`,buildFailed:`건조 실패`,buildFailedMessage:`자원이 충분한지 또는 전제 조건이 충족되었는지 확인하세요. 실드 돔은 하나만 건설할 수 있습니다.`},fleetView:{title:`함대 관리`,fleetOverview:`함대 개요`,sendFleet:`함대 파견`,flightMissions:`비행 임무`,currentPlanetFleet:`현재 행성 함대`,attack:`공격`,shield:`실드`,armor:`장갑`,speed:`속도`,cargo:`화물`,selectFleet:`함대 선택`,selectFleetDescription:`파견할 함선 수 선택`,available:`사용 가능`,all:`전체`,targetCoordinates:`목표 좌표`,galaxy:`은하계`,system:`행성계`,position:`위치`,missionType:`임무 유형`,missionInfo:`임무 정보`,fuelConsumption:`연료 소비`,flightTime:`비행 시간`,attackMission:`공격`,transport:`수송`,colonize:`식민`,spy:`정찰`,deploy:`배치`,recycle:`회수`,transportResources:`자원 수송`,totalCargoCapacity:`총 적재량`,used:`사용됨`,noFlightMissions:`비행 임무 없음`,outbound:`이동 중`,returning:`귀환 중`,fleetComposition:`함대 구성`,carryingResources:`운반 자원`,arrivalTime:`도착 시간`,returnTime:`귀환 시간`,recallFleet:`함대 소환`,sendFailed:`파견 실패`,sendFailedMessage:`함대 수, 연료 충분 여부 또는 적재량 한계를 확인하세요.`,recallFailed:`소환 실패`,recallFailedMessage:`이 임무는 소환할 수 없습니다.`,unknownPlanet:`알 수 없는 행성`,fleetMissionSlots:`함대 임무 슬롯`,noShipsSelected:`선택된 함선 없음`,cannotSendToOwnPlanet:`자신의 행성으로 함대를 파견할 수 없습니다`,cargoExceedsCapacity:`적재량이 용량을 초과합니다`,noColonyShip:`식민 임무를 위해 식민선이 필요합니다`,noDebrisAtTarget:`대상 좌표에 잔해장이 없거나 잔해장이 비어 있습니다`},officersView:{title:`장교`,activated:`활성화됨`,inactive:`비활성`,activeStatus:`활성 상태`,expirationTime:`만료 시간`,remainingTime:`남은 시간`,recruitCost:`모집 비용`,days:`일`,benefitsBonus:`효과 보너스`,resourceProduction:`자원 생산량`,darkMatterProduction:`암흑 물질 생산량`,energyProduction:`에너지 생산량`,buildingSpeed:`건설 속도`,researchSpeed:`연구 속도`,fleetSpeed:`함대 속도`,fuelConsumption:`연료 소비`,defense:`방어력`,storageCapacity:`저장 용량`,buildQueue:`건설 대기열`,fleetSlots:`함대 슬롯`,hire:`고용`,renew:`갱신`,dismiss:`해고`,hireTitle:`장교 고용`,hireMessage:`{name}을(를) 고용하시겠습니까? 유효 기간은 7일입니다.`,renewTitle:`장교 갱신`,renewMessage:`{name}을(를) 7일간 갱신하시겠습니까?`,dismissTitle:`장교 해고`,dismissMessage:`{name}을(를) 해고하시겠습니까? 비용은 환불되지 않습니다.`,hireFailed:`고용 실패`,renewFailed:`갱신 실패`,insufficientResources:`자원 부족!`},galaxyView:{title:`은하계`,selectCoordinates:`좌표 선택`,galaxy:`은하계`,selectGalaxy:`은하계 선택`,system:`행성계`,selectSystem:`행성계 선택`,view:`보기`,myPlanet:`내 행성`,totalPositions:`총 10개 행성 위치`,mine:`내 것`,hostile:`적대`,emptySlot:`빈 자리 - 식민 가능`,scout:`정찰`,attack:`공격`,colonize:`식민`,switch:`전환`,recycle:`회수`,debrisField:`잔해 필드`,scoutPlanetTitle:`행성 정찰`,attackPlanetTitle:`행성 공격`,colonizePlanetTitle:`행성 식민`,recyclePlanetTitle:`잔해 회수`,scoutPlanetMessage:`행성 [{coordinates}]을(를) 정찰하기 위해 정찰기를 보내시겠습니까? + +함대 페이지로 이동하여 함선을 선택하고 파견하세요.`,attackPlanetMessage:`행성 [{coordinates}]을(를) 공격하시겠습니까? + +함대 페이지로 이동하여 함선을 선택하고 파견하세요.`,colonizePlanetMessage:`위치 [{coordinates}]을(를) 식민하시겠습니까? + +함대 페이지로 이동하여 식민선을 파견하세요.`,recyclePlanetMessage:`위치 [{coordinates}]의 잔해를 회수하시겠습니까? + +함대 페이지로 이동하여 회수선을 파견하세요.`},messagesView:{title:`메시지 센터`,battles:`전투`,spy:`정찰`,battleReports:`전투 보고서`,spyReports:`정찰 보고서`,noBattleReports:`전투 보고서 없음`,noSpyReports:`정찰 보고서 없음`,battleReport:`전투 보고서`,spyReport:`정찰 보고서`,victory:`승리`,defeat:`패배`,draw:`무승부`,attackerFleet:`공격자 함대`,defenderFleet:`방어자 함대`,defenderDefense:`방어자 방어`,attackerLosses:`공격자 손실`,defenderLosses:`방어자 손실`,noLosses:`손실 없음`,plunder:`약탈 자원`,debrisField:`잔해장`,resources:`자원`,fleet:`함대`,defense:`방어`,buildings:`건물`,unread:`읽지 않음`,targetPlanet:`목표 행성`,attackerRemaining:`공격자 잔여`,defenderRemaining:`방어자 잔여`,moonChance:`위성 생성 확률`,showRoundDetails:`라운드 상세 표시`,hideRoundDetails:`라운드 상세 숨기기`,round:`제{round}라운드`,attackerRemainingPower:`공격자 잔여 화력`,defenderRemainingPower:`방어자 잔여 화력`},simulatorView:{title:`전투 시뮬레이터`,attacker:`공격자`,defender:`방어자`,attackerConfig:`공격자 설정`,attackerConfigDesc:`공격자의 함대와 기술 레벨 설정`,defenderConfig:`방어자 설정`,defenderConfigDesc:`방어자의 함대, 방어 및 기술 레벨 설정`,fleet:`함대`,defenseStructures:`방어 시설`,techLevels:`기술 레벨`,weapon:`무기`,shield:`실드`,armor:`장갑`,defenderResources:`방어자 자원 (약탈 계산용)`,startSimulation:`시뮬레이션 시작`,reset:`초기화`,battleResult:`전투 결과`,attackerVictory:`공격자 승리`,defenderVictory:`방어자 승리`,draw:`무승부`,afterRounds:`{rounds}회 전투 후`,attackerLosses:`공격자 손실`,defenderLosses:`방어자 손실`,noLosses:`손실 없음`,attackerRemaining:`공격자 잔여`,defenderRemaining:`방어자 잔여`,allDestroyed:`모두 파괴됨`,plunderableResources:`약탈 가능 자원`,debrisField:`잔해장`,moonChance:`위성 생성 확률`,showRoundDetails:`라운드 상세 표시`,hideRoundDetails:`라운드 상세 숨기기`,round:`제 {round} 라운드`,attackerRemainingPower:`공격자 잔여 화력`,defenderRemainingPower:`방어자 잔여 화력`},settings:{dataManagement:`데이터 관리`,dataManagementDesc:`게임 데이터 내보내기, 가져오기 또는 지우기`,exportData:`데이터 내보내기`,exportDataDesc:`게임 진행 상황을 JSON 파일로 내보내기`,export:`내보내기`,exporting:`내보내는 중...`,exportSuccess:`내보내기 성공`,exportFailed:`내보내기 실패, 다시 시도해주세요`,importData:`데이터 가져오기`,importDataDesc:`JSON 파일에서 게임 진행 상황 복원`,selectFile:`파일 선택`,importSuccess:`가져오기 성공`,importConfirmTitle:`가져오기 확인`,importConfirmMessage:`가져오기를 하면 현재 게임 진행 상황이 덮어쓰기됩니다. 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?`,importFailed:`가져오기 실패, 파일 형식을 확인해주세요`,clearData:`데이터 지우기`,clearDataDesc:`모든 게임 데이터 삭제 및 초기화`,clear:`지우기`,clearConfirmTitle:`데이터 지우기 확인`,clearConfirmMessage:`모든 게임 데이터가 삭제되고 처음부터 시작됩니다. 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?`,gameSettings:`게임 설정`,gameSettingsDesc:`게임 매개변수 및 설정 조정`,gamePause:`게임 일시정지`,gamePauseDesc:`게임 시간 및 자원 생산 일시정지 또는 재개`,pause:`일시정지`,resume:`재개`,gamePaused:`게임이 일시정지되었습니다`,gameResumed:`게임이 재개되었습니다`,playerName:`플레이어 이름`,gameSpeed:`게임 속도`,gameSpeedDesc:`현재 게임 속도 배율`,about:`정보`,version:`버전`,buildDate:`빌드 날짜`,community:`커뮤니티`,github:`GitHub 저장소`,qqGroup:`QQ 그룹`},gmView:{title:`GM 제어판`,adminOnly:`관리자 전용`,selectPlanet:`행성 선택`,choosePlanet:`행성을 선택하세요`,resources:`자원`,buildings:`건물`,research:`연구`,ships:`함선`,defense:`방어`,officers:`장교`,modifyResources:`자원 수정`,resourcesDesc:`행성 자원을 빠르게 수정`,modifyBuildings:`건물 수정`,buildingsDesc:`건물 레벨을 빠르게 설정`,modifyResearch:`연구 수정`,researchDesc:`연구 레벨을 빠르게 설정`,modifyShips:`함선 수정`,shipsDesc:`함선 수량을 빠르게 설정`,modifyDefense:`방어 수정`,defenseDesc:`방어 수량을 빠르게 설정`,modifyOfficers:`장교 수정`,officersDesc:`장교 만료 시간을 빠르게 설정`,days:`일`,dangerZone:`위험 구역`,dangerZoneDesc:`다음 작업은 되돌릴 수 없습니다`,resetGame:`게임 초기화`,resetGameConfirm:`게임을 초기화하시겠습니까? 모든 데이터가 삭제됩니다!`}},o={common:{confirm:`確認`,cancel:`キャンセル`,delete:`削除`,edit:`編集`,save:`保存`,close:`閉じる`,back:`戻る`,next:`次へ`,previous:`前へ`,submit:`送信`,reset:`リセット`,search:`検索`,filter:`フィルター`,loading:`読み込み中...`,noData:`データなし`,error:`エラー`,success:`成功`,warning:`警告`,info:`情報`,resourceType:`資源タイプ`,playerName:`司令官`,timeHour:`時間`,timeMinute:`分`,timeSecond:`秒`,featureLocked:`機能がロックされています`,unlockRequired:`建物が必要です`,requiredBuilding:`必要な建物`,currentLevel:`現在のレベル`,goToBuildings:`建物へ移動`,locked:`ロック済み`,viewRequirements:`必要条件を表示`,requirementsNotMet:`必要条件が満たされていません`,current:`現在`,level:`レベル`},errors:{requirementsNotMet:`前提条件を満たしていません`,insufficientResources:`資源が不足しています`,insufficientFleetStorage:`艦隊ストレージが不足しています`,shieldDomeLimit:`シールドドームの上限に達しました`,fleetMissionsFull:`艦隊ミッションスロットが満杯です`,insufficientFleet:`艦隊が不足しています`,insufficientFuel:`燃料が不足しています`,planetOnly:`この建物は惑星でのみ建設できます`,moonOnly:`この建物は月でのみ建設できます`,buildQueueFull:`建設キューが満杯です`,insufficientSpace:`スペースが不足しています`,buildingLevelZero:`建物レベルが0のため、解体できません`,researchQueueFull:`研究キューが満杯です`,moonExists:`月は既に存在します`,insufficientDebris:`残骸フィールドが不足しています`},nav:{overview:`概要`,buildings:`建物`,research:`研究`,shipyard:`造船所`,defense:`防衛`,fleet:`艦隊`,officers:`士官`,simulator:`シミュレーター`,galaxy:`銀河`,messages:`メッセージ`,settings:`設定`,gm:`GM`},sidebar:{language:`言語`,lightMode:`ライトモード`,darkMode:`ダークモード`,collapse:`メニューを閉じる`,expand:`メニューを開く`},resources:{metal:`金属`,crystal:`クリスタル`,deuterium:`重水素`,darkMatter:`ダークマター`,energy:`エネルギー`,production:`生産量`,consumption:`消費量`,capacity:`容量`,current:`現在の貯蔵量`,max:`最大容量`,perHour:`時間`,perMinute:`分`,hour:`時間`,noEnergy:`エネルギー不足`},planet:{planet:`惑星`,moon:`月`,colony:`コロニー`,position:`位置`,coordinates:`座標`,switchToMoon:`月を表示`,backToPlanet:`母星に戻る`,fields:`フィールド`,temperature:`温度`,homePlanet:`母星`,planetPrefix:`惑星`,moonSuffix:`の月`,colonyPrefix:`コロニー`},player:{points:`総ポイント`},buildings:{metalMine:`金属鉱山`,crystalMine:`クリスタル鉱山`,deuteriumSynthesizer:`重水素合成装置`,solarPlant:`太陽光発電所`,roboticsFactory:`ロボット工場`,naniteFactory:`ナノマシン工場`,shipyard:`造船所`,researchLab:`研究所`,metalStorage:`金属倉庫`,crystalStorage:`クリスタル倉庫`,deuteriumTank:`重水素タンク`,darkMatterCollector:`ダークマター採取装置`,terraformer:`テラフォーマー`,lunarBase:`月面基地`,sensorPhalanx:`センサーファランクス`,jumpGate:`ジャンプゲート`,planetDestroyerFactory:`惑星破壊工場`,buildTime:`建設時間`,production:`生産量`,consumption:`消費`,totalCost:`総コスト`,totalPoints:`総ポイント`,levelRange:`レベル範囲`},buildingDescriptions:{metalMine:`金属資源を採掘`,crystalMine:`クリスタル資源を採掘`,deuteriumSynthesizer:`重水素資源を合成`,solarPlant:`エネルギーを供給`,roboticsFactory:`建設速度を向上`,naniteFactory:`建設キュー数を増加、レベル毎に+1(最大10レベル)`,shipyard:`艦船を建造`,researchLab:`技術を研究`,metalStorage:`金属の貯蔵上限を増加`,crystalStorage:`クリスタルの貯蔵上限を増加`,deuteriumTank:`重水素の貯蔵上限を増加`,darkMatterCollector:`希少なダークマター資源を収集`,terraformer:`惑星地形を改造、レベル毎に利用可能スペース5増加`,lunarBase:`月の利用可能スペースを増加、レベル毎に+5スペース`,sensorPhalanx:`周辺星系の艦隊活動を探知`,jumpGate:`他の月へ艦隊を瞬間移動`,planetDestroyerFactory:`惑星を破壊できる究極兵器を建造`},ships:{lightFighter:`軽戦闘機`,heavyFighter:`重戦闘機`,cruiser:`巡洋艦`,battleship:`戦艦`,smallCargo:`小型輸送船`,largeCargo:`大型輸送船`,colonyShip:`コロニーシップ`,recycler:`リサイクラー`,espionageProbe:`スパイプローブ`,darkMatterHarvester:`ダークマター採取船`,deathstar:`デススター`},shipDescriptions:{lightFighter:`基本戦闘ユニット`,heavyFighter:`重装甲戦闘機`,cruiser:`中型戦艦、攻守バランス型`,battleship:`強力な戦艦`,smallCargo:`少量の資源を輸送`,largeCargo:`大量の資源を輸送`,colonyShip:`新惑星の植民に使用`,recycler:`デブリフィールドの資源を回収`,espionageProbe:`敵惑星を偵察`,darkMatterHarvester:`ダークマター採取専用の特殊艦`,deathstar:`惑星全体を破壊できる究極兵器`},defenses:{rocketLauncher:`ロケットランチャー`,lightLaser:`ライトレーザー`,heavyLaser:`ヘビーレーザー`,gaussCannon:`ガウスキャノン`,ionCannon:`イオンキャノン`,plasmaTurret:`プラズマタレット`,smallShieldDome:`小型シールドドーム`,largeShieldDome:`大型シールドドーム`,planetaryShield:`惑星シールド`},defenseDescriptions:{rocketLauncher:`基本防衛施設`,lightLaser:`軽量エネルギー兵器`,heavyLaser:`重型エネルギー兵器`,gaussCannon:`高速運動エネルギー兵器`,ionCannon:`シールド破壊に効果的`,plasmaTurret:`強力な防衛施設`,smallShieldDome:`惑星全体を保護する小型シールド`,largeShieldDome:`惑星全体を保護する大型シールド`,planetaryShield:`破壊攻撃から惑星を保護する超級シールド`},research:{researchTime:`研究時間`,totalCost:`総コスト`,totalPoints:`総ポイント`,levelRange:`レベル範囲`},technologies:{energyTechnology:`エネルギー技術`,laserTechnology:`レーザー技術`,ionTechnology:`イオン技術`,hyperspaceTechnology:`ハイパースペース技術`,plasmaTechnology:`プラズマ技術`,computerTechnology:`コンピューター技術`,combustionDrive:`燃焼ドライブ`,impulseDrive:`インパルスドライブ`,hyperspaceDrive:`ハイパースペースドライブ`,darkMatterTechnology:`ダークマター技術`,terraformingTechnology:`テラフォーミング技術`,planetDestructionTech:`惑星破壊技術`},technologyDescriptions:{energyTechnology:`エネルギー利用効率を向上`,laserTechnology:`レーザー兵器と防衛の基礎`,ionTechnology:`イオン兵器技術`,hyperspaceTechnology:`ハイパースペースジャンプ技術`,plasmaTechnology:`プラズマ兵器技術`,computerTechnology:`研究キュー数を増加、レベル毎に+1(最大10レベル)`,combustionDrive:`基本推進技術`,impulseDrive:`中級推進技術`,hyperspaceDrive:`高級推進技術`,darkMatterTechnology:`ダークマターの性質と応用を研究`,terraformingTechnology:`惑星地形改造技術を研究、レベル毎に全惑星の利用可能スペース3増加`,planetDestructionTech:`惑星全体を破壊する恐怖の技術を研究`},officers:{commander:`司令官`,admiral:`提督`,engineer:`エンジニア`,geologist:`地質学者`,technocrat:`技術専門家`,darkMatterSpecialist:`ダークマター専門家`,resourceBonus:`資源生産ボーナス`,darkMatterBonus:`ダークマター生産ボーナス`,energyBonus:`エネルギー生産ボーナス`},officerDescriptions:{commander:`建設速度と管理能力を向上`,admiral:`艦隊戦闘力と速度を向上`,engineer:`エネルギーと防御力を向上`,geologist:`資源生産量を向上`,technocrat:`研究速度と偵察能力を向上`,darkMatterSpecialist:`ダークマター採取効率を向上`},queue:{buildQueue:`建設キュー`,researchQueue:`研究キュー`,building:`建設中`,researching:`研究中`,remaining:`残り時間`,cancel:`キャンセル`,cancelBuild:`建設キャンセル`,cancelResearch:`研究キャンセル`,confirmCancel:`キャンセルしますか?資源の50%が返還されます。`,level:`レベル`,upgradeToLevel:`レベルにアップグレード`},shipyard:{attack:`攻撃力`,shield:`シールド`,armor:`装甲`,speed:`速度`,cargoCapacity:`貨物容量`,fuelConsumption:`燃料消費`,buildCost:`建設コスト`,buildTime:`建設時間`,perUnit:`ユニットあたり`,batchCalculator:`一括計算機`,quantity:`数量`,totalCost:`総コスト`,totalTime:`総時間`},overview:{title:`惑星概要`,resourceOverview:`資源概要`,fleetInfo:`艦隊`,currentShips:`現在の惑星の艦船数`,productionSources:`生産源`,productionSourcesDesc:`詳細な資源生産とボーナス情報`,consumptionSources:`消費源`,consumptionSourcesDesc:`建物のエネルギー消費詳細`,totalProduction:`総生産量`,totalConsumption:`総消費量`,noConsumption:`エネルギー消費なし`},buildingsView:{title:`建物`,usedSpace:`使用済みスペース`,spaceUsage:`スペース使用量`,level:`レベル`,upgradeCost:`アップグレードコスト`,buildTime:`建設時間`,upgrade:`アップグレード`,maxLevelReached:`最大レベルに達しました`,requirementsNotMet:`要件が満たされていません`,upgradeFailed:`アップグレード失敗`,upgradeFailedMessage:`資源が十分か、スペースが十分か、または他の建設タスクがないか確認してください。`,demolish:`解体`,demolishRefund:`解体返還`,demolishFailed:`解体失敗`,demolishFailedMessage:`この建物を解体できません。建設キューが満杯か、建物レベルが0でないか確認してください。`},researchView:{title:`研究`,researchCost:`研究コスト`,research:`研究`,maxLevelReached:`最大レベルに達しました`,researchFailed:`研究失敗`,researchFailedMessage:`資源が十分か、前提条件が満たされているか、または他の研究タスクがないか確認してください。`},defense:{attack:`攻撃力`,shield:`シールド`,armor:`装甲`,buildCost:`建設コスト`,buildTime:`建設時間`,perUnit:`ユニットあたり`,batchCalculator:`一括計算機`,quantity:`数量`,totalCost:`総コスト`,totalTime:`総時間`},shipyardView:{title:`造船所`,fleetStorage:`艦隊ストレージ`,attack:`攻撃力`,shield:`シールド`,speed:`速度`,cargoCapacity:`積載量`,unitCost:`ユニットコスト`,buildQuantity:`建造数`,totalCost:`総コスト`,build:`建造`,inputError:`入力エラー`,inputErrorMessage:`建造数を入力してください!`,buildFailed:`建造失敗`,buildFailedMessage:`資源が十分か、前提条件が満たされているか確認してください。`},defenseView:{title:`防衛施設`,attack:`攻撃力`,shield:`シールド`,armor:`装甲`,buildTime:`建設時間`,seconds:`秒`,unitCost:`ユニットコスト`,buildQuantity:`建造数`,totalCost:`総コスト`,build:`建造`,shieldDomeBuilt:`シールドドーム建設済み`,inputError:`入力エラー`,inputErrorMessage:`建造数を入力してください!`,buildFailed:`建造失敗`,buildFailedMessage:`資源が十分か、前提条件が満たされているか確認してください。シールドドームは1つのみ建設できます。`},fleetView:{title:`艦隊管理`,fleetOverview:`艦隊概要`,sendFleet:`艦隊派遣`,flightMissions:`飛行ミッション`,currentPlanetFleet:`現在の惑星艦隊`,attack:`攻撃`,shield:`シールド`,armor:`装甲`,speed:`速度`,cargo:`貨物`,selectFleet:`艦隊選択`,selectFleetDescription:`派遣する艦船数を選択`,available:`利用可能`,all:`全て`,targetCoordinates:`目標座標`,galaxy:`銀河`,system:`星系`,position:`位置`,missionType:`ミッションタイプ`,missionInfo:`ミッション情報`,fuelConsumption:`燃料消費`,flightTime:`飛行時間`,attackMission:`攻撃`,transport:`輸送`,colonize:`植民`,spy:`偵察`,deploy:`配備`,recycle:`回収`,transportResources:`資源輸送`,totalCargoCapacity:`総積載量`,used:`使用済み`,noFlightMissions:`飛行ミッションなし`,outbound:`往路`,returning:`帰路`,fleetComposition:`艦隊構成`,carryingResources:`運搬資源`,arrivalTime:`到着時刻`,returnTime:`帰還時刻`,recallFleet:`艦隊召還`,sendFailed:`派遣失敗`,sendFailedMessage:`艦隊数、燃料の充足、または積載量の制限を確認してください。`,recallFailed:`召還失敗`,recallFailedMessage:`このミッションは召還できません。`,unknownPlanet:`未知の惑星`,fleetMissionSlots:`艦隊ミッションスロット`,noShipsSelected:`艦船が選択されていません`,cannotSendToOwnPlanet:`自分の惑星に艦隊を派遣できません`,cargoExceedsCapacity:`積載量が容量を超えています`,noColonyShip:`植民ミッションにはコロニーシップが必要です`,noDebrisAtTarget:`目標座標にデブリフィールドがないか、デブリフィールドが空です`},officersView:{title:`士官`,activated:`アクティブ`,inactive:`非アクティブ`,activeStatus:`アクティブ状態`,expirationTime:`期限切れ時刻`,remainingTime:`残り時間`,recruitCost:`募集コスト`,days:`日`,benefitsBonus:`効果ボーナス`,resourceProduction:`資源生産量`,darkMatterProduction:`ダークマター生産量`,energyProduction:`エネルギー生産量`,buildingSpeed:`建設速度`,researchSpeed:`研究速度`,fleetSpeed:`艦隊速度`,fuelConsumption:`燃料消費`,defense:`防御力`,storageCapacity:`貯蔵容量`,buildQueue:`建設キュー`,fleetSlots:`艦隊スロット`,hire:`雇用`,renew:`更新`,dismiss:`解雇`,hireTitle:`士官雇用`,hireMessage:`{name}を雇用しますか?有効期限は7日間です。`,renewTitle:`士官更新`,renewMessage:`{name}を7日間更新しますか?`,dismissTitle:`士官解雇`,dismissMessage:`{name}を解雇しますか?費用は返金されません。`,hireFailed:`雇用失敗`,renewFailed:`更新失敗`,insufficientResources:`資源不足!`},galaxyView:{title:`銀河`,selectCoordinates:`座標選択`,galaxy:`銀河`,selectGalaxy:`銀河を選択`,system:`星系`,selectSystem:`星系を選択`,view:`表示`,myPlanet:`自分の惑星`,totalPositions:`全10惑星位置`,mine:`自分`,hostile:`敵対`,emptySlot:`空き - 植民可能`,scout:`偵察`,attack:`攻撃`,colonize:`植民`,switch:`切り替え`,recycle:`回収`,debrisField:`デブリフィールド`,scoutPlanetTitle:`惑星偵察`,attackPlanetTitle:`惑星攻撃`,colonizePlanetTitle:`惑星植民`,recyclePlanetTitle:`デブリ回収`,scoutPlanetMessage:`惑星[{coordinates}]にスパイプローブを送りますか? + +艦隊ページに移動して艦船を選択して派遣してください。`,attackPlanetMessage:`惑星[{coordinates}]を攻撃しますか? + +艦隊ページに移動して艦船を選択して派遣してください。`,colonizePlanetMessage:`位置[{coordinates}]を植民しますか? + +艦隊ページに移動してコロニーシップを派遣してください。`,recyclePlanetMessage:`位置[{coordinates}]のデブリを回収しますか? + +艦隊ページに移動してリサイクラーを派遣してください。`},messagesView:{title:`メッセージセンター`,battles:`戦闘`,spy:`スパイ`,battleReports:`戦闘レポート`,spyReports:`スパイレポート`,noBattleReports:`戦闘レポートなし`,noSpyReports:`スパイレポートなし`,battleReport:`戦闘レポート`,spyReport:`スパイレポート`,victory:`勝利`,defeat:`敗北`,draw:`引き分け`,attackerFleet:`攻撃側艦隊`,defenderFleet:`防御側艦隊`,defenderDefense:`防御側防衛`,attackerLosses:`攻撃側損失`,defenderLosses:`防御側損失`,noLosses:`損失なし`,plunder:`略奪資源`,debrisField:`デブリフィールド`,resources:`資源`,fleet:`艦隊`,defense:`防衛`,buildings:`建物`,unread:`未読`,targetPlanet:`目標惑星`,attackerRemaining:`攻撃側残存`,defenderRemaining:`防御側残存`,moonChance:`月生成確率`,showRoundDetails:`ラウンド詳細表示`,hideRoundDetails:`ラウンド詳細非表示`,round:`第{round}ラウンド`,attackerRemainingPower:`攻撃側残存火力`,defenderRemainingPower:`防御側残存火力`},simulatorView:{title:`戦闘シミュレーター`,attacker:`攻撃側`,defender:`防御側`,attackerConfig:`攻撃側設定`,attackerConfigDesc:`攻撃側の艦隊と技術レベルを設定`,defenderConfig:`防御側設定`,defenderConfigDesc:`防御側の艦隊、防衛、技術レベルを設定`,fleet:`艦隊`,defenseStructures:`防衛施設`,techLevels:`技術レベル`,weapon:`武器`,shield:`シールド`,armor:`装甲`,defenderResources:`防御側資源(略奪計算用)`,startSimulation:`シミュレーション開始`,reset:`リセット`,battleResult:`戦闘結果`,attackerVictory:`攻撃側勝利`,defenderVictory:`防御側勝利`,draw:`引き分け`,afterRounds:`{rounds}ラウンド後`,attackerLosses:`攻撃側損失`,defenderLosses:`防御側損失`,noLosses:`損失なし`,attackerRemaining:`攻撃側残存`,defenderRemaining:`防御側残存`,allDestroyed:`全て破壊`,plunderableResources:`略奪可能資源`,debrisField:`デブリフィールド`,moonChance:`月生成確率`,showRoundDetails:`ラウンド詳細表示`,hideRoundDetails:`ラウンド詳細非表示`,round:`第{round}ラウンド`,attackerRemainingPower:`攻撃側残存火力`,defenderRemainingPower:`防御側残存火力`},settings:{dataManagement:`データ管理`,dataManagementDesc:`ゲームデータのエクスポート、インポート、またはクリア`,exportData:`データエクスポート`,exportDataDesc:`ゲームの進行状況をJSONファイルとしてエクスポート`,export:`エクスポート`,exporting:`エクスポート中...`,exportSuccess:`エクスポート成功`,exportFailed:`エクスポートに失敗しました。もう一度お試しください`,importData:`データインポート`,importDataDesc:`JSONファイルからゲームの進行状況を復元`,selectFile:`ファイルを選択`,importSuccess:`インポート成功`,importConfirmTitle:`インポート確認`,importConfirmMessage:`インポートすると現在のゲームの進行状況が上書きされます。この操作は元に戻せません。続行しますか?`,importFailed:`インポートに失敗しました。ファイル形式を確認してください`,clearData:`データクリア`,clearDataDesc:`すべてのゲームデータを削除してリセット`,clear:`クリア`,clearConfirmTitle:`データクリア確認`,clearConfirmMessage:`すべてのゲームデータが削除され、最初からやり直します。この操作は元に戻せません。続行しますか?`,gameSettings:`ゲーム設定`,gameSettingsDesc:`ゲームパラメータと設定を調整`,gamePause:`ゲーム一時停止`,gamePauseDesc:`ゲーム時間と資源生産を一時停止または再開`,pause:`一時停止`,resume:`再開`,gamePaused:`ゲームを一時停止しました`,gameResumed:`ゲームを再開しました`,playerName:`プレイヤー名`,gameSpeed:`ゲーム速度`,gameSpeedDesc:`現在のゲーム速度倍率`,about:`について`,version:`バージョン`,buildDate:`ビルド日`,community:`コミュニティ`,github:`GitHubリポジトリ`,qqGroup:`QQグループ`},gmView:{title:`GMコントロールパネル`,adminOnly:`管理者専用`,selectPlanet:`惑星を選択`,choosePlanet:`惑星を選択してください`,resources:`資源`,buildings:`建物`,research:`研究`,ships:`艦船`,defense:`防衛`,officers:`士官`,modifyResources:`資源を変更`,resourcesDesc:`惑星の資源を素早く変更`,modifyBuildings:`建物を変更`,buildingsDesc:`建物レベルを素早く設定`,modifyResearch:`研究を変更`,researchDesc:`研究レベルを素早く設定`,modifyShips:`艦船を変更`,shipsDesc:`艦船数を素早く設定`,modifyDefense:`防衛を変更`,defenseDesc:`防衛数を素早く設定`,modifyOfficers:`士官を変更`,officersDesc:`士官の有効期限を素早く設定`,days:`日`,dangerZone:`危険ゾーン`,dangerZoneDesc:`以下の操作は元に戻せません`,resetGame:`ゲームをリセット`,resetGameConfirm:`ゲームをリセットしてもよろしいですか?すべてのデータが削除されます!`}};const s={"zh-CN":e,"zh-TW":t,en:n,de:r,ru:i,ko:a,ja:o},c={"zh-CN":`简体中文`,"zh-TW":`繁體中文`,en:`English`,de:`Deutsch`,ru:`Русский`,ko:`한국어`,ja:`日本語`},l=()=>{let e=(navigator.language||navigator.languages&&navigator.languages[0]||`zh-CN`).toLowerCase();return e.startsWith(`zh-tw`)||e.startsWith(`zh-hant`)||e.startsWith(`zh-hk`)||e.startsWith(`zh-mo`)?`zh-TW`:e.startsWith(`zh`)?`zh-CN`:e.startsWith(`ja`)?`ja`:e.startsWith(`ko`)?`ko`:e.startsWith(`en`)?`en`:e.startsWith(`de`)?`de`:e.startsWith(`ru`)?`ru`:`zh-CN`};export{c as n,s as r,l as t}; \ No newline at end of file diff --git a/docs/assets/game-logic-B_TBzmsj.js b/docs/assets/game-logic-B_TBzmsj.js new file mode 100644 index 0000000..1f16e37 --- /dev/null +++ b/docs/assets/game-logic-B_TBzmsj.js @@ -0,0 +1,3 @@ +import{n as e}from"./rolldown-runtime-CIDIeb-o.js";import{a as t,c as n,d as r,h as i,i as a,l as o,m as s,n as c,o as l,p as u,r as d,s as f,t as p,u as m}from"./game-config-D-D7cMgJ.js";function h(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var g={},_=[],v=()=>{},y=()=>!1,b=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),x=e=>e.startsWith(`onUpdate:`),S=Object.assign,C=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},w=Object.prototype.hasOwnProperty,T=(e,t)=>w.call(e,t),E=Array.isArray,D=e=>ae(e)===`[object Map]`,ee=e=>ae(e)===`[object Set]`,te=e=>ae(e)===`[object Date]`,ne=e=>ae(e)===`[object RegExp]`,O=e=>typeof e==`function`,k=e=>typeof e==`string`,re=e=>typeof e==`symbol`,A=e=>typeof e==`object`&&!!e,j=e=>(A(e)||O(e))&&O(e.then)&&O(e.catch),ie=Object.prototype.toString,ae=e=>ie.call(e),oe=e=>ae(e).slice(8,-1),se=e=>ae(e)===`[object Object]`,ce=e=>k(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,le=h(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),ue=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},de=/-\w/g,M=ue(e=>e.replace(de,e=>e.slice(1).toUpperCase())),fe=/\B([A-Z])/g,N=ue(e=>e.replace(fe,`-$1`).toLowerCase()),pe=ue(e=>e.charAt(0).toUpperCase()+e.slice(1)),me=ue(e=>e?`on${pe(e)}`:``),P=(e,t)=>!Object.is(e,t),he=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},_e=e=>{let t=parseFloat(e);return isNaN(t)?e:t},ve=e=>{let t=k(e)?Number(e):NaN;return isNaN(t)?e:t},ye,be=()=>ye||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{},xe=h(`Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol`);function Se(e){if(E(e)){let t={};for(let n=0;n{if(e){let n=e.split(we);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function De(e){let t=``;if(k(e))t=e;else if(E(e))for(let n=0;nNe(e,t))}var Fe=e=>!!(e&&e.__v_isRef===!0),Ie=e=>k(e)?e:e==null?``:E(e)||A(e)&&(e.toString===ie||!O(e.toString))?Fe(e)?Ie(e.value):JSON.stringify(e,Le,2):String(e),Le=(e,t)=>Fe(t)?Le(e,t.value):D(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[Re(t,r)+` =>`]=n,e),{})}:ee(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>Re(e))}:re(t)?Re(t):A(t)&&!E(t)&&!se(t)?String(t):t,Re=(e,t=``)=>re(e)?`Symbol(${e.description??t})`:e;function ze(e){return e==null?`initial`:typeof e==`string`?e===``?` `:e:String(e)}var F,Be=class{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=F,!e&&F&&(this.index=(F.scopes||=[]).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes)for(e=0,t=this.scopes.length;e0&&--this._on===0&&(F=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){this._active=!1;let t,n;for(t=0,n=this.effects.length;t0)return;if(Je){let e=Je;for(Je=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;for(;qe;){let t=qe;for(qe=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(t){e||=t}t=n}}if(e)throw e}function Qe(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function $e(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;r.version===-1?(r===n&&(n=e),nt(r),rt(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function et(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(tt(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function tt(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===dt)||(e.globalVersion=dt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!et(e))))return;e.flags|=2;let t=e.dep,n=I,r=ot;I=e,ot=!0;try{Qe(e);let n=e.fn(e._value);(t.version===0||P(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{I=n,ot=r,$e(e),e.flags&=-3}}function nt(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)nt(e,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function rt(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}function it(e,t){e.effect instanceof Ge&&(e=e.effect.fn);let n=new Ge(e);t&&S(n,t);try{n.run()}catch(e){throw n.stop(),e}let r=n.run.bind(n);return r.effect=n,r}function at(e){e.effect.stop()}var ot=!0,st=[];function ct(){st.push(ot),ot=!1}function lt(){let e=st.pop();ot=e===void 0?!0:e}function ut(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=I;I=void 0;try{t()}finally{I=e}}}var dt=0,ft=class{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},pt=class{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!I||!ot||I===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==I)t=this.activeLink=new ft(I,this),I.deps?(t.prevDep=I.depsTail,I.depsTail.nextDep=t,I.depsTail=t):I.deps=I.depsTail=t,mt(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=I.depsTail,t.nextDep=void 0,I.depsTail.nextDep=t,I.depsTail=t,I.deps===t&&(I.deps=e)}return t}trigger(e){this.version++,dt++,this.notify(e)}notify(e){Xe();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{Ze()}}};function mt(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)mt(e)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var ht=new WeakMap,gt=Symbol(``),_t=Symbol(``),vt=Symbol(``);function L(e,t,n){if(ot&&I){let t=ht.get(e);t||ht.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new pt),r.map=t,r.key=n),r.track()}}function yt(e,t,n,r,i,a){let o=ht.get(e);if(!o){dt++;return}let s=e=>{e&&e.trigger()};if(Xe(),t===`clear`)o.forEach(s);else{let i=E(e),a=i&&ce(n);if(i&&n===`length`){let e=Number(r);o.forEach((t,n)=>{(n===`length`||n===vt||!re(n)&&n>=e)&&s(t)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),a&&s(o.get(vt)),t){case`add`:i?a&&s(o.get(`length`)):(s(o.get(gt)),D(e)&&s(o.get(_t)));break;case`delete`:i||(s(o.get(gt)),D(e)&&s(o.get(_t)));break;case`set`:D(e)&&s(o.get(gt));break}}Ze()}function bt(e,t){let n=ht.get(e);return n&&n.get(t)}function xt(e){let t=z(e);return t===e?t:(L(t,`iterate`,vt),R(e)?t:t.map(pn))}function St(e){return L(e=z(e),`iterate`,vt),e}function Ct(e,t){return un(e)?ln(e)?mn(pn(t)):mn(t):pn(t)}var wt={__proto__:null,[Symbol.iterator](){return Tt(this,Symbol.iterator,e=>Ct(this,e))},concat(...e){return xt(this).concat(...e.map(e=>E(e)?xt(e):e))},entries(){return Tt(this,`entries`,e=>(e[1]=Ct(this,e[1]),e))},every(e,t){return Dt(this,`every`,e,t,void 0,arguments)},filter(e,t){return Dt(this,`filter`,e,t,e=>e.map(e=>Ct(this,e)),arguments)},find(e,t){return Dt(this,`find`,e,t,e=>Ct(this,e),arguments)},findIndex(e,t){return Dt(this,`findIndex`,e,t,void 0,arguments)},findLast(e,t){return Dt(this,`findLast`,e,t,e=>Ct(this,e),arguments)},findLastIndex(e,t){return Dt(this,`findLastIndex`,e,t,void 0,arguments)},forEach(e,t){return Dt(this,`forEach`,e,t,void 0,arguments)},includes(...e){return kt(this,`includes`,e)},indexOf(...e){return kt(this,`indexOf`,e)},join(e){return xt(this).join(e)},lastIndexOf(...e){return kt(this,`lastIndexOf`,e)},map(e,t){return Dt(this,`map`,e,t,void 0,arguments)},pop(){return At(this,`pop`)},push(...e){return At(this,`push`,e)},reduce(e,...t){return Ot(this,`reduce`,e,t)},reduceRight(e,...t){return Ot(this,`reduceRight`,e,t)},shift(){return At(this,`shift`)},some(e,t){return Dt(this,`some`,e,t,void 0,arguments)},splice(...e){return At(this,`splice`,e)},toReversed(){return xt(this).toReversed()},toSorted(e){return xt(this).toSorted(e)},toSpliced(...e){return xt(this).toSpliced(...e)},unshift(...e){return At(this,`unshift`,e)},values(){return Tt(this,`values`,e=>Ct(this,e))}};function Tt(e,t,n){let r=St(e),i=r[t]();return r!==e&&!R(e)&&(i._next=i.next,i.next=()=>{let e=i._next();return e.done||(e.value=n(e.value)),e}),i}var Et=Array.prototype;function Dt(e,t,n,r,i,a){let o=St(e),s=o!==e&&!R(e),c=o[t];if(c!==Et[t]){let t=c.apply(e,a);return s?pn(t):t}let l=n;o!==e&&(s?l=function(t,r){return n.call(this,Ct(e,t),r,e)}:n.length>2&&(l=function(t,r){return n.call(this,t,r,e)}));let u=c.call(o,l,r);return s&&i?i(u):u}function Ot(e,t,n,r){let i=St(e),a=n;return i!==e&&(R(e)?n.length>3&&(a=function(t,r,i){return n.call(this,t,r,i,e)}):a=function(t,r,i){return n.call(this,t,Ct(e,r),i,e)}),i[t](a,...r)}function kt(e,t,n){let r=z(e);L(r,`iterate`,vt);let i=r[t](...n);return(i===-1||i===!1)&&dn(n[0])?(n[0]=z(n[0]),r[t](...n)):i}function At(e,t,n=[]){ct(),Xe();let r=z(e)[t].apply(e,n);return Ze(),lt(),r}var jt=h(`__proto__,__v_isRef,__isVue`),Mt=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==`arguments`&&e!==`caller`).map(e=>Symbol[e]).filter(re));function Nt(e){re(e)||(e=String(e));let t=z(this);return L(t,`has`,e),t.hasOwnProperty(e)}var Pt=class{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if(t===`__v_isReactive`)return!r;if(t===`__v_isReadonly`)return r;if(t===`__v_isShallow`)return i;if(t===`__v_raw`)return n===(r?i?en:$t:i?Qt:Zt).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let a=E(e);if(!r){let e;if(a&&(e=wt[t]))return e;if(t===`hasOwnProperty`)return Nt}let o=Reflect.get(e,t,B(e)?e:n);if((re(t)?Mt.has(t):jt(t))||(r||L(e,`get`,t),i))return o;if(B(o)){let e=a&&ce(t)?o:o.value;return r&&A(e)?on(e):e}return A(o)?r?on(o):rn(o):o}},Ft=class extends Pt{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],a=E(e)&&ce(t);if(!this._isShallow){let e=un(i);if(!R(n)&&!un(n)&&(i=z(i),n=z(n)),!a&&B(i)&&!B(n))return e||(i.value=n),!0}let o=a?Number(t)e,Ht=e=>Reflect.getPrototypeOf(e);function Ut(e,t,n){return function(...r){let i=this.__v_raw,a=z(i),o=D(a),s=e===`entries`||e===Symbol.iterator&&o,c=e===`keys`&&o,l=i[e](...r),u=n?Vt:t?mn:pn;return!t&&L(a,`iterate`,c?_t:gt),{next(){let{value:e,done:t}=l.next();return t?{value:e,done:t}:{value:s?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function Wt(e){return function(...t){return e===`delete`?!1:e===`clear`?void 0:this}}function Gt(e,t){let n={get(n){let r=this.__v_raw,i=z(r),a=z(n);e||(P(n,a)&&L(i,`get`,n),L(i,`get`,a));let{has:o}=Ht(i),s=t?Vt:e?mn:pn;if(o.call(i,n))return s(r.get(n));if(o.call(i,a))return s(r.get(a));r!==i&&r.get(n)},get size(){let t=this.__v_raw;return!e&&L(z(t),`iterate`,gt),t.size},has(t){let n=this.__v_raw,r=z(n),i=z(t);return e||(P(t,i)&&L(r,`has`,t),L(r,`has`,i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,a=i.__v_raw,o=z(a),s=t?Vt:e?mn:pn;return!e&&L(o,`iterate`,gt),a.forEach((e,t)=>n.call(r,s(e),s(t),i))}};return S(n,e?{add:Wt(`add`),set:Wt(`set`),delete:Wt(`delete`),clear:Wt(`clear`)}:{add(e){!t&&!R(e)&&!un(e)&&(e=z(e));let n=z(this);return Ht(n).has.call(n,e)||(n.add(e),yt(n,`add`,e,e)),this},set(e,n){!t&&!R(n)&&!un(n)&&(n=z(n));let r=z(this),{has:i,get:a}=Ht(r),o=i.call(r,e);o||=(e=z(e),i.call(r,e));let s=a.call(r,e);return r.set(e,n),o?P(n,s)&&yt(r,`set`,e,n,s):yt(r,`add`,e,n),this},delete(e){let t=z(this),{has:n,get:r}=Ht(t),i=n.call(t,e);i||=(e=z(e),n.call(t,e));let a=r?r.call(t,e):void 0,o=t.delete(e);return i&&yt(t,`delete`,e,void 0,a),o},clear(){let e=z(this),t=e.size!==0,n=e.clear();return t&&yt(e,`clear`,void 0,void 0,void 0),n}}),[`keys`,`values`,`entries`,Symbol.iterator].forEach(r=>{n[r]=Ut(r,e,t)}),n}function Kt(e,t){let n=Gt(e,t);return(t,r,i)=>r===`__v_isReactive`?!e:r===`__v_isReadonly`?e:r===`__v_raw`?t:Reflect.get(T(n,r)&&r in t?n:t,r,i)}var qt={get:Kt(!1,!1)},Jt={get:Kt(!1,!0)},Yt={get:Kt(!0,!1)},Xt={get:Kt(!0,!0)},Zt=new WeakMap,Qt=new WeakMap,$t=new WeakMap,en=new WeakMap;function tn(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:case`Set`:case`WeakMap`:case`WeakSet`:return 2;default:return 0}}function nn(e){return e.__v_skip||!Object.isExtensible(e)?0:tn(oe(e))}function rn(e){return un(e)?e:cn(e,!1,Lt,qt,Zt)}function an(e){return cn(e,!1,zt,Jt,Qt)}function on(e){return cn(e,!0,Rt,Yt,$t)}function sn(e){return cn(e,!0,Bt,Xt,en)}function cn(e,t,n,r,i){if(!A(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;let a=nn(e);if(a===0)return e;let o=i.get(e);if(o)return o;let s=new Proxy(e,a===2?r:n);return i.set(e,s),s}function ln(e){return un(e)?ln(e.__v_raw):!!(e&&e.__v_isReactive)}function un(e){return!!(e&&e.__v_isReadonly)}function R(e){return!!(e&&e.__v_isShallow)}function dn(e){return e?!!e.__v_raw:!1}function z(e){let t=e&&e.__v_raw;return t?z(t):e}function fn(e){return!T(e,`__v_skip`)&&Object.isExtensible(e)&&ge(e,`__v_skip`,!0),e}var pn=e=>A(e)?rn(e):e,mn=e=>A(e)?on(e):e;function B(e){return e?e.__v_isRef===!0:!1}function hn(e){return _n(e,!1)}function gn(e){return _n(e,!0)}function _n(e,t){return B(e)?e:new vn(e,t)}var vn=class{constructor(e,t){this.dep=new pt,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:z(e),this._value=t?e:pn(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||R(e)||un(e);e=n?e:z(e),P(e,t)&&(this._rawValue=e,this._value=n?e:pn(e),this.dep.trigger())}};function yn(e){e.dep&&e.dep.trigger()}function bn(e){return B(e)?e.value:e}function xn(e){return O(e)?e():bn(e)}var Sn={get:(e,t,n)=>t===`__v_raw`?e:bn(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return B(i)&&!B(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function Cn(e){return ln(e)?e:new Proxy(e,Sn)}var wn=class{constructor(e){this.__v_isRef=!0,this._value=void 0;let t=this.dep=new pt,{get:n,set:r}=e(t.track.bind(t),t.trigger.bind(t));this._get=n,this._set=r}get value(){return this._value=this._get()}set value(e){this._set(e)}};function Tn(e){return new wn(e)}function En(e){let t=E(e)?Array(e.length):{};for(let n in e)t[n]=An(e,n);return t}var Dn=class{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0,this._raw=z(e);let r=!0,i=e;if(!E(e)||!ce(String(t)))do r=!dn(i)||R(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let e=this._object[this._key];return this._shallow&&(e=bn(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&B(this._raw[this._key])){let t=this._object[this._key];if(B(t)){t.value=e;return}}this._object[this._key]=e}get dep(){return bt(this._raw,this._key)}},On=class{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}};function kn(e,t,n){return B(e)?e:O(e)?new On(e):A(e)&&arguments.length>1?An(e,t,n):hn(e)}function An(e,t,n){return new Dn(e,t,n)}var jn=class{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new pt(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=dt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&I!==this)return Ye(this,!0),!0}get value(){let e=this.dep.track();return tt(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}};function Mn(e,t,n=!1){let r,i;return O(e)?r=e:(r=e.get,i=e.set),new jn(r,i,n)}var Nn={GET:`get`,HAS:`has`,ITERATE:`iterate`},Pn={SET:`set`,ADD:`add`,DELETE:`delete`,CLEAR:`clear`},Fn={},In=new WeakMap,Ln=void 0;function Rn(){return Ln}function zn(e,t=!1,n=Ln){if(n){let t=In.get(n);t||In.set(n,t=[]),t.push(e)}}function Bn(e,t,n=g){let{immediate:r,deep:i,once:a,scheduler:o,augmentJob:s,call:c}=n,l=e=>i?e:R(e)||i===!1||i===0?Vn(e,1):Vn(e),u,d,f,p,m=!1,h=!1;if(B(e)?(d=()=>e.value,m=R(e)):ln(e)?(d=()=>l(e),m=!0):E(e)?(h=!0,m=e.some(e=>ln(e)||R(e)),d=()=>e.map(e=>{if(B(e))return e.value;if(ln(e))return l(e);if(O(e))return c?c(e,2):e()})):d=O(e)?t?c?()=>c(e,2):e:()=>{if(f){ct();try{f()}finally{lt()}}let t=Ln;Ln=u;try{return c?c(e,3,[p]):e(p)}finally{Ln=t}}:v,t&&i){let e=d,t=i===!0?1/0:i;d=()=>Vn(e(),t)}let _=He(),y=()=>{u.stop(),_&&_.active&&C(_.effects,u)};if(a&&t){let e=t;t=(...t)=>{e(...t),y()}}let b=h?Array(e.length).fill(Fn):Fn,x=e=>{if(!(!(u.flags&1)||!u.dirty&&!e))if(t){let e=u.run();if(i||m||(h?e.some((e,t)=>P(e,b[t])):P(e,b))){f&&f();let n=Ln;Ln=u;try{let n=[e,b===Fn?void 0:h&&b[0]===Fn?[]:b,p];b=e,c?c(t,3,n):t(...n)}finally{Ln=n}}}else u.run()};return s&&s(x),u=new Ge(d),u.scheduler=o?()=>o(x,!1):x,p=e=>zn(e,!1,u),f=u.onStop=()=>{let e=In.get(u);if(e){if(c)c(e,4);else for(let t of e)t();In.delete(u)}},t?r?x(!0):b=u.run():o?o(x.bind(null,!0),!0):u.run(),y.pause=u.pause.bind(u),y.resume=u.resume.bind(u),y.stop=y,y}function Vn(e,t=1/0,n){if(t<=0||!A(e)||e.__v_skip||(n||=new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,B(e))Vn(e.value,t,n);else if(E(e))for(let r=0;r{Vn(e,t,n)});else if(se(e)){for(let r in e)Vn(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Vn(e[r],t,n)}return e}var Hn=[];function Un(e){Hn.push(e)}function Wn(){Hn.pop()}function Gn(e,t){}var Kn={SETUP_FUNCTION:0,0:`SETUP_FUNCTION`,RENDER_FUNCTION:1,1:`RENDER_FUNCTION`,NATIVE_EVENT_HANDLER:5,5:`NATIVE_EVENT_HANDLER`,COMPONENT_EVENT_HANDLER:6,6:`COMPONENT_EVENT_HANDLER`,VNODE_HOOK:7,7:`VNODE_HOOK`,DIRECTIVE_HOOK:8,8:`DIRECTIVE_HOOK`,TRANSITION_HOOK:9,9:`TRANSITION_HOOK`,APP_ERROR_HANDLER:10,10:`APP_ERROR_HANDLER`,APP_WARN_HANDLER:11,11:`APP_WARN_HANDLER`,FUNCTION_REF:12,12:`FUNCTION_REF`,ASYNC_COMPONENT_LOADER:13,13:`ASYNC_COMPONENT_LOADER`,SCHEDULER:14,14:`SCHEDULER`,COMPONENT_UPDATE:15,15:`COMPONENT_UPDATE`,APP_UNMOUNT_CLEANUP:16,16:`APP_UNMOUNT_CLEANUP`},qn={sp:`serverPrefetch hook`,bc:`beforeCreate hook`,c:`created hook`,bm:`beforeMount hook`,m:`mounted hook`,bu:`beforeUpdate hook`,u:`updated`,bum:`beforeUnmount hook`,um:`unmounted hook`,a:`activated hook`,da:`deactivated hook`,ec:`errorCaptured hook`,rtc:`renderTracked hook`,rtg:`renderTriggered hook`,0:`setup function`,1:`render function`,2:`watcher getter`,3:`watcher callback`,4:`watcher cleanup function`,5:`native event handler`,6:`component event handler`,7:`vnode hook`,8:`directive hook`,9:`transition hook`,10:`app errorHandler`,11:`app warnHandler`,12:`ref function`,13:`async component loader`,14:`scheduler flush`,15:`component update`,16:`app unmount cleanup function`};function Jn(e,t,n,r){try{return r?e(...r):e()}catch(e){Xn(e,t,n)}}function Yn(e,t,n,r){if(O(e)){let i=Jn(e,t,n,r);return i&&j(i)&&i.catch(e=>{Xn(e,t,n)}),i}if(E(e)){let i=[];for(let a=0;a>>1,i=V[r],a=dr(i);a=dr(n)?V.push(e):V.splice(ar(t),0,e),e.flags|=1,sr()}}function sr(){rr||=nr.then(fr)}function cr(e){E(e)?$n.push(...e):er&&e.id===-1?er.splice(tr+1,0,e):e.flags&1||($n.push(e),e.flags|=1),sr()}function lr(e,t,n=Qn+1){for(;ndr(e)-dr(t));if($n.length=0,er){er.push(...e);return}for(er=e,tr=0;tre.id==null?e.flags&2?-1:1/0:e.id;function fr(e){try{for(Qn=0;Qnpr.emit(e,...t)),mr=[]):typeof window<`u`&&window.HTMLElement&&!(window.navigator?.userAgent)?.includes(`jsdom`)?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(e=>{hr(e,t)}),setTimeout(()=>{pr||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,mr=[])},3e3)):mr=[]}var H=null,gr=null;function _r(e){let t=H;return H=e,gr=e&&e.type.__scopeId||null,t}function vr(e){gr=e}function yr(){gr=null}var br=e=>xr;function xr(e,t=H,n){if(!t||e._n)return e;let r=(...n)=>{r._d&&ls(-1);let i=_r(t),a;try{a=e(...n)}finally{_r(i),r._d&&ls(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function Sr(e,t){if(H===null)return e;let n=qs(H),r=e.dirs||=[];for(let e=0;ee.__isTeleport,Er=e=>e&&(e.disabled||e.disabled===``),Dr=e=>e&&(e.defer||e.defer===``),Or=e=>typeof SVGElement<`u`&&e instanceof SVGElement,kr=e=>typeof MathMLElement==`function`&&e instanceof MathMLElement,Ar=(e,t)=>{let n=e&&e.to;return k(n)?t?t(n):null:n},jr={name:`Teleport`,__isTeleport:!0,process(e,t,n,r,i,a,o,s,c,l){let{mc:u,pc:d,pbc:f,o:{insert:p,querySelector:m,createText:h,createComment:g}}=l,_=Er(t.props),{shapeFlag:v,children:y,dynamicChildren:b}=t;if(e==null){let e=t.el=h(``),l=t.anchor=h(``);p(e,n,r),p(l,n,r);let d=(e,t)=>{v&16&&u(y,e,t,i,a,o,s,c)},f=()=>{let e=t.target=Ar(t.props,m),n=Ir(e,t,h,p);e&&(o!==`svg`&&Or(e)?o=`svg`:o!==`mathml`&&kr(e)&&(o=`mathml`),i&&i.isCE&&(i.ce._teleportTargets||(i.ce._teleportTargets=new Set)).add(e),_||(d(e,n),Fr(t,!1)))};_&&(d(n,l),Fr(t,!0)),Dr(t.props)?(t.el.__isMounted=!1,W(()=>{f(),delete t.el.__isMounted},a)):f()}else{if(Dr(t.props)&&e.el.__isMounted===!1){W(()=>{jr.process(e,t,n,r,i,a,o,s,c,l)},a);return}t.el=e.el,t.targetStart=e.targetStart;let u=t.anchor=e.anchor,p=t.target=e.target,h=t.targetAnchor=e.targetAnchor,g=Er(e.props),v=g?n:p,y=g?u:h;if(o===`svg`||Or(p)?o=`svg`:(o===`mathml`||kr(p))&&(o=`mathml`),b?(f(e.dynamicChildren,b,v,i,a,o,s),Bo(e,t,!0)):c||d(e,t,v,y,i,a,o,s,!1),_)g?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Mr(t,n,u,l,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){let e=t.target=Ar(t.props,m);e&&Mr(t,e,null,l,0)}else g&&Mr(t,p,h,l,1);Fr(t,_)}},remove(e,t,n,{um:r,o:{remove:i}},a){let{shapeFlag:o,children:s,anchor:c,targetStart:l,targetAnchor:u,target:d,props:f}=e;if(d&&(i(l),i(u)),a&&i(c),o&16){let e=a||!Er(f);for(let i=0;i{e.isMounted=!0}),Vi(()=>{e.isUnmounting=!0}),e}var Br=[Function,Array],Vr={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Br,onEnter:Br,onAfterEnter:Br,onEnterCancelled:Br,onBeforeLeave:Br,onLeave:Br,onAfterLeave:Br,onLeaveCancelled:Br,onBeforeAppear:Br,onAppear:Br,onAfterAppear:Br,onAppearCancelled:Br},Hr=e=>{let t=e.subTree;return t.component?Hr(t.component):t},Ur={name:`BaseTransition`,props:Vr,setup(e,{slots:t}){let n=Q(),r=zr();return()=>{let i=t.default&&Zr(t.default(),!0);if(!i||!i.length)return;let a=Wr(i),o=z(e),{mode:s}=o;if(r.isLeaving)return Jr(a);let c=Yr(a);if(!c)return Jr(a);let l=qr(c,o,r,n,e=>l=e);c.type!==K&&Xr(c,l);let u=n.subTree&&Yr(n.subTree);if(u&&u.type!==K&&!ms(u,c)&&Hr(n).type!==K){let e=qr(u,o,r,n);if(Xr(u,e),s===`out-in`&&c.type!==K)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete e.afterLeave,u=void 0},Jr(a);s===`in-out`&&c.type!==K?e.delayLeave=(e,t,n)=>{let i=Kr(r,u);i[String(u.key)]=u,e[Lr]=()=>{t(),e[Lr]=void 0,delete l.delayedLeave,u=void 0},l.delayedLeave=()=>{n(),delete l.delayedLeave,u=void 0}}:u=void 0}else u&&=void 0;return a}}};function Wr(e){let t=e[0];if(e.length>1){for(let n of e)if(n.type!==K){t=n;break}}return t}var Gr=Ur;function Kr(e,t){let{leavingVNodes:n}=e,r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function qr(e,t,n,r,i){let{appear:a,mode:o,persisted:s=!1,onBeforeEnter:c,onEnter:l,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:f,onLeave:p,onAfterLeave:m,onLeaveCancelled:h,onBeforeAppear:g,onAppear:_,onAfterAppear:v,onAppearCancelled:y}=t,b=String(e.key),x=Kr(n,e),S=(e,t)=>{e&&Yn(e,r,9,t)},C=(e,t)=>{let n=t[1];S(e,t),E(e)?e.every(e=>e.length<=1)&&n():e.length<=1&&n()},w={mode:o,persisted:s,beforeEnter(t){let r=c;if(!n.isMounted)if(a)r=g||c;else return;t[Lr]&&t[Lr](!0);let i=x[b];i&&ms(e,i)&&i.el[Lr]&&i.el[Lr](),S(r,[t])},enter(e){let t=l,r=u,i=d;if(!n.isMounted)if(a)t=_||l,r=v||u,i=y||d;else return;let o=!1,s=e[Rr]=t=>{o||(o=!0,S(t?i:r,[e]),w.delayedLeave&&w.delayedLeave(),e[Rr]=void 0)};t?C(t,[e,s]):s()},leave(t,r){let i=String(e.key);if(t[Rr]&&t[Rr](!0),n.isUnmounting)return r();S(f,[t]);let a=!1,o=t[Lr]=n=>{a||(a=!0,r(),S(n?h:m,[t]),t[Lr]=void 0,x[i]===e&&delete x[i])};x[i]=e,p?C(p,[t,o]):o()},clone(e){let a=qr(e,t,n,r,i);return i&&i(a),a}};return w}function Jr(e){if(Ei(e))return e=xs(e),e.children=null,e}function Yr(e){if(!Ei(e))return Tr(e.type)&&e.children?Wr(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&O(n.default))return n.default()}}function Xr(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Xr(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 Zr(e,t=!1,n){let r=[],i=0;for(let a=0;a1)for(let e=0;eS({name:e.name},t,{setup:e}))():e}function $r(){let e=Q();return e?(e.appContext.config.idPrefix||`v`)+`-`+e.ids[0]+ e.ids[1]++:``}function ei(e){e.ids=[e.ids[0]+ e.ids[2]+++`-`,0,0]}function ti(e){let t=Q(),n=gn(null);if(t){let r=t.refs===g?t.refs={}:t.refs;Object.defineProperty(r,e,{enumerable:!0,get:()=>n.value,set:e=>n.value=e})}return n}var ni=new WeakMap;function ri(e,t,n,r,i=!1){if(E(e)){e.forEach((e,a)=>ri(e,t&&(E(t)?t[a]:t),n,r,i));return}if(Ci(r)&&!i){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&ri(e,t,n,r.component.subTree);return}let a=r.shapeFlag&4?qs(r.component):r.el,o=i?null:a,{i:s,r:c}=e,l=t&&t.r,u=s.refs===g?s.refs={}:s.refs,d=s.setupState,f=z(d),p=d===g?y:e=>T(f,e),m=e=>!0;if(l!=null&&l!==c){if(ii(t),k(l))u[l]=null,p(l)&&(d[l]=null);else if(B(l)){m(l)&&(l.value=null);let e=t;e.k&&(u[e.k]=null)}}if(O(c))Jn(c,s,12,[o,u]);else{let t=k(c),r=B(c);if(t||r){let s=()=>{if(e.f){let n=t?p(c)?d[c]:u[c]:m(c)||!e.k?c.value:u[e.k];if(i)E(n)&&C(n,a);else if(E(n))n.includes(a)||n.push(a);else if(t)u[c]=[a],p(c)&&(d[c]=u[c]);else{let t=[a];m(c)&&(c.value=t),e.k&&(u[e.k]=t)}}else t?(u[c]=o,p(c)&&(d[c]=o)):r&&(m(c)&&(c.value=o),e.k&&(u[e.k]=o))};if(o){let t=()=>{s(),ni.delete(e)};t.id=-1,ni.set(e,t),W(t,n)}else ii(e),s()}}}function ii(e){let t=ni.get(e);t&&(t.flags|=8,ni.delete(e))}var ai=!1,oi=()=>{ai||=(console.error(`Hydration completed but contains mismatches.`),!0)},si=e=>e.namespaceURI.includes(`svg`)&&e.tagName!==`foreignObject`,ci=e=>e.namespaceURI.includes(`MathML`),li=e=>{if(e.nodeType===1){if(si(e))return`svg`;if(ci(e))return`mathml`}},ui=e=>e.nodeType===8;function di(e){let{mt:t,p:n,o:{patchProp:r,createText:i,nextSibling:a,parentNode:o,remove:s,insert:c,createComment:l}}=e,u=(e,t)=>{if(!t.hasChildNodes()){n(null,e,t),ur(),t._vnode=e;return}d(t.firstChild,e,null,null,null),ur(),t._vnode=e},d=(n,r,s,l,u,y=!1)=>{y||=!!r.dynamicChildren;let b=ui(n)&&n.data===`[`,x=()=>h(n,r,s,l,u,b),{type:S,ref:C,shapeFlag:w,patchFlag:T}=r,E=n.nodeType;r.el=n,T===-2&&(y=!1,r.dynamicChildren=null);let D=null;switch(S){case rs:E===3?(n.data!==r.children&&(oi(),n.data=r.children),D=a(n)):r.children===``?(c(r.el=i(``),o(n),n),D=n):D=x();break;case K:v(n)?(D=a(n),_(r.el=n.content.firstChild,n,s)):D=E!==8||b?x():a(n);break;case is:if(b&&(n=a(n),E=n.nodeType),E===1||E===3){D=n;let e=!r.children.length;for(let t=0;t{o||=!!t.dynamicChildren;let{type:c,props:l,patchFlag:u,shapeFlag:d,dirs:f,transition:m}=t,h=c===`input`||c===`option`;if(h||u!==-1){f&&Cr(t,null,n,`created`);let c=!1;if(v(e)){c=zo(null,m)&&n&&n.vnode.props&&n.vnode.props.appear;let r=e.content.firstChild;if(c){let e=r.getAttribute(`class`);e&&(r.$cls=e),m.beforeEnter(r)}_(r,e,n),t.el=e=r}if(d&16&&!(l&&(l.innerHTML||l.textContent))){let r=p(e.firstChild,t,e,n,i,a,o);for(;r;){mi(e,1)||oi();let t=r;r=r.nextSibling,s(t)}}else if(d&8){let n=t.children;n[0]===` +`&&(e.tagName===`PRE`||e.tagName===`TEXTAREA`)&&(n=n.slice(1));let{textContent:r}=e;r!==n&&r!==n.replace(/\r\n|\r/g,` +`)&&(mi(e,0)||oi(),e.textContent=t.children)}if(l){if(h||!o||u&48){let t=e.tagName.includes(`-`);for(let i in l)(h&&(i.endsWith(`value`)||i===`indeterminate`)||b(i)&&!le(i)||i[0]===`.`||t)&&r(e,i,null,l[i],void 0,n)}else if(l.onClick)r(e,`onClick`,null,l.onClick,void 0,n);else if(u&4&&ln(l.style))for(let e in l.style)l.style[e]}let g;(g=l&&l.onVnodeBeforeMount)&&X(g,n,t),f&&Cr(t,null,n,`beforeMount`),((g=l&&l.onVnodeMounted)||f||c)&&es(()=>{g&&X(g,n,t),c&&m.enter(e),f&&Cr(t,null,n,`mounted`)},i)}return e.nextSibling},p=(e,t,r,o,s,l,u)=>{u||=!!t.dynamicChildren;let f=t.children,p=f.length;for(let t=0;t{let{slotScopeIds:u}=t;u&&(i=i?i.concat(u):u);let d=o(e),f=p(a(e),t,d,n,r,i,s);return f&&ui(f)&&f.data===`]`?a(t.anchor=f):(oi(),c(t.anchor=l(`]`),d,f),f)},h=(e,t,r,i,c,l)=>{if(mi(e.parentElement,1)||oi(),t.el=null,l){let t=g(e);for(;;){let n=a(e);if(n&&n!==t)s(n);else break}}let u=a(e),d=o(e);return s(e),n(null,t,d,u,r,i,li(d),c),r&&(r.vnode.el=t.el,ho(r,t.el)),u},g=(e,t=`[`,n=`]`)=>{let r=0;for(;e;)if(e=a(e),e&&ui(e)&&(e.data===t&&r++,e.data===n)){if(r===0)return a(e);r--}return e},_=(e,t,n)=>{let r=t.parentNode;r&&r.replaceChild(e,t);let i=n;for(;i;)i.vnode.el===t&&(i.vnode.el=i.subTree.el=e),i=i.parent},v=e=>e.nodeType===1&&e.tagName===`TEMPLATE`;return[u,d]}var fi=`data-allow-mismatch`,pi={0:`text`,1:`children`,2:`class`,3:`style`,4:`attribute`};function mi(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(fi);)e=e.parentElement;let n=e&&e.getAttribute(fi);if(n==null)return!1;if(n===``)return!0;{let e=n.split(`,`);return t===0&&e.includes(`children`)?!0:e.includes(pi[t])}}var hi=be().requestIdleCallback||(e=>setTimeout(e,1)),gi=be().cancelIdleCallback||(e=>clearTimeout(e)),_i=(e=1e4)=>t=>{let n=hi(t,{timeout:e});return()=>gi(n)};function vi(e){let{top:t,left:n,bottom:r,right:i}=e.getBoundingClientRect(),{innerHeight:a,innerWidth:o}=window;return(t>0&&t0&&r0&&n0&&i(t,n)=>{let r=new IntersectionObserver(e=>{for(let n of e)if(n.isIntersecting){r.disconnect(),t();break}},e);return n(e=>{if(e instanceof Element){if(vi(e))return t(),r.disconnect(),!1;r.observe(e)}}),()=>r.disconnect()},bi=e=>t=>{if(e){let n=matchMedia(e);if(n.matches)t();else return n.addEventListener(`change`,t,{once:!0}),()=>n.removeEventListener(`change`,t)}},xi=(e=[])=>(t,n)=>{k(e)&&(e=[e]);let r=!1,i=e=>{r||(r=!0,a(),t(),e.target.dispatchEvent(new e.constructor(e.type,e)))},a=()=>{n(t=>{for(let n of e)t.removeEventListener(n,i)})};return n(t=>{for(let n of e)t.addEventListener(n,i,{once:!0})}),a};function Si(e,t){if(ui(e)&&e.data===`[`){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(ui(r))if(r.data===`]`){if(--n===0)break}else r.data===`[`&&n++;r=r.nextSibling}}else t(e)}var Ci=e=>!!e.type.__asyncLoader;function wi(e){O(e)&&(e={loader:e});let{loader:t,loadingComponent:n,errorComponent:r,delay:i=200,hydrate:a,timeout:o,suspensible:s=!0,onError:c}=e,l=null,u,d=0,f=()=>(d++,l=null,p()),p=()=>{let e;return l||(e=l=t().catch(e=>{if(e=e instanceof Error?e:Error(String(e)),c)return new Promise((t,n)=>{c(e,()=>t(f()),()=>n(e),d+1)});throw e}).then(t=>e!==l&&l?l:(t&&(t.__esModule||t[Symbol.toStringTag]===`Module`)&&(t=t.default),u=t,t)))};return Qr({name:`AsyncComponentWrapper`,__asyncLoader:p,__asyncHydrate(e,t,n){let r=!1;(t.bu||=[]).push(()=>r=!0);let i=()=>{r||n()},o=a?()=>{let n=a(i,t=>Si(e,t));n&&(t.bum||=[]).push(n)}:i;u?o():p().then(()=>!t.isUnmounted&&o())},get __asyncResolved(){return u},setup(){let e=Z;if(ei(e),u)return()=>Ti(u,e);let t=t=>{l=null,Xn(t,e,13,!r)};if(s&&e.suspense||Is)return p().then(t=>()=>Ti(t,e)).catch(e=>(t(e),()=>r?J(r,{error:e}):null));let a=hn(!1),c=hn(),d=hn(!!i);return i&&setTimeout(()=>{d.value=!1},i),o!=null&&setTimeout(()=>{if(!a.value&&!c.value){let e=Error(`Async component timed out after ${o}ms.`);t(e),c.value=e}},o),p().then(()=>{a.value=!0,e.parent&&Ei(e.parent.vnode)&&e.parent.update()}).catch(e=>{t(e),c.value=e}),()=>{if(a.value&&u)return Ti(u,e);if(c.value&&r)return J(r,{error:c.value});if(n&&!d.value)return Ti(n,e)}}})}function Ti(e,t){let{ref:n,props:r,children:i,ce:a}=t.vnode,o=J(e,r,i);return o.ref=n,o.ce=a,delete t.vnode.ce,o}var Ei=e=>e.type.__isKeepAlive,Di={name:`KeepAlive`,__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){let n=Q(),r=n.ctx;if(!r.renderer)return()=>{let e=t.default&&t.default();return e&&e.length===1?e[0]:e};let i=new Map,a=new Set,o=null,s=n.suspense,{renderer:{p:c,m:l,um:u,o:{createElement:d}}}=r,f=d(`div`);r.activate=(e,t,n,r,i)=>{let a=e.component;l(e,t,n,0,s),c(a.vnode,e,t,n,a,s,r,e.slotScopeIds,i),W(()=>{a.isDeactivated=!1,a.a&&he(a.a);let t=e.props&&e.props.onVnodeMounted;t&&X(t,a.parent,e)},s)},r.deactivate=e=>{let t=e.component;Uo(t.m),Uo(t.a),l(e,f,null,1,s),W(()=>{t.da&&he(t.da);let n=e.props&&e.props.onVnodeUnmounted;n&&X(n,t.parent,e),t.isDeactivated=!0},s)};function p(e){Ni(e),u(e,n,s,!0)}function m(e){i.forEach((t,n)=>{let r=Js(t.type);r&&!e(r)&&h(n)})}function h(e){let t=i.get(e);t&&(!o||!ms(t,o))?p(t):o&&Ni(o),i.delete(e),a.delete(e)}Qa(()=>[e.include,e.exclude],([e,t])=>{e&&m(t=>Oi(e,t)),t&&m(e=>!Oi(t,e))},{flush:`post`,deep:!0});let g=null,_=()=>{g!=null&&(Wo(n.subTree.type)?W(()=>{i.set(g,Pi(n.subTree))},n.subTree.suspense):i.set(g,Pi(n.subTree)))};return Ri(_),Bi(_),Vi(()=>{i.forEach(e=>{let{subTree:t,suspense:r}=n,i=Pi(t);if(e.type===i.type&&e.key===i.key){Ni(i);let e=i.component.da;e&&W(e,r);return}p(e)})}),()=>{if(g=null,!t.default)return o=null;let n=t.default(),r=n[0];if(n.length>1)return o=null,n;if(!ps(r)||!(r.shapeFlag&4)&&!(r.shapeFlag&128))return o=null,r;let s=Pi(r);if(s.type===K)return o=null,s;let c=s.type,l=Js(Ci(s)?s.type.__asyncResolved||{}:c),{include:u,exclude:d,max:f}=e;if(u&&(!l||!Oi(u,l))||d&&l&&Oi(d,l))return s.shapeFlag&=-257,o=s,r;let p=s.key==null?c:s.key,m=i.get(p);return s.el&&(s=xs(s),r.shapeFlag&128&&(r.ssContent=s)),g=p,m?(s.el=m.el,s.component=m.component,s.transition&&Xr(s,s.transition),s.shapeFlag|=512,a.delete(p),a.add(p)):(a.add(p),f&&a.size>parseInt(f,10)&&h(a.values().next().value)),s.shapeFlag|=256,o=s,Wo(r.type)?r:s}}};function Oi(e,t){return E(e)?e.some(e=>Oi(e,t)):k(e)?e.split(`,`).includes(t):ne(e)?(e.lastIndex=0,e.test(t)):!1}function ki(e,t){ji(e,`a`,t)}function Ai(e,t){ji(e,`da`,t)}function ji(e,t,n=Z){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(Fi(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Ei(e.parent.vnode)&&Mi(r,t,n,e),e=e.parent}}function Mi(e,t,n,r){let i=Fi(t,e,r,!0);Hi(()=>{C(r[t],i)},n)}function Ni(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Pi(e){return e.shapeFlag&128?e.ssContent:e}function Fi(e,t,n=Z,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{ct();let i=Ns(n),a=Yn(t,n,e,r);return i(),lt(),a};return r?i.unshift(a):i.push(a),a}}var Ii=e=>(t,n=Z)=>{(!Is||e===`sp`)&&Fi(e,(...e)=>t(...e),n)},Li=Ii(`bm`),Ri=Ii(`m`),zi=Ii(`bu`),Bi=Ii(`u`),Vi=Ii(`bum`),Hi=Ii(`um`),Ui=Ii(`sp`),Wi=Ii(`rtg`),Gi=Ii(`rtc`);function Ki(e,t=Z){Fi(`ec`,e,t)}var qi=`components`,Ji=`directives`;function Yi(e,t){return $i(qi,e,!0,t)||e}var Xi=Symbol.for(`v-ndc`);function Zi(e){return k(e)?$i(qi,e,!1)||e:e||Xi}function Qi(e){return $i(Ji,e)}function $i(e,t,n=!0,r=!1){let i=H||Z;if(i){let n=i.type;if(e===qi){let e=Js(n,!1);if(e&&(e===t||e===M(t)||e===pe(M(t))))return n}let a=ea(i[e]||n[e],t)||ea(i.appContext[e],t);return!a&&r?n:a}}function ea(e,t){return e&&(e[t]||e[M(t)]||e[pe(M(t))])}function ta(e,t,n,r){let i,a=n&&n[r],o=E(e);if(o||k(e)){let n=o&&ln(e),r=!1,s=!1;n&&(r=!R(e),s=un(e),e=St(e)),i=Array(e.length);for(let n=0,o=e.length;nt(e,n,void 0,a&&a[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,o=n.length;r{let t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return e}function ra(e,t,n={},r,i){if(H.ce||H.parent&&Ci(H.parent)&&H.parent.ce){let e=Object.keys(n).length>0;return t!==`default`&&(n.name=t),os(),fs(G,null,[J(`slot`,n,r&&r())],e?-2:64)}let a=e[t];a&&a._c&&(a._d=!1),os();let o=a&&ia(a(n)),s=n.key||o&&o.key,c=fs(G,{key:(s&&!re(s)?s:`_${t}`)+(!o&&r?`_fb`:``)},o||(r?r():[]),o&&e._===1?64:-2);return!i&&c.scopeId&&(c.slotScopeIds=[c.scopeId+`-s`]),a&&a._c&&(a._d=!0),c}function ia(e){return e.some(e=>ps(e)?!(e.type===K||e.type===G&&!ia(e.children)):!0)?e:null}function aa(e,t){let n={};for(let r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:me(r)]=e[r];return n}var oa=e=>e?Fs(e)?qs(e):oa(e.parent):null,sa=S(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=>oa(e.parent),$root:e=>oa(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ja(e),$forceUpdate:e=>e.f||=()=>{or(e.update)},$nextTick:e=>e.n||=ir.bind(e.proxy),$watch:e=>eo.bind(e)}),ca=(e,t)=>e!==g&&!e.__isScriptSetup&&T(e,t),la={get({_:e},t){if(t===`__v_skip`)return!0;let{ctx:n,setupState:r,data:i,props:a,accessCache:o,type:s,appContext:c}=e;if(t[0]!==`$`){let e=o[t];if(e!==void 0)switch(e){case 1:return r[t];case 2:return i[t];case 4:return n[t];case 3:return a[t]}else if(ca(r,t))return o[t]=1,r[t];else if(i!==g&&T(i,t))return o[t]=2,i[t];else if(T(a,t))return o[t]=3,a[t];else if(n!==g&&T(n,t))return o[t]=4,n[t];else Ea&&(o[t]=0)}let l=sa[t],u,d;if(l)return t===`$attrs`&&L(e.attrs,`get`,``),l(e);if((u=s.__cssModules)&&(u=u[t]))return u;if(n!==g&&T(n,t))return o[t]=4,n[t];if(d=c.config.globalProperties,T(d,t))return d[t]},set({_:e},t,n){let{data:r,setupState:i,ctx:a}=e;return ca(i,t)?(i[t]=n,!0):r!==g&&T(r,t)?(r[t]=n,!0):T(e.props,t)||t[0]===`$`&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:i,props:a,type:o}},s){let c;return!!(n[s]||e!==g&&s[0]!==`$`&&T(e,s)||ca(t,s)||T(a,s)||T(r,s)||T(sa,s)||T(i.config.globalProperties,s)||(c=o.__cssModules)&&c[s])},defineProperty(e,t,n){return n.get==null?T(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}},ua=S({},la,{get(e,t){if(t!==Symbol.unscopables)return la.get(e,t,e)},has(e,t){return t[0]!==`_`&&!xe(t)}});function da(){return null}function fa(){return null}function pa(e){}function ma(e){}function ha(){return null}function ga(){}function _a(e,t){return null}function va(){return ba(`useSlots`).slots}function ya(){return ba(`useAttrs`).attrs}function ba(e){let t=Q();return t.setupContext||=Ks(t)}function xa(e){return E(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}function Sa(e,t){let n=xa(e);for(let e in t){if(e.startsWith(`__skip`))continue;let r=n[e];r?E(r)||O(r)?r=n[e]={type:r,default:t[e]}:r.default=t[e]:r===null&&(r=n[e]={default:t[e]}),r&&t[`__skip_${e}`]&&(r.skipFactory=!0)}return n}function Ca(e,t){return!e||!t?e||t:E(e)&&E(t)?e.concat(t):S({},xa(e),xa(t))}function wa(e,t){let n={};for(let r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n}function Ta(e){let t=Q(),n=e();return Ps(),j(n)&&(n=n.catch(e=>{throw Ns(t),e})),[n,()=>Ns(t)]}var Ea=!0;function Da(e){let t=ja(e),n=e.proxy,r=e.ctx;Ea=!1,t.beforeCreate&&ka(t.beforeCreate,e,`bc`);let{data:i,computed:a,methods:o,watch:s,provide:c,inject:l,created:u,beforeMount:d,mounted:f,beforeUpdate:p,updated:m,activated:h,deactivated:g,beforeDestroy:_,beforeUnmount:y,destroyed:b,unmounted:x,render:S,renderTracked:C,renderTriggered:w,errorCaptured:T,serverPrefetch:D,expose:ee,inheritAttrs:te,components:ne,directives:k,filters:re}=t;if(l&&Oa(l,r,null),o)for(let e in o){let t=o[e];O(t)&&(r[e]=t.bind(n))}if(i){let t=i.call(n,n);A(t)&&(e.data=rn(t))}if(Ea=!0,a)for(let e in a){let t=a[e],i=Xs({get:O(t)?t.bind(n,n):O(t.get)?t.get.bind(n,n):v,set:!O(t)&&O(t.set)?t.set.bind(n):v});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e})}if(s)for(let e in s)Aa(s[e],r,n,e);if(c){let e=O(c)?c.call(n):c;Reflect.ownKeys(e).forEach(t=>{Wa(t,e[t])})}u&&ka(u,e,`c`);function j(e,t){E(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(j(Li,d),j(Ri,f),j(zi,p),j(Bi,m),j(ki,h),j(Ai,g),j(Ki,T),j(Gi,C),j(Wi,w),j(Vi,y),j(Hi,x),j(Ui,D),E(ee))if(ee.length){let t=e.exposed||={};ee.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={};S&&e.render===v&&(e.render=S),te!=null&&(e.inheritAttrs=te),ne&&(e.components=ne),k&&(e.directives=k),D&&ei(e)}function Oa(e,t,n=v){for(let n in E(e)&&(e=Ia(e)),e){let r=e[n],i;i=A(r)?`default`in r?Ga(r.from||n,r.default,!0):Ga(r.from||n):Ga(r),B(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function ka(e,t,n){Yn(E(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function Aa(e,t,n,r){let i=r.includes(`.`)?to(n,r):()=>n[r];if(k(e)){let n=t[e];O(n)&&Qa(i,n)}else if(O(e))Qa(i,e.bind(n));else if(A(e))if(E(e))e.forEach(e=>Aa(e,t,n,r));else{let r=O(e.handler)?e.handler.bind(n):t[e.handler];O(r)&&Qa(i,r,e)}}function ja(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t),c;return s?c=s:!i.length&&!n&&!r?c=t:(c={},i.length&&i.forEach(e=>Ma(c,e,o,!0)),Ma(c,t,o)),A(t)&&a.set(t,c),c}function Ma(e,t,n,r=!1){let{mixins:i,extends:a}=t;for(let o in a&&Ma(e,a,n,!0),i&&i.forEach(t=>Ma(e,t,n,!0)),t)if(!(r&&o===`expose`)){let r=Na[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}var Na={data:Pa,props:Ra,emits:Ra,methods:La,computed:La,beforeCreate:U,created:U,beforeMount:U,mounted:U,beforeUpdate:U,updated:U,beforeDestroy:U,beforeUnmount:U,destroyed:U,unmounted:U,activated:U,deactivated:U,errorCaptured:U,serverPrefetch:U,components:La,directives:La,watch:za,provide:Pa,inject:Fa};function Pa(e,t){return t?e?function(){return S(O(e)?e.call(this,this):e,O(t)?t.call(this,this):t)}:t:e}function Fa(e,t){return La(Ia(e),Ia(t))}function Ia(e){if(E(e)){let t={};for(let n=0;n1)return n&&O(t)?t.call(r&&r.proxy):t}}function Ka(){return!!(Q()||Ua)}var qa=Symbol.for(`v-scx`),Ja=()=>Ga(qa);function Ya(e,t){return $a(e,null,t)}function Xa(e,t){return $a(e,null,{flush:`post`})}function Za(e,t){return $a(e,null,{flush:`sync`})}function Qa(e,t,n){return $a(e,t,n)}function $a(e,t,n=g){let{immediate:r,deep:i,flush:a,once:o}=n,s=S({},n),c=t&&r||!t&&a!==`post`,l;if(Is){if(a===`sync`){let e=Ja();l=e.__watcherHandles||=[]}else if(!c){let e=()=>{};return e.stop=v,e.resume=v,e.pause=v,e}}let u=Z;s.call=(e,t,n)=>Yn(e,u,t,n);let d=!1;a===`post`?s.scheduler=e=>{W(e,u&&u.suspense)}:a!==`sync`&&(d=!0,s.scheduler=(e,t)=>{t?e():or(e)}),s.augmentJob=e=>{t&&(e.flags|=4),d&&(e.flags|=2,u&&(e.id=u.uid,e.i=u))};let f=Bn(e,t,s);return Is&&(l?l.push(f):c&&f()),f}function eo(e,t,n){let r=this.proxy,i=k(e)?e.includes(`.`)?to(r,e):()=>r[e]:e.bind(r,r),a;O(t)?a=t:(a=t.handler,n=t);let o=Ns(this),s=$a(i,a.bind(r),n);return o(),s}function to(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;e{let c,l=g,u;return Za(()=>{let t=e[i];P(c,t)&&(c=t,s())}),{get(){return o(),n.get?n.get(c):c},set(e){let o=n.set?n.set(e):e;if(!P(o,c)&&!(l!==g&&P(e,l)))return;let d=r.vnode.props;d&&(t in d||i in d||a in d)&&(`onUpdate:${t}`in d||`onUpdate:${i}`in d||`onUpdate:${a}`in d)||(c=e,s()),r.emit(`update:${t}`,o),P(e,o)&&P(e,l)&&!P(o,u)&&s(),l=e,u=o}}});return s[Symbol.iterator]=()=>{let e=0;return{next(){return e<2?{value:e++?o||g:s,done:!1}:{done:!0}}}},s}var ro=(e,t)=>t===`modelValue`||t===`model-value`?e.modelModifiers:e[`${t}Modifiers`]||e[`${M(t)}Modifiers`]||e[`${N(t)}Modifiers`];function io(e,t,...n){if(e.isUnmounted)return;let r=e.vnode.props||g,i=n,a=t.startsWith(`update:`),o=a&&ro(r,t.slice(7));o&&(o.trim&&(i=n.map(e=>k(e)?e.trim():e)),o.number&&(i=n.map(_e)));let s,c=r[s=me(t)]||r[s=me(M(t))];!c&&a&&(c=r[s=me(N(t))]),c&&Yn(c,e,6,i);let l=r[s+`Once`];if(l){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,Yn(l,e,6,i)}}var ao=new WeakMap;function oo(e,t,n=!1){let r=n?ao:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},s=!1;if(!O(e)){let r=e=>{let n=oo(e,t,!0);n&&(s=!0,S(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!s?(A(e)&&r.set(e,null),null):(E(a)?a.forEach(e=>o[e]=null):S(o,a),A(e)&&r.set(e,o),o)}function so(e,t){return!e||!b(t)?!1:(t=t.slice(2).replace(/Once$/,``),T(e,t[0].toLowerCase()+t.slice(1))||T(e,N(t))||T(e,t))}function co(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:o,attrs:s,emit:c,render:l,renderCache:u,props:d,data:f,setupState:p,ctx:m,inheritAttrs:h}=e,g=_r(e),_,v;try{if(n.shapeFlag&4){let e=i||r,t=e;_=Y(l.call(t,e,u,d,p,f,m)),v=s}else{let e=t;_=Y(e.length>1?e(d,{attrs:s,slots:o,emit:c}):e(d,null)),v=t.props?s:uo(s)}}catch(t){as.length=0,Xn(t,e,1),_=J(K)}let y=_;if(v&&h!==!1){let e=Object.keys(v),{shapeFlag:t}=y;e.length&&t&7&&(a&&e.some(x)&&(v=fo(v,a)),y=xs(y,v,!1,!0))}return n.dirs&&(y=xs(y,null,!1,!0),y.dirs=y.dirs?y.dirs.concat(n.dirs):n.dirs),n.transition&&Xr(y,n.transition),_=y,_r(g),_}function lo(e,t=!0){let n;for(let t=0;t{let t;for(let n in e)(n===`class`||n===`style`||b(n))&&((t||={})[n]=e[n]);return t},fo=(e,t)=>{let n={};for(let r in e)(!x(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function po(e,t,n){let{props:r,children:i,component:a}=e,{props:o,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?mo(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;tObject.create(go),vo=e=>Object.getPrototypeOf(e)===go;function yo(e,t,n,r=!1){let i={},a=_o();for(let n in e.propsDefaults=Object.create(null),xo(e,t,i,a),e.propsOptions[0])n in i||(i[n]=void 0);n?e.props=r?i:an(i):e.type.props?e.props=i:e.props=a,e.attrs=a}function bo(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=z(i),[c]=e.propsOptions,l=!1;if((r||o>0)&&!(o&16)){if(o&8){let n=e.vnode.dynamicProps;for(let r=0;r{c=!0;let[n,r]=wo(e,t,!0);S(o,n),r&&s.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!a&&!c)return A(e)&&r.set(e,_),_;if(E(a))for(let e=0;ee===`_`||e===`_ctx`||e===`$stable`,Do=e=>E(e)?e.map(Y):[Y(e)],Oo=(e,t,n)=>{if(t._n)return t;let r=xr((...e)=>Do(t(...e)),n);return r._c=!1,r},ko=(e,t,n)=>{let r=e._ctx;for(let n in e){if(Eo(n))continue;let i=e[n];if(O(i))t[n]=Oo(n,i,r);else if(i!=null){let e=Do(i);t[n]=()=>e}}},Ao=(e,t)=>{let n=Do(t);e.slots.default=()=>n},jo=(e,t,n)=>{for(let r in t)(n||!Eo(r))&&(e[r]=t[r])},Mo=(e,t,n)=>{let r=e.slots=_o();if(e.vnode.shapeFlag&32){let e=t._;e?(jo(r,t,n),n&&ge(r,`_`,e,!0)):ko(t,r)}else t&&Ao(e,t)},No=(e,t,n)=>{let{vnode:r,slots:i}=e,a=!0,o=g;if(r.shapeFlag&32){let e=t._;e?n&&e===1?a=!1:jo(i,t,n):(a=!t.$stable,ko(t,i)),o=t}else t&&(Ao(e,t),o={default:1});if(a)for(let e in i)!Eo(e)&&o[e]==null&&delete i[e]},W=es;function Po(e){return Io(e)}function Fo(e){return Io(e,di)}function Io(e,t){let n=be();n.__VUE__=!0;let{insert:r,remove:i,patchProp:a,createElement:o,createText:s,createComment:c,setText:l,setElementText:u,parentNode:d,nextSibling:f,setScopeId:p=v,insertStaticContent:m}=e,h=(e,t,n,r=null,i=null,a=null,o=void 0,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!ms(e,t)&&(r=pe(e),ue(e,i,a,!0),e=null),t.patchFlag===-2&&(c=!1,t.dynamicChildren=null);let{type:l,ref:u,shapeFlag:d}=t;switch(l){case rs:y(e,t,n,r);break;case K:b(e,t,n,r);break;case is:e??x(t,n,r,o);break;case G:O(e,t,n,r,i,a,o,s,c);break;default:d&1?w(e,t,n,r,i,a,o,s,c):d&6?k(e,t,n,r,i,a,o,s,c):(d&64||d&128)&&l.process(e,t,n,r,i,a,o,s,c,ge)}u!=null&&i?ri(u,e&&e.ref,a,t||e,!t):u==null&&e&&e.ref!=null&&ri(e.ref,null,a,e,!0)},y=(e,t,n,i)=>{if(e==null)r(t.el=s(t.children),n,i);else{let n=t.el=e.el;t.children!==e.children&&l(n,t.children)}},b=(e,t,n,i)=>{e==null?r(t.el=c(t.children||``),n,i):t.el=e.el},x=(e,t,n,r)=>{[e.el,e.anchor]=m(e.children,t,n,r,e.el,e.anchor)},S=({el:e,anchor:t},n,i)=>{let a;for(;e&&e!==t;)a=f(e),r(e,n,i),e=a;r(t,n,i)},C=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=f(e),i(e),e=n;i(t)},w=(e,t,n,r,i,a,o,s,c)=>{if(t.type===`svg`?o=`svg`:t.type===`math`&&(o=`mathml`),e==null)T(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),ee(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},T=(e,t,n,i,s,c,l,d)=>{let f,p,{props:m,shapeFlag:h,transition:g,dirs:_}=e;if(f=e.el=o(e.type,c,m&&m.is,m),h&8?u(f,e.children):h&16&&D(e.children,f,null,i,s,Lo(e,c),l,d),_&&Cr(e,null,i,`created`),E(f,e,e.scopeId,l,i),m){for(let e in m)e!==`value`&&!le(e)&&a(f,e,null,m[e],c,i);`value`in m&&a(f,`value`,null,m.value,c),(p=m.onVnodeBeforeMount)&&X(p,i,e)}_&&Cr(e,null,i,`beforeMount`);let v=zo(s,g);v&&g.beforeEnter(f),r(f,t,n),((p=m&&m.onVnodeMounted)||v||_)&&W(()=>{p&&X(p,i,e),v&&g.enter(f),_&&Cr(e,null,i,`mounted`)},s)},E=(e,t,n,r,i)=>{if(n&&p(e,n),r)for(let t=0;t{for(let l=c;l{let c=t.el=e.el,{patchFlag:l,dynamicChildren:d,dirs:f}=t;l|=e.patchFlag&16;let p=e.props||g,m=t.props||g,h;if(n&&Ro(n,!1),(h=m.onVnodeBeforeUpdate)&&X(h,n,t,e),f&&Cr(t,e,n,`beforeUpdate`),n&&Ro(n,!0),(p.innerHTML&&m.innerHTML==null||p.textContent&&m.textContent==null)&&u(c,``),d?te(e.dynamicChildren,d,c,n,r,Lo(t,i),o):s||ae(e,t,c,null,n,r,Lo(t,i),o,!1),l>0){if(l&16)ne(c,p,m,n,i);else if(l&2&&p.class!==m.class&&a(c,`class`,null,m.class,i),l&4&&a(c,`style`,p.style,m.style,i),l&8){let e=t.dynamicProps;for(let t=0;t{h&&X(h,n,t,e),f&&Cr(t,e,n,`updated`)},r)},te=(e,t,n,r,i,a,o)=>{for(let s=0;s{if(t!==n){if(t!==g)for(let o in t)!le(o)&&!(o in n)&&a(e,o,t[o],null,i,r);for(let o in n){if(le(o))continue;let s=n[o],c=t[o];s!==c&&o!==`value`&&a(e,o,c,s,i,r)}`value`in n&&a(e,`value`,t.value,n.value,i)}},O=(e,t,n,i,a,o,c,l,u)=>{let d=t.el=e?e.el:s(``),f=t.anchor=e?e.anchor:s(``),{patchFlag:p,dynamicChildren:m,slotScopeIds:h}=t;h&&(l=l?l.concat(h):h),e==null?(r(d,n,i),r(f,n,i),D(t.children||[],n,f,a,o,c,l,u)):p>0&&p&64&&m&&e.dynamicChildren?(te(e.dynamicChildren,m,n,a,o,c,l),(t.key!=null||a&&t===a.subTree)&&Bo(e,t,!0)):ae(e,t,n,f,a,o,c,l,u)},k=(e,t,n,r,i,a,o,s,c)=>{t.slotScopeIds=s,e==null?t.shapeFlag&512?i.ctx.activate(t,n,r,o,c):re(t,n,r,i,a,o,c):A(e,t,c)},re=(e,t,n,r,i,a,o)=>{let s=e.component=As(e,r,i);if(Ei(e)&&(s.ctx.renderer=ge),Ls(s,!1,o),s.asyncDep){if(i&&i.registerDep(s,j,o),!e.el){let r=s.subTree=J(K);b(null,r,t,n),e.placeholder=r.el}}else j(s,e,t,n,i,a,o)},A=(e,t,n)=>{let r=t.component=e.component;if(po(e,t,n))if(r.asyncDep&&!r.asyncResolved){ie(r,t,n);return}else r.next=t,r.update();else t.el=e.el,r.vnode=t},j=(e,t,n,r,i,a,o)=>{let s=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:c,vnode:l}=e;{let n=Ho(e);if(n){t&&(t.el=l.el,ie(e,t,o)),n.asyncDep.then(()=>{e.isUnmounted||s()});return}}let u=t,f;Ro(e,!1),t?(t.el=l.el,ie(e,t,o)):t=l,n&&he(n),(f=t.props&&t.props.onVnodeBeforeUpdate)&&X(f,c,t,l),Ro(e,!0);let p=co(e),m=e.subTree;e.subTree=p,h(m,p,d(m.el),pe(m),e,i,a),t.el=p.el,u===null&&ho(e,p.el),r&&W(r,i),(f=t.props&&t.props.onVnodeUpdated)&&W(()=>X(f,c,t,l),i)}else{let o,{el:s,props:c}=t,{bm:l,m:u,parent:d,root:f,type:p}=e,m=Ci(t);if(Ro(e,!1),l&&he(l),!m&&(o=c&&c.onVnodeBeforeMount)&&X(o,d,t),Ro(e,!0),s&&ve){let t=()=>{e.subTree=co(e),ve(s,e.subTree,e,i,null)};m&&p.__asyncHydrate?p.__asyncHydrate(s,e,t):t()}else{f.ce&&f.ce._def.shadowRoot!==!1&&f.ce._injectChildStyle(p);let o=e.subTree=co(e);h(null,o,n,r,e,i,a),t.el=o.el}if(u&&W(u,i),!m&&(o=c&&c.onVnodeMounted)){let e=t;W(()=>X(o,d,e),i)}(t.shapeFlag&256||d&&Ci(d.vnode)&&d.vnode.shapeFlag&256)&&e.a&&W(e.a,i),e.isMounted=!0,t=n=r=null}};e.scope.on();let c=e.effect=new Ge(s);e.scope.off();let l=e.update=c.run.bind(c),u=e.job=c.runIfDirty.bind(c);u.i=e,u.id=e.uid,c.scheduler=()=>or(u),Ro(e,!0),l()},ie=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,bo(e,t.props,r,n),No(e,t.children,n),ct(),lr(e),lt()},ae=(e,t,n,r,i,a,o,s,c=!1)=>{let l=e&&e.children,d=e?e.shapeFlag:0,f=t.children,{patchFlag:p,shapeFlag:m}=t;if(p>0){if(p&128){se(l,f,n,r,i,a,o,s,c);return}else if(p&256){oe(l,f,n,r,i,a,o,s,c);return}}m&8?(d&16&&N(l,i,a),f!==l&&u(n,f)):d&16?m&16?se(l,f,n,r,i,a,o,s,c):N(l,i,a,!0):(d&8&&u(n,``),m&16&&D(f,n,r,i,a,o,s,c))},oe=(e,t,n,r,i,a,o,s,c)=>{e||=_,t||=_;let l=e.length,u=t.length,d=Math.min(l,u),f;for(f=0;fu?N(e,i,a,!0,!1,d):D(t,n,r,i,a,o,s,c,d)},se=(e,t,n,r,i,a,o,s,c)=>{let l=0,u=t.length,d=e.length-1,f=u-1;for(;l<=d&&l<=f;){let r=e[l],u=t[l]=c?Ts(t[l]):Y(t[l]);if(ms(r,u))h(r,u,n,null,i,a,o,s,c);else break;l++}for(;l<=d&&l<=f;){let r=e[d],l=t[f]=c?Ts(t[f]):Y(t[f]);if(ms(r,l))h(r,l,n,null,i,a,o,s,c);else break;d--,f--}if(l>d){if(l<=f){let e=f+1,d=ef)for(;l<=d;)ue(e[l],i,a,!0),l++;else{let p=l,m=l,g=new Map;for(l=m;l<=f;l++){let e=t[l]=c?Ts(t[l]):Y(t[l]);e.key!=null&&g.set(e.key,l)}let v,y=0,b=f-m+1,x=!1,S=0,C=Array(b);for(l=0;l=b){ue(r,i,a,!0);continue}let u;if(r.key!=null)u=g.get(r.key);else for(v=m;v<=f;v++)if(C[v-m]===0&&ms(r,t[v])){u=v;break}u===void 0?ue(r,i,a,!0):(C[u-m]=l+1,u>=S?S=u:x=!0,h(r,t[u],n,null,i,a,o,s,c),y++)}let w=x?Vo(C):_;for(v=w.length-1,l=b-1;l>=0;l--){let e=m+l,d=t[e],f=t[e+1],p=e+1{let{el:s,type:c,transition:l,children:u,shapeFlag:d}=e;if(d&6){ce(e.component.subTree,t,n,a);return}if(d&128){e.suspense.move(t,n,a);return}if(d&64){c.move(e,t,n,ge);return}if(c===G){r(s,t,n);for(let e=0;el.enter(s),o);else{let{leave:a,delayLeave:o,afterLeave:c}=l,u=()=>{e.ctx.isUnmounted?i(s):r(s,t,n)},d=()=>{s._isLeaving&&s[Lr](!0),a(s,()=>{u(),c&&c()})};o?o(s,u,d):d()}else r(s,t,n)},ue=(e,t,n,r=!1,i=!1)=>{let{type:a,props:o,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:d,dirs:f,cacheIndex:p}=e;if(d===-2&&(i=!1),s!=null&&(ct(),ri(s,null,n,e,!0),lt()),p!=null&&(t.renderCache[p]=void 0),u&256){t.ctx.deactivate(e);return}let m=u&1&&f,h=!Ci(e),g;if(h&&(g=o&&o.onVnodeBeforeUnmount)&&X(g,t,e),u&6)fe(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}m&&Cr(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,ge,r):l&&!l.hasOnce&&(a!==G||d>0&&d&64)?N(l,t,n,!1,!0):(a===G&&d&384||!i&&u&16)&&N(c,t,n),r&&de(e)}(h&&(g=o&&o.onVnodeUnmounted)||m)&&W(()=>{g&&X(g,t,e),m&&Cr(e,null,t,`unmounted`)},n)},de=e=>{let{type:t,el:n,anchor:r,transition:a}=e;if(t===G){M(n,r);return}if(t===is){C(e);return}let o=()=>{i(n),a&&!a.persisted&&a.afterLeave&&a.afterLeave()};if(e.shapeFlag&1&&a&&!a.persisted){let{leave:t,delayLeave:r}=a,i=()=>t(n,o);r?r(e.el,o,i):i()}else o()},M=(e,t)=>{let n;for(;e!==t;)n=f(e),i(e),e=n;i(t)},fe=(e,t,n)=>{let{bum:r,scope:i,job:a,subTree:o,um:s,m:c,a:l}=e;Uo(c),Uo(l),r&&he(r),i.stop(),a&&(a.flags|=8,ue(o,e,t,n)),s&&W(s,t),W(()=>{e.isUnmounted=!0},t)},N=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o{if(e.shapeFlag&6)return pe(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=f(e.anchor||e.el),n=t&&t[wr];return n?f(n):t},me=!1,P=(e,t,n)=>{e==null?t._vnode&&ue(t._vnode,null,null,!0):h(t._vnode||null,e,t,null,null,null,n),t._vnode=e,me||=(me=!0,lr(),ur(),!1)},ge={p:h,um:ue,m:ce,r:de,mt:re,mc:D,pc:ae,pbc:te,n:pe,o:e},_e,ve;return t&&([_e,ve]=t(ge)),{render:P,hydrate:_e,createApp:Ha(P,_e)}}function Lo({type:e,props:t},n){return n===`svg`&&e===`foreignObject`||n===`mathml`&&e===`annotation-xml`&&t&&t.encoding&&t.encoding.includes(`html`)?void 0:n}function Ro({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function zo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Bo(e,t,n=!1){let r=e.children,i=t.children;if(E(r)&&E(i))for(let e=0;e>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-- >0;)n[a]=o,o=t[o];return n}function Ho(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ho(t)}function Uo(e){if(e)for(let t=0;te.__isSuspense,Go=0,Ko={name:`Suspense`,__isSuspense:!0,process(e,t,n,r,i,a,o,s,c,l){if(e==null)Jo(t,n,r,i,a,o,s,c,l);else{if(a&&a.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Yo(e,t,n,r,i,o,s,c,l)}},hydrate:Zo,normalize:Qo};function qo(e,t){let n=e.props&&e.props[t];O(n)&&n()}function Jo(e,t,n,r,i,a,o,s,c){let{p:l,o:{createElement:u}}=c,d=u(`div`),f=e.suspense=Xo(e,i,r,t,d,n,a,o,s,c);l(null,f.pendingBranch=e.ssContent,d,null,r,f,a,o),f.deps>0?(qo(e,`onPending`),qo(e,`onFallback`),l(null,e.ssFallback,t,n,r,null,a,o),ts(f,e.ssFallback)):f.resolve(!1,!0)}function Yo(e,t,n,r,i,a,o,s,{p:c,um:l,o:{createElement:u}}){let d=t.suspense=e.suspense;d.vnode=t,t.el=e.el;let f=t.ssContent,p=t.ssFallback,{activeBranch:m,pendingBranch:h,isInFallback:g,isHydrating:_}=d;if(h)d.pendingBranch=f,ms(h,f)?(c(h,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0?d.resolve():g&&(_||(c(m,p,n,r,i,null,a,o,s),ts(d,p)))):(d.pendingId=Go++,_?(d.isHydrating=!1,d.activeBranch=h):l(h,i,d),d.deps=0,d.effects.length=0,d.hiddenContainer=u(`div`),g?(c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0?d.resolve():(c(m,p,n,r,i,null,a,o,s),ts(d,p))):m&&ms(m,f)?(c(m,f,n,r,i,d,a,o,s),d.resolve(!0)):(c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0&&d.resolve()));else if(m&&ms(m,f))c(m,f,n,r,i,d,a,o,s),ts(d,f);else if(qo(t,`onPending`),d.pendingBranch=f,f.shapeFlag&512?d.pendingId=f.component.suspenseId:d.pendingId=Go++,c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0)d.resolve();else{let{timeout:e,pendingId:t}=d;e>0?setTimeout(()=>{d.pendingId===t&&d.fallback(p)},e):e===0&&d.fallback(p)}}function Xo(e,t,n,r,i,a,o,s,c,l,u=!1){let{p:d,m:f,um:p,n:m,o:{parentNode:h,remove:g}}=l,_,v=ns(e);v&&t&&t.pendingBranch&&(_=t.pendingId,t.deps++);let y=e.props?ve(e.props.timeout):void 0,b=a,x={vnode:e,parent:t,parentComponent:n,namespace:o,container:r,hiddenContainer:i,deps:0,pendingId:Go++,timeout:typeof y==`number`?y:-1,activeBranch:null,pendingBranch:null,isInFallback:!u,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){let{vnode:r,activeBranch:i,pendingBranch:o,pendingId:s,effects:c,parentComponent:l,container:u,isInFallback:d}=x,g=!1;x.isHydrating?x.isHydrating=!1:e||(g=i&&o.transition&&o.transition.mode===`out-in`,g&&(i.transition.afterLeave=()=>{s===x.pendingId&&(f(o,u,a===b?m(i):a,0),cr(c),d&&r.ssFallback&&(r.ssFallback.el=null))}),i&&(h(i.el)===u&&(a=m(i)),p(i,l,x,!0),!g&&d&&r.ssFallback&&W(()=>r.ssFallback.el=null,x)),g||f(o,u,a,0)),ts(x,o),x.pendingBranch=null,x.isInFallback=!1;let y=x.parent,S=!1;for(;y;){if(y.pendingBranch){y.effects.push(...c),S=!0;break}y=y.parent}!S&&!g&&cr(c),x.effects=[],v&&t&&t.pendingBranch&&_===t.pendingId&&(t.deps--,t.deps===0&&!n&&t.resolve()),qo(r,`onResolve`)},fallback(e){if(!x.pendingBranch)return;let{vnode:t,activeBranch:n,parentComponent:r,container:i,namespace:a}=x;qo(t,`onFallback`);let o=m(n),l=()=>{x.isInFallback&&(d(null,e,i,o,r,null,a,s,c),ts(x,e))},u=e.transition&&e.transition.mode===`out-in`;u&&(n.transition.afterLeave=l),x.isInFallback=!0,p(n,r,null,!0),u||l()},move(e,t,n){x.activeBranch&&f(x.activeBranch,e,t,n),x.container=e},next(){return x.activeBranch&&m(x.activeBranch)},registerDep(e,t,n){let r=!!x.pendingBranch;r&&x.deps++;let i=e.vnode.el;e.asyncDep.catch(t=>{Xn(t,e,0)}).then(a=>{if(e.isUnmounted||x.isUnmounted||x.pendingId!==e.suspenseId)return;e.asyncResolved=!0;let{vnode:s}=e;zs(e,a,!1),i&&(s.el=i);let c=!i&&e.subTree.el;t(e,s,h(i||e.subTree.el),i?null:m(e.subTree),x,o,n),c&&(s.placeholder=null,g(c)),ho(e,s.el),r&&--x.deps===0&&x.resolve()})},unmount(e,t){x.isUnmounted=!0,x.activeBranch&&p(x.activeBranch,n,e,t),x.pendingBranch&&p(x.pendingBranch,n,e,t)}};return x}function Zo(e,t,n,r,i,a,o,s,c){let l=t.suspense=Xo(t,r,n,e.parentNode,document.createElement(`div`),null,i,a,o,s,!0),u=c(e,l.pendingBranch=t.ssContent,n,l,a,o);return l.deps===0&&l.resolve(!1,!0),u}function Qo(e){let{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=$o(r?n.default:n),e.ssFallback=r?$o(n.fallback):J(K)}function $o(e){let t;if(O(e)){let n=cs&&e._c;n&&(e._d=!1,os()),e=e(),n&&(e._d=!0,t=q,ss())}return E(e)&&(e=lo(e)),e=Y(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(t=>t!==e)),e}function es(e,t){t&&t.pendingBranch?E(e)?t.effects.push(...e):t.effects.push(e):cr(e)}function ts(e,t){e.activeBranch=t;let{vnode:n,parentComponent:r}=e,i=t.el;for(;!i&&t.component;)t=t.component.subTree,i=t.el;n.el=i,r&&r.subTree===n&&(r.vnode.el=i,ho(r,i))}function ns(e){let t=e.props&&e.props.suspensible;return t!=null&&t!==!1}var G=Symbol.for(`v-fgt`),rs=Symbol.for(`v-txt`),K=Symbol.for(`v-cmt`),is=Symbol.for(`v-stc`),as=[],q=null;function os(e=!1){as.push(q=e?null:[])}function ss(){as.pop(),q=as[as.length-1]||null}var cs=1;function ls(e,t=!1){cs+=e,e<0&&q&&t&&(q.hasOnce=!0)}function us(e){return e.dynamicChildren=cs>0?q||_:null,ss(),cs>0&&q&&q.push(e),e}function ds(e,t,n,r,i,a){return us(vs(e,t,n,r,i,a,!0))}function fs(e,t,n,r,i){return us(J(e,t,n,r,i,!0))}function ps(e){return e?e.__v_isVNode===!0:!1}function ms(e,t){return e.type===t.type&&e.key===t.key}function hs(e){}var gs=({key:e})=>e??null,_s=({ref:e,ref_key:t,ref_for:n})=>(typeof e==`number`&&(e=``+e),e==null?null:k(e)||B(e)||O(e)?{i:H,r:e,k:t,f:!!n}:e);function vs(e,t=null,n=null,r=0,i=null,a=e===G?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&gs(t),ref:t&&_s(t),scopeId:gr,slotScopeIds:null,children:n,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:a,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:H};return s?(Es(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=k(n)?8:16),cs>0&&!o&&q&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&q.push(c),c}var J=ys;function ys(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===Xi)&&(e=K),ps(e)){let r=xs(e,t,!0);return n&&Es(r,n),cs>0&&!a&&q&&(r.shapeFlag&6?q[q.indexOf(e)]=r:q.push(r)),r.patchFlag=-2,r}if(Ys(e)&&(e=e.__vccOpts),t){t=bs(t);let{class:e,style:n}=t;e&&!k(e)&&(t.class=De(e)),A(n)&&(dn(n)&&!E(n)&&(n=S({},n)),t.style=Se(n))}let o=k(e)?1:Wo(e)?128:Tr(e)?64:A(e)?4:O(e)?2:0;return vs(e,t,n,r,i,o,a,!0)}function bs(e){return e?dn(e)||vo(e)?S({},e):e:null}function xs(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?Ds(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&gs(l),ref:t&&t.ref?n&&a?E(a)?a.concat(_s(t)):[a,_s(t)]:_s(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==G?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&xs(e.ssContent),ssFallback:e.ssFallback&&xs(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&Xr(u,c.clone(u)),u}function Ss(e=` `,t=0){return J(rs,null,e,t)}function Cs(e,t){let n=J(is,null,e);return n.staticCount=t,n}function ws(e=``,t=!1){return t?(os(),fs(K,null,e)):J(K,null,e)}function Y(e){return e==null||typeof e==`boolean`?J(K):E(e)?J(G,null,e.slice()):ps(e)?Ts(e):J(rs,null,String(e))}function Ts(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:xs(e)}function Es(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(E(t))n=16;else if(typeof t==`object`)if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),Es(e,n()),n._c&&(n._d=!0));return}else{n=32;let r=t._;!r&&!vo(t)?t._ctx=H:r===3&&H&&(H.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else O(t)?(t={default:t,_ctx:H},n=32):(t=String(t),r&64?(n=16,t=[Ss(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ds(...e){let t={};for(let n=0;nZ||H,js,Ms;{let e=be(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach(t=>t(e)):r[0](e)}};js=t(`__VUE_INSTANCE_SETTERS__`,e=>Z=e),Ms=t(`__VUE_SSR_SETTERS__`,e=>Is=e)}var Ns=e=>{let t=Z;return js(e),e.scope.on(),()=>{e.scope.off(),js(t)}},Ps=()=>{Z&&Z.scope.off(),js(null)};function Fs(e){return e.vnode.shapeFlag&4}var Is=!1;function Ls(e,t=!1,n=!1){t&&Ms(t);let{props:r,children:i}=e.vnode,a=Fs(e);yo(e,r,a,t),Mo(e,i,n||t);let o=a?Rs(e,t):void 0;return t&&Ms(!1),o}function Rs(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,la);let{setup:r}=n;if(r){ct();let n=e.setupContext=r.length>1?Ks(e):null,i=Ns(e),a=Jn(r,e,0,[e.props,n]),o=j(a);if(lt(),i(),(o||e.sp)&&!Ci(e)&&ei(e),o){if(a.then(Ps,Ps),t)return a.then(n=>{zs(e,n,t)}).catch(t=>{Xn(t,e,0)});e.asyncDep=a}else zs(e,a,t)}else Ws(e,t)}function zs(e,t,n){O(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:A(t)&&(e.setupState=Cn(t)),Ws(e,n)}var Bs,Vs;function Hs(e){Bs=e,Vs=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,ua))}}var Us=()=>!Bs;function Ws(e,t,n){let r=e.type;if(!e.render){if(!t&&Bs&&!r.render){let t=r.template||ja(e).template;if(t){let{isCustomElement:n,compilerOptions:i}=e.appContext.config,{delimiters:a,compilerOptions:o}=r,s=S(S({isCustomElement:n,delimiters:a},i),o);r.render=Bs(t,s)}}e.render=r.render||v,Vs&&Vs(e)}{let t=Ns(e);ct();try{Da(e)}finally{lt(),t()}}}var Gs={get(e,t){return L(e,`get`,``),e[t]}};function Ks(e){return{attrs:new Proxy(e.attrs,Gs),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function qs(e){return e.exposed?e.exposeProxy||=new Proxy(Cn(fn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in sa)return sa[n](e)},has(e,t){return t in e||t in sa}}):e.proxy}function Js(e,t=!0){return O(e)?e.displayName||e.name:e.name||t&&e.__name}function Ys(e){return O(e)&&`__vccOpts`in e}var Xs=(e,t)=>Mn(e,t,Is);function Zs(e,t,n){try{ls(-1);let r=arguments.length;return r===2?A(t)&&!E(t)?ps(t)?J(e,null,[t]):J(e,t):J(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&ps(n)&&(n=[n]),J(e,t,n))}finally{ls(1)}}function Qs(){return;function e(t,n,r){let i=t[r];if(E(i)&&i.includes(n)||A(i)&&n in i||t.extends&&e(t.extends,n,r)||t.mixins&&t.mixins.some(t=>e(t,n,r)))return!0}}function $s(e,t,n,r){let i=n[r];if(i&&ec(i,e))return i;let a=t();return a.memo=e.slice(),a.cacheIndex=r,n[r]=a}function ec(e,t){let n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e0&&q&&q.push(e),!0}var tc=`3.5.25`,nc=v,rc=qn,ic=pr,ac=hr,oc={createComponentInstance:As,setupComponent:Ls,renderComponentRoot:co,setCurrentRenderingInstance:_r,isVNode:ps,normalizeVNode:Y,getComponentPublicInstance:qs,ensureValidVNode:ia,pushWarningContext:Un,popWarningContext:Wn},sc=void 0,cc=typeof window<`u`&&window.trustedTypes;if(cc)try{sc=cc.createPolicy(`vue`,{createHTML:e=>e})}catch{}var lc=sc?e=>sc.createHTML(e):e=>e,uc=`http://www.w3.org/2000/svg`,dc=`http://www.w3.org/1998/Math/MathML`,fc=typeof document<`u`?document:null,pc=fc&&fc.createElement(`template`),mc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?fc.createElementNS(uc,e):t===`mathml`?fc.createElementNS(dc,e):n?fc.createElement(e,{is:n}):fc.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>fc.createTextNode(e),createComment:e=>fc.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>fc.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===a||!(i=i.nextSibling)););else{pc.innerHTML=lc(r===`svg`?`${e}`:r===`mathml`?`${e}`:e);let i=pc.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},hc=`transition`,gc=`animation`,_c=Symbol(`_vtc`),vc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},yc=S({},Vr,vc),bc=(e=>(e.displayName=`Transition`,e.props=yc,e))((e,{slots:t})=>Zs(Gr,Cc(e),t)),xc=(e,t=[])=>{E(e)?e.forEach(e=>e(...t)):e&&e(...t)},Sc=e=>e?E(e)?e.some(e=>e.length>1):e.length>1:!1;function Cc(e){let t={};for(let n in e)n in vc||(t[n]=e[n]);if(e.css===!1)return t;let{name:n=`v`,type:r,duration:i,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:c=a,appearActiveClass:l=o,appearToClass:u=s,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,m=wc(i),h=m&&m[0],g=m&&m[1],{onBeforeEnter:_,onEnter:v,onEnterCancelled:y,onLeave:b,onLeaveCancelled:x,onBeforeAppear:C=_,onAppear:w=v,onAppearCancelled:T=y}=t,E=(e,t,n,r)=>{e._enterCancelled=r,Dc(e,t?u:s),Dc(e,t?l:o),n&&n()},D=(e,t)=>{e._isLeaving=!1,Dc(e,d),Dc(e,p),Dc(e,f),t&&t()},ee=e=>(t,n)=>{let i=e?w:v,o=()=>E(t,e,n);xc(i,[t,o]),Oc(()=>{Dc(t,e?c:a),Ec(t,e?u:s),Sc(i)||Ac(t,r,h,o)})};return S(t,{onBeforeEnter(e){xc(_,[e]),Ec(e,a),Ec(e,o)},onBeforeAppear(e){xc(C,[e]),Ec(e,c),Ec(e,l)},onEnter:ee(!1),onAppear:ee(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>D(e,t);Ec(e,d),e._enterCancelled?(Ec(e,f),Pc(e)):(Pc(e),Ec(e,f)),Oc(()=>{e._isLeaving&&(Dc(e,d),Ec(e,p),Sc(b)||Ac(e,r,g,n))}),xc(b,[e,n])},onEnterCancelled(e){E(e,!1,void 0,!0),xc(y,[e])},onAppearCancelled(e){E(e,!0,void 0,!0),xc(T,[e])},onLeaveCancelled(e){D(e),xc(x,[e])}})}function wc(e){if(e==null)return null;if(A(e))return[Tc(e.enter),Tc(e.leave)];{let t=Tc(e);return[t,t]}}function Tc(e){return ve(e)}function Ec(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[_c]||(e[_c]=new Set)).add(t)}function Dc(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[_c];n&&(n.delete(t),n.size||(e[_c]=void 0))}function Oc(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var kc=0;function Ac(e,t,n,r){let i=e._endId=++kc,a=()=>{i===e._endId&&r()};if(n!=null)return setTimeout(a,n);let{type:o,timeout:s,propCount:c}=jc(e,t);if(!o)return r();let l=o+`end`,u=0,d=()=>{e.removeEventListener(l,f),a()},f=t=>{t.target===e&&++u>=c&&d()};setTimeout(()=>{u(n[e]||``).split(`, `),i=r(`${hc}Delay`),a=r(`${hc}Duration`),o=Mc(i,a),s=r(`${gc}Delay`),c=r(`${gc}Duration`),l=Mc(s,c),u=null,d=0,f=0;t===hc?o>0&&(u=hc,d=o,f=a.length):t===gc?l>0&&(u=gc,d=l,f=c.length):(d=Math.max(o,l),u=d>0?o>l?hc:gc:null,f=u?u===hc?a.length:c.length:0);let p=u===hc&&/\b(?:transform|all)(?:,|$)/.test(r(`${hc}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:p}}function Mc(e,t){for(;e.lengthNc(t)+Nc(e[n])))}function Nc(e){return e===`auto`?0:Number(e.slice(0,-1).replace(`,`,`.`))*1e3}function Pc(e){return(e?e.ownerDocument:document).body.offsetHeight}function Fc(e,t,n){let r=e[_c];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var Ic=Symbol(`_vod`),Lc=Symbol(`_vsh`),Rc={name:`show`,beforeMount(e,{value:t},{transition:n}){e[Ic]=e.style.display===`none`?``:e.style.display,n&&t?n.beforeEnter(e):zc(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),zc(e,!0),r.enter(e)):r.leave(e,()=>{zc(e,!1)}):zc(e,t))},beforeUnmount(e,{value:t}){zc(e,t)}};function zc(e,t){e.style.display=t?e[Ic]:`none`,e[Lc]=!t}function Bc(){Rc.getSSRProps=({value:e})=>{if(!e)return{style:{display:`none`}}}}var Vc=Symbol(``);function Hc(e){let t=Q();if(!t)return;let n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(e=>Wc(e,n))},r=()=>{let r=e(t.proxy);t.ce?Wc(t.ce,r):Uc(t.subTree,r),n(r)};zi(()=>{cr(r)}),Ri(()=>{Qa(r,v,{flush:`post`});let e=new MutationObserver(r);e.observe(t.subTree.el.parentNode,{childList:!0}),Hi(()=>e.disconnect())})}function Uc(e,t){if(e.shapeFlag&128){let n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push(()=>{Uc(n.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)Wc(e.el,t);else if(e.type===G)e.children.forEach(e=>Uc(e,t));else if(e.type===is){let{el:n,anchor:r}=e;for(;n&&(Wc(n,t),n!==r);)n=n.nextSibling}}function Wc(e,t){if(e.nodeType===1){let n=e.style,r=``;for(let e in t){let i=ze(t[e]);n.setProperty(`--${e}`,i),r+=`--${e}: ${i};`}n[Vc]=r}}var Gc=/(?:^|;)\s*display\s*:/;function Kc(e,t,n){let r=e.style,i=k(n),a=!1;if(n&&!i){if(t)if(k(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??Jc(r,t,``)}else for(let e in t)n[e]??Jc(r,e,``);for(let e in n)e===`display`&&(a=!0),Jc(r,e,n[e])}else if(i){if(t!==n){let e=r[Vc];e&&(n+=`;`+e),r.cssText=n,a=Gc.test(n)}}else t&&e.removeAttribute(`style`);Ic in e&&(e[Ic]=a?r.display:``,e[Lc]&&(r.display=`none`))}var qc=/\s*!important$/;function Jc(e,t,n){if(E(n))n.forEach(n=>Jc(e,t,n));else if(n??=``,t.startsWith(`--`))e.setProperty(t,n);else{let r=Zc(e,t);qc.test(n)?e.setProperty(N(r),n.replace(qc,``),`important`):e[r]=n}}var Yc=[`Webkit`,`Moz`,`ms`],Xc={};function Zc(e,t){let n=Xc[t];if(n)return n;let r=M(t);if(r!==`filter`&&r in e)return Xc[t]=r;r=pe(r);for(let n=0;nsl||=(cl.then(()=>sl=0),Date.now());function ul(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;Yn(dl(e,n.value),t,5,[e])};return n.value=e,n.attached=ll(),n}function dl(e,t){if(E(t)){let n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(e=>t=>!t._stopped&&e&&e(t))}else return t}var fl=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,pl=(e,t,n,r,i,a)=>{let o=i===`svg`;t===`class`?Fc(e,r,o):t===`style`?Kc(e,n,r):b(t)?x(t)||il(e,t,n,r,a):(t[0]===`.`?(t=t.slice(1),!0):t[0]===`^`?(t=t.slice(1),!1):ml(e,t,r,o))?(el(e,t,r),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&$c(e,t,r,o,a,t!==`value`)):e._isVueCE&&(/[A-Z]/.test(t)||!k(r))?el(e,M(t),r,a,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),$c(e,t,r,o))};function ml(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&fl(t)&&O(n));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`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return fl(t)&&k(n)?!1:t in e}var hl={};function gl(e,t,n){let r=Qr(e,t);se(r)&&(r=S({},r,t));class i extends yl{constructor(e){super(r,e,n)}}return i.def=r,i}var _l=((e,t)=>gl(e,t,cu)),vl=typeof HTMLElement<`u`?HTMLElement:class{},yl=class e extends vl{constructor(e,t={},n=su){super(),this._def=e,this._props=t,this._createApp=n,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._ob=null,this.shadowRoot&&n!==su?this._root=this.shadowRoot:e.shadowRoot===!1?this._root=this:(this.attachShadow(S({},e.shadowRootOptions,{mode:`open`})),this._root=this.shadowRoot)}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t&&=t.parentNode||t.host;)if(t instanceof e){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{this._pendingResolve=void 0,this._resolveDef()}):this._resolveDef())}_setParent(e=this._parent){e&&(this._instance.parent=e._instance,this._inheritParentContext(e))}_inheritParentContext(e=this._parent){e&&this._app&&Object.setPrototypeOf(this._app._context.provides,e._instance.provides)}disconnectedCallback(){this._connected=!1,ir(()=>{this._connected||(this._ob&&=(this._ob.disconnect(),null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&=(this._teleportTargets.clear(),void 0))})}_processMutations(e){for(let t of e)this._setAttr(t.attributeName)}_resolveDef(){if(this._pendingResolve)return;for(let e=0;e{this._resolved=!0,this._pendingResolve=void 0;let{props:n,styles:r}=e,i;if(n&&!E(n))for(let e in n){let t=n[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=ve(this._props[e])),(i||=Object.create(null))[M(e)]=!0)}this._numberProps=i,this._resolveProps(e),this.shadowRoot&&this._applyStyles(r),this._mount(e)},t=this._def.__asyncLoader;t?this._pendingResolve=t().then(t=>{t.configureApp=this._def.configureApp,e(this._def=t,!0)}):e(this._def)}_mount(e){this._app=this._createApp(e),this._inheritParentContext(),e.configureApp&&e.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);let t=this._instance&&this._instance.exposed;if(t)for(let e in t)T(this,e)||Object.defineProperty(this,e,{get:()=>bn(t[e])})}_resolveProps(e){let{props:t}=e,n=E(t)?t:Object.keys(t||{});for(let e of Object.keys(this))e[0]!==`_`&&n.includes(e)&&this._setProp(e,this[e]);for(let e of n.map(M))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t,!0,!this._patching)}})}_setAttr(e){if(e.startsWith(`data-v-`))return;let t=this.hasAttribute(e),n=t?this.getAttribute(e):hl,r=M(e);t&&this._numberProps&&this._numberProps[r]&&(n=ve(n)),this._setProp(r,n,!1,!0)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!1){if(t!==this._props[e]&&(this._dirty=!0,t===hl?delete this._props[e]:(this._props[e]=t,e===`key`&&this._app&&(this._app._ceVNode.key=t)),r&&this._instance&&this._update(),n)){let n=this._ob;n&&(this._processMutations(n.takeRecords()),n.disconnect()),t===!0?this.setAttribute(N(e),``):typeof t==`string`||typeof t==`number`?this.setAttribute(N(e),t+``):t||this.removeAttribute(N(e)),n&&n.observe(this,{attributes:!0})}}_update(){let e=this._createVNode();this._app&&(e.appContext=this._app._context),au(e,this._root)}_createVNode(){let e={};this.shadowRoot||(e.onVnodeMounted=e.onVnodeUpdated=this._renderSlots.bind(this));let t=J(this._def,S(e,this._props));return this._instance||(t.ce=e=>{this._instance=e,e.ce=this,e.isCE=!0;let t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,se(t[0])?S({detail:t},t[0]):{detail:t}))};e.emit=(e,...n)=>{t(e,n),N(e)!==e&&t(N(e),n)},this._setParent()}),t}_applyStyles(e,t){if(!e)return;if(t){if(t===this._def||this._styleChildren.has(t))return;this._styleChildren.add(t)}let n=this._nonce;for(let t=e.length-1;t>=0;t--){let r=document.createElement(`style`);n&&r.setAttribute(`nonce`,n),r.textContent=e[t],this.shadowRoot.prepend(r)}}_parseSlots(){let e=this._slots={},t;for(;t=this.firstChild;){let n=t.nodeType===1&&t.getAttribute(`slot`)||`default`;(e[n]||(e[n]=[])).push(t),this.removeChild(t)}}_renderSlots(){let e=this._getSlots(),t=this._instance.type.__scopeId;for(let n=0;n(delete e.props.mode,e))({name:`TransitionGroup`,props:S({},yc,{tag:String,moveClass:String}),setup(e,{slots:t}){let n=Q(),r=zr(),i,a;return Bi(()=>{if(!i.length)return;let t=e.moveClass||`${e.name||`v`}-move`;if(!jl(i[0].el,n.vnode.el,t)){i=[];return}i.forEach(Ol),i.forEach(kl);let r=i.filter(Al);Pc(n.vnode.el),r.forEach(e=>{let n=e.el,r=n.style;Ec(n,t),r.transform=r.webkitTransform=r.transitionDuration=``;let i=n[Tl]=e=>{e&&e.target!==n||(!e||e.propertyName.endsWith(`transform`))&&(n.removeEventListener(`transitionend`,i),n[Tl]=null,Dc(n,t))};n.addEventListener(`transitionend`,i)}),i=[]}),()=>{let o=z(e),s=Cc(o),c=o.tag||G;if(i=[],a)for(let e=0;e{e.split(/\s+/).forEach(e=>e&&r.classList.remove(e))}),n.split(/\s+/).forEach(e=>e&&r.classList.add(e)),r.style.display=`none`;let a=t.nodeType===1?t:t.parentNode;a.appendChild(r);let{hasTransform:o}=jc(r);return a.removeChild(r),o}var Ml=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return E(t)?e=>he(t,e):t};function Nl(e){e.target.composing=!0}function Pl(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var Fl=Symbol(`_assign`);function Il(e,t,n){return t&&(e=e.trim()),n&&(e=_e(e)),e}var Ll={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e[Fl]=Ml(i);let a=r||i.props&&i.props.type===`number`;tl(e,t?`change`:`input`,t=>{t.target.composing||e[Fl](Il(e.value,n,a))}),(n||a)&&tl(e,`change`,()=>{e.value=Il(e.value,n,a)}),t||(tl(e,`compositionstart`,Nl),tl(e,`compositionend`,Pl),tl(e,`change`,Pl))},mounted(e,{value:t}){e.value=t??``},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){if(e[Fl]=Ml(o),e.composing)return;let s=(a||e.type===`number`)&&!/^0\d/.test(e.value)?_e(e.value):e.value,c=t??``;s!==c&&(document.activeElement===e&&e.type!==`range`&&(r&&t===n||i&&e.value.trim()===c)||(e.value=c))}},Rl={deep:!0,created(e,t,n){e[Fl]=Ml(n),tl(e,`change`,()=>{let t=e._modelValue,n=Ul(e),r=e.checked,i=e[Fl];if(E(t)){let e=Pe(t,n),a=e!==-1;if(r&&!a)i(t.concat(n));else if(!r&&a){let n=[...t];n.splice(e,1),i(n)}}else if(ee(t)){let e=new Set(t);r?e.add(n):e.delete(n),i(e)}else i(Wl(e,r))})},mounted:zl,beforeUpdate(e,t,n){e[Fl]=Ml(n),zl(e,t,n)}};function zl(e,{value:t,oldValue:n},r){e._modelValue=t;let i;if(E(t))i=Pe(t,r.props.value)>-1;else if(ee(t))i=t.has(r.props.value);else{if(t===n)return;i=Ne(t,Wl(e,!0))}e.checked!==i&&(e.checked=i)}var Bl={created(e,{value:t},n){e.checked=Ne(t,n.props.value),e[Fl]=Ml(n),tl(e,`change`,()=>{e[Fl](Ul(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[Fl]=Ml(r),t!==n&&(e.checked=Ne(t,r.props.value))}},Vl={deep:!0,created(e,{value:t,modifiers:{number:n}},r){let i=ee(t);tl(e,`change`,()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?_e(Ul(e)):Ul(e));e[Fl](e.multiple?i?new Set(t):t:t[0]),e._assigning=!0,ir(()=>{e._assigning=!1})}),e[Fl]=Ml(r)},mounted(e,{value:t}){Hl(e,t)},beforeUpdate(e,t,n){e[Fl]=Ml(n)},updated(e,{value:t}){e._assigning||Hl(e,t)}};function Hl(e,t){let n=e.multiple,r=E(t);if(!(n&&!r&&!ee(t))){for(let i=0,a=e.options.length;iString(e)===String(o)):a.selected=Pe(t,o)>-1}else a.selected=t.has(o);else if(Ne(Ul(a),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Ul(e){return`_value`in e?e._value:e.value}function Wl(e,t){let n=t?`_trueValue`:`_falseValue`;return n in e?e[n]:t}var Gl={created(e,t,n){ql(e,t,n,null,`created`)},mounted(e,t,n){ql(e,t,n,null,`mounted`)},beforeUpdate(e,t,n,r){ql(e,t,n,r,`beforeUpdate`)},updated(e,t,n,r){ql(e,t,n,r,`updated`)}};function Kl(e,t){switch(e){case`SELECT`:return Vl;case`TEXTAREA`:return Ll;default:switch(t){case`checkbox`:return Rl;case`radio`:return Bl;default:return Ll}}}function ql(e,t,n,r,i){let a=Kl(e.tagName,n.props&&n.props.type)[i];a&&a(e,t,n,r)}function Jl(){Ll.getSSRProps=({value:e})=>({value:e}),Bl.getSSRProps=({value:e},t)=>{if(t.props&&Ne(t.props.value,e))return{checked:!0}},Rl.getSSRProps=({value:e},t)=>{if(E(e)){if(t.props&&Pe(e,t.props.value)>-1)return{checked:!0}}else if(ee(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},Gl.getSSRProps=(e,t)=>{if(typeof t.type!=`string`)return;let n=Kl(t.type.toUpperCase(),t.props&&t.props.type);if(n.getSSRProps)return n.getSSRProps(e,t)}}var Yl=[`ctrl`,`shift`,`alt`,`meta`],Xl={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>`button`in e&&e.button!==0,middle:e=>`button`in e&&e.button!==1,right:e=>`button`in e&&e.button!==2,exact:(e,t)=>Yl.some(n=>e[`${n}Key`]&&!t.includes(n))},Zl=(e,t)=>{let n=e._withMods||={},r=t.join(`.`);return n[r]||(n[r]=((n,...r)=>{for(let e=0;e{let n=e._withKeys||={},r=t.join(`.`);return n[r]||(n[r]=(n=>{if(!(`key`in n))return;let r=N(n.key);if(t.some(e=>e===r||Ql[e]===r))return e(n)}))},eu=S({patchProp:pl},mc),tu,nu=!1;function ru(){return tu||=Po(eu)}function iu(){return tu=nu?tu:Fo(eu),nu=!0,tu}var au=((...e)=>{ru().render(...e)}),ou=((...e)=>{iu().hydrate(...e)}),su=((...e)=>{let t=ru().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=uu(e);if(!r)return;let i=t._component;!O(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,lu(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t}),cu=((...e)=>{let t=iu().createApp(...e),{mount:n}=t;return t.mount=e=>{let t=uu(e);if(t)return n(t,!0,lu(t))},t});function lu(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function uu(e){return k(e)?document.querySelector(e):e}var du=!1,fu=()=>{du||(du=!0,Jl(),Bc())},pu=e({BaseTransition:()=>Gr,BaseTransitionPropsValidators:()=>Vr,Comment:()=>K,DeprecationTypes:()=>null,EffectScope:()=>Be,ErrorCodes:()=>Kn,ErrorTypeStrings:()=>rc,Fragment:()=>G,KeepAlive:()=>Di,ReactiveEffect:()=>Ge,Static:()=>is,Suspense:()=>Ko,Teleport:()=>Pr,Text:()=>rs,TrackOpTypes:()=>Nn,Transition:()=>bc,TransitionGroup:()=>Dl,TriggerOpTypes:()=>Pn,VueElement:()=>yl,assertNumber:()=>Gn,callWithAsyncErrorHandling:()=>Yn,callWithErrorHandling:()=>Jn,camelize:()=>M,capitalize:()=>pe,cloneVNode:()=>xs,compatUtils:()=>null,compile:()=>mu,computed:()=>Xs,createApp:()=>su,createBlock:()=>fs,createCommentVNode:()=>ws,createElementBlock:()=>ds,createElementVNode:()=>vs,createHydrationRenderer:()=>Fo,createPropsRestProxy:()=>wa,createRenderer:()=>Po,createSSRApp:()=>cu,createSlots:()=>na,createStaticVNode:()=>Cs,createTextVNode:()=>Ss,createVNode:()=>J,customRef:()=>Tn,defineAsyncComponent:()=>wi,defineComponent:()=>Qr,defineCustomElement:()=>gl,defineEmits:()=>fa,defineExpose:()=>pa,defineModel:()=>ga,defineOptions:()=>ma,defineProps:()=>da,defineSSRCustomElement:()=>_l,defineSlots:()=>ha,devtools:()=>ic,effect:()=>it,effectScope:()=>Ve,getCurrentInstance:()=>Q,getCurrentScope:()=>He,getCurrentWatcher:()=>Rn,getTransitionRawChildren:()=>Zr,guardReactiveProps:()=>bs,h:()=>Zs,handleError:()=>Xn,hasInjectionContext:()=>Ka,hydrate:()=>ou,hydrateOnIdle:()=>_i,hydrateOnInteraction:()=>xi,hydrateOnMediaQuery:()=>bi,hydrateOnVisible:()=>yi,initCustomFormatter:()=>Qs,initDirectivesForSSR:()=>fu,inject:()=>Ga,isMemoSame:()=>ec,isProxy:()=>dn,isReactive:()=>ln,isReadonly:()=>un,isRef:()=>B,isRuntimeOnly:()=>Us,isShallow:()=>R,isVNode:()=>ps,markRaw:()=>fn,mergeDefaults:()=>Sa,mergeModels:()=>Ca,mergeProps:()=>Ds,nextTick:()=>ir,nodeOps:()=>mc,normalizeClass:()=>De,normalizeProps:()=>Oe,normalizeStyle:()=>Se,onActivated:()=>ki,onBeforeMount:()=>Li,onBeforeUnmount:()=>Vi,onBeforeUpdate:()=>zi,onDeactivated:()=>Ai,onErrorCaptured:()=>Ki,onMounted:()=>Ri,onRenderTracked:()=>Gi,onRenderTriggered:()=>Wi,onScopeDispose:()=>Ue,onServerPrefetch:()=>Ui,onUnmounted:()=>Hi,onUpdated:()=>Bi,onWatcherCleanup:()=>zn,openBlock:()=>os,patchProp:()=>pl,popScopeId:()=>yr,provide:()=>Wa,proxyRefs:()=>Cn,pushScopeId:()=>vr,queuePostFlushCb:()=>cr,reactive:()=>rn,readonly:()=>on,ref:()=>hn,registerRuntimeCompiler:()=>Hs,render:()=>au,renderList:()=>ta,renderSlot:()=>ra,resolveComponent:()=>Yi,resolveDirective:()=>Qi,resolveDynamicComponent:()=>Zi,resolveFilter:()=>null,resolveTransitionHooks:()=>qr,setBlockTracking:()=>ls,setDevtoolsHook:()=>ac,setTransitionHooks:()=>Xr,shallowReactive:()=>an,shallowReadonly:()=>sn,shallowRef:()=>gn,ssrContextKey:()=>qa,ssrUtils:()=>oc,stop:()=>at,toDisplayString:()=>Ie,toHandlerKey:()=>me,toHandlers:()=>aa,toRaw:()=>z,toRef:()=>kn,toRefs:()=>En,toValue:()=>xn,transformVNodeArgs:()=>hs,triggerRef:()=>yn,unref:()=>bn,useAttrs:()=>ya,useCssModule:()=>Sl,useCssVars:()=>Hc,useHost:()=>bl,useId:()=>$r,useModel:()=>no,useSSRContext:()=>Ja,useShadowRoot:()=>xl,useSlots:()=>va,useTemplateRef:()=>ti,useTransitionState:()=>zr,vModelCheckbox:()=>Rl,vModelDynamic:()=>Gl,vModelRadio:()=>Bl,vModelSelect:()=>Vl,vModelText:()=>Ll,vShow:()=>Rc,version:()=>tc,warn:()=>nc,watch:()=>Qa,watchEffect:()=>Ya,watchPostEffect:()=>Xa,watchSyncEffect:()=>Za,withAsyncContext:()=>Ta,withCtx:()=>xr,withDefaults:()=>_a,withDirectives:()=>Sr,withKeys:()=>$l,withMemo:()=>$s,withModifiers:()=>Zl,withScopeId:()=>br}),mu=()=>{};const hu=(e,t)=>{let n=o[e],r=n.costMultiplier**(t-1);return{metal:Math.floor(n.baseCost.metal*r),crystal:Math.floor(n.baseCost.crystal*r),deuterium:Math.floor(n.baseCost.deuterium*r),darkMatter:Math.floor(n.baseCost.darkMatter*r),energy:0}},gu=(e,t,n=0)=>{let r=o[e],i=r.baseTime*r.costMultiplier**+t,a=1-n/100;return Math.floor(i*a)},_u=(e,t,n)=>{let r=o[e];if(!r.requirements)return!0;for(let[e,a]of Object.entries(r.requirements))if(Object.values(m).includes(e)){if((t[e]||0){let r=Date.now();return{id:`research_${r}`,type:`technology`,itemType:e,targetLevel:t,startTime:r,endTime:r+n*1e3}},yu=(e,t,n,r)=>e.filter(e=>{if(n>=e.endTime){let n=t[e.itemType]||0,i=e.targetLevel||0;return t[e.itemType]=i,r&&i>n&&r(wu(e.itemType,n,i),`technology`,e.itemType,i),!1}return!0}),bu=e=>e.metal+e.crystal+e.deuterium,xu=e=>Math.floor(e/1e3),Su=(e,t)=>{e.points+=t},Cu=(e,t,n)=>{let r=0;for(let i=t+1;i<=n;i++){let t=bu(Du(e,i));r+=xu(t)}return r},wu=(e,t,n)=>{let r=0;for(let i=t+1;i<=n;i++){let t=bu(hu(e,i));r+=xu(t)}return r},Tu=(e,t)=>{let r=n[e];return xu(bu(r.cost))*t},Eu=(e,t)=>{let n=d[e];return xu(bu(n.cost))*t},Du=(e,t)=>{let n=c[e],r=n.costMultiplier**(t-1);return{metal:Math.floor(n.baseCost.metal*r),crystal:Math.floor(n.baseCost.crystal*r),deuterium:Math.floor(n.baseCost.deuterium*r),darkMatter:Math.floor(n.baseCost.darkMatter*r),energy:0}},Ou=(e,t,n=0)=>{let r=c[e],i=r.costMultiplier**(t-1),a=r.baseTime*i,o=1-n/100;return Math.floor(a*o)},ku=e=>{let t=0;return Object.entries(e.buildings).forEach(([e,n])=>{if(n>0){let r=c[e];t+=r.spaceUsage*n}}),t},Au=(e,t,n)=>{let r=c[e].requirements;if(!r)return!0;for(let[e,a]of Object.entries(r)){let r=a;if(Object.values(m).includes(e)){if((t.buildings[e]||0)ku(e)+c[t].spaceUsage<=e.maxSpace,Mu=(e,t,n)=>{let r=Date.now();return{id:`build_${r}`,type:`building`,itemType:e,targetLevel:t,startTime:r,endTime:r+n*1e3}},Nu=(e,t,n)=>{e.buildQueue=e.buildQueue.filter(r=>{if(t>=r.endTime){if(r.type===`building`){let t=e.buildings[r.itemType]||0,i=r.targetLevel||0;e.buildings[r.itemType]=i,n&&i>t&&n(Cu(r.itemType,t,i),`building`,r.itemType,i)}else if(r.type===`ship`){let t=r.itemType,i=r.quantity||0;e.fleet[t]=(e.fleet[t]||0)+i,n&&i>0&&n(Tu(t,i),`ship`,r.itemType,void 0,i)}else if(r.type===`defense`){let t=r.itemType,i=r.quantity||0;e.defense[t]=(e.defense[t]||0)+i,n&&i>0&&n(Eu(t,i),`defense`,r.itemType,void 0,i)}else if(r.type===`demolish`){let t=r.itemType,n=e.buildings[t]||0;e.buildings[t]=Math.max(0,n-1)}return!1}return!0})},Pu=(e,t)=>{let n=Du(e,t);return{metal:Math.floor(n.metal*.5),crystal:Math.floor(n.crystal*.5),deuterium:Math.floor(n.deuterium*.5),darkMatter:Math.floor(n.darkMatter*.5),energy:0}},Fu=(e,t,n=0)=>{let r=Ou(e,t,n);return Math.floor(r*.5)},Iu=(e,t,n)=>{let r=Date.now();return{id:`demolish_${r}`,type:`demolish`,itemType:e,targetLevel:t-1,startTime:r,endTime:r+n*1e3}},Lu=e=>l[e].cost,Ru=(e,t)=>e.active&&(!e.expiresAt||e.expiresAt>t),zu=(e,t)=>{let n=Date.now();return{type:e,active:!0,hiredAt:n,expiresAt:n+t*24*60*60*1e3}},Bu=e=>({type:e,active:!1}),Vu=(e,t,n)=>{let r=e.expiresAt&&e.expiresAt>n?e.expiresAt:n;return{...e,active:!0,expiresAt:r+t*24*60*60*1e3}},$=(e,t)=>{let n={buildingSpeedBonus:0,researchSpeedBonus:0,resourceProductionBonus:0,darkMatterProductionBonus:0,energyProductionBonus:0,fleetSpeedBonus:0,fuelConsumptionReduction:0,defenseBonus:0,additionalBuildQueue:0,additionalFleetSlots:0,storageCapacityBonus:0};return Object.values(e).forEach(e=>{if(Ru(e,t)){let t=l[e.type];Object.entries(t.benefits).forEach(([e,t])=>{t!==void 0&&(n[e]+=t)})}}),n},Hu=(e,t)=>{Object.values(e).forEach(e=>{e.active&&e.expiresAt&&e.expiresAt<=t&&(e.active=!1)})},Uu=(e,t=`Home Planet`)=>{let n={id:`planet1`,name:t,ownerId:e,position:{galaxy:1,system:1,position:1},resources:{metal:500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildings:{},fleet:{[s.LightFighter]:0,[s.HeavyFighter]:0,[s.Cruiser]:0,[s.Battleship]:0,[s.SmallCargo]:0,[s.LargeCargo]:0,[s.ColonyShip]:0,[s.Recycler]:0,[s.EspionageProbe]:0,[s.DarkMatterHarvester]:0,[s.Deathstar]:0},defense:{[r.RocketLauncher]:0,[r.LightLaser]:0,[r.HeavyLaser]:0,[r.GaussCannon]:0,[r.IonCannon]:0,[r.PlasmaTurret]:0,[r.SmallShieldDome]:0,[r.LargeShieldDome]:0,[r.PlanetaryShield]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:200,maxFleetStorage:a.baseStorage,isMoon:!1};return Object.values(m).forEach(e=>{n.buildings[e]=0}),n},Wu=(e,t,n=`Planet`)=>{let i={id:`npc_planet_${e}`,name:`${n} ${t.galaxy}:${t.system}:${t.position}`,ownerId:`npc_${e}`,position:t,resources:{metal:Math.floor(Math.random()*1e4)+5e3,crystal:Math.floor(Math.random()*5e3)+2e3,deuterium:Math.floor(Math.random()*2e3)+500,darkMatter:Math.floor(Math.random()*100),energy:0},buildings:{},fleet:{[s.LightFighter]:Math.floor(Math.random()*50),[s.HeavyFighter]:Math.floor(Math.random()*20),[s.Cruiser]:Math.floor(Math.random()*10),[s.Battleship]:Math.floor(Math.random()*5),[s.SmallCargo]:Math.floor(Math.random()*10),[s.LargeCargo]:Math.floor(Math.random()*5),[s.ColonyShip]:0,[s.Recycler]:0,[s.EspionageProbe]:0,[s.DarkMatterHarvester]:0,[s.Deathstar]:0},defense:{[r.RocketLauncher]:Math.floor(Math.random()*100),[r.LightLaser]:Math.floor(Math.random()*50),[r.HeavyLaser]:Math.floor(Math.random()*20),[r.GaussCannon]:Math.floor(Math.random()*10),[r.IonCannon]:Math.floor(Math.random()*10),[r.PlasmaTurret]:Math.floor(Math.random()*5),[r.SmallShieldDome]:Math.random()>.5?1:0,[r.LargeShieldDome]:Math.random()>.8?1:0,[r.PlanetaryShield]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:200,maxFleetStorage:a.baseStorage,isMoon:!1};return Object.values(m).forEach(e=>{i.buildings[e]=Math.floor(Math.random()*10)}),i},Gu=e=>{let n=e.metal+e.crystal;if(n{if(!e.isMoon)return 0;let n=e.buildings[m.LunarBase]||0;return t.baseSize+n*t.lunarBaseSpaceBonus},qu=(e,t)=>{if(e.isMoon)return 0;let n=f.baseSize,r=e.buildings[m.Terraformer]||0;return n+=r*f.terraformerSpaceBonus,n+=t*f.terraformingTechSpaceBonus,n},Ju=(e,t)=>{let n=e.buildings[m.SolarPlant]||0,r=1+(t.energyProductionBonus||0)/100;return n*50*1.1**n*r},Yu=e=>{let t=e.buildings[m.MetalMine]||0,n=e.buildings[m.CrystalMine]||0,r=e.buildings[m.DeuteriumSynthesizer]||0,i=t*10*1.1**t,a=n*10*1.1**n,o=r*15*1.1**r;return i+a+o},Xu=(e,t)=>{let n=e.buildings[m.MetalMine]||0,r=e.buildings[m.CrystalMine]||0,i=e.buildings[m.DeuteriumSynthesizer]||0,a=e.buildings[m.DarkMatterCollector]||0,o=1+(t.resourceProductionBonus||0)/100,s=1+(t.darkMatterProductionBonus||0)/100,c=Ju(e,{energyProductionBonus:t.energyProductionBonus}),l=e.resources.energy>0?1:0;return{metal:n*1500*1.5**n*o*l,crystal:r*1e3*1.5**r*o*l,deuterium:i*500*1.5**i*o*l,darkMatter:a*25*1.5**a*s,energy:c}},Zu=(e,t)=>{let n=e.buildings[m.MetalStorage]||0,r=e.buildings[m.CrystalStorage]||0,i=e.buildings[m.DeuteriumTank]||0,a=e.buildings[m.DarkMatterCollector]||0,o=e.buildings[m.SolarPlant]||0,s=1+(t||0)/100,c=1e4;return{metal:c*2**n*s,crystal:c*2**r*s,deuterium:c*2**i*s,darkMatter:1e3+a*100,energy:1e3+o*500}},Qu=(e,t,n)=>{let r=(t-e.lastUpdate)/1e3,i=Yu(e),a=Ju(e,{energyProductionBonus:n.energyProductionBonus});e.resources.energy+=a*r/3600;let o=Zu(e,n.storageCapacityBonus);e.resources.energy=Math.min(e.resources.energy,o.energy),e.resources.energy-=i*r/3600,e.resources.energy=Math.max(0,e.resources.energy);let s=Xu(e,{resourceProductionBonus:n.resourceProductionBonus,darkMatterProductionBonus:n.darkMatterProductionBonus,energyProductionBonus:n.energyProductionBonus});e.resources.metal+=s.metal*r/3600,e.resources.crystal+=s.crystal*r/3600,e.resources.deuterium+=s.deuterium*r/3600,e.resources.darkMatter+=s.darkMatter*r/3600,e.resources.metal=Math.min(e.resources.metal,o.metal),e.resources.crystal=Math.min(e.resources.crystal,o.crystal),e.resources.deuterium=Math.min(e.resources.deuterium,o.deuterium),e.resources.darkMatter=Math.min(e.resources.darkMatter,o.darkMatter),e.lastUpdate=t},$u=(e,t)=>e.metal>=t.metal&&e.crystal>=t.crystal&&e.deuterium>=t.deuterium&&e.darkMatter>=t.darkMatter,ed=(e,t)=>{e.metal-=t.metal,e.crystal-=t.crystal,e.deuterium-=t.deuterium,e.darkMatter-=t.darkMatter},td=(e,t)=>{e.metal+=t.metal,e.crystal+=t.crystal,e.deuterium+=t.deuterium,e.darkMatter+=t.darkMatter},nd=(e,t)=>{let n=e.buildings[m.MetalMine]||0,r=e.buildings[m.CrystalMine]||0,i=e.buildings[m.DeuteriumSynthesizer]||0,a=e.buildings[m.DarkMatterCollector]||0,o=e.buildings[m.SolarPlant]||0,s=e.resources.energy>0,c=s?1:0,l=n*1500*1.5**n,u=[];t.resourceProductionBonus>0&&u.push({name:`officers.resourceBonus`,value:t.resourceProductionBonus,type:`percentage`}),s||u.push({name:`resources.noEnergy`,value:-100,type:`percentage`});let d=l*(1+t.resourceProductionBonus/100)*c,f=r*1e3*1.5**r,p=[];t.resourceProductionBonus>0&&p.push({name:`officers.resourceBonus`,value:t.resourceProductionBonus,type:`percentage`}),s||p.push({name:`resources.noEnergy`,value:-100,type:`percentage`});let h=f*(1+t.resourceProductionBonus/100)*c,g=i*500*1.5**i,_=[];t.resourceProductionBonus>0&&_.push({name:`officers.resourceBonus`,value:t.resourceProductionBonus,type:`percentage`}),s||_.push({name:`resources.noEnergy`,value:-100,type:`percentage`});let v=g*(1+t.resourceProductionBonus/100)*c,y=a*25*1.5**a,b=[];t.darkMatterProductionBonus>0&&b.push({name:`officers.darkMatterBonus`,value:t.darkMatterProductionBonus,type:`percentage`});let x=y*(1+t.darkMatterProductionBonus/100),S=o*50*1.1**o,C=[];t.energyProductionBonus>0&&C.push({name:`officers.energyBonus`,value:t.energyProductionBonus,type:`percentage`});let w=S*(1+t.energyProductionBonus/100);return{metal:{baseProduction:l,buildingLevel:n,buildingName:`buildings.metalMine`,bonuses:u,finalProduction:d},crystal:{baseProduction:f,buildingLevel:r,buildingName:`buildings.crystalMine`,bonuses:p,finalProduction:h},deuterium:{baseProduction:g,buildingLevel:i,buildingName:`buildings.deuteriumSynthesizer`,bonuses:_,finalProduction:v},darkMatter:{baseProduction:y,buildingLevel:a,buildingName:`buildings.darkMatterCollector`,bonuses:b,finalProduction:x},energy:{baseProduction:S,buildingLevel:o,buildingName:`buildings.solarPlant`,bonuses:C,finalProduction:w}}},rd=e=>{let t=e.buildings[m.MetalMine]||0,n=e.buildings[m.CrystalMine]||0,r=e.buildings[m.DeuteriumSynthesizer]||0,i=t*10*1.1**t,a=n*10*1.1**n,o=r*15*1.1**r;return{metalMine:{buildingLevel:t,buildingName:`buildings.metalMine`,consumption:i},crystalMine:{buildingLevel:n,buildingName:`buildings.crystalMine`,consumption:a},deuteriumSynthesizer:{buildingLevel:r,buildingName:`buildings.deuteriumSynthesizer`,consumption:o},total:i+a+o}},id=(e,t=`Commander`)=>{let n={id:e,name:t,planets:[],technologies:{},officers:{},researchQueue:[],fleetMissions:[],battleReports:[],spyReports:[],points:0};return Object.values(i).forEach(e=>{n.technologies[e]=0}),Object.values(u).forEach(e=>{n.officers[e]=Bu(e)}),n},ad=e=>e.length===0,od=(e,t,n=10)=>{let r=[];for(let e=1;e<=n;e++)r.push({position:e,planet:null});return r},sd=()=>({galaxy:Math.floor(Math.random()*9)+1,system:Math.floor(Math.random()*10)+1,position:Math.floor(Math.random()*10)+1}),cd=(e,t,n)=>`${e}:${t}:${n}`,ld=(e,t)=>{let n=$(e.officers,t),r=(t,n,r,i,a)=>{Su(e,t)};return e.planets.forEach(e=>{Qu(e,t,n)}),e.planets.forEach(n=>{Nu(n,t,r),n.isMoon?n.maxSpace=Ku(n):n.maxSpace=qu(n,e.technologies[i.TerraformingTechnology]||0)}),{updatedResearchQueue:yu(e.researchQueue,e.technologies,t,r)}},ud=(e,t)=>{Hu(e,t)},dd=(e,t)=>{let n={};if(e.requirements&&Object.assign(n,e.requirements),e.levelRequirements){let r=Object.keys(e.levelRequirements).map(Number).filter(e=>e<=t).sort((e,t)=>e-t);for(let t of r){let r=e.levelRequirements[t];if(r)for(let[e,t]of Object.entries(r)){let r=n[e]||0;n[e]=Math.max(r,t)}}}return n},fd=(e,t,n)=>{if(!e||!n)return!0;for(let[r,a]of Object.entries(n))if(Object.values(m).includes(r)){if((e.buildings[r]||0)Xu(e,$(t,Date.now())),md=(e,t)=>Zu(e,$(t,Date.now()).storageCapacityBonus),hd=(e,t=0)=>{let n=e.buildings[m.NaniteFactory]||0;return Math.min(1+n+t,10)},gd=e=>{let t=e[i.ComputerTechnology]||0;return Math.min(1+t,10)},_d=(e=0)=>Math.min(1+e,10),vd=(e,t,n,r)=>{let i=Du(t,(e.buildings[t]||0)+1),a=c[t];if(a.planetOnly&&e.isMoon)return{valid:!1,reason:`errors.planetOnly`};if(a.moonOnly&&!e.isMoon)return{valid:!1,reason:`errors.moonOnly`};let o=hd(e,$(r,Date.now()).additionalBuildQueue);return e.buildQueue.length>=o?{valid:!1,reason:`errors.buildQueueFull`}:ju(e,t)?$u(e.resources,i)?Au(t,e,n)?{valid:!0}:{valid:!1,reason:`errors.requirementsNotMet`}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.insufficientSpace`}},yd=(e,t,n)=>{let r=(e.buildings[t]||0)+1,i=Du(t,r),a=Ou(t,r,$(n,Date.now()).buildingSpeedBonus);return ed(e.resources,i),Mu(t,r,a)},bd=(e,t)=>{let n=Du(t.itemType,t.targetLevel||1);return{metal:Math.floor(n.metal*.5),crystal:Math.floor(n.crystal*.5),deuterium:Math.floor(n.deuterium*.5),darkMatter:Math.floor(n.darkMatter*.5),energy:0}},xd=(e,t)=>{let n=e.findIndex(e=>e.id===t);return n===-1?{item:null,index:-1}:{item:e[n]||null,index:n}},Sd=(e,t,n)=>{if((e.buildings[t]||0)<=0)return{valid:!1,reason:`errors.buildingLevelZero`};let r=hd(e,$(n,Date.now()).additionalBuildQueue);return e.buildQueue.length>=r?{valid:!1,reason:`errors.buildQueueFull`}:{valid:!0}},Cd=(e,t,n)=>{let r=e.buildings[t]||0,i=Fu(t,r,$(n,Date.now()).buildingSpeedBonus),a=Pu(t,r);return e.resources.metal+=a.metal,e.resources.crystal+=a.crystal,e.resources.deuterium+=a.deuterium,e.resources.darkMatter+=a.darkMatter,Iu(t,r,i)},wd=(e,t,n,r)=>{let i=hu(t,(n[t]||0)+1),a=gd(n);return r.length>=a?{valid:!1,reason:`errors.researchQueueFull`}:_u(t,e.buildings,n)?$u(e.resources,i)?{valid:!0}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.requirementsNotMet`}},Td=(e,t,n,r)=>{let i=n+1,a=hu(t,i),o=gu(t,n,$(r,Date.now()).researchSpeedBonus);return ed(e.resources,a),{queueItem:vu(t,i,o)}},Ed=e=>{let t=hu(e.itemType,e.targetLevel||1);return{metal:Math.floor(t.metal*.5),crystal:Math.floor(t.crystal*.5),deuterium:Math.floor(t.deuterium*.5),darkMatter:Math.floor(t.darkMatter*.5),energy:0}};function Dd(e){return new Worker(``+new URL(`battle.worker-CNO8oZzx.js`,import.meta.url).href,{name:e?.name})}var Od=e=>{if(typeof e!=`object`||!e)return e;let t=z(e);if(Array.isArray(t))return t.map(e=>Od(e));if(t&&typeof t==`object`){let e={};for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=Od(t[n]));return e}return t};const kd=new class{constructor(){this.battleWorker=null,this.pendingTasks=new Map,this.messageIdCounter=0,this.defaultTimeout=1e4}initBattleWorker(){this.battleWorker||(this.battleWorker=new Dd,this.setupWorkerHandlers(this.battleWorker,`Battle`))}setupWorkerHandlers(e,t){e.onmessage=e=>{let{id:t,success:n,data:r,error:i}=e.data,a=this.pendingTasks.get(t);if(!a){console.warn(`[WorkerManager] No pending task found for message ID: ${t}`);return}a.timeout&&clearTimeout(a.timeout),this.pendingTasks.delete(t),n?a.resolve(r):a.reject(Error(i||`Worker task failed`))},e.onerror=e=>{console.error(`[WorkerManager] ${t} worker error:`,e);for(let e of this.pendingTasks.values())e.timeout&&clearTimeout(e.timeout),e.reject(Error(`${t} worker crashed`));this.pendingTasks.clear(),t===`Battle`&&(this.battleWorker=null)}}generateMessageId(){return`msg_${Date.now()}_${++this.messageIdCounter}`}getWorkerByType(e){if(e===p.SIMULATE_BATTLE||e===p.CALCULATE_PLUNDER||e===p.CALCULATE_DEBRIS)return this.initBattleWorker(),this.battleWorker;throw Error(`Unknown message type: ${e}`)}sendMessage(e,t,n=this.defaultTimeout){let r=this.getWorkerByType(e);if(!r)return Promise.reject(Error(`Worker initialization failed`));let i=this.generateMessageId();return new Promise((a,o)=>{let s=setTimeout(()=>{this.pendingTasks.delete(i),o(Error(`Worker task timeout after ${n}ms`))},n);this.pendingTasks.set(i,{resolve:a,reject:o,timeout:s});let c={id:i,type:e,payload:Od(t)};r.postMessage(c)})}async simulateBattle(e){return this.sendMessage(p.SIMULATE_BATTLE,e)}async calculatePlunder(e){return this.sendMessage(p.CALCULATE_PLUNDER,e)}async calculateDebris(e){return this.sendMessage(p.CALCULATE_DEBRIS,e)}destroy(){this.battleWorker&&=(this.battleWorker.terminate(),null);for(let e of this.pendingTasks.values())e.timeout&&clearTimeout(e.timeout),e.reject(Error(`Worker manager destroyed`));this.pendingTasks.clear()}getPendingTaskCount(){return this.pendingTasks.size}},Ad=async(e,t,n,r,i,a)=>{let o=$(i,Date.now()),s=$(a,Date.now()),c=Math.floor(o.defenseBonus/10),l=Math.floor(s.defenseBonus/10),u=await kd.simulateBattle({attacker:{ships:e,weaponTech:0,shieldTech:c,armorTech:c},defender:{ships:t,defense:n,weaponTech:0,shieldTech:l,armorTech:l},maxRounds:6}),d=u.winner===`attacker`?await kd.calculatePlunder({defenderResources:r,attackerFleet:u.attackerRemaining}):{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},f=await kd.calculateDebris({attackerLosses:u.attackerLosses,defenderLosses:u.defenderLosses}),p=f.metal+f.crystal,m=Math.min(p/1e5,.2);return{id:`battle_${Date.now()}`,timestamp:Date.now(),attackerId:``,defenderId:``,attackerPlanetId:``,defenderPlanetId:``,attackerFleet:e,defenderFleet:t,defenderDefense:n,attackerLosses:u.attackerLosses,defenderLosses:u.defenderLosses,winner:u.winner,plunder:d,debrisField:f,rounds:u.rounds,attackerRemaining:u.attackerRemaining,defenderRemaining:u.defenderRemaining,roundDetails:u.roundDetails,moonChance:m}},jd=(e,t)=>{let n={...t};return Object.keys(e).forEach(r=>{let i=e[r]||0,a=t[r]||0,o=i-a;o>0&&(n[r]=a+Math.floor(o*.7))}),n},Md=e=>{let n=e.metal+e.crystal;if(n{let c=Md(e);if(c===0||Math.random()*100>=c)return null;let l={id:`moon_${Date.now()}`,name:`Moon [${n.galaxy}:${n.system}:${n.position}]`,ownerId:o,position:n,resources:{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},buildings:{},fleet:{[s.LightFighter]:0,[s.HeavyFighter]:0,[s.Cruiser]:0,[s.Battleship]:0,[s.SmallCargo]:0,[s.LargeCargo]:0,[s.ColonyShip]:0,[s.Recycler]:0,[s.EspionageProbe]:0,[s.DarkMatterHarvester]:0,[s.Deathstar]:0},defense:{[r.RocketLauncher]:0,[r.LightLaser]:0,[r.HeavyLaser]:0,[r.GaussCannon]:0,[r.IonCannon]:0,[r.PlasmaTurret]:0,[r.SmallShieldDome]:0,[r.LargeShieldDome]:0,[r.PlanetaryShield]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:t.baseSize,maxFleetStorage:a.baseStorage,isMoon:!0,parentPlanetId:i};return Object.values(m).forEach(e=>{l.buildings[e]=0}),l},Pd=(e,t,n)=>{if(e.find(e=>e.position.galaxy===t.galaxy&&e.position.system===t.system&&e.position.position===t.position&&e.isMoon))return{canCreate:!1,reason:`errors.moonExists`};let r=Gu(n);return r===0?{canCreate:!1,reason:`errors.insufficientDebris`,chance:r}:{canCreate:!0,chance:r}},Fd=e=>Math.random()*100<=e,Id=(e,t)=>e.galaxy===t.galaxy&&e.system===t.system&&e.position===t.position?5:e.galaxy===t.galaxy&&e.system===t.system?1e3+Math.abs(t.position-e.position)*5:e.galaxy===t.galaxy?2700+Math.abs(t.system-e.system)*95:2e4+Math.abs(t.galaxy-e.galaxy)*2e4,Ld=(e,t)=>Math.max(10,Math.floor(e*1e4/t)),Rd=(e,t,n,r,i,a,o)=>{let s=Date.now();return{id:`mission_${s}`,playerId:e,originPlanetId:t,targetPosition:n,missionType:r,fleet:i,cargo:a,departureTime:s,arrivalTime:s+o*1e3,returnTime:s+o*2*1e3,status:`outbound`}},zd=(e,t)=>{t&&(t.resources.metal+=e.cargo.metal,t.resources.crystal+=e.cargo.crystal,t.resources.deuterium+=e.cargo.deuterium,t.resources.darkMatter+=e.cargo.darkMatter),e.status=`returning`,e.cargo={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0}},Bd=async(e,t,n,r,i)=>{if(!t||t.ownerId===n.id)return e.status=`returning`,null;let a=await Ad(e.fleet,t.fleet,t.defense,t.resources,n.officers,r?.officers||{});a.id=`battle_${Date.now()}`,a.attackerId=n.id,a.defenderId=t.ownerId||`unknown`,a.attackerPlanetId=e.originPlanetId,a.defenderPlanetId=t.id,e.cargo=a.plunder;let o={};Object.entries(e.fleet).forEach(([e,t])=>{let n=t-(a.attackerLosses[e]||0);n>0&&(o[e]=n)}),e.fleet=o,Object.entries(a.defenderLosses.fleet).forEach(([e,n])=>{t.fleet[e]=Math.max(0,t.fleet[e]-n)}),Object.entries(a.defenderLosses.defense).forEach(([e,n])=>{t.defense[e]=Math.max(0,t.defense[e]-n)});let s={...t.defense};Object.entries(a.defenderLosses.defense).forEach(([e,t])=>{s[e]=(s[e]||0)+t}),t.defense=jd(s,t.defense),t.resources.metal-=a.plunder.metal,t.resources.crystal-=a.plunder.crystal,t.resources.deuterium-=a.plunder.deuterium,e.status=`returning`;let c=null,l=Pd(i,t.position,a.debrisField);l.canCreate&&l.chance&&Fd(l.chance)&&(c=Nd(a.debrisField,t.position,t.id,t.ownerId||`unknown`));let u=null;return a.debrisField.metal+a.debrisField.crystal>0&&(u={id:`debris_${t.position.galaxy}_${t.position.system}_${t.position.position}`,position:t.position,resources:{metal:a.debrisField.metal,crystal:a.debrisField.crystal},createdAt:Date.now()}),{battleResult:a,moon:c,debrisField:u}},Vd=(e,t,n,i=`Colony`)=>{if(t)return e.status=`returning`,null;let o={id:`planet_${Date.now()}`,name:`${i} ${e.targetPosition.galaxy}:${e.targetPosition.system}:${e.targetPosition.position}`,ownerId:n,position:e.targetPosition,resources:{metal:500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildings:{},fleet:{[s.LightFighter]:0,[s.HeavyFighter]:0,[s.Cruiser]:0,[s.Battleship]:0,[s.SmallCargo]:0,[s.LargeCargo]:0,[s.ColonyShip]:0,[s.Recycler]:0,[s.EspionageProbe]:0,[s.DarkMatterHarvester]:0,[s.Deathstar]:0},defense:{[r.RocketLauncher]:0,[r.LightLaser]:0,[r.HeavyLaser]:0,[r.GaussCannon]:0,[r.IonCannon]:0,[r.PlasmaTurret]:0,[r.SmallShieldDome]:0,[r.LargeShieldDome]:0,[r.PlanetaryShield]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:200,maxFleetStorage:a.baseStorage,isMoon:!1};return Object.values(m).forEach(e=>{o.buildings[e]=0}),e.fleet[s.ColonyShip]=(e.fleet[s.ColonyShip]||1)-1,e.status=`returning`,o},Hd=(e,t,n)=>{if(!t)return e.status=`returning`,null;let r={id:`spy_${Date.now()}`,timestamp:Date.now(),spyId:n,targetPlanetId:t.id,targetPlayerId:t.ownerId||`unknown`,resources:{...t.resources},fleet:{...t.fleet},defense:{...t.defense},buildings:{...t.buildings},technologies:{},detectionChance:.3};return e.status=`returning`,r},Ud=(e,t,n)=>{if(!t||t.ownerId!==n)return e.status=`returning`,!1;for(let[n,r]of Object.entries(e.fleet))t.fleet[n]+=r;return!0},Wd=(e,t)=>{if(!t)return e.status=`returning`,null;let n=(e.fleet[s.Recycler]||0)*2e4-(e.cargo.metal+e.cargo.crystal+e.cargo.deuterium),r=t.resources.metal+t.resources.crystal,i=Math.min(r,n),a=t.resources.metal/r,o=t.resources.crystal/r,c=Math.floor(i*a),l=Math.floor(i*o);e.cargo.metal+=c,e.cargo.crystal+=l;let u=t.resources.metal-c,d=t.resources.crystal-l;return e.status=`returning`,{collectedResources:{metal:c,crystal:l},remainingDebris:u>0||d>0?{metal:u,crystal:d}:null}},Gd=(e,t,n)=>{let r=e*10,i=t*5,a=Math.floor(n/1e4),o=r-i-a;return Math.max(1,Math.min(99,o))},Kd=(e,t)=>{let n=0;return Object.entries(e).forEach(([e,t])=>{t>0&&(n+=t*100)}),Object.entries(t).forEach(([e,t])=>{t>0&&(n+=t*50)}),n},qd=(e,t,n)=>{if(!t||t.ownerId===n.id)return e.status=`returning`,null;let i=e.fleet[s.Deathstar]||0;if(i===0)return e.status=`returning`,null;let a=Gd(i,t.defense[r.PlanetaryShield]||0,Kd(t.fleet,t.defense)),o=Math.random()*100{if(e.status!==`outbound`)return!1;let n=t-e.departureTime;return t{let r=n[e];return{metal:r.cost.metal*t,crystal:r.cost.crystal*t,deuterium:r.cost.deuterium*t,darkMatter:r.cost.darkMatter*t,energy:0}},Xd=(e,t)=>{let n=d[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t,energy:0}},Zd=(e,t,r=0)=>{let i=n[e].buildTime*t,a=1-r/100;return Math.floor(i*a)},Qd=(e,t,n=0)=>{let r=d[e].buildTime*t,i=1-n/100;return Math.floor(r*i)},$d=(e,t,r)=>{let a=n[e];if(!a.requirements)return!0;for(let[e,n]of Object.entries(a.requirements))if(Object.values(m).includes(e)){if((t[e]||0){let r=d[e];if(!r.requirements)return!0;for(let[e,a]of Object.entries(r.requirements))if(Object.values(m).includes(e)){if((t[e]||0)!((e===r.SmallShieldDome||e===r.LargeShieldDome)&&((t[e]||0)>0||n>1)),nf=(e,t,n)=>{let r=Date.now();return{id:`ship_${r}`,type:`ship`,itemType:e,quantity:t,startTime:r,endTime:r+n*1e3}},rf=(e,t,n)=>{let r=Date.now();return{id:`defense_${r}`,type:`defense`,itemType:e,quantity:t,startTime:r,endTime:r+n*1e3}},af=(e,t)=>{for(let[n,r]of Object.entries(t))if((e[n]||0){let i=0;for(let[t,r]of Object.entries(e)){let e=n[t];i+=e.fuelConsumption*r}let a=0;if(r){let e=r.metal+r.crystal+r.deuterium+r.darkMatter;a=Math.floor(e/1e3)}let o=1-t/100;return Math.floor(i*o)+a},sf=(e,t=0)=>{let r=1/0;for(let[t,i]of Object.entries(e))if(i>0){let e=n[t];r=Math.min(r,e.speed)}let i=1+t/100;return Math.floor(r*i)},cf=(e,t)=>{for(let[n,r]of Object.entries(t))e[n]-=r},lf=(e,t)=>{for(let[n,r]of Object.entries(t))r>0&&(e[n]+=r)},uf=e=>{let t=0;for(let r of Object.values(s)){let i=e[r]||0,a=n[r];t+=i*a.storageUsage}return t},df=(e,t)=>{let n=a.baseStorage,r=e.buildings[m.Shipyard]||0,s=c[m.Shipyard].fleetStorageBonus||0;n+=r*s;let l=t[i.ComputerTechnology]||0,u=o[i.ComputerTechnology].fleetStorageBonus||0;return n+=l*u,n},ff=(e,t,r,i)=>{let a=uf(e.fleet),o=df(e,i);return a+n[t].storageUsage*r<=o},pf=(e,t,n,r)=>{let i=Yd(t,n);return $d(t,e.buildings,r)?$u(e.resources,i)?ff(e,t,n,r)?{valid:!0}:{valid:!1,reason:`errors.insufficientFleetStorage`}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.requirementsNotMet`}},mf=(e,t,n,r)=>{let i=Yd(t,n),a=Zd(t,n,$(r,Date.now()).buildingSpeedBonus);return ed(e.resources,i),nf(t,n,a)},hf=(e,t,n,r)=>{let i=Xd(t,n);return ef(t,e.buildings,r)?$u(e.resources,i)?tf(t,e.defense,n)?{valid:!0}:{valid:!1,reason:`errors.shieldDomeLimit`}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.requirementsNotMet`}},gf=(e,t,n,r)=>{let i=Xd(t,n),a=Qd(t,n,$(r,Date.now()).buildingSpeedBonus);return ed(e.resources,i),rf(t,n,a)},_f=(e,t,n,r,i=0)=>{let a=$(r,Date.now());if(i>=_d(a.additionalFleetSlots))return{valid:!1,reason:`errors.fleetMissionsFull`};if(!af(e.fleet,t))return{valid:!1,reason:`errors.insufficientFleet`};let o=of(t,a.fuelConsumptionReduction,n);return e.resources.deuterium{cf(e.fleet,t),e.resources.deuterium-=n,r&&ed(e.resources,i)};export{Qu as $,$r as $t,xd as A,ds as At,sd as B,Sa as Bt,kd as C,bn as Cn,G as Ct,bd as D,Se as Dn,vs as Dt,wd as E,Oe as En,Xs as Et,_d as F,bs as Ft,td as G,Hi as Gt,id as H,ir as Ht,md as I,Zs as It,nd as J,ta as Jt,rd as K,os as Kt,pd as L,Ka as Lt,vd as M,J as Mt,fd as N,Qr as Nt,Cd as O,Ie as On,fs as Ot,dd as P,Q as Pt,ed as Q,ya as Qt,ud as R,Ga as Rt,Jd as S,xn as Sn,K as St,Td as T,De as Tn,xs as Tt,ld as U,Vi as Ut,od as V,Ds as Vt,ad as W,Ri as Wt,Xu as X,Zi as Xt,Zu as Y,ra as Yt,$u as Z,aa as Zt,Ud as _,sn as _n,gu as _t,_f as a,Sr as an,Bu as at,Hd as b,kn as bn,Ll as bt,df as c,He as cn,Du as ct,sf as d,fn as dn,ku as dt,va as en,Gu as et,Id as f,Ue as fn,Cu as ft,Vd as g,an as gn,hu as gt,Bd as h,hn,wu as ht,hf as i,xr as in,zu as it,Sd as j,Ss as jt,yd as k,me as kn,ws as kt,lf as l,ln,Ou as lt,Rd as m,on as mn,Tu as mt,vf as n,Ya as nn,Wu as nt,pf as o,Tn as on,Lu as ot,Ld as p,rn as pn,Eu as pt,Yu as q,Wa as qt,mf as r,Xa as rn,$ as rt,uf as s,Ve as sn,Vu as st,gf as t,Qa as tn,Uu as tt,of as u,B as un,Pu as ut,qd as v,gn as vn,pu as vt,Ed as w,M as wn,Pr as wt,zd as x,En as xn,Zl as xt,Wd as y,z as yn,su as yt,cd as z,ps as zt}; \ No newline at end of file diff --git a/docs/assets/index-B25uYV3W.css b/docs/assets/index-B25uYV3W.css deleted file mode 100644 index 03f8fe7..0000000 --- a/docs/assets/index-B25uYV3W.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:#fef2f2;--color-red-300:#ffa3a3;--color-red-400:#ff6568;--color-red-600:#e40014;--color-red-700:#bf000f;--color-red-950:#460809;--color-orange-500:#fe6e00;--color-yellow-400:#fac800;--color-yellow-600:#cd8900;--color-green-50:#f0fdf4;--color-green-300:#7bf1a8;--color-green-400:#05df72;--color-green-500:#00c758;--color-green-600:#00a544;--color-green-700:#008138;--color-green-950:#032e15;--color-emerald-600:#009767;--color-cyan-400:#00d2ef;--color-blue-50:#eff6ff;--color-blue-300:#90c5ff;--color-blue-400:#54a2ff;--color-blue-500:#3080ff;--color-blue-600:#155dfc;--color-blue-700:#1447e6;--color-blue-950:#162456;--color-indigo-900:#312c85;--color-purple-600:#9810fa;--color-slate-400:#90a1b9;--color-slate-600:#45556c;--color-gray-50:#f9fafb;--color-gray-300:#d1d5dc;--color-gray-700:#364153;--color-gray-950:#030712;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-lg:32rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-xs:.125rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18511 1.52329);--color-red-300:lab(76.5514% 36.4219 15.5335);--color-red-400:lab(63.7053% 60.7449 31.3109);--color-red-600:lab(48.4493% 77.4328 61.5452);--color-red-700:lab(40.4273% 67.2623 53.7441);--color-red-950:lab(13.003% 29.04 16.7519);--color-orange-500:lab(64.272% 57.1788 90.3583);--color-yellow-400:lab(83.2664% 8.65132 106.895);--color-yellow-600:lab(62.7799% 22.4198 86.1544);--color-green-50:lab(98.1563% -5.60117 2.75913);--color-green-300:lab(86.9953% -47.2691 25.0054);--color-green-400:lab(78.503% -64.9265 39.7492);--color-green-500:lab(70.5521% -66.5147 45.8072);--color-green-600:lab(59.0978% -58.6621 41.2579);--color-green-700:lab(47.0329% -47.0239 31.4788);--color-green-950:lab(15.6845% -20.4225 11.7249);--color-emerald-600:lab(55.0481% -49.9246 15.93);--color-cyan-400:lab(76.6045% -40.9406 -29.6231);--color-blue-50:lab(96.492% -1.14647 -5.11479);--color-blue-300:lab(77.5052% -6.4629 -36.42);--color-blue-400:lab(65.0361% -1.42062 -56.9803);--color-blue-500:lab(54.1736% 13.3368 -74.6839);--color-blue-600:lab(44.0605% 29.0279 -86.0352);--color-blue-700:lab(36.9089% 35.0961 -85.6872);--color-blue-950:lab(15.6723% 8.86233 -32.2945);--color-indigo-900:lab(23.3911% 24.6978 -50.4719);--color-purple-600:lab(43.0295% 75.21 -86.5669);--color-slate-400:lab(65.5349% -2.25151 -14.5072);--color-slate-600:lab(35.5623% -1.74978 -15.4316);--color-gray-50:lab(98.2596% -.247031 -.706708);--color-gray-300:lab(85.1236% -.612259 -3.7138);--color-gray-700:lab(27.1134% -.956401 -12.3224);--color-gray-950:lab(1.90334% .278696 -5.48866)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5}html{transition:background-color .3s,color .3s}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background-color:#0000}::-webkit-scrollbar-thumb{border-radius:var(--radius);background-color:var(--border)}::-webkit-scrollbar-thumb:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklab,var(--muted-foreground)50%,transparent)}}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.-left-6{left:calc(var(--spacing)*-6)}.left-2{left:calc(var(--spacing)*2)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-8{margin-block:calc(var(--spacing)*8)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-\[var\(--reka-select-trigger-height\)\]{height:var(--reka-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\(--reka-select-content-available-height\){max-height:var(--reka-select-content-available-height)}.max-h-\[90vh\]{max-height:90vh}.w-0\.5{width:calc(var(--spacing)*.5)}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-20{width:calc(var(--spacing)*20)}.w-48{width:calc(var(--spacing)*48)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[calc\(100\%-1rem\)\]{max-width:calc(100% - 1rem)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--reka-select-trigger-width\)\]{min-width:var(--reka-select-trigger-width)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--reka-popover-content-transform-origin\){transform-origin:var(--reka-popover-content-transform-origin)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.resize{resize:both}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-background{border-color:var(--background)}.border-blue-300{border-color:var(--color-blue-300)}.border-border{border-color:var(--border)}.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/50{border-color:color-mix(in oklab,var(--destructive)50%,transparent)}}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.bg-background,.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/70{background-color:color-mix(in oklab,var(--background)70%,transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab, red, red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-500{background-color:var(--color-green-500)}.bg-muted,.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-cyan-400{--tw-gradient-from:var(--color-cyan-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-green-400{--tw-gradient-from:var(--color-green-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-600{--tw-gradient-from:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-slate-400{--tw-gradient-from:var(--color-slate-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-yellow-400{--tw-gradient-from:var(--color-yellow-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-blue-600{--tw-gradient-to:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-600{--tw-gradient-to:var(--color-emerald-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-indigo-900{--tw-gradient-to:var(--color-indigo-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-orange-500{--tw-gradient-to:var(--color-orange-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-slate-600{--tw-gradient-to:var(--color-slate-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.p-0{padding:calc(var(--spacing)*0)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.py-4\.5{padding-block:calc(var(--spacing)*4.5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-6{padding-left:calc(var(--spacing)*6)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-wrap{text-wrap:wrap}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-gray-700{color:var(--color-gray-700)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.paused{animation-play-state:paused}.ring-inset{--tw-ring-inset:inset}.zoom-in{--tw-enter-scale:0}.zoom-out{--tw-exit-scale:0}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.selection\:bg-primary ::selection,.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection,.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary:hover,.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}@media (min-width:40rem){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:mt-0{margin-top:calc(var(--spacing)*0)}.sm\:mb-2{margin-bottom:calc(var(--spacing)*2)}.sm\:mb-6{margin-bottom:calc(var(--spacing)*6)}.sm\:inline{display:inline}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-6{height:calc(var(--spacing)*6)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:w-12{width:calc(var(--spacing)*12)}.sm\:max-w-\[90vw\]{max-width:90vw}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:calc(var(--spacing)*2)}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:gap-6{gap:calc(var(--spacing)*6)}:where(.sm\:space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:calc(var(--spacing)*3)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:px-2{padding-inline:calc(var(--spacing)*2)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:48rem){.md\:w-full{width:100%}.md\:max-w-3xl{max-width:var(--container-3xl)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:64rem){.lg\:relative{position:relative}.lg\:hidden{display:none}.lg\:w-16{width:calc(var(--spacing)*16)}.lg\:max-w-4xl{max-width:var(--container-4xl)}.lg\:flex-1{flex:1}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:justify-end{justify-content:flex-end}}.dark\:border-blue-700:is(.dark *){border-color:var(--color-blue-700)}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-blue-950:is(.dark *){background-color:var(--color-blue-950)}.dark\:bg-blue-950\/20:is(.dark *){background-color:#16245633}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-950)20%,transparent)}}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-gray-950:is(.dark *){background-color:var(--color-gray-950)}.dark\:bg-green-950:is(.dark *){background-color:var(--color-green-950)}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:bg-red-950:is(.dark *){background-color:var(--color-red-950)}.dark\:bg-red-950\/20:is(.dark *){background-color:#46080933}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-red-950)20%,transparent)}}.dark\:text-blue-300:is(.dark *){color:var(--color-blue-300)}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-gray-300:is(.dark *){color:var(--color-gray-300)}.dark\:text-green-300:is(.dark *){color:var(--color-green-300)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-red-300:is(.dark *){color:var(--color-red-300)}.dark\:text-red-400:is(.dark *){color:var(--color-red-400)}.dark\:text-yellow-400:is(.dark *){color:var(--color-yellow-400)}@media (hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_svg\:not\(\[class\*\=\\\'size-\\\'\]\)\]\:size-4 svg:not([class*="'size-'"]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\\\'text-\\\'\]\)\]\:text-muted-foreground svg:not([class*="'text-'"]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:#fcfcfc;--foreground:#020618;--card:#fff;--card-foreground:#020618;--popover:#fff;--popover-foreground:#020618;--primary:#0f172b;--primary-foreground:#f8fafc;--secondary:#f1f5f9;--secondary-foreground:#0f172b;--muted:#f1f5f9;--muted-foreground:#62748e;--accent:#f1f5f9;--accent-foreground:#0f172b;--destructive:#e40014;--border:#e2e8f0;--input:#e2e8f0;--ring:#90a1b9;--chart-1:#f05100;--chart-2:#009588;--chart-3:#104e64;--chart-4:#fcbb00;--chart-5:#f99c00;--sidebar:#f8fafc;--sidebar-foreground:#020618;--sidebar-primary:#0f172b;--sidebar-primary-foreground:#f8fafc;--sidebar-accent:#f1f5f9;--sidebar-accent-foreground:#0f172b;--sidebar-border:#e2e8f0;--sidebar-ring:#90a1b9}@supports (color:lab(0% 0 0)){:root{--background:lab(98.84% 0 0);--foreground:lab(1.76974% 1.32743 -9.28855);--card:lab(100% 0 0);--card-foreground:lab(1.76974% 1.32743 -9.28855);--popover:lab(100% 0 0);--popover-foreground:lab(1.76974% 1.32743 -9.28855);--primary:lab(7.78673% 1.82346 -15.0537);--primary-foreground:lab(98.1434% -.369549 -1.05968);--secondary:lab(96.286% -.852466 -2.46847);--secondary-foreground:lab(7.78673% 1.82346 -15.0537);--muted:lab(96.286% -.852466 -2.46847);--muted-foreground:lab(48.0876% -2.03595 -16.5814);--accent:lab(96.286% -.852466 -2.46847);--accent-foreground:lab(7.78673% 1.82346 -15.0537);--destructive:lab(48.4493% 77.4328 61.5452);--border:lab(91.7353% -.998765 -4.76968);--input:lab(91.7353% -.998765 -4.76968);--ring:lab(65.5349% -2.25151 -14.5072);--chart-1:lab(57.1026% 64.2584 89.8886);--chart-2:lab(55.0223% -41.0774 -3.90277);--chart-3:lab(30.372% -13.1853 -18.7887);--chart-4:lab(80.1641% 16.6016 99.2089);--chart-5:lab(72.7183% 31.8672 97.9407);--sidebar:lab(98.1434% -.369549 -1.05968);--sidebar-foreground:lab(1.76974% 1.32743 -9.28855);--sidebar-primary:lab(7.78673% 1.82346 -15.0537);--sidebar-primary-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-accent:lab(96.286% -.852466 -2.46847);--sidebar-accent-foreground:lab(7.78673% 1.82346 -15.0537);--sidebar-border:lab(91.7353% -.998765 -4.76968);--sidebar-ring:lab(65.5349% -2.25151 -14.5072)}}.dark{--background:#020307;--foreground:#f8fafc;--card:#070b14;--card-foreground:#f8fafc;--popover:#070b14;--popover-foreground:#f8fafc;--primary:#76aaed;--primary-foreground:#f8fafc;--secondary:#1b222e;--secondary-foreground:#f8fafc;--muted:#1b222e;--muted-foreground:#72839a;--accent:#1b222e;--accent-foreground:#f8fafc;--destructive:#dc414a;--border:#1b222e;--input:#1b222e;--ring:#6a7282;--chart-1:#1447e6;--chart-2:#00bb7f;--chart-3:#f99c00;--chart-4:#ac4bff;--chart-5:#ff2357;--sidebar:#070b14;--sidebar-foreground:#f8fafc;--sidebar-primary:#1447e6;--sidebar-primary-foreground:#f8fafc;--sidebar-accent:#1b222e;--sidebar-accent-foreground:#f8fafc;--sidebar-border:#1b222e;--sidebar-ring:#6a7282}@supports (color:lab(0% 0 0)){.dark{--background:lab(.879473% .0693277 -1.61465);--foreground:lab(98.1434% -.369549 -1.05968);--card:lab(2.98047% .150263 -4.74351);--card-foreground:lab(98.1434% -.369549 -1.05968);--popover:lab(2.98047% .150263 -4.74351);--popover-foreground:lab(98.1434% -.369549 -1.05968);--primary:lab(68.0384% -3.53837 -39.6946);--primary-foreground:lab(98.1434% -.369549 -1.05968);--secondary:lab(12.8805% -.587493 -9.04602);--secondary-foreground:lab(98.1434% -.369549 -1.05968);--muted:lab(12.8805% -.587493 -9.04602);--muted-foreground:lab(53.9284% -2.13248 -14.4608);--accent:lab(12.8805% -.587493 -9.04602);--accent-foreground:lab(98.1434% -.369549 -1.05968);--destructive:lab(52.0859% 60.8796 32.2468);--border:lab(12.8805% -.587493 -9.04602);--input:lab(12.8805% -.587493 -9.04602);--ring:lab(47.7841% -.393212 -10.0268);--chart-1:lab(36.9089% 35.0961 -85.6872);--chart-2:lab(66.9756% -58.27 19.5419);--chart-3:lab(72.7183% 31.8672 97.9407);--chart-4:lab(52.0183% 66.11 -78.2316);--chart-5:lab(56.101% 79.4329 31.4532);--sidebar:lab(2.98047% .150263 -4.74351);--sidebar-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-primary:lab(36.9089% 35.0961 -85.6872);--sidebar-primary-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-accent:lab(12.8805% -.587493 -9.04602);--sidebar-accent-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-border:lab(12.8805% -.587493 -9.04602);--sidebar-ring:lab(47.7841% -.393212 -10.0268)}}@keyframes fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:.3s ease-out fade-in}aside nav a{transition:all .2s}aside nav a:hover button{transform:translate(4px)}@keyframes pulse-resource{0%,to{opacity:1}50%{opacity:.8}}.resource-pulse{animation:2s ease-in-out infinite pulse-resource}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}main[data-v-2b70a0a0]{scroll-behavior:smooth} diff --git a/docs/assets/index-BLxCTx9W.js b/docs/assets/index-BLxCTx9W.js new file mode 100644 index 0000000..4b04fb5 --- /dev/null +++ b/docs/assets/index-BLxCTx9W.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./OverviewView-C4I-SjLt.js","./vendor-others-DiSZfaku.js","./game-logic-B_TBzmsj.js","./game-config-D-D7cMgJ.js","./rolldown-runtime-CIDIeb-o.js","./vendor-others-BMPyaZWq.css","./vendor-reka-ui-ICOW9z5F.js","./vendor-vueuse-CXzdKKhY.js","./vendor-crypto-CQM8pryk.js","./vendor-utils-BlvnUqQX.js","./vendor-pinia-C_5mk-F1.js","./CardDescription-CtUtXM5o.js","./useGameConfig-chMIsHFg.js","./game-i18n-DEf7ySVe.js","./BuildingsView-zu1MPaUF.js","./vendor-icons-B6ER66fi.js","./AlertDialog-vN9u2C5f.js","./CardUnlockOverlay-BVmeYgHN.js","./ResearchView-9cX9kBtt.js","./vendor-vue-router-_-a8jZbv.js","./UnlockRequirement-CoN2_Hgq.js","./ShipyardView-D4UNn323.js","./DefenseView-qV0qTXQw.js","./FleetView-Br_OwWg4.js","./OfficersView-Dwb7TW1z.js","./BattleSimulatorView-BCwWxQsd.js","./BattleReportDialog-CsuxK00l.js","./TooltipProvider-Bx7lfIFp.js","./MessagesView-DeWAwjjT.js","./GalaxyView-BaUVuvAs.js","./SelectValue-BvfAhGU7.js","./SettingsView-CGxApjTn.js","./GMView-BpYTLGiZ.js"])))=>i.map(i=>d[i]); +import{i as e}from"./rolldown-runtime-CIDIeb-o.js";import{$ as t,A as n,At as r,B as i,Cn as a,Ct as o,D as s,Dn as c,Dt as l,En as u,Et as d,Ft as f,G as ee,Gt as te,H as ne,Jt as p,Kt as m,Mt as h,Nt as g,On as _,Ot as v,R as re,Tn as y,U as ie,Vt as b,W as ae,Wt as oe,X as se,Xt as ce,Y as le,Yt as x,_ as ue,_t as S,an as de,b as fe,bt as pe,ct as me,ft as he,g as ge,gt as _e,h as ve,hn as C,ht as w,in as T,jt as E,kt as D,l as ye,lt as O,mt as be,nt as xe,pt as Se,rt as Ce,tn as we,tt as Te,un as Ee,v as De,w as Oe,wt as ke,x as Ae,y as je,yt as k,z as Me}from"./game-logic-B_TBzmsj.js";import{n as Ne,r as A,t as Pe}from"./vendor-pinia-C_5mk-F1.js";import{i as Fe,n as Ie,r as Le,t as Re}from"./vendor-vue-router-_-a8jZbv.js";import{t as ze}from"./vendor-crypto-CQM8pryk.js";import{n as Be,r as Ve,t as He}from"./game-i18n-DEf7ySVe.js";import{R as Ue,c as j,t as We,z as Ge}from"./vendor-others-DiSZfaku.js";import{B as Ke,C as qe,F as Je,H as M,I as Ye,L as Xe,P as Ze,R as Qe,S as $e,T as et,U as tt,V as nt,W as rt,a as it,b as at,i as ot,n as st,o as ct,r as lt,t as ut,w as dt,x as ft,y as pt,z as mt}from"./vendor-reka-ui-ICOW9z5F.js";import{n as ht}from"./vendor-utils-BlvnUqQX.js";import{i as gt,n as _t,r as vt,t as yt}from"./vendor-vueuse-CXzdKKhY.js";import{A as bt,B as xt,C as St,E as Ct,F as wt,G as Tt,N as Et,O as Dt,P as Ot,S as kt,V as At,_ as jt,c as Mt,f as Nt,h as Pt,j as Ft,k as It,l as Lt,m as Rt,n as zt,o as Bt,p as Vt,r as Ht,t as Ut,u as Wt,w as Gt,x as Kt}from"./vendor-icons-B6ER66fi.js";import{c as qt,f as N,r as Jt}from"./game-config-D-D7cMgJ.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),``+new URL(`logo-Cz0cNqhe.svg`,import.meta.url).href;var P={name:`ogame-vue-ts`,title:`OGame-Vue-Ts`,qq:`920930589`,id:`2zBlHPUA6E`,author:`setube`,private:!0,version:`1.1.0`,buildDate:`2025-12-13T03:10:16.376Z`,type:`module`,scripts:{dev:`vite --port 25121`,build:`vue-tsc -b && vite build && node update-build-date.js`,preview:`vite preview`},dependencies:{"@tailwindcss/vite":`^4.1.17`,"@tanstack/vue-table":`^8.21.3`,"@vueuse/core":`^14.1.0`,"class-variance-authority":`^0.7.1`,clsx:`^2.1.1`,"crypto-js":`^4.2.0`,"file-saver":`^2.0.5`,"lucide-vue-next":`^0.556.0`,pinia:`^3.0.4`,"pinia-plugin-persistedstate":`^4.7.1`,"reka-ui":`^2.6.1`,"tailwind-merge":`^3.4.0`,tailwindcss:`^4.1.17`,vue:`^3.5.24`,"vue-router":`4`,"vue-sonner":`^2.0.9`},devDependencies:{"@types/crypto-js":`^4.2.2`,"@types/file-saver":`^2.0.7`,"@types/node":`^24.10.2`,"@vitejs/plugin-vue":`^6.0.1`,"@vue/tsconfig":`^0.8.1`,"tw-animate-css":`^1.4.0`,typescript:`~5.9.3`,vite:`npm:rolldown-vite@7.2.5`,"vue-tsc":`^3.1.4`},pnpm:{overrides:{vite:`npm:rolldown-vite@7.2.5`}},packageManager:`pnpm@10.13.1+sha512.37ebf1a5c7a30d5fabe0c5df44ee8da4c965ca0c5af3dbab28c3a1681b70a256218d05c81c9c0dcf767ef6b8551eb5b960042b9ed4300c59242336377e01cfad`},Yt=e(ze(),1);const Xt=e=>{try{let t=JSON.stringify(e);return Yt.default.AES.encrypt(t,P.name).toString()}catch(e){console.error(e)}return``},Zt=e=>{try{let t=Yt.default.AES.decrypt(e,P.name).toString(Yt.default.enc.Utf8);return JSON.parse(t)}catch(e){return console.error(e),{}}},Qt=A(`game`,{state:()=>({gameTime:Date.now(),isPaused:!1,player:{id:`player1`,name:``,planets:[],technologies:{},officers:{},researchQueue:[],fleetMissions:[],battleReports:[],spyReports:[]},currentPlanetId:``,isDark:``,locale:`zh-CN`}),getters:{currentPlanet(){return this.player.planets.find(e=>e.id===this.currentPlanetId)},getMoonForPlanet(){return e=>this.player.planets.find(t=>t.parentPlanetId===e&&t.isMoon)}},persist:{key:P.name,storage:localStorage,serializer:{serialize:e=>Xt(e),deserialize:e=>Zt(e)}}}),$t=A(`universe`,{state:()=>({planets:{},debrisFields:{}}),persist:{key:`${P.name}-universe`,storage:localStorage,serializer:{serialize:e=>Xt(e),deserialize:e=>Zt(e)}}});var F=C(!1);const en=()=>{let e=Qt();oe(()=>{e.isDark?F.value=e.isDark===`dark`:(F.value=window.matchMedia(`(prefers-color-scheme: dark)`).matches,e.isDark=F.value?`dark`:`light`),t()}),we(F,()=>{t(),e.isDark=F.value?`dark`:`light`});let t=()=>{F.value?document.documentElement.classList.add(`dark`):document.documentElement.classList.remove(`dark`)};return{isDark:F,toggleTheme:()=>{F.value=!F.value}}},I=()=>{let e=Qt(),t=d(()=>e.locale),n=d(()=>Ve[t.value]);return{t:e=>{let t=e.split(`.`),r=n.value;for(let n of t)if(r&&typeof r==`object`&&n in r)r=r[n];else return e;return typeof r==`string`?r:e},locale:t,setLocale:t=>{e.locale=t},messages:n}},L=(...e)=>ht(Ge(e));var R=g({__name:`Button`,props:{variant:{},size:{},class:{},asChild:{type:Boolean},as:{default:`button`}},setup(e){let t=e;return(n,r)=>(m(),v(a(nt),{"data-slot":`button`,as:e.as,"as-child":e.asChild,class:y(a(L)(a(tn)({variant:e.variant,size:e.size}),t.class))},{default:T(()=>[x(n.$slots,`default`)]),_:3},8,[`as`,`as-child`,`class`]))}});const tn=Ue(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});var z=g({__name:`Badge`,props:{asChild:{type:Boolean},as:{},variant:{},class:{}},setup(e){let t=e,n=j(t,`class`);return(r,i)=>(m(),v(a(nt),b({"data-slot":`badge`,class:a(L)(a(nn)({variant:e.variant}),t.class)},a(n)),{default:T(()=>[x(r.$slots,`default`)]),_:3},16,[`class`]))}});const nn=Ue(`inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90`,secondary:`border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90`,destructive:`border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`}},defaultVariants:{variant:`default`}});var rn=g({__name:`Progress`,props:{modelValue:{default:0},max:{},getValueLabel:{},getValueText:{},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=j(t,`class`);return(e,r)=>(m(),v(a(at),b({"data-slot":`progress`},a(n),{class:a(L)(`bg-primary/20 relative h-2 w-full overflow-hidden rounded-full`,t.class)}),{default:T(()=>[h(a(pt),{"data-slot":`progress-indicator`,class:`bg-primary h-full w-full flex-1 transition-all`,style:c(`transform: translateX(-${100-(t.modelValue??0)}%);`)},null,8,[`style`])]),_:1},16,[`class`]))}}),an=g({__name:`Popover`,props:{defaultOpen:{type:Boolean},open:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=M(e,t);return(e,t)=>(m(),v(a(et),b({"data-slot":`popover`},a(n)),{default:T(t=>[x(e.$slots,`default`,u(f(t)))]),_:3},16))}}),on=g({inheritAttrs:!1,__name:`PopoverContent`,props:{forceMount:{type:Boolean},side:{},sideOffset:{default:4},sideFlip:{type:Boolean},align:{default:`center`},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},disableOutsidePointerEvents:{type:Boolean},class:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=M(j(n,`class`),r);return(e,t)=>(m(),v(a(qe),null,{default:T(()=>[h(a(dt),b({"data-slot":`popover-content`},{...e.$attrs,...a(i)},{class:a(L)(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md origin-(--reka-popover-content-transform-origin) outline-hidden`,n.class)}),{default:T(()=>[x(e.$slots,`default`)]),_:3},16,[`class`])]),_:3}))}}),sn=g({__name:`PopoverTrigger`,props:{asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(m(),v(a($e),b({"data-slot":`popover-trigger`},t),{default:T(()=>[x(e.$slots,`default`)]),_:3},16))}}),cn=g({__name:`Sheet`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=M(e,t);return(e,t)=>(m(),v(a(Ke),b({"data-slot":`sheet`},a(n)),{default:T(t=>[x(e.$slots,`default`,u(f(t)))]),_:3},16))}}),ln=g({__name:`SheetOverlay`,props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=j(t,`class`);return(e,r)=>(m(),v(a(Ye),b({"data-slot":`sheet-overlay`,class:a(L)(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80`,t.class)},a(n)),{default:T(()=>[x(e.$slots,`default`)]),_:3},16,[`class`]))}}),un=g({inheritAttrs:!1,__name:`SheetContent`,props:{class:{},side:{default:`right`},forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=M(j(n,`class`,`side`),r);return(t,r)=>(m(),v(a(Je),null,{default:T(()=>[h(ln),h(a(Qe),b({"data-slot":`sheet-content`,class:a(L)(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500`,e.side===`right`&&`data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm`,e.side===`left`&&`data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm`,e.side===`top`&&`data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b`,e.side===`bottom`&&`data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t`,n.class)},{...t.$attrs,...a(i)}),{default:T(()=>[x(t.$slots,`default`),h(a(mt),{class:`ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none`},{default:T(()=>[h(a(zt),{class:`size-4`}),r[0]||=l(`span`,{class:`sr-only`},`Close`,-1)]),_:1})]),_:3},16,[`class`])]),_:3}))}}),dn=g({__name:`SheetDescription`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=j(t,`class`);return(e,r)=>(m(),v(a(Xe),b({"data-slot":`sheet-description`,class:a(L)(`text-muted-foreground text-sm`,t.class)},a(n)),{default:T(()=>[x(e.$slots,`default`)]),_:3},16,[`class`]))}}),fn=g({__name:`SheetHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`div`,{"data-slot":`sheet-header`,class:y(a(L)(`flex flex-col gap-1.5 p-4`,t.class))},[x(e.$slots,`default`)],2))}}),pn=g({__name:`SheetTitle`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=j(t,`class`);return(e,r)=>(m(),v(a(Ze),b({"data-slot":`sheet-title`,class:a(L)(`text-foreground font-semibold`,t.class)},a(n)),{default:T(()=>[x(e.$slots,`default`)]),_:3},16,[`class`]))}});const mn=`sidebar_state`,[hn,gn]=rt(`Sidebar`);var _n={class:`flex h-full w-full flex-col`},vn=[`data-state`,`data-collapsible`,`data-variant`,`data-side`],yn={"data-sidebar":`sidebar`,class:`bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm`},bn=g({inheritAttrs:!1,__name:`Sidebar`,props:{side:{default:`left`},variant:{default:`sidebar`},collapsible:{default:`offcanvas`},class:{}},setup(e){let t=e,{isMobile:n,state:i,openMobile:o,setOpenMobile:s}=hn();return(u,d)=>e.collapsible===`none`?(m(),r(`div`,b({key:0,"data-slot":`sidebar`,class:a(L)(`bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col`,t.class)},u.$attrs),[x(u.$slots,`default`)],16)):a(n)?(m(),v(a(cn),b({key:1,open:a(o)},u.$attrs,{"onUpdate:open":a(s)}),{default:T(()=>[h(a(un),{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,side:e.side,class:`bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden`,style:c({"--sidebar-width":a(`18rem`)})},{default:T(()=>[h(fn,{class:`sr-only`},{default:T(()=>[h(pn,null,{default:T(()=>[...d[0]||=[E(`Sidebar`,-1)]]),_:1}),h(dn,null,{default:T(()=>[...d[1]||=[E(`Displays the mobile sidebar.`,-1)]]),_:1})]),_:1}),l(`div`,_n,[x(u.$slots,`default`)])]),_:3},8,[`side`,`style`])]),_:3},16,[`open`,`onUpdate:open`])):(m(),r(`div`,{key:2,class:`group peer text-sidebar-foreground hidden md:block`,"data-slot":`sidebar`,"data-state":a(i),"data-collapsible":a(i)===`collapsed`?e.collapsible:``,"data-variant":e.variant,"data-side":e.side},[l(`div`,{class:y(a(L)(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,e.variant===`floating`||e.variant===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`))},null,2),l(`div`,b({class:a(L)(`fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex`,e.side===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,e.variant===`floating`||e.variant===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l`,t.class)},u.$attrs),[l(`div`,yn,[x(u.$slots,`default`)])],16)],8,vn))}}),xn=g({__name:`SidebarContent`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,class:y(a(L)(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,t.class))},[x(e.$slots,`default`)],2))}}),Sn=g({__name:`SidebarFooter`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,class:y(a(L)(`flex flex-col gap-2 p-2`,t.class))},[x(e.$slots,`default`)],2))}}),Cn=g({__name:`SidebarGroup`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,class:y(a(L)(`relative flex w-full min-w-0 flex-col p-2`,t.class))},[x(e.$slots,`default`)],2))}}),wn=g({__name:`SidebarHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,class:y(a(L)(`flex flex-col gap-2 p-2`,t.class))},[x(e.$slots,`default`)],2))}}),Tn=g({__name:`Input`,props:{defaultValue:{},modelValue:{},class:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,i=gt(n,`modelValue`,t,{passive:!0,defaultValue:n.defaultValue});return(e,t)=>de((m(),r(`input`,{"onUpdate:modelValue":t[0]||=e=>Ee(i)?i.value=e:null,"data-slot":`input`,class:y(a(L)(`file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,n.class))},null,2)),[[pe,a(i)]])}}),En=g({__name:`SidebarInset`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`main`,{"data-slot":`sidebar-inset`,class:y(a(L)(`bg-background relative flex w-full flex-1 flex-col`,`md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2`,t.class))},[x(e.$slots,`default`)],2))}}),Dn=g({__name:`SidebarMenu`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,class:y(a(L)(`flex w-full min-w-0 flex-col gap-1`,t.class))},[x(e.$slots,`default`)],2))}}),On=g({__name:`SidebarMenuBadge`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`div`,{"data-slot":`sidebar-menu-badge`,"data-sidebar":`menu-badge`,class:y(a(L)(`text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none`,`peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,t.class))},[x(e.$slots,`default`)],2))}}),kn=g({__name:`Tooltip`,props:{defaultOpen:{type:Boolean},open:{type:Boolean},delayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=M(e,t);return(e,t)=>(m(),v(a(ot),b({"data-slot":`tooltip`},a(n)),{default:T(t=>[x(e.$slots,`default`,u(f(t)))]),_:3},16))}}),An=g({inheritAttrs:!1,__name:`TooltipContent`,props:{forceMount:{type:Boolean},ariaLabel:{},asChild:{type:Boolean},as:{},side:{},sideOffset:{default:4},align:{},alignOffset:{},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},class:{}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,r=t,i=M(j(n,`class`),r);return(e,t)=>(m(),v(a(st),null,{default:T(()=>[h(a(lt),b({"data-slot":`tooltip-content`},{...a(i),...e.$attrs},{class:a(L)(`bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance`,n.class)}),{default:T(()=>[x(e.$slots,`default`),h(a(ct),{class:`bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`})]),_:3},16,[`class`])]),_:3}))}}),jn=g({__name:`TooltipTrigger`,props:{reference:{},asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(m(),v(a(ut),b({"data-slot":`tooltip-trigger`},t),{default:T(()=>[x(e.$slots,`default`)]),_:3},16))}}),Mn=g({__name:`SidebarMenuButtonChild`,props:{variant:{default:`default`},size:{default:`default`},isActive:{type:Boolean},class:{},asChild:{type:Boolean},as:{default:`button`}},setup(e){let t=e;return(n,r)=>(m(),v(a(nt),b({"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":e.size,"data-active":e.isActive,class:a(L)(a(Ln)({variant:e.variant,size:e.size}),t.class),as:e.as,"as-child":e.asChild},n.$attrs),{default:T(()=>[x(n.$slots,`default`)]),_:3},16,[`data-size`,`data-active`,`class`,`as`,`as-child`]))}}),Nn=g({inheritAttrs:!1,__name:`SidebarMenuButton`,props:{variant:{default:`default`},size:{default:`default`},isActive:{type:Boolean},class:{},asChild:{type:Boolean},as:{default:`button`},tooltip:{}},setup(e){let t=e,{isMobile:n,state:i}=hn(),s=j(t,`tooltip`);return(t,c)=>e.tooltip?(m(),v(a(kn),{key:1},{default:T(()=>[h(a(jn),{"as-child":``},{default:T(()=>[h(Mn,u(f({...a(s),...t.$attrs})),{default:T(()=>[x(t.$slots,`default`)]),_:3},16)]),_:3}),h(a(An),{side:`right`,align:`center`,hidden:a(i)!==`collapsed`||a(n)},{default:T(()=>[typeof e.tooltip==`string`?(m(),r(o,{key:0},[E(_(e.tooltip),1)],64)):(m(),v(ce(e.tooltip),{key:1}))]),_:1},8,[`hidden`])]),_:3})):(m(),v(Mn,u(b({key:0},{...a(s),...t.$attrs})),{default:T(()=>[x(t.$slots,`default`)]),_:3},16))}}),Pn=g({__name:`SidebarMenuItem`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,class:y(a(L)(`group/menu-item relative`,t.class))},[x(e.$slots,`default`)],2))}}),Fn=g({__name:`SidebarProvider`,props:{defaultOpen:{type:Boolean,default:!yt?.cookie.includes(`${mn}=false`)},open:{type:Boolean,default:void 0},class:{}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=t,i=vt(`(max-width: 768px)`),o=C(!1),s=gt(n,`open`,r,{defaultValue:n.defaultOpen??!1,passive:n.open===void 0});function c(e){s.value=e,document.cookie=`${mn}=${s.value}; path=/; max-age=604800`}function u(e){o.value=e}function f(){return i.value?u(!o.value):c(!s.value)}return _t(`keydown`,e=>{e.key===`b`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),f())}),gn({state:d(()=>s.value?`expanded`:`collapsed`),open:s,setOpen:c,isMobile:i,openMobile:o,setOpenMobile:u,toggleSidebar:f}),(e,t)=>(m(),v(a(it),{"delay-duration":0},{default:T(()=>[l(`div`,b({"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":a(`16rem`),"--sidebar-width-icon":a(`3rem`)},class:a(L)(`group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full`,n.class)},e.$attrs),[x(e.$slots,`default`)],16)]),_:3}))}}),In=g({__name:`SidebarTrigger`,props:{class:{}},setup(e){let t=e,{toggleSidebar:n}=hn();return(e,r)=>(m(),v(a(R),{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,size:`icon`,class:y(a(L)(`h-7 w-7`,t.class)),onClick:a(n)},{default:T(()=>[h(a(Kt)),r[0]||=l(`span`,{class:`sr-only`},`Toggle Sidebar`,-1)]),_:1},8,[`class`,`onClick`]))}});const Ln=Ue(`peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0`,{variants:{variant:{default:`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});var Rn=g({__name:`ResourceIcon`,props:{type:{},size:{default:`md`}},setup(e){let t={metal:`bg-gradient-to-br from-slate-400 to-slate-600`,crystal:`bg-gradient-to-br from-cyan-400 to-blue-600`,deuterium:`bg-gradient-to-br from-green-400 to-emerald-600`,darkMatter:`bg-gradient-to-br from-purple-600 to-indigo-900`,energy:`bg-gradient-to-br from-yellow-400 to-orange-500`},n={sm:`w-3 h-3`,md:`w-4 h-4`,lg:`w-5 h-5`};return(i,a)=>(m(),r(`div`,{class:y([t[e.type],n[e.size],`rounded shadow-sm`])},null,2))}}),zn={key:0,class:`fixed inset-0 z-50 flex items-center justify-center`},Bn={class:`relative bg-card border rounded-lg shadow-lg p-6 max-w-md w-full mx-4 z-10`},Vn={class:`text-lg font-semibold mb-2`},Hn={class:`text-sm text-muted-foreground mb-6`},Un={class:`flex justify-end gap-3`},Wn=g({__name:`ConfirmDialog`,setup(e,{expose:t}){let{t:n}=I(),i=C(!1),o=C(null),s=e=>{o.value=e,i.value=!0},c=()=>{o.value&&o.value.onConfirm(),i.value=!1},u=()=>{i.value=!1};return t({show:s}),(e,t)=>(m(),v(ke,{to:`body`},[i.value?(m(),r(`div`,zn,[l(`div`,{class:`fixed inset-0 bg-black/50`,onClick:u}),l(`div`,Bn,[l(`h2`,Vn,_(o.value?.title),1),l(`p`,Hn,_(o.value?.message),1),l(`div`,Un,[h(a(R),{onClick:u,variant:`outline`},{default:T(()=>[E(_(a(n)(`common.cancel`)),1)]),_:1}),h(a(R),{onClick:c,variant:`default`},{default:T(()=>[E(_(a(n)(`common.confirm`)),1)]),_:1})])])])):D(``,!0)]))}}),Gn=g({__name:`Dialog`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=M(e,t);return(e,t)=>(m(),v(a(Ke),b({"data-slot":`dialog`},a(n)),{default:T(t=>[x(e.$slots,`default`,u(f(t)))]),_:3},16))}}),Kn=g({__name:`DialogOverlay`,props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=j(t,`class`);return(e,r)=>(m(),v(a(Ye),b({"data-slot":`dialog-overlay`},a(n),{class:a(L)(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80`,t.class)}),{default:T(()=>[x(e.$slots,`default`)]),_:3},16,[`class`]))}}),qn=g({inheritAttrs:!1,__name:`DialogContent`,props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{},showCloseButton:{type:Boolean,default:!0}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=M(j(n,`class`),r);return(t,r)=>(m(),v(a(Je),null,{default:T(()=>[h(Kn),h(a(Qe),b({"data-slot":`dialog-content`},{...t.$attrs,...a(i)},{class:a(L)(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg`,n.class)}),{default:T(()=>[x(t.$slots,`default`),e.showCloseButton?(m(),v(a(mt),{key:0,"data-slot":`dialog-close`,class:`ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`},{default:T(()=>[h(a(zt)),r[0]||=l(`span`,{class:`sr-only`},`Close`,-1)]),_:1})):D(``,!0)]),_:3},16,[`class`])]),_:3}))}}),B=g({__name:`DialogDescription`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=tt(j(t,`class`));return(e,r)=>(m(),v(a(Xe),b({"data-slot":`dialog-description`},a(n),{class:a(L)(`text-muted-foreground text-sm`,t.class)}),{default:T(()=>[x(e.$slots,`default`)]),_:3},16,[`class`]))}}),V=g({__name:`DialogHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`div`,{"data-slot":`dialog-header`,class:y(a(L)(`flex flex-col gap-2 text-center sm:text-left`,t.class))},[x(e.$slots,`default`)],2))}}),H=g({__name:`DialogTitle`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=tt(j(t,`class`));return(e,r)=>(m(),v(a(Ze),b({"data-slot":`dialog-title`},a(n),{class:a(L)(`text-lg leading-none font-semibold`,t.class)}),{default:T(()=>[x(e.$slots,`default`)]),_:3},16,[`class`]))}});const Jn=A(`detailDialog`,{state:()=>({isOpen:!1,type:null,itemType:null,currentLevel:void 0}),actions:{openBuilding(e,t){this.isOpen=!0,this.type=`building`,this.itemType=e,this.currentLevel=t},openTechnology(e,t){this.isOpen=!0,this.type=`technology`,this.itemType=e,this.currentLevel=t},openShip(e){this.isOpen=!0,this.type=`ship`,this.itemType=e,this.currentLevel=void 0},openDefense(e){this.isOpen=!0,this.type=`defense`,this.itemType=e,this.currentLevel=void 0},close(){this.isOpen=!1,this.type=null,this.itemType=null,this.currentLevel=void 0}}});var Yn={"data-slot":`table-container`,class:`relative w-full overflow-auto`},Xn=g({__name:`Table`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`div`,Yn,[l(`table`,{"data-slot":`table`,class:y(a(L)(`w-full caption-bottom text-sm`,t.class))},[x(e.$slots,`default`)],2)]))}}),Zn=g({__name:`TableBody`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`tbody`,{"data-slot":`table-body`,class:y(a(L)(`[&_tr:last-child]:border-0`,t.class))},[x(e.$slots,`default`)],2))}}),U=g({__name:`TableCell`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`td`,{"data-slot":`table-cell`,class:y(a(L)(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,t.class))},[x(e.$slots,`default`)],2))}}),W=g({__name:`TableRow`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`tr`,{"data-slot":`table-row`,class:y(a(L)(`hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors`,t.class))},[x(e.$slots,`default`)],2))}}),G=g({__name:`TableHead`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`th`,{"data-slot":`table-head`,class:y(a(L)(`text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,t.class))},[x(e.$slots,`default`)],2))}}),Qn=g({__name:`TableHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`thead`,{"data-slot":`table-header`,class:y(a(L)(`[&_tr]:border-b`,t.class))},[x(e.$slots,`default`)],2))}}),K=g({__name:`Card`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`div`,{"data-slot":`card`,class:y(a(L)(`bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm`,t.class))},[x(e.$slots,`default`)],2))}}),q=g({__name:`CardContent`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`div`,{"data-slot":`card-content`,class:y(a(L)(`px-6`,t.class))},[x(e.$slots,`default`)],2))}}),J=g({__name:`CardHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`div`,{"data-slot":`card-header`,class:y(a(L)(`@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6`,t.class))},[x(e.$slots,`default`)],2))}}),Y=g({__name:`CardTitle`,props:{class:{}},setup(e){let t=e;return(e,n)=>(m(),r(`h3`,{"data-slot":`card-title`,class:y(a(L)(`leading-none font-semibold`,t.class))},[x(e.$slots,`default`)],2))}}),$n={class:`cursor-pointer underline decoration-dotted underline-offset-4 touch-manipulation`},er={class:`font-mono text-sm`},X=g({__name:`NumberWithTooltip`,props:{value:{}},setup(e){let t=e,n=d(()=>t.value.toLocaleString()),r=d(()=>{let e=t.value;if(e<1e3)return e.toString();if(e<1e6){let t=e/1e3;return t%1==0?`${t}K`:`${t.toFixed(1)}K`}if(e<1e9){let t=e/1e6;return t%1==0?`${t}M`:`${t.toFixed(1)}M`}let n=e/1e9;return n%1==0?`${n}B`:`${n.toFixed(1)}B`});return(e,t)=>(m(),v(a(an),null,{default:T(()=>[h(a(sn),{"as-child":``},{default:T(()=>[l(`span`,$n,_(r.value),1)]),_:1}),h(a(on),{class:`w-auto p-2`,side:`top`,align:`center`},{default:T(()=>[l(`p`,er,_(n.value),1)]),_:1})]),_:1}))}});const Z=(e,t=2)=>e>=1e9?(e/1e9).toFixed(t)+`B`:e>=1e6?(e/1e6).toFixed(t)+`M`:e>=1e3?(e/1e3).toFixed(t)+`K`:Math.floor(e).toString(),tr=(e,t)=>{let n=e/t;return n>=1?`text-red-600 dark:text-red-400`:n>=.7?`text-yellow-600 dark:text-yellow-400`:``},Q=e=>{let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60),i=Math.floor(e%60);return t>0?`${t}:${n.toString().padStart(2,`0`)}:${r.toString().padStart(2,`0`)}:${i.toString().padStart(2,`0`)}`:`${n.toString().padStart(2,`0`)}:${r.toString().padStart(2,`0`)}:${i.toString().padStart(2,`0`)}`},nr=e=>new Date(e).toLocaleString(`zh-CN`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}),rr=(e,t)=>e{let e=n.currentLevel+10,t=[];for(let r=n.currentLevel;r<=e;r++)t.push(r);return t}),s=e=>{if(e===0)return{cost:{metal:0,crystal:0,deuterium:0},buildTime:0,production:0,consumption:0,points:0};let t=me(n.buildingType,e),r=O(n.buildingType,e),i=0,a=0;n.buildingType===`metalMine`?i=Math.floor(1500*e*1.5**e):n.buildingType===`crystalMine`?i=Math.floor(1e3*e*1.5**e):n.buildingType===`deuteriumSynthesizer`&&(i=Math.floor(500*e*1.5**e)),n.buildingType===`solarPlant`&&(i=Math.floor(50*e*1.1**e)),[`metalMine`,`crystalMine`,`deuteriumSynthesizer`].includes(n.buildingType)&&(a=Math.floor(10*e*1.1**e));let o=he(n.buildingType,e-1,e);return{cost:t,buildTime:r,production:i,consumption:a,points:o}},c=d(()=>{let e=0,t=0,n=0,r=0;for(let a of i.value){if(a===0)continue;let i=s(a);e+=i.cost.metal,t+=i.cost.crystal,n+=i.cost.deuterium,r+=i.points}return{metal:e,crystal:t,deuterium:n,points:r}});return(n,u)=>(m(),r(`div`,ir,[l(`div`,ar,[h(a(Xn),null,{default:T(()=>[h(a(Qn),null,{default:T(()=>[h(a(W),null,{default:T(()=>[h(a(G),{class:`w-20 text-center`},{default:T(()=>[E(_(a(t)(`buildings.levelRange`)),1)]),_:1}),h(a(G),{class:`text-center`},{default:T(()=>[E(_(a(t)(`resources.metal`)),1)]),_:1}),h(a(G),{class:`text-center`},{default:T(()=>[E(_(a(t)(`resources.crystal`)),1)]),_:1}),h(a(G),{class:`text-center`},{default:T(()=>[E(_(a(t)(`resources.deuterium`)),1)]),_:1}),h(a(G),{class:`text-center`},{default:T(()=>[E(_(a(t)(`buildings.buildTime`)),1)]),_:1}),h(a(G),{class:`text-center`},{default:T(()=>[E(_(a(t)(`buildings.production`)),1)]),_:1}),h(a(G),{class:`text-center`},{default:T(()=>[E(_(a(t)(`buildings.consumption`)),1)]),_:1}),h(a(G),{class:`text-center`},{default:T(()=>[E(_(a(t)(`player.points`)),1)]),_:1})]),_:1})]),_:1}),h(a(Zn),null,{default:T(()=>[(m(!0),r(o,null,p(i.value,n=>(m(),v(a(W),{key:n,class:y({"bg-muted/50":n===e.currentLevel})},{default:T(()=>[h(a(U),{class:`text-center font-medium`},{default:T(()=>[n===e.currentLevel?(m(),v(a(z),{key:0,variant:`default`},{default:T(()=>[E(_(n),1)]),_:2},1024)):(m(),r(`span`,or,_(n),1))]),_:2},1024),h(a(U),{class:`text-center text-sm`},{default:T(()=>[h(X,{value:s(n).cost.metal},null,8,[`value`])]),_:2},1024),h(a(U),{class:`text-center text-sm`},{default:T(()=>[h(X,{value:s(n).cost.crystal},null,8,[`value`])]),_:2},1024),h(a(U),{class:`text-center text-sm`},{default:T(()=>[h(X,{value:s(n).cost.deuterium},null,8,[`value`])]),_:2},1024),h(a(U),{class:`text-center text-sm`},{default:T(()=>[E(_(a(Q)(s(n).buildTime)),1)]),_:2},1024),h(a(U),{class:`text-center text-sm`},{default:T(()=>[s(n).production>0?(m(),r(`span`,sr,[u[0]||=E(` + `,-1),h(X,{value:s(n).production},null,8,[`value`]),E(` /`+_(a(t)(`resources.perHour`)),1)])):(m(),r(`span`,cr,`-`))]),_:2},1024),h(a(U),{class:`text-center text-sm`},{default:T(()=>[s(n).consumption>0?(m(),r(`span`,lr,[u[1]||=E(` - `,-1),h(X,{value:s(n).consumption},null,8,[`value`])])):(m(),r(`span`,ur,`-`))]),_:2},1024),h(a(U),{class:`text-center text-sm`},{default:T(()=>[l(`span`,dr,[u[2]||=E(` + `,-1),h(X,{value:s(n).points},null,8,[`value`])])]),_:2},1024)]),_:2},1032,[`class`]))),128))]),_:1})]),_:1})]),l(`div`,fr,[h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm`},{default:T(()=>[E(_(a(t)(`buildings.totalCost`)),1)]),_:1})]),_:1}),h(a(q),{class:`space-y-2`},{default:T(()=>[l(`div`,pr,[l(`span`,mr,_(a(t)(`resources.metal`))+`:`,1),l(`span`,hr,[h(X,{value:c.value.metal},null,8,[`value`])])]),l(`div`,gr,[l(`span`,_r,_(a(t)(`resources.crystal`))+`:`,1),l(`span`,vr,[h(X,{value:c.value.crystal},null,8,[`value`])])]),l(`div`,yr,[l(`span`,br,_(a(t)(`resources.deuterium`))+`:`,1),l(`span`,xr,[h(X,{value:c.value.deuterium},null,8,[`value`])])])]),_:1})]),_:1}),h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm`},{default:T(()=>[E(_(a(t)(`buildings.totalPoints`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,Sr,[h(X,{value:c.value.points},null,8,[`value`])]),l(`p`,Cr,_(a(t)(`buildings.levelRange`))+`: `+_(Math.max(0,e.currentLevel-10))+` - `+_(Math.min(e.currentLevel+10,e.currentLevel+10)),1)]),_:1})]),_:1})])]))}}),Tr={class:`space-y-4`},Er={class:`border rounded-lg overflow-hidden`},Dr={key:1},Or={class:`text-primary font-medium`},kr={class:`grid grid-cols-2 gap-4`},Ar={class:`flex items-center justify-between text-sm`},jr={class:`text-muted-foreground`},Mr={class:`font-medium`},Nr={class:`flex items-center justify-between text-sm`},Pr={class:`text-muted-foreground`},Fr={class:`font-medium`},Ir={class:`flex items-center justify-between text-sm`},Lr={class:`text-muted-foreground`},Rr={class:`font-medium`},zr={class:`text-3xl font-bold text-primary`},Br={class:`text-xs text-muted-foreground mt-1`},Vr=g({__name:`TechnologyDetailView`,props:{technologyType:{},currentLevel:{}},setup(e){let{t}=I(),n=e,i=d(()=>{let e=n.currentLevel+10,t=[];for(let r=n.currentLevel;r<=e;r++)t.push(r);return t}),s=e=>e===0?{cost:{metal:0,crystal:0,deuterium:0},researchTime:0,points:0}:{cost:_e(n.technologyType,e),researchTime:S(n.technologyType,e-1),points:w(n.technologyType,e-1,e)},c=d(()=>{let e=0,t=0,n=0,r=0;for(let a of i.value){if(a===0)continue;let i=s(a);e+=i.cost.metal,t+=i.cost.crystal,n+=i.cost.deuterium,r+=i.points}return{metal:e,crystal:t,deuterium:n,points:r}});return(n,u)=>(m(),r(`div`,Tr,[l(`div`,Er,[h(a(Xn),null,{default:T(()=>[h(a(Qn),null,{default:T(()=>[h(a(W),null,{default:T(()=>[h(a(G),{class:`w-20 text-center`},{default:T(()=>[E(_(a(t)(`research.levelRange`)),1)]),_:1}),h(a(G),{class:`text-center`},{default:T(()=>[E(_(a(t)(`resources.metal`)),1)]),_:1}),h(a(G),{class:`text-center`},{default:T(()=>[E(_(a(t)(`resources.crystal`)),1)]),_:1}),h(a(G),{class:`text-center`},{default:T(()=>[E(_(a(t)(`resources.deuterium`)),1)]),_:1}),h(a(G),{class:`text-center`},{default:T(()=>[E(_(a(t)(`research.researchTime`)),1)]),_:1}),h(a(G),{class:`text-center`},{default:T(()=>[E(_(a(t)(`player.points`)),1)]),_:1})]),_:1})]),_:1}),h(a(Zn),null,{default:T(()=>[(m(!0),r(o,null,p(i.value,t=>(m(),v(a(W),{key:t,class:y({"bg-muted/50":t===e.currentLevel})},{default:T(()=>[h(a(U),{class:`text-center font-medium`},{default:T(()=>[t===e.currentLevel?(m(),v(a(z),{key:0,variant:`default`},{default:T(()=>[E(_(t),1)]),_:2},1024)):(m(),r(`span`,Dr,_(t),1))]),_:2},1024),h(a(U),{class:`text-center text-sm`},{default:T(()=>[h(X,{value:s(t).cost.metal},null,8,[`value`])]),_:2},1024),h(a(U),{class:`text-center text-sm`},{default:T(()=>[h(X,{value:s(t).cost.crystal},null,8,[`value`])]),_:2},1024),h(a(U),{class:`text-center text-sm`},{default:T(()=>[h(X,{value:s(t).cost.deuterium},null,8,[`value`])]),_:2},1024),h(a(U),{class:`text-center text-sm`},{default:T(()=>[E(_(a(Q)(s(t).researchTime)),1)]),_:2},1024),h(a(U),{class:`text-center text-sm`},{default:T(()=>[l(`span`,Or,[u[0]||=E(` + `,-1),h(X,{value:s(t).points},null,8,[`value`])])]),_:2},1024)]),_:2},1032,[`class`]))),128))]),_:1})]),_:1})]),l(`div`,kr,[h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm`},{default:T(()=>[E(_(a(t)(`research.totalCost`)),1)]),_:1})]),_:1}),h(a(q),{class:`space-y-2`},{default:T(()=>[l(`div`,Ar,[l(`span`,jr,_(a(t)(`resources.metal`))+`:`,1),l(`span`,Mr,[h(X,{value:c.value.metal},null,8,[`value`])])]),l(`div`,Nr,[l(`span`,Pr,_(a(t)(`resources.crystal`))+`:`,1),l(`span`,Fr,[h(X,{value:c.value.crystal},null,8,[`value`])])]),l(`div`,Ir,[l(`span`,Lr,_(a(t)(`resources.deuterium`))+`:`,1),l(`span`,Rr,[h(X,{value:c.value.deuterium},null,8,[`value`])])])]),_:1})]),_:1}),h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm`},{default:T(()=>[E(_(a(t)(`research.totalPoints`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,zr,[h(X,{value:c.value.points},null,8,[`value`])]),l(`p`,Br,_(a(t)(`research.levelRange`))+`: `+_(Math.max(0,e.currentLevel-10))+` - `+_(Math.min(e.currentLevel+10,e.currentLevel+10)),1)]),_:1})]),_:1})])]))}}),Hr=g({__name:`Label`,props:{for:{},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=j(t,`class`);return(e,r)=>(m(),v(a(ft),b({"data-slot":`label`},a(n),{class:a(L)(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,t.class)}),{default:T(()=>[x(e.$slots,`default`)]),_:3},16,[`class`]))}}),Ur={class:`space-y-4`},Wr={class:`grid grid-cols-2 md:grid-cols-3 gap-4`},Gr={class:`text-2xl font-bold`},Kr={class:`text-2xl font-bold`},qr={class:`text-2xl font-bold`},Jr={class:`text-2xl font-bold`},Yr={class:`text-2xl font-bold`},Xr={class:`text-2xl font-bold`},Zr={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Qr={key:0,class:`flex items-center justify-between text-sm`},$r={class:`text-muted-foreground`},ei={class:`font-medium`},ti={key:1,class:`flex items-center justify-between text-sm`},ni={class:`text-muted-foreground`},ri={class:`font-medium`},ii={key:2,class:`flex items-center justify-between text-sm`},ai={class:`text-muted-foreground`},oi={class:`font-medium`},si={class:`flex items-center justify-between text-sm pt-2 border-t`},ci={class:`text-muted-foreground`},li={class:`font-bold text-primary`},ui={class:`text-3xl font-bold`},di={class:`text-xs text-muted-foreground mt-2`},fi={class:`flex items-center gap-4`},pi={class:`grid grid-cols-2 gap-4 pt-4 border-t`},mi={class:`space-y-2`},hi={class:`text-sm text-muted-foreground`},gi={class:`space-y-1 text-sm`},_i={class:`flex justify-between`},vi={class:`font-medium`},yi={class:`flex justify-between`},bi={class:`font-medium`},xi={class:`flex justify-between`},Si={class:`font-medium`},Ci={class:`space-y-2`},wi={class:`text-sm text-muted-foreground`},Ti={class:`text-xl font-bold`},Ei={class:`text-xs text-muted-foreground`},Di=g({__name:`ShipDetailView`,props:{shipType:{}},setup(e){let{t}=I(),n=e,i=d(()=>qt[n.shipType]),o=C(1),s=d(()=>be(n.shipType,1)),c=d(()=>({metal:i.value.cost.metal*o.value,crystal:i.value.cost.crystal*o.value,deuterium:i.value.cost.deuterium*o.value})),u=d(()=>be(n.shipType,o.value));return(e,n)=>(m(),r(`div`,Ur,[l(`div`,Wr,[h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm flex items-center gap-2`},{default:T(()=>[h(a(Mt),{class:`h-4 w-4`}),E(` `+_(a(t)(`shipyard.attack`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,Gr,[h(X,{value:i.value.attack},null,8,[`value`])])]),_:1})]),_:1}),h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm flex items-center gap-2`},{default:T(()=>[h(a(Vt),{class:`h-4 w-4`}),E(` `+_(a(t)(`shipyard.shield`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,Kr,[h(X,{value:i.value.shield},null,8,[`value`])])]),_:1})]),_:1}),h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm flex items-center gap-2`},{default:T(()=>[h(a(Rt),{class:`h-4 w-4`}),E(` `+_(a(t)(`shipyard.armor`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,qr,[h(X,{value:i.value.armor},null,8,[`value`])])]),_:1})]),_:1}),h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm flex items-center gap-2`},{default:T(()=>[h(a(Ut),{class:`h-4 w-4`}),E(` `+_(a(t)(`shipyard.speed`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,Jr,[h(X,{value:i.value.speed},null,8,[`value`])])]),_:1})]),_:1}),h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm flex items-center gap-2`},{default:T(()=>[h(a(kt),{class:`h-4 w-4`}),E(` `+_(a(t)(`shipyard.cargoCapacity`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,Yr,[h(X,{value:i.value.cargoCapacity},null,8,[`value`])])]),_:1})]),_:1}),h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm flex items-center gap-2`},{default:T(()=>[h(a(Ot),{class:`h-4 w-4`}),E(` `+_(a(t)(`shipyard.fuelConsumption`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,Xr,[h(X,{value:i.value.fuelConsumption},null,8,[`value`])])]),_:1})]),_:1})]),l(`div`,Zr,[h(a(K),null,{default:T(()=>[h(a(J),null,{default:T(()=>[h(a(Y),{class:`text-sm`},{default:T(()=>[E(_(a(t)(`shipyard.buildCost`)),1)]),_:1})]),_:1}),h(a(q),{class:`space-y-2`},{default:T(()=>[i.value.cost.metal>0?(m(),r(`div`,Qr,[l(`span`,$r,_(a(t)(`resources.metal`))+`:`,1),l(`span`,ei,[h(X,{value:i.value.cost.metal},null,8,[`value`])])])):D(``,!0),i.value.cost.crystal>0?(m(),r(`div`,ti,[l(`span`,ni,_(a(t)(`resources.crystal`))+`:`,1),l(`span`,ri,[h(X,{value:i.value.cost.crystal},null,8,[`value`])])])):D(``,!0),i.value.cost.deuterium>0?(m(),r(`div`,ii,[l(`span`,ai,_(a(t)(`resources.deuterium`))+`:`,1),l(`span`,oi,[h(X,{value:i.value.cost.deuterium},null,8,[`value`])])])):D(``,!0),l(`div`,si,[l(`span`,ci,_(a(t)(`player.points`))+`:`,1),l(`span`,li,[h(X,{value:s.value},null,8,[`value`])])])]),_:1})]),_:1}),h(a(K),null,{default:T(()=>[h(a(J),null,{default:T(()=>[h(a(Y),{class:`text-sm`},{default:T(()=>[E(_(a(t)(`shipyard.buildTime`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,ui,_(a(Q)(i.value.buildTime)),1),l(`p`,di,_(a(t)(`shipyard.perUnit`)),1)]),_:1})]),_:1})]),h(a(K),null,{default:T(()=>[h(a(J),null,{default:T(()=>[h(a(Y),{class:`text-sm`},{default:T(()=>[E(_(a(t)(`shipyard.batchCalculator`)),1)]),_:1})]),_:1}),h(a(q),{class:`space-y-4`},{default:T(()=>[l(`div`,fi,[h(a(Hr),{class:`w-20`},{default:T(()=>[E(_(a(t)(`shipyard.quantity`))+`:`,1)]),_:1}),h(a(Tn),{modelValue:o.value,"onUpdate:modelValue":n[0]||=e=>o.value=e,modelModifiers:{number:!0},type:`number`,min:`1`,class:`flex-1`},null,8,[`modelValue`])]),l(`div`,pi,[l(`div`,mi,[l(`p`,hi,_(a(t)(`shipyard.totalCost`))+`:`,1),l(`div`,gi,[l(`div`,_i,[l(`span`,null,_(a(t)(`resources.metal`))+`:`,1),l(`span`,vi,[h(X,{value:c.value.metal},null,8,[`value`])])]),l(`div`,yi,[l(`span`,null,_(a(t)(`resources.crystal`))+`:`,1),l(`span`,bi,[h(X,{value:c.value.crystal},null,8,[`value`])])]),l(`div`,xi,[l(`span`,null,_(a(t)(`resources.deuterium`))+`:`,1),l(`span`,Si,[h(X,{value:c.value.deuterium},null,8,[`value`])])])])]),l(`div`,Ci,[l(`p`,wi,_(a(t)(`shipyard.totalTime`))+`:`,1),l(`div`,Ti,_(a(Q)(i.value.buildTime*o.value)),1),l(`p`,Ei,[E(_(a(t)(`player.points`))+`: + `,1),h(X,{value:u.value},null,8,[`value`])])])])]),_:1})]),_:1})]))}}),Oi={class:`space-y-4`},ki={class:`grid grid-cols-2 md:grid-cols-3 gap-4`},Ai={class:`text-2xl font-bold`},ji={class:`text-2xl font-bold`},Mi={class:`text-2xl font-bold`},Ni={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Pi={key:0,class:`flex items-center justify-between text-sm`},Fi={class:`text-muted-foreground`},Ii={class:`font-medium`},Li={key:1,class:`flex items-center justify-between text-sm`},Ri={class:`text-muted-foreground`},zi={class:`font-medium`},Bi={key:2,class:`flex items-center justify-between text-sm`},Vi={class:`text-muted-foreground`},Hi={class:`font-medium`},Ui={class:`flex items-center justify-between text-sm pt-2 border-t`},Wi={class:`text-muted-foreground`},Gi={class:`font-bold text-primary`},Ki={class:`text-3xl font-bold`},qi={class:`text-xs text-muted-foreground mt-2`},Ji={class:`flex items-center gap-4`},Yi={class:`grid grid-cols-2 gap-4 pt-4 border-t`},Xi={class:`space-y-2`},Zi={class:`text-sm text-muted-foreground`},Qi={class:`space-y-1 text-sm`},$i={class:`flex justify-between`},ea={class:`font-medium`},ta={class:`flex justify-between`},na={class:`font-medium`},ra={class:`flex justify-between`},ia={class:`font-medium`},aa={class:`space-y-2`},oa={class:`text-sm text-muted-foreground`},sa={class:`text-xl font-bold`},ca={class:`text-xs text-muted-foreground`},la=g({__name:`DefenseDetailView`,props:{defenseType:{}},setup(e){let{t}=I(),n=e,i=d(()=>Jt[n.defenseType]),o=C(1),s=d(()=>Se(n.defenseType,1)),c=d(()=>({metal:i.value.cost.metal*o.value,crystal:i.value.cost.crystal*o.value,deuterium:i.value.cost.deuterium*o.value})),u=d(()=>Se(n.defenseType,o.value));return(e,n)=>(m(),r(`div`,Oi,[l(`div`,ki,[h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm flex items-center gap-2`},{default:T(()=>[h(a(Mt),{class:`h-4 w-4`}),E(` `+_(a(t)(`defense.attack`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,Ai,[h(X,{value:i.value.attack},null,8,[`value`])])]),_:1})]),_:1}),h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm flex items-center gap-2`},{default:T(()=>[h(a(Vt),{class:`h-4 w-4`}),E(` `+_(a(t)(`defense.shield`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,ji,[h(X,{value:i.value.shield},null,8,[`value`])])]),_:1})]),_:1}),h(a(K),null,{default:T(()=>[h(a(J),{class:`pb-3`},{default:T(()=>[h(a(Y),{class:`text-sm flex items-center gap-2`},{default:T(()=>[h(a(Rt),{class:`h-4 w-4`}),E(` `+_(a(t)(`defense.armor`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,Mi,[h(X,{value:i.value.armor},null,8,[`value`])])]),_:1})]),_:1})]),l(`div`,Ni,[h(a(K),null,{default:T(()=>[h(a(J),null,{default:T(()=>[h(a(Y),{class:`text-sm`},{default:T(()=>[E(_(a(t)(`defense.buildCost`)),1)]),_:1})]),_:1}),h(a(q),{class:`space-y-2`},{default:T(()=>[i.value.cost.metal>0?(m(),r(`div`,Pi,[l(`span`,Fi,_(a(t)(`resources.metal`))+`:`,1),l(`span`,Ii,[h(X,{value:i.value.cost.metal},null,8,[`value`])])])):D(``,!0),i.value.cost.crystal>0?(m(),r(`div`,Li,[l(`span`,Ri,_(a(t)(`resources.crystal`))+`:`,1),l(`span`,zi,[h(X,{value:i.value.cost.crystal},null,8,[`value`])])])):D(``,!0),i.value.cost.deuterium>0?(m(),r(`div`,Bi,[l(`span`,Vi,_(a(t)(`resources.deuterium`))+`:`,1),l(`span`,Hi,[h(X,{value:i.value.cost.deuterium},null,8,[`value`])])])):D(``,!0),l(`div`,Ui,[l(`span`,Wi,_(a(t)(`player.points`))+`:`,1),l(`span`,Gi,[h(X,{value:s.value},null,8,[`value`])])])]),_:1})]),_:1}),h(a(K),null,{default:T(()=>[h(a(J),null,{default:T(()=>[h(a(Y),{class:`text-sm`},{default:T(()=>[E(_(a(t)(`defense.buildTime`)),1)]),_:1})]),_:1}),h(a(q),null,{default:T(()=>[l(`div`,Ki,_(a(Q)(i.value.buildTime)),1),l(`p`,qi,_(a(t)(`defense.perUnit`)),1)]),_:1})]),_:1})]),h(a(K),null,{default:T(()=>[h(a(J),null,{default:T(()=>[h(a(Y),{class:`text-sm`},{default:T(()=>[E(_(a(t)(`defense.batchCalculator`)),1)]),_:1})]),_:1}),h(a(q),{class:`space-y-4`},{default:T(()=>[l(`div`,Ji,[h(a(Hr),{class:`w-20`},{default:T(()=>[E(_(a(t)(`defense.quantity`))+`:`,1)]),_:1}),h(a(Tn),{modelValue:o.value,"onUpdate:modelValue":n[0]||=e=>o.value=e,modelModifiers:{number:!0},type:`number`,min:`1`,class:`flex-1`},null,8,[`modelValue`])]),l(`div`,Yi,[l(`div`,Xi,[l(`p`,Zi,_(a(t)(`defense.totalCost`))+`:`,1),l(`div`,Qi,[l(`div`,$i,[l(`span`,null,_(a(t)(`resources.metal`))+`:`,1),l(`span`,ea,[h(X,{value:c.value.metal},null,8,[`value`])])]),l(`div`,ta,[l(`span`,null,_(a(t)(`resources.crystal`))+`:`,1),l(`span`,na,[h(X,{value:c.value.crystal},null,8,[`value`])])]),l(`div`,ra,[l(`span`,null,_(a(t)(`resources.deuterium`))+`:`,1),l(`span`,ia,[h(X,{value:c.value.deuterium},null,8,[`value`])])])])]),l(`div`,aa,[l(`p`,oa,_(a(t)(`defense.totalTime`))+`:`,1),l(`div`,sa,_(a(Q)(i.value.buildTime*o.value)),1),l(`p`,ca,[E(_(a(t)(`player.points`))+`: + `,1),h(X,{value:u.value},null,8,[`value`])])])])]),_:1})]),_:1})]))}}),ua={class:`overflow-y-auto px-6 pb-6`},da={class:`overflow-y-auto px-6 pb-6`},fa={class:`overflow-y-auto px-6 pb-6`},pa={class:`overflow-y-auto px-6 pb-6`},ma=g({__name:`DetailDialog`,setup(e){let{t}=I(),n=Jn(),i=e=>{e||n.close()};return(e,s)=>(m(),v(a(Gn),{open:a(n).isOpen,"onUpdate:open":i},{default:T(()=>[h(a(qn),{class:`max-w-[calc(100%-1rem)] sm:max-w-[90vw] md:max-w-3xl lg:max-w-4xl max-h-[90vh] flex flex-col p-0`},{default:T(()=>[a(n).type===`building`&&a(n).itemType?(m(),r(o,{key:0},[h(a(V),{class:`px-6 pt-6 pb-4 shrink-0`},{default:T(()=>[h(a(H),{class:`flex items-center gap-2`},{default:T(()=>[E(_(a(t)(`buildings.${a(n).itemType}`))+` `,1),h(a(z),{variant:`outline`},{default:T(()=>[E(_(a(t)(`common.currentLevel`))+` `+_(a(n).currentLevel||0),1)]),_:1})]),_:1}),h(a(B),null,{default:T(()=>[E(_(a(t)(`buildingDescriptions.${a(n).itemType}`)),1)]),_:1})]),_:1}),l(`div`,ua,[h(wr,{buildingType:a(n).itemType,currentLevel:a(n).currentLevel||0},null,8,[`buildingType`,`currentLevel`])])],64)):a(n).type===`technology`&&a(n).itemType?(m(),r(o,{key:1},[h(a(V),{class:`px-6 pt-6 pb-4 shrink-0`},{default:T(()=>[h(a(H),{class:`flex items-center gap-2`},{default:T(()=>[E(_(a(t)(`technologies.${a(n).itemType}`))+` `,1),h(a(z),{variant:`outline`},{default:T(()=>[E(_(a(t)(`common.currentLevel`))+` `+_(a(n).currentLevel||0),1)]),_:1})]),_:1}),h(a(B),null,{default:T(()=>[E(_(a(t)(`technologyDescriptions.${a(n).itemType}`)),1)]),_:1})]),_:1}),l(`div`,da,[h(Vr,{technologyType:a(n).itemType,currentLevel:a(n).currentLevel||0},null,8,[`technologyType`,`currentLevel`])])],64)):a(n).type===`ship`&&a(n).itemType?(m(),r(o,{key:2},[h(a(V),{class:`px-6 pt-6 pb-4 shrink-0`},{default:T(()=>[h(a(H),null,{default:T(()=>[E(_(a(t)(`ships.${a(n).itemType}`)),1)]),_:1}),h(a(B),null,{default:T(()=>[E(_(a(t)(`shipDescriptions.${a(n).itemType}`)),1)]),_:1})]),_:1}),l(`div`,fa,[h(Di,{shipType:a(n).itemType},null,8,[`shipType`])])],64)):a(n).type===`defense`&&a(n).itemType?(m(),r(o,{key:3},[h(a(V),{class:`px-6 pt-6 pb-4 shrink-0`},{default:T(()=>[h(a(H),null,{default:T(()=>[E(_(a(t)(`defenses.${a(n).itemType}`)),1)]),_:1}),h(a(B),null,{default:T(()=>[E(_(a(t)(`defenseDescriptions.${a(n).itemType}`)),1)]),_:1})]),_:1}),l(`div`,pa,[h(la,{defenseType:a(n).itemType},null,8,[`defenseType`])])],64)):D(``,!0)]),_:1})]),_:1},8,[`open`]))}}),ha=g({__name:`Sonner`,props:{id:{},invert:{type:Boolean},theme:{},position:{},closeButtonPosition:{},hotkey:{},richColors:{type:Boolean},expand:{type:Boolean},duration:{},gap:{},visibleToasts:{},closeButton:{type:Boolean},toastOptions:{},class:{},style:{},offset:{},mobileOffset:{},dir:{},swipeDirections:{},icons:{},containerAriaLabel:{}},setup(e){let t=e;return(e,n)=>(m(),v(a(We),b({class:a(L)(`toaster group`,t.class),style:{"--normal-bg":`var(--popover)`,"--normal-text":`var(--popover-foreground)`,"--normal-border":`var(--border)`,"--border-radius":`var(--radius)`}},t),{"success-icon":T(()=>[h(a(xt),{class:`size-4`})]),"info-icon":T(()=>[h(a(bt),{class:`size-4`})]),"warning-icon":T(()=>[h(a(Bt),{class:`size-4`})]),"error-icon":T(()=>[h(a(St),{class:`size-4`})]),"loading-icon":T(()=>[l(`div`,null,[h(a(Dt),{class:`size-4 animate-spin`})])]),"close-icon":T(()=>[h(a(zt),{class:`size-4`})]),_:1},16,[`class`]))}});const ga=()=>{try{let e=P.name,t=`${P.name}-universe`,n=localStorage.getItem(e);if(!n)return;let r;try{r=Zt(n)}catch{try{r=JSON.parse(n)}catch{return}}if(!(r.universePlanets||r.debrisFields))return;let i={planets:{},debrisFields:{}};if(r.universePlanets){let e=r.universePlanets,t=r.player?.planets||[],n=new Set(t.map(e=>e.id));Object.entries(e).forEach(([e,t])=>{n.has(t.id)||(i.planets[e]=t)}),delete r.universePlanets}r.debrisFields&&(i.debrisFields=r.debrisFields,delete r.debrisFields),localStorage.setItem(t,Xt(i)),localStorage.setItem(e,Xt(r))}catch(e){console.error(e)}};var _a={class:`flex items-center justify-center p-4 group-data-[collapsible=icon]:p-2`},va={class:`text-xl font-bold ml-2 group-data-[collapsible=icon]:hidden`},ya={class:`px-4 py-3 space-y-2 text-sm`},ba={class:`font-semibold mb-1`},xa={class:`text-muted-foreground text-xs`},Sa={class:`bg-muted/50 rounded-lg p-2`},Ca={class:`flex items-center justify-between`},wa={class:`text-xs text-muted-foreground`},Ta={class:`text-sm font-bold text-primary`},Ea={key:0,class:`flex gap-1`},Da={class:`space-y-1`},Oa={class:`flex flex-col h-full overflow-hidden`},ka={key:0,class:`bg-card border-b px-4 sm:px-6 py-6.5 shadow-md`},Aa={class:`flex items-center justify-between gap-3 sm:gap-6`},ja={class:`lg:flex-1`},Ma={class:`flex items-center gap-3 sm:gap-6 flex-1 lg:flex-none overflow-x-auto lg:justify-center`},Na={class:`min-w-0`},Pa={class:`text-[10px] sm:text-xs text-muted-foreground truncate`},Fa={class:`flex items-center gap-2 sm:gap-4 flex-shrink-0 lg:flex-1 lg:justify-end`},Ia={key:0,class:`flex items-center gap-1.5 sm:gap-2 text-xs sm:text-sm`},La={class:`text-muted-foreground hidden sm:inline`},Ra={key:1,class:`flex items-center gap-1.5 sm:gap-2 text-xs sm:text-sm`},za={class:`text-muted-foreground hidden sm:inline`},Ba={key:1,class:`bg-card border-b px-4 sm:px-6 py-4.5`},Va={class:`space-y-3`},Ha={class:`flex items-center justify-between text-xs sm:text-sm gap-2`},Ua={class:`flex items-center gap-1.5 sm:gap-2 min-w-0 flex-1`},Wa={class:`font-medium truncate`},Ga={class:`text-muted-foreground hidden sm:inline flex-shrink-0 text-[10px] sm:text-xs`},Ka={class:`flex items-center gap-2 sm:gap-3 flex-shrink-0`},qa={class:`text-muted-foreground text-[10px] sm:text-xs whitespace-nowrap`},Ja={class:`flex items-center justify-between text-xs sm:text-sm gap-2`},Ya={class:`flex items-center gap-1.5 sm:gap-2 min-w-0 flex-1`},Xa={class:`font-medium truncate`},Za={class:`text-muted-foreground hidden sm:inline flex-shrink-0 text-[10px] sm:text-xs`},Qa={class:`flex items-center gap-2 sm:gap-3 flex-shrink-0`},$a={class:`text-muted-foreground text-[10px] sm:text-xs whitespace-nowrap`},eo={class:`flex-1 overflow-y-auto`},to={class:`animate-fade-in`},no=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})(g({__name:`App`,setup(e){ga();let c=Qt(),u=$t(),{isDark:f}=en(),{t:g}=I(),b=C(null),x=[`zh-CN`,`zh-TW`,`en`,`de`,`ru`,`ko`,`ja`],S=C(window.innerWidth>=1024),de=async()=>{if(!ae(c.player.planets)){let e=Date.now(),n=Ce(c.player.officers,e);c.player.planets.forEach(r=>{t(r,e,n)}),pe();return}c.player=ne(c.player.id,g(`common.playerName`));let e=Te(c.player.id,g(`planet.homePlanet`));c.player.planets=[e],c.currentPlanetId=e.id},pe=()=>{for(let e=0;e<200;e++){let t=i(),n=Me(t.galaxy,t.system,t.position);if(u.planets[n])continue;let r=xe(e,t,g(`planet.planetPrefix`));u.planets[n]=r}},me=()=>{if(c.isPaused)return;let e=Date.now();c.gameTime=e,re(c.player.officers,e);let t=ie(c.player,e);c.player.researchQueue=t.updatedResearchQueue,c.player.fleetMissions.forEach(t=>{t.status===`outbound`&&e>=t.arrivalTime?he(t):t.status===`returning`&&t.returnTime&&e>=t.returnTime&&_e(t)})},he=async e=>{let t=Me(e.targetPosition.galaxy,e.targetPosition.system,e.targetPosition.position),n=c.player.planets.find(t=>t.position.galaxy===e.targetPosition.galaxy&&t.position.system===e.targetPosition.system&&t.position.position===e.targetPosition.position)||u.planets[t];if(e.missionType===N.Transport)Ae(e,n);else if(e.missionType===N.Attack){let t=await ve(e,n,c.player,null,c.player.planets);t&&(c.player.battleReports.push(t.battleResult),t.moon&&c.player.planets.push(t.moon),t.debrisField&&(u.debrisFields[t.debrisField.id]=t.debrisField))}else if(e.missionType===N.Colonize){let t=ge(e,n,c.player.id,g(`planet.colonyPrefix`));t&&c.player.planets.push(t)}else if(e.missionType===N.Spy){let t=fe(e,n,c.player.id);t&&c.player.spyReports.push(t)}else if(e.missionType===N.Deploy){if(ue(e,n,c.player.id)){let t=c.player.fleetMissions.indexOf(e);t>-1&&c.player.fleetMissions.splice(t,1);return}}else if(e.missionType===N.Recycle){let t=`debris_${e.targetPosition.galaxy}_${e.targetPosition.system}_${e.targetPosition.position}`,n=u.debrisFields[t],r=je(e,n);r&&n&&(r.remainingDebris&&(r.remainingDebris.metal>0||r.remainingDebris.crystal>0)?u.debrisFields[t]={id:n.id,position:n.position,resources:r.remainingDebris,createdAt:n.createdAt,expiresAt:n.expiresAt}:delete u.debrisFields[t])}else if(e.missionType===N.Destroy){let r=De(e,n,c.player);if(r&&r.success&&r.planetId){let e=c.player.planets.findIndex(e=>e.id===r.planetId);e>-1?c.player.planets.splice(e,1):delete u.planets[t]}}},_e=e=>{let t=c.player.planets.find(t=>t.id===e.originPlanetId);if(!t)return;ye(t.fleet,e.fleet),ee(t.resources,e.cargo);let n=c.player.fleetMissions.indexOf(e);n>-1&&c.player.fleetMissions.splice(n,1)},w=null;te(()=>{w&&clearInterval(w)}),oe(async()=>{c.player.planets.length===0&&(c.locale=He()),await de(),w=setInterval(()=>{me()},1e3)});let O=d(()=>c.currentPlanet),be=[{name:d(()=>g(`nav.overview`)),path:`/`,icon:Ft},{name:d(()=>g(`nav.buildings`)),path:`/buildings`,icon:Tt},{name:d(()=>g(`nav.research`)),path:`/research`,icon:wt},{name:d(()=>g(`nav.shipyard`)),path:`/shipyard`,icon:Nt},{name:d(()=>g(`nav.defense`)),path:`/defense`,icon:Vt},{name:d(()=>g(`nav.fleet`)),path:`/fleet`,icon:jt},{name:d(()=>g(`nav.officers`)),path:`/officers`,icon:Ht},{name:d(()=>g(`nav.simulator`)),path:`/battle-simulator`,icon:Lt},{name:d(()=>g(`nav.galaxy`)),path:`/galaxy`,icon:Et},{name:d(()=>g(`nav.messages`)),path:`/messages`,icon:Ct},{name:d(()=>g(`nav.settings`)),path:`/settings`,icon:Pt},...[]],Se=d(()=>{if(!O.value)return null;let e=Date.now(),t=Ce(c.player.officers,e);return se(O.value,{resourceProductionBonus:t.resourceProductionBonus,darkMatterProductionBonus:t.darkMatterProductionBonus,energyProductionBonus:t.energyProductionBonus})}),we=d(()=>{if(!O.value)return null;let e=Date.now(),t=Ce(c.player.officers,e);return le(O.value,t.storageCapacityBonus)}),Ee=d(()=>c.player.battleReports.filter(e=>!e.read).length+c.player.spyReports.filter(e=>!e.read).length),ke=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`energy`},{key:`darkMatter`}],k=d(()=>!O.value||O.value.isMoon?null:c.getMoonForPlanet(O.value.id)),Ne=d(()=>!!k.value),A=()=>{k.value&&(c.currentPlanetId=k.value.id)},Pe=()=>{O.value?.parentPlanetId&&(c.currentPlanetId=O.value.parentPlanetId)},Fe=()=>{S.value=!S.value},Le=e=>{if(e.type===`building`||e.type===`demolish`){let t=g(`buildings.${e.itemType}`);return e.type===`demolish`?`${g(`buildingsView.demolish`)} - ${t}`:t}else if(e.type===`technology`)return g(`technologies.${e.itemType}`);else if(e.type===`ship`)return g(`ships.${e.itemType}`);else if(e.type===`defense`)return g(`defenses.${e.itemType}`);return e.itemType},ze=e=>{let t=Date.now();return Math.max(0,Math.floor((e.endTime-t)/1e3))},Ve=e=>{let t=Date.now(),n=e.endTime-e.startTime,r=t-e.startTime;return Math.min(100,Math.max(0,r/n*100))},Ue=e=>{b.value?.show({title:g(`queue.cancelBuild`),message:g(`queue.confirmCancel`),onConfirm:()=>{if(!c.currentPlanet)return!1;let{item:t,index:r}=n(c.currentPlanet.buildQueue,e);if(!t)return!1;if(t.type===`building`){let e=s(c.currentPlanet,t);ee(c.currentPlanet.resources,e)}return c.currentPlanet.buildQueue.splice(r,1),!0}})},j=e=>{b.value?.show({title:g(`queue.cancelResearch`),message:g(`queue.confirmCancel`),onConfirm:()=>{if(!c.currentPlanet)return!1;let{item:t,index:r}=n(c.player.researchQueue,e);if(!t)return!1;if(t.type===`technology`){let e=Oe(t);ee(c.currentPlanet.resources,e)}return c.player.researchQueue.splice(r,1),!0}})};return(e,t)=>(m(),v(a(Fn),{open:S.value,"onUpdate:open":t[1]||=e=>S.value=e},{default:T(()=>[h(a(bn),{collapsible:`icon`},{default:T(()=>[h(a(wn),{class:`border-b`},{default:T(()=>[l(`div`,_a,[t[2]||=l(`img`,{src:``+new URL(`logo-Cz0cNqhe.svg`,import.meta.url).href,class:`w-10 group-data-[collapsible=icon]:w-8`},null,-1),l(`h1`,va,_(a(P).title),1)])]),_:1}),h(a(xn),null,{default:T(()=>[O.value?(m(),v(a(Cn),{key:0,class:`border-b group-data-[collapsible=icon]:hidden`},{default:T(()=>[l(`div`,ya,[l(`div`,null,[l(`p`,ba,[E(_(O.value.name)+` `,1),O.value.isMoon?(m(),v(a(z),{key:0,variant:`secondary`,class:`ml-1 text-xs`},{default:T(()=>[E(_(a(g)(`planet.moon`)),1)]),_:1})):D(``,!0)]),l(`p`,xa,` [`+_(O.value.position.galaxy)+`:`+_(O.value.position.system)+`:`+_(O.value.position.position)+`] `,1)]),l(`div`,Sa,[l(`div`,Ca,[l(`span`,wa,_(a(g)(`player.points`)),1),l(`span`,Ta,_(a(Z)(a(c).player.points)),1)])]),Ne.value||O.value.isMoon?(m(),r(`div`,Ea,[O.value.isMoon?(m(),v(a(R),{key:0,onClick:Pe,variant:`outline`,size:`sm`,class:`w-full text-xs h-7`},{default:T(()=>[E(_(a(g)(`planet.backToPlanet`)),1)]),_:1})):k.value?(m(),v(a(R),{key:1,onClick:A,variant:`outline`,size:`sm`,class:`w-full text-xs h-7`},{default:T(()=>[E(_(a(g)(`planet.switchToMoon`)),1)]),_:1})):D(``,!0)])):D(``,!0)])]),_:1})):D(``,!0),h(a(Cn),null,{default:T(()=>[h(a(Dn),null,{default:T(()=>[(m(),r(o,null,p(be,t=>h(a(Pn),{key:t.path},{default:T(()=>[h(a(Nn),{"as-child":``,"is-active":e.$route.path===t.path,tooltip:t.name.value},{default:T(()=>[h(a(Re),{to:t.path},{default:T(()=>[(m(),v(ce(t.icon))),l(`span`,null,_(t.name.value),1),t.path===`/messages`&&Ee.value>0?(m(),v(a(On),{key:0},{default:T(()=>[E(_(Ee.value),1)]),_:1})):D(``,!0)]),_:2},1032,[`to`])]),_:2},1032,[`is-active`,`tooltip`])]),_:2},1024)),64))]),_:1})]),_:1})]),_:1}),h(a(Sn),{class:`border-t`},{default:T(()=>[h(a(Dn),null,{default:T(()=>[h(a(Pn),null,{default:T(()=>[h(a(an),null,{default:T(()=>[h(a(sn),{"as-child":``},{default:T(()=>[h(a(Nn),{tooltip:a(Be)[a(c).locale]},{default:T(()=>[h(a(It)),l(`span`,null,_(a(Be)[a(c).locale]),1)]),_:1},8,[`tooltip`])]),_:1}),h(a(on),{class:`w-48 p-2`,side:`right`,align:`end`},{default:T(()=>[l(`div`,Da,[(m(),r(o,null,p(x,e=>h(a(R),{key:e,onClick:t=>a(c).locale=e,variant:a(c).locale===e?`secondary`:`ghost`,class:`w-full justify-start`,size:`sm`},{default:T(()=>[E(_(a(Be)[e]),1)]),_:2},1032,[`onClick`,`variant`])),64))])]),_:1})]),_:1})]),_:1}),h(a(Pn),null,{default:T(()=>[h(a(Nn),{onClick:t[0]||=e=>f.value=!a(f),tooltip:a(f)?a(g)(`sidebar.lightMode`):a(g)(`sidebar.darkMode`)},{default:T(()=>[a(f)?(m(),v(a(Wt),{key:0})):(m(),v(a(Gt),{key:1})),l(`span`,null,_(a(f)?a(g)(`sidebar.lightMode`):a(g)(`sidebar.darkMode`)),1)]),_:1},8,[`tooltip`])]),_:1}),h(a(Pn),{class:`hidden sm:inline`},{default:T(()=>[h(a(Nn),{onClick:Fe,tooltip:S.value?a(g)(`sidebar.collapse`):a(g)(`sidebar.expand`)},{default:T(()=>[h(a(At),{class:`group-data-[state=collapsed]:rotate-180 transition-transform`}),l(`span`,null,_(a(g)(`sidebar.collapse`)),1)]),_:1},8,[`tooltip`])]),_:1})]),_:1})]),_:1})]),_:1}),h(a(En),null,{default:T(()=>[l(`div`,Oa,[O.value?(m(),r(`header`,ka,[l(`div`,Aa,[l(`div`,ja,[h(a(In),{class:`lg:hidden`})]),l(`div`,Ma,[(m(),r(o,null,p(ke,e=>l(`div`,{key:e.key,class:`flex items-center gap-1.5 sm:gap-2 flex-shrink-0`},[h(Rn,{type:e.key,size:`md`},null,8,[`type`]),l(`div`,Na,[l(`p`,{class:y([`text-xs sm:text-sm font-medium truncate`,a(tr)(O.value.resources[e.key],we.value?.[e.key]||1/0)])},_(a(Z)(O.value.resources[e.key]))+` / `+_(a(Z)(we.value?.[e.key]||0)),3),l(`p`,Pa,` +`+_(a(Z)(Math.round((Se.value?.[e.key]||0)/60)))+`/`+_(a(g)(`resources.perMinute`)),1)])])),64))]),l(`div`,Fa,[O.value.buildQueue.length>0?(m(),r(`div`,Ia,[t[3]||=l(`div`,{class:`h-2 w-2 rounded-full bg-green-500 animate-pulse`},null,-1),l(`span`,La,_(a(g)(`queue.building`)),1)])):D(``,!0),a(c).player.researchQueue.length>0?(m(),r(`div`,Ra,[t[4]||=l(`div`,{class:`h-2 w-2 rounded-full bg-blue-500 animate-pulse`},null,-1),l(`span`,za,_(a(g)(`queue.researching`)),1)])):D(``,!0)])])])):D(``,!0),O.value&&(O.value.buildQueue.length>0||a(c).player.researchQueue.length>0)?(m(),r(`div`,Ba,[l(`div`,Va,[(m(!0),r(o,null,p(O.value.buildQueue,e=>(m(),r(`div`,{key:e.id,class:`space-y-1.5`},[l(`div`,Ha,[l(`div`,Ua,[t[5]||=l(`div`,{class:`h-2 w-2 rounded-full bg-green-500 animate-pulse flex-shrink-0`},null,-1),l(`span`,Wa,_(Le(e)),1),l(`span`,Ga,[e.type===`ship`||e.type===`defense`?(m(),r(o,{key:0},[E(` → `+_(a(g)(`queue.quantity`))+` `+_(e.quantity),1)],64)):(m(),r(o,{key:1},[E(`→ `+_(a(g)(`queue.level`))+` `+_(e.targetLevel),1)],64))])]),l(`div`,Ka,[l(`span`,qa,_(a(Q)(ze(e))),1),h(a(R),{onClick:t=>Ue(e.id),variant:`ghost`,size:`sm`,class:`h-5 sm:h-6 px-1.5 sm:px-2 text-[10px] sm:text-xs`},{default:T(()=>[E(_(a(g)(`queue.cancel`)),1)]),_:1},8,[`onClick`])])]),h(a(rn),{"model-value":Ve(e),class:`h-1.5`},null,8,[`model-value`])]))),128)),(m(!0),r(o,null,p(a(c).player.researchQueue,e=>(m(),r(`div`,{key:e.id,class:`space-y-1.5`},[l(`div`,Ja,[l(`div`,Ya,[t[6]||=l(`div`,{class:`h-2 w-2 rounded-full bg-blue-500 animate-pulse flex-shrink-0`},null,-1),l(`span`,Xa,_(Le(e)),1),l(`span`,Za,` → `+_(a(g)(`queue.level`))+` `+_(e.targetLevel),1)]),l(`div`,Qa,[l(`span`,$a,_(a(Q)(ze(e))),1),h(a(R),{onClick:t=>j(e.id),variant:`ghost`,size:`sm`,class:`h-5 sm:h-6 px-1.5 sm:px-2 text-[10px] sm:text-xs`},{default:T(()=>[E(_(a(g)(`queue.cancel`)),1)]),_:1},8,[`onClick`])])]),h(a(rn),{"model-value":Ve(e),class:`h-1.5`},null,8,[`model-value`])]))),128))])])):D(``,!0),l(`main`,eo,[l(`div`,to,[h(a(Ie))])])])]),_:1}),h(Wn,{ref_key:`confirmDialog`,ref:b},null,512),h(ma),h(ha,{position:`top-center`})]),_:1},8,[`open`]))}}),[[`__scopeId`,`data-v-784f12ab`]]),ro=`modulepreload`,io=function(e,t){return new URL(e,t).href},ao={};const $=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=io(t,n),t in ao)return;ao[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:ro,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};var oo=Le({history:Fe(),routes:[{path:`/`,name:`overview`,component:()=>$(()=>import(`./OverviewView-C4I-SjLt.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]),import.meta.url)},{path:`/buildings`,name:`buildings`,component:()=>$(()=>import(`./BuildingsView-zu1MPaUF.js`),__vite__mapDeps([14,1,2,3,4,5,6,7,8,9,15,10,16,17,12,11,13]),import.meta.url)},{path:`/research`,name:`research`,component:()=>$(()=>import(`./ResearchView-9cX9kBtt.js`),__vite__mapDeps([18,1,2,3,4,5,6,7,8,9,15,10,19,16,17,12,20,11,13]),import.meta.url)},{path:`/shipyard`,name:`shipyard`,component:()=>$(()=>import(`./ShipyardView-D4UNn323.js`),__vite__mapDeps([21,1,2,3,4,5,6,7,8,9,15,10,19,16,17,12,20,11,13]),import.meta.url)},{path:`/defense`,name:`defense`,component:()=>$(()=>import(`./DefenseView-qV0qTXQw.js`),__vite__mapDeps([22,1,2,3,4,5,6,7,8,9,15,10,19,16,17,12,20,11,13]),import.meta.url)},{path:`/fleet`,name:`fleet`,component:()=>$(()=>import(`./FleetView-Br_OwWg4.js`),__vite__mapDeps([23,1,2,3,4,5,6,7,8,9,15,10,19,16,20,11,12,13]),import.meta.url)},{path:`/officers`,name:`officers`,component:()=>$(()=>import(`./OfficersView-Dwb7TW1z.js`),__vite__mapDeps([24,1,2,3,4,5,6,7,8,9,10,16,11,12,13]),import.meta.url)},{path:`/battle-simulator`,name:`battle-simulator`,component:()=>$(()=>import(`./BattleSimulatorView-BCwWxQsd.js`),__vite__mapDeps([25,1,2,3,4,5,6,7,8,9,15,10,26,27,12,11,13]),import.meta.url)},{path:`/messages`,name:`messages`,component:()=>$(()=>import(`./MessagesView-DeWAwjjT.js`),__vite__mapDeps([28,1,2,3,4,5,6,7,8,9,15,10,26,27,12,11,13]),import.meta.url)},{path:`/galaxy`,name:`galaxy`,component:()=>$(()=>import(`./GalaxyView-BaUVuvAs.js`),__vite__mapDeps([29,1,2,3,4,5,6,7,8,9,15,10,19,16,11,30,27,13]),import.meta.url)},{path:`/settings`,name:`settings`,component:()=>$(()=>import(`./SettingsView-CGxApjTn.js`),__vite__mapDeps([31,1,2,3,4,5,6,7,8,9,15,10,11,13]),import.meta.url)},{path:`/gm`,name:`gm`,component:()=>$(()=>import(`./GMView-BpYTLGiZ.js`),__vite__mapDeps([32,1,2,3,4,5,6,7,8,9,15,10,11,30,12,13]),import.meta.url),beforeEnter:(e,t,n)=>{n(`/`)}}]}),so=k(no),co=Ne();co.use(Pe),so.use(co),so.use(oo),so.mount(`#app`);export{z as A,Wn as C,kn as D,An as E,$t as F,Qt as I,P as L,R as M,L as N,Tn as O,I as P,Gn as S,jn as T,Jn as _,tr as a,B as b,J as c,Qn as d,G as f,Xn as g,Zn as h,Q as i,tn as j,rn as k,q as l,U as m,nr as n,rr as o,W as p,Z as r,Y as s,Hr as t,K as u,H as v,Rn as w,qn as x,V as y}; \ No newline at end of file diff --git a/docs/assets/index-Cch-Ig40.js b/docs/assets/index-Cch-Ig40.js deleted file mode 100644 index b51df5f..0000000 --- a/docs/assets/index-Cch-Ig40.js +++ /dev/null @@ -1,44 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./OverviewView-CmVFZWGR.js","./vendor-ui-DBxeWLyT.js","./rolldown-runtime-CIDIeb-o.js","./vendor-vue-Bqq1sBNf.js","./CardDescription-CRV0m8La.js","./useGameConfig-D2EZdt1x.js","./BuildingsView-DhLhA5iU.js","./AlertDialog-_72FqRCT.js","./ResearchView-BnXltulQ.js","./UnlockRequirement-BdFx1RC0.js","./CardUnlockOverlay-SeY-L1Ut.js","./ShipyardView-DXEuisRD.js","./shipValidation-Cx6mhfwF.js","./DefenseView-Dgqev78h.js","./FleetView-BtTh_NDj.js","./eye-B5ACPUPU.js","./OfficersView-B0Yv-kWu.js","./BattleSimulatorView-DADwA9bi.js","./MessagesView-0qhXN5qt.js","./GalaxyView-BQhXx0XP.js","./SettingsView-VjOhq7qI.js"])))=>i.map(i=>d[i]); -import{i as e,r as t,t as n}from"./rolldown-runtime-CIDIeb-o.js";import{$ as r,A as i,At as a,B as o,Dt as s,F as c,G as l,H as u,I as d,J as f,K as p,L as m,M as h,N as g,Ot as _,P as v,Q as y,R as b,St as ee,U as x,V as te,W as S,X as C,Y as w,Z as T,_ as E,at as D,b as O,dt as k,ft as A,g as ne,h as j,j as re,jt as M,kt as ie,lt as N,mt as P,n as F,ot as ae,pt as I,q as L,rt as oe,st as R,t as se,ut as z,v as ce,vt as le,x as ue,y as de,z as fe}from"./vendor-ui-DBxeWLyT.js";import{a as pe,c as me,i as he,l as ge,n as _e,r as ve,u as ye}from"./vendor-vue-Bqq1sBNf.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),``+new URL(`logo-Cz0cNqhe.svg`,import.meta.url).href;var be={name:`ogame-vue-ts`,title:`OGame-Vue-Ts`,qq:`920930589`,id:`2zBlHPUA6E`,author:`setube`,private:!0,version:`1.0.0`,type:`module`,scripts:{dev:`vite --port 25121`,build:`vue-tsc -b && vite build`,preview:`vite preview`},dependencies:{"@tailwindcss/vite":`^4.1.17`,"@tanstack/vue-table":`^8.21.3`,"@vueuse/core":`^14.1.0`,"class-variance-authority":`^0.7.1`,clsx:`^2.1.1`,"crypto-js":`^4.2.0`,"file-saver":`^2.0.5`,"lucide-vue-next":`^0.556.0`,pinia:`^3.0.4`,"pinia-plugin-persistedstate":`^4.7.1`,"reka-ui":`^2.6.1`,"tailwind-merge":`^3.4.0`,tailwindcss:`^4.1.17`,vue:`^3.5.24`,"vue-router":`4`,"vue-sonner":`^2.0.9`},devDependencies:{"@types/crypto-js":`^4.2.2`,"@types/file-saver":`^2.0.7`,"@types/node":`^24.10.2`,"@vitejs/plugin-vue":`^6.0.1`,"@vue/tsconfig":`^0.8.1`,"tw-animate-css":`^1.4.0`,typescript:`~5.9.3`,vite:`npm:rolldown-vite@7.2.5`,"vue-tsc":`^3.1.4`},pnpm:{overrides:{vite:`npm:rolldown-vite@7.2.5`}},packageManager:`pnpm@10.13.1+sha512.37ebf1a5c7a30d5fabe0c5df44ee8da4c965ca0c5af3dbab28c3a1681b70a256218d05c81c9c0dcf767ef6b8551eb5b960042b9ed4300c59242336377e01cfad`},xe=n(((e,t)=>{t.exports={}})),B=n(((e,n)=>{(function(t,r){typeof e==`object`?n.exports=e=r():typeof define==`function`&&define.amd?define([],r):t.CryptoJS=r()})(e,function(){var e=e||function(e,n){var r;if(typeof window<`u`&&window.crypto&&(r=window.crypto),typeof self<`u`&&self.crypto&&(r=self.crypto),typeof globalThis<`u`&&globalThis.crypto&&(r=globalThis.crypto),!r&&typeof window<`u`&&window.msCrypto&&(r=window.msCrypto),!r&&typeof global<`u`&&global.crypto&&(r=global.crypto),!r&&typeof t==`function`)try{r=xe()}catch{}var i=function(){if(r){if(typeof r.getRandomValues==`function`)try{return r.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof r.randomBytes==`function`)try{return r.randomBytes(4).readInt32LE()}catch{}}throw Error(`Native crypto module could not be used to get secure random number.`)},a=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),o={},s=o.lib={},c=s.Base=function(){return{extend:function(e){var t=a(this);return e&&t.mixIn(e),(!t.hasOwnProperty(`init`)||this.init===t.init)&&(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty(`toString`)&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),l=s.WordArray=c.extend({init:function(e,t){e=this.words=e||[],t==n?this.sigBytes=e.length*4:this.sigBytes=t},toString:function(e){return(e||d).stringify(this)},concat:function(e){var t=this.words,n=e.words,r=this.sigBytes,i=e.sigBytes;if(this.clamp(),r%4)for(var a=0;a>>2]>>>24-a%4*8&255;t[r+a>>>2]|=o<<24-(r+a)%4*8}else for(var s=0;s>>2]=n[s>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=c.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>2]>>>24-i%4*8&255;r.push((a>>>4).toString(16)),r.push((a&15).toString(16))}return r.join(``)},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new l.init(n,t/2)}},f=u.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i>>2]>>>24-i%4*8&255;r.push(String.fromCharCode(a))}return r.join(``)},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(e.charCodeAt(r)&255)<<24-r%4*8;return new l.init(n,t)}},p=u.Utf8={stringify:function(e){try{return decodeURIComponent(escape(f.stringify(e)))}catch{throw Error(`Malformed UTF-8 data`)}},parse:function(e){return f.parse(unescape(encodeURIComponent(e)))}},m=s.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){typeof e==`string`&&(e=p.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n,r=this._data,i=r.words,a=r.sigBytes,o=this.blockSize,s=a/(o*4);s=t?e.ceil(s):e.max((s|0)-this._minBufferSize,0);var c=s*o,u=e.min(c*4,a);if(c){for(var d=0;d{(function(n,r){typeof e==`object`?t.exports=e=r(B()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS)})(e,function(e){return(function(t){var n=e,r=n.lib,i=r.Base,a=r.WordArray,o=n.x64={};o.Word=i.extend({init:function(e,t){this.high=e,this.low=t}}),o.WordArray=i.extend({init:function(e,n){e=this.words=e||[],n==t?this.sigBytes=e.length*8:this.sigBytes=n},toX32:function(){for(var e=this.words,t=e.length,n=[],r=0;r{(function(n,r){typeof e==`object`?t.exports=e=r(B()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS)})(e,function(e){return(function(){if(typeof ArrayBuffer==`function`){var t=e.lib.WordArray,n=t.init,r=t.init=function(e){if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),(e instanceof Int8Array||typeof Uint8ClampedArray<`u`&&e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array)&&(e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),e instanceof Uint8Array){for(var t=e.byteLength,r=[],i=0;i>>2]|=e[i]<<24-i%4*8;n.call(this,r,t)}else n.apply(this,arguments)};r.prototype=t}})(),e.lib.WordArray})})),we=n(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(B()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.WordArray,r=t.enc;r.Utf16=r.Utf16BE={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i>>2]>>>16-i%4*8&65535;r.push(String.fromCharCode(a))}return r.join(``)},parse:function(e){for(var t=e.length,r=[],i=0;i>>1]|=e.charCodeAt(i)<<16-i%2*16;return n.create(r,t*2)}},r.Utf16LE={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],a=0;a>>2]>>>16-a%4*8&65535);r.push(String.fromCharCode(o))}return r.join(``)},parse:function(e){for(var t=e.length,r=[],a=0;a>>1]|=i(e.charCodeAt(a)<<16-a%2*16);return n.create(r,t*2)}};function i(e){return e<<8&4278255360|e>>>8&16711935}})(),e.enc.Utf16})})),Te=n(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(B()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.WordArray,r=t.enc;r.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,r=this._map;e.clamp();for(var i=[],a=0;a>>2]>>>24-a%4*8&255,s=t[a+1>>>2]>>>24-(a+1)%4*8&255,c=t[a+2>>>2]>>>24-(a+2)%4*8&255,l=o<<16|s<<8|c,u=0;u<4&&a+u*.75>>6*(3-u)&63));var d=r.charAt(64);if(d)for(;i.length%4;)i.push(d);return i.join(``)},parse:function(e){var t=e.length,n=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var a=0;a>>6-o%4*2;i[a>>>2]|=s<<24-a%4*8,a++}return n.create(i,a)}})(),e.enc.Base64})})),Ee=n(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(B()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.WordArray,r=t.enc;r.Base64url={stringify:function(e,t){t===void 0&&(t=!0);var n=e.words,r=e.sigBytes,i=t?this._safe_map:this._map;e.clamp();for(var a=[],o=0;o>>2]>>>24-o%4*8&255,c=n[o+1>>>2]>>>24-(o+1)%4*8&255,l=n[o+2>>>2]>>>24-(o+2)%4*8&255,u=s<<16|c<<8|l,d=0;d<4&&o+d*.75>>6*(3-d)&63));var f=i.charAt(64);if(f)for(;a.length%4;)a.push(f);return a.join(``)},parse:function(e,t){t===void 0&&(t=!0);var n=e.length,r=t?this._safe_map:this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var o=0;o>>6-o%4*2;i[a>>>2]|=s<<24-a%4*8,a++}return n.create(i,a)}})(),e.enc.Base64url})})),De=n(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(B()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS)})(e,function(e){return(function(t){var n=e,r=n.lib,i=r.WordArray,a=r.Hasher,o=n.algo,s=[];(function(){for(var e=0;e<64;e++)s[e]=t.abs(t.sin(e+1))*4294967296|0})();var c=o.MD5=a.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=t+n,i=e[r];e[r]=(i<<8|i>>>24)&16711935|(i<<24|i>>>8)&4278255360}var a=this._hash.words,o=e[t+0],c=e[t+1],p=e[t+2],m=e[t+3],h=e[t+4],g=e[t+5],_=e[t+6],v=e[t+7],y=e[t+8],b=e[t+9],ee=e[t+10],x=e[t+11],te=e[t+12],S=e[t+13],C=e[t+14],w=e[t+15],T=a[0],E=a[1],D=a[2],O=a[3];T=l(T,E,D,O,o,7,s[0]),O=l(O,T,E,D,c,12,s[1]),D=l(D,O,T,E,p,17,s[2]),E=l(E,D,O,T,m,22,s[3]),T=l(T,E,D,O,h,7,s[4]),O=l(O,T,E,D,g,12,s[5]),D=l(D,O,T,E,_,17,s[6]),E=l(E,D,O,T,v,22,s[7]),T=l(T,E,D,O,y,7,s[8]),O=l(O,T,E,D,b,12,s[9]),D=l(D,O,T,E,ee,17,s[10]),E=l(E,D,O,T,x,22,s[11]),T=l(T,E,D,O,te,7,s[12]),O=l(O,T,E,D,S,12,s[13]),D=l(D,O,T,E,C,17,s[14]),E=l(E,D,O,T,w,22,s[15]),T=u(T,E,D,O,c,5,s[16]),O=u(O,T,E,D,_,9,s[17]),D=u(D,O,T,E,x,14,s[18]),E=u(E,D,O,T,o,20,s[19]),T=u(T,E,D,O,g,5,s[20]),O=u(O,T,E,D,ee,9,s[21]),D=u(D,O,T,E,w,14,s[22]),E=u(E,D,O,T,h,20,s[23]),T=u(T,E,D,O,b,5,s[24]),O=u(O,T,E,D,C,9,s[25]),D=u(D,O,T,E,m,14,s[26]),E=u(E,D,O,T,y,20,s[27]),T=u(T,E,D,O,S,5,s[28]),O=u(O,T,E,D,p,9,s[29]),D=u(D,O,T,E,v,14,s[30]),E=u(E,D,O,T,te,20,s[31]),T=d(T,E,D,O,g,4,s[32]),O=d(O,T,E,D,y,11,s[33]),D=d(D,O,T,E,x,16,s[34]),E=d(E,D,O,T,C,23,s[35]),T=d(T,E,D,O,c,4,s[36]),O=d(O,T,E,D,h,11,s[37]),D=d(D,O,T,E,v,16,s[38]),E=d(E,D,O,T,ee,23,s[39]),T=d(T,E,D,O,S,4,s[40]),O=d(O,T,E,D,o,11,s[41]),D=d(D,O,T,E,m,16,s[42]),E=d(E,D,O,T,_,23,s[43]),T=d(T,E,D,O,b,4,s[44]),O=d(O,T,E,D,te,11,s[45]),D=d(D,O,T,E,w,16,s[46]),E=d(E,D,O,T,p,23,s[47]),T=f(T,E,D,O,o,6,s[48]),O=f(O,T,E,D,v,10,s[49]),D=f(D,O,T,E,C,15,s[50]),E=f(E,D,O,T,g,21,s[51]),T=f(T,E,D,O,te,6,s[52]),O=f(O,T,E,D,m,10,s[53]),D=f(D,O,T,E,ee,15,s[54]),E=f(E,D,O,T,c,21,s[55]),T=f(T,E,D,O,y,6,s[56]),O=f(O,T,E,D,w,10,s[57]),D=f(D,O,T,E,_,15,s[58]),E=f(E,D,O,T,S,21,s[59]),T=f(T,E,D,O,h,6,s[60]),O=f(O,T,E,D,x,10,s[61]),D=f(D,O,T,E,p,15,s[62]),E=f(E,D,O,T,b,21,s[63]),a[0]=a[0]+T|0,a[1]=a[1]+E|0,a[2]=a[2]+D|0,a[3]=a[3]+O|0},_doFinalize:function(){var e=this._data,n=e.words,r=this._nDataBytes*8,i=e.sigBytes*8;n[i>>>5]|=128<<24-i%32;var a=t.floor(r/4294967296),o=r;n[(i+64>>>9<<4)+15]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360,n[(i+64>>>9<<4)+14]=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360,e.sigBytes=(n.length+1)*4,this._process();for(var s=this._hash,c=s.words,l=0;l<4;l++){var u=c[l];c[l]=(u<<8|u>>>24)&16711935|(u<<24|u>>>8)&4278255360}return s},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,n,r,i,a,o){var s=e+(t&n|~t&r)+i+o;return(s<>>32-a)+t}function u(e,t,n,r,i,a,o){var s=e+(t&r|n&~r)+i+o;return(s<>>32-a)+t}function d(e,t,n,r,i,a,o){var s=e+(t^n^r)+i+o;return(s<>>32-a)+t}function f(e,t,n,r,i,a,o){var s=e+(n^(t|~r))+i+o;return(s<>>32-a)+t}n.MD5=a._createHelper(c),n.HmacMD5=a._createHmacHelper(c)})(Math),e.MD5})})),Oe=n(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(B()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib,r=n.WordArray,i=n.Hasher,a=t.algo,o=[],s=a.SHA1=i.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],a=n[2],s=n[3],c=n[4],l=0;l<80;l++){if(l<16)o[l]=e[t+l]|0;else{var u=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=u<<1|u>>>31}var d=(r<<5|r>>>27)+c+o[l];l<20?d+=(i&a|~i&s)+1518500249:l<40?d+=(i^a^s)+1859775393:l<60?d+=(i&a|i&s|a&s)-1894007588:d+=(i^a^s)-899497514,c=s,s=a,a=i<<30|i>>>2,i=r,r=d}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+s|0,n[4]=n[4]+c|0},_doFinalize:function(){var e=this._data,t=e.words,n=this._nDataBytes*8,r=e.sigBytes*8;return t[r>>>5]|=128<<24-r%32,t[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),t[(r+64>>>9<<4)+15]=n,e.sigBytes=t.length*4,this._process(),this._hash},clone:function(){var e=i.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA1=i._createHelper(s),t.HmacSHA1=i._createHmacHelper(s)})(),e.SHA1})})),ke=n(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(B()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS)})(e,function(e){return(function(t){var n=e,r=n.lib,i=r.WordArray,a=r.Hasher,o=n.algo,s=[],c=[];(function(){function e(e){for(var n=t.sqrt(e),r=2;r<=n;r++)if(!(e%r))return!1;return!0}function n(e){return(e-(e|0))*4294967296|0}for(var r=2,i=0;i<64;)e(r)&&(i<8&&(s[i]=n(t.pow(r,1/2))),c[i]=n(t.pow(r,1/3)),i++),r++})();var l=[],u=o.SHA256=a.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],u=n[5],d=n[6],f=n[7],p=0;p<64;p++){if(p<16)l[p]=e[t+p]|0;else{var m=l[p-15],h=(m<<25|m>>>7)^(m<<14|m>>>18)^m>>>3,g=l[p-2],_=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;l[p]=h+l[p-7]+_+l[p-16]}var v=s&u^~s&d,y=r&i^r&a^i&a,b=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),ee=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),x=f+ee+v+c[p]+l[p],te=b+y;f=d,d=u,u=s,s=o+x|0,o=a,a=i,i=r,r=x+te|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+u|0,n[6]=n[6]+d|0,n[7]=n[7]+f|0},_doFinalize:function(){var e=this._data,n=e.words,r=this._nDataBytes*8,i=e.sigBytes*8;return n[i>>>5]|=128<<24-i%32,n[(i+64>>>9<<4)+14]=t.floor(r/4294967296),n[(i+64>>>9<<4)+15]=r,e.sigBytes=n.length*4,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});n.SHA256=a._createHelper(u),n.HmacSHA256=a._createHmacHelper(u)})(Math),e.SHA256})})),Ae=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),ke()):typeof define==`function`&&define.amd?define([`./core`,`./sha256`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.WordArray,r=t.algo,i=r.SHA256,a=r.SHA224=i.extend({_doReset:function(){this._hash=new n.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=i._doFinalize.call(this);return e.sigBytes-=4,e}});t.SHA224=i._createHelper(a),t.HmacSHA224=i._createHmacHelper(a)})(),e.SHA224})})),je=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Se()):typeof define==`function`&&define.amd?define([`./core`,`./x64-core`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.Hasher,r=t.x64,i=r.Word,a=r.WordArray,o=t.algo;function s(){return i.create.apply(i,arguments)}var c=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],l=[];(function(){for(var e=0;e<80;e++)l[e]=s()})();var u=o.SHA512=n.extend({_doReset:function(){this._hash=new a.init([new i.init(1779033703,4089235720),new i.init(3144134277,2227873595),new i.init(1013904242,4271175723),new i.init(2773480762,1595750129),new i.init(1359893119,2917565137),new i.init(2600822924,725511199),new i.init(528734635,4215389547),new i.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],u=n[5],d=n[6],f=n[7],p=r.high,m=r.low,h=i.high,g=i.low,_=a.high,v=a.low,y=o.high,b=o.low,ee=s.high,x=s.low,te=u.high,S=u.low,C=d.high,w=d.low,T=f.high,E=f.low,D=p,O=m,k=h,A=g,ne=_,j=v,re=y,M=b,ie=ee,N=x,P=te,F=S,ae=C,I=w,L=T,oe=E,R=0;R<80;R++){var se,z,ce=l[R];if(R<16)z=ce.high=e[t+R*2]|0,se=ce.low=e[t+R*2+1]|0;else{var le=l[R-15],ue=le.high,de=le.low,fe=(ue>>>1|de<<31)^(ue>>>8|de<<24)^ue>>>7,pe=(de>>>1|ue<<31)^(de>>>8|ue<<24)^(de>>>7|ue<<25),me=l[R-2],he=me.high,ge=me.low,_e=(he>>>19|ge<<13)^(he<<3|ge>>>29)^he>>>6,ve=(ge>>>19|he<<13)^(ge<<3|he>>>29)^(ge>>>6|he<<26),ye=l[R-7],be=ye.high,xe=ye.low,B=l[R-16],Se=B.high,Ce=B.low;se=pe+xe,z=fe+be+(se>>>0>>0?1:0),se+=ve,z=z+_e+(se>>>0>>0?1:0),se+=Ce,z=z+Se+(se>>>0>>0?1:0),ce.high=z,ce.low=se}var we=ie&P^~ie&ae,Te=N&F^~N&I,Ee=D&k^D&ne^k&ne,De=O&A^O&j^A&j,Oe=(D>>>28|O<<4)^(D<<30|O>>>2)^(D<<25|O>>>7),ke=(O>>>28|D<<4)^(O<<30|D>>>2)^(O<<25|D>>>7),Ae=(ie>>>14|N<<18)^(ie>>>18|N<<14)^(ie<<23|N>>>9),je=(N>>>14|ie<<18)^(N>>>18|ie<<14)^(N<<23|ie>>>9),Me=c[R],Ne=Me.high,Pe=Me.low,Fe=oe+je,Ie=L+Ae+(Fe>>>0>>0?1:0),Fe=Fe+Te,Ie=Ie+we+(Fe>>>0>>0?1:0),Fe=Fe+Pe,Ie=Ie+Ne+(Fe>>>0>>0?1:0),Fe=Fe+se,Ie=Ie+z+(Fe>>>0>>0?1:0),Le=ke+De,Re=Oe+Ee+(Le>>>0>>0?1:0);L=ae,oe=I,ae=P,I=F,P=ie,F=N,N=M+Fe|0,ie=re+Ie+(N>>>0>>0?1:0)|0,re=ne,M=j,ne=k,j=A,k=D,A=O,O=Fe+Le|0,D=Ie+Re+(O>>>0>>0?1:0)|0}m=r.low=m+O,r.high=p+D+(m>>>0>>0?1:0),g=i.low=g+A,i.high=h+k+(g>>>0>>0?1:0),v=a.low=v+j,a.high=_+ne+(v>>>0>>0?1:0),b=o.low=b+M,o.high=y+re+(b>>>0>>0?1:0),x=s.low=x+N,s.high=ee+ie+(x>>>0>>0?1:0),S=u.low=S+F,u.high=te+P+(S>>>0>>0?1:0),w=d.low=w+I,d.high=C+ae+(w>>>0>>0?1:0),E=f.low=E+oe,f.high=T+L+(E>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,n=this._nDataBytes*8,r=e.sigBytes*8;return t[r>>>5]|=128<<24-r%32,t[(r+128>>>10<<5)+30]=Math.floor(n/4294967296),t[(r+128>>>10<<5)+31]=n,e.sigBytes=t.length*4,this._process(),this._hash.toX32()},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:1024/32});t.SHA512=n._createHelper(u),t.HmacSHA512=n._createHmacHelper(u)})(),e.SHA512})})),Me=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Se(),je()):typeof define==`function`&&define.amd?define([`./core`,`./x64-core`,`./sha512`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.x64,r=n.Word,i=n.WordArray,a=t.algo,o=a.SHA512,s=a.SHA384=o.extend({_doReset:function(){this._hash=new i.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}});t.SHA384=o._createHelper(s),t.HmacSHA384=o._createHmacHelper(s)})(),e.SHA384})})),Ne=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Se()):typeof define==`function`&&define.amd?define([`./core`,`./x64-core`],r):r(n.CryptoJS)})(e,function(e){return(function(t){var n=e,r=n.lib,i=r.WordArray,a=r.Hasher,o=n.x64.Word,s=n.algo,c=[],l=[],u=[];(function(){for(var e=1,t=0,n=0;n<24;n++){c[e+5*t]=(n+1)*(n+2)/2%64;var r=t%5,i=(2*e+3*t)%5;e=r,t=i}for(var e=0;e<5;e++)for(var t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var a=1,s=0;s<24;s++){for(var d=0,f=0,p=0;p<7;p++){if(a&1){var m=(1<>>24)&16711935|(a<<24|a>>>8)&4278255360,o=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360;var s=n[i];s.high^=o,s.low^=a}for(var f=0;f<24;f++){for(var p=0;p<5;p++){for(var m=0,h=0,g=0;g<5;g++){var s=n[p+5*g];m^=s.high,h^=s.low}var _=d[p];_.high=m,_.low=h}for(var p=0;p<5;p++)for(var v=d[(p+4)%5],y=d[(p+1)%5],b=y.high,ee=y.low,m=v.high^(b<<1|ee>>>31),h=v.low^(ee<<1|b>>>31),g=0;g<5;g++){var s=n[p+5*g];s.high^=m,s.low^=h}for(var x=1;x<25;x++){var m,h,s=n[x],te=s.high,S=s.low,C=c[x];C<32?(m=te<>>32-C,h=S<>>32-C):(m=S<>>64-C,h=te<>>64-C);var w=d[l[x]];w.high=m,w.low=h}var T=d[0],E=n[0];T.high=E.high,T.low=E.low;for(var p=0;p<5;p++)for(var g=0;g<5;g++){var x=p+5*g,s=n[x],D=d[x],O=d[(p+1)%5+5*g],k=d[(p+2)%5+5*g];s.high=D.high^~O.high&k.high,s.low=D.low^~O.low&k.low}var s=n[0],A=u[f];s.high^=A.high,s.low^=A.low}},_doFinalize:function(){var e=this._data,n=e.words;this._nDataBytes*8;var r=e.sigBytes*8,a=this.blockSize*32;n[r>>>5]|=1<<24-r%32,n[(t.ceil((r+1)/a)*a>>>5)-1]|=128,e.sigBytes=n.length*4,this._process();for(var o=this._state,s=this.cfg.outputLength/8,c=s/8,l=[],u=0;u>>24)&16711935|(f<<24|f>>>8)&4278255360,p=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360,l.push(p),l.push(f)}return new i.init(l,s)},clone:function(){for(var e=a.clone.call(this),t=e._state=this._state.slice(0),n=0;n<25;n++)t[n]=t[n].clone();return e}});n.SHA3=a._createHelper(f),n.HmacSHA3=a._createHmacHelper(f)})(Math),e.SHA3})})),Pe=n(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(B()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS)})(e,function(e){return(function(t){var n=e,r=n.lib,i=r.WordArray,a=r.Hasher,o=n.algo,s=i.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),c=i.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=i.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),u=i.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),d=i.create([0,1518500249,1859775393,2400959708,2840853838]),f=i.create([1352829926,1548603684,1836072691,2053994217,0]),p=o.RIPEMD160=a.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=t+n,i=e[r];e[r]=(i<<8|i>>>24)&16711935|(i<<24|i>>>8)&4278255360}for(var a=this._hash.words,o=d.words,p=f.words,b=s.words,ee=c.words,x=l.words,te=u.words,S,C,w,T,E,D=S=a[0],O=C=a[1],k=w=a[2],A=T=a[3],ne=E=a[4],j,n=0;n<80;n+=1)j=S+e[t+b[n]]|0,n<16?j+=m(C,w,T)+o[0]:n<32?j+=h(C,w,T)+o[1]:n<48?j+=g(C,w,T)+o[2]:n<64?j+=_(C,w,T)+o[3]:j+=v(C,w,T)+o[4],j|=0,j=y(j,x[n]),j=j+E|0,S=E,E=T,T=y(w,10),w=C,C=j,j=D+e[t+ee[n]]|0,n<16?j+=v(O,k,A)+p[0]:n<32?j+=_(O,k,A)+p[1]:n<48?j+=g(O,k,A)+p[2]:n<64?j+=h(O,k,A)+p[3]:j+=m(O,k,A)+p[4],j|=0,j=y(j,te[n]),j=j+ne|0,D=ne,ne=A,A=y(k,10),k=O,O=j;j=a[1]+w+A|0,a[1]=a[2]+T+ne|0,a[2]=a[3]+E+D|0,a[3]=a[4]+S+O|0,a[4]=a[0]+C+k|0,a[0]=j},_doFinalize:function(){var e=this._data,t=e.words,n=this._nDataBytes*8,r=e.sigBytes*8;t[r>>>5]|=128<<24-r%32,t[(r+64>>>9<<4)+14]=(n<<8|n>>>24)&16711935|(n<<24|n>>>8)&4278255360,e.sigBytes=(t.length+1)*4,this._process();for(var i=this._hash,a=i.words,o=0;o<5;o++){var s=a[o];a[o]=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360}return i},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function m(e,t,n){return e^t^n}function h(e,t,n){return e&t|~e&n}function g(e,t,n){return(e|~t)^n}function _(e,t,n){return e&n|t&~n}function v(e,t,n){return e^(t|~n)}function y(e,t){return e<>>32-t}n.RIPEMD160=a._createHelper(p),n.HmacRIPEMD160=a._createHmacHelper(p)})(Math),e.RIPEMD160})})),Fe=n(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(B()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS)})(e,function(e){(function(){var t=e,n=t.lib.Base,r=t.enc.Utf8,i=t.algo;i.HMAC=n.extend({init:function(e,t){e=this._hasher=new e.init,typeof t==`string`&&(t=r.parse(t));var n=e.blockSize,i=n*4;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var a=this._oKey=t.clone(),o=this._iKey=t.clone(),s=a.words,c=o.words,l=0;l{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),ke(),Fe()):typeof define==`function`&&define.amd?define([`./core`,`./sha256`,`./hmac`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib,r=n.Base,i=n.WordArray,a=t.algo,o=a.SHA256,s=a.HMAC,c=a.PBKDF2=r.extend({cfg:r.extend({keySize:128/32,hasher:o,iterations:25e4}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=this.cfg,r=s.create(n.hasher,e),a=i.create(),o=i.create([1]),c=a.words,l=o.words,u=n.keySize,d=n.iterations;c.length{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Oe(),Fe()):typeof define==`function`&&define.amd?define([`./core`,`./sha1`,`./hmac`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib,r=n.Base,i=n.WordArray,a=t.algo,o=a.MD5,s=a.EvpKDF=r.extend({cfg:r.extend({keySize:128/32,hasher:o,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n,r=this.cfg,a=r.hasher.create(),o=i.create(),s=o.words,c=r.keySize,l=r.iterations;s.length{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Le()):typeof define==`function`&&define.amd?define([`./core`,`./evpkdf`],r):r(n.CryptoJS)})(e,function(e){e.lib.Cipher||function(t){var n=e,r=n.lib,i=r.Base,a=r.WordArray,o=r.BufferedBlockAlgorithm,s=n.enc;s.Utf8;var c=s.Base64,l=n.algo.EvpKDF,u=r.Cipher=o.extend({cfg:i.extend(),createEncryptor:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)},createDecryptor:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)},init:function(e,t,n){this.cfg=this.cfg.extend(n),this._xformMode=e,this._key=t,this.reset()},reset:function(){o.reset.call(this),this._doReset()},process:function(e){return this._append(e),this._process()},finalize:function(e){return e&&this._append(e),this._doFinalize()},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function e(e){return typeof e==`string`?x:y}return function(t){return{encrypt:function(n,r,i){return e(r).encrypt(t,n,r,i)},decrypt:function(n,r,i){return e(r).decrypt(t,n,r,i)}}}}()});r.StreamCipher=u.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var d=n.mode={},f=r.BlockCipherMode=i.extend({createEncryptor:function(e,t){return this.Encryptor.create(e,t)},createDecryptor:function(e,t){return this.Decryptor.create(e,t)},init:function(e,t){this._cipher=e,this._iv=t}}),p=d.CBC=function(){var e=f.extend();e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize;n.call(this,e,t,i),r.encryptBlock(e,t),this._prevBlock=e.slice(t,t+i)}}),e.Decryptor=e.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize,a=e.slice(t,t+i);r.decryptBlock(e,t),n.call(this,e,t,i),this._prevBlock=a}});function n(e,n,r){var i,a=this._iv;a?(i=a,this._iv=t):i=this._prevBlock;for(var o=0;o>>2]&255;e.sigBytes-=t}};r.BlockCipher=u.extend({cfg:u.cfg.extend({mode:p,padding:h}),reset:function(){var e;u.reset.call(this);var t=this.cfg,n=t.iv,r=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=r.createEncryptor:(e=r.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,n&&n.words):(this._mode=e.call(r,this,n&&n.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:128/32});var g=r.CipherParams=i.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=n.format={},v=_.OpenSSL={stringify:function(e){var t,n=e.ciphertext,r=e.salt;return t=r?a.create([1398893684,1701076831]).concat(r).concat(n):n,t.toString(c)},parse:function(e){var t,n=c.parse(e),r=n.words;return r[0]==1398893684&&r[1]==1701076831&&(t=a.create(r.slice(2,4)),r.splice(0,4),n.sigBytes-=16),g.create({ciphertext:n,salt:t})}},y=r.SerializableCipher=i.extend({cfg:i.extend({format:v}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=e.createEncryptor(n,r),a=i.finalize(t),o=i.cfg;return g.create({ciphertext:a,key:n,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return typeof e==`string`?t.parse(e,this):e}}),b=n.kdf={},ee=b.OpenSSL={execute:function(e,t,n,r,i){if(r||=a.random(64/8),i)var o=l.create({keySize:t+n,hasher:i}).compute(e,r);else var o=l.create({keySize:t+n}).compute(e,r);var s=a.create(o.words.slice(t),n*4);return o.sigBytes=t*4,g.create({key:o,iv:s,salt:r})}},x=r.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:ee}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=r.kdf.execute(n,e.keySize,e.ivSize,r.salt,r.hasher);r.iv=i.iv;var a=y.encrypt.call(this,e,t,i.key,r);return a.mixIn(i),a},decrypt:function(e,t,n,r){r=this.cfg.extend(r),t=this._parse(t,r.format);var i=r.kdf.execute(n,e.keySize,e.ivSize,t.salt,r.hasher);return r.iv=i.iv,y.decrypt.call(this,e,t,i.key,r)}})}()})})),ze=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return e.mode.CFB=function(){var t=e.lib.BlockCipherMode.extend();t.Encryptor=t.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize;n.call(this,e,t,i,r),this._prevBlock=e.slice(t,t+i)}}),t.Decryptor=t.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize,a=e.slice(t,t+i);n.call(this,e,t,i,r),this._prevBlock=a}});function n(e,t,n,r){var i,a=this._iv;a?(i=a.slice(0),this._iv=void 0):i=this._prevBlock,r.encryptBlock(i,0);for(var o=0;o{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return e.mode.CTR=function(){var t=e.lib.BlockCipherMode.extend();return t.Decryptor=t.Encryptor=t.extend({processBlock:function(e,t){var n=this._cipher,r=n.blockSize,i=this._iv,a=this._counter;i&&(a=this._counter=i.slice(0),this._iv=void 0);var o=a.slice(0);n.encryptBlock(o,0),a[r-1]=a[r-1]+1|0;for(var s=0;s{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return e.mode.CTRGladman=function(){var t=e.lib.BlockCipherMode.extend();function n(e){if((e>>24&255)==255){var t=e>>16&255,n=e>>8&255,r=e&255;t===255?(t=0,n===255?(n=0,r===255?r=0:++r):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=r}else e+=1<<24;return e}function r(e){return(e[0]=n(e[0]))===0&&(e[1]=n(e[1])),e}return t.Decryptor=t.Encryptor=t.extend({processBlock:function(e,t){var n=this._cipher,i=n.blockSize,a=this._iv,o=this._counter;a&&(o=this._counter=a.slice(0),this._iv=void 0),r(o);var s=o.slice(0);n.encryptBlock(s,0);for(var c=0;c{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return e.mode.OFB=function(){var t=e.lib.BlockCipherMode.extend();return t.Decryptor=t.Encryptor=t.extend({processBlock:function(e,t){var n=this._cipher,r=n.blockSize,i=this._iv,a=this._keystream;i&&(a=this._keystream=i.slice(0),this._iv=void 0),n.encryptBlock(a,0);for(var o=0;o{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return e.mode.ECB=function(){var t=e.lib.BlockCipherMode.extend();return t.Encryptor=t.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),t.Decryptor=t.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),t}(),e.mode.ECB})})),We=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return e.pad.AnsiX923={pad:function(e,t){var n=e.sigBytes,r=t*4,i=r-n%r,a=n+i-1;e.clamp(),e.words[a>>>2]|=i<<24-a%4*8,e.sigBytes+=i},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t}},e.pad.Ansix923})})),Ge=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return e.pad.Iso10126={pad:function(t,n){var r=n*4,i=r-t.sigBytes%r;t.concat(e.lib.WordArray.random(i-1)).concat(e.lib.WordArray.create([i<<24],1))},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t}},e.pad.Iso10126})})),Ke=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return e.pad.Iso97971={pad:function(t,n){t.concat(e.lib.WordArray.create([2147483648],1)),e.pad.ZeroPadding.pad(t,n)},unpad:function(t){e.pad.ZeroPadding.unpad(t),t.sigBytes--}},e.pad.Iso97971})})),qe=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return e.pad.ZeroPadding={pad:function(e,t){var n=t*4;e.clamp(),e.sigBytes+=n-(e.sigBytes%n||n)},unpad:function(e){for(var t=e.words,n=e.sigBytes-1,n=e.sigBytes-1;n>=0;n--)if(t[n>>>2]>>>24-n%4*8&255){e.sigBytes=n+1;break}}},e.pad.ZeroPadding})})),Je=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return e.pad.NoPadding={pad:function(){},unpad:function(){}},e.pad.NoPadding})})),Ye=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return(function(t){var n=e,r=n.lib.CipherParams,i=n.enc.Hex,a=n.format;a.Hex={stringify:function(e){return e.ciphertext.toString(i)},parse:function(e){var t=i.parse(e);return r.create({ciphertext:t})}}})(),e.format.Hex})})),Xe=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Te(),De(),Le(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.BlockCipher,r=t.algo,i=[],a=[],o=[],s=[],c=[],l=[],u=[],d=[],f=[],p=[];(function(){for(var e=[],t=0;t<256;t++)t<128?e[t]=t<<1:e[t]=t<<1^283;for(var n=0,r=0,t=0;t<256;t++){var m=r^r<<1^r<<2^r<<3^r<<4;m=m>>>8^m&255^99,i[n]=m,a[m]=n;var h=e[n],g=e[h],_=e[g],v=e[m]*257^m*16843008;o[n]=v<<24|v>>>8,s[n]=v<<16|v>>>16,c[n]=v<<8|v>>>24,l[n]=v;var v=_*16843009^g*65537^h*257^n*16843008;u[m]=v<<24|v>>>8,d[m]=v<<16|v>>>16,f[m]=v<<8|v>>>24,p[m]=v,n?(n=h^e[e[e[_^h]]],r^=e[e[r]]):n=r=1}})();var m=[0,1,2,4,8,16,32,64,128,27,54],h=r.AES=n.extend({_doReset:function(){var e;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var t=this._keyPriorReset=this._key,n=t.words,r=t.sigBytes/4,a=((this._nRounds=r+6)+1)*4,o=this._keySchedule=[],s=0;s6&&s%r==4&&(e=i[e>>>24]<<24|i[e>>>16&255]<<16|i[e>>>8&255]<<8|i[e&255]):(e=e<<8|e>>>24,e=i[e>>>24]<<24|i[e>>>16&255]<<16|i[e>>>8&255]<<8|i[e&255],e^=m[s/r|0]<<24),o[s]=o[s-r]^e);for(var c=this._invKeySchedule=[],l=0;l>>24]]^d[i[e>>>16&255]]^f[i[e>>>8&255]]^p[i[e&255]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,s,c,l,i)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,u,d,f,p,a);var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,i,a,o,s){for(var c=this._nRounds,l=e[t]^n[0],u=e[t+1]^n[1],d=e[t+2]^n[2],f=e[t+3]^n[3],p=4,m=1;m>>24]^i[u>>>16&255]^a[d>>>8&255]^o[f&255]^n[p++],g=r[u>>>24]^i[d>>>16&255]^a[f>>>8&255]^o[l&255]^n[p++],_=r[d>>>24]^i[f>>>16&255]^a[l>>>8&255]^o[u&255]^n[p++],v=r[f>>>24]^i[l>>>16&255]^a[u>>>8&255]^o[d&255]^n[p++];l=h,u=g,d=_,f=v}var h=(s[l>>>24]<<24|s[u>>>16&255]<<16|s[d>>>8&255]<<8|s[f&255])^n[p++],g=(s[u>>>24]<<24|s[d>>>16&255]<<16|s[f>>>8&255]<<8|s[l&255])^n[p++],_=(s[d>>>24]<<24|s[f>>>16&255]<<16|s[l>>>8&255]<<8|s[u&255])^n[p++],v=(s[f>>>24]<<24|s[l>>>16&255]<<16|s[u>>>8&255]<<8|s[d&255])^n[p++];e[t]=h,e[t+1]=g,e[t+2]=_,e[t+3]=v},keySize:256/32});t.AES=n._createHelper(h)})(),e.AES})})),Ze=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Te(),De(),Le(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib,r=n.WordArray,i=n.BlockCipher,a=t.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],c=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],u=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],d=a.DES=i.extend({_doReset:function(){for(var e=this._key.words,t=[],n=0;n<56;n++){var r=o[n]-1;t[n]=e[r>>>5]>>>31-r%32&1}for(var i=this._subKeys=[],a=0;a<16;a++){for(var l=i[a]=[],u=c[a],n=0;n<24;n++)l[n/6|0]|=t[(s[n]-1+u)%28]<<31-n%6,l[4+(n/6|0)]|=t[28+(s[n+24]-1+u)%28]<<31-n%6;l[0]=l[0]<<1|l[0]>>>31;for(var n=1;n<7;n++)l[n]=l[n]>>>(n-1)*4+3;l[7]=l[7]<<5|l[7]>>>27}for(var d=this._invSubKeys=[],n=0;n<16;n++)d[n]=i[15-n]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,n){this._lBlock=e[t],this._rBlock=e[t+1],f.call(this,4,252645135),f.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),f.call(this,1,1431655765);for(var r=0;r<16;r++){for(var i=n[r],a=this._lBlock,o=this._rBlock,s=0,c=0;c<8;c++)s|=l[c][((o^i[c])&u[c])>>>0];this._lBlock=o,this._rBlock=a^s}var d=this._lBlock;this._lBlock=this._rBlock,this._rBlock=d,f.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function f(e,t){var n=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=n,this._lBlock^=n<>>e^this._lBlock)&t;this._lBlock^=n,this._rBlock^=n<192.`);var t=e.slice(0,2),n=e.length<4?e.slice(0,2):e.slice(2,4),i=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=d.createEncryptor(r.create(t)),this._des2=d.createEncryptor(r.create(n)),this._des3=d.createEncryptor(r.create(i))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:192/32,ivSize:64/32,blockSize:64/32});t.TripleDES=i._createHelper(m)})(),e.TripleDES})})),Qe=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Te(),De(),Le(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.StreamCipher,r=t.algo,i=r.RC4=n.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes,r=this._S=[],i=0;i<256;i++)r[i]=i;for(var i=0,a=0;i<256;i++){var o=i%n,s=t[o>>>2]>>>24-o%4*8&255;a=(a+r[i]+s)%256;var c=r[i];r[i]=r[a],r[a]=c}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=a.call(this)},keySize:256/32,ivSize:0});function a(){for(var e=this._S,t=this._i,n=this._j,r=0,i=0;i<4;i++){t=(t+1)%256,n=(n+e[t])%256;var a=e[t];e[t]=e[n],e[n]=a,r|=e[(e[t]+e[n])%256]<<24-i*8}return this._i=t,this._j=n,r}t.RC4=n._createHelper(i);var o=r.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)a.call(this)}});t.RC4Drop=n._createHelper(o)})(),e.RC4})})),$e=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Te(),De(),Le(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.StreamCipher,r=t.algo,i=[],a=[],o=[],s=r.Rabbit=n.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,n=0;n<4;n++)e[n]=(e[n]<<8|e[n]>>>24)&16711935|(e[n]<<24|e[n]>>>8)&4278255360;var r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,e[0]&4294901760|e[1]&65535,e[3]<<16|e[3]>>>16,e[1]&4294901760|e[2]&65535,e[0]<<16|e[0]>>>16,e[2]&4294901760|e[3]&65535,e[1]<<16|e[1]>>>16,e[3]&4294901760|e[0]&65535];this._b=0;for(var n=0;n<4;n++)c.call(this);for(var n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var a=t.words,o=a[0],s=a[1],l=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360,u=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360,d=l>>>16|u&4294901760,f=u<<16|l&65535;i[0]^=l,i[1]^=d,i[2]^=u,i[3]^=f,i[4]^=l,i[5]^=d,i[6]^=u,i[7]^=f;for(var n=0;n<4;n++)c.call(this)}},_doProcessBlock:function(e,t){var n=this._X;c.call(this),i[0]=n[0]^n[5]>>>16^n[3]<<16,i[1]=n[2]^n[7]>>>16^n[5]<<16,i[2]=n[4]^n[1]>>>16^n[7]<<16,i[3]=n[6]^n[3]>>>16^n[1]<<16;for(var r=0;r<4;r++)i[r]=(i[r]<<8|i[r]>>>24)&16711935|(i[r]<<24|i[r]>>>8)&4278255360,e[t+r]^=i[r]},blockSize:128/32,ivSize:64/32});function c(){for(var e=this._X,t=this._C,n=0;n<8;n++)a[n]=t[n];t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0;for(var n=0;n<8;n++){var r=e[n]+t[n],i=r&65535,s=r>>>16;o[n]=((i*i>>>17)+i*s>>>15)+s*s^((r&4294901760)*r|0)+((r&65535)*r|0)}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}t.Rabbit=n._createHelper(s)})(),e.Rabbit})})),et=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Te(),De(),Le(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.StreamCipher,r=t.algo,i=[],a=[],o=[],s=r.RabbitLegacy=n.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,n=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,e[0]&4294901760|e[1]&65535,e[3]<<16|e[3]>>>16,e[1]&4294901760|e[2]&65535,e[0]<<16|e[0]>>>16,e[2]&4294901760|e[3]&65535,e[1]<<16|e[1]>>>16,e[3]&4294901760|e[0]&65535];this._b=0;for(var i=0;i<4;i++)c.call(this);for(var i=0;i<8;i++)r[i]^=n[i+4&7];if(t){var a=t.words,o=a[0],s=a[1],l=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360,u=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360,d=l>>>16|u&4294901760,f=u<<16|l&65535;r[0]^=l,r[1]^=d,r[2]^=u,r[3]^=f,r[4]^=l,r[5]^=d,r[6]^=u,r[7]^=f;for(var i=0;i<4;i++)c.call(this)}},_doProcessBlock:function(e,t){var n=this._X;c.call(this),i[0]=n[0]^n[5]>>>16^n[3]<<16,i[1]=n[2]^n[7]>>>16^n[5]<<16,i[2]=n[4]^n[1]>>>16^n[7]<<16,i[3]=n[6]^n[3]>>>16^n[1]<<16;for(var r=0;r<4;r++)i[r]=(i[r]<<8|i[r]>>>24)&16711935|(i[r]<<24|i[r]>>>8)&4278255360,e[t+r]^=i[r]},blockSize:128/32,ivSize:64/32});function c(){for(var e=this._X,t=this._C,n=0;n<8;n++)a[n]=t[n];t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0;for(var n=0;n<8;n++){var r=e[n]+t[n],i=r&65535,s=r>>>16;o[n]=((i*i>>>17)+i*s>>>15)+s*s^((r&4294901760)*r|0)+((r&65535)*r|0)}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}t.RabbitLegacy=n._createHelper(s)})(),e.RabbitLegacy})})),tt=n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Te(),De(),Le(),Re()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],r):r(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.BlockCipher,r=t.algo;let i=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function s(e,t){let n=t>>24&255,r=t>>16&255,i=t>>8&255,a=t&255,o=e.sbox[0][n]+e.sbox[1][r];return o^=e.sbox[2][i],o+=e.sbox[3][a],o}function c(e,t,n){let r=t,i=n,a;for(let t=0;t<16;++t)r^=e.pbox[t],i=s(e,r)^i,a=r,r=i,i=a;return a=r,r=i,i=a,i^=e.pbox[16],r^=e.pbox[17],{left:r,right:i}}function l(e,t,n){let r=t,i=n,a;for(let t=17;t>1;--t)r^=e.pbox[t],i=s(e,r)^i,a=r,r=i,i=a;return a=r,r=i,i=a,i^=e.pbox[1],r^=e.pbox[0],{left:r,right:i}}function u(e,t,n){for(let t=0;t<4;t++){e.sbox[t]=[];for(let n=0;n<256;n++)e.sbox[t][n]=a[t][n]}let r=0;for(let a=0;a<18;a++)e.pbox[a]=i[a]^t[r],r++,r>=n&&(r=0);let o=0,s=0,l=0;for(let t=0;t<18;t+=2)l=c(e,o,s),o=l.left,s=l.right,e.pbox[t]=o,e.pbox[t+1]=s;for(let t=0;t<4;t++)for(let n=0;n<256;n+=2)l=c(e,o,s),o=l.left,s=l.right,e.sbox[t][n]=o,e.sbox[t][n+1]=s;return!0}var d=r.Blowfish=n.extend({_doReset:function(){if(this._keyPriorReset!==this._key){var e=this._keyPriorReset=this._key,t=e.words;u(o,t,e.sigBytes/4)}},encryptBlock:function(e,t){var n=c(o,e[t],e[t+1]);e[t]=n.left,e[t+1]=n.right},decryptBlock:function(e,t){var n=l(o,e[t],e[t+1]);e[t]=n.left,e[t+1]=n.right},blockSize:64/32,keySize:128/32,ivSize:64/32});t.Blowfish=n._createHelper(d)})(),e.Blowfish})})),nt=e(n(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(B(),Se(),Ce(),we(),Te(),Ee(),De(),Oe(),ke(),Ae(),je(),Me(),Ne(),Pe(),Fe(),Ie(),Le(),Re(),ze(),Be(),Ve(),He(),Ue(),We(),Ge(),Ke(),qe(),Je(),Ye(),Xe(),Ze(),Qe(),$e(),et(),tt()):typeof define==`function`&&define.amd?define(`./core,./x64-core,./lib-typedarrays,./enc-utf16,./enc-base64,./enc-base64url,./md5,./sha1,./sha256,./sha224,./sha512,./sha384,./sha3,./ripemd160,./hmac,./pbkdf2,./evpkdf,./cipher-core,./mode-cfb,./mode-ctr,./mode-ctr-gladman,./mode-ofb,./mode-ecb,./pad-ansix923,./pad-iso10126,./pad-iso97971,./pad-zeropadding,./pad-nopadding,./format-hex,./aes,./tripledes,./rc4,./rabbit,./rabbit-legacy,./blowfish`.split(`,`),r):n.CryptoJS=r(n.CryptoJS)})(e,function(e){return e})}))(),1);const rt=e=>{try{let t=JSON.stringify(e);return nt.default.AES.encrypt(t,be.name).toString()}catch(e){return console.error(`数据加密失败:`,e),``}},it=e=>{try{let t=nt.default.AES.decrypt(e,be.name).toString(nt.default.enc.Utf8);return JSON.parse(t)}catch(e){return console.error(`数据解密失败:`,e),{}}},at=ye(`game`,{state:()=>({gameTime:Date.now(),isPaused:!1,player:{id:`player1`,name:``,planets:[],technologies:{},officers:{},researchQueue:[],fleetMissions:[],battleReports:[],spyReports:[]},currentPlanetId:``,isDark:``,locale:`zh-CN`,sidebarCollapsed:!(window.innerWidth<1024),universePlanets:{}}),getters:{currentPlanet(){return this.player.planets.find(e=>e.id===this.currentPlanetId)},getMoonForPlanet(){return e=>this.player.planets.find(t=>t.parentPlanetId===e&&t.isMoon)}},persist:{key:be.name,storage:localStorage,serializer:{serialize:e=>rt(e),deserialize:e=>it(e)}}});var ot=ee(!1);const st=()=>{let e=at();D(()=>{e.isDark?ot.value=e.isDark===`dark`:(ot.value=window.matchMedia(`(prefers-color-scheme: dark)`).matches,e.isDark=ot.value?`dark`:`light`),t()}),A(ot,()=>{t(),e.isDark=ot.value?`dark`:`light`});let t=()=>{ot.value?document.documentElement.classList.add(`dark`):document.documentElement.classList.remove(`dark`)};return{isDark:ot,toggleTheme:()=>{ot.value=!ot.value}}};var ct={common:{confirm:`确认`,cancel:`取消`,delete:`删除`,edit:`编辑`,save:`保存`,close:`关闭`,back:`返回`,next:`下一步`,previous:`上一步`,submit:`提交`,reset:`重置`,search:`搜索`,filter:`筛选`,loading:`加载中...`,noData:`暂无数据`,error:`错误`,success:`成功`,warning:`警告`,info:`信息`,resourceType:`资源类型`,playerName:`指挥官`,timeHour:`时`,timeMinute:`分`,timeSecond:`秒`,featureLocked:`功能已锁定`,unlockRequired:`需要解锁前置建筑`,requiredBuilding:`所需建筑`,currentLevel:`当前等级`,goToBuildings:`前往建筑页面`,locked:`已锁定`,viewRequirements:`查看前置条件`,requirementsNotMet:`前置条件未满足`,current:`当前`},errors:{requirementsNotMet:`不满足前置条件`,insufficientResources:`资源不足`,shieldDomeLimit:`护盾罩数量限制`,fleetMissionsFull:`舰队任务槽位已满`,insufficientFleet:`舰队数量不足`,insufficientFuel:`燃料不足`,planetOnly:`该建筑只能在行星上建造`,moonOnly:`该建筑只能在月球上建造`,buildQueueFull:`建造队列已满`,insufficientSpace:`空间不足`,buildingLevelZero:`建筑等级为0,无法拆除`,researchQueueFull:`研究队列已满`,moonExists:`已存在月球`,insufficientDebris:`残骸场不足`},nav:{overview:`总览`,buildings:`建筑`,research:`研究`,shipyard:`船坞`,defense:`防御`,fleet:`舰队`,officers:`军官`,simulator:`模拟`,galaxy:`星系`,messages:`消息`,settings:`设置`},sidebar:{language:`语言`,lightMode:`日间模式`,darkMode:`夜间模式`,collapse:`收起菜单`,expand:`展开菜单`},resources:{metal:`金属`,crystal:`晶体`,deuterium:`重氢`,darkMatter:`暗物质`,energy:`能量`,production:`产量`,capacity:`容量`,current:`当前储量`,max:`最大容量`,perHour:`小时`},planet:{planet:`星球`,moon:`月球`,colony:`殖民地`,position:`位置`,coordinates:`坐标`,switchToMoon:`查看月球`,backToPlanet:`返回母星`,fields:`场地`,temperature:`温度`,homePlanet:`母星`,planetPrefix:`星球`,moonSuffix:`的月球`,colonyPrefix:`殖民地`},player:{points:`总积分`},buildings:{metalMine:`金属矿`,crystalMine:`晶体矿`,deuteriumSynthesizer:`重氢合成器`,solarPlant:`太阳能电站`,roboticsFactory:`机器人工厂`,naniteFactory:`纳米工厂`,shipyard:`船坞`,researchLab:`研究实验室`,metalStorage:`金属仓库`,crystalStorage:`晶体仓库`,deuteriumTank:`重氢罐`,darkMatterCollector:`暗物质收集器`,lunarBase:`月球基地`,sensorPhalanx:`传感器阵列`,jumpGate:`跳跃门`,buildTime:`建造时间`,production:`产量`,consumption:`消耗`,totalCost:`累积成本`,totalPoints:`累积积分`,levelRange:`等级范围`},buildingDescriptions:{metalMine:`开采金属资源`,crystalMine:`开采晶体资源`,deuteriumSynthesizer:`合成重氢资源`,solarPlant:`提供能源`,roboticsFactory:`加快建造速度`,naniteFactory:`增加建造队列数量,每级+1队列(最多10个)`,shipyard:`建造舰船`,researchLab:`研究科技`,metalStorage:`增加金属存储上限`,crystalStorage:`增加晶体存储上限`,deuteriumTank:`增加重氢存储上限`,darkMatterCollector:`收集稀有的暗物质资源`,lunarBase:`增加月球可用空间`,sensorPhalanx:`侦测周围星系的舰队活动`,jumpGate:`瞬间传送舰队到其他月球`},ships:{lightFighter:`轻型战斗机`,heavyFighter:`重型战斗机`,cruiser:`巡洋舰`,battleship:`战列舰`,smallCargo:`小型运输船`,largeCargo:`大型运输船`,colonyShip:`殖民船`,recycler:`回收船`,espionageProbe:`间谍探测器`,darkMatterHarvester:`暗物质采集船`},shipDescriptions:{lightFighter:`基础战斗单位`,heavyFighter:`重装战斗机`,cruiser:`中型战舰,攻守平衡`,battleship:`强力战舰`,smallCargo:`运输少量资源`,largeCargo:`运输大量资源`,colonyShip:`用于殖民新星球`,recycler:`收集残骸场资源`,espionageProbe:`侦察敌方星球`,darkMatterHarvester:`专门用于采集暗物质的特殊飞船`},defenses:{rocketLauncher:`火箭发射器`,lightLaser:`轻型激光炮`,heavyLaser:`重型激光炮`,gaussCannon:`高斯炮`,ionCannon:`离子炮`,plasmaTurret:`等离子炮塔`,smallShieldDome:`小型护盾罩`,largeShieldDome:`大型护盾罩`},defenseDescriptions:{rocketLauncher:`基础防御设施`,lightLaser:`轻型能量武器`,heavyLaser:`重型能量武器`,gaussCannon:`高速动能武器`,ionCannon:`破坏护盾的利器`,plasmaTurret:`强力防御设施`,smallShieldDome:`保护整个星球的小型护盾`,largeShieldDome:`保护整个星球的大型护盾`},research:{researchTime:`研究时间`,totalCost:`累积成本`,totalPoints:`累积积分`,levelRange:`等级范围`},technologies:{energyTechnology:`能源技术`,laserTechnology:`激光技术`,ionTechnology:`离子技术`,hyperspaceTechnology:`超空间技术`,plasmaTechnology:`等离子技术`,computerTechnology:`计算机技术`,combustionDrive:`燃烧引擎`,impulseDrive:`脉冲引擎`,hyperspaceDrive:`超空间引擎`,darkMatterTechnology:`暗物质技术`},technologyDescriptions:{energyTechnology:`提高能源利用效率`,laserTechnology:`激光武器和防御的基础`,ionTechnology:`离子武器技术`,hyperspaceTechnology:`超空间跳跃技术`,plasmaTechnology:`等离子武器技术`,computerTechnology:`增加研究队列数量,每级+1队列(最多10个)`,combustionDrive:`基础推进技术`,impulseDrive:`中级推进技术`,hyperspaceDrive:`高级推进技术`,darkMatterTechnology:`研究暗物质的性质和应用`},officers:{commander:`指挥官`,admiral:`上将`,engineer:`工程师`,geologist:`地质学家`,technocrat:`技术专家`,darkMatterSpecialist:`暗物质专家`},officerDescriptions:{commander:`提升建筑速度和管理能力`,admiral:`提升舰队战斗力和速度`,engineer:`提升能源和防御能力`,geologist:`提升资源产量`,technocrat:`提升研究速度和间谍能力`,darkMatterSpecialist:`提升暗物质采集效率`},queue:{buildQueue:`建造队列`,researchQueue:`研究队列`,building:`建造中`,researching:`研究中`,remaining:`剩余时间`,cancel:`取消`,cancelBuild:`取消建造`,cancelResearch:`取消研究`,confirmCancel:`确定要取消吗?将返还50%的资源。`,level:`等级`,upgradeToLevel:`升级到等级`},overview:{title:`星球总览`,resourceOverview:`资源概览`,fleetInfo:`舰队`,currentShips:`当前星球的舰船数量`},buildingsView:{title:`建筑`,usedSpace:`已用空间`,spaceUsage:`占用空间`,level:`等级`,upgradeCost:`升级消耗`,buildTime:`建造时间`,upgrade:`升级`,upgradeFailed:`升级失败`,upgradeFailedMessage:`请检查资源是否足够、空间是否充足或是否有其他建造任务。`,demolish:`拆除`,demolishRefund:`拆除返还`,demolishFailed:`拆除失败`,demolishFailedMessage:`无法拆除该建筑,请检查建造队列是否已满或建筑等级是否为0。`},researchView:{title:`研究`,researchCost:`研究消耗`,research:`研究`,researchFailed:`研究失败`,researchFailedMessage:`请检查资源是否足够、前置条件是否满足,或是否有其他研究任务。`},shipyard:{attack:`攻击力`,shield:`护盾`,armor:`装甲`,speed:`速度`,cargoCapacity:`载货量`,fuelConsumption:`燃料消耗`,buildCost:`建造成本`,buildTime:`建造时间`,perUnit:`每个单位`,batchCalculator:`批量建造计算器`,quantity:`数量`,totalCost:`总成本`,totalTime:`总时间`},shipyardView:{title:`船坞`,attack:`攻击力`,shield:`护盾`,speed:`速度`,cargoCapacity:`载货量`,unitCost:`单位成本`,buildQuantity:`建造数量`,totalCost:`总成本`,build:`建造`,inputError:`输入错误`,inputErrorMessage:`请输入建造数量!`,buildFailed:`建造失败`,buildFailedMessage:`请检查资源是否足够或前置条件是否满足。`},defense:{attack:`攻击力`,shield:`护盾`,armor:`装甲`,buildCost:`建造成本`,buildTime:`建造时间`,perUnit:`每个单位`,batchCalculator:`批量建造计算器`,quantity:`数量`,totalCost:`总成本`,totalTime:`总时间`},defenseView:{title:`防御设施`,attack:`攻击力`,shield:`护盾`,armor:`装甲`,buildTime:`建造时间`,seconds:`秒`,unitCost:`单位成本`,buildQuantity:`建造数量`,totalCost:`总成本`,build:`建造`,shieldDomeBuilt:`护盾罩已建造`,inputError:`输入错误`,inputErrorMessage:`请输入建造数量!`,buildFailed:`建造失败`,buildFailedMessage:`请检查资源是否足够或前置条件是否满足。护盾罩只能建造一个。`},fleetView:{title:`舰队管理`,fleetOverview:`舰队总览`,sendFleet:`派遣舰队`,flightMissions:`飞行任务`,currentPlanetFleet:`当前星球舰队`,attack:`攻击`,shield:`护盾`,armor:`装甲`,speed:`速度`,cargo:`载货`,selectFleet:`选择舰队`,selectFleetDescription:`选择要派遣的舰船数量`,available:`可用`,all:`全部`,targetCoordinates:`目标坐标`,galaxy:`银河系`,system:`星系`,position:`位置`,missionType:`任务类型`,missionInfo:`任务信息`,fuelConsumption:`燃料消耗`,flightTime:`飞行时间`,attackMission:`攻击`,transport:`运输`,colonize:`殖民`,spy:`侦察`,deploy:`部署`,transportResources:`运输资源`,totalCargoCapacity:`总载货量`,used:`已用`,noFlightMissions:`暂无飞行任务`,outbound:`前往`,returning:`返回`,fleetComposition:`舰队组成`,carryingResources:`携带资源`,arrivalTime:`到达时间`,returnTime:`返回时间`,recallFleet:`召回舰队`,sendFailed:`派遣失败`,sendFailedMessage:`请检查舰队数量、燃料是否充足,或载货量是否超出限制。`,recallFailed:`召回失败`,recallFailedMessage:`该任务无法召回。`,unknownPlanet:`未知星球`,fleetMissionSlots:`舰队任务槽位`},officersView:{title:`军官`,activated:`已激活`,inactive:`未激活`,activeStatus:`激活状态`,expirationTime:`到期时间`,remainingTime:`剩余时间`,recruitCost:`招募成本`,days:`天`,benefitsBonus:`效果加成`,resourceProduction:`资源产量`,darkMatterProduction:`暗物质产量`,energyProduction:`电量产出`,buildingSpeed:`建筑速度`,researchSpeed:`研究速度`,fleetSpeed:`舰队速度`,fuelConsumption:`燃料消耗`,defense:`防御力`,storageCapacity:`仓储容量`,buildQueue:`建筑队列`,fleetSlots:`舰队槽位`,hire:`招募`,renew:`续约`,dismiss:`解雇`,hireTitle:`招募军官`,hireMessage:`确定要招募 {name} 吗?有效期为7天。`,renewTitle:`续约军官`,renewMessage:`确定要为 {name} 续约7天吗?`,dismissTitle:`解雇军官`,dismissMessage:`确定要解雇 {name} 吗?不会返还任何费用。`,hireFailed:`招募失败`,renewFailed:`续约失败`,insufficientResources:`资源不足!`},galaxyView:{title:`星系`,selectCoordinates:`选择坐标`,galaxy:`银河系`,selectGalaxy:`选择银河系`,system:`星系`,selectSystem:`选择星系`,view:`查看`,myPlanet:`我的星球`,totalPositions:`共10个星球位置`,mine:`我的`,hostile:`敌对`,emptySlot:`空位 - 可殖民`,scout:`侦察`,attack:`攻击`,colonize:`殖民`,switch:`切换`,scoutPlanetTitle:`侦察星球`,attackPlanetTitle:`攻击星球`,colonizePlanetTitle:`殖民星球`,scoutPlanetMessage:`确定要派遣间谍探测器侦察星球 [{coordinates}] 吗? - -请前往舰队页面选择舰船并派遣。`,attackPlanetMessage:`确定要攻击星球 [{coordinates}] 吗? - -请前往舰队页面选择舰船并派遣。`,colonizePlanetMessage:`确定要殖民位置 [{coordinates}] 吗? - -请前往舰队页面派遣殖民船。`},messagesView:{title:`消息中心`,battleReports:`战斗报告`,spyReports:`间谍报告`,noBattleReports:`暂无战斗报告`,noSpyReports:`暂无间谍报告`,battleReport:`战斗报告`,spyReport:`间谍报告`,victory:`胜利`,defeat:`失败`,draw:`平局`,attackerFleet:`攻击方舰队`,defenderFleet:`防守方舰队`,defenderDefense:`防守方防御`,attackerLosses:`攻击方损失`,defenderLosses:`防守方损失`,noLosses:`无损失`,plunder:`掠夺资源`,debrisField:`残骸场`,resources:`资源`,fleet:`舰队`,defense:`防御`,buildings:`建筑`},simulatorView:{title:`战斗模拟器`,attacker:`攻击方`,defender:`防守方`,attackerConfig:`攻击方配置`,attackerConfigDesc:`设置攻击方的舰队和科技等级`,defenderConfig:`防守方配置`,defenderConfigDesc:`设置防守方的舰队、防御和科技等级`,fleet:`舰队`,defenseStructures:`防御设施`,techLevels:`科技等级`,weapon:`武器`,shield:`护盾`,armor:`装甲`,defenderResources:`防守方资源(用于掠夺计算)`,startSimulation:`开始模拟`,reset:`重置`,battleResult:`战斗结果`,attackerVictory:`攻击方胜利`,defenderVictory:`防守方胜利`,draw:`平局`,afterRounds:`经过 {rounds} 回合战斗`,attackerLosses:`攻击方损失`,defenderLosses:`防守方损失`,noLosses:`无损失`,attackerRemaining:`攻击方剩余`,defenderRemaining:`防守方剩余`,allDestroyed:`全部摧毁`,plunderableResources:`可掠夺资源`,debrisField:`残骸场`,moonChance:`月球生成概率`,showRoundDetails:`显示回合详情`,hideRoundDetails:`隐藏回合详情`,round:`第 {round} 回合`,attackerRemainingPower:`攻击方剩余火力`,defenderRemainingPower:`防守方剩余火力`},settings:{dataManagement:`数据管理`,dataManagementDesc:`导出、导入或清除游戏数据`,exportData:`导出数据`,exportDataDesc:`将游戏进度导出为JSON文件`,export:`导出`,exporting:`导出中...`,exportSuccess:`导出成功`,exportFailed:`导出失败,请重试`,importData:`导入数据`,importDataDesc:`从JSON文件恢复游戏进度`,selectFile:`导入`,importSuccess:`导入成功`,importConfirmTitle:`确认导入数据`,importConfirmMessage:`导入数据将覆盖当前游戏进度,此操作不可撤销。确定要继续吗?`,importFailed:`导入失败,请检查文件格式`,clearData:`清除数据`,clearDataDesc:`删除所有游戏数据并重置游戏`,clear:`清除`,clearConfirmTitle:`确认清除数据`,clearConfirmMessage:`这将删除所有游戏数据并重新开始,此操作不可撤销。确定要继续吗?`,gameSettings:`游戏设置`,gameSettingsDesc:`调整游戏参数和偏好设置`,playerName:`玩家名称`,gameSpeed:`游戏速度`,gameSpeedDesc:`当前游戏速度倍率`,about:`关于`,version:`版本`,buildDate:`构建日期`,community:`社区`,github:`GitHub 仓库`,qqGroup:`QQ 交流群`}},lt={common:{confirm:`確認`,cancel:`取消`,delete:`刪除`,edit:`編輯`,save:`儲存`,close:`關閉`,back:`返回`,next:`下一步`,previous:`上一步`,submit:`提交`,reset:`重置`,search:`搜尋`,filter:`篩選`,loading:`載入中...`,noData:`暫無資料`,error:`錯誤`,success:`成功`,warning:`警告`,info:`資訊`,resourceType:`資源類型`,playerName:`指揮官`,timeHour:`時`,timeMinute:`分`,timeSecond:`秒`,featureLocked:`功能已鎖定`,unlockRequired:`需要解鎖前置建築`,requiredBuilding:`所需建築`,currentLevel:`當前等級`,goToBuildings:`前往建築頁面`,locked:`已鎖定`,viewRequirements:`查看前置條件`,requirementsNotMet:`前置條件未滿足`,current:`當前`},errors:{requirementsNotMet:`不滿足前置條件`,insufficientResources:`資源不足`,shieldDomeLimit:`護盾罩數量限制`,fleetMissionsFull:`艦隊任務槽位已滿`,insufficientFleet:`艦隊數量不足`,insufficientFuel:`燃料不足`,planetOnly:`該建築只能在行星上建造`,moonOnly:`該建築只能在月球上建造`,buildQueueFull:`建造隊列已滿`,insufficientSpace:`空間不足`,buildingLevelZero:`建築等級為0,無法拆除`,researchQueueFull:`研究隊列已滿`,moonExists:`已存在月球`,insufficientDebris:`殘骸場不足`},nav:{overview:`總覽`,buildings:`建築`,research:`研究`,shipyard:`船塢`,defense:`防禦`,fleet:`艦隊`,officers:`軍官`,simulator:`模擬`,galaxy:`星系`,messages:`訊息`,settings:`設定`},sidebar:{language:`語言`,lightMode:`日間模式`,darkMode:`夜間模式`,collapse:`收起選單`,expand:`展開選單`},resources:{metal:`金屬`,crystal:`晶體`,deuterium:`重氫`,darkMatter:`暗物質`,energy:`能量`,production:`產量`,capacity:`容量`,current:`當前儲量`,max:`最大容量`,perHour:`小時`},planet:{planet:`星球`,moon:`月球`,colony:`殖民地`,position:`位置`,coordinates:`座標`,switchToMoon:`查看月球`,backToPlanet:`返回母星`,fields:`場地`,temperature:`溫度`,homePlanet:`母星`,planetPrefix:`星球`,moonSuffix:`的月球`,colonyPrefix:`殖民地`},player:{points:`總積分`},buildings:{metalMine:`金屬礦`,crystalMine:`晶體礦`,deuteriumSynthesizer:`重氫合成器`,solarPlant:`太陽能電站`,roboticsFactory:`機器人工廠`,naniteFactory:`納米工廠`,shipyard:`船塢`,researchLab:`研究實驗室`,metalStorage:`金屬倉庫`,crystalStorage:`晶體倉庫`,deuteriumTank:`重氫罐`,darkMatterCollector:`暗物質收集器`,lunarBase:`月球基地`,sensorPhalanx:`傳感器陣列`,jumpGate:`跳躍門`,buildTime:`建造時間`,production:`產量`,consumption:`消耗`,totalCost:`累積成本`,totalPoints:`累積積分`,levelRange:`等級範圍`},buildingDescriptions:{metalMine:`開採金屬資源`,crystalMine:`開採晶體資源`,deuteriumSynthesizer:`合成重氫資源`,solarPlant:`提供能源`,roboticsFactory:`加快建造速度`,naniteFactory:`增加建造佇列數量,每級+1佇列(最多10個)`,shipyard:`建造艦船`,researchLab:`研究科技`,metalStorage:`增加金屬儲存上限`,crystalStorage:`增加晶體儲存上限`,deuteriumTank:`增加重氫儲存上限`,darkMatterCollector:`收集稀有的暗物質資源`,lunarBase:`增加月球可用空間`,sensorPhalanx:`偵測周圍星系的艦隊活動`,jumpGate:`瞬間傳送艦隊到其他月球`},ships:{lightFighter:`輕型戰鬥機`,heavyFighter:`重型戰鬥機`,cruiser:`巡洋艦`,battleship:`戰列艦`,smallCargo:`小型運輸船`,largeCargo:`大型運輸船`,colonyShip:`殖民船`,recycler:`回收船`,espionageProbe:`間諜探測器`,darkMatterHarvester:`暗物質採集船`},shipDescriptions:{lightFighter:`基礎戰鬥單位`,heavyFighter:`重裝戰鬥機`,cruiser:`中型戰艦,攻守平衡`,battleship:`強力戰艦`,smallCargo:`運輸少量資源`,largeCargo:`運輸大量資源`,colonyShip:`用於殖民新星球`,recycler:`收集殘骸場資源`,espionageProbe:`偵察敵方星球`,darkMatterHarvester:`專門用於採集暗物質的特殊飛船`},defenses:{rocketLauncher:`火箭發射器`,lightLaser:`輕型激光炮`,heavyLaser:`重型激光炮`,gaussCannon:`高斯炮`,ionCannon:`離子炮`,plasmaTurret:`等離子炮塔`,smallShieldDome:`小型護盾罩`,largeShieldDome:`大型護盾罩`},defenseDescriptions:{rocketLauncher:`基礎防禦設施`,lightLaser:`輕型能量武器`,heavyLaser:`重型能量武器`,gaussCannon:`高速動能武器`,ionCannon:`破壞護盾的利器`,plasmaTurret:`強力防禦設施`,smallShieldDome:`保護整個星球的小型護盾`,largeShieldDome:`保護整個星球的大型護盾`},research:{researchTime:`研究時間`,totalCost:`累積成本`,totalPoints:`累積積分`,levelRange:`等級範圍`},technologies:{energyTechnology:`能源技術`,laserTechnology:`激光技術`,ionTechnology:`離子技術`,hyperspaceTechnology:`超空間技術`,plasmaTechnology:`等離子技術`,computerTechnology:`計算機技術`,combustionDrive:`燃燒引擎`,impulseDrive:`脈衝引擎`,hyperspaceDrive:`超空間引擎`,darkMatterTechnology:`暗物質技術`},technologyDescriptions:{energyTechnology:`提高能源利用效率`,laserTechnology:`激光武器和防禦的基礎`,ionTechnology:`離子武器技術`,hyperspaceTechnology:`超空間跳躍技術`,plasmaTechnology:`等離子武器技術`,computerTechnology:`增加研究佇列數量,每級+1佇列(最多10個)`,combustionDrive:`基礎推進技術`,impulseDrive:`中級推進技術`,hyperspaceDrive:`高級推進技術`,darkMatterTechnology:`研究暗物質的性質和應用`},officers:{commander:`指揮官`,admiral:`上將`,engineer:`工程師`,geologist:`地質學家`,technocrat:`技術專家`,darkMatterSpecialist:`暗物質專家`},officerDescriptions:{commander:`提升建築速度和管理能力`,admiral:`提升艦隊戰鬥力和速度`,engineer:`提升能源和防禦能力`,geologist:`提升資源產量`,technocrat:`提升研究速度和間諜能力`,darkMatterSpecialist:`提升暗物質採集效率`},queue:{buildQueue:`建造佇列`,researchQueue:`研究佇列`,building:`建造中`,researching:`研究中`,remaining:`剩餘時間`,cancel:`取消`,cancelBuild:`取消建造`,cancelResearch:`取消研究`,confirmCancel:`確定要取消嗎?將返還50%的資源。`,level:`等級`,upgradeToLevel:`升級到等級`},overview:{title:`星球總覽`,resourceOverview:`資源概覽`,fleetInfo:`艦隊資訊`,currentShips:`當前星球的艦船數量`},buildingsView:{title:`建築`,usedSpace:`已用空間`,spaceUsage:`佔用空間`,level:`等級`,upgradeCost:`升級消耗`,buildTime:`建造時間`,upgrade:`升級`,upgradeFailed:`升級失敗`,upgradeFailedMessage:`請檢查資源是否足夠、空間是否充足或是否有其他建造任務。`,demolish:`拆除`,demolishRefund:`拆除返還`,demolishFailed:`拆除失敗`,demolishFailedMessage:`無法拆除該建築,請檢查建造隊列是否已滿或建築等級是否為0。`},researchView:{title:`研究`,researchCost:`研究消耗`,research:`研究`,researchFailed:`研究失敗`,researchFailedMessage:`請檢查資源是否足夠、前置條件是否滿足,或是否有其他研究任務。`},shipyard:{attack:`攻擊力`,shield:`護盾`,armor:`裝甲`,speed:`速度`,cargoCapacity:`載貨量`,fuelConsumption:`燃料消耗`,buildCost:`建造成本`,buildTime:`建造時間`,perUnit:`每個單位`,batchCalculator:`批量建造計算器`,quantity:`數量`,totalCost:`總成本`,totalTime:`總時間`},shipyardView:{title:`船塢`,attack:`攻擊力`,shield:`護盾`,speed:`速度`,cargoCapacity:`載貨量`,unitCost:`單位成本`,buildQuantity:`建造數量`,totalCost:`總成本`,build:`建造`,inputError:`輸入錯誤`,inputErrorMessage:`請輸入建造數量!`,buildFailed:`建造失敗`,buildFailedMessage:`請檢查資源是否足夠或前置條件是否滿足。`},defense:{attack:`攻擊力`,shield:`護盾`,armor:`裝甲`,buildCost:`建造成本`,buildTime:`建造時間`,perUnit:`每個單位`,batchCalculator:`批量建造計算器`,quantity:`數量`,totalCost:`總成本`,totalTime:`總時間`},defenseView:{title:`防禦設施`,attack:`攻擊力`,shield:`護盾`,armor:`裝甲`,buildTime:`建造時間`,seconds:`秒`,unitCost:`單位成本`,buildQuantity:`建造數量`,totalCost:`總成本`,build:`建造`,shieldDomeBuilt:`護盾罩已建造`,inputError:`輸入錯誤`,inputErrorMessage:`請輸入建造數量!`,buildFailed:`建造失敗`,buildFailedMessage:`請檢查資源是否足夠或前置條件是否滿足。護盾罩只能建造一個。`},fleetView:{title:`艦隊管理`,fleetOverview:`艦隊總覽`,sendFleet:`派遣艦隊`,flightMissions:`飛行任務`,currentPlanetFleet:`當前星球艦隊`,attack:`攻擊`,shield:`護盾`,armor:`裝甲`,speed:`速度`,cargo:`載貨`,selectFleet:`選擇艦隊`,selectFleetDescription:`選擇要派遣的艦船數量`,available:`可用`,all:`全部`,targetCoordinates:`目標座標`,galaxy:`銀河系`,system:`星系`,position:`位置`,missionType:`任務類型`,missionInfo:`任務資訊`,fuelConsumption:`燃料消耗`,flightTime:`飛行時間`,attackMission:`攻擊`,transport:`運輸`,colonize:`殖民`,spy:`偵察`,deploy:`部署`,transportResources:`運輸資源`,totalCargoCapacity:`總載貨量`,used:`已用`,noFlightMissions:`暫無飛行任務`,outbound:`前往`,returning:`返回`,fleetComposition:`艦隊組成`,carryingResources:`攜帶資源`,arrivalTime:`到達時間`,returnTime:`返回時間`,recallFleet:`召回艦隊`,sendFailed:`派遣失敗`,sendFailedMessage:`請檢查艦隊數量、燃料是否充足,或載貨量是否超出限制。`,recallFailed:`召回失敗`,recallFailedMessage:`該任務無法召回。`,unknownPlanet:`未知星球`,fleetMissionSlots:`艦隊任務槽位`},officersView:{title:`軍官`,activated:`已啟用`,inactive:`未啟用`,activeStatus:`啟用狀態`,expirationTime:`到期時間`,remainingTime:`剩餘時間`,recruitCost:`招募成本`,days:`天`,benefitsBonus:`效果加成`,resourceProduction:`資源產量`,darkMatterProduction:`暗物質產量`,energyProduction:`電量產出`,buildingSpeed:`建築速度`,researchSpeed:`研究速度`,fleetSpeed:`艦隊速度`,fuelConsumption:`燃料消耗`,defense:`防禦力`,storageCapacity:`倉儲容量`,buildQueue:`建築佇列`,fleetSlots:`艦隊槽位`,hire:`招募`,renew:`續約`,dismiss:`解雇`,hireTitle:`招募軍官`,hireMessage:`確定要招募 {name} 嗎?有效期為7天。`,renewTitle:`續約軍官`,renewMessage:`確定要為 {name} 續約7天嗎?`,dismissTitle:`解雇軍官`,dismissMessage:`確定要解雇 {name} 嗎?不會返還任何費用。`,hireFailed:`招募失敗`,renewFailed:`續約失敗`,insufficientResources:`資源不足!`},galaxyView:{title:`星系`,selectCoordinates:`選擇座標`,galaxy:`銀河系`,selectGalaxy:`選擇銀河系`,system:`星系`,selectSystem:`選擇星系`,view:`查看`,myPlanet:`我的星球`,totalPositions:`共10個星球位置`,mine:`我的`,hostile:`敵對`,emptySlot:`空位 - 可殖民`,scout:`偵察`,attack:`攻擊`,colonize:`殖民`,switch:`切換`,scoutPlanetTitle:`偵察星球`,attackPlanetTitle:`攻擊星球`,colonizePlanetTitle:`殖民星球`,scoutPlanetMessage:`確定要派遣間諜探測器偵察星球 [{coordinates}] 嗎? - -請前往艦隊頁面選擇艦船並派遣。`,attackPlanetMessage:`確定要攻擊星球 [{coordinates}] 嗎? - -請前往艦隊頁面選擇艦船並派遣。`,colonizePlanetMessage:`確定要殖民位置 [{coordinates}] 嗎? - -請前往艦隊頁面派遣殖民船。`},messagesView:{title:`訊息中心`,battleReports:`戰鬥報告`,spyReports:`間諜報告`,noBattleReports:`暫無戰鬥報告`,noSpyReports:`暫無間諜報告`,battleReport:`戰鬥報告`,spyReport:`間諜報告`,victory:`勝利`,defeat:`失敗`,draw:`平局`,attackerFleet:`攻擊方艦隊`,defenderFleet:`防守方艦隊`,defenderDefense:`防守方防禦`,attackerLosses:`攻擊方損失`,defenderLosses:`防守方損失`,noLosses:`無損失`,plunder:`掠奪資源`,debrisField:`殘骸場`,resources:`資源`,fleet:`艦隊`,defense:`防禦`,buildings:`建築`},simulatorView:{title:`戰鬥模擬器`,attacker:`攻擊方`,defender:`防守方`,attackerConfig:`攻擊方配置`,attackerConfigDesc:`設置攻擊方的艦隊和科技等級`,defenderConfig:`防守方配置`,defenderConfigDesc:`設置防守方的艦隊、防禦和科技等級`,fleet:`艦隊`,defenseStructures:`防禦設施`,techLevels:`科技等級`,weapon:`武器`,shield:`護盾`,armor:`裝甲`,defenderResources:`防守方資源(用於掠奪計算)`,startSimulation:`開始模擬`,reset:`重置`,battleResult:`戰鬥結果`,attackerVictory:`攻擊方勝利`,defenderVictory:`防守方勝利`,draw:`平局`,afterRounds:`經過 {rounds} 回合戰鬥`,attackerLosses:`攻擊方損失`,defenderLosses:`防守方損失`,noLosses:`無損失`,attackerRemaining:`攻擊方剩餘`,defenderRemaining:`防守方剩餘`,allDestroyed:`全部摧毀`,plunderableResources:`可掠奪資源`,debrisField:`殘骸場`,moonChance:`月球生成機率`,showRoundDetails:`顯示回合詳情`,hideRoundDetails:`隱藏回合詳情`,round:`第 {round} 回合`,attackerRemainingPower:`攻擊方剩餘火力`,defenderRemainingPower:`防守方剩餘火力`},settings:{dataManagement:`資料管理`,dataManagementDesc:`匯出、匯入或清除遊戲資料`,exportData:`匯出資料`,exportDataDesc:`將遊戲進度匯出為JSON檔案`,export:`匯出`,exporting:`匯出中...`,exportSuccess:`匯出成功`,exportFailed:`匯出失敗,請重試`,importData:`匯入資料`,importDataDesc:`從JSON檔案恢復遊戲進度`,selectFile:`匯入`,importSuccess:`匯入成功`,importConfirmTitle:`確認匯入資料`,importConfirmMessage:`匯入資料將覆蓋目前遊戲進度,此操作不可撤銷。確定要繼續嗎?`,importFailed:`匯入失敗,請檢查檔案格式`,clearData:`清除資料`,clearDataDesc:`刪除所有遊戲資料並重置遊戲`,clear:`清除`,clearConfirmTitle:`確認清除資料`,clearConfirmMessage:`這將刪除所有遊戲資料並重新開始,此操作不可撤銷。確定要繼續嗎?`,gameSettings:`遊戲設定`,gameSettingsDesc:`調整遊戲參數和偏好設定`,playerName:`玩家名稱`,gameSpeed:`遊戲速度`,gameSpeedDesc:`目前遊戲速度倍率`,about:`關於`,version:`版本`,buildDate:`建置日期`,community:`社群`,github:`GitHub 儲存庫`,qqGroup:`QQ 交流群`}},ut={common:{confirm:`Confirm`,cancel:`Cancel`,delete:`Delete`,edit:`Edit`,save:`Save`,close:`Close`,back:`Back`,next:`Next`,previous:`Previous`,submit:`Submit`,reset:`Reset`,search:`Search`,filter:`Filter`,loading:`Loading...`,noData:`No Data`,error:`Error`,success:`Success`,warning:`Warning`,info:`Info`,resourceType:`Resource Type`,playerName:`Commander`,timeHour:`h`,timeMinute:`m`,timeSecond:`s`,featureLocked:`Feature Locked`,unlockRequired:`Building Required`,requiredBuilding:`Required Building`,currentLevel:`Current Level`,goToBuildings:`Go to Buildings`,locked:`Locked`,viewRequirements:`View Requirements`,requirementsNotMet:`Requirements Not Met`,current:`Current`},errors:{requirementsNotMet:`Requirements not met`,insufficientResources:`Insufficient resources`,shieldDomeLimit:`Shield dome limit reached`,fleetMissionsFull:`Fleet mission slots full`,insufficientFleet:`Insufficient fleet`,insufficientFuel:`Insufficient fuel`,planetOnly:`This building can only be built on planets`,moonOnly:`This building can only be built on moons`,buildQueueFull:`Build queue full`,insufficientSpace:`Insufficient space`,buildingLevelZero:`Building level is 0, cannot demolish`,researchQueueFull:`Research queue full`,moonExists:`Moon already exists`,insufficientDebris:`Insufficient debris field`},nav:{overview:`Overview`,buildings:`Buildings`,research:`Research`,shipyard:`Shipyard`,defense:`Defense`,fleet:`Fleet`,officers:`Officers`,simulator:`Simulator`,galaxy:`Galaxy`,messages:`Messages`,settings:`Settings`},sidebar:{language:`Language`,lightMode:`Light Mode`,darkMode:`Dark Mode`,collapse:`Collapse`,expand:`Expand`},resources:{metal:`Metal`,crystal:`Crystal`,deuterium:`Deuterium`,darkMatter:`Dark Matter`,energy:`Energy`,production:`Production`,capacity:`Capacity`,current:`Current`,max:`Max Capacity`,perHour:`hour`},planet:{planet:`Planet`,moon:`Moon`,colony:`Colony`,position:`Position`,coordinates:`Coordinates`,switchToMoon:`View Moon`,backToPlanet:`Back to Planet`,fields:`Fields`,temperature:`Temperature`,homePlanet:`Home Planet`,planetPrefix:`Planet`,moonSuffix:`'s Moon`,colonyPrefix:`Colony`},player:{points:`Total Points`},buildings:{metalMine:`Metal Mine`,crystalMine:`Crystal Mine`,deuteriumSynthesizer:`Deuterium Synthesizer`,solarPlant:`Solar Plant`,roboticsFactory:`Robotics Factory`,naniteFactory:`Nanite Factory`,shipyard:`Shipyard`,researchLab:`Research Lab`,metalStorage:`Metal Storage`,crystalStorage:`Crystal Storage`,deuteriumTank:`Deuterium Tank`,darkMatterCollector:`Dark Matter Collector`,lunarBase:`Lunar Base`,sensorPhalanx:`Sensor Phalanx`,jumpGate:`Jump Gate`,buildTime:`Build Time`,production:`Production`,consumption:`Consumption`,totalCost:`Total Cost`,totalPoints:`Total Points`,levelRange:`Level Range`},buildingDescriptions:{metalMine:`Extracts metal resources`,crystalMine:`Extracts crystal resources`,deuteriumSynthesizer:`Synthesizes deuterium resources`,solarPlant:`Provides energy`,roboticsFactory:`Accelerates construction speed`,naniteFactory:`Increases build queue capacity, +1 per level (max 10)`,shipyard:`Constructs ships`,researchLab:`Researches technologies`,metalStorage:`Increases metal storage capacity`,crystalStorage:`Increases crystal storage capacity`,deuteriumTank:`Increases deuterium storage capacity`,darkMatterCollector:`Collects rare dark matter resources`,lunarBase:`Increases available space on the moon`,sensorPhalanx:`Detects fleet activities in surrounding systems`,jumpGate:`Instantly transfers fleets to other moons`},ships:{lightFighter:`Light Fighter`,heavyFighter:`Heavy Fighter`,cruiser:`Cruiser`,battleship:`Battleship`,smallCargo:`Small Cargo`,largeCargo:`Large Cargo`,colonyShip:`Colony Ship`,recycler:`Recycler`,espionageProbe:`Espionage Probe`,darkMatterHarvester:`Dark Matter Harvester`},shipDescriptions:{lightFighter:`Basic combat unit`,heavyFighter:`Heavily armored fighter`,cruiser:`Medium warship, balanced offense and defense`,battleship:`Powerful warship`,smallCargo:`Transports small amounts of resources`,largeCargo:`Transports large amounts of resources`,colonyShip:`Used to colonize new planets`,recycler:`Collects debris field resources`,espionageProbe:`Scouts enemy planets`,darkMatterHarvester:`Special ship for harvesting dark matter`},defenses:{rocketLauncher:`Rocket Launcher`,lightLaser:`Light Laser`,heavyLaser:`Heavy Laser`,gaussCannon:`Gauss Cannon`,ionCannon:`Ion Cannon`,plasmaTurret:`Plasma Turret`,smallShieldDome:`Small Shield Dome`,largeShieldDome:`Large Shield Dome`},defenseDescriptions:{rocketLauncher:`Basic defense facility`,lightLaser:`Light energy weapon`,heavyLaser:`Heavy energy weapon`,gaussCannon:`High-speed kinetic weapon`,ionCannon:`Effective against shields`,plasmaTurret:`Powerful defense facility`,smallShieldDome:`Small shield protecting the entire planet`,largeShieldDome:`Large shield protecting the entire planet`},research:{researchTime:`Research Time`,totalCost:`Total Cost`,totalPoints:`Total Points`,levelRange:`Level Range`},technologies:{energyTechnology:`Energy Technology`,laserTechnology:`Laser Technology`,ionTechnology:`Ion Technology`,hyperspaceTechnology:`Hyperspace Technology`,plasmaTechnology:`Plasma Technology`,computerTechnology:`Computer Technology`,combustionDrive:`Combustion Drive`,impulseDrive:`Impulse Drive`,hyperspaceDrive:`Hyperspace Drive`,darkMatterTechnology:`Dark Matter Technology`},technologyDescriptions:{energyTechnology:`Improves energy efficiency`,laserTechnology:`Foundation of laser weapons and defense`,ionTechnology:`Ion weapon technology`,hyperspaceTechnology:`Hyperspace jump technology`,plasmaTechnology:`Plasma weapon technology`,computerTechnology:`Increases research queue capacity, +1 per level (max 10)`,combustionDrive:`Basic propulsion technology`,impulseDrive:`Intermediate propulsion technology`,hyperspaceDrive:`Advanced propulsion technology`,darkMatterTechnology:`Research into dark matter properties and applications`},officers:{commander:`Commander`,admiral:`Admiral`,engineer:`Engineer`,geologist:`Geologist`,technocrat:`Technocrat`,darkMatterSpecialist:`Dark Matter Specialist`},officerDescriptions:{commander:`Improves building speed and management`,admiral:`Improves fleet combat and speed`,engineer:`Improves energy and defense`,geologist:`Improves resource production`,technocrat:`Improves research speed and espionage`,darkMatterSpecialist:`Improves dark matter collection efficiency`},queue:{buildQueue:`Build Queue`,researchQueue:`Research Queue`,building:`Building`,researching:`Researching`,remaining:`Remaining`,cancel:`Cancel`,cancelBuild:`Cancel Build`,cancelResearch:`Cancel Research`,confirmCancel:`Are you sure you want to cancel? 50% of resources will be refunded.`,level:`Level`,upgradeToLevel:`Upgrade to Level`},overview:{title:`Planet Overview`,resourceOverview:`Resources`,fleetInfo:`Fleet`,currentShips:`Ships on this planet`},buildingsView:{title:`Buildings`,usedSpace:`Used Space`,spaceUsage:`Space Usage`,level:`Level`,upgradeCost:`Upgrade Cost`,buildTime:`Build Time`,upgrade:`Upgrade`,upgradeFailed:`Upgrade Failed`,upgradeFailedMessage:`Please check if you have enough resources, space, or if there are other build tasks.`,demolish:`Demolish`,demolishRefund:`Demolish Refund`,demolishFailed:`Demolish Failed`,demolishFailedMessage:`Unable to demolish this building. Please check if the build queue is full or the building level is 0.`},researchView:{title:`Research`,researchCost:`Research Cost`,research:`Research`,researchFailed:`Research Failed`,researchFailedMessage:`Please check if you have enough resources, prerequisites are met, or if there are other research tasks.`},shipyard:{attack:`Attack`,shield:`Shield`,armor:`Armor`,speed:`Speed`,cargoCapacity:`Cargo Capacity`,fuelConsumption:`Fuel Consumption`,buildCost:`Build Cost`,buildTime:`Build Time`,perUnit:`Per Unit`,batchCalculator:`Batch Calculator`,quantity:`Quantity`,totalCost:`Total Cost`,totalTime:`Total Time`},shipyardView:{title:`Shipyard`,attack:`Attack`,shield:`Shield`,speed:`Speed`,cargoCapacity:`Cargo Capacity`,unitCost:`Unit Cost`,buildQuantity:`Build Quantity`,totalCost:`Total Cost`,build:`Build`,inputError:`Input Error`,inputErrorMessage:`Please enter build quantity!`,buildFailed:`Build Failed`,buildFailedMessage:`Please check if you have enough resources or if prerequisites are met.`},defense:{attack:`Attack`,shield:`Shield`,armor:`Armor`,buildCost:`Build Cost`,buildTime:`Build Time`,perUnit:`Per Unit`,batchCalculator:`Batch Calculator`,quantity:`Quantity`,totalCost:`Total Cost`,totalTime:`Total Time`},defenseView:{title:`Defense`,attack:`Attack`,shield:`Shield`,armor:`Armor`,buildTime:`Build Time`,seconds:`s`,unitCost:`Unit Cost`,buildQuantity:`Build Quantity`,totalCost:`Total Cost`,build:`Build`,shieldDomeBuilt:`Shield dome already built`,inputError:`Input Error`,inputErrorMessage:`Please enter build quantity!`,buildFailed:`Build Failed`,buildFailedMessage:`Please check if you have enough resources or if prerequisites are met. Shield domes can only be built once.`},fleetView:{title:`Fleet Management`,fleetOverview:`Fleet Overview`,sendFleet:`Send Fleet`,flightMissions:`Flight Missions`,currentPlanetFleet:`Current Planet Fleet`,attack:`Attack`,shield:`Shield`,armor:`Armor`,speed:`Speed`,cargo:`Cargo`,selectFleet:`Select Fleet`,selectFleetDescription:`Select the number of ships to send`,available:`Available`,all:`All`,targetCoordinates:`Target Coordinates`,galaxy:`Galaxy`,system:`System`,position:`Position`,missionType:`Mission Type`,missionInfo:`Mission Info`,fuelConsumption:`Fuel Consumption`,flightTime:`Flight Time`,attackMission:`Attack`,transport:`Transport`,colonize:`Colonize`,spy:`Spy`,deploy:`Deploy`,transportResources:`Transport Resources`,totalCargoCapacity:`Total Cargo Capacity`,used:`Used`,noFlightMissions:`No flight missions`,outbound:`Outbound`,returning:`Returning`,fleetComposition:`Fleet Composition`,carryingResources:`Carrying Resources`,arrivalTime:`Arrival Time`,returnTime:`Return Time`,recallFleet:`Recall Fleet`,sendFailed:`Send Failed`,sendFailedMessage:`Please check fleet count, fuel availability, or cargo capacity limits.`,recallFailed:`Recall Failed`,recallFailedMessage:`This mission cannot be recalled.`,unknownPlanet:`Unknown Planet`,fleetMissionSlots:`Fleet Mission Slots`},officersView:{title:`Officers`,activated:`Activated`,inactive:`Inactive`,activeStatus:`Active Status`,expirationTime:`Expiration Time`,remainingTime:`Remaining Time`,recruitCost:`Recruitment Cost`,days:`days`,benefitsBonus:`Benefits Bonus`,resourceProduction:`Resource Production`,darkMatterProduction:`Dark Matter Production`,energyProduction:`Energy Production`,buildingSpeed:`Building Speed`,researchSpeed:`Research Speed`,fleetSpeed:`Fleet Speed`,fuelConsumption:`Fuel Consumption`,defense:`Defense`,storageCapacity:`Storage Capacity`,buildQueue:`Build Queue`,fleetSlots:`Fleet Slots`,hire:`Hire`,renew:`Renew`,dismiss:`Dismiss`,hireTitle:`Hire Officer`,hireMessage:`Are you sure you want to hire {name}? Valid for 7 days.`,renewTitle:`Renew Officer`,renewMessage:`Are you sure you want to renew {name} for 7 days?`,dismissTitle:`Dismiss Officer`,dismissMessage:`Are you sure you want to dismiss {name}? No refunds will be given.`,hireFailed:`Hire Failed`,renewFailed:`Renew Failed`,insufficientResources:`Insufficient resources!`},galaxyView:{title:`Galaxy`,selectCoordinates:`Select Coordinates`,galaxy:`Galaxy`,selectGalaxy:`Select Galaxy`,system:`System`,selectSystem:`Select System`,view:`View`,myPlanet:`My Planet`,totalPositions:`10 planet positions total`,mine:`Mine`,hostile:`Hostile`,emptySlot:`Empty - Colonizable`,scout:`Scout`,attack:`Attack`,colonize:`Colonize`,switch:`Switch`,scoutPlanetTitle:`Scout Planet`,attackPlanetTitle:`Attack Planet`,colonizePlanetTitle:`Colonize Planet`,scoutPlanetMessage:`Are you sure you want to send espionage probes to scout planet [{coordinates}]? - -Please go to the fleet page to select ships and send.`,attackPlanetMessage:`Are you sure you want to attack planet [{coordinates}]? - -Please go to the fleet page to select ships and send.`,colonizePlanetMessage:`Are you sure you want to colonize position [{coordinates}]? - -Please go to the fleet page to send a colony ship.`},messagesView:{title:`Messages`,battleReports:`Battle Reports`,spyReports:`Spy Reports`,noBattleReports:`No battle reports`,noSpyReports:`No spy reports`,battleReport:`Battle Report`,spyReport:`Spy Report`,victory:`Victory`,defeat:`Defeat`,draw:`Draw`,attackerFleet:`Attacker Fleet`,defenderFleet:`Defender Fleet`,defenderDefense:`Defender Defense`,attackerLosses:`Attacker Losses`,defenderLosses:`Defender Losses`,noLosses:`No losses`,plunder:`Plunder`,debrisField:`Debris Field`,resources:`Resources`,fleet:`Fleet`,defense:`Defense`,buildings:`Buildings`},simulatorView:{title:`Battle Simulator`,attacker:`Attacker`,defender:`Defender`,attackerConfig:`Attacker Configuration`,attackerConfigDesc:`Configure attacker fleet and technology levels`,defenderConfig:`Defender Configuration`,defenderConfigDesc:`Configure defender fleet, defense, and technology levels`,fleet:`Fleet`,defenseStructures:`Defense Structures`,techLevels:`Technology Levels`,weapon:`Weapon`,shield:`Shield`,armor:`Armor`,defenderResources:`Defender Resources (for plunder calculation)`,startSimulation:`Start Simulation`,reset:`Reset`,battleResult:`Battle Result`,attackerVictory:`Attacker Victory`,defenderVictory:`Defender Victory`,draw:`Draw`,afterRounds:`After {rounds} rounds`,attackerLosses:`Attacker Losses`,defenderLosses:`Defender Losses`,noLosses:`No losses`,attackerRemaining:`Attacker Remaining`,defenderRemaining:`Defender Remaining`,allDestroyed:`All destroyed`,plunderableResources:`Plunderable Resources`,debrisField:`Debris Field`,moonChance:`Moon chance`,showRoundDetails:`Show round details`,hideRoundDetails:`Hide round details`,round:`Round {round}`,attackerRemainingPower:`Attacker remaining power`,defenderRemainingPower:`Defender remaining power`},settings:{dataManagement:`Data Management`,dataManagementDesc:`Export, import, or clear game data`,exportData:`Export Data`,exportDataDesc:`Export game progress as JSON file`,export:`Export`,exporting:`Exporting...`,exportSuccess:`Export successful`,exportFailed:`Export failed, please try again`,importData:`Import Data`,importDataDesc:`Restore game progress from JSON file`,selectFile:`Select File`,importSuccess:`Import successful`,importConfirmTitle:`Confirm Import`,importConfirmMessage:`Importing will overwrite current game progress. This action cannot be undone. Continue?`,importFailed:`Import failed, please check file format`,clearData:`Clear Data`,clearDataDesc:`Delete all game data and reset`,clear:`Clear`,clearConfirmTitle:`Confirm Clear Data`,clearConfirmMessage:`This will delete all game data and start over. This action cannot be undone. Continue?`,gameSettings:`Game Settings`,gameSettingsDesc:`Adjust game parameters and preferences`,playerName:`Player Name`,gameSpeed:`Game Speed`,gameSpeedDesc:`Current game speed multiplier`,about:`About`,version:`Version`,buildDate:`Build Date`,community:`Community`,github:`GitHub Repository`,qqGroup:`QQ Group`}},dt={common:{confirm:`Bestätigen`,cancel:`Abbrechen`,delete:`Löschen`,edit:`Bearbeiten`,save:`Speichern`,close:`Schließen`,back:`Zurück`,next:`Weiter`,previous:`Vorherige`,submit:`Absenden`,reset:`Zurücksetzen`,search:`Suchen`,filter:`Filtern`,loading:`Laden...`,noData:`Keine Daten`,error:`Fehler`,success:`Erfolg`,warning:`Warnung`,info:`Info`,resourceType:`Ressourcentyp`,playerName:`Kommandant`,timeHour:`Std`,timeMinute:`Min`,timeSecond:`Sek`,featureLocked:`Funktion gesperrt`,unlockRequired:`Gebäude erforderlich`,requiredBuilding:`Erforderliches Gebäude`,currentLevel:`Aktuelles Level`,goToBuildings:`Zu Gebäuden`,locked:`Gesperrt`,viewRequirements:`Anforderungen anzeigen`,requirementsNotMet:`Anforderungen nicht erfüllt`,current:`Aktuell`},errors:{requirementsNotMet:`Anforderungen nicht erfüllt`,insufficientResources:`Unzureichende Ressourcen`,shieldDomeLimit:`Schildkuppel-Limit erreicht`,fleetMissionsFull:`Flottenmissionsplätze voll`,insufficientFleet:`Unzureichende Flotte`,insufficientFuel:`Unzureichender Treibstoff`,planetOnly:`Dieses Gebäude kann nur auf Planeten gebaut werden`,moonOnly:`Dieses Gebäude kann nur auf Monden gebaut werden`,buildQueueFull:`Bauauftrag voll`,insufficientSpace:`Unzureichender Platz`,buildingLevelZero:`Gebäudelevel ist 0, kann nicht abgerissen werden`,researchQueueFull:`Forschungsauftrag voll`,moonExists:`Mond existiert bereits`,insufficientDebris:`Unzureichendes Trümmerfeld`},nav:{overview:`Übersicht`,buildings:`Gebäude`,research:`Forschung`,shipyard:`Raumschiffwerft`,defense:`Verteidigung`,fleet:`Flotte`,officers:`Offiziere`,simulator:`Simulator`,galaxy:`Galaxie`,messages:`Nachrichten`,settings:`Einstellungen`},sidebar:{language:`Sprache`,lightMode:`Heller Modus`,darkMode:`Dunkler Modus`,collapse:`Einklappen`,expand:`Ausklappen`},resources:{metal:`Metall`,crystal:`Kristall`,deuterium:`Deuterium`,darkMatter:`Dunkle Materie`,energy:`Energie`,production:`Produktion`,capacity:`Kapazität`,current:`Aktuell`,max:`Max. Kapazität`,perHour:`Stunde`},planet:{planet:`Planet`,moon:`Mond`,colony:`Kolonie`,position:`Position`,coordinates:`Koordinaten`,switchToMoon:`Zum Mond`,backToPlanet:`Zurück zum Planeten`,fields:`Felder`,temperature:`Temperatur`,homePlanet:`Heimatplanet`,planetPrefix:`Planet`,moonSuffix:`s Mond`,colonyPrefix:`Kolonie`},player:{points:`Gesamtpunkte`},buildings:{metalMine:`Metallmine`,crystalMine:`Kristallmine`,deuteriumSynthesizer:`Deuterium-Synthesizer`,solarPlant:`Solarkraftwerk`,roboticsFactory:`Roboterfabrik`,naniteFactory:`Nanitenfabrik`,shipyard:`Raumschiffwerft`,researchLab:`Forschungslabor`,metalStorage:`Metallspeicher`,crystalStorage:`Kristallspeicher`,deuteriumTank:`Deuteriumtank`,darkMatterCollector:`Dunkle-Materie-Kollektor`,lunarBase:`Mondbasis`,sensorPhalanx:`Sensorphalanx`,jumpGate:`Sprungtor`,buildTime:`Bauzeit`,production:`Produktion`,consumption:`Verbrauch`,totalCost:`Gesamtkosten`,totalPoints:`Gesamtpunkte`,levelRange:`Stufenbereich`},buildingDescriptions:{metalMine:`Fördert Metallressourcen`,crystalMine:`Fördert Kristallressourcen`,deuteriumSynthesizer:`Synthesiert Deuteriumressourcen`,solarPlant:`Liefert Energie`,roboticsFactory:`Beschleunigt Baugeschwindigkeit`,naniteFactory:`Erhöht Bauauftragskapazität, +1 pro Stufe (max 10)`,shipyard:`Baut Schiffe`,researchLab:`Erforscht Technologien`,metalStorage:`Erhöht Metallspeicherkapazität`,crystalStorage:`Erhöht Kristallspeicherkapazität`,deuteriumTank:`Erhöht Deuteriumspeicherkapazität`,darkMatterCollector:`Sammelt seltene Dunkle-Materie-Ressourcen`,lunarBase:`Erhöht verfügbaren Platz auf dem Mond`,sensorPhalanx:`Erkennt Flottenaktivitäten in umliegenden Systemen`,jumpGate:`Überträgt Flotten sofort zu anderen Monden`},ships:{lightFighter:`Leichter Jäger`,heavyFighter:`Schwerer Jäger`,cruiser:`Kreuzer`,battleship:`Schlachtschiff`,smallCargo:`Kleiner Transporter`,largeCargo:`Großer Transporter`,colonyShip:`Kolonieschiff`,recycler:`Recycler`,espionageProbe:`Spionagesonde`,darkMatterHarvester:`Dunkle-Materie-Ernter`},shipDescriptions:{lightFighter:`Grundlegende Kampfeinheit`,heavyFighter:`Schwer gepanzerter Jäger`,cruiser:`Mittleres Kriegsschiff, ausgewogene Offensive und Defensive`,battleship:`Mächtiges Kriegsschiff`,smallCargo:`Transportiert kleine Mengen Ressourcen`,largeCargo:`Transportiert große Mengen Ressourcen`,colonyShip:`Zur Kolonisierung neuer Planeten`,recycler:`Sammelt Trümmerfeld-Ressourcen`,espionageProbe:`Späht feindliche Planeten aus`,darkMatterHarvester:`Spezielles Schiff zum Ernten von Dunkler Materie`},defenses:{rocketLauncher:`Raketenwerfer`,lightLaser:`Leichtes Lasergeschütz`,heavyLaser:`Schweres Lasergeschütz`,gaussCannon:`Gaußkanone`,ionCannon:`Ionengeschütz`,plasmaTurret:`Plasmawerfer`,smallShieldDome:`Kleine Schildkuppel`,largeShieldDome:`Große Schildkuppel`},defenseDescriptions:{rocketLauncher:`Grundlegende Verteidigungsanlage`,lightLaser:`Leichte Energiewaffe`,heavyLaser:`Schwere Energiewaffe`,gaussCannon:`Hochgeschwindigkeits-Kinetikwaffe`,ionCannon:`Effektiv gegen Schilde`,plasmaTurret:`Mächtige Verteidigungsanlage`,smallShieldDome:`Kleiner Schild zum Schutz des gesamten Planeten`,largeShieldDome:`Großer Schild zum Schutz des gesamten Planeten`},research:{researchTime:`Forschungszeit`,totalCost:`Gesamtkosten`,totalPoints:`Gesamtpunkte`,levelRange:`Stufenbereich`},technologies:{energyTechnology:`Energietechnik`,laserTechnology:`Lasertechnik`,ionTechnology:`Ionentechnik`,hyperspaceTechnology:`Hyperraumtechnik`,plasmaTechnology:`Plasmatechnik`,computerTechnology:`Computertechnologie`,combustionDrive:`Verbrennungsantrieb`,impulseDrive:`Impulsantrieb`,hyperspaceDrive:`Hyperraumantrieb`,darkMatterTechnology:`Dunkle-Materie-Technologie`},technologyDescriptions:{energyTechnology:`Verbessert Energieeffizienz`,laserTechnology:`Grundlage für Laserwaffen und -verteidigung`,ionTechnology:`Ionenwaffentechnologie`,hyperspaceTechnology:`Hyperraumsprung-Technologie`,plasmaTechnology:`Plasmawaffentechnologie`,computerTechnology:`Erhöht Forschungsauftragskapazität, +1 pro Stufe (max 10)`,combustionDrive:`Grundlegende Antriebstechnologie`,impulseDrive:`Mittlere Antriebstechnologie`,hyperspaceDrive:`Fortgeschrittene Antriebstechnologie`,darkMatterTechnology:`Forschung zu Eigenschaften und Anwendungen von Dunkler Materie`},officers:{commander:`Kommandant`,admiral:`Admiral`,engineer:`Ingenieur`,geologist:`Geologe`,technocrat:`Technokrat`,darkMatterSpecialist:`Dunkle-Materie-Spezialist`},officerDescriptions:{commander:`Verbessert Baugeschwindigkeit und Management`,admiral:`Verbessert Flottenkampf und Geschwindigkeit`,engineer:`Verbessert Energie und Verteidigung`,geologist:`Verbessert Ressourcenproduktion`,technocrat:`Verbessert Forschungsgeschwindigkeit und Spionage`,darkMatterSpecialist:`Verbessert Dunkle-Materie-Sammlungseffizienz`},queue:{buildQueue:`Bauauftrag`,researchQueue:`Forschungsauftrag`,building:`Im Bau`,researching:`In Forschung`,remaining:`Verbleibend`,cancel:`Abbrechen`,cancelBuild:`Bau abbrechen`,cancelResearch:`Forschung abbrechen`,confirmCancel:`Möchten Sie wirklich abbrechen? 50% der Ressourcen werden zurückerstattet.`,level:`Stufe`,upgradeToLevel:`Auf Stufe aufrüsten`},overview:{title:`Planetenübersicht`,resourceOverview:`Ressourcen`,fleetInfo:`Flotte`,currentShips:`Schiffe auf diesem Planeten`},buildingsView:{title:`Gebäude`,usedSpace:`Verwendeter Platz`,spaceUsage:`Platzbedarf`,level:`Stufe`,upgradeCost:`Ausbaukosten`,buildTime:`Bauzeit`,upgrade:`Ausbauen`,upgradeFailed:`Ausbau fehlgeschlagen`,upgradeFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen, Platz oder keine anderen Bauaufträge haben.`,demolish:`Abreißen`,demolishRefund:`Abriss-Rückerstattung`,demolishFailed:`Abriss fehlgeschlagen`,demolishFailedMessage:`Abriss nicht möglich. Bitte überprüfen Sie, ob die Bauqueue voll ist oder die Gebäudestufe 0 ist.`},researchView:{title:`Forschung`,researchCost:`Forschungskosten`,research:`Forschen`,researchFailed:`Forschung fehlgeschlagen`,researchFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen haben, die Voraussetzungen erfüllt sind oder keine anderen Forschungsaufträge vorhanden sind.`},shipyard:{attack:`Angriff`,shield:`Schild`,armor:`Panzerung`,speed:`Geschwindigkeit`,cargoCapacity:`Ladekapazität`,fuelConsumption:`Treibstoffverbrauch`,buildCost:`Baukosten`,buildTime:`Bauzeit`,perUnit:`Pro Einheit`,batchCalculator:`Batch-Rechner`,quantity:`Menge`,totalCost:`Gesamtkosten`,totalTime:`Gesamtzeit`},shipyardView:{title:`Raumschiffwerft`,attack:`Angriff`,shield:`Schild`,speed:`Geschwindigkeit`,cargoCapacity:`Ladekapazität`,unitCost:`Stückkosten`,buildQuantity:`Baumenge`,totalCost:`Gesamtkosten`,build:`Bauen`,inputError:`Eingabefehler`,inputErrorMessage:`Bitte Baumenge eingeben!`,buildFailed:`Bau fehlgeschlagen`,buildFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen haben oder die Voraussetzungen erfüllt sind.`},defense:{attack:`Angriff`,shield:`Schild`,armor:`Panzerung`,buildCost:`Baukosten`,buildTime:`Bauzeit`,perUnit:`Pro Einheit`,batchCalculator:`Batch-Rechner`,quantity:`Menge`,totalCost:`Gesamtkosten`,totalTime:`Gesamtzeit`},defenseView:{title:`Verteidigung`,attack:`Angriff`,shield:`Schild`,armor:`Panzerung`,buildTime:`Bauzeit`,seconds:`s`,unitCost:`Stückkosten`,buildQuantity:`Baumenge`,totalCost:`Gesamtkosten`,build:`Bauen`,shieldDomeBuilt:`Schildkuppel bereits gebaut`,inputError:`Eingabefehler`,inputErrorMessage:`Bitte Baumenge eingeben!`,buildFailed:`Bau fehlgeschlagen`,buildFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen haben oder die Voraussetzungen erfüllt sind. Schildkuppeln können nur einmal gebaut werden.`},fleetView:{title:`Flottenverwaltung`,fleetOverview:`Flottenübersicht`,sendFleet:`Flotte senden`,flightMissions:`Flugmissionen`,currentPlanetFleet:`Flotte auf diesem Planeten`,attack:`Angriff`,shield:`Schild`,armor:`Panzerung`,speed:`Geschwindigkeit`,cargo:`Fracht`,selectFleet:`Flotte auswählen`,selectFleetDescription:`Wählen Sie die Anzahl der zu sendenden Schiffe`,available:`Verfügbar`,all:`Alle`,targetCoordinates:`Zielkoordinaten`,galaxy:`Galaxie`,system:`System`,position:`Position`,missionType:`Missionstyp`,missionInfo:`Missionsinfo`,fuelConsumption:`Treibstoffverbrauch`,flightTime:`Flugzeit`,attackMission:`Angriff`,transport:`Transport`,colonize:`Kolonisieren`,spy:`Spionage`,deploy:`Stationieren`,transportResources:`Ressourcen transportieren`,totalCargoCapacity:`Gesamtladekapazität`,used:`Verwendet`,noFlightMissions:`Keine Flugmissionen`,outbound:`Hinflug`,returning:`Rückflug`,fleetComposition:`Flottenzusammensetzung`,carryingResources:`Transportierte Ressourcen`,arrivalTime:`Ankunftszeit`,returnTime:`Rückkehrzeit`,recallFleet:`Flotte zurückrufen`,sendFailed:`Senden fehlgeschlagen`,sendFailedMessage:`Bitte überprüfen Sie Flottenanzahl, Treibstoffverfügbarkeit oder Ladekapazitätsgrenzen.`,recallFailed:`Zurückrufen fehlgeschlagen`,recallFailedMessage:`Diese Mission kann nicht zurückgerufen werden.`,unknownPlanet:`Unbekannter Planet`,fleetMissionSlots:`Flottenmissionsplätze`},officersView:{title:`Offiziere`,activated:`Aktiviert`,inactive:`Inaktiv`,activeStatus:`Aktivierungsstatus`,expirationTime:`Ablaufzeit`,remainingTime:`Verbleibende Zeit`,recruitCost:`Rekrutierungskosten`,days:`Tage`,benefitsBonus:`Vorteile`,resourceProduction:`Ressourcenproduktion`,darkMatterProduction:`Dunkle-Materie-Produktion`,energyProduction:`Energieproduktion`,buildingSpeed:`Baugeschwindigkeit`,researchSpeed:`Forschungsgeschwindigkeit`,fleetSpeed:`Flottengeschwindigkeit`,fuelConsumption:`Treibstoffverbrauch`,defense:`Verteidigung`,storageCapacity:`Lagerkapazität`,buildQueue:`Bauauftrag`,fleetSlots:`Flottenslots`,hire:`Rekrutieren`,renew:`Verlängern`,dismiss:`Entlassen`,hireTitle:`Offizier rekrutieren`,hireMessage:`Möchten Sie wirklich {name} rekrutieren? Gültig für 7 Tage.`,renewTitle:`Offizier verlängern`,renewMessage:`Möchten Sie wirklich {name} für 7 Tage verlängern?`,dismissTitle:`Offizier entlassen`,dismissMessage:`Möchten Sie wirklich {name} entlassen? Es werden keine Kosten zurückerstattet.`,hireFailed:`Rekrutierung fehlgeschlagen`,renewFailed:`Verlängerung fehlgeschlagen`,insufficientResources:`Nicht genug Ressourcen!`},galaxyView:{title:`Galaxie`,selectCoordinates:`Koordinaten auswählen`,galaxy:`Galaxie`,selectGalaxy:`Galaxie auswählen`,system:`System`,selectSystem:`System auswählen`,view:`Anzeigen`,myPlanet:`Mein Planet`,totalPositions:`Insgesamt 10 Planetenpositionen`,mine:`Mein`,hostile:`Feindlich`,emptySlot:`Leer - Kolonisierbar`,scout:`Spähen`,attack:`Angriff`,colonize:`Kolonisieren`,switch:`Wechseln`,scoutPlanetTitle:`Planet ausspionieren`,attackPlanetTitle:`Planet angreifen`,colonizePlanetTitle:`Planet kolonisieren`,scoutPlanetMessage:`Möchten Sie wirklich Spionagesonden senden, um Planet [{coordinates}] auszuspionieren? - -Bitte gehen Sie zur Flottenseite, um Schiffe auszuwählen und zu senden.`,attackPlanetMessage:`Möchten Sie wirklich Planet [{coordinates}] angreifen? - -Bitte gehen Sie zur Flottenseite, um Schiffe auszuwählen und zu senden.`,colonizePlanetMessage:`Möchten Sie wirklich Position [{coordinates}] kolonisieren? - -Bitte gehen Sie zur Flottenseite, um ein Kolonieschiff zu senden.`},messagesView:{title:`Nachrichten`,battleReports:`Kampfberichte`,spyReports:`Spionageberichte`,noBattleReports:`Keine Kampfberichte`,noSpyReports:`Keine Spionageberichte`,battleReport:`Kampfbericht`,spyReport:`Spionagebericht`,victory:`Sieg`,defeat:`Niederlage`,draw:`Unentschieden`,attackerFleet:`Angreiferflotte`,defenderFleet:`Verteidigerflotte`,defenderDefense:`Verteidigerverteidigung`,attackerLosses:`Angreiferverluste`,defenderLosses:`Verteidigerverluste`,noLosses:`Keine Verluste`,plunder:`Beute`,debrisField:`Trümmerfeld`,resources:`Ressourcen`,fleet:`Flotte`,defense:`Verteidigung`,buildings:`Gebäude`},simulatorView:{title:`Kampfsimulator`,attacker:`Angreifer`,defender:`Verteidiger`,attackerConfig:`Angreiferkonfiguration`,attackerConfigDesc:`Angreiferflotte und Technologiestufen konfigurieren`,defenderConfig:`Verteidigerkonfiguration`,defenderConfigDesc:`Verteidigerflotte, Verteidigung und Technologiestufen konfigurieren`,fleet:`Flotte`,defenseStructures:`Verteidigungsanlagen`,techLevels:`Technologiestufen`,weapon:`Waffe`,shield:`Schild`,armor:`Panzerung`,defenderResources:`Verteidigerressourcen (für Beuteberechnung)`,startSimulation:`Simulation starten`,reset:`Zurücksetzen`,battleResult:`Kampfergebnis`,attackerVictory:`Angreifer Sieg`,defenderVictory:`Verteidiger Sieg`,draw:`Unentschieden`,afterRounds:`Nach {rounds} Runden`,attackerLosses:`Angreiferverluste`,defenderLosses:`Verteidigerverluste`,noLosses:`Keine Verluste`,attackerRemaining:`Angreifer verblieben`,defenderRemaining:`Verteidiger verblieben`,allDestroyed:`Alle zerstört`,plunderableResources:`Erbeutbare Ressourcen`,debrisField:`Trümmerfeld`,moonChance:`Mondchance`,showRoundDetails:`Rundendetails anzeigen`,hideRoundDetails:`Rundendetails ausblenden`,round:`Runde {round}`,attackerRemainingPower:`Verbleibende Angreiferkraft`,defenderRemainingPower:`Verbleibende Verteidigerkraft`},settings:{dataManagement:`Datenverwaltung`,dataManagementDesc:`Spieldaten exportieren, importieren oder löschen`,exportData:`Daten exportieren`,exportDataDesc:`Spielfortschritt als JSON-Datei exportieren`,export:`Exportieren`,exporting:`Exportieren...`,exportSuccess:`Export erfolgreich`,exportFailed:`Export fehlgeschlagen, bitte erneut versuchen`,importData:`Daten importieren`,importDataDesc:`Spielfortschritt aus JSON-Datei wiederherstellen`,selectFile:`Datei auswählen`,importSuccess:`Import erfolgreich`,importConfirmTitle:`Import bestätigen`,importConfirmMessage:`Beim Importieren wird der aktuelle Spielfortschritt überschrieben. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?`,importFailed:`Import fehlgeschlagen, bitte Dateiformat überprüfen`,clearData:`Daten löschen`,clearDataDesc:`Alle Spieldaten löschen und zurücksetzen`,clear:`Löschen`,clearConfirmTitle:`Löschen bestätigen`,clearConfirmMessage:`Alle Spieldaten werden gelöscht und von vorne begonnen. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?`,gameSettings:`Spieleinstellungen`,gameSettingsDesc:`Spielparameter und Einstellungen anpassen`,playerName:`Spielername`,gameSpeed:`Spielgeschwindigkeit`,gameSpeedDesc:`Aktueller Spielgeschwindigkeitsmultiplikator`,about:`Über`,version:`Version`,buildDate:`Build-Datum`,community:`Community`,github:`GitHub-Repository`,qqGroup:`QQ-Gruppe`}},ft={common:{confirm:`Подтвердить`,cancel:`Отмена`,delete:`Удалить`,edit:`Редактировать`,save:`Сохранить`,close:`Закрыть`,back:`Назад`,next:`Далее`,previous:`Предыдущий`,submit:`Отправить`,reset:`Сбросить`,search:`Поиск`,filter:`Фильтр`,loading:`Загрузка...`,noData:`Нет данных`,error:`Ошибка`,success:`Успешно`,warning:`Предупреждение`,info:`Информация`,resourceType:`Тип ресурса`,playerName:`Командир`,timeHour:`ч`,timeMinute:`мин`,timeSecond:`сек`,featureLocked:`Функция заблокирована`,unlockRequired:`Требуется здание`,requiredBuilding:`Необходимое здание`,currentLevel:`Текущий уровень`,goToBuildings:`К зданиям`,locked:`Заблокировано`,viewRequirements:`Просмотр требований`,requirementsNotMet:`Требования не выполнены`,current:`Текущий`},errors:{requirementsNotMet:`Требования не выполнены`,insufficientResources:`Недостаточно ресурсов`,shieldDomeLimit:`Достигнут лимит щитовых куполов`,fleetMissionsFull:`Слоты миссий флота заполнены`,insufficientFleet:`Недостаточно флота`,insufficientFuel:`Недостаточно топлива`,planetOnly:`Это здание можно построить только на планетах`,moonOnly:`Это здание можно построить только на лунах`,buildQueueFull:`Очередь строительства заполнена`,insufficientSpace:`Недостаточно места`,buildingLevelZero:`Уровень здания 0, нельзя снести`,researchQueueFull:`Очередь исследований заполнена`,moonExists:`Луна уже существует`,insufficientDebris:`Недостаточно обломков`},nav:{overview:`Обзор`,buildings:`Здания`,research:`Исследования`,shipyard:`Верфь`,defense:`Оборона`,fleet:`Флот`,officers:`Офицеры`,simulator:`Симулятор`,galaxy:`Галактика`,messages:`Сообщения`,settings:`Настройки`},sidebar:{language:`Язык`,lightMode:`Светлая тема`,darkMode:`Тёмная тема`,collapse:`Свернуть`,expand:`Развернуть`},resources:{metal:`Металл`,crystal:`Кристалл`,deuterium:`Дейтерий`,darkMatter:`Тёмная материя`,energy:`Энергия`,production:`Производство`,capacity:`Вместимость`,current:`Текущий`,max:`Макс. вместимость`,perHour:`час`},planet:{planet:`Планета`,moon:`Луна`,colony:`Колония`,position:`Позиция`,coordinates:`Координаты`,switchToMoon:`На луну`,backToPlanet:`Вернуться на планету`,fields:`Поля`,temperature:`Температура`,homePlanet:`Родная планета`,planetPrefix:`Планета`,moonSuffix:`я луна`,colonyPrefix:`Колония`},player:{points:`Всего очков`},buildings:{metalMine:`Рудник металла`,crystalMine:`Рудник кристалла`,deuteriumSynthesizer:`Синтезатор дейтерия`,solarPlant:`Солнечная электростанция`,roboticsFactory:`Фабрика роботов`,naniteFactory:`Нанитная фабрика`,shipyard:`Верфь`,researchLab:`Исследовательская лаборатория`,metalStorage:`Хранилище металла`,crystalStorage:`Хранилище кристалла`,deuteriumTank:`Цистерна дейтерия`,darkMatterCollector:`Коллектор тёмной материи`,lunarBase:`Лунная база`,sensorPhalanx:`Сенсорная фаланга`,jumpGate:`Прыжковые ворота`,buildTime:`Время строительства`,production:`Производство`,consumption:`Потребление`,totalCost:`Общая стоимость`,totalPoints:`Общие очки`,levelRange:`Диапазон уровней`},buildingDescriptions:{metalMine:`Добывает металлические ресурсы`,crystalMine:`Добывает кристаллические ресурсы`,deuteriumSynthesizer:`Синтезирует дейтериевые ресурсы`,solarPlant:`Обеспечивает энергией`,roboticsFactory:`Ускоряет скорость строительства`,naniteFactory:`Увеличивает вместимость очереди строительства, +1 за уровень (макс 10)`,shipyard:`Строит корабли`,researchLab:`Исследует технологии`,metalStorage:`Увеличивает ёмкость хранилища металла`,crystalStorage:`Увеличивает ёмкость хранилища кристалла`,deuteriumTank:`Увеличивает ёмкость хранилища дейтерия`,darkMatterCollector:`Собирает редкие ресурсы тёмной материи`,lunarBase:`Увеличивает доступное пространство на луне`,sensorPhalanx:`Обнаруживает активность флота в окружающих системах`,jumpGate:`Мгновенно переносит флоты на другие луны`},ships:{lightFighter:`Лёгкий истребитель`,heavyFighter:`Тяжёлый истребитель`,cruiser:`Крейсер`,battleship:`Линкор`,smallCargo:`Малый транспорт`,largeCargo:`Большой транспорт`,colonyShip:`Колонизатор`,recycler:`Переработчик`,espionageProbe:`Шпионский зонд`,darkMatterHarvester:`Сборщик тёмной материи`},shipDescriptions:{lightFighter:`Базовая боевая единица`,heavyFighter:`Тяжелобронированный истребитель`,cruiser:`Средний боевой корабль, сбалансированная атака и защита`,battleship:`Мощный боевой корабль`,smallCargo:`Транспортирует небольшое количество ресурсов`,largeCargo:`Транспортирует большое количество ресурсов`,colonyShip:`Используется для колонизации новых планет`,recycler:`Собирает ресурсы с поля обломков`,espionageProbe:`Разведывает вражеские планеты`,darkMatterHarvester:`Специальный корабль для сбора тёмной материи`},defenses:{rocketLauncher:`Ракетная установка`,lightLaser:`Лёгкий лазер`,heavyLaser:`Тяжёлый лазер`,gaussCannon:`Гауссова пушка`,ionCannon:`Ионное орудие`,plasmaTurret:`Плазменная турель`,smallShieldDome:`Малый щитовой купол`,largeShieldDome:`Большой щитовой купол`},defenseDescriptions:{rocketLauncher:`Базовое оборонительное сооружение`,lightLaser:`Лёгкое энергетическое оружие`,heavyLaser:`Тяжёлое энергетическое оружие`,gaussCannon:`Высокоскоростное кинетическое оружие`,ionCannon:`Эффективно против щитов`,plasmaTurret:`Мощное оборонительное сооружение`,smallShieldDome:`Малый щит, защищающий всю планету`,largeShieldDome:`Большой щит, защищающий всю планету`},research:{researchTime:`Время исследования`,totalCost:`Общая стоимость`,totalPoints:`Общие очки`,levelRange:`Диапазон уровней`},technologies:{energyTechnology:`Энергетическая технология`,laserTechnology:`Лазерная технология`,ionTechnology:`Ионная технология`,hyperspaceTechnology:`Гиперпространственная технология`,plasmaTechnology:`Плазменная технология`,computerTechnology:`Компьютерная технология`,combustionDrive:`Реактивный двигатель`,impulseDrive:`Импульсный двигатель`,hyperspaceDrive:`Гиперпространственный двигатель`,darkMatterTechnology:`Технология тёмной материи`},technologyDescriptions:{energyTechnology:`Улучшает энергоэффективность`,laserTechnology:`Основа лазерного оружия и обороны`,ionTechnology:`Технология ионного оружия`,hyperspaceTechnology:`Технология гиперпространственных прыжков`,plasmaTechnology:`Технология плазменного оружия`,computerTechnology:`Увеличивает вместимость очереди исследований, +1 за уровень (макс 10)`,combustionDrive:`Базовая технология двигателей`,impulseDrive:`Средняя технология двигателей`,hyperspaceDrive:`Продвинутая технология двигателей`,darkMatterTechnology:`Исследование свойств и применения тёмной материи`},officers:{commander:`Командир`,admiral:`Адмирал`,engineer:`Инженер`,geologist:`Геолог`,technocrat:`Технократ`,darkMatterSpecialist:`Специалист по тёмной материи`},officerDescriptions:{commander:`Улучшает скорость строительства и управление`,admiral:`Улучшает боевую мощь и скорость флота`,engineer:`Улучшает энергию и оборону`,geologist:`Улучшает производство ресурсов`,technocrat:`Улучшает скорость исследований и шпионаж`,darkMatterSpecialist:`Улучшает эффективность сбора тёмной материи`},queue:{buildQueue:`Очередь строительства`,researchQueue:`Очередь исследований`,building:`Строится`,researching:`Исследуется`,remaining:`Осталось`,cancel:`Отменить`,cancelBuild:`Отменить строительство`,cancelResearch:`Отменить исследование`,confirmCancel:`Вы уверены, что хотите отменить? 50% ресурсов будет возвращено.`,level:`Уровень`,upgradeToLevel:`Улучшить до уровня`},overview:{title:`Обзор планеты`,resourceOverview:`Ресурсы`,fleetInfo:`Флот`,currentShips:`Корабли на этой планете`},buildingsView:{title:`Здания`,usedSpace:`Использовано полей`,spaceUsage:`Использование полей`,level:`Уровень`,upgradeCost:`Стоимость улучшения`,buildTime:`Время строительства`,upgrade:`Улучшить`,upgradeFailed:`Улучшение не удалось`,upgradeFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов, места или нет других задач строительства.`,demolish:`Снести`,demolishRefund:`Возврат от сноса`,demolishFailed:`Снос не удался`,demolishFailedMessage:`Невозможно снести это здание. Проверьте, не заполнена ли очередь строительства или уровень здания не равен 0.`},researchView:{title:`Исследования`,researchCost:`Стоимость исследования`,research:`Исследовать`,researchFailed:`Исследование не удалось`,researchFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов, выполнены ли предварительные условия или нет других исследовательских задач.`},shipyard:{attack:`Атака`,shield:`Щит`,armor:`Броня`,speed:`Скорость`,cargoCapacity:`Грузоподъёмность`,fuelConsumption:`Расход топлива`,buildCost:`Стоимость постройки`,buildTime:`Время строительства`,perUnit:`За единицу`,batchCalculator:`Калькулятор партий`,quantity:`Количество`,totalCost:`Общая стоимость`,totalTime:`Общее время`},shipyardView:{title:`Верфь`,attack:`Атака`,shield:`Щит`,speed:`Скорость`,cargoCapacity:`Грузоподъёмность`,unitCost:`Стоимость единицы`,buildQuantity:`Количество для постройки`,totalCost:`Общая стоимость`,build:`Построить`,inputError:`Ошибка ввода`,inputErrorMessage:`Пожалуйста, введите количество для постройки!`,buildFailed:`Постройка не удалась`,buildFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов или выполнены ли предварительные условия.`},defense:{attack:`Атака`,shield:`Щит`,armor:`Броня`,buildCost:`Стоимость постройки`,buildTime:`Время строительства`,perUnit:`За единицу`,batchCalculator:`Калькулятор партий`,quantity:`Количество`,totalCost:`Общая стоимость`,totalTime:`Общее время`},defenseView:{title:`Оборона`,attack:`Атака`,shield:`Щит`,armor:`Броня`,buildTime:`Время постройки`,seconds:`с`,unitCost:`Стоимость единицы`,buildQuantity:`Количество для постройки`,totalCost:`Общая стоимость`,build:`Построить`,shieldDomeBuilt:`Щитовой купол уже построен`,inputError:`Ошибка ввода`,inputErrorMessage:`Пожалуйста, введите количество для постройки!`,buildFailed:`Постройка не удалась`,buildFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов или выполнены ли предварительные условия. Щитовые купола можно построить только один раз.`},fleetView:{title:`Управление флотом`,fleetOverview:`Обзор флота`,sendFleet:`Отправить флот`,flightMissions:`Полетные миссии`,currentPlanetFleet:`Флот на этой планете`,attack:`Атака`,shield:`Щит`,armor:`Броня`,speed:`Скорость`,cargo:`Груз`,selectFleet:`Выбрать флот`,selectFleetDescription:`Выберите количество кораблей для отправки`,available:`Доступно`,all:`Все`,targetCoordinates:`Целевые координаты`,galaxy:`Галактика`,system:`Система`,position:`Позиция`,missionType:`Тип миссии`,missionInfo:`Информация о миссии`,fuelConsumption:`Расход топлива`,flightTime:`Время полета`,attackMission:`Атака`,transport:`Транспорт`,colonize:`Колонизация`,spy:`Разведка`,deploy:`Размещение`,transportResources:`Транспортировка ресурсов`,totalCargoCapacity:`Общая грузоподъёмность`,used:`Использовано`,noFlightMissions:`Нет полетных миссий`,outbound:`Туда`,returning:`Возвращение`,fleetComposition:`Состав флота`,carryingResources:`Перевозимые ресурсы`,arrivalTime:`Время прибытия`,returnTime:`Время возврата`,recallFleet:`Отозвать флот`,sendFailed:`Отправка не удалась`,sendFailedMessage:`Пожалуйста, проверьте количество флота, наличие топлива или ограничения грузоподъёмности.`,recallFailed:`Отзыв не удался`,recallFailedMessage:`Эта миссия не может быть отозвана.`,unknownPlanet:`Неизвестная планета`,fleetMissionSlots:`Слоты миссий флота`},officersView:{title:`Офицеры`,activated:`Активирован`,inactive:`Неактивен`,activeStatus:`Статус активации`,expirationTime:`Время истечения`,remainingTime:`Оставшееся время`,recruitCost:`Стоимость найма`,days:`дн.`,benefitsBonus:`Бонусы`,resourceProduction:`Производство ресурсов`,darkMatterProduction:`Производство тёмной материи`,energyProduction:`Производство энергии`,buildingSpeed:`Скорость строительства`,researchSpeed:`Скорость исследований`,fleetSpeed:`Скорость флота`,fuelConsumption:`Расход топлива`,defense:`Защита`,storageCapacity:`Вместимость хранилища`,buildQueue:`Очередь строительства`,fleetSlots:`Слоты флота`,hire:`Нанять`,renew:`Продлить`,dismiss:`Уволить`,hireTitle:`Нанять офицера`,hireMessage:`Вы уверены, что хотите нанять {name}? Действует 7 дней.`,renewTitle:`Продлить офицера`,renewMessage:`Вы уверены, что хотите продлить {name} на 7 дней?`,dismissTitle:`Уволить офицера`,dismissMessage:`Вы уверены, что хотите уволить {name}? Средства не возвращаются.`,hireFailed:`Найм не удался`,renewFailed:`Продление не удалось`,insufficientResources:`Недостаточно ресурсов!`},galaxyView:{title:`Галактика`,selectCoordinates:`Выбрать координаты`,galaxy:`Галактика`,selectGalaxy:`Выбрать галактику`,system:`Система`,selectSystem:`Выбрать систему`,view:`Показать`,myPlanet:`Моя планета`,totalPositions:`Всего 10 позиций планет`,mine:`Моя`,hostile:`Враждебная`,emptySlot:`Пусто - можно колонизировать`,scout:`Разведка`,attack:`Атака`,colonize:`Колонизация`,switch:`Переключить`,scoutPlanetTitle:`Разведать планету`,attackPlanetTitle:`Атаковать планету`,colonizePlanetTitle:`Колонизировать планету`,scoutPlanetMessage:`Вы уверены, что хотите отправить шпионские зонды для разведки планеты [{coordinates}]? - -Перейдите на страницу флота, чтобы выбрать корабли и отправить.`,attackPlanetMessage:`Вы уверены, что хотите атаковать планету [{coordinates}]? - -Перейдите на страницу флота, чтобы выбрать корабли и отправить.`,colonizePlanetMessage:`Вы уверены, что хотите колонизировать позицию [{coordinates}]? - -Перейдите на страницу флота, чтобы отправить колонизационный корабль.`},messagesView:{title:`Сообщения`,battleReports:`Отчёты о боях`,spyReports:`Отчёты разведки`,noBattleReports:`Нет отчётов о боях`,noSpyReports:`Нет отчётов разведки`,battleReport:`Отчёт о бое`,spyReport:`Отчёт разведки`,victory:`Победа`,defeat:`Поражение`,draw:`Ничья`,attackerFleet:`Флот нападающего`,defenderFleet:`Флот защитника`,defenderDefense:`Оборона защитника`,attackerLosses:`Потери нападающего`,defenderLosses:`Потери защитника`,noLosses:`Без потерь`,plunder:`Добыча`,debrisField:`Поле обломков`,resources:`Ресурсы`,fleet:`Флот`,defense:`Оборона`,buildings:`Здания`},simulatorView:{title:`Симулятор боя`,attacker:`Нападающий`,defender:`Защитник`,attackerConfig:`Настройки нападающего`,attackerConfigDesc:`Настроить флот и уровни технологий нападающего`,defenderConfig:`Настройки защитника`,defenderConfigDesc:`Настроить флот, оборону и уровни технологий защитника`,fleet:`Флот`,defenseStructures:`Оборонительные сооружения`,techLevels:`Уровни технологий`,weapon:`Оружие`,shield:`Щит`,armor:`Броня`,defenderResources:`Ресурсы защитника (для расчёта добычи)`,startSimulation:`Начать симуляцию`,reset:`Сбросить`,battleResult:`Результат боя`,attackerVictory:`Победа нападающего`,defenderVictory:`Победа защитника`,draw:`Ничья`,afterRounds:`После {rounds} раундов`,attackerLosses:`Потери нападающего`,defenderLosses:`Потери защитника`,noLosses:`Без потерь`,attackerRemaining:`Осталось у нападающего`,defenderRemaining:`Осталось у защитника`,allDestroyed:`Всё уничтожено`,plunderableResources:`Доступная добыча`,debrisField:`Поле обломков`,moonChance:`Шанс появления луны`,showRoundDetails:`Показать детали раундов`,hideRoundDetails:`Скрыть детали раундов`,round:`Раунд {round}`,attackerRemainingPower:`Оставшаяся мощь нападающего`,defenderRemainingPower:`Оставшаяся мощь защитника`},settings:{dataManagement:`Управление данными`,dataManagementDesc:`Экспорт, импорт или очистка игровых данных`,exportData:`Экспорт данных`,exportDataDesc:`Экспортировать прогресс игры в JSON файл`,export:`Экспорт`,exporting:`Экспорт...`,exportSuccess:`Экспорт успешен`,exportFailed:`Экспорт не удался, попробуйте еще раз`,importData:`Импорт данных`,importDataDesc:`Восстановить прогресс игры из JSON файла`,selectFile:`Выбрать файл`,importSuccess:`Импорт успешен`,importConfirmTitle:`Подтвердить импорт`,importConfirmMessage:`Импорт перезапишет текущий прогресс игры. Это действие невозможно отменить. Продолжить?`,importFailed:`Импорт не удался, проверьте формат файла`,clearData:`Очистить данные`,clearDataDesc:`Удалить все игровые данные и сбросить`,clear:`Очистить`,clearConfirmTitle:`Подтвердить очистку данных`,clearConfirmMessage:`Все игровые данные будут удалены и игра начнется заново. Это действие невозможно отменить. Продолжить?`,gameSettings:`Настройки игры`,gameSettingsDesc:`Настроить параметры и предпочтения игры`,playerName:`Имя игрока`,gameSpeed:`Скорость игры`,gameSpeedDesc:`Текущий множитель скорости игры`,about:`О программе`,version:`Версия`,buildDate:`Дата сборки`,community:`Сообщество`,github:`Репозиторий GitHub`,qqGroup:`Группа QQ`}},pt={common:{confirm:`확인`,cancel:`취소`,delete:`삭제`,edit:`편집`,save:`저장`,close:`닫기`,back:`돌아가기`,next:`다음`,previous:`이전`,submit:`제출`,reset:`초기화`,search:`검색`,filter:`필터`,loading:`로딩 중...`,noData:`데이터 없음`,error:`오류`,success:`성공`,warning:`경고`,info:`정보`,resourceType:`자원 유형`,playerName:`사령관`,timeHour:`시간`,timeMinute:`분`,timeSecond:`초`,featureLocked:`기능 잠김`,unlockRequired:`건물 필요`,requiredBuilding:`필요한 건물`,currentLevel:`현재 레벨`,goToBuildings:`건물로 이동`,locked:`잠김`,viewRequirements:`요구사항 보기`,requirementsNotMet:`요구사항 미충족`,current:`현재`},errors:{requirementsNotMet:`전제 조건 미충족`,insufficientResources:`자원 부족`,shieldDomeLimit:`실드 돔 한도 도달`,fleetMissionsFull:`함대 임무 슬롯 가득 참`,insufficientFleet:`함대 부족`,insufficientFuel:`연료 부족`,planetOnly:`이 건물은 행성에서만 지을 수 있습니다`,moonOnly:`이 건물은 위성에서만 지을 수 있습니다`,buildQueueFull:`건설 대기열 가득 참`,insufficientSpace:`공간 부족`,buildingLevelZero:`건물 레벨이 0이므로 철거할 수 없습니다`,researchQueueFull:`연구 대기열 가득 참`,moonExists:`위성이 이미 존재합니다`,insufficientDebris:`잔해장 부족`},nav:{overview:`개요`,buildings:`건물`,research:`연구`,shipyard:`조선소`,defense:`방어`,fleet:`함대`,officers:`장교`,simulator:`시뮬레이터`,galaxy:`은하계`,messages:`메시지`,settings:`설정`},sidebar:{language:`언어`,lightMode:`라이트 모드`,darkMode:`다크 모드`,collapse:`메뉴 접기`,expand:`메뉴 펼치기`},resources:{metal:`금속`,crystal:`크리스탈`,deuterium:`중수소`,darkMatter:`암흑 물질`,energy:`에너지`,production:`생산량`,capacity:`용량`,current:`현재 저장량`,max:`최대 용량`,perHour:`시간`},planet:{planet:`행성`,moon:`위성`,colony:`식민지`,position:`위치`,coordinates:`좌표`,switchToMoon:`위성 보기`,backToPlanet:`모행성으로 돌아가기`,fields:`필드`,temperature:`온도`,homePlanet:`모행성`,planetPrefix:`행성`,moonSuffix:`의 위성`,colonyPrefix:`식민지`},player:{points:`총 점수`},buildings:{metalMine:`금속 광산`,crystalMine:`크리스탈 광산`,deuteriumSynthesizer:`중수소 합성기`,solarPlant:`태양광 발전소`,roboticsFactory:`로봇 공장`,naniteFactory:`나노 공장`,shipyard:`조선소`,researchLab:`연구소`,metalStorage:`금속 창고`,crystalStorage:`크리스탈 창고`,deuteriumTank:`중수소 탱크`,darkMatterCollector:`암흑 물질 수집기`,lunarBase:`달 기지`,sensorPhalanx:`센서 팔랑크스`,jumpGate:`점프 게이트`,buildTime:`건설 시간`,production:`생산량`,consumption:`소비`,totalCost:`총 비용`,totalPoints:`총 점수`,levelRange:`레벨 범위`},buildingDescriptions:{metalMine:`금속 자원 채굴`,crystalMine:`크리스탈 자원 채굴`,deuteriumSynthesizer:`중수소 자원 합성`,solarPlant:`에너지 제공`,roboticsFactory:`건설 속도 향상`,naniteFactory:`건설 대기열 수 증가, 레벨당 +1 (최대 10개)`,shipyard:`함선 건조`,researchLab:`기술 연구`,metalStorage:`금속 저장 용량 증가`,crystalStorage:`크리스탈 저장 용량 증가`,deuteriumTank:`중수소 저장 용량 증가`,darkMatterCollector:`희귀한 암흑 물질 자원 수집`,lunarBase:`달 가용 공간 증가`,sensorPhalanx:`주변 행성계의 함대 활동 감지`,jumpGate:`다른 위성으로 함대 순간 이동`},ships:{lightFighter:`경전투기`,heavyFighter:`중전투기`,cruiser:`순양함`,battleship:`전함`,smallCargo:`소형 수송선`,largeCargo:`대형 수송선`,colonyShip:`식민선`,recycler:`재활용선`,espionageProbe:`정찰기`,darkMatterHarvester:`암흑 물질 채취선`},shipDescriptions:{lightFighter:`기본 전투 유닛`,heavyFighter:`중장갑 전투기`,cruiser:`중형 전함, 공격과 방어 균형`,battleship:`강력한 전함`,smallCargo:`소량의 자원 운송`,largeCargo:`대량의 자원 운송`,colonyShip:`새로운 행성 식민에 사용`,recycler:`잔해장 자원 수집`,espionageProbe:`적 행성 정찰`,darkMatterHarvester:`암흑 물질 채취 전용 특수 함선`},defenses:{rocketLauncher:`로켓 발사대`,lightLaser:`경량 레이저포`,heavyLaser:`중형 레이저포`,gaussCannon:`가우스 캐논`,ionCannon:`이온 캐논`,plasmaTurret:`플라즈마 포탑`,smallShieldDome:`소형 실드 돔`,largeShieldDome:`대형 실드 돔`},defenseDescriptions:{rocketLauncher:`기본 방어 시설`,lightLaser:`경량 에너지 무기`,heavyLaser:`중형 에너지 무기`,gaussCannon:`고속 운동 에너지 무기`,ionCannon:`실드 파괴의 이기`,plasmaTurret:`강력한 방어 시설`,smallShieldDome:`행성 전체를 보호하는 소형 실드`,largeShieldDome:`행성 전체를 보호하는 대형 실드`},research:{researchTime:`연구 시간`,totalCost:`총 비용`,totalPoints:`총 점수`,levelRange:`레벨 범위`},technologies:{energyTechnology:`에너지 기술`,laserTechnology:`레이저 기술`,ionTechnology:`이온 기술`,hyperspaceTechnology:`초공간 기술`,plasmaTechnology:`플라즈마 기술`,computerTechnology:`컴퓨터 기술`,combustionDrive:`연소 엔진`,impulseDrive:`임펄스 엔진`,hyperspaceDrive:`초공간 엔진`,darkMatterTechnology:`암흑 물질 기술`},technologyDescriptions:{energyTechnology:`에너지 이용 효율 향상`,laserTechnology:`레이저 무기와 방어의 기초`,ionTechnology:`이온 무기 기술`,hyperspaceTechnology:`초공간 점프 기술`,plasmaTechnology:`플라즈마 무기 기술`,computerTechnology:`연구 대기열 수 증가, 레벨당 +1 (최대 10개)`,combustionDrive:`기본 추진 기술`,impulseDrive:`중급 추진 기술`,hyperspaceDrive:`고급 추진 기술`,darkMatterTechnology:`암흑 물질의 성질과 응용 연구`},officers:{commander:`사령관`,admiral:`제독`,engineer:`엔지니어`,geologist:`지질학자`,technocrat:`기술 전문가`,darkMatterSpecialist:`암흑 물질 전문가`},officerDescriptions:{commander:`건설 속도 및 관리 능력 향상`,admiral:`함대 전투력 및 속도 향상`,engineer:`에너지 및 방어력 향상`,geologist:`자원 생산량 향상`,technocrat:`연구 속도 및 정찰 능력 향상`,darkMatterSpecialist:`암흑 물질 수집 효율 향상`},queue:{buildQueue:`건설 대기열`,researchQueue:`연구 대기열`,building:`건설 중`,researching:`연구 중`,remaining:`남은 시간`,cancel:`취소`,cancelBuild:`건설 취소`,cancelResearch:`연구 취소`,confirmCancel:`취소하시겠습니까? 자원의 50%가 환불됩니다.`,level:`레벨`,upgradeToLevel:`레벨로 업그레이드`},overview:{title:`행성 개요`,resourceOverview:`자원 개요`,fleetInfo:`함대`,currentShips:`현재 행성의 함선 수`},buildingsView:{title:`건물`,usedSpace:`사용된 공간`,spaceUsage:`공간 사용`,level:`레벨`,upgradeCost:`업그레이드 비용`,buildTime:`건설 시간`,upgrade:`업그레이드`,upgradeFailed:`업그레이드 실패`,upgradeFailedMessage:`자원이 충분한지, 공간이 충분한지, 또는 다른 건설 작업이 있는지 확인하세요.`,demolish:`철거`,demolishRefund:`철거 환불`,demolishFailed:`철거 실패`,demolishFailedMessage:`이 건물을 철거할 수 없습니다. 건설 대기열이 가득 찼거나 건물 레벨이 0인지 확인하세요.`},researchView:{title:`연구`,researchCost:`연구 비용`,research:`연구`,researchFailed:`연구 실패`,researchFailedMessage:`자원이 충분한지, 전제 조건이 충족되었는지, 또는 다른 연구 작업이 있는지 확인하세요.`},shipyard:{attack:`공격력`,shield:`쉴드`,armor:`장갑`,speed:`속도`,cargoCapacity:`화물 용량`,fuelConsumption:`연료 소비`,buildCost:`건설 비용`,buildTime:`건설 시간`,perUnit:`단위당`,batchCalculator:`일괄 계산기`,quantity:`수량`,totalCost:`총 비용`,totalTime:`총 시간`},shipyardView:{title:`조선소`,attack:`공격력`,shield:`실드`,speed:`속도`,cargoCapacity:`적재량`,unitCost:`단위 비용`,buildQuantity:`건조 수량`,totalCost:`총 비용`,build:`건조`,inputError:`입력 오류`,inputErrorMessage:`건조 수량을 입력하세요!`,buildFailed:`건조 실패`,buildFailedMessage:`자원이 충분한지 또는 전제 조건이 충족되었는지 확인하세요.`},defense:{attack:`공격력`,shield:`쉴드`,armor:`장갑`,buildCost:`건설 비용`,buildTime:`건설 시간`,perUnit:`단위당`,batchCalculator:`일괄 계산기`,quantity:`수량`,totalCost:`총 비용`,totalTime:`총 시간`},defenseView:{title:`방어 시설`,attack:`공격력`,shield:`실드`,armor:`장갑`,buildTime:`건설 시간`,seconds:`초`,unitCost:`단위 비용`,buildQuantity:`건조 수량`,totalCost:`총 비용`,build:`건조`,shieldDomeBuilt:`실드 돔이 이미 건설됨`,inputError:`입력 오류`,inputErrorMessage:`건조 수량을 입력하세요!`,buildFailed:`건조 실패`,buildFailedMessage:`자원이 충분한지 또는 전제 조건이 충족되었는지 확인하세요. 실드 돔은 하나만 건설할 수 있습니다.`},fleetView:{title:`함대 관리`,fleetOverview:`함대 개요`,sendFleet:`함대 파견`,flightMissions:`비행 임무`,currentPlanetFleet:`현재 행성 함대`,attack:`공격`,shield:`실드`,armor:`장갑`,speed:`속도`,cargo:`화물`,selectFleet:`함대 선택`,selectFleetDescription:`파견할 함선 수 선택`,available:`사용 가능`,all:`전체`,targetCoordinates:`목표 좌표`,galaxy:`은하계`,system:`행성계`,position:`위치`,missionType:`임무 유형`,missionInfo:`임무 정보`,fuelConsumption:`연료 소비`,flightTime:`비행 시간`,attackMission:`공격`,transport:`수송`,colonize:`식민`,spy:`정찰`,deploy:`배치`,transportResources:`자원 수송`,totalCargoCapacity:`총 적재량`,used:`사용됨`,noFlightMissions:`비행 임무 없음`,outbound:`이동 중`,returning:`귀환 중`,fleetComposition:`함대 구성`,carryingResources:`운반 자원`,arrivalTime:`도착 시간`,returnTime:`귀환 시간`,recallFleet:`함대 소환`,sendFailed:`파견 실패`,sendFailedMessage:`함대 수, 연료 충분 여부 또는 적재량 한계를 확인하세요.`,recallFailed:`소환 실패`,recallFailedMessage:`이 임무는 소환할 수 없습니다.`,unknownPlanet:`알 수 없는 행성`,fleetMissionSlots:`함대 임무 슬롯`},officersView:{title:`장교`,activated:`활성화됨`,inactive:`비활성`,activeStatus:`활성 상태`,expirationTime:`만료 시간`,remainingTime:`남은 시간`,recruitCost:`모집 비용`,days:`일`,benefitsBonus:`효과 보너스`,resourceProduction:`자원 생산량`,darkMatterProduction:`암흑 물질 생산량`,energyProduction:`에너지 생산량`,buildingSpeed:`건설 속도`,researchSpeed:`연구 속도`,fleetSpeed:`함대 속도`,fuelConsumption:`연료 소비`,defense:`방어력`,storageCapacity:`저장 용량`,buildQueue:`건설 대기열`,fleetSlots:`함대 슬롯`,hire:`고용`,renew:`갱신`,dismiss:`해고`,hireTitle:`장교 고용`,hireMessage:`{name}을(를) 고용하시겠습니까? 유효 기간은 7일입니다.`,renewTitle:`장교 갱신`,renewMessage:`{name}을(를) 7일간 갱신하시겠습니까?`,dismissTitle:`장교 해고`,dismissMessage:`{name}을(를) 해고하시겠습니까? 비용은 환불되지 않습니다.`,hireFailed:`고용 실패`,renewFailed:`갱신 실패`,insufficientResources:`자원 부족!`},galaxyView:{title:`은하계`,selectCoordinates:`좌표 선택`,galaxy:`은하계`,selectGalaxy:`은하계 선택`,system:`행성계`,selectSystem:`행성계 선택`,view:`보기`,myPlanet:`내 행성`,totalPositions:`총 10개 행성 위치`,mine:`내 것`,hostile:`적대`,emptySlot:`빈 자리 - 식민 가능`,scout:`정찰`,attack:`공격`,colonize:`식민`,switch:`전환`,scoutPlanetTitle:`행성 정찰`,attackPlanetTitle:`행성 공격`,colonizePlanetTitle:`행성 식민`,scoutPlanetMessage:`행성 [{coordinates}]을(를) 정찰하기 위해 정찰기를 보내시겠습니까? - -함대 페이지로 이동하여 함선을 선택하고 파견하세요.`,attackPlanetMessage:`행성 [{coordinates}]을(를) 공격하시겠습니까? - -함대 페이지로 이동하여 함선을 선택하고 파견하세요.`,colonizePlanetMessage:`위치 [{coordinates}]을(를) 식민하시겠습니까? - -함대 페이지로 이동하여 식민선을 파견하세요.`},messagesView:{title:`메시지 센터`,battleReports:`전투 보고서`,spyReports:`정찰 보고서`,noBattleReports:`전투 보고서 없음`,noSpyReports:`정찰 보고서 없음`,battleReport:`전투 보고서`,spyReport:`정찰 보고서`,victory:`승리`,defeat:`패배`,draw:`무승부`,attackerFleet:`공격자 함대`,defenderFleet:`방어자 함대`,defenderDefense:`방어자 방어`,attackerLosses:`공격자 손실`,defenderLosses:`방어자 손실`,noLosses:`손실 없음`,plunder:`약탈 자원`,debrisField:`잔해장`,resources:`자원`,fleet:`함대`,defense:`방어`,buildings:`건물`},simulatorView:{title:`전투 시뮬레이터`,attacker:`공격자`,defender:`방어자`,attackerConfig:`공격자 설정`,attackerConfigDesc:`공격자의 함대와 기술 레벨 설정`,defenderConfig:`방어자 설정`,defenderConfigDesc:`방어자의 함대, 방어 및 기술 레벨 설정`,fleet:`함대`,defenseStructures:`방어 시설`,techLevels:`기술 레벨`,weapon:`무기`,shield:`실드`,armor:`장갑`,defenderResources:`방어자 자원 (약탈 계산용)`,startSimulation:`시뮬레이션 시작`,reset:`초기화`,battleResult:`전투 결과`,attackerVictory:`공격자 승리`,defenderVictory:`방어자 승리`,draw:`무승부`,afterRounds:`{rounds}회 전투 후`,attackerLosses:`공격자 손실`,defenderLosses:`방어자 손실`,noLosses:`손실 없음`,attackerRemaining:`공격자 잔여`,defenderRemaining:`방어자 잔여`,allDestroyed:`모두 파괴됨`,plunderableResources:`약탈 가능 자원`,debrisField:`잔해장`,moonChance:`위성 생성 확률`,showRoundDetails:`라운드 상세 표시`,hideRoundDetails:`라운드 상세 숨기기`,round:`제 {round} 라운드`,attackerRemainingPower:`공격자 잔여 화력`,defenderRemainingPower:`방어자 잔여 화력`},settings:{dataManagement:`데이터 관리`,dataManagementDesc:`게임 데이터 내보내기, 가져오기 또는 지우기`,exportData:`데이터 내보내기`,exportDataDesc:`게임 진행 상황을 JSON 파일로 내보내기`,export:`내보내기`,exporting:`내보내는 중...`,exportSuccess:`내보내기 성공`,exportFailed:`내보내기 실패, 다시 시도해주세요`,importData:`데이터 가져오기`,importDataDesc:`JSON 파일에서 게임 진행 상황 복원`,selectFile:`파일 선택`,importSuccess:`가져오기 성공`,importConfirmTitle:`가져오기 확인`,importConfirmMessage:`가져오기를 하면 현재 게임 진행 상황이 덮어쓰기됩니다. 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?`,importFailed:`가져오기 실패, 파일 형식을 확인해주세요`,clearData:`데이터 지우기`,clearDataDesc:`모든 게임 데이터 삭제 및 초기화`,clear:`지우기`,clearConfirmTitle:`데이터 지우기 확인`,clearConfirmMessage:`모든 게임 데이터가 삭제되고 처음부터 시작됩니다. 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?`,gameSettings:`게임 설정`,gameSettingsDesc:`게임 매개변수 및 설정 조정`,playerName:`플레이어 이름`,gameSpeed:`게임 속도`,gameSpeedDesc:`현재 게임 속도 배율`,about:`정보`,version:`버전`,buildDate:`빌드 날짜`,community:`커뮤니티`,github:`GitHub 저장소`,qqGroup:`QQ 그룹`}},mt={common:{confirm:`確認`,cancel:`キャンセル`,delete:`削除`,edit:`編集`,save:`保存`,close:`閉じる`,back:`戻る`,next:`次へ`,previous:`前へ`,submit:`送信`,reset:`リセット`,search:`検索`,filter:`フィルター`,loading:`読み込み中...`,noData:`データなし`,error:`エラー`,success:`成功`,warning:`警告`,info:`情報`,resourceType:`資源タイプ`,playerName:`司令官`,timeHour:`時間`,timeMinute:`分`,timeSecond:`秒`,featureLocked:`機能がロックされています`,unlockRequired:`建物が必要です`,requiredBuilding:`必要な建物`,currentLevel:`現在のレベル`,goToBuildings:`建物へ移動`,locked:`ロック済み`,viewRequirements:`必要条件を表示`,requirementsNotMet:`必要条件が満たされていません`,current:`現在`},errors:{requirementsNotMet:`前提条件を満たしていません`,insufficientResources:`資源が不足しています`,shieldDomeLimit:`シールドドームの上限に達しました`,fleetMissionsFull:`艦隊ミッションスロットが満杯です`,insufficientFleet:`艦隊が不足しています`,insufficientFuel:`燃料が不足しています`,planetOnly:`この建物は惑星でのみ建設できます`,moonOnly:`この建物は月でのみ建設できます`,buildQueueFull:`建設キューが満杯です`,insufficientSpace:`スペースが不足しています`,buildingLevelZero:`建物レベルが0のため、解体できません`,researchQueueFull:`研究キューが満杯です`,moonExists:`月は既に存在します`,insufficientDebris:`残骸フィールドが不足しています`},nav:{overview:`概要`,buildings:`建物`,research:`研究`,shipyard:`造船所`,defense:`防衛`,fleet:`艦隊`,officers:`士官`,simulator:`シミュレーター`,galaxy:`銀河`,messages:`メッセージ`,settings:`設定`},sidebar:{language:`言語`,lightMode:`ライトモード`,darkMode:`ダークモード`,collapse:`メニューを閉じる`,expand:`メニューを開く`},resources:{metal:`金属`,crystal:`クリスタル`,deuterium:`重水素`,darkMatter:`ダークマター`,energy:`エネルギー`,production:`生産量`,capacity:`容量`,current:`現在の貯蔵量`,max:`最大容量`,perHour:`時間`},planet:{planet:`惑星`,moon:`月`,colony:`コロニー`,position:`位置`,coordinates:`座標`,switchToMoon:`月を表示`,backToPlanet:`母星に戻る`,fields:`フィールド`,temperature:`温度`,homePlanet:`母星`,planetPrefix:`惑星`,moonSuffix:`の月`,colonyPrefix:`コロニー`},player:{points:`総ポイント`},buildings:{metalMine:`金属鉱山`,crystalMine:`クリスタル鉱山`,deuteriumSynthesizer:`重水素合成装置`,solarPlant:`太陽光発電所`,roboticsFactory:`ロボット工場`,naniteFactory:`ナノマシン工場`,shipyard:`造船所`,researchLab:`研究所`,metalStorage:`金属倉庫`,crystalStorage:`クリスタル倉庫`,deuteriumTank:`重水素タンク`,darkMatterCollector:`ダークマター採取装置`,lunarBase:`月面基地`,sensorPhalanx:`センサーファランクス`,jumpGate:`ジャンプゲート`,buildTime:`建設時間`,production:`生産量`,consumption:`消費`,totalCost:`総コスト`,totalPoints:`総ポイント`,levelRange:`レベル範囲`},buildingDescriptions:{metalMine:`金属資源を採掘`,crystalMine:`クリスタル資源を採掘`,deuteriumSynthesizer:`重水素資源を合成`,solarPlant:`エネルギーを供給`,roboticsFactory:`建設速度を向上`,naniteFactory:`建設キュー数を増加、レベル毎に+1(最大10)`,shipyard:`艦船を建造`,researchLab:`技術を研究`,metalStorage:`金属の貯蔵上限を増加`,crystalStorage:`クリスタルの貯蔵上限を増加`,deuteriumTank:`重水素の貯蔵上限を増加`,darkMatterCollector:`希少なダークマター資源を収集`,lunarBase:`月の利用可能スペースを増加`,sensorPhalanx:`周辺星系の艦隊活動を探知`,jumpGate:`他の月へ艦隊を瞬間移動`},ships:{lightFighter:`軽戦闘機`,heavyFighter:`重戦闘機`,cruiser:`巡洋艦`,battleship:`戦艦`,smallCargo:`小型輸送船`,largeCargo:`大型輸送船`,colonyShip:`コロニーシップ`,recycler:`リサイクラー`,espionageProbe:`スパイプローブ`,darkMatterHarvester:`ダークマター採取船`},shipDescriptions:{lightFighter:`基本戦闘ユニット`,heavyFighter:`重装甲戦闘機`,cruiser:`中型戦艦、攻守バランス型`,battleship:`強力な戦艦`,smallCargo:`少量の資源を輸送`,largeCargo:`大量の資源を輸送`,colonyShip:`新惑星の植民に使用`,recycler:`デブリフィールドの資源を回収`,espionageProbe:`敵惑星を偵察`,darkMatterHarvester:`ダークマター採取専用の特殊艦`},defenses:{rocketLauncher:`ロケットランチャー`,lightLaser:`ライトレーザー`,heavyLaser:`ヘビーレーザー`,gaussCannon:`ガウスキャノン`,ionCannon:`イオンキャノン`,plasmaTurret:`プラズマタレット`,smallShieldDome:`小型シールドドーム`,largeShieldDome:`大型シールドドーム`},defenseDescriptions:{rocketLauncher:`基本防衛施設`,lightLaser:`軽量エネルギー兵器`,heavyLaser:`重型エネルギー兵器`,gaussCannon:`高速運動エネルギー兵器`,ionCannon:`シールド破壊に効果的`,plasmaTurret:`強力な防衛施設`,smallShieldDome:`惑星全体を保護する小型シールド`,largeShieldDome:`惑星全体を保護する大型シールド`},research:{researchTime:`研究時間`,totalCost:`総コスト`,totalPoints:`総ポイント`,levelRange:`レベル範囲`},technologies:{energyTechnology:`エネルギー技術`,laserTechnology:`レーザー技術`,ionTechnology:`イオン技術`,hyperspaceTechnology:`ハイパースペース技術`,plasmaTechnology:`プラズマ技術`,computerTechnology:`コンピューター技術`,combustionDrive:`燃焼ドライブ`,impulseDrive:`インパルスドライブ`,hyperspaceDrive:`ハイパースペースドライブ`,darkMatterTechnology:`ダークマター技術`},technologyDescriptions:{energyTechnology:`エネルギー利用効率を向上`,laserTechnology:`レーザー兵器と防衛の基礎`,ionTechnology:`イオン兵器技術`,hyperspaceTechnology:`ハイパースペースジャンプ技術`,plasmaTechnology:`プラズマ兵器技術`,computerTechnology:`研究キュー数を増加、レベル毎に+1(最大10)`,combustionDrive:`基本推進技術`,impulseDrive:`中級推進技術`,hyperspaceDrive:`高級推進技術`,darkMatterTechnology:`ダークマターの性質と応用を研究`},officers:{commander:`司令官`,admiral:`提督`,engineer:`エンジニア`,geologist:`地質学者`,technocrat:`技術専門家`,darkMatterSpecialist:`ダークマター専門家`},officerDescriptions:{commander:`建設速度と管理能力を向上`,admiral:`艦隊戦闘力と速度を向上`,engineer:`エネルギーと防御力を向上`,geologist:`資源生産量を向上`,technocrat:`研究速度と偵察能力を向上`,darkMatterSpecialist:`ダークマター採取効率を向上`},queue:{buildQueue:`建設キュー`,researchQueue:`研究キュー`,building:`建設中`,researching:`研究中`,remaining:`残り時間`,cancel:`キャンセル`,cancelBuild:`建設キャンセル`,cancelResearch:`研究キャンセル`,confirmCancel:`キャンセルしますか?資源の50%が返還されます。`,level:`レベル`,upgradeToLevel:`レベルにアップグレード`},shipyard:{attack:`攻撃力`,shield:`シールド`,armor:`装甲`,speed:`速度`,cargoCapacity:`貨物容量`,fuelConsumption:`燃料消費`,buildCost:`建設コスト`,buildTime:`建設時間`,perUnit:`ユニットあたり`,batchCalculator:`一括計算機`,quantity:`数量`,totalCost:`総コスト`,totalTime:`総時間`},overview:{title:`惑星概要`,resourceOverview:`資源概要`,fleetInfo:`艦隊`,currentShips:`現在の惑星の艦船数`},buildingsView:{title:`建物`,usedSpace:`使用済みスペース`,spaceUsage:`スペース使用量`,level:`レベル`,upgradeCost:`アップグレードコスト`,buildTime:`建設時間`,upgrade:`アップグレード`,upgradeFailed:`アップグレード失敗`,upgradeFailedMessage:`資源が十分か、スペースが十分か、または他の建設タスクがないか確認してください。`,demolish:`解体`,demolishRefund:`解体返還`,demolishFailed:`解体失敗`,demolishFailedMessage:`この建物を解体できません。建設キューが満杯か、建物レベルが0でないか確認してください。`},researchView:{title:`研究`,researchCost:`研究コスト`,research:`研究`,researchFailed:`研究失敗`,researchFailedMessage:`資源が十分か、前提条件が満たされているか、または他の研究タスクがないか確認してください。`},defense:{attack:`攻撃力`,shield:`シールド`,armor:`装甲`,buildCost:`建設コスト`,buildTime:`建設時間`,perUnit:`ユニットあたり`,batchCalculator:`一括計算機`,quantity:`数量`,totalCost:`総コスト`,totalTime:`総時間`},shipyardView:{title:`造船所`,attack:`攻撃力`,shield:`シールド`,speed:`速度`,cargoCapacity:`積載量`,unitCost:`ユニットコスト`,buildQuantity:`建造数`,totalCost:`総コスト`,build:`建造`,inputError:`入力エラー`,inputErrorMessage:`建造数を入力してください!`,buildFailed:`建造失敗`,buildFailedMessage:`資源が十分か、前提条件が満たされているか確認してください。`},defenseView:{title:`防衛施設`,attack:`攻撃力`,shield:`シールド`,armor:`装甲`,buildTime:`建設時間`,seconds:`秒`,unitCost:`ユニットコスト`,buildQuantity:`建造数`,totalCost:`総コスト`,build:`建造`,shieldDomeBuilt:`シールドドーム建設済み`,inputError:`入力エラー`,inputErrorMessage:`建造数を入力してください!`,buildFailed:`建造失敗`,buildFailedMessage:`資源が十分か、前提条件が満たされているか確認してください。シールドドームは1つのみ建設できます。`},fleetView:{title:`艦隊管理`,fleetOverview:`艦隊概要`,sendFleet:`艦隊派遣`,flightMissions:`飛行ミッション`,currentPlanetFleet:`現在の惑星艦隊`,attack:`攻撃`,shield:`シールド`,armor:`装甲`,speed:`速度`,cargo:`貨物`,selectFleet:`艦隊選択`,selectFleetDescription:`派遣する艦船数を選択`,available:`利用可能`,all:`全て`,targetCoordinates:`目標座標`,galaxy:`銀河`,system:`星系`,position:`位置`,missionType:`ミッションタイプ`,missionInfo:`ミッション情報`,fuelConsumption:`燃料消費`,flightTime:`飛行時間`,attackMission:`攻撃`,transport:`輸送`,colonize:`植民`,spy:`偵察`,deploy:`配備`,transportResources:`資源輸送`,totalCargoCapacity:`総積載量`,used:`使用済み`,noFlightMissions:`飛行ミッションなし`,outbound:`往路`,returning:`帰路`,fleetComposition:`艦隊構成`,carryingResources:`運搬資源`,arrivalTime:`到着時刻`,returnTime:`帰還時刻`,recallFleet:`艦隊召還`,sendFailed:`派遣失敗`,sendFailedMessage:`艦隊数、燃料の充足、または積載量の制限を確認してください。`,recallFailed:`召還失敗`,recallFailedMessage:`このミッションは召還できません。`,unknownPlanet:`未知の惑星`,fleetMissionSlots:`艦隊ミッションスロット`},officersView:{title:`士官`,activated:`アクティブ`,inactive:`非アクティブ`,activeStatus:`アクティブ状態`,expirationTime:`期限切れ時刻`,remainingTime:`残り時間`,recruitCost:`募集コスト`,days:`日`,benefitsBonus:`効果ボーナス`,resourceProduction:`資源生産量`,darkMatterProduction:`ダークマター生産量`,energyProduction:`エネルギー生産量`,buildingSpeed:`建設速度`,researchSpeed:`研究速度`,fleetSpeed:`艦隊速度`,fuelConsumption:`燃料消費`,defense:`防御力`,storageCapacity:`貯蔵容量`,buildQueue:`建設キュー`,fleetSlots:`艦隊スロット`,hire:`雇用`,renew:`更新`,dismiss:`解雇`,hireTitle:`士官雇用`,hireMessage:`{name}を雇用しますか?有効期限は7日間です。`,renewTitle:`士官更新`,renewMessage:`{name}を7日間更新しますか?`,dismissTitle:`士官解雇`,dismissMessage:`{name}を解雇しますか?費用は返金されません。`,hireFailed:`雇用失敗`,renewFailed:`更新失敗`,insufficientResources:`資源不足!`},galaxyView:{title:`銀河`,selectCoordinates:`座標選択`,galaxy:`銀河`,selectGalaxy:`銀河を選択`,system:`星系`,selectSystem:`星系を選択`,view:`表示`,myPlanet:`自分の惑星`,totalPositions:`全10惑星位置`,mine:`自分`,hostile:`敵対`,emptySlot:`空き - 植民可能`,scout:`偵察`,attack:`攻撃`,colonize:`植民`,switch:`切り替え`,scoutPlanetTitle:`惑星偵察`,attackPlanetTitle:`惑星攻撃`,colonizePlanetTitle:`惑星植民`,scoutPlanetMessage:`惑星[{coordinates}]にスパイプローブを送りますか? - -艦隊ページに移動して艦船を選択して派遣してください。`,attackPlanetMessage:`惑星[{coordinates}]を攻撃しますか? - -艦隊ページに移動して艦船を選択して派遣してください。`,colonizePlanetMessage:`位置[{coordinates}]を植民しますか? - -艦隊ページに移動してコロニーシップを派遣してください。`},messagesView:{title:`メッセージセンター`,battleReports:`戦闘レポート`,spyReports:`スパイレポート`,noBattleReports:`戦闘レポートなし`,noSpyReports:`スパイレポートなし`,battleReport:`戦闘レポート`,spyReport:`スパイレポート`,victory:`勝利`,defeat:`敗北`,draw:`引き分け`,attackerFleet:`攻撃側艦隊`,defenderFleet:`防御側艦隊`,defenderDefense:`防御側防衛`,attackerLosses:`攻撃側損失`,defenderLosses:`防御側損失`,noLosses:`損失なし`,plunder:`略奪資源`,debrisField:`デブリフィールド`,resources:`資源`,fleet:`艦隊`,defense:`防衛`,buildings:`建物`},simulatorView:{title:`戦闘シミュレーター`,attacker:`攻撃側`,defender:`防御側`,attackerConfig:`攻撃側設定`,attackerConfigDesc:`攻撃側の艦隊と技術レベルを設定`,defenderConfig:`防御側設定`,defenderConfigDesc:`防御側の艦隊、防衛、技術レベルを設定`,fleet:`艦隊`,defenseStructures:`防衛施設`,techLevels:`技術レベル`,weapon:`武器`,shield:`シールド`,armor:`装甲`,defenderResources:`防御側資源(略奪計算用)`,startSimulation:`シミュレーション開始`,reset:`リセット`,battleResult:`戦闘結果`,attackerVictory:`攻撃側勝利`,defenderVictory:`防御側勝利`,draw:`引き分け`,afterRounds:`{rounds}ラウンド後`,attackerLosses:`攻撃側損失`,defenderLosses:`防御側損失`,noLosses:`損失なし`,attackerRemaining:`攻撃側残存`,defenderRemaining:`防御側残存`,allDestroyed:`全て破壊`,plunderableResources:`略奪可能資源`,debrisField:`デブリフィールド`,moonChance:`月生成確率`,showRoundDetails:`ラウンド詳細表示`,hideRoundDetails:`ラウンド詳細非表示`,round:`第{round}ラウンド`,attackerRemainingPower:`攻撃側残存火力`,defenderRemainingPower:`防御側残存火力`},settings:{dataManagement:`データ管理`,dataManagementDesc:`ゲームデータのエクスポート、インポート、またはクリア`,exportData:`データエクスポート`,exportDataDesc:`ゲームの進行状況をJSONファイルとしてエクスポート`,export:`エクスポート`,exporting:`エクスポート中...`,exportSuccess:`エクスポート成功`,exportFailed:`エクスポートに失敗しました。もう一度お試しください`,importData:`データインポート`,importDataDesc:`JSONファイルからゲームの進行状況を復元`,selectFile:`ファイルを選択`,importSuccess:`インポート成功`,importConfirmTitle:`インポート確認`,importConfirmMessage:`インポートすると現在のゲームの進行状況が上書きされます。この操作は元に戻せません。続行しますか?`,importFailed:`インポートに失敗しました。ファイル形式を確認してください`,clearData:`データクリア`,clearDataDesc:`すべてのゲームデータを削除してリセット`,clear:`クリア`,clearConfirmTitle:`データクリア確認`,clearConfirmMessage:`すべてのゲームデータが削除され、最初からやり直します。この操作は元に戻せません。続行しますか?`,gameSettings:`ゲーム設定`,gameSettingsDesc:`ゲームパラメータと設定を調整`,playerName:`プレイヤー名`,gameSpeed:`ゲーム速度`,gameSpeedDesc:`現在のゲーム速度倍率`,about:`について`,version:`バージョン`,buildDate:`ビルド日`,community:`コミュニティ`,github:`GitHubリポジトリ`,qqGroup:`QQグループ`}};const ht={"zh-CN":ct,"zh-TW":lt,en:ut,de:dt,ru:ft,ko:pt,ja:mt},gt={"zh-CN":`简体中文`,"zh-TW":`繁體中文`,en:`English`,de:`Deutsch`,ru:`Русский`,ko:`한국어`,ja:`日本語`},_t=()=>{let e=(navigator.language||navigator.languages&&navigator.languages[0]||`zh-CN`).toLowerCase();return e.startsWith(`zh-tw`)||e.startsWith(`zh-hant`)||e.startsWith(`zh-hk`)||e.startsWith(`zh-mo`)?`zh-TW`:e.startsWith(`zh`)?`zh-CN`:e.startsWith(`ja`)?`ja`:e.startsWith(`ko`)?`ko`:e.startsWith(`en`)?`en`:e.startsWith(`de`)?`de`:e.startsWith(`ru`)?`ru`:`zh-CN`},vt=()=>{let e=at(),t=S(()=>e.locale),n=S(()=>ht[t.value]);return{t:e=>{let t=e.split(`.`),r=n.value;for(let n of t)if(r&&typeof r==`object`&&n in r)r=r[n];else return e;return typeof r==`string`?r:e},locale:t,setLocale:t=>{e.locale=t},messages:n}};function yt(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e;const St=bt,Ct=(e,t)=>n=>{if(t?.variants==null)return St(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=xt(t)||xt(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return St(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)};var wt=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),Et=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),Dt=`-`,Ot=[],kt=`arbitrary..`,At=e=>{let t=Nt(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return Mt(e);let n=e.split(Dt);return jt(n,n[0]===``&&n.length>1?1:0,t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?wt(i,t):t:i||Ot}return n[e]||Ot}}},jt=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=jt(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(Dt):e.slice(t).join(Dt),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?kt+r:void 0})(),Nt=e=>{let{theme:t,classGroups:n}=e;return Pt(n,t)},Pt=(e,t)=>{let n=Et();for(let r in e){let i=e[r];Ft(i,n,r,t)}return n},Ft=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){Lt(e,t,n);return}if(typeof e==`function`){Rt(e,t,n,r);return}zt(e,t,n,r)},Lt=(e,t,n)=>{let r=e===``?t:Bt(t,e);r.classGroupId=n},Rt=(e,t,n,r)=>{if(Vt(e)){Ft(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Tt(n,e))},zt=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(Dt),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,Ht=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},Ut=`!`,Wt=`:`,Gt=[],Kt=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),qt=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return Kt(t,l,c,u)};if(t){let e=t+Wt,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):Kt(Gt,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},Jt=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},Yt=e=>({cache:Ht(e.cacheSize),parseClassName:qt(e),sortModifiers:Jt(e),...At(e)}),Xt=/\s+/,Zt=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a}=t,o=[],s=e.trim().split(Xt),c=``;for(let e=s.length-1;e>=0;--e){let t=s[e],{isExternal:l,modifiers:u,hasImportantModifier:d,baseClassName:f,maybePostfixModifierPosition:p}=n(t);if(l){c=t+(c.length>0?` `+c:c);continue}let m=!!p,h=r(m?f.substring(0,p):f);if(!h){if(!m){c=t+(c.length>0?` `+c:c);continue}if(h=r(f),!h){c=t+(c.length>0?` `+c:c);continue}m=!1}let g=u.length===0?``:u.length===1?u[0]:a(u).join(`:`),_=d?g+Ut:g,v=_+h;if(o.indexOf(v)>-1)continue;o.push(v);let y=i(h,m);for(let e=0;e0?` `+c:c)}return c},Qt=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=Yt(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=Zt(e,n);return i(e,a),a};return a=o,(...e)=>a(Qt(...e))},tn=[],nn=e=>{let t=t=>t[e]||tn;return t.isThemeGetter=!0,t},rn=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,an=/^\((?:(\w[\w-]*):)?(.+)\)$/i,on=/^\d+\/\d+$/,sn=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,cn=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,ln=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,un=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,dn=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,fn=e=>on.test(e),V=e=>!!e&&!Number.isNaN(Number(e)),pn=e=>!!e&&Number.isInteger(Number(e)),mn=e=>e.endsWith(`%`)&&V(e.slice(0,-1)),hn=e=>sn.test(e),gn=()=>!0,_n=e=>cn.test(e)&&!ln.test(e),vn=()=>!1,yn=e=>un.test(e),bn=e=>dn.test(e),xn=e=>!H(e)&&!U(e),Sn=e=>Pn(e,Rn,vn),H=e=>rn.test(e),Cn=e=>Pn(e,zn,_n),wn=e=>Pn(e,Bn,V),Tn=e=>Pn(e,In,vn),En=e=>Pn(e,Ln,bn),Dn=e=>Pn(e,Hn,yn),U=e=>an.test(e),On=e=>Fn(e,zn),kn=e=>Fn(e,Vn),An=e=>Fn(e,In),jn=e=>Fn(e,Rn),Mn=e=>Fn(e,Ln),Nn=e=>Fn(e,Hn,!0),Pn=(e,t,n)=>{let r=rn.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},Fn=(e,t,n=!1)=>{let r=an.exec(e);return r?r[1]?t(r[1]):n:!1},In=e=>e===`position`||e===`percentage`,Ln=e=>e===`image`||e===`url`,Rn=e=>e===`length`||e===`size`||e===`bg-size`,zn=e=>e===`length`,Bn=e=>e===`number`,Vn=e=>e===`family-name`,Hn=e=>e===`shadow`,Un=en(()=>{let e=nn(`color`),t=nn(`font`),n=nn(`text`),r=nn(`font-weight`),i=nn(`tracking`),a=nn(`leading`),o=nn(`breakpoint`),s=nn(`container`),c=nn(`spacing`),l=nn(`radius`),u=nn(`shadow`),d=nn(`inset-shadow`),f=nn(`text-shadow`),p=nn(`drop-shadow`),m=nn(`blur`),h=nn(`perspective`),g=nn(`aspect`),_=nn(`ease`),v=nn(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],ee=()=>[...b(),U,H],x=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],te=()=>[`auto`,`contain`,`none`],S=()=>[U,H,c],C=()=>[fn,`full`,`auto`,...S()],w=()=>[pn,`none`,`subgrid`,U,H],T=()=>[`auto`,{span:[`full`,pn,U,H]},pn,U,H],E=()=>[pn,`auto`,U,H],D=()=>[`auto`,`min`,`max`,`fr`,U,H],O=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],k=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],A=()=>[`auto`,...S()],ne=()=>[fn,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...S()],j=()=>[e,U,H],re=()=>[...b(),An,Tn,{position:[U,H]}],M=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ie=()=>[`auto`,`cover`,`contain`,jn,Sn,{size:[U,H]}],N=()=>[mn,On,Cn],P=()=>[``,`none`,`full`,l,U,H],F=()=>[``,V,On,Cn],ae=()=>[`solid`,`dashed`,`dotted`,`double`],I=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],L=()=>[V,mn,An,Tn],oe=()=>[``,`none`,m,U,H],R=()=>[`none`,V,U,H],se=()=>[`none`,V,U,H],z=()=>[V,U,H],ce=()=>[fn,`full`,...S()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[hn],breakpoint:[hn],color:[gn],container:[hn],"drop-shadow":[hn],ease:[`in`,`out`,`in-out`],font:[xn],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[hn],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[hn],shadow:[hn],spacing:[`px`,V],text:[hn],"text-shadow":[hn],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,fn,H,U,g]}],container:[`container`],columns:[{columns:[V,H,U,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:ee()}],overflow:[{overflow:x()}],"overflow-x":[{"overflow-x":x()}],"overflow-y":[{"overflow-y":x()}],overscroll:[{overscroll:te()}],"overscroll-x":[{"overscroll-x":te()}],"overscroll-y":[{"overscroll-y":te()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:C()}],"inset-x":[{"inset-x":C()}],"inset-y":[{"inset-y":C()}],start:[{start:C()}],end:[{end:C()}],top:[{top:C()}],right:[{right:C()}],bottom:[{bottom:C()}],left:[{left:C()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[pn,`auto`,U,H]}],basis:[{basis:[fn,`full`,`auto`,s,...S()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[V,fn,`auto`,`initial`,`none`,H]}],grow:[{grow:[``,V,U,H]}],shrink:[{shrink:[``,V,U,H]}],order:[{order:[pn,`first`,`last`,`none`,U,H]}],"grid-cols":[{"grid-cols":w()}],"col-start-end":[{col:T()}],"col-start":[{"col-start":E()}],"col-end":[{"col-end":E()}],"grid-rows":[{"grid-rows":w()}],"row-start-end":[{row:T()}],"row-start":[{"row-start":E()}],"row-end":[{"row-end":E()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":D()}],"auto-rows":[{"auto-rows":D()}],gap:[{gap:S()}],"gap-x":[{"gap-x":S()}],"gap-y":[{"gap-y":S()}],"justify-content":[{justify:[...O(),`normal`]}],"justify-items":[{"justify-items":[...k(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...k()]}],"align-content":[{content:[`normal`,...O()]}],"align-items":[{items:[...k(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...k(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":O()}],"place-items":[{"place-items":[...k(),`baseline`]}],"place-self":[{"place-self":[`auto`,...k()]}],p:[{p:S()}],px:[{px:S()}],py:[{py:S()}],ps:[{ps:S()}],pe:[{pe:S()}],pt:[{pt:S()}],pr:[{pr:S()}],pb:[{pb:S()}],pl:[{pl:S()}],m:[{m:A()}],mx:[{mx:A()}],my:[{my:A()}],ms:[{ms:A()}],me:[{me:A()}],mt:[{mt:A()}],mr:[{mr:A()}],mb:[{mb:A()}],ml:[{ml:A()}],"space-x":[{"space-x":S()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":S()}],"space-y-reverse":[`space-y-reverse`],size:[{size:ne()}],w:[{w:[s,`screen`,...ne()]}],"min-w":[{"min-w":[s,`screen`,`none`,...ne()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...ne()]}],h:[{h:[`screen`,`lh`,...ne()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...ne()]}],"max-h":[{"max-h":[`screen`,`lh`,...ne()]}],"font-size":[{text:[`base`,n,On,Cn]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,U,wn]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,mn,H]}],"font-family":[{font:[kn,H,t]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,U,H]}],"line-clamp":[{"line-clamp":[V,`none`,U,wn]}],leading:[{leading:[a,...S()]}],"list-image":[{"list-image":[`none`,U,H]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,U,H]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:j()}],"text-color":[{text:j()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...ae(),`wavy`]}],"text-decoration-thickness":[{decoration:[V,`from-font`,`auto`,U,Cn]}],"text-decoration-color":[{decoration:j()}],"underline-offset":[{"underline-offset":[V,`auto`,U,H]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:S()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,U,H]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,U,H]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:re()}],"bg-repeat":[{bg:M()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},pn,U,H],radial:[``,U,H],conic:[pn,U,H]},Mn,En]}],"bg-color":[{bg:j()}],"gradient-from-pos":[{from:N()}],"gradient-via-pos":[{via:N()}],"gradient-to-pos":[{to:N()}],"gradient-from":[{from:j()}],"gradient-via":[{via:j()}],"gradient-to":[{to:j()}],rounded:[{rounded:P()}],"rounded-s":[{"rounded-s":P()}],"rounded-e":[{"rounded-e":P()}],"rounded-t":[{"rounded-t":P()}],"rounded-r":[{"rounded-r":P()}],"rounded-b":[{"rounded-b":P()}],"rounded-l":[{"rounded-l":P()}],"rounded-ss":[{"rounded-ss":P()}],"rounded-se":[{"rounded-se":P()}],"rounded-ee":[{"rounded-ee":P()}],"rounded-es":[{"rounded-es":P()}],"rounded-tl":[{"rounded-tl":P()}],"rounded-tr":[{"rounded-tr":P()}],"rounded-br":[{"rounded-br":P()}],"rounded-bl":[{"rounded-bl":P()}],"border-w":[{border:F()}],"border-w-x":[{"border-x":F()}],"border-w-y":[{"border-y":F()}],"border-w-s":[{"border-s":F()}],"border-w-e":[{"border-e":F()}],"border-w-t":[{"border-t":F()}],"border-w-r":[{"border-r":F()}],"border-w-b":[{"border-b":F()}],"border-w-l":[{"border-l":F()}],"divide-x":[{"divide-x":F()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":F()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...ae(),`hidden`,`none`]}],"divide-style":[{divide:[...ae(),`hidden`,`none`]}],"border-color":[{border:j()}],"border-color-x":[{"border-x":j()}],"border-color-y":[{"border-y":j()}],"border-color-s":[{"border-s":j()}],"border-color-e":[{"border-e":j()}],"border-color-t":[{"border-t":j()}],"border-color-r":[{"border-r":j()}],"border-color-b":[{"border-b":j()}],"border-color-l":[{"border-l":j()}],"divide-color":[{divide:j()}],"outline-style":[{outline:[...ae(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[V,U,H]}],"outline-w":[{outline:[``,V,On,Cn]}],"outline-color":[{outline:j()}],shadow:[{shadow:[``,`none`,u,Nn,Dn]}],"shadow-color":[{shadow:j()}],"inset-shadow":[{"inset-shadow":[`none`,d,Nn,Dn]}],"inset-shadow-color":[{"inset-shadow":j()}],"ring-w":[{ring:F()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:j()}],"ring-offset-w":[{"ring-offset":[V,Cn]}],"ring-offset-color":[{"ring-offset":j()}],"inset-ring-w":[{"inset-ring":F()}],"inset-ring-color":[{"inset-ring":j()}],"text-shadow":[{"text-shadow":[`none`,f,Nn,Dn]}],"text-shadow-color":[{"text-shadow":j()}],opacity:[{opacity:[V,U,H]}],"mix-blend":[{"mix-blend":[...I(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":I()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[V]}],"mask-image-linear-from-pos":[{"mask-linear-from":L()}],"mask-image-linear-to-pos":[{"mask-linear-to":L()}],"mask-image-linear-from-color":[{"mask-linear-from":j()}],"mask-image-linear-to-color":[{"mask-linear-to":j()}],"mask-image-t-from-pos":[{"mask-t-from":L()}],"mask-image-t-to-pos":[{"mask-t-to":L()}],"mask-image-t-from-color":[{"mask-t-from":j()}],"mask-image-t-to-color":[{"mask-t-to":j()}],"mask-image-r-from-pos":[{"mask-r-from":L()}],"mask-image-r-to-pos":[{"mask-r-to":L()}],"mask-image-r-from-color":[{"mask-r-from":j()}],"mask-image-r-to-color":[{"mask-r-to":j()}],"mask-image-b-from-pos":[{"mask-b-from":L()}],"mask-image-b-to-pos":[{"mask-b-to":L()}],"mask-image-b-from-color":[{"mask-b-from":j()}],"mask-image-b-to-color":[{"mask-b-to":j()}],"mask-image-l-from-pos":[{"mask-l-from":L()}],"mask-image-l-to-pos":[{"mask-l-to":L()}],"mask-image-l-from-color":[{"mask-l-from":j()}],"mask-image-l-to-color":[{"mask-l-to":j()}],"mask-image-x-from-pos":[{"mask-x-from":L()}],"mask-image-x-to-pos":[{"mask-x-to":L()}],"mask-image-x-from-color":[{"mask-x-from":j()}],"mask-image-x-to-color":[{"mask-x-to":j()}],"mask-image-y-from-pos":[{"mask-y-from":L()}],"mask-image-y-to-pos":[{"mask-y-to":L()}],"mask-image-y-from-color":[{"mask-y-from":j()}],"mask-image-y-to-color":[{"mask-y-to":j()}],"mask-image-radial":[{"mask-radial":[U,H]}],"mask-image-radial-from-pos":[{"mask-radial-from":L()}],"mask-image-radial-to-pos":[{"mask-radial-to":L()}],"mask-image-radial-from-color":[{"mask-radial-from":j()}],"mask-image-radial-to-color":[{"mask-radial-to":j()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[V]}],"mask-image-conic-from-pos":[{"mask-conic-from":L()}],"mask-image-conic-to-pos":[{"mask-conic-to":L()}],"mask-image-conic-from-color":[{"mask-conic-from":j()}],"mask-image-conic-to-color":[{"mask-conic-to":j()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:re()}],"mask-repeat":[{mask:M()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,U,H]}],filter:[{filter:[``,`none`,U,H]}],blur:[{blur:oe()}],brightness:[{brightness:[V,U,H]}],contrast:[{contrast:[V,U,H]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,Nn,Dn]}],"drop-shadow-color":[{"drop-shadow":j()}],grayscale:[{grayscale:[``,V,U,H]}],"hue-rotate":[{"hue-rotate":[V,U,H]}],invert:[{invert:[``,V,U,H]}],saturate:[{saturate:[V,U,H]}],sepia:[{sepia:[``,V,U,H]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,U,H]}],"backdrop-blur":[{"backdrop-blur":oe()}],"backdrop-brightness":[{"backdrop-brightness":[V,U,H]}],"backdrop-contrast":[{"backdrop-contrast":[V,U,H]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,V,U,H]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[V,U,H]}],"backdrop-invert":[{"backdrop-invert":[``,V,U,H]}],"backdrop-opacity":[{"backdrop-opacity":[V,U,H]}],"backdrop-saturate":[{"backdrop-saturate":[V,U,H]}],"backdrop-sepia":[{"backdrop-sepia":[``,V,U,H]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":S()}],"border-spacing-x":[{"border-spacing-x":S()}],"border-spacing-y":[{"border-spacing-y":S()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,U,H]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[V,`initial`,U,H]}],ease:[{ease:[`linear`,`initial`,_,U,H]}],delay:[{delay:[V,U,H]}],animate:[{animate:[`none`,v,U,H]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,U,H]}],"perspective-origin":[{"perspective-origin":ee()}],rotate:[{rotate:R()}],"rotate-x":[{"rotate-x":R()}],"rotate-y":[{"rotate-y":R()}],"rotate-z":[{"rotate-z":R()}],scale:[{scale:se()}],"scale-x":[{"scale-x":se()}],"scale-y":[{"scale-y":se()}],"scale-z":[{"scale-z":se()}],"scale-3d":[`scale-3d`],skew:[{skew:z()}],"skew-x":[{"skew-x":z()}],"skew-y":[{"skew-y":z()}],transform:[{transform:[U,H,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:ee()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:ce()}],"translate-x":[{"translate-x":ce()}],"translate-y":[{"translate-y":ce()}],"translate-z":[{"translate-z":ce()}],"translate-none":[`translate-none`],accent:[{accent:j()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:j()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,U,H]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":S()}],"scroll-mx":[{"scroll-mx":S()}],"scroll-my":[{"scroll-my":S()}],"scroll-ms":[{"scroll-ms":S()}],"scroll-me":[{"scroll-me":S()}],"scroll-mt":[{"scroll-mt":S()}],"scroll-mr":[{"scroll-mr":S()}],"scroll-mb":[{"scroll-mb":S()}],"scroll-ml":[{"scroll-ml":S()}],"scroll-p":[{"scroll-p":S()}],"scroll-px":[{"scroll-px":S()}],"scroll-py":[{"scroll-py":S()}],"scroll-ps":[{"scroll-ps":S()}],"scroll-pe":[{"scroll-pe":S()}],"scroll-pt":[{"scroll-pt":S()}],"scroll-pr":[{"scroll-pr":S()}],"scroll-pb":[{"scroll-pb":S()}],"scroll-pl":[{"scroll-pl":S()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,U,H]}],fill:[{fill:[`none`,...j()]}],"stroke-w":[{stroke:[V,On,Cn,wn]}],stroke:[{stroke:[`none`,...j()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});const W=(...e)=>Un(bt(e));var Wn=T({__name:`Button`,props:{variant:{},size:{},class:{},asChild:{type:Boolean},as:{default:`button`}},setup(e){let t=e;return(n,r)=>(R(),p(s(m),{"data-slot":`button`,as:e.as,"as-child":e.asChild,class:_(s(W)(s(Gn)({variant:e.variant,size:e.size}),t.class))},{default:I(()=>[z(n.$slots,`default`)]),_:3},8,[`as`,`as-child`,`class`]))}});const Gn=Ct(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});var Kn=T({__name:`Badge`,props:{asChild:{type:Boolean},as:{},variant:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(r,i)=>(R(),p(s(m),oe({"data-slot":`badge`,class:s(W)(s(qn)({variant:e.variant}),t.class)},s(n)),{default:I(()=>[z(r.$slots,`default`)]),_:3},16,[`class`]))}});const qn=Ct(`inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90`,secondary:`border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90`,destructive:`border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`}},defaultVariants:{variant:`default`}});var Jn=T({__name:`Progress`,props:{modelValue:{default:0},max:{},getValueLabel:{},getValueText:{},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(R(),p(s(ne),oe({"data-slot":`progress`},s(n),{class:s(W)(`bg-primary/20 relative h-2 w-full overflow-hidden rounded-full`,t.class)}),{default:I(()=>[C(s(j),{"data-slot":`progress-indicator`,class:`bg-primary h-full w-full flex-1 transition-all`,style:a(`transform: translateX(-${100-(t.modelValue??0)}%);`)},null,8,[`style`])]),_:1},16,[`class`]))}}),Yn=T({__name:`Popover`,props:{defaultOpen:{type:Boolean},open:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=b(e,t);return(e,t)=>(R(),p(s(ue),oe({"data-slot":`popover`},s(n)),{default:I(t=>[z(e.$slots,`default`,ie(y(t)))]),_:3},16))}}),Xn=T({inheritAttrs:!1,__name:`PopoverContent`,props:{forceMount:{type:Boolean},side:{},sideOffset:{default:4},sideFlip:{type:Boolean},align:{default:`center`},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},disableOutsidePointerEvents:{type:Boolean},class:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=b(F(n,`class`),r);return(e,t)=>(R(),p(s(de),null,{default:I(()=>[C(s(O),oe({"data-slot":`popover-content`},{...e.$attrs,...s(i)},{class:s(W)(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md origin-(--reka-popover-content-transform-origin) outline-hidden`,n.class)}),{default:I(()=>[z(e.$slots,`default`)]),_:3},16,[`class`])]),_:3}))}}),Zn=T({__name:`PopoverTrigger`,props:{asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(R(),p(s(ce),oe({"data-slot":`popover-trigger`},t),{default:I(()=>[z(e.$slots,`default`)]),_:3},16))}}),Qn=T({__name:`ResourceIcon`,props:{type:{},size:{default:`md`}},setup(e){let t={metal:`bg-gradient-to-br from-slate-400 to-slate-600`,crystal:`bg-gradient-to-br from-cyan-400 to-blue-600`,deuterium:`bg-gradient-to-br from-green-400 to-emerald-600`,darkMatter:`bg-gradient-to-br from-purple-600 to-indigo-900`,energy:`bg-gradient-to-br from-yellow-400 to-orange-500`},n={sm:`w-3 h-3`,md:`w-4 h-4`,lg:`w-5 h-5`};return(r,i)=>(R(),f(`div`,{class:_([t[e.type],n[e.size],`rounded shadow-sm`])},null,2))}}),$n={key:0,class:`fixed inset-0 z-50 flex items-center justify-center`},er={class:`relative bg-card border rounded-lg shadow-lg p-6 max-w-md w-full mx-4 z-10`},tr={class:`text-lg font-semibold mb-2`},nr={class:`text-sm text-muted-foreground mb-6`},rr={class:`flex justify-end gap-3`},ir=T({__name:`ConfirmDialog`,setup(e,{expose:t}){let{t:n}=vt(),r=ee(!1),i=ee(null),a=e=>{i.value=e,r.value=!0},o=()=>{i.value&&i.value.onConfirm(),r.value=!1},c=()=>{r.value=!1};return t({show:a}),(e,t)=>(R(),p(x,{to:`body`},[r.value?(R(),f(`div`,$n,[l(`div`,{class:`fixed inset-0 bg-black/50`,onClick:c}),l(`div`,er,[l(`h2`,tr,M(i.value?.title),1),l(`p`,nr,M(i.value?.message),1),l(`div`,rr,[C(s(Wn),{onClick:c,variant:`outline`},{default:I(()=>[w(M(s(n)(`common.cancel`)),1)]),_:1}),C(s(Wn),{onClick:o,variant:`default`},{default:I(()=>[w(M(s(n)(`common.confirm`)),1)]),_:1})])])])):L(``,!0)]))}}),ar=T({__name:`Dialog`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=b(e,t);return(e,t)=>(R(),p(s(d),oe({"data-slot":`dialog`},s(n)),{default:I(t=>[z(e.$slots,`default`,ie(y(t)))]),_:3},16))}}),or=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),sr=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),cr=e=>{let t=sr(e);return t.charAt(0).toUpperCase()+t.slice(1)},lr=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),ur=e=>e===``,dr={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`},fr=({name:e,iconNode:t,absoluteStrokeWidth:n,"absolute-stroke-width":i,strokeWidth:a,"stroke-width":o,size:s=dr.width,color:c=dr.stroke,...l},{slots:u})=>r(`svg`,{...dr,...l,width:s,height:s,stroke:c,"stroke-width":ur(n)||ur(i)||n===!0||i===!0?Number(a||o||dr[`stroke-width`])*24/Number(s):a||o||dr[`stroke-width`],class:lr(`lucide`,l.class,...e?[`lucide-${or(cr(e))}-icon`,`lucide-${or(e)}`]:[`lucide-icon`])},[...t.map(e=>r(...e)),...u.default?[u.default()]:[]]),G=(e,t)=>(n,{slots:i,attrs:a})=>r(fr,{...a,...n,iconNode:t,name:e},i),pr=G(`building-2`,[[`path`,{d:`M10 12h4`,key:`a56b0p`}],[`path`,{d:`M10 8h4`,key:`1sr2af`}],[`path`,{d:`M14 21v-3a2 2 0 0 0-4 0v3`,key:`1rgiei`}],[`path`,{d:`M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2`,key:`secmi2`}],[`path`,{d:`M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16`,key:`16ra0t`}]]),mr=G(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),hr=G(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),gr=G(`flask-conical`,[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]),_r=G(`fuel`,[[`path`,{d:`M14 13h2a2 2 0 0 1 2 2v2a2 2 0 0 0 4 0v-6.998a2 2 0 0 0-.59-1.42L18 5`,key:`1wtuz0`}],[`path`,{d:`M14 21V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v16`,key:`e09ifn`}],[`path`,{d:`M2 21h13`,key:`1x0fut`}],[`path`,{d:`M3 9h11`,key:`1p7c0w`}]]),vr=G(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),yr=G(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),br=G(`languages`,[[`path`,{d:`m5 8 6 6`,key:`1wu5hv`}],[`path`,{d:`m4 14 6-6 2-3`,key:`1k1g8d`}],[`path`,{d:`M2 5h12`,key:`or177f`}],[`path`,{d:`M7 2h1`,key:`1t2jsx`}],[`path`,{d:`m22 22-5-10-5 10`,key:`don7ne`}],[`path`,{d:`M14 18h6`,key:`1m8k6r`}]]),xr=G(`mail`,[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]),Sr=G(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),Cr=G(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),wr=G(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),Tr=G(`rocket`,[[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z`,key:`m3kijz`}],[`path`,{d:`m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z`,key:`1fmvmk`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0`,key:`1f8sc4`}],[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}]]),Er=G(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Dr=G(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),Or=G(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),kr=G(`ship`,[[`path`,{d:`M12 10.189V14`,key:`1p8cqu`}],[`path`,{d:`M12 2v3`,key:`qbqxhf`}],[`path`,{d:`M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6`,key:`qpkstq`}],[`path`,{d:`M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76`,key:`7tigtc`}],[`path`,{d:`M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1`,key:`1924j5`}]]),Ar=G(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),jr=G(`swords`,[[`polyline`,{points:`14.5 17.5 3 6 3 3 6 3 17.5 14.5`,key:`1hfsw2`}],[`line`,{x1:`13`,x2:`19`,y1:`19`,y2:`13`,key:`1vrmhu`}],[`line`,{x1:`16`,x2:`20`,y1:`16`,y2:`20`,key:`1bron3`}],[`line`,{x1:`19`,x2:`21`,y1:`21`,y2:`19`,key:`13pww6`}],[`polyline`,{points:`14.5 6.5 18 3 21 3 21 6 17.5 9.5`,key:`hbey2j`}],[`line`,{x1:`5`,x2:`9`,y1:`14`,y2:`18`,key:`1hf58s`}],[`line`,{x1:`7`,x2:`4`,y1:`17`,y2:`20`,key:`pidxm4`}],[`line`,{x1:`3`,x2:`5`,y1:`19`,y2:`21`,key:`1pehsh`}]]),Mr=G(`sword`,[[`path`,{d:`m11 19-6-6`,key:`s7kpr`}],[`path`,{d:`m5 21-2-2`,key:`1kw20b`}],[`path`,{d:`m8 16-4 4`,key:`1oqv8h`}],[`path`,{d:`M9.5 17.5 21 6V3h-3L6.5 14.5`,key:`pkxemp`}]]),Nr=G(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),Pr=G(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Fr=G(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),Ir=T({__name:`DialogOverlay`,props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(R(),p(s(h),oe({"data-slot":`dialog-overlay`},s(n),{class:s(W)(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80`,t.class)}),{default:I(()=>[z(e.$slots,`default`)]),_:3},16,[`class`]))}}),Lr=T({inheritAttrs:!1,__name:`DialogContent`,props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{},showCloseButton:{type:Boolean,default:!0}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=b(F(n,`class`),r);return(t,r)=>(R(),p(s(re),null,{default:I(()=>[C(Ir),C(s(v),oe({"data-slot":`dialog-content`},{...t.$attrs,...s(i)},{class:s(W)(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg`,n.class)}),{default:I(()=>[z(t.$slots,`default`),e.showCloseButton?(R(),p(s(c),{key:0,"data-slot":`dialog-close`,class:`ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`},{default:I(()=>[C(s(Pr)),r[0]||=l(`span`,{class:`sr-only`},`Close`,-1)]),_:1})):L(``,!0)]),_:3},16,[`class`])]),_:3}))}}),Rr=T({__name:`DialogDescription`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=fe(F(t,`class`));return(e,r)=>(R(),p(s(g),oe({"data-slot":`dialog-description`},s(n),{class:s(W)(`text-muted-foreground text-sm`,t.class)}),{default:I(()=>[z(e.$slots,`default`)]),_:3},16,[`class`]))}}),zr=T({__name:`DialogHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(R(),f(`div`,{"data-slot":`dialog-header`,class:_(s(W)(`flex flex-col gap-2 text-center sm:text-left`,t.class))},[z(e.$slots,`default`)],2))}}),Br=T({__name:`DialogTitle`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=fe(F(t,`class`));return(e,r)=>(R(),p(s(i),oe({"data-slot":`dialog-title`},s(n),{class:s(W)(`text-lg leading-none font-semibold`,t.class)}),{default:I(()=>[z(e.$slots,`default`)]),_:3},16,[`class`]))}});const Vr=ye(`detailDialog`,{state:()=>({isOpen:!1,type:null,itemType:null,currentLevel:void 0}),actions:{openBuilding(e,t){this.isOpen=!0,this.type=`building`,this.itemType=e,this.currentLevel=t},openTechnology(e,t){this.isOpen=!0,this.type=`technology`,this.itemType=e,this.currentLevel=t},openShip(e){this.isOpen=!0,this.type=`ship`,this.itemType=e,this.currentLevel=void 0},openDefense(e){this.isOpen=!0,this.type=`defense`,this.itemType=e,this.currentLevel=void 0},close(){this.isOpen=!1,this.type=null,this.itemType=null,this.currentLevel=void 0}}});var Hr={"data-slot":`table-container`,class:`relative w-full overflow-auto`},Ur=T({__name:`Table`,props:{class:{}},setup(e){let t=e;return(e,n)=>(R(),f(`div`,Hr,[l(`table`,{"data-slot":`table`,class:_(s(W)(`w-full caption-bottom text-sm`,t.class))},[z(e.$slots,`default`)],2)]))}}),Wr=T({__name:`TableBody`,props:{class:{}},setup(e){let t=e;return(e,n)=>(R(),f(`tbody`,{"data-slot":`table-body`,class:_(s(W)(`[&_tr:last-child]:border-0`,t.class))},[z(e.$slots,`default`)],2))}}),Gr=T({__name:`TableCell`,props:{class:{}},setup(e){let t=e;return(e,n)=>(R(),f(`td`,{"data-slot":`table-cell`,class:_(s(W)(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,t.class))},[z(e.$slots,`default`)],2))}}),Kr=T({__name:`TableRow`,props:{class:{}},setup(e){let t=e;return(e,n)=>(R(),f(`tr`,{"data-slot":`table-row`,class:_(s(W)(`hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors`,t.class))},[z(e.$slots,`default`)],2))}}),qr=T({__name:`TableHead`,props:{class:{}},setup(e){let t=e;return(e,n)=>(R(),f(`th`,{"data-slot":`table-head`,class:_(s(W)(`text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,t.class))},[z(e.$slots,`default`)],2))}}),Jr=T({__name:`TableHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(R(),f(`thead`,{"data-slot":`table-header`,class:_(s(W)(`[&_tr]:border-b`,t.class))},[z(e.$slots,`default`)],2))}}),K=T({__name:`Card`,props:{class:{}},setup(e){let t=e;return(e,n)=>(R(),f(`div`,{"data-slot":`card`,class:_(s(W)(`bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm`,t.class))},[z(e.$slots,`default`)],2))}}),q=T({__name:`CardContent`,props:{class:{}},setup(e){let t=e;return(e,n)=>(R(),f(`div`,{"data-slot":`card-content`,class:_(s(W)(`px-6`,t.class))},[z(e.$slots,`default`)],2))}}),J=T({__name:`CardHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(R(),f(`div`,{"data-slot":`card-header`,class:_(s(W)(`@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6`,t.class))},[z(e.$slots,`default`)],2))}}),Y=T({__name:`CardTitle`,props:{class:{}},setup(e){let t=e;return(e,n)=>(R(),f(`h3`,{"data-slot":`card-title`,class:_(s(W)(`leading-none font-semibold`,t.class))},[z(e.$slots,`default`)],2))}});const X={MetalMine:`metalMine`,CrystalMine:`crystalMine`,DeuteriumSynthesizer:`deuteriumSynthesizer`,SolarPlant:`solarPlant`,RoboticsFactory:`roboticsFactory`,NaniteFactory:`naniteFactory`,Shipyard:`shipyard`,ResearchLab:`researchLab`,MetalStorage:`metalStorage`,CrystalStorage:`crystalStorage`,DeuteriumTank:`deuteriumTank`,DarkMatterCollector:`darkMatterCollector`,LunarBase:`lunarBase`,SensorPhalanx:`sensorPhalanx`,JumpGate:`jumpGate`},Z={EnergyTechnology:`energyTechnology`,LaserTechnology:`laserTechnology`,IonTechnology:`ionTechnology`,HyperspaceTechnology:`hyperspaceTechnology`,PlasmaTechnology:`plasmaTechnology`,ComputerTechnology:`computerTechnology`,CombustionDrive:`combustionDrive`,ImpulseDrive:`impulseDrive`,HyperspaceDrive:`hyperspaceDrive`,DarkMatterTechnology:`darkMatterTechnology`},Q={RocketLauncher:`rocketLauncher`,LightLaser:`lightLaser`,HeavyLaser:`heavyLaser`,GaussCannon:`gaussCannon`,IonCannon:`ionCannon`,PlasmaTurret:`plasmaTurret`,SmallShieldDome:`smallShieldDome`,LargeShieldDome:`largeShieldDome`},$={LightFighter:`lightFighter`,HeavyFighter:`heavyFighter`,Cruiser:`cruiser`,Battleship:`battleship`,SmallCargo:`smallCargo`,LargeCargo:`largeCargo`,ColonyShip:`colonyShip`,Recycler:`recycler`,EspionageProbe:`espionageProbe`,DarkMatterHarvester:`darkMatterHarvester`},Yr={Attack:`attack`,Transport:`transport`,Colonize:`colonize`,Spy:`spy`,Deploy:`deploy`,Expedition:`expedition`,HarvestDarkMatter:`harvestDarkMatter`},Xr={Commander:`commander`,Admiral:`admiral`,Engineer:`engineer`,Geologist:`geologist`,Technocrat:`technocrat`,DarkMatterSpecialist:`darkMatterSpecialist`},Zr={[X.MetalMine]:{id:X.MetalMine,name:`金属矿`,description:`开采金属资源`,baseCost:{metal:60,crystal:15,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:1.5,spaceUsage:3,planetOnly:!0},[X.CrystalMine]:{id:X.CrystalMine,name:`晶体矿`,description:`开采晶体资源`,baseCost:{metal:48,crystal:24,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:1.6,spaceUsage:3,planetOnly:!0},[X.DeuteriumSynthesizer]:{id:X.DeuteriumSynthesizer,name:`重氢合成器`,description:`合成重氢资源`,baseCost:{metal:225,crystal:75,deuterium:0,darkMatter:0,energy:0},baseTime:20,costMultiplier:1.5,spaceUsage:4,planetOnly:!0},[X.SolarPlant]:{id:X.SolarPlant,name:`太阳能电站`,description:`提供能源`,baseCost:{metal:75,crystal:30,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:1.5,spaceUsage:5},[X.RoboticsFactory]:{id:X.RoboticsFactory,name:`机器人工厂`,description:`加快建造速度`,baseCost:{metal:400,crystal:120,deuterium:200,darkMatter:0,energy:0},baseTime:40,costMultiplier:2,spaceUsage:6},[X.NaniteFactory]:{id:X.NaniteFactory,name:`纳米工厂`,description:`增加建造队列数量,每级+1队列`,baseCost:{metal:1e6,crystal:5e5,deuterium:1e5,darkMatter:0,energy:0},baseTime:240,costMultiplier:2,spaceUsage:15,requirements:{[X.RoboticsFactory]:10}},[X.Shipyard]:{id:X.Shipyard,name:`船坞`,description:`建造舰船`,baseCost:{metal:400,crystal:200,deuterium:100,darkMatter:0,energy:0},baseTime:30,costMultiplier:2,spaceUsage:8},[X.ResearchLab]:{id:X.ResearchLab,name:`研究实验室`,description:`研究科技`,baseCost:{metal:200,crystal:400,deuterium:200,darkMatter:0,energy:0},baseTime:30,costMultiplier:2,spaceUsage:5},[X.MetalStorage]:{id:X.MetalStorage,name:`金属仓库`,description:`增加金属存储上限`,baseCost:{metal:1e3,crystal:0,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:2,spaceUsage:2},[X.CrystalStorage]:{id:X.CrystalStorage,name:`晶体仓库`,description:`增加晶体存储上限`,baseCost:{metal:1e3,crystal:500,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:2,spaceUsage:2},[X.DeuteriumTank]:{id:X.DeuteriumTank,name:`重氢罐`,description:`增加重氢存储上限`,baseCost:{metal:1e3,crystal:1e3,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:2,spaceUsage:2},[X.DarkMatterCollector]:{id:X.DarkMatterCollector,name:`暗物质收集器`,description:`收集稀有的暗物质资源`,baseCost:{metal:5e4,crystal:1e5,deuterium:5e4,darkMatter:0,energy:0},baseTime:90,costMultiplier:2,spaceUsage:10,planetOnly:!0},[X.LunarBase]:{id:X.LunarBase,name:`月球基地`,description:`增加月球可用空间`,baseCost:{metal:2e4,crystal:4e4,deuterium:2e4,darkMatter:0,energy:0},baseTime:45,costMultiplier:2,spaceUsage:0,moonOnly:!0},[X.SensorPhalanx]:{id:X.SensorPhalanx,name:`传感器阵列`,description:`侦测周围星系的舰队活动`,baseCost:{metal:2e4,crystal:4e4,deuterium:2e4,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,spaceUsage:10,moonOnly:!0},[X.JumpGate]:{id:X.JumpGate,name:`跳跃门`,description:`瞬间传送舰队到其他月球`,baseCost:{metal:2e6,crystal:4e6,deuterium:2e6,darkMatter:0,energy:0},baseTime:240,costMultiplier:2,spaceUsage:20,moonOnly:!0}},Qr={[Z.EnergyTechnology]:{id:Z.EnergyTechnology,name:`能源技术`,description:`提高能源利用效率`,baseCost:{metal:0,crystal:800,deuterium:400,darkMatter:0,energy:0},baseTime:30,costMultiplier:2,requirements:{[X.ResearchLab]:1}},[Z.LaserTechnology]:{id:Z.LaserTechnology,name:`激光技术`,description:`开发激光武器`,baseCost:{metal:200,crystal:100,deuterium:0,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[X.ResearchLab]:1,[Z.EnergyTechnology]:2}},[Z.IonTechnology]:{id:Z.IonTechnology,name:`离子技术`,description:`开发离子武器`,baseCost:{metal:1e3,crystal:300,deuterium:100,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[X.ResearchLab]:4,[Z.LaserTechnology]:5,[Z.EnergyTechnology]:4}},[Z.HyperspaceTechnology]:{id:Z.HyperspaceTechnology,name:`超空间技术`,description:`研究超空间跳跃`,baseCost:{metal:0,crystal:4e3,deuterium:2e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[X.ResearchLab]:7,[Z.EnergyTechnology]:5}},[Z.PlasmaTechnology]:{id:Z.PlasmaTechnology,name:`等离子技术`,description:`开发等离子武器`,baseCost:{metal:2e3,crystal:4e3,deuterium:1e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[X.ResearchLab]:4,[Z.EnergyTechnology]:8,[Z.LaserTechnology]:10,[Z.IonTechnology]:5}},[Z.ComputerTechnology]:{id:Z.ComputerTechnology,name:`计算机技术`,description:`增加研究队列数量,每级+1队列`,baseCost:{metal:0,crystal:400,deuterium:600,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[X.ResearchLab]:1}},[Z.CombustionDrive]:{id:Z.CombustionDrive,name:`燃烧引擎`,description:`基础推进系统`,baseCost:{metal:400,crystal:0,deuterium:600,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[X.ResearchLab]:1,[Z.EnergyTechnology]:1}},[Z.ImpulseDrive]:{id:Z.ImpulseDrive,name:`脉冲引擎`,description:`高级推进系统`,baseCost:{metal:2e3,crystal:4e3,deuterium:600,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[X.ResearchLab]:2,[Z.EnergyTechnology]:1}},[Z.HyperspaceDrive]:{id:Z.HyperspaceDrive,name:`超空间引擎`,description:`超空间推进系统`,baseCost:{metal:1e4,crystal:2e4,deuterium:6e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[X.ResearchLab]:7,[Z.HyperspaceTechnology]:3}},[Z.DarkMatterTechnology]:{id:Z.DarkMatterTechnology,name:`暗物质技术`,description:`研究暗物质的性质和应用`,baseCost:{metal:1e5,crystal:2e5,deuterium:1e5,darkMatter:0,energy:0},baseTime:180,costMultiplier:2,requirements:{[X.ResearchLab]:8,[Z.HyperspaceTechnology]:5}}},$r={[$.LightFighter]:{id:$.LightFighter,name:`轻型战斗机`,description:`基础战斗单位`,cost:{metal:3e3,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,cargoCapacity:50,attack:50,shield:10,armor:400,speed:12500,fuelConsumption:20,requirements:{[X.Shipyard]:1,[Z.CombustionDrive]:1}},[$.HeavyFighter]:{id:$.HeavyFighter,name:`重型战斗机`,description:`强力战斗单位`,cost:{metal:6e3,crystal:4e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:100,attack:150,shield:25,armor:1e3,speed:1e4,fuelConsumption:75,requirements:{[X.Shipyard]:3,[Z.ImpulseDrive]:2}},[$.Cruiser]:{id:$.Cruiser,name:`巡洋舰`,description:`中型战舰`,cost:{metal:2e4,crystal:7e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:800,attack:400,shield:50,armor:2700,speed:15e3,fuelConsumption:300,requirements:{[X.Shipyard]:5,[Z.ImpulseDrive]:4,[Z.IonTechnology]:2}},[$.Battleship]:{id:$.Battleship,name:`战列舰`,description:`重型战舰`,cost:{metal:45e3,crystal:15e3,deuterium:0,darkMatter:0,energy:0},buildTime:90,cargoCapacity:1500,attack:1e3,shield:200,armor:6e3,speed:1e4,fuelConsumption:500,requirements:{[X.Shipyard]:7,[Z.HyperspaceDrive]:4}},[$.SmallCargo]:{id:$.SmallCargo,name:`小型运输船`,description:`运输资源`,cost:{metal:2e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:15,cargoCapacity:5e3,attack:5,shield:10,armor:400,speed:5e3,fuelConsumption:10,requirements:{[X.Shipyard]:2,[Z.CombustionDrive]:2}},[$.LargeCargo]:{id:$.LargeCargo,name:`大型运输船`,description:`大量运输资源`,cost:{metal:6e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:25e3,attack:5,shield:25,armor:1200,speed:7500,fuelConsumption:50,requirements:{[X.Shipyard]:4,[Z.CombustionDrive]:6}},[$.ColonyShip]:{id:$.ColonyShip,name:`殖民船`,description:`建立新殖民地`,cost:{metal:1e4,crystal:2e4,deuterium:1e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:7500,attack:50,shield:100,armor:3e3,speed:2500,fuelConsumption:1e3,requirements:{[X.Shipyard]:4,[Z.ImpulseDrive]:3}},[$.Recycler]:{id:$.Recycler,name:`回收船`,description:`回收废墟资源`,cost:{metal:1e4,crystal:6e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:2e4,attack:1,shield:10,armor:1600,speed:2e3,fuelConsumption:300,requirements:{[X.Shipyard]:4,[Z.CombustionDrive]:6}},[$.EspionageProbe]:{id:$.EspionageProbe,name:`间谍探测器`,description:`侦察敌方星球`,cost:{metal:0,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:5,cargoCapacity:5,attack:0,shield:0,armor:100,speed:1e8,fuelConsumption:1,requirements:{[X.Shipyard]:3,[Z.CombustionDrive]:3}},[$.DarkMatterHarvester]:{id:$.DarkMatterHarvester,name:`暗物质采集船`,description:`专门用于采集暗物质的特殊飞船`,cost:{metal:1e5,crystal:15e4,deuterium:5e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:1e3,attack:10,shield:50,armor:2e3,speed:5e3,fuelConsumption:500,requirements:{[X.Shipyard]:8,[Z.HyperspaceDrive]:5,[Z.DarkMatterTechnology]:1}}},ei={[Q.RocketLauncher]:{id:Q.RocketLauncher,name:`火箭发射器`,description:`基础防御设施`,cost:{metal:2e3,crystal:0,deuterium:0,darkMatter:0,energy:0},buildTime:10,attack:80,shield:20,armor:200,requirements:{[X.Shipyard]:1}},[Q.LightLaser]:{id:Q.LightLaser,name:`轻型激光炮`,description:`激光防御武器`,cost:{metal:1500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildTime:12,attack:100,shield:25,armor:200,requirements:{[X.Shipyard]:2,[Z.LaserTechnology]:3}},[Q.HeavyLaser]:{id:Q.HeavyLaser,name:`重型激光炮`,description:`强力激光武器`,cost:{metal:6e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,attack:250,shield:100,armor:800,requirements:{[X.Shipyard]:4,[Z.LaserTechnology]:6}},[Q.GaussCannon]:{id:Q.GaussCannon,name:`高斯炮`,description:`电磁加速武器`,cost:{metal:2e4,crystal:15e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:35,attack:1100,shield:200,armor:3500,requirements:{[X.Shipyard]:6,[Z.EnergyTechnology]:6}},[Q.IonCannon]:{id:Q.IonCannon,name:`离子炮`,description:`离子武器系统`,cost:{metal:2e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:150,shield:500,armor:800,requirements:{[X.Shipyard]:4,[Z.IonTechnology]:4}},[Q.PlasmaTurret]:{id:Q.PlasmaTurret,name:`等离子炮台`,description:`最强防御武器`,cost:{metal:5e4,crystal:5e4,deuterium:3e4,darkMatter:0,energy:0},buildTime:60,attack:3e3,shield:300,armor:1e4,requirements:{[X.Shipyard]:8,[Z.PlasmaTechnology]:7}},[Q.SmallShieldDome]:{id:Q.SmallShieldDome,name:`小型护盾罩`,description:`保护星球的能量护盾`,cost:{metal:1e4,crystal:1e4,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:1,shield:2e3,armor:2e3,requirements:{[X.Shipyard]:6,[Z.EnergyTechnology]:3}},[Q.LargeShieldDome]:{id:Q.LargeShieldDome,name:`大型护盾罩`,description:`强大的星球护盾`,cost:{metal:5e4,crystal:5e4,deuterium:0,darkMatter:0,energy:0},buildTime:60,attack:1,shield:1e4,armor:1e4,requirements:{[X.Shipyard]:6,[Z.EnergyTechnology]:6}}},ti={[Xr.Commander]:{id:Xr.Commander,name:`指挥官`,description:`提升建筑速度和管理能力`,cost:{metal:0,crystal:5e4,deuterium:25e3,darkMatter:0,energy:0},weeklyMaintenance:{metal:0,crystal:5e3,deuterium:2500,darkMatter:0,energy:0},benefits:{buildingSpeedBonus:10,additionalBuildQueue:1,storageCapacityBonus:10}},[Xr.Admiral]:{id:Xr.Admiral,name:`上将`,description:`提升舰队作战能力`,cost:{metal:5e4,crystal:25e3,deuterium:0,darkMatter:0,energy:0},weeklyMaintenance:{metal:5e3,crystal:2500,deuterium:0,darkMatter:0,energy:0},benefits:{additionalFleetSlots:2,fleetSpeedBonus:10,fuelConsumptionReduction:10}},[Xr.Engineer]:{id:Xr.Engineer,name:`工程师`,description:`增强防御和能量系统`,cost:{metal:4e4,crystal:2e4,deuterium:1e4,darkMatter:0,energy:0},weeklyMaintenance:{metal:4e3,crystal:2e3,deuterium:1e3,darkMatter:0,energy:0},benefits:{defenseBonus:15,energyProductionBonus:10,buildingSpeedBonus:5}},[Xr.Geologist]:{id:Xr.Geologist,name:`地质学家`,description:`提高资源开采效率`,cost:{metal:3e4,crystal:3e4,deuterium:2e4,darkMatter:0,energy:0},weeklyMaintenance:{metal:3e3,crystal:3e3,deuterium:2e3,darkMatter:0,energy:0},benefits:{resourceProductionBonus:15,storageCapacityBonus:10}},[Xr.Technocrat]:{id:Xr.Technocrat,name:`技术专家`,description:`加快科技研究速度`,cost:{metal:2e4,crystal:4e4,deuterium:2e4,darkMatter:0,energy:0},weeklyMaintenance:{metal:2e3,crystal:4e3,deuterium:2e3,darkMatter:0,energy:0},benefits:{researchSpeedBonus:15}},[Xr.DarkMatterSpecialist]:{id:Xr.DarkMatterSpecialist,name:`暗物质专家`,description:`提升暗物质采集效率`,cost:{metal:5e4,crystal:1e5,deuterium:5e4,darkMatter:100,energy:0},weeklyMaintenance:{metal:5e3,crystal:1e4,deuterium:5e3,darkMatter:10,energy:0},benefits:{darkMatterProductionBonus:25}}},ni={minDebrisField:1e5,baseChance:1,maxChance:20,chancePerDebris:1e5,baseSize:100,lunarBaseSpaceBonus:3},ri=(e,t)=>{let n=Qr[e],r=n.costMultiplier**(t-1);return{metal:Math.floor(n.baseCost.metal*r),crystal:Math.floor(n.baseCost.crystal*r),deuterium:Math.floor(n.baseCost.deuterium*r),darkMatter:Math.floor(n.baseCost.darkMatter*r),energy:0}},ii=(e,t,n=0)=>{let r=Qr[e],i=r.baseTime*r.costMultiplier**+t,a=1-n/100;return Math.floor(i*a)},ai=(e,t,n)=>{let r=Qr[e];if(!r.requirements)return!0;for(let[e,i]of Object.entries(r.requirements))if(Object.values(X).includes(e)){if((t[e]||0){let r=Date.now();return{id:`research_${r}`,type:`technology`,itemType:e,targetLevel:t,startTime:r,endTime:r+n*1e3}},si=(e,t,n,r)=>e.filter(e=>{if(n>=e.endTime){let n=t[e.itemType]||0,i=e.targetLevel||0;return t[e.itemType]=i,r&&i>n&&r(fi(e.itemType,n,i),`technology`,e.itemType,i),!1}return!0}),ci=e=>e.metal+e.crystal+e.deuterium,li=e=>Math.floor(e/1e3),ui=(e,t)=>{e.points+=t},di=(e,t,n)=>{let r=0;for(let i=t+1;i<=n;i++){let t=ci(hi(e,i));r+=li(t)}return r},fi=(e,t,n)=>{let r=0;for(let i=t+1;i<=n;i++){let t=ci(ri(e,i));r+=li(t)}return r},pi=(e,t)=>{let n=$r[e];return li(ci(n.cost))*t},mi=(e,t)=>{let n=ei[e];return li(ci(n.cost))*t},hi=(e,t)=>{let n=Zr[e],r=n.costMultiplier**(t-1);return{metal:Math.floor(n.baseCost.metal*r),crystal:Math.floor(n.baseCost.crystal*r),deuterium:Math.floor(n.baseCost.deuterium*r),darkMatter:Math.floor(n.baseCost.darkMatter*r),energy:0}},gi=(e,t,n=0)=>{let r=Zr[e],i=r.costMultiplier**(t-1),a=r.baseTime*i,o=1-n/100;return Math.floor(a*o)},_i=e=>{let t=0;return Object.entries(e.buildings).forEach(([e,n])=>{if(n>0){let r=Zr[e];t+=r.spaceUsage*n}}),t},vi=(e,t,n)=>{let r=Zr[e].requirements;if(!r)return!0;for(let[e,i]of Object.entries(r)){let r=i;if(Object.values(X).includes(e)){if((t.buildings[e]||0)_i(e)+Zr[t].spaceUsage<=e.maxSpace,bi=(e,t,n)=>{let r=Date.now();return{id:`build_${r}`,type:`building`,itemType:e,targetLevel:t,startTime:r,endTime:r+n*1e3}},xi=(e,t,n)=>{e.buildQueue=e.buildQueue.filter(r=>{if(t>=r.endTime){if(r.type===`building`){let t=e.buildings[r.itemType]||0,i=r.targetLevel||0;e.buildings[r.itemType]=i,n&&i>t&&n(di(r.itemType,t,i),`building`,r.itemType,i)}else if(r.type===`ship`){let t=r.itemType,i=r.quantity||0;e.fleet[t]=(e.fleet[t]||0)+i,n&&i>0&&n(pi(t,i),`ship`,r.itemType,void 0,i)}else if(r.type===`defense`){let t=r.itemType,i=r.quantity||0;e.defense[t]=(e.defense[t]||0)+i,n&&i>0&&n(mi(t,i),`defense`,r.itemType,void 0,i)}else if(r.type===`demolish`){let t=r.itemType,n=e.buildings[t]||0;e.buildings[t]=Math.max(0,n-1)}return!1}return!0})},Si=(e,t)=>{let n=hi(e,t);return{metal:Math.floor(n.metal*.5),crystal:Math.floor(n.crystal*.5),deuterium:Math.floor(n.deuterium*.5),darkMatter:Math.floor(n.darkMatter*.5),energy:0}},Ci=(e,t,n=0)=>{let r=gi(e,t,n);return Math.floor(r*.5)},wi=(e,t,n)=>{let r=Date.now();return{id:`demolish_${r}`,type:`demolish`,itemType:e,targetLevel:t-1,startTime:r,endTime:r+n*1e3}};var Ti={class:`space-y-4`},Ei={class:`border rounded-lg overflow-hidden`},Di={key:1},Oi={key:0,class:`text-green-600 dark:text-green-400`},ki={key:1},Ai={key:0,class:`text-red-600 dark:text-red-400`},ji={key:1},Mi={class:`text-primary font-medium`},Ni={class:`grid grid-cols-2 gap-4`},Pi={class:`flex items-center justify-between text-sm`},Fi={class:`text-muted-foreground`},Ii={class:`font-medium`},Li={class:`flex items-center justify-between text-sm`},Ri={class:`text-muted-foreground`},zi={class:`font-medium`},Bi={class:`flex items-center justify-between text-sm`},Vi={class:`text-muted-foreground`},Hi={class:`font-medium`},Ui={class:`text-3xl font-bold text-primary`},Wi={class:`text-xs text-muted-foreground mt-1`},Gi=T({__name:`BuildingDetailView`,props:{buildingType:{},currentLevel:{}},setup(e){let{t}=vt(),n=e,r=S(()=>{let e=Math.max(0,n.currentLevel-10),t=n.currentLevel+10,r=[];for(let n=e;n<=t;n++)r.push(n);return r}),i=e=>{if(e===0)return{cost:{metal:0,crystal:0,deuterium:0},buildTime:0,production:0,consumption:0,points:0};let t=hi(n.buildingType,e),r=gi(n.buildingType,e),i=0,a=0;n.buildingType===`metalMine`?i=Math.floor(30*e*1.1**e):n.buildingType===`crystalMine`?i=Math.floor(20*e*1.1**e):n.buildingType===`deuteriumSynthesizer`&&(i=Math.floor(10*e*1.1**e)),n.buildingType===`solarPlant`&&(i=Math.floor(20*e*1.1**e)),[`metalMine`,`crystalMine`,`deuteriumSynthesizer`].includes(n.buildingType)&&(a=Math.floor(10*e*1.1**e));let o=di(n.buildingType,e-1,e);return{cost:t,buildTime:r,production:i,consumption:a,points:o}},a=S(()=>{let e=0,t=0,n=0,a=0;for(let o of r.value){if(o===0)continue;let r=i(o);e+=r.cost.metal,t+=r.cost.crystal,n+=r.cost.deuterium,a+=r.points}return{metal:e,crystal:t,deuterium:n,points:a}}),o=e=>e.toLocaleString(),c=e=>{if(e<60)return`${e}${t(`common.timeSecond`)}`;let n=Math.floor(e/60),r=e%60;if(n<60)return`${n}${t(`common.timeMinute`)}${r}${t(`common.timeSecond`)}`;let i=Math.floor(n/60),a=n%60;return`${i}${t(`common.timeHour`)}${a}${t(`common.timeMinute`)}`};return(n,d)=>(R(),f(`div`,Ti,[l(`div`,Ei,[C(s(Ur),null,{default:I(()=>[C(s(Jr),null,{default:I(()=>[C(s(Kr),null,{default:I(()=>[C(s(qr),{class:`w-20 text-center`},{default:I(()=>[w(M(s(t)(`buildings.levelRange`)),1)]),_:1}),C(s(qr),{class:`text-center`},{default:I(()=>[w(M(s(t)(`resources.metal`)),1)]),_:1}),C(s(qr),{class:`text-center`},{default:I(()=>[w(M(s(t)(`resources.crystal`)),1)]),_:1}),C(s(qr),{class:`text-center`},{default:I(()=>[w(M(s(t)(`resources.deuterium`)),1)]),_:1}),C(s(qr),{class:`text-center`},{default:I(()=>[w(M(s(t)(`buildings.buildTime`)),1)]),_:1}),C(s(qr),{class:`text-center`},{default:I(()=>[w(M(s(t)(`buildings.production`)),1)]),_:1}),C(s(qr),{class:`text-center`},{default:I(()=>[w(M(s(t)(`buildings.consumption`)),1)]),_:1}),C(s(qr),{class:`text-center`},{default:I(()=>[w(M(s(t)(`player.points`)),1)]),_:1})]),_:1})]),_:1}),C(s(Wr),null,{default:I(()=>[(R(!0),f(u,null,N(r.value,n=>(R(),p(s(Kr),{key:n,class:_({"bg-muted/50":n===e.currentLevel})},{default:I(()=>[C(s(Gr),{class:`text-center font-medium`},{default:I(()=>[n===e.currentLevel?(R(),p(s(Kn),{key:0,variant:`default`},{default:I(()=>[w(M(n),1)]),_:2},1024)):(R(),f(`span`,Di,M(n),1))]),_:2},1024),C(s(Gr),{class:`text-center text-sm`},{default:I(()=>[w(M(o(i(n).cost.metal)),1)]),_:2},1024),C(s(Gr),{class:`text-center text-sm`},{default:I(()=>[w(M(o(i(n).cost.crystal)),1)]),_:2},1024),C(s(Gr),{class:`text-center text-sm`},{default:I(()=>[w(M(o(i(n).cost.deuterium)),1)]),_:2},1024),C(s(Gr),{class:`text-center text-sm`},{default:I(()=>[w(M(c(i(n).buildTime)),1)]),_:2},1024),C(s(Gr),{class:`text-center text-sm`},{default:I(()=>[i(n).production>0?(R(),f(`span`,Oi,` +`+M(o(i(n).production))+`/`+M(s(t)(`resources.perHour`)),1)):(R(),f(`span`,ki,`-`))]),_:2},1024),C(s(Gr),{class:`text-center text-sm`},{default:I(()=>[i(n).consumption>0?(R(),f(`span`,Ai,` -`+M(o(i(n).consumption)),1)):(R(),f(`span`,ji,`-`))]),_:2},1024),C(s(Gr),{class:`text-center text-sm`},{default:I(()=>[l(`span`,Mi,`+`+M(i(n).points),1)]),_:2},1024)]),_:2},1032,[`class`]))),128))]),_:1})]),_:1})]),l(`div`,Ni,[C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm`},{default:I(()=>[w(M(s(t)(`buildings.totalCost`)),1)]),_:1})]),_:1}),C(s(q),{class:`space-y-2`},{default:I(()=>[l(`div`,Pi,[l(`span`,Fi,M(s(t)(`resources.metal`))+`:`,1),l(`span`,Ii,M(o(a.value.metal)),1)]),l(`div`,Li,[l(`span`,Ri,M(s(t)(`resources.crystal`))+`:`,1),l(`span`,zi,M(o(a.value.crystal)),1)]),l(`div`,Bi,[l(`span`,Vi,M(s(t)(`resources.deuterium`))+`:`,1),l(`span`,Hi,M(o(a.value.deuterium)),1)])]),_:1})]),_:1}),C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm`},{default:I(()=>[w(M(s(t)(`buildings.totalPoints`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,Ui,M(o(a.value.points)),1),l(`p`,Wi,M(s(t)(`buildings.levelRange`))+`: `+M(Math.max(0,e.currentLevel-10))+` - `+M(Math.min(e.currentLevel+10,e.currentLevel+10)),1)]),_:1})]),_:1})])]))}}),Ki={class:`space-y-4`},qi={class:`border rounded-lg overflow-hidden`},Ji={key:1},Yi={class:`text-primary font-medium`},Xi={class:`grid grid-cols-2 gap-4`},Zi={class:`flex items-center justify-between text-sm`},Qi={class:`text-muted-foreground`},$i={class:`font-medium`},ea={class:`flex items-center justify-between text-sm`},ta={class:`text-muted-foreground`},na={class:`font-medium`},ra={class:`flex items-center justify-between text-sm`},ia={class:`text-muted-foreground`},aa={class:`font-medium`},oa={class:`text-3xl font-bold text-primary`},sa={class:`text-xs text-muted-foreground mt-1`},ca=T({__name:`TechnologyDetailView`,props:{technologyType:{},currentLevel:{}},setup(e){let{t}=vt(),n=e,r=S(()=>{let e=Math.max(0,n.currentLevel-10),t=n.currentLevel+10,r=[];for(let n=e;n<=t;n++)r.push(n);return r}),i=e=>e===0?{cost:{metal:0,crystal:0,deuterium:0},researchTime:0,points:0}:{cost:ri(n.technologyType,e),researchTime:ii(n.technologyType,e-1),points:fi(n.technologyType,e-1,e)},a=S(()=>{let e=0,t=0,n=0,a=0;for(let o of r.value){if(o===0)continue;let r=i(o);e+=r.cost.metal,t+=r.cost.crystal,n+=r.cost.deuterium,a+=r.points}return{metal:e,crystal:t,deuterium:n,points:a}}),o=e=>e.toLocaleString(),c=e=>{if(e<60)return`${e}${t(`common.timeSecond`)}`;let n=Math.floor(e/60),r=e%60;if(n<60)return`${n}${t(`common.timeMinute`)}${r}${t(`common.timeSecond`)}`;let i=Math.floor(n/60),a=n%60;return`${i}${t(`common.timeHour`)}${a}${t(`common.timeMinute`)}`};return(n,d)=>(R(),f(`div`,Ki,[l(`div`,qi,[C(s(Ur),null,{default:I(()=>[C(s(Jr),null,{default:I(()=>[C(s(Kr),null,{default:I(()=>[C(s(qr),{class:`w-20 text-center`},{default:I(()=>[w(M(s(t)(`research.levelRange`)),1)]),_:1}),C(s(qr),{class:`text-center`},{default:I(()=>[w(M(s(t)(`resources.metal`)),1)]),_:1}),C(s(qr),{class:`text-center`},{default:I(()=>[w(M(s(t)(`resources.crystal`)),1)]),_:1}),C(s(qr),{class:`text-center`},{default:I(()=>[w(M(s(t)(`resources.deuterium`)),1)]),_:1}),C(s(qr),{class:`text-center`},{default:I(()=>[w(M(s(t)(`research.researchTime`)),1)]),_:1}),C(s(qr),{class:`text-center`},{default:I(()=>[w(M(s(t)(`player.points`)),1)]),_:1})]),_:1})]),_:1}),C(s(Wr),null,{default:I(()=>[(R(!0),f(u,null,N(r.value,t=>(R(),p(s(Kr),{key:t,class:_({"bg-muted/50":t===e.currentLevel})},{default:I(()=>[C(s(Gr),{class:`text-center font-medium`},{default:I(()=>[t===e.currentLevel?(R(),p(s(Kn),{key:0,variant:`default`},{default:I(()=>[w(M(t),1)]),_:2},1024)):(R(),f(`span`,Ji,M(t),1))]),_:2},1024),C(s(Gr),{class:`text-center text-sm`},{default:I(()=>[w(M(o(i(t).cost.metal)),1)]),_:2},1024),C(s(Gr),{class:`text-center text-sm`},{default:I(()=>[w(M(o(i(t).cost.crystal)),1)]),_:2},1024),C(s(Gr),{class:`text-center text-sm`},{default:I(()=>[w(M(o(i(t).cost.deuterium)),1)]),_:2},1024),C(s(Gr),{class:`text-center text-sm`},{default:I(()=>[w(M(c(i(t).researchTime)),1)]),_:2},1024),C(s(Gr),{class:`text-center text-sm`},{default:I(()=>[l(`span`,Yi,`+`+M(i(t).points),1)]),_:2},1024)]),_:2},1032,[`class`]))),128))]),_:1})]),_:1})]),l(`div`,Xi,[C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm`},{default:I(()=>[w(M(s(t)(`research.totalCost`)),1)]),_:1})]),_:1}),C(s(q),{class:`space-y-2`},{default:I(()=>[l(`div`,Zi,[l(`span`,Qi,M(s(t)(`resources.metal`))+`:`,1),l(`span`,$i,M(o(a.value.metal)),1)]),l(`div`,ea,[l(`span`,ta,M(s(t)(`resources.crystal`))+`:`,1),l(`span`,na,M(o(a.value.crystal)),1)]),l(`div`,ra,[l(`span`,ia,M(s(t)(`resources.deuterium`))+`:`,1),l(`span`,aa,M(o(a.value.deuterium)),1)])]),_:1})]),_:1}),C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm`},{default:I(()=>[w(M(s(t)(`research.totalPoints`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,oa,M(o(a.value.points)),1),l(`p`,sa,M(s(t)(`research.levelRange`))+`: `+M(Math.max(0,e.currentLevel-10))+` - `+M(Math.min(e.currentLevel+10,e.currentLevel+10)),1)]),_:1})]),_:1})])]))}}),la=T({__name:`Input`,props:{defaultValue:{},modelValue:{},class:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=se(n,`modelValue`,t,{passive:!0,defaultValue:n.defaultValue});return(e,t)=>P((R(),f(`input`,{"onUpdate:modelValue":t[0]||=e=>le(r)?r.value=e:null,"data-slot":`input`,class:_(s(W)(`file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,n.class))},null,2)),[[te,s(r)]])}}),ua=T({__name:`Label`,props:{for:{},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(R(),p(s(E),oe({"data-slot":`label`},s(n),{class:s(W)(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,t.class)}),{default:I(()=>[z(e.$slots,`default`)]),_:3},16,[`class`]))}}),da={class:`space-y-4`},fa={class:`grid grid-cols-2 md:grid-cols-3 gap-4`},pa={class:`text-2xl font-bold`},ma={class:`text-2xl font-bold`},ha={class:`text-2xl font-bold`},ga={class:`text-2xl font-bold`},_a={class:`text-2xl font-bold`},va={class:`text-2xl font-bold`},ya={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},ba={key:0,class:`flex items-center justify-between text-sm`},xa={class:`text-muted-foreground`},Sa={class:`font-medium`},Ca={key:1,class:`flex items-center justify-between text-sm`},wa={class:`text-muted-foreground`},Ta={class:`font-medium`},Ea={key:2,class:`flex items-center justify-between text-sm`},Da={class:`text-muted-foreground`},Oa={class:`font-medium`},ka={class:`flex items-center justify-between text-sm pt-2 border-t`},Aa={class:`text-muted-foreground`},ja={class:`font-bold text-primary`},Ma={class:`text-3xl font-bold`},Na={class:`text-xs text-muted-foreground mt-2`},Pa={class:`flex items-center gap-4`},Fa={class:`grid grid-cols-2 gap-4 pt-4 border-t`},Ia={class:`space-y-2`},La={class:`text-sm text-muted-foreground`},Ra={class:`space-y-1 text-sm`},za={class:`flex justify-between`},Ba={class:`font-medium`},Va={class:`flex justify-between`},Ha={class:`font-medium`},Ua={class:`flex justify-between`},Wa={class:`font-medium`},Ga={class:`space-y-2`},Ka={class:`text-sm text-muted-foreground`},qa={class:`text-xl font-bold`},Ja={class:`text-xs text-muted-foreground`},Ya=T({__name:`ShipDetailView`,props:{shipType:{}},setup(e){let{t}=vt(),n=e,r=S(()=>$r[n.shipType]),i=ee(1),a=S(()=>pi(n.shipType,1)),o=S(()=>({metal:r.value.cost.metal*i.value,crystal:r.value.cost.crystal*i.value,deuterium:r.value.cost.deuterium*i.value})),c=S(()=>pi(n.shipType,i.value)),u=e=>e.toLocaleString(),d=e=>{if(e<60)return`${e}${t(`common.timeSecond`)}`;let n=Math.floor(e/60),r=e%60;if(n<60)return`${n}${t(`common.timeMinute`)}${r}${t(`common.timeSecond`)}`;let i=Math.floor(n/60),a=n%60;return`${i}${t(`common.timeHour`)}${a}${t(`common.timeMinute`)}`};return(e,n)=>(R(),f(`div`,da,[l(`div`,fa,[C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm flex items-center gap-2`},{default:I(()=>[C(s(Mr),{class:`h-4 w-4`}),w(` `+M(s(t)(`shipyard.attack`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,pa,M(u(r.value.attack)),1)]),_:1})]),_:1}),C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm flex items-center gap-2`},{default:I(()=>[C(s(Or),{class:`h-4 w-4`}),w(` `+M(s(t)(`shipyard.shield`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,ma,M(u(r.value.shield)),1)]),_:1})]),_:1}),C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm flex items-center gap-2`},{default:I(()=>[C(s(Dr),{class:`h-4 w-4`}),w(` `+M(s(t)(`shipyard.armor`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,ha,M(u(r.value.armor)),1)]),_:1})]),_:1}),C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm flex items-center gap-2`},{default:I(()=>[C(s(Fr),{class:`h-4 w-4`}),w(` `+M(s(t)(`shipyard.speed`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,ga,M(u(r.value.speed)),1)]),_:1})]),_:1}),C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm flex items-center gap-2`},{default:I(()=>[C(s(wr),{class:`h-4 w-4`}),w(` `+M(s(t)(`shipyard.cargoCapacity`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,_a,M(u(r.value.cargoCapacity)),1)]),_:1})]),_:1}),C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm flex items-center gap-2`},{default:I(()=>[C(s(_r),{class:`h-4 w-4`}),w(` `+M(s(t)(`shipyard.fuelConsumption`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,va,M(u(r.value.fuelConsumption)),1)]),_:1})]),_:1})]),l(`div`,ya,[C(s(K),null,{default:I(()=>[C(s(J),null,{default:I(()=>[C(s(Y),{class:`text-sm`},{default:I(()=>[w(M(s(t)(`shipyard.buildCost`)),1)]),_:1})]),_:1}),C(s(q),{class:`space-y-2`},{default:I(()=>[r.value.cost.metal>0?(R(),f(`div`,ba,[l(`span`,xa,M(s(t)(`resources.metal`))+`:`,1),l(`span`,Sa,M(u(r.value.cost.metal)),1)])):L(``,!0),r.value.cost.crystal>0?(R(),f(`div`,Ca,[l(`span`,wa,M(s(t)(`resources.crystal`))+`:`,1),l(`span`,Ta,M(u(r.value.cost.crystal)),1)])):L(``,!0),r.value.cost.deuterium>0?(R(),f(`div`,Ea,[l(`span`,Da,M(s(t)(`resources.deuterium`))+`:`,1),l(`span`,Oa,M(u(r.value.cost.deuterium)),1)])):L(``,!0),l(`div`,ka,[l(`span`,Aa,M(s(t)(`player.points`))+`:`,1),l(`span`,ja,M(a.value),1)])]),_:1})]),_:1}),C(s(K),null,{default:I(()=>[C(s(J),null,{default:I(()=>[C(s(Y),{class:`text-sm`},{default:I(()=>[w(M(s(t)(`shipyard.buildTime`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,Ma,M(d(r.value.buildTime)),1),l(`p`,Na,M(s(t)(`shipyard.perUnit`)),1)]),_:1})]),_:1})]),C(s(K),null,{default:I(()=>[C(s(J),null,{default:I(()=>[C(s(Y),{class:`text-sm`},{default:I(()=>[w(M(s(t)(`shipyard.batchCalculator`)),1)]),_:1})]),_:1}),C(s(q),{class:`space-y-4`},{default:I(()=>[l(`div`,Pa,[C(s(ua),{class:`w-20`},{default:I(()=>[w(M(s(t)(`shipyard.quantity`))+`:`,1)]),_:1}),C(s(la),{modelValue:i.value,"onUpdate:modelValue":n[0]||=e=>i.value=e,modelModifiers:{number:!0},type:`number`,min:`1`,class:`flex-1`},null,8,[`modelValue`])]),l(`div`,Fa,[l(`div`,Ia,[l(`p`,La,M(s(t)(`shipyard.totalCost`))+`:`,1),l(`div`,Ra,[l(`div`,za,[l(`span`,null,M(s(t)(`resources.metal`))+`:`,1),l(`span`,Ba,M(u(o.value.metal)),1)]),l(`div`,Va,[l(`span`,null,M(s(t)(`resources.crystal`))+`:`,1),l(`span`,Ha,M(u(o.value.crystal)),1)]),l(`div`,Ua,[l(`span`,null,M(s(t)(`resources.deuterium`))+`:`,1),l(`span`,Wa,M(u(o.value.deuterium)),1)])])]),l(`div`,Ga,[l(`p`,Ka,M(s(t)(`shipyard.totalTime`))+`:`,1),l(`div`,qa,M(d(r.value.buildTime*i.value)),1),l(`p`,Ja,M(s(t)(`player.points`))+`: +`+M(u(c.value)),1)])])]),_:1})]),_:1})]))}}),Xa={class:`space-y-4`},Za={class:`grid grid-cols-2 md:grid-cols-3 gap-4`},Qa={class:`text-2xl font-bold`},$a={class:`text-2xl font-bold`},eo={class:`text-2xl font-bold`},to={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},no={key:0,class:`flex items-center justify-between text-sm`},ro={class:`text-muted-foreground`},io={class:`font-medium`},ao={key:1,class:`flex items-center justify-between text-sm`},oo={class:`text-muted-foreground`},so={class:`font-medium`},co={key:2,class:`flex items-center justify-between text-sm`},lo={class:`text-muted-foreground`},uo={class:`font-medium`},fo={class:`flex items-center justify-between text-sm pt-2 border-t`},po={class:`text-muted-foreground`},mo={class:`font-bold text-primary`},ho={class:`text-3xl font-bold`},go={class:`text-xs text-muted-foreground mt-2`},_o={class:`flex items-center gap-4`},vo={class:`grid grid-cols-2 gap-4 pt-4 border-t`},yo={class:`space-y-2`},bo={class:`text-sm text-muted-foreground`},xo={class:`space-y-1 text-sm`},So={class:`flex justify-between`},Co={class:`font-medium`},wo={class:`flex justify-between`},To={class:`font-medium`},Eo={class:`flex justify-between`},Do={class:`font-medium`},Oo={class:`space-y-2`},ko={class:`text-sm text-muted-foreground`},Ao={class:`text-xl font-bold`},jo={class:`text-xs text-muted-foreground`},Mo=T({__name:`DefenseDetailView`,props:{defenseType:{}},setup(e){let{t}=vt(),n=e,r=S(()=>ei[n.defenseType]),i=ee(1),a=S(()=>mi(n.defenseType,1)),o=S(()=>({metal:r.value.cost.metal*i.value,crystal:r.value.cost.crystal*i.value,deuterium:r.value.cost.deuterium*i.value})),c=S(()=>mi(n.defenseType,i.value)),u=e=>e.toLocaleString(),d=e=>{if(e<60)return`${e}${t(`common.timeSecond`)}`;let n=Math.floor(e/60),r=e%60;if(n<60)return`${n}${t(`common.timeMinute`)}${r}${t(`common.timeSecond`)}`;let i=Math.floor(n/60),a=n%60;return`${i}${t(`common.timeHour`)}${a}${t(`common.timeMinute`)}`};return(e,n)=>(R(),f(`div`,Xa,[l(`div`,Za,[C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm flex items-center gap-2`},{default:I(()=>[C(s(Mr),{class:`h-4 w-4`}),w(` `+M(s(t)(`defense.attack`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,Qa,M(u(r.value.attack)),1)]),_:1})]),_:1}),C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm flex items-center gap-2`},{default:I(()=>[C(s(Or),{class:`h-4 w-4`}),w(` `+M(s(t)(`defense.shield`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,$a,M(u(r.value.shield)),1)]),_:1})]),_:1}),C(s(K),null,{default:I(()=>[C(s(J),{class:`pb-3`},{default:I(()=>[C(s(Y),{class:`text-sm flex items-center gap-2`},{default:I(()=>[C(s(Dr),{class:`h-4 w-4`}),w(` `+M(s(t)(`defense.armor`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,eo,M(u(r.value.armor)),1)]),_:1})]),_:1})]),l(`div`,to,[C(s(K),null,{default:I(()=>[C(s(J),null,{default:I(()=>[C(s(Y),{class:`text-sm`},{default:I(()=>[w(M(s(t)(`defense.buildCost`)),1)]),_:1})]),_:1}),C(s(q),{class:`space-y-2`},{default:I(()=>[r.value.cost.metal>0?(R(),f(`div`,no,[l(`span`,ro,M(s(t)(`resources.metal`))+`:`,1),l(`span`,io,M(u(r.value.cost.metal)),1)])):L(``,!0),r.value.cost.crystal>0?(R(),f(`div`,ao,[l(`span`,oo,M(s(t)(`resources.crystal`))+`:`,1),l(`span`,so,M(u(r.value.cost.crystal)),1)])):L(``,!0),r.value.cost.deuterium>0?(R(),f(`div`,co,[l(`span`,lo,M(s(t)(`resources.deuterium`))+`:`,1),l(`span`,uo,M(u(r.value.cost.deuterium)),1)])):L(``,!0),l(`div`,fo,[l(`span`,po,M(s(t)(`player.points`))+`:`,1),l(`span`,mo,M(a.value),1)])]),_:1})]),_:1}),C(s(K),null,{default:I(()=>[C(s(J),null,{default:I(()=>[C(s(Y),{class:`text-sm`},{default:I(()=>[w(M(s(t)(`defense.buildTime`)),1)]),_:1})]),_:1}),C(s(q),null,{default:I(()=>[l(`div`,ho,M(d(r.value.buildTime)),1),l(`p`,go,M(s(t)(`defense.perUnit`)),1)]),_:1})]),_:1})]),C(s(K),null,{default:I(()=>[C(s(J),null,{default:I(()=>[C(s(Y),{class:`text-sm`},{default:I(()=>[w(M(s(t)(`defense.batchCalculator`)),1)]),_:1})]),_:1}),C(s(q),{class:`space-y-4`},{default:I(()=>[l(`div`,_o,[C(s(ua),{class:`w-20`},{default:I(()=>[w(M(s(t)(`defense.quantity`))+`:`,1)]),_:1}),C(s(la),{modelValue:i.value,"onUpdate:modelValue":n[0]||=e=>i.value=e,modelModifiers:{number:!0},type:`number`,min:`1`,class:`flex-1`},null,8,[`modelValue`])]),l(`div`,vo,[l(`div`,yo,[l(`p`,bo,M(s(t)(`defense.totalCost`))+`:`,1),l(`div`,xo,[l(`div`,So,[l(`span`,null,M(s(t)(`resources.metal`))+`:`,1),l(`span`,Co,M(u(o.value.metal)),1)]),l(`div`,wo,[l(`span`,null,M(s(t)(`resources.crystal`))+`:`,1),l(`span`,To,M(u(o.value.crystal)),1)]),l(`div`,Eo,[l(`span`,null,M(s(t)(`resources.deuterium`))+`:`,1),l(`span`,Do,M(u(o.value.deuterium)),1)])])]),l(`div`,Oo,[l(`p`,ko,M(s(t)(`defense.totalTime`))+`:`,1),l(`div`,Ao,M(d(r.value.buildTime*i.value)),1),l(`p`,jo,M(s(t)(`player.points`))+`: +`+M(u(c.value)),1)])])]),_:1})]),_:1})]))}}),No={class:`overflow-y-auto px-6 pb-6`},Po={class:`overflow-y-auto px-6 pb-6`},Fo={class:`overflow-y-auto px-6 pb-6`},Io={class:`overflow-y-auto px-6 pb-6`},Lo=T({__name:`DetailDialog`,setup(e){let{t}=vt(),n=Vr(),r=e=>{e||n.close()};return(e,i)=>(R(),p(s(ar),{open:s(n).isOpen,"onUpdate:open":r},{default:I(()=>[C(s(Lr),{class:`max-w-[calc(100%-1rem)] sm:max-w-[90vw] md:max-w-3xl lg:max-w-4xl max-h-[90vh] flex flex-col p-0`},{default:I(()=>[s(n).type===`building`&&s(n).itemType?(R(),f(u,{key:0},[C(s(zr),{class:`px-6 pt-6 pb-4 shrink-0`},{default:I(()=>[C(s(Br),{class:`flex items-center gap-2`},{default:I(()=>[w(M(s(t)(`buildings.${s(n).itemType}`))+` `,1),C(s(Kn),{variant:`outline`},{default:I(()=>[w(M(s(t)(`common.currentLevel`))+` `+M(s(n).currentLevel||0),1)]),_:1})]),_:1}),C(s(Rr),null,{default:I(()=>[w(M(s(t)(`buildingDescriptions.${s(n).itemType}`)),1)]),_:1})]),_:1}),l(`div`,No,[C(Gi,{buildingType:s(n).itemType,currentLevel:s(n).currentLevel||0},null,8,[`buildingType`,`currentLevel`])])],64)):s(n).type===`technology`&&s(n).itemType?(R(),f(u,{key:1},[C(s(zr),{class:`px-6 pt-6 pb-4 shrink-0`},{default:I(()=>[C(s(Br),{class:`flex items-center gap-2`},{default:I(()=>[w(M(s(t)(`technologies.${s(n).itemType}`))+` `,1),C(s(Kn),{variant:`outline`},{default:I(()=>[w(M(s(t)(`common.currentLevel`))+` `+M(s(n).currentLevel||0),1)]),_:1})]),_:1}),C(s(Rr),null,{default:I(()=>[w(M(s(t)(`technologyDescriptions.${s(n).itemType}`)),1)]),_:1})]),_:1}),l(`div`,Po,[C(ca,{technologyType:s(n).itemType,currentLevel:s(n).currentLevel||0},null,8,[`technologyType`,`currentLevel`])])],64)):s(n).type===`ship`&&s(n).itemType?(R(),f(u,{key:2},[C(s(zr),{class:`px-6 pt-6 pb-4 shrink-0`},{default:I(()=>[C(s(Br),null,{default:I(()=>[w(M(s(t)(`ships.${s(n).itemType}`)),1)]),_:1}),C(s(Rr),null,{default:I(()=>[w(M(s(t)(`shipDescriptions.${s(n).itemType}`)),1)]),_:1})]),_:1}),l(`div`,Fo,[C(Ya,{shipType:s(n).itemType},null,8,[`shipType`])])],64)):s(n).type===`defense`&&s(n).itemType?(R(),f(u,{key:3},[C(s(zr),{class:`px-6 pt-6 pb-4 shrink-0`},{default:I(()=>[C(s(Br),null,{default:I(()=>[w(M(s(t)(`defenses.${s(n).itemType}`)),1)]),_:1}),C(s(Rr),null,{default:I(()=>[w(M(s(t)(`defenseDescriptions.${s(n).itemType}`)),1)]),_:1})]),_:1}),l(`div`,Io,[C(Mo,{defenseType:s(n).itemType},null,8,[`defenseType`])])],64)):L(``,!0)]),_:1})]),_:1},8,[`open`]))}});const Ro=(e,t=2)=>e>=1e9?(e/1e9).toFixed(t)+`B`:e>=1e6?(e/1e6).toFixed(t)+`M`:e>=1e3?(e/1e3).toFixed(t)+`K`:Math.floor(e).toString(),zo=(e,t)=>{let n=e/t;return n>=1?`text-red-600 dark:text-red-400`:n>=.7?`text-yellow-600 dark:text-yellow-400`:``},Bo=e=>{let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%60);return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}:${r.toString().padStart(2,`0`)}`},Vo=e=>new Date(e).toLocaleString(`zh-CN`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}),Ho=(e,t)=>eti[e].cost,Wo=(e,t)=>e.active&&(!e.expiresAt||e.expiresAt>t),Go=(e,t)=>{let n=Date.now();return{type:e,active:!0,hiredAt:n,expiresAt:n+t*24*60*60*1e3}},Ko=e=>({type:e,active:!1}),qo=(e,t,n)=>{let r=e.expiresAt&&e.expiresAt>n?e.expiresAt:n;return{...e,active:!0,expiresAt:r+t*24*60*60*1e3}},Jo=(e,t)=>{let n={buildingSpeedBonus:0,researchSpeedBonus:0,resourceProductionBonus:0,darkMatterProductionBonus:0,energyProductionBonus:0,fleetSpeedBonus:0,fuelConsumptionReduction:0,defenseBonus:0,additionalBuildQueue:0,additionalFleetSlots:0,storageCapacityBonus:0};return Object.values(e).forEach(e=>{if(Wo(e,t)){let t=ti[e.type];Object.entries(t.benefits).forEach(([e,t])=>{t!==void 0&&(n[e]+=t)})}}),n},Yo=(e,t)=>{Object.values(e).forEach(e=>{e.active&&e.expiresAt&&e.expiresAt<=t&&(e.active=!1)})},Xo=(e,t)=>{let n=e.buildings[X.SolarPlant]||0,r=1+(t.energyProductionBonus||0)/100;return n*50*1.1**n*r},Zo=e=>{let t=e.buildings[X.MetalMine]||0,n=e.buildings[X.CrystalMine]||0,r=e.buildings[X.DeuteriumSynthesizer]||0,i=t*10*1.1**t,a=n*10*1.1**n,o=r*15*1.1**r;return i+a+o},Qo=(e,t)=>{let n=e.buildings[X.MetalMine]||0,r=e.buildings[X.CrystalMine]||0,i=e.buildings[X.DeuteriumSynthesizer]||0,a=e.buildings[X.DarkMatterCollector]||0,o=1+(t.resourceProductionBonus||0)/100,s=1+(t.darkMatterProductionBonus||0)/100,c=Xo(e,{energyProductionBonus:t.energyProductionBonus}),l=Zo(e),u=c-l,d=u>=0?1:Math.max(0,c/l);return{metal:n*150*1.1**n*o*d,crystal:r*100*1.1**r*o*d,deuterium:i*50*1.1**i*o*d,darkMatter:a*2.5*1.1**a*s,energy:u}},$o=(e,t)=>{let n=e.buildings[X.MetalStorage]||0,r=e.buildings[X.CrystalStorage]||0,i=e.buildings[X.DeuteriumTank]||0,a=e.buildings[X.DarkMatterCollector]||0,o=1+(t||0)/100,s=1e4;return{metal:s*2**n*o,crystal:s*2**r*o,deuterium:s*2**i*o,darkMatter:1e3+a*100,energy:0}},es=(e,t,n)=>{let r=(t-e.lastUpdate)/1e3,i=Qo(e,{resourceProductionBonus:n.resourceProductionBonus,darkMatterProductionBonus:n.darkMatterProductionBonus,energyProductionBonus:n.energyProductionBonus});e.resources.metal+=i.metal*r/3600,e.resources.crystal+=i.crystal*r/3600,e.resources.deuterium+=i.deuterium*r/3600,e.resources.darkMatter+=i.darkMatter*r/3600;let a=$o(e,n.storageCapacityBonus);e.resources.metal=Math.min(e.resources.metal,a.metal),e.resources.crystal=Math.min(e.resources.crystal,a.crystal),e.resources.deuterium=Math.min(e.resources.deuterium,a.deuterium),e.resources.darkMatter=Math.min(e.resources.darkMatter,a.darkMatter),e.lastUpdate=t},ts=(e,t)=>e.metal>=t.metal&&e.crystal>=t.crystal&&e.deuterium>=t.deuterium&&e.darkMatter>=t.darkMatter,ns=(e,t)=>{e.metal-=t.metal,e.crystal-=t.crystal,e.deuterium-=t.deuterium,e.darkMatter-=t.darkMatter},rs=(e,t)=>{e.metal+=t.metal,e.crystal+=t.crystal,e.deuterium+=t.deuterium,e.darkMatter+=t.darkMatter},is=(e,t=`Commander`)=>{let n={id:e,name:t,planets:[],technologies:{},officers:{},researchQueue:[],fleetMissions:[],battleReports:[],spyReports:[],points:0};return Object.values(Z).forEach(e=>{n.technologies[e]=0}),Object.values(Xr).forEach(e=>{n.officers[e]=Ko(e)}),n},as=e=>e.length===0,os=(e,t)=>{e.forEach(e=>{e.lastUpdate=t})},ss=(e,t,n=10)=>{let r=[];for(let e=1;e<=n;e++)r.push({position:e,planet:null});return r},cs=()=>({galaxy:Math.floor(Math.random()*9)+1,system:Math.floor(Math.random()*10)+1,position:Math.floor(Math.random()*10)+1}),ls=(e,t,n)=>`${e}:${t}:${n}`,us=(e,t)=>{let n=Jo(e.officers,t),r=(t,n,r,i,a)=>{ui(e,t)};return e.planets.forEach(e=>{es(e,t,n),xi(e,t,r)}),{updatedResearchQueue:si(e.researchQueue,e.technologies,t,r)}},ds=(e,t)=>{Yo(e,t)},fs=(e,t=`Home Planet`)=>{let n={id:`planet1`,name:t,ownerId:e,position:{galaxy:1,system:1,position:1},resources:{metal:500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildings:{},fleet:{[$.LightFighter]:0,[$.HeavyFighter]:0,[$.Cruiser]:0,[$.Battleship]:0,[$.SmallCargo]:0,[$.LargeCargo]:0,[$.ColonyShip]:0,[$.Recycler]:0,[$.EspionageProbe]:0,[$.DarkMatterHarvester]:0},defense:{[Q.RocketLauncher]:0,[Q.LightLaser]:0,[Q.HeavyLaser]:0,[Q.GaussCannon]:0,[Q.IonCannon]:0,[Q.PlasmaTurret]:0,[Q.SmallShieldDome]:0,[Q.LargeShieldDome]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:200,isMoon:!1};return Object.values(X).forEach(e=>{n.buildings[e]=0}),n},ps=(e,t,n=`Planet`)=>{let r={id:`npc_planet_${e}`,name:`${n} ${t.galaxy}:${t.system}:${t.position}`,ownerId:`npc_${e}`,position:t,resources:{metal:Math.floor(Math.random()*1e4)+5e3,crystal:Math.floor(Math.random()*5e3)+2e3,deuterium:Math.floor(Math.random()*2e3)+500,darkMatter:Math.floor(Math.random()*100),energy:0},buildings:{},fleet:{[$.LightFighter]:Math.floor(Math.random()*50),[$.HeavyFighter]:Math.floor(Math.random()*20),[$.Cruiser]:Math.floor(Math.random()*10),[$.Battleship]:Math.floor(Math.random()*5),[$.SmallCargo]:Math.floor(Math.random()*10),[$.LargeCargo]:Math.floor(Math.random()*5),[$.ColonyShip]:0,[$.Recycler]:0,[$.EspionageProbe]:0,[$.DarkMatterHarvester]:0},defense:{[Q.RocketLauncher]:Math.floor(Math.random()*100),[Q.LightLaser]:Math.floor(Math.random()*50),[Q.HeavyLaser]:Math.floor(Math.random()*20),[Q.GaussCannon]:Math.floor(Math.random()*10),[Q.IonCannon]:Math.floor(Math.random()*10),[Q.PlasmaTurret]:Math.floor(Math.random()*5),[Q.SmallShieldDome]:Math.random()>.5?1:0,[Q.LargeShieldDome]:Math.random()>.8?1:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:200,isMoon:!1};return Object.values(X).forEach(e=>{r.buildings[e]=Math.floor(Math.random()*10)}),r},ms=e=>{let t=e.metal+e.crystal;if(t{if(!e||!n)return!0;for(let[r,i]of Object.entries(n))if(Object.values(X).includes(r)){if((e.buildings[r]||0)Qo(e,Jo(t,Date.now())),_s=(e,t)=>$o(e,Jo(t,Date.now()).storageCapacityBonus),vs=(e,t=0)=>{let n=e.buildings[X.NaniteFactory]||0;return Math.min(1+n+t,10)},ys=e=>{let t=e[Z.ComputerTechnology]||0;return Math.min(1+t,10)},bs=(e=0)=>Math.min(1+e,10),xs=(e,t,n,r)=>{let i=hi(t,(e.buildings[t]||0)+1),a=Zr[t];if(a.planetOnly&&e.isMoon)return{valid:!1,reason:`errors.planetOnly`};if(a.moonOnly&&!e.isMoon)return{valid:!1,reason:`errors.moonOnly`};let o=vs(e,Jo(r,Date.now()).additionalBuildQueue);return e.buildQueue.length>=o?{valid:!1,reason:`errors.buildQueueFull`}:yi(e,t)?ts(e.resources,i)?vi(t,e,n)?{valid:!0}:{valid:!1,reason:`errors.requirementsNotMet`}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.insufficientSpace`}},Ss=(e,t,n)=>{let r=(e.buildings[t]||0)+1,i=hi(t,r),a=gi(t,r,Jo(n,Date.now()).buildingSpeedBonus);return ns(e.resources,i),bi(t,r,a)},Cs=(e,t)=>{let n=hi(t.itemType,t.targetLevel||1);return{metal:Math.floor(n.metal*.5),crystal:Math.floor(n.crystal*.5),deuterium:Math.floor(n.deuterium*.5),darkMatter:Math.floor(n.darkMatter*.5),energy:0}},ws=(e,t)=>{let n=e.findIndex(e=>e.id===t);return n===-1?{item:null,index:-1}:{item:e[n]||null,index:n}},Ts=(e,t,n)=>{if((e.buildings[t]||0)<=0)return{valid:!1,reason:`errors.buildingLevelZero`};let r=vs(e,Jo(n,Date.now()).additionalBuildQueue);return e.buildQueue.length>=r?{valid:!1,reason:`errors.buildQueueFull`}:{valid:!0}},Es=(e,t,n)=>{let r=e.buildings[t]||0,i=Ci(t,r,Jo(n,Date.now()).buildingSpeedBonus),a=Si(t,r);return e.resources.metal+=a.metal,e.resources.crystal+=a.crystal,e.resources.deuterium+=a.deuterium,e.resources.darkMatter+=a.darkMatter,wi(t,r,i)},Ds=(e,t,n,r)=>{let i=ri(t,(n[t]||0)+1),a=ys(n);return r.length>=a?{valid:!1,reason:`errors.researchQueueFull`}:ai(t,e.buildings,n)?ts(e.resources,i)?{valid:!0}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.requirementsNotMet`}},Os=(e,t,n,r)=>{let i=n+1,a=ri(t,i),o=ii(t,n,Jo(r,Date.now()).researchSpeedBonus);return ns(e.resources,a),{queueItem:oi(t,i,o)}},ks=e=>{let t=ri(e.itemType,e.targetLevel||1);return{metal:Math.floor(t.metal*.5),crystal:Math.floor(t.crystal*.5),deuterium:Math.floor(t.deuterium*.5),darkMatter:Math.floor(t.darkMatter*.5),energy:0}};var As=(e,t,n=0)=>{let r={fleet:[],defense:[],totalShields:0,totalArmor:0};return Object.entries(e).forEach(([e,t])=>{if(t>0){let i=$r[e],a={type:e,count:t,attack:i.attack,shield:i.shield*(1+n/100),armor:i.armor*(1+n/100),isShip:!0};r.fleet.push(a),r.totalShields+=a.shield*t,r.totalArmor+=a.armor*t}}),Object.entries(t).forEach(([e,t])=>{if(t>0){let i=ei[e],a={type:e,count:t,attack:i.attack,shield:i.shield*(1+n/100),armor:i.armor*(1+n/100),isShip:!1};r.defense.push(a),r.totalShields+=a.shield*t,r.totalArmor+=a.armor*t}}),r},js=e=>{let t=0;return e.fleet.forEach(e=>{t+=e.attack*e.count}),e.defense.forEach(e=>{t+=e.attack*e.count}),t},Ms=(e,t)=>{Ns(t,js(e)),Ns(e,js(t))},Ns=(e,t)=>{let n=t,r=e.totalShields;if(r>0){let t=Math.min(n,r);n-=t,e.totalShields-=t}n>0&&Ps(e,n)},Ps=(e,t)=>{let n=t,r=[...e.fleet,...e.defense];for(;n>0&&r.some(e=>e.count>0);){let t=r.filter(e=>e.count>0);if(t.length===0)break;let i=t[Math.floor(Math.random()*t.length)];if(!i)break;let a=Math.min(n/i.armor,1);Math.random(){let n=e.fleet.some(e=>e.count>0)||e.defense.some(e=>e.count>0),r=t.fleet.some(e=>e.count>0)||t.defense.some(e=>e.count>0);return!n||!r},Is=(e,t)=>{let n={fleet:{},defense:{}};return e.fleet.forEach((e,r)=>{let i=t.fleet[r],a=e.count-(i?.count||0);a>0&&(n.fleet[e.type]=a)}),e.defense.forEach((e,r)=>{let i=t.defense[r],a=e.count-(i?.count||0);a>0&&(n.defense[e.type]=a)}),n},Ls=(e,t)=>{let n={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},r=.3;return Object.entries(e).forEach(([e,t])=>{let i=$r[e];n.metal+=i.cost.metal*t*r,n.crystal+=i.cost.crystal*t*r}),Object.entries(t.fleet).forEach(([e,t])=>{let i=$r[e];n.metal+=i.cost.metal*t*r,n.crystal+=i.cost.crystal*t*r}),n},Rs=(e,t,n)=>{let r=0;Object.entries(t).forEach(([e,t])=>{let n=$r[e];r+=n.cargoCapacity*t});let i=Math.min(r,n),a=.5;return{metal:Math.min(e.metal*a,i*.5),crystal:Math.min(e.crystal*a,i*.3),deuterium:Math.min(e.deuterium*a,i*.2),darkMatter:0,energy:0}};const zs=(e,t,n,r,i,a)=>{let o=Jo(i,Date.now()),s=Jo(a,Date.now()),c=As(e,{},o.defenseBonus),l=As(t,n,s.defenseBonus),u=JSON.parse(JSON.stringify(c)),d=JSON.parse(JSON.stringify(l)),f=0;for(;f<6&&!Fs(u,d);)Ms(u,d),f++;let p=Is(c,u).fleet,m=Is(l,d),h=`draw`,g=u.fleet.some(e=>e.count>0),_=d.fleet.some(e=>e.count>0)||d.defense.some(e=>e.count>0);g&&!_?h=`attacker`:!g&&_&&(h=`defender`);let v=Ls(p,m),y=h===`attacker`?Rs(r,e,1e4):{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0};return{id:`battle_${Date.now()}`,timestamp:Date.now(),attackerId:``,defenderId:``,attackerPlanetId:``,defenderPlanetId:``,attackerFleet:e,defenderFleet:t,defenderDefense:n,attackerLosses:p,defenderLosses:m,winner:h,plunder:y,debrisField:v}},Bs=(e,t)=>{let n={...t};return Object.keys(e).forEach(r=>{let i=e[r]||0,a=t[r]||0,o=i-a;o>0&&(n[r]=a+Math.floor(o*.7))}),n},Vs=e=>{let t=e.metal+e.crystal;if(t{let i=Vs(e);if(i===0||Math.random()*100>=i)return null;let a={id:`moon_${Date.now()}`,name:`Moon [${t.galaxy}:${t.system}:${t.position}]`,ownerId:r,position:t,resources:{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},buildings:{},fleet:{[$.LightFighter]:0,[$.HeavyFighter]:0,[$.Cruiser]:0,[$.Battleship]:0,[$.SmallCargo]:0,[$.LargeCargo]:0,[$.ColonyShip]:0,[$.Recycler]:0,[$.EspionageProbe]:0,[$.DarkMatterHarvester]:0},defense:{[Q.RocketLauncher]:0,[Q.LightLaser]:0,[Q.HeavyLaser]:0,[Q.GaussCannon]:0,[Q.IonCannon]:0,[Q.PlasmaTurret]:0,[Q.SmallShieldDome]:0,[Q.LargeShieldDome]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:ni.baseSize,isMoon:!0,parentPlanetId:n};return Object.values(X).forEach(e=>{a.buildings[e]=0}),a},Us=(e,t,n)=>{if(e.find(e=>e.position.galaxy===t.galaxy&&e.position.system===t.system&&e.position.position===t.position&&e.isMoon))return{canCreate:!1,reason:`errors.moonExists`};let r=ms(n);return r===0?{canCreate:!1,reason:`errors.insufficientDebris`,chance:r}:{canCreate:!0,chance:r}},Ws=e=>Math.random()*100<=e,Gs=(e,t)=>Math.sqrt((t.galaxy-e.galaxy)**2+(t.system-e.system)**2+(t.position-e.position)**2),Ks=(e,t)=>Math.max(10,Math.floor(e*1e4/t)),qs=(e,t,n,r,i,a,o)=>{let s=Date.now();return{id:`mission_${s}`,playerId:e,originPlanetId:t,targetPosition:n,missionType:r,fleet:i,cargo:a,departureTime:s,arrivalTime:s+o*1e3,returnTime:s+o*2*1e3,status:`outbound`}},Js=(e,t)=>{t&&(t.resources.metal+=e.cargo.metal,t.resources.crystal+=e.cargo.crystal,t.resources.deuterium+=e.cargo.deuterium,t.resources.darkMatter+=e.cargo.darkMatter),e.status=`returning`,e.cargo={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0}},Ys=(e,t,n,r,i)=>{if(!t||t.ownerId===n.id)return e.status=`returning`,null;let a=zs(e.fleet,t.fleet,t.defense,t.resources,n.officers,r?.officers||{});a.id=`battle_${Date.now()}`,a.attackerId=n.id,a.defenderId=t.ownerId||`unknown`,a.attackerPlanetId=e.originPlanetId,a.defenderPlanetId=t.id,e.cargo=a.plunder;let o={};Object.entries(e.fleet).forEach(([e,t])=>{let n=t-(a.attackerLosses[e]||0);n>0&&(o[e]=n)}),e.fleet=o,Object.entries(a.defenderLosses.fleet).forEach(([e,n])=>{t.fleet[e]=Math.max(0,t.fleet[e]-n)}),Object.entries(a.defenderLosses.defense).forEach(([e,n])=>{t.defense[e]=Math.max(0,t.defense[e]-n)});let s={...t.defense};Object.entries(a.defenderLosses.defense).forEach(([e,t])=>{s[e]=(s[e]||0)+t}),t.defense=Bs(s,t.defense),t.resources.metal-=a.plunder.metal,t.resources.crystal-=a.plunder.crystal,t.resources.deuterium-=a.plunder.deuterium,e.status=`returning`;let c=null,l=Us(i,t.position,a.debrisField);return l.canCreate&&l.chance&&Ws(l.chance)&&(c=Hs(a.debrisField,t.position,t.id,t.ownerId||`unknown`)),{battleResult:a,moon:c}},Xs=(e,t,n,r=`Colony`)=>{if(t)return e.status=`returning`,null;let i={id:`planet_${Date.now()}`,name:`${r} ${e.targetPosition.galaxy}:${e.targetPosition.system}:${e.targetPosition.position}`,ownerId:n,position:e.targetPosition,resources:{metal:500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildings:{},fleet:{[$.LightFighter]:0,[$.HeavyFighter]:0,[$.Cruiser]:0,[$.Battleship]:0,[$.SmallCargo]:0,[$.LargeCargo]:0,[$.ColonyShip]:0,[$.Recycler]:0,[$.EspionageProbe]:0,[$.DarkMatterHarvester]:0},defense:{[Q.RocketLauncher]:0,[Q.LightLaser]:0,[Q.HeavyLaser]:0,[Q.GaussCannon]:0,[Q.IonCannon]:0,[Q.PlasmaTurret]:0,[Q.SmallShieldDome]:0,[Q.LargeShieldDome]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:200,isMoon:!1};return Object.values(X).forEach(e=>{i.buildings[e]=0}),e.fleet[$.ColonyShip]=(e.fleet[$.ColonyShip]||1)-1,e.status=`returning`,i},Zs=(e,t,n)=>{if(!t)return e.status=`returning`,null;let r={id:`spy_${Date.now()}`,timestamp:Date.now(),spyId:n,targetPlanetId:t.id,targetPlayerId:t.ownerId||`unknown`,resources:{...t.resources},fleet:{...t.fleet},defense:{...t.defense},buildings:{...t.buildings},technologies:{},detectionChance:.3};return e.status=`returning`,r},Qs=(e,t,n)=>{if(!t||t.ownerId!==n)return e.status=`returning`,!1;for(let[n,r]of Object.entries(e.fleet))t.fleet[n]+=r;return!0},$s=(e,t)=>{if(e.status!==`outbound`)return!1;let n=t-e.departureTime;return t{let n=$r[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t,energy:0}},tc=(e,t)=>{let n=ei[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t,energy:0}},nc=(e,t,n=0)=>{let r=$r[e].buildTime*t,i=1-n/100;return Math.floor(r*i)},rc=(e,t,n=0)=>{let r=ei[e].buildTime*t,i=1-n/100;return Math.floor(r*i)},ic=(e,t,n)=>{let r=$r[e];if(!r.requirements)return!0;for(let[e,i]of Object.entries(r.requirements))if(Object.values(X).includes(e)){if((t[e]||0){let r=ei[e];if(!r.requirements)return!0;for(let[e,i]of Object.entries(r.requirements))if(Object.values(X).includes(e)){if((t[e]||0)!((e===Q.SmallShieldDome||e===Q.LargeShieldDome)&&((t[e]||0)>0||n>1)),sc=(e,t,n)=>{let r=Date.now();return{id:`ship_${r}`,type:`ship`,itemType:e,quantity:t,startTime:r,endTime:r+n*1e3}},cc=(e,t,n)=>{let r=Date.now();return{id:`defense_${r}`,type:`defense`,itemType:e,quantity:t,startTime:r,endTime:r+n*1e3}},lc=(e,t)=>{for(let[n,r]of Object.entries(t))if((e[n]||0){let r=0;for(let[t,n]of Object.entries(e)){let e=$r[t];r+=e.fuelConsumption*n}let i=0;if(n){let e=n.metal+n.crystal+n.deuterium+n.darkMatter;i=Math.floor(e/1e3)}let a=1-t/100;return Math.floor(r*a)+i},dc=(e,t=0)=>{let n=1/0;for(let[t,r]of Object.entries(e))if(r>0){let e=$r[t];n=Math.min(n,e.speed)}let r=1+t/100;return Math.floor(n*r)},fc=(e,t)=>{for(let[n,r]of Object.entries(t))e[n]-=r},pc=(e,t)=>{for(let[n,r]of Object.entries(t))r>0&&(e[n]+=r)};var mc={class:`flex h-screen bg-background overflow-hidden`},hc={class:`p-4 border-b flex items-center justify-center`},gc={key:0,class:`text-xl font-bold flex items-center gap-2`},_c={key:1,class:`text-2xl`},vc={key:0,class:`p-4 border-b`},yc={class:`text-sm space-y-2`},bc={class:`font-semibold mb-1`},xc={class:`text-muted-foreground text-xs`},Sc={class:`bg-muted/50 rounded-lg p-2`},Cc={class:`flex items-center justify-between`},wc={class:`text-xs text-muted-foreground`},Tc={class:`text-sm font-bold text-primary`},Ec={key:0,class:`flex gap-1`},Dc={class:`flex-1 p-2 space-y-1 overflow-y-auto`},Oc={key:0},kc={class:`p-2 border-t`},Ac={key:0,class:`ml-2`},jc={class:`space-y-1`},Mc={class:`p-2 border-t`},Nc={key:2,class:`ml-2`},Pc={class:`p-2 border-t`},Fc={key:2,class:`ml-2`},Ic={class:`flex-1 flex flex-col overflow-hidden`},Lc={key:0,class:`bg-card border-b px-4 sm:px-6 py-4.5 shadow-md`},Rc={class:`flex items-center justify-between gap-3 sm:gap-6`},zc={class:`lg:flex-1`},Bc={class:`flex items-center gap-3 sm:gap-6 flex-1 lg:flex-none overflow-x-auto lg:justify-center`},Vc={class:`min-w-0`},Hc={class:`text-[10px] sm:text-xs text-muted-foreground truncate`},Uc={class:`text-[10px] sm:text-xs text-muted-foreground truncate`},Wc={class:`flex items-center gap-2 sm:gap-4 flex-shrink-0 lg:flex-1 lg:justify-end`},Gc={key:0,class:`flex items-center gap-1.5 sm:gap-2 text-xs sm:text-sm`},Kc={class:`text-muted-foreground hidden sm:inline`},qc={key:1,class:`flex items-center gap-1.5 sm:gap-2 text-xs sm:text-sm`},Jc={class:`text-muted-foreground hidden sm:inline`},Yc={key:1,class:`bg-card border-b px-4 sm:px-6 py-4.5`},Xc={class:`space-y-3`},Zc={class:`flex items-center justify-between text-xs sm:text-sm gap-2`},Qc={class:`flex items-center gap-1.5 sm:gap-2 min-w-0 flex-1`},$c={class:`font-medium truncate`},el={class:`text-muted-foreground hidden sm:inline flex-shrink-0 text-[10px] sm:text-xs`},tl={class:`flex items-center gap-2 sm:gap-3 flex-shrink-0`},nl={class:`text-muted-foreground text-[10px] sm:text-xs whitespace-nowrap`},rl={class:`flex items-center justify-between text-xs sm:text-sm gap-2`},il={class:`flex items-center gap-1.5 sm:gap-2 min-w-0 flex-1`},al={class:`font-medium truncate`},ol={class:`text-muted-foreground hidden sm:inline flex-shrink-0 text-[10px] sm:text-xs`},sl={class:`flex items-center gap-2 sm:gap-3 flex-shrink-0`},cl={class:`text-muted-foreground text-[10px] sm:text-xs whitespace-nowrap`},ll={class:`flex-1 overflow-y-auto`},ul={class:`animate-fade-in`},dl=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})(T({__name:`App`,setup(e){let t=at(),{isDark:n}=st(),{t:r}=vt(),i=ee(null),a=[`zh-CN`,`zh-TW`,`en`,`de`,`ru`,`ko`,`ja`],o=()=>{if(!as(t.player.planets)){let e=Date.now();os(t.player.planets,e),t.player.planets.forEach(e=>{let n=ls(e.position.galaxy,e.position.system,e.position.position);t.universePlanets[n]=e}),c();return}t.player=is(t.player.id,r(`common.playerName`));let e=fs(t.player.id,r(`planet.homePlanet`));t.player.planets=[e],t.currentPlanetId=e.id;let n=ls(e.position.galaxy,e.position.system,e.position.position);t.universePlanets[n]=e},c=()=>{for(let e=0;e<200;e++){let n=cs(),i=ls(n.galaxy,n.system,n.position);if(t.universePlanets[i])continue;let a=ps(e,n,r(`planet.planetPrefix`));t.universePlanets[i]=a}},d=()=>{if(t.isPaused)return;let e=Date.now();t.gameTime=e,ds(t.player.officers,e);let n=us(t.player,e);t.player.researchQueue=n.updatedResearchQueue,t.player.fleetMissions.forEach(t=>{t.status===`outbound`&&e>=t.arrivalTime?m(t):t.status===`returning`&&t.returnTime&&e>=t.returnTime&&h(t)})},m=e=>{let n=t.player.planets.find(t=>t.position.galaxy===e.targetPosition.galaxy&&t.position.system===e.targetPosition.system&&t.position.position===e.targetPosition.position);if(e.missionType===Yr.Transport)Js(e,n);else if(e.missionType===Yr.Attack){let r=Ys(e,n,t.player,null,t.player.planets);r&&(t.player.battleReports.push(r.battleResult),r.moon&&t.player.planets.push(r.moon))}else if(e.missionType===Yr.Colonize){let i=Xs(e,n,t.player.id,r(`planet.colonyPrefix`));i&&t.player.planets.push(i)}else if(e.missionType===Yr.Spy){let r=Zs(e,n,t.player.id);r&&t.player.spyReports.push(r)}else if(e.missionType===Yr.Deploy&&Qs(e,n,t.player.id)){let n=t.player.fleetMissions.indexOf(e);n>-1&&t.player.fleetMissions.splice(n,1);return}},h=e=>{let n=t.player.planets.find(t=>t.id===e.originPlanetId);if(!n)return;pc(n.fleet,e.fleet),rs(n.resources,e.cargo);let r=t.player.fleetMissions.indexOf(e);r>-1&&t.player.fleetMissions.splice(r,1)};D(()=>{t.player.planets.length===0&&(t.locale=_t()),o();let e=setInterval(()=>{d()},1e3);ae(()=>{clearInterval(e)})});let g=[{name:S(()=>r(`nav.overview`)),path:`/`,icon:yr},{name:S(()=>r(`nav.buildings`)),path:`/buildings`,icon:pr},{name:S(()=>r(`nav.research`)),path:`/research`,icon:gr},{name:S(()=>r(`nav.shipyard`)),path:`/shipyard`,icon:kr},{name:S(()=>r(`nav.defense`)),path:`/defense`,icon:Or},{name:S(()=>r(`nav.fleet`)),path:`/fleet`,icon:Tr},{name:S(()=>r(`nav.officers`)),path:`/officers`,icon:Nr},{name:S(()=>r(`nav.simulator`)),path:`/battle-simulator`,icon:jr},{name:S(()=>r(`nav.galaxy`)),path:`/galaxy`,icon:vr},{name:S(()=>r(`nav.messages`)),path:`/messages`,icon:xr},{name:S(()=>r(`nav.settings`)),path:`/settings`,icon:Er}],v=S(()=>t.currentPlanet),y=S(()=>v.value?gs(v.value,t.player.officers):null),b=S(()=>v.value?_s(v.value,t.player.officers):null),x=S(()=>{if(!v.value)return 0;let e=Jo(t.player.officers,Date.now());return Xo(v.value,{energyProductionBonus:e.energyProductionBonus})}),te=S(()=>v.value?Zo(v.value):0),T=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`energy`},{key:`darkMatter`}],E=S(()=>!v.value||v.value.isMoon?null:t.getMoonForPlanet(v.value.id)),O=S(()=>!!E.value),A=()=>{E.value&&(t.currentPlanetId=E.value.id)},ne=()=>{v.value?.parentPlanetId&&(t.currentPlanetId=v.value.parentPlanetId)},j=()=>{t.sidebarCollapsed=!t.sidebarCollapsed},re=e=>{if(e.type===`building`||e.type===`demolish`){let t=Zr[e.itemType]?.name||e.itemType;return e.type===`demolish`?`${r(`buildingsView.demolish`)} - ${t}`:t}else if(e.type===`technology`)return Qr[e.itemType]?.name||e.itemType;else if(e.type===`ship`)return $r[e.itemType]?.name||e.itemType;else if(e.type===`defense`)return ei[e.itemType]?.name||e.itemType;return e.itemType},ie=e=>{let t=Date.now();return Math.max(0,Math.floor((e.endTime-t)/1e3))},P=e=>{let t=Date.now(),n=e.endTime-e.startTime,r=t-e.startTime;return Math.min(100,Math.max(0,r/n*100))},F=e=>{i.value?.show({title:r(`queue.cancelBuild`),message:r(`queue.confirmCancel`),onConfirm:()=>{if(!t.currentPlanet)return!1;let{item:n,index:r}=ws(t.currentPlanet.buildQueue,e);if(!n)return!1;if(n.type===`building`){let e=Cs(t.currentPlanet,n);rs(t.currentPlanet.resources,e)}return t.currentPlanet.buildQueue.splice(r,1),!0}})},oe=e=>{i.value?.show({title:r(`queue.cancelResearch`),message:r(`queue.confirmCancel`),onConfirm:()=>{if(!t.currentPlanet)return!1;let{item:n,index:r}=ws(t.player.researchQueue,e);if(!n)return!1;if(n.type===`technology`){let e=ks(n);rs(t.currentPlanet.resources,e)}return t.player.researchQueue.splice(r,1),!0}})};return(e,o)=>(R(),f(`div`,mc,[s(t).sidebarCollapsed?L(``,!0):(R(),f(`div`,{key:0,class:`fixed inset-0 bg-black/50 z-30 lg:hidden`,onClick:j})),l(`aside`,{class:_([`border-r bg-card flex flex-col transition-all duration-300 ease-in-out shadow-lg z-40`,`fixed lg:relative h-full`,s(t).sidebarCollapsed?`-translate-x-full lg:translate-x-0 lg:w-16`:`translate-x-0 w-64`])},[l(`div`,hc,[s(t).sidebarCollapsed?(R(),f(`span`,_c,[...o[2]||=[l(`img`,{src:``+new URL(`logo-Cz0cNqhe.svg`,import.meta.url).href,class:`w-10`},null,-1)]])):(R(),f(`h1`,gc,[o[1]||=l(`span`,{class:`text-2xl`},[l(`img`,{src:``+new URL(`logo-Cz0cNqhe.svg`,import.meta.url).href,class:`w-10`})],-1),w(` `+M(s(be).title),1)]))]),v.value&&!s(t).sidebarCollapsed?(R(),f(`div`,vc,[l(`div`,yc,[l(`div`,null,[l(`p`,bc,[w(M(v.value.name)+` `,1),v.value.isMoon?(R(),p(s(Kn),{key:0,variant:`secondary`,class:`ml-1 text-xs`},{default:I(()=>[w(M(s(r)(`planet.moon`)),1)]),_:1})):L(``,!0)]),l(`p`,xc,` [`+M(v.value.position.galaxy)+`:`+M(v.value.position.system)+`:`+M(v.value.position.position)+`] `,1)]),l(`div`,Sc,[l(`div`,Cc,[l(`span`,wc,M(s(r)(`player.points`)),1),l(`span`,Tc,M(s(Ro)(s(t).player.points)),1)])]),O.value||v.value.isMoon?(R(),f(`div`,Ec,[v.value.isMoon?(R(),p(s(Wn),{key:0,onClick:ne,variant:`outline`,size:`sm`,class:`w-full text-xs h-7`},{default:I(()=>[w(M(s(r)(`planet.backToPlanet`)),1)]),_:1})):E.value?(R(),p(s(Wn),{key:1,onClick:A,variant:`outline`,size:`sm`,class:`w-full text-xs h-7`},{default:I(()=>[w(M(s(r)(`planet.switchToMoon`)),1)]),_:1})):L(``,!0)])):L(``,!0)])])):L(``,!0),l(`nav`,Dc,[(R(),f(u,null,N(g,e=>C(s(_e),{key:e.path,to:e.path},{default:I(({isActive:n})=>[C(s(Wn),{variant:n?`secondary`:`ghost`,class:_([`w-full transition-all`,s(t).sidebarCollapsed?`justify-center px-0`:`justify-start`]),title:s(t).sidebarCollapsed?e.name.value:void 0},{default:I(()=>[(R(),p(k(e.icon),{class:_([`h-4 w-4`,!s(t).sidebarCollapsed&&`mr-3`])},null,8,[`class`])),s(t).sidebarCollapsed?L(``,!0):(R(),f(`span`,Oc,M(e.name.value),1))]),_:2},1032,[`variant`,`class`,`title`])]),_:2},1032,[`to`])),64))]),l(`div`,kc,[C(s(Yn),null,{default:I(()=>[C(s(Zn),{"as-child":``},{default:I(()=>[C(s(Wn),{variant:`ghost`,class:`w-full`,size:`sm`},{default:I(()=>[C(s(br),{class:`h-4 w-4`}),s(t).sidebarCollapsed?L(``,!0):(R(),f(`span`,Ac,M(s(gt)[s(t).locale]),1))]),_:1})]),_:1}),C(s(Xn),{class:`w-48 p-2`,align:s(t).sidebarCollapsed?`start`:`center`},{default:I(()=>[l(`div`,jc,[(R(),f(u,null,N(a,e=>C(s(Wn),{key:e,onClick:n=>s(t).locale=e,variant:s(t).locale===e?`secondary`:`ghost`,class:`w-full justify-start`,size:`sm`},{default:I(()=>[w(M(s(gt)[e]),1)]),_:2},1032,[`onClick`,`variant`])),64))])]),_:1},8,[`align`])]),_:1})]),l(`div`,Mc,[C(s(Wn),{onClick:o[0]||=e=>n.value=!s(n),variant:`ghost`,class:`w-full`,size:`sm`},{default:I(()=>[s(n)?(R(),p(s(Ar),{key:0,class:`h-4 w-4`})):(R(),p(s(Cr),{key:1,class:`h-4 w-4`})),s(t).sidebarCollapsed?L(``,!0):(R(),f(`span`,Nc,M(s(n)?s(r)(`sidebar.lightMode`):s(r)(`sidebar.darkMode`)),1))]),_:1})]),l(`div`,Pc,[C(s(Wn),{onClick:j,variant:`ghost`,class:`w-full`,size:`sm`},{default:I(()=>[s(t).sidebarCollapsed?(R(),p(s(hr),{key:1,class:`h-4 w-4`})):(R(),p(s(mr),{key:0,class:`h-4 w-4`})),s(t).sidebarCollapsed?L(``,!0):(R(),f(`span`,Fc,M(s(r)(`sidebar.collapse`)),1))]),_:1})])],2),l(`div`,Ic,[v.value?(R(),f(`header`,Lc,[l(`div`,Rc,[l(`div`,zc,[C(s(Wn),{onClick:j,variant:`ghost`,size:`icon`,class:`lg:hidden h-8 w-8`},{default:I(()=>[(R(),p(k(s(t).sidebarCollapsed?s(Sr):s(Pr)),{class:`h-5 w-5`}))]),_:1})]),l(`div`,Bc,[(R(),f(u,null,N(T,e=>l(`div`,{key:e.key,class:`flex items-center gap-1.5 sm:gap-2 flex-shrink-0`},[C(Qn,{type:e.key,size:`md`},null,8,[`type`]),l(`div`,Vc,[e.key===`energy`?(R(),f(u,{key:0},[l(`p`,{class:_([`text-xs sm:text-sm font-medium truncate`,v.value.resources[e.key]>=0?`text-green-600 dark:text-green-400`:`text-red-600 dark:text-red-400`])},M(s(Ro)(v.value.resources[e.key])),3),l(`p`,Hc,M(s(Ro)(x.value||0))+` / `+M(s(Ro)(te.value||0)),1)],64)):(R(),f(u,{key:1},[l(`p`,{class:_([`text-xs sm:text-sm font-medium truncate`,s(zo)(v.value.resources[e.key],b.value?.[e.key]||1/0)])},M(s(Ro)(v.value.resources[e.key]))+` / `+M(s(Ro)(b.value?.[e.key]||0)),3),l(`p`,Uc,` +`+M(s(Ro)(y.value?.[e.key]||0))+`/`+M(s(r)(`resources.perHour`)),1)],64))])])),64))]),l(`div`,Wc,[v.value.buildQueue.length>0?(R(),f(`div`,Gc,[o[3]||=l(`div`,{class:`h-2 w-2 rounded-full bg-green-500 animate-pulse`},null,-1),l(`span`,Kc,M(s(r)(`queue.building`)),1)])):L(``,!0),s(t).player.researchQueue.length>0?(R(),f(`div`,qc,[o[4]||=l(`div`,{class:`h-2 w-2 rounded-full bg-blue-500 animate-pulse`},null,-1),l(`span`,Jc,M(s(r)(`queue.researching`)),1)])):L(``,!0)])])])):L(``,!0),v.value&&(v.value.buildQueue.length>0||s(t).player.researchQueue.length>0)?(R(),f(`div`,Yc,[l(`div`,Xc,[(R(!0),f(u,null,N(v.value.buildQueue,e=>(R(),f(`div`,{key:e.id,class:`space-y-1.5`},[l(`div`,Zc,[l(`div`,Qc,[o[5]||=l(`div`,{class:`h-2 w-2 rounded-full bg-green-500 animate-pulse flex-shrink-0`},null,-1),l(`span`,$c,M(re(e)),1),l(`span`,el,` → `+M(s(r)(`queue.level`))+` `+M(e.targetLevel),1)]),l(`div`,tl,[l(`span`,nl,M(s(Bo)(ie(e))),1),C(s(Wn),{onClick:t=>F(e.id),variant:`ghost`,size:`sm`,class:`h-5 sm:h-6 px-1.5 sm:px-2 text-[10px] sm:text-xs`},{default:I(()=>[w(M(s(r)(`queue.cancel`)),1)]),_:1},8,[`onClick`])])]),C(s(Jn),{"model-value":P(e),class:`h-1.5`},null,8,[`model-value`])]))),128)),(R(!0),f(u,null,N(s(t).player.researchQueue,e=>(R(),f(`div`,{key:e.id,class:`space-y-1.5`},[l(`div`,rl,[l(`div`,il,[o[6]||=l(`div`,{class:`h-2 w-2 rounded-full bg-blue-500 animate-pulse flex-shrink-0`},null,-1),l(`span`,al,M(re(e)),1),l(`span`,ol,` → `+M(s(r)(`queue.level`))+` `+M(e.targetLevel),1)]),l(`div`,sl,[l(`span`,cl,M(s(Bo)(ie(e))),1),C(s(Wn),{onClick:t=>oe(e.id),variant:`ghost`,size:`sm`,class:`h-5 sm:h-6 px-1.5 sm:px-2 text-[10px] sm:text-xs`},{default:I(()=>[w(M(s(r)(`queue.cancel`)),1)]),_:1},8,[`onClick`])])]),C(s(Jn),{"model-value":P(e),class:`h-1.5`},null,8,[`model-value`])]))),128))])])):L(``,!0),l(`main`,ll,[l(`div`,ul,[C(s(ve))])])]),C(ir,{ref_key:`confirmDialog`,ref:i},null,512),C(Lo)]))}}),[[`__scopeId`,`data-v-2b70a0a0`]]),fl=`modulepreload`,pl=function(e,t){return new URL(e,t).href},ml={};const hl=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=pl(t,n),t in ml)return;ml[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:fl,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};var gl=he({history:pe(`./`),routes:[{path:`/`,name:`overview`,component:()=>hl(()=>import(`./OverviewView-CmVFZWGR.js`),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)},{path:`/buildings`,name:`buildings`,component:()=>hl(()=>import(`./BuildingsView-DhLhA5iU.js`),__vite__mapDeps([6,1,2,3,7,4,5]),import.meta.url)},{path:`/research`,name:`research`,component:()=>hl(()=>import(`./ResearchView-BnXltulQ.js`),__vite__mapDeps([8,1,2,9,3,4,5,7,10]),import.meta.url)},{path:`/shipyard`,name:`shipyard`,component:()=>hl(()=>import(`./ShipyardView-DXEuisRD.js`),__vite__mapDeps([11,1,2,9,3,4,5,7,10,12]),import.meta.url)},{path:`/defense`,name:`defense`,component:()=>hl(()=>import(`./DefenseView-Dgqev78h.js`),__vite__mapDeps([13,1,2,9,3,4,5,7,10,12]),import.meta.url)},{path:`/fleet`,name:`fleet`,component:()=>hl(()=>import(`./FleetView-BtTh_NDj.js`),__vite__mapDeps([14,1,2,15,9,3,4,5,7,12]),import.meta.url)},{path:`/officers`,name:`officers`,component:()=>hl(()=>import(`./OfficersView-B0Yv-kWu.js`),__vite__mapDeps([16,1,2,3,7,4,5]),import.meta.url)},{path:`/battle-simulator`,name:`battle-simulator`,component:()=>hl(()=>import(`./BattleSimulatorView-DADwA9bi.js`),__vite__mapDeps([17,1,2,3,4,5]),import.meta.url)},{path:`/messages`,name:`messages`,component:()=>hl(()=>import(`./MessagesView-0qhXN5qt.js`),__vite__mapDeps([18,1,2,3,4,5]),import.meta.url)},{path:`/galaxy`,name:`galaxy`,component:()=>hl(()=>import(`./GalaxyView-BQhXx0XP.js`),__vite__mapDeps([19,1,2,15,3,7,4]),import.meta.url)},{path:`/settings`,name:`settings`,component:()=>hl(()=>import(`./SettingsView-VjOhq7qI.js`),__vite__mapDeps([20,1,2,3,4]),import.meta.url)}]}),_l=o(dl),vl=ge();vl.use(me),_l.use(vl),_l.use(gl),_l.mount(`#app`);export{ei as $,ss as A,pr as At,Vo as B,vt as Bt,xs as C,Fr as Ct,gs as D,Tr as Dt,_s as E,Or as Et,Jo as F,Jn as Ft,ua as G,Bo as H,be as Ht,Go as I,Kn as It,gi as J,la as K,Ko as L,Gn as Lt,Xo as M,ar as Mt,ts as N,ir as Nt,ms as O,wr as Ot,ns as P,Qn as Pt,Zr as Q,Uo as R,Wn as Rt,Ts as S,Lr as St,bs as T,Mr as Tt,zo as U,Ro as V,at as Vt,Ho as W,_i as X,Si as Y,ri as Z,$s as _,Wr as _t,nc as a,Yr as at,Es as b,Br as bt,lc as c,Z as ct,cc as d,q as dt,ti as et,sc as f,K as ft,qs as g,Gr as gt,Ks as h,Kr as ht,dc as i,Q as it,Zo as j,G as jt,ls as k,yr as kt,oc as l,Y as lt,Gs as m,qr as mt,tc as n,Qr as nt,ec as o,Xr as ot,fc as p,Jr as pt,hi as q,uc as r,X as rt,ac as s,$ as st,rc as t,$r as tt,ic as u,J as ut,Os as v,Ur as vt,hs as w,Nr as wt,Ss as x,zr as xt,Ds as y,Vr as yt,qo as z,W as zt}; \ No newline at end of file diff --git a/docs/assets/index-CmQ0LYiC.css b/docs/assets/index-CmQ0LYiC.css new file mode 100644 index 0000000..08a17c6 --- /dev/null +++ b/docs/assets/index-CmQ0LYiC.css @@ -0,0 +1,2 @@ +/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:#fef2f2;--color-red-300:#ffa3a3;--color-red-400:#ff6568;--color-red-600:#e40014;--color-red-700:#bf000f;--color-red-950:#460809;--color-orange-500:#fe6e00;--color-amber-50:#fffbeb;--color-amber-200:#fee685;--color-amber-400:#fcbb00;--color-amber-700:#b75000;--color-amber-800:#953d00;--color-amber-950:#461901;--color-yellow-400:#fac800;--color-yellow-600:#cd8900;--color-green-50:#f0fdf4;--color-green-300:#7bf1a8;--color-green-400:#05df72;--color-green-500:#00c758;--color-green-600:#00a544;--color-green-700:#008138;--color-green-950:#032e15;--color-emerald-600:#009767;--color-cyan-400:#00d2ef;--color-blue-50:#eff6ff;--color-blue-300:#90c5ff;--color-blue-400:#54a2ff;--color-blue-500:#3080ff;--color-blue-600:#155dfc;--color-blue-700:#1447e6;--color-blue-950:#162456;--color-indigo-900:#312c85;--color-purple-600:#9810fa;--color-slate-400:#90a1b9;--color-slate-600:#45556c;--color-gray-50:#f9fafb;--color-gray-300:#d1d5dc;--color-gray-700:#364153;--color-gray-950:#030712;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-xs:.125rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18511 1.52329);--color-red-300:lab(76.5514% 36.4219 15.5335);--color-red-400:lab(63.7053% 60.7449 31.3109);--color-red-600:lab(48.4493% 77.4328 61.5452);--color-red-700:lab(40.4273% 67.2623 53.7441);--color-red-950:lab(13.003% 29.04 16.7519);--color-orange-500:lab(64.272% 57.1788 90.3583);--color-amber-50:lab(98.6252% -.635982 8.42309);--color-amber-200:lab(91.7203% -.505269 49.9084);--color-amber-400:lab(80.1641% 16.6016 99.2089);--color-amber-700:lab(47.2709% 42.9082 69.2966);--color-amber-800:lab(37.8823% 37.1699 52.2718);--color-amber-950:lab(15.8111% 20.9107 23.3752);--color-yellow-400:lab(83.2664% 8.65132 106.895);--color-yellow-600:lab(62.7799% 22.4198 86.1544);--color-green-50:lab(98.1563% -5.60117 2.75913);--color-green-300:lab(86.9953% -47.2691 25.0054);--color-green-400:lab(78.503% -64.9265 39.7492);--color-green-500:lab(70.5521% -66.5147 45.8072);--color-green-600:lab(59.0978% -58.6621 41.2579);--color-green-700:lab(47.0329% -47.0239 31.4788);--color-green-950:lab(15.6845% -20.4225 11.7249);--color-emerald-600:lab(55.0481% -49.9246 15.93);--color-cyan-400:lab(76.6045% -40.9406 -29.6231);--color-blue-50:lab(96.492% -1.14647 -5.11479);--color-blue-300:lab(77.5052% -6.4629 -36.42);--color-blue-400:lab(65.0361% -1.42062 -56.9803);--color-blue-500:lab(54.1736% 13.3368 -74.6839);--color-blue-600:lab(44.0605% 29.0279 -86.0352);--color-blue-700:lab(36.9089% 35.0961 -85.6872);--color-blue-950:lab(15.6723% 8.86233 -32.2945);--color-indigo-900:lab(23.3911% 24.6978 -50.4719);--color-purple-600:lab(43.0295% 75.21 -86.5669);--color-slate-400:lab(65.5349% -2.25151 -14.5072);--color-slate-600:lab(35.5623% -1.74978 -15.4316);--color-gray-50:lab(98.2596% -.247031 -.706708);--color-gray-300:lab(85.1236% -.612259 -3.7138);--color-gray-700:lab(27.1134% -.956401 -12.3224);--color-gray-950:lab(1.90334% .278696 -5.48866)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5}html{transition:background-color .3s,color .3s}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background-color:#0000}::-webkit-scrollbar-thumb{border-radius:var(--radius);background-color:var(--border)}::-webkit-scrollbar-thumb:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklab,var(--muted-foreground)50%,transparent)}}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\.5{top:calc(var(--spacing)*1.5)}.top-3{top:calc(var(--spacing)*3)}.top-3\.5{top:calc(var(--spacing)*3.5)}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.-left-6{left:calc(var(--spacing)*-6)}.left-0{left:calc(var(--spacing)*0)}.left-2{left:calc(var(--spacing)*2)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3\.5{margin-inline:calc(var(--spacing)*3.5)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-8{margin-block:calc(var(--spacing)*8)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-6{margin-left:calc(var(--spacing)*6)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.aspect-square{aspect-ratio:1}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-\[var\(--reka-select-trigger-height\)\]{height:var(--reka-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-\(--reka-select-content-available-height\){max-height:var(--reka-select-content-available-height)}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-svh{min-height:100svh}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0\.5{width:calc(var(--spacing)*.5)}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-20{width:calc(var(--spacing)*20)}.w-48{width:calc(var(--spacing)*48)}.w-72{width:calc(var(--spacing)*72)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[calc\(100\%-1rem\)\]{max-width:calc(100% - 1rem)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-5{min-width:calc(var(--spacing)*5)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--reka-select-trigger-width\)\]{min-width:var(--reka-select-trigger-width)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--reka-popover-content-transform-origin\){transform-origin:var(--reka-popover-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.touch-manipulation{touch-action:manipulation}.resize{resize:both}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-amber-200{border-color:var(--color-amber-200)}.border-background{border-color:var(--background)}.border-blue-300{border-color:var(--color-blue-300)}.border-border{border-color:var(--border)}.border-destructive,.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/50{border-color:color-mix(in oklab,var(--destructive)50%,transparent)}}.border-input{border-color:var(--input)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.bg-amber-50{background-color:var(--color-amber-50)}.bg-background,.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/70{background-color:color-mix(in oklab,var(--background)70%,transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab, red, red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-foreground{background-color:var(--foreground)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-500{background-color:var(--color-green-500)}.bg-muted,.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-transparent{background-color:#0000}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-cyan-400{--tw-gradient-from:var(--color-cyan-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-green-400{--tw-gradient-from:var(--color-green-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-600{--tw-gradient-from:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-slate-400{--tw-gradient-from:var(--color-slate-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-yellow-400{--tw-gradient-from:var(--color-yellow-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-blue-600{--tw-gradient-to:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-600{--tw-gradient-to:var(--color-emerald-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-indigo-900{--tw-gradient-to:var(--color-indigo-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-orange-500{--tw-gradient-to:var(--color-orange-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-slate-600{--tw-gradient-to:var(--color-slate-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.fill-foreground{fill:var(--foreground)}.p-0{padding:calc(var(--spacing)*0)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-4\.5{padding-block:calc(var(--spacing)*4.5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-6\.5{padding-block:calc(var(--spacing)*6.5)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-6{padding-left:calc(var(--spacing)*6)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-balance{text-wrap:balance}.text-wrap{text-wrap:wrap}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.text-amber-700{color:var(--color-amber-700)}.text-background{color:var(--background)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-gray-700{color:var(--color-gray-700)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground)70%,transparent)}}.text-white{color:var(--color-white)}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.decoration-dotted{text-decoration-style:dotted}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.paused{animation-play-state:paused}.ring-inset{--tw-ring-inset:inset}.zoom-in{--tw-enter-scale:0}.zoom-out{--tw-exit-scale:0}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:1}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing)*8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing)*-8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing)*8)!important;height:calc(var(--spacing)*8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-8:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing)*8)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*0)!important}.group-data-\[collapsible\=icon\]\:p-2:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing)*0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing)*-4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing)*0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=collapsed\]\:rotate-180:is(:where(.group)[data-state=collapsed] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing)*1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing)*2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing)*1)}.selection\:bg-primary ::selection,.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection,.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing)*-2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing)*0)}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary:hover,.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}@media (min-width:40rem){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:mt-0{margin-top:calc(var(--spacing)*0)}.sm\:mb-2{margin-bottom:calc(var(--spacing)*2)}.sm\:mb-6{margin-bottom:calc(var(--spacing)*6)}.sm\:flex{display:flex}.sm\:inline{display:inline}.sm\:h-3{height:calc(var(--spacing)*3)}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-6{height:calc(var(--spacing)*6)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:w-12{width:calc(var(--spacing)*12)}.sm\:max-w-\[90vw\]{max-width:90vw}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:calc(var(--spacing)*2)}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:gap-6{gap:calc(var(--spacing)*6)}:where(.sm\:space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:calc(var(--spacing)*3)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:px-2{padding-inline:calc(var(--spacing)*2)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:w-full{width:100%}.md\:max-w-3xl{max-width:var(--container-3xl)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing)*2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing)*0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing)*2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (min-width:64rem){.lg\:hidden{display:none}.lg\:max-w-4xl{max-width:var(--container-4xl)}.lg\:flex-1{flex:1}.lg\:flex-none{flex:none}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:justify-end{justify-content:flex-end}}.dark\:border-amber-800:is(.dark *){border-color:var(--color-amber-800)}.dark\:border-blue-700:is(.dark *){border-color:var(--color-blue-700)}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-amber-950\/30:is(.dark *){background-color:#4619014d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-950)30%,transparent)}}.dark\:bg-blue-950:is(.dark *){background-color:var(--color-blue-950)}.dark\:bg-blue-950\/20:is(.dark *){background-color:#16245633}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-950)20%,transparent)}}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-gray-950:is(.dark *){background-color:var(--color-gray-950)}.dark\:bg-green-950:is(.dark *){background-color:var(--color-green-950)}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:bg-red-950:is(.dark *){background-color:var(--color-red-950)}.dark\:bg-red-950\/20:is(.dark *){background-color:#46080933}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-red-950)20%,transparent)}}.dark\:text-amber-400:is(.dark *){color:var(--color-amber-400)}.dark\:text-blue-300:is(.dark *){color:var(--color-blue-300)}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-gray-300:is(.dark *){color:var(--color-gray-300)}.dark\:text-green-300:is(.dark *){color:var(--color-green-300)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-red-300:is(.dark *){color:var(--color-red-300)}.dark\:text-red-400:is(.dark *){color:var(--color-red-400)}.dark\:text-yellow-400:is(.dark *){color:var(--color-yellow-400)}@media (hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_svg\:not\(\[class\*\=\\\'size-\\\'\]\)\]\:size-4 svg:not([class*="'size-'"]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\\\'text-\\\'\]\)\]\:text-muted-foreground svg:not([class*="'text-'"]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing)*-2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing)*-2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media (hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:#fcfcfc;--foreground:#020618;--card:#fff;--card-foreground:#020618;--popover:#fff;--popover-foreground:#020618;--primary:#0f172b;--primary-foreground:#f8fafc;--secondary:#f1f5f9;--secondary-foreground:#0f172b;--muted:#f1f5f9;--muted-foreground:#62748e;--accent:#f1f5f9;--accent-foreground:#0f172b;--destructive:#e40014;--border:#e2e8f0;--input:#e2e8f0;--ring:#90a1b9;--chart-1:#f05100;--chart-2:#009588;--chart-3:#104e64;--chart-4:#fcbb00;--chart-5:#f99c00;--sidebar:#f8fafc;--sidebar-foreground:#020618;--sidebar-primary:#0f172b;--sidebar-primary-foreground:#f8fafc;--sidebar-accent:#f1f5f9;--sidebar-accent-foreground:#0f172b;--sidebar-border:#e2e8f0;--sidebar-ring:#90a1b9}@supports (color:lab(0% 0 0)){:root{--background:lab(98.84% 0 0);--foreground:lab(1.76974% 1.32743 -9.28855);--card:lab(100% 0 0);--card-foreground:lab(1.76974% 1.32743 -9.28855);--popover:lab(100% 0 0);--popover-foreground:lab(1.76974% 1.32743 -9.28855);--primary:lab(7.78673% 1.82346 -15.0537);--primary-foreground:lab(98.1434% -.369549 -1.05968);--secondary:lab(96.286% -.852466 -2.46847);--secondary-foreground:lab(7.78673% 1.82346 -15.0537);--muted:lab(96.286% -.852466 -2.46847);--muted-foreground:lab(48.0876% -2.03595 -16.5814);--accent:lab(96.286% -.852466 -2.46847);--accent-foreground:lab(7.78673% 1.82346 -15.0537);--destructive:lab(48.4493% 77.4328 61.5452);--border:lab(91.7353% -.998765 -4.76968);--input:lab(91.7353% -.998765 -4.76968);--ring:lab(65.5349% -2.25151 -14.5072);--chart-1:lab(57.1026% 64.2584 89.8886);--chart-2:lab(55.0223% -41.0774 -3.90277);--chart-3:lab(30.372% -13.1853 -18.7887);--chart-4:lab(80.1641% 16.6016 99.2089);--chart-5:lab(72.7183% 31.8672 97.9407);--sidebar:lab(98.1434% -.369549 -1.05968);--sidebar-foreground:lab(1.76974% 1.32743 -9.28855);--sidebar-primary:lab(7.78673% 1.82346 -15.0537);--sidebar-primary-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-accent:lab(96.286% -.852466 -2.46847);--sidebar-accent-foreground:lab(7.78673% 1.82346 -15.0537);--sidebar-border:lab(91.7353% -.998765 -4.76968);--sidebar-ring:lab(65.5349% -2.25151 -14.5072)}}.dark{--background:#020307;--foreground:#f8fafc;--card:#070b14;--card-foreground:#f8fafc;--popover:#070b14;--popover-foreground:#f8fafc;--primary:#76aaed;--primary-foreground:#f8fafc;--secondary:#1b222e;--secondary-foreground:#f8fafc;--muted:#1b222e;--muted-foreground:#72839a;--accent:#1b222e;--accent-foreground:#f8fafc;--destructive:#dc414a;--border:#1b222e;--input:#1b222e;--ring:#6a7282;--chart-1:#1447e6;--chart-2:#00bb7f;--chart-3:#f99c00;--chart-4:#ac4bff;--chart-5:#ff2357;--sidebar:#070b14;--sidebar-foreground:#f8fafc;--sidebar-primary:#1447e6;--sidebar-primary-foreground:#f8fafc;--sidebar-accent:#1b222e;--sidebar-accent-foreground:#f8fafc;--sidebar-border:#1b222e;--sidebar-ring:#6a7282}@supports (color:lab(0% 0 0)){.dark{--background:lab(.879473% .0693277 -1.61465);--foreground:lab(98.1434% -.369549 -1.05968);--card:lab(2.98047% .150263 -4.74351);--card-foreground:lab(98.1434% -.369549 -1.05968);--popover:lab(2.98047% .150263 -4.74351);--popover-foreground:lab(98.1434% -.369549 -1.05968);--primary:lab(68.0384% -3.53837 -39.6946);--primary-foreground:lab(98.1434% -.369549 -1.05968);--secondary:lab(12.8805% -.587493 -9.04602);--secondary-foreground:lab(98.1434% -.369549 -1.05968);--muted:lab(12.8805% -.587493 -9.04602);--muted-foreground:lab(53.9284% -2.13248 -14.4608);--accent:lab(12.8805% -.587493 -9.04602);--accent-foreground:lab(98.1434% -.369549 -1.05968);--destructive:lab(52.0859% 60.8796 32.2468);--border:lab(12.8805% -.587493 -9.04602);--input:lab(12.8805% -.587493 -9.04602);--ring:lab(47.7841% -.393212 -10.0268);--chart-1:lab(36.9089% 35.0961 -85.6872);--chart-2:lab(66.9756% -58.27 19.5419);--chart-3:lab(72.7183% 31.8672 97.9407);--chart-4:lab(52.0183% 66.11 -78.2316);--chart-5:lab(56.101% 79.4329 31.4532);--sidebar:lab(2.98047% .150263 -4.74351);--sidebar-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-primary:lab(36.9089% 35.0961 -85.6872);--sidebar-primary-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-accent:lab(12.8805% -.587493 -9.04602);--sidebar-accent-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-border:lab(12.8805% -.587493 -9.04602);--sidebar-ring:lab(47.7841% -.393212 -10.0268)}}@keyframes fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:.3s ease-out fade-in}aside nav a{transition:all .2s}aside nav a:hover button{transform:translate(4px)}@keyframes pulse-resource{0%,to{opacity:1}50%{opacity:.8}}.resource-pulse{animation:2s ease-in-out infinite pulse-resource}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}main[data-v-784f12ab]{scroll-behavior:smooth} diff --git a/docs/assets/shipValidation-Cx6mhfwF.js b/docs/assets/shipValidation-Cx6mhfwF.js deleted file mode 100644 index d3e06a8..0000000 --- a/docs/assets/shipValidation-Cx6mhfwF.js +++ /dev/null @@ -1 +0,0 @@ -import{F as e,N as t,P as n,T as r,a as i,c as a,d as o,f as s,l as c,n as l,o as u,p as d,r as f,s as p,t as m,u as h}from"./index-Cch-Ig40.js";const g=(e,n,r,i)=>{let a=u(n,r);return h(n,e.buildings,i)?t(e.resources,a)?{valid:!0}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.requirementsNotMet`}},_=(t,r,a,o)=>{let c=u(r,a),l=i(r,a,e(o,Date.now()).buildingSpeedBonus);return n(t.resources,c),s(r,a,l)},v=(e,n,r,i)=>{let a=l(n,r);return p(n,e.buildings,i)?t(e.resources,a)?c(n,e.defense,r)?{valid:!0}:{valid:!1,reason:`errors.shieldDomeLimit`}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.requirementsNotMet`}},y=(t,r,i,a)=>{let s=l(r,i),c=m(r,i,e(a,Date.now()).buildingSpeedBonus);return n(t.resources,s),o(r,i,c)},b=(t,n,i,o,s=0)=>{let c=e(o,Date.now());if(s>=r(c.additionalFleetSlots))return{valid:!1,reason:`errors.fleetMissionsFull`};if(!a(t.fleet,n))return{valid:!1,reason:`errors.insufficientFleet`};let l=f(n,c.fuelConsumptionReduction,i);return t.resources.deuterium{d(e.fleet,t),e.resources.deuterium-=r,i&&n(e.resources,a)};export{b as a,v as i,x as n,g as o,_ as r,y as t}; \ No newline at end of file diff --git a/docs/assets/useGameConfig-D2EZdt1x.js b/docs/assets/useGameConfig-D2EZdt1x.js deleted file mode 100644 index 860dca8..0000000 --- a/docs/assets/useGameConfig-D2EZdt1x.js +++ /dev/null @@ -1 +0,0 @@ -import{W as e}from"./vendor-ui-DBxeWLyT.js";import{$ as t,Bt as n,Q as r,ct as i,et as a,it as o,nt as s,ot as c,rt as l,st as u,tt as d}from"./index-Cch-Ig40.js";const f=()=>{let{t:f}=n(),p={[l.MetalMine]:`metalMine`,[l.CrystalMine]:`crystalMine`,[l.DeuteriumSynthesizer]:`deuteriumSynthesizer`,[l.SolarPlant]:`solarPlant`,[l.RoboticsFactory]:`roboticsFactory`,[l.NaniteFactory]:`naniteFactory`,[l.Shipyard]:`shipyard`,[l.ResearchLab]:`researchLab`,[l.MetalStorage]:`metalStorage`,[l.CrystalStorage]:`crystalStorage`,[l.DeuteriumTank]:`deuteriumTank`,[l.DarkMatterCollector]:`darkMatterCollector`,[l.LunarBase]:`lunarBase`,[l.SensorPhalanx]:`sensorPhalanx`,[l.JumpGate]:`jumpGate`},m={[u.LightFighter]:`lightFighter`,[u.HeavyFighter]:`heavyFighter`,[u.Cruiser]:`cruiser`,[u.Battleship]:`battleship`,[u.SmallCargo]:`smallCargo`,[u.LargeCargo]:`largeCargo`,[u.ColonyShip]:`colonyShip`,[u.Recycler]:`recycler`,[u.EspionageProbe]:`espionageProbe`,[u.DarkMatterHarvester]:`darkMatterHarvester`},h={[o.RocketLauncher]:`rocketLauncher`,[o.LightLaser]:`lightLaser`,[o.HeavyLaser]:`heavyLaser`,[o.GaussCannon]:`gaussCannon`,[o.IonCannon]:`ionCannon`,[o.PlasmaTurret]:`plasmaTurret`,[o.SmallShieldDome]:`smallShieldDome`,[o.LargeShieldDome]:`largeShieldDome`},g={[i.EnergyTechnology]:`energyTechnology`,[i.LaserTechnology]:`laserTechnology`,[i.IonTechnology]:`ionTechnology`,[i.HyperspaceTechnology]:`hyperspaceTechnology`,[i.PlasmaTechnology]:`plasmaTechnology`,[i.ComputerTechnology]:`computerTechnology`,[i.CombustionDrive]:`combustionDrive`,[i.ImpulseDrive]:`impulseDrive`,[i.HyperspaceDrive]:`hyperspaceDrive`,[i.DarkMatterTechnology]:`darkMatterTechnology`},_={[c.Commander]:`commander`,[c.Admiral]:`admiral`,[c.Engineer]:`engineer`,[c.Geologist]:`geologist`,[c.Technocrat]:`technocrat`,[c.DarkMatterSpecialist]:`darkMatterSpecialist`};return{BUILDINGS:e(()=>{let e={};for(let[t,n]of Object.entries(r)){let r=t,i=p[r];e[r]={...n,name:f(`buildings.${i}`),description:f(`buildingDescriptions.${i}`)}}return e}),SHIPS:e(()=>{let e={};for(let[t,n]of Object.entries(d)){let r=t,i=m[r];e[r]={...n,name:f(`ships.${i}`),description:f(`shipDescriptions.${i}`)}}return e}),DEFENSES:e(()=>{let e={};for(let[n,r]of Object.entries(t)){let t=n,i=h[t];e[t]={...r,name:f(`defenses.${i}`),description:f(`defenseDescriptions.${i}`)}}return e}),TECHNOLOGIES:e(()=>{let e={};for(let[t,n]of Object.entries(s)){let r=t,i=g[r];e[r]={...n,name:f(`technologies.${i}`),description:f(`technologyDescriptions.${i}`)}}return e}),OFFICERS:e(()=>{let e={};for(let[t,n]of Object.entries(a)){let r=t,i=_[r];e[r]={...n,name:f(`officers.${i}`),description:f(`officerDescriptions.${i}`)}}return e})}};export{f as t}; \ No newline at end of file diff --git a/docs/assets/useGameConfig-chMIsHFg.js b/docs/assets/useGameConfig-chMIsHFg.js new file mode 100644 index 0000000..0107f52 --- /dev/null +++ b/docs/assets/useGameConfig-chMIsHFg.js @@ -0,0 +1 @@ +import{Et as e}from"./game-logic-B_TBzmsj.js";import{c as t,d as n,h as r,l as i,m as a,n as o,o as s,p as c,r as l,u}from"./game-config-D-D7cMgJ.js";import{P as d}from"./index-BLxCTx9W.js";const f=()=>{let{t:f}=d(),p={[u.MetalMine]:`metalMine`,[u.CrystalMine]:`crystalMine`,[u.DeuteriumSynthesizer]:`deuteriumSynthesizer`,[u.SolarPlant]:`solarPlant`,[u.RoboticsFactory]:`roboticsFactory`,[u.NaniteFactory]:`naniteFactory`,[u.Shipyard]:`shipyard`,[u.ResearchLab]:`researchLab`,[u.MetalStorage]:`metalStorage`,[u.CrystalStorage]:`crystalStorage`,[u.DeuteriumTank]:`deuteriumTank`,[u.DarkMatterCollector]:`darkMatterCollector`,[u.Terraformer]:`terraformer`,[u.LunarBase]:`lunarBase`,[u.SensorPhalanx]:`sensorPhalanx`,[u.JumpGate]:`jumpGate`,[u.PlanetDestroyerFactory]:`planetDestroyerFactory`},m={[a.LightFighter]:`lightFighter`,[a.HeavyFighter]:`heavyFighter`,[a.Cruiser]:`cruiser`,[a.Battleship]:`battleship`,[a.SmallCargo]:`smallCargo`,[a.LargeCargo]:`largeCargo`,[a.ColonyShip]:`colonyShip`,[a.Recycler]:`recycler`,[a.EspionageProbe]:`espionageProbe`,[a.DarkMatterHarvester]:`darkMatterHarvester`,[a.Deathstar]:`deathstar`},h={[n.RocketLauncher]:`rocketLauncher`,[n.LightLaser]:`lightLaser`,[n.HeavyLaser]:`heavyLaser`,[n.GaussCannon]:`gaussCannon`,[n.IonCannon]:`ionCannon`,[n.PlasmaTurret]:`plasmaTurret`,[n.SmallShieldDome]:`smallShieldDome`,[n.LargeShieldDome]:`largeShieldDome`,[n.PlanetaryShield]:`planetaryShield`},g={[r.EnergyTechnology]:`energyTechnology`,[r.LaserTechnology]:`laserTechnology`,[r.IonTechnology]:`ionTechnology`,[r.HyperspaceTechnology]:`hyperspaceTechnology`,[r.PlasmaTechnology]:`plasmaTechnology`,[r.ComputerTechnology]:`computerTechnology`,[r.CombustionDrive]:`combustionDrive`,[r.ImpulseDrive]:`impulseDrive`,[r.HyperspaceDrive]:`hyperspaceDrive`,[r.DarkMatterTechnology]:`darkMatterTechnology`,[r.TerraformingTechnology]:`terraformingTechnology`,[r.PlanetDestructionTech]:`planetDestructionTech`},_={[c.Commander]:`commander`,[c.Admiral]:`admiral`,[c.Engineer]:`engineer`,[c.Geologist]:`geologist`,[c.Technocrat]:`technocrat`,[c.DarkMatterSpecialist]:`darkMatterSpecialist`};return{BUILDINGS:e(()=>{let e={};for(let[t,n]of Object.entries(o)){let r=t,i=p[r];e[r]={...n,name:f(`buildings.${i}`),description:f(`buildingDescriptions.${i}`)}}return e}),SHIPS:e(()=>{let e={};for(let[n,r]of Object.entries(t)){let t=n,i=m[t];e[t]={...r,name:f(`ships.${i}`),description:f(`shipDescriptions.${i}`)}}return e}),DEFENSES:e(()=>{let e={};for(let[t,n]of Object.entries(l)){let r=t,i=h[r];e[r]={...n,name:f(`defenses.${i}`),description:f(`defenseDescriptions.${i}`)}}return e}),TECHNOLOGIES:e(()=>{let e={};for(let[t,n]of Object.entries(i)){let r=t,i=g[r];e[r]={...n,name:f(`technologies.${i}`),description:f(`technologyDescriptions.${i}`)}}return e}),OFFICERS:e(()=>{let e={};for(let[t,n]of Object.entries(s)){let r=t,i=_[r];e[r]={...n,name:f(`officers.${i}`),description:f(`officerDescriptions.${i}`)}}return e})}};export{f as t}; \ No newline at end of file diff --git a/docs/assets/vendor-crypto-CQM8pryk.js b/docs/assets/vendor-crypto-CQM8pryk.js new file mode 100644 index 0000000..f4dff2e --- /dev/null +++ b/docs/assets/vendor-crypto-CQM8pryk.js @@ -0,0 +1 @@ +import{r as e,t}from"./rolldown-runtime-CIDIeb-o.js";var n=t(((e,t)=>{t.exports={}})),r=t(((t,r)=>{(function(e,n){typeof t==`object`?r.exports=t=n():typeof define==`function`&&define.amd?define([],n):e.CryptoJS=n()})(t,function(){var t=t||function(t,r){var i;if(typeof window<`u`&&window.crypto&&(i=window.crypto),typeof self<`u`&&self.crypto&&(i=self.crypto),typeof globalThis<`u`&&globalThis.crypto&&(i=globalThis.crypto),!i&&typeof window<`u`&&window.msCrypto&&(i=window.msCrypto),!i&&typeof global<`u`&&global.crypto&&(i=global.crypto),!i&&typeof e==`function`)try{i=n()}catch{}var a=function(){if(i){if(typeof i.getRandomValues==`function`)try{return i.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof i.randomBytes==`function`)try{return i.randomBytes(4).readInt32LE()}catch{}}throw Error(`Native crypto module could not be used to get secure random number.`)},o=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),s={},c=s.lib={},l=c.Base=function(){return{extend:function(e){var t=o(this);return e&&t.mixIn(e),(!t.hasOwnProperty(`init`)||this.init===t.init)&&(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty(`toString`)&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),u=c.WordArray=l.extend({init:function(e,t){e=this.words=e||[],t==r?this.sigBytes=e.length*4:this.sigBytes=t},toString:function(e){return(e||f).stringify(this)},concat:function(e){var t=this.words,n=e.words,r=this.sigBytes,i=e.sigBytes;if(this.clamp(),r%4)for(var a=0;a>>2]>>>24-a%4*8&255;t[r+a>>>2]|=o<<24-(r+a)%4*8}else for(var s=0;s>>2]=n[s>>>2];return this.sigBytes+=i,this},clamp:function(){var e=this.words,n=this.sigBytes;e[n>>>2]&=4294967295<<32-n%4*8,e.length=t.ceil(n/4)},clone:function(){var e=l.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>2]>>>24-i%4*8&255;r.push((a>>>4).toString(16)),r.push((a&15).toString(16))}return r.join(``)},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new u.init(n,t/2)}},p=d.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i>>2]>>>24-i%4*8&255;r.push(String.fromCharCode(a))}return r.join(``)},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(e.charCodeAt(r)&255)<<24-r%4*8;return new u.init(n,t)}},m=d.Utf8={stringify:function(e){try{return decodeURIComponent(escape(p.stringify(e)))}catch{throw Error(`Malformed UTF-8 data`)}},parse:function(e){return p.parse(unescape(encodeURIComponent(e)))}},h=c.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(e){typeof e==`string`&&(e=m.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var n,r=this._data,i=r.words,a=r.sigBytes,o=this.blockSize,s=a/(o*4);s=e?t.ceil(s):t.max((s|0)-this._minBufferSize,0);var c=s*o,l=t.min(c*4,a);if(c){for(var d=0;d{(function(n,i){typeof e==`object`?t.exports=e=i(r()):typeof define==`function`&&define.amd?define([`./core`],i):i(n.CryptoJS)})(e,function(e){return(function(t){var n=e,r=n.lib,i=r.Base,a=r.WordArray,o=n.x64={};o.Word=i.extend({init:function(e,t){this.high=e,this.low=t}}),o.WordArray=i.extend({init:function(e,n){e=this.words=e||[],n==t?this.sigBytes=e.length*8:this.sigBytes=n},toX32:function(){for(var e=this.words,t=e.length,n=[],r=0;r{(function(n,i){typeof e==`object`?t.exports=e=i(r()):typeof define==`function`&&define.amd?define([`./core`],i):i(n.CryptoJS)})(e,function(e){return(function(){if(typeof ArrayBuffer==`function`){var t=e.lib.WordArray,n=t.init,r=t.init=function(e){if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),(e instanceof Int8Array||typeof Uint8ClampedArray<`u`&&e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array)&&(e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),e instanceof Uint8Array){for(var t=e.byteLength,r=[],i=0;i>>2]|=e[i]<<24-i%4*8;n.call(this,r,t)}else n.apply(this,arguments)};r.prototype=t}})(),e.lib.WordArray})})),o=t(((e,t)=>{(function(n,i){typeof e==`object`?t.exports=e=i(r()):typeof define==`function`&&define.amd?define([`./core`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.WordArray,r=t.enc;r.Utf16=r.Utf16BE={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i>>2]>>>16-i%4*8&65535;r.push(String.fromCharCode(a))}return r.join(``)},parse:function(e){for(var t=e.length,r=[],i=0;i>>1]|=e.charCodeAt(i)<<16-i%2*16;return n.create(r,t*2)}},r.Utf16LE={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],a=0;a>>2]>>>16-a%4*8&65535);r.push(String.fromCharCode(o))}return r.join(``)},parse:function(e){for(var t=e.length,r=[],a=0;a>>1]|=i(e.charCodeAt(a)<<16-a%2*16);return n.create(r,t*2)}};function i(e){return e<<8&4278255360|e>>>8&16711935}})(),e.enc.Utf16})})),s=t(((e,t)=>{(function(n,i){typeof e==`object`?t.exports=e=i(r()):typeof define==`function`&&define.amd?define([`./core`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.WordArray,r=t.enc;r.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,r=this._map;e.clamp();for(var i=[],a=0;a>>2]>>>24-a%4*8&255,s=t[a+1>>>2]>>>24-(a+1)%4*8&255,c=t[a+2>>>2]>>>24-(a+2)%4*8&255,l=o<<16|s<<8|c,u=0;u<4&&a+u*.75>>6*(3-u)&63));var d=r.charAt(64);if(d)for(;i.length%4;)i.push(d);return i.join(``)},parse:function(e){var t=e.length,n=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var a=0;a>>6-o%4*2;i[a>>>2]|=s<<24-a%4*8,a++}return n.create(i,a)}})(),e.enc.Base64})})),c=t(((e,t)=>{(function(n,i){typeof e==`object`?t.exports=e=i(r()):typeof define==`function`&&define.amd?define([`./core`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.WordArray,r=t.enc;r.Base64url={stringify:function(e,t){t===void 0&&(t=!0);var n=e.words,r=e.sigBytes,i=t?this._safe_map:this._map;e.clamp();for(var a=[],o=0;o>>2]>>>24-o%4*8&255,c=n[o+1>>>2]>>>24-(o+1)%4*8&255,l=n[o+2>>>2]>>>24-(o+2)%4*8&255,u=s<<16|c<<8|l,d=0;d<4&&o+d*.75>>6*(3-d)&63));var f=i.charAt(64);if(f)for(;a.length%4;)a.push(f);return a.join(``)},parse:function(e,t){t===void 0&&(t=!0);var n=e.length,r=t?this._safe_map:this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var o=0;o>>6-o%4*2;i[a>>>2]|=s<<24-a%4*8,a++}return n.create(i,a)}})(),e.enc.Base64url})})),l=t(((e,t)=>{(function(n,i){typeof e==`object`?t.exports=e=i(r()):typeof define==`function`&&define.amd?define([`./core`],i):i(n.CryptoJS)})(e,function(e){return(function(t){var n=e,r=n.lib,i=r.WordArray,a=r.Hasher,o=n.algo,s=[];(function(){for(var e=0;e<64;e++)s[e]=t.abs(t.sin(e+1))*4294967296|0})();var c=o.MD5=a.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=t+n,i=e[r];e[r]=(i<<8|i>>>24)&16711935|(i<<24|i>>>8)&4278255360}var a=this._hash.words,o=e[t+0],c=e[t+1],p=e[t+2],m=e[t+3],h=e[t+4],g=e[t+5],_=e[t+6],v=e[t+7],y=e[t+8],b=e[t+9],x=e[t+10],S=e[t+11],C=e[t+12],w=e[t+13],T=e[t+14],E=e[t+15],D=a[0],O=a[1],k=a[2],A=a[3];D=l(D,O,k,A,o,7,s[0]),A=l(A,D,O,k,c,12,s[1]),k=l(k,A,D,O,p,17,s[2]),O=l(O,k,A,D,m,22,s[3]),D=l(D,O,k,A,h,7,s[4]),A=l(A,D,O,k,g,12,s[5]),k=l(k,A,D,O,_,17,s[6]),O=l(O,k,A,D,v,22,s[7]),D=l(D,O,k,A,y,7,s[8]),A=l(A,D,O,k,b,12,s[9]),k=l(k,A,D,O,x,17,s[10]),O=l(O,k,A,D,S,22,s[11]),D=l(D,O,k,A,C,7,s[12]),A=l(A,D,O,k,w,12,s[13]),k=l(k,A,D,O,T,17,s[14]),O=l(O,k,A,D,E,22,s[15]),D=u(D,O,k,A,c,5,s[16]),A=u(A,D,O,k,_,9,s[17]),k=u(k,A,D,O,S,14,s[18]),O=u(O,k,A,D,o,20,s[19]),D=u(D,O,k,A,g,5,s[20]),A=u(A,D,O,k,x,9,s[21]),k=u(k,A,D,O,E,14,s[22]),O=u(O,k,A,D,h,20,s[23]),D=u(D,O,k,A,b,5,s[24]),A=u(A,D,O,k,T,9,s[25]),k=u(k,A,D,O,m,14,s[26]),O=u(O,k,A,D,y,20,s[27]),D=u(D,O,k,A,w,5,s[28]),A=u(A,D,O,k,p,9,s[29]),k=u(k,A,D,O,v,14,s[30]),O=u(O,k,A,D,C,20,s[31]),D=d(D,O,k,A,g,4,s[32]),A=d(A,D,O,k,y,11,s[33]),k=d(k,A,D,O,S,16,s[34]),O=d(O,k,A,D,T,23,s[35]),D=d(D,O,k,A,c,4,s[36]),A=d(A,D,O,k,h,11,s[37]),k=d(k,A,D,O,v,16,s[38]),O=d(O,k,A,D,x,23,s[39]),D=d(D,O,k,A,w,4,s[40]),A=d(A,D,O,k,o,11,s[41]),k=d(k,A,D,O,m,16,s[42]),O=d(O,k,A,D,_,23,s[43]),D=d(D,O,k,A,b,4,s[44]),A=d(A,D,O,k,C,11,s[45]),k=d(k,A,D,O,E,16,s[46]),O=d(O,k,A,D,p,23,s[47]),D=f(D,O,k,A,o,6,s[48]),A=f(A,D,O,k,v,10,s[49]),k=f(k,A,D,O,T,15,s[50]),O=f(O,k,A,D,g,21,s[51]),D=f(D,O,k,A,C,6,s[52]),A=f(A,D,O,k,m,10,s[53]),k=f(k,A,D,O,x,15,s[54]),O=f(O,k,A,D,c,21,s[55]),D=f(D,O,k,A,y,6,s[56]),A=f(A,D,O,k,E,10,s[57]),k=f(k,A,D,O,_,15,s[58]),O=f(O,k,A,D,w,21,s[59]),D=f(D,O,k,A,h,6,s[60]),A=f(A,D,O,k,S,10,s[61]),k=f(k,A,D,O,p,15,s[62]),O=f(O,k,A,D,b,21,s[63]),a[0]=a[0]+D|0,a[1]=a[1]+O|0,a[2]=a[2]+k|0,a[3]=a[3]+A|0},_doFinalize:function(){var e=this._data,n=e.words,r=this._nDataBytes*8,i=e.sigBytes*8;n[i>>>5]|=128<<24-i%32;var a=t.floor(r/4294967296),o=r;n[(i+64>>>9<<4)+15]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360,n[(i+64>>>9<<4)+14]=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360,e.sigBytes=(n.length+1)*4,this._process();for(var s=this._hash,c=s.words,l=0;l<4;l++){var u=c[l];c[l]=(u<<8|u>>>24)&16711935|(u<<24|u>>>8)&4278255360}return s},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,n,r,i,a,o){var s=e+(t&n|~t&r)+i+o;return(s<>>32-a)+t}function u(e,t,n,r,i,a,o){var s=e+(t&r|n&~r)+i+o;return(s<>>32-a)+t}function d(e,t,n,r,i,a,o){var s=e+(t^n^r)+i+o;return(s<>>32-a)+t}function f(e,t,n,r,i,a,o){var s=e+(n^(t|~r))+i+o;return(s<>>32-a)+t}n.MD5=a._createHelper(c),n.HmacMD5=a._createHmacHelper(c)})(Math),e.MD5})})),u=t(((e,t)=>{(function(n,i){typeof e==`object`?t.exports=e=i(r()):typeof define==`function`&&define.amd?define([`./core`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib,r=n.WordArray,i=n.Hasher,a=t.algo,o=[],s=a.SHA1=i.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],a=n[2],s=n[3],c=n[4],l=0;l<80;l++){if(l<16)o[l]=e[t+l]|0;else{var u=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=u<<1|u>>>31}var d=(r<<5|r>>>27)+c+o[l];l<20?d+=(i&a|~i&s)+1518500249:l<40?d+=(i^a^s)+1859775393:l<60?d+=(i&a|i&s|a&s)-1894007588:d+=(i^a^s)-899497514,c=s,s=a,a=i<<30|i>>>2,i=r,r=d}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+s|0,n[4]=n[4]+c|0},_doFinalize:function(){var e=this._data,t=e.words,n=this._nDataBytes*8,r=e.sigBytes*8;return t[r>>>5]|=128<<24-r%32,t[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),t[(r+64>>>9<<4)+15]=n,e.sigBytes=t.length*4,this._process(),this._hash},clone:function(){var e=i.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA1=i._createHelper(s),t.HmacSHA1=i._createHmacHelper(s)})(),e.SHA1})})),d=t(((e,t)=>{(function(n,i){typeof e==`object`?t.exports=e=i(r()):typeof define==`function`&&define.amd?define([`./core`],i):i(n.CryptoJS)})(e,function(e){return(function(t){var n=e,r=n.lib,i=r.WordArray,a=r.Hasher,o=n.algo,s=[],c=[];(function(){function e(e){for(var n=t.sqrt(e),r=2;r<=n;r++)if(!(e%r))return!1;return!0}function n(e){return(e-(e|0))*4294967296|0}for(var r=2,i=0;i<64;)e(r)&&(i<8&&(s[i]=n(t.pow(r,1/2))),c[i]=n(t.pow(r,1/3)),i++),r++})();var l=[],u=o.SHA256=a.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],u=n[5],d=n[6],f=n[7],p=0;p<64;p++){if(p<16)l[p]=e[t+p]|0;else{var m=l[p-15],h=(m<<25|m>>>7)^(m<<14|m>>>18)^m>>>3,g=l[p-2],_=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;l[p]=h+l[p-7]+_+l[p-16]}var v=s&u^~s&d,y=r&i^r&a^i&a,b=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),x=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),S=f+x+v+c[p]+l[p],C=b+y;f=d,d=u,u=s,s=o+S|0,o=a,a=i,i=r,r=S+C|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+u|0,n[6]=n[6]+d|0,n[7]=n[7]+f|0},_doFinalize:function(){var e=this._data,n=e.words,r=this._nDataBytes*8,i=e.sigBytes*8;return n[i>>>5]|=128<<24-i%32,n[(i+64>>>9<<4)+14]=t.floor(r/4294967296),n[(i+64>>>9<<4)+15]=r,e.sigBytes=n.length*4,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});n.SHA256=a._createHelper(u),n.HmacSHA256=a._createHmacHelper(u)})(Math),e.SHA256})})),f=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),d()):typeof define==`function`&&define.amd?define([`./core`,`./sha256`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.WordArray,r=t.algo,i=r.SHA256,a=r.SHA224=i.extend({_doReset:function(){this._hash=new n.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=i._doFinalize.call(this);return e.sigBytes-=4,e}});t.SHA224=i._createHelper(a),t.HmacSHA224=i._createHmacHelper(a)})(),e.SHA224})})),p=t(((e,t)=>{(function(n,a,o){typeof e==`object`?t.exports=e=a(r(),i()):typeof define==`function`&&define.amd?define([`./core`,`./x64-core`],a):a(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.Hasher,r=t.x64,i=r.Word,a=r.WordArray,o=t.algo;function s(){return i.create.apply(i,arguments)}var c=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],l=[];(function(){for(var e=0;e<80;e++)l[e]=s()})();var u=o.SHA512=n.extend({_doReset:function(){this._hash=new a.init([new i.init(1779033703,4089235720),new i.init(3144134277,2227873595),new i.init(1013904242,4271175723),new i.init(2773480762,1595750129),new i.init(1359893119,2917565137),new i.init(2600822924,725511199),new i.init(528734635,4215389547),new i.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],u=n[5],d=n[6],f=n[7],p=r.high,m=r.low,h=i.high,g=i.low,_=a.high,v=a.low,y=o.high,b=o.low,x=s.high,S=s.low,C=u.high,w=u.low,T=d.high,E=d.low,D=f.high,O=f.low,k=p,A=m,j=h,M=g,N=_,P=v,F=y,I=b,L=x,R=S,z=C,B=w,V=T,H=E,ee=D,U=O,W=0;W<80;W++){var G,K,q=l[W];if(W<16)K=q.high=e[t+W*2]|0,G=q.low=e[t+W*2+1]|0;else{var te=l[W-15],J=te.high,Y=te.low,ne=(J>>>1|Y<<31)^(J>>>8|Y<<24)^J>>>7,re=(Y>>>1|J<<31)^(Y>>>8|J<<24)^(Y>>>7|J<<25),ie=l[W-2],X=ie.high,Z=ie.low,ae=(X>>>19|Z<<13)^(X<<3|Z>>>29)^X>>>6,oe=(Z>>>19|X<<13)^(Z<<3|X>>>29)^(Z>>>6|X<<26),se=l[W-7],ce=se.high,le=se.low,ue=l[W-16],de=ue.high,fe=ue.low;G=re+le,K=ne+ce+(G>>>0>>0?1:0),G+=oe,K=K+ae+(G>>>0>>0?1:0),G+=fe,K=K+de+(G>>>0>>0?1:0),q.high=K,q.low=G}var pe=L&z^~L&V,me=R&B^~R&H,he=k&j^k&N^j&N,ge=A&M^A&P^M&P,_e=(k>>>28|A<<4)^(k<<30|A>>>2)^(k<<25|A>>>7),ve=(A>>>28|k<<4)^(A<<30|k>>>2)^(A<<25|k>>>7),ye=(L>>>14|R<<18)^(L>>>18|R<<14)^(L<<23|R>>>9),be=(R>>>14|L<<18)^(R>>>18|L<<14)^(R<<23|L>>>9),xe=c[W],Se=xe.high,Ce=xe.low,Q=U+be,$=ee+ye+(Q>>>0>>0?1:0),Q=Q+me,$=$+pe+(Q>>>0>>0?1:0),Q=Q+Ce,$=$+Se+(Q>>>0>>0?1:0),Q=Q+G,$=$+K+(Q>>>0>>0?1:0),we=ve+ge,Te=_e+he+(we>>>0>>0?1:0);ee=V,U=H,V=z,H=B,z=L,B=R,R=I+Q|0,L=F+$+(R>>>0>>0?1:0)|0,F=N,I=P,N=j,P=M,j=k,M=A,A=Q+we|0,k=$+Te+(A>>>0>>0?1:0)|0}m=r.low=m+A,r.high=p+k+(m>>>0>>0?1:0),g=i.low=g+M,i.high=h+j+(g>>>0>>0?1:0),v=a.low=v+P,a.high=_+N+(v>>>0

>>0?1:0),b=o.low=b+I,o.high=y+F+(b>>>0>>0?1:0),S=s.low=S+R,s.high=x+L+(S>>>0>>0?1:0),w=u.low=w+B,u.high=C+z+(w>>>0>>0?1:0),E=d.low=E+H,d.high=T+V+(E>>>0>>0?1:0),O=f.low=O+U,f.high=D+ee+(O>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,n=this._nDataBytes*8,r=e.sigBytes*8;return t[r>>>5]|=128<<24-r%32,t[(r+128>>>10<<5)+30]=Math.floor(n/4294967296),t[(r+128>>>10<<5)+31]=n,e.sigBytes=t.length*4,this._process(),this._hash.toX32()},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:1024/32});t.SHA512=n._createHelper(u),t.HmacSHA512=n._createHmacHelper(u)})(),e.SHA512})})),m=t(((e,t)=>{(function(n,a,o){typeof e==`object`?t.exports=e=a(r(),i(),p()):typeof define==`function`&&define.amd?define([`./core`,`./x64-core`,`./sha512`],a):a(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.x64,r=n.Word,i=n.WordArray,a=t.algo,o=a.SHA512,s=a.SHA384=o.extend({_doReset:function(){this._hash=new i.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}});t.SHA384=o._createHelper(s),t.HmacSHA384=o._createHmacHelper(s)})(),e.SHA384})})),h=t(((e,t)=>{(function(n,a,o){typeof e==`object`?t.exports=e=a(r(),i()):typeof define==`function`&&define.amd?define([`./core`,`./x64-core`],a):a(n.CryptoJS)})(e,function(e){return(function(t){var n=e,r=n.lib,i=r.WordArray,a=r.Hasher,o=n.x64.Word,s=n.algo,c=[],l=[],u=[];(function(){for(var e=1,t=0,n=0;n<24;n++){c[e+5*t]=(n+1)*(n+2)/2%64;var r=t%5,i=(2*e+3*t)%5;e=r,t=i}for(var e=0;e<5;e++)for(var t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var a=1,s=0;s<24;s++){for(var d=0,f=0,p=0;p<7;p++){if(a&1){var m=(1<>>24)&16711935|(a<<24|a>>>8)&4278255360,o=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360;var s=n[i];s.high^=o,s.low^=a}for(var f=0;f<24;f++){for(var p=0;p<5;p++){for(var m=0,h=0,g=0;g<5;g++){var s=n[p+5*g];m^=s.high,h^=s.low}var _=d[p];_.high=m,_.low=h}for(var p=0;p<5;p++)for(var v=d[(p+4)%5],y=d[(p+1)%5],b=y.high,x=y.low,m=v.high^(b<<1|x>>>31),h=v.low^(x<<1|b>>>31),g=0;g<5;g++){var s=n[p+5*g];s.high^=m,s.low^=h}for(var S=1;S<25;S++){var m,h,s=n[S],C=s.high,w=s.low,T=c[S];T<32?(m=C<>>32-T,h=w<>>32-T):(m=w<>>64-T,h=C<>>64-T);var E=d[l[S]];E.high=m,E.low=h}var D=d[0],O=n[0];D.high=O.high,D.low=O.low;for(var p=0;p<5;p++)for(var g=0;g<5;g++){var S=p+5*g,s=n[S],k=d[S],A=d[(p+1)%5+5*g],j=d[(p+2)%5+5*g];s.high=k.high^~A.high&j.high,s.low=k.low^~A.low&j.low}var s=n[0],M=u[f];s.high^=M.high,s.low^=M.low}},_doFinalize:function(){var e=this._data,n=e.words;this._nDataBytes*8;var r=e.sigBytes*8,a=this.blockSize*32;n[r>>>5]|=1<<24-r%32,n[(t.ceil((r+1)/a)*a>>>5)-1]|=128,e.sigBytes=n.length*4,this._process();for(var o=this._state,s=this.cfg.outputLength/8,c=s/8,l=[],u=0;u>>24)&16711935|(f<<24|f>>>8)&4278255360,p=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360,l.push(p),l.push(f)}return new i.init(l,s)},clone:function(){for(var e=a.clone.call(this),t=e._state=this._state.slice(0),n=0;n<25;n++)t[n]=t[n].clone();return e}});n.SHA3=a._createHelper(f),n.HmacSHA3=a._createHmacHelper(f)})(Math),e.SHA3})})),g=t(((e,t)=>{(function(n,i){typeof e==`object`?t.exports=e=i(r()):typeof define==`function`&&define.amd?define([`./core`],i):i(n.CryptoJS)})(e,function(e){return(function(t){var n=e,r=n.lib,i=r.WordArray,a=r.Hasher,o=n.algo,s=i.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),c=i.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=i.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),u=i.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),d=i.create([0,1518500249,1859775393,2400959708,2840853838]),f=i.create([1352829926,1548603684,1836072691,2053994217,0]),p=o.RIPEMD160=a.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=t+n,i=e[r];e[r]=(i<<8|i>>>24)&16711935|(i<<24|i>>>8)&4278255360}for(var a=this._hash.words,o=d.words,p=f.words,b=s.words,x=c.words,S=l.words,C=u.words,w,T,E,D,O,k=w=a[0],A=T=a[1],j=E=a[2],M=D=a[3],N=O=a[4],P,n=0;n<80;n+=1)P=w+e[t+b[n]]|0,n<16?P+=m(T,E,D)+o[0]:n<32?P+=h(T,E,D)+o[1]:n<48?P+=g(T,E,D)+o[2]:n<64?P+=_(T,E,D)+o[3]:P+=v(T,E,D)+o[4],P|=0,P=y(P,S[n]),P=P+O|0,w=O,O=D,D=y(E,10),E=T,T=P,P=k+e[t+x[n]]|0,n<16?P+=v(A,j,M)+p[0]:n<32?P+=_(A,j,M)+p[1]:n<48?P+=g(A,j,M)+p[2]:n<64?P+=h(A,j,M)+p[3]:P+=m(A,j,M)+p[4],P|=0,P=y(P,C[n]),P=P+N|0,k=N,N=M,M=y(j,10),j=A,A=P;P=a[1]+E+M|0,a[1]=a[2]+D+N|0,a[2]=a[3]+O+k|0,a[3]=a[4]+w+A|0,a[4]=a[0]+T+j|0,a[0]=P},_doFinalize:function(){var e=this._data,t=e.words,n=this._nDataBytes*8,r=e.sigBytes*8;t[r>>>5]|=128<<24-r%32,t[(r+64>>>9<<4)+14]=(n<<8|n>>>24)&16711935|(n<<24|n>>>8)&4278255360,e.sigBytes=(t.length+1)*4,this._process();for(var i=this._hash,a=i.words,o=0;o<5;o++){var s=a[o];a[o]=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360}return i},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function m(e,t,n){return e^t^n}function h(e,t,n){return e&t|~e&n}function g(e,t,n){return(e|~t)^n}function _(e,t,n){return e&n|t&~n}function v(e,t,n){return e^(t|~n)}function y(e,t){return e<>>32-t}n.RIPEMD160=a._createHelper(p),n.HmacRIPEMD160=a._createHmacHelper(p)})(Math),e.RIPEMD160})})),_=t(((e,t)=>{(function(n,i){typeof e==`object`?t.exports=e=i(r()):typeof define==`function`&&define.amd?define([`./core`],i):i(n.CryptoJS)})(e,function(e){(function(){var t=e,n=t.lib.Base,r=t.enc.Utf8,i=t.algo;i.HMAC=n.extend({init:function(e,t){e=this._hasher=new e.init,typeof t==`string`&&(t=r.parse(t));var n=e.blockSize,i=n*4;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var a=this._oKey=t.clone(),o=this._iKey=t.clone(),s=a.words,c=o.words,l=0;l{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),d(),_()):typeof define==`function`&&define.amd?define([`./core`,`./sha256`,`./hmac`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib,r=n.Base,i=n.WordArray,a=t.algo,o=a.SHA256,s=a.HMAC,c=a.PBKDF2=r.extend({cfg:r.extend({keySize:128/32,hasher:o,iterations:25e4}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=this.cfg,r=s.create(n.hasher,e),a=i.create(),o=i.create([1]),c=a.words,l=o.words,u=n.keySize,d=n.iterations;c.length{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),u(),_()):typeof define==`function`&&define.amd?define([`./core`,`./sha1`,`./hmac`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib,r=n.Base,i=n.WordArray,a=t.algo,o=a.MD5,s=a.EvpKDF=r.extend({cfg:r.extend({keySize:128/32,hasher:o,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n,r=this.cfg,a=r.hasher.create(),o=i.create(),s=o.words,c=r.keySize,l=r.iterations;s.length{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),y()):typeof define==`function`&&define.amd?define([`./core`,`./evpkdf`],i):i(n.CryptoJS)})(e,function(e){e.lib.Cipher||function(t){var n=e,r=n.lib,i=r.Base,a=r.WordArray,o=r.BufferedBlockAlgorithm,s=n.enc;s.Utf8;var c=s.Base64,l=n.algo.EvpKDF,u=r.Cipher=o.extend({cfg:i.extend(),createEncryptor:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)},createDecryptor:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)},init:function(e,t,n){this.cfg=this.cfg.extend(n),this._xformMode=e,this._key=t,this.reset()},reset:function(){o.reset.call(this),this._doReset()},process:function(e){return this._append(e),this._process()},finalize:function(e){return e&&this._append(e),this._doFinalize()},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function e(e){return typeof e==`string`?S:y}return function(t){return{encrypt:function(n,r,i){return e(r).encrypt(t,n,r,i)},decrypt:function(n,r,i){return e(r).decrypt(t,n,r,i)}}}}()});r.StreamCipher=u.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var d=n.mode={},f=r.BlockCipherMode=i.extend({createEncryptor:function(e,t){return this.Encryptor.create(e,t)},createDecryptor:function(e,t){return this.Decryptor.create(e,t)},init:function(e,t){this._cipher=e,this._iv=t}}),p=d.CBC=function(){var e=f.extend();e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize;n.call(this,e,t,i),r.encryptBlock(e,t),this._prevBlock=e.slice(t,t+i)}}),e.Decryptor=e.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize,a=e.slice(t,t+i);r.decryptBlock(e,t),n.call(this,e,t,i),this._prevBlock=a}});function n(e,n,r){var i,a=this._iv;a?(i=a,this._iv=t):i=this._prevBlock;for(var o=0;o>>2]&255;e.sigBytes-=t}};r.BlockCipher=u.extend({cfg:u.cfg.extend({mode:p,padding:h}),reset:function(){var e;u.reset.call(this);var t=this.cfg,n=t.iv,r=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=r.createEncryptor:(e=r.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,n&&n.words):(this._mode=e.call(r,this,n&&n.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:128/32});var g=r.CipherParams=i.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=n.format={},v=_.OpenSSL={stringify:function(e){var t,n=e.ciphertext,r=e.salt;return t=r?a.create([1398893684,1701076831]).concat(r).concat(n):n,t.toString(c)},parse:function(e){var t,n=c.parse(e),r=n.words;return r[0]==1398893684&&r[1]==1701076831&&(t=a.create(r.slice(2,4)),r.splice(0,4),n.sigBytes-=16),g.create({ciphertext:n,salt:t})}},y=r.SerializableCipher=i.extend({cfg:i.extend({format:v}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=e.createEncryptor(n,r),a=i.finalize(t),o=i.cfg;return g.create({ciphertext:a,key:n,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return typeof e==`string`?t.parse(e,this):e}}),b=n.kdf={},x=b.OpenSSL={execute:function(e,t,n,r,i){if(r||=a.random(64/8),i)var o=l.create({keySize:t+n,hasher:i}).compute(e,r);else var o=l.create({keySize:t+n}).compute(e,r);var s=a.create(o.words.slice(t),n*4);return o.sigBytes=t*4,g.create({key:o,iv:s,salt:r})}},S=r.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:x}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=r.kdf.execute(n,e.keySize,e.ivSize,r.salt,r.hasher);r.iv=i.iv;var a=y.encrypt.call(this,e,t,i.key,r);return a.mixIn(i),a},decrypt:function(e,t,n,r){r=this.cfg.extend(r),t=this._parse(t,r.format);var i=r.kdf.execute(n,e.keySize,e.ivSize,t.salt,r.hasher);return r.iv=i.iv,y.decrypt.call(this,e,t,i.key,r)}})}()})})),x=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),b()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return e.mode.CFB=function(){var t=e.lib.BlockCipherMode.extend();t.Encryptor=t.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize;n.call(this,e,t,i,r),this._prevBlock=e.slice(t,t+i)}}),t.Decryptor=t.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize,a=e.slice(t,t+i);n.call(this,e,t,i,r),this._prevBlock=a}});function n(e,t,n,r){var i,a=this._iv;a?(i=a.slice(0),this._iv=void 0):i=this._prevBlock,r.encryptBlock(i,0);for(var o=0;o{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),b()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return e.mode.CTR=function(){var t=e.lib.BlockCipherMode.extend();return t.Decryptor=t.Encryptor=t.extend({processBlock:function(e,t){var n=this._cipher,r=n.blockSize,i=this._iv,a=this._counter;i&&(a=this._counter=i.slice(0),this._iv=void 0);var o=a.slice(0);n.encryptBlock(o,0),a[r-1]=a[r-1]+1|0;for(var s=0;s{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),b()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return e.mode.CTRGladman=function(){var t=e.lib.BlockCipherMode.extend();function n(e){if((e>>24&255)==255){var t=e>>16&255,n=e>>8&255,r=e&255;t===255?(t=0,n===255?(n=0,r===255?r=0:++r):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=r}else e+=1<<24;return e}function r(e){return(e[0]=n(e[0]))===0&&(e[1]=n(e[1])),e}return t.Decryptor=t.Encryptor=t.extend({processBlock:function(e,t){var n=this._cipher,i=n.blockSize,a=this._iv,o=this._counter;a&&(o=this._counter=a.slice(0),this._iv=void 0),r(o);var s=o.slice(0);n.encryptBlock(s,0);for(var c=0;c{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),b()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return e.mode.OFB=function(){var t=e.lib.BlockCipherMode.extend();return t.Decryptor=t.Encryptor=t.extend({processBlock:function(e,t){var n=this._cipher,r=n.blockSize,i=this._iv,a=this._keystream;i&&(a=this._keystream=i.slice(0),this._iv=void 0),n.encryptBlock(a,0);for(var o=0;o{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),b()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return e.mode.ECB=function(){var t=e.lib.BlockCipherMode.extend();return t.Encryptor=t.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),t.Decryptor=t.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),t}(),e.mode.ECB})})),E=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),b()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return e.pad.AnsiX923={pad:function(e,t){var n=e.sigBytes,r=t*4,i=r-n%r,a=n+i-1;e.clamp(),e.words[a>>>2]|=i<<24-a%4*8,e.sigBytes+=i},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t}},e.pad.Ansix923})})),D=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),b()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return e.pad.Iso10126={pad:function(t,n){var r=n*4,i=r-t.sigBytes%r;t.concat(e.lib.WordArray.random(i-1)).concat(e.lib.WordArray.create([i<<24],1))},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t}},e.pad.Iso10126})})),O=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),b()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return e.pad.Iso97971={pad:function(t,n){t.concat(e.lib.WordArray.create([2147483648],1)),e.pad.ZeroPadding.pad(t,n)},unpad:function(t){e.pad.ZeroPadding.unpad(t),t.sigBytes--}},e.pad.Iso97971})})),k=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),b()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return e.pad.ZeroPadding={pad:function(e,t){var n=t*4;e.clamp(),e.sigBytes+=n-(e.sigBytes%n||n)},unpad:function(e){for(var t=e.words,n=e.sigBytes-1,n=e.sigBytes-1;n>=0;n--)if(t[n>>>2]>>>24-n%4*8&255){e.sigBytes=n+1;break}}},e.pad.ZeroPadding})})),A=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),b()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return e.pad.NoPadding={pad:function(){},unpad:function(){}},e.pad.NoPadding})})),j=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),b()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return(function(t){var n=e,r=n.lib.CipherParams,i=n.enc.Hex,a=n.format;a.Hex={stringify:function(e){return e.ciphertext.toString(i)},parse:function(e){var t=i.parse(e);return r.create({ciphertext:t})}}})(),e.format.Hex})})),M=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),s(),l(),y(),b()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.BlockCipher,r=t.algo,i=[],a=[],o=[],s=[],c=[],l=[],u=[],d=[],f=[],p=[];(function(){for(var e=[],t=0;t<256;t++)t<128?e[t]=t<<1:e[t]=t<<1^283;for(var n=0,r=0,t=0;t<256;t++){var m=r^r<<1^r<<2^r<<3^r<<4;m=m>>>8^m&255^99,i[n]=m,a[m]=n;var h=e[n],g=e[h],_=e[g],v=e[m]*257^m*16843008;o[n]=v<<24|v>>>8,s[n]=v<<16|v>>>16,c[n]=v<<8|v>>>24,l[n]=v;var v=_*16843009^g*65537^h*257^n*16843008;u[m]=v<<24|v>>>8,d[m]=v<<16|v>>>16,f[m]=v<<8|v>>>24,p[m]=v,n?(n=h^e[e[e[_^h]]],r^=e[e[r]]):n=r=1}})();var m=[0,1,2,4,8,16,32,64,128,27,54],h=r.AES=n.extend({_doReset:function(){var e;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var t=this._keyPriorReset=this._key,n=t.words,r=t.sigBytes/4,a=((this._nRounds=r+6)+1)*4,o=this._keySchedule=[],s=0;s6&&s%r==4&&(e=i[e>>>24]<<24|i[e>>>16&255]<<16|i[e>>>8&255]<<8|i[e&255]):(e=e<<8|e>>>24,e=i[e>>>24]<<24|i[e>>>16&255]<<16|i[e>>>8&255]<<8|i[e&255],e^=m[s/r|0]<<24),o[s]=o[s-r]^e);for(var c=this._invKeySchedule=[],l=0;l>>24]]^d[i[e>>>16&255]]^f[i[e>>>8&255]]^p[i[e&255]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,s,c,l,i)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,u,d,f,p,a);var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,i,a,o,s){for(var c=this._nRounds,l=e[t]^n[0],u=e[t+1]^n[1],d=e[t+2]^n[2],f=e[t+3]^n[3],p=4,m=1;m>>24]^i[u>>>16&255]^a[d>>>8&255]^o[f&255]^n[p++],g=r[u>>>24]^i[d>>>16&255]^a[f>>>8&255]^o[l&255]^n[p++],_=r[d>>>24]^i[f>>>16&255]^a[l>>>8&255]^o[u&255]^n[p++],v=r[f>>>24]^i[l>>>16&255]^a[u>>>8&255]^o[d&255]^n[p++];l=h,u=g,d=_,f=v}var h=(s[l>>>24]<<24|s[u>>>16&255]<<16|s[d>>>8&255]<<8|s[f&255])^n[p++],g=(s[u>>>24]<<24|s[d>>>16&255]<<16|s[f>>>8&255]<<8|s[l&255])^n[p++],_=(s[d>>>24]<<24|s[f>>>16&255]<<16|s[l>>>8&255]<<8|s[u&255])^n[p++],v=(s[f>>>24]<<24|s[l>>>16&255]<<16|s[u>>>8&255]<<8|s[d&255])^n[p++];e[t]=h,e[t+1]=g,e[t+2]=_,e[t+3]=v},keySize:256/32});t.AES=n._createHelper(h)})(),e.AES})})),N=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),s(),l(),y(),b()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib,r=n.WordArray,i=n.BlockCipher,a=t.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],c=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],u=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],d=a.DES=i.extend({_doReset:function(){for(var e=this._key.words,t=[],n=0;n<56;n++){var r=o[n]-1;t[n]=e[r>>>5]>>>31-r%32&1}for(var i=this._subKeys=[],a=0;a<16;a++){for(var l=i[a]=[],u=c[a],n=0;n<24;n++)l[n/6|0]|=t[(s[n]-1+u)%28]<<31-n%6,l[4+(n/6|0)]|=t[28+(s[n+24]-1+u)%28]<<31-n%6;l[0]=l[0]<<1|l[0]>>>31;for(var n=1;n<7;n++)l[n]=l[n]>>>(n-1)*4+3;l[7]=l[7]<<5|l[7]>>>27}for(var d=this._invSubKeys=[],n=0;n<16;n++)d[n]=i[15-n]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,n){this._lBlock=e[t],this._rBlock=e[t+1],f.call(this,4,252645135),f.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),f.call(this,1,1431655765);for(var r=0;r<16;r++){for(var i=n[r],a=this._lBlock,o=this._rBlock,s=0,c=0;c<8;c++)s|=l[c][((o^i[c])&u[c])>>>0];this._lBlock=o,this._rBlock=a^s}var d=this._lBlock;this._lBlock=this._rBlock,this._rBlock=d,f.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function f(e,t){var n=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=n,this._lBlock^=n<>>e^this._lBlock)&t;this._lBlock^=n,this._rBlock^=n<192.`);var t=e.slice(0,2),n=e.length<4?e.slice(0,2):e.slice(2,4),i=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=d.createEncryptor(r.create(t)),this._des2=d.createEncryptor(r.create(n)),this._des3=d.createEncryptor(r.create(i))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:192/32,ivSize:64/32,blockSize:64/32});t.TripleDES=i._createHelper(m)})(),e.TripleDES})})),P=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),s(),l(),y(),b()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.StreamCipher,r=t.algo,i=r.RC4=n.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes,r=this._S=[],i=0;i<256;i++)r[i]=i;for(var i=0,a=0;i<256;i++){var o=i%n,s=t[o>>>2]>>>24-o%4*8&255;a=(a+r[i]+s)%256;var c=r[i];r[i]=r[a],r[a]=c}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=a.call(this)},keySize:256/32,ivSize:0});function a(){for(var e=this._S,t=this._i,n=this._j,r=0,i=0;i<4;i++){t=(t+1)%256,n=(n+e[t])%256;var a=e[t];e[t]=e[n],e[n]=a,r|=e[(e[t]+e[n])%256]<<24-i*8}return this._i=t,this._j=n,r}t.RC4=n._createHelper(i);var o=r.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)a.call(this)}});t.RC4Drop=n._createHelper(o)})(),e.RC4})})),F=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),s(),l(),y(),b()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.StreamCipher,r=t.algo,i=[],a=[],o=[],s=r.Rabbit=n.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,n=0;n<4;n++)e[n]=(e[n]<<8|e[n]>>>24)&16711935|(e[n]<<24|e[n]>>>8)&4278255360;var r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,e[0]&4294901760|e[1]&65535,e[3]<<16|e[3]>>>16,e[1]&4294901760|e[2]&65535,e[0]<<16|e[0]>>>16,e[2]&4294901760|e[3]&65535,e[1]<<16|e[1]>>>16,e[3]&4294901760|e[0]&65535];this._b=0;for(var n=0;n<4;n++)c.call(this);for(var n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var a=t.words,o=a[0],s=a[1],l=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360,u=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360,d=l>>>16|u&4294901760,f=u<<16|l&65535;i[0]^=l,i[1]^=d,i[2]^=u,i[3]^=f,i[4]^=l,i[5]^=d,i[6]^=u,i[7]^=f;for(var n=0;n<4;n++)c.call(this)}},_doProcessBlock:function(e,t){var n=this._X;c.call(this),i[0]=n[0]^n[5]>>>16^n[3]<<16,i[1]=n[2]^n[7]>>>16^n[5]<<16,i[2]=n[4]^n[1]>>>16^n[7]<<16,i[3]=n[6]^n[3]>>>16^n[1]<<16;for(var r=0;r<4;r++)i[r]=(i[r]<<8|i[r]>>>24)&16711935|(i[r]<<24|i[r]>>>8)&4278255360,e[t+r]^=i[r]},blockSize:128/32,ivSize:64/32});function c(){for(var e=this._X,t=this._C,n=0;n<8;n++)a[n]=t[n];t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0;for(var n=0;n<8;n++){var r=e[n]+t[n],i=r&65535,s=r>>>16;o[n]=((i*i>>>17)+i*s>>>15)+s*s^((r&4294901760)*r|0)+((r&65535)*r|0)}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}t.Rabbit=n._createHelper(s)})(),e.Rabbit})})),I=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),s(),l(),y(),b()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.StreamCipher,r=t.algo,i=[],a=[],o=[],s=r.RabbitLegacy=n.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,n=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,e[0]&4294901760|e[1]&65535,e[3]<<16|e[3]>>>16,e[1]&4294901760|e[2]&65535,e[0]<<16|e[0]>>>16,e[2]&4294901760|e[3]&65535,e[1]<<16|e[1]>>>16,e[3]&4294901760|e[0]&65535];this._b=0;for(var i=0;i<4;i++)c.call(this);for(var i=0;i<8;i++)r[i]^=n[i+4&7];if(t){var a=t.words,o=a[0],s=a[1],l=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360,u=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360,d=l>>>16|u&4294901760,f=u<<16|l&65535;r[0]^=l,r[1]^=d,r[2]^=u,r[3]^=f,r[4]^=l,r[5]^=d,r[6]^=u,r[7]^=f;for(var i=0;i<4;i++)c.call(this)}},_doProcessBlock:function(e,t){var n=this._X;c.call(this),i[0]=n[0]^n[5]>>>16^n[3]<<16,i[1]=n[2]^n[7]>>>16^n[5]<<16,i[2]=n[4]^n[1]>>>16^n[7]<<16,i[3]=n[6]^n[3]>>>16^n[1]<<16;for(var r=0;r<4;r++)i[r]=(i[r]<<8|i[r]>>>24)&16711935|(i[r]<<24|i[r]>>>8)&4278255360,e[t+r]^=i[r]},blockSize:128/32,ivSize:64/32});function c(){for(var e=this._X,t=this._C,n=0;n<8;n++)a[n]=t[n];t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0;for(var n=0;n<8;n++){var r=e[n]+t[n],i=r&65535,s=r>>>16;o[n]=((i*i>>>17)+i*s>>>15)+s*s^((r&4294901760)*r|0)+((r&65535)*r|0)}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}t.RabbitLegacy=n._createHelper(s)})(),e.RabbitLegacy})})),L=t(((e,t)=>{(function(n,i,a){typeof e==`object`?t.exports=e=i(r(),s(),l(),y(),b()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],i):i(n.CryptoJS)})(e,function(e){return(function(){var t=e,n=t.lib.BlockCipher,r=t.algo;let i=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function s(e,t){let n=t>>24&255,r=t>>16&255,i=t>>8&255,a=t&255,o=e.sbox[0][n]+e.sbox[1][r];return o^=e.sbox[2][i],o+=e.sbox[3][a],o}function c(e,t,n){let r=t,i=n,a;for(let t=0;t<16;++t)r^=e.pbox[t],i=s(e,r)^i,a=r,r=i,i=a;return a=r,r=i,i=a,i^=e.pbox[16],r^=e.pbox[17],{left:r,right:i}}function l(e,t,n){let r=t,i=n,a;for(let t=17;t>1;--t)r^=e.pbox[t],i=s(e,r)^i,a=r,r=i,i=a;return a=r,r=i,i=a,i^=e.pbox[1],r^=e.pbox[0],{left:r,right:i}}function u(e,t,n){for(let t=0;t<4;t++){e.sbox[t]=[];for(let n=0;n<256;n++)e.sbox[t][n]=a[t][n]}let r=0;for(let a=0;a<18;a++)e.pbox[a]=i[a]^t[r],r++,r>=n&&(r=0);let o=0,s=0,l=0;for(let t=0;t<18;t+=2)l=c(e,o,s),o=l.left,s=l.right,e.pbox[t]=o,e.pbox[t+1]=s;for(let t=0;t<4;t++)for(let n=0;n<256;n+=2)l=c(e,o,s),o=l.left,s=l.right,e.sbox[t][n]=o,e.sbox[t][n+1]=s;return!0}var d=r.Blowfish=n.extend({_doReset:function(){if(this._keyPriorReset!==this._key){var e=this._keyPriorReset=this._key,t=e.words;u(o,t,e.sigBytes/4)}},encryptBlock:function(e,t){var n=c(o,e[t],e[t+1]);e[t]=n.left,e[t+1]=n.right},decryptBlock:function(e,t){var n=l(o,e[t],e[t+1]);e[t]=n.left,e[t+1]=n.right},blockSize:64/32,keySize:128/32,ivSize:64/32});t.Blowfish=n._createHelper(d)})(),e.Blowfish})})),R=t(((e,t)=>{(function(n,R,z){typeof e==`object`?t.exports=e=R(r(),i(),a(),o(),s(),c(),l(),u(),d(),f(),p(),m(),h(),g(),_(),v(),y(),b(),x(),S(),C(),w(),T(),E(),D(),O(),k(),A(),j(),M(),N(),P(),F(),I(),L()):typeof define==`function`&&define.amd?define(`./core,./x64-core,./lib-typedarrays,./enc-utf16,./enc-base64,./enc-base64url,./md5,./sha1,./sha256,./sha224,./sha512,./sha384,./sha3,./ripemd160,./hmac,./pbkdf2,./evpkdf,./cipher-core,./mode-cfb,./mode-ctr,./mode-ctr-gladman,./mode-ofb,./mode-ecb,./pad-ansix923,./pad-iso10126,./pad-iso97971,./pad-zeropadding,./pad-nopadding,./format-hex,./aes,./tripledes,./rc4,./rabbit,./rabbit-legacy,./blowfish`.split(`,`),R):n.CryptoJS=R(n.CryptoJS)})(e,function(e){return e})}));export{R as t}; \ No newline at end of file diff --git a/docs/assets/vendor-icons-B6ER66fi.js b/docs/assets/vendor-icons-B6ER66fi.js new file mode 100644 index 0000000..a052407 --- /dev/null +++ b/docs/assets/vendor-icons-B6ER66fi.js @@ -0,0 +1 @@ +import{It as e}from"./game-logic-B_TBzmsj.js";var t=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),n=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),r=e=>{let t=n(e);return t.charAt(0).toUpperCase()+t.slice(1)},i=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),a=e=>e===``,o={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`},s=({name:n,iconNode:s,absoluteStrokeWidth:c,"absolute-stroke-width":l,strokeWidth:u,"stroke-width":d,size:f=o.width,color:p=o.stroke,...m},{slots:h})=>e(`svg`,{...o,...m,width:f,height:f,stroke:p,"stroke-width":a(c)||a(l)||c===!0||l===!0?Number(u||d||o[`stroke-width`])*24/Number(f):u||d||o[`stroke-width`],class:i(`lucide`,m.class,...n?[`lucide-${t(r(n))}-icon`,`lucide-${t(n)}`]:[`lucide-icon`])},[...s.map(t=>e(...t)),...h.default?[h.default()]:[]]),c=(t,n)=>(r,{slots:i,attrs:a})=>e(s,{...a,...r,iconNode:n,name:t},i),l=c(`building-2`,[[`path`,{d:`M10 12h4`,key:`a56b0p`}],[`path`,{d:`M10 8h4`,key:`1sr2af`}],[`path`,{d:`M14 21v-3a2 2 0 0 0-4 0v3`,key:`1rgiei`}],[`path`,{d:`M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2`,key:`secmi2`}],[`path`,{d:`M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16`,key:`16ra0t`}]]),u=c(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),d=c(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),f=c(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),p=c(`chevrons-left`,[[`path`,{d:`m11 17-5-5 5-5`,key:`13zhaf`}],[`path`,{d:`m18 17-5-5 5-5`,key:`h8a8et`}]]),m=c(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),h=c(`clock`,[[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),g=c(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),_=c(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),v=c(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),y=c(`flask-conical`,[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]),b=c(`fuel`,[[`path`,{d:`M14 13h2a2 2 0 0 1 2 2v2a2 2 0 0 0 4 0v-6.998a2 2 0 0 0-.59-1.42L18 5`,key:`1wtuz0`}],[`path`,{d:`M14 21V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v16`,key:`e09ifn`}],[`path`,{d:`M2 21h13`,key:`1x0fut`}],[`path`,{d:`M3 9h11`,key:`1p7c0w`}]]),x=c(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),S=c(`grid-3x3`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M3 15h18`,key:`5xshup`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]]),C=c(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),w=c(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),T=c(`languages`,[[`path`,{d:`m5 8 6 6`,key:`1wu5hv`}],[`path`,{d:`m4 14 6-6 2-3`,key:`1k1g8d`}],[`path`,{d:`M2 5h12`,key:`or177f`}],[`path`,{d:`M7 2h1`,key:`1t2jsx`}],[`path`,{d:`m22 22-5-10-5 10`,key:`don7ne`}],[`path`,{d:`M14 18h6`,key:`1m8k6r`}]]),E=c(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),D=c(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),O=c(`mail`,[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]),k=c(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),A=c(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),j=c(`octagon-x`,[[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z`,key:`2d38gg`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),M=c(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),N=c(`panel-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]]),P=c(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),F=c(`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`}]]),I=c(`recycle`,[[`path`,{d:`M7 19H4.815a1.83 1.83 0 0 1-1.57-.881 1.785 1.785 0 0 1-.004-1.784L7.196 9.5`,key:`x6z5xu`}],[`path`,{d:`M11 19h8.203a1.83 1.83 0 0 0 1.556-.89 1.784 1.784 0 0 0 0-1.775l-1.226-2.12`,key:`1x4zh5`}],[`path`,{d:`m14 16-3 3 3 3`,key:`f6jyew`}],[`path`,{d:`M8.293 13.596 7.196 9.5 3.1 10.598`,key:`wf1obh`}],[`path`,{d:`m9.344 5.811 1.093-1.892A1.83 1.83 0 0 1 11.985 3a1.784 1.784 0 0 1 1.546.888l3.943 6.843`,key:`9tzpgr`}],[`path`,{d:`m13.378 9.633 4.096 1.098 1.097-4.096`,key:`1oe83g`}]]),L=c(`rocket`,[[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z`,key:`m3kijz`}],[`path`,{d:`m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z`,key:`1fmvmk`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0`,key:`1f8sc4`}],[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}]]),R=c(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),z=c(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),B=c(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),V=c(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),H=c(`ship`,[[`path`,{d:`M12 10.189V14`,key:`1p8cqu`}],[`path`,{d:`M12 2v3`,key:`qbqxhf`}],[`path`,{d:`M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6`,key:`qpkstq`}],[`path`,{d:`M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76`,key:`7tigtc`}],[`path`,{d:`M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1`,key:`1924j5`}]]),U=c(`skull`,[[`path`,{d:`m12.5 17-.5-1-.5 1h1z`,key:`3me087`}],[`path`,{d:`M15 22a1 1 0 0 0 1-1v-1a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20v1a1 1 0 0 0 1 1z`,key:`1o5pge`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}]]),W=c(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),G=c(`swords`,[[`polyline`,{points:`14.5 17.5 3 6 3 3 6 3 17.5 14.5`,key:`1hfsw2`}],[`line`,{x1:`13`,x2:`19`,y1:`19`,y2:`13`,key:`1vrmhu`}],[`line`,{x1:`16`,x2:`20`,y1:`16`,y2:`20`,key:`1bron3`}],[`line`,{x1:`19`,x2:`21`,y1:`21`,y2:`19`,key:`13pww6`}],[`polyline`,{points:`14.5 6.5 18 3 21 3 21 6 17.5 9.5`,key:`hbey2j`}],[`line`,{x1:`5`,x2:`9`,y1:`14`,y2:`18`,key:`1hf58s`}],[`line`,{x1:`7`,x2:`4`,y1:`17`,y2:`20`,key:`pidxm4`}],[`line`,{x1:`3`,x2:`5`,y1:`19`,y2:`21`,key:`1pehsh`}]]),K=c(`sword`,[[`path`,{d:`m11 19-6-6`,key:`s7kpr`}],[`path`,{d:`m5 21-2-2`,key:`1kw20b`}],[`path`,{d:`m8 16-4 4`,key:`1oqv8h`}],[`path`,{d:`M9.5 17.5 21 6V3h-3L6.5 14.5`,key:`pkxemp`}]]),q=c(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),J=c(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Y=c(`trophy`,[[`path`,{d:`M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978`,key:`1n3hpd`}],[`path`,{d:`M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978`,key:`rfe1zi`}],[`path`,{d:`M18 9h1.5a1 1 0 0 0 0-5H18`,key:`7xy6bh`}],[`path`,{d:`M4 22h16`,key:`57wxv0`}],[`path`,{d:`M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z`,key:`1mhfuq`}],[`path`,{d:`M6 9H4.5a1 1 0 0 1 0-5H6`,key:`tex48p`}]]),X=c(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),Z=c(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),Q=c(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),$=c(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]);export{w as A,m as B,j as C,D,O as E,y as F,l as G,f as H,v as I,_ as L,S as M,x as N,E as O,b as P,g as R,M as S,k as T,d as U,p as V,u as W,L as _,Y as a,P as b,K as c,U as d,H as f,R as g,z as h,X as i,C as j,T as k,G as l,B as m,Q as n,J as o,V as p,Z as r,q as s,$ as t,W as u,I as v,A as w,N as x,F as y,h as z}; \ No newline at end of file diff --git a/docs/assets/vendor-others-BMPyaZWq.css b/docs/assets/vendor-others-BMPyaZWq.css new file mode 100644 index 0000000..59f2389 --- /dev/null +++ b/docs/assets/vendor-others-BMPyaZWq.css @@ -0,0 +1 @@ +html[dir=ltr],[data-sonner-toaster][dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0}html[dir=rtl],[data-sonner-toaster][dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto}[data-sonner-toaster]{width:var(--width);--gray1:#fcfcfc;--gray2:#f8f8f8;--gray3:#f3f3f3;--gray4:#ededed;--gray5:#e8e8e8;--gray6:#e2e2e2;--gray7:#dbdbdb;--gray8:#c7c7c7;--gray9:#8f8f8f;--gray10:#858585;--gray11:#6f6f6f;--gray12:#171717;--border-radius:8px;box-sizing:border-box;z-index:999999999;outline:none;margin:0;padding:0;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;list-style:none;transition:transform .4s;position:fixed}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translate(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift)*var(--gap));z-index:var(--z-index);opacity:0;transform:var(--y);touch-action:none;box-sizing:border-box;overflow-wrap:anywhere;outline:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;position:absolute}[data-sonner-toast][data-styled=true]{background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);width:var(--width);align-items:center;gap:6px;padding:16px;font-size:13px;display:flex;box-shadow:0 4px 12px #0000001a}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}[data-sonner-toast][data-y-position=top]{--y:translateY(-100%);--lift:1;--lift-amount:calc(1*var(--gap));top:0}[data-sonner-toast][data-y-position=bottom]{--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift)*var(--gap));bottom:0}[data-sonner-toast][data-styled=true] [data-description]{color:#3f3f3f;font-weight:400;line-height:1.4}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{color:inherit;font-weight:500;line-height:1.5}[data-sonner-toast][data-styled=true] [data-icon]{width:16px;height:16px;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end);flex-shrink:0;justify-content:flex-start;align-items:center;display:flex;position:relative}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform-origin:50%;animation:.3s forwards sonner-fade-in;transform:scale(.8)}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{flex-direction:column;gap:2px;display:flex}[data-sonner-toast][data-styled=true] [data-button]{height:24px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);cursor:pointer;border:none;border-radius:4px;outline:none;flex-shrink:0;align-items:center;padding-left:8px;padding-right:8px;font-size:12px;font-weight:500;transition:opacity .4s,box-shadow .2s;display:flex}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px #0006}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:#00000014}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:#ffffff4d}[data-sonner-toaster] [data-close-button-position=top-left]{--toast-close-button-left:0;--toast-close-button-right:unset;--toast-close-button-top:0;--toast-close-button-bottom:unset;--toast-close-button-transform:translate(-35%,-35%)}[data-sonner-toaster] [data-close-button-position=top-right]{--toast-close-button-left:unset;--toast-close-button-right:0;--toast-close-button-top:0;--toast-close-button-bottom:unset;--toast-close-button-transform:translate(35%,-35%)}[data-sonner-toaster] [data-close-button-position=bottom-left]{--toast-close-button-left:0;--toast-close-button-right:unset;--toast-close-button-top:unset;--toast-close-button-bottom:0;--toast-close-button-transform:translate(-35%,35%)}[data-sonner-toaster] [data-close-button-position=bottom-right]{--toast-close-button-left:unset;--toast-close-button-right:0;--toast-close-button-top:unset;--toast-close-button-bottom:0;--toast-close-button-transform:translate(35%,35%)}[data-sonner-toast][data-styled=true] [data-close-button]{left:var(--toast-close-button-left);right:var(--toast-close-button-right);top:var(--toast-close-button-top);bottom:var(--toast-close-button-bottom);width:20px;height:20px;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);cursor:pointer;z-index:1;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:opacity .1s,background .2s,border-color .2s;display:flex;position:absolute}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]:before{content:"";z-index:-1;height:100%;position:absolute;left:-100%;right:-100%}[data-sonner-toast][data-y-position=top][data-swiping=true]:before{bottom:50%;transform:scaleY(3)translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]:before{top:50%;transform:scaleY(3)translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]:before{content:"";position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]:after{content:"";height:calc(var(--gap) + 1px);width:100%;position:absolute;bottom:100%;left:0}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before)*.05 + 1;--y:translateY(calc(var(--lift-amount)*var(--toasts-before)))scale(calc(-1*var(--toasts-before)*.05 + 1));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift)*var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift)*-100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift)*var(--offset) + var(--lift)*-100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]:before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y)translateY(var(--swipe-amount-y,0px))translateX(var(--swipe-amount-x,0px));transition:none}[data-sonner-toast][data-swiped=true]{-webkit-user-select:none;user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y)translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y)translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y)translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y)translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y)translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y)translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y)translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y)translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%;position:fixed}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left)*-1)}[data-sonner-toaster] [data-sonner-toast]{width:calc(100% - var(--mobile-offset-left)*2);left:0;right:0}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:calc(var(--mobile-offset-bottom) + max(env(safe-area-inset-bottom),0px))}[data-sonner-toaster][data-y-position=top]{top:calc(var(--mobile-offset-top) + max(env(safe-area-inset-top),0px))}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:#ecfdf3;--success-border:#bffcd9;--success-text:#008a2e;--info-bg:#f0f8ff;--info-border:#dde7fd;--info-text:#0973dc;--warning-bg:#fffcf0;--warning-border:#fbeeb1;--warning-text:#dc7609;--error-bg:#fff0f0;--error-border:#ffe0e1;--error-text:#e60000}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:#333;--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:#1f1f1f;--normal-border:#333;--normal-border-hover:#404040;--normal-text:var(--gray1);--success-bg:#001f0f;--success-border:#003d1c;--success-text:#59f3a6;--info-bg:#000d1f;--info-border:#19233e;--info-text:#5896f3;--warning-bg:#1d1f00;--warning-border:#2e2e00;--warning-text:#f3cf58;--error-bg:#2d0607;--error-border:#4d0408;--error-text:#ff9ea1}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);z-index:10;position:absolute;inset:0}.sonner-loading-wrapper[data-visible=false]{transform-origin:50%;animation:.2s forwards sonner-fade-out}.sonner-spinner{height:var(--size);width:var(--size);position:relative;top:50%;left:50%}.sonner-loading-bar{background:var(--gray11);border-radius:6px;width:24%;height:8%;animation:1.2s linear infinite sonner-spin;position:absolute;top:-3.9%;left:-10%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg)translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg)translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg)translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg)translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg)translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg)translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg)translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg)translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg)translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg)translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg)translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg)translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{transform-origin:50%;transition:opacity .2s,transform .2s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8)translate(-50%,-50%)} diff --git a/docs/assets/vendor-others-DiSZfaku.js b/docs/assets/vendor-others-DiSZfaku.js new file mode 100644 index 0000000..cbf55f5 --- /dev/null +++ b/docs/assets/vendor-others-DiSZfaku.js @@ -0,0 +1 @@ +import{At as e,Cn as t,Ct as n,Dn as r,Dt as i,En as a,Et as o,Ht as s,Jt as c,Kt as l,Lt as u,Mt as d,Nt as f,On as p,Ot as m,Pt as h,Qt as g,Rt as _,Sn as v,Tn as y,Ut as b,Vt as x,Wt as S,Xt as C,Yt as w,_n as T,cn as E,fn as D,hn as O,in as k,jt as A,kt as j,mn as M,nn as N,on as ee,pn as te,sn as P,tn as ne,un as F,vn as re,xn as I,zt as L}from"./game-logic-B_TBzmsj.js";function ie(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e;const se=ae,ce=(e,t)=>n=>{if(t?.variants==null)return se(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=oe(t)||oe(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return se(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)};function le(e){return typeof e==`string`?`'${e}'`:new ue().serialize(e)}var ue=function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?e.localeCompare(t):n===`number`&&r===`number`?e-t:String.prototype.localeCompare.call(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}return this.serializeObjectEntries(r,Object.entries(e))}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t?.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;ethis.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e}();function de(e,t){return e===t||le(e)===le(t)}function fe(e,t){let n=re();return N(()=>{n.value=e()},{...t,flush:t?.flush??`sync`}),M(n)}function R(e){return E()?(D(e),!0):!1}function pe(){let e=new Set,t=t=>{e.delete(t)};return{on:n=>{e.add(n);let r=()=>t(n);return R(r),{off:r}},off:t,trigger:(...t)=>Promise.all(Array.from(e).map(e=>e(...t))),clear:()=>{e.clear()}}}function me(e){let t=!1,n,r=P(!0);return(...i)=>(t||=(n=r.run(()=>e(...i)),!0),n)}function he(e){let t=0,n,r,i=()=>{--t,r&&t<=0&&(r.stop(),n=void 0,r=void 0)};return(...a)=>(t+=1,r||(r=P(!0),n=r.run(()=>e(...a))),R(i),n)}function ge(e){return F(e)?te(new Proxy({},{get(n,r,i){return t(Reflect.get(e.value,r,i))},set(t,n,r){return F(e.value[n])&&!F(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}})):te(e)}function _e(e){return ge(o(e))}function ve(e,...t){let n=t.flat(),r=n[0];return _e(()=>typeof r==`function`?Object.fromEntries(Object.entries(I(e)).filter(([e,t])=>!r(v(t),e))):Object.fromEntries(Object.entries(I(e)).filter(e=>!n.includes(e[0]))))}var ye=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var z=e=>e!==void 0,be=Object.prototype.toString,xe=e=>be.call(e)===`[object Object]`,Se=Ce();function Ce(){return ye&&(window==null?void 0:window.navigator)?.userAgent&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||(window==null?void 0:window.navigator)?.maxTouchPoints>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function we(e){return e||h()}function Te(e){return Array.isArray(e)?e:[e]}function Ee(e,t=1e4){return ee((n,r)=>{let i=v(e),a,o=()=>setTimeout(()=>{i=v(e),r()},v(t));return R(()=>{clearTimeout(a)}),{get(){return n(),i},set(e){i=e,r(),clearTimeout(a),a=o()}}})}function De(e,t){we(t)&&b(e,t)}function Oe(e,t,n={}){let{immediate:r=!0,immediateCallback:i=!1}=n,a=re(!1),o=null;function s(){o&&=(clearTimeout(o),null)}function c(){a.value=!1,s()}function l(...n){i&&e(),s(),a.value=!0,o=setTimeout(()=>{a.value=!1,o=null,e(...n)},v(t))}return r&&(a.value=!0,ye&&l()),R(c),{isPending:M(a),start:l,stop:c}}function ke(e,t,n){return ne(e,t,{...n,immediate:!0})}function Ae(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function je(e,t,n=`.`,r){if(!Ae(t))return je(e,{},n,r);let i=Object.assign({},t);for(let t in e){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(Array.isArray(a)&&Array.isArray(i[t])?i[t]=[...a,...i[t]]:Ae(a)&&Ae(i[t])?i[t]=je(a,i[t],(n?`${n}.`:``)+t.toString(),r):i[t]=a))}return i}function Me(e){return(...t)=>t.reduce((t,n)=>je(t,n,``,e),{})}var Ne=Me(),Pe=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},Fe=new WeakMap,Ie=new WeakMap,Le={},Re=0,ze=function(e){return e&&(e.host||ze(e.parentNode))},Be=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=ze(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},Ve=function(e,t,n,r){var i=Be(t,Array.isArray(e)?e:[e]);Le[n]||(Le[n]=new WeakMap);var a=Le[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(Fe.get(e)||0)+1,l=(a.get(e)||0)+1;Fe.set(e,c),a.set(e,l),o.push(e),c===1&&i&&Ie.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),Re++,function(){o.forEach(function(e){var t=Fe.get(e)-1,i=a.get(e)-1;Fe.set(e,t),a.set(e,i),t||(Ie.has(e)||e.removeAttribute(r),Ie.delete(e)),i||e.removeAttribute(n)}),Re--,Re||(Fe=new WeakMap,Fe=new WeakMap,Ie=new WeakMap,Le={})}},He=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Pe(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Ve(r,i,n,`aria-hidden`)):function(){return null}},Ue=[`top`,`right`,`bottom`,`left`],B=Math.min,V=Math.max,We=Math.round,Ge=Math.floor,H=e=>({x:e,y:e}),Ke={left:`right`,right:`left`,bottom:`top`,top:`bottom`},qe={start:`end`,end:`start`};function Je(e,t,n){return V(e,B(t,n))}function U(e,t){return typeof e==`function`?e(t):e}function W(e){return e.split(`-`)[0]}function Ye(e){return e.split(`-`)[1]}function Xe(e){return e===`x`?`y`:`x`}function Ze(e){return e===`y`?`height`:`width`}var Qe=new Set([`top`,`bottom`]);function G(e){return Qe.has(W(e))?`y`:`x`}function $e(e){return Xe(G(e))}function et(e,t,n){n===void 0&&(n=!1);let r=Ye(e),i=$e(e),a=Ze(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=lt(o)),[o,lt(o)]}function tt(e){let t=lt(e);return[nt(e),t,nt(t)]}function nt(e){return e.replace(/start|end/g,e=>qe[e])}var rt=[`left`,`right`],it=[`right`,`left`],at=[`top`,`bottom`],ot=[`bottom`,`top`];function st(e,t,n){switch(e){case`top`:case`bottom`:return n?t?it:rt:t?rt:it;case`left`:case`right`:return t?at:ot;default:return[]}}function ct(e,t,n,r){let i=Ye(e),a=st(W(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(nt)))),a}function lt(e){return e.replace(/left|right|bottom|top/g,e=>Ke[e])}function ut(e){return{top:0,right:0,bottom:0,left:0,...e}}function dt(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:ut(e)}function ft(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function pt(e,t,n){let{reference:r,floating:i}=e,a=G(t),o=$e(t),s=Ze(o),c=W(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(Ye(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}var mt=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=a.filter(Boolean),c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=pt(l,r,c),f=r,p={},m=0;for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=U(e,t)||{};if(l==null)return{};let d=dt(u),f={x:n,y:r},p=$e(i),m=Ze(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=B(d[_],T),D=B(d[v],T),O=E,k=C-h[m]-D,A=C/2-h[m]/2+w,j=Je(O,A,k),M=!c.arrow&&Ye(i)!=null&&A!==j&&a.reference[m]/2-(Ae<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==G(t))||T.every(e=>G(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=G(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function vt(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function yt(e){return Ue.some(t=>e[t]>=0)}var bt=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n}=t,{strategy:r=`referenceHidden`,...i}=U(e,t);switch(r){case`referenceHidden`:{let e=vt(await ht(t,{...i,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:yt(e)}}}case`escaped`:{let e=vt(await ht(t,{...i,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:yt(e)}}}default:return{}}}}},xt=new Set([`left`,`top`]);async function St(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=W(n),s=Ye(n),c=G(n)===`y`,l=xt.has(o)?-1:1,u=a&&c?-1:1,d=U(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Ct=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await St(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},wt=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i}=t,{mainAxis:a=!0,crossAxis:o=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=U(e,t),l={x:n,y:r},u=await ht(t,c),d=G(W(i)),f=Xe(d),p=l[f],m=l[d];if(a){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=p+u[e],r=p-u[t];p=Je(n,p,r)}if(o){let e=d===`y`?`top`:`left`,t=d===`y`?`bottom`:`right`,n=m+u[e],r=m-u[t];m=Je(n,m,r)}let h=s.fn({...t,[f]:p,[d]:m});return{...h,data:{x:h.x-n,y:h.y-r,enabled:{[f]:a,[d]:o}}}}}},Tt=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=U(e,t),u={x:n,y:r},d=G(i),f=Xe(d),p=u[f],m=u[d],h=U(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=xt.has(W(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},Et=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=U(e,t),u=await ht(t,l),d=W(i),f=Ye(i),p=G(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=B(h-u[g],v),x=B(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=V(u.left,0),t=V(u.right,0),n=V(u.top,0),r=V(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:V(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:V(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function Dt(){return typeof window<`u`}function Ot(e){return kt(e)?(e.nodeName||``).toLowerCase():`#document`}function K(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function q(e){return((kt(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function kt(e){return Dt()?e instanceof Node||e instanceof K(e).Node:!1}function J(e){return Dt()?e instanceof Element||e instanceof K(e).Element:!1}function Y(e){return Dt()?e instanceof HTMLElement||e instanceof K(e).HTMLElement:!1}function At(e){return!Dt()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof K(e).ShadowRoot}var jt=new Set([`inline`,`contents`]);function Mt(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=X(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!jt.has(i)}var Nt=new Set([`table`,`td`,`th`]);function Pt(e){return Nt.has(Ot(e))}var Ft=[`:popover-open`,`:modal`];function It(e){return Ft.some(t=>{try{return e.matches(t)}catch{return!1}})}var Lt=[`transform`,`translate`,`scale`,`rotate`,`perspective`],Rt=[`transform`,`translate`,`scale`,`rotate`,`perspective`,`filter`],zt=[`paint`,`layout`,`strict`,`content`];function Bt(e){let t=Ht(),n=J(e)?X(e):e;return Lt.some(e=>n[e]?n[e]!==`none`:!1)||(n.containerType?n.containerType!==`normal`:!1)||!t&&(n.backdropFilter?n.backdropFilter!==`none`:!1)||!t&&(n.filter?n.filter!==`none`:!1)||Rt.some(e=>(n.willChange||``).includes(e))||zt.some(e=>(n.contain||``).includes(e))}function Vt(e){let t=Z(e);for(;Y(t)&&!Wt(t);){if(Bt(t))return t;if(It(t))return null;t=Z(t)}return null}function Ht(){return typeof CSS>`u`||!CSS.supports?!1:CSS.supports(`-webkit-backdrop-filter`,`none`)}var Ut=new Set([`html`,`body`,`#document`]);function Wt(e){return Ut.has(Ot(e))}function X(e){return K(e).getComputedStyle(e)}function Gt(e){return J(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Z(e){if(Ot(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||At(e)&&e.host||q(e);return At(t)?t.host:t}function Kt(e){let t=Z(e);return Wt(t)?e.ownerDocument?e.ownerDocument.body:e.body:Y(t)&&Mt(t)?t:Kt(t)}function qt(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Kt(e),i=r===e.ownerDocument?.body,a=K(r);if(i){let e=Jt(a);return t.concat(a,a.visualViewport||[],Mt(r)?r:[],e&&n?qt(e):[])}return t.concat(r,qt(r,[],n))}function Jt(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Yt(e){let t=X(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=Y(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=We(n)!==a||We(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function Xt(e){return J(e)?e:e.contextElement}function Zt(e){let t=Xt(e);if(!Y(t))return H(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=Yt(t),o=(a?We(n.width):n.width)/r,s=(a?We(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var Qt=H(0);function $t(e){let t=K(e);return!Ht()||!t.visualViewport?Qt:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function en(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==K(e)?!1:t}function tn(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=Xt(e),o=H(1);t&&(r?J(r)&&(o=Zt(r)):o=Zt(e));let s=en(a,n,r)?$t(a):H(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=K(a),t=r&&J(r)?K(r):r,n=e,i=Jt(n);for(;i&&r&&t!==n;){let e=Zt(i),t=i.getBoundingClientRect(),r=X(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=K(i),i=Jt(n)}}return ft({width:u,height:d,x:c,y:l})}function nn(e,t){let n=Gt(e).scrollLeft;return t?t.left+n:tn(q(e)).left+n}function rn(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-nn(e,n),y:n.top+t.scrollTop}}function an(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=q(r),s=t?It(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=H(1),u=H(0),d=Y(r);if((d||!d&&!a)&&((Ot(r)!==`body`||Mt(o))&&(c=Gt(r)),Y(r))){let e=tn(r);l=Zt(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?rn(o,c):H(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function on(e){return Array.from(e.getClientRects())}function sn(e){let t=q(e),n=Gt(e),r=e.ownerDocument.body,i=V(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=V(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+nn(e),s=-n.scrollTop;return X(r).direction===`rtl`&&(o+=V(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var cn=25;function ln(e,t){let n=K(e),r=q(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=Ht();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=nn(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=cn&&(a-=o)}else l<=cn&&(a+=l);return{width:a,height:o,x:s,y:c}}var un=new Set([`absolute`,`fixed`]);function dn(e,t){let n=tn(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=Y(e)?Zt(e):H(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function fn(e,t,n){let r;if(t===`viewport`)r=ln(e,n);else if(t===`document`)r=sn(q(e));else if(J(t))r=dn(t,n);else{let n=$t(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return ft(r)}function pn(e,t){let n=Z(e);return n===t||!J(n)||Wt(n)?!1:X(n).position===`fixed`||pn(n,t)}function mn(e,t){let n=t.get(e);if(n)return n;let r=qt(e,[],!1).filter(e=>J(e)&&Ot(e)!==`body`),i=null,a=X(e).position===`fixed`,o=a?Z(e):e;for(;J(o)&&!Wt(o);){let t=X(o),n=Bt(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&un.has(i.position)||Mt(o)&&!n&&pn(e,o))?r=r.filter(e=>e!==o):i=t,o=Z(o)}return t.set(e,r),r}function hn(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?It(t)?[]:mn(t,this._c):[].concat(n),r],o=a[0],s=a.reduce((e,n)=>{let r=fn(t,n,i);return e.top=V(r.top,e.top),e.right=B(r.right,e.right),e.bottom=B(r.bottom,e.bottom),e.left=V(r.left,e.left),e},fn(t,o,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function gn(e){let{width:t,height:n}=Yt(e);return{width:t,height:n}}function _n(e,t,n){let r=Y(t),i=q(t),a=n===`fixed`,o=tn(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=H(0);function l(){c.x=nn(i)}if(r||!r&&!a)if((Ot(t)!==`body`||Mt(i))&&(s=Gt(t)),r){let e=tn(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&l();a&&!r&&i&&l();let u=i&&!r&&!a?rn(i,s):H(0);return{x:o.left+s.scrollLeft-c.x-u.x,y:o.top+s.scrollTop-c.y-u.y,width:o.width,height:o.height}}function vn(e){return X(e).position===`static`}function yn(e,t){if(!Y(e)||X(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return q(e)===n&&(n=n.ownerDocument.body),n}function bn(e,t){let n=K(e);if(It(e))return n;if(!Y(e)){let t=Z(e);for(;t&&!Wt(t);){if(J(t)&&!vn(t))return t;t=Z(t)}return n}let r=yn(e,t);for(;r&&Pt(r)&&vn(r);)r=yn(r,t);return r&&Wt(r)&&vn(r)&&!Bt(r)?n:r||Vt(e)||n}var xn=async function(e){let t=this.getOffsetParent||bn,n=this.getDimensions,r=await n(e.floating);return{reference:_n(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Sn(e){return X(e).direction===`rtl`}var Cn={convertOffsetParentRelativeRectToViewportRelativeRect:an,getDocumentElement:q,getClippingRect:hn,getOffsetParent:bn,getElementRects:xn,getClientRects:on,getDimensions:gn,getScale:Zt,isElement:J,isRTL:Sn};function wn(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Tn(e,t){let n=null,r,i=q(e);function a(){var e;clearTimeout(r),(e=n)==null||e.disconnect(),n=null}function o(s,c){s===void 0&&(s=!1),c===void 0&&(c=1),a();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(s||t(),!f||!p)return;let m=Ge(d),h=Ge(i.clientWidth-(u+f)),g=Ge(i.clientHeight-(d+p)),_=Ge(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:V(0,B(1,c))||1},y=!0;function b(t){let n=t[0].intersectionRatio;if(n!==c){if(!y)return o();n?o(!1,n):r=setTimeout(()=>{o(!1,1e-7)},1e3)}n===1&&!wn(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function En(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=Xt(e),u=i||a?[...l?qt(l):[],...qt(t)]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Tn(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),p.observe(t));let m,h=c?tn(e):null;c&&g();function g(){let t=tn(e);h&&!wn(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Dn=Ct,On=wt,kn=_t,An=Et,jn=bt,Mn=gt,Nn=Tt,Pn=(e,t,n)=>{let r=new Map,i={platform:Cn,...n},a={...i.platform,_c:r};return mt(e,t,{...i,platform:a})};function Fn(e){return typeof e==`object`&&!!e&&`$el`in e}function In(e){if(Fn(e)){let t=e.$el;return kt(t)&&Ot(t)===`#comment`?null:t}return e}function Ln(e){return typeof e==`function`?e():t(e)}function Rn(e){return{name:`arrow`,options:e,fn(t){let n=In(Ln(e.element));return n==null?{}:Mn({element:n,padding:e.padding}).fn(t)}}}function zn(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Bn(e,t){let n=zn(e);return Math.round(t*n)/n}function Vn(e,t,n){n===void 0&&(n={});let r=n.whileElementsMounted,i=o(()=>Ln(n.open)??!0),a=o(()=>Ln(n.middleware)),s=o(()=>Ln(n.placement)??`bottom`),c=o(()=>Ln(n.strategy)??`absolute`),l=o(()=>Ln(n.transform)??!0),u=o(()=>In(e.value)),d=o(()=>In(t.value)),f=O(0),p=O(0),m=O(c.value),h=O(s.value),g=re({}),_=O(!1),v=o(()=>{let e={position:m.value,left:`0`,top:`0`};if(!d.value)return e;let t=Bn(d.value,f.value),n=Bn(d.value,p.value);return l.value?{...e,transform:`translate(`+t+`px, `+n+`px)`,...zn(d.value)>=1.5&&{willChange:`transform`}}:{position:m.value,left:t+`px`,top:n+`px`}}),y;function b(){if(u.value==null||d.value==null)return;let e=i.value;Pn(u.value,d.value,{middleware:a.value,placement:s.value,strategy:c.value}).then(t=>{f.value=t.x,p.value=t.y,m.value=t.strategy,h.value=t.placement,g.value=t.middlewareData,_.value=e!==!1})}function x(){typeof y==`function`&&(y(),y=void 0)}function S(){if(x(),r===void 0){b();return}if(u.value!=null&&d.value!=null){y=r(u.value,d.value,b);return}}function C(){i.value||(_.value=!1)}return ne([a,s,c,i],b,{flush:`sync`}),ne([u,d],S,{flush:`sync`}),ne(i,C,{flush:`sync`}),E()&&D(x),{x:T(f),y:T(p),strategy:T(m),placement:T(h),middlewareData:T(g),isPositioned:T(_),floatingStyles:v,update:b}}var Hn=new WeakMap,Un=(...e)=>{let t=e[0],n=h()?.proxy??E();if(n==null&&!u())throw Error(`injectLocal must be called in setup`);return n&&Hn.has(n)&&t in Hn.get(n)?Hn.get(n)[t]:_(...e)},Wn=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var Gn=e=>e!==void 0,Kn=Object.prototype.toString,qn=e=>Kn.call(e)===`[object Object]`;function Jn(e){return e.endsWith(`rem`)?Number.parseFloat(e)*16:Number.parseFloat(e)}function Yn(e){return Array.isArray(e)?e:[e]}function Xn(e){return F(e)?te(new Proxy({},{get(n,r,i){return t(Reflect.get(e.value,r,i))},set(t,n,r){return F(e.value[n])&&!F(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}})):te(e)}function Zn(e){return Xn(o(e))}function Qn(e,...t){let n=t.flat(),r=n[0];return Zn(()=>typeof r==`function`?Object.fromEntries(Object.entries(I(e)).filter(([e,t])=>!r(v(t),e))):Object.fromEntries(Object.entries(I(e)).filter(e=>!n.includes(e[0]))))}function $n(e,t,n){return ne(e,t,{...n,immediate:!0})}var er=1,Q=new class{subscribers;toasts;dismissedToasts;constructor(){this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)});publish=e=>{this.subscribers.forEach(t=>t(e))};addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]};create=e=>{let{message:t,...n}=e,r=typeof e.id==`number`||e.id&&e.id?.length>0?e.id:er++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r};dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(t=>t({id:e,dismiss:!0})))):this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),e);message=(e,t)=>this.create({...t,message:e,type:`default`});error=(e,t)=>this.create({...t,type:`error`,message:e});success=(e,t)=>this.create({...t,type:`success`,message:e});info=(e,t)=>this.create({...t,type:`info`,message:e});warning=(e,t)=>this.create({...t,type:`warning`,message:e});loading=(e,t)=>this.create({...t,type:`loading`,message:e});promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=Promise.resolve(e instanceof Function?e():e),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],L(e))i=!1,this.create({id:n,type:`default`,message:e});else if(nr(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description,o=typeof r==`object`&&!L(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`error`,description:a,...o})}else if(e instanceof Error){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!L(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`error`,description:a,...o})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!L(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`success`,description:a,...o})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!L(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`error`,description:a,...o})}}).finally(()=>{i&&(this.dismiss(n),n=void 0),t.finally?.()}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})};custom=(e,t)=>{let n=t?.id||er++,r=this.toasts.find(e=>e.id===n),i=t?.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(n)&&this.dismissedToasts.delete(n),r?this.toasts=this.toasts.map(r=>r.id===n?(this.publish({...r,component:e,dismissible:i,id:n,...t}),{...r,component:e,dismissible:i,id:n,...t}):r):this.addToast({component:e,dismissible:i,id:n,...t}),n};getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id))};function tr(e,t){let n=t?.id||er++;return Q.create({message:e,id:n,type:`default`,...t}),n}var nr=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,rr=tr,ir=Object.assign(rr,{success:Q.success,info:Q.info,warning:Q.warning,error:Q.error,custom:Q.custom,message:Q.message,promise:Q.promise,dismiss:Q.dismiss,loading:Q.loading},{getHistory:()=>Q.toasts,getToasts:()=>Q.getActiveToasts()});function ar(e){return e.label!==void 0}var or=3,sr=`24px`,cr=`16px`,lr=4e3,ur=356,dr=14,fr=45,pr=200;function mr(){let e=O(!1);return N(()=>{let t=()=>{e.value=document.hidden};return document.addEventListener(`visibilitychange`,t),()=>window.removeEventListener(`visibilitychange`,t)}),{isDocumentHidden:e}}function $(...e){return e.filter(Boolean).join(` `)}function hr(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}function gr(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?cr:sr;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var _r=[`data-rich-colors`,`data-styled`,`data-mounted`,`data-promise`,`data-swiped`,`data-removed`,`data-visible`,`data-y-position`,`data-x-position`,`data-index`,`data-front`,`data-swiping`,`data-dismissible`,`data-type`,`data-invert`,`data-swipe-out`,`data-swipe-direction`,`data-expanded`,`data-testid`],vr=[`aria-label`,`data-disabled`,`data-close-button-position`],yr=f({__name:`Toast`,props:{toast:{},toasts:{},index:{},swipeDirections:{},expanded:{type:Boolean},invert:{type:Boolean},heights:{},gap:{},position:{},closeButtonPosition:{},visibleToasts:{},expandByDefault:{type:Boolean},closeButton:{type:Boolean},interacting:{type:Boolean},style:{},cancelButtonStyle:{},actionButtonStyle:{},duration:{},class:{},unstyled:{type:Boolean},descriptionClass:{},loadingIcon:{},classes:{},icons:{},closeButtonAriaLabel:{},defaultRichColors:{type:Boolean}},emits:[`update:heights`,`update:height`,`removeToast`],setup(c,{emit:u}){let d=c,f=u,h=O(null),g=O(null),_=O(!1),v=O(!1),T=O(!1),E=O(!1),D=O(!1),k=O(0),M=O(0),ee=O(d.toast.duration||d.duration||lr),te=O(null),P=O(null),F=o(()=>d.index===0),re=o(()=>d.index+1<=d.visibleToasts),I=o(()=>d.toast.type),L=o(()=>d.toast.dismissible!==!1),ie=o(()=>d.toast.class||``),ae=o(()=>d.descriptionClass||``),oe=o(()=>{let e=d.toast.position||d.position,t=d.heights.filter(t=>t.position===e).findIndex(e=>e.toastId===d.toast.id);return t>=0?t:0}),se=o(()=>{let e=d.toast.position||d.position;return d.heights.filter(t=>t.position===e).reduce((e,t,n)=>n>=oe.value?e:e+t.height,0)}),ce=o(()=>oe.value*d.gap+se.value||0),le=o(()=>d.toast.closeButton??d.closeButton),ue=o(()=>d.toast.duration||d.duration||lr),de=O(0),fe=O(0),R=O(null),pe=o(()=>d.position.split(`-`)),me=o(()=>pe.value[0]),he=o(()=>pe.value[1]),ge=o(()=>typeof d.toast.title!=`string`),_e=o(()=>typeof d.toast.description!=`string`),{isDocumentHidden:ve}=mr(),ye=o(()=>I.value&&I.value===`loading`);S(()=>{_.value=!0,ee.value=ue.value}),N(async()=>{if(!_.value||!P.value)return;await s();let e=P.value,t=e.style.height;e.style.height=`auto`;let n=e.getBoundingClientRect().height;e.style.height=t,M.value=n,f(`update:height`,{toastId:d.toast.id,height:n,position:d.toast.position||d.position})});function z(){v.value=!0,k.value=ce.value,setTimeout(()=>{f(`removeToast`,d.toast)},pr)}function be(){if(ye.value||!L.value)return{};z(),d.toast.onDismiss?.(d.toast)}function xe(e){e.button!==2&&(ye.value||!L.value||(te.value=new Date,k.value=ce.value,e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(T.value=!0,R.value={x:e.clientX,y:e.clientY})))}function Se(){if(E.value||!L.value)return;R.value=null;let e=Number(P.value?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),t=Number(P.value?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),n=new Date().getTime()-(te.value?.getTime()||0),r=h.value===`x`?e:t,i=Math.abs(r)/n;if(Math.abs(r)>=fr||i>.11){k.value=ce.value,d.toast.onDismiss?.(d.toast),h.value===`x`?g.value=e>0?`right`:`left`:g.value=t>0?`down`:`up`,z(),E.value=!0;return}else P.value?.style.setProperty(`--swipe-amount-x`,`0px`),P.value?.style.setProperty(`--swipe-amount-y`,`0px`);D.value=!1,T.value=!1,h.value=null}function Ce(e){if(!R.value||!L.value||(window?.getSelection()?.toString()?.length??!1))return;let t=e.clientY-R.value.y,n=e.clientX-R.value.x,r=d.swipeDirections??hr(d.position);!h.value&&(Math.abs(n)>1||Math.abs(t)>1)&&(h.value=Math.abs(n)>Math.abs(t)?`x`:`y`);let i={x:0,y:0},a=e=>1/(1.5+Math.abs(e)/20);if(h.value===`y`){if(r.includes(`top`)||r.includes(`bottom`))if(r.includes(`top`)&&t<0||r.includes(`bottom`)&&t>0)i.y=t;else{let e=t*a(t);i.y=Math.abs(e)0)i.x=n;else{let e=n*a(n);i.x=Math.abs(e)0||Math.abs(i.y)>0)&&(D.value=!0),P.value?.style.setProperty(`--swipe-amount-x`,`${i.x}px`),P.value?.style.setProperty(`--swipe-amount-y`,`${i.y}px`)}S(()=>{if(_.value=!0,!P.value)return;let e=P.value.getBoundingClientRect().height;M.value=e,f(`update:heights`,[{toastId:d.toast.id,height:e,position:d.toast.position},...d.heights])}),b(()=>{P.value&&f(`removeToast`,d.toast)}),N(e=>{if(d.toast.promise&&I.value===`loading`||d.toast.duration===1/0||d.toast.type===`loading`)return;let t;d.expanded||d.interacting||ve.value?(()=>{if(fe.value{d.toast.onAutoClose?.(d.toast),z()},ee.value)),e(()=>{clearTimeout(t)})}),ne(()=>d.toast.delete,e=>{e!==void 0&&e&&(z(),d.toast.onDismiss?.(d.toast))},{deep:!0});function we(){T.value=!1,h.value=null,R.value=null}return(o,s)=>(l(),e(`li`,{tabindex:`0`,ref_key:`toastRef`,ref:P,class:y(t($)(d.class,ie.value,o.classes?.toast,o.toast.classes?.toast,o.classes?.[I.value],o.toast?.classes?.[I.value])),"data-sonner-toast":``,"data-rich-colors":o.toast.richColors??o.defaultRichColors,"data-styled":!(o.toast.component||o.toast?.unstyled||o.unstyled),"data-mounted":_.value,"data-promise":!!o.toast.promise,"data-swiped":D.value,"data-removed":v.value,"data-visible":re.value,"data-y-position":me.value,"data-x-position":he.value,"data-index":o.index,"data-front":F.value,"data-swiping":T.value,"data-dismissible":L.value,"data-type":I.value,"data-invert":o.toast.invert||o.invert,"data-swipe-out":E.value,"data-swipe-direction":g.value,"data-expanded":!!(o.expanded||o.expandByDefault&&_.value),"data-testid":o.toast.testId,style:r({"--index":o.index,"--toasts-before":o.index,"--z-index":o.toasts.length-o.index,"--offset":`${v.value?k.value:ce.value}px`,"--initial-height":o.expandByDefault?`auto`:`${M.value}px`,...o.style,...d.toast.style}),onDragend:we,onPointerdown:xe,onPointerup:Se,onPointermove:Ce},[le.value&&!o.toast.component&&I.value!==`loading`?(l(),e(`button`,{key:0,"aria-label":o.closeButtonAriaLabel||`Close toast`,"data-disabled":ye.value,"data-close-button":`true`,"data-close-button-position":o.closeButtonPosition,class:y(t($)(o.classes?.closeButton,o.toast?.classes?.closeButton)),onClick:be},[o.icons?.close?(l(),m(C(o.icons?.close),{key:0})):w(o.$slots,`close-icon`,{key:1})],10,vr)):j(`v-if`,!0),o.toast.component?(l(),m(C(o.toast.component),x({key:1},o.toast.componentProps,{onCloseToast:be,isPaused:o.$props.expanded||o.$props.interacting||t(ve)}),null,16,[`isPaused`])):(l(),e(n,{key:2},[I.value!==`default`||o.toast.icon||o.toast.promise?(l(),e(`div`,{key:0,"data-icon":``,class:y(t($)(o.classes?.icon,o.toast?.classes?.icon))},[o.toast.icon?(l(),m(C(o.toast.icon),{key:0})):(l(),e(n,{key:1},[I.value===`loading`?w(o.$slots,`loading-icon`,{key:0}):I.value===`success`?w(o.$slots,`success-icon`,{key:1}):I.value===`error`?w(o.$slots,`error-icon`,{key:2}):I.value===`warning`?w(o.$slots,`warning-icon`,{key:3}):I.value===`info`?w(o.$slots,`info-icon`,{key:4}):j(`v-if`,!0)],64))],2)):j(`v-if`,!0),i(`div`,{"data-content":``,class:y(t($)(o.classes?.content,o.toast?.classes?.content))},[i(`div`,{"data-title":``,class:y(t($)(o.classes?.title,o.toast.classes?.title))},[ge.value?(l(),m(C(o.toast.title),a(x({key:0},o.toast.componentProps)),null,16)):(l(),e(n,{key:1},[A(p(o.toast.title),1)],64))],2),o.toast.description?(l(),e(`div`,{key:0,"data-description":``,class:y(t($)(o.descriptionClass,ae.value,o.classes?.description,o.toast.classes?.description))},[_e.value?(l(),m(C(o.toast.description),a(x({key:0},o.toast.componentProps)),null,16)):(l(),e(n,{key:1},[A(p(o.toast.description),1)],64))],2)):j(`v-if`,!0)],2),o.toast.cancel?(l(),e(`button`,{key:1,style:r(o.toast.cancelButtonStyle||o.cancelButtonStyle),class:y(t($)(o.classes?.cancelButton,o.toast.classes?.cancelButton)),"data-button":``,"data-cancel":``,onClick:s[0]||=e=>{t(ar)(o.toast.cancel)&&L.value&&(o.toast.cancel.onClick?.(e),z())}},p(t(ar)(o.toast.cancel)?o.toast.cancel?.label:o.toast.cancel),7)):j(`v-if`,!0),o.toast.action?(l(),e(`button`,{key:2,style:r(o.toast.actionButtonStyle||o.actionButtonStyle),class:y(t($)(o.classes?.actionButton,o.toast.classes?.actionButton)),"data-button":``,"data-action":``,onClick:s[1]||=e=>{t(ar)(o.toast.action)&&(o.toast.action.onClick?.(e),!e.defaultPrevented&&z())}},p(t(ar)(o.toast.action)?o.toast.action?.label:o.toast.action),7)):j(`v-if`,!0)],64))],46,_r))}}),br=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},xr={},Sr={xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stoke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function Cr(t,n){return l(),e(`svg`,Sr,n[0]||=[i(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`},null,-1),i(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`},null,-1)])}var wr=br(xr,[[`render`,Cr]]),Tr=[`data-visible`],Er={class:`sonner-spinner`},Dr=f({__name:`Loader`,props:{visible:{type:Boolean}},setup(r){let a=Array(12).fill(0);return(r,o)=>(l(),e(`div`,{class:`sonner-loading-wrapper`,"data-visible":r.visible},[i(`div`,Er,[(l(!0),e(n,null,c(t(a),t=>(l(),e(`div`,{key:`spinner-bar-${t}`,class:`sonner-loading-bar`}))),128))])],8,Tr))}}),Or={},kr={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`};function Ar(t,n){return l(),e(`svg`,kr,n[0]||=[i(`path`,{"fill-rule":`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,"clip-rule":`evenodd`},null,-1)])}var jr=br(Or,[[`render`,Ar]]),Mr={},Nr={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`};function Pr(t,n){return l(),e(`svg`,Nr,n[0]||=[i(`path`,{"fill-rule":`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,"clip-rule":`evenodd`},null,-1)])}var Fr=br(Mr,[[`render`,Pr]]),Ir={},Lr={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`};function Rr(t,n){return l(),e(`svg`,Lr,n[0]||=[i(`path`,{"fill-rule":`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,"clip-rule":`evenodd`},null,-1)])}var zr=br(Ir,[[`render`,Rr]]),Br={},Vr={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`};function Hr(t,n){return l(),e(`svg`,Vr,n[0]||=[i(`path`,{"fill-rule":`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,"clip-rule":`evenodd`},null,-1)])}var Ur=br(Br,[[`render`,Hr]]),Wr=[`aria-label`],Gr=[`data-sonner-theme`,`dir`,`data-theme`,`data-rich-colors`,`data-y-position`,`data-x-position`],Kr=typeof window<`u`&&typeof document<`u`;function qr(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}var Jr=f({name:`Toaster`,inheritAttrs:!1,__name:`Toaster`,props:{id:{},invert:{type:Boolean,default:!1},theme:{default:`light`},position:{default:`bottom-right`},closeButtonPosition:{default:`top-left`},hotkey:{default:()=>[`altKey`,`KeyT`]},richColors:{type:Boolean,default:!1},expand:{type:Boolean,default:!1},duration:{},gap:{default:dr},visibleToasts:{default:or},closeButton:{type:Boolean,default:!1},toastOptions:{default:()=>({})},class:{default:``},style:{},offset:{default:sr},mobileOffset:{default:cr},dir:{default:`auto`},swipeDirections:{},icons:{},containerAriaLabel:{default:`Notifications`}},setup(a){let u=a,f=g(),p=O([]),h=o(()=>u.id?p.value.filter(e=>e.toasterId===u.id):p.value.filter(e=>!e.toasterId));function _(e,t){return h.value.filter(n=>!n.position&&t===0||n.position===e)}let v=o(()=>{let e=h.value.filter(e=>e.position).map(e=>e.position);return e.length>0?Array.from(new Set([u.position].concat(e))):[u.position]}),b=o(()=>{let e={};return v.value.forEach(t=>{e[t]=p.value.filter(e=>e.position===t)}),e}),S=O([]),C=O({}),T=O(!1);N(()=>{v.value.forEach(e=>{e in C.value||(C.value[e]=!1)})});let E=O(u.theme===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:u.theme),D=O(null),A=O(null),M=O(!1),ee=u.hotkey.join(`+`).replace(/Key/g,``).replace(/Digit/g,``);function te(e){p.value.find(t=>t.id===e.id)?.delete||Q.dismiss(e.id),p.value=p.value.filter(({id:t})=>t!==e.id),setTimeout(()=>{p.value.find(t=>t.id===e.id)||(S.value=S.value.filter(t=>t.toastId!==e.id))},pr+50)}function P(e){M.value&&!e.currentTarget?.contains?.(e.relatedTarget)&&(M.value=!1,A.value&&=(A.value.focus({preventScroll:!0}),null))}function ne(e){e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||M.value||(M.value=!0,A.value=e.relatedTarget)}function F(e){e.target&&e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||(T.value=!0)}N(e=>{e(Q.subscribe(e=>{if(e.dismiss){requestAnimationFrame(()=>{p.value=p.value.map(t=>t.id===e.id?{...t,delete:!0}:t)});return}s(()=>{let t=p.value.findIndex(t=>t.id===e.id);t===-1?p.value=[e,...p.value]:p.value=[...p.value.slice(0,t),{...p.value[t],...e},...p.value.slice(t+1)]})}))}),N(e=>{if(typeof window>`u`)return;if(u.theme!==`system`){E.value=u.theme;return}let t=window.matchMedia(`(prefers-color-scheme: dark)`),n=e=>{E.value=e?`dark`:`light`};n(t.matches);let r=e=>{n(e.matches)};try{t.addEventListener(`change`,r)}catch{t.addListener(r)}e(()=>{try{t.removeEventListener(`change`,r)}catch{t.removeListener(r)}})}),N(()=>{D.value&&A.value&&(A.value.focus({preventScroll:!0}),A.value=null,M.value=!1)}),N(()=>{p.value.length<=1&&Object.keys(C.value).forEach(e=>{C.value[e]=!1})}),N(e=>{function t(e){let t=u.hotkey.every(t=>e[t]||e.code===t),n=Array.isArray(D.value)?D.value[0]:D.value;t&&(v.value.forEach(e=>{C.value[e]=!0}),n?.focus());let r=document.activeElement===D.value||n?.contains(document.activeElement);e.code===`Escape`&&r&&v.value.forEach(e=>{C.value[e]=!1})}Kr&&(document.addEventListener(`keydown`,t),e(()=>{document.removeEventListener(`keydown`,t)}))});function re(e){let t=e.currentTarget,n=t.getAttribute(`data-y-position`)+`-`+t.getAttribute(`data-x-position`);C.value[n]=!0}function I(e){if(!T.value){let t=e.currentTarget,n=t.getAttribute(`data-y-position`)+`-`+t.getAttribute(`data-x-position`);C.value[n]=!1}}function L(){Object.keys(C.value).forEach(e=>{C.value[e]=!1})}function ie(){T.value=!1}function ae(e){S.value=e}function oe(e){let t=S.value.findIndex(t=>t.toastId===e.toastId);if(t!==-1)S.value[t]=e;else{let t=S.value.findIndex(t=>t.position===e.position);t===-1?S.value.unshift(e):S.value.splice(t,0,e)}}return(a,o)=>(l(),e(n,null,[j(` Remove item from normal navigation flow, only available via hotkey `),i(`section`,{"aria-label":`${a.containerAriaLabel} ${t(ee)}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`},[(l(!0),e(n,null,c(v.value,(i,o)=>(l(),e(`ol`,x({key:i,ref_for:!0,ref_key:`listRef`,ref:D,"data-sonner-toaster":``,"data-sonner-theme":E.value,class:u.class,dir:a.dir===`auto`?qr():a.dir,tabIndex:-1,"data-theme":a.theme,"data-rich-colors":a.richColors,"data-y-position":i.split(`-`)[0],"data-x-position":i.split(`-`)[1],style:{"--front-toast-height":`${S.value[0]?.height||0}px`,"--width":`${t(ur)}px`,"--gap":`${a.gap}px`,...a.style,...t(f).style,...t(gr)(a.offset,a.mobileOffset)}},{ref_for:!0},a.$attrs,{onBlur:P,onFocus:ne,onMouseenter:re,onMousemove:re,onMouseleave:I,onDragend:L,onPointerdown:F,onPointerup:ie}),[(l(!0),e(n,null,c(_(i,o),(e,t)=>(l(),m(yr,{key:e.id,heights:S.value,icons:a.icons,index:t,toast:e,defaultRichColors:a.richColors,duration:a.toastOptions?.duration??a.duration,class:y(a.toastOptions?.class??``),descriptionClass:a.toastOptions?.descriptionClass,invert:a.invert,visibleToasts:a.visibleToasts,closeButton:a.toastOptions?.closeButton??a.closeButton,interacting:T.value,position:i,closeButtonPosition:a.toastOptions?.closeButtonPosition??a.closeButtonPosition,style:r(a.toastOptions?.style),unstyled:a.toastOptions?.unstyled,classes:a.toastOptions?.classes,cancelButtonStyle:a.toastOptions?.cancelButtonStyle,actionButtonStyle:a.toastOptions?.actionButtonStyle,"close-button-aria-label":a.toastOptions?.closeButtonAriaLabel,toasts:b.value[i],expandByDefault:a.expand,gap:a.gap,expanded:C.value[i]||!1,swipeDirections:u.swipeDirections,"onUpdate:heights":ae,"onUpdate:height":oe,onRemoveToast:te},{"close-icon":k(()=>[w(a.$slots,`close-icon`,{},()=>[d(wr)])]),"loading-icon":k(()=>[w(a.$slots,`loading-icon`,{},()=>[d(Dr,{visible:e.type===`loading`},null,8,[`visible`])])]),"success-icon":k(()=>[w(a.$slots,`success-icon`,{},()=>[d(jr)])]),"error-icon":k(()=>[w(a.$slots,`error-icon`,{},()=>[d(Ur)])]),"warning-icon":k(()=>[w(a.$slots,`warning-icon`,{},()=>[d(zr)])]),"info-icon":k(()=>[w(a.$slots,`info-icon`,{},()=>[d(Fr)])]),_:2},1032,[`heights`,`icons`,`index`,`toast`,`defaultRichColors`,`duration`,`class`,`descriptionClass`,`invert`,`visibleToasts`,`closeButton`,`interacting`,`position`,`closeButtonPosition`,`style`,`unstyled`,`classes`,`cancelButtonStyle`,`actionButtonStyle`,`close-button-aria-label`,`toasts`,`expandByDefault`,`gap`,`expanded`,`swipeDirections`]))),128))],16,Gr))),128))],8,Wr)],2112))}});export{ve as A,pe as C,z as D,ye as E,Oe as F,ke as I,de as L,Te as M,De as N,Se as O,R as P,ce as R,fe as S,he as T,Dn as _,Gn as a,He as b,Qn as c,Rn as d,Vn as f,Nn as g,jn as h,Wn as i,Ee as j,xe as k,Yn as l,kn as m,ir as n,qn as o,En as p,Un as r,Jn as s,Jr as t,$n as u,On as v,me as w,Ne as x,An as y,ae as z}; \ No newline at end of file diff --git a/docs/assets/vendor-pinia-C_5mk-F1.js b/docs/assets/vendor-pinia-C_5mk-F1.js new file mode 100644 index 0000000..9a2b45a --- /dev/null +++ b/docs/assets/vendor-pinia-C_5mk-F1.js @@ -0,0 +1 @@ +import{Et as e,Ht as t,Lt as n,Rt as r,cn as i,dn as a,fn as o,hn as s,ln as c,pn as l,sn as u,tn as d,un as f,xn as p,yn as m}from"./game-logic-B_TBzmsj.js";var h=typeof window<`u`,g,_=e=>g=e,v=Symbol();function y(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var b;(function(e){e.direct=`direct`,e.patchObject=`patch object`,e.patchFunction=`patch function`})(b||={});var x=(()=>typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null})();function S(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function C(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){O(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function w(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function T(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var E=typeof navigator==`object`?navigator:{userAgent:``},D=(()=>/Macintosh/.test(E.userAgent)&&/AppleWebKit/.test(E.userAgent)&&!/Safari/.test(E.userAgent))(),O=h?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!D?k:`msSaveOrOpenBlob`in E?A:j:()=>{};function k(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?T(r):w(r.href)?C(e,t,n):(r.target=`_blank`,T(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){T(r)},0))}function A(e,t=`download`,n){if(typeof e==`string`)if(w(e))C(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){T(t)})}else navigator.msSaveOrOpenBlob(S(e,n),t)}function j(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return C(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(x.HTMLElement))||`safari`in x,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||D)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:ee}=Object;function M(){let e=u(!0),t=e.run(()=>s({})),n=[],r=[],i=a({install(e){_(i),i._a=e,e.provide(v,i),e.config.globalProperties.$pinia=i,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return i}var N=()=>{};function P(e,t,n,r=N){e.add(t);let a=()=>{e.delete(t)&&r()};return!n&&i()&&o(a),a}function F(e,...t){e.forEach(e=>{e(...t)})}var I=e=>e(),L=Symbol(),R=Symbol();function z(e,t){for(let n in e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e),t){if(!t.hasOwnProperty(n))continue;let r=t[n],i=e[n];y(i)&&y(r)&&e.hasOwnProperty(n)&&!f(r)&&!c(r)?e[n]=z(i,r):e[n]=r}return e}var B=Symbol();function V(e){return!y(e)||!Object.prototype.hasOwnProperty.call(e,B)}var{assign:H}=Object;function U(e){return!!(f(e)&&e.effect)}function W(t,n,r,i){let{state:o,actions:s,getters:c}=n,l=r.state.value[t],u;function d(){return l||(r.state.value[t]=o?o():{}),H(p(r.state.value[t]),s,Object.keys(c||{}).reduce((n,i)=>(n[i]=a(e(()=>{_(r);let e=r._s.get(t);return c[i].call(e,e)})),n),{}))}return u=G(t,d,n,r,i,!0),u}function G(e,n,r={},i,a,o){let p,h=H({actions:{}},r),g={deep:!0},v,y,x=new Set,S=new Set,C=i.state.value[e];!o&&!C&&(i.state.value[e]={}),s({});let w;function T(n){let r;v=y=!1,typeof n==`function`?(n(i.state.value[e]),r={type:b.patchFunction,storeId:e,events:void 0}):(z(i.state.value[e],n),r={type:b.patchObject,payload:n,storeId:e,events:void 0});let a=w=Symbol();t().then(()=>{w===a&&(v=!0)}),y=!0,F(x,r,i.state.value[e])}let E=o?function(){let{state:e}=r,t=e?e():{};this.$patch(e=>{H(e,t)})}:N;function D(){p.stop(),x.clear(),S.clear(),i._s.delete(e)}let O=(t,n=``)=>{if(L in t)return t[R]=n,t;let r=function(){_(i);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}F(S,{args:n,name:r[R],store:k,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:k,n)}catch(e){throw F(o,e),e}return l instanceof Promise?l.then(e=>(F(a,e),e)).catch(e=>(F(o,e),Promise.reject(e))):(F(a,l),l)};return r[L]=!0,r[R]=n,r},k=l({_p:i,$id:e,$onAction:P.bind(null,S),$patch:T,$reset:E,$subscribe(t,n={}){let r=P(x,t,n.detached,()=>a()),a=p.run(()=>d(()=>i.state.value[e],r=>{(n.flush===`sync`?y:v)&&t({storeId:e,type:b.direct,events:void 0},r)},H({},g,n)));return r},$dispose:D});i._s.set(e,k);let A=(i._a&&i._a.runWithContext||I)(()=>i._e.run(()=>(p=u()).run(()=>n({action:O}))));for(let t in A){let n=A[t];f(n)&&!U(n)||c(n)?o||(C&&V(n)&&(f(n)?n.value=C[t]:z(n,C[t])),i.state.value[e][t]=n):typeof n==`function`&&(A[t]=O(n,t),h.actions[t]=n)}return H(k,A),H(m(k),A),Object.defineProperty(k,`$state`,{get:()=>i.state.value[e],set:e=>{T(t=>{H(t,e)})}}),i._p.forEach(e=>{H(k,p.run(()=>e({store:k,app:i._a,pinia:i,options:h})))}),C&&o&&r.hydrate&&r.hydrate(k.$state,C),v=!0,y=!0,k}function K(e,t,i){let a,o=typeof t==`function`;a=o?i:t;function s(i,s){let c=n();return i||=c?r(v,null):null,i&&_(i),i=g,i._s.has(e)||(o?G(e,t,a,i):W(e,a,i)),i._s.get(e)}return s.$id=e,s}function q(e,t){if(e==null)return;let n=e;for(let e=0;e1&&(t=J(typeof e!=`object`||!e||!Object.prototype.hasOwnProperty.call(e,r)?Number.isInteger(Number(n[1]))?[]:{}:e[r],t,Array.prototype.slice.call(n,1))),Number.isInteger(Number(r))&&Array.isArray(e)?e.slice()[r]:Object.assign({},e,{[r]:t})}function Y(e,t){if(e==null||t.length===0)return e;if(t.length===1){if(e==null)return e;if(Number.isInteger(t[0])&&Array.isArray(e))return Array.prototype.slice.call(e,0).splice(t[0],1);let n={};for(let t in e)n[t]=e[t];return delete n[t[0]],n}if(e[t[0]]==null){if(Number.isInteger(t[0])&&Array.isArray(e))return Array.prototype.concat.call([],e);let n={};for(let t in e)n[t]=e[t];return n}return J(e,Y(e[t[0]],Array.prototype.slice.call(t,1)),[t[0]])}function X(e,t){return t.map(e=>e.split(`.`)).map(t=>[t,q(e,t)]).filter(e=>e[1]!==void 0).reduce((e,t)=>J(e,t[1],t[0]),{})}function Z(e,t){return t.map(e=>e.split(`.`)).reduce((e,t)=>Y(e,t),e)}function Q(e,{storage:t,serializer:n,key:r,debug:i,pick:a,omit:o,beforeHydrate:s,afterHydrate:c},l,u=!0){try{u&&s?.(l);let i=t.getItem(r);if(i){let t=n.deserialize(i),r=a?X(t,a):t,s=o?Z(r,o):r;e.$patch(s)}u&&c?.(l)}catch(e){i&&console.error(`[pinia-plugin-persistedstate]`,e)}}function $(e,{storage:t,serializer:n,key:r,debug:i,pick:a,omit:o}){try{let i=a?X(e,a):e,s=o?Z(i,o):i,c=n.serialize(s);t.setItem(r,c)}catch(e){i&&console.error(`[pinia-plugin-persistedstate]`,e)}}function te(e,t){return typeof e==`function`?e(t):typeof e==`string`?e:t}function ne(e,t,n){let{pinia:r,store:i,options:{persist:a=n}}=e;if(!a)return;if(!(i.$id in r.state.value)){let e=r._s.get(i.$id.replace(`__hot:`,``));e&&Promise.resolve().then(()=>e.$persist());return}let o=(Array.isArray(a)?a:a===!0?[{}]:[a]).map(t);i.$hydrate=({runHooks:t=!0}={})=>{o.forEach(n=>{Q(i,n,e,t)})},i.$persist=()=>{o.forEach(e=>{$(i.$state,e)})},o.forEach(t=>{Q(i,t,e),i.$subscribe((e,n)=>$(n,t),{detached:!0})})}function re(e={}){return function(t){ne(t,n=>{let r=te(n.key,t.store.$id);return{key:(e.key?e.key:e=>e)(r),debug:n.debug??e.debug??!1,serializer:n.serializer??e.serializer??{serialize:e=>JSON.stringify(e),deserialize:e=>JSON.parse(e)},storage:n.storage??e.storage??window.localStorage,beforeHydrate:n.beforeHydrate??e.beforeHydrate,afterHydrate:n.afterHydrate??e.afterHydrate,pick:n.pick,omit:n.omit}},e.auto??!1)}}var ie=re();export{M as n,K as r,ie as t}; \ No newline at end of file diff --git a/docs/assets/vendor-reka-ui-ICOW9z5F.js b/docs/assets/vendor-reka-ui-ICOW9z5F.js new file mode 100644 index 0000000..bb86a34 --- /dev/null +++ b/docs/assets/vendor-reka-ui-ICOW9z5F.js @@ -0,0 +1,8 @@ +import{$t as e,At as t,Bt as n,Cn as r,Ct as i,Dn as a,Dt as o,En as s,Et as c,Ft as l,Gt as u,Ht as d,It as f,Jt as p,Kt as m,Mt as h,Nt as g,On as _,Ot as v,Pt as y,Rt as b,Sn as x,St as S,Tt as C,Ut as w,Vt as T,Wt as E,Xt as D,Yt as O,Zt as ee,bn as k,dn as te,en as ne,hn as A,in as j,jt as M,kn as re,kt as N,nn as P,pn as ie,qt as ae,rn as oe,tn as F,vn as se,vt as ce,wn as le,wt as ue,xn as I,xt as L}from"./game-logic-B_TBzmsj.js";import{A as de,C as fe,D as pe,E as R,F as me,I as he,L as ge,M as _e,N as ve,O as ye,P as be,S as xe,T as Se,_ as Ce,b as we,d as Te,f as Ee,g as De,h as Oe,j as ke,k as Ae,m as je,p as Me,v as Ne,w as Pe,x as Fe,y as Ie}from"./vendor-others-DiSZfaku.js";function Le(e,t=-1/0,n=1/0){return Math.min(n,Math.max(t,e))}function z(e,t){let n=typeof e==`string`&&!t?`${e}Context`:t,r=Symbol(n);return[t=>{let n=b(r,t);if(n||n===null)return n;throw Error(`Injection \`${r.toString()}\` not found. Component must be used within ${Array.isArray(e)?`one of the following components: ${e.join(`, `)}`:`\`${e}\``}`)},e=>(ae(r,e),e)]}function B(){let e=document.activeElement;if(e==null)return null;for(;e!=null&&e.shadowRoot!=null&&e.shadowRoot.activeElement!=null;)e=e.shadowRoot.activeElement;return e}function Re(e,t,n){let r=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),r.dispatchEvent(i)}function ze(e){return e==null}function Be(e){return e?e.flatMap(e=>e.type===i?Be(e.children):[e]):[]}var[Ve,He]=z(`ConfigProvider`),Ue=R?window:void 0;R&&window.document,R&&window.navigator,R&&window.location;function V(e){let t=x(e);return t?.$el??t}function We(...e){let t=[],n=()=>{t.forEach(e=>e()),t.length=0},i=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),a=c(()=>{let t=_e(x(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0}),o=he(()=>[a.value?.map(e=>V(e))??[Ue].filter(e=>e!=null),_e(x(a.value?e[1]:e[0])),_e(r(a.value?e[2]:e[1])),x(a.value?e[3]:e[2])],([e,r,a,o])=>{if(n(),!e?.length||!r?.length||!a?.length)return;let s=Ae(o)?{...o}:o;t.push(...e.flatMap(e=>r.flatMap(t=>a.map(n=>i(e,t,n,s)))))},{flush:`post`});return be(n),()=>{o(),n()}}function Ge(){let e=se(!1),t=y();return t&&E(()=>{e.value=!0},t),e}function Ke(e){let t=Ge();return c(()=>(t.value,!!e()))}function qe(e){return typeof e==`function`?e:typeof e==`string`?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Je(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]==`object`?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);let{target:i=Ue,eventName:a=`keydown`,passive:o=!1,dedupe:s=!1}=r,c=qe(t);return We(i,a,e=>{e.repeat&&x(s)||c(e)&&n(e)},o)}function Ye(e){return JSON.parse(JSON.stringify(e))}function Xe(e,t,n={}){let{window:r=Ue,...i}=n,a,o=Ke(()=>r&&`ResizeObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},l=F(c(()=>{let t=x(e);return Array.isArray(t)?t.map(e=>V(e)):[V(t)]}),e=>{if(s(),o.value&&r){a=new ResizeObserver(t);for(let t of e)t&&a.observe(t,i)}},{immediate:!0,flush:`post`}),u=()=>{s(),l()};return be(u),{isSupported:o,stop:u}}function H(e,t,n,r={}){let{clone:i=!1,passive:a=!1,eventName:o,deep:s=!1,defaultValue:l,shouldEmit:u}=r,f=y(),p=n||f?.emit||(f?.$emit)?.bind(f)||(f?.proxy?.$emit)?.bind(f?.proxy),m=o;t||=`modelValue`,m||=`update:${t.toString()}`;let h=e=>i?typeof i==`function`?i(e):Ye(e):e,g=()=>pe(e[t])?h(e[t]):l,_=e=>{u?u(e)&&p(m,e):p(m,e)};if(a){let n=A(g()),r=!1;return F(()=>e[t],e=>{r||(r=!0,n.value=h(e),d(()=>r=!1))}),F(n,n=>{!r&&(n!==e[t]||s)&&_(n)},{deep:s}),n}else return c({get(){return g()},set(e){_(e)}})}var Ze=Se(()=>{let e=A(new Map),t=A(),n=c(()=>{for(let t of e.value.values())if(t)return!0;return!1}),r=Ve({scrollBody:A(!0)}),i=null,a=()=>{document.body.style.paddingRight=``,document.body.style.marginRight=``,document.body.style.pointerEvents=``,document.documentElement.style.removeProperty(`--scrollbar-width`),document.body.style.overflow=t.value??``,ye&&i?.(),t.value=void 0};return F(n,(e,n)=>{if(!R)return;if(!e){n&&a();return}t.value===void 0&&(t.value=document.body.style.overflow);let o=window.innerWidth-document.documentElement.clientWidth,s={padding:o,margin:0},c=r.scrollBody?.value?typeof r.scrollBody.value==`object`?Fe({padding:r.scrollBody.value.padding===!0?o:r.scrollBody.value.padding,margin:r.scrollBody.value.margin===!0?o:r.scrollBody.value.margin},s):s:{padding:0,margin:0};o>0&&(document.body.style.paddingRight=typeof c.padding==`number`?`${c.padding}px`:String(c.padding),document.body.style.marginRight=typeof c.margin==`number`?`${c.margin}px`:String(c.margin),document.documentElement.style.setProperty(`--scrollbar-width`,`${o}px`),document.body.style.overflow=`hidden`),ye&&(i=We(document,`touchmove`,e=>et(e),{passive:!1})),d(()=>{document.body.style.pointerEvents=`none`,document.body.style.overflow=`hidden`})},{immediate:!0,flush:`sync`}),e});function Qe(e){let t=Math.random().toString(36).substring(2,7),n=Ze();n.value.set(t,e??!1);let r=c({get:()=>n.value.get(t)??!1,set:e=>n.value.set(t,e)});return ve(()=>{n.value.delete(t)}),r}function $e(e){let t=window.getComputedStyle(e);if(t.overflowX===`scroll`||t.overflowY===`scroll`||t.overflowX===`auto`&&e.clientWidth1?!0:(t.preventDefault&&t.cancelable&&t.preventDefault(),!1)}function tt(e){let t=Ve({dir:A(`ltr`)});return c(()=>e?.value||t.dir?.value||`ltr`)}function nt(e){let t=y(),n=t?.type.emits,r={};return n?.length||console.warn(`No emitted event found. Please check component: ${t?.type.__name}`),n?.forEach(t=>{r[re(le(t))]=(...n)=>e(t,...n)}),r}var rt=0;function it(){P(e=>{if(!R)return;let t=document.querySelectorAll(`[data-reka-focus-guard]`);document.body.insertAdjacentElement(`afterbegin`,t[0]??at()),document.body.insertAdjacentElement(`beforeend`,t[1]??at()),rt++,e(()=>{rt===1&&document.querySelectorAll(`[data-reka-focus-guard]`).forEach(e=>e.remove()),rt--})})}function at(){let e=document.createElement(`span`);return e.setAttribute(`data-reka-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}function ot(e){return c(()=>x(e)?!!V(e)?.closest(`form`):!0)}function U(){let e=y(),t=A(),n=c(()=>[`#text`,`#comment`].includes(t.value?.$el.nodeName)?t.value?.$el.nextElementSibling:V(t)),r=Object.assign({},e.exposed),i={};for(let t in e.props)Object.defineProperty(i,t,{enumerable:!0,configurable:!0,get:()=>e.props[t]});if(Object.keys(r).length>0)for(let e in r)Object.defineProperty(i,e,{enumerable:!0,configurable:!0,get:()=>r[e]});Object.defineProperty(i,`$el`,{enumerable:!0,configurable:!0,get:()=>e.vnode.el}),e.exposed=i;function a(n){t.value=n,n&&(Object.defineProperty(i,`$el`,{enumerable:!0,configurable:!0,get:()=>n instanceof Element?n:n.$el}),e.exposed=i)}return{forwardRef:a,currentRef:t,currentElement:n}}function W(e){let t=y(),n=Object.keys(t?.type.props??{}).reduce((e,n)=>{let r=(t?.type.props[n]).default;return r!==void 0&&(e[n]=r),e},{}),r=k(e);return c(()=>{let e={},i=t?.vnode.props??{};return Object.keys(i).forEach(t=>{e[le(t)]=i[t]}),Object.keys({...n,...e}).reduce((e,t)=>(r.value[t]!==void 0&&(e[t]=r.value[t]),e),{})})}function G(e,t){let n=W(e),r=t?nt(t):{};return c(()=>({...n.value,...r}))}function st(e,t){let n=ke(!1,300),r=A(null),i=fe();function a(){r.value=null,n.value=!1}function o(e,t){let i=e.currentTarget,a={x:e.clientX,y:e.clientY},o=lt(a,ct(a,i.getBoundingClientRect())),s=ut(t.getBoundingClientRect());r.value=ft([...o,...s]),n.value=!0}return P(n=>{if(e.value&&t.value){let r=e=>o(e,t.value),i=t=>o(t,e.value);e.value.addEventListener(`pointerleave`,r),t.value.addEventListener(`pointerleave`,i),n(()=>{e.value?.removeEventListener(`pointerleave`,r),t.value?.removeEventListener(`pointerleave`,i)})}}),P(n=>{if(r.value){let o=n=>{if(!r.value||!(n.target instanceof Element))return;let o=n.target,s={x:n.clientX,y:n.clientY},c=e.value?.contains(o)||t.value?.contains(o),l=!dt(s,r.value),u=!!o.closest(`[data-grace-area-trigger]`);c?a():(l||u)&&(a(),i.trigger())};e.value?.ownerDocument.addEventListener(`pointermove`,o),n(()=>e.value?.ownerDocument.removeEventListener(`pointermove`,o))}}),{isPointerInTransit:n,onPointerExit:i.on}}function ct(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function lt(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function ut(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function dt(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=l>r&&n<(c-o)*(r-s)/(l-s)+o&&(i=!i)}return i}function ft(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y?1:0),pt(t)}function pt(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}function mt(e){let t;F(()=>V(e),e=>{e?t=we(e):t&&t()}),u(()=>{t&&t()})}var ht=0;function K(t,n=`reka`){if(t)return t;if(`useId`in ce)return`${n}-${e?.()}`;let r=Ve({useId:void 0});return r.useId?`${n}-${r.useId()}`:`${n}-${++ht}`}function gt(e){let t=A(),n=c(()=>t.value?.width??0),r=c(()=>t.value?.height??0);return E(()=>{let n=V(e);if(n){t.value={width:n.offsetWidth,height:n.offsetHeight};let e=new ResizeObserver(e=>{if(!Array.isArray(e)||!e.length)return;let r=e[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=n.offsetWidth,a=n.offsetHeight;t.value={width:i,height:a}});return e.observe(n,{box:`border-box`}),()=>e.unobserve(n)}else t.value=void 0}),{width:n,height:r}}function _t(e,t){let n=A(e);function r(e){return t[n.value][e]??n.value}return{state:n,dispatch:e=>{n.value=r(e)}}}function vt(e){let t=ke(``,1e3);return{search:t,handleTypeaheadSearch:(n,r)=>{if(t.value+=n,e)e(n);else{let e=B(),n=r.map(e=>({...e,textValue:e.value?.textValue??e.ref.textContent?.trim()??``})),i=n.find(t=>t.ref===e),a=bt(n.map(e=>e.textValue),t.value,i?.textValue),o=n.find(e=>e.textValue===a);return o&&o.ref.focus(),o?.ref}},resetTypeahead:()=>{t.value=``}}}function yt(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function bt(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=yt(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function xt(e,t){let n=A({}),r=A(`none`),i=A(e),a=e.value?`mounted`:`unmounted`,o,s=t.value?.ownerDocument.defaultView??Ue,{state:l,dispatch:f}=_t(a,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}}),p=e=>{if(R){let n=new CustomEvent(e,{bubbles:!1,cancelable:!1});t.value?.dispatchEvent(n)}};F(e,async(e,i)=>{let a=i!==e;if(await d(),a){let a=r.value,o=St(t.value);e?(f(`MOUNT`),p(`enter`),o===`none`&&p(`after-enter`)):o===`none`||o===`undefined`||n.value?.display===`none`?(f(`UNMOUNT`),p(`leave`),p(`after-leave`)):i&&a!==o?(f(`ANIMATION_OUT`),p(`leave`)):(f(`UNMOUNT`),p(`after-leave`))}},{immediate:!0});let m=e=>{let n=St(t.value),r=n.includes(CSS.escape(e.animationName)),a=l.value===`mounted`?`enter`:`leave`;if(e.target===t.value&&r&&(p(`after-${a}`),f(`ANIMATION_END`),!i.value)){let e=t.value.style.animationFillMode;t.value.style.animationFillMode=`forwards`,o=s?.setTimeout(()=>{t.value?.style.animationFillMode===`forwards`&&(t.value.style.animationFillMode=e)})}e.target===t.value&&n===`none`&&f(`ANIMATION_END`)},h=e=>{e.target===t.value&&(r.value=St(t.value))},g=F(t,(e,t)=>{e?(n.value=getComputedStyle(e),e.addEventListener(`animationstart`,h),e.addEventListener(`animationcancel`,m),e.addEventListener(`animationend`,m)):(f(`ANIMATION_END`),o!==void 0&&s?.clearTimeout(o),t?.removeEventListener(`animationstart`,h),t?.removeEventListener(`animationcancel`,m),t?.removeEventListener(`animationend`,m))},{immediate:!0}),_=F(l,()=>{let e=St(t.value);r.value=l.value===`mounted`?e:`none`});return u(()=>{g(),_()}),{isPresent:c(()=>[`mounted`,`unmountSuspended`].includes(l.value))}}function St(e){return e&&getComputedStyle(e).animationName||`none`}var Ct=g({name:`Presence`,props:{present:{type:Boolean,required:!0},forceMount:{type:Boolean}},slots:{},setup(e,{slots:t,expose:n}){let{present:r,forceMount:i}=I(e),a=A(),{isPresent:o}=xt(r,a);n({present:o});let s=t.default({present:o.value});s=Be(s||[]);let c=y();if(s&&s?.length>1){let e=c?.parent?.type.name?`<${c.parent.type.name} />`:`component`;throw Error([`Detected an invalid children for \`${e}\` for \`Presence\` component.`,``,"Note: Presence works similarly to `v-if` directly, but it waits for animation/transition to finished before unmounting. So it expect only one direct child of valid VNode type.",`You can apply a few solutions:`,["Provide a single child element so that `presence` directive attach correctly.",`Ensure the first child is an actual element instead of a raw text node or comment node.`].map(e=>` - ${e}`).join(` +`)].join(` +`))}return()=>i.value||r.value||o.value?f(t.default({present:o.value})[0],{ref:e=>{let t=V(e);return t?.hasAttribute===void 0||(t?.hasAttribute(`data-reka-popper-content-wrapper`)?a.value=t.firstElementChild:a.value=t),t}}):null}}),wt=g({name:`PrimitiveSlot`,inheritAttrs:!1,setup(e,{attrs:t,slots:n}){return()=>{if(!n.default)return null;let e=Be(n.default()),r=e.findIndex(e=>e.type!==S);if(r===-1)return e;let i=e[r];delete i.props?.ref;let a=i.props?T(t,i.props):t,o=C({...i,props:{}},a);return e.length===1?o:(e[r]=o,e)}}}),Tt=[`area`,`img`,`input`],q=g({name:`Primitive`,inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},as:{type:[String,Object],default:`div`}},setup(e,{attrs:t,slots:n}){let r=e.asChild?`template`:e.as;return typeof r==`string`&&Tt.includes(r)?()=>f(r,t):r===`template`?()=>f(wt,t,{default:n.default}):()=>f(e.as,t,{default:n.default})}});function Et(){let e=A();return{primitiveElement:e,currentElement:c(()=>[`#text`,`#comment`].includes(e.value?.$el.nodeName)?e.value?.$el.nextElementSibling:V(e))}}var[J,Dt]=z(`DialogRoot`),Ot=g({inheritAttrs:!1,__name:`DialogRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,i=H(n,`open`,t,{defaultValue:n.defaultOpen,passive:n.open===void 0}),a=A(),o=A(),{modal:s}=I(n);return Dt({open:i,modal:s,openModal:()=>{i.value=!0},onOpenChange:e=>{i.value=e},onOpenToggle:()=>{i.value=!i.value},contentId:``,titleId:``,descriptionId:``,triggerElement:a,contentElement:o}),(e,t)=>O(e.$slots,`default`,{open:r(i),close:()=>i.value=!1})}}),kt=g({__name:`DialogClose`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;U();let n=J();return(e,i)=>(m(),v(r(q),T(t,{type:e.as===`button`?`button`:void 0,onClick:i[0]||=e=>r(n).onOpenChange(!1)}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`type`]))}}),At=`dismissableLayer.pointerDownOutside`,jt=`dismissableLayer.focusOutside`;function Mt(e,t){let n=t.closest(`[data-dismissable-layer]`),r=e.dataset.dismissableLayer===``?e:e.querySelector(`[data-dismissable-layer]`),i=Array.from(e.ownerDocument.querySelectorAll(`[data-dismissable-layer]`));return!!(n&&(r===n||i.indexOf(r){});return P(o=>{if(!R||!x(n))return;let s=async n=>{let o=n.target;if(!(!t?.value||!o)){if(Mt(t.value,o)){i.value=!1;return}if(n.target&&!i.value){let t={originalEvent:n};function i(){Re(At,e,t)}n.pointerType===`touch`?(r.removeEventListener(`click`,a.value),a.value=i,r.addEventListener(`click`,a.value,{once:!0})):i()}else r.removeEventListener(`click`,a.value);i.value=!1}},c=window.setTimeout(()=>{r.addEventListener(`pointerdown`,s)},0);o(()=>{window.clearTimeout(c),r.removeEventListener(`pointerdown`,s),r.removeEventListener(`click`,a.value)})}),{onPointerDownCapture:()=>{x(n)&&(i.value=!0)}}}function Pt(e,t,n=!0){let r=t?.value?.ownerDocument??globalThis?.document,i=A(!1);return P(a=>{if(!R||!x(n))return;let o=async n=>{if(!t?.value)return;await d(),await d();let r=n.target;!t.value||!r||Mt(t.value,r)||n.target&&!i.value&&Re(jt,e,{originalEvent:n})};r.addEventListener(`focusin`,o),a(()=>r.removeEventListener(`focusin`,o))}),{onFocusCapture:()=>{x(n)&&(i.value=!0)},onBlurCapture:()=>{x(n)&&(i.value=!1)}}}var Y=ie({layersRoot:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Ft=g({__name:`DismissableLayer`,props:{disableOutsidePointerEvents:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`dismiss`],setup(e,{emit:t}){let n=e,i=t,{forwardRef:o,currentElement:s}=U(),l=c(()=>s.value?.ownerDocument??globalThis.document),u=c(()=>Y.layersRoot),f=c(()=>s.value?Array.from(u.value).indexOf(s.value):-1),p=c(()=>Y.layersWithOutsidePointerEventsDisabled.size>0),h=c(()=>{let e=Array.from(u.value),[t]=[...Y.layersWithOutsidePointerEventsDisabled].slice(-1),n=e.indexOf(t);return f.value>=n}),g=Nt(async e=>{let t=[...Y.branches].some(t=>t?.contains(e.target));!h.value||t||(i(`pointerDownOutside`,e),i(`interactOutside`,e),await d(),e.defaultPrevented||i(`dismiss`))},s),_=Pt(e=>{[...Y.branches].some(t=>t?.contains(e.target))||(i(`focusOutside`,e),i(`interactOutside`,e),e.defaultPrevented||i(`dismiss`))},s);Je(`Escape`,e=>{f.value===u.value.size-1&&(i(`escapeKeyDown`,e),e.defaultPrevented||i(`dismiss`))});let y;return P(e=>{s.value&&(n.disableOutsidePointerEvents&&(Y.layersWithOutsidePointerEventsDisabled.size===0&&(y=l.value.body.style.pointerEvents,l.value.body.style.pointerEvents=`none`),Y.layersWithOutsidePointerEventsDisabled.add(s.value)),u.value.add(s.value),e(()=>{n.disableOutsidePointerEvents&&Y.layersWithOutsidePointerEventsDisabled.size===1&&(l.value.body.style.pointerEvents=y)}))}),P(e=>{e(()=>{s.value&&(u.value.delete(s.value),Y.layersWithOutsidePointerEventsDisabled.delete(s.value))})}),(e,t)=>(m(),v(r(q),{ref:r(o),"as-child":e.asChild,as:e.as,"data-dismissable-layer":``,style:a({pointerEvents:p.value?h.value?`auto`:`none`:void 0}),onFocusCapture:r(_).onFocusCapture,onBlurCapture:r(_).onBlurCapture,onPointerdownCapture:r(g).onPointerDownCapture},{default:j(()=>[O(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`style`,`onFocusCapture`,`onBlurCapture`,`onPointerdownCapture`]))}}),It=Pe(()=>A([]));function Lt(){let e=It();return{add(t){let n=e.value[0];t!==n&&n?.pause(),e.value=Rt(e.value,t),e.value.unshift(t)},remove(t){e.value=Rt(e.value,t),e.value[0]?.resume()}}}function Rt(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function zt(e){return e.filter(e=>e.tagName!==`A`)}var Bt=`focusScope.autoFocusOnMount`,Vt=`focusScope.autoFocusOnUnmount`,Ht={bubbles:!1,cancelable:!0};function Ut(e,{select:t=!1}={}){let n=B();for(let r of e)if(X(r,{select:t}),B()!==n)return!0}function Wt(e){let t=Gt(e);return[Kt(t,e),Kt(t.reverse(),e)]}function Gt(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Kt(e,t){for(let n of e)if(!qt(n,{upTo:t}))return n}function qt(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function Jt(e){return e instanceof HTMLInputElement&&`select`in e}function X(e,{select:t=!1}={}){if(e&&e.focus){let n=B();e.focus({preventScroll:!0}),e!==n&&Jt(e)&&t&&e.select()}}var Yt=g({__name:`FocusScope`,props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`mountAutoFocus`,`unmountAutoFocus`],setup(e,{emit:t}){let n=e,i=t,{currentRef:a,currentElement:o}=U(),s=A(null),c=Lt(),l=ie({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});P(e=>{if(!R)return;let t=o.value;if(!n.trapped)return;function r(e){if(l.paused||!t)return;let n=e.target;t.contains(n)?s.value=n:X(s.value,{select:!0})}function i(e){if(l.paused||!t)return;let n=e.relatedTarget;n!==null&&(t.contains(n)||X(s.value,{select:!0}))}function a(e){t.contains(s.value)||X(t)}document.addEventListener(`focusin`,r),document.addEventListener(`focusout`,i);let c=new MutationObserver(a);t&&c.observe(t,{childList:!0,subtree:!0}),e(()=>{document.removeEventListener(`focusin`,r),document.removeEventListener(`focusout`,i),c.disconnect()})}),P(async e=>{let t=o.value;if(await d(),!t)return;c.add(l);let n=B();if(!t.contains(n)){let e=new CustomEvent(Bt,Ht);t.addEventListener(Bt,e=>i(`mountAutoFocus`,e)),t.dispatchEvent(e),e.defaultPrevented||(Ut(zt(Gt(t)),{select:!0}),B()===n&&X(t))}e(()=>{t.removeEventListener(Bt,e=>i(`mountAutoFocus`,e));let e=new CustomEvent(Vt,Ht),r=e=>{i(`unmountAutoFocus`,e)};t.addEventListener(Vt,r),t.dispatchEvent(e),setTimeout(()=>{e.defaultPrevented||X(n??document.body,{select:!0}),t.removeEventListener(Vt,r),c.remove(l)},0)})});function u(e){if(!n.loop&&!n.trapped||l.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,r=B();if(t&&r){let t=e.currentTarget,[i,a]=Wt(t);i&&a?!e.shiftKey&&r===a?(e.preventDefault(),n.loop&&X(i,{select:!0})):e.shiftKey&&r===i&&(e.preventDefault(),n.loop&&X(a,{select:!0})):r===t&&e.preventDefault()}}return(e,t)=>(m(),v(r(q),{ref_key:`currentRef`,ref:a,tabindex:`-1`,"as-child":e.asChild,as:e.as,onKeydown:u},{default:j(()=>[O(e.$slots,`default`)]),_:3},8,[`as-child`,`as`]))}}),Xt=[`Enter`,` `],Zt=[`ArrowDown`,`PageUp`,`Home`],Qt=[`ArrowUp`,`PageDown`,`End`];[...Zt,...Qt],[...Xt],[...Xt];function $t(e){return e?`open`:`closed`}function en(e){let t=B();for(let n of e)if(n===t||(n.focus(),B()!==t))return}var tn=g({__name:`DialogContentImpl`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=J(),{forwardRef:o,currentElement:s}=U();return a.titleId||=K(void 0,`reka-dialog-title`),a.descriptionId||=K(void 0,`reka-dialog-description`),E(()=>{a.contentElement=s,B()!==document.body&&(a.triggerElement.value=B())}),(e,t)=>(m(),v(r(Yt),{"as-child":``,loop:``,trapped:n.trapFocus,onMountAutoFocus:t[5]||=e=>i(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>i(`closeAutoFocus`,e)},{default:j(()=>[h(r(Ft),T({id:r(a).contentId,ref:r(o),as:e.as,"as-child":e.asChild,"disable-outside-pointer-events":e.disableOutsidePointerEvents,role:`dialog`,"aria-describedby":r(a).descriptionId,"aria-labelledby":r(a).titleId,"data-state":r($t)(r(a).open.value)},e.$attrs,{onDismiss:t[0]||=e=>r(a).onOpenChange(!1),onEscapeKeyDown:t[1]||=e=>i(`escapeKeyDown`,e),onFocusOutside:t[2]||=e=>i(`focusOutside`,e),onInteractOutside:t[3]||=e=>i(`interactOutside`,e),onPointerDownOutside:t[4]||=e=>i(`pointerDownOutside`,e)}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`id`,`as`,`as-child`,`disable-outside-pointer-events`,`aria-describedby`,`aria-labelledby`,`data-state`])]),_:3},8,[`trapped`]))}}),nn=g({__name:`DialogContentModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=J(),o=nt(i),{forwardRef:s,currentElement:c}=U();return mt(c),(e,t)=>(m(),v(tn,T({...n,...r(o)},{ref:r(s),"trap-focus":r(a).open.value,"disable-outside-pointer-events":!0,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(e.preventDefault(),r(a).triggerElement.value?.focus())},onPointerDownOutside:t[1]||=e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()},onFocusOutside:t[2]||=e=>{e.preventDefault()}}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),rn=g({__name:`DialogContentNonModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=nt(t);U();let a=J(),o=A(!1),s=A(!1);return(e,t)=>(m(),v(tn,T({...n,...r(i)},{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(o.value||r(a).triggerElement.value?.focus(),e.preventDefault()),o.value=!1,s.value=!1},onInteractOutside:t[1]||=e=>{e.defaultPrevented||(o.value=!0,e.detail.originalEvent.type===`pointerdown`&&(s.value=!0));let t=e.target;r(a).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&s.value&&e.preventDefault()}}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),an=g({__name:`DialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=J(),o=nt(i),{forwardRef:s}=U();return(e,t)=>(m(),v(r(Ct),{present:e.forceMount||r(a).open.value},{default:j(()=>[r(a).modal.value?(m(),v(nn,T({key:0,ref:r(s)},{...n,...r(o),...e.$attrs}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16)):(m(),v(rn,T({key:1,ref:r(s)},{...n,...r(o),...e.$attrs}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),on=g({__name:`DialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;U();let n=J();return(e,i)=>(m(),v(r(q),T(t,{id:r(n).descriptionId}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`id`]))}}),sn=g({__name:`DialogOverlayImpl`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=J();return Qe(!0),U(),(e,n)=>(m(),v(r(q),{as:e.as,"as-child":e.asChild,"data-state":r(t).open.value?`open`:`closed`,style:{"pointer-events":`auto`}},{default:j(()=>[O(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`]))}}),cn=g({__name:`DialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=J(),{forwardRef:n}=U();return(e,i)=>r(t)?.modal.value?(m(),v(r(Ct),{key:0,present:e.forceMount||r(t).open.value},{default:j(()=>[h(sn,T(e.$attrs,{ref:r(n),as:e.as,"as-child":e.asChild}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`as`,`as-child`])]),_:3},8,[`present`])):N(`v-if`,!0)}}),ln=g({__name:`Teleport`,props:{to:{type:null,required:!1,default:`body`},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=Ge();return(e,n)=>r(t)||e.forceMount?(m(),v(ue,{key:0,to:e.to,disabled:e.disabled,defer:e.defer},[O(e.$slots,`default`)],8,[`to`,`disabled`,`defer`])):N(`v-if`,!0)}}),un=g({__name:`DialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(m(),v(r(ln),s(l(t)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),dn=g({__name:`DialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e,n=J();return U(),(e,i)=>(m(),v(r(q),T(t,{id:r(n).titleId}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`id`]))}}),fn=g({__name:`AlertDialogAction`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;return U(),(e,n)=>(m(),v(r(kt),s(l(t)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),[pn,mn]=z(`AlertDialogContent`),hn=g({__name:`AlertDialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=nt(t);U();let a=A();return mn({onCancelElementChange:e=>{a.value=e}}),(e,t)=>(m(),v(r(an),T({...n,...r(i)},{role:`alertdialog`,onPointerDownOutside:t[0]||=L(()=>{},[`prevent`]),onInteractOutside:t[1]||=L(()=>{},[`prevent`]),onOpenAutoFocus:t[2]||=()=>{d(()=>{a.value?.focus({preventScroll:!0})})}}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),gn=g({__name:`AlertDialogCancel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=pn(),{forwardRef:i,currentElement:a}=U();return E(()=>{n.onCancelElementChange(a.value)}),(e,n)=>(m(),v(r(kt),T(t,{ref:r(i)}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),_n=g({__name:`AlertDialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;return U(),(e,n)=>(m(),v(r(on),s(l(t)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),vn=g({__name:`AlertDialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return U(),(e,n)=>(m(),v(r(cn),s(l(t)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),yn=g({__name:`AlertDialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(m(),v(r(ln),s(l(t)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),bn=g({__name:`AlertDialogRoot`,props:{open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1}},emits:[`update:open`],setup(e,{emit:t}){let n=G(e,t);return U(),(e,t)=>(m(),v(r(Ot),T(r(n),{modal:!0}),{default:j(t=>[O(e.$slots,`default`,s(l(t)))]),_:3},16))}}),xn=g({__name:`AlertDialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e;return U(),(e,n)=>(m(),v(r(dn),s(l(t)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),Sn=`data-reka-collection-item`;function Z(e={}){let{key:t=``,isProvider:n=!1}=e,r=`${t}CollectionProvider`,i;if(n){let e=A(new Map);i={collectionRef:A(),itemMap:e},ae(r,i)}else i=b(r);let a=(e=!1)=>{let t=i.collectionRef.value;if(!t)return[];let n=Array.from(t.querySelectorAll(`[${Sn}]`)),r=Array.from(i.itemMap.value.values()).sort((e,t)=>n.indexOf(e.ref)-n.indexOf(t.ref));return e?r:r.filter(e=>e.ref.dataset.disabled!==``)},o=g({name:`CollectionSlot`,setup(e,{slots:t}){let{primitiveElement:n,currentElement:r}=Et();return F(r,()=>{i.collectionRef.value=r.value}),()=>f(wt,{ref:n},t)}}),s=g({name:`CollectionItem`,inheritAttrs:!1,props:{value:{validator:()=>!0}},setup(e,{slots:t,attrs:n}){let{primitiveElement:r,currentElement:a}=Et();return P(t=>{if(a.value){let n=te(a.value);i.itemMap.value.set(n,{ref:a.value,value:e.value}),t(()=>i.itemMap.value.delete(n))}}),()=>f(wt,{...n,[Sn]:``,ref:r},t)}});return{getItems:a,reactiveItems:c(()=>Array.from(i.itemMap.value.values())),itemMapSize:c(()=>i.itemMap.value.size),CollectionSlot:o,CollectionItem:s}}var Cn=g({__name:`VisuallyHidden`,props:{feature:{type:String,required:!1,default:`focusable`},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return(e,t)=>(m(),v(r(q),{as:e.as,"as-child":e.asChild,"aria-hidden":e.feature===`focusable`?`true`:void 0,"data-hidden":e.feature===`fully-hidden`?``:void 0,tabindex:e.feature===`fully-hidden`?`-1`:void 0,style:{position:`absolute`,border:0,width:`1px`,height:`1px`,padding:0,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,clipPath:`inset(50%)`,whiteSpace:`nowrap`,wordWrap:`normal`,top:`-1px`,left:`-1px`}},{default:j(()=>[O(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`aria-hidden`,`data-hidden`,`tabindex`]))}}),[wn,Tn]=z(`PopperRoot`),En=g({inheritAttrs:!1,__name:`PopperRoot`,setup(e){let t=A();return Tn({anchor:t,onAnchorChange:e=>t.value=e}),(e,t)=>O(e.$slots,`default`)}}),Dn=g({__name:`PopperAnchor`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:n,currentElement:i}=U(),a=wn();return oe(()=>{a.onAnchorChange(t.reference??i.value)}),(e,t)=>(m(),v(r(q),{ref:r(n),as:e.as,"as-child":e.asChild},{default:j(()=>[O(e.$slots,`default`)]),_:3},8,[`as`,`as-child`]))}}),On={key:0,d:`M0 0L6 6L12 0`},kn={key:1,d:`M0 0L4.58579 4.58579C5.36683 5.36683 6.63316 5.36684 7.41421 4.58579L12 0`},An=g({__name:`Arrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let n=e;return U(),(e,i)=>(m(),v(r(q),T(n,{width:e.width,height:e.height,viewBox:e.asChild?void 0:`0 0 12 6`,preserveAspectRatio:e.asChild?void 0:`none`}),{default:j(()=>[O(e.$slots,`default`,{},()=>[e.rounded?(m(),t(`path`,kn)):(m(),t(`path`,On))])]),_:3},16,[`width`,`height`,`viewBox`,`preserveAspectRatio`]))}});function jn(e){return e!==null}function Mn(e){return{name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=Nn(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}}}function Nn(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var Pn={side:`bottom`,sideOffset:0,sideFlip:!0,align:`center`,alignOffset:0,alignFlip:!0,arrowPadding:0,avoidCollisions:!0,collisionBoundary:()=>[],collisionPadding:0,sticky:`partial`,hideWhenDetached:!1,positionStrategy:`fixed`,updatePositionStrategy:`optimized`,prioritizePosition:!1},[Fn,In]=z(`PopperContent`),Ln=g({inheritAttrs:!1,__name:`PopperContent`,props:n({side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},{...Pn}),emits:[`placed`],setup(e,{emit:n}){let i=e,o=n,s=wn(),{forwardRef:l,currentElement:u}=U(),d=A(),f=A(),{width:p,height:g}=gt(f),_=c(()=>i.side+(i.align===`center`?``:`-${i.align}`)),v=c(()=>typeof i.collisionPadding==`number`?i.collisionPadding:{top:0,right:0,bottom:0,left:0,...i.collisionPadding}),y=c(()=>Array.isArray(i.collisionBoundary)?i.collisionBoundary:[i.collisionBoundary]),b=c(()=>({padding:v.value,boundary:y.value.filter(jn),altBoundary:y.value.length>0})),x=c(()=>({mainAxis:i.sideFlip,crossAxis:i.alignFlip})),S=xe(()=>[Ce({mainAxis:i.sideOffset+g.value,alignmentAxis:i.alignOffset}),i.prioritizePosition&&i.avoidCollisions&&je({...b.value,...x.value}),i.avoidCollisions&&Ne({mainAxis:!0,crossAxis:!!i.prioritizePosition,limiter:i.sticky===`partial`?De():void 0,...b.value}),!i.prioritizePosition&&i.avoidCollisions&&je({...b.value,...x.value}),Ie({...b.value,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--reka-popper-available-width`,`${n}px`),o.setProperty(`--reka-popper-available-height`,`${r}px`),o.setProperty(`--reka-popper-anchor-width`,`${i}px`),o.setProperty(`--reka-popper-anchor-height`,`${a}px`)}}),f.value&&Te({element:f.value,padding:i.arrowPadding}),Mn({arrowWidth:p.value,arrowHeight:g.value}),i.hideWhenDetached&&Oe({strategy:`referenceHidden`,...b.value})]),{floatingStyles:C,placement:w,isPositioned:E,middlewareData:D,update:ee}=Ee(c(()=>i.reference??s.anchor.value),d,{strategy:i.positionStrategy,placement:_,whileElementsMounted:(...e)=>Me(...e,{layoutShift:!i.disableUpdateOnLayoutShift,animationFrame:i.updatePositionStrategy===`always`}),middleware:S}),k=c(()=>Nn(w.value)[0]),te=c(()=>Nn(w.value)[1]);oe(()=>{E.value&&o(`placed`)});let ne=c(()=>D.value.arrow?.centerOffset!==0),M=A(``);return P(()=>{u.value&&(M.value=window.getComputedStyle(u.value).zIndex)}),In({placedSide:k,onArrowChange:e=>f.value=e,arrowX:c(()=>D.value.arrow?.x??0),arrowY:c(()=>D.value.arrow?.y??0),shouldHideArrow:ne}),(e,n)=>(m(),t(`div`,{ref_key:`floatingRef`,ref:d,"data-reka-popper-content-wrapper":``,style:a({...r(C),transform:r(E)?r(C).transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:M.value,"--reka-popper-transform-origin":[r(D).transformOrigin?.x,r(D).transformOrigin?.y].join(` `),...r(D).hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}})},[h(r(q),T({ref:r(l)},e.$attrs,{"as-child":i.asChild,as:e.as,"data-side":k.value,"data-align":te.value,style:{animation:r(E)?void 0:`none`}}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`as-child`,`as`,`data-side`,`data-align`,`style`])],4))}}),Rn={top:`bottom`,right:`left`,bottom:`top`,left:`right`},zn=g({inheritAttrs:!1,__name:`PopperArrow`,props:{width:{type:Number,required:!1},height:{type:Number,required:!1},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let{forwardRef:n}=U(),i=Fn(),o=c(()=>Rn[i.placedSide.value]);return(e,s)=>(m(),t(`span`,{ref:e=>{r(i).onArrowChange(e)},style:a({position:`absolute`,left:r(i).arrowX?.value?`${r(i).arrowX?.value}px`:void 0,top:r(i).arrowY?.value?`${r(i).arrowY?.value}px`:void 0,[o.value]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[r(i).placedSide.value],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[r(i).placedSide.value],visibility:r(i).shouldHideArrow.value?`hidden`:void 0})},[h(An,T(e.$attrs,{ref:r(n),style:{display:`block`},as:e.as,"as-child":e.asChild,rounded:e.rounded,width:e.width,height:e.height}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`as`,`as-child`,`rounded`,`width`,`height`])],4))}});function Bn(e){let t=Ve({nonce:A()});return c(()=>e?.value||t.nonce?.value)}var[Vn,Hn]=z(`PopoverRoot`),Un=g({__name:`PopoverRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},modal:{type:Boolean,required:!1,default:!1}},emits:[`update:open`],setup(e,{emit:t}){let n=e,i=t,{modal:a}=I(n),o=H(n,`open`,i,{defaultValue:n.defaultOpen,passive:n.open===void 0});return Hn({contentId:``,triggerId:``,modal:a,open:o,onOpenChange:e=>{o.value=e},onOpenToggle:()=>{o.value=!o.value},triggerElement:A(),hasCustomAnchor:A(!1)}),(e,t)=>(m(),v(r(En),null,{default:j(()=>[O(e.$slots,`default`,{open:r(o),close:()=>o.value=!1})]),_:3}))}}),Wn=g({__name:`PopoverContentImpl`,props:{trapFocus:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=W(de(n,`trapFocus`,`disableOutsidePointerEvents`)),{forwardRef:o}=U(),s=Vn();return it(),(e,t)=>(m(),v(r(Yt),{"as-child":``,loop:``,trapped:e.trapFocus,onMountAutoFocus:t[5]||=e=>i(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>i(`closeAutoFocus`,e)},{default:j(()=>[h(r(Ft),{"as-child":``,"disable-outside-pointer-events":e.disableOutsidePointerEvents,onPointerDownOutside:t[0]||=e=>i(`pointerDownOutside`,e),onInteractOutside:t[1]||=e=>i(`interactOutside`,e),onEscapeKeyDown:t[2]||=e=>i(`escapeKeyDown`,e),onFocusOutside:t[3]||=e=>i(`focusOutside`,e),onDismiss:t[4]||=e=>r(s).onOpenChange(!1)},{default:j(()=>[h(r(Ln),T(r(a),{id:r(s).contentId,ref:r(o),"data-state":r(s).open.value?`open`:`closed`,"aria-labelledby":r(s).triggerId,style:{"--reka-popover-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-popover-content-available-width":`var(--reka-popper-available-width)`,"--reka-popover-content-available-height":`var(--reka-popper-available-height)`,"--reka-popover-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-popover-trigger-height":`var(--reka-popper-anchor-height)`},role:`dialog`}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`id`,`data-state`,`aria-labelledby`])]),_:3},8,[`disable-outside-pointer-events`])]),_:3},8,[`trapped`]))}}),Gn=g({__name:`PopoverContentModal`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=Vn(),o=A(!1);Qe(!0);let s=G(n,i),{forwardRef:c,currentElement:l}=U();return mt(l),(e,t)=>(m(),v(Wn,T(r(s),{ref:r(c),"trap-focus":r(a).open.value,"disable-outside-pointer-events":``,onCloseAutoFocus:t[0]||=L(e=>{i(`closeAutoFocus`,e),o.value||r(a).triggerElement.value?.focus()},[`prevent`]),onPointerDownOutside:t[1]||=e=>{i(`pointerDownOutside`,e);let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;o.value=t.button===2||n},onFocusOutside:t[2]||=L(()=>{},[`prevent`])}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),Kn=g({__name:`PopoverContentNonModal`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=Vn(),o=A(!1),s=A(!1),c=G(n,i);return(e,t)=>(m(),v(Wn,T(r(c),{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{i(`closeAutoFocus`,e),e.defaultPrevented||(o.value||r(a).triggerElement.value?.focus(),e.preventDefault()),o.value=!1,s.value=!1},onInteractOutside:t[1]||=async e=>{i(`interactOutside`,e),e.defaultPrevented||(o.value=!0,e.detail.originalEvent.type===`pointerdown`&&(s.value=!0));let t=e.target;r(a).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&s.value&&e.preventDefault()}}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),qn=g({__name:`PopoverContent`,props:{forceMount:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=Vn(),o=G(n,i),{forwardRef:s}=U();return a.contentId||=K(void 0,`reka-popover-content`),(e,t)=>(m(),v(r(Ct),{present:e.forceMount||r(a).open.value},{default:j(()=>[r(a).modal.value?(m(),v(Gn,T({key:0},r(o),{ref:r(s)}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16)):(m(),v(Kn,T({key:1},r(o),{ref:r(s)}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),Jn=g({__name:`PopoverPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(m(),v(r(ln),s(l(t)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),Yn=g({__name:`PopoverTrigger`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=Vn(),{forwardRef:i,currentElement:a}=U();return n.triggerId||=K(void 0,`reka-popover-trigger`),E(()=>{n.triggerElement.value=a.value}),(e,a)=>(m(),v(D(r(n).hasCustomAnchor.value?r(q):r(Dn)),{"as-child":``},{default:j(()=>[h(r(q),{id:r(n).triggerId,ref:r(i),type:e.as===`button`?`button`:void 0,"aria-haspopup":`dialog`,"aria-expanded":r(n).open.value,"aria-controls":r(n).contentId,"data-state":r(n).open.value?`open`:`closed`,as:e.as,"as-child":t.asChild,onClick:r(n).onOpenToggle},{default:j(()=>[O(e.$slots,`default`)]),_:3},8,[`id`,`type`,`aria-expanded`,`aria-controls`,`data-state`,`as`,`as-child`,`onClick`])]),_:3}))}}),Xn=g({__name:`Label`,props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`label`}},setup(e){let t=e;return U(),(e,n)=>(m(),v(r(q),T(t,{onMousedown:n[0]||=e=>{!e.defaultPrevented&&e.detail>1&&e.preventDefault()}}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),Zn=100,[Qn,$n]=z(`ProgressRoot`),er=e=>typeof e==`number`;function tr(e,t){return ze(e)||er(e)&&!Number.isNaN(e)&&e<=t&&e>=0?e:(console.error(`Invalid prop \`value\` of value \`${e}\` supplied to \`ProgressRoot\`. The \`value\` prop must be: + - a positive number + - less than the value passed to \`max\` (or ${Zn} if no \`max\` prop is set) + - \`null\` or \`undefined\` if the progress is indeterminate. + +Defaulting to \`null\`.`),null)}function nr(e){return er(e)&&!Number.isNaN(e)&&e>0?e:(console.error(`Invalid prop \`max\` of value \`${e}\` supplied to \`ProgressRoot\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Zn}\`.`),Zn)}var rr=g({__name:`ProgressRoot`,props:{modelValue:{type:[Number,null],required:!1},max:{type:Number,required:!1,default:Zn},getValueLabel:{type:Function,required:!1,default:(e,t)=>er(e)?`${Math.round(e/t*Zn)}%`:void 0},getValueText:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`,`update:max`],setup(e,{emit:t}){let n=e,i=t;U();let a=H(n,`modelValue`,i,{passive:n.modelValue===void 0}),o=H(n,`max`,i,{passive:n.max===void 0});F(()=>a.value,async e=>{let t=tr(e,n.max);t!==e&&(await d(),a.value=t)},{immediate:!0}),F(()=>n.max,e=>{let t=nr(n.max);t!==e&&(o.value=t)},{immediate:!0});let s=c(()=>ze(a.value)?`indeterminate`:a.value===o.value?`complete`:`loading`);return $n({modelValue:a,max:o,progressState:s}),(e,t)=>(m(),v(r(q),{"as-child":e.asChild,as:e.as,"aria-valuemax":r(o),"aria-valuemin":0,"aria-valuenow":er(r(a))?r(a):void 0,"aria-valuetext":e.getValueText?.(r(a),r(o)),"aria-label":e.getValueLabel(r(a),r(o)),role:`progressbar`,"data-state":s.value,"data-value":r(a)??void 0,"data-max":r(o)},{default:j(()=>[O(e.$slots,`default`,{modelValue:r(a)})]),_:3},8,[`as-child`,`as`,`aria-valuemax`,`aria-valuenow`,`aria-valuetext`,`aria-label`,`data-state`,`data-value`,`data-max`]))}}),ir=g({__name:`ProgressIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=Qn();return U(),(e,i)=>(m(),v(r(q),T(t,{"data-state":r(n).progressState.value,"data-value":r(n).modelValue?.value??void 0,"data-max":r(n).max.value}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`data-state`,`data-value`,`data-max`]))}}),ar=[` `,`Enter`,`ArrowUp`,`ArrowDown`],or=[` `,`Enter`];function sr(e,t,n){return e===void 0?!1:Array.isArray(e)?e.some(e=>cr(e,t,n)):cr(e,t,n)}function cr(e,t,n){return e===void 0||t===void 0?!1:typeof e==`string`?e===t:typeof n==`function`?n(e,t):typeof n==`string`?e?.[n]===t?.[n]:ge(e,t)}function lr(e){return e==null||e===``||Array.isArray(e)&&e.length===0}var ur={key:0,value:``},[Q,dr]=z(`SelectRoot`),fr=g({inheritAttrs:!1,__name:`SelectRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},by:{type:[String,Function],required:!1},dir:{type:String,required:!1},multiple:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`,`update:open`],setup(e,{emit:n}){let a=e,o=n,{required:s,disabled:l,multiple:u,dir:d}=I(a),f=H(a,`modelValue`,o,{defaultValue:a.defaultValue??(u.value?[]:void 0),passive:a.modelValue===void 0,deep:!0}),h=H(a,`open`,o,{defaultValue:a.defaultOpen,passive:a.open===void 0}),g=A(),_=A(),y=A({x:0,y:0}),b=c(()=>u.value&&Array.isArray(f.value)?f.value?.length===0:ze(f.value));Z({isProvider:!0});let x=tt(d),S=ot(g),C=A(new Set),w=c(()=>Array.from(C.value).map(e=>e.value).join(`;`));function E(e){if(u.value){let t=Array.isArray(f.value)?[...f.value]:[],n=t.findIndex(t=>cr(t,e,a.by));n===-1?t.push(e):t.splice(n,1),f.value=[...t]}else f.value=e}function D(e){return Array.from(C.value).find(t=>sr(e,t.value,a.by))}return dr({triggerElement:g,onTriggerChange:e=>{g.value=e},valueElement:_,onValueElementChange:e=>{_.value=e},contentId:``,modelValue:f,onValueChange:E,by:a.by,open:h,multiple:u,required:s,onOpenChange:e=>{h.value=e},dir:x,triggerPointerDownPosRef:y,disabled:l,isEmptyModelValue:b,optionsSet:C,onOptionAdd:e=>{let t=D(e.value);t&&C.value.delete(t),C.value.add(e)},onOptionRemove:e=>{let t=D(e.value);t&&C.value.delete(t)}}),(e,n)=>(m(),v(r(En),null,{default:j(()=>[O(e.$slots,`default`,{modelValue:r(f),open:r(h)}),r(S)?(m(),v(pr,{key:w.value,"aria-hidden":`true`,tabindex:`-1`,multiple:r(u),required:r(s),name:e.name,autocomplete:e.autocomplete,disabled:r(l),value:r(f)},{default:j(()=>[r(ze)(r(f))?(m(),t(`option`,ur)):N(`v-if`,!0),(m(!0),t(i,null,p(Array.from(C.value),e=>(m(),t(`option`,T({key:e.value??``},{ref_for:!0},e),null,16))),128))]),_:1},8,[`multiple`,`required`,`name`,`autocomplete`,`disabled`,`value`])):N(`v-if`,!0)]),_:3}))}}),pr=g({__name:`BubbleSelect`,props:{autocomplete:{type:String,required:!1},autofocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},form:{type:String,required:!1},multiple:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},size:{type:Number,required:!1},value:{type:null,required:!1}},setup(e){let t=e,n=A(),i=Q();F(()=>t.value,(e,t)=>{let r=window.HTMLSelectElement.prototype,i=Object.getOwnPropertyDescriptor(r,`value`).set;if(e!==t&&i&&n.value){let t=new Event(`change`,{bubbles:!0});i.call(n.value,e),n.value.dispatchEvent(t)}});function a(e){i.onValueChange(e.target.value)}return(e,i)=>(m(),v(r(Cn),{"as-child":``},{default:j(()=>[o(`select`,T({ref_key:`selectElement`,ref:n},t,{onInput:a}),[O(e.$slots,`default`)],16)]),_:3}))}}),mr=g({__name:`SelectPopperPosition`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1,default:10},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=W(e);return(e,n)=>(m(),v(r(Ln),T(r(t),{style:{boxSizing:`border-box`,"--reka-select-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-select-content-available-width":`var(--reka-popper-available-width)`,"--reka-select-content-available-height":`var(--reka-popper-available-height)`,"--reka-select-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-select-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),hr={onViewportChange:()=>{},itemTextRefCallback:()=>{},itemRefCallback:()=>{}},[$,gr]=z(`SelectContent`),_r=g({__name:`SelectContentImpl`,props:{position:{type:String,required:!1,default:`item-aligned`},bodyLock:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,i=t,a=Q();it(),Qe(n.bodyLock);let{CollectionSlot:o,getItems:s}=Z(),l=A();mt(l);let{search:u,handleTypeaheadSearch:d}=vt(),f=A(),p=A(),g=A(),_=A(!1),y=A(!1),b=A(!1);function x(){p.value&&l.value&&en([p.value,l.value])}F(_,()=>{x()});let{onOpenChange:S,triggerPointerDownPosRef:C}=a;P(e=>{if(!l.value)return;let t={x:0,y:0},n=e=>{t={x:Math.abs(Math.round(e.pageX)-(C.value?.x??0)),y:Math.abs(Math.round(e.pageY)-(C.value?.y??0))}},r=e=>{e.pointerType!==`touch`&&(t.x<=10&&t.y<=10?e.preventDefault():l.value?.contains(e.target)||S(!1),document.removeEventListener(`pointermove`,n),C.value=null)};C.value!==null&&(document.addEventListener(`pointermove`,n),document.addEventListener(`pointerup`,r,{capture:!0,once:!0})),e(()=>{document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r,{capture:!0})})});function w(e){let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&d(e.key,s()),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=[...s().map(e=>e.ref)];if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>en(t)),e.preventDefault()}}let E=W(c(()=>n.position===`popper`?n:{}).value);return gr({content:l,viewport:f,onViewportChange:e=>{f.value=e},itemRefCallback:(e,t,n)=>{let r=!y.value&&!n,i=sr(a.modelValue.value,t,a.by);if(a.multiple.value){if(b.value)return;(i||r)&&(p.value=e,i&&(b.value=!0))}else (i||r)&&(p.value=e);r&&(y.value=!0)},selectedItem:p,selectedItemText:g,onItemLeave:()=>{l.value?.focus()},itemTextRefCallback:(e,t,n)=>{let r=!y.value&&!n;(sr(a.modelValue.value,t,a.by)||r)&&(g.value=e)},focusSelectedItem:x,position:n.position,isPositioned:_,searchRef:u}),(e,t)=>(m(),v(r(o),null,{default:j(()=>[h(r(Yt),{"as-child":``,onMountAutoFocus:t[6]||=L(()=>{},[`prevent`]),onUnmountAutoFocus:t[7]||=e=>{i(`closeAutoFocus`,e),!e.defaultPrevented&&(r(a).triggerElement.value?.focus({preventScroll:!0}),e.preventDefault())}},{default:j(()=>[h(r(Ft),{"as-child":``,"disable-outside-pointer-events":``,onFocusOutside:t[2]||=L(()=>{},[`prevent`]),onDismiss:t[3]||=e=>r(a).onOpenChange(!1),onEscapeKeyDown:t[4]||=e=>i(`escapeKeyDown`,e),onPointerDownOutside:t[5]||=e=>i(`pointerDownOutside`,e)},{default:j(()=>[(m(),v(D(e.position===`popper`?mr:br),T({...e.$attrs,...r(E)},{id:r(a).contentId,ref:e=>{let t=r(V)(e);t?.hasAttribute(`data-reka-popper-content-wrapper`)?l.value=t.firstElementChild:l.value=t},role:`listbox`,"data-state":r(a).open.value?`open`:`closed`,dir:r(a).dir.value,style:{display:`flex`,flexDirection:`column`,outline:`none`},onContextmenu:t[0]||=L(()=>{},[`prevent`]),onPlaced:t[1]||=e=>_.value=!0,onKeydown:w}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`id`,`data-state`,`dir`,`onKeydown`]))]),_:3})]),_:3})]),_:3}))}}),[vr,yr]=z(`SelectItemAlignedPosition`),br=g({inheritAttrs:!1,__name:`SelectItemAlignedPosition`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`placed`],setup(e,{emit:n}){let i=e,o=n,{getItems:s}=Z(),c=Q(),l=$(),u=A(!1),f=A(!0),p=A(),{forwardRef:g,currentElement:_}=U(),{viewport:v,selectedItem:y,selectedItemText:b,focusSelectedItem:x}=l;function S(){if(c.triggerElement.value&&c.valueElement.value&&p.value&&_.value&&v?.value&&y?.value&&b?.value){let e=c.triggerElement.value.getBoundingClientRect(),t=_.value.getBoundingClientRect(),n=c.valueElement.value.getBoundingClientRect(),r=b.value.getBoundingClientRect();if(c.dir.value!==`rtl`){let i=r.left-t.left,a=n.left-i,o=e.left-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,u=Le(a,10,Math.max(10,l-c));p.value.style.minWidth=`${s}px`,p.value.style.left=`${u}px`}else{let i=t.right-r.right,a=window.innerWidth-n.right-i,o=window.innerWidth-e.right-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,u=Le(a,10,Math.max(10,l-c));p.value.style.minWidth=`${s}px`,p.value.style.right=`${u}px`}let i=s().map(e=>e.ref),a=window.innerHeight-20,l=v.value.scrollHeight,d=window.getComputedStyle(_.value),f=Number.parseInt(d.borderTopWidth,10),m=Number.parseInt(d.paddingTop,10),h=Number.parseInt(d.borderBottomWidth,10),g=Number.parseInt(d.paddingBottom,10),x=f+m+l+g+h,S=Math.min(y.value.offsetHeight*5,x),C=window.getComputedStyle(v.value),w=Number.parseInt(C.paddingTop,10),T=Number.parseInt(C.paddingBottom,10),E=e.top+e.height/2-10,D=a-E,O=y.value.offsetHeight/2,ee=y.value.offsetTop+O,k=f+m+ee,te=x-k;if(k<=E){let e=y.value===i[i.length-1];p.value.style.bottom=`0px`;let t=_.value.clientHeight-v.value.offsetTop-v.value.offsetHeight,n=k+Math.max(D,O+(e?T:0)+t+h);p.value.style.height=`${n}px`}else{let e=y.value===i[0];p.value.style.top=`0px`;let t=Math.max(E,f+v.value.offsetTop+(e?w:0)+O)+te;p.value.style.height=`${t}px`,v.value.scrollTop=k-E+v.value.offsetTop}p.value.style.margin=`10px 0`,p.value.style.minHeight=`${S}px`,p.value.style.maxHeight=`${a}px`,o(`placed`),requestAnimationFrame(()=>u.value=!0)}}let C=A(``);E(async()=>{await d(),S(),_.value&&(C.value=window.getComputedStyle(_.value).zIndex)});function w(e){e&&f.value===!0&&(S(),x?.(),f.value=!1)}return Xe(c.triggerElement,()=>{S()}),yr({contentWrapper:p,shouldExpandOnScrollRef:u,onScrollButtonChange:w}),(e,n)=>(m(),t(`div`,{ref_key:`contentWrapperElement`,ref:p,style:a({display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:C.value})},[h(r(q),T({ref:r(g),style:{boxSizing:`border-box`,maxHeight:`100%`}},{...e.$attrs,...i}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16)],4))}}),xr=g({inheritAttrs:!1,__name:`SelectProvider`,props:{context:{type:Object,required:!0}},setup(e){return dr(e.context),gr(hr),(e,t)=>O(e.$slots,`default`)}}),Sr={key:1},Cr=g({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:n}){let i=e,a=G(i,n),o=Q(),u=A();E(()=>{u.value=new DocumentFragment});let d=A(),f=c(()=>i.forceMount||o.open.value),p=A(f.value);return F(f,()=>{setTimeout(()=>p.value=f.value)}),(e,n)=>f.value||p.value||d.value?.present?(m(),v(r(Ct),{key:0,ref_key:`presenceRef`,ref:d,present:f.value},{default:j(()=>[h(_r,s(l({...r(a),...e.$attrs})),{default:j(()=>[O(e.$slots,`default`)]),_:3},16)]),_:3},8,[`present`])):u.value?(m(),t(`div`,Sr,[(m(),v(ue,{to:u.value},[h(xr,{context:r(o)},{default:j(()=>[O(e.$slots,`default`)]),_:3},8,[`context`])],8,[`to`]))])):N(`v-if`,!0)}}),wr=g({__name:`SelectIcon`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return(e,t)=>(m(),v(r(q),{"aria-hidden":`true`,as:e.as,"as-child":e.asChild},{default:j(()=>[O(e.$slots,`default`,{},()=>[t[0]||=M(`▼`)])]),_:3},8,[`as`,`as-child`]))}}),[Tr,Er]=z(`SelectItem`),Dr=g({__name:`SelectItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:t}){let n=e,i=t,{disabled:a}=I(n),o=Q(),s=$(),{forwardRef:l,currentElement:u}=U(),{CollectionItem:f}=Z(),p=c(()=>sr(o.modelValue?.value,n.value,o.by)),g=A(!1),_=A(n.textValue??``),y=K(void 0,`reka-select-item-text`);async function b(e){e.defaultPrevented||Re(`select.select`,x,{originalEvent:e,value:n.value})}async function x(e){await d(),i(`select`,e),!e.defaultPrevented&&(a.value||(o.onValueChange(n.value),o.multiple.value||o.onOpenChange(!1)))}async function S(e){await d(),!e.defaultPrevented&&(a.value?s.onItemLeave?.():e.currentTarget?.focus({preventScroll:!0}))}async function C(e){await d(),!e.defaultPrevented&&e.currentTarget===B()&&s.onItemLeave?.()}async function w(e){await d(),!e.defaultPrevented&&(s.searchRef?.value!==``&&e.key===` `||(or.includes(e.key)&&b(e),e.key===` `&&e.preventDefault()))}if(n.value===``)throw Error(`A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return E(()=>{u.value&&s.itemRefCallback(u.value,n.value,n.disabled)}),Er({value:n.value,disabled:a,textId:y,isSelected:p,onItemTextChange:e=>{_.value=((_.value||e?.textContent)??``).trim()}}),(e,t)=>(m(),v(r(f),{value:{textValue:_.value}},{default:j(()=>[h(r(q),{ref:r(l),role:`option`,"aria-labelledby":r(y),"data-highlighted":g.value?``:void 0,"aria-selected":p.value,"data-state":p.value?`checked`:`unchecked`,"aria-disabled":r(a)||void 0,"data-disabled":r(a)?``:void 0,tabindex:r(a)?void 0:-1,as:e.as,"as-child":e.asChild,onFocus:t[0]||=e=>g.value=!0,onBlur:t[1]||=e=>g.value=!1,onPointerup:b,onPointerdown:t[2]||=e=>{e.currentTarget.focus({preventScroll:!0})},onTouchend:t[3]||=L(()=>{},[`prevent`,`stop`]),onPointermove:S,onPointerleave:C,onKeydown:w},{default:j(()=>[O(e.$slots,`default`)]),_:3},8,[`aria-labelledby`,`data-highlighted`,`aria-selected`,`data-state`,`aria-disabled`,`data-disabled`,`tabindex`,`as`,`as-child`])]),_:3},8,[`value`]))}}),Or=g({__name:`SelectItemIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=Tr();return(e,i)=>r(n).isSelected.value?(m(),v(r(q),T({key:0,"aria-hidden":`true`},t),{default:j(()=>[O(e.$slots,`default`)]),_:3},16)):N(`v-if`,!0)}}),kr=g({inheritAttrs:!1,__name:`SelectItemText`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=Q(),i=$(),a=Tr(),{forwardRef:o,currentElement:s}=U(),l=c(()=>({value:a.value,disabled:a.disabled.value,textContent:s.value?.textContent??a.value?.toString()??``}));return E(()=>{s.value&&(a.onItemTextChange(s.value),i.itemTextRefCallback(s.value,a.value,a.disabled.value),n.onOptionAdd(l.value))}),u(()=>{n.onOptionRemove(l.value)}),(e,n)=>(m(),v(r(q),T({id:r(a).textId,ref:r(o)},{...t,...e.$attrs}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`id`]))}}),Ar=g({__name:`SelectPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(m(),v(r(ln),s(l(t)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),jr=g({__name:`SelectScrollButtonImpl`,emits:[`autoScroll`],setup(e,{emit:t}){let n=t,{getItems:i}=Z(),a=$(),o=A(null);function s(){o.value!==null&&(window.clearInterval(o.value),o.value=null)}P(()=>{i().map(e=>e.ref).find(e=>e===B())?.scrollIntoView({block:`nearest`})});function c(){o.value===null&&(o.value=window.setInterval(()=>{n(`autoScroll`)},50))}function l(){a.onItemLeave?.(),o.value===null&&(o.value=window.setInterval(()=>{n(`autoScroll`)},50))}return w(()=>s()),(e,t)=>(m(),v(r(q),T({"aria-hidden":`true`,style:{flexShrink:0}},e.$parent?.$props,{onPointerdown:c,onPointermove:l,onPointerleave:t[0]||=()=>{s()}}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),Mr=g({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=$(),n=t.position===`item-aligned`?vr():void 0,{forwardRef:i,currentElement:a}=U(),o=A(!1);return P(e=>{if(t.viewport?.value&&t.isPositioned?.value){let n=t.viewport.value;function r(){let e=n.scrollHeight-n.clientHeight;o.value=Math.ceil(n.scrollTop)n.removeEventListener(`scroll`,r))}}),F(a,()=>{a.value&&n?.onScrollButtonChange(a.value)}),(e,n)=>o.value?(m(),v(jr,{key:0,ref:r(i),onAutoScroll:n[0]||=()=>{let{viewport:e,selectedItem:n}=r(t);e?.value&&n?.value&&(e.value.scrollTop=e.value.scrollTop+n.value.offsetHeight)}},{default:j(()=>[O(e.$slots,`default`)]),_:3},512)):N(`v-if`,!0)}}),Nr=g({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=$(),n=t.position===`item-aligned`?vr():void 0,{forwardRef:i,currentElement:a}=U(),o=A(!1);return P(e=>{if(t.viewport?.value&&t.isPositioned?.value){let n=t.viewport.value;function r(){o.value=n.scrollTop>0}r(),n.addEventListener(`scroll`,r),e(()=>n.removeEventListener(`scroll`,r))}}),F(a,()=>{a.value&&n?.onScrollButtonChange(a.value)}),(e,n)=>o.value?(m(),v(jr,{key:0,ref:r(i),onAutoScroll:n[0]||=()=>{let{viewport:e,selectedItem:n}=r(t);e?.value&&n?.value&&(e.value.scrollTop=e.value.scrollTop-n.value.offsetHeight)}},{default:j(()=>[O(e.$slots,`default`)]),_:3},512)):N(`v-if`,!0)}}),Pr=g({__name:`SelectTrigger`,props:{disabled:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=Q(),{forwardRef:i,currentElement:a}=U(),o=c(()=>n.disabled?.value||t.disabled);n.contentId||=K(void 0,`reka-select-content`),E(()=>{n.onTriggerChange(a.value)});let{getItems:s}=Z(),{search:l,handleTypeaheadSearch:u,resetTypeahead:d}=vt();function f(){o.value||(n.onOpenChange(!0),d())}function p(e){f(),n.triggerPointerDownPosRef.value={x:Math.round(e.pageX),y:Math.round(e.pageY)}}return(e,t)=>(m(),v(r(Dn),{"as-child":``,reference:e.reference},{default:j(()=>[h(r(q),{ref:r(i),role:`combobox`,type:e.as===`button`?`button`:void 0,"aria-controls":r(n).contentId,"aria-expanded":r(n).open.value||!1,"aria-required":r(n).required?.value,"aria-autocomplete":`none`,disabled:o.value,dir:r(n)?.dir.value,"data-state":r(n)?.open.value?`open`:`closed`,"data-disabled":o.value?``:void 0,"data-placeholder":r(lr)(r(n).modelValue?.value)?``:void 0,"as-child":e.asChild,as:e.as,onClick:t[0]||=e=>{(e?.currentTarget)?.focus()},onPointerdown:t[1]||=e=>{if(e.pointerType===`touch`)return e.preventDefault();let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&(p(e),e.preventDefault())},onPointerup:t[2]||=L(e=>{e.pointerType===`touch`&&p(e)},[`prevent`]),onKeydown:t[3]||=e=>{let t=r(l)!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&t&&e.key===` `||(r(u)(e.key,r(s)()),r(ar).includes(e.key)&&(f(),e.preventDefault()))}},{default:j(()=>[O(e.$slots,`default`)]),_:3},8,[`type`,`aria-controls`,`aria-expanded`,`aria-required`,`disabled`,`dir`,`data-state`,`data-disabled`,`data-placeholder`,`as-child`,`as`])]),_:3},8,[`reference`]))}}),Fr=g({__name:`SelectValue`,props:{placeholder:{type:String,required:!1,default:``},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,{forwardRef:n,currentElement:i}=U(),a=Q();E(()=>{a.valueElement=i});let o=c(()=>{let e=[],t=Array.from(a.optionsSet.value),n=e=>t.find(t=>sr(e,t.value,a.by));return e=Array.isArray(a.modelValue.value)?a.modelValue.value.map(e=>n(e)?.textContent??``):[n(a.modelValue.value)?.textContent??``],e.filter(Boolean)}),s=c(()=>o.value.length?o.value.join(`, `):t.placeholder);return(e,i)=>(m(),v(r(q),{ref:r(n),as:e.as,"as-child":e.asChild,style:{pointerEvents:`none`},"data-placeholder":o.value.length?void 0:t.placeholder},{default:j(()=>[O(e.$slots,`default`,{selectedLabel:o.value,modelValue:r(a).modelValue.value},()=>[M(_(s.value),1)])]),_:3},8,[`as`,`as-child`,`data-placeholder`]))}}),Ir=g({__name:`SelectViewport`,props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let n=e,{nonce:a}=I(n),o=Bn(a),s=$(),c=s.position===`item-aligned`?vr():void 0,{forwardRef:l,currentElement:u}=U();E(()=>{s?.onViewportChange(u.value)});let d=A(0);function f(e){let t=e.currentTarget,{shouldExpandOnScrollRef:n,contentWrapper:r}=c??{};if(n?.value&&r?.value){let e=Math.abs(d.value-t.scrollTop);if(e>0){let n=window.innerHeight-20,i=Number.parseFloat(r.value.style.minHeight),a=Number.parseFloat(r.value.style.height),o=Math.max(i,a);if(o0?s:0,r.value.style.justifyContent=`flex-end`)}}}d.value=t.scrollTop}return(e,a)=>(m(),t(i,null,[h(r(q),T({ref:r(l),"data-reka-select-viewport":``,role:`presentation`},{...e.$attrs,...n},{style:{position:`relative`,flex:1,overflow:`hidden auto`},onScroll:f}),{default:j(()=>[O(e.$slots,`default`)]),_:3},16),h(r(q),{as:`style`,nonce:r(o)},{default:j(()=>a[0]||=[M(` /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } `)]),_:1,__:[0]},8,[`nonce`])],64))}}),Lr=g({__name:`TooltipArrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let t=e;return U(),(e,n)=>(m(),v(r(zn),s(l(t)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),[Rr,zr]=z(`TooltipProvider`),Br=g({inheritAttrs:!1,__name:`TooltipProvider`,props:{delayDuration:{type:Number,required:!1,default:700},skipDelayDuration:{type:Number,required:!1,default:300},disableHoverableContent:{type:Boolean,required:!1,default:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:!1}},setup(e){let{delayDuration:t,skipDelayDuration:n,disableHoverableContent:r,disableClosingTrigger:i,ignoreNonKeyboardFocus:a,disabled:o}=I(e);U();let s=A(!0),c=A(!1),{start:l,stop:u}=me(()=>{s.value=!0},n,{immediate:!1});return zr({isOpenDelayed:s,delayDuration:t,onOpen(){u(),s.value=!1},onClose(){l()},isPointerInTransitRef:c,disableHoverableContent:r,disableClosingTrigger:i,disabled:o,ignoreNonKeyboardFocus:a}),(e,t)=>O(e.$slots,`default`)}}),Vr=`tooltip.open`,[Hr,Ur]=z(`TooltipRoot`),Wr=g({__name:`TooltipRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,i=t;U();let a=Rr(),o=c(()=>n.disableHoverableContent??a.disableHoverableContent.value),s=c(()=>n.disableClosingTrigger??a.disableClosingTrigger.value),l=c(()=>n.disabled??a.disabled.value),u=c(()=>n.delayDuration??a.delayDuration.value),d=c(()=>n.ignoreNonKeyboardFocus??a.ignoreNonKeyboardFocus.value),f=H(n,`open`,i,{defaultValue:n.defaultOpen,passive:n.open===void 0});F(f,e=>{a.onClose&&(e?(a.onOpen(),document.dispatchEvent(new CustomEvent(Vr))):a.onClose())});let p=A(!1),h=A(),g=c(()=>f.value?p.value?`delayed-open`:`instant-open`:`closed`),{start:_,stop:y}=me(()=>{p.value=!0,f.value=!0},u,{immediate:!1});function b(){y(),p.value=!1,f.value=!0}function x(){y(),f.value=!1}function S(){_()}return Ur({contentId:``,open:f,stateAttribute:g,trigger:h,onTriggerChange(e){h.value=e},onTriggerEnter(){a.isOpenDelayed.value?S():b()},onTriggerLeave(){o.value?x():y()},onOpen:b,onClose:x,disableHoverableContent:o,disableClosingTrigger:s,disabled:l,ignoreNonKeyboardFocus:d}),(e,t)=>(m(),v(r(En),null,{default:j(()=>[O(e.$slots,`default`,{open:r(f)})]),_:3}))}}),Gr=g({__name:`TooltipContentImpl`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1,default:`top`},sideOffset:{type:Number,required:!1,default:0},align:{type:null,required:!1,default:`center`},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:!0},collisionBoundary:{type:null,required:!1,default:()=>[]},collisionPadding:{type:[Number,Object],required:!1,default:0},arrowPadding:{type:Number,required:!1,default:0},sticky:{type:String,required:!1,default:`partial`},hideWhenDetached:{type:Boolean,required:!1,default:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,i=t,a=Hr(),{forwardRef:o}=U(),s=ne(),l=c(()=>s.default?.({})),u=c(()=>{if(n.ariaLabel)return n.ariaLabel;let e=``;function t(n){typeof n.children==`string`&&n.type!==S?e+=n.children:Array.isArray(n.children)&&n.children.forEach(e=>t(e))}return l.value?.forEach(e=>t(e)),e}),d=c(()=>{let{ariaLabel:e,...t}=n;return t});return E(()=>{We(window,`scroll`,e=>{e.target?.contains(a.trigger.value)&&a.onClose()}),We(window,Vr,a.onClose)}),(e,t)=>(m(),v(r(Ft),{"as-child":``,"disable-outside-pointer-events":!1,onEscapeKeyDown:t[0]||=e=>i(`escapeKeyDown`,e),onPointerDownOutside:t[1]||=e=>{r(a).disableClosingTrigger.value&&r(a).trigger.value?.contains(e.target)&&e.preventDefault(),i(`pointerDownOutside`,e)},onFocusOutside:t[2]||=L(()=>{},[`prevent`]),onDismiss:t[3]||=e=>r(a).onClose()},{default:j(()=>[h(r(Ln),T({ref:r(o),"data-state":r(a).stateAttribute.value},{...e.$attrs,...d.value},{style:{"--reka-tooltip-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-tooltip-content-available-width":`var(--reka-popper-available-width)`,"--reka-tooltip-content-available-height":`var(--reka-popper-available-height)`,"--reka-tooltip-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-tooltip-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:j(()=>[O(e.$slots,`default`),h(r(Cn),{id:r(a).contentId,role:`tooltip`},{default:j(()=>[M(_(u.value),1)]),_:1},8,[`id`])]),_:3},16,[`data-state`])]),_:3}))}}),Kr=g({__name:`TooltipContentHoverable`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(e){let t=W(e),{forwardRef:n,currentElement:i}=U(),{trigger:a,onClose:o}=Hr(),s=Rr(),{isPointerInTransit:c,onPointerExit:l}=st(a,i);return s.isPointerInTransitRef=c,l(()=>{o()}),(e,i)=>(m(),v(Gr,T({ref:r(n)},r(t)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),qr=g({__name:`TooltipContent`,props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1,default:`top`},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,i=t,a=Hr(),o=G(n,i),{forwardRef:s}=U();return(e,t)=>(m(),v(r(Ct),{present:e.forceMount||r(a).open.value},{default:j(()=>[(m(),v(D(r(a).disableHoverableContent.value?Gr:Kr),T({ref:r(s)},r(o)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),Jr=g({__name:`TooltipPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(m(),v(r(ln),s(l(t)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16))}}),Yr=g({__name:`TooltipTrigger`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=Hr(),i=Rr();n.contentId||=K(void 0,`reka-tooltip-content`);let{forwardRef:a,currentElement:o}=U(),s=A(!1),l=A(!1),u=c(()=>n.disabled.value?{}:{click:b,focus:_,pointermove:p,pointerleave:g,pointerdown:f,blur:y});E(()=>{n.onTriggerChange(o.value)});function d(){setTimeout(()=>{s.value=!1},1)}function f(){n.open&&!n.disableClosingTrigger.value&&n.onClose(),s.value=!0,document.addEventListener(`pointerup`,d,{once:!0})}function p(e){e.pointerType!==`touch`&&!l.value&&!i.isPointerInTransitRef.value&&(n.onTriggerEnter(),l.value=!0)}function g(){n.onTriggerLeave(),l.value=!1}function _(e){s.value||n.ignoreNonKeyboardFocus.value&&!e.target.matches?.(`:focus-visible`)||n.onOpen()}function y(){n.onClose()}function b(){n.disableClosingTrigger.value||n.onClose()}return(e,i)=>(m(),v(r(Dn),{"as-child":``,reference:e.reference},{default:j(()=>[h(r(q),T({ref:r(a),"aria-describedby":r(n).open.value?r(n).contentId:void 0,"data-state":r(n).stateAttribute.value,as:e.as,"as-child":t.asChild,"data-grace-area-trigger":``},ee(u.value)),{default:j(()=>[O(e.$slots,`default`)]),_:3},16,[`aria-describedby`,`data-state`,`as`,`as-child`])]),_:3},8,[`reference`]))}});export{_n as A,Ot as B,Jn as C,bn as D,xn as E,un as F,G as H,cn as I,on as L,hn as M,fn as N,yn as O,dn as P,an as R,Yn as S,Un as T,W as U,q as V,z as W,Cr as _,Br as a,rr as b,Fr as c,Mr as d,Ar as f,wr as g,Dr as h,Wr as i,gn as j,vn as k,Pr as l,Or as m,Jr as n,Lr as o,kr as p,qr as r,Ir as s,Yr as t,Nr as u,fr as v,qn as w,Xn as x,ir as y,kt as z}; \ No newline at end of file diff --git a/docs/assets/vendor-ui-DBxeWLyT.js b/docs/assets/vendor-ui-DBxeWLyT.js deleted file mode 100644 index 0ad3f77..0000000 --- a/docs/assets/vendor-ui-DBxeWLyT.js +++ /dev/null @@ -1,10 +0,0 @@ -import{n as e}from"./rolldown-runtime-CIDIeb-o.js";function t(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var n={},r=[],i=()=>{},a=()=>!1,o=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),s=e=>e.startsWith(`onUpdate:`),c=Object.assign,l=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},u=Object.prototype.hasOwnProperty,d=(e,t)=>u.call(e,t),f=Array.isArray,p=e=>C(e)===`[object Map]`,m=e=>C(e)===`[object Set]`,h=e=>C(e)===`[object Date]`,g=e=>C(e)===`[object RegExp]`,_=e=>typeof e==`function`,v=e=>typeof e==`string`,y=e=>typeof e==`symbol`,b=e=>typeof e==`object`&&!!e,x=e=>(b(e)||_(e))&&_(e.then)&&_(e.catch),S=Object.prototype.toString,C=e=>S.call(e),w=e=>C(e).slice(8,-1),T=e=>C(e)===`[object Object]`,E=e=>v(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,D=t(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),O=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ee=/-\w/g,k=O(e=>e.replace(ee,e=>e.slice(1).toUpperCase())),te=/\B([A-Z])/g,A=O(e=>e.replace(te,`-$1`).toLowerCase()),ne=O(e=>e.charAt(0).toUpperCase()+e.slice(1)),re=O(e=>e?`on${ne(e)}`:``),j=(e,t)=>!Object.is(e,t),ie=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},oe=e=>{let t=parseFloat(e);return isNaN(t)?e:t},se=e=>{let t=v(e)?Number(e):NaN;return isNaN(t)?e:t},ce,le=()=>ce||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{},ue=t(`Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol`);function de(e){if(f(e)){let t={};for(let n=0;n{if(e){let n=e.split(pe);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function ge(e){let t=``;if(v(e))t=e;else if(f(e))for(let n=0;nSe(e,t))}var we=e=>!!(e&&e.__v_isRef===!0),Te=e=>v(e)?e:e==null?``:f(e)||b(e)&&(e.toString===S||!_(e.toString))?we(e)?Te(e.value):JSON.stringify(e,Ee,2):String(e),Ee=(e,t)=>we(t)?Ee(e,t.value):p(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[De(t,r)+` =>`]=n,e),{})}:m(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>De(e))}:y(t)?De(t):b(t)&&!f(t)&&!T(t)?String(t):t,De=(e,t=``)=>y(e)?`Symbol(${e.description??t})`:e;function Oe(e){return e==null?`initial`:typeof e==`string`?e===``?` `:e:String(e)}var ke,Ae=class{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=ke,!e&&ke&&(this.index=(ke.scopes||=[]).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes)for(e=0,t=this.scopes.length;e0&&--this._on===0&&(ke=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){this._active=!1;let t,n;for(t=0,n=this.effects.length;t0)return;if(Re){let e=Re;for(Re=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;for(;Le;){let t=Le;for(Le=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(t){e||=t}t=n}}if(e)throw e}function He(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ue(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;r.version===-1?(r===n&&(n=e),Ke(r),qe(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function We(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ge(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ge(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===tt)||(e.globalVersion=tt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!We(e))))return;e.flags|=2;let t=e.dep,n=M,r=Xe;M=e,Xe=!0;try{He(e);let n=e.fn(e._value);(t.version===0||j(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{M=n,Xe=r,Ue(e),e.flags&=-3}}function Ke(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)Ke(e,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function qe(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}function Je(e,t){e.effect instanceof Fe&&(e=e.effect.fn);let n=new Fe(e);t&&c(n,t);try{n.run()}catch(e){throw n.stop(),e}let r=n.run.bind(n);return r.effect=n,r}function Ye(e){e.effect.stop()}var Xe=!0,Ze=[];function Qe(){Ze.push(Xe),Xe=!1}function $e(){let e=Ze.pop();Xe=e===void 0?!0:e}function et(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=M;M=void 0;try{t()}finally{M=e}}}var tt=0,nt=class{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},rt=class{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!M||!Xe||M===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==M)t=this.activeLink=new nt(M,this),M.deps?(t.prevDep=M.depsTail,M.depsTail.nextDep=t,M.depsTail=t):M.deps=M.depsTail=t,it(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=M.depsTail,t.nextDep=void 0,M.depsTail.nextDep=t,M.depsTail=t,M.deps===t&&(M.deps=e)}return t}trigger(e){this.version++,tt++,this.notify(e)}notify(e){Be();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{Ve()}}};function it(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)it(e)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var at=new WeakMap,ot=Symbol(``),st=Symbol(``),ct=Symbol(``);function lt(e,t,n){if(Xe&&M){let t=at.get(e);t||at.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new rt),r.map=t,r.key=n),r.track()}}function ut(e,t,n,r,i,a){let o=at.get(e);if(!o){tt++;return}let s=e=>{e&&e.trigger()};if(Be(),t===`clear`)o.forEach(s);else{let i=f(e),a=i&&E(n);if(i&&n===`length`){let e=Number(r);o.forEach((t,n)=>{(n===`length`||n===ct||!y(n)&&n>=e)&&s(t)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),a&&s(o.get(ct)),t){case`add`:i?a&&s(o.get(`length`)):(s(o.get(ot)),p(e)&&s(o.get(st)));break;case`delete`:i||(s(o.get(ot)),p(e)&&s(o.get(st)));break;case`set`:p(e)&&s(o.get(ot));break}}Ve()}function dt(e,t){let n=at.get(e);return n&&n.get(t)}function ft(e){let t=N(e);return t===e?t:(lt(t,`iterate`,ct),tn(e)?t:t.map(an))}function pt(e){return lt(e=N(e),`iterate`,ct),e}function mt(e,t){return en(e)?$t(e)?on(an(t)):on(t):an(t)}var ht={__proto__:null,[Symbol.iterator](){return gt(this,Symbol.iterator,e=>mt(this,e))},concat(...e){return ft(this).concat(...e.map(e=>f(e)?ft(e):e))},entries(){return gt(this,`entries`,e=>(e[1]=mt(this,e[1]),e))},every(e,t){return vt(this,`every`,e,t,void 0,arguments)},filter(e,t){return vt(this,`filter`,e,t,e=>e.map(e=>mt(this,e)),arguments)},find(e,t){return vt(this,`find`,e,t,e=>mt(this,e),arguments)},findIndex(e,t){return vt(this,`findIndex`,e,t,void 0,arguments)},findLast(e,t){return vt(this,`findLast`,e,t,e=>mt(this,e),arguments)},findLastIndex(e,t){return vt(this,`findLastIndex`,e,t,void 0,arguments)},forEach(e,t){return vt(this,`forEach`,e,t,void 0,arguments)},includes(...e){return bt(this,`includes`,e)},indexOf(...e){return bt(this,`indexOf`,e)},join(e){return ft(this).join(e)},lastIndexOf(...e){return bt(this,`lastIndexOf`,e)},map(e,t){return vt(this,`map`,e,t,void 0,arguments)},pop(){return xt(this,`pop`)},push(...e){return xt(this,`push`,e)},reduce(e,...t){return yt(this,`reduce`,e,t)},reduceRight(e,...t){return yt(this,`reduceRight`,e,t)},shift(){return xt(this,`shift`)},some(e,t){return vt(this,`some`,e,t,void 0,arguments)},splice(...e){return xt(this,`splice`,e)},toReversed(){return ft(this).toReversed()},toSorted(e){return ft(this).toSorted(e)},toSpliced(...e){return ft(this).toSpliced(...e)},unshift(...e){return xt(this,`unshift`,e)},values(){return gt(this,`values`,e=>mt(this,e))}};function gt(e,t,n){let r=pt(e),i=r[t]();return r!==e&&!tn(e)&&(i._next=i.next,i.next=()=>{let e=i._next();return e.done||(e.value=n(e.value)),e}),i}var _t=Array.prototype;function vt(e,t,n,r,i,a){let o=pt(e),s=o!==e&&!tn(e),c=o[t];if(c!==_t[t]){let t=c.apply(e,a);return s?an(t):t}let l=n;o!==e&&(s?l=function(t,r){return n.call(this,mt(e,t),r,e)}:n.length>2&&(l=function(t,r){return n.call(this,t,r,e)}));let u=c.call(o,l,r);return s&&i?i(u):u}function yt(e,t,n,r){let i=pt(e),a=n;return i!==e&&(tn(e)?n.length>3&&(a=function(t,r,i){return n.call(this,t,r,i,e)}):a=function(t,r,i){return n.call(this,t,mt(e,r),i,e)}),i[t](a,...r)}function bt(e,t,n){let r=N(e);lt(r,`iterate`,ct);let i=r[t](...n);return(i===-1||i===!1)&&nn(n[0])?(n[0]=N(n[0]),r[t](...n)):i}function xt(e,t,n=[]){Qe(),Be();let r=N(e)[t].apply(e,n);return Ve(),$e(),r}var St=t(`__proto__,__v_isRef,__isVue`),Ct=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==`arguments`&&e!==`caller`).map(e=>Symbol[e]).filter(y));function wt(e){y(e)||(e=String(e));let t=N(this);return lt(t,`has`,e),t.hasOwnProperty(e)}var Tt=class{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if(t===`__v_isReactive`)return!r;if(t===`__v_isReadonly`)return r;if(t===`__v_isShallow`)return i;if(t===`__v_raw`)return n===(r?i?Gt:Wt:i?Ut:Ht).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let a=f(e);if(!r){let e;if(a&&(e=ht[t]))return e;if(t===`hasOwnProperty`)return wt}let o=Reflect.get(e,t,P(e)?e:n);if((y(t)?Ct.has(t):St(t))||(r||lt(e,`get`,t),i))return o;if(P(o)){let e=a&&E(t)?o:o.value;return r&&b(e)?Xt(e):e}return b(o)?r?Xt(o):Jt(o):o}},Et=class extends Tt{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],a=f(e)&&E(t);if(!this._isShallow){let e=en(i);if(!tn(n)&&!en(n)&&(i=N(i),n=N(n)),!a&&P(i)&&!P(n))return e||(i.value=n),!0}let o=a?Number(t)e,Nt=e=>Reflect.getPrototypeOf(e);function Pt(e,t,n){return function(...r){let i=this.__v_raw,a=N(i),o=p(a),s=e===`entries`||e===Symbol.iterator&&o,c=e===`keys`&&o,l=i[e](...r),u=n?Mt:t?on:an;return!t&<(a,`iterate`,c?st:ot),{next(){let{value:e,done:t}=l.next();return t?{value:e,done:t}:{value:s?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function Ft(e){return function(...t){return e===`delete`?!1:e===`clear`?void 0:this}}function It(e,t){let n={get(n){let r=this.__v_raw,i=N(r),a=N(n);e||(j(n,a)&<(i,`get`,n),lt(i,`get`,a));let{has:o}=Nt(i),s=t?Mt:e?on:an;if(o.call(i,n))return s(r.get(n));if(o.call(i,a))return s(r.get(a));r!==i&&r.get(n)},get size(){let t=this.__v_raw;return!e&<(N(t),`iterate`,ot),t.size},has(t){let n=this.__v_raw,r=N(n),i=N(t);return e||(j(t,i)&<(r,`has`,t),lt(r,`has`,i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,a=i.__v_raw,o=N(a),s=t?Mt:e?on:an;return!e&<(o,`iterate`,ot),a.forEach((e,t)=>n.call(r,s(e),s(t),i))}};return c(n,e?{add:Ft(`add`),set:Ft(`set`),delete:Ft(`delete`),clear:Ft(`clear`)}:{add(e){!t&&!tn(e)&&!en(e)&&(e=N(e));let n=N(this);return Nt(n).has.call(n,e)||(n.add(e),ut(n,`add`,e,e)),this},set(e,n){!t&&!tn(n)&&!en(n)&&(n=N(n));let r=N(this),{has:i,get:a}=Nt(r),o=i.call(r,e);o||=(e=N(e),i.call(r,e));let s=a.call(r,e);return r.set(e,n),o?j(n,s)&&ut(r,`set`,e,n,s):ut(r,`add`,e,n),this},delete(e){let t=N(this),{has:n,get:r}=Nt(t),i=n.call(t,e);i||=(e=N(e),n.call(t,e));let a=r?r.call(t,e):void 0,o=t.delete(e);return i&&ut(t,`delete`,e,void 0,a),o},clear(){let e=N(this),t=e.size!==0,n=e.clear();return t&&ut(e,`clear`,void 0,void 0,void 0),n}}),[`keys`,`values`,`entries`,Symbol.iterator].forEach(r=>{n[r]=Pt(r,e,t)}),n}function Lt(e,t){let n=It(e,t);return(t,r,i)=>r===`__v_isReactive`?!e:r===`__v_isReadonly`?e:r===`__v_raw`?t:Reflect.get(d(n,r)&&r in t?n:t,r,i)}var Rt={get:Lt(!1,!1)},zt={get:Lt(!1,!0)},Bt={get:Lt(!0,!1)},Vt={get:Lt(!0,!0)},Ht=new WeakMap,Ut=new WeakMap,Wt=new WeakMap,Gt=new WeakMap;function Kt(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:case`Set`:case`WeakMap`:case`WeakSet`:return 2;default:return 0}}function qt(e){return e.__v_skip||!Object.isExtensible(e)?0:Kt(w(e))}function Jt(e){return en(e)?e:Qt(e,!1,Ot,Rt,Ht)}function Yt(e){return Qt(e,!1,At,zt,Ut)}function Xt(e){return Qt(e,!0,kt,Bt,Wt)}function Zt(e){return Qt(e,!0,jt,Vt,Gt)}function Qt(e,t,n,r,i){if(!b(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;let a=qt(e);if(a===0)return e;let o=i.get(e);if(o)return o;let s=new Proxy(e,a===2?r:n);return i.set(e,s),s}function $t(e){return en(e)?$t(e.__v_raw):!!(e&&e.__v_isReactive)}function en(e){return!!(e&&e.__v_isReadonly)}function tn(e){return!!(e&&e.__v_isShallow)}function nn(e){return e?!!e.__v_raw:!1}function N(e){let t=e&&e.__v_raw;return t?N(t):e}function rn(e){return!d(e,`__v_skip`)&&Object.isExtensible(e)&&ae(e,`__v_skip`,!0),e}var an=e=>b(e)?Jt(e):e,on=e=>b(e)?Xt(e):e;function P(e){return e?e.__v_isRef===!0:!1}function F(e){return cn(e,!1)}function sn(e){return cn(e,!0)}function cn(e,t){return P(e)?e:new ln(e,t)}var ln=class{constructor(e,t){this.dep=new rt,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:N(e),this._value=t?e:an(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||tn(e)||en(e);e=n?e:N(e),j(e,t)&&(this._rawValue=e,this._value=n?e:an(e),this.dep.trigger())}};function un(e){e.dep&&e.dep.trigger()}function I(e){return P(e)?e.value:e}function L(e){return _(e)?e():I(e)}var dn={get:(e,t,n)=>t===`__v_raw`?e:I(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return P(i)&&!P(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function fn(e){return $t(e)?e:new Proxy(e,dn)}var pn=class{constructor(e){this.__v_isRef=!0,this._value=void 0;let t=this.dep=new rt,{get:n,set:r}=e(t.track.bind(t),t.trigger.bind(t));this._get=n,this._set=r}get value(){return this._value=this._get()}set value(e){this._set(e)}};function mn(e){return new pn(e)}function hn(e){let t=f(e)?Array(e.length):{};for(let n in e)t[n]=yn(e,n);return t}var gn=class{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0,this._raw=N(e);let r=!0,i=e;if(!f(e)||!E(String(t)))do r=!nn(i)||tn(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let e=this._object[this._key];return this._shallow&&(e=I(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&P(this._raw[this._key])){let t=this._object[this._key];if(P(t)){t.value=e;return}}this._object[this._key]=e}get dep(){return dt(this._raw,this._key)}},_n=class{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}};function vn(e,t,n){return P(e)?e:_(e)?new _n(e):b(e)&&arguments.length>1?yn(e,t,n):F(e)}function yn(e,t,n){return new gn(e,t,n)}var bn=class{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new rt(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=tt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&M!==this)return ze(this,!0),!0}get value(){let e=this.dep.track();return Ge(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}};function xn(e,t,n=!1){let r,i;return _(e)?r=e:(r=e.get,i=e.set),new bn(r,i,n)}var Sn={GET:`get`,HAS:`has`,ITERATE:`iterate`},Cn={SET:`set`,ADD:`add`,DELETE:`delete`,CLEAR:`clear`},wn={},Tn=new WeakMap,En=void 0;function Dn(){return En}function On(e,t=!1,n=En){if(n){let t=Tn.get(n);t||Tn.set(n,t=[]),t.push(e)}}function kn(e,t,r=n){let{immediate:a,deep:o,once:s,scheduler:c,augmentJob:u,call:d}=r,p=e=>o?e:tn(e)||o===!1||o===0?An(e,1):An(e),m,h,g,v,y=!1,b=!1;if(P(e)?(h=()=>e.value,y=tn(e)):$t(e)?(h=()=>p(e),y=!0):f(e)?(b=!0,y=e.some(e=>$t(e)||tn(e)),h=()=>e.map(e=>{if(P(e))return e.value;if($t(e))return p(e);if(_(e))return d?d(e,2):e()})):h=_(e)?t?d?()=>d(e,2):e:()=>{if(g){Qe();try{g()}finally{$e()}}let t=En;En=m;try{return d?d(e,3,[v]):e(v)}finally{En=t}}:i,t&&o){let e=h,t=o===!0?1/0:o;h=()=>An(e(),t)}let x=Me(),S=()=>{m.stop(),x&&x.active&&l(x.effects,m)};if(s&&t){let e=t;t=(...t)=>{e(...t),S()}}let C=b?Array(e.length).fill(wn):wn,w=e=>{if(!(!(m.flags&1)||!m.dirty&&!e))if(t){let e=m.run();if(o||y||(b?e.some((e,t)=>j(e,C[t])):j(e,C))){g&&g();let n=En;En=m;try{let n=[e,C===wn?void 0:b&&C[0]===wn?[]:C,v];C=e,d?d(t,3,n):t(...n)}finally{En=n}}}else m.run()};return u&&u(w),m=new Fe(h),m.scheduler=c?()=>c(w,!1):w,v=e=>On(e,!1,m),g=m.onStop=()=>{let e=Tn.get(m);if(e){if(d)d(e,4);else for(let t of e)t();Tn.delete(m)}},t?a?w(!0):C=m.run():c?c(w.bind(null,!0),!0):m.run(),S.pause=m.pause.bind(m),S.resume=m.resume.bind(m),S.stop=S,S}function An(e,t=1/0,n){if(t<=0||!b(e)||e.__v_skip||(n||=new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,P(e))An(e.value,t,n);else if(f(e))for(let r=0;r{An(e,t,n)});else if(T(e)){for(let r in e)An(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&An(e[r],t,n)}return e}var jn=[];function Mn(e){jn.push(e)}function Nn(){jn.pop()}function Pn(e,t){}var Fn={SETUP_FUNCTION:0,0:`SETUP_FUNCTION`,RENDER_FUNCTION:1,1:`RENDER_FUNCTION`,NATIVE_EVENT_HANDLER:5,5:`NATIVE_EVENT_HANDLER`,COMPONENT_EVENT_HANDLER:6,6:`COMPONENT_EVENT_HANDLER`,VNODE_HOOK:7,7:`VNODE_HOOK`,DIRECTIVE_HOOK:8,8:`DIRECTIVE_HOOK`,TRANSITION_HOOK:9,9:`TRANSITION_HOOK`,APP_ERROR_HANDLER:10,10:`APP_ERROR_HANDLER`,APP_WARN_HANDLER:11,11:`APP_WARN_HANDLER`,FUNCTION_REF:12,12:`FUNCTION_REF`,ASYNC_COMPONENT_LOADER:13,13:`ASYNC_COMPONENT_LOADER`,SCHEDULER:14,14:`SCHEDULER`,COMPONENT_UPDATE:15,15:`COMPONENT_UPDATE`,APP_UNMOUNT_CLEANUP:16,16:`APP_UNMOUNT_CLEANUP`},In={sp:`serverPrefetch hook`,bc:`beforeCreate hook`,c:`created hook`,bm:`beforeMount hook`,m:`mounted hook`,bu:`beforeUpdate hook`,u:`updated`,bum:`beforeUnmount hook`,um:`unmounted hook`,a:`activated hook`,da:`deactivated hook`,ec:`errorCaptured hook`,rtc:`renderTracked hook`,rtg:`renderTriggered hook`,0:`setup function`,1:`render function`,2:`watcher getter`,3:`watcher callback`,4:`watcher cleanup function`,5:`native event handler`,6:`component event handler`,7:`vnode hook`,8:`directive hook`,9:`transition hook`,10:`app errorHandler`,11:`app warnHandler`,12:`ref function`,13:`async component loader`,14:`scheduler flush`,15:`component update`,16:`app unmount cleanup function`};function Ln(e,t,n,r){try{return r?e(...r):e()}catch(e){zn(e,t,n)}}function Rn(e,t,n,r){if(_(e)){let i=Ln(e,t,n,r);return i&&x(i)&&i.catch(e=>{zn(e,t,n)}),i}if(f(e)){let i=[];for(let a=0;a>>1,i=Vn[r],a=er(i);a=er(n)?Vn.push(e):Vn.splice(Jn(t),0,e),e.flags|=1,Xn()}}function Xn(){qn||=Kn.then(tr)}function Zn(e){f(e)?Un.push(...e):Wn&&e.id===-1?Wn.splice(Gn+1,0,e):e.flags&1||(Un.push(e),e.flags|=1),Xn()}function Qn(e,t,n=Hn+1){for(;ner(e)-er(t));if(Un.length=0,Wn){Wn.push(...e);return}for(Wn=e,Gn=0;Gne.id==null?e.flags&2?-1:1/0:e.id;function tr(e){try{for(Hn=0;Hnnr.emit(e,...t)),rr=[]):typeof window<`u`&&window.HTMLElement&&!(window.navigator?.userAgent)?.includes(`jsdom`)?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(e=>{ir(e,t)}),setTimeout(()=>{nr||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,rr=[])},3e3)):rr=[]}var ar=null,or=null;function sr(e){let t=ar;return ar=e,or=e&&e.type.__scopeId||null,t}function cr(e){or=e}function lr(){or=null}var ur=e=>z;function z(e,t=ar,n){if(!t||e._n)return e;let r=(...n)=>{r._d&&Xo(-1);let i=sr(t),a;try{a=e(...n)}finally{sr(i),r._d&&Xo(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function dr(e,t){if(ar===null)return e;let r=Fs(ar),i=e.dirs||=[];for(let e=0;ee.__isTeleport,hr=e=>e&&(e.disabled||e.disabled===``),gr=e=>e&&(e.defer||e.defer===``),_r=e=>typeof SVGElement<`u`&&e instanceof SVGElement,vr=e=>typeof MathMLElement==`function`&&e instanceof MathMLElement,yr=(e,t)=>{let n=e&&e.to;return v(n)?t?t(n):null:n},br={name:`Teleport`,__isTeleport:!0,process(e,t,n,r,i,a,o,s,c,l){let{mc:u,pc:d,pbc:f,o:{insert:p,querySelector:m,createText:h,createComment:g}}=l,_=hr(t.props),{shapeFlag:v,children:y,dynamicChildren:b}=t;if(e==null){let e=t.el=h(``),l=t.anchor=h(``);p(e,n,r),p(l,n,r);let d=(e,t)=>{v&16&&u(y,e,t,i,a,o,s,c)},f=()=>{let e=t.target=yr(t.props,m),n=Tr(e,t,h,p);e&&(o!==`svg`&&_r(e)?o=`svg`:o!==`mathml`&&vr(e)&&(o=`mathml`),i&&i.isCE&&(i.ce._teleportTargets||(i.ce._teleportTargets=new Set)).add(e),_||(d(e,n),wr(t,!1)))};_&&(d(n,l),wr(t,!0)),gr(t.props)?(t.el.__isMounted=!1,U(()=>{f(),delete t.el.__isMounted},a)):f()}else{if(gr(t.props)&&e.el.__isMounted===!1){U(()=>{br.process(e,t,n,r,i,a,o,s,c,l)},a);return}t.el=e.el,t.targetStart=e.targetStart;let u=t.anchor=e.anchor,p=t.target=e.target,h=t.targetAnchor=e.targetAnchor,g=hr(e.props),v=g?n:p,y=g?u:h;if(o===`svg`||_r(p)?o=`svg`:(o===`mathml`||vr(p))&&(o=`mathml`),b?(f(e.dynamicChildren,b,v,i,a,o,s),Do(e,t,!0)):c||d(e,t,v,y,i,a,o,s,!1),_)g?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):xr(t,n,u,l,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){let e=t.target=yr(t.props,m);e&&xr(t,e,null,l,0)}else g&&xr(t,p,h,l,1);wr(t,_)}},remove(e,t,n,{um:r,o:{remove:i}},a){let{shapeFlag:o,children:s,anchor:c,targetStart:l,targetAnchor:u,target:d,props:f}=e;if(d&&(i(l),i(u)),a&&i(c),o&16){let e=a||!hr(f);for(let i=0;i{e.isMounted=!0}),ki(()=>{e.isUnmounting=!0}),e}var kr=[Function,Array],Ar={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:kr,onEnter:kr,onAfterEnter:kr,onEnterCancelled:kr,onBeforeLeave:kr,onLeave:kr,onAfterLeave:kr,onLeaveCancelled:kr,onBeforeAppear:kr,onAppear:kr,onAfterAppear:kr,onAppearCancelled:kr},jr=e=>{let t=e.subTree;return t.component?jr(t.component):t},Mr={name:`BaseTransition`,props:Ar,setup(e,{slots:t}){let n=X(),r=Or();return()=>{let i=t.default&&Br(t.default(),!0);if(!i||!i.length)return;let a=Nr(i),o=N(e),{mode:s}=o;if(r.isLeaving)return Lr(a);let c=Rr(a);if(!c)return Lr(a);let l=Ir(c,o,r,n,e=>l=e);c.type!==G&&zr(c,l);let u=n.subTree&&Rr(n.subTree);if(u&&u.type!==G&&!es(u,c)&&jr(n).type!==G){let e=Ir(u,o,r,n);if(zr(u,e),s===`out-in`&&c.type!==G)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete e.afterLeave,u=void 0},Lr(a);s===`in-out`&&c.type!==G?e.delayLeave=(e,t,n)=>{let i=Fr(r,u);i[String(u.key)]=u,e[Er]=()=>{t(),e[Er]=void 0,delete l.delayedLeave,u=void 0},l.delayedLeave=()=>{n(),delete l.delayedLeave,u=void 0}}:u=void 0}else u&&=void 0;return a}}};function Nr(e){let t=e[0];if(e.length>1){for(let n of e)if(n.type!==G){t=n;break}}return t}var Pr=Mr;function Fr(e,t){let{leavingVNodes:n}=e,r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Ir(e,t,n,r,i){let{appear:a,mode:o,persisted:s=!1,onBeforeEnter:c,onEnter:l,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:p,onLeave:m,onAfterLeave:h,onLeaveCancelled:g,onBeforeAppear:_,onAppear:v,onAfterAppear:y,onAppearCancelled:b}=t,x=String(e.key),S=Fr(n,e),C=(e,t)=>{e&&Rn(e,r,9,t)},w=(e,t)=>{let n=t[1];C(e,t),f(e)?e.every(e=>e.length<=1)&&n():e.length<=1&&n()},T={mode:o,persisted:s,beforeEnter(t){let r=c;if(!n.isMounted)if(a)r=_||c;else return;t[Er]&&t[Er](!0);let i=S[x];i&&es(e,i)&&i.el[Er]&&i.el[Er](),C(r,[t])},enter(e){let t=l,r=u,i=d;if(!n.isMounted)if(a)t=v||l,r=y||u,i=b||d;else return;let o=!1,s=e[Dr]=t=>{o||(o=!0,C(t?i:r,[e]),T.delayedLeave&&T.delayedLeave(),e[Dr]=void 0)};t?w(t,[e,s]):s()},leave(t,r){let i=String(e.key);if(t[Dr]&&t[Dr](!0),n.isUnmounting)return r();C(p,[t]);let a=!1,o=t[Er]=n=>{a||(a=!0,r(),C(n?g:h,[t]),t[Er]=void 0,S[i]===e&&delete S[i])};S[i]=e,m?w(m,[t,o]):o()},clone(e){let a=Ir(e,t,n,r,i);return i&&i(a),a}};return T}function Lr(e){if(mi(e))return e=ss(e),e.children=null,e}function Rr(e){if(!mi(e))return mr(e.type)&&e.children?Nr(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&_(n.default))return n.default()}}function zr(e,t){e.shapeFlag&6&&e.component?(e.transition=t,zr(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 Br(e,t=!1,n){let r=[],i=0;for(let a=0;a1)for(let e=0;ec({name:e.name},t,{setup:e}))():e}function Vr(){let e=X();return e?(e.appContext.config.idPrefix||`v`)+`-`+e.ids[0]+ e.ids[1]++:``}function Hr(e){e.ids=[e.ids[0]+ e.ids[2]+++`-`,0,0]}function Ur(e){let t=X(),r=sn(null);if(t){let i=t.refs===n?t.refs={}:t.refs;Object.defineProperty(i,e,{enumerable:!0,get:()=>r.value,set:e=>r.value=e})}return r}var Wr=new WeakMap;function Gr(e,t,r,i,o=!1){if(f(e)){e.forEach((e,n)=>Gr(e,t&&(f(t)?t[n]:t),r,i,o));return}if(di(i)&&!o){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&Gr(e,t,r,i.component.subTree);return}let s=i.shapeFlag&4?Fs(i.component):i.el,c=o?null:s,{i:u,r:p}=e,m=t&&t.r,h=u.refs===n?u.refs={}:u.refs,g=u.setupState,y=N(g),b=g===n?a:e=>d(y,e),x=e=>!0;if(m!=null&&m!==p){if(Kr(t),v(m))h[m]=null,b(m)&&(g[m]=null);else if(P(m)){x(m)&&(m.value=null);let e=t;e.k&&(h[e.k]=null)}}if(_(p))Ln(p,u,12,[c,h]);else{let t=v(p),n=P(p);if(t||n){let i=()=>{if(e.f){let n=t?b(p)?g[p]:h[p]:x(p)||!e.k?p.value:h[e.k];if(o)f(n)&&l(n,s);else if(f(n))n.includes(s)||n.push(s);else if(t)h[p]=[s],b(p)&&(g[p]=h[p]);else{let t=[s];x(p)&&(p.value=t),e.k&&(h[e.k]=t)}}else t?(h[p]=c,b(p)&&(g[p]=c)):n&&(x(p)&&(p.value=c),e.k&&(h[e.k]=c))};if(c){let t=()=>{i(),Wr.delete(e)};t.id=-1,Wr.set(e,t),U(t,r)}else Kr(e),i()}}}function Kr(e){let t=Wr.get(e);t&&(t.flags|=8,Wr.delete(e))}var qr=!1,Jr=()=>{qr||=(console.error(`Hydration completed but contains mismatches.`),!0)},Yr=e=>e.namespaceURI.includes(`svg`)&&e.tagName!==`foreignObject`,Xr=e=>e.namespaceURI.includes(`MathML`),Zr=e=>{if(e.nodeType===1){if(Yr(e))return`svg`;if(Xr(e))return`mathml`}},Qr=e=>e.nodeType===8;function $r(e){let{mt:t,p:n,o:{patchProp:r,createText:i,nextSibling:a,parentNode:s,remove:c,insert:l,createComment:u}}=e,d=(e,t)=>{if(!t.hasChildNodes()){n(null,e,t),$n(),t._vnode=e;return}f(t.firstChild,e,null,null,null),$n(),t._vnode=e},f=(n,r,o,c,u,d=!1)=>{d||=!!r.dynamicChildren;let b=Qr(n)&&n.data===`[`,x=()=>g(n,r,o,c,u,b),{type:S,ref:C,shapeFlag:w,patchFlag:T}=r,E=n.nodeType;r.el=n,T===-2&&(d=!1,r.dynamicChildren=null);let D=null;switch(S){case Wo:E===3?(n.data!==r.children&&(Jr(),n.data=r.children),D=a(n)):r.children===``?(l(r.el=i(``),s(n),n),D=n):D=x();break;case G:y(n)?(D=a(n),v(r.el=n.content.firstChild,n,o)):D=E!==8||b?x():a(n);break;case Go:if(b&&(n=a(n),E=n.nodeType),E===1||E===3){D=n;let e=!r.children.length;for(let t=0;t{s||=!!t.dynamicChildren;let{type:l,props:u,patchFlag:d,shapeFlag:f,dirs:p,transition:h}=t,g=l===`input`||l===`option`;if(g||d!==-1){p&&fr(t,null,n,`created`);let l=!1;if(y(e)){l=Eo(null,h)&&n&&n.vnode.props&&n.vnode.props.appear;let r=e.content.firstChild;if(l){let e=r.getAttribute(`class`);e&&(r.$cls=e),h.beforeEnter(r)}v(r,e,n),t.el=e=r}if(f&16&&!(u&&(u.innerHTML||u.textContent))){let r=m(e.firstChild,t,e,n,i,a,s);for(;r;){ni(e,1)||Jr();let t=r;r=r.nextSibling,c(t)}}else if(f&8){let n=t.children;n[0]===` -`&&(e.tagName===`PRE`||e.tagName===`TEXTAREA`)&&(n=n.slice(1));let{textContent:r}=e;r!==n&&r!==n.replace(/\r\n|\r/g,` -`)&&(ni(e,0)||Jr(),e.textContent=t.children)}if(u){if(g||!s||d&48){let t=e.tagName.includes(`-`);for(let i in u)(g&&(i.endsWith(`value`)||i===`indeterminate`)||o(i)&&!D(i)||i[0]===`.`||t)&&r(e,i,null,u[i],void 0,n)}else if(u.onClick)r(e,`onClick`,null,u.onClick,void 0,n);else if(d&4&&$t(u.style))for(let e in u.style)u.style[e]}let _;(_=u&&u.onVnodeBeforeMount)&&ms(_,n,t),p&&fr(t,null,n,`beforeMount`),((_=u&&u.onVnodeMounted)||p||l)&&Vo(()=>{_&&ms(_,n,t),l&&h.enter(e),p&&fr(t,null,n,`mounted`)},i)}return e.nextSibling},m=(e,t,r,o,s,c,u)=>{u||=!!t.dynamicChildren;let d=t.children,p=d.length;for(let t=0;t{let{slotScopeIds:c}=t;c&&(i=i?i.concat(c):c);let d=s(e),f=m(a(e),t,d,n,r,i,o);return f&&Qr(f)&&f.data===`]`?a(t.anchor=f):(Jr(),l(t.anchor=u(`]`),d,f),f)},g=(e,t,r,i,o,l)=>{if(ni(e.parentElement,1)||Jr(),t.el=null,l){let t=_(e);for(;;){let n=a(e);if(n&&n!==t)c(n);else break}}let u=a(e),d=s(e);return c(e),n(null,t,d,u,r,i,Zr(d),o),r&&(r.vnode.el=t.el,to(r,t.el)),u},_=(e,t=`[`,n=`]`)=>{let r=0;for(;e;)if(e=a(e),e&&Qr(e)&&(e.data===t&&r++,e.data===n)){if(r===0)return a(e);r--}return e},v=(e,t,n)=>{let r=t.parentNode;r&&r.replaceChild(e,t);let i=n;for(;i;)i.vnode.el===t&&(i.vnode.el=i.subTree.el=e),i=i.parent},y=e=>e.nodeType===1&&e.tagName===`TEMPLATE`;return[d,f]}var ei=`data-allow-mismatch`,ti={0:`text`,1:`children`,2:`class`,3:`style`,4:`attribute`};function ni(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(ei);)e=e.parentElement;let n=e&&e.getAttribute(ei);if(n==null)return!1;if(n===``)return!0;{let e=n.split(`,`);return t===0&&e.includes(`children`)?!0:e.includes(ti[t])}}var ri=le().requestIdleCallback||(e=>setTimeout(e,1)),ii=le().cancelIdleCallback||(e=>clearTimeout(e)),ai=(e=1e4)=>t=>{let n=ri(t,{timeout:e});return()=>ii(n)};function oi(e){let{top:t,left:n,bottom:r,right:i}=e.getBoundingClientRect(),{innerHeight:a,innerWidth:o}=window;return(t>0&&t0&&r0&&n0&&i(t,n)=>{let r=new IntersectionObserver(e=>{for(let n of e)if(n.isIntersecting){r.disconnect(),t();break}},e);return n(e=>{if(e instanceof Element){if(oi(e))return t(),r.disconnect(),!1;r.observe(e)}}),()=>r.disconnect()},ci=e=>t=>{if(e){let n=matchMedia(e);if(n.matches)t();else return n.addEventListener(`change`,t,{once:!0}),()=>n.removeEventListener(`change`,t)}},li=(e=[])=>(t,n)=>{v(e)&&(e=[e]);let r=!1,i=e=>{r||(r=!0,a(),t(),e.target.dispatchEvent(new e.constructor(e.type,e)))},a=()=>{n(t=>{for(let n of e)t.removeEventListener(n,i)})};return n(t=>{for(let n of e)t.addEventListener(n,i,{once:!0})}),a};function ui(e,t){if(Qr(e)&&e.data===`[`){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(Qr(r))if(r.data===`]`){if(--n===0)break}else r.data===`[`&&n++;r=r.nextSibling}}else t(e)}var di=e=>!!e.type.__asyncLoader;function fi(e){_(e)&&(e={loader:e});let{loader:t,loadingComponent:n,errorComponent:r,delay:i=200,hydrate:a,timeout:o,suspensible:s=!0,onError:c}=e,l=null,u,d=0,f=()=>(d++,l=null,p()),p=()=>{let e;return l||(e=l=t().catch(e=>{if(e=e instanceof Error?e:Error(String(e)),c)return new Promise((t,n)=>{c(e,()=>t(f()),()=>n(e),d+1)});throw e}).then(t=>e!==l&&l?l:(t&&(t.__esModule||t[Symbol.toStringTag]===`Module`)&&(t=t.default),u=t,t)))};return B({name:`AsyncComponentWrapper`,__asyncLoader:p,__asyncHydrate(e,t,n){let r=!1;(t.bu||=[]).push(()=>r=!0);let i=()=>{r||n()},o=a?()=>{let n=a(i,t=>ui(e,t));n&&(t.bum||=[]).push(n)}:i;u?o():p().then(()=>!t.isUnmounted&&o())},get __asyncResolved(){return u},setup(){let e=vs;if(Hr(e),u)return()=>pi(u,e);let t=t=>{l=null,zn(t,e,13,!r)};if(s&&e.suspense||ws)return p().then(t=>()=>pi(t,e)).catch(e=>(t(e),()=>r?J(r,{error:e}):null));let a=F(!1),c=F(),d=F(!!i);return i&&setTimeout(()=>{d.value=!1},i),o!=null&&setTimeout(()=>{if(!a.value&&!c.value){let e=Error(`Async component timed out after ${o}ms.`);t(e),c.value=e}},o),p().then(()=>{a.value=!0,e.parent&&mi(e.parent.vnode)&&e.parent.update()}).catch(e=>{t(e),c.value=e}),()=>{if(a.value&&u)return pi(u,e);if(c.value&&r)return J(r,{error:c.value});if(n&&!d.value)return pi(n,e)}}})}function pi(e,t){let{ref:n,props:r,children:i,ce:a}=t.vnode,o=J(e,r,i);return o.ref=n,o.ce=a,delete t.vnode.ce,o}var mi=e=>e.type.__isKeepAlive,hi={name:`KeepAlive`,__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){let n=X(),r=n.ctx;if(!r.renderer)return()=>{let e=t.default&&t.default();return e&&e.length===1?e[0]:e};let i=new Map,a=new Set,o=null,s=n.suspense,{renderer:{p:c,m:l,um:u,o:{createElement:d}}}=r,f=d(`div`);r.activate=(e,t,n,r,i)=>{let a=e.component;l(e,t,n,0,s),c(a.vnode,e,t,n,a,s,r,e.slotScopeIds,i),U(()=>{a.isDeactivated=!1,a.a&&ie(a.a);let t=e.props&&e.props.onVnodeMounted;t&&ms(t,a.parent,e)},s)},r.deactivate=e=>{let t=e.component;Ao(t.m),Ao(t.a),l(e,f,null,1,s),U(()=>{t.da&&ie(t.da);let n=e.props&&e.props.onVnodeUnmounted;n&&ms(n,t.parent,e),t.isDeactivated=!0},s)};function p(e){xi(e),u(e,n,s,!0)}function m(e){i.forEach((t,n)=>{let r=Is(t.type);r&&!e(r)&&h(n)})}function h(e){let t=i.get(e);t&&(!o||!es(t,o))?p(t):o&&xi(o),i.delete(e),a.delete(e)}H(()=>[e.include,e.exclude],([e,t])=>{e&&m(t=>gi(e,t)),t&&m(e=>!gi(t,e))},{flush:`post`,deep:!0});let g=null,_=()=>{g!=null&&(jo(n.subTree.type)?U(()=>{i.set(g,Si(n.subTree))},n.subTree.suspense):i.set(g,Si(n.subTree)))};return Ei(_),Oi(_),ki(()=>{i.forEach(e=>{let{subTree:t,suspense:r}=n,i=Si(t);if(e.type===i.type&&e.key===i.key){xi(i);let e=i.component.da;e&&U(e,r);return}p(e)})}),()=>{if(g=null,!t.default)return o=null;let n=t.default(),r=n[0];if(n.length>1)return o=null,n;if(!$o(r)||!(r.shapeFlag&4)&&!(r.shapeFlag&128))return o=null,r;let s=Si(r);if(s.type===G)return o=null,s;let c=s.type,l=Is(di(s)?s.type.__asyncResolved||{}:c),{include:u,exclude:d,max:f}=e;if(u&&(!l||!gi(u,l))||d&&l&&gi(d,l))return s.shapeFlag&=-257,o=s,r;let p=s.key==null?c:s.key,m=i.get(p);return s.el&&(s=ss(s),r.shapeFlag&128&&(r.ssContent=s)),g=p,m?(s.el=m.el,s.component=m.component,s.transition&&zr(s,s.transition),s.shapeFlag|=512,a.delete(p),a.add(p)):(a.add(p),f&&a.size>parseInt(f,10)&&h(a.values().next().value)),s.shapeFlag|=256,o=s,jo(r.type)?r:s}}};function gi(e,t){return f(e)?e.some(e=>gi(e,t)):v(e)?e.split(`,`).includes(t):g(e)?(e.lastIndex=0,e.test(t)):!1}function _i(e,t){yi(e,`a`,t)}function vi(e,t){yi(e,`da`,t)}function yi(e,t,n=vs){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(Ci(t,r,n),n){let e=n.parent;for(;e&&e.parent;)mi(e.parent.vnode)&&bi(r,t,n,e),e=e.parent}}function bi(e,t,n,r){let i=Ci(t,e,r,!0);Ai(()=>{l(r[t],i)},n)}function xi(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Si(e){return e.shapeFlag&128?e.ssContent:e}function Ci(e,t,n=vs,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{Qe();let i=xs(n),a=Rn(t,n,e,r);return i(),$e(),a};return r?i.unshift(a):i.push(a),a}}var wi=e=>(t,n=vs)=>{(!ws||e===`sp`)&&Ci(e,(...e)=>t(...e),n)},Ti=wi(`bm`),Ei=wi(`m`),Di=wi(`bu`),Oi=wi(`u`),ki=wi(`bum`),Ai=wi(`um`),ji=wi(`sp`),Mi=wi(`rtg`),Ni=wi(`rtc`);function Pi(e,t=vs){Ci(`ec`,e,t)}var Fi=`components`,Ii=`directives`;function Li(e,t){return Vi(Fi,e,!0,t)||e}var Ri=Symbol.for(`v-ndc`);function zi(e){return v(e)?Vi(Fi,e,!1)||e:e||Ri}function Bi(e){return Vi(Ii,e)}function Vi(e,t,n=!0,r=!1){let i=ar||vs;if(i){let n=i.type;if(e===Fi){let e=Is(n,!1);if(e&&(e===t||e===k(t)||e===ne(k(t))))return n}let a=Hi(i[e]||n[e],t)||Hi(i.appContext[e],t);return!a&&r?n:a}}function Hi(e,t){return e&&(e[t]||e[k(t)]||e[ne(k(t))])}function Ui(e,t,n,r){let i,a=n&&n[r],o=f(e);if(o||v(e)){let n=o&&$t(e),r=!1,s=!1;n&&(r=!tn(e),s=en(e),e=pt(e)),i=Array(e.length);for(let n=0,o=e.length;nt(e,n,void 0,a&&a[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,o=n.length;r{let t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return e}function V(e,t,n={},r,i){if(ar.ce||ar.parent&&di(ar.parent)&&ar.parent.ce){let e=Object.keys(n).length>0;return t!==`default`&&(n.name=t),K(),q(W,null,[J(`slot`,n,r&&r())],e?-2:64)}let a=e[t];a&&a._c&&(a._d=!1),K();let o=a&&Gi(a(n)),s=n.key||o&&o.key,c=q(W,{key:(s&&!y(s)?s:`_${t}`)+(!o&&r?`_fb`:``)},o||(r?r():[]),o&&e._===1?64:-2);return!i&&c.scopeId&&(c.slotScopeIds=[c.scopeId+`-s`]),a&&a._c&&(a._d=!0),c}function Gi(e){return e.some(e=>$o(e)?!(e.type===G||e.type===W&&!Gi(e.children)):!0)?e:null}function Ki(e,t){let n={};for(let r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:re(r)]=e[r];return n}var qi=e=>e?Cs(e)?Fs(e):qi(e.parent):null,Ji=c(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=>qi(e.parent),$root:e=>qi(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>va(e),$forceUpdate:e=>e.f||=()=>{Yn(e.update)},$nextTick:e=>e.n||=R.bind(e.proxy),$watch:e=>Va.bind(e)}),Yi=(e,t)=>e!==n&&!e.__isScriptSetup&&d(e,t),Xi={get({_:e},t){if(t===`__v_skip`)return!0;let{ctx:r,setupState:i,data:a,props:o,accessCache:s,type:c,appContext:l}=e;if(t[0]!==`$`){let e=s[t];if(e!==void 0)switch(e){case 1:return i[t];case 2:return a[t];case 4:return r[t];case 3:return o[t]}else if(Yi(i,t))return s[t]=1,i[t];else if(a!==n&&d(a,t))return s[t]=2,a[t];else if(d(o,t))return s[t]=3,o[t];else if(r!==n&&d(r,t))return s[t]=4,r[t];else pa&&(s[t]=0)}let u=Ji[t],f,p;if(u)return t===`$attrs`&<(e.attrs,`get`,``),u(e);if((f=c.__cssModules)&&(f=f[t]))return f;if(r!==n&&d(r,t))return s[t]=4,r[t];if(p=l.config.globalProperties,d(p,t))return p[t]},set({_:e},t,r){let{data:i,setupState:a,ctx:o}=e;return Yi(a,t)?(a[t]=r,!0):i!==n&&d(i,t)?(i[t]=r,!0):d(e.props,t)||t[0]===`$`&&t.slice(1)in e?!1:(o[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:i,appContext:a,props:o,type:s}},c){let l;return!!(r[c]||e!==n&&c[0]!==`$`&&d(e,c)||Yi(t,c)||d(o,c)||d(i,c)||d(Ji,c)||d(a.config.globalProperties,c)||(l=s.__cssModules)&&l[c])},defineProperty(e,t,n){return n.get==null?d(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}},Zi=c({},Xi,{get(e,t){if(t!==Symbol.unscopables)return Xi.get(e,t,e)},has(e,t){return t[0]!==`_`&&!ue(t)}});function Qi(){return null}function $i(){return null}function ea(e){}function ta(e){}function na(){return null}function ra(){}function ia(e,t){return null}function aa(){return sa(`useSlots`).slots}function oa(){return sa(`useAttrs`).attrs}function sa(e){let t=X();return t.setupContext||=Ps(t)}function ca(e){return f(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}function la(e,t){let n=ca(e);for(let e in t){if(e.startsWith(`__skip`))continue;let r=n[e];r?f(r)||_(r)?r=n[e]={type:r,default:t[e]}:r.default=t[e]:r===null&&(r=n[e]={default:t[e]}),r&&t[`__skip_${e}`]&&(r.skipFactory=!0)}return n}function ua(e,t){return!e||!t?e||t:f(e)&&f(t)?e.concat(t):c({},ca(e),ca(t))}function da(e,t){let n={};for(let r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n}function fa(e){let t=X(),n=e();return Ss(),x(n)&&(n=n.catch(e=>{throw xs(t),e})),[n,()=>xs(t)]}var pa=!0;function ma(e){let t=va(e),n=e.proxy,r=e.ctx;pa=!1,t.beforeCreate&&ga(t.beforeCreate,e,`bc`);let{data:a,computed:o,methods:s,watch:c,provide:l,inject:u,created:d,beforeMount:p,mounted:m,beforeUpdate:h,updated:g,activated:v,deactivated:y,beforeDestroy:x,beforeUnmount:S,destroyed:C,unmounted:w,render:T,renderTracked:E,renderTriggered:D,errorCaptured:O,serverPrefetch:ee,expose:k,inheritAttrs:te,components:A,directives:ne,filters:re}=t;if(u&&ha(u,r,null),s)for(let e in s){let t=s[e];_(t)&&(r[e]=t.bind(n))}if(a){let t=a.call(n,n);b(t)&&(e.data=Jt(t))}if(pa=!0,o)for(let e in o){let t=o[e],a=Z({get:_(t)?t.bind(n,n):_(t.get)?t.get.bind(n,n):i,set:!_(t)&&_(t.set)?t.set.bind(n):i});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>a.value,set:e=>a.value=e})}if(c)for(let e in c)_a(c[e],r,n,e);if(l){let e=_(l)?l.call(n):l;Reflect.ownKeys(e).forEach(t=>{Ma(t,e[t])})}d&&ga(d,e,`c`);function j(e,t){f(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(j(Ti,p),j(Ei,m),j(Di,h),j(Oi,g),j(_i,v),j(vi,y),j(Pi,O),j(Ni,E),j(Mi,D),j(ki,S),j(Ai,w),j(ji,ee),f(k))if(k.length){let t=e.exposed||={};k.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={};T&&e.render===i&&(e.render=T),te!=null&&(e.inheritAttrs=te),A&&(e.components=A),ne&&(e.directives=ne),ee&&Hr(e)}function ha(e,t,n=i){for(let n in f(e)&&(e=Ca(e)),e){let r=e[n],i;i=b(r)?`default`in r?Na(r.from||n,r.default,!0):Na(r.from||n):Na(r),P(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function ga(e,t,n){Rn(f(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function _a(e,t,n,r){let i=r.includes(`.`)?Ha(n,r):()=>n[r];if(v(e)){let n=t[e];_(n)&&H(i,n)}else if(_(e))H(i,e.bind(n));else if(b(e))if(f(e))e.forEach(e=>_a(e,t,n,r));else{let r=_(e.handler)?e.handler.bind(n):t[e.handler];_(r)&&H(i,r,e)}}function va(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t),c;return s?c=s:!i.length&&!n&&!r?c=t:(c={},i.length&&i.forEach(e=>ya(c,e,o,!0)),ya(c,t,o)),b(t)&&a.set(t,c),c}function ya(e,t,n,r=!1){let{mixins:i,extends:a}=t;for(let o in a&&ya(e,a,n,!0),i&&i.forEach(t=>ya(e,t,n,!0)),t)if(!(r&&o===`expose`)){let r=ba[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}var ba={data:xa,props:Ea,emits:Ea,methods:Ta,computed:Ta,beforeCreate:wa,created:wa,beforeMount:wa,mounted:wa,beforeUpdate:wa,updated:wa,beforeDestroy:wa,beforeUnmount:wa,destroyed:wa,unmounted:wa,activated:wa,deactivated:wa,errorCaptured:wa,serverPrefetch:wa,components:Ta,directives:Ta,watch:Da,provide:xa,inject:Sa};function xa(e,t){return t?e?function(){return c(_(e)?e.call(this,this):e,_(t)?t.call(this,this):t)}:t:e}function Sa(e,t){return Ta(Ca(e),Ca(t))}function Ca(e){if(f(e)){let t={};for(let n=0;n1)return n&&_(t)?t.call(r&&r.proxy):t}}function Pa(){return!!(X()||ja)}var Fa=Symbol.for(`v-scx`),Ia=()=>Na(Fa);function La(e,t){return Ba(e,null,t)}function Ra(e,t){return Ba(e,null,{flush:`post`})}function za(e,t){return Ba(e,null,{flush:`sync`})}function H(e,t,n){return Ba(e,t,n)}function Ba(e,t,r=n){let{immediate:a,deep:o,flush:s,once:l}=r,u=c({},r),d=t&&a||!t&&s!==`post`,f;if(ws){if(s===`sync`){let e=Ia();f=e.__watcherHandles||=[]}else if(!d){let e=()=>{};return e.stop=i,e.resume=i,e.pause=i,e}}let p=vs;u.call=(e,t,n)=>Rn(e,p,t,n);let m=!1;s===`post`?u.scheduler=e=>{U(e,p&&p.suspense)}:s!==`sync`&&(m=!0,u.scheduler=(e,t)=>{t?e():Yn(e)}),u.augmentJob=e=>{t&&(e.flags|=4),m&&(e.flags|=2,p&&(e.id=p.uid,e.i=p))};let h=kn(e,t,u);return ws&&(f?f.push(h):d&&h()),h}function Va(e,t,n){let r=this.proxy,i=v(e)?e.includes(`.`)?Ha(r,e):()=>r[e]:e.bind(r,r),a;_(t)?a=t:(a=t.handler,n=t);let o=xs(this),s=Ba(i,a.bind(r),n);return o(),s}function Ha(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;e{let l,u=n,d;return za(()=>{let t=e[a];j(l,t)&&(l=t,c())}),{get(){return s(),r.get?r.get(l):l},set(e){let s=r.set?r.set(e):e;if(!j(s,l)&&!(u!==n&&j(e,u)))return;let f=i.vnode.props;f&&(t in f||a in f||o in f)&&(`onUpdate:${t}`in f||`onUpdate:${a}`in f||`onUpdate:${o}`in f)||(l=e,c()),i.emit(`update:${t}`,s),j(e,s)&&j(e,u)&&!j(s,d)&&c(),u=e,d=s}}});return c[Symbol.iterator]=()=>{let e=0;return{next(){return e<2?{value:e++?s||n:c,done:!1}:{done:!0}}}},c}var Wa=(e,t)=>t===`modelValue`||t===`model-value`?e.modelModifiers:e[`${t}Modifiers`]||e[`${k(t)}Modifiers`]||e[`${A(t)}Modifiers`];function Ga(e,t,...r){if(e.isUnmounted)return;let i=e.vnode.props||n,a=r,o=t.startsWith(`update:`),s=o&&Wa(i,t.slice(7));s&&(s.trim&&(a=r.map(e=>v(e)?e.trim():e)),s.number&&(a=r.map(oe)));let c,l=i[c=re(t)]||i[c=re(k(t))];!l&&o&&(l=i[c=re(A(t))]),l&&Rn(l,e,6,a);let u=i[c+`Once`];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,Rn(u,e,6,a)}}var Ka=new WeakMap;function qa(e,t,n=!1){let r=n?Ka:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},s=!1;if(!_(e)){let r=e=>{let n=qa(e,t,!0);n&&(s=!0,c(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!s?(b(e)&&r.set(e,null),null):(f(a)?a.forEach(e=>o[e]=null):c(o,a),b(e)&&r.set(e,o),o)}function Ja(e,t){return!e||!o(t)?!1:(t=t.slice(2).replace(/Once$/,``),d(e,t[0].toLowerCase()+t.slice(1))||d(e,A(t))||d(e,t))}function Ya(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:o,attrs:c,emit:l,render:u,renderCache:d,props:f,data:p,setupState:m,ctx:h,inheritAttrs:g}=e,_=sr(e),v,y;try{if(n.shapeFlag&4){let e=i||r,t=e;v=ds(u.call(t,e,d,f,m,p,h)),y=c}else{let e=t;v=ds(e.length>1?e(f,{attrs:c,slots:o,emit:l}):e(f,null)),y=t.props?c:Za(c)}}catch(t){Ko.length=0,zn(t,e,1),v=J(G)}let b=v;if(y&&g!==!1){let e=Object.keys(y),{shapeFlag:t}=b;e.length&&t&7&&(a&&e.some(s)&&(y=Qa(y,a)),b=ss(b,y,!1,!0))}return n.dirs&&(b=ss(b,null,!1,!0),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&zr(b,n.transition),v=b,sr(_),v}function Xa(e,t=!0){let n;for(let t=0;t{let t;for(let n in e)(n===`class`||n===`style`||o(n))&&((t||={})[n]=e[n]);return t},Qa=(e,t)=>{let n={};for(let r in e)(!s(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function $a(e,t,n){let{props:r,children:i,component:a}=e,{props:o,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?eo(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;tObject.create(no),io=e=>Object.getPrototypeOf(e)===no;function ao(e,t,n,r=!1){let i={},a=ro();for(let n in e.propsDefaults=Object.create(null),so(e,t,i,a),e.propsOptions[0])n in i||(i[n]=void 0);n?e.props=r?i:Yt(i):e.type.props?e.props=i:e.props=a,e.attrs=a}function oo(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=N(i),[c]=e.propsOptions,l=!1;if((r||o>0)&&!(o&16)){if(o&8){let n=e.vnode.dynamicProps;for(let r=0;r{p=!0;let[n,r]=uo(e,t,!0);c(l,n),r&&u.push(...r)};!i&&t.mixins.length&&t.mixins.forEach(n),e.extends&&n(e.extends),e.mixins&&e.mixins.forEach(n)}if(!s&&!p)return b(e)&&a.set(e,r),r;if(f(s))for(let e=0;ee===`_`||e===`_ctx`||e===`$stable`,mo=e=>f(e)?e.map(ds):[ds(e)],ho=(e,t,n)=>{if(t._n)return t;let r=z((...e)=>mo(t(...e)),n);return r._c=!1,r},go=(e,t,n)=>{let r=e._ctx;for(let n in e){if(po(n))continue;let i=e[n];if(_(i))t[n]=ho(n,i,r);else if(i!=null){let e=mo(i);t[n]=()=>e}}},_o=(e,t)=>{let n=mo(t);e.slots.default=()=>n},vo=(e,t,n)=>{for(let r in t)(n||!po(r))&&(e[r]=t[r])},yo=(e,t,n)=>{let r=e.slots=ro();if(e.vnode.shapeFlag&32){let e=t._;e?(vo(r,t,n),n&&ae(r,`_`,e,!0)):go(t,r)}else t&&_o(e,t)},bo=(e,t,r)=>{let{vnode:i,slots:a}=e,o=!0,s=n;if(i.shapeFlag&32){let e=t._;e?r&&e===1?o=!1:vo(a,t,r):(o=!t.$stable,go(t,a)),s=t}else t&&(_o(e,t),s={default:1});if(o)for(let e in a)!po(e)&&s[e]==null&&delete a[e]},U=Vo;function xo(e){return Co(e)}function So(e){return Co(e,$r)}function Co(e,t){let a=le();a.__VUE__=!0;let{insert:o,remove:s,patchProp:c,createElement:l,createText:u,createComment:d,setText:f,setElementText:p,parentNode:m,nextSibling:h,setScopeId:g=i,insertStaticContent:_}=e,v=(e,t,n,r=null,i=null,a=null,o=void 0,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!es(e,t)&&(r=_e(e),fe(e,i,a,!0),e=null),t.patchFlag===-2&&(c=!1,t.dynamicChildren=null);let{type:l,ref:u,shapeFlag:d}=t;switch(l){case Wo:y(e,t,n,r);break;case G:b(e,t,n,r);break;case Go:e??x(t,n,r,o);break;case W:A(e,t,n,r,i,a,o,s,c);break;default:d&1?w(e,t,n,r,i,a,o,s,c):d&6?ne(e,t,n,r,i,a,o,s,c):(d&64||d&128)&&l.process(e,t,n,r,i,a,o,s,c,be)}u!=null&&i?Gr(u,e&&e.ref,a,t||e,!t):u==null&&e&&e.ref!=null&&Gr(e.ref,null,a,e,!0)},y=(e,t,n,r)=>{if(e==null)o(t.el=u(t.children),n,r);else{let n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},b=(e,t,n,r)=>{e==null?o(t.el=d(t.children||``),n,r):t.el=e.el},x=(e,t,n,r)=>{[e.el,e.anchor]=_(e.children,t,n,r,e.el,e.anchor)},S=({el:e,anchor:t},n,r)=>{let i;for(;e&&e!==t;)i=h(e),o(e,n,r),e=i;o(t,n,r)},C=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=h(e),s(e),e=n;s(t)},w=(e,t,n,r,i,a,o,s,c)=>{if(t.type===`svg`?o=`svg`:t.type===`math`&&(o=`mathml`),e==null)T(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),ee(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},T=(e,t,n,r,i,a,s,u)=>{let d,f,{props:m,shapeFlag:h,transition:g,dirs:_}=e;if(d=e.el=l(e.type,a,m&&m.is,m),h&8?p(d,e.children):h&16&&O(e.children,d,null,r,i,wo(e,a),s,u),_&&fr(e,null,r,`created`),E(d,e,e.scopeId,s,r),m){for(let e in m)e!==`value`&&!D(e)&&c(d,e,null,m[e],a,r);`value`in m&&c(d,`value`,null,m.value,a),(f=m.onVnodeBeforeMount)&&ms(f,r,e)}_&&fr(e,null,r,`beforeMount`);let v=Eo(i,g);v&&g.beforeEnter(d),o(d,t,n),((f=m&&m.onVnodeMounted)||v||_)&&U(()=>{f&&ms(f,r,e),v&&g.enter(d),_&&fr(e,null,r,`mounted`)},i)},E=(e,t,n,r,i)=>{if(n&&g(e,n),r)for(let t=0;t{for(let l=c;l{let l=t.el=e.el,{patchFlag:u,dynamicChildren:d,dirs:f}=t;u|=e.patchFlag&16;let m=e.props||n,h=t.props||n,g;if(r&&To(r,!1),(g=h.onVnodeBeforeUpdate)&&ms(g,r,t,e),f&&fr(t,e,r,`beforeUpdate`),r&&To(r,!0),(m.innerHTML&&h.innerHTML==null||m.textContent&&h.textContent==null)&&p(l,``),d?k(e.dynamicChildren,d,l,r,i,wo(t,a),o):s||se(e,t,l,null,r,i,wo(t,a),o,!1),u>0){if(u&16)te(l,m,h,r,a);else if(u&2&&m.class!==h.class&&c(l,`class`,null,h.class,a),u&4&&c(l,`style`,m.style,h.style,a),u&8){let e=t.dynamicProps;for(let t=0;t{g&&ms(g,r,t,e),f&&fr(t,e,r,`updated`)},i)},k=(e,t,n,r,i,a,o)=>{for(let s=0;s{if(t!==r){if(t!==n)for(let n in t)!D(n)&&!(n in r)&&c(e,n,t[n],null,a,i);for(let n in r){if(D(n))continue;let o=r[n],s=t[n];o!==s&&n!==`value`&&c(e,n,s,o,a,i)}`value`in r&&c(e,`value`,t.value,r.value,a)}},A=(e,t,n,r,i,a,s,c,l)=>{let d=t.el=e?e.el:u(``),f=t.anchor=e?e.anchor:u(``),{patchFlag:p,dynamicChildren:m,slotScopeIds:h}=t;h&&(c=c?c.concat(h):h),e==null?(o(d,n,r),o(f,n,r),O(t.children||[],n,f,i,a,s,c,l)):p>0&&p&64&&m&&e.dynamicChildren?(k(e.dynamicChildren,m,n,i,a,s,c),(t.key!=null||i&&t===i.subTree)&&Do(e,t,!0)):se(e,t,n,f,i,a,s,c,l)},ne=(e,t,n,r,i,a,o,s,c)=>{t.slotScopeIds=s,e==null?t.shapeFlag&512?i.ctx.activate(t,n,r,o,c):re(t,n,r,i,a,o,c):j(e,t,c)},re=(e,t,n,r,i,a,o)=>{let s=e.component=_s(e,r,i);if(mi(e)&&(s.ctx.renderer=be),Ts(s,!1,o),s.asyncDep){if(i&&i.registerDep(s,ae,o),!e.el){let r=s.subTree=J(G);b(null,r,t,n),e.placeholder=r.el}}else ae(s,e,t,n,i,a,o)},j=(e,t,n)=>{let r=t.component=e.component;if($a(e,t,n))if(r.asyncDep&&!r.asyncResolved){oe(r,t,n);return}else r.next=t,r.update();else t.el=e.el,r.vnode=t},ae=(e,t,n,r,i,a,o)=>{let s=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:c,vnode:l}=e;{let n=ko(e);if(n){t&&(t.el=l.el,oe(e,t,o)),n.asyncDep.then(()=>{e.isUnmounted||s()});return}}let u=t,d;To(e,!1),t?(t.el=l.el,oe(e,t,o)):t=l,n&&ie(n),(d=t.props&&t.props.onVnodeBeforeUpdate)&&ms(d,c,t,l),To(e,!0);let f=Ya(e),p=e.subTree;e.subTree=f,v(p,f,m(p.el),_e(p),e,i,a),t.el=f.el,u===null&&to(e,f.el),r&&U(r,i),(d=t.props&&t.props.onVnodeUpdated)&&U(()=>ms(d,c,t,l),i)}else{let o,{el:s,props:c}=t,{bm:l,m:u,parent:d,root:f,type:p}=e,m=di(t);if(To(e,!1),l&&ie(l),!m&&(o=c&&c.onVnodeBeforeMount)&&ms(o,d,t),To(e,!0),s&&Se){let t=()=>{e.subTree=Ya(e),Se(s,e.subTree,e,i,null)};m&&p.__asyncHydrate?p.__asyncHydrate(s,e,t):t()}else{f.ce&&f.ce._def.shadowRoot!==!1&&f.ce._injectChildStyle(p);let o=e.subTree=Ya(e);v(null,o,n,r,e,i,a),t.el=o.el}if(u&&U(u,i),!m&&(o=c&&c.onVnodeMounted)){let e=t;U(()=>ms(o,d,e),i)}(t.shapeFlag&256||d&&di(d.vnode)&&d.vnode.shapeFlag&256)&&e.a&&U(e.a,i),e.isMounted=!0,t=n=r=null}};e.scope.on();let c=e.effect=new Fe(s);e.scope.off();let l=e.update=c.run.bind(c),u=e.job=c.runIfDirty.bind(c);u.i=e,u.id=e.uid,c.scheduler=()=>Yn(u),To(e,!0),l()},oe=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,oo(e,t.props,r,n),bo(e,t.children,n),Qe(),Qn(e),$e()},se=(e,t,n,r,i,a,o,s,c=!1)=>{let l=e&&e.children,u=e?e.shapeFlag:0,d=t.children,{patchFlag:f,shapeFlag:m}=t;if(f>0){if(f&128){ue(l,d,n,r,i,a,o,s,c);return}else if(f&256){ce(l,d,n,r,i,a,o,s,c);return}}m&8?(u&16&&ge(l,i,a),d!==l&&p(n,d)):u&16?m&16?ue(l,d,n,r,i,a,o,s,c):ge(l,i,a,!0):(u&8&&p(n,``),m&16&&O(d,n,r,i,a,o,s,c))},ce=(e,t,n,i,a,o,s,c,l)=>{e||=r,t||=r;let u=e.length,d=t.length,f=Math.min(u,d),p;for(p=0;pd?ge(e,a,o,!0,!1,f):O(t,n,i,a,o,s,c,l,f)},ue=(e,t,n,i,a,o,s,c,l)=>{let u=0,d=t.length,f=e.length-1,p=d-1;for(;u<=f&&u<=p;){let r=e[u],i=t[u]=l?fs(t[u]):ds(t[u]);if(es(r,i))v(r,i,n,null,a,o,s,c,l);else break;u++}for(;u<=f&&u<=p;){let r=e[f],i=t[p]=l?fs(t[p]):ds(t[p]);if(es(r,i))v(r,i,n,null,a,o,s,c,l);else break;f--,p--}if(u>f){if(u<=p){let e=p+1,r=ep)for(;u<=f;)fe(e[u],a,o,!0),u++;else{let m=u,h=u,g=new Map;for(u=h;u<=p;u++){let e=t[u]=l?fs(t[u]):ds(t[u]);e.key!=null&&g.set(e.key,u)}let _,y=0,b=p-h+1,x=!1,S=0,C=Array(b);for(u=0;u=b){fe(r,a,o,!0);continue}let i;if(r.key!=null)i=g.get(r.key);else for(_=h;_<=p;_++)if(C[_-h]===0&&es(r,t[_])){i=_;break}i===void 0?fe(r,a,o,!0):(C[i-h]=u+1,i>=S?S=i:x=!0,v(r,t[i],n,null,a,o,s,c,l),y++)}let w=x?Oo(C):r;for(_=w.length-1,u=b-1;u>=0;u--){let e=h+u,r=t[e],f=t[e+1],p=e+1{let{el:a,type:c,transition:l,children:u,shapeFlag:d}=e;if(d&6){de(e.component.subTree,t,n,r);return}if(d&128){e.suspense.move(t,n,r);return}if(d&64){c.move(e,t,n,be);return}if(c===W){o(a,t,n);for(let e=0;el.enter(a),i);else{let{leave:r,delayLeave:i,afterLeave:c}=l,u=()=>{e.ctx.isUnmounted?s(a):o(a,t,n)},d=()=>{a._isLeaving&&a[Er](!0),r(a,()=>{u(),c&&c()})};i?i(a,u,d):d()}else o(a,t,n)},fe=(e,t,n,r=!1,i=!1)=>{let{type:a,props:o,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:d,dirs:f,cacheIndex:p}=e;if(d===-2&&(i=!1),s!=null&&(Qe(),Gr(s,null,n,e,!0),$e()),p!=null&&(t.renderCache[p]=void 0),u&256){t.ctx.deactivate(e);return}let m=u&1&&f,h=!di(e),g;if(h&&(g=o&&o.onVnodeBeforeUnmount)&&ms(g,t,e),u&6)he(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}m&&fr(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,be,r):l&&!l.hasOnce&&(a!==W||d>0&&d&64)?ge(l,t,n,!1,!0):(a===W&&d&384||!i&&u&16)&&ge(c,t,n),r&&pe(e)}(h&&(g=o&&o.onVnodeUnmounted)||m)&&U(()=>{g&&ms(g,t,e),m&&fr(e,null,t,`unmounted`)},n)},pe=e=>{let{type:t,el:n,anchor:r,transition:i}=e;if(t===W){me(n,r);return}if(t===Go){C(e);return}let a=()=>{s(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(e.shapeFlag&1&&i&&!i.persisted){let{leave:t,delayLeave:r}=i,o=()=>t(n,a);r?r(e.el,a,o):o()}else a()},me=(e,t)=>{let n;for(;e!==t;)n=h(e),s(e),e=n;s(t)},he=(e,t,n)=>{let{bum:r,scope:i,job:a,subTree:o,um:s,m:c,a:l}=e;Ao(c),Ao(l),r&&ie(r),i.stop(),a&&(a.flags|=8,fe(o,e,t,n)),s&&U(s,t),U(()=>{e.isUnmounted=!0},t)},ge=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o{if(e.shapeFlag&6)return _e(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=h(e.anchor||e.el),n=t&&t[pr];return n?h(n):t},ve=!1,ye=(e,t,n)=>{e==null?t._vnode&&fe(t._vnode,null,null,!0):v(t._vnode||null,e,t,null,null,null,n),t._vnode=e,ve||=(ve=!0,Qn(),$n(),!1)},be={p:v,um:fe,m:de,r:pe,mt:re,mc:O,pc:se,pbc:k,n:_e,o:e},xe,Se;return t&&([xe,Se]=t(be)),{render:ye,hydrate:xe,createApp:Aa(ye,xe)}}function wo({type:e,props:t},n){return n===`svg`&&e===`foreignObject`||n===`mathml`&&e===`annotation-xml`&&t&&t.encoding&&t.encoding.includes(`html`)?void 0:n}function To({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Eo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Do(e,t,n=!1){let r=e.children,i=t.children;if(f(r)&&f(i))for(let e=0;e>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-- >0;)n[a]=o,o=t[o];return n}function ko(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ko(t)}function Ao(e){if(e)for(let t=0;te.__isSuspense,Mo=0,No={name:`Suspense`,__isSuspense:!0,process(e,t,n,r,i,a,o,s,c,l){if(e==null)Fo(t,n,r,i,a,o,s,c,l);else{if(a&&a.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Io(e,t,n,r,i,o,s,c,l)}},hydrate:Ro,normalize:zo};function Po(e,t){let n=e.props&&e.props[t];_(n)&&n()}function Fo(e,t,n,r,i,a,o,s,c){let{p:l,o:{createElement:u}}=c,d=u(`div`),f=e.suspense=Lo(e,i,r,t,d,n,a,o,s,c);l(null,f.pendingBranch=e.ssContent,d,null,r,f,a,o),f.deps>0?(Po(e,`onPending`),Po(e,`onFallback`),l(null,e.ssFallback,t,n,r,null,a,o),Ho(f,e.ssFallback)):f.resolve(!1,!0)}function Io(e,t,n,r,i,a,o,s,{p:c,um:l,o:{createElement:u}}){let d=t.suspense=e.suspense;d.vnode=t,t.el=e.el;let f=t.ssContent,p=t.ssFallback,{activeBranch:m,pendingBranch:h,isInFallback:g,isHydrating:_}=d;if(h)d.pendingBranch=f,es(h,f)?(c(h,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0?d.resolve():g&&(_||(c(m,p,n,r,i,null,a,o,s),Ho(d,p)))):(d.pendingId=Mo++,_?(d.isHydrating=!1,d.activeBranch=h):l(h,i,d),d.deps=0,d.effects.length=0,d.hiddenContainer=u(`div`),g?(c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0?d.resolve():(c(m,p,n,r,i,null,a,o,s),Ho(d,p))):m&&es(m,f)?(c(m,f,n,r,i,d,a,o,s),d.resolve(!0)):(c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0&&d.resolve()));else if(m&&es(m,f))c(m,f,n,r,i,d,a,o,s),Ho(d,f);else if(Po(t,`onPending`),d.pendingBranch=f,f.shapeFlag&512?d.pendingId=f.component.suspenseId:d.pendingId=Mo++,c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0)d.resolve();else{let{timeout:e,pendingId:t}=d;e>0?setTimeout(()=>{d.pendingId===t&&d.fallback(p)},e):e===0&&d.fallback(p)}}function Lo(e,t,n,r,i,a,o,s,c,l,u=!1){let{p:d,m:f,um:p,n:m,o:{parentNode:h,remove:g}}=l,_,v=Uo(e);v&&t&&t.pendingBranch&&(_=t.pendingId,t.deps++);let y=e.props?se(e.props.timeout):void 0,b=a,x={vnode:e,parent:t,parentComponent:n,namespace:o,container:r,hiddenContainer:i,deps:0,pendingId:Mo++,timeout:typeof y==`number`?y:-1,activeBranch:null,pendingBranch:null,isInFallback:!u,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){let{vnode:r,activeBranch:i,pendingBranch:o,pendingId:s,effects:c,parentComponent:l,container:u,isInFallback:d}=x,g=!1;x.isHydrating?x.isHydrating=!1:e||(g=i&&o.transition&&o.transition.mode===`out-in`,g&&(i.transition.afterLeave=()=>{s===x.pendingId&&(f(o,u,a===b?m(i):a,0),Zn(c),d&&r.ssFallback&&(r.ssFallback.el=null))}),i&&(h(i.el)===u&&(a=m(i)),p(i,l,x,!0),!g&&d&&r.ssFallback&&U(()=>r.ssFallback.el=null,x)),g||f(o,u,a,0)),Ho(x,o),x.pendingBranch=null,x.isInFallback=!1;let y=x.parent,S=!1;for(;y;){if(y.pendingBranch){y.effects.push(...c),S=!0;break}y=y.parent}!S&&!g&&Zn(c),x.effects=[],v&&t&&t.pendingBranch&&_===t.pendingId&&(t.deps--,t.deps===0&&!n&&t.resolve()),Po(r,`onResolve`)},fallback(e){if(!x.pendingBranch)return;let{vnode:t,activeBranch:n,parentComponent:r,container:i,namespace:a}=x;Po(t,`onFallback`);let o=m(n),l=()=>{x.isInFallback&&(d(null,e,i,o,r,null,a,s,c),Ho(x,e))},u=e.transition&&e.transition.mode===`out-in`;u&&(n.transition.afterLeave=l),x.isInFallback=!0,p(n,r,null,!0),u||l()},move(e,t,n){x.activeBranch&&f(x.activeBranch,e,t,n),x.container=e},next(){return x.activeBranch&&m(x.activeBranch)},registerDep(e,t,n){let r=!!x.pendingBranch;r&&x.deps++;let i=e.vnode.el;e.asyncDep.catch(t=>{zn(t,e,0)}).then(a=>{if(e.isUnmounted||x.isUnmounted||x.pendingId!==e.suspenseId)return;e.asyncResolved=!0;let{vnode:s}=e;Ds(e,a,!1),i&&(s.el=i);let c=!i&&e.subTree.el;t(e,s,h(i||e.subTree.el),i?null:m(e.subTree),x,o,n),c&&(s.placeholder=null,g(c)),to(e,s.el),r&&--x.deps===0&&x.resolve()})},unmount(e,t){x.isUnmounted=!0,x.activeBranch&&p(x.activeBranch,n,e,t),x.pendingBranch&&p(x.pendingBranch,n,e,t)}};return x}function Ro(e,t,n,r,i,a,o,s,c){let l=t.suspense=Lo(t,r,n,e.parentNode,document.createElement(`div`),null,i,a,o,s,!0),u=c(e,l.pendingBranch=t.ssContent,n,l,a,o);return l.deps===0&&l.resolve(!1,!0),u}function zo(e){let{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=Bo(r?n.default:n),e.ssFallback=r?Bo(n.fallback):J(G)}function Bo(e){let t;if(_(e)){let n=Yo&&e._c;n&&(e._d=!1,K()),e=e(),n&&(e._d=!0,t=qo,Jo())}return f(e)&&(e=Xa(e)),e=ds(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(t=>t!==e)),e}function Vo(e,t){t&&t.pendingBranch?f(e)?t.effects.push(...e):t.effects.push(e):Zn(e)}function Ho(e,t){e.activeBranch=t;let{vnode:n,parentComponent:r}=e,i=t.el;for(;!i&&t.component;)t=t.component.subTree,i=t.el;n.el=i,r&&r.subTree===n&&(r.vnode.el=i,to(r,i))}function Uo(e){let t=e.props&&e.props.suspensible;return t!=null&&t!==!1}var W=Symbol.for(`v-fgt`),Wo=Symbol.for(`v-txt`),G=Symbol.for(`v-cmt`),Go=Symbol.for(`v-stc`),Ko=[],qo=null;function K(e=!1){Ko.push(qo=e?null:[])}function Jo(){Ko.pop(),qo=Ko[Ko.length-1]||null}var Yo=1;function Xo(e,t=!1){Yo+=e,e<0&&qo&&t&&(qo.hasOnce=!0)}function Zo(e){return e.dynamicChildren=Yo>0?qo||r:null,Jo(),Yo>0&&qo&&qo.push(e),e}function Qo(e,t,n,r,i,a){return Zo(is(e,t,n,r,i,a,!0))}function q(e,t,n,r,i){return Zo(J(e,t,n,r,i,!0))}function $o(e){return e?e.__v_isVNode===!0:!1}function es(e,t){return e.type===t.type&&e.key===t.key}function ts(e){}var ns=({key:e})=>e??null,rs=({ref:e,ref_key:t,ref_for:n})=>(typeof e==`number`&&(e=``+e),e==null?null:v(e)||P(e)||_(e)?{i:ar,r:e,k:t,f:!!n}:e);function is(e,t=null,n=null,r=0,i=null,a=e===W?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ns(t),ref:t&&rs(t),scopeId:or,slotScopeIds:null,children:n,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:a,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:ar};return s?(ps(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=v(n)?8:16),Yo>0&&!o&&qo&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&qo.push(c),c}var J=as;function as(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===Ri)&&(e=G),$o(e)){let r=ss(e,t,!0);return n&&ps(r,n),Yo>0&&!a&&qo&&(r.shapeFlag&6?qo[qo.indexOf(e)]=r:qo.push(r)),r.patchFlag=-2,r}if(Ls(e)&&(e=e.__vccOpts),t){t=os(t);let{class:e,style:n}=t;e&&!v(e)&&(t.class=ge(e)),b(n)&&(nn(n)&&!f(n)&&(n=c({},n)),t.style=de(n))}let o=v(e)?1:jo(e)?128:mr(e)?64:b(e)?4:_(e)?2:0;return is(e,t,n,r,i,o,a,!0)}function os(e){return e?nn(e)||io(e)?c({},e):e:null}function ss(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?Y(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&ns(l),ref:t&&t.ref?n&&a?f(a)?a.concat(rs(t)):[a,rs(t)]:rs(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==W?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ss(e.ssContent),ssFallback:e.ssFallback&&ss(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&zr(u,c.clone(u)),u}function cs(e=` `,t=0){return J(Wo,null,e,t)}function ls(e,t){let n=J(Go,null,e);return n.staticCount=t,n}function us(e=``,t=!1){return t?(K(),q(G,null,e)):J(G,null,e)}function ds(e){return e==null||typeof e==`boolean`?J(G):f(e)?J(W,null,e.slice()):$o(e)?fs(e):J(Wo,null,String(e))}function fs(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ss(e)}function ps(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(f(t))n=16;else if(typeof t==`object`)if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),ps(e,n()),n._c&&(n._d=!0));return}else{n=32;let r=t._;!r&&!io(t)?t._ctx=ar:r===3&&ar&&(ar.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else _(t)?(t={default:t,_ctx:ar},n=32):(t=String(t),r&64?(n=16,t=[cs(t)]):n=8);e.children=t,e.shapeFlag|=n}function Y(...e){let t={};for(let n=0;nvs||ar,ys,bs;{let e=le(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach(t=>t(e)):r[0](e)}};ys=t(`__VUE_INSTANCE_SETTERS__`,e=>vs=e),bs=t(`__VUE_SSR_SETTERS__`,e=>ws=e)}var xs=e=>{let t=vs;return ys(e),e.scope.on(),()=>{e.scope.off(),ys(t)}},Ss=()=>{vs&&vs.scope.off(),ys(null)};function Cs(e){return e.vnode.shapeFlag&4}var ws=!1;function Ts(e,t=!1,n=!1){t&&bs(t);let{props:r,children:i}=e.vnode,a=Cs(e);ao(e,r,a,t),yo(e,i,n||t);let o=a?Es(e,t):void 0;return t&&bs(!1),o}function Es(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Xi);let{setup:r}=n;if(r){Qe();let n=e.setupContext=r.length>1?Ps(e):null,i=xs(e),a=Ln(r,e,0,[e.props,n]),o=x(a);if($e(),i(),(o||e.sp)&&!di(e)&&Hr(e),o){if(a.then(Ss,Ss),t)return a.then(n=>{Ds(e,n,t)}).catch(t=>{zn(t,e,0)});e.asyncDep=a}else Ds(e,a,t)}else Ms(e,t)}function Ds(e,t,n){_(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:b(t)&&(e.setupState=fn(t)),Ms(e,n)}var Os,ks;function As(e){Os=e,ks=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,Zi))}}var js=()=>!Os;function Ms(e,t,n){let r=e.type;if(!e.render){if(!t&&Os&&!r.render){let t=r.template||va(e).template;if(t){let{isCustomElement:n,compilerOptions:i}=e.appContext.config,{delimiters:a,compilerOptions:o}=r,s=c(c({isCustomElement:n,delimiters:a},i),o);r.render=Os(t,s)}}e.render=r.render||i,ks&&ks(e)}{let t=xs(e);Qe();try{ma(e)}finally{$e(),t()}}}var Ns={get(e,t){return lt(e,`get`,``),e[t]}};function Ps(e){return{attrs:new Proxy(e.attrs,Ns),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function Fs(e){return e.exposed?e.exposeProxy||=new Proxy(fn(rn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ji)return Ji[n](e)},has(e,t){return t in e||t in Ji}}):e.proxy}function Is(e,t=!0){return _(e)?e.displayName||e.name:e.name||t&&e.__name}function Ls(e){return _(e)&&`__vccOpts`in e}var Z=(e,t)=>xn(e,t,ws);function Rs(e,t,n){try{Xo(-1);let r=arguments.length;return r===2?b(t)&&!f(t)?$o(t)?J(e,null,[t]):J(e,t):J(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&$o(n)&&(n=[n]),J(e,t,n))}finally{Xo(1)}}function zs(){return;function e(t,n,r){let i=t[r];if(f(i)&&i.includes(n)||b(i)&&n in i||t.extends&&e(t.extends,n,r)||t.mixins&&t.mixins.some(t=>e(t,n,r)))return!0}}function Bs(e,t,n,r){let i=n[r];if(i&&Vs(i,e))return i;let a=t();return a.memo=e.slice(),a.cacheIndex=r,n[r]=a}function Vs(e,t){let n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e0&&qo&&qo.push(e),!0}var Hs=`3.5.25`,Us=i,Ws=In,Gs=nr,Ks=ir,qs={createComponentInstance:_s,setupComponent:Ts,renderComponentRoot:Ya,setCurrentRenderingInstance:sr,isVNode:$o,normalizeVNode:ds,getComponentPublicInstance:Fs,ensureValidVNode:Gi,pushWarningContext:Mn,popWarningContext:Nn},Js=void 0,Ys=typeof window<`u`&&window.trustedTypes;if(Ys)try{Js=Ys.createPolicy(`vue`,{createHTML:e=>e})}catch{}var Xs=Js?e=>Js.createHTML(e):e=>e,Zs=`http://www.w3.org/2000/svg`,Qs=`http://www.w3.org/1998/Math/MathML`,$s=typeof document<`u`?document:null,ec=$s&&$s.createElement(`template`),tc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?$s.createElementNS(Zs,e):t===`mathml`?$s.createElementNS(Qs,e):n?$s.createElement(e,{is:n}):$s.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>$s.createTextNode(e),createComment:e=>$s.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>$s.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===a||!(i=i.nextSibling)););else{ec.innerHTML=Xs(r===`svg`?`${e}`:r===`mathml`?`${e}`:e);let i=ec.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},nc=`transition`,rc=`animation`,ic=Symbol(`_vtc`),ac={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},oc=c({},Ar,ac),sc=(e=>(e.displayName=`Transition`,e.props=oc,e))((e,{slots:t})=>Rs(Pr,uc(e),t)),cc=(e,t=[])=>{f(e)?e.forEach(e=>e(...t)):e&&e(...t)},lc=e=>e?f(e)?e.some(e=>e.length>1):e.length>1:!1;function uc(e){let t={};for(let n in e)n in ac||(t[n]=e[n]);if(e.css===!1)return t;let{name:n=`v`,type:r,duration:i,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:l=a,appearActiveClass:u=o,appearToClass:d=s,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,h=dc(i),g=h&&h[0],_=h&&h[1],{onBeforeEnter:v,onEnter:y,onEnterCancelled:b,onLeave:x,onLeaveCancelled:S,onBeforeAppear:C=v,onAppear:w=y,onAppearCancelled:T=b}=t,E=(e,t,n,r)=>{e._enterCancelled=r,mc(e,t?d:s),mc(e,t?u:o),n&&n()},D=(e,t)=>{e._isLeaving=!1,mc(e,f),mc(e,m),mc(e,p),t&&t()},O=e=>(t,n)=>{let i=e?w:y,o=()=>E(t,e,n);cc(i,[t,o]),hc(()=>{mc(t,e?l:a),pc(t,e?d:s),lc(i)||_c(t,r,g,o)})};return c(t,{onBeforeEnter(e){cc(v,[e]),pc(e,a),pc(e,o)},onBeforeAppear(e){cc(C,[e]),pc(e,l),pc(e,u)},onEnter:O(!1),onAppear:O(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>D(e,t);pc(e,f),e._enterCancelled?(pc(e,p),xc(e)):(xc(e),pc(e,p)),hc(()=>{e._isLeaving&&(mc(e,f),pc(e,m),lc(x)||_c(e,r,_,n))}),cc(x,[e,n])},onEnterCancelled(e){E(e,!1,void 0,!0),cc(b,[e])},onAppearCancelled(e){E(e,!0,void 0,!0),cc(T,[e])},onLeaveCancelled(e){D(e),cc(S,[e])}})}function dc(e){if(e==null)return null;if(b(e))return[fc(e.enter),fc(e.leave)];{let t=fc(e);return[t,t]}}function fc(e){return se(e)}function pc(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[ic]||(e[ic]=new Set)).add(t)}function mc(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[ic];n&&(n.delete(t),n.size||(e[ic]=void 0))}function hc(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var gc=0;function _c(e,t,n,r){let i=e._endId=++gc,a=()=>{i===e._endId&&r()};if(n!=null)return setTimeout(a,n);let{type:o,timeout:s,propCount:c}=vc(e,t);if(!o)return r();let l=o+`end`,u=0,d=()=>{e.removeEventListener(l,f),a()},f=t=>{t.target===e&&++u>=c&&d()};setTimeout(()=>{u(n[e]||``).split(`, `),i=r(`${nc}Delay`),a=r(`${nc}Duration`),o=yc(i,a),s=r(`${rc}Delay`),c=r(`${rc}Duration`),l=yc(s,c),u=null,d=0,f=0;t===nc?o>0&&(u=nc,d=o,f=a.length):t===rc?l>0&&(u=rc,d=l,f=c.length):(d=Math.max(o,l),u=d>0?o>l?nc:rc:null,f=u?u===nc?a.length:c.length:0);let p=u===nc&&/\b(?:transform|all)(?:,|$)/.test(r(`${nc}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:p}}function yc(e,t){for(;e.lengthbc(t)+bc(e[n])))}function bc(e){return e===`auto`?0:Number(e.slice(0,-1).replace(`,`,`.`))*1e3}function xc(e){return(e?e.ownerDocument:document).body.offsetHeight}function Sc(e,t,n){let r=e[ic];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var Cc=Symbol(`_vod`),wc=Symbol(`_vsh`),Tc={name:`show`,beforeMount(e,{value:t},{transition:n}){e[Cc]=e.style.display===`none`?``:e.style.display,n&&t?n.beforeEnter(e):Ec(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Ec(e,!0),r.enter(e)):r.leave(e,()=>{Ec(e,!1)}):Ec(e,t))},beforeUnmount(e,{value:t}){Ec(e,t)}};function Ec(e,t){e.style.display=t?e[Cc]:`none`,e[wc]=!t}function Dc(){Tc.getSSRProps=({value:e})=>{if(!e)return{style:{display:`none`}}}}var Oc=Symbol(``);function kc(e){let t=X();if(!t)return;let n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(e=>jc(e,n))},r=()=>{let r=e(t.proxy);t.ce?jc(t.ce,r):Ac(t.subTree,r),n(r)};Di(()=>{Zn(r)}),Ei(()=>{H(r,i,{flush:`post`});let e=new MutationObserver(r);e.observe(t.subTree.el.parentNode,{childList:!0}),Ai(()=>e.disconnect())})}function Ac(e,t){if(e.shapeFlag&128){let n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push(()=>{Ac(n.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)jc(e.el,t);else if(e.type===W)e.children.forEach(e=>Ac(e,t));else if(e.type===Go){let{el:n,anchor:r}=e;for(;n&&(jc(n,t),n!==r);)n=n.nextSibling}}function jc(e,t){if(e.nodeType===1){let n=e.style,r=``;for(let e in t){let i=Oe(t[e]);n.setProperty(`--${e}`,i),r+=`--${e}: ${i};`}n[Oc]=r}}var Mc=/(?:^|;)\s*display\s*:/;function Nc(e,t,n){let r=e.style,i=v(n),a=!1;if(n&&!i){if(t)if(v(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??Fc(r,t,``)}else for(let e in t)n[e]??Fc(r,e,``);for(let e in n)e===`display`&&(a=!0),Fc(r,e,n[e])}else if(i){if(t!==n){let e=r[Oc];e&&(n+=`;`+e),r.cssText=n,a=Mc.test(n)}}else t&&e.removeAttribute(`style`);Cc in e&&(e[Cc]=a?r.display:``,e[wc]&&(r.display=`none`))}var Pc=/\s*!important$/;function Fc(e,t,n){if(f(n))n.forEach(n=>Fc(e,t,n));else if(n??=``,t.startsWith(`--`))e.setProperty(t,n);else{let r=Rc(e,t);Pc.test(n)?e.setProperty(A(r),n.replace(Pc,``),`important`):e[r]=n}}var Ic=[`Webkit`,`Moz`,`ms`],Lc={};function Rc(e,t){let n=Lc[t];if(n)return n;let r=k(t);if(r!==`filter`&&r in e)return Lc[t]=r;r=ne(r);for(let n=0;nJc||=(Yc.then(()=>Jc=0),Date.now());function Zc(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;Rn(Qc(e,n.value),t,5,[e])};return n.value=e,n.attached=Xc(),n}function Qc(e,t){if(f(t)){let n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(e=>t=>!t._stopped&&e&&e(t))}else return t}var $c=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,el=(e,t,n,r,i,a)=>{let c=i===`svg`;t===`class`?Sc(e,r,c):t===`style`?Nc(e,n,r):o(t)?s(t)||Gc(e,t,n,r,a):(t[0]===`.`?(t=t.slice(1),!0):t[0]===`^`?(t=t.slice(1),!1):tl(e,t,r,c))?(Vc(e,t,r),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&Bc(e,t,r,c,a,t!==`value`)):e._isVueCE&&(/[A-Z]/.test(t)||!v(r))?Vc(e,k(t),r,a,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),Bc(e,t,r,c))};function tl(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&$c(t)&&_(n));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`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return $c(t)&&v(n)?!1:t in e}var nl={};function rl(e,t,n){let r=B(e,t);T(r)&&(r=c({},r,t));class i extends ol{constructor(e){super(r,e,n)}}return i.def=r,i}var il=((e,t)=>rl(e,t,Yl)),al=typeof HTMLElement<`u`?HTMLElement:class{},ol=class e extends al{constructor(e,t={},n=Jl){super(),this._def=e,this._props=t,this._createApp=n,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._ob=null,this.shadowRoot&&n!==Jl?this._root=this.shadowRoot:e.shadowRoot===!1?this._root=this:(this.attachShadow(c({},e.shadowRootOptions,{mode:`open`})),this._root=this.shadowRoot)}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t&&=t.parentNode||t.host;)if(t instanceof e){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{this._pendingResolve=void 0,this._resolveDef()}):this._resolveDef())}_setParent(e=this._parent){e&&(this._instance.parent=e._instance,this._inheritParentContext(e))}_inheritParentContext(e=this._parent){e&&this._app&&Object.setPrototypeOf(this._app._context.provides,e._instance.provides)}disconnectedCallback(){this._connected=!1,R(()=>{this._connected||(this._ob&&=(this._ob.disconnect(),null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&=(this._teleportTargets.clear(),void 0))})}_processMutations(e){for(let t of e)this._setAttr(t.attributeName)}_resolveDef(){if(this._pendingResolve)return;for(let e=0;e{this._resolved=!0,this._pendingResolve=void 0;let{props:n,styles:r}=e,i;if(n&&!f(n))for(let e in n){let t=n[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=se(this._props[e])),(i||=Object.create(null))[k(e)]=!0)}this._numberProps=i,this._resolveProps(e),this.shadowRoot&&this._applyStyles(r),this._mount(e)},t=this._def.__asyncLoader;t?this._pendingResolve=t().then(t=>{t.configureApp=this._def.configureApp,e(this._def=t,!0)}):e(this._def)}_mount(e){this._app=this._createApp(e),this._inheritParentContext(),e.configureApp&&e.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);let t=this._instance&&this._instance.exposed;if(t)for(let e in t)d(this,e)||Object.defineProperty(this,e,{get:()=>I(t[e])})}_resolveProps(e){let{props:t}=e,n=f(t)?t:Object.keys(t||{});for(let e of Object.keys(this))e[0]!==`_`&&n.includes(e)&&this._setProp(e,this[e]);for(let e of n.map(k))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t,!0,!this._patching)}})}_setAttr(e){if(e.startsWith(`data-v-`))return;let t=this.hasAttribute(e),n=t?this.getAttribute(e):nl,r=k(e);t&&this._numberProps&&this._numberProps[r]&&(n=se(n)),this._setProp(r,n,!1,!0)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!1){if(t!==this._props[e]&&(this._dirty=!0,t===nl?delete this._props[e]:(this._props[e]=t,e===`key`&&this._app&&(this._app._ceVNode.key=t)),r&&this._instance&&this._update(),n)){let n=this._ob;n&&(this._processMutations(n.takeRecords()),n.disconnect()),t===!0?this.setAttribute(A(e),``):typeof t==`string`||typeof t==`number`?this.setAttribute(A(e),t+``):t||this.removeAttribute(A(e)),n&&n.observe(this,{attributes:!0})}}_update(){let e=this._createVNode();this._app&&(e.appContext=this._app._context),Kl(e,this._root)}_createVNode(){let e={};this.shadowRoot||(e.onVnodeMounted=e.onVnodeUpdated=this._renderSlots.bind(this));let t=J(this._def,c(e,this._props));return this._instance||(t.ce=e=>{this._instance=e,e.ce=this,e.isCE=!0;let t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,T(t[0])?c({detail:t},t[0]):{detail:t}))};e.emit=(e,...n)=>{t(e,n),A(e)!==e&&t(A(e),n)},this._setParent()}),t}_applyStyles(e,t){if(!e)return;if(t){if(t===this._def||this._styleChildren.has(t))return;this._styleChildren.add(t)}let n=this._nonce;for(let t=e.length-1;t>=0;t--){let r=document.createElement(`style`);n&&r.setAttribute(`nonce`,n),r.textContent=e[t],this.shadowRoot.prepend(r)}}_parseSlots(){let e=this._slots={},t;for(;t=this.firstChild;){let n=t.nodeType===1&&t.getAttribute(`slot`)||`default`;(e[n]||(e[n]=[])).push(t),this.removeChild(t)}}_renderSlots(){let e=this._getSlots(),t=this._instance.type.__scopeId;for(let n=0;n(delete e.props.mode,e))({name:`TransitionGroup`,props:c({},oc,{tag:String,moveClass:String}),setup(e,{slots:t}){let n=X(),r=Or(),i,a;return Oi(()=>{if(!i.length)return;let t=e.moveClass||`${e.name||`v`}-move`;if(!vl(i[0].el,n.vnode.el,t)){i=[];return}i.forEach(hl),i.forEach(gl);let r=i.filter(_l);xc(n.vnode.el),r.forEach(e=>{let n=e.el,r=n.style;pc(n,t),r.transform=r.webkitTransform=r.transitionDuration=``;let i=n[fl]=e=>{e&&e.target!==n||(!e||e.propertyName.endsWith(`transform`))&&(n.removeEventListener(`transitionend`,i),n[fl]=null,mc(n,t))};n.addEventListener(`transitionend`,i)}),i=[]}),()=>{let o=N(e),s=uc(o),c=o.tag||W;if(i=[],a)for(let e=0;e{e.split(/\s+/).forEach(e=>e&&r.classList.remove(e))}),n.split(/\s+/).forEach(e=>e&&r.classList.add(e)),r.style.display=`none`;let a=t.nodeType===1?t:t.parentNode;a.appendChild(r);let{hasTransform:o}=vc(r);return a.removeChild(r),o}var yl=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return f(t)?e=>ie(t,e):t};function bl(e){e.target.composing=!0}function xl(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var Sl=Symbol(`_assign`);function Cl(e,t,n){return t&&(e=e.trim()),n&&(e=oe(e)),e}var wl={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e[Sl]=yl(i);let a=r||i.props&&i.props.type===`number`;Hc(e,t?`change`:`input`,t=>{t.target.composing||e[Sl](Cl(e.value,n,a))}),(n||a)&&Hc(e,`change`,()=>{e.value=Cl(e.value,n,a)}),t||(Hc(e,`compositionstart`,bl),Hc(e,`compositionend`,xl),Hc(e,`change`,xl))},mounted(e,{value:t}){e.value=t??``},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){if(e[Sl]=yl(o),e.composing)return;let s=(a||e.type===`number`)&&!/^0\d/.test(e.value)?oe(e.value):e.value,c=t??``;s!==c&&(document.activeElement===e&&e.type!==`range`&&(r&&t===n||i&&e.value.trim()===c)||(e.value=c))}},Tl={deep:!0,created(e,t,n){e[Sl]=yl(n),Hc(e,`change`,()=>{let t=e._modelValue,n=Al(e),r=e.checked,i=e[Sl];if(f(t)){let e=Ce(t,n),a=e!==-1;if(r&&!a)i(t.concat(n));else if(!r&&a){let n=[...t];n.splice(e,1),i(n)}}else if(m(t)){let e=new Set(t);r?e.add(n):e.delete(n),i(e)}else i(jl(e,r))})},mounted:El,beforeUpdate(e,t,n){e[Sl]=yl(n),El(e,t,n)}};function El(e,{value:t,oldValue:n},r){e._modelValue=t;let i;if(f(t))i=Ce(t,r.props.value)>-1;else if(m(t))i=t.has(r.props.value);else{if(t===n)return;i=Se(t,jl(e,!0))}e.checked!==i&&(e.checked=i)}var Dl={created(e,{value:t},n){e.checked=Se(t,n.props.value),e[Sl]=yl(n),Hc(e,`change`,()=>{e[Sl](Al(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[Sl]=yl(r),t!==n&&(e.checked=Se(t,r.props.value))}},Ol={deep:!0,created(e,{value:t,modifiers:{number:n}},r){let i=m(t);Hc(e,`change`,()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?oe(Al(e)):Al(e));e[Sl](e.multiple?i?new Set(t):t:t[0]),e._assigning=!0,R(()=>{e._assigning=!1})}),e[Sl]=yl(r)},mounted(e,{value:t}){kl(e,t)},beforeUpdate(e,t,n){e[Sl]=yl(n)},updated(e,{value:t}){e._assigning||kl(e,t)}};function kl(e,t){let n=e.multiple,r=f(t);if(!(n&&!r&&!m(t))){for(let i=0,a=e.options.length;iString(e)===String(o)):a.selected=Ce(t,o)>-1}else a.selected=t.has(o);else if(Se(Al(a),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Al(e){return`_value`in e?e._value:e.value}function jl(e,t){let n=t?`_trueValue`:`_falseValue`;return n in e?e[n]:t}var Ml={created(e,t,n){Pl(e,t,n,null,`created`)},mounted(e,t,n){Pl(e,t,n,null,`mounted`)},beforeUpdate(e,t,n,r){Pl(e,t,n,r,`beforeUpdate`)},updated(e,t,n,r){Pl(e,t,n,r,`updated`)}};function Nl(e,t){switch(e){case`SELECT`:return Ol;case`TEXTAREA`:return wl;default:switch(t){case`checkbox`:return Tl;case`radio`:return Dl;default:return wl}}}function Pl(e,t,n,r,i){let a=Nl(e.tagName,n.props&&n.props.type)[i];a&&a(e,t,n,r)}function Fl(){wl.getSSRProps=({value:e})=>({value:e}),Dl.getSSRProps=({value:e},t)=>{if(t.props&&Se(t.props.value,e))return{checked:!0}},Tl.getSSRProps=({value:e},t)=>{if(f(e)){if(t.props&&Ce(e,t.props.value)>-1)return{checked:!0}}else if(m(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},Ml.getSSRProps=(e,t)=>{if(typeof t.type!=`string`)return;let n=Nl(t.type.toUpperCase(),t.props&&t.props.type);if(n.getSSRProps)return n.getSSRProps(e,t)}}var Il=[`ctrl`,`shift`,`alt`,`meta`],Ll={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>`button`in e&&e.button!==0,middle:e=>`button`in e&&e.button!==1,right:e=>`button`in e&&e.button!==2,exact:(e,t)=>Il.some(n=>e[`${n}Key`]&&!t.includes(n))},Rl=(e,t)=>{let n=e._withMods||={},r=t.join(`.`);return n[r]||(n[r]=((n,...r)=>{for(let e=0;e{let n=e._withKeys||={},r=t.join(`.`);return n[r]||(n[r]=(n=>{if(!(`key`in n))return;let r=A(n.key);if(t.some(e=>e===r||zl[e]===r))return e(n)}))},Vl=c({patchProp:el},tc),Hl,Ul=!1;function Wl(){return Hl||=xo(Vl)}function Gl(){return Hl=Ul?Hl:So(Vl),Ul=!0,Hl}var Kl=((...e)=>{Wl().render(...e)}),ql=((...e)=>{Gl().hydrate(...e)}),Jl=((...e)=>{let t=Wl().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=Zl(e);if(!r)return;let i=t._component;!_(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,Xl(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t}),Yl=((...e)=>{let t=Gl().createApp(...e),{mount:n}=t;return t.mount=e=>{let t=Zl(e);if(t)return n(t,!0,Xl(t))},t});function Xl(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function Zl(e){return v(e)?document.querySelector(e):e}var Ql=!1,$l=()=>{Ql||(Ql=!0,Fl(),Dc())},eu=e({BaseTransition:()=>Pr,BaseTransitionPropsValidators:()=>Ar,Comment:()=>G,DeprecationTypes:()=>null,EffectScope:()=>Ae,ErrorCodes:()=>Fn,ErrorTypeStrings:()=>Ws,Fragment:()=>W,KeepAlive:()=>hi,ReactiveEffect:()=>Fe,Static:()=>Go,Suspense:()=>No,Teleport:()=>Cr,Text:()=>Wo,TrackOpTypes:()=>Sn,Transition:()=>sc,TransitionGroup:()=>ml,TriggerOpTypes:()=>Cn,VueElement:()=>ol,assertNumber:()=>Pn,callWithAsyncErrorHandling:()=>Rn,callWithErrorHandling:()=>Ln,camelize:()=>k,capitalize:()=>ne,cloneVNode:()=>ss,compatUtils:()=>null,compile:()=>tu,computed:()=>Z,createApp:()=>Jl,createBlock:()=>q,createCommentVNode:()=>us,createElementBlock:()=>Qo,createElementVNode:()=>is,createHydrationRenderer:()=>So,createPropsRestProxy:()=>da,createRenderer:()=>xo,createSSRApp:()=>Yl,createSlots:()=>Wi,createStaticVNode:()=>ls,createTextVNode:()=>cs,createVNode:()=>J,customRef:()=>mn,defineAsyncComponent:()=>fi,defineComponent:()=>B,defineCustomElement:()=>rl,defineEmits:()=>$i,defineExpose:()=>ea,defineModel:()=>ra,defineOptions:()=>ta,defineProps:()=>Qi,defineSSRCustomElement:()=>il,defineSlots:()=>na,devtools:()=>Gs,effect:()=>Je,effectScope:()=>je,getCurrentInstance:()=>X,getCurrentScope:()=>Me,getCurrentWatcher:()=>Dn,getTransitionRawChildren:()=>Br,guardReactiveProps:()=>os,h:()=>Rs,handleError:()=>zn,hasInjectionContext:()=>Pa,hydrate:()=>ql,hydrateOnIdle:()=>ai,hydrateOnInteraction:()=>li,hydrateOnMediaQuery:()=>ci,hydrateOnVisible:()=>si,initCustomFormatter:()=>zs,initDirectivesForSSR:()=>$l,inject:()=>Na,isMemoSame:()=>Vs,isProxy:()=>nn,isReactive:()=>$t,isReadonly:()=>en,isRef:()=>P,isRuntimeOnly:()=>js,isShallow:()=>tn,isVNode:()=>$o,markRaw:()=>rn,mergeDefaults:()=>la,mergeModels:()=>ua,mergeProps:()=>Y,nextTick:()=>R,nodeOps:()=>tc,normalizeClass:()=>ge,normalizeProps:()=>_e,normalizeStyle:()=>de,onActivated:()=>_i,onBeforeMount:()=>Ti,onBeforeUnmount:()=>ki,onBeforeUpdate:()=>Di,onDeactivated:()=>vi,onErrorCaptured:()=>Pi,onMounted:()=>Ei,onRenderTracked:()=>Ni,onRenderTriggered:()=>Mi,onScopeDispose:()=>Ne,onServerPrefetch:()=>ji,onUnmounted:()=>Ai,onUpdated:()=>Oi,onWatcherCleanup:()=>On,openBlock:()=>K,patchProp:()=>el,popScopeId:()=>lr,provide:()=>Ma,proxyRefs:()=>fn,pushScopeId:()=>cr,queuePostFlushCb:()=>Zn,reactive:()=>Jt,readonly:()=>Xt,ref:()=>F,registerRuntimeCompiler:()=>As,render:()=>Kl,renderList:()=>Ui,renderSlot:()=>V,resolveComponent:()=>Li,resolveDirective:()=>Bi,resolveDynamicComponent:()=>zi,resolveFilter:()=>null,resolveTransitionHooks:()=>Ir,setBlockTracking:()=>Xo,setDevtoolsHook:()=>Ks,setTransitionHooks:()=>zr,shallowReactive:()=>Yt,shallowReadonly:()=>Zt,shallowRef:()=>sn,ssrContextKey:()=>Fa,ssrUtils:()=>qs,stop:()=>Ye,toDisplayString:()=>Te,toHandlerKey:()=>re,toHandlers:()=>Ki,toRaw:()=>N,toRef:()=>vn,toRefs:()=>hn,toValue:()=>L,transformVNodeArgs:()=>ts,triggerRef:()=>un,unref:()=>I,useAttrs:()=>oa,useCssModule:()=>ll,useCssVars:()=>kc,useHost:()=>sl,useId:()=>Vr,useModel:()=>Ua,useSSRContext:()=>Ia,useShadowRoot:()=>cl,useSlots:()=>aa,useTemplateRef:()=>Ur,useTransitionState:()=>Or,vModelCheckbox:()=>Tl,vModelDynamic:()=>Ml,vModelRadio:()=>Dl,vModelSelect:()=>Ol,vModelText:()=>wl,vShow:()=>Tc,version:()=>Hs,warn:()=>Us,watch:()=>H,watchEffect:()=>La,watchPostEffect:()=>Ra,watchSyncEffect:()=>za,withAsyncContext:()=>fa,withCtx:()=>z,withDefaults:()=>ia,withDirectives:()=>dr,withKeys:()=>Bl,withMemo:()=>Bs,withModifiers:()=>Rl,withScopeId:()=>ur}),tu=()=>{};function nu(e){return typeof e==`string`?`'${e}'`:new ru().serialize(e)}var ru=function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?e.localeCompare(t):n===`number`&&r===`number`?e-t:String.prototype.localeCompare.call(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}return this.serializeObjectEntries(r,Object.entries(e))}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t?.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;ethis.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e}();function iu(e,t){return e===t||nu(e)===nu(t)}function au(e,t=-1/0,n=1/0){return Math.min(n,Math.max(t,e))}function ou(e,t){let n=typeof e==`string`&&!t?`${e}Context`:t,r=Symbol(n);return[t=>{let n=Na(r,t);if(n||n===null)return n;throw Error(`Injection \`${r.toString()}\` not found. Component must be used within ${Array.isArray(e)?`one of the following components: ${e.join(`, `)}`:`\`${e}\``}`)},e=>(Ma(r,e),e)]}function su(){let e=document.activeElement;if(e==null)return null;for(;e!=null&&e.shadowRoot!=null&&e.shadowRoot.activeElement!=null;)e=e.shadowRoot.activeElement;return e}function cu(e,t,n){let r=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),r.dispatchEvent(i)}function lu(e){return e==null}function uu(e){return e?e.flatMap(e=>e.type===W?uu(e.children):[e]):[]}var[du,fu]=ou(`ConfigProvider`);function pu(e,t){let n=sn();return La(()=>{n.value=e()},{...t,flush:t?.flush??`sync`}),Xt(n)}function mu(e){return Me()?(Ne(e),!0):!1}function hu(e){let t=!1,n,r=je(!0);return(...i)=>(t||=(n=r.run(()=>e(...i)),!0),n)}function gu(e){let t=0,n,r,i=()=>{--t,r&&t<=0&&(r.stop(),n=void 0,r=void 0)};return(...a)=>(t+=1,r||(r=je(!0),n=r.run(()=>e(...a))),mu(i),n)}function _u(e){return P(e)?Jt(new Proxy({},{get(t,n,r){return I(Reflect.get(e.value,n,r))},set(t,n,r){return P(e.value[n])&&!P(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}})):Jt(e)}function vu(e){return _u(Z(e))}function yu(e,...t){let n=t.flat(),r=n[0];return vu(()=>typeof r==`function`?Object.fromEntries(Object.entries(hn(e)).filter(([e,t])=>!r(L(t),e))):Object.fromEntries(Object.entries(hn(e)).filter(e=>!n.includes(e[0]))))}var bu=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var xu=e=>e!==void 0,Su=Object.prototype.toString,Cu=e=>Su.call(e)===`[object Object]`,wu=Tu();function Tu(){return bu&&(window==null?void 0:window.navigator)?.userAgent&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||(window==null?void 0:window.navigator)?.maxTouchPoints>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Eu(e){return e||X()}function Du(e){return Array.isArray(e)?e:[e]}function Ou(e,t=1e4){return mn((n,r)=>{let i=L(e),a,o=()=>setTimeout(()=>{i=L(e),r()},L(t));return mu(()=>{clearTimeout(a)}),{get(){return n(),i},set(e){i=e,r(),clearTimeout(a),a=o()}}})}function ku(e,t){Eu(t)&&ki(e,t)}function Au(e,t,n){return H(e,t,{...n,immediate:!0})}var ju=bu?window:void 0;bu&&window.document,bu&&window.navigator,bu&&window.location;function Mu(e){let t=L(e);return t?.$el??t}function Nu(...e){let t=[],n=()=>{t.forEach(e=>e()),t.length=0},r=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),i=Z(()=>{let t=Du(L(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0}),a=Au(()=>[i.value?.map(e=>Mu(e))??[ju].filter(e=>e!=null),Du(L(i.value?e[1]:e[0])),Du(I(i.value?e[2]:e[1])),L(i.value?e[3]:e[2])],([e,i,a,o])=>{if(n(),!e?.length||!i?.length||!a?.length)return;let s=Cu(o)?{...o}:o;t.push(...e.flatMap(e=>i.flatMap(t=>a.map(n=>r(e,t,n,s)))))},{flush:`post`});return mu(n),()=>{a(),n()}}function Pu(){let e=sn(!1),t=X();return t&&Ei(()=>{e.value=!0},t),e}function Fu(e){let t=Pu();return Z(()=>(t.value,!!e()))}function Iu(e){return typeof e==`function`?e:typeof e==`string`?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Lu(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]==`object`?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);let{target:i=ju,eventName:a=`keydown`,passive:o=!1,dedupe:s=!1}=r,c=Iu(t);return Nu(i,a,e=>{e.repeat&&L(s)||c(e)&&n(e)},o)}function Ru(e){return JSON.parse(JSON.stringify(e))}function zu(e,t,n={}){let{window:r=ju,...i}=n,a,o=Fu(()=>r&&`ResizeObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=H(Z(()=>{let t=L(e);return Array.isArray(t)?t.map(e=>Mu(e)):[Mu(t)]}),e=>{if(s(),o.value&&r){a=new ResizeObserver(t);for(let t of e)t&&a.observe(t,i)}},{immediate:!0,flush:`post`}),l=()=>{s(),c()};return mu(l),{isSupported:o,stop:l}}function Bu(e,t,n,r={}){let{clone:i=!1,passive:a=!1,eventName:o,deep:s=!1,defaultValue:c,shouldEmit:l}=r,u=X(),d=n||u?.emit||(u?.$emit)?.bind(u)||(u?.proxy?.$emit)?.bind(u?.proxy),f=o;t||=`modelValue`,f||=`update:${t.toString()}`;let p=e=>i?typeof i==`function`?i(e):Ru(e):e,m=()=>xu(e[t])?p(e[t]):c,h=e=>{l?l(e)&&d(f,e):d(f,e)};if(a){let n=F(m()),r=!1;return H(()=>e[t],e=>{r||(r=!0,n.value=p(e),R(()=>r=!1))}),H(n,n=>{!r&&(n!==e[t]||s)&&h(n)},{deep:s}),n}else return Z({get(){return m()},set(e){h(e)}})}function Vu(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function Hu(e,t,n=`.`,r){if(!Vu(t))return Hu(e,{},n,r);let i=Object.assign({},t);for(let t in e){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(Array.isArray(a)&&Array.isArray(i[t])?i[t]=[...a,...i[t]]:Vu(a)&&Vu(i[t])?i[t]=Hu(a,i[t],(n?`${n}.`:``)+t.toString(),r):i[t]=a))}return i}function Uu(e){return(...t)=>t.reduce((t,n)=>Hu(t,n,``,e),{})}var Wu=Uu(),Gu=gu(()=>{let e=F(new Map),t=F(),n=Z(()=>{for(let t of e.value.values())if(t)return!0;return!1}),r=du({scrollBody:F(!0)}),i=null,a=()=>{document.body.style.paddingRight=``,document.body.style.marginRight=``,document.body.style.pointerEvents=``,document.documentElement.style.removeProperty(`--scrollbar-width`),document.body.style.overflow=t.value??``,wu&&i?.(),t.value=void 0};return H(n,(e,n)=>{if(!bu)return;if(!e){n&&a();return}t.value===void 0&&(t.value=document.body.style.overflow);let o=window.innerWidth-document.documentElement.clientWidth,s={padding:o,margin:0},c=r.scrollBody?.value?typeof r.scrollBody.value==`object`?Wu({padding:r.scrollBody.value.padding===!0?o:r.scrollBody.value.padding,margin:r.scrollBody.value.margin===!0?o:r.scrollBody.value.margin},s):s:{padding:0,margin:0};o>0&&(document.body.style.paddingRight=typeof c.padding==`number`?`${c.padding}px`:String(c.padding),document.body.style.marginRight=typeof c.margin==`number`?`${c.margin}px`:String(c.margin),document.documentElement.style.setProperty(`--scrollbar-width`,`${o}px`),document.body.style.overflow=`hidden`),wu&&(i=Nu(document,`touchmove`,e=>Ju(e),{passive:!1})),R(()=>{document.body.style.pointerEvents=`none`,document.body.style.overflow=`hidden`})},{immediate:!0,flush:`sync`}),e});function Ku(e){let t=Math.random().toString(36).substring(2,7),n=Gu();n.value.set(t,e??!1);let r=Z({get:()=>n.value.get(t)??!1,set:e=>n.value.set(t,e)});return ku(()=>{n.value.delete(t)}),r}function qu(e){let t=window.getComputedStyle(e);if(t.overflowX===`scroll`||t.overflowY===`scroll`||t.overflowX===`auto`&&e.clientWidth1?!0:(t.preventDefault&&t.cancelable&&t.preventDefault(),!1)}function Yu(e){let t=du({dir:F(`ltr`)});return Z(()=>e?.value||t.dir?.value||`ltr`)}function Xu(e){let t=X(),n=t?.type.emits,r={};return n?.length||console.warn(`No emitted event found. Please check component: ${t?.type.__name}`),n?.forEach(t=>{r[re(k(t))]=(...n)=>e(t,...n)}),r}var Zu=0;function Qu(){La(e=>{if(!bu)return;let t=document.querySelectorAll(`[data-reka-focus-guard]`);document.body.insertAdjacentElement(`afterbegin`,t[0]??$u()),document.body.insertAdjacentElement(`beforeend`,t[1]??$u()),Zu++,e(()=>{Zu===1&&document.querySelectorAll(`[data-reka-focus-guard]`).forEach(e=>e.remove()),Zu--})})}function $u(){let e=document.createElement(`span`);return e.setAttribute(`data-reka-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}function ed(e){return Z(()=>L(e)?!!Mu(e)?.closest(`form`):!0)}function Q(){let e=X(),t=F(),n=Z(()=>[`#text`,`#comment`].includes(t.value?.$el.nodeName)?t.value?.$el.nextElementSibling:Mu(t)),r=Object.assign({},e.exposed),i={};for(let t in e.props)Object.defineProperty(i,t,{enumerable:!0,configurable:!0,get:()=>e.props[t]});if(Object.keys(r).length>0)for(let e in r)Object.defineProperty(i,e,{enumerable:!0,configurable:!0,get:()=>r[e]});Object.defineProperty(i,`$el`,{enumerable:!0,configurable:!0,get:()=>e.vnode.el}),e.exposed=i;function a(n){t.value=n,n&&(Object.defineProperty(i,`$el`,{enumerable:!0,configurable:!0,get:()=>n instanceof Element?n:n.$el}),e.exposed=i)}return{forwardRef:a,currentRef:t,currentElement:n}}function td(e){let t=X(),n=Object.keys(t?.type.props??{}).reduce((e,n)=>{let r=(t?.type.props[n]).default;return r!==void 0&&(e[n]=r),e},{}),r=vn(e);return Z(()=>{let e={},i=t?.vnode.props??{};return Object.keys(i).forEach(t=>{e[k(t)]=i[t]}),Object.keys({...n,...e}).reduce((e,t)=>(r.value[t]!==void 0&&(e[t]=r.value[t]),e),{})})}function nd(e,t){let n=td(e),r=t?Xu(t):{};return Z(()=>({...n.value,...r}))}var rd=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},id=new WeakMap,ad=new WeakMap,od={},sd=0,cd=function(e){return e&&(e.host||cd(e.parentNode))},ld=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=cd(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},ud=function(e,t,n,r){var i=ld(t,Array.isArray(e)?e:[e]);od[n]||(od[n]=new WeakMap);var a=od[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(id.get(e)||0)+1,l=(a.get(e)||0)+1;id.set(e,c),a.set(e,l),o.push(e),c===1&&i&&ad.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),sd++,function(){o.forEach(function(e){var t=id.get(e)-1,i=a.get(e)-1;id.set(e,t),a.set(e,i),t||(ad.has(e)||e.removeAttribute(r),ad.delete(e)),i||e.removeAttribute(n)}),sd--,sd||(id=new WeakMap,id=new WeakMap,ad=new WeakMap,od={})}},dd=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||rd(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),ud(r,i,n,`aria-hidden`)):function(){return null}};function fd(e){let t;H(()=>Mu(e),e=>{e?t=dd(e):t&&t()}),Ai(()=>{t&&t()})}var pd=0;function md(e,t=`reka`){if(e)return e;if(`useId`in eu)return`${t}-${Vr?.()}`;let n=du({useId:void 0});return n.useId?`${t}-${n.useId()}`:`${t}-${++pd}`}function hd(e){let t=F(),n=Z(()=>t.value?.width??0),r=Z(()=>t.value?.height??0);return Ei(()=>{let n=Mu(e);if(n){t.value={width:n.offsetWidth,height:n.offsetHeight};let e=new ResizeObserver(e=>{if(!Array.isArray(e)||!e.length)return;let r=e[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=n.offsetWidth,a=n.offsetHeight;t.value={width:i,height:a}});return e.observe(n,{box:`border-box`}),()=>e.unobserve(n)}else t.value=void 0}),{width:n,height:r}}function gd(e,t){let n=F(e);function r(e){return t[n.value][e]??n.value}return{state:n,dispatch:e=>{n.value=r(e)}}}function _d(e){let t=Ou(``,1e3);return{search:t,handleTypeaheadSearch:(n,r)=>{if(t.value+=n,e)e(n);else{let e=su(),n=r.map(e=>({...e,textValue:e.value?.textValue??e.ref.textContent?.trim()??``})),i=n.find(t=>t.ref===e),a=yd(n.map(e=>e.textValue),t.value,i?.textValue),o=n.find(e=>e.textValue===a);return o&&o.ref.focus(),o?.ref}},resetTypeahead:()=>{t.value=``}}}function vd(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function yd(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=vd(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function bd(e,t){let n=F({}),r=F(`none`),i=F(e),a=e.value?`mounted`:`unmounted`,o,s=t.value?.ownerDocument.defaultView??ju,{state:c,dispatch:l}=gd(a,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}}),u=e=>{if(bu){let n=new CustomEvent(e,{bubbles:!1,cancelable:!1});t.value?.dispatchEvent(n)}};H(e,async(e,i)=>{let a=i!==e;if(await R(),a){let a=r.value,o=xd(t.value);e?(l(`MOUNT`),u(`enter`),o===`none`&&u(`after-enter`)):o===`none`||o===`undefined`||n.value?.display===`none`?(l(`UNMOUNT`),u(`leave`),u(`after-leave`)):i&&a!==o?(l(`ANIMATION_OUT`),u(`leave`)):(l(`UNMOUNT`),u(`after-leave`))}},{immediate:!0});let d=e=>{let n=xd(t.value),r=n.includes(CSS.escape(e.animationName)),a=c.value===`mounted`?`enter`:`leave`;if(e.target===t.value&&r&&(u(`after-${a}`),l(`ANIMATION_END`),!i.value)){let e=t.value.style.animationFillMode;t.value.style.animationFillMode=`forwards`,o=s?.setTimeout(()=>{t.value?.style.animationFillMode===`forwards`&&(t.value.style.animationFillMode=e)})}e.target===t.value&&n===`none`&&l(`ANIMATION_END`)},f=e=>{e.target===t.value&&(r.value=xd(t.value))},p=H(t,(e,t)=>{e?(n.value=getComputedStyle(e),e.addEventListener(`animationstart`,f),e.addEventListener(`animationcancel`,d),e.addEventListener(`animationend`,d)):(l(`ANIMATION_END`),o!==void 0&&s?.clearTimeout(o),t?.removeEventListener(`animationstart`,f),t?.removeEventListener(`animationcancel`,d),t?.removeEventListener(`animationend`,d))},{immediate:!0}),m=H(c,()=>{let e=xd(t.value);r.value=c.value===`mounted`?e:`none`});return Ai(()=>{p(),m()}),{isPresent:Z(()=>[`mounted`,`unmountSuspended`].includes(c.value))}}function xd(e){return e&&getComputedStyle(e).animationName||`none`}var Sd=B({name:`Presence`,props:{present:{type:Boolean,required:!0},forceMount:{type:Boolean}},slots:{},setup(e,{slots:t,expose:n}){let{present:r,forceMount:i}=hn(e),a=F(),{isPresent:o}=bd(r,a);n({present:o});let s=t.default({present:o.value});s=uu(s||[]);let c=X();if(s&&s?.length>1){let e=c?.parent?.type.name?`<${c.parent.type.name} />`:`component`;throw Error([`Detected an invalid children for \`${e}\` for \`Presence\` component.`,``,"Note: Presence works similarly to `v-if` directly, but it waits for animation/transition to finished before unmounting. So it expect only one direct child of valid VNode type.",`You can apply a few solutions:`,["Provide a single child element so that `presence` directive attach correctly.",`Ensure the first child is an actual element instead of a raw text node or comment node.`].map(e=>` - ${e}`).join(` -`)].join(` -`))}return()=>i.value||r.value||o.value?Rs(t.default({present:o.value})[0],{ref:e=>{let t=Mu(e);return t?.hasAttribute===void 0||(t?.hasAttribute(`data-reka-popper-content-wrapper`)?a.value=t.firstElementChild:a.value=t),t}}):null}}),Cd=B({name:`PrimitiveSlot`,inheritAttrs:!1,setup(e,{attrs:t,slots:n}){return()=>{if(!n.default)return null;let e=uu(n.default()),r=e.findIndex(e=>e.type!==G);if(r===-1)return e;let i=e[r];delete i.props?.ref;let a=i.props?Y(t,i.props):t,o=ss({...i,props:{}},a);return e.length===1?o:(e[r]=o,e)}}}),wd=[`area`,`img`,`input`],$=B({name:`Primitive`,inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},as:{type:[String,Object],default:`div`}},setup(e,{attrs:t,slots:n}){let r=e.asChild?`template`:e.as;return typeof r==`string`&&wd.includes(r)?()=>Rs(r,t):r===`template`?()=>Rs(Cd,t,{default:n.default}):()=>Rs(e.as,t,{default:n.default})}});function Td(){let e=F();return{primitiveElement:e,currentElement:Z(()=>[`#text`,`#comment`].includes(e.value?.$el.nodeName)?e.value?.$el.nextElementSibling:Mu(e))}}var[Ed,Dd]=ou(`DialogRoot`),Od=B({inheritAttrs:!1,__name:`DialogRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=Bu(n,`open`,t,{defaultValue:n.defaultOpen,passive:n.open===void 0}),i=F(),a=F(),{modal:o}=hn(n);return Dd({open:r,modal:o,openModal:()=>{r.value=!0},onOpenChange:e=>{r.value=e},onOpenToggle:()=>{r.value=!r.value},contentId:``,titleId:``,descriptionId:``,triggerElement:i,contentElement:a}),(e,t)=>V(e.$slots,`default`,{open:I(r),close:()=>r.value=!1})}}),kd=B({__name:`DialogClose`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;Q();let n=Ed();return(e,r)=>(K(),q(I($),Y(t,{type:e.as===`button`?`button`:void 0,onClick:r[0]||=e=>I(n).onOpenChange(!1)}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16,[`type`]))}}),Ad=`dismissableLayer.pointerDownOutside`,jd=`dismissableLayer.focusOutside`;function Md(e,t){let n=t.closest(`[data-dismissable-layer]`),r=e.dataset.dismissableLayer===``?e:e.querySelector(`[data-dismissable-layer]`),i=Array.from(e.ownerDocument.querySelectorAll(`[data-dismissable-layer]`));return!!(n&&(r===n||i.indexOf(r){});return La(o=>{if(!bu||!L(n))return;let s=async n=>{let o=n.target;if(!(!t?.value||!o)){if(Md(t.value,o)){i.value=!1;return}if(n.target&&!i.value){let t={originalEvent:n};function i(){cu(Ad,e,t)}n.pointerType===`touch`?(r.removeEventListener(`click`,a.value),a.value=i,r.addEventListener(`click`,a.value,{once:!0})):i()}else r.removeEventListener(`click`,a.value);i.value=!1}},c=window.setTimeout(()=>{r.addEventListener(`pointerdown`,s)},0);o(()=>{window.clearTimeout(c),r.removeEventListener(`pointerdown`,s),r.removeEventListener(`click`,a.value)})}),{onPointerDownCapture:()=>{L(n)&&(i.value=!0)}}}function Pd(e,t,n=!0){let r=t?.value?.ownerDocument??globalThis?.document,i=F(!1);return La(a=>{if(!bu||!L(n))return;let o=async n=>{if(!t?.value)return;await R(),await R();let r=n.target;!t.value||!r||Md(t.value,r)||n.target&&!i.value&&cu(jd,e,{originalEvent:n})};r.addEventListener(`focusin`,o),a(()=>r.removeEventListener(`focusin`,o))}),{onFocusCapture:()=>{L(n)&&(i.value=!0)},onBlurCapture:()=>{L(n)&&(i.value=!1)}}}var Fd=Jt({layersRoot:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Id=B({__name:`DismissableLayer`,props:{disableOutsidePointerEvents:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`dismiss`],setup(e,{emit:t}){let n=e,r=t,{forwardRef:i,currentElement:a}=Q(),o=Z(()=>a.value?.ownerDocument??globalThis.document),s=Z(()=>Fd.layersRoot),c=Z(()=>a.value?Array.from(s.value).indexOf(a.value):-1),l=Z(()=>Fd.layersWithOutsidePointerEventsDisabled.size>0),u=Z(()=>{let e=Array.from(s.value),[t]=[...Fd.layersWithOutsidePointerEventsDisabled].slice(-1),n=e.indexOf(t);return c.value>=n}),d=Nd(async e=>{let t=[...Fd.branches].some(t=>t?.contains(e.target));!u.value||t||(r(`pointerDownOutside`,e),r(`interactOutside`,e),await R(),e.defaultPrevented||r(`dismiss`))},a),f=Pd(e=>{[...Fd.branches].some(t=>t?.contains(e.target))||(r(`focusOutside`,e),r(`interactOutside`,e),e.defaultPrevented||r(`dismiss`))},a);Lu(`Escape`,e=>{c.value===s.value.size-1&&(r(`escapeKeyDown`,e),e.defaultPrevented||r(`dismiss`))});let p;return La(e=>{a.value&&(n.disableOutsidePointerEvents&&(Fd.layersWithOutsidePointerEventsDisabled.size===0&&(p=o.value.body.style.pointerEvents,o.value.body.style.pointerEvents=`none`),Fd.layersWithOutsidePointerEventsDisabled.add(a.value)),s.value.add(a.value),e(()=>{n.disableOutsidePointerEvents&&Fd.layersWithOutsidePointerEventsDisabled.size===1&&(o.value.body.style.pointerEvents=p)}))}),La(e=>{e(()=>{a.value&&(s.value.delete(a.value),Fd.layersWithOutsidePointerEventsDisabled.delete(a.value))})}),(e,t)=>(K(),q(I($),{ref:I(i),"as-child":e.asChild,as:e.as,"data-dismissable-layer":``,style:de({pointerEvents:l.value?u.value?`auto`:`none`:void 0}),onFocusCapture:I(f).onFocusCapture,onBlurCapture:I(f).onBlurCapture,onPointerdownCapture:I(d).onPointerDownCapture},{default:z(()=>[V(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`style`,`onFocusCapture`,`onBlurCapture`,`onPointerdownCapture`]))}}),Ld=hu(()=>F([]));function Rd(){let e=Ld();return{add(t){let n=e.value[0];t!==n&&n?.pause(),e.value=zd(e.value,t),e.value.unshift(t)},remove(t){e.value=zd(e.value,t),e.value[0]?.resume()}}}function zd(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function Bd(e){return e.filter(e=>e.tagName!==`A`)}var Vd=`focusScope.autoFocusOnMount`,Hd=`focusScope.autoFocusOnUnmount`,Ud={bubbles:!1,cancelable:!0};function Wd(e,{select:t=!1}={}){let n=su();for(let r of e)if(Xd(r,{select:t}),su()!==n)return!0}function Gd(e){let t=Kd(e);return[qd(t,e),qd(t.reverse(),e)]}function Kd(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function qd(e,t){for(let n of e)if(!Jd(n,{upTo:t}))return n}function Jd(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function Yd(e){return e instanceof HTMLInputElement&&`select`in e}function Xd(e,{select:t=!1}={}){if(e&&e.focus){let n=su();e.focus({preventScroll:!0}),e!==n&&Yd(e)&&t&&e.select()}}var Zd=B({__name:`FocusScope`,props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`mountAutoFocus`,`unmountAutoFocus`],setup(e,{emit:t}){let n=e,r=t,{currentRef:i,currentElement:a}=Q(),o=F(null),s=Rd(),c=Jt({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});La(e=>{if(!bu)return;let t=a.value;if(!n.trapped)return;function r(e){if(c.paused||!t)return;let n=e.target;t.contains(n)?o.value=n:Xd(o.value,{select:!0})}function i(e){if(c.paused||!t)return;let n=e.relatedTarget;n!==null&&(t.contains(n)||Xd(o.value,{select:!0}))}function s(e){t.contains(o.value)||Xd(t)}document.addEventListener(`focusin`,r),document.addEventListener(`focusout`,i);let l=new MutationObserver(s);t&&l.observe(t,{childList:!0,subtree:!0}),e(()=>{document.removeEventListener(`focusin`,r),document.removeEventListener(`focusout`,i),l.disconnect()})}),La(async e=>{let t=a.value;if(await R(),!t)return;s.add(c);let n=su();if(!t.contains(n)){let e=new CustomEvent(Vd,Ud);t.addEventListener(Vd,e=>r(`mountAutoFocus`,e)),t.dispatchEvent(e),e.defaultPrevented||(Wd(Bd(Kd(t)),{select:!0}),su()===n&&Xd(t))}e(()=>{t.removeEventListener(Vd,e=>r(`mountAutoFocus`,e));let e=new CustomEvent(Hd,Ud),i=e=>{r(`unmountAutoFocus`,e)};t.addEventListener(Hd,i),t.dispatchEvent(e),setTimeout(()=>{e.defaultPrevented||Xd(n??document.body,{select:!0}),t.removeEventListener(Hd,i),s.remove(c)},0)})});function l(e){if(!n.loop&&!n.trapped||c.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,r=su();if(t&&r){let t=e.currentTarget,[i,a]=Gd(t);i&&a?!e.shiftKey&&r===a?(e.preventDefault(),n.loop&&Xd(i,{select:!0})):e.shiftKey&&r===i&&(e.preventDefault(),n.loop&&Xd(a,{select:!0})):r===t&&e.preventDefault()}}return(e,t)=>(K(),q(I($),{ref_key:`currentRef`,ref:i,tabindex:`-1`,"as-child":e.asChild,as:e.as,onKeydown:l},{default:z(()=>[V(e.$slots,`default`)]),_:3},8,[`as-child`,`as`]))}}),Qd=[`Enter`,` `],$d=[`ArrowDown`,`PageUp`,`Home`],ef=[`ArrowUp`,`PageDown`,`End`];[...$d,...ef],[...Qd],[...Qd];function tf(e){return e?`open`:`closed`}function nf(e){let t=su();for(let n of e)if(n===t||(n.focus(),su()!==t))return}var rf=B({__name:`DialogContentImpl`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=Ed(),{forwardRef:a,currentElement:o}=Q();return i.titleId||=md(void 0,`reka-dialog-title`),i.descriptionId||=md(void 0,`reka-dialog-description`),Ei(()=>{i.contentElement=o,su()!==document.body&&(i.triggerElement.value=su())}),(e,t)=>(K(),q(I(Zd),{"as-child":``,loop:``,trapped:n.trapFocus,onMountAutoFocus:t[5]||=e=>r(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>r(`closeAutoFocus`,e)},{default:z(()=>[J(I(Id),Y({id:I(i).contentId,ref:I(a),as:e.as,"as-child":e.asChild,"disable-outside-pointer-events":e.disableOutsidePointerEvents,role:`dialog`,"aria-describedby":I(i).descriptionId,"aria-labelledby":I(i).titleId,"data-state":I(tf)(I(i).open.value)},e.$attrs,{onDismiss:t[0]||=e=>I(i).onOpenChange(!1),onEscapeKeyDown:t[1]||=e=>r(`escapeKeyDown`,e),onFocusOutside:t[2]||=e=>r(`focusOutside`,e),onInteractOutside:t[3]||=e=>r(`interactOutside`,e),onPointerDownOutside:t[4]||=e=>r(`pointerDownOutside`,e)}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16,[`id`,`as`,`as-child`,`disable-outside-pointer-events`,`aria-describedby`,`aria-labelledby`,`data-state`])]),_:3},8,[`trapped`]))}}),af=B({__name:`DialogContentModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=Ed(),a=Xu(r),{forwardRef:o,currentElement:s}=Q();return fd(s),(e,t)=>(K(),q(rf,Y({...n,...I(a)},{ref:I(o),"trap-focus":I(i).open.value,"disable-outside-pointer-events":!0,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(e.preventDefault(),I(i).triggerElement.value?.focus())},onPointerDownOutside:t[1]||=e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()},onFocusOutside:t[2]||=e=>{e.preventDefault()}}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),of=B({__name:`DialogContentNonModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=Xu(t);Q();let i=Ed(),a=F(!1),o=F(!1);return(e,t)=>(K(),q(rf,Y({...n,...I(r)},{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(a.value||I(i).triggerElement.value?.focus(),e.preventDefault()),a.value=!1,o.value=!1},onInteractOutside:t[1]||=e=>{e.defaultPrevented||(a.value=!0,e.detail.originalEvent.type===`pointerdown`&&(o.value=!0));let t=e.target;I(i).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&o.value&&e.preventDefault()}}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),sf=B({__name:`DialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=Ed(),a=Xu(r),{forwardRef:o}=Q();return(e,t)=>(K(),q(I(Sd),{present:e.forceMount||I(i).open.value},{default:z(()=>[I(i).modal.value?(K(),q(af,Y({key:0,ref:I(o)},{...n,...I(a),...e.$attrs}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16)):(K(),q(of,Y({key:1,ref:I(o)},{...n,...I(a),...e.$attrs}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),cf=B({__name:`DialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;Q();let n=Ed();return(e,r)=>(K(),q(I($),Y(t,{id:I(n).descriptionId}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16,[`id`]))}}),lf=B({__name:`DialogOverlayImpl`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=Ed();return Ku(!0),Q(),(e,n)=>(K(),q(I($),{as:e.as,"as-child":e.asChild,"data-state":I(t).open.value?`open`:`closed`,style:{"pointer-events":`auto`}},{default:z(()=>[V(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`]))}}),uf=B({__name:`DialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=Ed(),{forwardRef:n}=Q();return(e,r)=>I(t)?.modal.value?(K(),q(I(Sd),{key:0,present:e.forceMount||I(t).open.value},{default:z(()=>[J(lf,Y(e.$attrs,{ref:I(n),as:e.as,"as-child":e.asChild}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16,[`as`,`as-child`])]),_:3},8,[`present`])):us(`v-if`,!0)}}),df=B({__name:`Teleport`,props:{to:{type:null,required:!1,default:`body`},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=Pu();return(e,n)=>I(t)||e.forceMount?(K(),q(Cr,{key:0,to:e.to,disabled:e.disabled,defer:e.defer},[V(e.$slots,`default`)],8,[`to`,`disabled`,`defer`])):us(`v-if`,!0)}}),ff=B({__name:`DialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(K(),q(I(df),_e(os(t)),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),pf=B({__name:`DialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e,n=Ed();return Q(),(e,r)=>(K(),q(I($),Y(t,{id:I(n).titleId}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16,[`id`]))}}),mf=B({__name:`AlertDialogAction`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;return Q(),(e,n)=>(K(),q(I(kd),_e(os(t)),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),[hf,gf]=ou(`AlertDialogContent`),_f=B({__name:`AlertDialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=Xu(t);Q();let i=F();return gf({onCancelElementChange:e=>{i.value=e}}),(e,t)=>(K(),q(I(sf),Y({...n,...I(r)},{role:`alertdialog`,onPointerDownOutside:t[0]||=Rl(()=>{},[`prevent`]),onInteractOutside:t[1]||=Rl(()=>{},[`prevent`]),onOpenAutoFocus:t[2]||=()=>{R(()=>{i.value?.focus({preventScroll:!0})})}}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),vf=B({__name:`AlertDialogCancel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=hf(),{forwardRef:r,currentElement:i}=Q();return Ei(()=>{n.onCancelElementChange(i.value)}),(e,n)=>(K(),q(I(kd),Y(t,{ref:I(r)}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),yf=B({__name:`AlertDialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;return Q(),(e,n)=>(K(),q(I(cf),_e(os(t)),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),bf=B({__name:`AlertDialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return Q(),(e,n)=>(K(),q(I(uf),_e(os(t)),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),xf=B({__name:`AlertDialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(K(),q(I(df),_e(os(t)),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),Sf=B({__name:`AlertDialogRoot`,props:{open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1}},emits:[`update:open`],setup(e,{emit:t}){let n=nd(e,t);return Q(),(e,t)=>(K(),q(I(Od),Y(I(n),{modal:!0}),{default:z(t=>[V(e.$slots,`default`,_e(os(t)))]),_:3},16))}}),Cf=B({__name:`AlertDialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e;return Q(),(e,n)=>(K(),q(I(pf),_e(os(t)),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),wf=`data-reka-collection-item`;function Tf(e={}){let{key:t=``,isProvider:n=!1}=e,r=`${t}CollectionProvider`,i;if(n){let e=F(new Map);i={collectionRef:F(),itemMap:e},Ma(r,i)}else i=Na(r);let a=(e=!1)=>{let t=i.collectionRef.value;if(!t)return[];let n=Array.from(t.querySelectorAll(`[${wf}]`)),r=Array.from(i.itemMap.value.values()).sort((e,t)=>n.indexOf(e.ref)-n.indexOf(t.ref));return e?r:r.filter(e=>e.ref.dataset.disabled!==``)},o=B({name:`CollectionSlot`,setup(e,{slots:t}){let{primitiveElement:n,currentElement:r}=Td();return H(r,()=>{i.collectionRef.value=r.value}),()=>Rs(Cd,{ref:n},t)}}),s=B({name:`CollectionItem`,inheritAttrs:!1,props:{value:{validator:()=>!0}},setup(e,{slots:t,attrs:n}){let{primitiveElement:r,currentElement:a}=Td();return La(t=>{if(a.value){let n=rn(a.value);i.itemMap.value.set(n,{ref:a.value,value:e.value}),t(()=>i.itemMap.value.delete(n))}}),()=>Rs(Cd,{...n,[wf]:``,ref:r},t)}});return{getItems:a,reactiveItems:Z(()=>Array.from(i.itemMap.value.values())),itemMapSize:Z(()=>i.itemMap.value.size),CollectionSlot:o,CollectionItem:s}}var Ef=B({__name:`VisuallyHidden`,props:{feature:{type:String,required:!1,default:`focusable`},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return(e,t)=>(K(),q(I($),{as:e.as,"as-child":e.asChild,"aria-hidden":e.feature===`focusable`?`true`:void 0,"data-hidden":e.feature===`fully-hidden`?``:void 0,tabindex:e.feature===`fully-hidden`?`-1`:void 0,style:{position:`absolute`,border:0,width:`1px`,height:`1px`,padding:0,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,clipPath:`inset(50%)`,whiteSpace:`nowrap`,wordWrap:`normal`,top:`-1px`,left:`-1px`}},{default:z(()=>[V(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`aria-hidden`,`data-hidden`,`tabindex`]))}}),[Df,Of]=ou(`PopperRoot`),kf=B({inheritAttrs:!1,__name:`PopperRoot`,setup(e){let t=F();return Of({anchor:t,onAnchorChange:e=>t.value=e}),(e,t)=>V(e.$slots,`default`)}}),Af=B({__name:`PopperAnchor`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:n,currentElement:r}=Q(),i=Df();return Ra(()=>{i.onAnchorChange(t.reference??r.value)}),(e,t)=>(K(),q(I($),{ref:I(n),as:e.as,"as-child":e.asChild},{default:z(()=>[V(e.$slots,`default`)]),_:3},8,[`as`,`as-child`]))}});function jf(e){return e!==null}function Mf(e){return{name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=Nf(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}}}function Nf(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var Pf=[`top`,`right`,`bottom`,`left`],Ff=Math.min,If=Math.max,Lf=Math.round,Rf=Math.floor,zf=e=>({x:e,y:e}),Bf={left:`right`,right:`left`,bottom:`top`,top:`bottom`},Vf={start:`end`,end:`start`};function Hf(e,t,n){return If(e,Ff(t,n))}function Uf(e,t){return typeof e==`function`?e(t):e}function Wf(e){return e.split(`-`)[0]}function Gf(e){return e.split(`-`)[1]}function Kf(e){return e===`x`?`y`:`x`}function qf(e){return e===`y`?`height`:`width`}var Jf=new Set([`top`,`bottom`]);function Yf(e){return Jf.has(Wf(e))?`y`:`x`}function Xf(e){return Kf(Yf(e))}function Zf(e,t,n){n===void 0&&(n=!1);let r=Gf(e),i=Xf(e),a=qf(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=op(o)),[o,op(o)]}function Qf(e){let t=op(e);return[$f(e),t,$f(t)]}function $f(e){return e.replace(/start|end/g,e=>Vf[e])}var ep=[`left`,`right`],tp=[`right`,`left`],np=[`top`,`bottom`],rp=[`bottom`,`top`];function ip(e,t,n){switch(e){case`top`:case`bottom`:return n?t?tp:ep:t?ep:tp;case`left`:case`right`:return t?np:rp;default:return[]}}function ap(e,t,n,r){let i=Gf(e),a=ip(Wf(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map($f)))),a}function op(e){return e.replace(/left|right|bottom|top/g,e=>Bf[e])}function sp(e){return{top:0,right:0,bottom:0,left:0,...e}}function cp(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:sp(e)}function lp(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function up(e,t,n){let{reference:r,floating:i}=e,a=Yf(t),o=Xf(t),s=qf(o),c=Wf(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(Gf(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}var dp=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=a.filter(Boolean),c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=up(l,r,c),f=r,p={},m=0;for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=Uf(e,t)||{};if(l==null)return{};let d=cp(u),f={x:n,y:r},p=Xf(i),m=qf(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=Ff(d[_],T),D=Ff(d[v],T),O=E,ee=C-h[m]-D,k=C/2-h[m]/2+w,te=Hf(O,k,ee),A=!c.arrow&&Gf(i)!=null&&k!==te&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==Yf(t))||T.every(e=>Yf(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=Yf(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function hp(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function gp(e){return Pf.some(t=>e[t]>=0)}var _p=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n}=t,{strategy:r=`referenceHidden`,...i}=Uf(e,t);switch(r){case`referenceHidden`:{let e=hp(await fp(t,{...i,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:gp(e)}}}case`escaped`:{let e=hp(await fp(t,{...i,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:gp(e)}}}default:return{}}}}},vp=new Set([`left`,`top`]);async function yp(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=Wf(n),s=Gf(n),c=Yf(n)===`y`,l=vp.has(o)?-1:1,u=a&&c?-1:1,d=Uf(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var bp=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await yp(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},xp=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i}=t,{mainAxis:a=!0,crossAxis:o=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=Uf(e,t),l={x:n,y:r},u=await fp(t,c),d=Yf(Wf(i)),f=Kf(d),p=l[f],m=l[d];if(a){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=p+u[e],r=p-u[t];p=Hf(n,p,r)}if(o){let e=d===`y`?`top`:`left`,t=d===`y`?`bottom`:`right`,n=m+u[e],r=m-u[t];m=Hf(n,m,r)}let h=s.fn({...t,[f]:p,[d]:m});return{...h,data:{x:h.x-n,y:h.y-r,enabled:{[f]:a,[d]:o}}}}}},Sp=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=Uf(e,t),u={x:n,y:r},d=Yf(i),f=Kf(d),p=u[f],m=u[d],h=Uf(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=vp.has(Wf(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},Cp=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=Uf(e,t),u=await fp(t,l),d=Wf(i),f=Gf(i),p=Yf(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=Ff(h-u[g],v),x=Ff(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=If(u.left,0),t=If(u.right,0),n=If(u.top,0),r=If(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:If(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:If(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function wp(){return typeof window<`u`}function Tp(e){return Op(e)?(e.nodeName||``).toLowerCase():`#document`}function Ep(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Dp(e){return((Op(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Op(e){return wp()?e instanceof Node||e instanceof Ep(e).Node:!1}function kp(e){return wp()?e instanceof Element||e instanceof Ep(e).Element:!1}function Ap(e){return wp()?e instanceof HTMLElement||e instanceof Ep(e).HTMLElement:!1}function jp(e){return!wp()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof Ep(e).ShadowRoot}var Mp=new Set([`inline`,`contents`]);function Np(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=Kp(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!Mp.has(i)}var Pp=new Set([`table`,`td`,`th`]);function Fp(e){return Pp.has(Tp(e))}var Ip=[`:popover-open`,`:modal`];function Lp(e){return Ip.some(t=>{try{return e.matches(t)}catch{return!1}})}var Rp=[`transform`,`translate`,`scale`,`rotate`,`perspective`],zp=[`transform`,`translate`,`scale`,`rotate`,`perspective`,`filter`],Bp=[`paint`,`layout`,`strict`,`content`];function Vp(e){let t=Up(),n=kp(e)?Kp(e):e;return Rp.some(e=>n[e]?n[e]!==`none`:!1)||(n.containerType?n.containerType!==`normal`:!1)||!t&&(n.backdropFilter?n.backdropFilter!==`none`:!1)||!t&&(n.filter?n.filter!==`none`:!1)||zp.some(e=>(n.willChange||``).includes(e))||Bp.some(e=>(n.contain||``).includes(e))}function Hp(e){let t=Jp(e);for(;Ap(t)&&!Gp(t);){if(Vp(t))return t;if(Lp(t))return null;t=Jp(t)}return null}function Up(){return typeof CSS>`u`||!CSS.supports?!1:CSS.supports(`-webkit-backdrop-filter`,`none`)}var Wp=new Set([`html`,`body`,`#document`]);function Gp(e){return Wp.has(Tp(e))}function Kp(e){return Ep(e).getComputedStyle(e)}function qp(e){return kp(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Jp(e){if(Tp(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||jp(e)&&e.host||Dp(e);return jp(t)?t.host:t}function Yp(e){let t=Jp(e);return Gp(t)?e.ownerDocument?e.ownerDocument.body:e.body:Ap(t)&&Np(t)?t:Yp(t)}function Xp(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Yp(e),i=r===e.ownerDocument?.body,a=Ep(r);if(i){let e=Zp(a);return t.concat(a,a.visualViewport||[],Np(r)?r:[],e&&n?Xp(e):[])}return t.concat(r,Xp(r,[],n))}function Zp(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Qp(e){let t=Kp(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=Ap(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=Lf(n)!==a||Lf(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function $p(e){return kp(e)?e:e.contextElement}function em(e){let t=$p(e);if(!Ap(t))return zf(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=Qp(t),o=(a?Lf(n.width):n.width)/r,s=(a?Lf(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var tm=zf(0);function nm(e){let t=Ep(e);return!Up()||!t.visualViewport?tm:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function rm(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Ep(e)?!1:t}function im(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=$p(e),o=zf(1);t&&(r?kp(r)&&(o=em(r)):o=em(e));let s=rm(a,n,r)?nm(a):zf(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=Ep(a),t=r&&kp(r)?Ep(r):r,n=e,i=Zp(n);for(;i&&r&&t!==n;){let e=em(i),t=i.getBoundingClientRect(),r=Kp(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=Ep(i),i=Zp(n)}}return lp({width:u,height:d,x:c,y:l})}function am(e,t){let n=qp(e).scrollLeft;return t?t.left+n:im(Dp(e)).left+n}function om(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-am(e,n),y:n.top+t.scrollTop}}function sm(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=Dp(r),s=t?Lp(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=zf(1),u=zf(0),d=Ap(r);if((d||!d&&!a)&&((Tp(r)!==`body`||Np(o))&&(c=qp(r)),Ap(r))){let e=im(r);l=em(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?om(o,c):zf(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function cm(e){return Array.from(e.getClientRects())}function lm(e){let t=Dp(e),n=qp(e),r=e.ownerDocument.body,i=If(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=If(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+am(e),s=-n.scrollTop;return Kp(r).direction===`rtl`&&(o+=If(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var um=25;function dm(e,t){let n=Ep(e),r=Dp(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=Up();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=am(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=um&&(a-=o)}else l<=um&&(a+=l);return{width:a,height:o,x:s,y:c}}var fm=new Set([`absolute`,`fixed`]);function pm(e,t){let n=im(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=Ap(e)?em(e):zf(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function mm(e,t,n){let r;if(t===`viewport`)r=dm(e,n);else if(t===`document`)r=lm(Dp(e));else if(kp(t))r=pm(t,n);else{let n=nm(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return lp(r)}function hm(e,t){let n=Jp(e);return n===t||!kp(n)||Gp(n)?!1:Kp(n).position===`fixed`||hm(n,t)}function gm(e,t){let n=t.get(e);if(n)return n;let r=Xp(e,[],!1).filter(e=>kp(e)&&Tp(e)!==`body`),i=null,a=Kp(e).position===`fixed`,o=a?Jp(e):e;for(;kp(o)&&!Gp(o);){let t=Kp(o),n=Vp(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&fm.has(i.position)||Np(o)&&!n&&hm(e,o))?r=r.filter(e=>e!==o):i=t,o=Jp(o)}return t.set(e,r),r}function _m(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Lp(t)?[]:gm(t,this._c):[].concat(n),r],o=a[0],s=a.reduce((e,n)=>{let r=mm(t,n,i);return e.top=If(r.top,e.top),e.right=Ff(r.right,e.right),e.bottom=Ff(r.bottom,e.bottom),e.left=If(r.left,e.left),e},mm(t,o,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function vm(e){let{width:t,height:n}=Qp(e);return{width:t,height:n}}function ym(e,t,n){let r=Ap(t),i=Dp(t),a=n===`fixed`,o=im(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=zf(0);function l(){c.x=am(i)}if(r||!r&&!a)if((Tp(t)!==`body`||Np(i))&&(s=qp(t)),r){let e=im(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&l();a&&!r&&i&&l();let u=i&&!r&&!a?om(i,s):zf(0);return{x:o.left+s.scrollLeft-c.x-u.x,y:o.top+s.scrollTop-c.y-u.y,width:o.width,height:o.height}}function bm(e){return Kp(e).position===`static`}function xm(e,t){if(!Ap(e)||Kp(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return Dp(e)===n&&(n=n.ownerDocument.body),n}function Sm(e,t){let n=Ep(e);if(Lp(e))return n;if(!Ap(e)){let t=Jp(e);for(;t&&!Gp(t);){if(kp(t)&&!bm(t))return t;t=Jp(t)}return n}let r=xm(e,t);for(;r&&Fp(r)&&bm(r);)r=xm(r,t);return r&&Gp(r)&&bm(r)&&!Vp(r)?n:r||Hp(e)||n}var Cm=async function(e){let t=this.getOffsetParent||Sm,n=this.getDimensions,r=await n(e.floating);return{reference:ym(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function wm(e){return Kp(e).direction===`rtl`}var Tm={convertOffsetParentRelativeRectToViewportRelativeRect:sm,getDocumentElement:Dp,getClippingRect:_m,getOffsetParent:Sm,getElementRects:Cm,getClientRects:cm,getDimensions:vm,getScale:em,isElement:kp,isRTL:wm};function Em(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Dm(e,t){let n=null,r,i=Dp(e);function a(){var e;clearTimeout(r),(e=n)==null||e.disconnect(),n=null}function o(s,c){s===void 0&&(s=!1),c===void 0&&(c=1),a();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(s||t(),!f||!p)return;let m=Rf(d),h=Rf(i.clientWidth-(u+f)),g=Rf(i.clientHeight-(d+p)),_=Rf(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:If(0,Ff(1,c))||1},y=!0;function b(t){let n=t[0].intersectionRatio;if(n!==c){if(!y)return o();n?o(!1,n):r=setTimeout(()=>{o(!1,1e-7)},1e3)}n===1&&!Em(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function Om(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=$p(e),u=i||a?[...l?Xp(l):[],...Xp(t)]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Dm(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),p.observe(t));let m,h=c?im(e):null;c&&g();function g(){let t=im(e);h&&!Em(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var km=bp,Am=xp,jm=mp,Mm=Cp,Nm=_p,Pm=pp,Fm=Sp,Im=(e,t,n)=>{let r=new Map,i={platform:Tm,...n},a={...i.platform,_c:r};return dp(e,t,{...i,platform:a})};function Lm(e){return typeof e==`object`&&!!e&&`$el`in e}function Rm(e){if(Lm(e)){let t=e.$el;return Op(t)&&Tp(t)===`#comment`?null:t}return e}function zm(e){return typeof e==`function`?e():I(e)}function Bm(e){return{name:`arrow`,options:e,fn(t){let n=Rm(zm(e.element));return n==null?{}:Pm({element:n,padding:e.padding}).fn(t)}}}function Vm(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Hm(e,t){let n=Vm(e);return Math.round(t*n)/n}function Um(e,t,n){n===void 0&&(n={});let r=n.whileElementsMounted,i=Z(()=>zm(n.open)??!0),a=Z(()=>zm(n.middleware)),o=Z(()=>zm(n.placement)??`bottom`),s=Z(()=>zm(n.strategy)??`absolute`),c=Z(()=>zm(n.transform)??!0),l=Z(()=>Rm(e.value)),u=Z(()=>Rm(t.value)),d=F(0),f=F(0),p=F(s.value),m=F(o.value),h=sn({}),g=F(!1),_=Z(()=>{let e={position:p.value,left:`0`,top:`0`};if(!u.value)return e;let t=Hm(u.value,d.value),n=Hm(u.value,f.value);return c.value?{...e,transform:`translate(`+t+`px, `+n+`px)`,...Vm(u.value)>=1.5&&{willChange:`transform`}}:{position:p.value,left:t+`px`,top:n+`px`}}),v;function y(){if(l.value==null||u.value==null)return;let e=i.value;Im(l.value,u.value,{middleware:a.value,placement:o.value,strategy:s.value}).then(t=>{d.value=t.x,f.value=t.y,p.value=t.strategy,m.value=t.placement,h.value=t.middlewareData,g.value=e!==!1})}function b(){typeof v==`function`&&(v(),v=void 0)}function x(){if(b(),r===void 0){y();return}if(l.value!=null&&u.value!=null){v=r(l.value,u.value,y);return}}function S(){i.value||(g.value=!1)}return H([a,o,s,i],y,{flush:`sync`}),H([l,u],x,{flush:`sync`}),H(i,S,{flush:`sync`}),Me()&&Ne(b),{x:Zt(d),y:Zt(f),strategy:Zt(p),placement:Zt(m),middlewareData:Zt(h),isPositioned:Zt(g),floatingStyles:_,update:y}}var Wm={side:`bottom`,sideOffset:0,sideFlip:!0,align:`center`,alignOffset:0,alignFlip:!0,arrowPadding:0,avoidCollisions:!0,collisionBoundary:()=>[],collisionPadding:0,sticky:`partial`,hideWhenDetached:!1,positionStrategy:`fixed`,updatePositionStrategy:`optimized`,prioritizePosition:!1},[Gm,Km]=ou(`PopperContent`),qm=B({inheritAttrs:!1,__name:`PopperContent`,props:la({side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},{...Wm}),emits:[`placed`],setup(e,{emit:t}){let n=e,r=t,i=Df(),{forwardRef:a,currentElement:o}=Q(),s=F(),c=F(),{width:l,height:u}=hd(c),d=Z(()=>n.side+(n.align===`center`?``:`-${n.align}`)),f=Z(()=>typeof n.collisionPadding==`number`?n.collisionPadding:{top:0,right:0,bottom:0,left:0,...n.collisionPadding}),p=Z(()=>Array.isArray(n.collisionBoundary)?n.collisionBoundary:[n.collisionBoundary]),m=Z(()=>({padding:f.value,boundary:p.value.filter(jf),altBoundary:p.value.length>0})),h=Z(()=>({mainAxis:n.sideFlip,crossAxis:n.alignFlip})),g=pu(()=>[km({mainAxis:n.sideOffset+u.value,alignmentAxis:n.alignOffset}),n.prioritizePosition&&n.avoidCollisions&&jm({...m.value,...h.value}),n.avoidCollisions&&Am({mainAxis:!0,crossAxis:!!n.prioritizePosition,limiter:n.sticky===`partial`?Fm():void 0,...m.value}),!n.prioritizePosition&&n.avoidCollisions&&jm({...m.value,...h.value}),Mm({...m.value,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--reka-popper-available-width`,`${n}px`),o.setProperty(`--reka-popper-available-height`,`${r}px`),o.setProperty(`--reka-popper-anchor-width`,`${i}px`),o.setProperty(`--reka-popper-anchor-height`,`${a}px`)}}),c.value&&Bm({element:c.value,padding:n.arrowPadding}),Mf({arrowWidth:l.value,arrowHeight:u.value}),n.hideWhenDetached&&Nm({strategy:`referenceHidden`,...m.value})]),{floatingStyles:_,placement:v,isPositioned:y,middlewareData:b,update:x}=Um(Z(()=>n.reference??i.anchor.value),s,{strategy:n.positionStrategy,placement:d,whileElementsMounted:(...e)=>Om(...e,{layoutShift:!n.disableUpdateOnLayoutShift,animationFrame:n.updatePositionStrategy===`always`}),middleware:g}),S=Z(()=>Nf(v.value)[0]),C=Z(()=>Nf(v.value)[1]);Ra(()=>{y.value&&r(`placed`)});let w=Z(()=>b.value.arrow?.centerOffset!==0),T=F(``);return La(()=>{o.value&&(T.value=window.getComputedStyle(o.value).zIndex)}),Km({placedSide:S,onArrowChange:e=>c.value=e,arrowX:Z(()=>b.value.arrow?.x??0),arrowY:Z(()=>b.value.arrow?.y??0),shouldHideArrow:w}),(e,t)=>(K(),Qo(`div`,{ref_key:`floatingRef`,ref:s,"data-reka-popper-content-wrapper":``,style:de({...I(_),transform:I(y)?I(_).transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:T.value,"--reka-popper-transform-origin":[I(b).transformOrigin?.x,I(b).transformOrigin?.y].join(` `),...I(b).hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}})},[J(I($),Y({ref:I(a)},e.$attrs,{"as-child":n.asChild,as:e.as,"data-side":S.value,"data-align":C.value,style:{animation:I(y)?void 0:`none`}}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16,[`as-child`,`as`,`data-side`,`data-align`,`style`])],4))}});function Jm(e){let t=du({nonce:F()});return Z(()=>e?.value||t.nonce?.value)}var[Ym,Xm]=ou(`PopoverRoot`),Zm=B({__name:`PopoverRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},modal:{type:Boolean,required:!1,default:!1}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=t,{modal:i}=hn(n),a=Bu(n,`open`,r,{defaultValue:n.defaultOpen,passive:n.open===void 0});return Xm({contentId:``,triggerId:``,modal:i,open:a,onOpenChange:e=>{a.value=e},onOpenToggle:()=>{a.value=!a.value},triggerElement:F(),hasCustomAnchor:F(!1)}),(e,t)=>(K(),q(I(kf),null,{default:z(()=>[V(e.$slots,`default`,{open:I(a),close:()=>a.value=!1})]),_:3}))}}),Qm=B({__name:`PopoverContentImpl`,props:{trapFocus:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=td(yu(n,`trapFocus`,`disableOutsidePointerEvents`)),{forwardRef:a}=Q(),o=Ym();return Qu(),(e,t)=>(K(),q(I(Zd),{"as-child":``,loop:``,trapped:e.trapFocus,onMountAutoFocus:t[5]||=e=>r(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>r(`closeAutoFocus`,e)},{default:z(()=>[J(I(Id),{"as-child":``,"disable-outside-pointer-events":e.disableOutsidePointerEvents,onPointerDownOutside:t[0]||=e=>r(`pointerDownOutside`,e),onInteractOutside:t[1]||=e=>r(`interactOutside`,e),onEscapeKeyDown:t[2]||=e=>r(`escapeKeyDown`,e),onFocusOutside:t[3]||=e=>r(`focusOutside`,e),onDismiss:t[4]||=e=>I(o).onOpenChange(!1)},{default:z(()=>[J(I(qm),Y(I(i),{id:I(o).contentId,ref:I(a),"data-state":I(o).open.value?`open`:`closed`,"aria-labelledby":I(o).triggerId,style:{"--reka-popover-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-popover-content-available-width":`var(--reka-popper-available-width)`,"--reka-popover-content-available-height":`var(--reka-popper-available-height)`,"--reka-popover-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-popover-trigger-height":`var(--reka-popper-anchor-height)`},role:`dialog`}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16,[`id`,`data-state`,`aria-labelledby`])]),_:3},8,[`disable-outside-pointer-events`])]),_:3},8,[`trapped`]))}}),$m=B({__name:`PopoverContentModal`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=Ym(),a=F(!1);Ku(!0);let o=nd(n,r),{forwardRef:s,currentElement:c}=Q();return fd(c),(e,t)=>(K(),q(Qm,Y(I(o),{ref:I(s),"trap-focus":I(i).open.value,"disable-outside-pointer-events":``,onCloseAutoFocus:t[0]||=Rl(e=>{r(`closeAutoFocus`,e),a.value||I(i).triggerElement.value?.focus()},[`prevent`]),onPointerDownOutside:t[1]||=e=>{r(`pointerDownOutside`,e);let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;a.value=t.button===2||n},onFocusOutside:t[2]||=Rl(()=>{},[`prevent`])}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),eh=B({__name:`PopoverContentNonModal`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=Ym(),a=F(!1),o=F(!1),s=nd(n,r);return(e,t)=>(K(),q(Qm,Y(I(s),{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{r(`closeAutoFocus`,e),e.defaultPrevented||(a.value||I(i).triggerElement.value?.focus(),e.preventDefault()),a.value=!1,o.value=!1},onInteractOutside:t[1]||=async e=>{r(`interactOutside`,e),e.defaultPrevented||(a.value=!0,e.detail.originalEvent.type===`pointerdown`&&(o.value=!0));let t=e.target;I(i).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&o.value&&e.preventDefault()}}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),th=B({__name:`PopoverContent`,props:{forceMount:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=Ym(),a=nd(n,r),{forwardRef:o}=Q();return i.contentId||=md(void 0,`reka-popover-content`),(e,t)=>(K(),q(I(Sd),{present:e.forceMount||I(i).open.value},{default:z(()=>[I(i).modal.value?(K(),q($m,Y({key:0},I(a),{ref:I(o)}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16)):(K(),q(eh,Y({key:1},I(a),{ref:I(o)}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),nh=B({__name:`PopoverPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(K(),q(I(df),_e(os(t)),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),rh=B({__name:`PopoverTrigger`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=Ym(),{forwardRef:r,currentElement:i}=Q();return n.triggerId||=md(void 0,`reka-popover-trigger`),Ei(()=>{n.triggerElement.value=i.value}),(e,i)=>(K(),q(zi(I(n).hasCustomAnchor.value?I($):I(Af)),{"as-child":``},{default:z(()=>[J(I($),{id:I(n).triggerId,ref:I(r),type:e.as===`button`?`button`:void 0,"aria-haspopup":`dialog`,"aria-expanded":I(n).open.value,"aria-controls":I(n).contentId,"data-state":I(n).open.value?`open`:`closed`,as:e.as,"as-child":t.asChild,onClick:I(n).onOpenToggle},{default:z(()=>[V(e.$slots,`default`)]),_:3},8,[`id`,`type`,`aria-expanded`,`aria-controls`,`data-state`,`as`,`as-child`,`onClick`])]),_:3}))}}),ih=B({__name:`Label`,props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`label`}},setup(e){let t=e;return Q(),(e,n)=>(K(),q(I($),Y(t,{onMousedown:n[0]||=e=>{!e.defaultPrevented&&e.detail>1&&e.preventDefault()}}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),ah=100,[oh,sh]=ou(`ProgressRoot`),ch=e=>typeof e==`number`;function lh(e,t){return lu(e)||ch(e)&&!Number.isNaN(e)&&e<=t&&e>=0?e:(console.error(`Invalid prop \`value\` of value \`${e}\` supplied to \`ProgressRoot\`. The \`value\` prop must be: - - a positive number - - less than the value passed to \`max\` (or ${ah} if no \`max\` prop is set) - - \`null\` or \`undefined\` if the progress is indeterminate. - -Defaulting to \`null\`.`),null)}function uh(e){return ch(e)&&!Number.isNaN(e)&&e>0?e:(console.error(`Invalid prop \`max\` of value \`${e}\` supplied to \`ProgressRoot\`. Only numbers greater than 0 are valid max values. Defaulting to \`${ah}\`.`),ah)}var dh=B({__name:`ProgressRoot`,props:{modelValue:{type:[Number,null],required:!1},max:{type:Number,required:!1,default:ah},getValueLabel:{type:Function,required:!1,default:(e,t)=>ch(e)?`${Math.round(e/t*ah)}%`:void 0},getValueText:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`,`update:max`],setup(e,{emit:t}){let n=e,r=t;Q();let i=Bu(n,`modelValue`,r,{passive:n.modelValue===void 0}),a=Bu(n,`max`,r,{passive:n.max===void 0});H(()=>i.value,async e=>{let t=lh(e,n.max);t!==e&&(await R(),i.value=t)},{immediate:!0}),H(()=>n.max,e=>{let t=uh(n.max);t!==e&&(a.value=t)},{immediate:!0});let o=Z(()=>lu(i.value)?`indeterminate`:i.value===a.value?`complete`:`loading`);return sh({modelValue:i,max:a,progressState:o}),(e,t)=>(K(),q(I($),{"as-child":e.asChild,as:e.as,"aria-valuemax":I(a),"aria-valuemin":0,"aria-valuenow":ch(I(i))?I(i):void 0,"aria-valuetext":e.getValueText?.(I(i),I(a)),"aria-label":e.getValueLabel(I(i),I(a)),role:`progressbar`,"data-state":o.value,"data-value":I(i)??void 0,"data-max":I(a)},{default:z(()=>[V(e.$slots,`default`,{modelValue:I(i)})]),_:3},8,[`as-child`,`as`,`aria-valuemax`,`aria-valuenow`,`aria-valuetext`,`aria-label`,`data-state`,`data-value`,`data-max`]))}}),fh=B({__name:`ProgressIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=oh();return Q(),(e,r)=>(K(),q(I($),Y(t,{"data-state":I(n).progressState.value,"data-value":I(n).modelValue?.value??void 0,"data-max":I(n).max.value}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16,[`data-state`,`data-value`,`data-max`]))}}),ph=[` `,`Enter`,`ArrowUp`,`ArrowDown`],mh=[` `,`Enter`];function hh(e,t,n){return e===void 0?!1:Array.isArray(e)?e.some(e=>gh(e,t,n)):gh(e,t,n)}function gh(e,t,n){return e===void 0||t===void 0?!1:typeof e==`string`?e===t:typeof n==`function`?n(e,t):typeof n==`string`?e?.[n]===t?.[n]:iu(e,t)}function _h(e){return e==null||e===``||Array.isArray(e)&&e.length===0}var vh={key:0,value:``},[yh,bh]=ou(`SelectRoot`),xh=B({inheritAttrs:!1,__name:`SelectRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},by:{type:[String,Function],required:!1},dir:{type:String,required:!1},multiple:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`,`update:open`],setup(e,{emit:t}){let n=e,r=t,{required:i,disabled:a,multiple:o,dir:s}=hn(n),c=Bu(n,`modelValue`,r,{defaultValue:n.defaultValue??(o.value?[]:void 0),passive:n.modelValue===void 0,deep:!0}),l=Bu(n,`open`,r,{defaultValue:n.defaultOpen,passive:n.open===void 0}),u=F(),d=F(),f=F({x:0,y:0}),p=Z(()=>o.value&&Array.isArray(c.value)?c.value?.length===0:lu(c.value));Tf({isProvider:!0});let m=Yu(s),h=ed(u),g=F(new Set),_=Z(()=>Array.from(g.value).map(e=>e.value).join(`;`));function v(e){if(o.value){let t=Array.isArray(c.value)?[...c.value]:[],r=t.findIndex(t=>gh(t,e,n.by));r===-1?t.push(e):t.splice(r,1),c.value=[...t]}else c.value=e}function y(e){return Array.from(g.value).find(t=>hh(e,t.value,n.by))}return bh({triggerElement:u,onTriggerChange:e=>{u.value=e},valueElement:d,onValueElementChange:e=>{d.value=e},contentId:``,modelValue:c,onValueChange:v,by:n.by,open:l,multiple:o,required:i,onOpenChange:e=>{l.value=e},dir:m,triggerPointerDownPosRef:f,disabled:a,isEmptyModelValue:p,optionsSet:g,onOptionAdd:e=>{let t=y(e.value);t&&g.value.delete(t),g.value.add(e)},onOptionRemove:e=>{let t=y(e.value);t&&g.value.delete(t)}}),(e,t)=>(K(),q(I(kf),null,{default:z(()=>[V(e.$slots,`default`,{modelValue:I(c),open:I(l)}),I(h)?(K(),q(Sh,{key:_.value,"aria-hidden":`true`,tabindex:`-1`,multiple:I(o),required:I(i),name:e.name,autocomplete:e.autocomplete,disabled:I(a),value:I(c)},{default:z(()=>[I(lu)(I(c))?(K(),Qo(`option`,vh)):us(`v-if`,!0),(K(!0),Qo(W,null,Ui(Array.from(g.value),e=>(K(),Qo(`option`,Y({key:e.value??``},{ref_for:!0},e),null,16))),128))]),_:1},8,[`multiple`,`required`,`name`,`autocomplete`,`disabled`,`value`])):us(`v-if`,!0)]),_:3}))}}),Sh=B({__name:`BubbleSelect`,props:{autocomplete:{type:String,required:!1},autofocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},form:{type:String,required:!1},multiple:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},size:{type:Number,required:!1},value:{type:null,required:!1}},setup(e){let t=e,n=F(),r=yh();H(()=>t.value,(e,t)=>{let r=window.HTMLSelectElement.prototype,i=Object.getOwnPropertyDescriptor(r,`value`).set;if(e!==t&&i&&n.value){let t=new Event(`change`,{bubbles:!0});i.call(n.value,e),n.value.dispatchEvent(t)}});function i(e){r.onValueChange(e.target.value)}return(e,r)=>(K(),q(I(Ef),{"as-child":``},{default:z(()=>[is(`select`,Y({ref_key:`selectElement`,ref:n},t,{onInput:i}),[V(e.$slots,`default`)],16)]),_:3}))}}),Ch=B({__name:`SelectPopperPosition`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1,default:10},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=td(e);return(e,n)=>(K(),q(I(qm),Y(I(t),{style:{boxSizing:`border-box`,"--reka-select-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-select-content-available-width":`var(--reka-popper-available-width)`,"--reka-select-content-available-height":`var(--reka-popper-available-height)`,"--reka-select-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-select-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),wh={onViewportChange:()=>{},itemTextRefCallback:()=>{},itemRefCallback:()=>{}},[Th,Eh]=ou(`SelectContent`),Dh=B({__name:`SelectContentImpl`,props:{position:{type:String,required:!1,default:`item-aligned`},bodyLock:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,r=t,i=yh();Qu(),Ku(n.bodyLock);let{CollectionSlot:a,getItems:o}=Tf(),s=F();fd(s);let{search:c,handleTypeaheadSearch:l}=_d(),u=F(),d=F(),f=F(),p=F(!1),m=F(!1),h=F(!1);function g(){d.value&&s.value&&nf([d.value,s.value])}H(p,()=>{g()});let{onOpenChange:_,triggerPointerDownPosRef:v}=i;La(e=>{if(!s.value)return;let t={x:0,y:0},n=e=>{t={x:Math.abs(Math.round(e.pageX)-(v.value?.x??0)),y:Math.abs(Math.round(e.pageY)-(v.value?.y??0))}},r=e=>{e.pointerType!==`touch`&&(t.x<=10&&t.y<=10?e.preventDefault():s.value?.contains(e.target)||_(!1),document.removeEventListener(`pointermove`,n),v.value=null)};v.value!==null&&(document.addEventListener(`pointermove`,n),document.addEventListener(`pointerup`,r,{capture:!0,once:!0})),e(()=>{document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r,{capture:!0})})});function y(e){let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&l(e.key,o()),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=[...o().map(e=>e.ref)];if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>nf(t)),e.preventDefault()}}let b=td(Z(()=>n.position===`popper`?n:{}).value);return Eh({content:s,viewport:u,onViewportChange:e=>{u.value=e},itemRefCallback:(e,t,n)=>{let r=!m.value&&!n,a=hh(i.modelValue.value,t,i.by);if(i.multiple.value){if(h.value)return;(a||r)&&(d.value=e,a&&(h.value=!0))}else (a||r)&&(d.value=e);r&&(m.value=!0)},selectedItem:d,selectedItemText:f,onItemLeave:()=>{s.value?.focus()},itemTextRefCallback:(e,t,n)=>{let r=!m.value&&!n;(hh(i.modelValue.value,t,i.by)||r)&&(f.value=e)},focusSelectedItem:g,position:n.position,isPositioned:p,searchRef:c}),(e,t)=>(K(),q(I(a),null,{default:z(()=>[J(I(Zd),{"as-child":``,onMountAutoFocus:t[6]||=Rl(()=>{},[`prevent`]),onUnmountAutoFocus:t[7]||=e=>{r(`closeAutoFocus`,e),!e.defaultPrevented&&(I(i).triggerElement.value?.focus({preventScroll:!0}),e.preventDefault())}},{default:z(()=>[J(I(Id),{"as-child":``,"disable-outside-pointer-events":``,onFocusOutside:t[2]||=Rl(()=>{},[`prevent`]),onDismiss:t[3]||=e=>I(i).onOpenChange(!1),onEscapeKeyDown:t[4]||=e=>r(`escapeKeyDown`,e),onPointerDownOutside:t[5]||=e=>r(`pointerDownOutside`,e)},{default:z(()=>[(K(),q(zi(e.position===`popper`?Ch:Ah),Y({...e.$attrs,...I(b)},{id:I(i).contentId,ref:e=>{let t=I(Mu)(e);t?.hasAttribute(`data-reka-popper-content-wrapper`)?s.value=t.firstElementChild:s.value=t},role:`listbox`,"data-state":I(i).open.value?`open`:`closed`,dir:I(i).dir.value,style:{display:`flex`,flexDirection:`column`,outline:`none`},onContextmenu:t[0]||=Rl(()=>{},[`prevent`]),onPlaced:t[1]||=e=>p.value=!0,onKeydown:y}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16,[`id`,`data-state`,`dir`,`onKeydown`]))]),_:3})]),_:3})]),_:3}))}}),[Oh,kh]=ou(`SelectItemAlignedPosition`),Ah=B({inheritAttrs:!1,__name:`SelectItemAlignedPosition`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`placed`],setup(e,{emit:t}){let n=e,r=t,{getItems:i}=Tf(),a=yh(),o=Th(),s=F(!1),c=F(!0),l=F(),{forwardRef:u,currentElement:d}=Q(),{viewport:f,selectedItem:p,selectedItemText:m,focusSelectedItem:h}=o;function g(){if(a.triggerElement.value&&a.valueElement.value&&l.value&&d.value&&f?.value&&p?.value&&m?.value){let e=a.triggerElement.value.getBoundingClientRect(),t=d.value.getBoundingClientRect(),n=a.valueElement.value.getBoundingClientRect(),o=m.value.getBoundingClientRect();if(a.dir.value!==`rtl`){let r=o.left-t.left,i=n.left-r,a=e.left-i,s=e.width+a,c=Math.max(s,t.width),u=window.innerWidth-10,d=au(i,10,Math.max(10,u-c));l.value.style.minWidth=`${s}px`,l.value.style.left=`${d}px`}else{let r=t.right-o.right,i=window.innerWidth-n.right-r,a=window.innerWidth-e.right-i,s=e.width+a,c=Math.max(s,t.width),u=window.innerWidth-10,d=au(i,10,Math.max(10,u-c));l.value.style.minWidth=`${s}px`,l.value.style.right=`${d}px`}let c=i().map(e=>e.ref),u=window.innerHeight-20,h=f.value.scrollHeight,g=window.getComputedStyle(d.value),_=Number.parseInt(g.borderTopWidth,10),v=Number.parseInt(g.paddingTop,10),y=Number.parseInt(g.borderBottomWidth,10),b=Number.parseInt(g.paddingBottom,10),x=_+v+h+b+y,S=Math.min(p.value.offsetHeight*5,x),C=window.getComputedStyle(f.value),w=Number.parseInt(C.paddingTop,10),T=Number.parseInt(C.paddingBottom,10),E=e.top+e.height/2-10,D=u-E,O=p.value.offsetHeight/2,ee=p.value.offsetTop+O,k=_+v+ee,te=x-k;if(k<=E){let e=p.value===c[c.length-1];l.value.style.bottom=`0px`;let t=d.value.clientHeight-f.value.offsetTop-f.value.offsetHeight,n=k+Math.max(D,O+(e?T:0)+t+y);l.value.style.height=`${n}px`}else{let e=p.value===c[0];l.value.style.top=`0px`;let t=Math.max(E,_+f.value.offsetTop+(e?w:0)+O)+te;l.value.style.height=`${t}px`,f.value.scrollTop=k-E+f.value.offsetTop}l.value.style.margin=`10px 0`,l.value.style.minHeight=`${S}px`,l.value.style.maxHeight=`${u}px`,r(`placed`),requestAnimationFrame(()=>s.value=!0)}}let _=F(``);Ei(async()=>{await R(),g(),d.value&&(_.value=window.getComputedStyle(d.value).zIndex)});function v(e){e&&c.value===!0&&(g(),h?.(),c.value=!1)}return zu(a.triggerElement,()=>{g()}),kh({contentWrapper:l,shouldExpandOnScrollRef:s,onScrollButtonChange:v}),(e,t)=>(K(),Qo(`div`,{ref_key:`contentWrapperElement`,ref:l,style:de({display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:_.value})},[J(I($),Y({ref:I(u),style:{boxSizing:`border-box`,maxHeight:`100%`}},{...e.$attrs,...n}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16)],4))}}),jh=B({inheritAttrs:!1,__name:`SelectProvider`,props:{context:{type:Object,required:!0}},setup(e){return bh(e.context),Eh(wh),(e,t)=>V(e.$slots,`default`)}}),Mh={key:1},Nh=B({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,r=nd(n,t),i=yh(),a=F();Ei(()=>{a.value=new DocumentFragment});let o=F(),s=Z(()=>n.forceMount||i.open.value),c=F(s.value);return H(s,()=>{setTimeout(()=>c.value=s.value)}),(e,t)=>s.value||c.value||o.value?.present?(K(),q(I(Sd),{key:0,ref_key:`presenceRef`,ref:o,present:s.value},{default:z(()=>[J(Dh,_e(os({...I(r),...e.$attrs})),{default:z(()=>[V(e.$slots,`default`)]),_:3},16)]),_:3},8,[`present`])):a.value?(K(),Qo(`div`,Mh,[(K(),q(Cr,{to:a.value},[J(jh,{context:I(i)},{default:z(()=>[V(e.$slots,`default`)]),_:3},8,[`context`])],8,[`to`]))])):us(`v-if`,!0)}}),Ph=B({__name:`SelectIcon`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return(e,t)=>(K(),q(I($),{"aria-hidden":`true`,as:e.as,"as-child":e.asChild},{default:z(()=>[V(e.$slots,`default`,{},()=>[t[0]||=cs(`▼`)])]),_:3},8,[`as`,`as-child`]))}}),[Fh,Ih]=ou(`SelectItem`),Lh=B({__name:`SelectItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,{disabled:i}=hn(n),a=yh(),o=Th(),{forwardRef:s,currentElement:c}=Q(),{CollectionItem:l}=Tf(),u=Z(()=>hh(a.modelValue?.value,n.value,a.by)),d=F(!1),f=F(n.textValue??``),p=md(void 0,`reka-select-item-text`);async function m(e){e.defaultPrevented||cu(`select.select`,h,{originalEvent:e,value:n.value})}async function h(e){await R(),r(`select`,e),!e.defaultPrevented&&(i.value||(a.onValueChange(n.value),a.multiple.value||a.onOpenChange(!1)))}async function g(e){await R(),!e.defaultPrevented&&(i.value?o.onItemLeave?.():e.currentTarget?.focus({preventScroll:!0}))}async function _(e){await R(),!e.defaultPrevented&&e.currentTarget===su()&&o.onItemLeave?.()}async function v(e){await R(),!e.defaultPrevented&&(o.searchRef?.value!==``&&e.key===` `||(mh.includes(e.key)&&m(e),e.key===` `&&e.preventDefault()))}if(n.value===``)throw Error(`A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return Ei(()=>{c.value&&o.itemRefCallback(c.value,n.value,n.disabled)}),Ih({value:n.value,disabled:i,textId:p,isSelected:u,onItemTextChange:e=>{f.value=((f.value||e?.textContent)??``).trim()}}),(e,t)=>(K(),q(I(l),{value:{textValue:f.value}},{default:z(()=>[J(I($),{ref:I(s),role:`option`,"aria-labelledby":I(p),"data-highlighted":d.value?``:void 0,"aria-selected":u.value,"data-state":u.value?`checked`:`unchecked`,"aria-disabled":I(i)||void 0,"data-disabled":I(i)?``:void 0,tabindex:I(i)?void 0:-1,as:e.as,"as-child":e.asChild,onFocus:t[0]||=e=>d.value=!0,onBlur:t[1]||=e=>d.value=!1,onPointerup:m,onPointerdown:t[2]||=e=>{e.currentTarget.focus({preventScroll:!0})},onTouchend:t[3]||=Rl(()=>{},[`prevent`,`stop`]),onPointermove:g,onPointerleave:_,onKeydown:v},{default:z(()=>[V(e.$slots,`default`)]),_:3},8,[`aria-labelledby`,`data-highlighted`,`aria-selected`,`data-state`,`aria-disabled`,`data-disabled`,`tabindex`,`as`,`as-child`])]),_:3},8,[`value`]))}}),Rh=B({__name:`SelectItemIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=Fh();return(e,r)=>I(n).isSelected.value?(K(),q(I($),Y({key:0,"aria-hidden":`true`},t),{default:z(()=>[V(e.$slots,`default`)]),_:3},16)):us(`v-if`,!0)}}),zh=B({inheritAttrs:!1,__name:`SelectItemText`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=yh(),r=Th(),i=Fh(),{forwardRef:a,currentElement:o}=Q(),s=Z(()=>({value:i.value,disabled:i.disabled.value,textContent:o.value?.textContent??i.value?.toString()??``}));return Ei(()=>{o.value&&(i.onItemTextChange(o.value),r.itemTextRefCallback(o.value,i.value,i.disabled.value),n.onOptionAdd(s.value))}),Ai(()=>{n.onOptionRemove(s.value)}),(e,n)=>(K(),q(I($),Y({id:I(i).textId,ref:I(a)},{...t,...e.$attrs}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16,[`id`]))}}),Bh=B({__name:`SelectPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(K(),q(I(df),_e(os(t)),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),Vh=B({__name:`SelectScrollButtonImpl`,emits:[`autoScroll`],setup(e,{emit:t}){let n=t,{getItems:r}=Tf(),i=Th(),a=F(null);function o(){a.value!==null&&(window.clearInterval(a.value),a.value=null)}La(()=>{r().map(e=>e.ref).find(e=>e===su())?.scrollIntoView({block:`nearest`})});function s(){a.value===null&&(a.value=window.setInterval(()=>{n(`autoScroll`)},50))}function c(){i.onItemLeave?.(),a.value===null&&(a.value=window.setInterval(()=>{n(`autoScroll`)},50))}return ki(()=>o()),(e,t)=>(K(),q(I($),Y({"aria-hidden":`true`,style:{flexShrink:0}},e.$parent?.$props,{onPointerdown:s,onPointermove:c,onPointerleave:t[0]||=()=>{o()}}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16))}}),Hh=B({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=Th(),n=t.position===`item-aligned`?Oh():void 0,{forwardRef:r,currentElement:i}=Q(),a=F(!1);return La(e=>{if(t.viewport?.value&&t.isPositioned?.value){let n=t.viewport.value;function r(){let e=n.scrollHeight-n.clientHeight;a.value=Math.ceil(n.scrollTop)n.removeEventListener(`scroll`,r))}}),H(i,()=>{i.value&&n?.onScrollButtonChange(i.value)}),(e,n)=>a.value?(K(),q(Vh,{key:0,ref:I(r),onAutoScroll:n[0]||=()=>{let{viewport:e,selectedItem:n}=I(t);e?.value&&n?.value&&(e.value.scrollTop=e.value.scrollTop+n.value.offsetHeight)}},{default:z(()=>[V(e.$slots,`default`)]),_:3},512)):us(`v-if`,!0)}}),Uh=B({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=Th(),n=t.position===`item-aligned`?Oh():void 0,{forwardRef:r,currentElement:i}=Q(),a=F(!1);return La(e=>{if(t.viewport?.value&&t.isPositioned?.value){let n=t.viewport.value;function r(){a.value=n.scrollTop>0}r(),n.addEventListener(`scroll`,r),e(()=>n.removeEventListener(`scroll`,r))}}),H(i,()=>{i.value&&n?.onScrollButtonChange(i.value)}),(e,n)=>a.value?(K(),q(Vh,{key:0,ref:I(r),onAutoScroll:n[0]||=()=>{let{viewport:e,selectedItem:n}=I(t);e?.value&&n?.value&&(e.value.scrollTop=e.value.scrollTop-n.value.offsetHeight)}},{default:z(()=>[V(e.$slots,`default`)]),_:3},512)):us(`v-if`,!0)}}),Wh=B({__name:`SelectTrigger`,props:{disabled:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=yh(),{forwardRef:r,currentElement:i}=Q(),a=Z(()=>n.disabled?.value||t.disabled);n.contentId||=md(void 0,`reka-select-content`),Ei(()=>{n.onTriggerChange(i.value)});let{getItems:o}=Tf(),{search:s,handleTypeaheadSearch:c,resetTypeahead:l}=_d();function u(){a.value||(n.onOpenChange(!0),l())}function d(e){u(),n.triggerPointerDownPosRef.value={x:Math.round(e.pageX),y:Math.round(e.pageY)}}return(e,t)=>(K(),q(I(Af),{"as-child":``,reference:e.reference},{default:z(()=>[J(I($),{ref:I(r),role:`combobox`,type:e.as===`button`?`button`:void 0,"aria-controls":I(n).contentId,"aria-expanded":I(n).open.value||!1,"aria-required":I(n).required?.value,"aria-autocomplete":`none`,disabled:a.value,dir:I(n)?.dir.value,"data-state":I(n)?.open.value?`open`:`closed`,"data-disabled":a.value?``:void 0,"data-placeholder":I(_h)(I(n).modelValue?.value)?``:void 0,"as-child":e.asChild,as:e.as,onClick:t[0]||=e=>{(e?.currentTarget)?.focus()},onPointerdown:t[1]||=e=>{if(e.pointerType===`touch`)return e.preventDefault();let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&(d(e),e.preventDefault())},onPointerup:t[2]||=Rl(e=>{e.pointerType===`touch`&&d(e)},[`prevent`]),onKeydown:t[3]||=e=>{let t=I(s)!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&t&&e.key===` `||(I(c)(e.key,I(o)()),I(ph).includes(e.key)&&(u(),e.preventDefault()))}},{default:z(()=>[V(e.$slots,`default`)]),_:3},8,[`type`,`aria-controls`,`aria-expanded`,`aria-required`,`disabled`,`dir`,`data-state`,`data-disabled`,`data-placeholder`,`as-child`,`as`])]),_:3},8,[`reference`]))}}),Gh=B({__name:`SelectValue`,props:{placeholder:{type:String,required:!1,default:``},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,{forwardRef:n,currentElement:r}=Q(),i=yh();Ei(()=>{i.valueElement=r});let a=Z(()=>{let e=[],t=Array.from(i.optionsSet.value),n=e=>t.find(t=>hh(e,t.value,i.by));return e=Array.isArray(i.modelValue.value)?i.modelValue.value.map(e=>n(e)?.textContent??``):[n(i.modelValue.value)?.textContent??``],e.filter(Boolean)}),o=Z(()=>a.value.length?a.value.join(`, `):t.placeholder);return(e,r)=>(K(),q(I($),{ref:I(n),as:e.as,"as-child":e.asChild,style:{pointerEvents:`none`},"data-placeholder":a.value.length?void 0:t.placeholder},{default:z(()=>[V(e.$slots,`default`,{selectedLabel:a.value,modelValue:I(i).modelValue.value},()=>[cs(Te(o.value),1)])]),_:3},8,[`as`,`as-child`,`data-placeholder`]))}}),Kh=B({__name:`SelectViewport`,props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{nonce:n}=hn(t),r=Jm(n),i=Th(),a=i.position===`item-aligned`?Oh():void 0,{forwardRef:o,currentElement:s}=Q();Ei(()=>{i?.onViewportChange(s.value)});let c=F(0);function l(e){let t=e.currentTarget,{shouldExpandOnScrollRef:n,contentWrapper:r}=a??{};if(n?.value&&r?.value){let e=Math.abs(c.value-t.scrollTop);if(e>0){let n=window.innerHeight-20,i=Number.parseFloat(r.value.style.minHeight),a=Number.parseFloat(r.value.style.height),o=Math.max(i,a);if(o0?s:0,r.value.style.justifyContent=`flex-end`)}}}c.value=t.scrollTop}return(e,n)=>(K(),Qo(W,null,[J(I($),Y({ref:I(o),"data-reka-select-viewport":``,role:`presentation`},{...e.$attrs,...t},{style:{position:`relative`,flex:1,overflow:`hidden auto`},onScroll:l}),{default:z(()=>[V(e.$slots,`default`)]),_:3},16),J(I($),{as:`style`,nonce:I(r)},{default:z(()=>n[0]||=[cs(` /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } `)]),_:1,__:[0]},8,[`nonce`])],64))}}),qh=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var Jh=e=>e!==void 0;function Yh(e){return P(e)?Jt(new Proxy({},{get(t,n,r){return I(Reflect.get(e.value,n,r))},set(t,n,r){return P(e.value[n])&&!P(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}})):Jt(e)}function Xh(e){return Yh(Z(e))}function Zh(e,...t){let n=t.flat(),r=n[0];return Xh(()=>typeof r==`function`?Object.fromEntries(Object.entries(hn(e)).filter(([e,t])=>!r(L(t),e))):Object.fromEntries(Object.entries(hn(e)).filter(e=>!n.includes(e[0]))))}qh&&window.document,qh&&window.navigator,qh&&window.location;function Qh(e){return JSON.parse(JSON.stringify(e))}function $h(e,t,n,r={}){var i,a;let{clone:o=!1,passive:s=!1,eventName:c,deep:l=!1,defaultValue:u,shouldEmit:d}=r,f=X(),p=n||f?.emit||(f==null||(i=f.$emit)==null?void 0:i.bind(f))||(f==null||(a=f.proxy)==null||(a=a.$emit)==null?void 0:a.bind(f?.proxy)),m=c;t||=`modelValue`,m||=`update:${t.toString()}`;let h=e=>o?typeof o==`function`?o(e):Qh(e):e,g=()=>Jh(e[t])?h(e[t]):u,_=e=>{d?d(e)&&p(m,e):p(m,e)};if(s){let n=F(g()),r=!1;return H(()=>e[t],e=>{r||(r=!0,n.value=h(e),R(()=>r=!1))}),H(n,n=>{!r&&(n!==e[t]||l)&&_(n)},{deep:l}),n}else return Z({get(){return g()},set(e){_(e)}})}export{Rs as $,pf as A,de as At,Jl as B,Sf as C,Yt as Ct,vf as D,I as Dt,yf as E,hn as Et,kd as F,is as G,W as H,Od as I,Qo as J,q as K,$ as L,uf as M,cf as N,_f as O,ge as Ot,sf as P,os as Q,nd as R,Cf as S,F as St,bf as T,N as Tt,Cr as U,wl as V,Z as W,J as X,cs as Y,B as Z,ih as _,$t as _t,Wh as a,Ei as at,th as b,Ne as bt,Bh as c,Ma as ct,Lh as d,zi as dt,Pa as et,Ph as f,H as ft,dh as g,Me as gt,fh as h,je as ht,Gh as i,R as it,ff as j,Te as jt,mf as k,_e as kt,zh as l,Ui as lt,xh as m,dr as mt,Zh as n,$o as nt,Uh as o,Ai as ot,Nh as p,z as pt,us as q,Kh as r,Y as rt,Hh as s,K as st,$h as t,Na as tt,Rh as u,V as ut,rh as v,P as vt,xf as w,sn as wt,Zm as x,Jt as xt,nh as y,rn as yt,td as z}; \ No newline at end of file diff --git a/docs/assets/vendor-utils-BlvnUqQX.js b/docs/assets/vendor-utils-BlvnUqQX.js new file mode 100644 index 0000000..cfabc12 --- /dev/null +++ b/docs/assets/vendor-utils-BlvnUqQX.js @@ -0,0 +1 @@ +import{t as e}from"./rolldown-runtime-CIDIeb-o.js";var t=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),r=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),i=`-`,a=[],o=`arbitrary..`,s=e=>{let n=u(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return l(e);let t=e.split(i);return c(t,t[0]===``&&t.length>1?1:0,n)},getConflictingClassGroupIds:(e,n)=>{if(n){let n=o[e],i=r[e];return n?i?t(i,n):n:i||a}return r[e]||a}}},c=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],a=n.nextPart.get(r);if(a){let n=c(e,t+1,a);if(n)return n}let o=n.validators;if(o===null)return;let s=t===0?e.join(i):e.slice(t).join(i),l=o.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?o+r:void 0})(),u=e=>{let{theme:t,classGroups:n}=e;return d(n,t)},d=(e,t)=>{let n=r();for(let r in e){let i=e[r];f(i,n,r,t)}return n},f=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){m(e,t,n);return}if(typeof e==`function`){h(e,t,n,r);return}g(e,t,n,r)},m=(e,t,n)=>{let r=e===``?t:_(t,e);r.classGroupId=n},h=(e,t,r,i)=>{if(v(e)){f(e(i),t,r,i);return}t.validators===null&&(t.validators=[]),t.validators.push(n(r,e))},g=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,a=t.split(i),o=a.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,y=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},b=`!`,x=`:`,S=[],C=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),w=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return C(t,l,c,u)};if(t){let e=t+x,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):C(S,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},T=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},ee=e=>({cache:y(e.cacheSize),parseClassName:w(e),sortModifiers:T(e),...s(e)}),te=/\s+/,E=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a}=t,o=[],s=e.trim().split(te),c=``;for(let e=s.length-1;e>=0;--e){let t=s[e],{isExternal:l,modifiers:u,hasImportantModifier:d,baseClassName:f,maybePostfixModifierPosition:p}=n(t);if(l){c=t+(c.length>0?` `+c:c);continue}let m=!!p,h=r(m?f.substring(0,p):f);if(!h){if(!m){c=t+(c.length>0?` `+c:c);continue}if(h=r(f),!h){c=t+(c.length>0?` `+c:c);continue}m=!1}let g=u.length===0?``:u.length===1?u[0]:a(u).join(`:`),_=d?g+b:g,v=_+h;if(o.indexOf(v)>-1)continue;o.push(v);let y=i(h,m);for(let e=0;e0?` `+c:c)}return c},ne=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=ee(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=E(e,n);return i(e,a),a};return a=o,(...e)=>a(ne(...e))},k=[],A=e=>{let t=t=>t[e]||k;return t.isThemeGetter=!0,t},j=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,M=/^\((?:(\w[\w-]*):)?(.+)\)$/i,re=/^\d+\/\d+$/,N=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ie=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,P=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,F=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,I=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,L=e=>re.test(e),R=e=>!!e&&!Number.isNaN(Number(e)),z=e=>!!e&&Number.isInteger(Number(e)),ae=e=>e.endsWith(`%`)&&R(e.slice(0,-1)),B=e=>N.test(e),oe=()=>!0,V=e=>ie.test(e)&&!P.test(e),H=()=>!1,U=e=>F.test(e),se=e=>I.test(e),ce=e=>!W(e)&&!q(e),le=e=>X(e,_e,H),W=e=>j.test(e),G=e=>X(e,ve,V),ue=e=>X(e,ye,R),de=e=>X(e,Q,H),fe=e=>X(e,$,se),K=e=>X(e,xe,U),q=e=>M.test(e),J=e=>Z(e,ve),pe=e=>Z(e,be),me=e=>Z(e,Q),he=e=>Z(e,_e),ge=e=>Z(e,$),Y=e=>Z(e,xe,!0),X=(e,t,n)=>{let r=j.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},Z=(e,t,n=!1)=>{let r=M.exec(e);return r?r[1]?t(r[1]):n:!1},Q=e=>e===`position`||e===`percentage`,$=e=>e===`image`||e===`url`,_e=e=>e===`length`||e===`size`||e===`bg-size`,ve=e=>e===`length`,ye=e=>e===`number`,be=e=>e===`family-name`,xe=e=>e===`shadow`,Se=O(()=>{let e=A(`color`),t=A(`font`),n=A(`text`),r=A(`font-weight`),i=A(`tracking`),a=A(`leading`),o=A(`breakpoint`),s=A(`container`),c=A(`spacing`),l=A(`radius`),u=A(`shadow`),d=A(`inset-shadow`),f=A(`text-shadow`),p=A(`drop-shadow`),m=A(`blur`),h=A(`perspective`),g=A(`aspect`),_=A(`ease`),v=A(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),q,W],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],C=()=>[`auto`,`contain`,`none`],w=()=>[q,W,c],T=()=>[L,`full`,`auto`,...w()],ee=()=>[z,`none`,`subgrid`,q,W],te=()=>[`auto`,{span:[`full`,z,q,W]},z,q,W],E=()=>[z,`auto`,q,W],ne=()=>[`auto`,`min`,`max`,`fr`,q,W],D=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],O=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],k=()=>[`auto`,...w()],j=()=>[L,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...w()],M=()=>[e,q,W],re=()=>[...b(),me,de,{position:[q,W]}],N=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ie=()=>[`auto`,`cover`,`contain`,he,le,{size:[q,W]}],P=()=>[ae,J,G],F=()=>[``,`none`,`full`,l,q,W],I=()=>[``,R,J,G],V=()=>[`solid`,`dashed`,`dotted`,`double`],H=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],U=()=>[R,ae,me,de],se=()=>[``,`none`,m,q,W],X=()=>[`none`,R,q,W],Z=()=>[`none`,R,q,W],Q=()=>[R,q,W],$=()=>[L,`full`,...w()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[B],breakpoint:[B],color:[oe],container:[B],"drop-shadow":[B],ease:[`in`,`out`,`in-out`],font:[ce],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[B],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[B],shadow:[B],spacing:[`px`,R],text:[B],"text-shadow":[B],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,L,W,q,g]}],container:[`container`],columns:[{columns:[R,W,q,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:T()}],"inset-x":[{"inset-x":T()}],"inset-y":[{"inset-y":T()}],start:[{start:T()}],end:[{end:T()}],top:[{top:T()}],right:[{right:T()}],bottom:[{bottom:T()}],left:[{left:T()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[z,`auto`,q,W]}],basis:[{basis:[L,`full`,`auto`,s,...w()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[R,L,`auto`,`initial`,`none`,W]}],grow:[{grow:[``,R,q,W]}],shrink:[{shrink:[``,R,q,W]}],order:[{order:[z,`first`,`last`,`none`,q,W]}],"grid-cols":[{"grid-cols":ee()}],"col-start-end":[{col:te()}],"col-start":[{"col-start":E()}],"col-end":[{"col-end":E()}],"grid-rows":[{"grid-rows":ee()}],"row-start-end":[{row:te()}],"row-start":[{"row-start":E()}],"row-end":[{"row-end":E()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":ne()}],"auto-rows":[{"auto-rows":ne()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...D(),`normal`]}],"justify-items":[{"justify-items":[...O(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...O()]}],"align-content":[{content:[`normal`,...D()]}],"align-items":[{items:[...O(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...O(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":D()}],"place-items":[{"place-items":[...O(),`baseline`]}],"place-self":[{"place-self":[`auto`,...O()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:k()}],mx:[{mx:k()}],my:[{my:k()}],ms:[{ms:k()}],me:[{me:k()}],mt:[{mt:k()}],mr:[{mr:k()}],mb:[{mb:k()}],ml:[{ml:k()}],"space-x":[{"space-x":w()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":w()}],"space-y-reverse":[`space-y-reverse`],size:[{size:j()}],w:[{w:[s,`screen`,...j()]}],"min-w":[{"min-w":[s,`screen`,`none`,...j()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...j()]}],h:[{h:[`screen`,`lh`,...j()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...j()]}],"max-h":[{"max-h":[`screen`,`lh`,...j()]}],"font-size":[{text:[`base`,n,J,G]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,q,ue]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,ae,W]}],"font-family":[{font:[pe,W,t]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,q,W]}],"line-clamp":[{"line-clamp":[R,`none`,q,ue]}],leading:[{leading:[a,...w()]}],"list-image":[{"list-image":[`none`,q,W]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,q,W]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:M()}],"text-color":[{text:M()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...V(),`wavy`]}],"text-decoration-thickness":[{decoration:[R,`from-font`,`auto`,q,G]}],"text-decoration-color":[{decoration:M()}],"underline-offset":[{"underline-offset":[R,`auto`,q,W]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:w()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,q,W]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,q,W]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:re()}],"bg-repeat":[{bg:N()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},z,q,W],radial:[``,q,W],conic:[z,q,W]},ge,fe]}],"bg-color":[{bg:M()}],"gradient-from-pos":[{from:P()}],"gradient-via-pos":[{via:P()}],"gradient-to-pos":[{to:P()}],"gradient-from":[{from:M()}],"gradient-via":[{via:M()}],"gradient-to":[{to:M()}],rounded:[{rounded:F()}],"rounded-s":[{"rounded-s":F()}],"rounded-e":[{"rounded-e":F()}],"rounded-t":[{"rounded-t":F()}],"rounded-r":[{"rounded-r":F()}],"rounded-b":[{"rounded-b":F()}],"rounded-l":[{"rounded-l":F()}],"rounded-ss":[{"rounded-ss":F()}],"rounded-se":[{"rounded-se":F()}],"rounded-ee":[{"rounded-ee":F()}],"rounded-es":[{"rounded-es":F()}],"rounded-tl":[{"rounded-tl":F()}],"rounded-tr":[{"rounded-tr":F()}],"rounded-br":[{"rounded-br":F()}],"rounded-bl":[{"rounded-bl":F()}],"border-w":[{border:I()}],"border-w-x":[{"border-x":I()}],"border-w-y":[{"border-y":I()}],"border-w-s":[{"border-s":I()}],"border-w-e":[{"border-e":I()}],"border-w-t":[{"border-t":I()}],"border-w-r":[{"border-r":I()}],"border-w-b":[{"border-b":I()}],"border-w-l":[{"border-l":I()}],"divide-x":[{"divide-x":I()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":I()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...V(),`hidden`,`none`]}],"divide-style":[{divide:[...V(),`hidden`,`none`]}],"border-color":[{border:M()}],"border-color-x":[{"border-x":M()}],"border-color-y":[{"border-y":M()}],"border-color-s":[{"border-s":M()}],"border-color-e":[{"border-e":M()}],"border-color-t":[{"border-t":M()}],"border-color-r":[{"border-r":M()}],"border-color-b":[{"border-b":M()}],"border-color-l":[{"border-l":M()}],"divide-color":[{divide:M()}],"outline-style":[{outline:[...V(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[R,q,W]}],"outline-w":[{outline:[``,R,J,G]}],"outline-color":[{outline:M()}],shadow:[{shadow:[``,`none`,u,Y,K]}],"shadow-color":[{shadow:M()}],"inset-shadow":[{"inset-shadow":[`none`,d,Y,K]}],"inset-shadow-color":[{"inset-shadow":M()}],"ring-w":[{ring:I()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:M()}],"ring-offset-w":[{"ring-offset":[R,G]}],"ring-offset-color":[{"ring-offset":M()}],"inset-ring-w":[{"inset-ring":I()}],"inset-ring-color":[{"inset-ring":M()}],"text-shadow":[{"text-shadow":[`none`,f,Y,K]}],"text-shadow-color":[{"text-shadow":M()}],opacity:[{opacity:[R,q,W]}],"mix-blend":[{"mix-blend":[...H(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":H()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[R]}],"mask-image-linear-from-pos":[{"mask-linear-from":U()}],"mask-image-linear-to-pos":[{"mask-linear-to":U()}],"mask-image-linear-from-color":[{"mask-linear-from":M()}],"mask-image-linear-to-color":[{"mask-linear-to":M()}],"mask-image-t-from-pos":[{"mask-t-from":U()}],"mask-image-t-to-pos":[{"mask-t-to":U()}],"mask-image-t-from-color":[{"mask-t-from":M()}],"mask-image-t-to-color":[{"mask-t-to":M()}],"mask-image-r-from-pos":[{"mask-r-from":U()}],"mask-image-r-to-pos":[{"mask-r-to":U()}],"mask-image-r-from-color":[{"mask-r-from":M()}],"mask-image-r-to-color":[{"mask-r-to":M()}],"mask-image-b-from-pos":[{"mask-b-from":U()}],"mask-image-b-to-pos":[{"mask-b-to":U()}],"mask-image-b-from-color":[{"mask-b-from":M()}],"mask-image-b-to-color":[{"mask-b-to":M()}],"mask-image-l-from-pos":[{"mask-l-from":U()}],"mask-image-l-to-pos":[{"mask-l-to":U()}],"mask-image-l-from-color":[{"mask-l-from":M()}],"mask-image-l-to-color":[{"mask-l-to":M()}],"mask-image-x-from-pos":[{"mask-x-from":U()}],"mask-image-x-to-pos":[{"mask-x-to":U()}],"mask-image-x-from-color":[{"mask-x-from":M()}],"mask-image-x-to-color":[{"mask-x-to":M()}],"mask-image-y-from-pos":[{"mask-y-from":U()}],"mask-image-y-to-pos":[{"mask-y-to":U()}],"mask-image-y-from-color":[{"mask-y-from":M()}],"mask-image-y-to-color":[{"mask-y-to":M()}],"mask-image-radial":[{"mask-radial":[q,W]}],"mask-image-radial-from-pos":[{"mask-radial-from":U()}],"mask-image-radial-to-pos":[{"mask-radial-to":U()}],"mask-image-radial-from-color":[{"mask-radial-from":M()}],"mask-image-radial-to-color":[{"mask-radial-to":M()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[R]}],"mask-image-conic-from-pos":[{"mask-conic-from":U()}],"mask-image-conic-to-pos":[{"mask-conic-to":U()}],"mask-image-conic-from-color":[{"mask-conic-from":M()}],"mask-image-conic-to-color":[{"mask-conic-to":M()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:re()}],"mask-repeat":[{mask:N()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,q,W]}],filter:[{filter:[``,`none`,q,W]}],blur:[{blur:se()}],brightness:[{brightness:[R,q,W]}],contrast:[{contrast:[R,q,W]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,Y,K]}],"drop-shadow-color":[{"drop-shadow":M()}],grayscale:[{grayscale:[``,R,q,W]}],"hue-rotate":[{"hue-rotate":[R,q,W]}],invert:[{invert:[``,R,q,W]}],saturate:[{saturate:[R,q,W]}],sepia:[{sepia:[``,R,q,W]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,q,W]}],"backdrop-blur":[{"backdrop-blur":se()}],"backdrop-brightness":[{"backdrop-brightness":[R,q,W]}],"backdrop-contrast":[{"backdrop-contrast":[R,q,W]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,R,q,W]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[R,q,W]}],"backdrop-invert":[{"backdrop-invert":[``,R,q,W]}],"backdrop-opacity":[{"backdrop-opacity":[R,q,W]}],"backdrop-saturate":[{"backdrop-saturate":[R,q,W]}],"backdrop-sepia":[{"backdrop-sepia":[``,R,q,W]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,q,W]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[R,`initial`,q,W]}],ease:[{ease:[`linear`,`initial`,_,q,W]}],delay:[{delay:[R,q,W]}],animate:[{animate:[`none`,v,q,W]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,q,W]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:X()}],"rotate-x":[{"rotate-x":X()}],"rotate-y":[{"rotate-y":X()}],"rotate-z":[{"rotate-z":X()}],scale:[{scale:Z()}],"scale-x":[{"scale-x":Z()}],"scale-y":[{"scale-y":Z()}],"scale-z":[{"scale-z":Z()}],"scale-3d":[`scale-3d`],skew:[{skew:Q()}],"skew-x":[{"skew-x":Q()}],"skew-y":[{"skew-y":Q()}],transform:[{transform:[q,W,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:$()}],"translate-x":[{"translate-x":$()}],"translate-y":[{"translate-y":$()}],"translate-z":[{"translate-z":$()}],"translate-none":[`translate-none`],accent:[{accent:M()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:M()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,q,W]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,q,W]}],fill:[{fill:[`none`,...M()]}],"stroke-w":[{stroke:[R,J,G,ue]}],stroke:[{stroke:[`none`,...M()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}}),Ce=e(((e,t)=>{(function(t,n){typeof define==`function`&&define.amd?define([],n):e===void 0?(n(),t.FileSaver={exports:{}}.exports):n()})(e,function(){function e(e,t){return t===void 0?t={autoBom:!1}:typeof t!=`object`&&(console.warn(`Deprecated: Expected third argument to be a object`),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function n(e,t,n){var r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){s(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function r(e){var t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return 200<=t.status&&299>=t.status}function i(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{var t=document.createEvent(`MouseEvents`);t.initMouseEvent(`click`,!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var a=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:void 0,o=a.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),s=a.saveAs||(typeof window!=`object`||window!==a?function(){}:`download`in HTMLAnchorElement.prototype&&!o?function(e,t,o){var s=a.URL||a.webkitURL,c=document.createElement(`a`);t=t||e.name||`download`,c.download=t,c.rel=`noopener`,typeof e==`string`?(c.href=e,c.origin===location.origin?i(c):r(c.href)?n(e,t,o):i(c,c.target=`_blank`)):(c.href=s.createObjectURL(e),setTimeout(function(){s.revokeObjectURL(c.href)},4e4),setTimeout(function(){i(c)},0))}:`msSaveOrOpenBlob`in navigator?function(t,a,o){if(a=a||t.name||`download`,typeof t!=`string`)navigator.msSaveOrOpenBlob(e(t,o),a);else if(r(t))n(t,a,o);else{var s=document.createElement(`a`);s.href=t,s.target=`_blank`,setTimeout(function(){i(s)})}}:function(e,t,r,i){if(i||=open(``,`_blank`),i&&(i.document.title=i.document.body.innerText=`downloading...`),typeof e==`string`)return n(e,t,r);var s=e.type===`application/octet-stream`,c=/constructor/i.test(a.HTMLElement)||a.safari,l=/CriOS\/[\d]+/.test(navigator.userAgent);if((l||s&&c||o)&&typeof FileReader<`u`){var u=new FileReader;u.onloadend=function(){var e=u.result;e=l?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),i?i.location.href=e:location=e,i=null},u.readAsDataURL(e)}else{var d=a.URL||a.webkitURL,f=d.createObjectURL(e);i?i.location=f:location.href=f,i=null,setTimeout(function(){d.revokeObjectURL(f)},4e4)}});a.saveAs=s.saveAs=s,t!==void 0&&(t.exports=s)})}));export{Se as n,Ce as t}; \ No newline at end of file diff --git a/docs/assets/vendor-vue-Bqq1sBNf.js b/docs/assets/vendor-vue-Bqq1sBNf.js deleted file mode 100644 index a3a62f9..0000000 --- a/docs/assets/vendor-vue-Bqq1sBNf.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,Ct as t,Dt as n,Et as r,St as i,Tt as a,W as o,Z as s,_t as c,bt as l,ct as u,et as d,ft as f,gt as p,ht as m,it as ee,nt as h,tt as g,vt as _,wt as te,xt as ne,yt as v}from"./vendor-ui-DBxeWLyT.js";var y=typeof window<`u`,b,x=e=>b=e,re=Symbol();function S(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var C;(function(e){e.direct=`direct`,e.patchObject=`patch object`,e.patchFunction=`patch function`})(C||={});var w=(()=>typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null})();function T(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function E(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){k(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function ie(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function D(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var O=typeof navigator==`object`?navigator:{userAgent:``},ae=(()=>/Macintosh/.test(O.userAgent)&&/AppleWebKit/.test(O.userAgent)&&!/Safari/.test(O.userAgent))(),k=y?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!ae?oe:`msSaveOrOpenBlob`in O?A:j:()=>{};function oe(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?D(r):ie(r.href)?E(e,t,n):(r.target=`_blank`,D(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){D(r)},0))}function A(e,t=`download`,n){if(typeof e==`string`)if(ie(e))E(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){D(t)})}else navigator.msSaveOrOpenBlob(T(e,n),t)}function j(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return E(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(w.HTMLElement))||`safari`in w,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||ae)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:se}=Object;function ce(){let e=m(!0),t=e.run(()=>i({})),n=[],r=[],a=v({install(e){x(a),a._a=e,e.provide(re,a),e.config.globalProperties.$pinia=a,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return a}var le=()=>{};function M(e,t,n,r=le){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&p()&&l(i),i}function N(e,...t){e.forEach(e=>{e(...t)})}var P=e=>e(),F=Symbol(),I=Symbol();function ue(e,t){for(let n in e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e),t){if(!t.hasOwnProperty(n))continue;let r=t[n],i=e[n];S(i)&&S(r)&&e.hasOwnProperty(n)&&!_(r)&&!c(r)?e[n]=ue(i,r):e[n]=r}return e}var de=Symbol();function fe(e){return!S(e)||!Object.prototype.hasOwnProperty.call(e,de)}var{assign:L}=Object;function pe(e){return!!(_(e)&&e.effect)}function me(e,t,n,i){let{state:a,actions:s,getters:c}=t,l=n.state.value[e],u;function d(){return l||(n.state.value[e]=a?a():{}),L(r(n.state.value[e]),s,Object.keys(c||{}).reduce((t,r)=>(t[r]=v(o(()=>{x(n);let t=n._s.get(e);return c[r].call(t,t)})),t),{}))}return u=he(e,d,t,n,i,!0),u}function he(e,t,n={},r,o,s){let l,u=L({actions:{}},n),d={deep:!0},p,h,g=new Set,te=new Set,v=r.state.value[e];!s&&!v&&(r.state.value[e]={}),i({});let y;function b(t){let n;p=h=!1,typeof t==`function`?(t(r.state.value[e]),n={type:C.patchFunction,storeId:e,events:void 0}):(ue(r.state.value[e],t),n={type:C.patchObject,payload:t,storeId:e,events:void 0});let i=y=Symbol();ee().then(()=>{y===i&&(p=!0)}),h=!0,N(g,n,r.state.value[e])}let re=s?function(){let{state:e}=n,t=e?e():{};this.$patch(e=>{L(e,t)})}:le;function S(){l.stop(),g.clear(),te.clear(),r._s.delete(e)}let w=(t,n=``)=>{if(F in t)return t[I]=n,t;let i=function(){x(r);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}N(te,{args:n,name:i[I],store:T,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:T,n)}catch(e){throw N(o,e),e}return l instanceof Promise?l.then(e=>(N(a,e),e)).catch(e=>(N(o,e),Promise.reject(e))):(N(a,l),l)};return i[F]=!0,i[I]=n,i},T=ne({_p:r,$id:e,$onAction:M.bind(null,te),$patch:b,$reset:re,$subscribe(t,n={}){let i=M(g,t,n.detached,()=>a()),a=l.run(()=>f(()=>r.state.value[e],r=>{(n.flush===`sync`?h:p)&&t({storeId:e,type:C.direct,events:void 0},r)},L({},d,n)));return i},$dispose:S});r._s.set(e,T);let E=(r._a&&r._a.runWithContext||P)(()=>r._e.run(()=>(l=m()).run(()=>t({action:w}))));for(let t in E){let n=E[t];_(n)&&!pe(n)||c(n)?s||(v&&fe(n)&&(_(n)?n.value=v[t]:ue(n,v[t])),r.state.value[e][t]=n):typeof n==`function`&&(E[t]=w(n,t),u.actions[t]=n)}return L(T,E),L(a(T),E),Object.defineProperty(T,`$state`,{get:()=>r.state.value[e],set:e=>{b(t=>{L(t,e)})}}),r._p.forEach(e=>{L(T,l.run(()=>e({store:T,app:r._a,pinia:r,options:u})))}),v&&s&&n.hydrate&&n.hydrate(T.$state,v),p=!0,h=!0,T}function ge(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=d();return n||=o?g(re,null):null,n&&x(n),n=b,n._s.has(e)||(i?he(e,t,r,n):me(e,r,n)),n._s.get(e)}return a.$id=e,a}function _e(e,t){if(e==null)return;let n=e;for(let e=0;e1&&(t=ve(typeof e!=`object`||!e||!Object.prototype.hasOwnProperty.call(e,r)?Number.isInteger(Number(n[1]))?[]:{}:e[r],t,Array.prototype.slice.call(n,1))),Number.isInteger(Number(r))&&Array.isArray(e)?e.slice()[r]:Object.assign({},e,{[r]:t})}function ye(e,t){if(e==null||t.length===0)return e;if(t.length===1){if(e==null)return e;if(Number.isInteger(t[0])&&Array.isArray(e))return Array.prototype.slice.call(e,0).splice(t[0],1);let n={};for(let t in e)n[t]=e[t];return delete n[t[0]],n}if(e[t[0]]==null){if(Number.isInteger(t[0])&&Array.isArray(e))return Array.prototype.concat.call([],e);let n={};for(let t in e)n[t]=e[t];return n}return ve(e,ye(e[t[0]],Array.prototype.slice.call(t,1)),[t[0]])}function be(e,t){return t.map(e=>e.split(`.`)).map(t=>[t,_e(e,t)]).filter(e=>e[1]!==void 0).reduce((e,t)=>ve(e,t[1],t[0]),{})}function xe(e,t){return t.map(e=>e.split(`.`)).reduce((e,t)=>ye(e,t),e)}function Se(e,{storage:t,serializer:n,key:r,debug:i,pick:a,omit:o,beforeHydrate:s,afterHydrate:c},l,u=!0){try{u&&s?.(l);let i=t.getItem(r);if(i){let t=n.deserialize(i),r=a?be(t,a):t,s=o?xe(r,o):r;e.$patch(s)}u&&c?.(l)}catch(e){i&&console.error(`[pinia-plugin-persistedstate]`,e)}}function Ce(e,{storage:t,serializer:n,key:r,debug:i,pick:a,omit:o}){try{let i=a?be(e,a):e,s=o?xe(i,o):i,c=n.serialize(s);t.setItem(r,c)}catch(e){i&&console.error(`[pinia-plugin-persistedstate]`,e)}}function we(e,t){return typeof e==`function`?e(t):typeof e==`string`?e:t}function Te(e,t,n){let{pinia:r,store:i,options:{persist:a=n}}=e;if(!a)return;if(!(i.$id in r.state.value)){let e=r._s.get(i.$id.replace(`__hot:`,``));e&&Promise.resolve().then(()=>e.$persist());return}let o=(Array.isArray(a)?a:a===!0?[{}]:[a]).map(t);i.$hydrate=({runHooks:t=!0}={})=>{o.forEach(n=>{Se(i,n,e,t)})},i.$persist=()=>{o.forEach(e=>{Ce(i.$state,e)})},o.forEach(t=>{Se(i,t,e),i.$subscribe((e,n)=>Ce(n,t),{detached:!0})})}function Ee(e={}){return function(t){Te(t,n=>{let r=we(n.key,t.store.$id);return{key:(e.key?e.key:e=>e)(r),debug:n.debug??e.debug??!1,serializer:n.serializer??e.serializer??{serialize:e=>JSON.stringify(e),deserialize:e=>JSON.parse(e)},storage:n.storage??e.storage??window.localStorage,beforeHydrate:n.beforeHydrate??e.beforeHydrate,afterHydrate:n.afterHydrate??e.afterHydrate,pick:n.pick,omit:n.omit}},e.auto??!1)}}var De=Ee(),R=typeof document<`u`;function Oe(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function ke(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&Oe(e.default)}var z=Object.assign;function Ae(e,t){let n={};for(let r in t){let i=t[r];n[r]=V(i)?i.map(e):e(i)}return n}var B=()=>{},V=Array.isArray;function je(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var Me=/#/g,Ne=/&/g,Pe=/\//g,Fe=/=/g,Ie=/\?/g,Le=/\+/g,Re=/%5B/g,ze=/%5D/g,Be=/%5E/g,Ve=/%60/g,He=/%7B/g,Ue=/%7C/g,We=/%7D/g,Ge=/%20/g;function Ke(e){return e==null?``:encodeURI(``+e).replace(Ue,`|`).replace(Re,`[`).replace(ze,`]`)}function qe(e){return Ke(e).replace(He,`{`).replace(We,`}`).replace(Be,`^`)}function Je(e){return Ke(e).replace(Le,`%2B`).replace(Ge,`+`).replace(Me,`%23`).replace(Ne,`%26`).replace(Ve,"`").replace(He,`{`).replace(We,`}`).replace(Be,`^`)}function Ye(e){return Je(e).replace(Fe,`%3D`)}function Xe(e){return Ke(e).replace(Me,`%23`).replace(Ie,`%3F`)}function Ze(e){return Xe(e).replace(Pe,`%2F`)}function H(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var Qe=/\/$/,$e=e=>e.replace(Qe,``);function et(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=st(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:H(o)}}function tt(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function nt(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function rt(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&U(t.matched[r],n.matched[i])&&it(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function U(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function it(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(!at(e[n],t[n]))return!1;return!0}function at(e,t){return V(e)?ot(e,t):V(t)?ot(t,e):e===t}function ot(e,t){return V(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function st(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var W={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0},ct=function(e){return e.pop=`pop`,e.push=`push`,e}({}),lt=function(e){return e.back=`back`,e.forward=`forward`,e.unknown=``,e}({});function ut(e){if(!e)if(R){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^\/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),$e(e)}var dt=/^[^#]+#/;function ft(e,t){return e.replace(dt,`#`)+t}function pt(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var mt=()=>({left:window.scrollX,top:window.scrollY});function ht(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=pt(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function gt(e,t){return(history.state?history.state.position-t:-1)+e}var _t=new Map;function vt(e,t){_t.set(e,t)}function yt(e){let t=_t.get(e);return _t.delete(e),t}function bt(e){return typeof e==`string`||e&&typeof e==`object`}function xt(e){return typeof e==`string`||typeof e==`symbol`}var G=function(e){return e[e.MATCHER_NOT_FOUND=1]=`MATCHER_NOT_FOUND`,e[e.NAVIGATION_GUARD_REDIRECT=2]=`NAVIGATION_GUARD_REDIRECT`,e[e.NAVIGATION_ABORTED=4]=`NAVIGATION_ABORTED`,e[e.NAVIGATION_CANCELLED=8]=`NAVIGATION_CANCELLED`,e[e.NAVIGATION_DUPLICATED=16]=`NAVIGATION_DUPLICATED`,e}({}),St=Symbol(``);G.MATCHER_NOT_FOUND,G.NAVIGATION_GUARD_REDIRECT,G.NAVIGATION_ABORTED,G.NAVIGATION_CANCELLED,G.NAVIGATION_DUPLICATED;function K(e,t){return z(Error(),{type:e,[St]:!0},t)}function q(e,t){return e instanceof Error&&St in e&&(t==null||!!(e.type&t))}function Ct(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;ee&&Je(e)):[r&&Je(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function Tt(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=V(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}var Et=Symbol(``),Dt=Symbol(``),Ot=Symbol(``),kt=Symbol(``),At=Symbol(``);function J(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Y(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(K(G.NAVIGATION_ABORTED,{from:n,to:t})):e instanceof Error?c(e):bt(e)?c(K(G.NAVIGATION_GUARD_REDIRECT,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function jt(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(Oe(s)){let c=(s.__vccOpts||s)[t];c&&a.push(Y(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=ke(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&Y(c,n,r,o,e,i)()}))}}return a}function Mt(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;oU(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>U(e,s))||i.push(s))}return[n,r,i]}var Nt=()=>location.protocol+`//`+location.host;function Pt(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),nt(n,``)}return nt(n,e)+r+i}function Ft(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=Pt(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:ct.pop,direction:u?u>0?lt.forward:lt.back:lt.unknown})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(z({},e.state,{scroll:mt()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function It(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?mt():null}}function Lt(e){let{history:t,location:n}=window,r={value:Pt(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:Nt()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,z({},t.state,It(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=z({},i.value,t.state,{forward:e,scroll:mt()});a(o.current,o,!0),a(e,z({},It(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Rt(e){e=ut(e);let t=Lt(e),n=Ft(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=z({location:``,base:e,go:r,createHref:ft.bind(null,e)},t,n);return Object.defineProperty(i,`location`,{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,`state`,{enumerable:!0,get:()=>t.state.value}),i}var X=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.Group=2]=`Group`,e}({}),Z=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.ParamRegExp=2]=`ParamRegExp`,e[e.ParamRegExpEnd=3]=`ParamRegExpEnd`,e[e.EscapeNext=4]=`EscapeNext`,e}(Z||{}),zt={type:X.Static,value:``},Bt=/[a-zA-Z0-9_]/;function Vt(e){if(!e)return[[]];if(e===`/`)return[[zt]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=Z.Static,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===Z.Static?a.push({type:X.Static,value:l}):n===Z.Param||n===Z.ParamRegExp||n===Z.ParamRegExpEnd?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:X.Param,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;st.length?t.length===1&&t[0]===Q.Static+Q.Segment?1:-1:0}function qt(e,t){let n=0,r=e.score,i=t.score;for(;n0&&t[t.length-1]<0}var Yt={strict:!1,end:!0,sensitive:!1};function Xt(e,t,n){let r=z(Gt(Vt(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Zt(e,t){let n=[],r=new Map;t=je(Yt,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=$t(e);s.aliasOf=r&&r.record;let l=je(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push($t(z({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Xt(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!tn(d)&&o(e.name)),on(d)&&c(d),s.children){let e=s.children;for(let t=0;t{o(f)}:B}function o(e){if(xt(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=rn(e,n);n.splice(t,0,e),e.record.name&&!tn(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw K(G.MATCHER_NOT_FOUND,{location:e});s=i.record.name,a=z(Qt(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&Qt(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name);else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw K(G.MATCHER_NOT_FOUND,{location:e,currentLocation:t});s=i.record.name,a=z({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:nn(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function Qt(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function $t(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:en(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,`mods`,{value:{}}),t}function en(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function tn(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function nn(e){return e.reduce((e,t)=>z(e,t.meta),{})}function rn(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;qt(e,t[i])<0?r=i:n=i+1}let i=an(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function an(e){let t=e;for(;t=t.parent;)if(on(t)&&qt(e,t)===0)return t}function on({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function sn(e){let t=g(Ot),r=g(kt),i=o(()=>{let r=n(e.to);return t.resolve(r)}),a=o(()=>{let{matched:e}=i.value,{length:t}=e,n=e[t-1],a=r.matched;if(!n||!a.length)return-1;let o=a.findIndex(U.bind(null,n));if(o>-1)return o;let s=fn(e[t-2]);return t>1&&fn(n)===s&&a[a.length-1].path!==s?a.findIndex(U.bind(null,e[t-2])):o}),s=o(()=>a.value>-1&&dn(r.params,i.value.params)),c=o(()=>a.value>-1&&a.value===r.matched.length-1&&it(r.params,i.value.params));function l(r={}){if(un(r)){let r=t[n(e.replace)?`replace`:`push`](n(e.to)).catch(B);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>r),r}return Promise.resolve()}return{route:i,href:o(()=>i.value.href),isActive:s,isExactActive:c,navigate:l}}function cn(e){return e.length===1?e[0]:e}var ln=s({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:sn,setup(t,{slots:n}){let r=ne(sn(t)),{options:i}=g(Ot),a=o(()=>({[pn(t.activeClass,i.linkActiveClass,`router-link-active`)]:r.isActive,[pn(t.exactActiveClass,i.linkExactActiveClass,`router-link-exact-active`)]:r.isExactActive}));return()=>{let i=n.default&&cn(n.default(r));return t.custom?i:e(`a`,{"aria-current":r.isExactActive?t.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:a.value},i)}}});function un(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function dn(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!V(i)||i.length!==r.length||r.some((e,t)=>e!==i[t]))return!1}return!0}function fn(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var pn=(e,t,n)=>e??t??n,mn=s({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(t,{attrs:r,slots:a}){let s=g(At),c=o(()=>t.route||s.value),l=g(Dt,0),d=o(()=>{let e=n(l),{matched:t}=c.value,r;for(;(r=t[e])&&!r.components;)e++;return e}),p=o(()=>c.value.matched[d.value]);u(Dt,o(()=>d.value+1)),u(Et,p),u(At,c);let m=i();return f(()=>[m.value,p.value,t.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!U(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let n=c.value,i=t.name,o=p.value,s=o&&o.components[i];if(!s)return hn(a.default,{Component:s,route:n});let l=o.props[i],u=e(s,z({},l?l===!0?n.params:typeof l==`function`?l(n):l:null,r,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(o.instances[i]=null)},ref:m}));return hn(a.default,{Component:u,route:n})||u}}});function hn(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var gn=mn;function _n(e){let r=Zt(e.routes,e),i=e.parseQuery||Ct,a=e.stringifyQuery||wt,o=e.history,s=J(),c=J(),l=J(),u=te(W),d=W;R&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let f=Ae.bind(null,e=>``+e),p=Ae.bind(null,Ze),m=Ae.bind(null,H);function h(e,t){let n,i;return xt(e)?(n=r.getRecordMatcher(e),i=t):i=e,r.addRoute(i,n)}function g(e){let t=r.getRecordMatcher(e);t&&r.removeRoute(t)}function _(){return r.getRoutes().map(e=>e.record)}function ne(e){return!!r.getRecordMatcher(e)}function v(e,t){if(t=z({},t||u.value),typeof e==`string`){let n=et(i,e,t.path),a=r.resolve({path:n.path},t),s=o.createHref(n.fullPath);return z(n,a,{params:m(a.params),hash:H(n.hash),redirectedFrom:void 0,href:s})}let n;if(e.path!=null)n=z({},e,{path:et(i,e.path,t.path).path});else{let r=z({},e.params);for(let e in r)r[e]??delete r[e];n=z({},e,{params:p(r)}),t.params=p(t.params)}let s=r.resolve(n,t),c=e.hash||``;s.params=f(m(s.params));let l=tt(a,z({},e,{hash:qe(c),path:s.path})),d=o.createHref(l);return z({fullPath:l,hash:c,query:a===wt?Tt(e.query):e.query||{}},s,{redirectedFrom:void 0,href:d})}function y(e){return typeof e==`string`?et(i,e,u.value.path):z({},e)}function b(e,t){if(d!==e)return K(G.NAVIGATION_CANCELLED,{from:t,to:e})}function x(e){return C(e)}function re(e){return x(z(y(e),{replace:!0}))}function S(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=y(i):{path:i},i.params={}),z({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function C(e,t){let n=d=v(e),r=u.value,i=e.state,o=e.force,s=e.replace===!0,c=S(n,r);if(c)return C(z(y(c),{state:typeof c==`object`?z({},i,c.state):i,force:o,replace:s}),t||n);let l=n;l.redirectedFrom=t;let f;return!o&&rt(a,r,n)&&(f=K(G.NAVIGATION_DUPLICATED,{to:l,from:r}),le(r,r,!0,!1)),(f?Promise.resolve(f):E(l,r)).catch(e=>q(e)?q(e,G.NAVIGATION_GUARD_REDIRECT)?e:ce(e):j(e,l,r)).then(e=>{if(e){if(q(e,G.NAVIGATION_GUARD_REDIRECT))return C(z({replace:s},y(e.to),{state:typeof e.to==`object`?z({},i,e.to.state):i,force:o}),t||l)}else e=D(l,r,!0,s,i);return ie(l,r,e),e})}function w(e,t){let n=b(e,t);return n?Promise.reject(n):Promise.resolve()}function T(e){let t=P.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function E(e,t){let n,[r,i,a]=Mt(e,t);n=jt(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(Y(r,e,t))});let o=w.bind(null,e,t);return n.push(o),I(n).then(()=>{n=[];for(let r of s.list())n.push(Y(r,e,t));return n.push(o),I(n)}).then(()=>{n=jt(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(Y(r,e,t))});return n.push(o),I(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter)if(V(r.beforeEnter))for(let i of r.beforeEnter)n.push(Y(i,e,t));else n.push(Y(r.beforeEnter,e,t));return n.push(o),I(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=jt(a,`beforeRouteEnter`,e,t,T),n.push(o),I(n))).then(()=>{n=[];for(let r of c.list())n.push(Y(r,e,t));return n.push(o),I(n)}).catch(e=>q(e,G.NAVIGATION_CANCELLED)?e:Promise.reject(e))}function ie(e,t,n){l.list().forEach(r=>T(()=>r(e,t,n)))}function D(e,t,n,r,i){let a=b(e,t);if(a)return a;let s=t===W,c=R?history.state:{};n&&(r||s?o.replace(e.fullPath,z({scroll:s&&c&&c.scroll},i)):o.push(e.fullPath,i)),u.value=e,le(e,t,n,s),ce()}let O;function ae(){O||=o.listen((e,t,n)=>{if(!F.listening)return;let r=v(e),i=S(r,F.currentRoute.value);if(i){C(z(i,{replace:!0,force:!0}),r).catch(B);return}d=r;let a=u.value;R&&vt(gt(a.fullPath,n.delta),mt()),E(r,a).catch(e=>q(e,G.NAVIGATION_ABORTED|G.NAVIGATION_CANCELLED)?e:q(e,G.NAVIGATION_GUARD_REDIRECT)?(C(z(y(e.to),{force:!0}),r).then(e=>{q(e,G.NAVIGATION_ABORTED|G.NAVIGATION_DUPLICATED)&&!n.delta&&n.type===ct.pop&&o.go(-1,!1)}).catch(B),Promise.reject()):(n.delta&&o.go(-n.delta,!1),j(e,r,a))).then(e=>{e||=D(r,a,!1),e&&(n.delta&&!q(e,G.NAVIGATION_CANCELLED)?o.go(-n.delta,!1):n.type===ct.pop&&q(e,G.NAVIGATION_ABORTED|G.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),ie(r,a,e)}).catch(B)})}let k=J(),oe=J(),A;function j(e,t,n){ce(e);let r=oe.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function se(){return A&&u.value!==W?Promise.resolve():new Promise((e,t)=>{k.add([e,t])})}function ce(e){return A||(A=!e,ae(),k.list().forEach(([t,n])=>e?n(e):t()),k.reset()),e}function le(t,n,r,i){let{scrollBehavior:a}=e;if(!R||!a)return Promise.resolve();let o=!r&&yt(gt(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return ee().then(()=>a(t,n,o)).then(e=>e&&ht(e)).catch(e=>j(e,t,n))}let M=e=>o.go(e),N,P=new Set,F={currentRoute:u,listening:!0,addRoute:h,removeRoute:g,clearRoutes:r.clearRoutes,hasRoute:ne,getRoutes:_,resolve:v,options:e,push:x,replace:re,go:M,back:()=>M(-1),forward:()=>M(1),beforeEach:s.add,beforeResolve:c.add,afterEach:l.add,onError:oe.add,isReady:se,install(e){e.component(`RouterLink`,ln),e.component(`RouterView`,gn),e.config.globalProperties.$router=F,Object.defineProperty(e.config.globalProperties,`$route`,{enumerable:!0,get:()=>n(u)}),R&&!N&&u.value===W&&(N=!0,x(o.location).catch(e=>{}));let r={};for(let e in W)Object.defineProperty(r,e,{get:()=>u.value[e],enumerable:!0});e.provide(Ot,F),e.provide(kt,t(r)),e.provide(At,u);let i=e.unmount;P.add(e),e.unmount=function(){P.delete(e),P.size<1&&(d=W,O&&O(),O=null,u.value=W,N=!1,A=!1),i()}}};function I(e){return e.reduce((e,t)=>e.then(()=>T(t)),Promise.resolve())}return F}function vn(){return g(Ot)}function yn(e){return g(kt)}var bn=1,$=new class{subscribers;toasts;dismissedToasts;constructor(){this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)});publish=e=>{this.subscribers.forEach(t=>t(e))};addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]};create=e=>{let{message:t,...n}=e,r=typeof e.id==`number`||e.id&&e.id?.length>0?e.id:bn++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r};dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(t=>t({id:e,dismiss:!0})))):this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),e);message=(e,t)=>this.create({...t,message:e,type:`default`});error=(e,t)=>this.create({...t,type:`error`,message:e});success=(e,t)=>this.create({...t,type:`success`,message:e});info=(e,t)=>this.create({...t,type:`info`,message:e});warning=(e,t)=>this.create({...t,type:`warning`,message:e});loading=(e,t)=>this.create({...t,type:`loading`,message:e});promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=Promise.resolve(e instanceof Function?e():e),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],h(e))i=!1,this.create({id:n,type:`default`,message:e});else if(Sn(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description,o=typeof r==`object`&&!h(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`error`,description:a,...o})}else if(e instanceof Error){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!h(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`error`,description:a,...o})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!h(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`success`,description:a,...o})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!h(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`error`,description:a,...o})}}).finally(()=>{i&&(this.dismiss(n),n=void 0),t.finally?.()}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})};custom=(e,t)=>{let n=t?.id||bn++,r=this.toasts.find(e=>e.id===n),i=t?.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(n)&&this.dismissedToasts.delete(n),r?this.toasts=this.toasts.map(r=>r.id===n?(this.publish({...r,component:e,dismissible:i,id:n,...t}),{...r,component:e,dismissible:i,id:n,...t}):r):this.addToast({component:e,dismissible:i,id:n,...t}),n};getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id))};function xn(e,t){let n=t?.id||bn++;return $.create({message:e,id:n,type:`default`,...t}),n}var Sn=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,Cn=xn,wn=Object.assign(Cn,{success:$.success,info:$.info,warning:$.warning,error:$.error,custom:$.custom,message:$.message,promise:$.promise,dismiss:$.dismiss,loading:$.loading},{getHistory:()=>$.toasts,getToasts:()=>$.getActiveToasts()});export{Rt as a,De as c,_n as i,ce as l,ln as n,yn as o,gn as r,vn as s,wn as t,ge as u}; \ No newline at end of file diff --git a/docs/assets/vendor-vue-router-_-a8jZbv.js b/docs/assets/vendor-vue-router-_-a8jZbv.js new file mode 100644 index 0000000..8b2c8c2 --- /dev/null +++ b/docs/assets/vendor-vue-router-_-a8jZbv.js @@ -0,0 +1 @@ +import{Cn as e,Et as t,Ht as n,It as r,Nt as i,Rt as a,gn as o,hn as s,pn as c,qt as l,tn as u,vn as d}from"./game-logic-B_TBzmsj.js";var f=typeof document<`u`;function p(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function m(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&p(e.default)}var h=Object.assign;function g(e,t){let n={};for(let r in t){let i=t[r];n[r]=v(i)?i.map(e):e(i)}return n}var _=()=>{},v=Array.isArray;function ee(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var y=/#/g,te=/&/g,ne=/\//g,re=/=/g,ie=/\?/g,ae=/\+/g,b=/%5B/g,x=/%5D/g,S=/%5E/g,C=/%60/g,oe=/%7B/g,w=/%7C/g,T=/%7D/g,se=/%20/g;function E(e){return e==null?``:encodeURI(``+e).replace(w,`|`).replace(b,`[`).replace(x,`]`)}function ce(e){return E(e).replace(oe,`{`).replace(T,`}`).replace(S,`^`)}function D(e){return E(e).replace(ae,`%2B`).replace(se,`+`).replace(y,`%23`).replace(te,`%26`).replace(C,"`").replace(oe,`{`).replace(T,`}`).replace(S,`^`)}function le(e){return D(e).replace(re,`%3D`)}function O(e){return E(e).replace(y,`%23`).replace(ie,`%3F`)}function ue(e){return O(e).replace(ne,`%2F`)}function k(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var A=/\/$/,de=e=>e.replace(A,``);function fe(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=F(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:k(o)}}function pe(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function j(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function me(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&M(t.matched[r],n.matched[i])&&N(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function M(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function N(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(!P(e[n],t[n]))return!1;return!0}function P(e,t){return v(e)?he(e,t):v(t)?he(t,e):e===t}function he(e,t){return v(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function F(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var I={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0},L=function(e){return e.pop=`pop`,e.push=`push`,e}({}),R=function(e){return e.back=`back`,e.forward=`forward`,e.unknown=``,e}({});function z(e){if(!e)if(f){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^\/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),de(e)}var B=/^[^#]+#/;function V(e,t){return e.replace(B,`#`)+t}function H(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var U=()=>({left:window.scrollX,top:window.scrollY});function ge(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=H(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function _e(e,t){return(history.state?history.state.position-t:-1)+e}var W=new Map;function ve(e,t){W.set(e,t)}function ye(e){let t=W.get(e);return W.delete(e),t}function be(e){return typeof e==`string`||e&&typeof e==`object`}function xe(e){return typeof e==`string`||typeof e==`symbol`}var G=function(e){return e[e.MATCHER_NOT_FOUND=1]=`MATCHER_NOT_FOUND`,e[e.NAVIGATION_GUARD_REDIRECT=2]=`NAVIGATION_GUARD_REDIRECT`,e[e.NAVIGATION_ABORTED=4]=`NAVIGATION_ABORTED`,e[e.NAVIGATION_CANCELLED=8]=`NAVIGATION_CANCELLED`,e[e.NAVIGATION_DUPLICATED=16]=`NAVIGATION_DUPLICATED`,e}({}),Se=Symbol(``);G.MATCHER_NOT_FOUND,G.NAVIGATION_GUARD_REDIRECT,G.NAVIGATION_ABORTED,G.NAVIGATION_CANCELLED,G.NAVIGATION_DUPLICATED;function K(e,t){return h(Error(),{type:e,[Se]:!0},t)}function q(e,t){return e instanceof Error&&Se in e&&(t==null||!!(e.type&t))}function Ce(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;ee&&D(e)):[r&&D(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function Te(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=v(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}var Ee=Symbol(``),De=Symbol(``),J=Symbol(``),Oe=Symbol(``),ke=Symbol(``);function Y(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function X(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(K(G.NAVIGATION_ABORTED,{from:n,to:t})):e instanceof Error?c(e):be(e)?c(K(G.NAVIGATION_GUARD_REDIRECT,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function Ae(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(p(s)){let c=(s.__vccOpts||s)[t];c&&a.push(X(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=m(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&X(c,n,r,o,e,i)()}))}}return a}function je(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;oM(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>M(e,s))||i.push(s))}return[n,r,i]}var Me=()=>location.protocol+`//`+location.host;function Ne(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),j(n,``)}return j(n,e)+r+i}function Pe(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=Ne(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:L.pop,direction:u?u>0?R.forward:R.back:R.unknown})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(h({},e.state,{scroll:U()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function Fe(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?U():null}}function Ie(e){let{history:t,location:n}=window,r={value:Ne(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:Me()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,h({},t.state,Fe(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=h({},i.value,t.state,{forward:e,scroll:U()});a(o.current,o,!0),a(e,h({},Fe(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Le(e){e=z(e);let t=Ie(e),n=Pe(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=h({location:``,base:e,go:r,createHref:V.bind(null,e)},t,n);return Object.defineProperty(i,`location`,{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,`state`,{enumerable:!0,get:()=>t.state.value}),i}var Z=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.Group=2]=`Group`,e}({}),Q=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.ParamRegExp=2]=`ParamRegExp`,e[e.ParamRegExpEnd=3]=`ParamRegExpEnd`,e[e.EscapeNext=4]=`EscapeNext`,e}(Q||{}),Re={type:Z.Static,value:``},ze=/[a-zA-Z0-9_]/;function Be(e){if(!e)return[[]];if(e===`/`)return[[Re]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=Q.Static,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===Q.Static?a.push({type:Z.Static,value:l}):n===Q.Param||n===Q.ParamRegExp||n===Q.ParamRegExpEnd?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:Z.Param,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;st.length?t.length===1&&t[0]===$.Static+$.Segment?1:-1:0}function Ke(e,t){let n=0,r=e.score,i=t.score;for(;n0&&t[t.length-1]<0}var Je={strict:!1,end:!0,sensitive:!1};function Ye(e,t,n){let r=h(We(Be(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Xe(e,t){let n=[],r=new Map;t=ee(Je,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=Qe(e);s.aliasOf=r&&r.record;let l=ee(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(Qe(h({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Ye(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!et(d)&&o(e.name)),it(d)&&c(d),s.children){let e=s.children;for(let t=0;t{o(f)}:_}function o(e){if(xe(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=nt(e,n);n.splice(t,0,e),e.record.name&&!et(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw K(G.MATCHER_NOT_FOUND,{location:e});s=i.record.name,a=h(Ze(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&Ze(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name);else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw K(G.MATCHER_NOT_FOUND,{location:e,currentLocation:t});s=i.record.name,a=h({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:tt(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function Ze(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Qe(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:$e(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,`mods`,{value:{}}),t}function $e(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function et(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function tt(e){return e.reduce((e,t)=>h(e,t.meta),{})}function nt(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;Ke(e,t[i])<0?r=i:n=i+1}let i=rt(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function rt(e){let t=e;for(;t=t.parent;)if(it(t)&&Ke(e,t)===0)return t}function it({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function at(n){let r=a(J),i=a(Oe),o=t(()=>{let t=e(n.to);return r.resolve(t)}),s=t(()=>{let{matched:e}=o.value,{length:t}=e,n=e[t-1],r=i.matched;if(!n||!r.length)return-1;let a=r.findIndex(M.bind(null,n));if(a>-1)return a;let s=ut(e[t-2]);return t>1&&ut(n)===s&&r[r.length-1].path!==s?r.findIndex(M.bind(null,e[t-2])):a}),c=t(()=>s.value>-1&<(i.params,o.value.params)),l=t(()=>s.value>-1&&s.value===i.matched.length-1&&N(i.params,o.value.params));function u(t={}){if(ct(t)){let t=r[e(n.replace)?`replace`:`push`](e(n.to)).catch(_);return n.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>t),t}return Promise.resolve()}return{route:o,href:t(()=>o.value.href),isActive:c,isExactActive:l,navigate:u}}function ot(e){return e.length===1?e[0]:e}var st=i({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:at,setup(e,{slots:n}){let i=c(at(e)),{options:o}=a(J),s=t(()=>({[dt(e.activeClass,o.linkActiveClass,`router-link-active`)]:i.isActive,[dt(e.exactActiveClass,o.linkExactActiveClass,`router-link-exact-active`)]:i.isExactActive}));return()=>{let t=n.default&&ot(n.default(i));return e.custom?t:r(`a`,{"aria-current":i.isExactActive?e.ariaCurrentValue:null,href:i.href,onClick:i.navigate,class:s.value},t)}}});function ct(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function lt(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!v(i)||i.length!==r.length||r.some((e,t)=>e!==i[t]))return!1}return!0}function ut(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var dt=(e,t,n)=>e??t??n,ft=i({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(n,{attrs:i,slots:o}){let c=a(ke),d=t(()=>n.route||c.value),f=a(De,0),p=t(()=>{let t=e(f),{matched:n}=d.value,r;for(;(r=n[t])&&!r.components;)t++;return t}),m=t(()=>d.value.matched[p.value]);l(De,t(()=>p.value+1)),l(Ee,m),l(ke,d);let g=s();return u(()=>[g.value,m.value,n.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!M(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let e=d.value,t=n.name,a=m.value,s=a&&a.components[t];if(!s)return pt(o.default,{Component:s,route:e});let c=a.props[t],l=r(s,h({},c?c===!0?e.params:typeof c==`function`?c(e):c:null,i,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(a.instances[t]=null)},ref:g}));return pt(o.default,{Component:l,route:e})||l}}});function pt(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var mt=ft;function ht(t){let r=Xe(t.routes,t),i=t.parseQuery||Ce,a=t.stringifyQuery||we,s=t.history,c=Y(),l=Y(),u=Y(),p=d(I),m=I;f&&t.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let ee=g.bind(null,e=>``+e),y=g.bind(null,ue),te=g.bind(null,k);function ne(e,t){let n,i;return xe(e)?(n=r.getRecordMatcher(e),i=t):i=e,r.addRoute(i,n)}function re(e){let t=r.getRecordMatcher(e);t&&r.removeRoute(t)}function ie(){return r.getRoutes().map(e=>e.record)}function ae(e){return!!r.getRecordMatcher(e)}function b(e,t){if(t=h({},t||p.value),typeof e==`string`){let n=fe(i,e,t.path),a=r.resolve({path:n.path},t),o=s.createHref(n.fullPath);return h(n,a,{params:te(a.params),hash:k(n.hash),redirectedFrom:void 0,href:o})}let n;if(e.path!=null)n=h({},e,{path:fe(i,e.path,t.path).path});else{let r=h({},e.params);for(let e in r)r[e]??delete r[e];n=h({},e,{params:y(r)}),t.params=y(t.params)}let o=r.resolve(n,t),c=e.hash||``;o.params=ee(te(o.params));let l=pe(a,h({},e,{hash:ce(c),path:o.path})),u=s.createHref(l);return h({fullPath:l,hash:c,query:a===we?Te(e.query):e.query||{}},o,{redirectedFrom:void 0,href:u})}function x(e){return typeof e==`string`?fe(i,e,p.value.path):h({},e)}function S(e,t){if(m!==e)return K(G.NAVIGATION_CANCELLED,{from:t,to:e})}function C(e){return T(e)}function oe(e){return C(h(x(e),{replace:!0}))}function w(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=x(i):{path:i},i.params={}),h({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function T(e,t){let n=m=b(e),r=p.value,i=e.state,o=e.force,s=e.replace===!0,c=w(n,r);if(c)return T(h(x(c),{state:typeof c==`object`?h({},i,c.state):i,force:o,replace:s}),t||n);let l=n;l.redirectedFrom=t;let u;return!o&&me(a,r,n)&&(u=K(G.NAVIGATION_DUPLICATED,{to:l,from:r}),R(r,r,!0,!1)),(u?Promise.resolve(u):D(l,r)).catch(e=>q(e)?q(e,G.NAVIGATION_GUARD_REDIRECT)?e:F(e):P(e,l,r)).then(e=>{if(e){if(q(e,G.NAVIGATION_GUARD_REDIRECT))return T(h({replace:s},x(e.to),{state:typeof e.to==`object`?h({},i,e.to.state):i,force:o}),t||l)}else e=O(l,r,!0,s,i);return le(l,r,e),e})}function se(e,t){let n=S(e,t);return n?Promise.reject(n):Promise.resolve()}function E(e){let t=V.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function D(e,t){let n,[r,i,a]=je(e,t);n=Ae(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(X(r,e,t))});let o=se.bind(null,e,t);return n.push(o),W(n).then(()=>{n=[];for(let r of c.list())n.push(X(r,e,t));return n.push(o),W(n)}).then(()=>{n=Ae(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(X(r,e,t))});return n.push(o),W(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter)if(v(r.beforeEnter))for(let i of r.beforeEnter)n.push(X(i,e,t));else n.push(X(r.beforeEnter,e,t));return n.push(o),W(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=Ae(a,`beforeRouteEnter`,e,t,E),n.push(o),W(n))).then(()=>{n=[];for(let r of l.list())n.push(X(r,e,t));return n.push(o),W(n)}).catch(e=>q(e,G.NAVIGATION_CANCELLED)?e:Promise.reject(e))}function le(e,t,n){u.list().forEach(r=>E(()=>r(e,t,n)))}function O(e,t,n,r,i){let a=S(e,t);if(a)return a;let o=t===I,c=f?history.state:{};n&&(r||o?s.replace(e.fullPath,h({scroll:o&&c&&c.scroll},i)):s.push(e.fullPath,i)),p.value=e,R(e,t,n,o),F()}let A;function de(){A||=s.listen((e,t,n)=>{if(!H.listening)return;let r=b(e),i=w(r,H.currentRoute.value);if(i){T(h(i,{replace:!0,force:!0}),r).catch(_);return}m=r;let a=p.value;f&&ve(_e(a.fullPath,n.delta),U()),D(r,a).catch(e=>q(e,G.NAVIGATION_ABORTED|G.NAVIGATION_CANCELLED)?e:q(e,G.NAVIGATION_GUARD_REDIRECT)?(T(h(x(e.to),{force:!0}),r).then(e=>{q(e,G.NAVIGATION_ABORTED|G.NAVIGATION_DUPLICATED)&&!n.delta&&n.type===L.pop&&s.go(-1,!1)}).catch(_),Promise.reject()):(n.delta&&s.go(-n.delta,!1),P(e,r,a))).then(e=>{e||=O(r,a,!1),e&&(n.delta&&!q(e,G.NAVIGATION_CANCELLED)?s.go(-n.delta,!1):n.type===L.pop&&q(e,G.NAVIGATION_ABORTED|G.NAVIGATION_DUPLICATED)&&s.go(-1,!1)),le(r,a,e)}).catch(_)})}let j=Y(),M=Y(),N;function P(e,t,n){F(e);let r=M.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function he(){return N&&p.value!==I?Promise.resolve():new Promise((e,t)=>{j.add([e,t])})}function F(e){return N||(N=!e,de(),j.list().forEach(([t,n])=>e?n(e):t()),j.reset()),e}function R(e,r,i,a){let{scrollBehavior:o}=t;if(!f||!o)return Promise.resolve();let s=!i&&ye(_e(e.fullPath,0))||(a||!i)&&history.state&&history.state.scroll||null;return n().then(()=>o(e,r,s)).then(e=>e&&ge(e)).catch(t=>P(t,e,r))}let z=e=>s.go(e),B,V=new Set,H={currentRoute:p,listening:!0,addRoute:ne,removeRoute:re,clearRoutes:r.clearRoutes,hasRoute:ae,getRoutes:ie,resolve:b,options:t,push:C,replace:oe,go:z,back:()=>z(-1),forward:()=>z(1),beforeEach:c.add,beforeResolve:l.add,afterEach:u.add,onError:M.add,isReady:he,install(t){t.component(`RouterLink`,st),t.component(`RouterView`,mt),t.config.globalProperties.$router=H,Object.defineProperty(t.config.globalProperties,`$route`,{enumerable:!0,get:()=>e(p)}),f&&!B&&p.value===I&&(B=!0,C(s.location).catch(e=>{}));let n={};for(let e in I)Object.defineProperty(n,e,{get:()=>p.value[e],enumerable:!0});t.provide(J,H),t.provide(Oe,o(n)),t.provide(ke,p);let r=t.unmount;V.add(t),t.unmount=function(){V.delete(t),V.size<1&&(m=I,A&&A(),A=null,p.value=I,B=!1,N=!1),r()}}};function W(e){return e.reduce((e,t)=>e.then(()=>E(t)),Promise.resolve())}return H}function gt(){return a(J)}function _t(e){return a(Oe)}export{_t as a,Le as i,mt as n,gt as o,ht as r,st as t}; \ No newline at end of file diff --git a/docs/assets/vendor-vueuse-CXzdKKhY.js b/docs/assets/vendor-vueuse-CXzdKKhY.js new file mode 100644 index 0000000..1553d35 --- /dev/null +++ b/docs/assets/vendor-vueuse-CXzdKKhY.js @@ -0,0 +1 @@ +import{Cn as e,Et as t,Ht as n,Lt as r,Pt as i,Sn as a,Wt as o,hn as s,nn as c,tn as l,vn as u}from"./game-logic-B_TBzmsj.js";import{a as d,i as f,l as p,o as m,r as h,s as g,u as _}from"./vendor-others-DiSZfaku.js";var v=f?window:void 0,y=f?window.document:void 0;f&&window.navigator,f&&window.location;function b(e){let t=a(e);return t?.$el??t}function x(...n){let r=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),i=t(()=>{let e=p(a(n[0])).filter(e=>e!=null);return e.every(e=>typeof e!=`string`)?e:void 0});return _(()=>[i.value?.map(e=>b(e))??[v].filter(e=>e!=null),p(a(i.value?n[1]:n[0])),p(e(i.value?n[2]:n[1])),a(i.value?n[3]:n[2])],([e,t,n,i],a,o)=>{if(!e?.length||!t?.length||!n?.length)return;let s=m(i)?{...i}:i,c=e.flatMap(e=>t.flatMap(t=>n.map(n=>r(e,t,n,s))));o(()=>{c.forEach(e=>e())})},{flush:`post`})}function S(){let e=u(!1),t=i();return t&&o(()=>{e.value=!0},t),e}function C(e){let n=S();return t(()=>(n.value,!!e()))}var w=Symbol(`vueuse-ssr-width`);function T(){let e=r()?h(w,null):null;return typeof e==`number`?e:void 0}function E(e,n={}){let{window:r=v,ssrWidth:i=T()}=n,o=C(()=>r&&`matchMedia`in r&&typeof r.matchMedia==`function`),s=u(typeof i==`number`),l=u(),d=u(!1);return c(()=>{if(s.value){s.value=!o.value,d.value=a(e).split(`,`).some(e=>{let t=e.includes(`not all`),n=e.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),r=e.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),a=!!(n||r);return n&&a&&(a=i>=g(n[1])),r&&a&&(a=i<=g(r[1])),t?!a:a});return}o.value&&(l.value=r.matchMedia(a(e)),d.value=l.value.matches)}),x(l,`change`,e=>{d.value=e.matches},{passive:!0}),t(()=>d.value)}function D(e){return JSON.parse(JSON.stringify(e))}function O(e,r,a,o={}){var c,u;let{clone:f=!1,passive:p=!1,eventName:m,deep:h=!1,defaultValue:g,shouldEmit:_}=o,v=i(),y=a||v?.emit||(v==null||(c=v.$emit)==null?void 0:c.bind(v))||(v==null||(u=v.proxy)==null||(u=u.$emit)==null?void 0:u.bind(v?.proxy)),b=m;r||=`modelValue`,b||=`update:${r.toString()}`;let x=e=>f?typeof f==`function`?f(e):D(e):e,S=()=>d(e[r])?x(e[r]):g,C=e=>{_?_(e)&&y(b,e):y(b,e)};if(p){let t=s(S()),i=!1;return l(()=>e[r],e=>{i||(i=!0,t.value=x(e),n(()=>i=!1))}),l(t,t=>{!i&&(t!==e[r]||h)&&C(t)},{deep:h}),t}else return t({get(){return S()},set(e){C(e)}})}export{O as i,x as n,E as r,y as t}; \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index c72124e..b69aa06 100644 --- a/docs/index.html +++ b/docs/index.html @@ -7,11 +7,21 @@ OGame-Vue-Ts - + + - - - + + + + + + + + + + + + diff --git a/package.json b/package.json index c83621a..5032096 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,12 @@ "id": "2zBlHPUA6E", "author": "setube", "private": true, - "version": "1.0.0", + "version": "1.1.0", + "buildDate": "2025/12/13 11:11:17", "type": "module", "scripts": { "dev": "vite --port 25121", - "build": "vue-tsc -b && vite build", + "build": "vue-tsc -b && vite build && node update-build-date.js", "preview": "vite preview" }, "dependencies": { @@ -47,4 +48,4 @@ } }, "packageManager": "pnpm@10.13.1+sha512.37ebf1a5c7a30d5fabe0c5df44ee8da4c965ca0c5af3dbab28c3a1681b70a256218d05c81c9c0dcf767ef6b8551eb5b960042b9ed4300c59242336377e01cfad" -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4698250..158f9d8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: dependencies: '@tailwindcss/vite': specifier: ^4.1.17 - version: 4.1.17(rolldown-vite@7.2.5(@types/node@24.10.2)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)) + version: 4.1.17(rolldown-vite@7.2.5(@types/node@24.10.2)(jiti@2.6.1)(terser@5.44.1)) '@tanstack/vue-table': specifier: ^8.21.3 version: 8.21.3(vue@3.5.25(typescript@5.9.3)) @@ -71,16 +71,10 @@ importers: version: 24.10.2 '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.2(rolldown-vite@7.2.5(@types/node@24.10.2)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1))(vue@3.5.25(typescript@5.9.3)) + version: 6.0.2(rolldown-vite@7.2.5(@types/node@24.10.2)(jiti@2.6.1)(terser@5.44.1))(vue@3.5.25(typescript@5.9.3)) '@vue/tsconfig': specifier: ^0.8.1 version: 0.8.1(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) - esbuild: - specifier: ^0.27.1 - version: 0.27.1 - terser: - specifier: ^5.44.1 - version: 5.44.1 tw-animate-css: specifier: ^1.4.0 version: 1.4.0 @@ -89,7 +83,7 @@ importers: version: 5.9.3 vite: specifier: npm:rolldown-vite@7.2.5 - version: rolldown-vite@7.2.5(@types/node@24.10.2)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1) + version: rolldown-vite@7.2.5(@types/node@24.10.2)(jiti@2.6.1)(terser@5.44.1) vue-tsc: specifier: ^3.1.4 version: 3.1.8(typescript@5.9.3) @@ -122,162 +116,6 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@esbuild/aix-ppc64@0.27.1': - resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.27.1': - resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.27.1': - resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.27.1': - resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.27.1': - resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.27.1': - resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.27.1': - resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.27.1': - resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.27.1': - resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.27.1': - resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.27.1': - resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.27.1': - resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.27.1': - resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.27.1': - resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.27.1': - resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.27.1': - resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.27.1': - resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.27.1': - resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.27.1': - resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.27.1': - resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.27.1': - resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.27.1': - resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.27.1': - resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.27.1': - resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.27.1': - resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.27.1': - resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@floating-ui/core@1.7.3': resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} @@ -696,11 +534,6 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - esbuild@0.27.1: - resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} - engines: {node: '>=18'} - hasBin: true - estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -1054,84 +887,6 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.27.1': - optional: true - - '@esbuild/android-arm64@0.27.1': - optional: true - - '@esbuild/android-arm@0.27.1': - optional: true - - '@esbuild/android-x64@0.27.1': - optional: true - - '@esbuild/darwin-arm64@0.27.1': - optional: true - - '@esbuild/darwin-x64@0.27.1': - optional: true - - '@esbuild/freebsd-arm64@0.27.1': - optional: true - - '@esbuild/freebsd-x64@0.27.1': - optional: true - - '@esbuild/linux-arm64@0.27.1': - optional: true - - '@esbuild/linux-arm@0.27.1': - optional: true - - '@esbuild/linux-ia32@0.27.1': - optional: true - - '@esbuild/linux-loong64@0.27.1': - optional: true - - '@esbuild/linux-mips64el@0.27.1': - optional: true - - '@esbuild/linux-ppc64@0.27.1': - optional: true - - '@esbuild/linux-riscv64@0.27.1': - optional: true - - '@esbuild/linux-s390x@0.27.1': - optional: true - - '@esbuild/linux-x64@0.27.1': - optional: true - - '@esbuild/netbsd-arm64@0.27.1': - optional: true - - '@esbuild/netbsd-x64@0.27.1': - optional: true - - '@esbuild/openbsd-arm64@0.27.1': - optional: true - - '@esbuild/openbsd-x64@0.27.1': - optional: true - - '@esbuild/openharmony-arm64@0.27.1': - optional: true - - '@esbuild/sunos-x64@0.27.1': - optional: true - - '@esbuild/win32-arm64@0.27.1': - optional: true - - '@esbuild/win32-ia32@0.27.1': - optional: true - - '@esbuild/win32-x64@0.27.1': - optional: true - '@floating-ui/core@1.7.3': dependencies: '@floating-ui/utils': 0.2.10 @@ -1176,6 +931,7 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 + optional: true '@jridgewell/sourcemap-codec@1.5.5': {} @@ -1306,12 +1062,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.17 '@tailwindcss/oxide-win32-x64-msvc': 4.1.17 - '@tailwindcss/vite@4.1.17(rolldown-vite@7.2.5(@types/node@24.10.2)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1))': + '@tailwindcss/vite@4.1.17(rolldown-vite@7.2.5(@types/node@24.10.2)(jiti@2.6.1)(terser@5.44.1))': dependencies: '@tailwindcss/node': 4.1.17 '@tailwindcss/oxide': 4.1.17 tailwindcss: 4.1.17 - vite: rolldown-vite@7.2.5(@types/node@24.10.2)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1) + vite: rolldown-vite@7.2.5(@types/node@24.10.2)(jiti@2.6.1)(terser@5.44.1) '@tanstack/table-core@8.21.3': {} @@ -1342,10 +1098,10 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@vitejs/plugin-vue@6.0.2(rolldown-vite@7.2.5(@types/node@24.10.2)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1))(vue@3.5.25(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.2(rolldown-vite@7.2.5(@types/node@24.10.2)(jiti@2.6.1)(terser@5.44.1))(vue@3.5.25(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.50 - vite: rolldown-vite@7.2.5(@types/node@24.10.2)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1) + vite: rolldown-vite@7.2.5(@types/node@24.10.2)(jiti@2.6.1)(terser@5.44.1) vue: 3.5.25(typescript@5.9.3) '@volar/language-core@2.4.26': @@ -1481,7 +1237,8 @@ snapshots: dependencies: vue: 3.5.25(typescript@5.9.3) - acorn@8.15.0: {} + acorn@8.15.0: + optional: true alien-signals@3.1.1: {} @@ -1491,7 +1248,8 @@ snapshots: birpc@2.9.0: {} - buffer-from@1.1.2: {} + buffer-from@1.1.2: + optional: true class-variance-authority@0.7.1: dependencies: @@ -1499,7 +1257,8 @@ snapshots: clsx@2.1.1: {} - commander@2.20.3: {} + commander@2.20.3: + optional: true copy-anything@4.0.5: dependencies: @@ -1520,35 +1279,6 @@ snapshots: entities@4.5.0: {} - esbuild@0.27.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.27.1 - '@esbuild/android-arm': 0.27.1 - '@esbuild/android-arm64': 0.27.1 - '@esbuild/android-x64': 0.27.1 - '@esbuild/darwin-arm64': 0.27.1 - '@esbuild/darwin-x64': 0.27.1 - '@esbuild/freebsd-arm64': 0.27.1 - '@esbuild/freebsd-x64': 0.27.1 - '@esbuild/linux-arm': 0.27.1 - '@esbuild/linux-arm64': 0.27.1 - '@esbuild/linux-ia32': 0.27.1 - '@esbuild/linux-loong64': 0.27.1 - '@esbuild/linux-mips64el': 0.27.1 - '@esbuild/linux-ppc64': 0.27.1 - '@esbuild/linux-riscv64': 0.27.1 - '@esbuild/linux-s390x': 0.27.1 - '@esbuild/linux-x64': 0.27.1 - '@esbuild/netbsd-arm64': 0.27.1 - '@esbuild/netbsd-x64': 0.27.1 - '@esbuild/openbsd-arm64': 0.27.1 - '@esbuild/openbsd-x64': 0.27.1 - '@esbuild/openharmony-arm64': 0.27.1 - '@esbuild/sunos-x64': 0.27.1 - '@esbuild/win32-arm64': 0.27.1 - '@esbuild/win32-ia32': 0.27.1 - '@esbuild/win32-x64': 0.27.1 - estree-walker@2.0.2: {} fdir@6.5.0(picomatch@4.0.3): @@ -1679,7 +1409,7 @@ snapshots: rfdc@1.4.1: {} - rolldown-vite@7.2.5(@types/node@24.10.2)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1): + rolldown-vite@7.2.5(@types/node@24.10.2)(jiti@2.6.1)(terser@5.44.1): dependencies: '@oxc-project/runtime': 0.97.0 fdir: 6.5.0(picomatch@4.0.3) @@ -1690,7 +1420,6 @@ snapshots: tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.2 - esbuild: 0.27.1 fsevents: 2.3.3 jiti: 2.6.1 terser: 5.44.1 @@ -1721,8 +1450,10 @@ snapshots: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + optional: true - source-map@0.6.1: {} + source-map@0.6.1: + optional: true speakingurl@14.0.1: {} @@ -1742,6 +1473,7 @@ snapshots: acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 + optional: true tinyglobby@0.2.15: dependencies: diff --git a/public/CNAME b/public/CNAME new file mode 100644 index 0000000..ec747bb --- /dev/null +++ b/public/CNAME @@ -0,0 +1 @@ +ogame-vue-ts.wenzi.games \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index a7439fb..8222e95 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,150 +1,131 @@ diff --git a/src/components/CardUnlockOverlay.vue b/src/components/CardUnlockOverlay.vue index 7ef25d1..6a3158a 100644 --- a/src/components/CardUnlockOverlay.vue +++ b/src/components/CardUnlockOverlay.vue @@ -30,6 +30,7 @@ interface Props { requirements?: Partial> + currentLevel?: number // 当前建筑/科技等级,用于判断是否已解锁 } const props = defineProps() @@ -39,6 +40,8 @@ const requirementsDialog = ref | null>(null) const isUnlocked = computed(() => { + // 如果已经建造过(level > 0),则认为已解锁,不显示遮罩 + if (props.currentLevel !== undefined && props.currentLevel > 0) return true if (!props.requirements || !gameStore.currentPlanet) return true return publicLogic.checkRequirements(gameStore.currentPlanet, gameStore.player.technologies, props.requirements) }) diff --git a/src/components/NumberWithTooltip.vue b/src/components/NumberWithTooltip.vue new file mode 100644 index 0000000..6424f5c --- /dev/null +++ b/src/components/NumberWithTooltip.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/components/SpyReportDialog.vue b/src/components/SpyReportDialog.vue new file mode 100644 index 0000000..de43da0 --- /dev/null +++ b/src/components/SpyReportDialog.vue @@ -0,0 +1,141 @@ + + + diff --git a/src/components/detail-views/BuildingDetailView.vue b/src/components/detail-views/BuildingDetailView.vue index 589b14c..5a16ac7 100644 --- a/src/components/detail-views/BuildingDetailView.vue +++ b/src/components/detail-views/BuildingDetailView.vue @@ -21,24 +21,36 @@ {{ level }} {{ level }} - {{ formatNumber(getLevelData(level).cost.metal) }} - {{ formatNumber(getLevelData(level).cost.crystal) }} - {{ formatNumber(getLevelData(level).cost.deuterium) }} + + + + + + + + + {{ formatTime(getLevelData(level).buildTime) }} - +{{ formatNumber(getLevelData(level).production) }}/{{ t('resources.perHour') }} + + + + /{{ t('resources.perHour') }} - - -{{ formatNumber(getLevelData(level).consumption) }} + - + - - +{{ getLevelData(level).points }} + + + + + @@ -54,15 +66,21 @@

{{ t('resources.metal') }}: - {{ formatNumber(totalStats.metal) }} + + +
{{ t('resources.crystal') }}: - {{ formatNumber(totalStats.crystal) }} + + +
{{ t('resources.deuterium') }}: - {{ formatNumber(totalStats.deuterium) }} + + +
@@ -72,7 +90,9 @@ {{ t('buildings.totalPoints') }} -
{{ formatNumber(totalStats.points) }}
+
+ +

{{ t('buildings.levelRange') }}: {{ Math.max(0, currentLevel - 10) }} - {{ Math.min(currentLevel + 10, currentLevel + 10) }}

@@ -89,8 +109,10 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Badge } from '@/components/ui/badge' + import NumberWithTooltip from '@/components/NumberWithTooltip.vue' import * as buildingLogic from '@/logic/buildingLogic' import * as pointsLogic from '@/logic/pointsLogic' + import { formatTime } from '@/utils/format' const { t } = useI18n() @@ -99,12 +121,11 @@ currentLevel: number }>() - // 等级范围:当前等级 ±10 + // 等级范围:当前等级 +10 const levelRange = computed(() => { - const start = Math.max(0, props.currentLevel - 10) const end = props.currentLevel + 10 const levels = [] - for (let i = start; i <= end; i++) { + for (let i = props.currentLevel; i <= end; i++) { levels.push(i) } return levels @@ -129,18 +150,18 @@ let production = 0 let consumption = 0 - // 资源矿产量 + // 资源矿产量(与 resourceLogic.ts 保持一致) if (props.buildingType === 'metalMine') { - production = Math.floor(30 * level * Math.pow(1.1, level)) + production = Math.floor(1500 * level * Math.pow(1.5, level)) } else if (props.buildingType === 'crystalMine') { - production = Math.floor(20 * level * Math.pow(1.1, level)) + production = Math.floor(1000 * level * Math.pow(1.5, level)) } else if (props.buildingType === 'deuteriumSynthesizer') { - production = Math.floor(10 * level * Math.pow(1.1, level)) + production = Math.floor(500 * level * Math.pow(1.5, level)) } - // 能量产出 + // 能量产出(与 resourceLogic.ts 保持一致) if (props.buildingType === 'solarPlant') { - production = Math.floor(20 * level * Math.pow(1.1, level)) + production = Math.floor(50 * level * Math.pow(1.1, level)) } // 能量消耗(矿场和合成器) @@ -178,18 +199,4 @@ return { metal, crystal, deuterium, points } }) - - const formatNumber = (num: number): string => { - return num.toLocaleString() - } - - const formatTime = (seconds: number): string => { - if (seconds < 60) return `${seconds}${t('common.timeSecond')}` - const minutes = Math.floor(seconds / 60) - const secs = seconds % 60 - if (minutes < 60) return `${minutes}${t('common.timeMinute')}${secs}${t('common.timeSecond')}` - const hours = Math.floor(minutes / 60) - const mins = minutes % 60 - return `${hours}${t('common.timeHour')}${mins}${t('common.timeMinute')}` - } diff --git a/src/components/detail-views/DefenseDetailView.vue b/src/components/detail-views/DefenseDetailView.vue index b2b6f5e..151ad48 100644 --- a/src/components/detail-views/DefenseDetailView.vue +++ b/src/components/detail-views/DefenseDetailView.vue @@ -10,7 +10,9 @@ -
{{ formatNumber(config.attack) }}
+
+ +
@@ -22,7 +24,9 @@ -
{{ formatNumber(config.shield) }}
+
+ +
@@ -34,7 +38,9 @@ -
{{ formatNumber(config.armor) }}
+
+ +
@@ -48,19 +54,27 @@
{{ t('resources.metal') }}: - {{ formatNumber(config.cost.metal) }} + + +
{{ t('resources.crystal') }}: - {{ formatNumber(config.cost.crystal) }} + + +
{{ t('resources.deuterium') }}: - {{ formatNumber(config.cost.deuterium) }} + + +
{{ t('player.points') }}: - {{ pointsPerUnit }} + + +
@@ -92,22 +106,31 @@
{{ t('resources.metal') }}: - {{ formatNumber(batchCost.metal) }} + + +
{{ t('resources.crystal') }}: - {{ formatNumber(batchCost.crystal) }} + + +
{{ t('resources.deuterium') }}: - {{ formatNumber(batchCost.deuterium) }} + + +

{{ t('defense.totalTime') }}:

{{ formatTime(config.buildTime * quantity) }}
-

{{ t('player.points') }}: +{{ formatNumber(batchPoints) }}

+

+ {{ t('player.points') }}: + + +

@@ -122,9 +145,11 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' + import NumberWithTooltip from '@/components/NumberWithTooltip.vue' import { Sword, Shield, ShieldCheck } from 'lucide-vue-next' import * as pointsLogic from '@/logic/pointsLogic' import { DEFENSES } from '@/config/gameConfig' + import { formatTime } from '@/utils/format' const { t } = useI18n() @@ -151,18 +176,4 @@ const batchPoints = computed(() => { return pointsLogic.calculateDefensePoints(props.defenseType, quantity.value) }) - - const formatNumber = (num: number): string => { - return num.toLocaleString() - } - - const formatTime = (seconds: number): string => { - if (seconds < 60) return `${seconds}${t('common.timeSecond')}` - const minutes = Math.floor(seconds / 60) - const secs = seconds % 60 - if (minutes < 60) return `${minutes}${t('common.timeMinute')}${secs}${t('common.timeSecond')}` - const hours = Math.floor(minutes / 60) - const mins = minutes % 60 - return `${hours}${t('common.timeHour')}${mins}${t('common.timeMinute')}` - } diff --git a/src/components/detail-views/ShipDetailView.vue b/src/components/detail-views/ShipDetailView.vue index 3c443e7..eb1db8e 100644 --- a/src/components/detail-views/ShipDetailView.vue +++ b/src/components/detail-views/ShipDetailView.vue @@ -10,7 +10,9 @@ -
{{ formatNumber(config.attack) }}
+
+ +
@@ -22,7 +24,9 @@ -
{{ formatNumber(config.shield) }}
+
+ +
@@ -34,7 +38,9 @@ -
{{ formatNumber(config.armor) }}
+
+ +
@@ -46,7 +52,9 @@ -
{{ formatNumber(config.speed) }}
+
+ +
@@ -58,7 +66,9 @@ -
{{ formatNumber(config.cargoCapacity) }}
+
+ +
@@ -70,7 +80,9 @@ -
{{ formatNumber(config.fuelConsumption) }}
+
+ +
@@ -84,19 +96,27 @@
{{ t('resources.metal') }}: - {{ formatNumber(config.cost.metal) }} + + +
{{ t('resources.crystal') }}: - {{ formatNumber(config.cost.crystal) }} + + +
{{ t('resources.deuterium') }}: - {{ formatNumber(config.cost.deuterium) }} + + +
{{ t('player.points') }}: - {{ pointsPerUnit }} + + +
@@ -128,22 +148,31 @@
{{ t('resources.metal') }}: - {{ formatNumber(batchCost.metal) }} + + +
{{ t('resources.crystal') }}: - {{ formatNumber(batchCost.crystal) }} + + +
{{ t('resources.deuterium') }}: - {{ formatNumber(batchCost.deuterium) }} + + +

{{ t('shipyard.totalTime') }}:

{{ formatTime(config.buildTime * quantity) }}
-

{{ t('player.points') }}: +{{ formatNumber(batchPoints) }}

+

+ {{ t('player.points') }}: + + +

@@ -158,9 +187,11 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' + import NumberWithTooltip from '@/components/NumberWithTooltip.vue' import { Sword, Shield, ShieldCheck, Zap, Package, Fuel } from 'lucide-vue-next' import * as pointsLogic from '@/logic/pointsLogic' import { SHIPS } from '@/config/gameConfig' + import { formatTime } from '@/utils/format' const { t } = useI18n() @@ -187,18 +218,4 @@ const batchPoints = computed(() => { return pointsLogic.calculateShipPoints(props.shipType, quantity.value) }) - - const formatNumber = (num: number): string => { - return num.toLocaleString() - } - - const formatTime = (seconds: number): string => { - if (seconds < 60) return `${seconds}${t('common.timeSecond')}` - const minutes = Math.floor(seconds / 60) - const secs = seconds % 60 - if (minutes < 60) return `${minutes}${t('common.timeMinute')}${secs}${t('common.timeSecond')}` - const hours = Math.floor(minutes / 60) - const mins = minutes % 60 - return `${hours}${t('common.timeHour')}${mins}${t('common.timeMinute')}` - } diff --git a/src/components/detail-views/TechnologyDetailView.vue b/src/components/detail-views/TechnologyDetailView.vue index 0570cbe..b9c585e 100644 --- a/src/components/detail-views/TechnologyDetailView.vue +++ b/src/components/detail-views/TechnologyDetailView.vue @@ -19,12 +19,21 @@ {{ level }} {{ level }} - {{ formatNumber(getLevelData(level).cost.metal) }} - {{ formatNumber(getLevelData(level).cost.crystal) }} - {{ formatNumber(getLevelData(level).cost.deuterium) }} + + + + + + + + + {{ formatTime(getLevelData(level).researchTime) }} - +{{ getLevelData(level).points }} + + + + + @@ -40,15 +49,21 @@
{{ t('resources.metal') }}: - {{ formatNumber(totalStats.metal) }} + + +
{{ t('resources.crystal') }}: - {{ formatNumber(totalStats.crystal) }} + + +
{{ t('resources.deuterium') }}: - {{ formatNumber(totalStats.deuterium) }} + + +
@@ -58,7 +73,9 @@ {{ t('research.totalPoints') }} -
{{ formatNumber(totalStats.points) }}
+
+ +

{{ t('research.levelRange') }}: {{ Math.max(0, currentLevel - 10) }} - {{ Math.min(currentLevel + 10, currentLevel + 10) }}

@@ -75,8 +92,10 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Badge } from '@/components/ui/badge' + import NumberWithTooltip from '@/components/NumberWithTooltip.vue' import * as researchLogic from '@/logic/researchLogic' import * as pointsLogic from '@/logic/pointsLogic' + import { formatTime } from '@/utils/format' const { t } = useI18n() @@ -85,12 +104,11 @@ currentLevel: number }>() - // 等级范围:当前等级 ±10 + // 等级范围:当前等级 +10 const levelRange = computed(() => { - const start = Math.max(0, props.currentLevel - 10) const end = props.currentLevel + 10 const levels = [] - for (let i = start; i <= end; i++) { + for (let i = props.currentLevel; i <= end; i++) { levels.push(i) } return levels @@ -137,18 +155,4 @@ return { metal, crystal, deuterium, points } }) - - const formatNumber = (num: number): string => { - return num.toLocaleString() - } - - const formatTime = (seconds: number): string => { - if (seconds < 60) return `${seconds}${t('common.timeSecond')}` - const minutes = Math.floor(seconds / 60) - const secs = seconds % 60 - if (minutes < 60) return `${minutes}${t('common.timeMinute')}${secs}${t('common.timeSecond')}` - const hours = Math.floor(minutes / 60) - const mins = minutes % 60 - return `${hours}${t('common.timeHour')}${mins}${t('common.timeMinute')}` - } diff --git a/src/components/ui/input/Input.vue b/src/components/ui/input/Input.vue index 755e791..c370346 100644 --- a/src/components/ui/input/Input.vue +++ b/src/components/ui/input/Input.vue @@ -14,22 +14,22 @@ diff --git a/src/components/ui/separator/Separator.vue b/src/components/ui/separator/Separator.vue new file mode 100644 index 0000000..78d60ec --- /dev/null +++ b/src/components/ui/separator/Separator.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/separator/index.ts b/src/components/ui/separator/index.ts new file mode 100644 index 0000000..4407287 --- /dev/null +++ b/src/components/ui/separator/index.ts @@ -0,0 +1 @@ +export { default as Separator } from "./Separator.vue" diff --git a/src/components/ui/sheet/Sheet.vue b/src/components/ui/sheet/Sheet.vue new file mode 100644 index 0000000..8522f84 --- /dev/null +++ b/src/components/ui/sheet/Sheet.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/components/ui/sheet/SheetClose.vue b/src/components/ui/sheet/SheetClose.vue new file mode 100644 index 0000000..39a942c --- /dev/null +++ b/src/components/ui/sheet/SheetClose.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/components/ui/sheet/SheetContent.vue b/src/components/ui/sheet/SheetContent.vue new file mode 100644 index 0000000..e0c4b8f --- /dev/null +++ b/src/components/ui/sheet/SheetContent.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/components/ui/sheet/SheetDescription.vue b/src/components/ui/sheet/SheetDescription.vue new file mode 100644 index 0000000..6c8ba0a --- /dev/null +++ b/src/components/ui/sheet/SheetDescription.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/sheet/SheetFooter.vue b/src/components/ui/sheet/SheetFooter.vue new file mode 100644 index 0000000..5fcf751 --- /dev/null +++ b/src/components/ui/sheet/SheetFooter.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/sheet/SheetHeader.vue b/src/components/ui/sheet/SheetHeader.vue new file mode 100644 index 0000000..b6305ab --- /dev/null +++ b/src/components/ui/sheet/SheetHeader.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/components/ui/sheet/SheetOverlay.vue b/src/components/ui/sheet/SheetOverlay.vue new file mode 100644 index 0000000..220452a --- /dev/null +++ b/src/components/ui/sheet/SheetOverlay.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/sheet/SheetTitle.vue b/src/components/ui/sheet/SheetTitle.vue new file mode 100644 index 0000000..889ae54 --- /dev/null +++ b/src/components/ui/sheet/SheetTitle.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/sheet/SheetTrigger.vue b/src/components/ui/sheet/SheetTrigger.vue new file mode 100644 index 0000000..41b121d --- /dev/null +++ b/src/components/ui/sheet/SheetTrigger.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/components/ui/sheet/index.ts b/src/components/ui/sheet/index.ts new file mode 100644 index 0000000..7c70e5d --- /dev/null +++ b/src/components/ui/sheet/index.ts @@ -0,0 +1,8 @@ +export { default as Sheet } from "./Sheet.vue" +export { default as SheetClose } from "./SheetClose.vue" +export { default as SheetContent } from "./SheetContent.vue" +export { default as SheetDescription } from "./SheetDescription.vue" +export { default as SheetFooter } from "./SheetFooter.vue" +export { default as SheetHeader } from "./SheetHeader.vue" +export { default as SheetTitle } from "./SheetTitle.vue" +export { default as SheetTrigger } from "./SheetTrigger.vue" diff --git a/src/components/ui/sidebar/Sidebar.vue b/src/components/ui/sidebar/Sidebar.vue new file mode 100644 index 0000000..cb8957c --- /dev/null +++ b/src/components/ui/sidebar/Sidebar.vue @@ -0,0 +1,100 @@ + + + diff --git a/src/components/ui/sidebar/SidebarContent.vue b/src/components/ui/sidebar/SidebarContent.vue new file mode 100644 index 0000000..e45cc64 --- /dev/null +++ b/src/components/ui/sidebar/SidebarContent.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/sidebar/SidebarFooter.vue b/src/components/ui/sidebar/SidebarFooter.vue new file mode 100644 index 0000000..29b75e5 --- /dev/null +++ b/src/components/ui/sidebar/SidebarFooter.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/sidebar/SidebarGroup.vue b/src/components/ui/sidebar/SidebarGroup.vue new file mode 100644 index 0000000..5231d3e --- /dev/null +++ b/src/components/ui/sidebar/SidebarGroup.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/sidebar/SidebarGroupAction.vue b/src/components/ui/sidebar/SidebarGroupAction.vue new file mode 100644 index 0000000..20fdaed --- /dev/null +++ b/src/components/ui/sidebar/SidebarGroupAction.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/sidebar/SidebarGroupContent.vue b/src/components/ui/sidebar/SidebarGroupContent.vue new file mode 100644 index 0000000..892f69c --- /dev/null +++ b/src/components/ui/sidebar/SidebarGroupContent.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/sidebar/SidebarGroupLabel.vue b/src/components/ui/sidebar/SidebarGroupLabel.vue new file mode 100644 index 0000000..df0e6e4 --- /dev/null +++ b/src/components/ui/sidebar/SidebarGroupLabel.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/sidebar/SidebarHeader.vue b/src/components/ui/sidebar/SidebarHeader.vue new file mode 100644 index 0000000..65f55bf --- /dev/null +++ b/src/components/ui/sidebar/SidebarHeader.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/sidebar/SidebarInput.vue b/src/components/ui/sidebar/SidebarInput.vue new file mode 100644 index 0000000..80cb87b --- /dev/null +++ b/src/components/ui/sidebar/SidebarInput.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/components/ui/sidebar/SidebarInset.vue b/src/components/ui/sidebar/SidebarInset.vue new file mode 100644 index 0000000..6564032 --- /dev/null +++ b/src/components/ui/sidebar/SidebarInset.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/sidebar/SidebarMenu.vue b/src/components/ui/sidebar/SidebarMenu.vue new file mode 100644 index 0000000..7823971 --- /dev/null +++ b/src/components/ui/sidebar/SidebarMenu.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/sidebar/SidebarMenuAction.vue b/src/components/ui/sidebar/SidebarMenuAction.vue new file mode 100644 index 0000000..38ae944 --- /dev/null +++ b/src/components/ui/sidebar/SidebarMenuAction.vue @@ -0,0 +1,41 @@ + + diff --git a/src/components/ui/sidebar/SidebarMenuBadge.vue b/src/components/ui/sidebar/SidebarMenuBadge.vue new file mode 100644 index 0000000..12aca42 --- /dev/null +++ b/src/components/ui/sidebar/SidebarMenuBadge.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/sidebar/SidebarMenuButton.vue b/src/components/ui/sidebar/SidebarMenuButton.vue new file mode 100644 index 0000000..4098917 --- /dev/null +++ b/src/components/ui/sidebar/SidebarMenuButton.vue @@ -0,0 +1,49 @@ + + + diff --git a/src/components/ui/sidebar/SidebarMenuButtonChild.vue b/src/components/ui/sidebar/SidebarMenuButtonChild.vue new file mode 100644 index 0000000..46bb2e8 --- /dev/null +++ b/src/components/ui/sidebar/SidebarMenuButtonChild.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/sidebar/SidebarMenuItem.vue b/src/components/ui/sidebar/SidebarMenuItem.vue new file mode 100644 index 0000000..7bf8c3a --- /dev/null +++ b/src/components/ui/sidebar/SidebarMenuItem.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/sidebar/SidebarMenuSkeleton.vue b/src/components/ui/sidebar/SidebarMenuSkeleton.vue new file mode 100644 index 0000000..c51f266 --- /dev/null +++ b/src/components/ui/sidebar/SidebarMenuSkeleton.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/sidebar/SidebarMenuSub.vue b/src/components/ui/sidebar/SidebarMenuSub.vue new file mode 100644 index 0000000..fbc42c4 --- /dev/null +++ b/src/components/ui/sidebar/SidebarMenuSub.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/components/ui/sidebar/SidebarMenuSubButton.vue b/src/components/ui/sidebar/SidebarMenuSubButton.vue new file mode 100644 index 0000000..d514792 --- /dev/null +++ b/src/components/ui/sidebar/SidebarMenuSubButton.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/components/ui/sidebar/SidebarMenuSubItem.vue b/src/components/ui/sidebar/SidebarMenuSubItem.vue new file mode 100644 index 0000000..5880027 --- /dev/null +++ b/src/components/ui/sidebar/SidebarMenuSubItem.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/sidebar/SidebarProvider.vue b/src/components/ui/sidebar/SidebarProvider.vue new file mode 100644 index 0000000..bcf7c03 --- /dev/null +++ b/src/components/ui/sidebar/SidebarProvider.vue @@ -0,0 +1,92 @@ + + + diff --git a/src/components/ui/sidebar/SidebarRail.vue b/src/components/ui/sidebar/SidebarRail.vue new file mode 100644 index 0000000..3e67d75 --- /dev/null +++ b/src/components/ui/sidebar/SidebarRail.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/ui/sidebar/SidebarSeparator.vue b/src/components/ui/sidebar/SidebarSeparator.vue new file mode 100644 index 0000000..1752a50 --- /dev/null +++ b/src/components/ui/sidebar/SidebarSeparator.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/components/ui/sidebar/SidebarTrigger.vue b/src/components/ui/sidebar/SidebarTrigger.vue new file mode 100644 index 0000000..3d70a27 --- /dev/null +++ b/src/components/ui/sidebar/SidebarTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/sidebar/index.ts b/src/components/ui/sidebar/index.ts new file mode 100644 index 0000000..f7fca3c --- /dev/null +++ b/src/components/ui/sidebar/index.ts @@ -0,0 +1,60 @@ +import type { VariantProps } from 'class-variance-authority' +import type { HTMLAttributes } from 'vue' +import { cva } from 'class-variance-authority' + +export interface SidebarProps { + side?: 'left' | 'right' + variant?: 'sidebar' | 'floating' | 'inset' + collapsible?: 'offcanvas' | 'icon' | 'none' + class?: HTMLAttributes['class'] +} + +export { default as Sidebar } from './Sidebar.vue' +export { default as SidebarContent } from './SidebarContent.vue' +export { default as SidebarFooter } from './SidebarFooter.vue' +export { default as SidebarGroup } from './SidebarGroup.vue' +export { default as SidebarGroupAction } from './SidebarGroupAction.vue' +export { default as SidebarGroupContent } from './SidebarGroupContent.vue' +export { default as SidebarGroupLabel } from './SidebarGroupLabel.vue' +export { default as SidebarHeader } from './SidebarHeader.vue' +export { default as SidebarInput } from './SidebarInput.vue' +export { default as SidebarInset } from './SidebarInset.vue' +export { default as SidebarMenu } from './SidebarMenu.vue' +export { default as SidebarMenuAction } from './SidebarMenuAction.vue' +export { default as SidebarMenuBadge } from './SidebarMenuBadge.vue' +export { default as SidebarMenuButton } from './SidebarMenuButton.vue' +export { default as SidebarMenuItem } from './SidebarMenuItem.vue' +export { default as SidebarMenuSkeleton } from './SidebarMenuSkeleton.vue' +export { default as SidebarMenuSub } from './SidebarMenuSub.vue' +export { default as SidebarMenuSubButton } from './SidebarMenuSubButton.vue' +export { default as SidebarMenuSubItem } from './SidebarMenuSubItem.vue' +export { default as SidebarProvider } from './SidebarProvider.vue' +export { default as SidebarRail } from './SidebarRail.vue' +export { default as SidebarSeparator } from './SidebarSeparator.vue' +export { default as SidebarTrigger } from './SidebarTrigger.vue' + +export { useSidebar } from './utils' + +export const sidebarMenuButtonVariants = cva( + 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0', + { + variants: { + variant: { + default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground', + outline: + 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]' + }, + size: { + default: 'h-8 text-sm', + sm: 'h-7 text-xs', + lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!' + } + }, + defaultVariants: { + variant: 'default', + size: 'default' + } + } +) + +export type SidebarMenuButtonVariants = VariantProps diff --git a/src/components/ui/sidebar/utils.ts b/src/components/ui/sidebar/utils.ts new file mode 100644 index 0000000..6edb140 --- /dev/null +++ b/src/components/ui/sidebar/utils.ts @@ -0,0 +1,19 @@ +import type { ComputedRef, Ref } from 'vue' +import { createContext } from 'reka-ui' + +export const SIDEBAR_COOKIE_NAME = 'sidebar_state' +export const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7 +export const SIDEBAR_WIDTH = '16rem' +export const SIDEBAR_WIDTH_MOBILE = '18rem' +export const SIDEBAR_WIDTH_ICON = '3rem' +export const SIDEBAR_KEYBOARD_SHORTCUT = 'b' + +export const [useSidebar, provideSidebarContext] = createContext<{ + state: ComputedRef<'expanded' | 'collapsed'> + open: Ref + setOpen: (value: boolean) => void + isMobile: Ref + openMobile: Ref + setOpenMobile: (value: boolean) => void + toggleSidebar: () => void +}>('Sidebar') diff --git a/src/components/ui/skeleton/Skeleton.vue b/src/components/ui/skeleton/Skeleton.vue new file mode 100644 index 0000000..0dadcef --- /dev/null +++ b/src/components/ui/skeleton/Skeleton.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/components/ui/skeleton/index.ts b/src/components/ui/skeleton/index.ts new file mode 100644 index 0000000..e5ce72c --- /dev/null +++ b/src/components/ui/skeleton/index.ts @@ -0,0 +1 @@ +export { default as Skeleton } from "./Skeleton.vue" diff --git a/src/components/ui/sonner/Sonner.vue b/src/components/ui/sonner/Sonner.vue index 6830896..c38642d 100644 --- a/src/components/ui/sonner/Sonner.vue +++ b/src/components/ui/sonner/Sonner.vue @@ -1,12 +1,3 @@ - - + + diff --git a/src/components/ui/sonner/index.ts b/src/components/ui/sonner/index.ts index 6673112..0d4a642 100644 --- a/src/components/ui/sonner/index.ts +++ b/src/components/ui/sonner/index.ts @@ -1 +1 @@ -export { default as Toaster } from "./Sonner.vue" +export { default as Toaster } from './Sonner.vue' diff --git a/src/components/ui/tooltip/Tooltip.vue b/src/components/ui/tooltip/Tooltip.vue new file mode 100644 index 0000000..46da92c --- /dev/null +++ b/src/components/ui/tooltip/Tooltip.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/components/ui/tooltip/TooltipContent.vue b/src/components/ui/tooltip/TooltipContent.vue new file mode 100644 index 0000000..7fc946e --- /dev/null +++ b/src/components/ui/tooltip/TooltipContent.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/components/ui/tooltip/TooltipProvider.vue b/src/components/ui/tooltip/TooltipProvider.vue new file mode 100644 index 0000000..07668f1 --- /dev/null +++ b/src/components/ui/tooltip/TooltipProvider.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/tooltip/TooltipTrigger.vue b/src/components/ui/tooltip/TooltipTrigger.vue new file mode 100644 index 0000000..766f105 --- /dev/null +++ b/src/components/ui/tooltip/TooltipTrigger.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/components/ui/tooltip/index.ts b/src/components/ui/tooltip/index.ts new file mode 100644 index 0000000..5ab9653 --- /dev/null +++ b/src/components/ui/tooltip/index.ts @@ -0,0 +1,4 @@ +export { default as Tooltip } from './Tooltip.vue' +export { default as TooltipContent } from './TooltipContent.vue' +export { default as TooltipProvider } from './TooltipProvider.vue' +export { default as TooltipTrigger } from './TooltipTrigger.vue' diff --git a/src/composables/useGameConfig.ts b/src/composables/useGameConfig.ts index 33501df..0df666f 100644 --- a/src/composables/useGameConfig.ts +++ b/src/composables/useGameConfig.ts @@ -33,9 +33,11 @@ export const useGameConfig = () => { [BuildingType.CrystalStorage]: 'crystalStorage', [BuildingType.DeuteriumTank]: 'deuteriumTank', [BuildingType.DarkMatterCollector]: 'darkMatterCollector', + [BuildingType.Terraformer]: 'terraformer', [BuildingType.LunarBase]: 'lunarBase', [BuildingType.SensorPhalanx]: 'sensorPhalanx', - [BuildingType.JumpGate]: 'jumpGate' + [BuildingType.JumpGate]: 'jumpGate', + [BuildingType.PlanetDestroyerFactory]: 'planetDestroyerFactory' } // 舰船类型枚举值到翻译键的映射 @@ -49,7 +51,8 @@ export const useGameConfig = () => { [ShipType.ColonyShip]: 'colonyShip', [ShipType.Recycler]: 'recycler', [ShipType.EspionageProbe]: 'espionageProbe', - [ShipType.DarkMatterHarvester]: 'darkMatterHarvester' + [ShipType.DarkMatterHarvester]: 'darkMatterHarvester', + [ShipType.Deathstar]: 'deathstar' } // 防御设施类型枚举值到翻译键的映射 @@ -61,7 +64,8 @@ export const useGameConfig = () => { [DefenseType.IonCannon]: 'ionCannon', [DefenseType.PlasmaTurret]: 'plasmaTurret', [DefenseType.SmallShieldDome]: 'smallShieldDome', - [DefenseType.LargeShieldDome]: 'largeShieldDome' + [DefenseType.LargeShieldDome]: 'largeShieldDome', + [DefenseType.PlanetaryShield]: 'planetaryShield' } // 科技类型枚举值到翻译键的映射 @@ -75,7 +79,9 @@ export const useGameConfig = () => { [TechnologyType.CombustionDrive]: 'combustionDrive', [TechnologyType.ImpulseDrive]: 'impulseDrive', [TechnologyType.HyperspaceDrive]: 'hyperspaceDrive', - [TechnologyType.DarkMatterTechnology]: 'darkMatterTechnology' + [TechnologyType.DarkMatterTechnology]: 'darkMatterTechnology', + [TechnologyType.TerraformingTechnology]: 'terraformingTechnology', + [TechnologyType.PlanetDestructionTech]: 'planetDestructionTech' } // 军官类型枚举值到翻译键的映射 diff --git a/src/config/gameConfig.ts b/src/config/gameConfig.ts index 554d529..a4509bf 100644 --- a/src/config/gameConfig.ts +++ b/src/config/gameConfig.ts @@ -10,8 +10,14 @@ export const BUILDINGS: Record = { baseCost: { metal: 60, crystal: 15, deuterium: 0, darkMatter: 0, energy: 0 }, baseTime: 15, // 减少建造时间:30→15秒 costMultiplier: 1.5, - spaceUsage: 3, - planetOnly: true + spaceUsage: 1, + planetOnly: true, + requirements: { [BuildingType.SolarPlant]: 1 }, + levelRequirements: { + 10: { [BuildingType.RoboticsFactory]: 2 }, + 20: { [BuildingType.RoboticsFactory]: 5, [BuildingType.ResearchLab]: 3 }, + 30: { [BuildingType.NaniteFactory]: 1, [BuildingType.ResearchLab]: 8 } + } }, [BuildingType.CrystalMine]: { id: BuildingType.CrystalMine, @@ -20,8 +26,14 @@ export const BUILDINGS: Record = { baseCost: { metal: 48, crystal: 24, deuterium: 0, darkMatter: 0, energy: 0 }, baseTime: 15, // 减少建造时间:30→15秒 costMultiplier: 1.6, - spaceUsage: 3, - planetOnly: true + spaceUsage: 1, + planetOnly: true, + requirements: { [BuildingType.SolarPlant]: 1 }, + levelRequirements: { + 10: { [BuildingType.RoboticsFactory]: 2 }, + 20: { [BuildingType.RoboticsFactory]: 5, [BuildingType.ResearchLab]: 3 }, + 30: { [BuildingType.NaniteFactory]: 1, [BuildingType.ResearchLab]: 8 } + } }, [BuildingType.DeuteriumSynthesizer]: { id: BuildingType.DeuteriumSynthesizer, @@ -30,8 +42,14 @@ export const BUILDINGS: Record = { baseCost: { metal: 225, crystal: 75, deuterium: 0, darkMatter: 0, energy: 0 }, baseTime: 20, // 减少建造时间:30→20秒 costMultiplier: 1.5, - spaceUsage: 4, - planetOnly: true + spaceUsage: 2, + planetOnly: true, + requirements: { [BuildingType.SolarPlant]: 1 }, + levelRequirements: { + 10: { [BuildingType.RoboticsFactory]: 2 }, + 20: { [BuildingType.RoboticsFactory]: 5, [BuildingType.ResearchLab]: 3 }, + 30: { [BuildingType.NaniteFactory]: 1, [BuildingType.ResearchLab]: 8 } + } }, [BuildingType.SolarPlant]: { id: BuildingType.SolarPlant, @@ -40,7 +58,12 @@ export const BUILDINGS: Record = { baseCost: { metal: 75, crystal: 30, deuterium: 0, darkMatter: 0, energy: 0 }, baseTime: 15, // 减少建造时间:30→15秒 costMultiplier: 1.5, - spaceUsage: 5 + spaceUsage: 2, + levelRequirements: { + 15: { [BuildingType.RoboticsFactory]: 3 }, + 25: { [BuildingType.RoboticsFactory]: 6, [BuildingType.ResearchLab]: 5 }, + 35: { [BuildingType.NaniteFactory]: 1, [BuildingType.ResearchLab]: 10 } + } }, [BuildingType.RoboticsFactory]: { id: BuildingType.RoboticsFactory, @@ -49,7 +72,17 @@ export const BUILDINGS: Record = { baseCost: { metal: 400, crystal: 120, deuterium: 200, darkMatter: 0, energy: 0 }, baseTime: 40, // 减少建造时间:60→40秒 costMultiplier: 2, - spaceUsage: 6 + spaceUsage: 4, + requirements: { + [BuildingType.MetalMine]: 2, + [BuildingType.CrystalMine]: 2, + [BuildingType.DeuteriumSynthesizer]: 2 + }, + levelRequirements: { + 5: { [BuildingType.ResearchLab]: 3, [BuildingType.SolarPlant]: 8 }, + 8: { [BuildingType.ResearchLab]: 6, [BuildingType.SolarPlant]: 12, [BuildingType.MetalMine]: 12, [BuildingType.CrystalMine]: 12 }, + 10: { [BuildingType.ResearchLab]: 8, [BuildingType.NaniteFactory]: 1 } + } }, [BuildingType.NaniteFactory]: { id: BuildingType.NaniteFactory, @@ -58,8 +91,13 @@ export const BUILDINGS: Record = { baseCost: { metal: 1000000, crystal: 500000, deuterium: 100000, darkMatter: 0, energy: 0 }, baseTime: 240, // 减少建造时间:300→240秒 costMultiplier: 2, - spaceUsage: 15, - requirements: { [BuildingType.RoboticsFactory]: 10 } + spaceUsage: 8, + maxLevel: 10, // 最多10级(最多11个建造队列) + requirements: { [BuildingType.RoboticsFactory]: 10 }, + levelRequirements: { + 3: { [BuildingType.ResearchLab]: 10, [BuildingType.Shipyard]: 8, [TechnologyType.ComputerTechnology]: 8 }, + 5: { [BuildingType.ResearchLab]: 12, [BuildingType.Shipyard]: 10, [TechnologyType.ComputerTechnology]: 10 } + } }, [BuildingType.Shipyard]: { id: BuildingType.Shipyard, @@ -68,7 +106,13 @@ export const BUILDINGS: Record = { baseCost: { metal: 400, crystal: 200, deuterium: 100, darkMatter: 0, energy: 0 }, baseTime: 30, // 减少建造时间:60→30秒 costMultiplier: 2, - spaceUsage: 8 + spaceUsage: 5, + fleetStorageBonus: 1000, // 每级增加100舰队仓储 + requirements: { [BuildingType.RoboticsFactory]: 2 }, + levelRequirements: { + 8: { [BuildingType.RoboticsFactory]: 5, [BuildingType.ResearchLab]: 5 }, + 12: { [BuildingType.RoboticsFactory]: 8, [BuildingType.ResearchLab]: 8, [BuildingType.NaniteFactory]: 2 } + } }, [BuildingType.ResearchLab]: { id: BuildingType.ResearchLab, @@ -77,7 +121,21 @@ export const BUILDINGS: Record = { baseCost: { metal: 200, crystal: 400, deuterium: 200, darkMatter: 0, energy: 0 }, baseTime: 30, // 减少建造时间:60→30秒 costMultiplier: 2, - spaceUsage: 5 + spaceUsage: 3, + requirements: { + [BuildingType.MetalMine]: 3, + [BuildingType.CrystalMine]: 3, + [BuildingType.DeuteriumSynthesizer]: 3 + }, + levelRequirements: { + 8: { + [BuildingType.RoboticsFactory]: 5, + [BuildingType.MetalMine]: 10, + [BuildingType.CrystalMine]: 10, + [BuildingType.DeuteriumSynthesizer]: 10 + }, + 12: { [BuildingType.RoboticsFactory]: 8, [BuildingType.NaniteFactory]: 1, [TechnologyType.EnergyTechnology]: 5 } + } }, [BuildingType.MetalStorage]: { id: BuildingType.MetalStorage, @@ -86,7 +144,12 @@ export const BUILDINGS: Record = { baseCost: { metal: 1000, crystal: 0, deuterium: 0, darkMatter: 0, energy: 0 }, baseTime: 15, // 减少建造时间:30→15秒 costMultiplier: 2, - spaceUsage: 2 + spaceUsage: 1, + requirements: { [BuildingType.MetalMine]: 2 }, + levelRequirements: { + 8: { [BuildingType.MetalMine]: 15, [BuildingType.RoboticsFactory]: 3 }, + 12: { [BuildingType.MetalMine]: 25, [BuildingType.RoboticsFactory]: 6 } + } }, [BuildingType.CrystalStorage]: { id: BuildingType.CrystalStorage, @@ -95,7 +158,12 @@ export const BUILDINGS: Record = { baseCost: { metal: 1000, crystal: 500, deuterium: 0, darkMatter: 0, energy: 0 }, baseTime: 15, // 减少建造时间:30→15秒 costMultiplier: 2, - spaceUsage: 2 + spaceUsage: 1, + requirements: { [BuildingType.CrystalMine]: 2 }, + levelRequirements: { + 8: { [BuildingType.CrystalMine]: 15, [BuildingType.RoboticsFactory]: 3 }, + 12: { [BuildingType.CrystalMine]: 25, [BuildingType.RoboticsFactory]: 6 } + } }, [BuildingType.DeuteriumTank]: { id: BuildingType.DeuteriumTank, @@ -104,7 +172,12 @@ export const BUILDINGS: Record = { baseCost: { metal: 1000, crystal: 1000, deuterium: 0, darkMatter: 0, energy: 0 }, baseTime: 15, // 减少建造时间:30→15秒 costMultiplier: 2, - spaceUsage: 2 + spaceUsage: 1, + requirements: { [BuildingType.DeuteriumSynthesizer]: 2 }, + levelRequirements: { + 8: { [BuildingType.DeuteriumSynthesizer]: 15, [BuildingType.RoboticsFactory]: 3 }, + 12: { [BuildingType.DeuteriumSynthesizer]: 25, [BuildingType.RoboticsFactory]: 6 } + } }, [BuildingType.DarkMatterCollector]: { id: BuildingType.DarkMatterCollector, @@ -113,8 +186,35 @@ export const BUILDINGS: Record = { baseCost: { metal: 50000, crystal: 100000, deuterium: 50000, darkMatter: 0, energy: 0 }, baseTime: 90, // 减少建造时间:120→90秒 costMultiplier: 2, - spaceUsage: 10, - planetOnly: true + spaceUsage: 6, + planetOnly: true, + requirements: { + [BuildingType.ResearchLab]: 5, + [TechnologyType.DarkMatterTechnology]: 1 + }, + levelRequirements: { + 5: { [BuildingType.ResearchLab]: 8, [TechnologyType.DarkMatterTechnology]: 3, [BuildingType.RoboticsFactory]: 8 }, + 8: { [BuildingType.ResearchLab]: 10, [TechnologyType.DarkMatterTechnology]: 5, [BuildingType.NaniteFactory]: 2 } + } + }, + [BuildingType.Terraformer]: { + id: BuildingType.Terraformer, + name: '地形改造器', + description: '改造行星地形,每级增加5个可用空间', + baseCost: { metal: 0, crystal: 50000, deuterium: 100000, darkMatter: 0, energy: 0 }, + baseTime: 60, + costMultiplier: 2, + spaceUsage: 5, + planetOnly: true, + requirements: { + [BuildingType.ResearchLab]: 10, + [BuildingType.RoboticsFactory]: 8, + [TechnologyType.TerraformingTechnology]: 1 + }, + levelRequirements: { + 5: { [BuildingType.ResearchLab]: 12, [TechnologyType.TerraformingTechnology]: 3, [BuildingType.NaniteFactory]: 1 }, + 8: { [BuildingType.ResearchLab]: 14, [TechnologyType.TerraformingTechnology]: 5, [BuildingType.NaniteFactory]: 3 } + } }, // 月球专属建筑 [BuildingType.LunarBase]: { @@ -125,7 +225,11 @@ export const BUILDINGS: Record = { baseTime: 45, // 减少建造时间:60→45秒 costMultiplier: 2, spaceUsage: 0, // 月球基地本身不占用空间,反而增加空间 - moonOnly: true + moonOnly: true, + levelRequirements: { + 5: { [BuildingType.RoboticsFactory]: 5 }, + 8: { [BuildingType.RoboticsFactory]: 8, [BuildingType.NaniteFactory]: 1 } + } }, [BuildingType.SensorPhalanx]: { id: BuildingType.SensorPhalanx, @@ -134,8 +238,13 @@ export const BUILDINGS: Record = { baseCost: { metal: 20000, crystal: 40000, deuterium: 20000, darkMatter: 0, energy: 0 }, baseTime: 60, // 减少建造时间:90→60秒 costMultiplier: 2, - spaceUsage: 10, - moonOnly: true + spaceUsage: 6, + moonOnly: true, + requirements: { [BuildingType.LunarBase]: 1 }, + levelRequirements: { + 5: { [BuildingType.LunarBase]: 5, [TechnologyType.ComputerTechnology]: 5 }, + 8: { [BuildingType.LunarBase]: 8, [TechnologyType.ComputerTechnology]: 8, [BuildingType.NaniteFactory]: 2 } + } }, [BuildingType.JumpGate]: { id: BuildingType.JumpGate, @@ -144,8 +253,42 @@ export const BUILDINGS: Record = { baseCost: { metal: 2000000, crystal: 4000000, deuterium: 2000000, darkMatter: 0, energy: 0 }, baseTime: 240, // 减少建造时间:300→240秒 costMultiplier: 2, - spaceUsage: 20, - moonOnly: true + spaceUsage: 10, + moonOnly: true, + maxLevel: 5, // 最多5级 + requirements: { + [BuildingType.LunarBase]: 1, + [TechnologyType.HyperspaceTechnology]: 7 + }, + levelRequirements: { + 3: { [BuildingType.LunarBase]: 5, [TechnologyType.HyperspaceTechnology]: 10, [BuildingType.NaniteFactory]: 3 } + } + }, + // 特殊建筑 + [BuildingType.PlanetDestroyerFactory]: { + id: BuildingType.PlanetDestroyerFactory, + name: '行星毁灭者工厂', + description: '建造能够摧毁行星的终极武器', + baseCost: { metal: 5000000, crystal: 4000000, deuterium: 1000000, darkMatter: 0, energy: 0 }, + baseTime: 300, + costMultiplier: 2, + spaceUsage: 15, + planetOnly: true, + maxLevel: 3, // 最多3级 + requirements: { + [BuildingType.Shipyard]: 12, + [BuildingType.RoboticsFactory]: 10, + [BuildingType.NaniteFactory]: 5, + [TechnologyType.PlanetDestructionTech]: 1 + }, + levelRequirements: { + 3: { + [BuildingType.Shipyard]: 14, + [BuildingType.NaniteFactory]: 8, + [TechnologyType.PlanetDestructionTech]: 3, + [TechnologyType.HyperspaceTechnology]: 10 + } + } } } @@ -158,7 +301,12 @@ export const TECHNOLOGIES: Record = { baseCost: { metal: 0, crystal: 800, deuterium: 400, darkMatter: 0, energy: 0 }, baseTime: 30, // 减少研究时间:60→30秒 costMultiplier: 2, - requirements: { [BuildingType.ResearchLab]: 1 } + requirements: { [BuildingType.ResearchLab]: 1 }, + levelRequirements: { + 5: { [BuildingType.ResearchLab]: 3, [BuildingType.SolarPlant]: 10 }, + 8: { [BuildingType.ResearchLab]: 5, [BuildingType.SolarPlant]: 15, [BuildingType.RoboticsFactory]: 3 }, + 12: { [BuildingType.ResearchLab]: 8, [BuildingType.RoboticsFactory]: 6, [BuildingType.NaniteFactory]: 1 } + } }, [TechnologyType.LaserTechnology]: { id: TechnologyType.LaserTechnology, @@ -167,7 +315,11 @@ export const TECHNOLOGIES: Record = { baseCost: { metal: 200, crystal: 100, deuterium: 0, darkMatter: 0, energy: 0 }, baseTime: 60, costMultiplier: 2, - requirements: { [BuildingType.ResearchLab]: 1, [TechnologyType.EnergyTechnology]: 2 } + requirements: { [BuildingType.ResearchLab]: 1, [TechnologyType.EnergyTechnology]: 2 }, + levelRequirements: { + 6: { [BuildingType.ResearchLab]: 5, [TechnologyType.EnergyTechnology]: 5, [BuildingType.Shipyard]: 3 }, + 10: { [BuildingType.ResearchLab]: 8, [TechnologyType.EnergyTechnology]: 8, [BuildingType.Shipyard]: 6 } + } }, [TechnologyType.IonTechnology]: { id: TechnologyType.IonTechnology, @@ -176,7 +328,11 @@ export const TECHNOLOGIES: Record = { baseCost: { metal: 1000, crystal: 300, deuterium: 100, darkMatter: 0, energy: 0 }, baseTime: 60, costMultiplier: 2, - requirements: { [BuildingType.ResearchLab]: 4, [TechnologyType.LaserTechnology]: 5, [TechnologyType.EnergyTechnology]: 4 } + requirements: { [BuildingType.ResearchLab]: 4, [TechnologyType.LaserTechnology]: 5, [TechnologyType.EnergyTechnology]: 4 }, + levelRequirements: { + 5: { [BuildingType.ResearchLab]: 8, [TechnologyType.LaserTechnology]: 10, [TechnologyType.EnergyTechnology]: 8 }, + 8: { [BuildingType.ResearchLab]: 10, [TechnologyType.LaserTechnology]: 12, [BuildingType.NaniteFactory]: 2 } + } }, [TechnologyType.HyperspaceTechnology]: { id: TechnologyType.HyperspaceTechnology, @@ -185,7 +341,11 @@ export const TECHNOLOGIES: Record = { baseCost: { metal: 0, crystal: 4000, deuterium: 2000, darkMatter: 0, energy: 0 }, baseTime: 60, costMultiplier: 2, - requirements: { [BuildingType.ResearchLab]: 7, [TechnologyType.EnergyTechnology]: 5 } + requirements: { [BuildingType.ResearchLab]: 7, [TechnologyType.EnergyTechnology]: 5 }, + levelRequirements: { + 5: { [BuildingType.ResearchLab]: 10, [TechnologyType.EnergyTechnology]: 8, [BuildingType.Shipyard]: 5 }, + 8: { [BuildingType.ResearchLab]: 12, [TechnologyType.EnergyTechnology]: 10, [BuildingType.NaniteFactory]: 2 } + } }, [TechnologyType.PlasmaTechnology]: { id: TechnologyType.PlasmaTechnology, @@ -199,6 +359,20 @@ export const TECHNOLOGIES: Record = { [TechnologyType.EnergyTechnology]: 8, [TechnologyType.LaserTechnology]: 10, [TechnologyType.IonTechnology]: 5 + }, + levelRequirements: { + 5: { + [BuildingType.ResearchLab]: 10, + [TechnologyType.EnergyTechnology]: 12, + [TechnologyType.IonTechnology]: 8, + [BuildingType.NaniteFactory]: 1 + }, + 8: { + [BuildingType.ResearchLab]: 12, + [TechnologyType.EnergyTechnology]: 15, + [TechnologyType.IonTechnology]: 10, + [BuildingType.NaniteFactory]: 3 + } } }, [TechnologyType.ComputerTechnology]: { @@ -208,7 +382,14 @@ export const TECHNOLOGIES: Record = { baseCost: { metal: 0, crystal: 400, deuterium: 600, darkMatter: 0, energy: 0 }, baseTime: 60, costMultiplier: 2, - requirements: { [BuildingType.ResearchLab]: 1 } + fleetStorageBonus: 500, // 每级全局增加50舰队仓储 + maxLevel: 10, // 最多10级(最多11个研究队列) + requirements: { [BuildingType.ResearchLab]: 1 }, + levelRequirements: { + 3: { [BuildingType.ResearchLab]: 5 }, + 5: { [BuildingType.ResearchLab]: 8, [BuildingType.RoboticsFactory]: 5 }, + 8: { [BuildingType.ResearchLab]: 10, [BuildingType.NaniteFactory]: 2 } + } }, [TechnologyType.CombustionDrive]: { id: TechnologyType.CombustionDrive, @@ -217,7 +398,11 @@ export const TECHNOLOGIES: Record = { baseCost: { metal: 400, crystal: 0, deuterium: 600, darkMatter: 0, energy: 0 }, baseTime: 60, costMultiplier: 2, - requirements: { [BuildingType.ResearchLab]: 1, [TechnologyType.EnergyTechnology]: 1 } + requirements: { [BuildingType.ResearchLab]: 1, [TechnologyType.EnergyTechnology]: 1 }, + levelRequirements: { + 5: { [BuildingType.ResearchLab]: 5, [TechnologyType.EnergyTechnology]: 3, [BuildingType.Shipyard]: 2 }, + 8: { [BuildingType.ResearchLab]: 8, [TechnologyType.EnergyTechnology]: 5, [BuildingType.Shipyard]: 5 } + } }, [TechnologyType.ImpulseDrive]: { id: TechnologyType.ImpulseDrive, @@ -226,7 +411,11 @@ export const TECHNOLOGIES: Record = { baseCost: { metal: 2000, crystal: 4000, deuterium: 600, darkMatter: 0, energy: 0 }, baseTime: 60, costMultiplier: 2, - requirements: { [BuildingType.ResearchLab]: 2, [TechnologyType.EnergyTechnology]: 1 } + requirements: { [BuildingType.ResearchLab]: 2, [TechnologyType.EnergyTechnology]: 1 }, + levelRequirements: { + 5: { [BuildingType.ResearchLab]: 6, [TechnologyType.EnergyTechnology]: 4, [BuildingType.Shipyard]: 3 }, + 8: { [BuildingType.ResearchLab]: 8, [TechnologyType.EnergyTechnology]: 6, [BuildingType.Shipyard]: 6 } + } }, [TechnologyType.HyperspaceDrive]: { id: TechnologyType.HyperspaceDrive, @@ -235,7 +424,11 @@ export const TECHNOLOGIES: Record = { baseCost: { metal: 10000, crystal: 20000, deuterium: 6000, darkMatter: 0, energy: 0 }, baseTime: 60, costMultiplier: 2, - requirements: { [BuildingType.ResearchLab]: 7, [TechnologyType.HyperspaceTechnology]: 3 } + requirements: { [BuildingType.ResearchLab]: 7, [TechnologyType.HyperspaceTechnology]: 3 }, + levelRequirements: { + 5: { [BuildingType.ResearchLab]: 10, [TechnologyType.HyperspaceTechnology]: 6, [BuildingType.Shipyard]: 8 }, + 8: { [BuildingType.ResearchLab]: 12, [TechnologyType.HyperspaceTechnology]: 8, [BuildingType.NaniteFactory]: 3 } + } }, [TechnologyType.DarkMatterTechnology]: { id: TechnologyType.DarkMatterTechnology, @@ -244,7 +437,58 @@ export const TECHNOLOGIES: Record = { baseCost: { metal: 100000, crystal: 200000, deuterium: 100000, darkMatter: 0, energy: 0 }, baseTime: 180, costMultiplier: 2, - requirements: { [BuildingType.ResearchLab]: 8, [TechnologyType.HyperspaceTechnology]: 5 } + requirements: { [BuildingType.ResearchLab]: 8, [TechnologyType.HyperspaceTechnology]: 5 }, + levelRequirements: { + 3: { + [BuildingType.ResearchLab]: 10, + [TechnologyType.HyperspaceTechnology]: 8, + [BuildingType.RoboticsFactory]: 10, + [TechnologyType.EnergyTechnology]: 10 + }, + 5: { + [BuildingType.ResearchLab]: 12, + [TechnologyType.HyperspaceTechnology]: 10, + [BuildingType.NaniteFactory]: 2, + [TechnologyType.EnergyTechnology]: 12 + } + } + }, + [TechnologyType.TerraformingTechnology]: { + id: TechnologyType.TerraformingTechnology, + name: '地形改造技术', + description: '研究行星地形改造技术,每级为所有行星增加5个可用空间', + baseCost: { metal: 0, crystal: 20000, deuterium: 40000, darkMatter: 0, energy: 0 }, + baseTime: 90, + costMultiplier: 2, + requirements: { [BuildingType.ResearchLab]: 8, [TechnologyType.EnergyTechnology]: 6 }, + levelRequirements: { + 5: { [BuildingType.ResearchLab]: 12, [TechnologyType.EnergyTechnology]: 10, [BuildingType.RoboticsFactory]: 10 }, + 8: { [BuildingType.ResearchLab]: 14, [TechnologyType.EnergyTechnology]: 12, [BuildingType.NaniteFactory]: 3 } + } + }, + [TechnologyType.PlanetDestructionTech]: { + id: TechnologyType.PlanetDestructionTech, + name: '行星毁灭技术', + description: '研究如何摧毁整个行星的恐怖技术', + baseCost: { metal: 4000000, crystal: 8000000, deuterium: 4000000, darkMatter: 0, energy: 0 }, + baseTime: 300, + costMultiplier: 2, + maxLevel: 5, // 最多5级 + requirements: { + [BuildingType.ResearchLab]: 12, + [TechnologyType.HyperspaceTechnology]: 8, + [TechnologyType.HyperspaceDrive]: 6, + [TechnologyType.PlasmaTechnology]: 7 + }, + levelRequirements: { + 3: { + [BuildingType.ResearchLab]: 14, + [TechnologyType.HyperspaceTechnology]: 12, + [TechnologyType.HyperspaceDrive]: 10, + [TechnologyType.PlasmaTechnology]: 10, + [BuildingType.NaniteFactory]: 5 + } + } } } @@ -262,6 +506,7 @@ export const SHIPS: Record = { armor: 400, speed: 12500, fuelConsumption: 20, + storageUsage: 5, requirements: { [BuildingType.Shipyard]: 1, [TechnologyType.CombustionDrive]: 1 } }, [ShipType.HeavyFighter]: { @@ -276,6 +521,7 @@ export const SHIPS: Record = { armor: 1000, speed: 10000, fuelConsumption: 75, + storageUsage: 10, requirements: { [BuildingType.Shipyard]: 3, [TechnologyType.ImpulseDrive]: 2 } }, [ShipType.Cruiser]: { @@ -290,6 +536,7 @@ export const SHIPS: Record = { armor: 2700, speed: 15000, fuelConsumption: 300, + storageUsage: 15, requirements: { [BuildingType.Shipyard]: 5, [TechnologyType.ImpulseDrive]: 4, [TechnologyType.IonTechnology]: 2 } }, [ShipType.Battleship]: { @@ -304,6 +551,7 @@ export const SHIPS: Record = { armor: 6000, speed: 10000, fuelConsumption: 500, + storageUsage: 25, requirements: { [BuildingType.Shipyard]: 7, [TechnologyType.HyperspaceDrive]: 4 } }, [ShipType.SmallCargo]: { @@ -318,6 +566,7 @@ export const SHIPS: Record = { armor: 400, speed: 5000, fuelConsumption: 10, + storageUsage: 10, requirements: { [BuildingType.Shipyard]: 2, [TechnologyType.CombustionDrive]: 2 } }, [ShipType.LargeCargo]: { @@ -332,6 +581,7 @@ export const SHIPS: Record = { armor: 1200, speed: 7500, fuelConsumption: 50, + storageUsage: 20, requirements: { [BuildingType.Shipyard]: 4, [TechnologyType.CombustionDrive]: 6 } }, [ShipType.ColonyShip]: { @@ -346,6 +596,7 @@ export const SHIPS: Record = { armor: 3000, speed: 2500, fuelConsumption: 1000, + storageUsage: 40, requirements: { [BuildingType.Shipyard]: 4, [TechnologyType.ImpulseDrive]: 3 } }, [ShipType.Recycler]: { @@ -360,6 +611,7 @@ export const SHIPS: Record = { armor: 1600, speed: 2000, fuelConsumption: 300, + storageUsage: 30, requirements: { [BuildingType.Shipyard]: 4, [TechnologyType.CombustionDrive]: 6 } }, [ShipType.EspionageProbe]: { @@ -374,6 +626,7 @@ export const SHIPS: Record = { armor: 100, speed: 100000000, fuelConsumption: 1, + storageUsage: 2, requirements: { [BuildingType.Shipyard]: 3, [TechnologyType.CombustionDrive]: 3 } }, [ShipType.DarkMatterHarvester]: { @@ -388,11 +641,31 @@ export const SHIPS: Record = { armor: 2000, speed: 5000, fuelConsumption: 500, + storageUsage: 50, requirements: { [BuildingType.Shipyard]: 8, [TechnologyType.HyperspaceDrive]: 5, [TechnologyType.DarkMatterTechnology]: 1 } + }, + [ShipType.Deathstar]: { + id: ShipType.Deathstar, + name: '死星', + description: '终极武器,能够摧毁整个行星', + cost: { metal: 5000000, crystal: 4000000, deuterium: 1000000, darkMatter: 0, energy: 0 }, + buildTime: 600, + cargoCapacity: 1000000, + attack: 200000, + shield: 50000, + armor: 900000, + speed: 100, + fuelConsumption: 1, + storageUsage: 100, + requirements: { + [BuildingType.PlanetDestroyerFactory]: 10, + [TechnologyType.PlanetDestructionTech]: 7, + [TechnologyType.HyperspaceDrive]: 7 + } } } @@ -485,6 +758,21 @@ export const DEFENSES: Record = { shield: 10000, armor: 10000, requirements: { [BuildingType.Shipyard]: 6, [TechnologyType.EnergyTechnology]: 6 } + }, + [DefenseType.PlanetaryShield]: { + id: DefenseType.PlanetaryShield, + name: '行星护盾', + description: '保护行星免受毁灭攻击的超级护盾', + cost: { metal: 2000000, crystal: 2000000, deuterium: 1000000, darkMatter: 0, energy: 0 }, + buildTime: 180, + attack: 1, + shield: 100000, + armor: 100000, + requirements: { + [BuildingType.Shipyard]: 10, + [TechnologyType.EnergyTechnology]: 10, + [TechnologyType.HyperspaceTechnology]: 8 + } } } @@ -565,6 +853,20 @@ export const MOON_CONFIG = { baseChance: 1, // 基础1%概率 maxChance: 20, // 最大20%概率 chancePerDebris: 100000, // 每10万资源增加1%概率 - baseSize: 100, // 月球基础空间 - lunarBaseSpaceBonus: 3 // 每级月球基地增加的空间 + baseSize: 60, // 月球基础空间 + lunarBaseSpaceBonus: 5 // 每级月球基地增加的空间 +} + +// 行星配置 +export const PLANET_CONFIG = { + baseSize: 200, // 行星基础空间 + terraformerSpaceBonus: 5, // 每级地形改造器增加的空间 + terraformingTechSpaceBonus: 3 // 每级地形改造技术增加的空间 +} + +// 舰队仓储配置 +export const FLEET_STORAGE_CONFIG = { + baseStorage: 1000, // 基础舰队仓储 + shipyardBonus: 1000, // 每级造船厂增加的仓储 + computerTechBonus: 500 // 每级计算机技术全局增加的仓储 } diff --git a/src/locales/de.ts b/src/locales/de.ts index 6756164..aac6b8d 100644 --- a/src/locales/de.ts +++ b/src/locales/de.ts @@ -32,11 +32,13 @@ export default { locked: 'Gesperrt', viewRequirements: 'Anforderungen anzeigen', requirementsNotMet: 'Anforderungen nicht erfüllt', - current: 'Aktuell' + current: 'Aktuell', + level: 'Stufe' }, errors: { requirementsNotMet: 'Anforderungen nicht erfüllt', insufficientResources: 'Unzureichende Ressourcen', + insufficientFleetStorage: 'Unzureichender Flottenspeicher', shieldDomeLimit: 'Schildkuppel-Limit erreicht', fleetMissionsFull: 'Flottenmissionsplätze voll', insufficientFleet: 'Unzureichende Flotte', @@ -61,7 +63,8 @@ export default { simulator: 'Simulator', galaxy: 'Galaxie', messages: 'Nachrichten', - settings: 'Einstellungen' + settings: 'Einstellungen', + gm: 'GM' }, sidebar: { language: 'Sprache', @@ -77,10 +80,14 @@ export default { darkMatter: 'Dunkle Materie', energy: 'Energie', production: 'Produktion', + consumption: 'Verbrauch', capacity: 'Kapazität', current: 'Aktuell', max: 'Max. Kapazität', - perHour: 'Stunde' + perHour: 'Stunde', + perMinute: 'Min', + hour: 'Stunde', + noEnergy: 'Keine Energie' }, planet: { planet: 'Planet', @@ -113,9 +120,11 @@ export default { crystalStorage: 'Kristallspeicher', deuteriumTank: 'Deuteriumtank', darkMatterCollector: 'Dunkle-Materie-Kollektor', + terraformer: 'Terraformer', lunarBase: 'Mondbasis', sensorPhalanx: 'Sensorphalanx', jumpGate: 'Sprungtor', + planetDestroyerFactory: 'Planetenzerstörer-Fabrik', buildTime: 'Bauzeit', production: 'Produktion', consumption: 'Verbrauch', @@ -129,16 +138,18 @@ export default { deuteriumSynthesizer: 'Synthesiert Deuteriumressourcen', solarPlant: 'Liefert Energie', roboticsFactory: 'Beschleunigt Baugeschwindigkeit', - naniteFactory: 'Erhöht Bauauftragskapazität, +1 pro Stufe (max 10)', + naniteFactory: 'Erhöht Bauauftragskapazität, +1 pro Stufe (max 10 Stufen)', shipyard: 'Baut Schiffe', researchLab: 'Erforscht Technologien', metalStorage: 'Erhöht Metallspeicherkapazität', crystalStorage: 'Erhöht Kristallspeicherkapazität', deuteriumTank: 'Erhöht Deuteriumspeicherkapazität', darkMatterCollector: 'Sammelt seltene Dunkle-Materie-Ressourcen', - lunarBase: 'Erhöht verfügbaren Platz auf dem Mond', + terraformer: 'Terraformt Planetenoberfläche, erhöht verfügbaren Platz um 5 pro Stufe', + lunarBase: 'Erhöht verfügbaren Platz auf dem Mond, +5 Platz pro Stufe', sensorPhalanx: 'Erkennt Flottenaktivitäten in umliegenden Systemen', - jumpGate: 'Überträgt Flotten sofort zu anderen Monden' + jumpGate: 'Überträgt Flotten sofort zu anderen Monden', + planetDestroyerFactory: 'Konstruiert ultimative Waffen zur Zerstörung von Planeten' }, ships: { lightFighter: 'Leichter Jäger', @@ -150,7 +161,8 @@ export default { colonyShip: 'Kolonieschiff', recycler: 'Recycler', espionageProbe: 'Spionagesonde', - darkMatterHarvester: 'Dunkle-Materie-Ernter' + darkMatterHarvester: 'Dunkle-Materie-Ernter', + deathstar: 'Todesstern' }, shipDescriptions: { lightFighter: 'Grundlegende Kampfeinheit', @@ -162,7 +174,8 @@ export default { colonyShip: 'Zur Kolonisierung neuer Planeten', recycler: 'Sammelt Trümmerfeld-Ressourcen', espionageProbe: 'Späht feindliche Planeten aus', - darkMatterHarvester: 'Spezielles Schiff zum Ernten von Dunkler Materie' + darkMatterHarvester: 'Spezielles Schiff zum Ernten von Dunkler Materie', + deathstar: 'Ultimative Waffe, die ganze Planeten zerstören kann' }, defenses: { rocketLauncher: 'Raketenwerfer', @@ -172,7 +185,8 @@ export default { ionCannon: 'Ionengeschütz', plasmaTurret: 'Plasmawerfer', smallShieldDome: 'Kleine Schildkuppel', - largeShieldDome: 'Große Schildkuppel' + largeShieldDome: 'Große Schildkuppel', + planetaryShield: 'Planetarschild' }, defenseDescriptions: { rocketLauncher: 'Grundlegende Verteidigungsanlage', @@ -182,7 +196,8 @@ export default { ionCannon: 'Effektiv gegen Schilde', plasmaTurret: 'Mächtige Verteidigungsanlage', smallShieldDome: 'Kleiner Schild zum Schutz des gesamten Planeten', - largeShieldDome: 'Großer Schild zum Schutz des gesamten Planeten' + largeShieldDome: 'Großer Schild zum Schutz des gesamten Planeten', + planetaryShield: 'Superschild zum Schutz des Planeten vor Vernichtungsangriffen' }, research: { researchTime: 'Forschungszeit', @@ -200,7 +215,9 @@ export default { combustionDrive: 'Verbrennungsantrieb', impulseDrive: 'Impulsantrieb', hyperspaceDrive: 'Hyperraumantrieb', - darkMatterTechnology: 'Dunkle-Materie-Technologie' + darkMatterTechnology: 'Dunkle-Materie-Technologie', + terraformingTechnology: 'Terraforming-Technologie', + planetDestructionTech: 'Planetenzerstörungstechnologie' }, technologyDescriptions: { energyTechnology: 'Verbessert Energieeffizienz', @@ -208,11 +225,13 @@ export default { ionTechnology: 'Ionenwaffentechnologie', hyperspaceTechnology: 'Hyperraumsprung-Technologie', plasmaTechnology: 'Plasmawaffentechnologie', - computerTechnology: 'Erhöht Forschungsauftragskapazität, +1 pro Stufe (max 10)', + computerTechnology: 'Erhöht Forschungsauftragskapazität, +1 pro Stufe (max 10 Stufen)', combustionDrive: 'Grundlegende Antriebstechnologie', impulseDrive: 'Mittlere Antriebstechnologie', hyperspaceDrive: 'Fortgeschrittene Antriebstechnologie', - darkMatterTechnology: 'Forschung zu Eigenschaften und Anwendungen von Dunkler Materie' + darkMatterTechnology: 'Forschung zu Eigenschaften und Anwendungen von Dunkler Materie', + terraformingTechnology: 'Forschung zur Planeten-Terraforming-Technologie, erhöht verfügbaren Platz aller Planeten um 3 pro Stufe', + planetDestructionTech: 'Schreckliche Technologie zur Zerstörung ganzer Planeten' }, officers: { commander: 'Kommandant', @@ -220,7 +239,10 @@ export default { engineer: 'Ingenieur', geologist: 'Geologe', technocrat: 'Technokrat', - darkMatterSpecialist: 'Dunkle-Materie-Spezialist' + darkMatterSpecialist: 'Dunkle-Materie-Spezialist', + resourceBonus: 'Ressourcenproduktionsbonus', + darkMatterBonus: 'Dunkle-Materie-Produktionsbonus', + energyBonus: 'Energieproduktionsbonus' }, officerDescriptions: { commander: 'Verbessert Baugeschwindigkeit und Management', @@ -247,7 +269,14 @@ export default { title: 'Planetenübersicht', resourceOverview: 'Ressourcen', fleetInfo: 'Flotte', - currentShips: 'Schiffe auf diesem Planeten' + currentShips: 'Schiffe auf diesem Planeten', + productionSources: 'Produktionsquellen', + productionSourcesDesc: 'Detaillierte Ressourcenproduktion und Bonusinformationen', + consumptionSources: 'Verbrauchsquellen', + consumptionSourcesDesc: 'Energieverbrauchsdetails für Gebäude', + totalProduction: 'Gesamtproduktion', + totalConsumption: 'Gesamtverbrauch', + noConsumption: 'Kein Energieverbrauch' }, buildingsView: { title: 'Gebäude', @@ -257,6 +286,8 @@ export default { upgradeCost: 'Ausbaukosten', buildTime: 'Bauzeit', upgrade: 'Ausbauen', + maxLevelReached: 'Maximale Stufe erreicht', + requirementsNotMet: 'Anforderungen nicht erfüllt', upgradeFailed: 'Ausbau fehlgeschlagen', upgradeFailedMessage: 'Bitte überprüfen Sie, ob Sie genügend Ressourcen, Platz oder keine anderen Bauaufträge haben.', demolish: 'Abreißen', @@ -268,6 +299,7 @@ export default { title: 'Forschung', researchCost: 'Forschungskosten', research: 'Forschen', + maxLevelReached: 'Maximale Stufe erreicht', researchFailed: 'Forschung fehlgeschlagen', researchFailedMessage: 'Bitte überprüfen Sie, ob Sie genügend Ressourcen haben, die Voraussetzungen erfüllt sind oder keine anderen Forschungsaufträge vorhanden sind.' @@ -289,6 +321,7 @@ export default { }, shipyardView: { title: 'Raumschiffwerft', + fleetStorage: 'Flottenspeicher', attack: 'Angriff', shield: 'Schild', speed: 'Geschwindigkeit', @@ -360,6 +393,7 @@ export default { colonize: 'Kolonisieren', spy: 'Spionage', deploy: 'Stationieren', + recycle: 'Recyceln', transportResources: 'Ressourcen transportieren', totalCargoCapacity: 'Gesamtladekapazität', used: 'Verwendet', @@ -376,7 +410,12 @@ export default { recallFailed: 'Zurückrufen fehlgeschlagen', recallFailedMessage: 'Diese Mission kann nicht zurückgerufen werden.', unknownPlanet: 'Unbekannter Planet', - fleetMissionSlots: 'Flottenmissionsplätze' + fleetMissionSlots: 'Flottenmissionsplätze', + noShipsSelected: 'Keine Schiffe ausgewählt', + cannotSendToOwnPlanet: 'Flotte kann nicht zu eigenem Planeten gesendet werden', + cargoExceedsCapacity: 'Fracht überschreitet Kapazität', + noColonyShip: 'Kolonieschiff für Kolonisierungsmission erforderlich', + noDebrisAtTarget: 'Kein Trümmerfeld an Zielkoordinaten oder Trümmerfeld ist leer' }, officersView: { title: 'Offiziere', @@ -429,18 +468,25 @@ export default { attack: 'Angriff', colonize: 'Kolonisieren', switch: 'Wechseln', + recycle: 'Recyceln', + debrisField: 'Trümmerfeld', scoutPlanetTitle: 'Planet ausspionieren', attackPlanetTitle: 'Planet angreifen', colonizePlanetTitle: 'Planet kolonisieren', + recyclePlanetTitle: 'Trümmer recyceln', scoutPlanetMessage: 'Möchten Sie wirklich Spionagesonden senden, um Planet [{coordinates}] auszuspionieren?\n\nBitte gehen Sie zur Flottenseite, um Schiffe auszuwählen und zu senden.', attackPlanetMessage: 'Möchten Sie wirklich Planet [{coordinates}] angreifen?\n\nBitte gehen Sie zur Flottenseite, um Schiffe auszuwählen und zu senden.', colonizePlanetMessage: - 'Möchten Sie wirklich Position [{coordinates}] kolonisieren?\n\nBitte gehen Sie zur Flottenseite, um ein Kolonieschiff zu senden.' + 'Möchten Sie wirklich Position [{coordinates}] kolonisieren?\n\nBitte gehen Sie zur Flottenseite, um ein Kolonieschiff zu senden.', + recyclePlanetMessage: + 'Möchten Sie wirklich Trümmer bei Position [{coordinates}] recyceln?\n\nBitte gehen Sie zur Flottenseite, um Recycler zu senden.' }, messagesView: { title: 'Nachrichten', + battles: 'Kämpfe', + spy: 'Spionage', battleReports: 'Kampfberichte', spyReports: 'Spionageberichte', noBattleReports: 'Keine Kampfberichte', @@ -461,7 +507,17 @@ export default { resources: 'Ressourcen', fleet: 'Flotte', defense: 'Verteidigung', - buildings: 'Gebäude' + buildings: 'Gebäude', + unread: 'Ungelesen', + targetPlanet: 'Zielplanet', + attackerRemaining: 'Angreifer verblieben', + defenderRemaining: 'Verteidiger verblieben', + moonChance: 'Mondchance', + showRoundDetails: 'Rundendetails anzeigen', + hideRoundDetails: 'Rundendetails ausblenden', + round: 'Runde {round}', + attackerRemainingPower: 'Verbleibende Angreiferkraft', + defenderRemainingPower: 'Verbleibende Verteidigerkraft' }, simulatorView: { title: 'Kampfsimulator', @@ -523,6 +579,12 @@ export default { clearConfirmMessage: 'Alle Spieldaten werden gelöscht und von vorne begonnen. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?', gameSettings: 'Spieleinstellungen', gameSettingsDesc: 'Spielparameter und Einstellungen anpassen', + gamePause: 'Spielpause', + gamePauseDesc: 'Spielzeit und Ressourcenproduktion pausieren oder fortsetzen', + pause: 'Pausieren', + resume: 'Fortsetzen', + gamePaused: 'Spiel pausiert', + gameResumed: 'Spiel fortgesetzt', playerName: 'Spielername', gameSpeed: 'Spielgeschwindigkeit', gameSpeedDesc: 'Aktueller Spielgeschwindigkeitsmultiplikator', @@ -532,5 +594,34 @@ export default { community: 'Community', github: 'GitHub-Repository', qqGroup: 'QQ-Gruppe' + }, + gmView: { + title: 'GM-Kontrollpanel', + adminOnly: 'Nur Admin', + selectPlanet: 'Planet auswählen', + choosePlanet: 'Einen Planeten auswählen', + resources: 'Ressourcen', + buildings: 'Gebäude', + research: 'Forschung', + ships: 'Schiffe', + defense: 'Verteidigung', + officers: 'Offiziere', + modifyResources: 'Ressourcen ändern', + resourcesDesc: 'Planetenressourcen schnell ändern', + modifyBuildings: 'Gebäude ändern', + buildingsDesc: 'Gebäudelevel schnell festlegen', + modifyResearch: 'Forschung ändern', + researchDesc: 'Forschungslevel schnell festlegen', + modifyShips: 'Schiffe ändern', + shipsDesc: 'Schiffsanzahl schnell festlegen', + modifyDefense: 'Verteidigung ändern', + defenseDesc: 'Verteidigungsanzahl schnell festlegen', + modifyOfficers: 'Offiziere ändern', + officersDesc: 'Offiziersablaufzeit schnell festlegen', + days: 'T', + dangerZone: 'Gefahrenzone', + dangerZoneDesc: 'Die folgenden Vorgänge sind irreversibel', + resetGame: 'Spiel zurücksetzen', + resetGameConfirm: 'Möchten Sie das Spiel wirklich zurücksetzen? Alle Daten werden gelöscht!' } } diff --git a/src/locales/en.ts b/src/locales/en.ts index 77fef15..279963f 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -32,11 +32,13 @@ export default { locked: 'Locked', viewRequirements: 'View Requirements', requirementsNotMet: 'Requirements Not Met', - current: 'Current' + current: 'Current', + level: 'Level' }, errors: { requirementsNotMet: 'Requirements not met', insufficientResources: 'Insufficient resources', + insufficientFleetStorage: 'Insufficient fleet storage', shieldDomeLimit: 'Shield dome limit reached', fleetMissionsFull: 'Fleet mission slots full', insufficientFleet: 'Insufficient fleet', @@ -61,7 +63,8 @@ export default { simulator: 'Simulator', galaxy: 'Galaxy', messages: 'Messages', - settings: 'Settings' + settings: 'Settings', + gm: 'GM' }, sidebar: { language: 'Language', @@ -77,10 +80,14 @@ export default { darkMatter: 'Dark Matter', energy: 'Energy', production: 'Production', + consumption: 'Consumption', capacity: 'Capacity', current: 'Current', max: 'Max Capacity', - perHour: 'hour' + perHour: 'hour', + perMinute: 'min', + hour: 'hour', + noEnergy: 'No Energy' }, planet: { planet: 'Planet', @@ -113,9 +120,11 @@ export default { crystalStorage: 'Crystal Storage', deuteriumTank: 'Deuterium Tank', darkMatterCollector: 'Dark Matter Collector', + terraformer: 'Terraformer', lunarBase: 'Lunar Base', sensorPhalanx: 'Sensor Phalanx', jumpGate: 'Jump Gate', + planetDestroyerFactory: 'Planet Destroyer Factory', buildTime: 'Build Time', production: 'Production', consumption: 'Consumption', @@ -129,16 +138,18 @@ export default { deuteriumSynthesizer: 'Synthesizes deuterium resources', solarPlant: 'Provides energy', roboticsFactory: 'Accelerates construction speed', - naniteFactory: 'Increases build queue capacity, +1 per level (max 10)', + naniteFactory: 'Increases build queue capacity, +1 per level (max 10 levels)', shipyard: 'Constructs ships', researchLab: 'Researches technologies', metalStorage: 'Increases metal storage capacity', crystalStorage: 'Increases crystal storage capacity', deuteriumTank: 'Increases deuterium storage capacity', darkMatterCollector: 'Collects rare dark matter resources', - lunarBase: 'Increases available space on the moon', + terraformer: 'Terraforms planet surface, adds 5 available space per level', + lunarBase: 'Increases available space on the moon, +5 space per level', sensorPhalanx: 'Detects fleet activities in surrounding systems', - jumpGate: 'Instantly transfers fleets to other moons' + jumpGate: 'Instantly transfers fleets to other moons', + planetDestroyerFactory: 'Constructs ultimate weapons capable of destroying planets' }, ships: { lightFighter: 'Light Fighter', @@ -150,7 +161,8 @@ export default { colonyShip: 'Colony Ship', recycler: 'Recycler', espionageProbe: 'Espionage Probe', - darkMatterHarvester: 'Dark Matter Harvester' + darkMatterHarvester: 'Dark Matter Harvester', + deathstar: 'Deathstar' }, shipDescriptions: { lightFighter: 'Basic combat unit', @@ -162,7 +174,8 @@ export default { colonyShip: 'Used to colonize new planets', recycler: 'Collects debris field resources', espionageProbe: 'Scouts enemy planets', - darkMatterHarvester: 'Special ship for harvesting dark matter' + darkMatterHarvester: 'Special ship for harvesting dark matter', + deathstar: 'Ultimate weapon capable of destroying entire planets' }, defenses: { rocketLauncher: 'Rocket Launcher', @@ -172,7 +185,8 @@ export default { ionCannon: 'Ion Cannon', plasmaTurret: 'Plasma Turret', smallShieldDome: 'Small Shield Dome', - largeShieldDome: 'Large Shield Dome' + largeShieldDome: 'Large Shield Dome', + planetaryShield: 'Planetary Shield' }, defenseDescriptions: { rocketLauncher: 'Basic defense facility', @@ -182,7 +196,8 @@ export default { ionCannon: 'Effective against shields', plasmaTurret: 'Powerful defense facility', smallShieldDome: 'Small shield protecting the entire planet', - largeShieldDome: 'Large shield protecting the entire planet' + largeShieldDome: 'Large shield protecting the entire planet', + planetaryShield: 'Super shield protecting planet from destruction attacks' }, research: { researchTime: 'Research Time', @@ -200,7 +215,9 @@ export default { combustionDrive: 'Combustion Drive', impulseDrive: 'Impulse Drive', hyperspaceDrive: 'Hyperspace Drive', - darkMatterTechnology: 'Dark Matter Technology' + darkMatterTechnology: 'Dark Matter Technology', + terraformingTechnology: 'Terraforming Technology', + planetDestructionTech: 'Planet Destruction Technology' }, technologyDescriptions: { energyTechnology: 'Improves energy efficiency', @@ -208,11 +225,13 @@ export default { ionTechnology: 'Ion weapon technology', hyperspaceTechnology: 'Hyperspace jump technology', plasmaTechnology: 'Plasma weapon technology', - computerTechnology: 'Increases research queue capacity, +1 per level (max 10)', + computerTechnology: 'Increases research queue capacity, +1 per level (max 10 levels)', combustionDrive: 'Basic propulsion technology', impulseDrive: 'Intermediate propulsion technology', hyperspaceDrive: 'Advanced propulsion technology', - darkMatterTechnology: 'Research into dark matter properties and applications' + darkMatterTechnology: 'Research into dark matter properties and applications', + terraformingTechnology: 'Research planet terraforming technology, adds 3 available space to all planets per level', + planetDestructionTech: 'Terrifying technology for destroying entire planets' }, officers: { commander: 'Commander', @@ -220,7 +239,10 @@ export default { engineer: 'Engineer', geologist: 'Geologist', technocrat: 'Technocrat', - darkMatterSpecialist: 'Dark Matter Specialist' + darkMatterSpecialist: 'Dark Matter Specialist', + resourceBonus: 'Resource Production Bonus', + darkMatterBonus: 'Dark Matter Production Bonus', + energyBonus: 'Energy Production Bonus' }, officerDescriptions: { commander: 'Improves building speed and management', @@ -241,13 +263,21 @@ export default { cancelResearch: 'Cancel Research', confirmCancel: 'Are you sure you want to cancel? 50% of resources will be refunded.', level: 'Level', + quantity: 'Quantity', upgradeToLevel: 'Upgrade to Level' }, overview: { title: 'Planet Overview', resourceOverview: 'Resources', fleetInfo: 'Fleet', - currentShips: 'Ships on this planet' + currentShips: 'Ships on this planet', + productionSources: 'Production Sources', + productionSourcesDesc: 'Detailed resource production and bonus information', + consumptionSources: 'Consumption Sources', + consumptionSourcesDesc: 'Energy consumption details for buildings', + totalProduction: 'Total Production', + totalConsumption: 'Total Consumption', + noConsumption: 'No energy consumption' }, buildingsView: { title: 'Buildings', @@ -257,6 +287,8 @@ export default { upgradeCost: 'Upgrade Cost', buildTime: 'Build Time', upgrade: 'Upgrade', + maxLevelReached: 'Max Level Reached', + requirementsNotMet: 'Requirements Not Met', upgradeFailed: 'Upgrade Failed', upgradeFailedMessage: 'Please check if you have enough resources, space, or if there are other build tasks.', demolish: 'Demolish', @@ -268,6 +300,7 @@ export default { title: 'Research', researchCost: 'Research Cost', research: 'Research', + maxLevelReached: 'Max Level Reached', researchFailed: 'Research Failed', researchFailedMessage: 'Please check if you have enough resources, prerequisites are met, or if there are other research tasks.' }, @@ -288,6 +321,7 @@ export default { }, shipyardView: { title: 'Shipyard', + fleetStorage: 'Fleet Storage', attack: 'Attack', shield: 'Shield', speed: 'Speed', @@ -358,6 +392,8 @@ export default { colonize: 'Colonize', spy: 'Spy', deploy: 'Deploy', + recycle: 'Recycle', + destroy: 'Planet Destruction', transportResources: 'Transport Resources', totalCargoCapacity: 'Total Cargo Capacity', used: 'Used', @@ -374,7 +410,13 @@ export default { recallFailed: 'Recall Failed', recallFailedMessage: 'This mission cannot be recalled.', unknownPlanet: 'Unknown Planet', - fleetMissionSlots: 'Fleet Mission Slots' + fleetMissionSlots: 'Fleet Mission Slots', + noShipsSelected: 'No ships selected', + cannotSendToOwnPlanet: 'Cannot send fleet to your own planet', + cargoExceedsCapacity: 'Cargo exceeds capacity', + noColonyShip: 'Colony ship required for colonization mission', + noDebrisAtTarget: 'No debris field at target coordinates or debris field is empty', + noDeathstar: 'Deathstar required for destruction mission' }, officersView: { title: 'Officers', @@ -427,17 +469,23 @@ export default { attack: 'Attack', colonize: 'Colonize', switch: 'Switch', + recycle: 'Recycle', + debrisField: 'Debris Field', scoutPlanetTitle: 'Scout Planet', attackPlanetTitle: 'Attack Planet', colonizePlanetTitle: 'Colonize Planet', + recyclePlanetTitle: 'Recycle Debris', scoutPlanetMessage: 'Are you sure you want to send espionage probes to scout planet [{coordinates}]?\n\nPlease go to the fleet page to select ships and send.', attackPlanetMessage: 'Are you sure you want to attack planet [{coordinates}]?\n\nPlease go to the fleet page to select ships and send.', colonizePlanetMessage: - 'Are you sure you want to colonize position [{coordinates}]?\n\nPlease go to the fleet page to send a colony ship.' + 'Are you sure you want to colonize position [{coordinates}]?\n\nPlease go to the fleet page to send a colony ship.', + recyclePlanetMessage: 'Are you sure you want to recycle debris at position [{coordinates}]?\n\nPlease go to the fleet page to send recycler ships.' }, messagesView: { title: 'Messages', + battles: 'Battles', + spy: 'Spy', battleReports: 'Battle Reports', spyReports: 'Spy Reports', noBattleReports: 'No battle reports', @@ -458,7 +506,9 @@ export default { resources: 'Resources', fleet: 'Fleet', defense: 'Defense', - buildings: 'Buildings' + buildings: 'Buildings', + unread: 'Unread', + targetPlanet: 'Target Planet' }, simulatorView: { title: 'Battle Simulator', @@ -520,6 +570,12 @@ export default { clearConfirmMessage: 'This will delete all game data and start over. This action cannot be undone. Continue?', gameSettings: 'Game Settings', gameSettingsDesc: 'Adjust game parameters and preferences', + gamePause: 'Game Pause', + gamePauseDesc: 'Pause or resume game time and resource production', + pause: 'Pause', + resume: 'Resume', + gamePaused: 'Game paused', + gameResumed: 'Game resumed', playerName: 'Player Name', gameSpeed: 'Game Speed', gameSpeedDesc: 'Current game speed multiplier', @@ -529,5 +585,34 @@ export default { community: 'Community', github: 'GitHub Repository', qqGroup: 'QQ Group' + }, + gmView: { + title: 'GM Control Panel', + adminOnly: 'Admin Only', + selectPlanet: 'Select Planet', + choosePlanet: 'Choose a planet', + resources: 'Resources', + buildings: 'Buildings', + research: 'Research', + ships: 'Ships', + defense: 'Defense', + officers: 'Officers', + modifyResources: 'Modify Resources', + resourcesDesc: 'Quickly modify planet resources', + modifyBuildings: 'Modify Buildings', + buildingsDesc: 'Quickly set building levels', + modifyResearch: 'Modify Research', + researchDesc: 'Quickly set research levels', + modifyShips: 'Modify Ships', + shipsDesc: 'Quickly set ship counts', + modifyDefense: 'Modify Defense', + defenseDesc: 'Quickly set defense counts', + modifyOfficers: 'Modify Officers', + officersDesc: 'Quickly set officer expiration time', + days: 'd', + dangerZone: 'Danger Zone', + dangerZoneDesc: 'The following operations are irreversible', + resetGame: 'Reset Game', + resetGameConfirm: 'Are you sure you want to reset the game? This will delete all data!' } } diff --git a/src/locales/ja.ts b/src/locales/ja.ts index 5f3f22f..187629f 100644 --- a/src/locales/ja.ts +++ b/src/locales/ja.ts @@ -32,11 +32,13 @@ export default { locked: 'ロック済み', viewRequirements: '必要条件を表示', requirementsNotMet: '必要条件が満たされていません', - current: '現在' + current: '現在', + level: 'レベル' }, errors: { requirementsNotMet: '前提条件を満たしていません', insufficientResources: '資源が不足しています', + insufficientFleetStorage: '艦隊ストレージが不足しています', shieldDomeLimit: 'シールドドームの上限に達しました', fleetMissionsFull: '艦隊ミッションスロットが満杯です', insufficientFleet: '艦隊が不足しています', @@ -61,7 +63,8 @@ export default { simulator: 'シミュレーター', galaxy: '銀河', messages: 'メッセージ', - settings: '設定' + settings: '設定', + gm: 'GM' }, sidebar: { language: '言語', @@ -77,10 +80,14 @@ export default { darkMatter: 'ダークマター', energy: 'エネルギー', production: '生産量', + consumption: '消費量', capacity: '容量', current: '現在の貯蔵量', max: '最大容量', - perHour: '時間' + perHour: '時間', + perMinute: '分', + hour: '時間', + noEnergy: 'エネルギー不足' }, planet: { planet: '惑星', @@ -113,9 +120,11 @@ export default { crystalStorage: 'クリスタル倉庫', deuteriumTank: '重水素タンク', darkMatterCollector: 'ダークマター採取装置', + terraformer: 'テラフォーマー', lunarBase: '月面基地', sensorPhalanx: 'センサーファランクス', jumpGate: 'ジャンプゲート', + planetDestroyerFactory: '惑星破壊工場', buildTime: '建設時間', production: '生産量', consumption: '消費', @@ -129,16 +138,18 @@ export default { deuteriumSynthesizer: '重水素資源を合成', solarPlant: 'エネルギーを供給', roboticsFactory: '建設速度を向上', - naniteFactory: '建設キュー数を増加、レベル毎に+1(最大10)', + naniteFactory: '建設キュー数を増加、レベル毎に+1(最大10レベル)', shipyard: '艦船を建造', researchLab: '技術を研究', metalStorage: '金属の貯蔵上限を増加', crystalStorage: 'クリスタルの貯蔵上限を増加', deuteriumTank: '重水素の貯蔵上限を増加', darkMatterCollector: '希少なダークマター資源を収集', - lunarBase: '月の利用可能スペースを増加', + terraformer: '惑星地形を改造、レベル毎に利用可能スペース5増加', + lunarBase: '月の利用可能スペースを増加、レベル毎に+5スペース', sensorPhalanx: '周辺星系の艦隊活動を探知', - jumpGate: '他の月へ艦隊を瞬間移動' + jumpGate: '他の月へ艦隊を瞬間移動', + planetDestroyerFactory: '惑星を破壊できる究極兵器を建造' }, ships: { lightFighter: '軽戦闘機', @@ -150,7 +161,8 @@ export default { colonyShip: 'コロニーシップ', recycler: 'リサイクラー', espionageProbe: 'スパイプローブ', - darkMatterHarvester: 'ダークマター採取船' + darkMatterHarvester: 'ダークマター採取船', + deathstar: 'デススター' }, shipDescriptions: { lightFighter: '基本戦闘ユニット', @@ -162,7 +174,8 @@ export default { colonyShip: '新惑星の植民に使用', recycler: 'デブリフィールドの資源を回収', espionageProbe: '敵惑星を偵察', - darkMatterHarvester: 'ダークマター採取専用の特殊艦' + darkMatterHarvester: 'ダークマター採取専用の特殊艦', + deathstar: '惑星全体を破壊できる究極兵器' }, defenses: { rocketLauncher: 'ロケットランチャー', @@ -172,7 +185,8 @@ export default { ionCannon: 'イオンキャノン', plasmaTurret: 'プラズマタレット', smallShieldDome: '小型シールドドーム', - largeShieldDome: '大型シールドドーム' + largeShieldDome: '大型シールドドーム', + planetaryShield: '惑星シールド' }, defenseDescriptions: { rocketLauncher: '基本防衛施設', @@ -182,7 +196,8 @@ export default { ionCannon: 'シールド破壊に効果的', plasmaTurret: '強力な防衛施設', smallShieldDome: '惑星全体を保護する小型シールド', - largeShieldDome: '惑星全体を保護する大型シールド' + largeShieldDome: '惑星全体を保護する大型シールド', + planetaryShield: '破壊攻撃から惑星を保護する超級シールド' }, research: { researchTime: '研究時間', @@ -200,7 +215,9 @@ export default { combustionDrive: '燃焼ドライブ', impulseDrive: 'インパルスドライブ', hyperspaceDrive: 'ハイパースペースドライブ', - darkMatterTechnology: 'ダークマター技術' + darkMatterTechnology: 'ダークマター技術', + terraformingTechnology: 'テラフォーミング技術', + planetDestructionTech: '惑星破壊技術' }, technologyDescriptions: { energyTechnology: 'エネルギー利用効率を向上', @@ -208,11 +225,13 @@ export default { ionTechnology: 'イオン兵器技術', hyperspaceTechnology: 'ハイパースペースジャンプ技術', plasmaTechnology: 'プラズマ兵器技術', - computerTechnology: '研究キュー数を増加、レベル毎に+1(最大10)', + computerTechnology: '研究キュー数を増加、レベル毎に+1(最大10レベル)', combustionDrive: '基本推進技術', impulseDrive: '中級推進技術', hyperspaceDrive: '高級推進技術', - darkMatterTechnology: 'ダークマターの性質と応用を研究' + darkMatterTechnology: 'ダークマターの性質と応用を研究', + terraformingTechnology: '惑星地形改造技術を研究、レベル毎に全惑星の利用可能スペース3増加', + planetDestructionTech: '惑星全体を破壊する恐怖の技術を研究' }, officers: { commander: '司令官', @@ -220,7 +239,10 @@ export default { engineer: 'エンジニア', geologist: '地質学者', technocrat: '技術専門家', - darkMatterSpecialist: 'ダークマター専門家' + darkMatterSpecialist: 'ダークマター専門家', + resourceBonus: '資源生産ボーナス', + darkMatterBonus: 'ダークマター生産ボーナス', + energyBonus: 'エネルギー生産ボーナス' }, officerDescriptions: { commander: '建設速度と管理能力を向上', @@ -262,7 +284,14 @@ export default { title: '惑星概要', resourceOverview: '資源概要', fleetInfo: '艦隊', - currentShips: '現在の惑星の艦船数' + currentShips: '現在の惑星の艦船数', + productionSources: '生産源', + productionSourcesDesc: '詳細な資源生産とボーナス情報', + consumptionSources: '消費源', + consumptionSourcesDesc: '建物のエネルギー消費詳細', + totalProduction: '総生産量', + totalConsumption: '総消費量', + noConsumption: 'エネルギー消費なし' }, buildingsView: { title: '建物', @@ -272,6 +301,8 @@ export default { upgradeCost: 'アップグレードコスト', buildTime: '建設時間', upgrade: 'アップグレード', + maxLevelReached: '最大レベルに達しました', + requirementsNotMet: '要件が満たされていません', upgradeFailed: 'アップグレード失敗', upgradeFailedMessage: '資源が十分か、スペースが十分か、または他の建設タスクがないか確認してください。', demolish: '解体', @@ -283,6 +314,7 @@ export default { title: '研究', researchCost: '研究コスト', research: '研究', + maxLevelReached: '最大レベルに達しました', researchFailed: '研究失敗', researchFailedMessage: '資源が十分か、前提条件が満たされているか、または他の研究タスクがないか確認してください。' }, @@ -300,6 +332,7 @@ export default { }, shipyardView: { title: '造船所', + fleetStorage: '艦隊ストレージ', attack: '攻撃力', shield: 'シールド', speed: '速度', @@ -358,6 +391,7 @@ export default { colonize: '植民', spy: '偵察', deploy: '配備', + recycle: '回収', transportResources: '資源輸送', totalCargoCapacity: '総積載量', used: '使用済み', @@ -374,7 +408,12 @@ export default { recallFailed: '召還失敗', recallFailedMessage: 'このミッションは召還できません。', unknownPlanet: '未知の惑星', - fleetMissionSlots: '艦隊ミッションスロット' + fleetMissionSlots: '艦隊ミッションスロット', + noShipsSelected: '艦船が選択されていません', + cannotSendToOwnPlanet: '自分の惑星に艦隊を派遣できません', + cargoExceedsCapacity: '積載量が容量を超えています', + noColonyShip: '植民ミッションにはコロニーシップが必要です', + noDebrisAtTarget: '目標座標にデブリフィールドがないか、デブリフィールドが空です' }, officersView: { title: '士官', @@ -427,15 +466,21 @@ export default { attack: '攻撃', colonize: '植民', switch: '切り替え', + recycle: '回収', + debrisField: 'デブリフィールド', scoutPlanetTitle: '惑星偵察', attackPlanetTitle: '惑星攻撃', colonizePlanetTitle: '惑星植民', + recyclePlanetTitle: 'デブリ回収', scoutPlanetMessage: '惑星[{coordinates}]にスパイプローブを送りますか?\n\n艦隊ページに移動して艦船を選択して派遣してください。', attackPlanetMessage: '惑星[{coordinates}]を攻撃しますか?\n\n艦隊ページに移動して艦船を選択して派遣してください。', - colonizePlanetMessage: '位置[{coordinates}]を植民しますか?\n\n艦隊ページに移動してコロニーシップを派遣してください。' + colonizePlanetMessage: '位置[{coordinates}]を植民しますか?\n\n艦隊ページに移動してコロニーシップを派遣してください。', + recyclePlanetMessage: '位置[{coordinates}]のデブリを回収しますか?\n\n艦隊ページに移動してリサイクラーを派遣してください。' }, messagesView: { title: 'メッセージセンター', + battles: '戦闘', + spy: 'スパイ', battleReports: '戦闘レポート', spyReports: 'スパイレポート', noBattleReports: '戦闘レポートなし', @@ -456,7 +501,17 @@ export default { resources: '資源', fleet: '艦隊', defense: '防衛', - buildings: '建物' + buildings: '建物', + unread: '未読', + targetPlanet: '目標惑星', + attackerRemaining: '攻撃側残存', + defenderRemaining: '防御側残存', + moonChance: '月生成確率', + showRoundDetails: 'ラウンド詳細表示', + hideRoundDetails: 'ラウンド詳細非表示', + round: '第{round}ラウンド', + attackerRemainingPower: '攻撃側残存火力', + defenderRemainingPower: '防御側残存火力' }, simulatorView: { title: '戦闘シミュレーター', @@ -518,6 +573,12 @@ export default { clearConfirmMessage: 'すべてのゲームデータが削除され、最初からやり直します。この操作は元に戻せません。続行しますか?', gameSettings: 'ゲーム設定', gameSettingsDesc: 'ゲームパラメータと設定を調整', + gamePause: 'ゲーム一時停止', + gamePauseDesc: 'ゲーム時間と資源生産を一時停止または再開', + pause: '一時停止', + resume: '再開', + gamePaused: 'ゲームを一時停止しました', + gameResumed: 'ゲームを再開しました', playerName: 'プレイヤー名', gameSpeed: 'ゲーム速度', gameSpeedDesc: '現在のゲーム速度倍率', @@ -527,5 +588,34 @@ export default { community: 'コミュニティ', github: 'GitHubリポジトリ', qqGroup: 'QQグループ' + }, + gmView: { + title: 'GMコントロールパネル', + adminOnly: '管理者専用', + selectPlanet: '惑星を選択', + choosePlanet: '惑星を選択してください', + resources: '資源', + buildings: '建物', + research: '研究', + ships: '艦船', + defense: '防衛', + officers: '士官', + modifyResources: '資源を変更', + resourcesDesc: '惑星の資源を素早く変更', + modifyBuildings: '建物を変更', + buildingsDesc: '建物レベルを素早く設定', + modifyResearch: '研究を変更', + researchDesc: '研究レベルを素早く設定', + modifyShips: '艦船を変更', + shipsDesc: '艦船数を素早く設定', + modifyDefense: '防衛を変更', + defenseDesc: '防衛数を素早く設定', + modifyOfficers: '士官を変更', + officersDesc: '士官の有効期限を素早く設定', + days: '日', + dangerZone: '危険ゾーン', + dangerZoneDesc: '以下の操作は元に戻せません', + resetGame: 'ゲームをリセット', + resetGameConfirm: 'ゲームをリセットしてもよろしいですか?すべてのデータが削除されます!' } } diff --git a/src/locales/ko.ts b/src/locales/ko.ts index 09b7b8d..c00314b 100644 --- a/src/locales/ko.ts +++ b/src/locales/ko.ts @@ -32,11 +32,13 @@ export default { locked: '잠김', viewRequirements: '요구사항 보기', requirementsNotMet: '요구사항 미충족', - current: '현재' + current: '현재', + level: '레벨' }, errors: { requirementsNotMet: '전제 조건 미충족', insufficientResources: '자원 부족', + insufficientFleetStorage: '함대 저장소 부족', shieldDomeLimit: '실드 돔 한도 도달', fleetMissionsFull: '함대 임무 슬롯 가득 참', insufficientFleet: '함대 부족', @@ -61,7 +63,8 @@ export default { simulator: '시뮬레이터', galaxy: '은하계', messages: '메시지', - settings: '설정' + settings: '설정', + gm: 'GM' }, sidebar: { language: '언어', @@ -77,10 +80,14 @@ export default { darkMatter: '암흑 물질', energy: '에너지', production: '생산량', + consumption: '소비량', capacity: '용량', current: '현재 저장량', max: '최대 용량', - perHour: '시간' + perHour: '시간', + perMinute: '분', + hour: '시간', + noEnergy: '에너지 부족' }, planet: { planet: '행성', @@ -113,9 +120,11 @@ export default { crystalStorage: '크리스탈 창고', deuteriumTank: '중수소 탱크', darkMatterCollector: '암흑 물질 수집기', + terraformer: '지형 변환기', lunarBase: '달 기지', sensorPhalanx: '센서 팔랑크스', jumpGate: '점프 게이트', + planetDestroyerFactory: '행성 파괴 공장', buildTime: '건설 시간', production: '생산량', consumption: '소비', @@ -129,16 +138,18 @@ export default { deuteriumSynthesizer: '중수소 자원 합성', solarPlant: '에너지 제공', roboticsFactory: '건설 속도 향상', - naniteFactory: '건설 대기열 수 증가, 레벨당 +1 (최대 10개)', + naniteFactory: '건설 대기열 수 증가, 레벨당 +1 (최대 10레벨)', shipyard: '함선 건조', researchLab: '기술 연구', metalStorage: '금속 저장 용량 증가', crystalStorage: '크리스탈 저장 용량 증가', deuteriumTank: '중수소 저장 용량 증가', darkMatterCollector: '희귀한 암흑 물질 자원 수집', - lunarBase: '달 가용 공간 증가', + terraformer: '행성 지형 개조, 레벨당 가용 공간 5 증가', + lunarBase: '달 가용 공간 증가, 레벨당 +5 공간', sensorPhalanx: '주변 행성계의 함대 활동 감지', - jumpGate: '다른 위성으로 함대 순간 이동' + jumpGate: '다른 위성으로 함대 순간 이동', + planetDestroyerFactory: '행성을 파괴할 수 있는 궁극 병기 건조' }, ships: { lightFighter: '경전투기', @@ -150,7 +161,8 @@ export default { colonyShip: '식민선', recycler: '재활용선', espionageProbe: '정찰기', - darkMatterHarvester: '암흑 물질 채취선' + darkMatterHarvester: '암흑 물질 채취선', + deathstar: '데스스타' }, shipDescriptions: { lightFighter: '기본 전투 유닛', @@ -162,7 +174,8 @@ export default { colonyShip: '새로운 행성 식민에 사용', recycler: '잔해장 자원 수집', espionageProbe: '적 행성 정찰', - darkMatterHarvester: '암흑 물질 채취 전용 특수 함선' + darkMatterHarvester: '암흑 물질 채취 전용 특수 함선', + deathstar: '행성 전체를 파괴할 수 있는 궁극 병기' }, defenses: { rocketLauncher: '로켓 발사대', @@ -172,7 +185,8 @@ export default { ionCannon: '이온 캐논', plasmaTurret: '플라즈마 포탑', smallShieldDome: '소형 실드 돔', - largeShieldDome: '대형 실드 돔' + largeShieldDome: '대형 실드 돔', + planetaryShield: '행성 실드' }, defenseDescriptions: { rocketLauncher: '기본 방어 시설', @@ -182,7 +196,8 @@ export default { ionCannon: '실드 파괴의 이기', plasmaTurret: '강력한 방어 시설', smallShieldDome: '행성 전체를 보호하는 소형 실드', - largeShieldDome: '행성 전체를 보호하는 대형 실드' + largeShieldDome: '행성 전체를 보호하는 대형 실드', + planetaryShield: '파괴 공격으로부터 행성을 보호하는 초급 실드' }, research: { researchTime: '연구 시간', @@ -200,7 +215,9 @@ export default { combustionDrive: '연소 엔진', impulseDrive: '임펄스 엔진', hyperspaceDrive: '초공간 엔진', - darkMatterTechnology: '암흑 물질 기술' + darkMatterTechnology: '암흑 물질 기술', + terraformingTechnology: '지형 변환 기술', + planetDestructionTech: '행성 파괴 기술' }, technologyDescriptions: { energyTechnology: '에너지 이용 효율 향상', @@ -208,11 +225,13 @@ export default { ionTechnology: '이온 무기 기술', hyperspaceTechnology: '초공간 점프 기술', plasmaTechnology: '플라즈마 무기 기술', - computerTechnology: '연구 대기열 수 증가, 레벨당 +1 (최대 10개)', + computerTechnology: '연구 대기열 수 증가, 레벨당 +1 (최대 10레벨)', combustionDrive: '기본 추진 기술', impulseDrive: '중급 추진 기술', hyperspaceDrive: '고급 추진 기술', - darkMatterTechnology: '암흑 물질의 성질과 응용 연구' + darkMatterTechnology: '암흑 물질의 성질과 응용 연구', + terraformingTechnology: '행성 지형 개조 기술 연구, 레벨당 모든 행성의 가용 공간 3 증가', + planetDestructionTech: '행성 전체를 파괴하는 공포의 기술 연구' }, officers: { commander: '사령관', @@ -220,7 +239,10 @@ export default { engineer: '엔지니어', geologist: '지질학자', technocrat: '기술 전문가', - darkMatterSpecialist: '암흑 물질 전문가' + darkMatterSpecialist: '암흑 물질 전문가', + resourceBonus: '자원 생산 보너스', + darkMatterBonus: '암흑 물질 생산 보너스', + energyBonus: '에너지 생산 보너스' }, officerDescriptions: { commander: '건설 속도 및 관리 능력 향상', @@ -247,7 +269,14 @@ export default { title: '행성 개요', resourceOverview: '자원 개요', fleetInfo: '함대', - currentShips: '현재 행성의 함선 수' + currentShips: '현재 행성의 함선 수', + productionSources: '생산 소스', + productionSourcesDesc: '상세 자원 생산 및 보너스 정보', + consumptionSources: '소비 소스', + consumptionSourcesDesc: '건물 에너지 소비 세부 정보', + totalProduction: '총 생산량', + totalConsumption: '총 소비량', + noConsumption: '에너지 소비 없음' }, buildingsView: { title: '건물', @@ -257,6 +286,8 @@ export default { upgradeCost: '업그레이드 비용', buildTime: '건설 시간', upgrade: '업그레이드', + maxLevelReached: '최대 레벨 도달', + requirementsNotMet: '요구 사항 미충족', upgradeFailed: '업그레이드 실패', upgradeFailedMessage: '자원이 충분한지, 공간이 충분한지, 또는 다른 건설 작업이 있는지 확인하세요.', demolish: '철거', @@ -268,6 +299,7 @@ export default { title: '연구', researchCost: '연구 비용', research: '연구', + maxLevelReached: '최대 레벨 도달', researchFailed: '연구 실패', researchFailedMessage: '자원이 충분한지, 전제 조건이 충족되었는지, 또는 다른 연구 작업이 있는지 확인하세요.' }, @@ -288,6 +320,7 @@ export default { }, shipyardView: { title: '조선소', + fleetStorage: '함대 저장소', attack: '공격력', shield: '실드', speed: '속도', @@ -358,6 +391,7 @@ export default { colonize: '식민', spy: '정찰', deploy: '배치', + recycle: '회수', transportResources: '자원 수송', totalCargoCapacity: '총 적재량', used: '사용됨', @@ -374,7 +408,12 @@ export default { recallFailed: '소환 실패', recallFailedMessage: '이 임무는 소환할 수 없습니다.', unknownPlanet: '알 수 없는 행성', - fleetMissionSlots: '함대 임무 슬롯' + fleetMissionSlots: '함대 임무 슬롯', + noShipsSelected: '선택된 함선 없음', + cannotSendToOwnPlanet: '자신의 행성으로 함대를 파견할 수 없습니다', + cargoExceedsCapacity: '적재량이 용량을 초과합니다', + noColonyShip: '식민 임무를 위해 식민선이 필요합니다', + noDebrisAtTarget: '대상 좌표에 잔해장이 없거나 잔해장이 비어 있습니다' }, officersView: { title: '장교', @@ -427,16 +466,22 @@ export default { attack: '공격', colonize: '식민', switch: '전환', + recycle: '회수', + debrisField: '잔해 필드', scoutPlanetTitle: '행성 정찰', attackPlanetTitle: '행성 공격', colonizePlanetTitle: '행성 식민', + recyclePlanetTitle: '잔해 회수', scoutPlanetMessage: '행성 [{coordinates}]을(를) 정찰하기 위해 정찰기를 보내시겠습니까?\n\n함대 페이지로 이동하여 함선을 선택하고 파견하세요.', attackPlanetMessage: '행성 [{coordinates}]을(를) 공격하시겠습니까?\n\n함대 페이지로 이동하여 함선을 선택하고 파견하세요.', - colonizePlanetMessage: '위치 [{coordinates}]을(를) 식민하시겠습니까?\n\n함대 페이지로 이동하여 식민선을 파견하세요.' + colonizePlanetMessage: '위치 [{coordinates}]을(를) 식민하시겠습니까?\n\n함대 페이지로 이동하여 식민선을 파견하세요.', + recyclePlanetMessage: '위치 [{coordinates}]의 잔해를 회수하시겠습니까?\n\n함대 페이지로 이동하여 회수선을 파견하세요.' }, messagesView: { title: '메시지 센터', + battles: '전투', + spy: '정찰', battleReports: '전투 보고서', spyReports: '정찰 보고서', noBattleReports: '전투 보고서 없음', @@ -457,7 +502,17 @@ export default { resources: '자원', fleet: '함대', defense: '방어', - buildings: '건물' + buildings: '건물', + unread: '읽지 않음', + targetPlanet: '목표 행성', + attackerRemaining: '공격자 잔여', + defenderRemaining: '방어자 잔여', + moonChance: '위성 생성 확률', + showRoundDetails: '라운드 상세 표시', + hideRoundDetails: '라운드 상세 숨기기', + round: '제{round}라운드', + attackerRemainingPower: '공격자 잔여 화력', + defenderRemainingPower: '방어자 잔여 화력' }, simulatorView: { title: '전투 시뮬레이터', @@ -519,6 +574,12 @@ export default { clearConfirmMessage: '모든 게임 데이터가 삭제되고 처음부터 시작됩니다. 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?', gameSettings: '게임 설정', gameSettingsDesc: '게임 매개변수 및 설정 조정', + gamePause: '게임 일시정지', + gamePauseDesc: '게임 시간 및 자원 생산 일시정지 또는 재개', + pause: '일시정지', + resume: '재개', + gamePaused: '게임이 일시정지되었습니다', + gameResumed: '게임이 재개되었습니다', playerName: '플레이어 이름', gameSpeed: '게임 속도', gameSpeedDesc: '현재 게임 속도 배율', @@ -528,5 +589,34 @@ export default { community: '커뮤니티', github: 'GitHub 저장소', qqGroup: 'QQ 그룹' + }, + gmView: { + title: 'GM 제어판', + adminOnly: '관리자 전용', + selectPlanet: '행성 선택', + choosePlanet: '행성을 선택하세요', + resources: '자원', + buildings: '건물', + research: '연구', + ships: '함선', + defense: '방어', + officers: '장교', + modifyResources: '자원 수정', + resourcesDesc: '행성 자원을 빠르게 수정', + modifyBuildings: '건물 수정', + buildingsDesc: '건물 레벨을 빠르게 설정', + modifyResearch: '연구 수정', + researchDesc: '연구 레벨을 빠르게 설정', + modifyShips: '함선 수정', + shipsDesc: '함선 수량을 빠르게 설정', + modifyDefense: '방어 수정', + defenseDesc: '방어 수량을 빠르게 설정', + modifyOfficers: '장교 수정', + officersDesc: '장교 만료 시간을 빠르게 설정', + days: '일', + dangerZone: '위험 구역', + dangerZoneDesc: '다음 작업은 되돌릴 수 없습니다', + resetGame: '게임 초기화', + resetGameConfirm: '게임을 초기화하시겠습니까? 모든 데이터가 삭제됩니다!' } } diff --git a/src/locales/ru.ts b/src/locales/ru.ts index 1b3ef40..9a0af13 100644 --- a/src/locales/ru.ts +++ b/src/locales/ru.ts @@ -32,11 +32,13 @@ export default { locked: 'Заблокировано', viewRequirements: 'Просмотр требований', requirementsNotMet: 'Требования не выполнены', - current: 'Текущий' + current: 'Текущий', + level: 'Уровень' }, errors: { requirementsNotMet: 'Требования не выполнены', insufficientResources: 'Недостаточно ресурсов', + insufficientFleetStorage: 'Недостаточно места для флота', shieldDomeLimit: 'Достигнут лимит щитовых куполов', fleetMissionsFull: 'Слоты миссий флота заполнены', insufficientFleet: 'Недостаточно флота', @@ -61,7 +63,8 @@ export default { simulator: 'Симулятор', galaxy: 'Галактика', messages: 'Сообщения', - settings: 'Настройки' + settings: 'Настройки', + gm: 'GM' }, sidebar: { language: 'Язык', @@ -77,10 +80,14 @@ export default { darkMatter: 'Тёмная материя', energy: 'Энергия', production: 'Производство', + consumption: 'Потребление', capacity: 'Вместимость', current: 'Текущий', max: 'Макс. вместимость', - perHour: 'час' + perHour: 'час', + perMinute: 'мин', + hour: 'час', + noEnergy: 'Нет энергии' }, planet: { planet: 'Планета', @@ -113,9 +120,11 @@ export default { crystalStorage: 'Хранилище кристалла', deuteriumTank: 'Цистерна дейтерия', darkMatterCollector: 'Коллектор тёмной материи', + terraformer: 'Терраформер', lunarBase: 'Лунная база', sensorPhalanx: 'Сенсорная фаланга', jumpGate: 'Прыжковые ворота', + planetDestroyerFactory: 'Фабрика разрушителей планет', buildTime: 'Время строительства', production: 'Производство', consumption: 'Потребление', @@ -129,16 +138,18 @@ export default { deuteriumSynthesizer: 'Синтезирует дейтериевые ресурсы', solarPlant: 'Обеспечивает энергией', roboticsFactory: 'Ускоряет скорость строительства', - naniteFactory: 'Увеличивает вместимость очереди строительства, +1 за уровень (макс 10)', + naniteFactory: 'Увеличивает вместимость очереди строительства, +1 за уровень (макс 10 уровней)', shipyard: 'Строит корабли', researchLab: 'Исследует технологии', metalStorage: 'Увеличивает ёмкость хранилища металла', crystalStorage: 'Увеличивает ёмкость хранилища кристалла', deuteriumTank: 'Увеличивает ёмкость хранилища дейтерия', darkMatterCollector: 'Собирает редкие ресурсы тёмной материи', - lunarBase: 'Увеличивает доступное пространство на луне', + terraformer: 'Терраформирует поверхность планеты, увеличивает доступное пространство на 5 за уровень', + lunarBase: 'Увеличивает доступное пространство на луне, +5 пространства за уровень', sensorPhalanx: 'Обнаруживает активность флота в окружающих системах', - jumpGate: 'Мгновенно переносит флоты на другие луны' + jumpGate: 'Мгновенно переносит флоты на другие луны', + planetDestroyerFactory: 'Производит абсолютное оружие, способное уничтожать планеты' }, ships: { lightFighter: 'Лёгкий истребитель', @@ -150,7 +161,8 @@ export default { colonyShip: 'Колонизатор', recycler: 'Переработчик', espionageProbe: 'Шпионский зонд', - darkMatterHarvester: 'Сборщик тёмной материи' + darkMatterHarvester: 'Сборщик тёмной материи', + deathstar: 'Звезда Смерти' }, shipDescriptions: { lightFighter: 'Базовая боевая единица', @@ -162,7 +174,8 @@ export default { colonyShip: 'Используется для колонизации новых планет', recycler: 'Собирает ресурсы с поля обломков', espionageProbe: 'Разведывает вражеские планеты', - darkMatterHarvester: 'Специальный корабль для сбора тёмной материи' + darkMatterHarvester: 'Специальный корабль для сбора тёмной материи', + deathstar: 'Абсолютное оружие, способное уничтожать целые планеты' }, defenses: { rocketLauncher: 'Ракетная установка', @@ -172,7 +185,8 @@ export default { ionCannon: 'Ионное орудие', plasmaTurret: 'Плазменная турель', smallShieldDome: 'Малый щитовой купол', - largeShieldDome: 'Большой щитовой купол' + largeShieldDome: 'Большой щитовой купол', + planetaryShield: 'Планетарный щит' }, defenseDescriptions: { rocketLauncher: 'Базовое оборонительное сооружение', @@ -182,7 +196,8 @@ export default { ionCannon: 'Эффективно против щитов', plasmaTurret: 'Мощное оборонительное сооружение', smallShieldDome: 'Малый щит, защищающий всю планету', - largeShieldDome: 'Большой щит, защищающий всю планету' + largeShieldDome: 'Большой щит, защищающий всю планету', + planetaryShield: 'Суперщит, защищающий планету от атак уничтожения' }, research: { researchTime: 'Время исследования', @@ -200,7 +215,9 @@ export default { combustionDrive: 'Реактивный двигатель', impulseDrive: 'Импульсный двигатель', hyperspaceDrive: 'Гиперпространственный двигатель', - darkMatterTechnology: 'Технология тёмной материи' + darkMatterTechnology: 'Технология тёмной материи', + terraformingTechnology: 'Технология терраформирования', + planetDestructionTech: 'Технология уничтожения планет' }, technologyDescriptions: { energyTechnology: 'Улучшает энергоэффективность', @@ -208,11 +225,13 @@ export default { ionTechnology: 'Технология ионного оружия', hyperspaceTechnology: 'Технология гиперпространственных прыжков', plasmaTechnology: 'Технология плазменного оружия', - computerTechnology: 'Увеличивает вместимость очереди исследований, +1 за уровень (макс 10)', + computerTechnology: 'Увеличивает вместимость очереди исследований, +1 за уровень (макс 10 уровней)', combustionDrive: 'Базовая технология двигателей', impulseDrive: 'Средняя технология двигателей', hyperspaceDrive: 'Продвинутая технология двигателей', - darkMatterTechnology: 'Исследование свойств и применения тёмной материи' + darkMatterTechnology: 'Исследование свойств и применения тёмной материи', + terraformingTechnology: 'Исследование технологии терраформирования планет, увеличивает доступное пространство всех планет на 3 за уровень', + planetDestructionTech: 'Исследование ужасающей технологии уничтожения целых планет' }, officers: { commander: 'Командир', @@ -220,7 +239,10 @@ export default { engineer: 'Инженер', geologist: 'Геолог', technocrat: 'Технократ', - darkMatterSpecialist: 'Специалист по тёмной материи' + darkMatterSpecialist: 'Специалист по тёмной материи', + resourceBonus: 'Бонус производства ресурсов', + darkMatterBonus: 'Бонус производства тёмной материи', + energyBonus: 'Бонус производства энергии' }, officerDescriptions: { commander: 'Улучшает скорость строительства и управление', @@ -247,7 +269,14 @@ export default { title: 'Обзор планеты', resourceOverview: 'Ресурсы', fleetInfo: 'Флот', - currentShips: 'Корабли на этой планете' + currentShips: 'Корабли на этой планете', + productionSources: 'Источники производства', + productionSourcesDesc: 'Подробная информация о производстве ресурсов и бонусах', + consumptionSources: 'Источники потребления', + consumptionSourcesDesc: 'Детали потребления энергии зданиями', + totalProduction: 'Общее производство', + totalConsumption: 'Общее потребление', + noConsumption: 'Нет потребления энергии' }, buildingsView: { title: 'Здания', @@ -257,6 +286,8 @@ export default { upgradeCost: 'Стоимость улучшения', buildTime: 'Время строительства', upgrade: 'Улучшить', + maxLevelReached: 'Достигнут максимальный уровень', + requirementsNotMet: 'Требования не выполнены', upgradeFailed: 'Улучшение не удалось', upgradeFailedMessage: 'Пожалуйста, проверьте, достаточно ли у вас ресурсов, места или нет других задач строительства.', demolish: 'Снести', @@ -268,6 +299,7 @@ export default { title: 'Исследования', researchCost: 'Стоимость исследования', research: 'Исследовать', + maxLevelReached: 'Достигнут максимальный уровень', researchFailed: 'Исследование не удалось', researchFailedMessage: 'Пожалуйста, проверьте, достаточно ли у вас ресурсов, выполнены ли предварительные условия или нет других исследовательских задач.' @@ -289,6 +321,7 @@ export default { }, shipyardView: { title: 'Верфь', + fleetStorage: 'Хранилище флота', attack: 'Атака', shield: 'Щит', speed: 'Скорость', @@ -360,6 +393,7 @@ export default { colonize: 'Колонизация', spy: 'Разведка', deploy: 'Размещение', + recycle: 'Переработка', transportResources: 'Транспортировка ресурсов', totalCargoCapacity: 'Общая грузоподъёмность', used: 'Использовано', @@ -376,7 +410,12 @@ export default { recallFailed: 'Отзыв не удался', recallFailedMessage: 'Эта миссия не может быть отозвана.', unknownPlanet: 'Неизвестная планета', - fleetMissionSlots: 'Слоты миссий флота' + fleetMissionSlots: 'Слоты миссий флота', + noShipsSelected: 'Корабли не выбраны', + cannotSendToOwnPlanet: 'Невозможно отправить флот на свою планету', + cargoExceedsCapacity: 'Груз превышает вместимость', + noColonyShip: 'Для колонизационной миссии требуется колониальный корабль', + noDebrisAtTarget: 'Нет поля обломков по целевым координатам или поле обломков пусто' }, officersView: { title: 'Офицеры', @@ -429,18 +468,25 @@ export default { attack: 'Атака', colonize: 'Колонизация', switch: 'Переключить', + recycle: 'Переработка', + debrisField: 'Поле обломков', scoutPlanetTitle: 'Разведать планету', attackPlanetTitle: 'Атаковать планету', colonizePlanetTitle: 'Колонизировать планету', + recyclePlanetTitle: 'Переработать обломки', scoutPlanetMessage: 'Вы уверены, что хотите отправить шпионские зонды для разведки планеты [{coordinates}]?\n\nПерейдите на страницу флота, чтобы выбрать корабли и отправить.', attackPlanetMessage: 'Вы уверены, что хотите атаковать планету [{coordinates}]?\n\nПерейдите на страницу флота, чтобы выбрать корабли и отправить.', colonizePlanetMessage: - 'Вы уверены, что хотите колонизировать позицию [{coordinates}]?\n\nПерейдите на страницу флота, чтобы отправить колонизационный корабль.' + 'Вы уверены, что хотите колонизировать позицию [{coordinates}]?\n\nПерейдите на страницу флота, чтобы отправить колонизационный корабль.', + recyclePlanetMessage: + 'Вы уверены, что хотите переработать обломки в позиции [{coordinates}]?\n\nПерейдите на страницу флота, чтобы отправить переработчики.' }, messagesView: { title: 'Сообщения', + battles: 'Битвы', + spy: 'Разведка', battleReports: 'Отчёты о боях', spyReports: 'Отчёты разведки', noBattleReports: 'Нет отчётов о боях', @@ -461,7 +507,17 @@ export default { resources: 'Ресурсы', fleet: 'Флот', defense: 'Оборона', - buildings: 'Здания' + buildings: 'Здания', + unread: 'Непрочитано', + targetPlanet: 'Целевая планета', + attackerRemaining: 'Осталось у нападающего', + defenderRemaining: 'Осталось у защитника', + moonChance: 'Шанс появления луны', + showRoundDetails: 'Показать детали раундов', + hideRoundDetails: 'Скрыть детали раундов', + round: 'Раунд {round}', + attackerRemainingPower: 'Оставшаяся мощь нападающего', + defenderRemainingPower: 'Оставшаяся мощь защитника' }, simulatorView: { title: 'Симулятор боя', @@ -523,6 +579,12 @@ export default { clearConfirmMessage: 'Все игровые данные будут удалены и игра начнется заново. Это действие невозможно отменить. Продолжить?', gameSettings: 'Настройки игры', gameSettingsDesc: 'Настроить параметры и предпочтения игры', + gamePause: 'Пауза игры', + gamePauseDesc: 'Приостановить или возобновить игровое время и производство ресурсов', + pause: 'Пауза', + resume: 'Возобновить', + gamePaused: 'Игра приостановлена', + gameResumed: 'Игра возобновлена', playerName: 'Имя игрока', gameSpeed: 'Скорость игры', gameSpeedDesc: 'Текущий множитель скорости игры', @@ -532,5 +594,34 @@ export default { community: 'Сообщество', github: 'Репозиторий GitHub', qqGroup: 'Группа QQ' + }, + gmView: { + title: 'Панель управления GM', + adminOnly: 'Только для администратора', + selectPlanet: 'Выбрать планету', + choosePlanet: 'Выберите планету', + resources: 'Ресурсы', + buildings: 'Здания', + research: 'Исследования', + ships: 'Корабли', + defense: 'Оборона', + officers: 'Офицеры', + modifyResources: 'Изменить ресурсы', + resourcesDesc: 'Быстрое изменение ресурсов планеты', + modifyBuildings: 'Изменить здания', + buildingsDesc: 'Быстрая установка уровней зданий', + modifyResearch: 'Изменить исследования', + researchDesc: 'Быстрая установка уровней исследований', + modifyShips: 'Изменить корабли', + shipsDesc: 'Быстрая установка количества кораблей', + modifyDefense: 'Изменить оборону', + defenseDesc: 'Быстрая установка количества обороны', + modifyOfficers: 'Изменить офицеров', + officersDesc: 'Быстрая установка времени истечения офицеров', + days: 'д', + dangerZone: 'Опасная зона', + dangerZoneDesc: 'Следующие операции необратимы', + resetGame: 'Сбросить игру', + resetGameConfirm: 'Вы уверены, что хотите сбросить игру? Все данные будут удалены!' } } diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index ab82635..8f2e8ed 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -32,11 +32,13 @@ export default { locked: '已锁定', viewRequirements: '查看前置条件', requirementsNotMet: '前置条件未满足', - current: '当前' + current: '当前', + level: '等级' }, errors: { requirementsNotMet: '不满足前置条件', insufficientResources: '资源不足', + insufficientFleetStorage: '舰队仓储空间不足', shieldDomeLimit: '护盾罩数量限制', fleetMissionsFull: '舰队任务槽位已满', insufficientFleet: '舰队数量不足', @@ -61,7 +63,8 @@ export default { simulator: '模拟', galaxy: '星系', messages: '消息', - settings: '设置' + settings: '设置', + gm: 'GM' }, sidebar: { language: '语言', @@ -77,10 +80,14 @@ export default { darkMatter: '暗物质', energy: '能量', production: '产量', + consumption: '消耗', capacity: '容量', current: '当前储量', max: '最大容量', - perHour: '小时' + perHour: '小时', + perMinute: '分钟', + hour: '小时', + noEnergy: '能量不足' }, planet: { planet: '星球', @@ -113,9 +120,11 @@ export default { crystalStorage: '晶体仓库', deuteriumTank: '重氢罐', darkMatterCollector: '暗物质收集器', + terraformer: '地形改造器', lunarBase: '月球基地', sensorPhalanx: '传感器阵列', jumpGate: '跳跃门', + planetDestroyerFactory: '行星毁灭者工厂', buildTime: '建造时间', production: '产量', consumption: '消耗', @@ -129,16 +138,18 @@ export default { deuteriumSynthesizer: '合成重氢资源', solarPlant: '提供能源', roboticsFactory: '加快建造速度', - naniteFactory: '增加建造队列数量,每级+1队列(最多10个)', + naniteFactory: '增加建造队列数量,每级+1队列(最多10级)', shipyard: '建造舰船', researchLab: '研究科技', metalStorage: '增加金属存储上限', crystalStorage: '增加晶体存储上限', deuteriumTank: '增加重氢存储上限', darkMatterCollector: '收集稀有的暗物质资源', - lunarBase: '增加月球可用空间', + terraformer: '改造行星地形,每级增加5个可用空间', + lunarBase: '增加月球可用空间,每级+5空间', sensorPhalanx: '侦测周围星系的舰队活动', - jumpGate: '瞬间传送舰队到其他月球' + jumpGate: '瞬间传送舰队到其他月球', + planetDestroyerFactory: '建造能够摧毁行星的终极武器' }, ships: { lightFighter: '轻型战斗机', @@ -150,7 +161,8 @@ export default { colonyShip: '殖民船', recycler: '回收船', espionageProbe: '间谍探测器', - darkMatterHarvester: '暗物质采集船' + darkMatterHarvester: '暗物质采集船', + deathstar: '死星' }, shipDescriptions: { lightFighter: '基础战斗单位', @@ -162,7 +174,8 @@ export default { colonyShip: '用于殖民新星球', recycler: '收集残骸场资源', espionageProbe: '侦察敌方星球', - darkMatterHarvester: '专门用于采集暗物质的特殊飞船' + darkMatterHarvester: '专门用于采集暗物质的特殊飞船', + deathstar: '终极武器,能够摧毁整个行星' }, defenses: { rocketLauncher: '火箭发射器', @@ -172,7 +185,8 @@ export default { ionCannon: '离子炮', plasmaTurret: '等离子炮塔', smallShieldDome: '小型护盾罩', - largeShieldDome: '大型护盾罩' + largeShieldDome: '大型护盾罩', + planetaryShield: '行星护盾' }, defenseDescriptions: { rocketLauncher: '基础防御设施', @@ -182,7 +196,8 @@ export default { ionCannon: '破坏护盾的利器', plasmaTurret: '强力防御设施', smallShieldDome: '保护整个星球的小型护盾', - largeShieldDome: '保护整个星球的大型护盾' + largeShieldDome: '保护整个星球的大型护盾', + planetaryShield: '保护行星免受毁灭攻击的超级护盾' }, research: { researchTime: '研究时间', @@ -200,7 +215,9 @@ export default { combustionDrive: '燃烧引擎', impulseDrive: '脉冲引擎', hyperspaceDrive: '超空间引擎', - darkMatterTechnology: '暗物质技术' + darkMatterTechnology: '暗物质技术', + terraformingTechnology: '地形改造技术', + planetDestructionTech: '行星毁灭技术' }, technologyDescriptions: { energyTechnology: '提高能源利用效率', @@ -208,11 +225,13 @@ export default { ionTechnology: '离子武器技术', hyperspaceTechnology: '超空间跳跃技术', plasmaTechnology: '等离子武器技术', - computerTechnology: '增加研究队列数量,每级+1队列(最多10个)', + computerTechnology: '增加研究队列数量,每级+1队列(最多10级)', combustionDrive: '基础推进技术', impulseDrive: '中级推进技术', hyperspaceDrive: '高级推进技术', - darkMatterTechnology: '研究暗物质的性质和应用' + darkMatterTechnology: '研究暗物质的性质和应用', + terraformingTechnology: '研究行星地形改造技术,每级为所有行星增加3个可用空间', + planetDestructionTech: '研究如何摧毁整个行星的恐怖技术' }, officers: { commander: '指挥官', @@ -220,7 +239,10 @@ export default { engineer: '工程师', geologist: '地质学家', technocrat: '技术专家', - darkMatterSpecialist: '暗物质专家' + darkMatterSpecialist: '暗物质专家', + resourceBonus: '资源产量加成', + darkMatterBonus: '暗物质产量加成', + energyBonus: '能量产量加成' }, officerDescriptions: { commander: '提升建筑速度和管理能力', @@ -241,13 +263,21 @@ export default { cancelResearch: '取消研究', confirmCancel: '确定要取消吗?将返还50%的资源。', level: '等级', + quantity: '数量', upgradeToLevel: '升级到等级' }, overview: { title: '星球总览', resourceOverview: '资源概览', fleetInfo: '舰队', - currentShips: '当前星球的舰船数量' + currentShips: '当前星球的舰船数量', + productionSources: '资源获取来源', + productionSourcesDesc: '详细的资源产量及加成信息', + consumptionSources: '能量消耗来源', + consumptionSourcesDesc: '各建筑的能量消耗详情', + totalProduction: '总产量', + totalConsumption: '总消耗', + noConsumption: '当前无能量消耗' }, buildingsView: { title: '建筑', @@ -257,6 +287,8 @@ export default { upgradeCost: '升级消耗', buildTime: '建造时间', upgrade: '升级', + maxLevelReached: '等级已满', + requirementsNotMet: '条件不足', upgradeFailed: '升级失败', upgradeFailedMessage: '请检查资源是否足够、空间是否充足或是否有其他建造任务。', demolish: '拆除', @@ -268,6 +300,7 @@ export default { title: '研究', researchCost: '研究消耗', research: '研究', + maxLevelReached: '等级已满', researchFailed: '研究失败', researchFailedMessage: '请检查资源是否足够、前置条件是否满足,或是否有其他研究任务。' }, @@ -288,6 +321,7 @@ export default { }, shipyardView: { title: '船坞', + fleetStorage: '舰队仓储', attack: '攻击力', shield: '护盾', speed: '速度', @@ -358,6 +392,8 @@ export default { colonize: '殖民', spy: '侦察', deploy: '部署', + recycle: '回收', + destroy: '行星毁灭', transportResources: '运输资源', totalCargoCapacity: '总载货量', used: '已用', @@ -374,7 +410,13 @@ export default { recallFailed: '召回失败', recallFailedMessage: '该任务无法召回。', unknownPlanet: '未知星球', - fleetMissionSlots: '舰队任务槽位' + fleetMissionSlots: '舰队任务槽位', + noShipsSelected: '未选择舰船', + cannotSendToOwnPlanet: '无法派遣舰队到自己的星球', + cargoExceedsCapacity: '载货量超出限制', + noColonyShip: '需要殖民船才能执行殖民任务', + noDebrisAtTarget: '目标坐标没有残骸场或残骸场已空', + noDeathstar: '需要死星才能执行毁灭任务' }, officersView: { title: '军官', @@ -427,15 +469,21 @@ export default { attack: '攻击', colonize: '殖民', switch: '切换', + recycle: '回收', + debrisField: '残骸场', scoutPlanetTitle: '侦察星球', attackPlanetTitle: '攻击星球', colonizePlanetTitle: '殖民星球', + recyclePlanetTitle: '回收残骸', scoutPlanetMessage: '确定要派遣间谍探测器侦察星球 [{coordinates}] 吗?\n\n请前往舰队页面选择舰船并派遣。', attackPlanetMessage: '确定要攻击星球 [{coordinates}] 吗?\n\n请前往舰队页面选择舰船并派遣。', - colonizePlanetMessage: '确定要殖民位置 [{coordinates}] 吗?\n\n请前往舰队页面派遣殖民船。' + colonizePlanetMessage: '确定要殖民位置 [{coordinates}] 吗?\n\n请前往舰队页面派遣殖民船。', + recyclePlanetMessage: '确定要回收位置 [{coordinates}] 的残骸吗?\n\n请前往舰队页面派遣回收船。' }, messagesView: { title: '消息中心', + battles: '战斗', + spy: '侦查', battleReports: '战斗报告', spyReports: '间谍报告', noBattleReports: '暂无战斗报告', @@ -456,7 +504,17 @@ export default { resources: '资源', fleet: '舰队', defense: '防御', - buildings: '建筑' + buildings: '建筑', + unread: '未读', + targetPlanet: '目标星球', + attackerRemaining: '攻击方剩余', + defenderRemaining: '防守方剩余', + moonChance: '月球生成概率', + showRoundDetails: '显示回合详情', + hideRoundDetails: '隐藏回合详情', + round: '第{round}回合', + attackerRemainingPower: '攻击方剩余火力', + defenderRemainingPower: '防守方剩余火力' }, simulatorView: { title: '战斗模拟器', @@ -518,6 +576,12 @@ export default { clearConfirmMessage: '这将删除所有游戏数据并重新开始,此操作不可撤销。确定要继续吗?', gameSettings: '游戏设置', gameSettingsDesc: '调整游戏参数和偏好设置', + gamePause: '游戏暂停', + gamePauseDesc: '暂停或恢复游戏时间和资源生产', + pause: '暂停', + resume: '恢复', + gamePaused: '游戏已暂停', + gameResumed: '游戏已恢复', playerName: '玩家名称', gameSpeed: '游戏速度', gameSpeedDesc: '当前游戏速度倍率', @@ -527,5 +591,34 @@ export default { community: '社区', github: 'GitHub 仓库', qqGroup: 'QQ 交流群' + }, + gmView: { + title: 'GM 管理面板', + adminOnly: '仅管理员', + selectPlanet: '选择星球', + choosePlanet: '选择一个星球', + resources: '资源', + buildings: '建筑', + research: '科技', + ships: '舰船', + defense: '防御', + officers: '军官', + modifyResources: '修改资源', + resourcesDesc: '快速修改星球资源数量', + modifyBuildings: '修改建筑', + buildingsDesc: '快速设置建筑等级', + modifyResearch: '修改科技', + researchDesc: '快速设置科技等级', + modifyShips: '修改舰船', + shipsDesc: '快速设置舰船数量', + modifyDefense: '修改防御', + defenseDesc: '快速设置防御数量', + modifyOfficers: '修改军官', + officersDesc: '快速设置军官到期时间', + days: '天', + dangerZone: '危险区域', + dangerZoneDesc: '以下操作不可撤销,请谨慎操作', + resetGame: '重置游戏', + resetGameConfirm: '确定要重置游戏吗?这将删除所有数据!' } } diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index f699ca2..57745c1 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -32,11 +32,13 @@ export default { locked: '已鎖定', viewRequirements: '查看前置條件', requirementsNotMet: '前置條件未滿足', - current: '當前' + current: '當前', + level: '等級' }, errors: { requirementsNotMet: '不滿足前置條件', insufficientResources: '資源不足', + insufficientFleetStorage: '艦隊倉儲空間不足', shieldDomeLimit: '護盾罩數量限制', fleetMissionsFull: '艦隊任務槽位已滿', insufficientFleet: '艦隊數量不足', @@ -61,7 +63,8 @@ export default { simulator: '模擬', galaxy: '星系', messages: '訊息', - settings: '設定' + settings: '設定', + gm: 'GM' }, sidebar: { language: '語言', @@ -77,10 +80,14 @@ export default { darkMatter: '暗物質', energy: '能量', production: '產量', + consumption: '消耗', capacity: '容量', current: '當前儲量', max: '最大容量', - perHour: '小時' + perHour: '小時', + perMinute: '分鐘', + hour: '小時', + noEnergy: '能量不足' }, planet: { planet: '星球', @@ -113,9 +120,11 @@ export default { crystalStorage: '晶體倉庫', deuteriumTank: '重氫罐', darkMatterCollector: '暗物質收集器', + terraformer: '地形改造器', lunarBase: '月球基地', sensorPhalanx: '傳感器陣列', jumpGate: '跳躍門', + planetDestroyerFactory: '行星毀滅者工廠', buildTime: '建造時間', production: '產量', consumption: '消耗', @@ -129,16 +138,18 @@ export default { deuteriumSynthesizer: '合成重氫資源', solarPlant: '提供能源', roboticsFactory: '加快建造速度', - naniteFactory: '增加建造佇列數量,每級+1佇列(最多10個)', + naniteFactory: '增加建造佇列數量,每級+1佇列(最多10級)', shipyard: '建造艦船', researchLab: '研究科技', metalStorage: '增加金屬儲存上限', crystalStorage: '增加晶體儲存上限', deuteriumTank: '增加重氫儲存上限', darkMatterCollector: '收集稀有的暗物質資源', - lunarBase: '增加月球可用空間', + terraformer: '改造行星地形,每級增加5個可用空間', + lunarBase: '增加月球可用空間,每級+5空間', sensorPhalanx: '偵測周圍星系的艦隊活動', - jumpGate: '瞬間傳送艦隊到其他月球' + jumpGate: '瞬間傳送艦隊到其他月球', + planetDestroyerFactory: '建造能夠摧毀行星的終極武器' }, ships: { lightFighter: '輕型戰鬥機', @@ -150,7 +161,8 @@ export default { colonyShip: '殖民船', recycler: '回收船', espionageProbe: '間諜探測器', - darkMatterHarvester: '暗物質採集船' + darkMatterHarvester: '暗物質採集船', + deathstar: '死星' }, shipDescriptions: { lightFighter: '基礎戰鬥單位', @@ -162,7 +174,8 @@ export default { colonyShip: '用於殖民新星球', recycler: '收集殘骸場資源', espionageProbe: '偵察敵方星球', - darkMatterHarvester: '專門用於採集暗物質的特殊飛船' + darkMatterHarvester: '專門用於採集暗物質的特殊飛船', + deathstar: '終極武器,能夠摧毀整個行星' }, defenses: { rocketLauncher: '火箭發射器', @@ -172,7 +185,8 @@ export default { ionCannon: '離子炮', plasmaTurret: '等離子炮塔', smallShieldDome: '小型護盾罩', - largeShieldDome: '大型護盾罩' + largeShieldDome: '大型護盾罩', + planetaryShield: '行星護盾' }, defenseDescriptions: { rocketLauncher: '基礎防禦設施', @@ -182,7 +196,8 @@ export default { ionCannon: '破壞護盾的利器', plasmaTurret: '強力防禦設施', smallShieldDome: '保護整個星球的小型護盾', - largeShieldDome: '保護整個星球的大型護盾' + largeShieldDome: '保護整個星球的大型護盾', + planetaryShield: '保護行星免受毀滅攻擊的超級護盾' }, research: { researchTime: '研究時間', @@ -200,7 +215,9 @@ export default { combustionDrive: '燃燒引擎', impulseDrive: '脈衝引擎', hyperspaceDrive: '超空間引擎', - darkMatterTechnology: '暗物質技術' + darkMatterTechnology: '暗物質技術', + terraformingTechnology: '地形改造技術', + planetDestructionTech: '行星毀滅技術' }, technologyDescriptions: { energyTechnology: '提高能源利用效率', @@ -208,11 +225,13 @@ export default { ionTechnology: '離子武器技術', hyperspaceTechnology: '超空間跳躍技術', plasmaTechnology: '等離子武器技術', - computerTechnology: '增加研究佇列數量,每級+1佇列(最多10個)', + computerTechnology: '增加研究佇列數量,每級+1佇列(最多10級)', combustionDrive: '基礎推進技術', impulseDrive: '中級推進技術', hyperspaceDrive: '高級推進技術', - darkMatterTechnology: '研究暗物質的性質和應用' + darkMatterTechnology: '研究暗物質的性質和應用', + terraformingTechnology: '研究行星地形改造技術,每級為所有行星增加3個可用空間', + planetDestructionTech: '研究如何摧毀整個行星的恐怖技術' }, officers: { commander: '指揮官', @@ -220,7 +239,10 @@ export default { engineer: '工程師', geologist: '地質學家', technocrat: '技術專家', - darkMatterSpecialist: '暗物質專家' + darkMatterSpecialist: '暗物質專家', + resourceBonus: '資源生產加成', + darkMatterBonus: '暗物質生產加成', + energyBonus: '能量生產加成' }, officerDescriptions: { commander: '提升建築速度和管理能力', @@ -247,7 +269,14 @@ export default { title: '星球總覽', resourceOverview: '資源概覽', fleetInfo: '艦隊資訊', - currentShips: '當前星球的艦船數量' + currentShips: '當前星球的艦船數量', + productionSources: '生產來源', + productionSourcesDesc: '詳細資源生產和加成資訊', + consumptionSources: '消耗來源', + consumptionSourcesDesc: '建築能量消耗詳情', + totalProduction: '總產量', + totalConsumption: '總消耗', + noConsumption: '無能量消耗' }, buildingsView: { title: '建築', @@ -257,6 +286,8 @@ export default { upgradeCost: '升級消耗', buildTime: '建造時間', upgrade: '升級', + maxLevelReached: '等級已滿', + requirementsNotMet: '條件不足', upgradeFailed: '升級失敗', upgradeFailedMessage: '請檢查資源是否足夠、空間是否充足或是否有其他建造任務。', demolish: '拆除', @@ -268,6 +299,7 @@ export default { title: '研究', researchCost: '研究消耗', research: '研究', + maxLevelReached: '等級已滿', researchFailed: '研究失敗', researchFailedMessage: '請檢查資源是否足夠、前置條件是否滿足,或是否有其他研究任務。' }, @@ -288,6 +320,7 @@ export default { }, shipyardView: { title: '船塢', + fleetStorage: '艦隊倉儲', attack: '攻擊力', shield: '護盾', speed: '速度', @@ -358,6 +391,7 @@ export default { colonize: '殖民', spy: '偵察', deploy: '部署', + recycle: '回收', transportResources: '運輸資源', totalCargoCapacity: '總載貨量', used: '已用', @@ -374,7 +408,12 @@ export default { recallFailed: '召回失敗', recallFailedMessage: '該任務無法召回。', unknownPlanet: '未知星球', - fleetMissionSlots: '艦隊任務槽位' + fleetMissionSlots: '艦隊任務槽位', + noShipsSelected: '未選擇艦船', + cannotSendToOwnPlanet: '無法派遣艦隊到自己的星球', + cargoExceedsCapacity: '載貨量超出限制', + noColonyShip: '需要殖民船才能執行殖民任務', + noDebrisAtTarget: '目標坐標沒有殘骸場或殘骸場已空' }, officersView: { title: '軍官', @@ -427,15 +466,21 @@ export default { attack: '攻擊', colonize: '殖民', switch: '切換', + recycle: '回收', + debrisField: '殘骸場', scoutPlanetTitle: '偵察星球', attackPlanetTitle: '攻擊星球', colonizePlanetTitle: '殖民星球', + recyclePlanetTitle: '回收殘骸', scoutPlanetMessage: '確定要派遣間諜探測器偵察星球 [{coordinates}] 嗎?\n\n請前往艦隊頁面選擇艦船並派遣。', attackPlanetMessage: '確定要攻擊星球 [{coordinates}] 嗎?\n\n請前往艦隊頁面選擇艦船並派遣。', - colonizePlanetMessage: '確定要殖民位置 [{coordinates}] 嗎?\n\n請前往艦隊頁面派遣殖民船。' + colonizePlanetMessage: '確定要殖民位置 [{coordinates}] 嗎?\n\n請前往艦隊頁面派遣殖民船。', + recyclePlanetMessage: '確定要回收位置 [{coordinates}] 的殘骸嗎?\n\n請前往艦隊頁面派遣回收船。' }, messagesView: { title: '訊息中心', + battles: '戰鬥', + spy: '偵查', battleReports: '戰鬥報告', spyReports: '間諜報告', noBattleReports: '暫無戰鬥報告', @@ -456,7 +501,17 @@ export default { resources: '資源', fleet: '艦隊', defense: '防禦', - buildings: '建築' + buildings: '建築', + unread: '未讀', + targetPlanet: '目標星球', + attackerRemaining: '攻擊方剩餘', + defenderRemaining: '防守方剩餘', + moonChance: '月球生成機率', + showRoundDetails: '顯示回合詳情', + hideRoundDetails: '隱藏回合詳情', + round: '第{round}回合', + attackerRemainingPower: '攻擊方剩餘火力', + defenderRemainingPower: '防守方剩餘火力' }, simulatorView: { title: '戰鬥模擬器', @@ -518,6 +573,12 @@ export default { clearConfirmMessage: '這將刪除所有遊戲資料並重新開始,此操作不可撤銷。確定要繼續嗎?', gameSettings: '遊戲設定', gameSettingsDesc: '調整遊戲參數和偏好設定', + gamePause: '遊戲暫停', + gamePauseDesc: '暫停或恢復遊戲時間和資源生產', + pause: '暫停', + resume: '恢復', + gamePaused: '遊戲已暫停', + gameResumed: '遊戲已恢復', playerName: '玩家名稱', gameSpeed: '遊戲速度', gameSpeedDesc: '目前遊戲速度倍率', @@ -527,5 +588,34 @@ export default { community: '社群', github: 'GitHub 儲存庫', qqGroup: 'QQ 交流群' + }, + gmView: { + title: 'GM 管理面板', + adminOnly: '僅管理員', + selectPlanet: '選擇星球', + choosePlanet: '選擇一個星球', + resources: '資源', + buildings: '建築', + research: '科技', + ships: '艦船', + defense: '防禦', + officers: '軍官', + modifyResources: '修改資源', + resourcesDesc: '快速修改星球資源數量', + modifyBuildings: '修改建築', + buildingsDesc: '快速設定建築等級', + modifyResearch: '修改科技', + researchDesc: '快速設定科技等級', + modifyShips: '修改艦船', + shipsDesc: '快速設定艦船數量', + modifyDefense: '修改防禦', + defenseDesc: '快速設定防禦數量', + modifyOfficers: '修改軍官', + officersDesc: '快速設定軍官到期時間', + days: '天', + dangerZone: '危險區域', + dangerZoneDesc: '以下操作不可撤銷,請謹慎操作', + resetGame: '重置遊戲', + resetGameConfirm: '確定要重置遊戲嗎?這將刪除所有資料!' } } diff --git a/src/logic/battleLogic.ts b/src/logic/battleLogic.ts index 99d8fba..6974dfc 100644 --- a/src/logic/battleLogic.ts +++ b/src/logic/battleLogic.ts @@ -1,312 +1,65 @@ import type { Fleet, Resources, BattleResult, Officer } from '@/types/game' -import { DefenseType, ShipType, OfficerType } from '@/types/game' -import { SHIPS, DEFENSES } from '@/config/gameConfig' +import { DefenseType, OfficerType } from '@/types/game' import * as officerLogic from './officerLogic' - -/** - * 战斗单位(舰船或防御) - */ -interface BattleUnit { - type: ShipType | DefenseType - count: number - attack: number - shield: number - armor: number - isShip: boolean -} - -/** - * 战斗方 - */ -interface BattleSide { - fleet: BattleUnit[] - defense: BattleUnit[] - totalShields: number - totalArmor: number -} - -/** - * 准备战斗方数据 - */ -const prepareBattleSide = (fleet: Partial, defense: Partial>, defenseBonus: number = 0): BattleSide => { - const side: BattleSide = { - fleet: [], - defense: [], - totalShields: 0, - totalArmor: 0 - } - - // 添加舰船 - Object.entries(fleet).forEach(([shipType, count]) => { - if (count > 0) { - const config = SHIPS[shipType as ShipType] - const unit: BattleUnit = { - type: shipType as ShipType, - count, - attack: config.attack, - shield: config.shield * (1 + defenseBonus / 100), - armor: config.armor * (1 + defenseBonus / 100), - isShip: true - } - side.fleet.push(unit) - side.totalShields += unit.shield * count - side.totalArmor += unit.armor * count - } - }) - - // 添加防御 - Object.entries(defense).forEach(([defenseType, count]) => { - if (count > 0) { - const config = DEFENSES[defenseType as DefenseType] - const unit: BattleUnit = { - type: defenseType as DefenseType, - count, - attack: config.attack, - shield: config.shield * (1 + defenseBonus / 100), - armor: config.armor * (1 + defenseBonus / 100), - isShip: false - } - side.defense.push(unit) - side.totalShields += unit.shield * count - side.totalArmor += unit.armor * count - } - }) - - return side -} - -/** - * 计算一方的总攻击力 - */ -const calculateTotalAttack = (side: BattleSide): number => { - let total = 0 - side.fleet.forEach(unit => { - total += unit.attack * unit.count - }) - side.defense.forEach(unit => { - total += unit.attack * unit.count - }) - return total -} - -/** - * 执行一轮战斗 - */ -const executeBattleRound = (attacker: BattleSide, defender: BattleSide): void => { - // 攻击方对防御方造成伤害 - const attackerDamage = calculateTotalAttack(attacker) - applyDamage(defender, attackerDamage) - - // 防御方对攻击方造成伤害 - const defenderDamage = calculateTotalAttack(defender) - applyDamage(attacker, defenderDamage) -} - -/** - * 对一方施加伤害 - */ -const applyDamage = (side: BattleSide, totalDamage: number): void => { - let remainingDamage = totalDamage - - // 先消耗护盾 - const totalShields = side.totalShields - if (totalShields > 0) { - const shieldAbsorption = Math.min(remainingDamage, totalShields) - remainingDamage -= shieldAbsorption - side.totalShields -= shieldAbsorption - } - - // 剩余伤害穿透护盾,破坏单位 - if (remainingDamage > 0) { - destroyUnits(side, remainingDamage) - } -} - -/** - * 根据伤害摧毁单位 - */ -const destroyUnits = (side: BattleSide, damage: number): void => { - let remainingDamage = damage - - // 随机选择单位摧毁 - const allUnits = [...side.fleet, ...side.defense] - - while (remainingDamage > 0 && allUnits.some(u => u.count > 0)) { - // 随机选择一个有数量的单位 - const availableUnits = allUnits.filter(u => u.count > 0) - if (availableUnits.length === 0) break - - const targetUnit = availableUnits[Math.floor(Math.random() * availableUnits.length)] - if (!targetUnit) break // 安全检查 - - // 计算破坏概率(伤害 / 装甲) - const destructionChance = Math.min(remainingDamage / targetUnit.armor, 1) - - if (Math.random() < destructionChance) { - targetUnit.count-- - side.totalArmor -= targetUnit.armor - remainingDamage -= targetUnit.armor - } else { - // 未破坏,但消耗一部分伤害 - remainingDamage -= targetUnit.armor * destructionChance - } - } -} - -/** - * 检查战斗是否结束 - */ -const isBattleOver = (attacker: BattleSide, defender: BattleSide): boolean => { - const attackerHasUnits = attacker.fleet.some(u => u.count > 0) || attacker.defense.some(u => u.count > 0) - const defenderHasUnits = defender.fleet.some(u => u.count > 0) || defender.defense.some(u => u.count > 0) - - return !attackerHasUnits || !defenderHasUnits -} - -/** - * 计算损失 - */ -const calculateLosses = ( - initialSide: BattleSide, - finalSide: BattleSide -): { fleet: Partial; defense: Partial> } => { - const losses: { fleet: Partial; defense: Partial> } = { - fleet: {}, - defense: {} - } - - // 计算舰船损失 - initialSide.fleet.forEach((initialUnit, index) => { - const finalUnit = finalSide.fleet[index] - const lost = initialUnit.count - (finalUnit?.count || 0) - if (lost > 0) { - losses.fleet[initialUnit.type as ShipType] = lost - } - }) - - // 计算防御损失 - initialSide.defense.forEach((initialUnit, index) => { - const finalUnit = finalSide.defense[index] - const lost = initialUnit.count - (finalUnit?.count || 0) - if (lost > 0) { - losses.defense[initialUnit.type as DefenseType] = lost - } - }) - - return losses -} - -/** - * 计算残骸场 - */ -const calculateDebrisField = ( - attackerLosses: Partial, - defenderLosses: { fleet: Partial; defense: Partial> } -): Resources => { - const debris: Resources = { metal: 0, crystal: 0, deuterium: 0, darkMatter: 0, energy: 0 } - const debrisRate = 0.3 // 30%的残骸回收率 - - // 攻击方舰船损失 - Object.entries(attackerLosses).forEach(([shipType, count]) => { - const config = SHIPS[shipType as ShipType] - debris.metal += config.cost.metal * count * debrisRate - debris.crystal += config.cost.crystal * count * debrisRate - }) - - // 防御方舰船损失 - Object.entries(defenderLosses.fleet).forEach(([shipType, count]) => { - const config = SHIPS[shipType as ShipType] - debris.metal += config.cost.metal * count * debrisRate - debris.crystal += config.cost.crystal * count * debrisRate - }) - - // 防御设施不产生残骸场(或产生较少) - - return debris -} - -/** - * 计算掠夺资源 - */ -const calculatePlunder = (availableResources: Resources, attackerFleet: Partial, cargoCapacity: number): Resources => { - // 计算攻击方剩余运载能力 - let totalCapacity = 0 - Object.entries(attackerFleet).forEach(([shipType, count]) => { - const config = SHIPS[shipType as ShipType] - totalCapacity += config.cargoCapacity * count - }) - - // 最多掠夺50%的资源 - const maxPlunder = Math.min(totalCapacity, cargoCapacity) - const plunderRate = 0.5 - - const plunder: Resources = { - metal: Math.min(availableResources.metal * plunderRate, maxPlunder * 0.5), - crystal: Math.min(availableResources.crystal * plunderRate, maxPlunder * 0.3), - deuterium: Math.min(availableResources.deuterium * plunderRate, maxPlunder * 0.2), - darkMatter: 0, // 暗物质无法掠夺 - energy: 0 - } - - return plunder -} +import { workerManager } from '@/workers/workerManager' /** * 执行战斗模拟 + * 使用 Web Worker 在后台线程中执行计算密集型的战斗模拟 */ -export const simulateBattle = ( +export const simulateBattle = async ( attackerFleet: Partial, defenderFleet: Partial, defenderDefense: Partial>, defenderResources: Resources, attackerOfficers: Record, defenderOfficers: Record -): BattleResult => { +): Promise => { // 计算军官加成 const attackerBonuses = officerLogic.calculateActiveBonuses(attackerOfficers, Date.now()) const defenderBonuses = officerLogic.calculateActiveBonuses(defenderOfficers, Date.now()) - // 准备战斗方 - const initialAttacker = prepareBattleSide(attackerFleet, {}, attackerBonuses.defenseBonus) - const initialDefender = prepareBattleSide(defenderFleet, defenderDefense, defenderBonuses.defenseBonus) + // 将防御加成转换为科技等级(简化:10%加成 = 1级科技) + const attackerTechLevel = Math.floor(attackerBonuses.defenseBonus / 10) + const defenderTechLevel = Math.floor(defenderBonuses.defenseBonus / 10) - // 复制战斗方用于战斗 - const attacker = JSON.parse(JSON.stringify(initialAttacker)) as BattleSide - const defender = JSON.parse(JSON.stringify(initialDefender)) as BattleSide - - // 战斗回合(最多6回合) - let rounds = 0 - const maxRounds = 6 - - while (rounds < maxRounds && !isBattleOver(attacker, defender)) { - executeBattleRound(attacker, defender) - rounds++ - } - - // 计算损失 - const attackerLosses = calculateLosses(initialAttacker, attacker).fleet - const defenderLosses = calculateLosses(initialDefender, defender) - - // 判断胜负 - let winner: 'attacker' | 'defender' | 'draw' = 'draw' - const attackerSurvived = attacker.fleet.some(u => u.count > 0) - const defenderSurvived = defender.fleet.some(u => u.count > 0) || defender.defense.some(u => u.count > 0) - - if (attackerSurvived && !defenderSurvived) { - winner = 'attacker' - } else if (!attackerSurvived && defenderSurvived) { - winner = 'defender' - } - - // 计算残骸场 - const debrisField = calculateDebrisField(attackerLosses, defenderLosses) + // 使用 Worker 执行战斗模拟 + const simulationResult = await workerManager.simulateBattle({ + attacker: { + ships: attackerFleet, + weaponTech: 0, // 暂时不考虑武器科技 + shieldTech: attackerTechLevel, + armorTech: attackerTechLevel + }, + defender: { + ships: defenderFleet, + defense: defenderDefense, + weaponTech: 0, + shieldTech: defenderTechLevel, + armorTech: defenderTechLevel + }, + maxRounds: 6 // 最多6回合 + }) // 计算掠夺(仅攻击方胜利时) const plunder = - winner === 'attacker' - ? calculatePlunder(defenderResources, attackerFleet, 10000) + simulationResult.winner === 'attacker' + ? await workerManager.calculatePlunder({ + defenderResources, + attackerFleet: simulationResult.attackerRemaining + }) : { metal: 0, crystal: 0, deuterium: 0, darkMatter: 0, energy: 0 } + // 计算残骸场 + const debrisField = await workerManager.calculateDebris({ + attackerLosses: simulationResult.attackerLosses, + defenderLosses: simulationResult.defenderLosses + }) + + // 计算月球生成概率(根据残骸场总量) + const totalDebris = debrisField.metal + debrisField.crystal + const moonChance = Math.min(totalDebris / 100000, 0.2) // 最高20%概率 + // 生成战斗报告 const battleResult: BattleResult = { id: `battle_${Date.now()}`, @@ -318,11 +71,17 @@ export const simulateBattle = ( attackerFleet, defenderFleet, defenderDefense, - attackerLosses, - defenderLosses, - winner, + attackerLosses: simulationResult.attackerLosses, + defenderLosses: simulationResult.defenderLosses, + winner: simulationResult.winner, plunder, - debrisField + debrisField, + // 新增详细信息 + rounds: simulationResult.rounds, + attackerRemaining: simulationResult.attackerRemaining, + defenderRemaining: simulationResult.defenderRemaining, + roundDetails: simulationResult.roundDetails, + moonChance } return battleResult diff --git a/src/logic/fleetLogic.ts b/src/logic/fleetLogic.ts index 9746751..d89f05d 100644 --- a/src/logic/fleetLogic.ts +++ b/src/logic/fleetLogic.ts @@ -1,17 +1,35 @@ -import type { FleetMission, Planet, Resources, Fleet, BattleResult, SpyReport, Player, Officer } from '@/types/game' +import type { FleetMission, Planet, Resources, Fleet, BattleResult, SpyReport, Player, Officer, DebrisField } from '@/types/game' import { ShipType, DefenseType, MissionType, BuildingType, OfficerType } from '@/types/game' +import { FLEET_STORAGE_CONFIG } from '@/config/gameConfig' import * as battleLogic from './battleLogic' import * as moonLogic from './moonLogic' import * as moonValidation from './moonValidation' /** * 计算两个星球之间的距离 + * 使用类似 OGame 的距离计算公式 */ export const calculateDistance = ( from: { galaxy: number; system: number; position: number }, to: { galaxy: number; system: number; position: number } ): number => { - return Math.sqrt(Math.pow(to.galaxy - from.galaxy, 2) + Math.pow(to.system - from.system, 2) + Math.pow(to.position - from.position, 2)) + // 同一位置 + if (from.galaxy === to.galaxy && from.system === to.system && from.position === to.position) { + return 5 + } + + // 同星系内不同位置 + if (from.galaxy === to.galaxy && from.system === to.system) { + return 1000 + Math.abs(to.position - from.position) * 5 + } + + // 同系统内不同星系 + if (from.galaxy === to.galaxy) { + return 2700 + Math.abs(to.system - from.system) * 95 + } + + // 不同系统 + return 20000 + Math.abs(to.galaxy - from.galaxy) * 20000 } /** @@ -66,20 +84,20 @@ export const processTransportArrival = (mission: FleetMission, targetPlanet: Pla /** * 处理攻击任务到达 */ -export const processAttackArrival = ( +export const processAttackArrival = async ( mission: FleetMission, targetPlanet: Planet | undefined, attacker: Player, defender: Player | null, allPlanets: Planet[] -): { battleResult: BattleResult; moon: Planet | null } | null => { +): Promise<{ battleResult: BattleResult; moon: Planet | null; debrisField: DebrisField | null } | null> => { if (!targetPlanet || targetPlanet.ownerId === attacker.id) { mission.status = 'returning' return null } - // 执行战斗 - const battleResult = battleLogic.simulateBattle( + // 执行战斗(使用 Worker 进行异步计算) + const battleResult = await battleLogic.simulateBattle( mission.fleet, targetPlanet.fleet, targetPlanet.defense, @@ -141,7 +159,22 @@ export const processAttackArrival = ( } } - return { battleResult, moon } + // 创建残骸场(如果有残骸) + let debrisField: DebrisField | null = null + const totalDebris = battleResult.debrisField.metal + battleResult.debrisField.crystal + if (totalDebris > 0) { + debrisField = { + id: `debris_${targetPlanet.position.galaxy}_${targetPlanet.position.system}_${targetPlanet.position.position}`, + position: targetPlanet.position, + resources: { + metal: battleResult.debrisField.metal, + crystal: battleResult.debrisField.crystal + }, + createdAt: Date.now() + } + } + + return { battleResult, moon, debrisField } } /** @@ -177,7 +210,8 @@ export const processColonizeArrival = ( [ShipType.ColonyShip]: 0, [ShipType.Recycler]: 0, [ShipType.EspionageProbe]: 0, - [ShipType.DarkMatterHarvester]: 0 + [ShipType.DarkMatterHarvester]: 0, + [ShipType.Deathstar]: 0 }, defense: { [DefenseType.RocketLauncher]: 0, @@ -187,11 +221,13 @@ export const processColonizeArrival = ( [DefenseType.IonCannon]: 0, [DefenseType.PlasmaTurret]: 0, [DefenseType.SmallShieldDome]: 0, - [DefenseType.LargeShieldDome]: 0 + [DefenseType.LargeShieldDome]: 0, + [DefenseType.PlanetaryShield]: 0 }, buildQueue: [], lastUpdate: Date.now(), maxSpace: 200, + maxFleetStorage: FLEET_STORAGE_CONFIG.baseStorage, isMoon: false } @@ -250,6 +286,156 @@ export const processDeployArrival = (mission: FleetMission, targetPlanet: Planet return true } +/** + * 处理回收任务到达 + */ +export const processRecycleArrival = ( + mission: FleetMission, + debrisField: DebrisField | undefined +): { collectedResources: Pick; remainingDebris: Pick | null } | null => { + if (!debrisField) { + mission.status = 'returning' + return null + } + + // 计算回收船的货舱容量 + const recyclerCount = mission.fleet[ShipType.Recycler] || 0 + const recyclerCapacity = 20000 // 每艘回收船容量20000 + const totalCapacity = recyclerCount * recyclerCapacity + + // 计算已装载的货物 + const currentCargo = mission.cargo.metal + mission.cargo.crystal + mission.cargo.deuterium + + // 剩余容量 + const availableCapacity = totalCapacity - currentCargo + + // 计算可以收集的资源 + const totalDebris = debrisField.resources.metal + debrisField.resources.crystal + const collectedAmount = Math.min(totalDebris, availableCapacity) + + // 按比例收集金属和晶体 + const metalRatio = debrisField.resources.metal / totalDebris + const crystalRatio = debrisField.resources.crystal / totalDebris + + const collectedMetal = Math.floor(collectedAmount * metalRatio) + const collectedCrystal = Math.floor(collectedAmount * crystalRatio) + + // 更新任务货物 + mission.cargo.metal += collectedMetal + mission.cargo.crystal += collectedCrystal + + // 更新残骸场 + const remainingMetal = debrisField.resources.metal - collectedMetal + const remainingCrystal = debrisField.resources.crystal - collectedCrystal + + mission.status = 'returning' + + return { + collectedResources: { + metal: collectedMetal, + crystal: collectedCrystal + }, + remainingDebris: + remainingMetal > 0 || remainingCrystal > 0 + ? { + metal: remainingMetal, + crystal: remainingCrystal + } + : null + } +} + +/** + * 计算行星毁灭概率 + */ +export const calculateDestructionChance = ( + deathstarCount: number, + planetaryShieldCount: number, + planetDefensePower: number +): number => { + // 基础摧毁概率:每艘死星 10% + let baseChance = deathstarCount * 10 + + // 行星护盾减少概率:每个护盾 -5% + const shieldReduction = planetaryShieldCount * 5 + + // 防御力量减少概率:每 10000 防御力量 -1% + const defensePowerReduction = Math.floor(planetDefensePower / 10000) + + // 最终概率 + let finalChance = baseChance - shieldReduction - defensePowerReduction + + // 限制在 1% - 99% 之间 + return Math.max(1, Math.min(99, finalChance)) +} + +/** + * 计算星球总防御力量 + */ +export const calculatePlanetDefensePower = ( + fleet: Partial, + defense: Partial> +): number => { + let totalPower = 0 + + // 计算舰队力量 + Object.entries(fleet).forEach(([_shipType, count]) => { + if (count > 0) { + // 简单估算:每艘船的攻击力 + 护盾 + 装甲 / 10 + totalPower += count * 100 // 简化计算 + } + }) + + // 计算防御设施力量 + Object.entries(defense).forEach(([_defenseType, count]) => { + if (count > 0) { + totalPower += count * 50 // 简化计算 + } + }) + + return totalPower +} + +/** + * 处理行星毁灭任务到达 + */ +export const processDestroyArrival = ( + mission: FleetMission, + targetPlanet: Planet | undefined, + attacker: Player +): { success: boolean; destructionChance: number; planetId?: string } | null => { + if (!targetPlanet || targetPlanet.ownerId === attacker.id) { + mission.status = 'returning' + return null + } + + // 检查是否有死星 + const deathstarCount = mission.fleet[ShipType.Deathstar] || 0 + if (deathstarCount === 0) { + mission.status = 'returning' + return null + } + + // 计算目标星球的防御力量 + const planetaryShieldCount = targetPlanet.defense[DefenseType.PlanetaryShield] || 0 + const defensePower = calculatePlanetDefensePower(targetPlanet.fleet, targetPlanet.defense) + + // 计算摧毁概率 + const destructionChance = calculateDestructionChance(deathstarCount, planetaryShieldCount, defensePower) + + // 随机判断是否成功 + const randomValue = Math.random() * 100 + const success = randomValue < destructionChance + + mission.status = 'returning' + + return { + success, + destructionChance, + planetId: success ? targetPlanet.id : undefined + } +} + /** * 处理舰队任务返回 */ @@ -271,29 +457,39 @@ export const processFleetReturn = (mission: FleetMission, originPlanet: Planet): /** * 更新舰队任务状态 */ -export const updateFleetMissions = ( +export const updateFleetMissions = async ( missions: FleetMission[], planets: Map, + debrisFields: Map, attacker: Player, defender: Player | null, now: number -): { +): Promise<{ completedMissions: string[] battleReports: BattleResult[] spyReports: SpyReport[] newColonies: Planet[] newMoons: Planet[] -} => { + newDebrisFields: DebrisField[] + updatedDebrisFields: DebrisField[] + removedDebrisFieldIds: string[] + destroyedPlanetIds: string[] +}> => { const completedMissions: string[] = [] const battleReports: BattleResult[] = [] const spyReports: SpyReport[] = [] const newColonies: Planet[] = [] const newMoons: Planet[] = [] + const newDebrisFields: DebrisField[] = [] + const updatedDebrisFields: DebrisField[] = [] + const removedDebrisFieldIds: string[] = [] + const destroyedPlanetIds: string[] = [] // 获取所有星球列表(用于月球生成检查) const allPlanets = Array.from(planets.values()) - missions.forEach(mission => { + // 使用 for...of 以支持 await + for (const mission of missions) { const originPlanet = attacker.planets.find(p => p.id === mission.originPlanetId) if (mission.status === 'outbound' && now >= mission.arrivalTime) { @@ -306,8 +502,8 @@ export const updateFleetMissions = ( processTransportArrival(mission, targetPlanet) break - case MissionType.Attack: - const attackResult = processAttackArrival(mission, targetPlanet, attacker, defender, allPlanets) + case MissionType.Attack: { + const attackResult = await processAttackArrival(mission, targetPlanet, attacker, defender, allPlanets) if (attackResult) { battleReports.push(attackResult.battleResult) if (attackResult.moon) { @@ -316,8 +512,12 @@ export const updateFleetMissions = ( const moonKey = `${attackResult.moon.position.galaxy}:${attackResult.moon.position.system}:${attackResult.moon.position.position}` planets.set(moonKey, attackResult.moon) } + if (attackResult.debrisField) { + newDebrisFields.push(attackResult.debrisField) + } } break + } case MissionType.Colonize: const newColony = processColonizeArrival(mission, targetPlanet, attacker.id) @@ -340,6 +540,36 @@ export const updateFleetMissions = ( completedMissions.push(mission.id) } break + + case MissionType.Recycle: + const debrisId = `debris_${mission.targetPosition.galaxy}_${mission.targetPosition.system}_${mission.targetPosition.position}` + const debrisField = debrisFields.get(debrisId) + const recycleResult = processRecycleArrival(mission, debrisField) + if (recycleResult) { + if (recycleResult.remainingDebris) { + // 更新残骸场 + const updatedDebris: DebrisField = { + ...debrisField!, + resources: recycleResult.remainingDebris + } + debrisFields.set(debrisId, updatedDebris) + updatedDebrisFields.push(updatedDebris) + } else { + // 残骸场已被完全收集,删除 + debrisFields.delete(debrisId) + removedDebrisFieldIds.push(debrisId) + } + } + break + + case MissionType.Destroy: + const destroyResult = processDestroyArrival(mission, targetPlanet, attacker) + if (destroyResult && destroyResult.success && destroyResult.planetId) { + // 星球被摧毁 + destroyedPlanetIds.push(destroyResult.planetId) + planets.delete(targetKey) + } + break } } @@ -350,9 +580,9 @@ export const updateFleetMissions = ( } completedMissions.push(mission.id) } - }) + } - return { completedMissions, battleReports, spyReports, newColonies, newMoons } + return { completedMissions, battleReports, spyReports, newColonies, newMoons, newDebrisFields, updatedDebrisFields, removedDebrisFieldIds, destroyedPlanetIds } } /** diff --git a/src/logic/fleetStorageLogic.ts b/src/logic/fleetStorageLogic.ts new file mode 100644 index 0000000..72e231f --- /dev/null +++ b/src/logic/fleetStorageLogic.ts @@ -0,0 +1,93 @@ +/** + * 舰队仓储逻辑模块 + * 处理舰队仓储容量计算和使用量统计 + */ + +import type { Planet, Fleet } from '@/types/game' +import { ShipType, BuildingType, TechnologyType } from '@/types/game' +import { SHIPS, FLEET_STORAGE_CONFIG, BUILDINGS, TECHNOLOGIES } from '@/config/gameConfig' + +/** + * 计算舰队当前使用的仓储量 + * @param fleet 舰队对象 + * @returns 当前使用的仓储量 + */ +export const calculateFleetStorageUsage = (fleet: Fleet): number => { + let totalUsage = 0 + + for (const shipType of Object.values(ShipType)) { + const shipCount = fleet[shipType] || 0 + const shipConfig = SHIPS[shipType] + totalUsage += shipCount * shipConfig.storageUsage + } + + return totalUsage +} + +/** + * 计算星球的最大舰队仓储容量 + * @param planet 星球对象 + * @param technologies 玩家的科技等级 + * @returns 最大舰队仓储容量 + */ +export const calculateMaxFleetStorage = ( + planet: Planet, + technologies: Record +): number => { + // 1. 基础仓储 + let maxStorage = FLEET_STORAGE_CONFIG.baseStorage + + // 2. 造船厂建筑加成(每个星球独立) + const shipyardLevel = planet.buildings[BuildingType.Shipyard] || 0 + const shipyardBonus = BUILDINGS[BuildingType.Shipyard].fleetStorageBonus || 0 + maxStorage += shipyardLevel * shipyardBonus + + // 3. 计算机技术全局加成 + const computerTechLevel = technologies[TechnologyType.ComputerTechnology] || 0 + const computerTechBonus = TECHNOLOGIES[TechnologyType.ComputerTechnology].fleetStorageBonus || 0 + maxStorage += computerTechLevel * computerTechBonus + + return maxStorage +} + +/** + * 检查是否有足够的舰队仓储空间建造新舰船 + * @param planet 星球对象 + * @param shipType 要建造的舰船类型 + * @param quantity 要建造的数量 + * @param technologies 玩家的科技等级 + * @returns 是否有足够的空间 + */ +export const hasEnoughFleetStorage = ( + planet: Planet, + shipType: ShipType, + quantity: number, + technologies: Record +): boolean => { + const currentUsage = calculateFleetStorageUsage(planet.fleet) + const maxStorage = calculateMaxFleetStorage(planet, technologies) + const newShipUsage = SHIPS[shipType].storageUsage * quantity + + return currentUsage + newShipUsage <= maxStorage +} + +/** + * 计算当前可以建造的最大舰船数量(基于仓储限制) + * @param planet 星球对象 + * @param shipType 要建造的舰船类型 + * @param technologies 玩家的科技等级 + * @returns 最大可建造数量 + */ +export const getMaxBuildableShips = ( + planet: Planet, + shipType: ShipType, + technologies: Record +): number => { + const currentUsage = calculateFleetStorageUsage(planet.fleet) + const maxStorage = calculateMaxFleetStorage(planet, technologies) + const availableStorage = maxStorage - currentUsage + const shipStorageUsage = SHIPS[shipType].storageUsage + + if (shipStorageUsage === 0) return Number.MAX_SAFE_INTEGER + return Math.floor(availableStorage / shipStorageUsage) +} diff --git a/src/logic/gameLogic.ts b/src/logic/gameLogic.ts index e31f72d..2a1f7e0 100644 --- a/src/logic/gameLogic.ts +++ b/src/logic/gameLogic.ts @@ -3,8 +3,9 @@ import { TechnologyType, OfficerType } from '@/types/game' import * as officerLogic from './officerLogic' import * as buildingLogic from './buildingLogic' import * as researchLogic from './researchLogic' -import * as resourceLogic from './resourceLogic' import * as pointsLogic from './pointsLogic' +import * as planetLogic from './planetLogic' +import * as resourceLogic from './resourceLogic' /** * 初始化玩家数据 @@ -102,22 +103,27 @@ export const processGameUpdate = ( pointsLogic.addPoints(player, points) } - // 更新所有星球 + // 更新所有星球资源(直接同步计算,避免 Worker 通信开销) player.planets.forEach(planet => { - // 更新资源 resourceLogic.updatePlanetResources(planet, now, bonuses) + }) + // 更新所有星球其他状态 + player.planets.forEach(planet => { // 检查建造队列 buildingLogic.completeBuildQueue(planet, now, onPointsEarned) + + // 更新星球最大空间 + if (planet.isMoon) { + planet.maxSpace = planetLogic.calculateMoonMaxSpace(planet) + } else { + const terraformingTechLevel = player.technologies[TechnologyType.TerraformingTechnology] || 0 + planet.maxSpace = planetLogic.calculatePlanetMaxSpace(planet, terraformingTechLevel) + } }) // 检查研究队列 - const updatedResearchQueue = researchLogic.completeResearchQueue( - player.researchQueue, - player.technologies, - now, - onPointsEarned - ) + const updatedResearchQueue = researchLogic.completeResearchQueue(player.researchQueue, player.technologies, now, onPointsEarned) return { updatedResearchQueue diff --git a/src/logic/moonLogic.ts b/src/logic/moonLogic.ts index 4e2703b..a02f43c 100644 --- a/src/logic/moonLogic.ts +++ b/src/logic/moonLogic.ts @@ -1,6 +1,6 @@ import type { Planet, Resources } from '@/types/game' import { BuildingType, ShipType, DefenseType } from '@/types/game' -import { MOON_CONFIG } from '@/config/gameConfig' +import { MOON_CONFIG, FLEET_STORAGE_CONFIG } from '@/config/gameConfig' /** * 计算月球生成概率 @@ -67,7 +67,8 @@ export const tryGenerateMoon = ( [ShipType.ColonyShip]: 0, [ShipType.Recycler]: 0, [ShipType.EspionageProbe]: 0, - [ShipType.DarkMatterHarvester]: 0 + [ShipType.DarkMatterHarvester]: 0, + [ShipType.Deathstar]: 0 }, defense: { [DefenseType.RocketLauncher]: 0, @@ -77,11 +78,13 @@ export const tryGenerateMoon = ( [DefenseType.IonCannon]: 0, [DefenseType.PlasmaTurret]: 0, [DefenseType.SmallShieldDome]: 0, - [DefenseType.LargeShieldDome]: 0 + [DefenseType.LargeShieldDome]: 0, + [DefenseType.PlanetaryShield]: 0 }, buildQueue: [], lastUpdate: Date.now(), maxSpace: MOON_CONFIG.baseSize, + maxFleetStorage: FLEET_STORAGE_CONFIG.baseStorage, isMoon: true, parentPlanetId: planetId } diff --git a/src/logic/planetLogic.ts b/src/logic/planetLogic.ts index 7c5a442..d6529c2 100644 --- a/src/logic/planetLogic.ts +++ b/src/logic/planetLogic.ts @@ -1,6 +1,6 @@ import type { Planet, Resources } from '@/types/game' import { ShipType, DefenseType, BuildingType } from '@/types/game' -import { MOON_CONFIG } from '@/config/gameConfig' +import { MOON_CONFIG, PLANET_CONFIG, FLEET_STORAGE_CONFIG } from '@/config/gameConfig' /** * 创建初始星球 @@ -29,7 +29,8 @@ export const createInitialPlanet = (playerId: string, planetName: string = 'Home [ShipType.ColonyShip]: 0, [ShipType.Recycler]: 0, [ShipType.EspionageProbe]: 0, - [ShipType.DarkMatterHarvester]: 0 + [ShipType.DarkMatterHarvester]: 0, + [ShipType.Deathstar]: 0 }, defense: { [DefenseType.RocketLauncher]: 0, @@ -39,11 +40,13 @@ export const createInitialPlanet = (playerId: string, planetName: string = 'Home [DefenseType.IonCannon]: 0, [DefenseType.PlasmaTurret]: 0, [DefenseType.SmallShieldDome]: 0, - [DefenseType.LargeShieldDome]: 0 + [DefenseType.LargeShieldDome]: 0, + [DefenseType.PlanetaryShield]: 0 }, buildQueue: [], lastUpdate: Date.now(), maxSpace: 200, + maxFleetStorage: FLEET_STORAGE_CONFIG.baseStorage, isMoon: false } @@ -86,7 +89,8 @@ export const createNPCPlanet = ( [ShipType.ColonyShip]: 0, [ShipType.Recycler]: 0, [ShipType.EspionageProbe]: 0, - [ShipType.DarkMatterHarvester]: 0 + [ShipType.DarkMatterHarvester]: 0, + [ShipType.Deathstar]: 0 }, defense: { [DefenseType.RocketLauncher]: Math.floor(Math.random() * 100), @@ -96,11 +100,13 @@ export const createNPCPlanet = ( [DefenseType.IonCannon]: Math.floor(Math.random() * 10), [DefenseType.PlasmaTurret]: Math.floor(Math.random() * 5), [DefenseType.SmallShieldDome]: Math.random() > 0.5 ? 1 : 0, - [DefenseType.LargeShieldDome]: Math.random() > 0.8 ? 1 : 0 + [DefenseType.LargeShieldDome]: Math.random() > 0.8 ? 1 : 0, + [DefenseType.PlanetaryShield]: 0 }, buildQueue: [], lastUpdate: Date.now(), maxSpace: 200, + maxFleetStorage: FLEET_STORAGE_CONFIG.baseStorage, isMoon: false } @@ -156,7 +162,8 @@ export const createMoon = ( [ShipType.ColonyShip]: 0, [ShipType.Recycler]: 0, [ShipType.EspionageProbe]: 0, - [ShipType.DarkMatterHarvester]: 0 + [ShipType.DarkMatterHarvester]: 0, + [ShipType.Deathstar]: 0 }, defense: { [DefenseType.RocketLauncher]: 0, @@ -166,11 +173,13 @@ export const createMoon = ( [DefenseType.IonCannon]: 0, [DefenseType.PlasmaTurret]: 0, [DefenseType.SmallShieldDome]: 0, - [DefenseType.LargeShieldDome]: 0 + [DefenseType.LargeShieldDome]: 0, + [DefenseType.PlanetaryShield]: 0 }, buildQueue: [], lastUpdate: Date.now(), maxSpace: MOON_CONFIG.baseSize, + maxFleetStorage: FLEET_STORAGE_CONFIG.baseStorage, isMoon: true, parentPlanetId: parentPlanet.id } @@ -191,3 +200,22 @@ export const calculateMoonMaxSpace = (moon: Planet): number => { const lunarBaseLevel = moon.buildings[BuildingType.LunarBase] || 0 return MOON_CONFIG.baseSize + lunarBaseLevel * MOON_CONFIG.lunarBaseSpaceBonus } + +/** + * 计算行星空间上限 + */ +export const calculatePlanetMaxSpace = (planet: Planet, terraformingTechLevel: number): number => { + if (planet.isMoon) return 0 + + // 基础空间 + let maxSpace = PLANET_CONFIG.baseSize + + // 地形改造器增加的空间 + const terraformerLevel = planet.buildings[BuildingType.Terraformer] || 0 + maxSpace += terraformerLevel * PLANET_CONFIG.terraformerSpaceBonus + + // 地形改造技术全局增加空间 + maxSpace += terraformingTechLevel * PLANET_CONFIG.terraformingTechSpaceBonus + + return maxSpace +} diff --git a/src/logic/publicLogic.ts b/src/logic/publicLogic.ts index ff5fffa..27b9a3b 100644 --- a/src/logic/publicLogic.ts +++ b/src/logic/publicLogic.ts @@ -4,11 +4,53 @@ */ import { BuildingType, TechnologyType } from '@/types/game' -import type { Planet, Resources, Officer } from '@/types/game' +import type { Planet, Resources, Officer, BuildingConfig, TechnologyConfig } from '@/types/game' import { OfficerType } from '@/types/game' import * as officerLogic from '@/logic/officerLogic' import * as resourceLogic from '@/logic/resourceLogic' +/** + * 获取特定等级的升级条件 + * 合并基础 requirements 和等级门槛 levelRequirements + * @param config 建筑或科技配置 + * @param targetLevel 目标等级 + * @returns 合并后的前置条件 + */ +export const getLevelRequirements = ( + config: BuildingConfig | TechnologyConfig, + targetLevel: number +): Partial> => { + const requirements: Partial> = {} + + // 1. 添加基础 requirements(如果存在) + if (config.requirements) { + Object.assign(requirements, config.requirements) + } + + // 2. 添加等级门槛 requirements(如果存在) + if (config.levelRequirements) { + // 找出所有小于等于目标等级的门槛 + const applicableLevels = Object.keys(config.levelRequirements) + .map(Number) + .filter(level => level <= targetLevel) + .sort((a, b) => a - b) + + // 依次合并所有适用的等级要求(后面的覆盖前面的) + for (const level of applicableLevels) { + const levelReqs = config.levelRequirements[level] + if (levelReqs) { + // 合并要求,取最大值 + for (const [key, value] of Object.entries(levelReqs)) { + const currentValue = requirements[key as BuildingType | TechnologyType] || 0 + requirements[key as BuildingType | TechnologyType] = Math.max(currentValue, value) + } + } + } + } + + return requirements +} + /** * 检查建造/研发前置条件是否满足 * @param planet 星球对象 diff --git a/src/logic/resourceLogic.ts b/src/logic/resourceLogic.ts index b664501..1c42c12 100644 --- a/src/logic/resourceLogic.ts +++ b/src/logic/resourceLogic.ts @@ -52,20 +52,20 @@ export const calculateResourceProduction = ( const resourceBonus = 1 + (bonuses.resourceProductionBonus || 0) / 100 const darkMatterBonus = 1 + (bonuses.darkMatterProductionBonus || 0) / 100 - // 计算电量情况 + // 计算能量产出(每小时) const energyProduction = calculateEnergyProduction(planet, { energyProductionBonus: bonuses.energyProductionBonus }) - const energyConsumption = calculateEnergyConsumption(planet) - const energyBalance = energyProduction - energyConsumption - // 如果电量不足,资源产量按比例减少 - const productionEfficiency = energyBalance >= 0 ? 1 : Math.max(0, energyProduction / energyConsumption) + // 检查当前能量是否充足 + // 如果当前能量 <= 0,矿场停止生产 + const hasEnergy = planet.resources.energy > 0 + const productionEfficiency = hasEnergy ? 1 : 0 return { - metal: metalMineLevel * 150 * Math.pow(1.1, metalMineLevel) * resourceBonus * productionEfficiency, - crystal: crystalMineLevel * 100 * Math.pow(1.1, crystalMineLevel) * resourceBonus * productionEfficiency, - deuterium: deuteriumSynthesizerLevel * 50 * Math.pow(1.1, deuteriumSynthesizerLevel) * resourceBonus * productionEfficiency, - darkMatter: darkMatterCollectorLevel * 2.5 * Math.pow(1.1, darkMatterCollectorLevel) * darkMatterBonus, - energy: energyBalance + metal: metalMineLevel * 1500 * Math.pow(1.5, metalMineLevel) * resourceBonus * productionEfficiency, + crystal: crystalMineLevel * 1000 * Math.pow(1.5, crystalMineLevel) * resourceBonus * productionEfficiency, + deuterium: deuteriumSynthesizerLevel * 500 * Math.pow(1.5, deuteriumSynthesizerLevel) * resourceBonus * productionEfficiency, + darkMatter: darkMatterCollectorLevel * 25 * Math.pow(1.5, darkMatterCollectorLevel) * darkMatterBonus, + energy: energyProduction } } @@ -77,6 +77,7 @@ export const calculateResourceCapacity = (planet: Planet, storageCapacityBonus: const crystalStorageLevel = planet.buildings[BuildingType.CrystalStorage] || 0 const deuteriumTankLevel = planet.buildings[BuildingType.DeuteriumTank] || 0 const darkMatterCollectorLevel = planet.buildings[BuildingType.DarkMatterCollector] || 0 + const solarPlantLevel = planet.buildings[BuildingType.SolarPlant] || 0 const bonus = 1 + (storageCapacityBonus || 0) / 100 @@ -86,7 +87,7 @@ export const calculateResourceCapacity = (planet: Planet, storageCapacityBonus: crystal: baseCapacity * Math.pow(2, crystalStorageLevel) * bonus, deuterium: baseCapacity * Math.pow(2, deuteriumTankLevel) * bonus, darkMatter: 1000 + darkMatterCollectorLevel * 100, // 暗物质容量较小 - energy: 0 // 电量不存储,实时计算 + energy: 1000 + solarPlantLevel * 500 // 能量容量基于太阳能电站等级 } } @@ -105,7 +106,24 @@ export const updatePlanetResources = ( ): void => { const timeDiff = (now - planet.lastUpdate) / 1000 // 转换为秒 - // 计算资源产量(每小时) + // 计算能量消耗(每小时) + const energyConsumption = calculateEnergyConsumption(planet) + + // 先增加能量产出 + const energyProduction = calculateEnergyProduction(planet, { energyProductionBonus: bonuses.energyProductionBonus }) + planet.resources.energy += (energyProduction * timeDiff) / 3600 + + // 限制能量上限 + const capacity = calculateResourceCapacity(planet, bonuses.storageCapacityBonus) + planet.resources.energy = Math.min(planet.resources.energy, capacity.energy) + + // 扣除能量消耗 + planet.resources.energy -= (energyConsumption * timeDiff) / 3600 + + // 能量不能为负数,最低为0 + planet.resources.energy = Math.max(0, planet.resources.energy) + + // 计算资源产量(会检查能量是否充足) const production = calculateResourceProduction(planet, { resourceProductionBonus: bonuses.resourceProductionBonus, darkMatterProductionBonus: bonuses.darkMatterProductionBonus, @@ -119,7 +137,6 @@ export const updatePlanetResources = ( planet.resources.darkMatter += (production.darkMatter * timeDiff) / 3600 // 限制资源上限 - const capacity = calculateResourceCapacity(planet, bonuses.storageCapacityBonus) planet.resources.metal = Math.min(planet.resources.metal, capacity.metal) planet.resources.crystal = Math.min(planet.resources.crystal, capacity.crystal) planet.resources.deuterium = Math.min(planet.resources.deuterium, capacity.deuterium) @@ -159,3 +176,216 @@ export const addResources = (currentResources: Resources, amount: Resources): vo currentResources.deuterium += amount.deuterium currentResources.darkMatter += amount.darkMatter } + +/** + * 资源产量详细信息(用于UI展示) + */ +export interface ProductionBreakdown { + metal: ProductionDetail + crystal: ProductionDetail + deuterium: ProductionDetail + darkMatter: ProductionDetail + energy: ProductionDetail +} + +export interface ProductionDetail { + baseProduction: number // 建筑基础产量 + buildingLevel: number // 建筑等级 + buildingName: string // 建筑名称(用于显示) + bonuses: ProductionBonus[] // 加成列表 + finalProduction: number // 最终产量 +} + +export interface ProductionBonus { + name: string // 加成名称 + value: number // 加成百分比或固定值 + type: 'percentage' | 'multiplier' // 百分比加成或倍率 +} + +/** + * 能量消耗详细信息 + */ +export interface ConsumptionBreakdown { + metalMine: ConsumptionDetail + crystalMine: ConsumptionDetail + deuteriumSynthesizer: ConsumptionDetail + total: number +} + +export interface ConsumptionDetail { + buildingLevel: number + buildingName: string + consumption: number +} + +/** + * 计算资源产量详细breakdown + */ +export const calculateProductionBreakdown = ( + planet: Planet, + bonuses: { + resourceProductionBonus: number + darkMatterProductionBonus: number + energyProductionBonus: number + } +): ProductionBreakdown => { + const metalMineLevel = planet.buildings[BuildingType.MetalMine] || 0 + const crystalMineLevel = planet.buildings[BuildingType.CrystalMine] || 0 + const deuteriumSynthesizerLevel = planet.buildings[BuildingType.DeuteriumSynthesizer] || 0 + const darkMatterCollectorLevel = planet.buildings[BuildingType.DarkMatterCollector] || 0 + const solarPlantLevel = planet.buildings[BuildingType.SolarPlant] || 0 + + const hasEnergy = planet.resources.energy > 0 + const productionEfficiency = hasEnergy ? 1 : 0 + + // 金属矿产量 + const metalBase = metalMineLevel * 1500 * Math.pow(1.5, metalMineLevel) + const metalBonuses: ProductionBonus[] = [] + if (bonuses.resourceProductionBonus > 0) { + metalBonuses.push({ + name: 'officers.resourceBonus', + value: bonuses.resourceProductionBonus, + type: 'percentage' + }) + } + if (!hasEnergy) { + metalBonuses.push({ + name: 'resources.noEnergy', + value: -100, + type: 'percentage' + }) + } + const metalFinal = metalBase * (1 + bonuses.resourceProductionBonus / 100) * productionEfficiency + + // 晶体矿产量 + const crystalBase = crystalMineLevel * 1000 * Math.pow(1.5, crystalMineLevel) + const crystalBonuses: ProductionBonus[] = [] + if (bonuses.resourceProductionBonus > 0) { + crystalBonuses.push({ + name: 'officers.resourceBonus', + value: bonuses.resourceProductionBonus, + type: 'percentage' + }) + } + if (!hasEnergy) { + crystalBonuses.push({ + name: 'resources.noEnergy', + value: -100, + type: 'percentage' + }) + } + const crystalFinal = crystalBase * (1 + bonuses.resourceProductionBonus / 100) * productionEfficiency + + // 重氢合成器产量 + const deuteriumBase = deuteriumSynthesizerLevel * 500 * Math.pow(1.5, deuteriumSynthesizerLevel) + const deuteriumBonuses: ProductionBonus[] = [] + if (bonuses.resourceProductionBonus > 0) { + deuteriumBonuses.push({ + name: 'officers.resourceBonus', + value: bonuses.resourceProductionBonus, + type: 'percentage' + }) + } + if (!hasEnergy) { + deuteriumBonuses.push({ + name: 'resources.noEnergy', + value: -100, + type: 'percentage' + }) + } + const deuteriumFinal = deuteriumBase * (1 + bonuses.resourceProductionBonus / 100) * productionEfficiency + + // 暗物质收集器产量 + const darkMatterBase = darkMatterCollectorLevel * 25 * Math.pow(1.5, darkMatterCollectorLevel) + const darkMatterBonuses: ProductionBonus[] = [] + if (bonuses.darkMatterProductionBonus > 0) { + darkMatterBonuses.push({ + name: 'officers.darkMatterBonus', + value: bonuses.darkMatterProductionBonus, + type: 'percentage' + }) + } + const darkMatterFinal = darkMatterBase * (1 + bonuses.darkMatterProductionBonus / 100) + + // 太阳能电站产量 + const energyBase = solarPlantLevel * 50 * Math.pow(1.1, solarPlantLevel) + const energyBonuses: ProductionBonus[] = [] + if (bonuses.energyProductionBonus > 0) { + energyBonuses.push({ + name: 'officers.energyBonus', + value: bonuses.energyProductionBonus, + type: 'percentage' + }) + } + const energyFinal = energyBase * (1 + bonuses.energyProductionBonus / 100) + + return { + metal: { + baseProduction: metalBase, + buildingLevel: metalMineLevel, + buildingName: 'buildings.metalMine', + bonuses: metalBonuses, + finalProduction: metalFinal + }, + crystal: { + baseProduction: crystalBase, + buildingLevel: crystalMineLevel, + buildingName: 'buildings.crystalMine', + bonuses: crystalBonuses, + finalProduction: crystalFinal + }, + deuterium: { + baseProduction: deuteriumBase, + buildingLevel: deuteriumSynthesizerLevel, + buildingName: 'buildings.deuteriumSynthesizer', + bonuses: deuteriumBonuses, + finalProduction: deuteriumFinal + }, + darkMatter: { + baseProduction: darkMatterBase, + buildingLevel: darkMatterCollectorLevel, + buildingName: 'buildings.darkMatterCollector', + bonuses: darkMatterBonuses, + finalProduction: darkMatterFinal + }, + energy: { + baseProduction: energyBase, + buildingLevel: solarPlantLevel, + buildingName: 'buildings.solarPlant', + bonuses: energyBonuses, + finalProduction: energyFinal + } + } +} + +/** + * 计算能量消耗详细breakdown + */ +export const calculateConsumptionBreakdown = (planet: Planet): ConsumptionBreakdown => { + const metalMineLevel = planet.buildings[BuildingType.MetalMine] || 0 + const crystalMineLevel = planet.buildings[BuildingType.CrystalMine] || 0 + const deuteriumSynthesizerLevel = planet.buildings[BuildingType.DeuteriumSynthesizer] || 0 + + const metalConsumption = metalMineLevel * 10 * Math.pow(1.1, metalMineLevel) + const crystalConsumption = crystalMineLevel * 10 * Math.pow(1.1, crystalMineLevel) + const deuteriumConsumption = deuteriumSynthesizerLevel * 15 * Math.pow(1.1, deuteriumSynthesizerLevel) + + return { + metalMine: { + buildingLevel: metalMineLevel, + buildingName: 'buildings.metalMine', + consumption: metalConsumption + }, + crystalMine: { + buildingLevel: crystalMineLevel, + buildingName: 'buildings.crystalMine', + consumption: crystalConsumption + }, + deuteriumSynthesizer: { + buildingLevel: deuteriumSynthesizerLevel, + buildingName: 'buildings.deuteriumSynthesizer', + consumption: deuteriumConsumption + }, + total: metalConsumption + crystalConsumption + deuteriumConsumption + } +} diff --git a/src/logic/shipValidation.ts b/src/logic/shipValidation.ts index 3255b26..1ffcdc6 100644 --- a/src/logic/shipValidation.ts +++ b/src/logic/shipValidation.ts @@ -4,6 +4,7 @@ import * as shipLogic from './shipLogic' import * as resourceLogic from './resourceLogic' import * as officerLogic from './officerLogic' import * as publicLogic from './publicLogic' +import * as fleetStorageLogic from './fleetStorageLogic' /** * 验证舰船建造的所有条件 @@ -29,6 +30,11 @@ export const validateShipBuild = ( return { valid: false, reason: 'errors.insufficientResources' } } + // 检查舰队仓储空间 + if (!fleetStorageLogic.hasEnoughFleetStorage(planet, shipType, quantity, technologies as Record)) { + return { valid: false, reason: 'errors.insufficientFleetStorage' } + } + return { valid: true } } diff --git a/src/router/index.ts b/src/router/index.ts index 507a039..d18c409 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,7 +1,7 @@ import { createRouter, createWebHistory } from 'vue-router' const router = createRouter({ - history: createWebHistory(import.meta.env.BASE_URL), + history: createWebHistory(), routes: [ { path: '/', name: 'overview', component: () => import('@/views/OverviewView.vue') }, { path: '/buildings', name: 'buildings', component: () => import('@/views/BuildingsView.vue') }, @@ -13,7 +13,20 @@ const router = createRouter({ { path: '/battle-simulator', name: 'battle-simulator', component: () => import('@/views/BattleSimulatorView.vue') }, { path: '/messages', name: 'messages', component: () => import('@/views/MessagesView.vue') }, { path: '/galaxy', name: 'galaxy', component: () => import('@/views/GalaxyView.vue') }, - { path: '/settings', name: 'settings', component: () => import('@/views/SettingsView.vue') } + { path: '/settings', name: 'settings', component: () => import('@/views/SettingsView.vue') }, + { + path: '/gm', + name: 'gm', + component: () => import('@/views/GMView.vue'), + beforeEnter: (_to, _from, next) => { + // GM页面仅在开发模式下可访问 + if (import.meta.env.DEV) { + next() + } else { + next('/') + } + } + } ] }) diff --git a/src/stores/gameStore.ts b/src/stores/gameStore.ts index acae16b..d1441ae 100644 --- a/src/stores/gameStore.ts +++ b/src/stores/gameStore.ts @@ -22,9 +22,7 @@ export const useGameStore = defineStore('game', { } as Player, currentPlanetId: '', isDark: '', - locale: 'zh-CN' as Locale, - sidebarCollapsed: window.innerWidth < 1024 ? false : true, - universePlanets: {} as Record + locale: 'zh-CN' as Locale }), getters: { currentPlanet(): Planet | undefined { diff --git a/src/stores/universeStore.ts b/src/stores/universeStore.ts new file mode 100644 index 0000000..55c2688 --- /dev/null +++ b/src/stores/universeStore.ts @@ -0,0 +1,26 @@ +import { defineStore } from 'pinia' +import type { Planet, DebrisField } from '@/types/game' +import pkg from '../../package.json' +import { encryptData, decryptData } from '@/utils/crypto' + +/** + * 宇宙地图 Store + * 存储宇宙中的所有星球和残骸场 + * 使用普通 localStorage 存储,不加密(地图数据是静态/共享数据) + */ +export const useUniverseStore = defineStore('universe', { + state: () => ({ + // 宇宙星球地图:key 格式为 "galaxy:system:position" + planets: {} as Record, + // 残骸场:key 格式为 "galaxy:system:position" + debrisFields: {} as Record + }), + persist: { + key: `${pkg.name}-universe`, + storage: localStorage, + serializer: { + serialize: state => encryptData(state), + deserialize: value => decryptData(value) + } + } +}) diff --git a/src/types/game.ts b/src/types/game.ts index 1354d44..acc9ca5 100644 --- a/src/types/game.ts +++ b/src/types/game.ts @@ -21,10 +21,13 @@ export const BuildingType = { CrystalStorage: 'crystalStorage', DeuteriumTank: 'deuteriumTank', DarkMatterCollector: 'darkMatterCollector', // 暗物质收集器 + Terraformer: 'terraformer', // 地形改造器 // 月球专属建筑 LunarBase: 'lunarBase', // 月球基地 SensorPhalanx: 'sensorPhalanx', // 传感器阵列 - JumpGate: 'jumpGate' // 跳跃门 + JumpGate: 'jumpGate', // 跳跃门 + // 特殊建筑 + PlanetDestroyerFactory: 'planetDestroyerFactory' // 行星毁灭者工厂 } as const export type BuildingType = (typeof BuildingType)[keyof typeof BuildingType] @@ -38,9 +41,12 @@ export interface BuildingConfig { baseTime: number // 基础建造时间(秒) costMultiplier: number // 升级成本倍数 spaceUsage: number // 占用空间 + fleetStorageBonus?: number // 每级增加的舰队仓储(可选) planetOnly?: boolean // 仅行星可建造 moonOnly?: boolean // 仅月球可建造 - requirements?: Partial> // 前置条件 + maxLevel?: number // 最大等级(可选,不设置则无上限) + requirements?: Partial> // 前置条件(初始解锁) + levelRequirements?: Record>> // 等级升级条件 } // 建筑实例 @@ -60,7 +66,9 @@ export const TechnologyType = { CombustionDrive: 'combustionDrive', ImpulseDrive: 'impulseDrive', HyperspaceDrive: 'hyperspaceDrive', - DarkMatterTechnology: 'darkMatterTechnology' // 暗物质技术 + DarkMatterTechnology: 'darkMatterTechnology', // 暗物质技术 + TerraformingTechnology: 'terraformingTechnology', // 地形改造技术 + PlanetDestructionTech: 'planetDestructionTech' // 行星毁灭技术 } as const export type TechnologyType = (typeof TechnologyType)[keyof typeof TechnologyType] @@ -73,7 +81,10 @@ export interface TechnologyConfig { baseCost: Resources baseTime: number costMultiplier: number - requirements?: Partial> + fleetStorageBonus?: number // 每级增加的舰队仓储(全局,可选) + maxLevel?: number // 最大等级(可选,不设置则无上限) + requirements?: Partial> // 前置条件(初始解锁) + levelRequirements?: Record>> // 等级升级条件 } // 科技实例 @@ -91,7 +102,8 @@ export const DefenseType = { IonCannon: 'ionCannon', PlasmaTurret: 'plasmaTurret', SmallShieldDome: 'smallShieldDome', - LargeShieldDome: 'largeShieldDome' + LargeShieldDome: 'largeShieldDome', + PlanetaryShield: 'planetaryShield' // 行星护盾 } as const export type DefenseType = (typeof DefenseType)[keyof typeof DefenseType] @@ -120,7 +132,8 @@ export const ShipType = { ColonyShip: 'colonyShip', Recycler: 'recycler', EspionageProbe: 'espionageProbe', - DarkMatterHarvester: 'darkMatterHarvester' // 暗物质采集船 + DarkMatterHarvester: 'darkMatterHarvester', // 暗物质采集船 + Deathstar: 'deathstar' // 死星 } as const export type ShipType = (typeof ShipType)[keyof typeof ShipType] @@ -138,6 +151,7 @@ export interface ShipConfig { armor: number speed: number fuelConsumption: number + storageUsage: number // 占用舰队仓储 requirements?: Partial> } @@ -153,6 +167,7 @@ export interface Fleet { [ShipType.Recycler]: number [ShipType.EspionageProbe]: number [ShipType.DarkMatterHarvester]: number + [ShipType.Deathstar]: number } // 舰队任务类型 @@ -163,7 +178,9 @@ export const MissionType = { Spy: 'spy', Deploy: 'deploy', Expedition: 'expedition', - HarvestDarkMatter: 'harvestDarkMatter' // 暗物质采集 + HarvestDarkMatter: 'harvestDarkMatter', // 暗物质采集 + Recycle: 'recycle', // 回收残骸 + Destroy: 'destroy' // 行星毁灭 } as const export type MissionType = (typeof MissionType)[keyof typeof MissionType] @@ -201,8 +218,27 @@ export interface BattleResult { defense: Partial> } winner: 'attacker' | 'defender' | 'draw' + read?: boolean // 已读状态 plunder: Resources debrisField: Resources + // 新增详细信息 + rounds?: number + attackerRemaining?: Partial + defenderRemaining?: { + fleet: Partial + defense: Partial> + } + roundDetails?: Array<{ + round: number + attackerLosses: Partial + defenderLosses: { + fleet: Partial + defense: Partial> + } + attackerRemainingPower: number + defenderRemainingPower: number + }> + moonChance?: number // 月球生成概率 } // 间谍报告 @@ -218,6 +254,16 @@ export interface SpyReport { buildings?: Partial> technologies?: Partial> detectionChance: number + read?: boolean // 已读状态 +} + +// 残骸场 +export interface DebrisField { + id: string + position: { galaxy: number; system: number; position: number } + resources: Pick // 残骸场只包含金属和晶体 + createdAt: number + expiresAt?: number // 可选的过期时间 } // 建造队列项 @@ -244,6 +290,7 @@ export interface Planet { buildQueue: BuildQueueItem[] lastUpdate: number maxSpace: number // 最大空间 + maxFleetStorage: number // 舰队仓储上限 isMoon: boolean // 是否为月球 parentPlanetId?: string // 如果是月球,指向母星的ID } diff --git a/src/types/worker.ts b/src/types/worker.ts new file mode 100644 index 0000000..87676d8 --- /dev/null +++ b/src/types/worker.ts @@ -0,0 +1,126 @@ +import type { Fleet, Resources } from './game' +import { DefenseType } from './game' + +/** + * Worker 消息类型 + */ +export const WorkerMessageType = { + // 战斗模拟相关 + SIMULATE_BATTLE: 'SIMULATE_BATTLE', + CALCULATE_PLUNDER: 'CALCULATE_PLUNDER', + CALCULATE_DEBRIS: 'CALCULATE_DEBRIS', + + // 通用响应 + SUCCESS: 'SUCCESS', + ERROR: 'ERROR' +} as const + +export type WorkerMessageType = (typeof WorkerMessageType)[keyof typeof WorkerMessageType] + +/** + * 战斗方数据 + */ +export interface BattleSideData { + ships: Partial + defense?: Partial> + weaponTech?: number + shieldTech?: number + armorTech?: number +} + +/** + * 战斗模拟结果 + */ +export interface BattleSimulationResult { + winner: 'attacker' | 'defender' | 'draw' + rounds: number + attackerLosses: Partial + defenderLosses: { + fleet: Partial + defense: Partial> + } + attackerRemaining: Partial + defenderRemaining: { + fleet: Partial + defense: Partial> + } + roundDetails: Array<{ + round: number + attackerLosses: Partial + defenderLosses: { + fleet: Partial + defense: Partial> + } + attackerRemainingPower: number + defenderRemainingPower: number + }> +} + +/** + * Worker 消息基础接口 + */ +export interface WorkerMessageBase { + id: string + type: WorkerMessageType +} + +/** + * Worker 请求消息 + */ +export interface WorkerRequestMessage extends WorkerMessageBase { + payload: unknown +} + +/** + * Worker 响应消息 + */ +export interface WorkerResponseMessage extends WorkerMessageBase { + success: boolean + data?: unknown + error?: string +} + +/** + * 战斗模拟请求 + */ +export interface SimulateBattleRequest extends WorkerRequestMessage { + type: typeof WorkerMessageType.SIMULATE_BATTLE + payload: { + attacker: BattleSideData + defender: BattleSideData + maxRounds?: number + } +} + +/** + * 掠夺计算请求 + */ +export interface CalculatePlunderRequest extends WorkerRequestMessage { + type: typeof WorkerMessageType.CALCULATE_PLUNDER + payload: { + defenderResources: Resources + attackerFleet: Partial + } +} + +/** + * 残骸场计算请求 + */ +export interface CalculateDebrisRequest extends WorkerRequestMessage { + type: typeof WorkerMessageType.CALCULATE_DEBRIS + payload: { + attackerLosses: Partial + defenderLosses: { + fleet: Partial + defense: Partial> + } + } +} + +/** + * 所有 Worker 请求类型 + */ +export type WorkerRequest = + | SimulateBattleRequest + | CalculatePlunderRequest + | CalculateDebrisRequest diff --git a/src/utils/crypto.ts b/src/utils/crypto.ts index 04ade57..cd38ad8 100644 --- a/src/utils/crypto.ts +++ b/src/utils/crypto.ts @@ -5,11 +5,12 @@ import pkg from '../../package.json' export const encryptData = (data: any): string => { try { const jsonStr = JSON.stringify(data) - return CryptoJS.AES.encrypt(jsonStr, pkg.name).toString() + const encrypted = CryptoJS.AES.encrypt(jsonStr, pkg.name).toString() + return encrypted } catch (error) { - console.error('数据加密失败:', error) - return '' + console.error(error) } + return '' } // 数据解密 @@ -19,7 +20,7 @@ export const decryptData = (data: string): any => { const decryptedStr = bytes.toString(CryptoJS.enc.Utf8) return JSON.parse(decryptedStr) } catch (error) { - console.error('数据解密失败:', error) + console.error(error) return {} } -} \ No newline at end of file +} diff --git a/src/utils/format.ts b/src/utils/format.ts index dfb8dba..9b9cb72 100644 --- a/src/utils/format.ts +++ b/src/utils/format.ts @@ -29,15 +29,19 @@ export const getResourceColor = (current: number, max: number): string => { } /** - * 格式化时间(秒转为时分秒) + * 格式化时间(秒转为天时分秒) * @param seconds 秒数 - * @param units 时间单位 {hour, minute, second} - * @returns 格式化后的时间字符串(双位数格式,例如 00:05:08) + * @returns 格式化后的时间字符串(例如 2d 05:30:15 或 05:30:15) */ export const formatTime = (seconds: number): string => { - const hours = Math.floor(seconds / 3600) + const days = Math.floor(seconds / 86400) + const hours = Math.floor((seconds % 86400) / 3600) const minutes = Math.floor((seconds % 3600) / 60) const secs = Math.floor(seconds % 60) + + if (days > 0) { + return `${days}:${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}` + } return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}` } diff --git a/src/utils/migration.ts b/src/utils/migration.ts new file mode 100644 index 0000000..e62a349 --- /dev/null +++ b/src/utils/migration.ts @@ -0,0 +1,74 @@ +import type { Planet, DebrisField } from '@/types/game' +import { decryptData, encryptData } from './crypto' +import pkg from '../../package.json' + +/** + * 数据迁移工具 + * 用于从旧版本数据结构迁移到新版本 + */ + +/** + * 执行数据迁移 + * 将旧版本的 universePlanets 和 debrisFields 从 gameStore 迁移到 universeStore + */ +export const migrateGameData = (): void => { + try { + const storageKey = pkg.name + const universeStorageKey = `${pkg.name}-universe` + + // 读取旧的加密存档 + const oldEncryptedData = localStorage.getItem(storageKey) + if (!oldEncryptedData) return + + // 尝试解密(如果是加密格式) + let oldData: any + try { + oldData = decryptData(oldEncryptedData) + } catch { + // 解密失败,可能是新格式(未加密),直接解析 + try { + oldData = JSON.parse(oldEncryptedData) + } catch { + return // 无法解析,放弃迁移 + } + } + + // 检查是否需要迁移 + const hasOldMapData = oldData.universePlanets || oldData.debrisFields + if (!hasOldMapData) return + + // 准备 universeStore 数据 + const universeData: { + planets: Record + debrisFields: Record + } = { + planets: {}, + debrisFields: {} + } + + // 迁移星球数据(排除玩家星球) + if (oldData.universePlanets) { + const oldPlanets = oldData.universePlanets as Record + const playerPlanets = oldData.player?.planets || [] + const playerPlanetIds = new Set(playerPlanets.map((p: Planet) => p.id)) + Object.entries(oldPlanets).forEach(([key, planet]) => { + // 只迁移非玩家星球 + if (!playerPlanetIds.has(planet.id)) { + universeData.planets[key] = planet + } + }) + delete oldData.universePlanets + } + + // 迁移残骸场数据 + if (oldData.debrisFields) { + universeData.debrisFields = oldData.debrisFields + delete oldData.debrisFields + } + // 保存迁移后的数据 + localStorage.setItem(universeStorageKey, encryptData(universeData)) + localStorage.setItem(storageKey, encryptData(oldData)) + } catch (error) { + console.error(error) + } +} diff --git a/src/views/BattleSimulatorView.vue b/src/views/BattleSimulatorView.vue index 2833bb1..d1acea3 100644 --- a/src/views/BattleSimulatorView.vue +++ b/src/views/BattleSimulatorView.vue @@ -140,242 +140,24 @@ - - - - - - {{ t('simulatorView.battleResult') }} - - -
- -
-

- {{ - simulationResult.winner === 'attacker' - ? t('simulatorView.attackerVictory') - : simulationResult.winner === 'defender' - ? t('simulatorView.defenderVictory') - : t('simulatorView.draw') - }} -

-

{{ t('simulatorView.afterRounds').replace('{rounds}', String(battleRounds)) }}

-
- -
- -
-

{{ t('simulatorView.attackerLosses') }}

-
-
- {{ SHIPS[shipType].name }}: - {{ count }} -
-

- {{ t('simulatorView.noLosses') }} -

-
-
- - -
-

{{ t('simulatorView.defenderLosses') }}

-
-
- {{ SHIPS[shipType].name }}: - {{ count }} -
-
- {{ DEFENSES[defenseType].name }}: - {{ count }} -
-

- {{ t('simulatorView.noLosses') }} -

-
-
-
- - -
- -
-

{{ t('simulatorView.attackerRemaining') }}

-
-
- {{ SHIPS[shipType].name }}: - {{ count }} -
-

- {{ t('simulatorView.allDestroyed') }} -

-
-
- - -
-

{{ t('simulatorView.defenderRemaining') }}

-
-
- {{ SHIPS[shipType].name }}: - {{ count }} -
-
- {{ DEFENSES[defenseType].name }}: - {{ count }} -
-

- {{ t('simulatorView.allDestroyed') }} -

-
-
-
- - -
- -
-

{{ t('simulatorView.plunderableResources') }}

-
- - - {{ formatNumber(plunder.metal) }} - - - - {{ formatNumber(plunder.crystal) }} - - - - {{ formatNumber(plunder.deuterium) }} - -
-
- - -
-

{{ t('simulatorView.debrisField') }}

-
- - - {{ formatNumber(debrisField.metal) }} - - - - {{ formatNumber(debrisField.crystal) }} - -
- -

{{ t('simulatorView.moonChance') }}: {{ moonChance }}%

-
-
- - -
- - -
- -
- -
- -
- - -
-
-

{{ t('simulatorView.round').replace('{round}', String(detail.round)) }}

-
- - - {{ formatNumber(detail.attackerRemainingPower) }} - - - - {{ formatNumber(detail.defenderRemainingPower) }} - -
-
- -
- -
-

{{ t('simulatorView.attackerLosses') }}

-
-
- {{ SHIPS[shipType].name }} - -{{ count }} -
-

- {{ t('simulatorView.noLosses') }} -

-
-
- - -
-

{{ t('simulatorView.defenderLosses') }}

-
-
- {{ SHIPS[shipType].name }} - -{{ count }} -
-
- {{ DEFENSES[defenseType].name }} - -{{ count }} -
-

- {{ t('simulatorView.noLosses') }} -

-
-
-
-
-
-
-
-
- -
+ diff --git a/src/views/BuildingsView.vue b/src/views/BuildingsView.vue index b7656d9..6da3134 100644 --- a/src/views/BuildingsView.vue +++ b/src/views/BuildingsView.vue @@ -11,7 +11,10 @@
- + + + +
@@ -89,7 +92,7 @@ @@ -128,22 +131,24 @@ import { useI18n } from '@/composables/useI18n' import { useGameConfig } from '@/composables/useGameConfig' import { computed, ref } from 'vue' - import { BuildingType } from '@/types/game' + import { BuildingType, TechnologyType } from '@/types/game' import type { Resources, Planet } from '@/types/game' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import ResourceIcon from '@/components/ResourceIcon.vue' + import CardUnlockOverlay from '@/components/CardUnlockOverlay.vue' import AlertDialog from '@/components/AlertDialog.vue' import { Clock, Grid3x3 } from 'lucide-vue-next' import { formatNumber, formatTime, getResourceCostColor } from '@/utils/format' import * as buildingLogic from '@/logic/buildingLogic' import * as buildingValidation from '@/logic/buildingValidation' + import * as publicLogic from '@/logic/publicLogic' const gameStore = useGameStore() const detailDialog = useDetailDialogStore() const { t } = useI18n() - const { BUILDINGS } = useGameConfig() + const { BUILDINGS, TECHNOLOGIES } = useGameConfig() const planet = computed(() => gameStore.currentPlanet) const alertDialog = ref | null>(null) @@ -182,6 +187,15 @@ // 升级建筑 const handleUpgrade = (buildingType: BuildingType) => { + // 检查前置条件 + if (!checkUpgradeRequirements(buildingType)) { + alertDialog.value?.show({ + title: t('common.requirementsNotMet'), + message: getRequirementsList(buildingType) + }) + return + } + const success = upgradeBuilding(buildingType) if (!success) { alertDialog.value?.show({ @@ -196,12 +210,98 @@ return planet.value?.buildings[buildingType] || 0 } + // 检查升级前置条件是否满足 + const checkUpgradeRequirements = (buildingType: BuildingType): boolean => { + if (!planet.value) return false + const config = BUILDINGS.value[buildingType] + const currentLevel = getBuildingLevel(buildingType) + const targetLevel = currentLevel + 1 + + // 获取目标等级的所有前置条件(包括等级门槛) + const requirements = publicLogic.getLevelRequirements(config, targetLevel) + + if (!requirements || Object.keys(requirements).length === 0) return true + return publicLogic.checkRequirements(planet.value, gameStore.player.technologies, requirements) + } + + // 获取升级按钮文本 + const getUpgradeButtonText = (buildingType: BuildingType): string => { + if (!planet.value) return t('buildingsView.upgrade') + + const config = BUILDINGS.value[buildingType] + const currentLevel = getBuildingLevel(buildingType) + + // 检查是否达到等级上限 + if (config.maxLevel !== undefined && currentLevel >= config.maxLevel) { + return t('buildingsView.maxLevelReached') // "等级已满" + } + + if (planet.value.buildQueue.length > 0) return t('buildingsView.upgrade') + + // 检查前置条件 + if (!checkUpgradeRequirements(buildingType)) { + return t('buildingsView.requirementsNotMet') + } + + return t('buildingsView.upgrade') + } + + // 获取前置条件列表文本 + const getRequirementsList = (buildingType: BuildingType): string => { + const config = BUILDINGS.value[buildingType] + const currentLevel = getBuildingLevel(buildingType) + const targetLevel = currentLevel + 1 + + // 获取目标等级的所有前置条件(包括等级门槛) + const requirements = publicLogic.getLevelRequirements(config, targetLevel) + + if (!requirements || !planet.value) return '' + + const lines: string[] = [] + for (const [key, requiredLevel] of Object.entries(requirements)) { + // 检查是否为建筑类型 + if (Object.values(BuildingType).includes(key as BuildingType)) { + const bt = key as BuildingType + const currentLevel = planet.value.buildings[bt] || 0 + const name = BUILDINGS.value[bt]?.name || bt + const status = currentLevel >= requiredLevel ? '✓' : '✗' + lines.push(`${status} ${name}: Lv ${requiredLevel} (${t('common.current')}: Lv ${currentLevel})`) + } + // 检查是否为科技类型 + else if (Object.values(TechnologyType).includes(key as TechnologyType)) { + const tt = key as TechnologyType + const currentLevel = gameStore.player.technologies[tt] || 0 + const name = TECHNOLOGIES.value[tt]?.name || tt + const status = currentLevel >= requiredLevel ? '✓' : '✗' + lines.push(`${status} ${name}: Lv ${requiredLevel} (${t('common.current')}: Lv ${currentLevel})`) + } + } + return lines.join('\n') + } + // 检查是否可以升级 const canUpgrade = (buildingType: BuildingType): boolean => { if (!planet.value) return false + + const config = BUILDINGS.value[buildingType] + const currentLevel = getBuildingLevel(buildingType) + + // 检查是否达到等级上限 + if (config.maxLevel !== undefined && currentLevel >= config.maxLevel) { + return false + } + if (planet.value.buildQueue.length > 0) return false - const currentLevel = getBuildingLevel(buildingType) + // 检查前置条件 + const validation = buildingValidation.validateBuildingUpgrade( + planet.value, + buildingType, + gameStore.player.technologies, + gameStore.player.officers + ) + if (!validation.valid) return false + const cost = getBuildingCost(buildingType, currentLevel + 1) return ( diff --git a/src/views/DefenseView.vue b/src/views/DefenseView.vue index a23e2d0..c05815a 100644 --- a/src/views/DefenseView.vue +++ b/src/views/DefenseView.vue @@ -183,7 +183,8 @@ [DefenseType.IonCannon]: 0, [DefenseType.PlasmaTurret]: 0, [DefenseType.SmallShieldDome]: 0, - [DefenseType.LargeShieldDome]: 0 + [DefenseType.LargeShieldDome]: 0, + [DefenseType.PlanetaryShield]: 0 }) // 判断是否为护盾罩 diff --git a/src/views/FleetView.vue b/src/views/FleetView.vue index 42cf6b4..f464596 100644 --- a/src/views/FleetView.vue +++ b/src/views/FleetView.vue @@ -296,9 +296,10 @@ diff --git a/src/views/GMView.vue b/src/views/GMView.vue new file mode 100644 index 0000000..226d030 --- /dev/null +++ b/src/views/GMView.vue @@ -0,0 +1,291 @@ + + + diff --git a/src/views/GalaxyView.vue b/src/views/GalaxyView.vue index 7e5d19d..4ec4758 100644 --- a/src/views/GalaxyView.vue +++ b/src/views/GalaxyView.vue @@ -94,50 +94,79 @@

{{ t('galaxyView.emptySlot') }}
+ + +
+
+ {{ t('galaxyView.debrisField') }} +
+
+ + {{ t('resources.metal') }}: + {{ formatNumber(getDebrisFieldAt(currentGalaxy, currentSystem, slot.position)!.resources.metal) }} + + + {{ t('resources.crystal') }}: + {{ formatNumber(getDebrisFieldAt(currentGalaxy, currentSystem, slot.position)!.resources.crystal) }} + +
+
- - - - + + + + + + +

{{ t('galaxyView.scout') }}

+
+
+ + + + + +

{{ t('galaxyView.attack') }}

+
+
+ + + + + +

{{ t('galaxyView.colonize') }}

+
+
+ + + + + +

{{ t('galaxyView.switch') }}

+
+
+ + + + + +

{{ t('galaxyView.recycle') }}

+
+
+
@@ -151,20 +180,24 @@ diff --git a/src/views/OverviewView.vue b/src/views/OverviewView.vue index 0fccae0..730b0c3 100644 --- a/src/views/OverviewView.vue +++ b/src/views/OverviewView.vue @@ -34,6 +34,7 @@ {{ t('resources.current') }} {{ t('resources.max') }} {{ t('resources.production') }}{{ t('resources.perHour') }} + {{ t('resources.consumption') }}{{ t('resources.perHour') }} @@ -44,40 +45,139 @@ {{ t(`resources.${resourceType.key}`) }} - - - - + + + {{ formatNumber(planet.resources[resourceType.key]) }} + + + {{ formatNumber(capacity?.[resourceType.key] || 0) }} + + + +{{ formatNumber(production?.[resourceType.key] || 0) }} + + + + +
+ + + + {{ t('overview.productionSources') }} + {{ t('overview.productionSourcesDesc') }} + + +
+
+
+ + {{ t(`resources.${resourceType.key}`) }} +
+ +
+ +
+ + {{ t(productionBreakdown[resourceType.key].buildingName) }} + ({{ t('common.level') }} {{ productionBreakdown[resourceType.key].buildingLevel }}) + + + +{{ formatNumber(Math.floor(productionBreakdown[resourceType.key].baseProduction)) }}/{{ t('resources.hour') }} + +
+ + +
+ + {{ t(bonus.name) }} + + + {{ bonus.value > 0 ? '+' : '' }}{{ bonus.value }}% + +
+ + +
+ {{ t('overview.totalProduction') }} + + +{{ formatNumber(Math.floor(productionBreakdown[resourceType.key].finalProduction)) }}/{{ t('resources.hour') }} + +
+
+
+
+
+
+ + + + + {{ t('overview.consumptionSources') }} + {{ t('overview.consumptionSourcesDesc') }} + + +
+ +
+ + {{ t(consumptionBreakdown.metalMine.buildingName) }} + ({{ t('common.level') }} {{ consumptionBreakdown.metalMine.buildingLevel }}) + + + -{{ formatNumber(Math.floor(consumptionBreakdown.metalMine.consumption)) }}/{{ t('resources.hour') }} + +
+ + +
+ + {{ t(consumptionBreakdown.crystalMine.buildingName) }} + ({{ t('common.level') }} {{ consumptionBreakdown.crystalMine.buildingLevel }}) + + + -{{ formatNumber(Math.floor(consumptionBreakdown.crystalMine.consumption)) }}/{{ t('resources.hour') }} + +
+ + +
+ + {{ t(consumptionBreakdown.deuteriumSynthesizer.buildingName) }} + ({{ t('common.level') }} {{ consumptionBreakdown.deuteriumSynthesizer.buildingLevel }}) + + + -{{ formatNumber(Math.floor(consumptionBreakdown.deuteriumSynthesizer.consumption)) }}/{{ t('resources.hour') }} + +
+ + +
+ {{ t('overview.totalConsumption') }} + + -{{ formatNumber(Math.floor(consumptionBreakdown.total)) }}/{{ t('resources.hour') }} + +
+ + +
+ {{ t('overview.noConsumption') }} +
+
+
+
+ @@ -109,8 +209,8 @@ import { formatNumber, getResourceColor } from '@/utils/format' import type { Planet } from '@/types/game' import * as publicLogic from '@/logic/publicLogic' - import * as officerLogic from '@/logic/officerLogic' import * as resourceLogic from '@/logic/resourceLogic' + import * as officerLogic from '@/logic/officerLogic' const gameStore = useGameStore() const { t } = useI18n() @@ -119,18 +219,25 @@ const production = computed(() => (planet.value ? publicLogic.getResourceProduction(planet.value, gameStore.player.officers) : null)) const capacity = computed(() => (planet.value ? publicLogic.getResourceCapacity(planet.value, gameStore.player.officers) : null)) - // 电量产出和消耗 - const energyProduction = computed(() => { - if (!planet.value) return 0 - const bonuses = officerLogic.calculateActiveBonuses(gameStore.player.officers, Date.now()) - return resourceLogic.calculateEnergyProduction(planet.value, { energyProductionBonus: bonuses.energyProductionBonus }) - }) - + // 能量消耗 const energyConsumption = computed(() => { if (!planet.value) return 0 return resourceLogic.calculateEnergyConsumption(planet.value) }) + // 资源产量详细breakdown + const productionBreakdown = computed(() => { + if (!planet.value) return null + const bonuses = officerLogic.calculateActiveBonuses(gameStore.player.officers, Date.now()) + return resourceLogic.calculateProductionBreakdown(planet.value, bonuses) + }) + + // 资源消耗详细breakdown + const consumptionBreakdown = computed(() => { + if (!planet.value) return null + return resourceLogic.calculateConsumptionBreakdown(planet.value) + }) + // 资源类型配置 const resourceTypes = [ { key: 'metal' as const }, diff --git a/src/views/ResearchView.vue b/src/views/ResearchView.vue index aec6b94..b3c17f6 100644 --- a/src/views/ResearchView.vue +++ b/src/views/ResearchView.vue @@ -7,7 +7,7 @@
- +
@@ -63,7 +63,7 @@
@@ -98,7 +98,7 @@ const gameStore = useGameStore() const detailDialog = useDetailDialogStore() const { t } = useI18n() - const { TECHNOLOGIES } = useGameConfig() + const { TECHNOLOGIES, BUILDINGS } = useGameConfig() const planet = computed(() => gameStore.currentPlanet) const player = computed(() => gameStore.player) const alertDialog = ref | null>(null) @@ -123,8 +123,86 @@ return true } + // 检查升级前置条件是否满足 + const checkUpgradeRequirements = (techType: TechnologyType): boolean => { + if (!planet.value) return false + const config = TECHNOLOGIES.value[techType] + const currentLevel = getTechLevel(techType) + const targetLevel = currentLevel + 1 + + // 获取目标等级的所有前置条件(包括等级门槛) + const requirements = publicLogic.getLevelRequirements(config, targetLevel) + + if (!requirements || Object.keys(requirements).length === 0) return true + return publicLogic.checkRequirements(planet.value, gameStore.player.technologies, requirements) + } + + // 获取研究按钮文本 + const getResearchButtonText = (techType: TechnologyType): string => { + if (!planet.value) return t('researchView.research') + + const config = TECHNOLOGIES.value[techType] + const currentLevel = getTechLevel(techType) + + // 检查是否达到等级上限 + if (config.maxLevel !== undefined && currentLevel >= config.maxLevel) { + return t('researchView.maxLevelReached') // "等级已满" + } + + if (player.value.researchQueue.length > 0) return t('researchView.research') + + // 检查前置条件 + if (!checkUpgradeRequirements(techType)) { + return t('buildingsView.requirementsNotMet') // "条件不足" + } + + return t('researchView.research') // "研究" + } + + // 获取前置条件列表文本 + const getRequirementsList = (techType: TechnologyType): string => { + const config = TECHNOLOGIES.value[techType] + const currentLevel = getTechLevel(techType) + const targetLevel = currentLevel + 1 + + // 获取目标等级的所有前置条件(包括等级门槛) + const requirements = publicLogic.getLevelRequirements(config, targetLevel) + + if (!requirements || !planet.value) return '' + + const lines: string[] = [] + for (const [key, requiredLevel] of Object.entries(requirements)) { + // 检查是否为建筑类型 + if (Object.values(BuildingType).includes(key as BuildingType)) { + const bt = key as BuildingType + const currentLevel = planet.value.buildings[bt] || 0 + const name = BUILDINGS.value[bt]?.name || bt + const status = currentLevel >= requiredLevel ? '✓' : '✗' + lines.push(`${status} ${name}: Lv ${requiredLevel} (${t('common.current')}: Lv ${currentLevel})`) + } + // 检查是否为科技类型 + else if (Object.values(TechnologyType).includes(key as TechnologyType)) { + const tt = key as TechnologyType + const currentLevel = gameStore.player.technologies[tt] || 0 + const name = TECHNOLOGIES.value[tt]?.name || tt + const status = currentLevel >= requiredLevel ? '✓' : '✗' + lines.push(`${status} ${name}: Lv ${requiredLevel} (${t('common.current')}: Lv ${currentLevel})`) + } + } + return lines.join('\n') + } + // 研究科技 const handleResearch = (techType: TechnologyType) => { + // 检查前置条件 + if (!checkUpgradeRequirements(techType)) { + alertDialog.value?.show({ + title: t('common.requirementsNotMet'), + message: getRequirementsList(techType) + }) + return + } + const success = researchTechnology(techType) if (!success) { alertDialog.value?.show({ @@ -141,10 +219,18 @@ // 检查是否可以研究 const canResearch = (techType: TechnologyType): boolean => { - if (!planet.value || player.value.researchQueue.length > 0) return false + if (!planet.value) return false const config = TECHNOLOGIES.value[techType] const currentLevel = getTechLevel(techType) + + // 检查是否达到等级上限 + if (config.maxLevel !== undefined && currentLevel >= config.maxLevel) { + return false + } + + if (player.value.researchQueue.length > 0) return false + const cost = getTechnologyCost(techType, currentLevel + 1) return ( diff --git a/src/views/SettingsView.vue b/src/views/SettingsView.vue index b9d88c3..706e200 100644 --- a/src/views/SettingsView.vue +++ b/src/views/SettingsView.vue @@ -59,19 +59,16 @@ {{ t('settings.gameSettingsDesc') }}
- -
- - -
- - -
+ +
- -

{{ t('settings.gameSpeedDesc') }}

+

{{ t('settings.gamePause') }}

+

{{ t('settings.gamePauseDesc') }}

-
1x
+
@@ -89,7 +86,7 @@
{{ t('settings.buildDate') }}: - {{ new Date().toLocaleDateString() }} + {{ pkg.buildDate }}
@@ -139,8 +136,6 @@ import { useI18n } from '@/composables/useI18n' import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card' import { Button } from '@/components/ui/button' - import { Input } from '@/components/ui/input' - import { Label } from '@/components/ui/label' import { AlertDialog, AlertDialogAction, @@ -151,17 +146,17 @@ AlertDialogHeader, AlertDialogTitle } from '@/components/ui/alert-dialog' - import { Download, Upload, Trash2, ExternalLink, MessagesSquare } from 'lucide-vue-next' + import { Download, Upload, Trash2, ExternalLink, MessagesSquare, Play, Pause } from 'lucide-vue-next' import { saveAs } from 'file-saver' import { toast } from 'vue-sonner' import pkg from '../../package.json' + import 'vue-sonner/style.css' const { t } = useI18n() const gameStore = useGameStore() const fileInputRef = ref() const isExporting = ref(false) - const playerName = ref(gameStore.player.name) const showConfirmDialog = ref(false) const confirmTitle = ref('') @@ -176,17 +171,30 @@ window.open(`https://qm.qq.com/q/${pkg.id}`, '_blank') } - // 导出数据 + // 导出数据(包含游戏数据和地图数据) const handleExport = async () => { try { isExporting.value = true - const data = localStorage.getItem(pkg.name) - if (!data) { + + // 获取游戏数据 + const gameData = localStorage.getItem(pkg.name) + // 获取地图数据 + const universeData = localStorage.getItem(`${pkg.name}-universe`) + + if (!gameData) { toast.error(t('settings.exportFailed')) return } + + // 合并数据 + const exportData = { + game: gameData, + universe: universeData || null + } + const fileName = `${pkg.name}-${new Date().toISOString().slice(0, 10)}-${Date.now()}.json` - saveAs(new Blob([data], { type: 'application/json' }), fileName) + const jsonString = JSON.stringify(exportData, null, 2) + saveAs(new Blob([jsonString], { type: 'application/json' }), fileName) toast.success(t('settings.exportSuccess')) } catch (error) { console.error('Export failed:', error) @@ -205,14 +213,14 @@ const handleFileSelect = (event: Event) => { const file = (event.target as HTMLInputElement).files?.[0] if (!file) return - confirmTitle.value = t('settings.importConfirmTitle') confirmMessage.value = t('settings.importConfirmMessage') showConfirmDialog.value = true + gameStore.isPaused = true confirmCallback = () => importData(file) } - // 导入数据 + // 导入数据(包含游戏数据和地图数据) const importData = async (file: File) => { try { const reader = new FileReader() @@ -220,9 +228,28 @@ try { const result = e.target?.result if (typeof result === 'string') { - localStorage.setItem(pkg.name, result) + const importData = JSON.parse(result) + + // 兼容旧版本:如果是旧格式(直接是字符串),只导入游戏数据 + if (typeof importData === 'string' || !importData.game) { + localStorage.setItem(pkg.name, result) + toast.success(t('settings.importSuccess')) + setTimeout(() => window.location.reload(), 1000) + return + } + + // 新格式:分别导入游戏数据和地图数据 + if (importData.game) { + localStorage.setItem(pkg.name, importData.game) + } + + if (importData.universe) { + localStorage.setItem(`${pkg.name}-universe`, importData.universe) + } + toast.success(t('settings.importSuccess')) - setTimeout(() => location.reload(), 500) + // 延迟刷新页面以让toast显示 + setTimeout(() => window.location.reload(), 1000) } else { toast.error(t('settings.importFailed')) } @@ -253,10 +280,13 @@ window.location.reload() } - // 更新玩家名称 - const updatePlayerName = () => { - if (playerName.value.trim()) { - gameStore.player.name = playerName.value.trim() + // 切换游戏暂停状态 + const togglePause = () => { + gameStore.isPaused = !gameStore.isPaused + if (gameStore.isPaused) { + toast.info(t('settings.gamePaused')) + } else { + toast.success(t('settings.gameResumed')) } } @@ -271,6 +301,7 @@ // 取消操作 const cancelAction = () => { + gameStore.isPaused = false confirmCallback = null showConfirmDialog.value = false // 重置文件输入 diff --git a/src/views/ShipyardView.vue b/src/views/ShipyardView.vue index 16883df..86814c7 100644 --- a/src/views/ShipyardView.vue +++ b/src/views/ShipyardView.vue @@ -5,6 +5,29 @@

{{ t('shipyardView.title') }}

+ +
+
+
{{ t('shipyardView.fleetStorage') }}:
+
+ + {{ formatNumber(fleetStorageUsage) }} + + / + {{ formatNumber(maxFleetStorage) }} +
+
+
+
+
+
+
+
+
@@ -151,6 +174,7 @@ import { formatNumber, getResourceCostColor } from '@/utils/format' import * as shipValidation from '@/logic/shipValidation' import * as publicLogic from '@/logic/publicLogic' + import * as fleetStorageLogic from '@/logic/fleetStorageLogic' const gameStore = useGameStore() const detailDialog = useDetailDialogStore() @@ -159,6 +183,18 @@ const planet = computed(() => gameStore.currentPlanet) const alertDialog = ref | null>(null) + // 舰队仓储使用量 + const fleetStorageUsage = computed(() => { + if (!planet.value) return 0 + return fleetStorageLogic.calculateFleetStorageUsage(planet.value.fleet) + }) + + // 舰队仓储上限 + const maxFleetStorage = computed(() => { + if (!planet.value) return 0 + return fleetStorageLogic.calculateMaxFleetStorage(planet.value, gameStore.player.technologies) + }) + // 每种舰船的建造数量 const quantities = ref>({ [ShipType.LightFighter]: 0, @@ -170,7 +206,8 @@ [ShipType.ColonyShip]: 0, [ShipType.Recycler]: 0, [ShipType.EspionageProbe]: 0, - [ShipType.DarkMatterHarvester]: 0 + [ShipType.DarkMatterHarvester]: 0, + [ShipType.Deathstar]: 0 }) const buildShip = (shipType: ShipType, quantity: number): boolean => { diff --git a/src/workers/battle.worker.ts b/src/workers/battle.worker.ts new file mode 100644 index 0000000..670ffb7 --- /dev/null +++ b/src/workers/battle.worker.ts @@ -0,0 +1,470 @@ +/** + * 战斗模拟 Worker + * 在独立线程中处理计算密集型的战斗模拟任务 + */ +import type { Fleet, Resources } from '@/types/game' +import { ShipType, DefenseType } from '@/types/game' +import { SHIPS, DEFENSES } from '@/config/gameConfig' +import type { WorkerRequestMessage, WorkerResponseMessage, BattleSideData, BattleSimulationResult } from '@/types/worker' +import { WorkerMessageType } from '@/types/worker' + +// 战斗单位接口 +interface CombatUnit { + type: ShipType | DefenseType + count: number + attack: number + shield: number + armor: number + rapidFire?: Record +} + +/** + * 计算科技加成后的数值 + */ +const applyTechBonus = (baseValue: number, techLevel: number = 0, bonusPerLevel: number = 0.1): number => { + return Math.floor(baseValue * (1 + techLevel * bonusPerLevel)) +} + +/** + * 将舰队和防御转换为战斗单位数组 + */ +const prepareCombatUnits = (side: BattleSideData, isDefender: boolean = false): CombatUnit[] => { + const units: CombatUnit[] = [] + + // 处理舰船 + if (side.ships) { + for (const [shipType, count] of Object.entries(side.ships)) { + if (count > 0) { + const config = SHIPS[shipType as ShipType] + units.push({ + type: shipType as ShipType, + count: count, + attack: applyTechBonus(config.attack, side.weaponTech), + shield: applyTechBonus(config.shield, side.shieldTech), + armor: applyTechBonus(config.armor, side.armorTech) + }) + } + } + } + + // 处理防御设施(仅防守方) + if (isDefender && side.defense) { + for (const [defenseType, count] of Object.entries(side.defense)) { + if (count > 0) { + const config = DEFENSES[defenseType as DefenseType] + units.push({ + type: defenseType as DefenseType, + count: count, + attack: applyTechBonus(config.attack, side.weaponTech), + shield: applyTechBonus(config.shield, side.shieldTech), + armor: applyTechBonus(config.armor, side.armorTech) + }) + } + } + } + + return units +} + +/** + * 计算一个单位对另一个单位造成的伤害 + */ +const calculateDamage = (attacker: CombatUnit, defender: CombatUnit): { destroyed: number; damagedShield: number } => { + const attackPower = attacker.attack + const defenderShield = defender.shield + const defenderArmor = defender.armor + + let destroyed = 0 + let damagedShield = 0 + + // 如果攻击力小于护盾的1%,有很大概率无法击穿护盾 + if (attackPower < defenderShield * 0.01) { + if (Math.random() > 0.01) { + return { destroyed: 0, damagedShield: 0 } + } + } + + // 计算伤害 + let remainingDamage = attackPower + + // 先消耗护盾 + if (remainingDamage > defenderShield) { + remainingDamage -= defenderShield + damagedShield = defenderShield + } else { + damagedShield = remainingDamage + return { destroyed: 0, damagedShield } + } + + // 再消耗装甲 + if (remainingDamage > defenderArmor) { + destroyed = 1 + } else { + // 有概率摧毁 + const destroyChance = remainingDamage / defenderArmor + if (Math.random() < destroyChance) { + destroyed = 1 + } + } + + return { destroyed, damagedShield } +} + +/** + * 执行一轮战斗 + */ +const executeRound = ( + attackerUnits: CombatUnit[], + defenderUnits: CombatUnit[] +): { + attackerLosses: Partial + defenderLosses: { + fleet: Partial + defense: Partial> + } + attackerRemainingPower: number + defenderRemainingPower: number +} => { + const attackerLosses: Partial = {} + const defenderShipLosses: Partial = {} + const defenderDefenseLosses: Partial> = {} + + // 攻击方向防守方射击 + for (const attacker of attackerUnits) { + for (let i = 0; i < attacker.count; i++) { + if (defenderUnits.length === 0) break + + const targetIndex = Math.floor(Math.random() * defenderUnits.length) + const target = defenderUnits[targetIndex] + + if (!target) continue + + const { destroyed } = calculateDamage(attacker, target) + + if (destroyed > 0) { + target.count -= destroyed + + // 记录损失 + if (Object.values(ShipType).includes(target.type as ShipType)) { + const shipType = target.type as ShipType + defenderShipLosses[shipType] = (defenderShipLosses[shipType] || 0) + destroyed + } else { + const defenseType = target.type as DefenseType + defenderDefenseLosses[defenseType] = (defenderDefenseLosses[defenseType] || 0) + destroyed + } + + if (target.count <= 0) { + defenderUnits.splice(targetIndex, 1) + } + } + } + } + + // 防守方向攻击方射击 + for (const defender of defenderUnits) { + for (let i = 0; i < defender.count; i++) { + if (attackerUnits.length === 0) break + + const targetIndex = Math.floor(Math.random() * attackerUnits.length) + const target = attackerUnits[targetIndex] + + if (!target) continue + + const { destroyed } = calculateDamage(defender, target) + + if (destroyed > 0) { + target.count -= destroyed + + const shipType = target.type as ShipType + attackerLosses[shipType] = (attackerLosses[shipType] || 0) + destroyed + + if (target.count <= 0) { + attackerUnits.splice(targetIndex, 1) + } + } + } + } + + // 计算剩余战斗力 + const attackerPower = attackerUnits.reduce((sum, unit) => sum + unit.count * unit.attack, 0) + const defenderPower = defenderUnits.reduce((sum, unit) => sum + unit.count * unit.attack, 0) + + return { + attackerLosses, + defenderLosses: { + fleet: defenderShipLosses, + defense: defenderDefenseLosses + }, + attackerRemainingPower: attackerPower, + defenderRemainingPower: defenderPower + } +} + +/** + * 模拟完整战斗 + */ +const simulateBattle = (attacker: BattleSideData, defender: BattleSideData, maxRounds: number = 6): BattleSimulationResult => { + // 准备战斗单位 + let attackerUnits = prepareCombatUnits(attacker, false) + let defenderUnits = prepareCombatUnits(defender, true) + + const totalAttackerLosses: Partial = {} + const totalDefenderShipLosses: Partial = {} + const totalDefenderDefenseLosses: Partial> = {} + const roundDetails: Array<{ + round: number + attackerLosses: Partial + defenderLosses: { + fleet: Partial + defense: Partial> + } + attackerRemainingPower: number + defenderRemainingPower: number + }> = [] + + let rounds = 0 + + // 执行最多maxRounds轮战斗 + for (let round = 0; round < maxRounds; round++) { + if (attackerUnits.length === 0 || defenderUnits.length === 0) { + break + } + + rounds++ + + const roundResult = executeRound(attackerUnits, defenderUnits) + + // 保存当前回合详情 + roundDetails.push({ + round: rounds, + attackerLosses: { ...roundResult.attackerLosses }, + defenderLosses: { + fleet: { ...roundResult.defenderLosses.fleet }, + defense: { ...roundResult.defenderLosses.defense } + }, + attackerRemainingPower: roundResult.attackerRemainingPower, + defenderRemainingPower: roundResult.defenderRemainingPower + }) + + // 累计损失 + for (const [shipType, count] of Object.entries(roundResult.attackerLosses)) { + totalAttackerLosses[shipType as ShipType] = (totalAttackerLosses[shipType as ShipType] || 0) + count + } + + for (const [shipType, count] of Object.entries(roundResult.defenderLosses.fleet)) { + totalDefenderShipLosses[shipType as ShipType] = (totalDefenderShipLosses[shipType as ShipType] || 0) + count + } + + for (const [defenseType, count] of Object.entries(roundResult.defenderLosses.defense)) { + totalDefenderDefenseLosses[defenseType as DefenseType] = (totalDefenderDefenseLosses[defenseType as DefenseType] || 0) + count + } + } + + // 防御设施有概率修复(70%概率) + const repairedDefense: Partial> = {} + for (const [defenseType, count] of Object.entries(totalDefenderDefenseLosses)) { + const repaired = Math.floor(count * 0.7) + if (repaired > 0) { + repairedDefense[defenseType as DefenseType] = repaired + totalDefenderDefenseLosses[defenseType as DefenseType] = count - repaired + } + } + + // 计算剩余单位 + const attackerRemaining: Partial = {} + for (const unit of attackerUnits) { + if (unit.count > 0) { + attackerRemaining[unit.type as ShipType] = unit.count + } + } + + const defenderShipRemaining: Partial = {} + const defenderDefenseRemaining: Partial> = {} + for (const unit of defenderUnits) { + if (unit.count > 0) { + if (Object.values(ShipType).includes(unit.type as ShipType)) { + defenderShipRemaining[unit.type as ShipType] = unit.count + } else { + defenderDefenseRemaining[unit.type as DefenseType] = unit.count + } + } + } + + // 添加修复的防御设施 + for (const [defenseType, count] of Object.entries(repairedDefense)) { + defenderDefenseRemaining[defenseType as DefenseType] = (defenderDefenseRemaining[defenseType as DefenseType] || 0) + count + } + + // 判断胜负 + let winner: 'attacker' | 'defender' | 'draw' + if (attackerUnits.length === 0 && defenderUnits.length === 0) { + winner = 'draw' + } else if (attackerUnits.length === 0) { + winner = 'defender' + } else if (defenderUnits.length === 0) { + winner = 'attacker' + } else { + winner = 'draw' + } + + return { + winner, + rounds, + attackerLosses: totalAttackerLosses, + defenderLosses: { + fleet: totalDefenderShipLosses, + defense: totalDefenderDefenseLosses + }, + attackerRemaining, + defenderRemaining: { + fleet: defenderShipRemaining, + defense: defenderDefenseRemaining + }, + roundDetails + } +} + +/** + * 计算掠夺的资源 + */ +const calculatePlunder = (defenderResources: Resources, attackerFleet: Partial): Resources => { + let totalCapacity = 0 + for (const [shipType, count] of Object.entries(attackerFleet)) { + const config = SHIPS[shipType as ShipType] + totalCapacity += config.cargoCapacity * count + } + + const availableResources = { + metal: Math.floor(defenderResources.metal * 0.5), + crystal: Math.floor(defenderResources.crystal * 0.5), + deuterium: Math.floor(defenderResources.deuterium * 0.5), + darkMatter: Math.floor(defenderResources.darkMatter * 0.5), + energy: 0 + } + + const totalAvailable = + availableResources.metal + availableResources.crystal + availableResources.deuterium + availableResources.darkMatter + + if (totalCapacity >= totalAvailable) { + return availableResources + } + + const ratio = totalCapacity / totalAvailable + return { + metal: Math.floor(availableResources.metal * ratio), + crystal: Math.floor(availableResources.crystal * ratio), + deuterium: Math.floor(availableResources.deuterium * ratio), + darkMatter: Math.floor(availableResources.darkMatter * ratio), + energy: 0 + } +} + +/** + * 计算残骸场 + */ +const calculateDebrisField = ( + attackerLosses: Partial, + defenderLosses: { + fleet: Partial + defense: Partial> + } +): Resources => { + let totalMetal = 0 + let totalCrystal = 0 + + for (const [shipType, count] of Object.entries(attackerLosses)) { + const config = SHIPS[shipType as ShipType] + totalMetal += config.cost.metal * count * 0.3 + totalCrystal += config.cost.crystal * count * 0.3 + } + + for (const [shipType, count] of Object.entries(defenderLosses.fleet)) { + const config = SHIPS[shipType as ShipType] + totalMetal += config.cost.metal * count * 0.3 + totalCrystal += config.cost.crystal * count * 0.3 + } + + for (const [defenseType, count] of Object.entries(defenderLosses.defense)) { + const config = DEFENSES[defenseType as DefenseType] + totalMetal += config.cost.metal * count * 0.3 + totalCrystal += config.cost.crystal * count * 0.3 + } + + return { + metal: Math.floor(totalMetal), + crystal: Math.floor(totalCrystal), + deuterium: 0, + darkMatter: 0, + energy: 0 + } +} + +// ============================================================================ +// Worker 消息处理 +// ============================================================================ + +self.onmessage = (event: MessageEvent) => { + const { id, type, payload } = event.data + + try { + let result: unknown + + switch (type) { + case WorkerMessageType.SIMULATE_BATTLE: { + const { + attacker, + defender, + maxRounds = 6 + } = payload as { + attacker: BattleSideData + defender: BattleSideData + maxRounds?: number + } + result = simulateBattle(attacker, defender, maxRounds) + break + } + + case WorkerMessageType.CALCULATE_PLUNDER: { + const { defenderResources, attackerFleet } = payload as { + defenderResources: Resources + attackerFleet: Partial + } + result = calculatePlunder(defenderResources, attackerFleet) + break + } + + case WorkerMessageType.CALCULATE_DEBRIS: { + const { attackerLosses, defenderLosses } = payload as { + attackerLosses: Partial + defenderLosses: { + fleet: Partial + defense: Partial> + } + } + result = calculateDebrisField(attackerLosses, defenderLosses) + break + } + + default: + throw new Error(`Unknown message type: ${type}`) + } + + // 发送成功响应 + const response: WorkerResponseMessage = { + id, + type: WorkerMessageType.SUCCESS, + success: true, + data: result + } + self.postMessage(response) + } catch (error) { + // 发送错误响应 + const response: WorkerResponseMessage = { + id, + type: WorkerMessageType.ERROR, + success: false, + error: error instanceof Error ? error.message : String(error) + } + self.postMessage(response) + } +} diff --git a/src/workers/workerManager.ts b/src/workers/workerManager.ts new file mode 100644 index 0000000..01b1964 --- /dev/null +++ b/src/workers/workerManager.ts @@ -0,0 +1,234 @@ +/** + * Worker 管理器 + * 统一管理所有 Worker 的创建、通信和销毁 + */ +import type { WorkerRequestMessage, WorkerResponseMessage, WorkerMessageType } from '@/types/worker' +import { WorkerMessageType as MsgType } from '@/types/worker' +import { toRaw } from 'vue' +import BattleWorker from './battle.worker?worker' + +/** + * Worker 任务接口 + */ +interface WorkerTask { + resolve: (data: unknown) => void + reject: (error: Error) => void + timeout?: ReturnType +} + +/** + * 将 Vue 响应式对象转换为普通对象 + * 使用 toRaw() 获取原始对象,避免 Proxy 无法被 structured clone + */ +const toPlainObject = (obj: T): T => { + if (obj === null || obj === undefined) return obj + if (typeof obj !== 'object') return obj + + // 使用 toRaw 获取 Vue 响应式对象的原始值 + const raw = toRaw(obj) + + // 对于数组,递归处理每个元素 + if (Array.isArray(raw)) { + return raw.map(item => toPlainObject(item)) as unknown as T + } + + // 对于对象,递归处理每个属性 + if (raw && typeof raw === 'object') { + const plain: any = {} + for (const key in raw) { + if (Object.prototype.hasOwnProperty.call(raw, key)) { + plain[key] = toPlainObject(raw[key]) + } + } + return plain + } + + return raw +} + +/** + * Worker 管理类 + */ +class WorkerManager { + private battleWorker: Worker | null = null + private pendingTasks: Map = new Map() + private messageIdCounter = 0 + private readonly defaultTimeout = 10000 // 30秒超时 + + /** + * 初始化战斗 Worker + */ + private initBattleWorker(): void { + if (this.battleWorker) return + + this.battleWorker = new BattleWorker() + this.setupWorkerHandlers(this.battleWorker, 'Battle') + } + + /** + * 设置 Worker 消息处理器 + */ + private setupWorkerHandlers(worker: Worker, workerName: string): void { + worker.onmessage = (event: MessageEvent) => { + const { id, success, data, error } = event.data + + const task = this.pendingTasks.get(id) + if (!task) { + console.warn(`[WorkerManager] No pending task found for message ID: ${id}`) + return + } + + // 清除超时定时器 + if (task.timeout) { + clearTimeout(task.timeout) + } + + // 移除任务 + this.pendingTasks.delete(id) + + // 处理响应 + if (success) { + task.resolve(data) + } else { + task.reject(new Error(error || 'Worker task failed')) + } + } + + worker.onerror = (error: ErrorEvent) => { + console.error(`[WorkerManager] ${workerName} worker error:`, error) + // 拒绝所有待处理的任务 + for (const task of this.pendingTasks.values()) { + if (task.timeout) clearTimeout(task.timeout) + task.reject(new Error(`${workerName} worker crashed`)) + } + this.pendingTasks.clear() + + // 清除对应的 worker 引用 + if (workerName === 'Battle') { + this.battleWorker = null + } + } + } + + /** + * 生成唯一的消息 ID + */ + private generateMessageId(): string { + return `msg_${Date.now()}_${++this.messageIdCounter}` + } + + /** + * 根据消息类型获取对应的 Worker + */ + private getWorkerByType(type: WorkerMessageType): Worker { + // 战斗相关消息使用 battleWorker + if (type === MsgType.SIMULATE_BATTLE || type === MsgType.CALCULATE_PLUNDER || type === MsgType.CALCULATE_DEBRIS) { + this.initBattleWorker() + return this.battleWorker! + } + + throw new Error(`Unknown message type: ${type}`) + } + + /** + * 发送消息到 Worker 并等待响应 + */ + private sendMessage(type: WorkerMessageType, payload: unknown, timeout: number = this.defaultTimeout): Promise { + const worker = this.getWorkerByType(type) + + if (!worker) { + return Promise.reject(new Error('Worker initialization failed')) + } + + const id = this.generateMessageId() + + return new Promise((resolve, reject) => { + // 设置超时 + const timeoutId = setTimeout(() => { + this.pendingTasks.delete(id) + reject(new Error(`Worker task timeout after ${timeout}ms`)) + }, timeout) + + // 保存任务 + this.pendingTasks.set(id, { + resolve: resolve as (data: unknown) => void, + reject, + timeout: timeoutId + }) + + // 发送消息(使用 toPlainObject 转换 Vue Proxy 对象,然后使用浏览器内置的 structured clone) + const message: WorkerRequestMessage = { id, type, payload: toPlainObject(payload) } + worker.postMessage(message) + }) + } + + /** + * 战斗模拟 + */ + public async simulateBattle(params: { + attacker: { + ships: Parameters[0]['ships'] + defense?: Parameters[0]['defense'] + weaponTech?: number + shieldTech?: number + armorTech?: number + } + defender: { + ships: Parameters[0]['ships'] + defense?: Parameters[0]['defense'] + weaponTech?: number + shieldTech?: number + armorTech?: number + } + maxRounds?: number + }): Promise> { + return this.sendMessage(MsgType.SIMULATE_BATTLE, params) + } + + /** + * 计算掠夺资源 + */ + public async calculatePlunder(params: { + defenderResources: Parameters[0] + attackerFleet: Parameters[1] + }): Promise> { + return this.sendMessage(MsgType.CALCULATE_PLUNDER, params) + } + + /** + * 计算残骸场 + */ + public async calculateDebris(params: { + attackerLosses: Parameters[0] + defenderLosses: Parameters[1] + }): Promise> { + return this.sendMessage(MsgType.CALCULATE_DEBRIS, params) + } + + /** + * 销毁所有 Worker + */ + public destroy(): void { + if (this.battleWorker) { + this.battleWorker.terminate() + this.battleWorker = null + } + + // 清除所有待处理的任务 + for (const task of this.pendingTasks.values()) { + if (task.timeout) clearTimeout(task.timeout) + task.reject(new Error('Worker manager destroyed')) + } + this.pendingTasks.clear() + } + + /** + * 获取待处理任务数量 + */ + public getPendingTaskCount(): number { + return this.pendingTasks.size + } +} + +// 导出单例 +export const workerManager = new WorkerManager() diff --git a/tsconfig.json b/tsconfig.json index 2b78387..16971f8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,6 @@ "files": [], "references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }], "compilerOptions": { - "baseUrl": ".", "paths": { "@/*": ["./src/*"] } diff --git a/update-build-date.js b/update-build-date.js new file mode 100644 index 0000000..5d2edfd --- /dev/null +++ b/update-build-date.js @@ -0,0 +1,23 @@ +import { readFileSync, writeFileSync } from 'fs' +import { fileURLToPath } from 'url' +import { dirname, join } from 'path' + +const __filename = fileURLToPath(import.meta.url) +const __dirname = dirname(__filename) +const packageJsonPath = join(__dirname, 'package.json') + +try { + // 读取 package.json + const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) + + // 更新构建日期 + packageJson.buildDate = new Date().toLocaleString() + + // 写回 package.json (保持格式化,缩进2个空格) + writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n', 'utf-8') + + console.log(`✓ Build date updated: ${packageJson.buildDate}`) +} catch (error) { + console.error('Failed to update build date:', error) + process.exit(1) +} diff --git a/vite.config.ts b/vite.config.ts index 6a60bff..40c1ecf 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -9,22 +9,43 @@ export default defineConfig({ outDir: 'docs', sourcemap: false, cssCodeSplit: true, + chunkSizeWarningLimit: 1000, rollupOptions: { output: { manualChunks(id) { - if (id.includes('node_modules/vue')) return 'vendor-vue' - if (id.includes('node_modules/vue-router')) return 'vendor-vue' - if (id.includes('node_modules/pinia')) return 'vendor-vue' - if (id.includes('node_modules/reka-ui')) return 'vendor-ui' - if (id.includes('node_modules/@vueuse/core')) return 'vendor-ui' - } + // Vue 核心框架 + if (id.includes('node_modules/vue/') || id.includes('node_modules/@vue/')) return 'vendor-vue-core' + // Vue 生态 + if (id.includes('node_modules/vue-router')) return 'vendor-vue-router' + if (id.includes('node_modules/pinia')) return 'vendor-pinia' + // UI 组件库 + if (id.includes('node_modules/reka-ui')) return 'vendor-reka-ui' + if (id.includes('node_modules/@vueuse/core')) return 'vendor-vueuse' + if (id.includes('node_modules/lucide-vue-next')) return 'vendor-icons' + // 工具库 + if (id.includes('node_modules/crypto-js')) return 'vendor-crypto' + if (id.includes('node_modules/file-saver')) return 'vendor-utils' + if (id.includes('node_modules/clsx') || id.includes('node_modules/tailwind-merge')) return 'vendor-utils' + // Tailwind CSS + if (id.includes('node_modules/@tailwindcss') || id.includes('node_modules/tailwindcss')) return 'vendor-tailwind' + // 游戏逻辑模块 + if (id.includes('/src/logic/')) return 'game-logic' + // 配置和类型 + if (id.includes('/src/config/') || id.includes('/src/types/')) return 'game-config' + // 本地化 + if (id.includes('/src/locales/')) return 'game-i18n' + // 其他 node_modules 依赖 + if (id.includes('node_modules/')) return 'vendor-others' + }, + // 优化输出文件名 + chunkFileNames: 'assets/[name]-[hash].js', + entryFileNames: 'assets/[name]-[hash].js', + assetFileNames: 'assets/[name]-[hash].[ext]' } - }, + } }, plugins: [vue(), tailwindcss()], - resolve: { - alias: { - '@': path.resolve(__dirname, './src'), - } - } + resolve: { alias: { '@': path.resolve(__dirname, './src') } }, + // 优化依赖预构建 + optimizeDeps: { include: ['vue', 'vue-router', 'pinia', 'reka-ui', '@vueuse/core', 'lucide-vue-next', 'crypto-js', 'file-saver'] } })