@samyx/preview-stacks-ui 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/assets/{ActionButton.vue_vue_type_script_setup_true_lang-eyfGLbs3.js → ActionButton.vue_vue_type_script_setup_true_lang-Dx6dvDgY.js} +2 -2
  2. package/dist/assets/{ActionButton.vue_vue_type_script_setup_true_lang-eyfGLbs3.js.map → ActionButton.vue_vue_type_script_setup_true_lang-Dx6dvDgY.js.map} +1 -1
  3. package/dist/assets/AxesTab-Bq4L7G1s.js +2 -0
  4. package/dist/assets/AxesTab-Bq4L7G1s.js.map +1 -0
  5. package/dist/assets/ConfigTab-Ltx3Zrdd.js +2 -0
  6. package/dist/assets/ConfigTab-Ltx3Zrdd.js.map +1 -0
  7. package/dist/assets/DangerTab-UVytlrHh.js +2 -0
  8. package/dist/assets/DangerTab-UVytlrHh.js.map +1 -0
  9. package/dist/assets/DashboardView-CWqm9Ut_.js +2 -0
  10. package/dist/assets/DashboardView-CWqm9Ut_.js.map +1 -0
  11. package/dist/assets/DeploymentDetailView-BoPv5KCl.js +2 -0
  12. package/dist/assets/DeploymentDetailView-BoPv5KCl.js.map +1 -0
  13. package/dist/assets/DeploymentsView-welgmlBc.js +2 -0
  14. package/dist/assets/DeploymentsView-welgmlBc.js.map +1 -0
  15. package/dist/assets/{ErrorNote.vue_vue_type_script_setup_true_lang-vu8RudtR.js → ErrorNote.vue_vue_type_script_setup_true_lang-BNRC57JZ.js} +2 -2
  16. package/dist/assets/{ErrorNote.vue_vue_type_script_setup_true_lang-vu8RudtR.js.map → ErrorNote.vue_vue_type_script_setup_true_lang-BNRC57JZ.js.map} +1 -1
  17. package/dist/assets/JobDetailView-C4HDkGMQ.js +2 -0
  18. package/dist/assets/JobDetailView-C4HDkGMQ.js.map +1 -0
  19. package/dist/assets/JobsView-C0kqyEse.js +2 -0
  20. package/dist/assets/JobsView-C0kqyEse.js.map +1 -0
  21. package/dist/assets/LogsTab-DMm5SmAq.js +4 -0
  22. package/dist/assets/LogsTab-DMm5SmAq.js.map +1 -0
  23. package/dist/assets/{NotFoundView-3kRJpFYC.js → NotFoundView-BXzLxfj8.js} +2 -2
  24. package/dist/assets/{NotFoundView-3kRJpFYC.js.map → NotFoundView-BXzLxfj8.js.map} +1 -1
  25. package/dist/assets/OverviewTab-GXUj8rfn.js +2 -0
  26. package/dist/assets/OverviewTab-GXUj8rfn.js.map +1 -0
  27. package/dist/assets/{RequiresTab-DB0yEAmP.js → RequiresTab-BBbppgfW.js} +2 -2
  28. package/dist/assets/{RequiresTab-DB0yEAmP.js.map → RequiresTab-BBbppgfW.js.map} +1 -1
  29. package/dist/assets/SettingsView-6NfKAhvR.js +2 -0
  30. package/dist/assets/SettingsView-6NfKAhvR.js.map +1 -0
  31. package/dist/assets/{SkeletonList.vue_vue_type_script_setup_true_lang-ECJq9map.js → SkeletonList.vue_vue_type_script_setup_true_lang-CafU21a8.js} +2 -2
  32. package/dist/assets/{SkeletonList.vue_vue_type_script_setup_true_lang-ECJq9map.js.map → SkeletonList.vue_vue_type_script_setup_true_lang-CafU21a8.js.map} +1 -1
  33. package/dist/assets/{StateBadge.vue_vue_type_script_setup_true_lang-BJu6FAcJ.js → StateBadge.vue_vue_type_script_setup_true_lang-CNfZduv9.js} +2 -2
  34. package/dist/assets/{StateBadge.vue_vue_type_script_setup_true_lang-BJu6FAcJ.js.map → StateBadge.vue_vue_type_script_setup_true_lang-CNfZduv9.js.map} +1 -1
  35. package/dist/assets/SubmitView-D_QtP8ym.js +45 -0
  36. package/dist/assets/SubmitView-D_QtP8ym.js.map +1 -0
  37. package/dist/assets/{VarEditor.vue_vue_type_script_setup_true_lang-DYi-LMaK.js → VarEditor.vue_vue_type_script_setup_true_lang-LB0r2ViA.js} +2 -2
  38. package/dist/assets/{VarEditor.vue_vue_type_script_setup_true_lang-DYi-LMaK.js.map → VarEditor.vue_vue_type_script_setup_true_lang-LB0r2ViA.js.map} +1 -1
  39. package/dist/assets/index-DfBxQ-9i.css +1 -0
  40. package/dist/assets/index-DmWBBqbv.js +29 -0
  41. package/dist/assets/index-DmWBBqbv.js.map +1 -0
  42. package/dist/assets/{useDeployment-ByQUNe_X.js → useDeployment-Dt6UHfpB.js} +2 -2
  43. package/dist/assets/{useDeployment-ByQUNe_X.js.map → useDeployment-Dt6UHfpB.js.map} +1 -1
  44. package/dist/assets/useFormat-CKJxQp_i.js +2 -0
  45. package/dist/assets/useFormat-CKJxQp_i.js.map +1 -0
  46. package/dist/index.html +2 -2
  47. package/package.json +1 -1
  48. package/dist/assets/AxesTab-BRrPVCft.js +0 -3
  49. package/dist/assets/AxesTab-BRrPVCft.js.map +0 -1
  50. package/dist/assets/ConfigTab-BOCoIOPW.js +0 -2
  51. package/dist/assets/ConfigTab-BOCoIOPW.js.map +0 -1
  52. package/dist/assets/DangerTab-dMsIXX7F.js +0 -2
  53. package/dist/assets/DangerTab-dMsIXX7F.js.map +0 -1
  54. package/dist/assets/DashboardView-D27l8yqd.js +0 -2
  55. package/dist/assets/DashboardView-D27l8yqd.js.map +0 -1
  56. package/dist/assets/DeploymentDetailView-BjELdE9f.js +0 -2
  57. package/dist/assets/DeploymentDetailView-BjELdE9f.js.map +0 -1
  58. package/dist/assets/DeploymentsView-02Cg08fs.js +0 -2
  59. package/dist/assets/DeploymentsView-02Cg08fs.js.map +0 -1
  60. package/dist/assets/JobDetailView-Ck89gkKn.js +0 -2
  61. package/dist/assets/JobDetailView-Ck89gkKn.js.map +0 -1
  62. package/dist/assets/JobsView-0OjmomhQ.js +0 -2
  63. package/dist/assets/JobsView-0OjmomhQ.js.map +0 -1
  64. package/dist/assets/LogsTab-Bb2E4F-n.js +0 -4
  65. package/dist/assets/LogsTab-Bb2E4F-n.js.map +0 -1
  66. package/dist/assets/OverviewTab-BrElTGDU.js +0 -2
  67. package/dist/assets/OverviewTab-BrElTGDU.js.map +0 -1
  68. package/dist/assets/SettingsView-CZvKTBtQ.js +0 -2
  69. package/dist/assets/SettingsView-CZvKTBtQ.js.map +0 -1
  70. package/dist/assets/SubmitView-dblBZxuc.js +0 -45
  71. package/dist/assets/SubmitView-dblBZxuc.js.map +0 -1
  72. package/dist/assets/index--8-Mcu3f.js +0 -29
  73. package/dist/assets/index--8-Mcu3f.js.map +0 -1
  74. package/dist/assets/index-C_dmDOA0.css +0 -1
  75. package/dist/assets/useFormat-CNPlQbIu.js +0 -2
  76. package/dist/assets/useFormat-CNPlQbIu.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogsTab-Bb2E4F-n.js","sources":["../../src/views/tabs/LogsTab.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * Compose logs, fetched ON DEMAND.\n *\n * Never polled: an auto-refresh against a chatty stack would hammer the host through\n * `docker compose logs` — the same host that is running everyone else's previews. The tail is\n * clamped to 1–2000 by the server for the same reason.\n */\nimport { computed, ref } from 'vue';\nimport { api, problem, query } from '../../api/client';\nimport type { LogsResponse } from '../../api/types';\nimport { dep } from '../../composables/useDeployment';\n\nconst tail = ref(200);\nconst filter = ref('');\nconst logs = ref<LogsResponse | null>(null);\nconst error = ref('');\nconst loading = ref(false);\n\nasync function fetchLogs(): Promise<void> {\n if (!dep.detail?.compose) return;\n const id = dep.id;\n loading.value = true;\n error.value = '';\n const r = await api.get<LogsResponse>(\n `/api/deployments/${encodeURIComponent(id)}/logs${query(dep.vars, { tail: tail.value })}`,\n );\n loading.value = false;\n if (dep.id !== id) return; // navigated away mid-flight\n if (!r.ok) {\n logs.value = null;\n error.value = problem(r, 'GET logs');\n return;\n }\n logs.value = { ...r.body, ok: r.body.ok !== false, text: r.body.text ?? '' };\n}\n\n/** Search-in-logs: filter to matching lines rather than highlighting inside a wall of text. */\nconst shown = computed(() => {\n const text = logs.value?.text ?? '';\n const needle = filter.value.trim().toLowerCase();\n if (!needle) return text;\n const lines = text.split('\\n').filter((l) => l.toLowerCase().includes(needle));\n return lines.length ? lines.join('\\n') : `(no line matches \"${filter.value}\")`;\n});\n</script>\n\n<template>\n <section class=\"panel\">\n <div class=\"phead\">\n <h2 class=\"section\">Compose logs</h2>\n <span class=\"grow\" />\n <div class=\"field\">\n <label for=\"tail\" class=\"mute\" style=\"font-size: var(--t-xs)\">tail</label>\n <select id=\"tail\" v-model.number=\"tail\">\n <option :value=\"50\">50</option>\n <option :value=\"200\">200</option>\n <option :value=\"500\">500</option>\n <option :value=\"1000\">1000</option>\n <option :value=\"2000\">2000</option>\n </select>\n </div>\n <button\n class=\"primary\"\n style=\"align-self: end\"\n :disabled=\"loading || !dep.detail?.compose\"\n @click=\"fetchLogs\"\n >\n {{ loading ? 'reading…' : 'Fetch' }}\n <span v-if=\"loading\" class=\"progress\" aria-hidden=\"true\" />\n </button>\n </div>\n\n <p v-if=\"!dep.detail\" class=\"mute\">Unavailable until the spec resolves.</p>\n <!-- Guard on the field rather than calling and interpreting the failure after the fact. -->\n <p v-else-if=\"!dep.detail.compose\" class=\"mute\">\n This spec has no <code>compose:</code> section, so there are no compose logs to read. Its axes\n may still have created resources — check those at their own source.\n </p>\n\n <template v-else>\n <p class=\"hint\" style=\"margin: 0 0 var(--s3)\">\n Fetched on demand, never polled: an auto-refresh against a chatty stack would hammer the\n host. <code>tail</code> is clamped to 1–2000 by the server.\n </p>\n\n <div v-if=\"error\" class=\"banner failed\">{{ error }}</div>\n\n <!--\n `ok: false` means compose exited non-zero. Usually \"no such project\" because the stack was\n never brought up — not a server fault, so it is a note rather than an error.\n -->\n <div v-else-if=\"logs && !logs.ok\" class=\"banner warn\">\n <b>compose exited non-zero.</b>\n <p>\n Most often the project does not exist yet (nothing has been brought up), or a profile is\n missing. Any output it did produce is below.\n </p>\n </div>\n\n <div v-if=\"logs\" class=\"field\" style=\"margin-top: var(--s3)\">\n <label for=\"lf\" class=\"mute\" style=\"font-size: var(--t-xs)\">Search in these lines</label>\n <input id=\"lf\" v-model=\"filter\" data-search type=\"search\" placeholder=\"substring\" spellcheck=\"false\" />\n </div>\n\n <pre v-if=\"logs\" class=\"log\">{{ shown || '(no output)' }}</pre>\n <p v-else-if=\"!loading\" class=\"mute\" style=\"margin-top: var(--s3)\">\n Press <b>Fetch</b> to read the last {{ tail }} lines.\n </p>\n\n <p v-if=\"logs\" class=\"hint\">\n Redacted on the host before sending: credentials inside URLs, <code>NAME=value</code> pairs\n whose name reads as a secret, and this server's own token.\n </p>\n </template>\n </section>\n</template>\n"],"names":["tail","ref","filter","logs","error","loading","fetchLogs","_a","dep","id","r","api","query","problem","shown","computed","text","needle","lines","l","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_cache","_hoisted_3","$event","_unref","_createTextVNode","_toDisplayString","_hoisted_5","_Fragment","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_7","_hoisted_6"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{d as o,r as c,i as f}from"./useDeployment-ByQUNe_X.js";import{s as u}from"./useFormat-CNPlQbIu.js";import{_ as g}from"./SkeletonList.vue_vue_type_script_setup_true_lang-ECJq9map.js";import{d as h,c as n,a as s,b as t,g as k,F as p,t as l,v as x,e as i,f as r,r as v,w,m as b,n as C,o as a}from"./index--8-Mcu3f.js";import"./useVars-VN9gYdR6.js";const B={class:"panel"},N={key:1,class:"mute"},R={class:"kvlist"},z={class:"v mono"},A={class:"v"},L={class:"mute",style:{"margin-left":"8px","font-size":"var(--t-sm)"}},S={key:0},T={class:"v mono"},V={class:"v mono"},$={key:1},q={class:"v"},F={key:0,class:"mute"},U={key:2},j={class:"v mono"},D={key:0,class:"mute"},E={class:"v"},I={class:"v"},K={class:"v mono"},O={class:"v mono"},X=h({__name:"OverviewTab",setup(G){const y=b(()=>f.value?"a host singleton previews borrow — no axes, and down is guarded":"one tenant, created and destroyed constantly, expected to leave nothing behind");return(H,e)=>{var m;const _=C("RouterLink");return a(),n("section",B,[e[13]||(e[13]=s("h2",{class:"section",style:{"margin-bottom":"var(--s3)"}},"Resolved spec",-1)),!t(o).detail&&!t(o).error?(a(),k(g,{key:0,rows:5})):t(o).detail?(a(),n(p,{key:2},[s("ul",R,[s("li",null,[e[0]||(e[0]=s("span",{class:"k"},"stack",-1)),s("span",z,l(t(o).detail.stack||"—"),1)]),s("li",null,[e[1]||(e[1]=s("span",{class:"k"},"kind",-1)),s("span",A,[s("span",{class:x(["badge",t(o).detail.kind])},l(t(o).detail.kind),3),s("span",L,l(y.value),1)])]),(m=t(c))!=null&&m.specName?(a(),n("li",S,[e[3]||(e[3]=s("span",{class:"k"},"spec",-1)),s("span",T,[i(l(t(c).specName)+" ",1),e[2]||(e[2]=s("span",{class:"mute",style:{"font-size":"var(--t-sm)"}}," — a stored spec, shared with any other deployment that references it ",-1))])])):r("",!0),s("li",null,[e[4]||(e[4]=s("span",{class:"k"},"compose file",-1)),s("span",V,l(t(o).detail.compose?t(o).detail.compose.file:"— (no compose section)"),1)]),t(o).detail.compose?(a(),n("li",$,[e[5]||(e[5]=s("span",{class:"k"},"profiles",-1)),s("span",q,[(a(!0),n(p,null,v(t(o).detail.compose.profiles,d=>(a(),n("span",{key:d,class:"badge",style:{"margin-right":"4px"}},l(d),1))),128)),t(o).detail.compose.profiles.length?r("",!0):(a(),n("span",F," none — a bare up starts every service "))])])):r("",!0),t(o).detail.compose?(a(),n("li",U,[e[6]||(e[6]=s("span",{class:"k"},"overlays",-1)),s("span",j,[(a(!0),n(p,null,v(t(o).detail.compose.overlays,d=>(a(),n("span",{key:d,style:{"margin-right":"8px"}},l(d),1))),128)),t(o).detail.compose.overlays.length?r("",!0):(a(),n("span",D,"none"))])])):r("",!0),s("li",null,[e[8]||(e[8]=s("span",{class:"k"},"axes",-1)),s("span",E,[i(l(t(o).detail.axes.length)+" ",1),t(o).detail.axes.length?(a(),k(_,{key:0,to:`/deployments/${encodeURIComponent(t(o).id)}/axes`},{default:w(()=>[...e[7]||(e[7]=[i(" view → ",-1)])]),_:1},8,["to"])):r("",!0)])]),s("li",null,[e[9]||(e[9]=s("span",{class:"k"},"requires",-1)),s("span",I,l(t(o).detail.requires.length),1)]),s("li",null,[e[10]||(e[10]=s("span",{class:"k"},"created",-1)),s("span",K,l(t(u)(t(o).detail.createdAt)),1)]),s("li",null,[e[11]||(e[11]=s("span",{class:"k"},"updated",-1)),s("span",O,l(t(u)(t(o).detail.updatedAt)),1)])]),e[12]||(e[12]=s("p",{class:"hint"},[s("code",null,"id"),i(" is the registry id — a directory name, and what every route addresses. "),s("code",null,"stack"),i(" is what the spec resolved to: the compose project name, the hostname label, and "),s("code",null,"$STACK"),i(" inside every hook. ")],-1))],64)):(a(),n("p",N,"Unavailable until the spec resolves."))])}}});export{X as default};
2
- //# sourceMappingURL=OverviewTab-BrElTGDU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OverviewTab-BrElTGDU.js","sources":["../../src/views/tabs/OverviewTab.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/** The resolved spec, summarised. Read-only — everything that acts lives on Danger. */\nimport { computed } from 'vue';\nimport { dep, isShared, row } from '../../composables/useDeployment';\nimport { stamp } from '../../composables/useFormat';\nimport SkeletonList from '../../components/SkeletonList.vue';\n\nconst kindBlurb = computed(() =>\n isShared.value\n ? 'a host singleton previews borrow — no axes, and down is guarded'\n : 'one tenant, created and destroyed constantly, expected to leave nothing behind',\n);\n</script>\n\n<template>\n <section class=\"panel\">\n <h2 class=\"section\" style=\"margin-bottom: var(--s3)\">Resolved spec</h2>\n\n <SkeletonList v-if=\"!dep.detail && !dep.error\" :rows=\"5\" />\n <p v-else-if=\"!dep.detail\" class=\"mute\">Unavailable until the spec resolves.</p>\n\n <template v-else>\n <ul class=\"kvlist\">\n <li>\n <span class=\"k\">stack</span>\n <span class=\"v mono\">{{ dep.detail.stack || '—' }}</span>\n </li>\n <li>\n <span class=\"k\">kind</span>\n <span class=\"v\">\n <span class=\"badge\" :class=\"dep.detail.kind\">{{ dep.detail.kind }}</span>\n <span class=\"mute\" style=\"margin-left: 8px; font-size: var(--t-sm)\">{{ kindBlurb }}</span>\n </span>\n </li>\n <li v-if=\"row?.specName\">\n <span class=\"k\">spec</span>\n <span class=\"v mono\">\n {{ row.specName }}\n <span class=\"mute\" style=\"font-size: var(--t-sm)\">\n — a stored spec, shared with any other deployment that references it\n </span>\n </span>\n </li>\n <li>\n <span class=\"k\">compose file</span>\n <span class=\"v mono\">\n {{ dep.detail.compose ? dep.detail.compose.file : '— (no compose section)' }}\n </span>\n </li>\n <li v-if=\"dep.detail.compose\">\n <span class=\"k\">profiles</span>\n <span class=\"v\">\n <span v-for=\"p in dep.detail.compose.profiles\" :key=\"p\" class=\"badge\" style=\"margin-right: 4px\">\n {{ p }}\n </span>\n <span v-if=\"!dep.detail.compose.profiles.length\" class=\"mute\">\n none — a bare up starts every service\n </span>\n </span>\n </li>\n <li v-if=\"dep.detail.compose\">\n <span class=\"k\">overlays</span>\n <span class=\"v mono\">\n <span v-for=\"o in dep.detail.compose.overlays\" :key=\"o\" style=\"margin-right: 8px\">{{ o }}</span>\n <span v-if=\"!dep.detail.compose.overlays.length\" class=\"mute\">none</span>\n </span>\n </li>\n <li>\n <span class=\"k\">axes</span>\n <span class=\"v\">\n {{ dep.detail.axes.length }}\n <RouterLink v-if=\"dep.detail.axes.length\" :to=\"`/deployments/${encodeURIComponent(dep.id)}/axes`\">\n view →\n </RouterLink>\n </span>\n </li>\n <li>\n <span class=\"k\">requires</span>\n <span class=\"v\">{{ dep.detail.requires.length }}</span>\n </li>\n <li><span class=\"k\">created</span><span class=\"v mono\">{{ stamp(dep.detail.createdAt) }}</span></li>\n <li><span class=\"k\">updated</span><span class=\"v mono\">{{ stamp(dep.detail.updatedAt) }}</span></li>\n </ul>\n\n <p class=\"hint\">\n <code>id</code> is the registry id — a directory name, and what every route addresses.\n <code>stack</code> is what the spec resolved to: the compose project name, the hostname\n label, and <code>$STACK</code> inside every hook.\n </p>\n </template>\n </section>\n</template>\n"],"names":["kindBlurb","computed","isShared","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_unref","dep","_createBlock","SkeletonList","_Fragment","_hoisted_3","_cache","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","row","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_renderList","p","_hoisted_12","_hoisted_13","_hoisted_14","o","_hoisted_15","_hoisted_16","_createTextVNode","_component_RouterLink","_hoisted_17","_hoisted_18","stamp","_hoisted_19","_hoisted_2"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{d as y,c as r,a as t,x as d,y as h,b as o,K as s,e as n,F as b,f as v,t as u,s as l,z as f,j as w,m as E,Q as x,H as T,o as p}from"./index--8-Mcu3f.js";const S={class:"panel"},c={class:"field"},B={class:"field"},C={class:"mute hint"},U={class:"row",style:{gap:"8px","margin-top":"4px"}},V=["disabled"],F={key:0,class:"mute"},A={key:1,class:"bad"},D={class:"panel"},L={class:"field"},N={class:"field"},P=y({__name:"SettingsView",setup(R){const a=w(!1),k=E(()=>{var m;return((m=l.health)==null?void 0:m.authEnforced)??null});async function g(){a.value=!0;try{await x(),T(l.healthError?"error":"ok",l.healthError||"Control plane reachable")}finally{a.value=!1}}return(m,e)=>(p(),r("div",null,[e[21]||(e[21]=t("div",{class:"page-head"},[t("div",null,[t("h1",null,"Settings"),t("div",{class:"sub"},"Stored in this browser only. Nothing here is sent to the server.")])],-1)),t("section",S,[e[14]||(e[14]=t("h2",{class:"phead-title"},"Connection",-1)),t("div",c,[e[4]||(e[4]=t("label",{for:"apiBase"},"API base URL",-1)),d(t("input",{id:"apiBase","onUpdate:modelValue":e[0]||(e[0]=i=>o(s).apiBase=i),type:"url",spellcheck:"false",placeholder:"(same origin)"},null,512),[[h,o(s).apiBase,void 0,{trim:!0}]]),e[5]||(e[5]=t("div",{class:"mute hint"},[n(" Leave empty for same-origin, which is how this UI is served in the control stack — nginx proxies "),t("code",null,"/api/"),n(" to the pstack container, so the browser never makes a cross-origin request and no CORS configuration exists to get wrong. Set an absolute URL only for a dev session against a tunnelled host. ")],-1))]),t("div",B,[e[13]||(e[13]=t("label",{for:"token"},"Bearer token",-1)),d(t("input",{id:"token","onUpdate:modelValue":e[1]||(e[1]=i=>o(s).token=i),type:"password",autocomplete:"off",spellcheck:"false",placeholder:"PSTACK_TOKEN"},null,512),[[h,o(s).token,void 0,{trim:!0}]]),t("div",C,[e[10]||(e[10]=n(" Attached to ",-1)),e[11]||(e[11]=t("strong",null,"POST, PUT and DELETE",-1)),e[12]||(e[12]=n(" only — the routes that change or destroy something. Reads are unauthenticated, so the dashboard works before you paste one. ",-1)),k.value===!1?(p(),r(b,{key:0},[e[6]||(e[6]=t("br",null,null,-1)),e[7]||(e[7]=n(" This server reports ",-1)),e[8]||(e[8]=t("code",null,"authEnforced: false",-1)),e[9]||(e[9]=n(": it is bound to loopback and accepts mutations without a token. A token here is harmless but unnecessary. ",-1))],64)):v("",!0)])]),t("div",U,[t("button",{class:"btn",disabled:a.value,onClick:g},u(a.value?"Checking…":"Test connection"),9,V),o(l).health?(p(),r("span",F," pstack "+u(o(l).health.version)+" · registry "+u(o(l).health.dataDir),1)):o(l).healthError?(p(),r("span",A,u(o(l).healthError),1)):v("",!0)])]),t("section",D,[e[20]||(e[20]=t("h2",{class:"phead-title"},"Appearance",-1)),t("div",L,[e[16]||(e[16]=t("label",{for:"theme"},"Theme",-1)),d(t("select",{id:"theme","onUpdate:modelValue":e[2]||(e[2]=i=>o(s).theme=i)},[...e[15]||(e[15]=[t("option",{value:"system"},"Follow the system",-1),t("option",{value:"dark"},"Dark",-1),t("option",{value:"light"},"Light",-1)])],512),[[f,o(s).theme]])]),t("div",N,[e[18]||(e[18]=t("label",{for:"motion"},"Motion",-1)),d(t("select",{id:"motion","onUpdate:modelValue":e[3]||(e[3]=i=>o(s).motion=i)},[...e[17]||(e[17]=[t("option",{value:"system"},"Follow the system",-1),t("option",{value:"full"},"Full animation",-1),t("option",{value:"none"},"Reduce motion",-1)])],512),[[f,o(s).motion]]),e[19]||(e[19]=t("div",{class:"mute hint"},[n(" “Follow the system” honours "),t("code",null,"prefers-reduced-motion"),n(". The explicit options override it in both directions, because an OS-level preference is not always the right answer for one app on one screen. ")],-1))])])]))}});export{P as default};
2
- //# sourceMappingURL=SettingsView-CZvKTBtQ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SettingsView-CZvKTBtQ.js","sources":["../../src/views/SettingsView.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * Settings: where the API is, how to authenticate to it, and how the app looks.\n *\n * Everything here is client-side and persisted to localStorage by `useSettings` — nothing is sent\n * to the server, and there is nothing to save. Bindings write through immediately.\n */\nimport { computed, ref } from 'vue';\nimport { settings } from '../composables/useSettings';\nimport { state, loadHealth } from '../composables/useControlPlane';\nimport { toast } from '../composables/useToasts';\n\nconst checking = ref(false);\n\n/**\n * The server tells us whether it enforces auth. When it does not, it is bound to loopback and a\n * token would be pointless — worth saying, so nobody hunts for one that was never issued.\n */\nconst authEnforced = computed(() => state.health?.authEnforced ?? null);\n\nasync function recheck(): Promise<void> {\n checking.value = true;\n try {\n await loadHealth();\n toast(state.healthError ? 'error' : 'ok', state.healthError || 'Control plane reachable');\n } finally {\n checking.value = false;\n }\n}\n</script>\n\n<template>\n <div>\n <div class=\"page-head\">\n <div>\n <h1>Settings</h1>\n <div class=\"sub\">Stored in this browser only. Nothing here is sent to the server.</div>\n </div>\n </div>\n\n <section class=\"panel\">\n <h2 class=\"phead-title\">Connection</h2>\n\n <div class=\"field\">\n <label for=\"apiBase\">API base URL</label>\n <input\n id=\"apiBase\"\n v-model.trim=\"settings.apiBase\"\n type=\"url\"\n spellcheck=\"false\"\n placeholder=\"(same origin)\"\n />\n <div class=\"mute hint\">\n Leave empty for same-origin, which is how this UI is served in the control stack — nginx\n proxies <code>/api/</code> to the pstack container, so the browser never makes a\n cross-origin request and no CORS configuration exists to get wrong. Set an absolute URL\n only for a dev session against a tunnelled host.\n </div>\n </div>\n\n <div class=\"field\">\n <label for=\"token\">Bearer token</label>\n <input\n id=\"token\"\n v-model.trim=\"settings.token\"\n type=\"password\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n placeholder=\"PSTACK_TOKEN\"\n />\n <div class=\"mute hint\">\n Attached to <strong>POST, PUT and DELETE</strong> only — the routes that change or destroy\n something. Reads are unauthenticated, so the dashboard works before you paste one.\n <template v-if=\"authEnforced === false\">\n <br />\n This server reports <code>authEnforced: false</code>: it is bound to loopback and accepts\n mutations without a token. A token here is harmless but unnecessary.\n </template>\n </div>\n </div>\n\n <div class=\"row\" style=\"gap: 8px; margin-top: 4px\">\n <button class=\"btn\" :disabled=\"checking\" @click=\"recheck\">\n {{ checking ? 'Checking…' : 'Test connection' }}\n </button>\n <span v-if=\"state.health\" class=\"mute\">\n pstack {{ state.health.version }} · registry {{ state.health.dataDir }}\n </span>\n <span v-else-if=\"state.healthError\" class=\"bad\">{{ state.healthError }}</span>\n </div>\n </section>\n\n <section class=\"panel\">\n <h2 class=\"phead-title\">Appearance</h2>\n\n <div class=\"field\">\n <label for=\"theme\">Theme</label>\n <select id=\"theme\" v-model=\"settings.theme\">\n <option value=\"system\">Follow the system</option>\n <option value=\"dark\">Dark</option>\n <option value=\"light\">Light</option>\n </select>\n </div>\n\n <div class=\"field\">\n <label for=\"motion\">Motion</label>\n <select id=\"motion\" v-model=\"settings.motion\">\n <option value=\"system\">Follow the system</option>\n <option value=\"full\">Full animation</option>\n <option value=\"none\">Reduce motion</option>\n </select>\n <div class=\"mute hint\">\n “Follow the system” honours <code>prefers-reduced-motion</code>. The explicit options\n override it in both directions, because an OS-level preference is not always the right\n answer for one app on one screen.\n </div>\n </div>\n </section>\n </div>\n</template>\n"],"names":["checking","ref","authEnforced","computed","_a","state","recheck","loadHealth","toast","_createElementBlock","_createElementVNode","_hoisted_1","_cache","_hoisted_2","$event","_unref","settings","_hoisted_3","_hoisted_4","_Fragment","_hoisted_5","_hoisted_6","_openBlock","_hoisted_7","_toDisplayString","_hoisted_8","_hoisted_9","_hoisted_10","_vModelSelect","_hoisted_11"],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- import{d as _,j as m,k as R,B as M,c as i,a as s,t as d,e as t,f as c,x as y,y as x,N as S,F as C,z as N,r as O,h as V,w as A,g as F,m as $,n as j,o as n,I as B,H as D,p as K,M as q}from"./index--8-Mcu3f.js";import{a as z,w as H,p as X,r as W}from"./useVars-VN9gYdR6.js";import{_ as G}from"./ActionButton.vue_vue_type_script_setup_true_lang-eyfGLbs3.js";import{_ as J}from"./ErrorNote.vue_vue_type_script_setup_true_lang-vu8RudtR.js";import{_ as Q}from"./VarEditor.vue_vue_type_script_setup_true_lang-DYi-LMaK.js";const Y={class:"page-head"},Z={class:"panel"},ee={key:0,class:"banner warn"},se={class:"mono"},oe={class:"row",style:{"margin-bottom":"var(--s4)"}},te={class:"field",style:{"max-width":"280px"}},ae={key:1,class:"row",style:{"margin-bottom":"var(--s4)"}},le={class:"check"},ne={class:"check"},ie={class:"field",style:{"max-width":"340px"}},re=["value"],de={key:0,class:"hint"},pe={key:0},ue={key:1,class:"mono"},me={key:2},ve={class:"field"},ce={class:"field",style:{"margin-top":"var(--s3)"}},ye={class:"row",style:{"margin-top":"var(--s5)"}},fe={key:0,class:"s-ok"},he={class:"mono"},ke=`version: 1
2
- kind: isolated
3
-
4
- # The stack identity: the compose project name, and $STACK inside every hook.
5
- # \${PR} is interpolated ONCE, at resolve time, from the variables sent with the request.
6
- stack: pr-\${PR}
7
-
8
- env:
9
- PREVIEW_DOMAIN: preview.example.com
10
-
11
- compose:
12
- file: compose.yml
13
- # Every service sits behind a profile so a bare \`up\` starts nothing.
14
- # \`down\` always enables ALL of them — otherwise the unselected profiles' network leaks.
15
- profiles: [app]
16
-
17
- requires:
18
- - name: traefik-network
19
- assert: docker network inspect traefik >/dev/null 2>&1
20
- hint: run \`pstack init\` on the host first
21
-
22
- axes:
23
- # Hooks run from the deployment directory, which holds only spec.yml and compose.yml —
24
- # so use inline shell or absolute paths, never ./hooks/foo.sh.
25
- - name: scratch
26
- up: mkdir -p /tmp/$STACK
27
- assert_live: test -d /tmp/$STACK
28
- down: rm -rf /tmp/$STACK
29
- # assert_gone MUST FAIL CLOSED. A bare \`! <probe>\` reports "gone" whenever the probe fails
30
- # for any reason — a missing CLI, an expired token — turning "I could not tell" into
31
- # "it is gone", a false negative on the one thing this tool exists to catch.
32
- assert_gone: |
33
- test -d /tmp || exit 1
34
- ! test -d /tmp/$STACK
35
- `,be=`services:
36
- app:
37
- image: nginx:alpine
38
- profiles: [app]
39
- labels:
40
- - traefik.enable=true
41
- `,$e=_({__name:"SubmitView",props:{id:{}},setup(T){const w=T,a=m({id:w.id??"",spec:"",compose:""}),v=m([{k:"",v:""}]),p=m("inline"),f=m(""),h=m(!1),k=m(""),u=m(null),b=m([]);R.get("/api/specs").then(l=>{l.ok&&Array.isArray(l.body.specs)&&(b.value=l.body.specs)});const g=$(()=>b.value.find(l=>l.name===f.value)),P=$(()=>!!w.id);M(()=>w.id,l=>{var o;if(k.value="",u.value=null,!l)return;l!==a.value.id&&(a.value.spec="",a.value.compose=""),a.value.id=l;const e=(o=q(l))==null?void 0:o.vars,r=e?X(e):W(l);r.some(I=>I.k)&&(v.value=r)},{immediate:!0});const U=$(()=>!!a.value.id&&(p.value==="stored"?!!f.value:!!a.value.spec.trim())&&!h.value);async function E(){h.value=!0,k.value="",u.value=null;const l=a.value.id,e=z(v.value),r={vars:e,env:e};p.value==="stored"?r.specName=f.value:(r.spec=a.value.spec,a.value.compose.trim()&&(r.compose=a.value.compose));const o=await R.put(`/api/deployments/${encodeURIComponent(l)}`,r);if(h.value=!1,o.status===200||o.status===201){u.value={id:o.body.id??l,stack:o.body.stack??"?",created:o.status===201},H(l,v.value),B(),D("ok",`${o.status===201?"Created":"Replaced"} ${l} → ${u.value.stack}`,{to:`/deployments/${encodeURIComponent(l)}`,toLabel:"Open"});return}k.value=K(o,`PUT /api/deployments/${l}`)}function L(){p.value="inline",a.value.spec=ke,a.value.compose.trim()||(a.value.compose=be),a.value.id||(a.value.id="pr-123"),v.value.some(l=>l.k)||(v.value=[{k:"PR",v:"123"}])}return(l,e)=>{const r=j("RouterLink");return n(),i("div",null,[s("div",Y,[s("div",null,[s("h1",null,d(P.value?"Replace a deployment":"Submit a deployment"),1),e[7]||(e[7]=s("div",{class:"sub"},[s("code",null,"PUT /api/deployments/:id")],-1))]),e[8]||(e[8]=s("span",{class:"grow"},null,-1)),s("button",{class:"ghost",onClick:L},"Load example spec")]),s("section",Z,[e[24]||(e[24]=s("p",{class:"dim",style:{"font-size":"var(--t-sm)"}},[t(" The spec is parsed "),s("em",null,"before"),t(" anything touches disk, so a rejected submission leaves nothing behind — and on a replace, a good record is never destroyed over a typo. "),s("code",null,"kind"),t(" is read from the spec, never from this form. ")],-1)),P.value?(n(),i("div",ee,[s("b",null,[e[9]||(e[9]=t("Replacing ",-1)),s("span",se,d(T.id),1),e[10]||(e[10]=t(".",-1))]),e[11]||(e[11]=s("p",null,[t(" This form starts "),s("em",null,"empty"),t(": the API has no route that hands back a stored spec, so nothing here was loaded from disk. Paste the "),s("b",null,"complete"),t(" spec you want stored — "),s("code",null,"PUT"),t(" replaces the record outright, and any axis you leave out stops being tracked while whatever it created keeps running. ")],-1))])):c("",!0),s("div",oe,[s("div",te,[e[12]||(e[12]=s("label",{for:"did"},"deployment id",-1)),y(s("input",{id:"did","onUpdate:modelValue":e[0]||(e[0]=o=>a.value.id=o),type:"text",placeholder:"pr-123",spellcheck:"false",autocomplete:"off"},null,512),[[x,a.value.id,void 0,{trim:!0}]])]),e[13]||(e[13]=s("span",{class:"mono mute",style:{"align-self":"end","padding-bottom":"8px"}}," [a-z0-9][a-z0-9._-]{0,63} ",-1))]),b.value.length?(n(),i("div",ae,[s("label",le,[y(s("input",{"onUpdate:modelValue":e[1]||(e[1]=o=>p.value=o),type:"radio",value:"inline"},null,512),[[S,p.value]]),e[14]||(e[14]=t(" inline spec ",-1))]),s("label",ne,[y(s("input",{"onUpdate:modelValue":e[2]||(e[2]=o=>p.value=o),type:"radio",value:"stored"},null,512),[[S,p.value]]),e[15]||(e[15]=t(" reference a stored spec ",-1))])])):c("",!0),p.value==="stored"&&b.value.length?(n(),i(C,{key:2},[s("div",ie,[e[17]||(e[17]=s("label",{for:"sn"},"stored spec",-1)),y(s("select",{id:"sn","onUpdate:modelValue":e[3]||(e[3]=o=>f.value=o)},[e[16]||(e[16]=s("option",{value:""},"— choose —",-1)),(n(!0),i(C,null,O(b.value,o=>(n(),i("option",{key:o.name,value:o.name},d(o.name)+" ("+d(o.kind)+") ",9,re))),128))],512),[[N,f.value]])]),g.value?(n(),i("p",de,[g.value.description?(n(),i("span",pe,d(g.value.description)+" — ",1)):c("",!0),e[18]||(e[18]=t(" needs ",-1)),g.value.requiredVars.length?(n(),i("span",ue,d(g.value.requiredVars.join(", ")),1)):(n(),i("span",me,"no variables")),e[19]||(e[19]=t(". A variable the spec needs and is not given is a 400 that names it, never a stack every PR would collide on. ",-1))])):c("",!0)],64)):(n(),i(C,{key:3},[s("div",ve,[e[20]||(e[20]=s("label",{for:"spec"},"spec.yml",-1)),y(s("textarea",{id:"spec","onUpdate:modelValue":e[4]||(e[4]=o=>a.value.spec=o),rows:"18",spellcheck:"false",placeholder:`version: 1
42
- kind: isolated
43
- stack: pr-\${PR}
44
- axes: []`},null,512),[[x,a.value.spec]])]),s("div",ce,[e[21]||(e[21]=s("label",{for:"compose"},[t("compose.yml "),s("span",{class:"mute"},"(optional)")],-1)),y(s("textarea",{id:"compose","onUpdate:modelValue":e[5]||(e[5]=o=>a.value.compose=o),rows:"8",spellcheck:"false",placeholder:"written next to spec.yml, so `compose: { file: compose.yml }` resolves"},null,512),[[x,a.value.compose]])]),e[22]||(e[22]=s("p",{class:"hint"},[t(" Only "),s("code",null,"spec.yml"),t(" and "),s("code",null,"compose.yml"),t(" ever live in a deployment directory, and hooks run from there — so a hook must be inline shell or an absolute path. "),s("code",null,"up: ./hooks/db.sh"),t(" cannot work here. ")],-1))],64)),e[25]||(e[25]=s("h2",{class:"section",style:{margin:"var(--s5) 0 var(--s3)"}},"Variables",-1)),V(Q,{modelValue:v.value,"onUpdate:modelValue":e[6]||(e[6]=o=>v.value=o)},null,8,["modelValue"]),e[26]||(e[26]=s("p",{class:"hint"},[t(" These validate the spec now, and are stored with the deployment on a server that supports it — which is what lets a later "),s("code",null,"down"),t(" resolve the same stack this "),s("code",null,"up"),t(" creates. They are also saved in this browser, so the actions on the deployment page send the same ones. ")],-1)),s("div",ye,[V(G,{variant:"primary",pending:h.value,disabled:!U.value,onClick:E},{default:A(()=>[t(d(h.value?"submitting…":"Submit"),1)]),_:1},8,["pending","disabled"]),u.value?(n(),i("span",fe,[t(d(u.value.created?"created":"replaced")+" — stack ",1),s("b",he,d(u.value.stack),1),V(r,{to:`/deployments/${encodeURIComponent(u.value.id)}`,style:{"margin-left":"8px"}},{default:A(()=>[...e[23]||(e[23]=[t(" open → ",-1)])]),_:1},8,["to"])])):c("",!0)]),k.value?(n(),F(J,{key:4,text:k.value,title:"The server rejected this submission."},null,8,["text"])):c("",!0)])])}}});export{$e as default};
45
- //# sourceMappingURL=SubmitView-dblBZxuc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubmitView-dblBZxuc.js","sources":["../../src/views/SubmitView.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * Submit or replace a deployment.\n *\n * The server's 400 is the whole point of this screen. It carries the SpecError verbatim — the key\n * or variable that is wrong, often the corrected form, and the assert-lint warnings about an\n * `assert_gone` that fails open. That text is the tool's main teaching surface, so it is rendered\n * whole, with newlines intact, and never summarised.\n *\n * The spec is parsed BEFORE anything touches disk, so a rejected submission leaves nothing behind\n * and, on a replace, a good record is never destroyed over a typo.\n */\nimport { computed, ref, watch } from 'vue';\nimport { api, problem } from '../api/client';\nimport type { SpecMeta, SpecsResponse, SubmitResponse, VarPair } from '../api/types';\nimport { loadDeployments, rowFor } from '../composables/useControlPlane';\nimport { pairsFromRecord, readVars, recordFromPairs, writeVars } from '../composables/useVars';\nimport { toast } from '../composables/useToasts';\nimport ActionButton from '../components/ActionButton.vue';\nimport ErrorNote from '../components/ErrorNote.vue';\nimport VarEditor from '../components/VarEditor.vue';\n\nconst props = defineProps<{ id?: string }>();\n\nconst form = ref({ id: props.id ?? '', spec: '', compose: '' });\nconst vars = ref<VarPair[]>([{ k: '', v: '' }]);\nconst source = ref<'inline' | 'stored'>('inline');\nconst specName = ref('');\n\nconst submitting = ref(false);\nconst error = ref('');\nconst result = ref<{ id: string; stack: string; created: boolean } | null>(null);\n\n/**\n * Stored specs, when this server has them. A build without `/api/specs` answers 404, which is not\n * an error here — the picker simply is not offered and inline stays the only shape.\n */\nconst specs = ref<SpecMeta[]>([]);\nvoid api.get<SpecsResponse>('/api/specs').then((r) => {\n if (r.ok && Array.isArray(r.body.specs)) specs.value = r.body.specs;\n});\n\nconst chosenSpec = computed(() => specs.value.find((s) => s.name === specName.value));\n\nconst replacing = computed(() => !!props.id);\n\n/**\n * Arriving to replace a DIFFERENT deployment must not carry the previous one's body across. There\n * is no route that returns a stored spec, so this form can never pre-fill the body — and a\n * leftover body is the dangerous case: it is perfectly valid YAML, so the PUT would succeed and\n * replace the wrong deployment's spec with nothing on the server able to catch it.\n */\nwatch(\n () => props.id,\n (id) => {\n error.value = '';\n result.value = null;\n if (!id) return;\n if (id !== form.value.id) {\n form.value.spec = '';\n form.value.compose = '';\n }\n form.value.id = id;\n // Seed the variables from what this deployment already uses: replacing a spec usually needs\n // the same ones that resolved it.\n const stored = rowFor(id)?.vars;\n const saved = stored ? pairsFromRecord(stored) : readVars(id);\n if (saved.some((e) => e.k)) vars.value = saved;\n },\n { immediate: true },\n);\n\nconst canSubmit = computed(\n () =>\n !!form.value.id &&\n (source.value === 'stored' ? !!specName.value : !!form.value.spec.trim()) &&\n !submitting.value,\n);\n\nasync function submit(): Promise<void> {\n submitting.value = true;\n error.value = '';\n result.value = null;\n\n const id = form.value.id;\n const record = recordFromPairs(vars.value);\n /**\n * `vars` are STORED with the deployment on servers that support it, which makes a later `down`\n * resolve the same stack `up` created with no query parameters at all. `env` validates this\n * submission on every server, new or old. Sending both is what keeps this form working against\n * either build — an older server ignores the key it does not know.\n */\n const body: Record<string, unknown> = { vars: record, env: record };\n if (source.value === 'stored') body.specName = specName.value;\n else {\n body.spec = form.value.spec;\n if (form.value.compose.trim()) body.compose = form.value.compose;\n }\n\n const r = await api.put<SubmitResponse>(`/api/deployments/${encodeURIComponent(id)}`, body);\n submitting.value = false;\n\n if (r.status === 200 || r.status === 201) {\n result.value = { id: r.body.id ?? id, stack: r.body.stack ?? '?', created: r.status === 201 };\n // Persist the variables that just validated this spec. On an older server this is the single\n // thing keeping a later `down` pointed at the stack the `up` created.\n writeVars(id, vars.value);\n void loadDeployments();\n toast('ok', `${r.status === 201 ? 'Created' : 'Replaced'} ${id} → ${result.value.stack}`, {\n to: `/deployments/${encodeURIComponent(id)}`,\n toLabel: 'Open',\n });\n return;\n }\n // 400 (SpecError), 409 (a job in flight over this stack), 401, 404 — all rendered verbatim.\n error.value = problem(r, `PUT /api/deployments/${id}`);\n}\n\nconst EXAMPLE_SPEC = `version: 1\nkind: isolated\n\n# The stack identity: the compose project name, and $STACK inside every hook.\n# \\${PR} is interpolated ONCE, at resolve time, from the variables sent with the request.\nstack: pr-\\${PR}\n\nenv:\n PREVIEW_DOMAIN: preview.example.com\n\ncompose:\n file: compose.yml\n # Every service sits behind a profile so a bare \\`up\\` starts nothing.\n # \\`down\\` always enables ALL of them — otherwise the unselected profiles' network leaks.\n profiles: [app]\n\nrequires:\n - name: traefik-network\n assert: docker network inspect traefik >/dev/null 2>&1\n hint: run \\`pstack init\\` on the host first\n\naxes:\n # Hooks run from the deployment directory, which holds only spec.yml and compose.yml —\n # so use inline shell or absolute paths, never ./hooks/foo.sh.\n - name: scratch\n up: mkdir -p /tmp/$STACK\n assert_live: test -d /tmp/$STACK\n down: rm -rf /tmp/$STACK\n # assert_gone MUST FAIL CLOSED. A bare \\`! <probe>\\` reports \"gone\" whenever the probe fails\n # for any reason — a missing CLI, an expired token — turning \"I could not tell\" into\n # \"it is gone\", a false negative on the one thing this tool exists to catch.\n assert_gone: |\n test -d /tmp || exit 1\n ! test -d /tmp/$STACK\n`;\n\nconst EXAMPLE_COMPOSE = `services:\n app:\n image: nginx:alpine\n profiles: [app]\n labels:\n - traefik.enable=true\n`;\n\nfunction loadExample(): void {\n source.value = 'inline';\n form.value.spec = EXAMPLE_SPEC;\n if (!form.value.compose.trim()) form.value.compose = EXAMPLE_COMPOSE;\n if (!form.value.id) form.value.id = 'pr-123';\n if (!vars.value.some((e) => e.k)) vars.value = [{ k: 'PR', v: '123' }];\n}\n</script>\n\n<template>\n <div>\n <div class=\"page-head\">\n <div>\n <h1>{{ replacing ? 'Replace a deployment' : 'Submit a deployment' }}</h1>\n <div class=\"sub\"><code>PUT /api/deployments/:id</code></div>\n </div>\n <span class=\"grow\" />\n <button class=\"ghost\" @click=\"loadExample\">Load example spec</button>\n </div>\n\n <section class=\"panel\">\n <p class=\"dim\" style=\"font-size: var(--t-sm)\">\n The spec is parsed <em>before</em> anything touches disk, so a rejected submission leaves\n nothing behind — and on a replace, a good record is never destroyed over a typo.\n <code>kind</code> is read from the spec, never from this form.\n </p>\n\n <!--\n A `PUT` REPLACES the whole record, and this form cannot pre-fill it: the API has no route\n that returns a stored spec. Say that out loud, because a half-remembered spec pasted here\n is still valid YAML — the server will accept it, and the axes the original declared simply\n stop existing as far as the control plane knows, while whatever they created keeps running.\n -->\n <div v-if=\"replacing\" class=\"banner warn\">\n <b>Replacing <span class=\"mono\">{{ id }}</span>.</b>\n <p>\n This form starts <em>empty</em>: the API has no route that hands back a stored spec, so\n nothing here was loaded from disk. Paste the <b>complete</b> spec you want stored —\n <code>PUT</code> replaces the record outright, and any axis you leave out stops being\n tracked while whatever it created keeps running.\n </p>\n </div>\n\n <div class=\"row\" style=\"margin-bottom: var(--s4)\">\n <div class=\"field\" style=\"max-width: 280px\">\n <label for=\"did\">deployment id</label>\n <input\n id=\"did\"\n v-model.trim=\"form.id\"\n type=\"text\"\n placeholder=\"pr-123\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n />\n </div>\n <span class=\"mono mute\" style=\"align-self: end; padding-bottom: 8px\">\n [a-z0-9][a-z0-9._-]{0,63}\n </span>\n </div>\n\n <!-- Offered only when this server actually has stored specs. -->\n <div v-if=\"specs.length\" class=\"row\" style=\"margin-bottom: var(--s4)\">\n <label class=\"check\">\n <input v-model=\"source\" type=\"radio\" value=\"inline\" /> inline spec\n </label>\n <label class=\"check\">\n <input v-model=\"source\" type=\"radio\" value=\"stored\" /> reference a stored spec\n </label>\n </div>\n\n <template v-if=\"source === 'stored' && specs.length\">\n <div class=\"field\" style=\"max-width: 340px\">\n <label for=\"sn\">stored spec</label>\n <select id=\"sn\" v-model=\"specName\">\n <option value=\"\">— choose —</option>\n <option v-for=\"s in specs\" :key=\"s.name\" :value=\"s.name\">\n {{ s.name }} ({{ s.kind }})\n </option>\n </select>\n </div>\n <p v-if=\"chosenSpec\" class=\"hint\">\n <span v-if=\"chosenSpec.description\">{{ chosenSpec.description }} — </span>\n needs\n <span v-if=\"chosenSpec.requiredVars.length\" class=\"mono\">\n {{ chosenSpec.requiredVars.join(', ') }}\n </span>\n <span v-else>no variables</span>. A variable the spec needs and is not given is a 400 that\n names it, never a stack every PR would collide on.\n </p>\n </template>\n\n <template v-else>\n <div class=\"field\">\n <label for=\"spec\">spec.yml</label>\n <textarea\n id=\"spec\"\n v-model=\"form.spec\"\n rows=\"18\"\n spellcheck=\"false\"\n placeholder=\"version: 1&#10;kind: isolated&#10;stack: pr-${PR}&#10;axes: []\"\n />\n </div>\n\n <div class=\"field\" style=\"margin-top: var(--s3)\">\n <label for=\"compose\">compose.yml <span class=\"mute\">(optional)</span></label>\n <textarea\n id=\"compose\"\n v-model=\"form.compose\"\n rows=\"8\"\n spellcheck=\"false\"\n placeholder=\"written next to spec.yml, so `compose: { file: compose.yml }` resolves\"\n />\n </div>\n <p class=\"hint\">\n Only <code>spec.yml</code> and <code>compose.yml</code> ever live in a deployment\n directory, and hooks run from there — so a hook must be inline shell or an absolute path.\n <code>up: ./hooks/db.sh</code> cannot work here.\n </p>\n </template>\n\n <h2 class=\"section\" style=\"margin: var(--s5) 0 var(--s3)\">Variables</h2>\n <VarEditor v-model=\"vars\" />\n <p class=\"hint\">\n These validate the spec now, and are stored with the deployment on a server that supports it\n — which is what lets a later <code>down</code> resolve the same stack this <code>up</code>\n creates. They are also saved in this browser, so the actions on the deployment page send the\n same ones.\n </p>\n\n <div class=\"row\" style=\"margin-top: var(--s5)\">\n <ActionButton variant=\"primary\" :pending=\"submitting\" :disabled=\"!canSubmit\" @click=\"submit\">\n {{ submitting ? 'submitting…' : 'Submit' }}\n </ActionButton>\n <span v-if=\"result\" class=\"s-ok\">\n {{ result.created ? 'created' : 'replaced' }} — stack\n <b class=\"mono\">{{ result.stack }}</b>\n <RouterLink :to=\"`/deployments/${encodeURIComponent(result.id)}`\" style=\"margin-left: 8px\">\n open →\n </RouterLink>\n </span>\n </div>\n\n <!--\n The server's rejection text IS the documentation: it names the key, the variable or the\n assert that is wrong, and often prints the corrected form. Rendered whole, newlines and\n indentation intact. Never truncate it, never collapse it, never say \"invalid spec\".\n -->\n <ErrorNote v-if=\"error\" :text=\"error\" title=\"The server rejected this submission.\" />\n </section>\n </div>\n</template>\n"],"names":["EXAMPLE_SPEC","EXAMPLE_COMPOSE","props","__props","form","ref","vars","source","specName","submitting","error","result","specs","api","r","chosenSpec","computed","s","replacing","watch","id","stored","_a","rowFor","saved","pairsFromRecord","readVars","e","canSubmit","submit","record","recordFromPairs","body","writeVars","loadDeployments","toast","problem","loadExample","_createElementBlock","_createElementVNode","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_cache","$event","_hoisted_7","_hoisted_8","_hoisted_9","_Fragment","_hoisted_10","_renderList","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_16","_vModelText","_hoisted_17","_createVNode","VarEditor","_hoisted_18","ActionButton","_hoisted_19","_hoisted_20","_component_RouterLink","_createBlock","ErrorNote"],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardView-D27l8yqd.js","assets/useFormat-CNPlQbIu.js","assets/StateBadge.vue_vue_type_script_setup_true_lang-BJu6FAcJ.js","assets/SkeletonList.vue_vue_type_script_setup_true_lang-ECJq9map.js","assets/DeploymentsView-02Cg08fs.js","assets/DeploymentDetailView-BjELdE9f.js","assets/useDeployment-ByQUNe_X.js","assets/useVars-VN9gYdR6.js","assets/ErrorNote.vue_vue_type_script_setup_true_lang-vu8RudtR.js","assets/OverviewTab-BrElTGDU.js","assets/ConfigTab-BOCoIOPW.js","assets/VarEditor.vue_vue_type_script_setup_true_lang-DYi-LMaK.js","assets/AxesTab-BRrPVCft.js","assets/RequiresTab-DB0yEAmP.js","assets/LogsTab-Bb2E4F-n.js","assets/DangerTab-dMsIXX7F.js","assets/ActionButton.vue_vue_type_script_setup_true_lang-eyfGLbs3.js","assets/SubmitView-dblBZxuc.js","assets/JobsView-0OjmomhQ.js","assets/JobDetailView-Ck89gkKn.js"])))=>i.map(i=>d[i]);
2
- (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();/**
3
- * @vue/shared v3.5.40
4
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
5
- * @license MIT
6
- **/function sr(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ie={},Zt=[],at=()=>{},Do=()=>!1,rs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),os=e=>e.startsWith("onUpdate:"),ge=Object.assign,rr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},El=Object.prototype.hasOwnProperty,X=(e,t)=>El.call(e,t),V=Array.isArray,en=e=>kn(e)==="[object Map]",dn=e=>kn(e)==="[object Set]",Pr=e=>kn(e)==="[object Date]",U=e=>typeof e=="function",ue=e=>typeof e=="string",Ye=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Mo=e=>(Z(e)||U(e))&&U(e.then)&&U(e.catch),Vo=Object.prototype.toString,kn=e=>Vo.call(e),Sl=e=>kn(e).slice(8,-1),Fo=e=>kn(e)==="[object Object]",or=e=>ue(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bn=sr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),is=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Cl=/-\w/g,Le=is(e=>e.replace(Cl,t=>t.slice(1).toUpperCase())),Al=/\B([A-Z])/g,Wt=is(e=>e.replace(Al,"-$1").toLowerCase()),ls=is(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ss=is(e=>e?`on${ls(e)}`:""),ct=(e,t)=>!Object.is(e,t),Un=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},jo=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},cs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},wl=e=>{const t=ue(e)?Number(e):NaN;return isNaN(t)?e:t};let Ir;const as=()=>Ir||(Ir=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ir(e){if(V(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],r=ue(s)?Ol(s):ir(s);if(r)for(const o in r)t[o]=r[o]}return t}else if(ue(e)||Z(e))return e}const xl=/;(?![^(]*\))/g,Rl=/:([^]+)/,Tl=/\/\*[^]*?\*\//g;function Ol(e){const t={};return e.replace(Tl,"").split(xl).forEach(n=>{if(n){const s=n.split(Rl);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function us(e){let t="";if(ue(e))t=e;else if(V(e))for(let n=0;n<e.length;n++){const s=us(e[n]);s&&(t+=s+" ")}else if(Z(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Pl="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Il=sr(Pl);function Bo(e){return!!e||e===""}function Nl(e,t){if(e.length!==t.length)return!1;let n=!0;for(let s=0;n&&s<e.length;s++)n=Pt(e[s],t[s]);return n}function Pt(e,t){if(e===t)return!0;let n=Pr(e),s=Pr(t);if(n||s)return n&&s?e.getTime()===t.getTime():!1;if(n=Ye(e),s=Ye(t),n||s)return e===t;if(n=V(e),s=V(t),n||s)return n&&s?Nl(e,t):!1;if(n=Z(e),s=Z(t),n||s){if(!n||!s)return!1;const r=Object.keys(e).length,o=Object.keys(t).length;if(r!==o)return!1;for(const i in e){const l=e.hasOwnProperty(i),c=t.hasOwnProperty(i);if(l&&!c||!l&&c||!Pt(e[i],t[i]))return!1}}return String(e)===String(t)}function lr(e,t){return e.findIndex(n=>Pt(n,t))}const Ho=e=>!!(e&&e.__v_isRef===!0),_t=e=>ue(e)?e:e==null?"":V(e)||Z(e)&&(e.toString===Vo||!U(e.toString))?Ho(e)?_t(e.value):JSON.stringify(e,Uo,2):String(e),Uo=(e,t)=>Ho(t)?Uo(e,t.value):en(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[Cs(s,o)+" =>"]=r,n),{})}:dn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Cs(n))}:Ye(t)?Cs(t):Z(t)&&!V(t)&&!Fo(t)?String(t):t,Cs=(e,t="")=>{var n;return Ye(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
7
- * @vue/reactivity v3.5.40
8
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
9
- * @license MIT
10
- **/let Ee;class Ll{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Ee&&(Ee.active?(this.parent=Ee,this.index=(Ee.scopes||(Ee.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){const s=this.scopes.slice();for(t=0,n=s.length;t<n;t++)s[t].pause()}for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes){const r=this.scopes.slice();for(t=0,n=r.length;t<n;t++)r[t].resume()}const s=this.effects.slice();for(t=0,n=s.length;t<n;t++)s[t].resume()}}run(t){if(this._active){const n=Ee;try{return Ee=this,t()}finally{Ee=n}}}on(){++this._on===1&&(this.prevScope=Ee,Ee=this)}off(){if(this._on>0&&--this._on===0){if(Ee===this)Ee=this.prevScope;else{let t=Ee;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(this.effects.length=0,n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){const r=this.scopes.slice();for(n=0,s=r.length;n<s;n++)r[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function kl(){return Ee}let ce;const As=new WeakSet;class $o{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Ee&&(Ee.active?Ee.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,As.has(this)&&(As.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Go(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Nr(this),Wo(this);const t=ce,n=Je;ce=this,Je=!0;try{return this.fn()}finally{qo(this),ce=t,Je=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)ur(t);this.deps=this.depsTail=void 0,Nr(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?As.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){js(this)&&this.run()}get dirty(){return js(this)}}let Ko=0,En,Sn;function Go(e,t=!1){if(e.flags|=8,t){e.next=Sn,Sn=e;return}e.next=En,En=e}function cr(){Ko++}function ar(){if(--Ko>0)return;if(Sn){let t=Sn;for(Sn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;En;){let t=En;for(En=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Wo(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function qo(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),ur(s),Dl(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function js(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Jo(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Jo(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===xn)||(e.globalVersion=xn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!js(e))))return;e.flags|=2;const t=e.dep,n=ce,s=Je;ce=e,Je=!0;try{Wo(e);const r=e.fn(e._value);(t.version===0||ct(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ce=n,Je=s,qo(e),e.flags&=-3}}function ur(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)ur(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Dl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Je=!0;const zo=[];function bt(){zo.push(Je),Je=!1}function Et(){const e=zo.pop();Je=e===void 0?!0:e}function Nr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ce;ce=void 0;try{t()}finally{ce=n}}}let xn=0;class Ml{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class fr{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ce||!Je||ce===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ce)n=this.activeLink=new Ml(ce,this),ce.deps?(n.prevDep=ce.depsTail,ce.depsTail.nextDep=n,ce.depsTail=n):ce.deps=ce.depsTail=n,Yo(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ce.depsTail,n.nextDep=void 0,ce.depsTail.nextDep=n,ce.depsTail=n,ce.deps===n&&(ce.deps=s)}return n}trigger(t){this.version++,xn++,this.notify(t)}notify(t){cr();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{ar()}}}function Yo(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Yo(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Bs=new WeakMap,Ut=Symbol(""),Hs=Symbol(""),Rn=Symbol("");function Ae(e,t,n){if(Je&&ce){let s=Bs.get(e);s||Bs.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new fr),r.map=s,r.key=n),r.track()}}function gt(e,t,n,s,r,o){const i=Bs.get(e);if(!i){xn++;return}const l=c=>{c&&c.trigger()};if(cr(),t==="clear")i.forEach(l);else{const c=V(e),u=c&&or(n);if(c&&n==="length"){const a=Number(s);i.forEach((d,p)=>{(p==="length"||p===Rn||!Ye(p)&&p>=a)&&l(d)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),u&&l(i.get(Rn)),t){case"add":c?u&&l(i.get("length")):(l(i.get(Ut)),en(e)&&l(i.get(Hs)));break;case"delete":c||(l(i.get(Ut)),en(e)&&l(i.get(Hs)));break;case"set":en(e)&&l(i.get(Ut));break}}ar()}function Yt(e){const t=q(e);return t===e?t:(Ae(t,"iterate",Rn),Ge(e)?t:t.map(Qe))}function fs(e){return Ae(e=q(e),"iterate",Rn),e}function it(e,t){return St(e)?on($t(e)?Qe(t):t):Qe(t)}const Vl={__proto__:null,[Symbol.iterator](){return ws(this,Symbol.iterator,e=>it(this,e))},concat(...e){return Yt(this).concat(...e.map(t=>V(t)?Yt(t):t))},entries(){return ws(this,"entries",e=>(e[1]=it(this,e[1]),e))},every(e,t){return ft(this,"every",e,t,void 0,arguments)},filter(e,t){return ft(this,"filter",e,t,n=>n.map(s=>it(this,s)),arguments)},find(e,t){return ft(this,"find",e,t,n=>it(this,n),arguments)},findIndex(e,t){return ft(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ft(this,"findLast",e,t,n=>it(this,n),arguments)},findLastIndex(e,t){return ft(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ft(this,"forEach",e,t,void 0,arguments)},includes(...e){return xs(this,"includes",e)},indexOf(...e){return xs(this,"indexOf",e)},join(e){return Yt(this).join(e)},lastIndexOf(...e){return xs(this,"lastIndexOf",e)},map(e,t){return ft(this,"map",e,t,void 0,arguments)},pop(){return pn(this,"pop")},push(...e){return pn(this,"push",e)},reduce(e,...t){return Lr(this,"reduce",e,t)},reduceRight(e,...t){return Lr(this,"reduceRight",e,t)},shift(){return pn(this,"shift")},some(e,t){return ft(this,"some",e,t,void 0,arguments)},splice(...e){return pn(this,"splice",e)},toReversed(){return Yt(this).toReversed()},toSorted(e){return Yt(this).toSorted(e)},toSpliced(...e){return Yt(this).toSpliced(...e)},unshift(...e){return pn(this,"unshift",e)},values(){return ws(this,"values",e=>it(this,e))}};function ws(e,t,n){const s=fs(e),r=s[t]();return s!==e&&!Ge(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=n(o.value)),o}),r}const Fl=Array.prototype;function ft(e,t,n,s,r,o){const i=fs(e),l=i!==e&&!Ge(e),c=i[t];if(c!==Fl[t]){const d=c.apply(e,o);return l?Qe(d):d}let u=n;i!==e&&(l?u=function(d,p){return n.call(this,it(e,d),p,e)}:n.length>2&&(u=function(d,p){return n.call(this,d,p,e)}));const a=c.call(i,u,s);return l&&r?r(a):a}function Lr(e,t,n,s){const r=fs(e),o=r!==e&&!Ge(e);let i=n,l=!1;r!==e&&(o?(l=s.length===0,i=function(u,a,d){return l&&(l=!1,u=it(e,u)),n.call(this,u,it(e,a),d,e)}):n.length>3&&(i=function(u,a,d){return n.call(this,u,a,d,e)}));const c=r[t](i,...s);return l?it(e,c):c}function xs(e,t,n){const s=q(e);Ae(s,"iterate",Rn);const r=s[t](...n);return(r===-1||r===!1)&&pr(n[0])?(n[0]=q(n[0]),s[t](...n)):r}function pn(e,t,n=[]){bt(),cr();const s=q(e)[t].apply(e,n);return ar(),Et(),s}const jl=sr("__proto__,__v_isRef,__isVue"),Qo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ye));function Bl(e){Ye(e)||(e=String(e));const t=q(this);return Ae(t,"has",e),t.hasOwnProperty(e)}class Xo{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?Yl:ni:o?ti:ei).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=V(t);if(!r){let c;if(i&&(c=Vl[n]))return c;if(n==="hasOwnProperty")return Bl}const l=Reflect.get(t,n,Te(t)?t:s);if((Ye(n)?Qo.has(n):jl(n))||(r||Ae(t,"get",n),o))return l;if(Te(l)){const c=i&&or(n)?l:l.value;return r&&Z(c)?$s(c):c}return Z(l)?r?$s(l):qt(l):l}}class Zo extends Xo{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];const i=V(t)&&or(n);if(!this._isShallow){const u=St(o);if(!Ge(s)&&!St(s)&&(o=q(o),s=q(s)),!i&&Te(o)&&!Te(s))return u||(o.value=s),!0}const l=i?Number(n)<t.length:X(t,n),c=Reflect.set(t,n,s,Te(t)?t:r);return t===q(r)&&c&&(l?ct(s,o)&&gt(t,"set",n,s):gt(t,"add",n,s)),c}deleteProperty(t,n){const s=X(t,n);t[n];const r=Reflect.deleteProperty(t,n);return r&&s&&gt(t,"delete",n,void 0),r}has(t,n){const s=Reflect.has(t,n);return(!Ye(n)||!Qo.has(n))&&Ae(t,"has",n),s}ownKeys(t){return Ae(t,"iterate",V(t)?"length":Ut),Reflect.ownKeys(t)}}class Hl extends Xo{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const Ul=new Zo,$l=new Hl,Kl=new Zo(!0);const Us=e=>e,Fn=e=>Reflect.getPrototypeOf(e);function Gl(e,t,n){return function(...s){const r=this.__v_raw,o=q(r),i=en(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,u=r[e](...s),a=n?Us:t?on:Qe;return!t&&Ae(o,"iterate",c?Hs:Ut),ge(Object.create(u),{next(){const{value:d,done:p}=u.next();return p?{value:d,done:p}:{value:l?[a(d[0]),a(d[1])]:a(d),done:p}}})}}function jn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Wl(e,t){const n={get(r){const o=this.__v_raw,i=q(o),l=q(r);e||(ct(r,l)&&Ae(i,"get",r),Ae(i,"get",l));const{has:c}=Fn(i),u=t?Us:e?on:Qe;if(c.call(i,r))return u(o.get(r));if(c.call(i,l))return u(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&Ae(q(r),"iterate",Ut),r.size},has(r){const o=this.__v_raw,i=q(o),l=q(r);return e||(ct(r,l)&&Ae(i,"has",r),Ae(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,c=q(l),u=t?Us:e?on:Qe;return!e&&Ae(c,"iterate",Ut),l.forEach((a,d)=>r.call(o,u(a),u(d),i))}};return ge(n,e?{add:jn("add"),set:jn("set"),delete:jn("delete"),clear:jn("clear")}:{add(r){const o=q(this),i=Fn(o),l=q(r),c=!t&&!Ge(r)&&!St(r)?l:r;return i.has.call(o,c)||ct(r,c)&&i.has.call(o,r)||ct(l,c)&&i.has.call(o,l)||(o.add(c),gt(o,"add",c,c)),this},set(r,o){!t&&!Ge(o)&&!St(o)&&(o=q(o));const i=q(this),{has:l,get:c}=Fn(i);let u=l.call(i,r);u||(r=q(r),u=l.call(i,r));const a=c.call(i,r);return i.set(r,o),u?ct(o,a)&&gt(i,"set",r,o):gt(i,"add",r,o),this},delete(r){const o=q(this),{has:i,get:l}=Fn(o);let c=i.call(o,r);c||(r=q(r),c=i.call(o,r)),l&&l.call(o,r);const u=o.delete(r);return c&&gt(o,"delete",r,void 0),u},clear(){const r=q(this),o=r.size!==0,i=r.clear();return o&&gt(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=Gl(r,e,t)}),n}function dr(e,t){const n=Wl(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(X(n,r)&&r in s?n:s,r,o)}const ql={get:dr(!1,!1)},Jl={get:dr(!1,!0)},zl={get:dr(!0,!1)};const ei=new WeakMap,ti=new WeakMap,ni=new WeakMap,Yl=new WeakMap;function Ql(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 St(e)?e:hr(e,!1,Ul,ql,ei)}function si(e){return hr(e,!1,Kl,Jl,ti)}function $s(e){return hr(e,!0,$l,zl,ni)}function hr(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=r.get(e);if(o)return o;const i=Ql(Sl(e));if(i===0)return e;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function $t(e){return St(e)?$t(e.__v_raw):!!(e&&e.__v_isReactive)}function St(e){return!!(e&&e.__v_isReadonly)}function Ge(e){return!!(e&&e.__v_isShallow)}function pr(e){return e?!!e.__v_raw:!1}function q(e){const t=e&&e.__v_raw;return t?q(t):e}function Xl(e){return!X(e,"__v_skip")&&Object.isExtensible(e)&&jo(e,"__v_skip",!0),e}const Qe=e=>Z(e)?qt(e):e,on=e=>Z(e)?$s(e):e;function Te(e){return e?e.__v_isRef===!0:!1}function ri(e){return oi(e,!1)}function Zl(e){return oi(e,!0)}function oi(e,t){return Te(e)?e:new ec(e,t)}class ec{constructor(t,n){this.dep=new fr,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:q(t),this._value=n?t:Qe(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ge(t)||St(t);t=s?t:q(t),ct(t,n)&&(this._rawValue=t,this._value=s?t:Qe(t),this.dep.trigger())}}function ye(e){return Te(e)?e.value:e}const tc={get:(e,t,n)=>t==="__v_raw"?e:ye(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return Te(r)&&!Te(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function ii(e){return $t(e)?e:new Proxy(e,tc)}class nc{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new fr(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=xn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ce!==this)return Go(this,!0),!0}get value(){const t=this.dep.track();return Jo(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function sc(e,t,n=!1){let s,r;return U(e)?s=e:(s=e.get,r=e.set),new nc(s,r,n)}const Bn={},Wn=new WeakMap;let Ft;function rc(e,t=!1,n=Ft){if(n){let s=Wn.get(n);s||Wn.set(n,s=[]),s.push(e)}}function oc(e,t,n=ie){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:c}=n,u=P=>r?P:Ge(P)||r===!1||r===0?mt(P,1):mt(P);let a,d,p,m,x=!1,A=!1;if(Te(e)?(d=()=>e.value,x=Ge(e)):$t(e)?(d=()=>u(e),x=!0):V(e)?(A=!0,x=e.some(P=>$t(P)||Ge(P)),d=()=>e.map(P=>{if(Te(P))return P.value;if($t(P))return u(P);if(U(P))return c?c(P,2):P()})):U(e)?t?d=c?()=>c(e,2):e:d=()=>{if(p){bt();try{p()}finally{Et()}}const P=Ft;Ft=a;try{return c?c(e,3,[m]):e(m)}finally{Ft=P}}:d=at,t&&r){const P=d,K=r===!0?1/0:r;d=()=>mt(P(),K)}const j=kl(),M=()=>{a.stop(),j&&j.active&&rr(j.effects,a)};if(o&&t){const P=t;t=(...K)=>{const ee=P(...K);return M(),ee}}let T=A?new Array(e.length).fill(Bn):Bn;const L=P=>{if(!(!(a.flags&1)||!a.dirty&&!P))if(t){const K=a.run();if(P||r||x||(A?K.some((ee,te)=>ct(ee,T[te])):ct(K,T))){p&&p();const ee=Ft;Ft=a;try{const te=[K,T===Bn?void 0:A&&T[0]===Bn?[]:T,m];T=K,c?c(t,3,te):t(...te)}finally{Ft=ee}}}else a.run()};return l&&l(L),a=new $o(d),a.scheduler=i?()=>i(L,!1):L,m=P=>rc(P,!1,a),p=a.onStop=()=>{const P=Wn.get(a);if(P){if(c)c(P,4);else for(const K of P)K();Wn.delete(a)}},t?s?L(!0):T=a.run():i?i(L.bind(null,!0),!0):a.run(),M.pause=a.pause.bind(a),M.resume=a.resume.bind(a),M.stop=M,M}function mt(e,t=1/0,n){if(t<=0||!Z(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Te(e))mt(e.value,t,n);else if(V(e))for(let s=0;s<e.length;s++)mt(e[s],t,n);else if(dn(e)||en(e))e.forEach(s=>{mt(s,t,n)});else if(Fo(e)){for(const s in e)mt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&mt(e[s],t,n)}return e}/**
11
- * @vue/runtime-core v3.5.40
12
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
13
- * @license MIT
14
- **/function Dn(e,t,n,s){try{return s?e(...s):e()}catch(r){ds(r,t,n)}}function qe(e,t,n,s){if(U(e)){const r=Dn(e,t,n,s);return r&&Mo(r)&&r.catch(o=>{ds(o,t,n)}),r}if(V(e)){const r=[];for(let o=0;o<e.length;o++)r.push(qe(e[o],t,n,s));return r}}function ds(e,t,n,s=!0){const r=t?t.vnode:null,{errorHandler:o,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||ie;if(t){let l=t.parent;const c=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${n}`;for(;l;){const a=l.ec;if(a){for(let d=0;d<a.length;d++)if(a[d](e,c,u)===!1)return}l=l.parent}if(o){bt(),Dn(o,null,10,[e,c,u]),Et();return}}ic(e,n,r,s,i)}function ic(e,t,n,s=!0,r=!1){if(r)throw e;console.error(e)}const Ie=[];let ot=-1;const tn=[];let Tt=null,Qt=0;const li=Promise.resolve();let qn=null;function gr(e){const t=qn||li;return e?t.then(this?e.bind(this):e):t}function lc(e){let t=ot+1,n=Ie.length;for(;t<n;){const s=t+n>>>1,r=Ie[s],o=Tn(r);o<e||o===e&&r.flags&2?t=s+1:n=s}return t}function mr(e){if(!(e.flags&1)){const t=Tn(e),n=Ie[Ie.length-1];!n||!(e.flags&2)&&t>=Tn(n)?Ie.push(e):Ie.splice(lc(t),0,e),e.flags|=1,ci()}}function ci(){qn||(qn=li.then(ui))}function cc(e){V(e)?tn.push(...e):Tt&&e.id===-1?Tt.splice(Qt+1,0,e):e.flags&1||(tn.push(e),e.flags|=1),ci()}function kr(e,t,n=ot+1){for(;n<Ie.length;n++){const s=Ie[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;Ie.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function ai(e){if(tn.length){const t=[...new Set(tn)].sort((n,s)=>Tn(n)-Tn(s));if(tn.length=0,Tt){Tt.push(...t);return}for(Tt=t,Qt=0;Qt<Tt.length;Qt++){const n=Tt[Qt];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}Tt=null,Qt=0}}const Tn=e=>e.id==null?e.flags&2?-1:1/0:e.id;function ui(e){try{for(ot=0;ot<Ie.length;ot++){const t=Ie[ot];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Dn(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;ot<Ie.length;ot++){const t=Ie[ot];t&&(t.flags&=-2)}ot=-1,Ie.length=0,ai(),qn=null,(Ie.length||tn.length)&&ui()}}let Se=null,fi=null;function Jn(e){const t=Se;return Se=e,fi=e&&e.type.__scopeId||null,t}function Be(e,t=Se,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Qn(-1);const o=Jn(t),i=yt.length;let l;try{l=e(...r)}finally{for(let c=yt.length;c>i;c--)br();Jn(o),s._d&&Qn(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function kf(e,t){if(Se===null)return e;const n=ys(Se),s=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[o,i,l,c=ie]=t[r];o&&(U(o)&&(o={mounted:o,updated:o}),o.deep&&mt(i),s.push({dir:o,instance:n,value:i,oldValue:void 0,arg:l,modifiers:c}))}return e}function Dt(e,t,n,s){const r=e.dirs,o=t&&t.dirs;for(let i=0;i<r.length;i++){const l=r[i];o&&(l.oldValue=o[i].value);let c=l.dir[s];c&&(bt(),qe(c,n,8,[e.el,l,e,t]),Et())}}function $n(e,t){if(Re){let n=Re.provides;const s=Re.parent&&Re.parent.provides;s===n&&(n=Re.provides=Object.create(s)),n[e]=t}}function ze(e,t,n=!1){const s=Er();if(s||sn){let r=sn?sn._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return n&&U(t)?t.call(s&&s.proxy):t}}const ac=Symbol.for("v-scx"),uc=()=>ze(ac);function Kt(e,t,n){return di(e,t,n)}function di(e,t,n=ie){const{immediate:s,deep:r,flush:o,once:i}=n,l=ge({},n),c=t&&s||!t&&o!=="post";let u;if(Nn){if(o==="sync"){const m=uc();u=m.__watcherHandles||(m.__watcherHandles=[])}else if(!c){const m=()=>{};return m.stop=at,m.resume=at,m.pause=at,m}}const a=Re;l.call=(m,x,A)=>qe(m,a,x,A);let d=!1;o==="post"?l.scheduler=m=>{Me(m,a&&a.suspense)}:o!=="sync"&&(d=!0,l.scheduler=(m,x)=>{x?m():mr(m)}),l.augmentJob=m=>{t&&(m.flags|=4),d&&(m.flags|=2,a&&(m.id=a.uid,m.i=a))};const p=oc(e,t,l);return Nn&&(u?u.push(p):c&&p()),p}function fc(e,t,n){const s=this.proxy,r=ue(e)?e.includes(".")?hi(s,e):()=>s[e]:e.bind(s,s);let o;U(t)?o=t:(o=t.handler,n=t);const i=Vn(this),l=di(r,o.bind(s),n);return i(),l}function hi(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r<n.length&&s;r++)s=s[n[r]];return s}}const dc=Symbol("_vte"),pi=e=>e.__isTeleport,Ke=Symbol("_leaveCb"),gn=Symbol("_enterCb");function gi(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return gs(()=>{e.isMounted=!0}),Ci(()=>{e.isUnmounting=!0}),e}const $e=[Function,Array],mi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:$e,onEnter:$e,onAfterEnter:$e,onEnterCancelled:$e,onBeforeLeave:$e,onLeave:$e,onAfterLeave:$e,onLeaveCancelled:$e,onBeforeAppear:$e,onAppear:$e,onAfterAppear:$e,onAppearCancelled:$e},vi=e=>{const t=e.subTree;return t.component?vi(t.component):t},hc={name:"BaseTransition",props:mi,setup(e,{slots:t}){const n=Er(),s=gi();return()=>{const r=t.default&&vr(t.default(),!0),o=r&&r.length?_i(r):n.subTree?Bt():void 0;if(!o)return;const i=q(e),{mode:l}=i;if(s.isLeaving)return Rs(o);const c=Dr(o);if(!c)return Rs(o);let u=On(c,i,s,n,d=>u=d);c.type!==xe&&Gt(c,u);let a=n.subTree&&Dr(n.subTree);if(a&&a.type!==xe&&!jt(a,c)&&vi(n).type!==xe){let d=On(a,i,s,n);if(Gt(a,d),l==="out-in"&&c.type!==xe)return s.isLeaving=!0,d.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete d.afterLeave,a=void 0},Rs(o);l==="in-out"&&c.type!==xe?d.delayLeave=(p,m,x)=>{const A=yi(s,a);A[String(a.key)]=a,p[Ke]=()=>{m(),p[Ke]=void 0,delete u.delayedLeave,a=void 0},u.delayedLeave=()=>{x(),delete u.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return o}}};function _i(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==xe){t=n;break}}return t}const pc=hc;function yi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function On(e,t,n,s,r){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:u,onAfterEnter:a,onEnterCancelled:d,onBeforeLeave:p,onLeave:m,onAfterLeave:x,onLeaveCancelled:A,onBeforeAppear:j,onAppear:M,onAfterAppear:T,onAppearCancelled:L}=t,P=String(e.key),K=yi(n,e),ee=($,J)=>{$&&qe($,s,9,J)},te=($,J)=>{const le=J[1];ee($,J),V($)?$.every(I=>I.length<=1)&&le():$.length<=1&&le()},Ce={mode:i,persisted:l,beforeEnter($){let J=c;if(!n.isMounted)if(o)J=j||c;else return;$[Ke]&&$[Ke](!0);const le=K[P];le&&jt(e,le)&&le.el[Ke]&&le.el[Ke](),ee(J,[$])},enter($){if(K[P]===e)return;let J=u,le=a,I=d;if(!n.isMounted)if(o)J=M||u,le=T||a,I=L||d;else return;let z=!1;$[gn]=Fe=>{z||(z=!0,Fe?ee(I,[$]):ee(le,[$]),Ce.delayedLeave&&Ce.delayedLeave(),$[gn]=void 0)};const _e=$[gn].bind(null,!1);J?te(J,[$,_e]):_e()},leave($,J){const le=String(e.key);if($[gn]&&$[gn](!0),n.isUnmounting)return J();ee(p,[$]);let I=!1;$[Ke]=_e=>{I||(I=!0,J(),_e?ee(A,[$]):ee(x,[$]),$[Ke]=void 0,K[le]===e&&delete K[le])};const z=$[Ke].bind(null,!1);K[le]=e,m?te(m,[$,z]):z()},clone($){const J=On($,t,n,s,r);return r&&r(J),J}};return Ce}function Rs(e){if(hs(e))return e=It(e),e.children=null,e}function Dr(e){if(!hs(e))return pi(e.type)&&e.children?_i(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&U(n.default))return n.default()}}function Gt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Gt(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 vr(e,t=!1,n){let s=[],r=0;for(let o=0;o<e.length;o++){let i=e[o];const l=n==null?i.key:String(n)+String(i.key!=null?i.key:o);i.type===ve?(i.patchFlag&128&&r++,s=s.concat(vr(i.children,t,l))):(t||i.type!==xe)&&s.push(l!=null?It(i,{key:l}):i)}if(r>1)for(let o=0;o<s.length;o++)s[o].patchFlag=-2;return s}function Mn(e,t){return U(e)?ge({name:e.name},t,{setup:e}):e}function bi(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Mr(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const zn=new WeakMap;function Cn(e,t,n,s,r=!1){if(V(e)){e.forEach((A,j)=>Cn(A,t&&(V(t)?t[j]:t),n,s,r));return}if(nn(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Cn(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?ys(s.component):s.el,i=r?null:o,{i:l,r:c}=e,u=t&&t.r,a=l.refs===ie?l.refs={}:l.refs,d=l.setupState,p=q(d),m=d===ie?Do:A=>Mr(a,A)?!1:X(p,A),x=(A,j)=>!(j&&Mr(a,j));if(u!=null&&u!==c){if(Vr(t),ue(u))a[u]=null,m(u)&&(d[u]=null);else if(Te(u)){const A=t;x(u,A.k)&&(u.value=null),A.k&&(a[A.k]=null)}}if(U(c))Dn(c,l,12,[i,a]);else{const A=ue(c),j=Te(c);if(A||j){const M=()=>{if(e.f){const T=A?m(c)?d[c]:a[c]:x()||!e.k?c.value:a[e.k];if(r)V(T)&&rr(T,o);else if(V(T))T.includes(o)||T.push(o);else if(A)a[c]=[o],m(c)&&(d[c]=a[c]);else{const L=[o];x(c,e.k)&&(c.value=L),e.k&&(a[e.k]=L)}}else A?(a[c]=i,m(c)&&(d[c]=i)):j&&(x(c,e.k)&&(c.value=i),e.k&&(a[e.k]=i))};if(i){const T=()=>{M(),zn.delete(e)};T.id=-1,zn.set(e,T),Me(T,n)}else Vr(e),M()}}}function Vr(e){const t=zn.get(e);t&&(t.flags|=8,zn.delete(e))}as().requestIdleCallback;as().cancelIdleCallback;const nn=e=>!!e.type.__asyncLoader,hs=e=>e.type.__isKeepAlive;function gc(e,t){Ei(e,"a",t)}function mc(e,t){Ei(e,"da",t)}function Ei(e,t,n=Re){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(ps(t,s,n),n){let r=n.parent;for(;r&&r.parent;)hs(r.parent.vnode)&&vc(s,t,n,r),r=r.parent}}function vc(e,t,n,s){const r=ps(t,e,s,!0);ms(()=>{rr(s[t],r)},n)}function ps(e,t,n=Re,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{bt();const l=Vn(n),c=qe(t,n,e,i);return l(),Et(),c});return s?r.unshift(o):r.push(o),o}}const Ct=e=>(t,n=Re)=>{(!Nn||e==="sp")&&ps(e,(...s)=>t(...s),n)},_c=Ct("bm"),gs=Ct("m"),yc=Ct("bu"),Si=Ct("u"),Ci=Ct("bum"),ms=Ct("um"),bc=Ct("sp"),Ec=Ct("rtg"),Sc=Ct("rtc");function Cc(e,t=Re){ps("ec",e,t)}const Ai="components";function Ks(e,t){return xi(Ai,e,!0,t)||e}const wi=Symbol.for("v-ndc");function Ac(e){return ue(e)?xi(Ai,e,!1)||e:e||wi}function xi(e,t,n=!0,s=!1){const r=Se||Re;if(r){const o=r.type;{const l=la(o,!1);if(l&&(l===t||l===Le(t)||l===ls(Le(t))))return o}const i=Fr(r[e]||o[e],t)||Fr(r.appContext[e],t);return!i&&s?o:i}}function Fr(e,t){return e&&(e[t]||e[Le(t)]||e[ls(Le(t))])}function Gs(e,t,n,s){let r;const o=n,i=V(e);if(i||ue(e)){const l=i&&$t(e);let c=!1,u=!1;l&&(c=!Ge(e),u=St(e),e=fs(e)),r=new Array(e.length);for(let a=0,d=e.length;a<d;a++)r[a]=t(c?u?on(Qe(e[a])):Qe(e[a]):e[a],a,void 0,o)}else if(typeof e=="number"){r=new Array(e);for(let l=0;l<e;l++)r[l]=t(l+1,l,void 0,o)}else if(Z(e))if(e[Symbol.iterator])r=Array.from(e,(l,c)=>t(l,c,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,u=l.length;c<u;c++){const a=l[c];r[c]=t(e[a],a,c,o)}}else r=[];return r}function Df(e,t,n={},s,r,o){if(Se.ce||Se.parent&&nn(Se.parent)&&Se.parent.ce){const u=n,a=Object.keys(u).length>0;return pe(),ln(ve,null,[re("slot",u,s)],a?-2:64)}let i=e[t];i&&i._c&&(i._d=!1);const l=yt.length;pe();let c;try{const u=i&&Ri(i(n)),a=n.key||o||u&&u.key;c=ln(ve,{key:(a&&!Ye(a)?a:`_${t}`)+(!u&&s?"_fb":"")},u||(s?s():[]),u&&e._===1?64:-2)}catch(u){for(let a=yt.length;a>l;a--)br();throw u}finally{i&&i._c&&(i._d=!0)}return c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),c}function Ri(e){return e.some(t=>In(t)?!(t.type===xe||t.type===ve&&!Ri(t.children)):!0)?e:null}const Ws=e=>e?qi(e)?ys(e):Ws(e.parent):null,An=ge(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=>Ws(e.parent),$root:e=>Ws(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Oi(e),$forceUpdate:e=>e.f||(e.f=()=>{mr(e.update)}),$nextTick:e=>e.n||(e.n=gr.bind(e.proxy)),$watch:e=>fc.bind(e)}),Ts=(e,t)=>e!==ie&&!e.__isScriptSetup&&X(e,t),wc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;if(t[0]!=="$"){const p=i[t];if(p!==void 0)switch(p){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(Ts(s,t))return i[t]=1,s[t];if(r!==ie&&X(r,t))return i[t]=2,r[t];if(X(o,t))return i[t]=3,o[t];if(n!==ie&&X(n,t))return i[t]=4,n[t];qs&&(i[t]=0)}}const u=An[t];let a,d;if(u)return t==="$attrs"&&Ae(e.attrs,"get",""),u(e);if((a=l.__cssModules)&&(a=a[t]))return a;if(n!==ie&&X(n,t))return i[t]=4,n[t];if(d=c.config.globalProperties,X(d,t))return d[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return Ts(r,t)?(r[t]=n,!0):s!==ie&&X(s,t)?(s[t]=n,!0):X(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:o,type:i}},l){let c;return!!(n[l]||e!==ie&&l[0]!=="$"&&X(e,l)||Ts(t,l)||X(o,l)||X(s,l)||X(An,l)||X(r.config.globalProperties,l)||(c=i.__cssModules)&&c[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:X(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function jr(e){return V(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let qs=!0;function xc(e){const t=Oi(e),n=e.proxy,s=e.ctx;qs=!1,t.beforeCreate&&Br(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:u,created:a,beforeMount:d,mounted:p,beforeUpdate:m,updated:x,activated:A,deactivated:j,beforeDestroy:M,beforeUnmount:T,destroyed:L,unmounted:P,render:K,renderTracked:ee,renderTriggered:te,errorCaptured:Ce,serverPrefetch:$,expose:J,inheritAttrs:le,components:I,directives:z,filters:_e}=t;if(u&&Rc(u,s,null),i)for(const ne in i){const Y=i[ne];U(Y)&&(s[ne]=Y.bind(n))}if(r){const ne=r.call(n,n);Z(ne)&&(e.data=qt(ne))}if(qs=!0,o)for(const ne in o){const Y=o[ne],ut=U(Y)?Y.bind(n,n):U(Y.get)?Y.get.bind(n,n):at,At=!U(Y)&&U(Y.set)?Y.set.bind(n):at,Ze=Ne({get:ut,set:At});Object.defineProperty(s,ne,{enumerable:!0,configurable:!0,get:()=>Ze.value,set:ke=>Ze.value=ke})}if(l)for(const ne in l)Ti(l[ne],s,n,ne);if(c){const ne=U(c)?c.call(n):c;Reflect.ownKeys(ne).forEach(Y=>{$n(Y,ne[Y])})}a&&Br(a,e,"c");function de(ne,Y){V(Y)?Y.forEach(ut=>ne(ut.bind(n))):Y&&ne(Y.bind(n))}if(de(_c,d),de(gs,p),de(yc,m),de(Si,x),de(gc,A),de(mc,j),de(Cc,Ce),de(Sc,ee),de(Ec,te),de(Ci,T),de(ms,P),de(bc,$),V(J))if(J.length){const ne=e.exposed||(e.exposed={});J.forEach(Y=>{Object.defineProperty(ne,Y,{get:()=>n[Y],set:ut=>n[Y]=ut,enumerable:!0})})}else e.exposed||(e.exposed={});K&&e.render===at&&(e.render=K),le!=null&&(e.inheritAttrs=le),I&&(e.components=I),z&&(e.directives=z),$&&bi(e)}function Rc(e,t,n=at){V(e)&&(e=Js(e));for(const s in e){const r=e[s];let o;Z(r)?"default"in r?o=ze(r.from||s,r.default,!0):o=ze(r.from||s):o=ze(r),Te(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function Br(e,t,n){qe(V(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ti(e,t,n,s){let r=s.includes(".")?hi(n,s):()=>n[s];if(ue(e)){const o=t[e];U(o)&&Kt(r,o)}else if(U(e))Kt(r,e.bind(n));else if(Z(e))if(V(e))e.forEach(o=>Ti(o,t,n,s));else{const o=U(e.handler)?e.handler.bind(n):t[e.handler];U(o)&&Kt(r,o,e)}}function Oi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(u=>Yn(c,u,i,!0)),Yn(c,t,i)),Z(t)&&o.set(t,c),c}function Yn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Yn(e,o,n,!0),r&&r.forEach(i=>Yn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=Tc[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Tc={data:Hr,props:Ur,emits:Ur,methods:_n,computed:_n,beforeCreate:Oe,created:Oe,beforeMount:Oe,mounted:Oe,beforeUpdate:Oe,updated:Oe,beforeDestroy:Oe,beforeUnmount:Oe,destroyed:Oe,unmounted:Oe,activated:Oe,deactivated:Oe,errorCaptured:Oe,serverPrefetch:Oe,components:_n,directives:_n,watch:Pc,provide:Hr,inject:Oc};function Hr(e,t){return t?e?function(){return ge(U(e)?e.call(this,this):e,U(t)?t.call(this,this):t)}:t:e}function Oc(e,t){return _n(Js(e),Js(t))}function Js(e){if(V(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function Oe(e,t){return e?[...new Set([].concat(e,t))]:t}function _n(e,t){return e?ge(Object.create(null),e,t):t}function Ur(e,t){return e?V(e)&&V(t)?[...new Set([...e,...t])]:ge(Object.create(null),jr(e),jr(t??{})):t}function Pc(e,t){if(!e)return t;if(!t)return e;const n=ge(Object.create(null),e);for(const s in t)n[s]=Oe(e[s],t[s]);return n}function Pi(){return{app:null,config:{isNativeTag:Do,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Ic=0;function Nc(e,t){return function(s,r=null){U(s)||(s=ge({},s)),r!=null&&!Z(r)&&(r=null);const o=Pi(),i=new WeakSet,l=[];let c=!1;const u=o.app={_uid:Ic++,_component:s,_props:r,_container:null,_context:o,_instance:null,version:aa,get config(){return o.config},set config(a){},use(a,...d){return i.has(a)||(a&&U(a.install)?(i.add(a),a.install(u,...d)):U(a)&&(i.add(a),a(u,...d))),u},mixin(a){return o.mixins.includes(a)||o.mixins.push(a),u},component(a,d){return d?(o.components[a]=d,u):o.components[a]},directive(a,d){return d?(o.directives[a]=d,u):o.directives[a]},mount(a,d,p){if(!c){const m=u._ceVNode||re(s,r);return m.appContext=o,p===!0?p="svg":p===!1&&(p=void 0),e(m,a,p),c=!0,u._container=a,a.__vue_app__=u,ys(m.component)}},onUnmount(a){l.push(a)},unmount(){c&&(qe(l,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(a,d){return o.provides[a]=d,u},runWithContext(a){const d=sn;sn=u;try{return a()}finally{sn=d}}};return u}}let sn=null;const Lc=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${Wt(t)}Modifiers`];function kc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ie;let r=n;const o=t.startsWith("update:"),i=o&&Lc(s,t.slice(7));i&&(i.trim&&(r=n.map(a=>ue(a)?a.trim():a)),i.number&&(r=n.map(cs)));let l,c=s[l=Ss(t)]||s[l=Ss(Le(t))];!c&&o&&(c=s[l=Ss(Wt(t))]),c&&qe(c,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,qe(u,e,6,r)}}const Dc=new WeakMap;function Ii(e,t,n=!1){const s=n?Dc:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!U(e)){const c=u=>{const a=Ii(u,t,!0);a&&(l=!0,ge(i,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&s.set(e,null),null):(V(o)?o.forEach(c=>i[c]=null):ge(i,o),Z(e)&&s.set(e,i),i)}function vs(e,t){return!e||!rs(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),X(e,t[0].toLowerCase()+t.slice(1))||X(e,Wt(t))||X(e,t))}function $r(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:c,render:u,renderCache:a,props:d,data:p,setupState:m,ctx:x,inheritAttrs:A}=e,j=Jn(e);let M,T;try{if(n.shapeFlag&4){const P=r||s,K=P;M=lt(u.call(K,P,a,d,m,p,x)),T=l}else{const P=t;M=lt(P.length>1?P(d,{attrs:l,slots:i,emit:c}):P(d,null)),T=t.props?l:Mc(l)}}catch(P){yt.length=0,ds(P,e,1),M=re(xe)}let L=M;if(T&&A!==!1){const P=Object.keys(T),{shapeFlag:K}=L;P.length&&K&7&&(o&&P.some(os)&&(T=Vc(T,o)),L=It(L,T,!1,!0))}return n.dirs&&(L=It(L,null,!1,!0),L.dirs=L.dirs?L.dirs.concat(n.dirs):n.dirs),n.transition&&Gt(L,n.transition),M=L,Jn(j),M}const Mc=e=>{let t;for(const n in e)(n==="class"||n==="style"||rs(n))&&((t||(t={}))[n]=e[n]);return t},Vc=(e,t)=>{const n={};for(const s in e)(!os(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Fc(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Kr(s,i,u):!!i;if(c&8){const a=t.dynamicProps;for(let d=0;d<a.length;d++){const p=a[d];if(Ni(i,s,p)&&!vs(u,p))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:s===i?!1:s?i?Kr(s,i,u):!0:!!i;return!1}function Kr(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let r=0;r<s.length;r++){const o=s[r];if(Ni(t,e,o)&&!vs(n,o))return!0}return!1}function Ni(e,t,n){const s=e[n],r=t[n];return n==="style"&&Z(s)&&Z(r)?!Pt(s,r):s!==r}function jc({vnode:e,parent:t,suspense:n},s){for(;t;){const r=t.subTree;if(r.suspense&&r.suspense.activeBranch===e&&(r.suspense.vnode.el=r.el=s,e=r),r===e)(e=t.vnode).el=s,t=t.parent;else break}n&&n.activeBranch===e&&(n.vnode.el=s)}const Li={},ki=()=>Object.create(Li),Di=e=>Object.getPrototypeOf(e)===Li;function Bc(e,t,n,s=!1){const r={},o=ki();e.propsDefaults=Object.create(null),Mi(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:si(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function Hc(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=q(r),[c]=e.propsOptions;let u=!1;if((s||i>0)&&!(i&16)){if(i&8){const a=e.vnode.dynamicProps;for(let d=0;d<a.length;d++){let p=a[d];if(vs(e.emitsOptions,p))continue;const m=t[p];if(c)if(X(o,p))m!==o[p]&&(o[p]=m,u=!0);else{const x=Le(p);r[x]=zs(c,l,x,m,e,!1)}else m!==o[p]&&(o[p]=m,u=!0)}}}else{Mi(e,t,r,o)&&(u=!0);let a;for(const d in l)(!t||!X(t,d)&&((a=Wt(d))===d||!X(t,a)))&&(c?n&&(n[d]!==void 0||n[a]!==void 0)&&(r[d]=zs(c,l,d,void 0,e,!0)):delete r[d]);if(o!==l)for(const d in o)(!t||!X(t,d))&&(delete o[d],u=!0)}u&&gt(e.attrs,"set","")}function Mi(e,t,n,s){const[r,o]=e.propsOptions;let i=!1,l;if(t)for(let c in t){if(bn(c))continue;const u=t[c];let a;r&&X(r,a=Le(c))?!o||!o.includes(a)?n[a]=u:(l||(l={}))[a]=u:vs(e.emitsOptions,c)||(!(c in s)||u!==s[c])&&(s[c]=u,i=!0)}if(o){const c=q(n),u=l||ie;for(let a=0;a<o.length;a++){const d=o[a];n[d]=zs(r,c,d,u[d],e,!X(u,d))}}return i}function zs(e,t,n,s,r,o){const i=e[n];if(i!=null){const l=X(i,"default");if(l&&s===void 0){const c=i.default;if(i.type!==Function&&!i.skipFactory&&U(c)){const{propsDefaults:u}=r;if(n in u)s=u[n];else{const a=Vn(r);s=u[n]=c.call(null,t),a()}}else s=c;r.ce&&r.ce._setProp(n,s)}i[0]&&(o&&!l?s=!1:i[1]&&(s===""||s===Wt(n))&&(s=!0))}return s}const Uc=new WeakMap;function Vi(e,t,n=!1){const s=n?Uc:t.propsCache,r=s.get(e);if(r)return r;const o=e.props,i={},l=[];let c=!1;if(!U(e)){const a=d=>{c=!0;const[p,m]=Vi(d,t,!0);ge(i,p),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!o&&!c)return Z(e)&&s.set(e,Zt),Zt;if(V(o))for(let a=0;a<o.length;a++){const d=Le(o[a]);Gr(d)&&(i[d]=ie)}else if(o)for(const a in o){const d=Le(a);if(Gr(d)){const p=o[a],m=i[d]=V(p)||U(p)?{type:p}:ge({},p),x=m.type;let A=!1,j=!0;if(V(x))for(let M=0;M<x.length;++M){const T=x[M],L=U(T)&&T.name;if(L==="Boolean"){A=!0;break}else L==="String"&&(j=!1)}else A=U(x)&&x.name==="Boolean";m[0]=A,m[1]=j,(A||X(m,"default"))&&l.push(d)}}const u=[i,l];return Z(e)&&s.set(e,u),u}function Gr(e){return e[0]!=="$"&&!bn(e)}const _r=e=>e==="_"||e==="_ctx"||e==="$stable",yr=e=>V(e)?e.map(lt):[lt(e)],$c=(e,t,n)=>{if(t._n)return t;const s=Be((...r)=>yr(t(...r)),n);return s._c=!1,s},Fi=(e,t,n)=>{const s=e._ctx;for(const r in e){if(_r(r))continue;const o=e[r];if(U(o))t[r]=$c(r,o,s);else if(o!=null){const i=yr(o);t[r]=()=>i}}},ji=(e,t)=>{const n=yr(t);e.slots.default=()=>n},Bi=(e,t,n)=>{for(const s in t)(n||!_r(s))&&(e[s]=t[s])},Kc=(e,t,n)=>{const s=e.slots=ki();if(e.vnode.shapeFlag&32){const r=t._;r?(Bi(s,t,n),n&&jo(s,"_",r,!0)):Fi(t,s)}else t&&ji(e,t)},Gc=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=ie;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:Bi(r,t,n):(o=!t.$stable,Fi(t,r)),i=t}else t&&(ji(e,t),i={default:1});if(o)for(const l in r)!_r(l)&&i[l]==null&&delete r[l]},Me=Yc;function Wc(e){return qc(e)}function qc(e,t){const n=as();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:u,setElementText:a,parentNode:d,nextSibling:p,setScopeId:m=at,insertStaticContent:x}=e,A=(f,h,g,_=null,b=null,v=null,w=void 0,C=null,S=!!h.dynamicChildren)=>{if(f===h)return;f&&!jt(f,h)&&(_=y(f),ke(f,b,v,!0),f=null),h.patchFlag===-2&&(S=!1,h.dynamicChildren=null);const{type:E,ref:F,shapeFlag:O}=h;switch(E){case _s:j(f,h,g,_);break;case xe:M(f,h,g,_);break;case Kn:f==null&&T(h,g,_,w);break;case ve:I(f,h,g,_,b,v,w,C,S);break;default:O&1?K(f,h,g,_,b,v,w,C,S):O&6?z(f,h,g,_,b,v,w,C,S):(O&64||O&128)&&E.process(f,h,g,_,b,v,w,C,S,k)}F!=null&&b?Cn(F,f&&f.ref,v,h||f,!h):F==null&&f&&f.ref!=null&&Cn(f.ref,null,v,f,!0)},j=(f,h,g,_)=>{if(f==null)s(h.el=l(h.children),g,_);else{const b=h.el=f.el;h.children!==f.children&&u(b,h.children)}},M=(f,h,g,_)=>{f==null?s(h.el=c(h.children||""),g,_):h.el=f.el},T=(f,h,g,_)=>{[f.el,f.anchor]=x(f.children,h,g,_,f.el,f.anchor)},L=({el:f,anchor:h},g,_)=>{let b;for(;f&&f!==h;)b=p(f),s(f,g,_),f=b;s(h,g,_)},P=({el:f,anchor:h})=>{let g;for(;f&&f!==h;)g=p(f),r(f),f=g;r(h)},K=(f,h,g,_,b,v,w,C,S)=>{if(h.type==="svg"?w="svg":h.type==="math"&&(w="mathml"),f==null)ee(h,g,_,b,v,w,C,S);else{const E=f.el&&f.el._isVueCE?f.el:null;try{E&&E._beginPatch(),$(f,h,b,v,w,C,S)}finally{E&&E._endPatch()}}},ee=(f,h,g,_,b,v,w,C)=>{let S,E;const{props:F,shapeFlag:O,transition:D,dirs:B}=f;if(S=f.el=i(f.type,v,F&&F.is,F),O&8?a(S,f.children):O&16&&Ce(f.children,S,null,_,b,Os(f,v),w,C),B&&Dt(f,null,_,"created"),te(S,f,f.scopeId,w,_),F){for(const oe in F)oe!=="value"&&!bn(oe)&&o(S,oe,null,F[oe],v,_);"value"in F&&o(S,"value",null,F.value,v),(E=F.onVnodeBeforeMount)&&st(E,_,f)}B&&Dt(f,null,_,"beforeMount");const W=Jc(b,D);W&&D.beforeEnter(S),s(S,h,g),((E=F&&F.onVnodeMounted)||W||B)&&Me(()=>{try{E&&st(E,_,f),W&&D.enter(S),B&&Dt(f,null,_,"mounted")}finally{}},b)},te=(f,h,g,_,b)=>{if(g&&m(f,g),_)for(let v=0;v<_.length;v++)m(f,_[v]);if(b){let v=b.subTree;if(h===v||Ki(v.type)&&(v.ssContent===h||v.ssFallback===h)){const w=b.vnode;te(f,w,w.scopeId,w.slotScopeIds,b.parent)}}},Ce=(f,h,g,_,b,v,w,C,S=0)=>{for(let E=S;E<f.length;E++){const F=f[E]=C?pt(f[E]):lt(f[E]);A(null,F,h,g,_,b,v,w,C)}},$=(f,h,g,_,b,v,w)=>{const C=h.el=f.el;let{patchFlag:S,dynamicChildren:E,dirs:F}=h;S|=f.patchFlag&16;const O=f.props||ie,D=h.props||ie;let B;if(g&&Mt(g,!1),(B=D.onVnodeBeforeUpdate)&&st(B,g,h,f),F&&Dt(h,f,g,"beforeUpdate"),g&&Mt(g,!0),E&&(!f.dynamicChildren||f.dynamicChildren.length!==E.length)&&(S=0,w=!1,E=null),(O.innerHTML&&D.innerHTML==null||O.textContent&&D.textContent==null)&&a(C,""),E?J(f.dynamicChildren,E,C,g,_,Os(h,b),v):w||Y(f,h,C,null,g,_,Os(h,b),v,!1),S>0){if(S&16)le(C,O,D,g,b);else if(S&2&&O.class!==D.class&&o(C,"class",null,D.class,b),S&4&&o(C,"style",O.style,D.style,b),S&8){const W=h.dynamicProps;for(let oe=0;oe<W.length;oe++){const se=W[oe],he=O[se],be=D[se];(be!==he||se==="value")&&o(C,se,he,be,b,g)}}S&1&&f.children!==h.children&&a(C,h.children)}else!w&&E==null&&le(C,O,D,g,b);((B=D.onVnodeUpdated)||F)&&Me(()=>{B&&st(B,g,h,f),F&&Dt(h,f,g,"updated")},_)},J=(f,h,g,_,b,v,w)=>{for(let C=0;C<h.length;C++){const S=f[C],E=h[C],F=S.el&&(S.type===ve||!jt(S,E)||S.shapeFlag&198)?d(S.el):g;A(S,E,F,null,_,b,v,w,!0)}},le=(f,h,g,_,b)=>{if(h!==g){if(h!==ie)for(const v in h)!bn(v)&&!(v in g)&&o(f,v,h[v],null,b,_);for(const v in g){if(bn(v))continue;const w=g[v],C=h[v];w!==C&&v!=="value"&&o(f,v,C,w,b,_)}"value"in g&&o(f,"value",h.value,g.value,b)}},I=(f,h,g,_,b,v,w,C,S)=>{const E=h.el=f?f.el:l(""),F=h.anchor=f?f.anchor:l("");let{patchFlag:O,dynamicChildren:D,slotScopeIds:B}=h;B&&(C=C?C.concat(B):B),f==null?(s(E,g,_),s(F,g,_),Ce(h.children||[],g,F,b,v,w,C,S)):O>0&&O&64&&D&&f.dynamicChildren&&f.dynamicChildren.length===D.length?(J(f.dynamicChildren,D,g,b,v,w,C),(h.key!=null||b&&h===b.subTree)&&Hi(f,h,!0)):Y(f,h,g,F,b,v,w,C,S)},z=(f,h,g,_,b,v,w,C,S)=>{h.slotScopeIds=C,f==null?h.shapeFlag&512?b.ctx.activate(h,g,_,w,S):_e(h,g,_,b,v,w,S):Fe(f,h,S)},_e=(f,h,g,_,b,v,w)=>{const C=f.component=na(f,_,b);if(hs(f)&&(C.ctx.renderer=k),sa(C,!1,w),C.asyncDep){if(b&&b.registerDep(C,de,w),!f.el){const S=C.subTree=re(xe);M(null,S,h,g),f.placeholder=S.el}}else de(C,f,h,g,b,v,w)},Fe=(f,h,g)=>{const _=h.component=f.component;if(Fc(f,h,g))if(_.asyncDep&&!_.asyncResolved){ne(_,h,g);return}else _.next=h,_.update();else h.el=f.el,_.vnode=h},de=(f,h,g,_,b,v,w)=>{const C=()=>{if(f.isMounted){let{next:O,bu:D,u:B,parent:W,vnode:oe}=f;{const tt=Ui(f);if(tt){O&&(O.el=oe.el,ne(f,O,w)),tt.asyncDep.then(()=>{Me(()=>{f.isUnmounted||E()},b)});return}}let se=O,he;Mt(f,!1),O?(O.el=oe.el,ne(f,O,w)):O=oe,D&&Un(D),(he=O.props&&O.props.onVnodeBeforeUpdate)&&st(he,W,O,oe),Mt(f,!0);const be=$r(f),et=f.subTree;f.subTree=be,A(et,be,d(et.el),y(et),f,b,v),O.el=be.el,se===null&&jc(f,be.el),B&&Me(B,b),(he=O.props&&O.props.onVnodeUpdated)&&Me(()=>st(he,W,O,oe),b)}else{let O;const{el:D,props:B}=h,{bm:W,m:oe,parent:se,root:he,type:be}=f,et=nn(h);Mt(f,!1),W&&Un(W),!et&&(O=B&&B.onVnodeBeforeMount)&&st(O,se,h),Mt(f,!0);{he.ce&&he.ce._hasShadowRoot()&&he.ce._injectChildStyle(be,f.parent?f.parent.type:void 0);const tt=f.subTree=$r(f);A(null,tt,g,_,f,b,v),h.el=tt.el}if(oe&&Me(oe,b),!et&&(O=B&&B.onVnodeMounted)){const tt=h;Me(()=>st(O,se,tt),b)}(h.shapeFlag&256||se&&nn(se.vnode)&&se.vnode.shapeFlag&256)&&f.a&&Me(f.a,b),f.isMounted=!0,h=g=_=null}};f.scope.on();const S=f.effect=new $o(C);f.scope.off();const E=f.update=S.run.bind(S),F=f.job=S.runIfDirty.bind(S);F.i=f,F.id=f.uid,S.scheduler=()=>mr(F),Mt(f,!0),E()},ne=(f,h,g)=>{h.component=f;const _=f.vnode.props;f.vnode=h,f.next=null,Hc(f,h.props,_,g),Gc(f,h.children,g),bt(),kr(f),Et()},Y=(f,h,g,_,b,v,w,C,S=!1)=>{const E=f&&f.children,F=f?f.shapeFlag:0,O=h.children,{patchFlag:D,shapeFlag:B}=h;if(D>0){if(D&128){At(E,O,g,_,b,v,w,C,S);return}else if(D&256){ut(E,O,g,_,b,v,w,C,S);return}}B&8?(F&16&&Ue(E,b,v),O!==E&&a(g,O)):F&16?B&16?At(E,O,g,_,b,v,w,C,S):Ue(E,b,v,!0):(F&8&&a(g,""),B&16&&Ce(O,g,_,b,v,w,C,S))},ut=(f,h,g,_,b,v,w,C,S)=>{f=f||Zt,h=h||Zt;const E=f.length,F=h.length,O=Math.min(E,F);let D;for(D=0;D<O;D++){const B=h[D]=S?pt(h[D]):lt(h[D]);A(f[D],B,g,null,b,v,w,C,S)}E>F?Ue(f,b,v,!0,!1,O):Ce(h,g,_,b,v,w,C,S,O)},At=(f,h,g,_,b,v,w,C,S)=>{let E=0;const F=h.length;let O=f.length-1,D=F-1;for(;E<=O&&E<=D;){const B=f[E],W=h[E]=S?pt(h[E]):lt(h[E]);if(jt(B,W))A(B,W,g,null,b,v,w,C,S);else break;E++}for(;E<=O&&E<=D;){const B=f[O],W=h[D]=S?pt(h[D]):lt(h[D]);if(jt(B,W))A(B,W,g,null,b,v,w,C,S);else break;O--,D--}if(E>O){if(E<=D){const B=D+1,W=B<F?h[B].el:_;for(;E<=D;)A(null,h[E]=S?pt(h[E]):lt(h[E]),g,W,b,v,w,C,S),E++}}else if(E>D)for(;E<=O;)ke(f[E],b,v,!0),E++;else{const B=E,W=E,oe=new Map;for(E=W;E<=D;E++){const je=h[E]=S?pt(h[E]):lt(h[E]);je.key!=null&&oe.set(je.key,E)}let se,he=0;const be=D-W+1;let et=!1,tt=0;const hn=new Array(be);for(E=0;E<be;E++)hn[E]=0;for(E=B;E<=O;E++){const je=f[E];if(he>=be){ke(je,b,v,!0);continue}let nt;if(je.key!=null)nt=oe.get(je.key);else for(se=W;se<=D;se++)if(hn[se-W]===0&&jt(je,h[se])){nt=se;break}nt===void 0?ke(je,b,v,!0):(hn[nt-W]=E+1,nt>=tt?tt=nt:et=!0,A(je,h[nt],g,null,b,v,w,C,S),he++)}const Rr=et?zc(hn):Zt;for(se=Rr.length-1,E=be-1;E>=0;E--){const je=W+E,nt=h[je],Tr=h[je+1],Or=je+1<F?Tr.el||$i(Tr):_;hn[E]===0?A(null,nt,g,Or,b,v,w,C,S):et&&(se<0||E!==Rr[se]?Ze(nt,g,Or,2):se--)}}},Ze=(f,h,g,_,b=null)=>{const{el:v,type:w,transition:C,children:S,shapeFlag:E}=f;if(E&6){Ze(f.component.subTree,h,g,_);return}if(E&128){f.suspense.move(h,g,_);return}if(E&64){w.move(f,h,g,k);return}if(w===ve){s(v,h,g);for(let O=0;O<S.length;O++)Ze(S[O],h,g,_);s(f.anchor,h,g);return}if(w===Kn){L(f,h,g);return}if(_!==2&&E&1&&C)if(_===0)C.persisted&&!v[Ke]?s(v,h,g):(C.beforeEnter(v),s(v,h,g),Me(()=>C.enter(v),b));else{const{leave:O,delayLeave:D,afterLeave:B}=C,W=()=>{f.ctx.isUnmounted?r(v):s(v,h,g)},oe=()=>{const se=v._isLeaving||!!v[Ke];v._isLeaving&&v[Ke](!0),C.persisted&&!se?W():O(v,()=>{W(),B&&B()})};D?D(v,W,oe):oe()}else s(v,h,g)},ke=(f,h,g,_=!1,b=!1)=>{const{type:v,props:w,ref:C,children:S,dynamicChildren:E,shapeFlag:F,patchFlag:O,dirs:D,cacheIndex:B,memo:W}=f;if(O===-2&&(b=!1),C!=null&&(bt(),Cn(C,null,g,f,!0),Et()),B!=null&&(h.renderCache[B]=void 0),F&256){h.ctx.deactivate(f);return}const oe=F&1&&D,se=!nn(f);let he;if(se&&(he=w&&w.onVnodeBeforeUnmount)&&st(he,h,f),F&6)kt(f.component,g,_);else{if(F&128){f.suspense.unmount(g,_);return}oe&&Dt(f,null,h,"beforeUnmount"),F&64?f.type.remove(f,h,g,k,_):E&&!E.hasOnce&&(v!==ve||O>0&&O&64)?Ue(E,h,g,!1,!0):(v===ve&&O&384||!b&&F&16)&&Ue(S,h,g),_&&Jt(f)}const be=W!=null&&B==null;(se&&(he=w&&w.onVnodeUnmounted)||oe||be)&&Me(()=>{he&&st(he,h,f),oe&&Dt(f,null,h,"unmounted"),be&&(f.el=null)},g)},Jt=f=>{const{type:h,el:g,anchor:_,transition:b}=f;if(h===ve){zt(g,_);return}if(h===Kn){P(f);return}const v=()=>{r(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(f.shapeFlag&1&&b&&!b.persisted){const{leave:w,delayLeave:C}=b,S=()=>w(g,v);C?C(f.el,v,S):S()}else v()},zt=(f,h)=>{let g;for(;f!==h;)g=p(f),r(f),f=g;r(h)},kt=(f,h,g)=>{const{bum:_,scope:b,job:v,subTree:w,um:C,m:S,a:E}=f;Wr(S),Wr(E),_&&Un(_),b.stop(),v&&(v.flags|=8,ke(w,f,h,g)),C&&Me(C,h),Me(()=>{f.isUnmounted=!0},h)},Ue=(f,h,g,_=!1,b=!1,v=0)=>{for(let w=v;w<f.length;w++)ke(f[w],h,g,_,b)},y=f=>{if(f.shapeFlag&6)return y(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const h=p(f.anchor||f.el),g=h&&h[dc];return g?p(g):h};let N=!1;const R=(f,h,g)=>{let _;f==null?h._vnode&&(ke(h._vnode,null,null,!0),_=h._vnode.component):A(h._vnode||null,f,h,null,null,null,g),h._vnode=f,N||(N=!0,kr(_),ai(),N=!1)},k={p:A,um:ke,m:Ze,r:Jt,mt:_e,mc:Ce,pc:Y,pbc:J,n:y,o:e};return{render:R,hydrate:void 0,createApp:Nc(R)}}function Os({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 Mt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Jc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Hi(e,t,n=!1){const s=e.children,r=t.children;if(V(s)&&V(r))for(let o=0;o<s.length;o++){const i=s[o];let l=r[o];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=r[o]=pt(r[o]),l.el=i.el),!n&&l.patchFlag!==-2&&Hi(i,l)),l.type===_s&&(l.patchFlag===-1&&(l=r[o]=pt(l)),l.el=i.el),l.type===xe&&!l.el&&(l.el=i.el)}}function zc(e){const t=e.slice(),n=[0];let s,r,o,i,l;const c=e.length;for(s=0;s<c;s++){const u=e[s];if(u!==0){if(r=n[n.length-1],e[r]<u){t[s]=r,n.push(s);continue}for(o=0,i=n.length-1;o<i;)l=o+i>>1,e[n[l]]<u?o=l+1:i=l;u<e[n[o]]&&(o>0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Ui(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ui(t)}function Wr(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function $i(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?$i(t.subTree):null}const Ki=e=>e.__isSuspense;function Yc(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):cc(e)}const ve=Symbol.for("v-fgt"),_s=Symbol.for("v-txt"),xe=Symbol.for("v-cmt"),Kn=Symbol.for("v-stc"),yt=[];let He=null;function pe(e=!1){yt.push(He=e?null:[])}function br(){yt.pop(),He=yt[yt.length-1]||null}let Pn=1;function Qn(e,t=!1){Pn+=e,e<0&&He&&t&&(He.hasOnce=!0)}function Gi(e){return e.dynamicChildren=Pn>0?He||Zt:null,br(),Pn>0&&He&&He.push(e),e}function Ve(e,t,n,s,r,o){return Gi(H(e,t,n,s,r,o,!0))}function ln(e,t,n,s,r){return Gi(re(e,t,n,s,r,!0))}function In(e){return e?e.__v_isVNode===!0:!1}function jt(e,t){return e.type===t.type&&e.key===t.key}const Wi=({key:e})=>e??null,Gn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ue(e)||Te(e)||U(e)?{i:Se,r:e,k:t,f:!!n}:e:null);function H(e,t=null,n=null,s=0,r=null,o=e===ve?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Wi(t),ref:t&&Gn(t),scopeId:fi,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:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Se};return l?(Zn(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ue(n)?8:16),Pn>0&&!i&&He&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&He.push(c),c}const re=Qc;function Qc(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===wi)&&(e=xe),In(e)){const l=It(e,t,!0);return n&&Zn(l,n),Pn>0&&!o&&He&&(l.shapeFlag&6?He[He.indexOf(e)]=l:He.push(l)),l.patchFlag=-2,l}if(ca(e)&&(e=e.__vccOpts),t){t=Xc(t);let{class:l,style:c}=t;l&&!ue(l)&&(t.class=us(l)),Z(c)&&(pr(c)&&!V(c)&&(c=ge({},c)),t.style=ir(c))}const i=ue(e)?1:Ki(e)?128:pi(e)?64:Z(e)?4:U(e)?2:0;return H(e,t,n,s,r,i,o,!0)}function Xc(e){return e?pr(e)||Di(e)?ge({},e):e:null}function It(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,u=t?Zc(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Wi(u),ref:t&&t.ref?n&&o?V(o)?o.concat(Gn(t)):[o,Gn(t)]:Gn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ve?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&It(e.ssContent),ssFallback:e.ssFallback&&It(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Gt(a,c.clone(a)),a}function Xn(e=" ",t=0){return re(_s,null,e,t)}function Mf(e,t){const n=re(Kn,null,e);return n.staticCount=t,n}function Bt(e="",t=!1){return t?(pe(),ln(xe,null,e)):re(xe,null,e)}function lt(e){return e==null||typeof e=="boolean"?re(xe):V(e)?re(ve,null,e.slice()):In(e)?pt(e):re(_s,null,String(e))}function pt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:It(e)}function Zn(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(V(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Zn(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Di(t)?t._ctx=Se:r===3&&Se&&(Se.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(U(t)){if(s&65){Zn(e,{default:t});return}t={default:t,_ctx:Se},n=32}else t=String(t),s&64?(n=16,t=[Xn(t)]):n=8;e.children=t,e.shapeFlag|=n}function Zc(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const r in s)if(r==="class")t.class!==s.class&&(t.class=us([t.class,s.class]));else if(r==="style")t.style=ir([t.style,s.style]);else if(rs(r)){const o=t[r],i=s[r];i&&o!==i&&!(V(o)&&o.includes(i))?t[r]=o?[].concat(o,i):i:i==null&&o==null&&!os(r)&&(t[r]=i)}else r!==""&&(t[r]=s[r])}return t}function st(e,t,n,s=null){qe(e,t,7,[n,s])}const ea=Pi();let ta=0;function na(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||ea,o={uid:ta++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Ll(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Vi(s,r),emitsOptions:Ii(s,r),emit:null,emitted:null,propsDefaults:ie,inheritAttrs:s.inheritAttrs,ctx:ie,data:ie,props:ie,attrs:ie,slots:ie,refs:ie,setupState:ie,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=t?t.root:o,o.emit=kc.bind(null,o),e.ce&&e.ce(o),o}let Re=null;const Er=()=>Re||Se;let es,Ys;{const e=as(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};es=t("__VUE_INSTANCE_SETTERS__",n=>Re=n),Ys=t("__VUE_SSR_SETTERS__",n=>Nn=n)}const Vn=e=>{const t=Re;return es(e),e.scope.on(),()=>{e.scope.off(),es(t)}},qr=()=>{Re&&Re.scope.off(),es(null)};function qi(e){return e.vnode.shapeFlag&4}let Nn=!1;function sa(e,t=!1,n=!1){t&&Ys(t);const{props:s,children:r}=e.vnode,o=qi(e);Bc(e,s,o,t),Kc(e,r,n||t);const i=o?ra(e,t):void 0;return t&&Ys(!1),i}function ra(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,wc);const{setup:s}=n;if(s){bt();const r=e.setupContext=s.length>1?ia(e):null,o=Vn(e),i=Dn(s,e,0,[e.props,r]),l=Mo(i);if(Et(),o(),(l||e.sp)&&!nn(e)&&bi(e),l){if(i.then(qr,qr),t)return i.then(c=>{Jr(e,c)}).catch(c=>{ds(c,e,0)});e.asyncDep=i}else Jr(e,i)}else Ji(e)}function Jr(e,t,n){U(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=ii(t)),Ji(e)}function Ji(e,t,n){const s=e.type;e.render||(e.render=s.render||at);{const r=Vn(e);bt();try{xc(e)}finally{Et(),r()}}}const oa={get(e,t){return Ae(e,"get",""),e[t]}};function ia(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,oa),slots:e.slots,emit:e.emit,expose:t}}function ys(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ii(Xl(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in An)return An[n](e)},has(t,n){return n in t||n in An}})):e.proxy}function la(e,t=!0){return U(e)?e.displayName||e.name:e.name||t&&e.__name}function ca(e){return U(e)&&"__vccOpts"in e}const Ne=(e,t)=>sc(e,t,Nn);function Sr(e,t,n){try{Qn(-1);const s=arguments.length;return s===2?Z(t)&&!V(t)?In(t)?re(e,null,[t]):re(e,t):re(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&In(n)&&(n=[n]),re(e,t,n))}finally{Qn(1)}}const aa="3.5.40";/**
15
- * @vue/runtime-dom v3.5.40
16
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
17
- * @license MIT
18
- **/let Qs;const zr=typeof window<"u"&&window.trustedTypes;if(zr)try{Qs=zr.createPolicy("vue",{createHTML:e=>e})}catch{}const zi=Qs?e=>Qs.createHTML(e):e=>e,ua="http://www.w3.org/2000/svg",fa="http://www.w3.org/1998/Math/MathML",ht=typeof document<"u"?document:null,Yr=ht&&ht.createElement("template"),da={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?ht.createElementNS(ua,e):t==="mathml"?ht.createElementNS(fa,e):n?ht.createElement(e,{is:n}):ht.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>ht.createTextNode(e),createComment:e=>ht.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ht.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Yr.innerHTML=zi(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const l=Yr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},wt="transition",mn="animation",cn=Symbol("_vtc"),Yi={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},Qi=ge({},mi,Yi),ha=e=>(e.displayName="Transition",e.props=Qi,e),Xi=ha((e,{slots:t})=>Sr(pc,Zi(e),t)),Vt=(e,t=[])=>{V(e)?e.forEach(n=>n(...t)):e&&e(...t)},Qr=e=>e?V(e)?e.some(t=>t.length>1):e.length>1:!1;function Zi(e){const t={};for(const I in e)I in Yi||(t[I]=e[I]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:u=i,appearToClass:a=l,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,x=pa(r),A=x&&x[0],j=x&&x[1],{onBeforeEnter:M,onEnter:T,onEnterCancelled:L,onLeave:P,onLeaveCancelled:K,onBeforeAppear:ee=M,onAppear:te=T,onAppearCancelled:Ce=L}=t,$=(I,z,_e,Fe)=>{I._enterCancelled=Fe,Rt(I,z?a:l),Rt(I,z?u:i),_e&&_e()},J=(I,z)=>{I._isLeaving=!1,Rt(I,d),Rt(I,m),Rt(I,p),z&&z()},le=I=>(z,_e)=>{const Fe=I?te:T,de=()=>$(z,I,_e);Vt(Fe,[z,de]),Xr(()=>{Rt(z,I?c:o),rt(z,I?a:l),Qr(Fe)||Zr(z,s,A,de)})};return ge(t,{onBeforeEnter(I){Vt(M,[I]),rt(I,o),rt(I,i)},onBeforeAppear(I){Vt(ee,[I]),rt(I,c),rt(I,u)},onEnter:le(!1),onAppear:le(!0),onLeave(I,z){I._isLeaving=!0;const _e=()=>J(I,z);rt(I,d),I._enterCancelled?(rt(I,p),Xs(I)):(Xs(I),rt(I,p)),Xr(()=>{I._isLeaving&&(Rt(I,d),rt(I,m),Qr(P)||Zr(I,s,j,_e))}),Vt(P,[I,_e])},onEnterCancelled(I){$(I,!1,void 0,!0),Vt(L,[I])},onAppearCancelled(I){$(I,!0,void 0,!0),Vt(Ce,[I])},onLeaveCancelled(I){J(I),Vt(K,[I])}})}function pa(e){if(e==null)return null;if(Z(e))return[Ps(e.enter),Ps(e.leave)];{const t=Ps(e);return[t,t]}}function Ps(e){return wl(e)}function rt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[cn]||(e[cn]=new Set)).add(t)}function Rt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[cn];n&&(n.delete(t),n.size||(e[cn]=void 0))}function Xr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ga=0;function Zr(e,t,n,s){const r=e._endId=++ga,o=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=el(e,t);if(!i)return s();const u=i+"end";let a=0;const d=()=>{e.removeEventListener(u,p),o()},p=m=>{m.target===e&&++a>=c&&d()};setTimeout(()=>{a<c&&d()},l+1),e.addEventListener(u,p)}function el(e,t){const n=window.getComputedStyle(e),s=x=>(n[x]||"").split(", "),r=s(`${wt}Delay`),o=s(`${wt}Duration`),i=eo(r,o),l=s(`${mn}Delay`),c=s(`${mn}Duration`),u=eo(l,c);let a=null,d=0,p=0;t===wt?i>0&&(a=wt,d=i,p=o.length):t===mn?u>0&&(a=mn,d=u,p=c.length):(d=Math.max(i,u),a=d>0?i>u?wt:mn:null,p=a?a===wt?o.length:c.length:0);const m=a===wt&&/\b(?:transform|all)(?:,|$)/.test(s(`${wt}Property`).toString());return{type:a,timeout:d,propCount:p,hasTransform:m}}function eo(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,s)=>to(n)+to(e[s])))}function to(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Xs(e){return(e?e.ownerDocument:document).body.offsetHeight}function ma(e,t,n){const s=e[cn];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const no=Symbol("_vod"),tl=Symbol("_vsh"),va=Symbol(""),_a=/(?:^|;)\s*display\s*:/;function ya(e,t,n){const s=e.style,r=ue(n);let o=!1;if(n&&!r){if(t)if(ue(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&yn(s,l,"")}else for(const i in t)n[i]==null&&yn(s,i,"");for(const i in n){i==="display"&&(o=!0);const l=n[i];l!=null?Ea(e,i,!ue(t)&&t?t[i]:void 0,l)||yn(s,i,l):yn(s,i,"")}}else if(r){if(t!==n){const i=s[va];i&&(n+=";"+i),s.cssText=n,o=_a.test(n)}}else t&&e.removeAttribute("style");no in e&&(e[no]=o?s.display:"",e[tl]&&(s.display="none"))}const so=/\s*!important$/;function yn(e,t,n){if(V(n))n.forEach(s=>yn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=ba(e,t);so.test(n)?e.setProperty(Wt(s),n.replace(so,""),"important"):e[s]=n}}const ro=["Webkit","Moz","ms"],Is={};function ba(e,t){const n=Is[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return Is[t]=s;s=ls(s);for(let r=0;r<ro.length;r++){const o=ro[r]+s;if(o in e)return Is[t]=o}return t}function Ea(e,t,n,s){return e.tagName==="TEXTAREA"&&(t==="width"||t==="height")&&ue(s)&&n===s}const oo="http://www.w3.org/1999/xlink";function io(e,t,n,s,r,o=Il(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(oo,t.slice(6,t.length)):e.setAttributeNS(oo,t,n):n==null||o&&!Bo(n)?e.removeAttribute(t):e.setAttribute(t,o?"":Ye(n)?String(n):n)}function lo(e,t,n,s,r){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?zi(n):n);return}const o=e.tagName;if(t==="value"&&o!=="PROGRESS"&&!o.includes("-")){const l=o==="OPTION"?e.getAttribute("value")||"":e.value,c=n==null?e.type==="checkbox"?"on":"":String(n);(l!==c||!("_value"in e))&&(e.value=c),n==null&&e.removeAttribute(t),e._value=n;return}let i=!1;if(n===""||n==null){const l=typeof e[t];l==="boolean"?n=Bo(n):n==null&&l==="string"?(n="",i=!0):l==="number"&&(n=0,i=!0)}try{e[t]=n}catch{}i&&e.removeAttribute(r||t)}function vt(e,t,n,s){e.addEventListener(t,n,s)}function Sa(e,t,n,s){e.removeEventListener(t,n,s)}const co=Symbol("_vei");function Ca(e,t,n,s,r=null){const o=e[co]||(e[co]={}),i=o[t];if(s&&i)i.value=s;else{const[l,c]=xa(t);if(s){const u=o[t]=Oa(s,r);vt(e,l,u,c)}else i&&(Sa(e,l,i,c),o[t]=void 0)}}const Aa=/(Once|Passive|Capture)$/,wa=/^on:?(?:Once|Passive|Capture)$/;function xa(e){let t,n;for(;(n=e.match(Aa))&&!wa.test(e);)t||(t={}),e=e.slice(0,e.length-n[1].length),t[n[1].toLowerCase()]=!0;return[e[2]===":"?e.slice(3):Wt(e.slice(2)),t]}let Ns=0;const Ra=Promise.resolve(),Ta=()=>Ns||(Ra.then(()=>Ns=0),Ns=Date.now());function Oa(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;const r=n.value;if(V(r)){const o=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{o.call(s),s._stopped=!0};const i=r.slice(),l=[s];for(let c=0;c<i.length&&!s._stopped;c++){const u=i[c];u&&qe(u,t,5,l)}}else qe(r,t,5,[s])};return n.value=e,n.attached=Ta(),n}const ao=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Pa=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?ma(e,s,i):t==="style"?ya(e,n,s):rs(t)?os(t)||Ca(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ia(e,t,s,i))?(lo(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&io(e,t,s,i,o,t!=="value")):e._isVueCE&&(Na(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ue(s)))?lo(e,Le(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),io(e,t,s,i))};function Ia(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&ao(t)&&U(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"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return ao(t)&&ue(n)?!1:t in e}function Na(e,t){const n=e._def.props;if(!n)return!1;const s=Le(t);return Array.isArray(n)?n.some(r=>Le(r)===s):Object.keys(n).some(r=>Le(r)===s)}const nl=new WeakMap,sl=new WeakMap,ts=Symbol("_moveCb"),uo=Symbol("_enterCb"),La=e=>(delete e.props.mode,e),ka=La({name:"TransitionGroup",props:ge({},Qi,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Er(),s=gi();let r,o;return Si(()=>{if(!r.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!ja(r[0].el,n.vnode.el,i)){r=[];return}r.forEach(Ma),r.forEach(Va);const l=r.filter(Fa);Xs(n.vnode.el),l.forEach(c=>{const u=c.el,a=u.style;rt(u,i),a.transform=a.webkitTransform=a.transitionDuration="";const d=u[ts]=p=>{p&&p.target!==u||(!p||p.propertyName.endsWith("transform"))&&(u.removeEventListener("transitionend",d),u[ts]=null,Rt(u,i))};u.addEventListener("transitionend",d)}),r=[]}),()=>{const i=q(e),l=Zi(i);let c=i.tag||ve;if(r=[],o)for(let u=0;u<o.length;u++){const a=o[u];a.el&&a.el instanceof Element&&!a.el[tl]&&(r.push(a),Gt(a,On(a,l,s,n)),nl.set(a,rl(a.el)))}o=t.default?vr(t.default()):[];for(let u=0;u<o.length;u++){const a=o[u];a.key!=null&&Gt(a,On(a,l,s,n))}return re(c,null,o)}}}),Da=ka;function Ma(e){const t=e.el;t[ts]&&t[ts](),t[uo]&&t[uo]()}function Va(e){sl.set(e,rl(e.el))}function Fa(e){const t=nl.get(e),n=sl.get(e),s=t.left-n.left,r=t.top-n.top;if(s||r){const o=e.el,i=o.style,l=o.getBoundingClientRect();let c=1,u=1;return o.offsetWidth&&(c=l.width/o.offsetWidth),o.offsetHeight&&(u=l.height/o.offsetHeight),(!Number.isFinite(c)||c===0)&&(c=1),(!Number.isFinite(u)||u===0)&&(u=1),Math.abs(c-1)<.01&&(c=1),Math.abs(u-1)<.01&&(u=1),i.transform=i.webkitTransform=`translate(${s/c}px,${r/u}px)`,i.transitionDuration="0s",e}}function rl(e){const t=e.getBoundingClientRect();return{left:t.left,top:t.top}}function ja(e,t,n){const s=e.cloneNode(),r=e[cn];r&&r.forEach(l=>{l.split(/\s+/).forEach(c=>c&&s.classList.remove(c))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(s);const{hasTransform:i}=el(s);return o.removeChild(s),i}const Nt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return V(t)?n=>Un(t,n):t};function Ba(e){e.target.composing=!0}function fo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const We=Symbol("_assign");function ho(e,t,n){return t&&(e=e.trim()),n&&(e=cs(e)),e}const Vf={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[We]=Nt(r);const o=s||r.props&&r.props.type==="number";vt(e,t?"change":"input",i=>{i.target.composing||e[We](ho(e.value,n,o))}),(n||o)&&vt(e,"change",()=>{e.value=ho(e.value,n,o)}),t||(vt(e,"compositionstart",Ba),vt(e,"compositionend",fo),vt(e,"change",fo))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[We]=Nt(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?cs(e.value):e.value,c=t??"";if(l===c)return;const u=e.getRootNode();(u instanceof Document||u instanceof ShadowRoot)&&u.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c)}},Ff={deep:!0,created(e,t,n){e[We]=Nt(n),vt(e,"change",()=>{const s=e._modelValue,r=an(e),o=e.checked,i=e[We];if(V(s)){const l=lr(s,r),c=l!==-1;if(o&&!c)i(s.concat(r));else if(!o&&c){const u=[...s];u.splice(l,1),i(u)}}else if(dn(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(ol(e,o))})},mounted:po,beforeUpdate(e,t,n){e[We]=Nt(n),po(e,t,n)}};function po(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(V(t))r=lr(t,s.props.value)>-1;else if(dn(t))r=t.has(s.props.value);else{if(t===n)return;r=Pt(t,ol(e,!0))}e.checked!==r&&(e.checked=r)}const jf={created(e,{value:t},n){e.checked=Pt(t,n.props.value),e[We]=Nt(n),vt(e,"change",()=>{e[We](an(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[We]=Nt(s),t!==n&&(e.checked=Pt(t,s.props.value))}},Bf={deep:!0,created(e,{value:t,modifiers:{number:n}},s){e._modelValue=t,vt(e,"change",()=>{const r=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>n?cs(an(o)):an(o));e[We](e.multiple?dn(e._modelValue)?new Set(r):r:r[0]),e._assigning=!0,gr(()=>{e._assigning=!1})}),e[We]=Nt(s)},mounted(e,{value:t}){go(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[We]=Nt(n)},updated(e,{value:t}){e._assigning||go(e,t)}};function go(e,t){const n=e.multiple,s=V(t);if(!(n&&!s&&!dn(t))){for(let r=0,o=e.options.length;r<o;r++){const i=e.options[r],l=an(i);if(n)if(s){const c=typeof l;c==="string"||c==="number"?i.selected=t.some(u=>String(u)===String(l)):i.selected=lr(t,l)>-1}else i.selected=t.has(l);else if(Pt(an(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function an(e){return"_value"in e?e._value:e.value}function ol(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Ha=["ctrl","shift","alt","meta"],Ua={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)=>Ha.some(n=>e[`${n}Key`]&&!t.includes(n))},$a=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((r,...o)=>{for(let i=0;i<t.length;i++){const l=Ua[t[i]];if(l&&l(r,t))return}return e(r,...o)}))},Ka=ge({patchProp:Pa},da);let mo;function Ga(){return mo||(mo=Wc(Ka))}const Wa=((...e)=>{const t=Ga().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ja(s);if(!r)return;const o=t._component;!U(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,qa(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t});function qa(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ja(e){return ue(e)?document.querySelector(e):e}const za="modulepreload",Ya=function(e){return"/"+e},vo={},De=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){let i=function(u){return Promise.all(u.map(a=>Promise.resolve(a).then(d=>({status:"fulfilled",value:d}),d=>({status:"rejected",reason:d}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),c=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));r=i(n.map(u=>{if(u=Ya(u),u in vo)return;vo[u]=!0;const a=u.endsWith(".css"),d=a?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${d}`))return;const p=document.createElement("link");if(p.rel=a?"stylesheet":za,a||(p.as="script"),p.crossOrigin="",p.href=u,c&&p.setAttribute("nonce",c),document.head.appendChild(p),a)return new Promise((m,x)=>{p.addEventListener("load",m),p.addEventListener("error",()=>x(new Error(`Unable to preload CSS for ${u}`)))})}))}function o(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return r.then(i=>{for(const l of i||[])l.status==="rejected"&&o(l.reason);return t().catch(o)})};/*!
19
- * vue-router v4.6.4
20
- * (c) 2025 Eduardo San Martin Morote
21
- * @license MIT
22
- */const Xt=typeof document<"u";function il(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Qa(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&il(e.default)}const Q=Object.assign;function Ls(e,t){const n={};for(const s in t){const r=t[s];n[s]=Xe(r)?r.map(e):e(r)}return n}const wn=()=>{},Xe=Array.isArray;function _o(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const ll=/#/g,Xa=/&/g,Za=/\//g,eu=/=/g,tu=/\?/g,cl=/\+/g,nu=/%5B/g,su=/%5D/g,al=/%5E/g,ru=/%60/g,ul=/%7B/g,ou=/%7C/g,fl=/%7D/g,iu=/%20/g;function Cr(e){return e==null?"":encodeURI(""+e).replace(ou,"|").replace(nu,"[").replace(su,"]")}function lu(e){return Cr(e).replace(ul,"{").replace(fl,"}").replace(al,"^")}function Zs(e){return Cr(e).replace(cl,"%2B").replace(iu,"+").replace(ll,"%23").replace(Xa,"%26").replace(ru,"`").replace(ul,"{").replace(fl,"}").replace(al,"^")}function cu(e){return Zs(e).replace(eu,"%3D")}function au(e){return Cr(e).replace(ll,"%23").replace(tu,"%3F")}function uu(e){return au(e).replace(Za,"%2F")}function Ln(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const fu=/\/$/,du=e=>e.replace(fu,"");function ks(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let c=t.indexOf("?");return c=l>=0&&c>l?-1:c,c>=0&&(s=t.slice(0,c),o=t.slice(c,l>0?l:t.length),r=e(o.slice(1))),l>=0&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=mu(s??t,n),{fullPath:s+o+i,path:s,query:r,hash:Ln(i)}}function hu(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function yo(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function pu(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&un(t.matched[s],n.matched[r])&&dl(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function un(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function dl(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!gu(e[n],t[n]))return!1;return!0}function gu(e,t){return Xe(e)?bo(e,t):Xe(t)?bo(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function bo(e,t){return Xe(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function mu(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i<s.length;i++)if(l=s[i],l!==".")if(l==="..")o>1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const xt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let er=(function(e){return e.pop="pop",e.push="push",e})({}),Ds=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function vu(e){if(!e)if(Xt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),du(e)}const _u=/^[^#]+#/;function yu(e,t){return e.replace(_u,"#")+t}function bu(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const bs=()=>({left:window.scrollX,top:window.scrollY});function Eu(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=bu(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Eo(e,t){return(history.state?history.state.position-t:-1)+e}const tr=new Map;function Su(e,t){tr.set(e,t)}function Cu(e){const t=tr.get(e);return tr.delete(e),t}function Au(e){return typeof e=="string"||e&&typeof e=="object"}function hl(e){return typeof e=="string"||typeof e=="symbol"}let fe=(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})({});const pl=Symbol("");fe.MATCHER_NOT_FOUND+"",fe.NAVIGATION_GUARD_REDIRECT+"",fe.NAVIGATION_ABORTED+"",fe.NAVIGATION_CANCELLED+"",fe.NAVIGATION_DUPLICATED+"";function fn(e,t){return Q(new Error,{type:e,[pl]:!0},t)}function dt(e,t){return e instanceof Error&&pl in e&&(t==null||!!(e.type&t))}const wu=["params","query","hash"];function xu(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of wu)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Ru(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;s<n.length;++s){const r=n[s].replace(cl," "),o=r.indexOf("="),i=Ln(o<0?r:r.slice(0,o)),l=o<0?null:Ln(r.slice(o+1));if(i in t){let c=t[i];Xe(c)||(c=t[i]=[c]),c.push(l)}else t[i]=l}return t}function So(e){let t="";for(let n in e){const s=e[n];if(n=cu(n),s==null){s!==void 0&&(t+=(t.length?"&":"")+n);continue}(Xe(s)?s.map(r=>r&&Zs(r)):[s&&Zs(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function Tu(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Xe(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Ou=Symbol(""),Co=Symbol(""),Es=Symbol(""),Ar=Symbol(""),nr=Symbol("");function vn(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Ot(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const u=p=>{p===!1?c(fn(fe.NAVIGATION_ABORTED,{from:n,to:t})):p instanceof Error?c(p):Au(p)?c(fn(fe.NAVIGATION_GUARD_REDIRECT,{from:t,to:p})):(i&&s.enterCallbacks[r]===i&&typeof p=="function"&&i.push(p),l())},a=o(()=>e.call(s&&s.instances[r],t,n,u));let d=Promise.resolve(a);e.length<3&&(d=d.then(u)),d.catch(p=>c(p))})}function Ms(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const l in i.components){let c=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(il(c)){const u=(c.__vccOpts||c)[t];u&&o.push(Ot(u,n,s,i,l,r))}else{let u=c();o.push(()=>u.then(a=>{if(!a)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const d=Qa(a)?a.default:a;i.mods[l]=a,i.components[l]=d;const p=(d.__vccOpts||d)[t];return p&&Ot(p,n,s,i,l,r)()}))}}return o}function Pu(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;i<o;i++){const l=t.matched[i];l&&(e.matched.find(u=>un(u,l))?s.push(l):n.push(l));const c=e.matched[i];c&&(t.matched.find(u=>un(u,c))||r.push(c))}return[n,s,r]}/*!
23
- * vue-router v4.6.4
24
- * (c) 2025 Eduardo San Martin Morote
25
- * @license MIT
26
- */let Iu=()=>location.protocol+"//"+location.host;function gl(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),yo(l,"")}return yo(n,e)+s+r}function Nu(e,t,n,s){let r=[],o=[],i=null;const l=({state:p})=>{const m=gl(e,location),x=n.value,A=t.value;let j=0;if(p){if(n.value=m,t.value=p,i&&i===x){i=null;return}j=A?p.position-A.position:0}else s(m);r.forEach(M=>{M(n.value,x,{delta:j,type:er.pop,direction:j?j>0?Ds.forward:Ds.back:Ds.unknown})})};function c(){i=n.value}function u(p){r.push(p);const m=()=>{const x=r.indexOf(p);x>-1&&r.splice(x,1)};return o.push(m),m}function a(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(Q({},p.state,{scroll:bs()}),"")}}function d(){for(const p of o)p();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",a),document.removeEventListener("visibilitychange",a)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",a),document.addEventListener("visibilitychange",a),{pauseListeners:c,listen:u,destroy:d}}function Ao(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?bs():null}}function Lu(e){const{history:t,location:n}=window,s={value:gl(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(c,u,a){const d=e.indexOf("#"),p=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+c:Iu()+e+c;try{t[a?"replaceState":"pushState"](u,"",p),r.value=u}catch(m){console.error(m),n[a?"replace":"assign"](p)}}function i(c,u){o(c,Q({},t.state,Ao(r.value.back,c,r.value.forward,!0),u,{position:r.value.position}),!0),s.value=c}function l(c,u){const a=Q({},r.value,t.state,{forward:c,scroll:bs()});o(a.current,a,!0),o(c,Q({},Ao(s.value,c,null),{position:a.position+1},u),!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function ku(e){e=vu(e);const t=Lu(e),n=Nu(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=Q({location:"",base:e,go:s,createHref:yu.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Ht=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var me=(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})(me||{});const Du={type:Ht.Static,value:""},Mu=/[a-zA-Z0-9_]/;function Vu(e){if(!e)return[[]];if(e==="/")return[[Du]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${u}": ${m}`)}let n=me.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,u="",a="";function d(){u&&(n===me.Static?o.push({type:Ht.Static,value:u}):n===me.Param||n===me.ParamRegExp||n===me.ParamRegExpEnd?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:Ht.Param,value:u,regexp:a,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=c}for(;l<e.length;){if(c=e[l++],c==="\\"&&n!==me.ParamRegExp){s=n,n=me.EscapeNext;continue}switch(n){case me.Static:c==="/"?(u&&d(),i()):c===":"?(d(),n=me.Param):p();break;case me.EscapeNext:p(),n=s;break;case me.Param:c==="("?n=me.ParamRegExp:Mu.test(c)?p():(d(),n=me.Static,c!=="*"&&c!=="?"&&c!=="+"&&l--);break;case me.ParamRegExp:c===")"?a[a.length-1]=="\\"?a=a.slice(0,-1)+c:n=me.ParamRegExpEnd:a+=c;break;case me.ParamRegExpEnd:d(),n=me.Static,c!=="*"&&c!=="?"&&c!=="+"&&l--,a="";break;default:t("Unknown state");break}}return n===me.ParamRegExp&&t(`Unfinished custom RegExp for param "${u}"`),d(),i(),r}const wo="[^/]+?",Fu={sensitive:!1,strict:!1,start:!0,end:!0};var Pe=(function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e})(Pe||{});const ju=/[.+*?^${}()[\]/\\]/g;function Bu(e,t){const n=Q({},Fu,t),s=[];let r=n.start?"^":"";const o=[];for(const u of e){const a=u.length?[]:[Pe.Root];n.strict&&!u.length&&(r+="/");for(let d=0;d<u.length;d++){const p=u[d];let m=Pe.Segment+(n.sensitive?Pe.BonusCaseSensitive:0);if(p.type===Ht.Static)d||(r+="/"),r+=p.value.replace(ju,"\\$&"),m+=Pe.Static;else if(p.type===Ht.Param){const{value:x,repeatable:A,optional:j,regexp:M}=p;o.push({name:x,repeatable:A,optional:j});const T=M||wo;if(T!==wo){m+=Pe.BonusCustomRegExp;try{`${T}`}catch(P){throw new Error(`Invalid custom RegExp for param "${x}" (${T}): `+P.message)}}let L=A?`((?:${T})(?:/(?:${T}))*)`:`(${T})`;d||(L=j&&u.length<2?`(?:/${L})`:"/"+L),j&&(L+="?"),r+=L,m+=Pe.Dynamic,j&&(m+=Pe.BonusOptional),A&&(m+=Pe.BonusRepeatable),T===".*"&&(m+=Pe.BonusWildcard)}a.push(m)}s.push(a)}if(n.strict&&n.end){const u=s.length-1;s[u][s[u].length-1]+=Pe.BonusStrict}n.strict||(r+="/?"),n.end?r+="$":n.strict&&!r.endsWith("/")&&(r+="(?:/|$)");const i=new RegExp(r,n.sensitive?"":"i");function l(u){const a=u.match(i),d={};if(!a)return null;for(let p=1;p<a.length;p++){const m=a[p]||"",x=o[p-1];d[x.name]=m&&x.repeatable?m.split("/"):m}return d}function c(u){let a="",d=!1;for(const p of e){(!d||!a.endsWith("/"))&&(a+="/"),d=!1;for(const m of p)if(m.type===Ht.Static)a+=m.value;else if(m.type===Ht.Param){const{value:x,repeatable:A,optional:j}=m,M=x in u?u[x]:"";if(Xe(M)&&!A)throw new Error(`Provided param "${x}" is an array but it is not repeatable (* or + modifiers)`);const T=Xe(M)?M.join("/"):M;if(!T)if(j)p.length<2&&(a.endsWith("/")?a=a.slice(0,-1):d=!0);else throw new Error(`Missing required param "${x}"`);a+=T}}return a||"/"}return{re:i,score:s,keys:o,parse:l,stringify:c}}function Hu(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===Pe.Static+Pe.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Pe.Static+Pe.Segment?1:-1:0}function ml(e,t){let n=0;const s=e.score,r=t.score;for(;n<s.length&&n<r.length;){const o=Hu(s[n],r[n]);if(o)return o;n++}if(Math.abs(r.length-s.length)===1){if(xo(s))return 1;if(xo(r))return-1}return r.length-s.length}function xo(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const Uu={strict:!1,end:!0,sensitive:!1};function $u(e,t,n){const s=Bu(Vu(e.path),n),r=Q(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Ku(e,t){const n=[],s=new Map;t=_o(Uu,t);function r(d){return s.get(d)}function o(d,p,m){const x=!m,A=To(d);A.aliasOf=m&&m.record;const j=_o(t,d),M=[A];if("alias"in d){const P=typeof d.alias=="string"?[d.alias]:d.alias;for(const K of P)M.push(To(Q({},A,{components:m?m.record.components:A.components,path:K,aliasOf:m?m.record:A})))}let T,L;for(const P of M){const{path:K}=P;if(p&&K[0]!=="/"){const ee=p.record.path,te=ee[ee.length-1]==="/"?"":"/";P.path=p.record.path+(K&&te+K)}if(T=$u(P,p,j),m?m.alias.push(T):(L=L||T,L!==T&&L.alias.push(T),x&&d.name&&!Oo(T)&&i(d.name)),vl(T)&&c(T),A.children){const ee=A.children;for(let te=0;te<ee.length;te++)o(ee[te],T,m&&m.children[te])}m=m||T}return L?()=>{i(L)}:wn}function i(d){if(hl(d)){const p=s.get(d);p&&(s.delete(d),n.splice(n.indexOf(p),1),p.children.forEach(i),p.alias.forEach(i))}else{const p=n.indexOf(d);p>-1&&(n.splice(p,1),d.record.name&&s.delete(d.record.name),d.children.forEach(i),d.alias.forEach(i))}}function l(){return n}function c(d){const p=qu(d,n);n.splice(p,0,d),d.record.name&&!Oo(d)&&s.set(d.record.name,d)}function u(d,p){let m,x={},A,j;if("name"in d&&d.name){if(m=s.get(d.name),!m)throw fn(fe.MATCHER_NOT_FOUND,{location:d});j=m.record.name,x=Q(Ro(p.params,m.keys.filter(L=>!L.optional).concat(m.parent?m.parent.keys.filter(L=>L.optional):[]).map(L=>L.name)),d.params&&Ro(d.params,m.keys.map(L=>L.name))),A=m.stringify(x)}else if(d.path!=null)A=d.path,m=n.find(L=>L.re.test(A)),m&&(x=m.parse(A),j=m.record.name);else{if(m=p.name?s.get(p.name):n.find(L=>L.re.test(p.path)),!m)throw fn(fe.MATCHER_NOT_FOUND,{location:d,currentLocation:p});j=m.record.name,x=Q({},p.params,d.params),A=m.stringify(x)}const M=[];let T=m;for(;T;)M.unshift(T.record),T=T.parent;return{name:j,path:A,params:x,matched:M,meta:Wu(M)}}e.forEach(d=>o(d));function a(){n.length=0,s.clear()}return{addRoute:o,resolve:u,removeRoute:i,clearRoutes:a,getRoutes:l,getRecordMatcher:r}}function Ro(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function To(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Gu(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 Gu(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Oo(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Wu(e){return e.reduce((t,n)=>Q(t,n.meta),{})}function qu(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;ml(e,t[o])<0?s=o:n=o+1}const r=Ju(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function Ju(e){let t=e;for(;t=t.parent;)if(vl(t)&&ml(e,t)===0)return t}function vl({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Po(e){const t=ze(Es),n=ze(Ar),s=Ne(()=>{const c=ye(e.to);return t.resolve(c)}),r=Ne(()=>{const{matched:c}=s.value,{length:u}=c,a=c[u-1],d=n.matched;if(!a||!d.length)return-1;const p=d.findIndex(un.bind(null,a));if(p>-1)return p;const m=Io(c[u-2]);return u>1&&Io(a)===m&&d[d.length-1].path!==m?d.findIndex(un.bind(null,c[u-2])):p}),o=Ne(()=>r.value>-1&&Zu(n.params,s.value.params)),i=Ne(()=>r.value>-1&&r.value===n.matched.length-1&&dl(n.params,s.value.params));function l(c={}){if(Xu(c)){const u=t[ye(e.replace)?"replace":"push"](ye(e.to)).catch(wn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:s,href:Ne(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function zu(e){return e.length===1?e[0]:e}const Yu=Mn({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:Po,setup(e,{slots:t}){const n=qt(Po(e)),{options:s}=ze(Es),r=Ne(()=>({[No(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[No(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&zu(t.default(n));return e.custom?o:Sr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Qu=Yu;function Xu(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){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Zu(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Xe(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function Io(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const No=(e,t,n)=>e??t??n,ef=Mn({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=ze(nr),r=Ne(()=>e.route||s.value),o=ze(Co,0),i=Ne(()=>{let u=ye(o);const{matched:a}=r.value;let d;for(;(d=a[u])&&!d.components;)u++;return u}),l=Ne(()=>r.value.matched[i.value]);$n(Co,Ne(()=>i.value+1)),$n(Ou,l),$n(nr,r);const c=ri();return Kt(()=>[c.value,l.value,e.name],([u,a,d],[p,m,x])=>{a&&(a.instances[d]=u,m&&m!==a&&u&&u===p&&(a.leaveGuards.size||(a.leaveGuards=m.leaveGuards),a.updateGuards.size||(a.updateGuards=m.updateGuards))),u&&a&&(!m||!un(a,m)||!p)&&(a.enterCallbacks[d]||[]).forEach(A=>A(u))},{flush:"post"}),()=>{const u=r.value,a=e.name,d=l.value,p=d&&d.components[a];if(!p)return Lo(n.default,{Component:p,route:u});const m=d.props[a],x=m?m===!0?u.params:typeof m=="function"?m(u):m:null,j=Sr(p,Q({},x,t,{onVnodeUnmounted:M=>{M.component.isUnmounted&&(d.instances[a]=null)},ref:c}));return Lo(n.default,{Component:j,route:u})||j}}});function Lo(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const tf=ef;function nf(e){const t=Ku(e.routes,e),n=e.parseQuery||Ru,s=e.stringifyQuery||So,r=e.history,o=vn(),i=vn(),l=vn(),c=Zl(xt);let u=xt;Xt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const a=Ls.bind(null,y=>""+y),d=Ls.bind(null,uu),p=Ls.bind(null,Ln);function m(y,N){let R,k;return hl(y)?(R=t.getRecordMatcher(y),k=N):k=y,t.addRoute(k,R)}function x(y){const N=t.getRecordMatcher(y);N&&t.removeRoute(N)}function A(){return t.getRoutes().map(y=>y.record)}function j(y){return!!t.getRecordMatcher(y)}function M(y,N){if(N=Q({},N||c.value),typeof y=="string"){const g=ks(n,y,N.path),_=t.resolve({path:g.path},N),b=r.createHref(g.fullPath);return Q(g,_,{params:p(_.params),hash:Ln(g.hash),redirectedFrom:void 0,href:b})}let R;if(y.path!=null)R=Q({},y,{path:ks(n,y.path,N.path).path});else{const g=Q({},y.params);for(const _ in g)g[_]==null&&delete g[_];R=Q({},y,{params:d(g)}),N.params=d(N.params)}const k=t.resolve(R,N),G=y.hash||"";k.params=a(p(k.params));const f=hu(s,Q({},y,{hash:lu(G),path:k.path})),h=r.createHref(f);return Q({fullPath:f,hash:G,query:s===So?Tu(y.query):y.query||{}},k,{redirectedFrom:void 0,href:h})}function T(y){return typeof y=="string"?ks(n,y,c.value.path):Q({},y)}function L(y,N){if(u!==y)return fn(fe.NAVIGATION_CANCELLED,{from:N,to:y})}function P(y){return te(y)}function K(y){return P(Q(T(y),{replace:!0}))}function ee(y,N){const R=y.matched[y.matched.length-1];if(R&&R.redirect){const{redirect:k}=R;let G=typeof k=="function"?k(y,N):k;return typeof G=="string"&&(G=G.includes("?")||G.includes("#")?G=T(G):{path:G},G.params={}),Q({query:y.query,hash:y.hash,params:G.path!=null?{}:y.params},G)}}function te(y,N){const R=u=M(y),k=c.value,G=y.state,f=y.force,h=y.replace===!0,g=ee(R,k);if(g)return te(Q(T(g),{state:typeof g=="object"?Q({},G,g.state):G,force:f,replace:h}),N||R);const _=R;_.redirectedFrom=N;let b;return!f&&pu(s,k,R)&&(b=fn(fe.NAVIGATION_DUPLICATED,{to:_,from:k}),Ze(k,k,!0,!1)),(b?Promise.resolve(b):J(_,k)).catch(v=>dt(v)?dt(v,fe.NAVIGATION_GUARD_REDIRECT)?v:At(v):Y(v,_,k)).then(v=>{if(v){if(dt(v,fe.NAVIGATION_GUARD_REDIRECT))return te(Q({replace:h},T(v.to),{state:typeof v.to=="object"?Q({},G,v.to.state):G,force:f}),N||_)}else v=I(_,k,!0,h,G);return le(_,k,v),v})}function Ce(y,N){const R=L(y,N);return R?Promise.reject(R):Promise.resolve()}function $(y){const N=zt.values().next().value;return N&&typeof N.runWithContext=="function"?N.runWithContext(y):y()}function J(y,N){let R;const[k,G,f]=Pu(y,N);R=Ms(k.reverse(),"beforeRouteLeave",y,N);for(const g of k)g.leaveGuards.forEach(_=>{R.push(Ot(_,y,N))});const h=Ce.bind(null,y,N);return R.push(h),Ue(R).then(()=>{R=[];for(const g of o.list())R.push(Ot(g,y,N));return R.push(h),Ue(R)}).then(()=>{R=Ms(G,"beforeRouteUpdate",y,N);for(const g of G)g.updateGuards.forEach(_=>{R.push(Ot(_,y,N))});return R.push(h),Ue(R)}).then(()=>{R=[];for(const g of f)if(g.beforeEnter)if(Xe(g.beforeEnter))for(const _ of g.beforeEnter)R.push(Ot(_,y,N));else R.push(Ot(g.beforeEnter,y,N));return R.push(h),Ue(R)}).then(()=>(y.matched.forEach(g=>g.enterCallbacks={}),R=Ms(f,"beforeRouteEnter",y,N,$),R.push(h),Ue(R))).then(()=>{R=[];for(const g of i.list())R.push(Ot(g,y,N));return R.push(h),Ue(R)}).catch(g=>dt(g,fe.NAVIGATION_CANCELLED)?g:Promise.reject(g))}function le(y,N,R){l.list().forEach(k=>$(()=>k(y,N,R)))}function I(y,N,R,k,G){const f=L(y,N);if(f)return f;const h=N===xt,g=Xt?history.state:{};R&&(k||h?r.replace(y.fullPath,Q({scroll:h&&g&&g.scroll},G)):r.push(y.fullPath,G)),c.value=y,Ze(y,N,R,h),At()}let z;function _e(){z||(z=r.listen((y,N,R)=>{if(!kt.listening)return;const k=M(y),G=ee(k,kt.currentRoute.value);if(G){te(Q(G,{replace:!0,force:!0}),k).catch(wn);return}u=k;const f=c.value;Xt&&Su(Eo(f.fullPath,R.delta),bs()),J(k,f).catch(h=>dt(h,fe.NAVIGATION_ABORTED|fe.NAVIGATION_CANCELLED)?h:dt(h,fe.NAVIGATION_GUARD_REDIRECT)?(te(Q(T(h.to),{force:!0}),k).then(g=>{dt(g,fe.NAVIGATION_ABORTED|fe.NAVIGATION_DUPLICATED)&&!R.delta&&R.type===er.pop&&r.go(-1,!1)}).catch(wn),Promise.reject()):(R.delta&&r.go(-R.delta,!1),Y(h,k,f))).then(h=>{h=h||I(k,f,!1),h&&(R.delta&&!dt(h,fe.NAVIGATION_CANCELLED)?r.go(-R.delta,!1):R.type===er.pop&&dt(h,fe.NAVIGATION_ABORTED|fe.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),le(k,f,h)}).catch(wn)}))}let Fe=vn(),de=vn(),ne;function Y(y,N,R){At(y);const k=de.list();return k.length?k.forEach(G=>G(y,N,R)):console.error(y),Promise.reject(y)}function ut(){return ne&&c.value!==xt?Promise.resolve():new Promise((y,N)=>{Fe.add([y,N])})}function At(y){return ne||(ne=!y,_e(),Fe.list().forEach(([N,R])=>y?R(y):N()),Fe.reset()),y}function Ze(y,N,R,k){const{scrollBehavior:G}=e;if(!Xt||!G)return Promise.resolve();const f=!R&&Cu(Eo(y.fullPath,0))||(k||!R)&&history.state&&history.state.scroll||null;return gr().then(()=>G(y,N,f)).then(h=>h&&Eu(h)).catch(h=>Y(h,y,N))}const ke=y=>r.go(y);let Jt;const zt=new Set,kt={currentRoute:c,listening:!0,addRoute:m,removeRoute:x,clearRoutes:t.clearRoutes,hasRoute:j,getRoutes:A,resolve:M,options:e,push:P,replace:K,go:ke,back:()=>ke(-1),forward:()=>ke(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:de.add,isReady:ut,install(y){y.component("RouterLink",Qu),y.component("RouterView",tf),y.config.globalProperties.$router=kt,Object.defineProperty(y.config.globalProperties,"$route",{enumerable:!0,get:()=>ye(c)}),Xt&&!Jt&&c.value===xt&&(Jt=!0,P(r.location).catch(k=>{}));const N={};for(const k in xt)Object.defineProperty(N,k,{get:()=>c.value[k],enumerable:!0});y.provide(Es,kt),y.provide(Ar,si(N)),y.provide(nr,c);const R=y.unmount;zt.add(y),y.unmount=function(){zt.delete(y),zt.size<1&&(u=xt,z&&z(),z=null,c.value=xt,Jt=!1,ne=!1),R()}}};function Ue(y){return y.reduce((N,R)=>N.then(()=>$(R)),Promise.resolve())}return kt}function sf(){return ze(Es)}function Hf(e){return ze(Ar)}const rf=[{path:"/",name:"dashboard",component:()=>De(()=>import("./DashboardView-D27l8yqd.js"),__vite__mapDeps([0,1,2,3]))},{path:"/deployments",name:"deployments",component:()=>De(()=>import("./DeploymentsView-02Cg08fs.js"),__vite__mapDeps([4,1,3]))},{path:"/deployments/:id",component:()=>De(()=>import("./DeploymentDetailView-BjELdE9f.js"),__vite__mapDeps([5,6,7,8])),props:!0,children:[{path:"",name:"deployment",redirect:e=>`/deployments/${e.params.id}/overview`},{path:"overview",name:"d.overview",component:()=>De(()=>import("./OverviewTab-BrElTGDU.js"),__vite__mapDeps([9,6,7,1,3]))},{path:"config",name:"d.config",component:()=>De(()=>import("./ConfigTab-BOCoIOPW.js"),__vite__mapDeps([10,6,7,11]))},{path:"axes",name:"d.axes",component:()=>De(()=>import("./AxesTab-BRrPVCft.js"),__vite__mapDeps([12,6,7]))},{path:"requires",name:"d.requires",component:()=>De(()=>import("./RequiresTab-DB0yEAmP.js"),__vite__mapDeps([13,6,7]))},{path:"logs",name:"d.logs",component:()=>De(()=>import("./LogsTab-Bb2E4F-n.js"),__vite__mapDeps([14,6,7]))},{path:"danger",name:"d.danger",component:()=>De(()=>import("./DangerTab-dMsIXX7F.js"),__vite__mapDeps([15,6,7,16,8]))}]},{path:"/submit/:id?",name:"submit",component:()=>De(()=>import("./SubmitView-dblBZxuc.js"),__vite__mapDeps([17,7,16,8,11])),props:!0},{path:"/jobs",name:"jobs",component:()=>De(()=>import("./JobsView-0OjmomhQ.js"),__vite__mapDeps([18,1,2,3]))},{path:"/jobs/:jobId",name:"job",component:()=>De(()=>import("./JobDetailView-Ck89gkKn.js"),__vite__mapDeps([19,1,2,8])),props:!0},{path:"/settings",name:"settings",component:()=>De(()=>import("./SettingsView-CZvKTBtQ.js"),[])},{path:"/:pathMatch(.*)*",name:"not-found",component:()=>De(()=>import("./NotFoundView-3kRJpFYC.js"),[])}],of=nf({history:ku(),routes:rf,scrollBehavior:(e,t,n)=>n??{top:0}});let lf=0;const rn=qt([]);function _l(e){const t=rn.findIndex(n=>n.id===e);t>=0&&rn.splice(t,1)}function Uf(e,t,n={}){const s=++lf;rn.push({id:s,kind:e,text:t,to:n.to,toLabel:n.toLabel});const r=n.ms??(e==="error"?0:6e3);for(r>0&&setTimeout(()=>_l(s),r);rn.length>5;)rn.shift();return s}const cf={class:"toasts","aria-live":"polite","aria-atomic":"false"},af=["aria-label","onClick"],uf=Mn({__name:"ToastHost",setup(e){return(t,n)=>{const s=Ks("RouterLink");return pe(),Ve("div",cf,[re(Da,{name:"toast"},{default:Be(()=>[(pe(!0),Ve(ve,null,Gs(ye(rn),r=>(pe(),Ve("div",{key:r.id,class:us(["toast",r.kind])},[H("div",null,[H("div",null,_t(r.text),1),r.to?(pe(),ln(s,{key:0,to:r.to},{default:Be(()=>[Xn(_t(r.toLabel??"Open")+" →",1)]),_:2},1032,["to"])):Bt("",!0)]),H("button",{class:"x","aria-label":`dismiss: ${r.text}`,onClick:o=>ye(_l)(r.id)},"✕",8,af)],2))),128))]),_:1})])}}}),ff=900;function ko(e){const t=e;if(!t)return!1;const n=t.tagName;return n==="INPUT"||n==="TEXTAREA"||n==="SELECT"||t.isContentEditable===!0}function df(){const e=sf(),t=ri(!1);let n=0,s="";const r=o=>{if(o.key==="Escape"){t.value&&(t.value=!1,o.preventDefault()),ko(o.target)&&o.target.blur();return}if(o.metaKey||o.ctrlKey||o.altKey||ko(o.target))return;const i=Date.now();if(s==="g"&&i-n<ff){s="";const l={d:"/deployments",j:"/jobs",h:"/",s:"/settings",n:"/submit"}[o.key];l&&(o.preventDefault(),e.push(l));return}if(o.key==="g"){s="g",n=i;return}if(s="",o.key==="?"){o.preventDefault(),t.value=!t.value;return}if(o.key==="/"){const l=document.querySelector("[data-search]");l&&(o.preventDefault(),l.focus(),l.select())}};return gs(()=>document.addEventListener("keydown",r)),ms(()=>document.removeEventListener("keydown",r)),{sheetOpen:t}}const hf=[{keys:"?",what:"Open or close this sheet"},{keys:"g h",what:"Go to the dashboard"},{keys:"g d",what:"Go to deployments"},{keys:"g j",what:"Go to jobs"},{keys:"g n",what:"Go to submit"},{keys:"g s",what:"Go to settings"},{keys:"/",what:"Focus the search box on this view"},{keys:"Esc",what:"Close this sheet, or leave the field you are typing in"}],pf={class:"sheet"},gf={class:"row"},mf=Mn({__name:"ShortcutSheet",props:{open:{type:Boolean}},emits:["close"],setup(e,{emit:t}){const n=t;return(s,r)=>(pe(),ln(Xi,{name:"fade"},{default:Be(()=>[e.open?(pe(),Ve("div",{key:0,class:"scrim",role:"dialog","aria-modal":"true","aria-label":"Keyboard shortcuts",onClick:r[1]||(r[1]=$a(o=>n("close"),["self"]))},[H("div",pf,[H("div",gf,[r[2]||(r[2]=H("h2",{style:{"font-size":"var(--t-lg)","font-weight":"650"}},"Keyboard shortcuts",-1)),r[3]||(r[3]=H("span",{class:"grow"},null,-1)),H("button",{class:"ghost sm",onClick:r[0]||(r[0]=o=>n("close"))},"Close")]),H("dl",null,[(pe(!0),Ve(ve,null,Gs(ye(hf),o=>(pe(),Ve(ve,{key:o.keys},[H("dt",null,[(pe(!0),Ve(ve,null,Gs(o.keys.split(" "),i=>(pe(),Ve("kbd",{key:i,style:{"margin-left":"4px"}},_t(i),1))),128))]),H("dd",null,_t(o.what),1)],64))),128))])])])):Bt("",!0)]),_:1}))}});function vf(e,t=6e3){let n;const s=()=>{n!==void 0&&clearInterval(n),n=void 0},r=()=>{s(),n=setInterval(e,t)},o=()=>{document.visibilityState==="visible"?(e(),r()):s()};gs(()=>{e(),document.visibilityState==="visible"&&r(),document.addEventListener("visibilitychange",o)}),ms(()=>{s(),document.removeEventListener("visibilitychange",o)})}const Lt={token:"pstack.ui.token",apiBase:"pstack.ui.apiBase",theme:"pstack.ui.theme",motion:"pstack.ui.motion"};function ns(e,t){try{return localStorage.getItem(e)??t}catch{return t}}function ss(e,t){try{t?localStorage.setItem(e,t):localStorage.removeItem(e)}catch{}}const Vs=ns(Lt.theme,"system"),Fs=ns(Lt.motion,"system"),we=qt({token:ns(Lt.token,""),apiBase:ns(Lt.apiBase,""),theme:Vs==="dark"||Vs==="light"?Vs:"system",motion:Fs==="full"||Fs==="none"?Fs:"system"});function yl(){const e=document.documentElement;we.theme==="system"?delete e.dataset.theme:e.dataset.theme=we.theme,we.motion==="system"?delete e.dataset.motion:e.dataset.motion=we.motion}Kt(()=>we.token,e=>ss(Lt.token,e));Kt(()=>we.apiBase,e=>ss(Lt.apiBase,e));Kt(()=>[we.theme,we.motion],()=>{ss(Lt.theme,we.theme==="system"?"":we.theme),ss(Lt.motion,we.motion==="system"?"":we.motion),yl()});yl();function $f(e,t={}){const n=new URLSearchParams;for(const r of e)r.k&&n.set(r.k,r.v??"");for(const[r,o]of Object.entries(t))n.set(r,String(o));const s=n.toString();return s?`?${s}`:""}function bl(e){const t=we.apiBase.replace(/\/$/,"");return t?t+e:e}async function Hn(e,t,n){const s={};e!=="GET"&&(s["content-type"]="application/json",we.token&&(s.authorization=`Bearer ${we.token}`));try{const r=await fetch(bl(t),{method:e,headers:s,body:n===void 0?void 0:JSON.stringify(n)}),o=await r.text();let i=null;try{i=o?JSON.parse(o):null}catch{}return i===null&&o?{status:r.status,ok:r.ok,body:{},raw:o,notJson:!0}:{status:r.status,ok:r.ok,body:i??{},raw:o,notJson:!1}}catch(r){return{status:0,ok:!1,body:{error:`unreachable: ${r.message}`},raw:"",notJson:!1}}}const wr={get:e=>Hn("GET",e),post:(e,t)=>Hn("POST",e,t??{}),put:(e,t)=>Hn("PUT",e,t),del:e=>Hn("DELETE",e),url:bl};function xr(e,t){if(e.status===0)return e.body.error??"unreachable";if(e.status===401)return`${t}: 401 unauthorized — set the bearer token in Settings.`;if(e.notJson)return`${t}: HTTP ${e.status}, and the response was not JSON. Something other than the pstack API answered — a proxy, or an error page.
27
-
28
- ${e.raw.slice(0,400)}`;const n=e.body.error;return e.status===404&&(!n||n==="not found")?`${t}: 404 — no such resource, or this build of the API has no such route yet.`:n?`${t}: ${n}`:`${t}: HTTP ${e.status}`}function Kf(e){const t=e.error??"HTTP 409 (no message)",n=e.stack??"";return e.kind?{kind:"shared",text:t,stack:n,deployments:[]}:e.containers!==void 0?{kind:"containers",text:t,stack:n,deployments:[]}:e.deployments?{kind:"referenced",text:t,stack:n,deployments:e.deployments}:{kind:"other",text:t,stack:n,deployments:[]}}const ae=qt({health:null,healthError:"",deployments:[],deploymentsError:"",deploymentsLoaded:!1,jobs:[],jobsError:"",jobsLoaded:!1});async function _f(){const e=await wr.get("/api/health");e.ok?(ae.health=e.body,ae.healthError=""):(ae.health=null,ae.healthError=xr(e,"GET /api/health"))}async function yf(){const e=await wr.get("/api/deployments");if(ae.deploymentsLoaded=!0,!e.ok){ae.deploymentsError=xr(e,"GET /api/deployments");return}ae.deploymentsError="",ae.deployments=(e.body.deployments??[]).map(t=>({...t,kind:t.kind==="shared"?"shared":"isolated",busy:t.busy??null,running:t.running??null,stack:t.stack??null}))}async function bf(){const e=await wr.get("/api/jobs");if(ae.jobsLoaded=!0,!e.ok){ae.jobsError=xr(e,"GET /api/jobs");return}ae.jobsError="",ae.jobs=e.body.jobs??[]}const Gf=Ne(()=>{const e={total:0,isolated:0,shared:0,running:0,busy:0,unknown:0,unresolved:0};for(const t of ae.deployments)e.total++,t.kind==="shared"?e.shared++:e.isolated++,t.busy===!0&&e.busy++,t.running===!0&&e.running++,(t.busy===null||t.running===null)&&e.unknown++,t.unresolved&&e.unresolved++;return e}),Wf=Ne(()=>ae.jobs.filter(e=>e.state==="leaked"));function qf(e){return ae.deployments.find(t=>t.id===e)}const Ef={class:"shell"},Sf={class:"rail"},Cf={"aria-label":"Sections"},Af={class:"count"},wf={class:"count"},xf={class:"foot"},Rf={key:0},Tf={key:1,class:"mute"},Of={key:2},Pf={key:3,class:"mono"},If={key:4,class:"s-failed"},Nf={id:"main",class:"view"},Lf=Mn({__name:"App",setup(e){const{sheetOpen:t}=df();vf(()=>{yf(),bf()},7e3),_f();const n=Ne(()=>ae.jobs.filter(r=>r.state==="running").length),s=Ne(()=>{var r;return((r=ae.health)==null?void 0:r.authEnforced)===!0&&!we.token});return(r,o)=>{var c;const i=Ks("RouterLink"),l=Ks("RouterView");return pe(),Ve(ve,null,[o[11]||(o[11]=H("a",{class:"skip",href:"#main"},"Skip to content",-1)),H("div",Ef,[H("aside",Sf,[re(i,{to:"/",class:"brand"},{default:Be(()=>[...o[2]||(o[2]=[H("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[H("path",{d:"M4 7.5 12 3l8 4.5v9L12 21l-8-4.5v-9Z",stroke:"currentColor","stroke-width":"1.6","stroke-linejoin":"round"}),H("path",{d:"M12 12v9M4 7.5 12 12l8-4.5",stroke:"currentColor","stroke-width":"1.6"})],-1),Xn(" pstack ",-1)])]),_:1}),H("nav",Cf,[re(i,{to:"/",class:"navlink",title:"g h"},{default:Be(()=>[...o[3]||(o[3]=[H("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[H("path",{d:"M4 12 12 4l8 8v8H4v-8Z",stroke:"currentColor","stroke-width":"1.7","stroke-linejoin":"round"})],-1),H("span",null,"Dashboard",-1)])]),_:1}),re(i,{to:"/deployments",class:"navlink",title:"g d"},{default:Be(()=>[o[4]||(o[4]=H("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[H("rect",{x:"3",y:"4",width:"18",height:"6",rx:"2",stroke:"currentColor","stroke-width":"1.7"}),H("rect",{x:"3",y:"14",width:"18",height:"6",rx:"2",stroke:"currentColor","stroke-width":"1.7"})],-1)),o[5]||(o[5]=H("span",null,"Deployments",-1)),H("span",Af,_t(ye(ae).deployments.length),1)]),_:1}),re(i,{to:"/jobs",class:"navlink",title:"g j"},{default:Be(()=>[o[6]||(o[6]=H("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[H("circle",{cx:"12",cy:"12",r:"8",stroke:"currentColor","stroke-width":"1.7"}),H("path",{d:"M12 8v4l3 2",stroke:"currentColor","stroke-width":"1.7","stroke-linecap":"round"})],-1)),o[7]||(o[7]=H("span",null,"Jobs",-1)),H("span",wf,_t(n.value?`${n.value}▸`:ye(ae).jobs.length),1)]),_:1}),re(i,{to:"/submit",class:"navlink",title:"g n"},{default:Be(()=>[...o[8]||(o[8]=[H("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[H("path",{d:"M12 5v14M5 12h14",stroke:"currentColor","stroke-width":"1.7","stroke-linecap":"round"})],-1),H("span",null,"Submit",-1)])]),_:1}),re(i,{to:"/settings",class:"navlink",title:"g s"},{default:Be(()=>[...o[9]||(o[9]=[H("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[H("circle",{cx:"12",cy:"12",r:"3",stroke:"currentColor","stroke-width":"1.7"}),H("path",{d:"M12 3v2m0 14v2M3 12h2m14 0h2M5.6 5.6l1.4 1.4m10 10 1.4 1.4m0-12.8-1.4 1.4m-10 10-1.4 1.4",stroke:"currentColor","stroke-width":"1.7","stroke-linecap":"round"})],-1),H("span",null,"Settings",-1)])]),_:1})]),H("div",xf,[s.value?(pe(),Ve("div",Rf,[re(i,{to:"/settings",class:"badge warn"},{default:Be(()=>[...o[10]||(o[10]=[Xn("token required",-1)])]),_:1})])):((c=ye(ae).health)==null?void 0:c.authEnforced)===!1?(pe(),Ve("div",Tf," auth not enforced — loopback-only ")):Bt("",!0),ye(ae).health?(pe(),Ve("div",Of,"v"+_t(ye(ae).health.version),1)):Bt("",!0),ye(ae).health?(pe(),Ve("div",Pf,_t(ye(ae).health.dataDir),1)):Bt("",!0),ye(ae).healthError?(pe(),Ve("div",If,"API unreachable")):Bt("",!0),H("div",null,[H("button",{class:"ghost sm",onClick:o[0]||(o[0]=u=>t.value=!0)},"? shortcuts")])])]),H("main",Nf,[re(l,null,{default:Be(({Component:u})=>[re(Xi,{name:"view",mode:"out-in"},{default:Be(()=>[(pe(),ln(Ac(u)))]),_:2},1024)]),_:1})])]),re(uf),re(mf,{open:ye(t),onClose:o[1]||(o[1]=u=>t.value=!1)},null,8,["open"])],64)}}});Wa(Lf).use(of).mount("#app");export{Ff as A,Kt as B,sf as C,Ac as D,Mf as E,ve as F,$f as G,Uf as H,yf as I,Kf as J,we as K,qt as L,qf as M,jf as N,Df as O,Ci as P,_f as Q,Hf as R,Xi as T,H as a,ye as b,Ve as c,Mn as d,Xn as e,Bt as f,ln as g,re as h,Gf as i,ri as j,wr as k,Wf as l,Ne as m,Ks as n,pe as o,xr as p,ir as q,Gs as r,ae as s,_t as t,vf as u,us as v,Be as w,kf as x,Vf as y,Bf as z};
29
- //# sourceMappingURL=index--8-Mcu3f.js.map