@epic-web/workshop-app 6.78.1 → 6.78.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.
- package/build/client/assets/cache-BymCGtPO.js +2 -0
- package/build/client/assets/cache-BymCGtPO.js.map +1 -0
- package/build/client/assets/{manifest-5068a5dd.js → manifest-27726850.js} +1 -1
- package/build/server/index.js +156 -47
- package/build/server/index.js.map +1 -1
- package/package.json +3 -3
- package/build/client/assets/cache-muVFgDkV.js +0 -2
- package/build/client/assets/cache-muVFgDkV.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{h as T}from"./chunk-4LKRSAEJ-5b-X0-W6.js";import{w as H,f as E,d as $}from"./chunk-JZWAC4HX-BRaE0UIv.js";import{j as e}from"./jsx-runtime-C5WNSv3b.js";import{r as m}from"./index-CqIc3cxq.js";import{C as F}from"./client-only-CTGgqT3G.js";import{i as W,I as D,B as R}from"./button-BNnUtmu5.js";import{I as g,f as k,e as U,c as q,h as J,i as K,b as A,j as P,k as G}from"./misc-DNNpiA4n.js";import{L as _}from"./launch-editor-CODm6xV9.js";import"./pe-FSGstb4x.js";import"./progress-bar-CPpSmw1y.js";import"./root-loader-DCpknoYz.js";function X({selectedWorkshops:t,availableWorkshops:o,currentWorkshopId:l}){const[d,s]=$(),i=(a,x)=>{const c=x?[...t,a]:t.filter(j=>j!==a),h=new URLSearchParams(d);c.length>0?h.set("workshops",c.join(",")):h.delete("workshops"),s(h)};return e.jsxs("div",{className:"mb-6",children:[e.jsx("h3",{className:"mb-3 text-lg font-semibold",children:"Workshop Filter"}),e.jsx("div",{className:"flex flex-wrap gap-3",children:o.map(a=>e.jsxs("label",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",checked:t.includes(a),onChange:x=>i(a,x.target.checked),className:"rounded"}),e.jsxs("span",{className:`text-sm ${a===l?"text-primary font-bold":""}`,children:[a," ",a===l?"(current)":null]})]},a))})]})}function Z({filterQuery:t}){const[o,l]=$(),[d,s]=m.useState(t),i=m.useRef(null);m.useEffect(()=>{s(t)},[t]);const a=c=>{const h=new URLSearchParams(o);c?h.set("q",c):h.delete("q"),l(h)},x=()=>{s(""),a(""),i.current?.focus()};return e.jsxs("div",{className:"mb-6",children:[e.jsx("h3",{className:"mb-3 text-lg font-semibold",children:"Search Cache Entries"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{ref:i,type:"text",placeholder:"Search by key or cache name...",value:d,onChange:c=>{s(c.target.value),a(c.target.value)},className:"border-border bg-background text-foreground focus:ring-ring flex-1 rounded-md border px-3 py-2 focus:ring-2 focus:outline-none"}),d?e.jsx(D,{onClick:x,title:"Clear search",children:e.jsx(g,{name:"Close",className:"h-4 w-4"})}):null]})]})}function Q({workshopId:t,cacheName:o,filename:l,entryKey:d}){const s=E(),i=E(),[a,x]=m.useState(null),[c,h]=m.useState(null),[j,n]=m.useState(!1),[r,b]=m.useState(!1),[N,v]=m.useState(!1),f=m.useRef(null),p=m.useRef(i.state),y=`${t}/${o}/${l}`,w=s.data?.entry?.value,S=s.state==="loading",I=!!s.data?.entry,V=s.data?.entry===null,M=r&&N&&!S&&s.data===void 0&&s.state==="idle";m.useEffect(()=>{s.state!=="idle"&&v(!0)},[s.state]),m.useEffect(()=>{if(I){const u=JSON.stringify(w,null,2)??"";x(u),h(u),n(!1)}},[I,w]),m.useEffect(()=>{const u=i.state;p.current!=="idle"&&u==="idle"&&i.data?.status==="success"&&(h(f.current??""),n(!1)),p.current=u},[i.state,i.data?.status]);const O=()=>{a!==null&&(f.current=a,i.submit({intent:"update-entry",workshopId:t,cacheName:o,filename:l,newValue:a},{method:"POST"}))},L=u=>{if(x(u),c===null){n(!1);return}n(u!==c)},B=()=>{c!==null&&(x(c),n(!1))},z=u=>{u.currentTarget.open&&!r?(s.load(T("/admin/cache/*",{"*":y})),b(!0)):u.currentTarget.open||(b(!1),v(!1))},Y=()=>{s.load(T("/admin/cache/*",{"*":y}))};return e.jsxs("details",{className:"mt-2",onToggle:z,children:[e.jsx("summary",{className:"text-muted-foreground hover:text-foreground cursor-pointer text-sm",children:"Edit entry details"}),e.jsx("div",{className:"border-border bg-muted mt-2 space-y-3 rounded border p-3",children:S?e.jsx("p",{className:"text-muted-foreground text-sm",children:"Loading entry..."}):M?e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-destructive text-sm",children:"Failed to load entry details."}),e.jsx(R,{varient:"mono",onClick:Y,children:"Retry"})]}):V?e.jsx("p",{className:"text-destructive text-sm",children:"Entry details were not found."}):I?e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"mb-1 block text-sm font-medium",children:"Key:"}),e.jsx("code",{className:"bg-background rounded border px-2 py-1 text-sm",children:d})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1 block text-sm font-medium",children:"Value:"}),e.jsx("textarea",{value:a??"",onChange:u=>L(u.target.value),className:"resize-vertical border-border bg-background text-foreground focus:ring-ring h-32 w-full rounded border p-2 font-mono text-sm focus:ring-2 focus:outline-none",placeholder:"Enter JSON value..."})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(R,{varient:"primary",onClick:O,disabled:!j||i.state!=="idle",children:i.state!=="idle"?"Saving...":"Save"}),e.jsx(R,{varient:"mono",onClick:B,disabled:!j,children:"Reset"})]})]}):e.jsx("p",{className:"text-muted-foreground text-sm",children:"Open to load entry details."})})]})}function ee({skippedFiles:t,workshopId:o,cacheName:l}){const d=E();return t.length===0?null:e.jsxs("div",{className:"border-warning bg-warning mt-4 rounded border p-3",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx(g,{name:"TriangleAlert",className:"text-warning-foreground h-4 w-4"}),e.jsxs("h5",{className:"text-warning-foreground font-medium",children:["Skipped Files (",t.length,")"]})]}),e.jsx("p",{className:"text-warning-foreground/80 mb-3 text-sm",children:"These cache files were skipped because they exceed the 3MB size limit:"}),e.jsx("div",{className:"space-y-2",children:t.map(s=>e.jsxs("div",{className:"border-warning/20 bg-warning/5 flex items-center justify-between rounded border p-2",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-warning-foreground truncate font-mono text-sm font-medium",children:s.filename}),e.jsxs("div",{className:"text-warning-foreground/70 text-xs",children:[s.error," • Size:"," ",e.jsx("span",{title:`${s.size} bytes`,children:k(s.size)})]})]}),e.jsx("div",{className:"ml-2 flex shrink-0",children:e.jsx(C,{onConfirm:()=>{d.submit({intent:"delete-entry",workshopId:o,cacheName:l,filename:s.filename},{method:"POST"})},title:"Delete large cache file",className:"text-destructive-foreground hover:bg-destructive/20 hover:text-destructive-foreground",children:e.jsx(g,{name:"Remove",className:"h-4 w-4"})})})]},s.filename))})]})}const fe=H(function({loaderData:o}){const l=E(),d=(n,r,b)=>{l.submit({intent:"delete-entry",workshopId:n,cacheName:r,filename:b},{method:"POST"})},s=(n,r)=>{l.submit({intent:"delete-cache",workshopId:n,cacheName:r},{method:"POST"})},i=n=>{l.submit({intent:"delete-workshop-cache",workshopId:n},{method:"POST"})},{currentWorkshopId:a,filteredCaches:x,filterQuery:c,selectedWorkshops:h,availableWorkshops:j}=o;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"mb-2 text-2xl font-bold",children:"Cache Management"}),e.jsxs("p",{className:"text-muted-foreground",children:["Current Workshop:"," ",e.jsx("span",{className:"text-foreground font-semibold",children:a})]})]}),e.jsx(X,{selectedWorkshops:h,availableWorkshops:j,currentWorkshopId:a}),e.jsx(Z,{filterQuery:c}),l.data?.status==="success"?e.jsx("div",{className:"border-border bg-success text-success-foreground rounded border p-4",children:l.data.message}):null,l.data?.status==="error"?e.jsx("div",{className:"border-border bg-destructive text-destructive-foreground rounded border p-4",children:l.data.error}):null,x.length===0?e.jsx("div",{className:"text-muted-foreground py-8 text-center",children:"No caches found matching your criteria."}):null,e.jsx("div",{className:"space-y-6",children:x.map(n=>e.jsxs("details",{open:n.workshopId===a,children:[e.jsx("summary",{className:"border-border bg-card hover:bg-accent cursor-pointer rounded-lg border p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-card-foreground flex items-center gap-2 text-lg font-semibold",children:[e.jsx(g,{name:"Files",className:"h-5 w-5"}),n.workshopId==="global"?"Global Caches":n.workshopId,n.workshopId===a?e.jsx("span",{className:"bg-primary text-primary-foreground rounded px-2 py-1 text-xs",children:"Current"}):null]}),e.jsx(C,{onConfirm:()=>i(n.workshopId),title:"Delete all workshop caches",children:e.jsx(g,{name:"Remove",className:"h-4 w-4"})})]})}),e.jsx("div",{className:"mt-4 space-y-4 pl-4",children:n.caches.map(r=>{const b=r.entries.reduce((f,p)=>f+(p.size||0),0),N=(r.skippedFiles||[]).reduce((f,p)=>f+p.size,0),v=b+N;return e.jsxs("details",{className:"bg-muted rounded-md",children:[e.jsx("summary",{className:"hover:bg-accent cursor-pointer p-3",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h4",{className:"text-muted-foreground flex items-center gap-2 font-medium",children:[e.jsx(g,{name:"Files",className:"h-4 w-4"}),r.name,e.jsxs("span",{className:"text-sm",children:["(",r.entries.length," entr",r.entries.length===1?"y":"ies",")"]}),v>0?e.jsxs("span",{className:"text-muted-foreground text-sm",children:["•"," ",e.jsx("span",{title:`${v} bytes`,children:k(v)})," ","total",N>0?e.jsxs("span",{className:"text-warning",children:[" ","(",e.jsx("span",{title:`${N} bytes`,children:k(N)})," ","skipped)"]}):null]}):null]}),e.jsx(C,{onConfirm:()=>s(n.workshopId,r.name),title:"Delete cache",children:e.jsx(g,{name:"Remove",className:"h-4 w-4"})})]})}),e.jsxs("div",{className:"p-3 pt-0",children:[r.entries.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No entries match your search."}):null,r.skippedFiles&&r.skippedFiles.length>0?e.jsx(ee,{skippedFiles:r.skippedFiles,workshopId:n.workshopId,cacheName:r.name}):null,e.jsx("div",{className:"space-y-2",children:r.entries.map(({key:f,metadata:p,filename:y,size:w,filepath:S})=>e.jsxs("div",{className:"border-border bg-background rounded border p-3",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"mb-1 flex items-center gap-2",children:[e.jsx("div",{className:"truncate font-mono text-sm font-medium",title:f,children:f}),w?e.jsx("span",{className:"bg-muted text-muted-foreground inline-flex items-center rounded px-1.5 py-0.5 text-xs whitespace-nowrap",title:`${w} bytes`,children:k(w)}):null]}),e.jsx(se,{metadata:p})]}),e.jsxs("div",{className:"ml-4 flex shrink-0 gap-1",children:[e.jsx("a",{href:T("/admin/cache/*",{"*":`${n.workshopId}/${r.name}/${y}`}),target:"_blank",rel:"noopener noreferrer",className:"border-border bg-background text-foreground hover:bg-muted focus:ring-ring inline-flex h-8 w-8 items-center justify-center rounded border focus:ring-2 focus:outline-none",title:"View JSON",children:e.jsx(g,{name:"ExternalLink",className:"h-4 w-4"})}),S?e.jsx(_,{file:S,className:W,children:e.jsx(g,{name:"Files",className:"h-4 w-4",title:"Open in editor"})}):null,e.jsx(C,{onConfirm:()=>d(n.workshopId,r.name,y),title:"Delete entry",children:e.jsx(g,{name:"Remove",className:"h-4 w-4"})})]})]}),e.jsx(Q,{workshopId:n.workshopId,cacheName:r.name,filename:y,entryKey:f})]},f))})]})]},r.name)})})]},n.workshopId))})]})});function se({metadata:t}){const o=J(),[,l]=m.useState(Date.now()),d=K(t);A(()=>{l(Date.now())},1e3);const s=o(t.createdTime),i=d?G(d):{text:"Never",isExpired:!1,isExpiringSoon:!1};return e.jsxs("div",{className:"text-muted-foreground flex flex-col gap-1 text-xs",children:[e.jsxs("div",{children:["Created: ",s.format("MMM D, YYYY HH:mm:ss")," ",e.jsx(F,{children:()=>`(${s.fromNow()})`})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[t.ttl!==void 0&&t.ttl!==null?e.jsxs("span",{children:["TTL:"," ",t.ttl===1/0?"Forever":e.jsx("span",{title:`${t.ttl}ms`,children:P(t.ttl)})]}):null,t.swr!==void 0?e.jsxs("span",{children:["SWR:"," ",e.jsx("span",{title:`${t.swr}ms`,children:P(t.swr)})]}):null,e.jsx("div",{className:`inline-flex w-auto rounded-full px-2 py-[2px] font-medium ${i.isExpired?"bg-destructive text-destructive-foreground":i.isExpiringSoon?"bg-warning text-warning-foreground":"text-foreground"}`,children:d?e.jsxs(e.Fragment,{children:["Expires: ",o(d).format("MMM D, YYYY HH:mm:ss")," (",e.jsx("span",{className:"tabular-nums",children:e.jsx(F,{children:()=>i.text})}),")"]}):"Expires: Never"})]})]})}function C({onConfirm:t,children:o,className:l,...d}){const s=U();return e.jsx(D,{...s.getButtonProps({onClick:s.doubleCheck?t:void 0,...d}),className:q(s.doubleCheck?"bg-destructive text-destructive-foreground":null,l),children:s.doubleCheck?"✓":o})}export{fe as default};
|
|
2
|
+
//# sourceMappingURL=cache-BymCGtPO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-BymCGtPO.js","sources":["../../../app/routes/admin+/cache.tsx"],"sourcesContent":["import {\n\tdeleteCacheEntry,\n\tdeleteWorkshopCache,\n\tgetAllWorkshopCaches,\n\tgetGlobalCaches,\n\tglobalCacheDirectoryExists,\n\tupdateCacheEntry,\n} from '@epic-web/workshop-utils/cache.server'\nimport { getEnv } from '@epic-web/workshop-utils/env.server'\nimport { getErrorMessage } from '@epic-web/workshop-utils/utils'\nimport { useEffect, useRef, useState } from 'react'\nimport { href, useFetcher, useSearchParams } from 'react-router'\nimport { ClientOnly } from 'remix-utils/client-only'\nimport { z } from 'zod'\nimport {\n\tButton,\n\tIconButton,\n\ticonButtonClassName,\n} from '#app/components/button.tsx'\nimport { Icon } from '#app/components/icons.tsx'\nimport { LaunchEditor } from '#app/routes/launch-editor.tsx'\nimport {\n\tcalculateExpirationTime,\n\tcn,\n\tensureUndeployed,\n\tformatDuration,\n\tformatFileSize,\n\tformatTimeRemaining,\n\tuseDayjs,\n\tuseDoubleCheck,\n\tuseInterval,\n} from '#app/utils/misc.tsx'\nimport { type Route } from './+types/cache.ts'\n\nfunction normalizeSearchQuery(query: string) {\n\treturn query.trim().toLowerCase()\n}\n\nfunction entryValueMatches(value: unknown, query: string) {\n\tif (!query) return true\n\tif (value === null || value === undefined) return false\n\tif (typeof value === 'string') {\n\t\treturn value.toLowerCase().includes(query)\n\t}\n\ttry {\n\t\tconst serialized = JSON.stringify(value)\n\t\tif (!serialized) return false\n\t\treturn serialized.toLowerCase().includes(query)\n\t} catch {\n\t\treturn false\n\t}\n}\n\nexport async function loader({ request }: Route.LoaderArgs) {\n\tensureUndeployed()\n\tconst currentWorkshopId = getEnv().EPICSHOP_WORKSHOP_INSTANCE_ID\n\tconst allWorkshopCaches = await getAllWorkshopCaches()\n\tconst globalCaches = await getGlobalCaches()\n\tconst allCaches = [...allWorkshopCaches, ...globalCaches]\n\n\tconst url = new URL(request.url)\n\tconst filterQuery = url.searchParams.get('q') || ''\n\n\t// Ensure 'global' is always in available workshops if global cache directory exists\n\tconst availableWorkshopIds = new Set(allCaches.map((w) => w.workshopId))\n\tconst globalDirExists = await globalCacheDirectoryExists()\n\tif (globalDirExists) {\n\t\tavailableWorkshopIds.add('global')\n\t}\n\n\tconst selectedWorkshops = url.searchParams\n\t\t.get('workshops')\n\t\t?.split(',')\n\t\t.filter(Boolean) || [\n\t\tcurrentWorkshopId,\n\t\t...(globalDirExists ? ['global'] : []),\n\t]\n\tconst normalizedQuery = normalizeSearchQuery(filterQuery)\n\n\t// Filter caches based on search query and selected workshops\n\tconst filteredCaches = allCaches\n\t\t.filter(\n\t\t\t(workshopCache) =>\n\t\t\t\tselectedWorkshops.includes(workshopCache.workshopId) ||\n\t\t\t\tselectedWorkshops.length === 0,\n\t\t)\n\t\t.map((workshopCache) => ({\n\t\t\t...workshopCache,\n\t\t\tcaches: workshopCache.caches\n\t\t\t\t.map((cache) => {\n\t\t\t\t\tconst cacheNameMatches =\n\t\t\t\t\t\tnormalizedQuery === ''\n\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t: cache.name.toLowerCase().includes(normalizedQuery)\n\t\t\t\t\tconst entries = cache.entries\n\t\t\t\t\t\t.filter((entry) => {\n\t\t\t\t\t\t\tif (normalizedQuery === '') return true\n\t\t\t\t\t\t\tif (cacheNameMatches) return true\n\t\t\t\t\t\t\tif (entry.key.toLowerCase().includes(normalizedQuery)) return true\n\t\t\t\t\t\t\treturn entryValueMatches(entry.entry.value, normalizedQuery)\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.map((entry) => ({\n\t\t\t\t\t\t\tkey: entry.key,\n\t\t\t\t\t\t\tfilename: entry.filename,\n\t\t\t\t\t\t\tsize: entry.size,\n\t\t\t\t\t\t\tfilepath: entry.filepath,\n\t\t\t\t\t\t\tmetadata: entry.entry.metadata,\n\t\t\t\t\t\t}))\n\t\t\t\t\treturn { ...cache, entries }\n\t\t\t\t})\n\t\t\t\t.filter((cache) => cache.entries.length > 0 || normalizedQuery === ''),\n\t\t}))\n\t\t.filter(\n\t\t\t(workshopCache) =>\n\t\t\t\tworkshopCache.caches.length > 0 || normalizedQuery === '',\n\t\t)\n\n\treturn {\n\t\tcurrentWorkshopId,\n\t\tfilteredCaches,\n\t\tfilterQuery,\n\t\tselectedWorkshops,\n\t\tavailableWorkshops: Array.from(availableWorkshopIds),\n\t}\n}\n\nconst ActionSchema = z.discriminatedUnion('intent', [\n\tz.object({\n\t\tintent: z.literal('delete-entry'),\n\t\tworkshopId: z.string(),\n\t\tcacheName: z.string(),\n\t\tfilename: z.string(),\n\t}),\n\tz.object({\n\t\tintent: z.literal('delete-cache'),\n\t\tworkshopId: z.string(),\n\t\tcacheName: z.string(),\n\t}),\n\tz.object({\n\t\tintent: z.literal('delete-workshop-cache'),\n\t\tworkshopId: z.string(),\n\t}),\n\tz.object({\n\t\tintent: z.literal('update-entry'),\n\t\tworkshopId: z.string(),\n\t\tcacheName: z.string(),\n\t\tfilename: z.string(),\n\t\tnewValue: z.string(),\n\t}),\n])\n\nexport async function action({ request }: Route.ActionArgs) {\n\tensureUndeployed()\n\n\tconst formData = await request.formData()\n\tconst rawData = Object.fromEntries(formData.entries())\n\tconst result = ActionSchema.safeParse(rawData)\n\n\tif (!result.success) {\n\t\treturn { status: 'error', error: 'Invalid request' } as const\n\t}\n\n\tconst data = result.data\n\n\ttry {\n\t\tswitch (data.intent) {\n\t\t\tcase 'delete-entry': {\n\t\t\t\tconst path = `${data.workshopId}/${data.cacheName}/${data.filename}`\n\t\t\t\tawait deleteCacheEntry(path)\n\t\t\t\treturn { status: 'success', message: 'Cache entry deleted' } as const\n\t\t\t}\n\t\t\tcase 'delete-cache': {\n\t\t\t\tawait deleteWorkshopCache(data.workshopId, data.cacheName)\n\t\t\t\treturn { status: 'success', message: 'Cache deleted' } as const\n\t\t\t}\n\t\t\tcase 'delete-workshop-cache': {\n\t\t\t\tawait deleteWorkshopCache(data.workshopId)\n\t\t\t\treturn { status: 'success', message: 'Workshop cache deleted' } as const\n\t\t\t}\n\t\t\tcase 'update-entry': {\n\t\t\t\tconst path = `${data.workshopId}/${data.cacheName}/${data.filename}`\n\t\t\t\ttry {\n\t\t\t\t\tconst parsedValue = JSON.parse(data.newValue)\n\t\t\t\t\tawait updateCacheEntry(path, parsedValue)\n\t\t\t\t\treturn { status: 'success', message: 'Cache entry updated' } as const\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstatus: 'error',\n\t\t\t\t\t\terror: getErrorMessage(error, 'Invalid JSON value'),\n\t\t\t\t\t} as const\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Cache action error:', error)\n\t\treturn { status: 'error', error: 'Operation failed' } as const\n\t}\n}\n\nfunction WorkshopChooser({\n\tselectedWorkshops,\n\tavailableWorkshops,\n\tcurrentWorkshopId,\n}: {\n\tselectedWorkshops: string[]\n\tavailableWorkshops: string[]\n\tcurrentWorkshopId: string\n}) {\n\tconst [searchParams, setSearchParams] = useSearchParams()\n\n\tconst handleWorkshopChange = (workshop: string, checked: boolean) => {\n\t\tconst newSelected = checked\n\t\t\t? [...selectedWorkshops, workshop]\n\t\t\t: selectedWorkshops.filter((w) => w !== workshop)\n\n\t\tconst params = new URLSearchParams(searchParams)\n\t\tif (newSelected.length > 0) {\n\t\t\tparams.set('workshops', newSelected.join(','))\n\t\t} else {\n\t\t\tparams.delete('workshops')\n\t\t}\n\t\tsetSearchParams(params)\n\t}\n\n\treturn (\n\t\t<div className=\"mb-6\">\n\t\t\t<h3 className=\"mb-3 text-lg font-semibold\">Workshop Filter</h3>\n\t\t\t<div className=\"flex flex-wrap gap-3\">\n\t\t\t\t{availableWorkshops.map((workshop) => (\n\t\t\t\t\t<label key={workshop} className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={selectedWorkshops.includes(workshop)}\n\t\t\t\t\t\t\tonChange={(e) => handleWorkshopChange(workshop, e.target.checked)}\n\t\t\t\t\t\t\tclassName=\"rounded\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={`text-sm ${workshop === currentWorkshopId ? 'text-primary font-bold' : ''}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{workshop} {workshop === currentWorkshopId ? '(current)' : null}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</label>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nfunction SearchFilter({ filterQuery }: { filterQuery: string }) {\n\tconst [searchParams, setSearchParams] = useSearchParams()\n\tconst [inputValue, setInputValue] = useState(filterQuery)\n\tconst inputRef = useRef<HTMLInputElement>(null)\n\n\t// Update input value when filterQuery changes (e.g., from URL)\n\tuseEffect(() => {\n\t\tsetInputValue(filterQuery)\n\t}, [filterQuery])\n\n\tconst handleSearch = (query: string) => {\n\t\tconst params = new URLSearchParams(searchParams)\n\t\tif (query) {\n\t\t\tparams.set('q', query)\n\t\t} else {\n\t\t\tparams.delete('q')\n\t\t}\n\t\tsetSearchParams(params)\n\t}\n\n\tconst handleClear = () => {\n\t\tsetInputValue('')\n\t\thandleSearch('')\n\t\tinputRef.current?.focus()\n\t}\n\n\treturn (\n\t\t<div className=\"mb-6\">\n\t\t\t<h3 className=\"mb-3 text-lg font-semibold\">Search Cache Entries</h3>\n\t\t\t<div className=\"flex gap-2\">\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"Search by key or cache name...\"\n\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\tsetInputValue(e.target.value)\n\t\t\t\t\t\thandleSearch(e.target.value)\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"border-border bg-background text-foreground focus:ring-ring flex-1 rounded-md border px-3 py-2 focus:ring-2 focus:outline-none\"\n\t\t\t\t/>\n\t\t\t\t{inputValue ? (\n\t\t\t\t\t<IconButton onClick={handleClear} title=\"Clear search\">\n\t\t\t\t\t\t<Icon name=\"Close\" className=\"h-4 w-4\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\n// Inline entry editor component\nfunction InlineEntryEditor({\n\tworkshopId,\n\tcacheName,\n\tfilename,\n\tentryKey,\n}: {\n\tworkshopId: string\n\tcacheName: string\n\tfilename: string\n\tentryKey: string\n}) {\n\tconst entryFetcher = useFetcher<{\n\t\tentry: {\n\t\t\tvalue: unknown\n\t\t\tmetadata: {\n\t\t\t\tcreatedTime: number\n\t\t\t\tttl?: number | null\n\t\t\t\tswr?: number\n\t\t\t}\n\t\t} | null\n\t}>()\n\tconst updateFetcher = useFetcher<typeof action>()\n\tconst [editValue, setEditValue] = useState<string | null>(null)\n\tconst [baselineValue, setBaselineValue] = useState<string | null>(null)\n\tconst [hasChanges, setHasChanges] = useState(false)\n\tconst [hasRequested, setHasRequested] = useState(false)\n\tconst [hasStartedLoading, setHasStartedLoading] = useState(false)\n\tconst submittedValueRef = useRef<string | null>(null)\n\tconst prevUpdateStateRef = useRef<string>(updateFetcher.state)\n\n\tconst entryPath = `${workshopId}/${cacheName}/${filename}`\n\tconst entryValue = entryFetcher.data?.entry?.value\n\tconst isEntryLoading = entryFetcher.state === 'loading'\n\tconst hasEntry = Boolean(entryFetcher.data?.entry)\n\tconst entryMissing = entryFetcher.data?.entry === null\n\tconst entryFetchFailed =\n\t\thasRequested &&\n\t\thasStartedLoading &&\n\t\t!isEntryLoading &&\n\t\tentryFetcher.data === undefined &&\n\t\tentryFetcher.state === 'idle'\n\n\tuseEffect(() => {\n\t\tif (entryFetcher.state !== 'idle') {\n\t\t\tsetHasStartedLoading(true)\n\t\t}\n\t}, [entryFetcher.state])\n\n\tuseEffect(() => {\n\t\tif (hasEntry) {\n\t\t\tconst formattedValue = JSON.stringify(entryValue, null, 2) ?? ''\n\t\t\tsetEditValue(formattedValue)\n\t\t\tsetBaselineValue(formattedValue)\n\t\t\tsetHasChanges(false)\n\t\t}\n\t}, [hasEntry, entryValue])\n\n\tuseEffect(() => {\n\t\tconst currentUpdateState = updateFetcher.state\n\t\tconst wasSubmitting = prevUpdateStateRef.current !== 'idle'\n\t\tconst nowIdle = currentUpdateState === 'idle'\n\n\t\tif (wasSubmitting && nowIdle && updateFetcher.data?.status === 'success') {\n\t\t\tsetBaselineValue(submittedValueRef.current ?? '')\n\t\t\tsetHasChanges(false)\n\t\t}\n\t\tprevUpdateStateRef.current = currentUpdateState\n\t}, [updateFetcher.state, updateFetcher.data?.status])\n\n\tconst handleSave = () => {\n\t\tif (editValue === null) return\n\t\tsubmittedValueRef.current = editValue\n\t\tvoid updateFetcher.submit(\n\t\t\t{\n\t\t\t\tintent: 'update-entry',\n\t\t\t\tworkshopId,\n\t\t\t\tcacheName,\n\t\t\t\tfilename,\n\t\t\t\tnewValue: editValue,\n\t\t\t},\n\t\t\t{ method: 'POST' },\n\t\t)\n\t}\n\n\tconst handleChange = (value: string) => {\n\t\tsetEditValue(value)\n\t\tif (baselineValue === null) {\n\t\t\tsetHasChanges(false)\n\t\t\treturn\n\t\t}\n\t\tsetHasChanges(value !== baselineValue)\n\t}\n\n\tconst handleReset = () => {\n\t\tif (baselineValue === null) return\n\t\tsetEditValue(baselineValue)\n\t\tsetHasChanges(false)\n\t}\n\n\tconst handleToggle = (event: React.SyntheticEvent<HTMLDetailsElement>) => {\n\t\tif (event.currentTarget.open && !hasRequested) {\n\t\t\tvoid entryFetcher.load(\n\t\t\t\thref('/admin/cache/*', {\n\t\t\t\t\t'*': entryPath,\n\t\t\t\t}),\n\t\t\t)\n\t\t\tsetHasRequested(true)\n\t\t} else if (!event.currentTarget.open) {\n\t\t\t// Reset on close to allow retry\n\t\t\tsetHasRequested(false)\n\t\t\tsetHasStartedLoading(false)\n\t\t}\n\t}\n\n\tconst handleRetry = () => {\n\t\tvoid entryFetcher.load(\n\t\t\thref('/admin/cache/*', {\n\t\t\t\t'*': entryPath,\n\t\t\t}),\n\t\t)\n\t}\n\n\treturn (\n\t\t<details className=\"mt-2\" onToggle={handleToggle}>\n\t\t\t<summary className=\"text-muted-foreground hover:text-foreground cursor-pointer text-sm\">\n\t\t\t\tEdit entry details\n\t\t\t</summary>\n\t\t\t<div className=\"border-border bg-muted mt-2 space-y-3 rounded border p-3\">\n\t\t\t\t{isEntryLoading ? (\n\t\t\t\t\t<p className=\"text-muted-foreground text-sm\">Loading entry...</p>\n\t\t\t\t) : entryFetchFailed ? (\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<p className=\"text-destructive text-sm\">\n\t\t\t\t\t\t\tFailed to load entry details.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<Button varient=\"mono\" onClick={handleRetry}>\n\t\t\t\t\t\t\tRetry\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t) : entryMissing ? (\n\t\t\t\t\t<p className=\"text-destructive text-sm\">\n\t\t\t\t\t\tEntry details were not found.\n\t\t\t\t\t</p>\n\t\t\t\t) : hasEntry ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">Key:</label>\n\t\t\t\t\t\t\t<code className=\"bg-background rounded border px-2 py-1 text-sm\">\n\t\t\t\t\t\t\t\t{entryKey}\n\t\t\t\t\t\t\t</code>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">Value:</label>\n\t\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\t\tvalue={editValue ?? ''}\n\t\t\t\t\t\t\t\tonChange={(e) => handleChange(e.target.value)}\n\t\t\t\t\t\t\t\tclassName=\"resize-vertical border-border bg-background text-foreground focus:ring-ring h-32 w-full rounded border p-2 font-mono text-sm focus:ring-2 focus:outline-none\"\n\t\t\t\t\t\t\t\tplaceholder=\"Enter JSON value...\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"flex gap-2\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvarient=\"primary\"\n\t\t\t\t\t\t\t\tonClick={handleSave}\n\t\t\t\t\t\t\t\tdisabled={!hasChanges || updateFetcher.state !== 'idle'}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{updateFetcher.state !== 'idle' ? 'Saving...' : 'Save'}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvarient=\"mono\"\n\t\t\t\t\t\t\t\tonClick={handleReset}\n\t\t\t\t\t\t\t\tdisabled={!hasChanges}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tReset\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<p className=\"text-muted-foreground text-sm\">\n\t\t\t\t\t\tOpen to load entry details.\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</details>\n\t)\n}\n\nfunction SkippedFilesSection({\n\tskippedFiles,\n\tworkshopId,\n\tcacheName,\n}: {\n\tskippedFiles: Array<{\n\t\tfilename: string\n\t\terror: string\n\t\tsize: number\n\t\tskipped: true\n\t}>\n\tworkshopId: string\n\tcacheName: string\n}) {\n\tconst fetcher = useFetcher<typeof action>()\n\n\tif (skippedFiles.length === 0) return null\n\n\treturn (\n\t\t<div className=\"border-warning bg-warning mt-4 rounded border p-3\">\n\t\t\t<div className=\"mb-2 flex items-center gap-2\">\n\t\t\t\t<Icon\n\t\t\t\t\tname=\"TriangleAlert\"\n\t\t\t\t\tclassName=\"text-warning-foreground h-4 w-4\"\n\t\t\t\t/>\n\t\t\t\t<h5 className=\"text-warning-foreground font-medium\">\n\t\t\t\t\tSkipped Files ({skippedFiles.length})\n\t\t\t\t</h5>\n\t\t\t</div>\n\t\t\t<p className=\"text-warning-foreground/80 mb-3 text-sm\">\n\t\t\t\tThese cache files were skipped because they exceed the 3MB size limit:\n\t\t\t</p>\n\t\t\t<div className=\"space-y-2\">\n\t\t\t\t{skippedFiles.map((skippedFile) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={skippedFile.filename}\n\t\t\t\t\t\tclassName=\"border-warning/20 bg-warning/5 flex items-center justify-between rounded border p-2\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t<div className=\"text-warning-foreground truncate font-mono text-sm font-medium\">\n\t\t\t\t\t\t\t\t{skippedFile.filename}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"text-warning-foreground/70 text-xs\">\n\t\t\t\t\t\t\t\t{skippedFile.error} • Size:{' '}\n\t\t\t\t\t\t\t\t<span title={`${skippedFile.size} bytes`}>\n\t\t\t\t\t\t\t\t\t{formatFileSize(skippedFile.size)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"ml-2 flex shrink-0\">\n\t\t\t\t\t\t\t<DoubleCheckButton\n\t\t\t\t\t\t\t\tonConfirm={() => {\n\t\t\t\t\t\t\t\t\tvoid fetcher.submit(\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tintent: 'delete-entry',\n\t\t\t\t\t\t\t\t\t\t\tworkshopId,\n\t\t\t\t\t\t\t\t\t\t\tcacheName,\n\t\t\t\t\t\t\t\t\t\t\tfilename: skippedFile.filename,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{ method: 'POST' },\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ttitle=\"Delete large cache file\"\n\t\t\t\t\t\t\t\tclassName=\"text-destructive-foreground hover:bg-destructive/20 hover:text-destructive-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon name=\"Remove\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t</DoubleCheckButton>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nexport default function CacheManagement({ loaderData }: Route.ComponentProps) {\n\tconst fetcher = useFetcher<typeof action>()\n\n\tconst deleteEntry = (\n\t\tworkshopId: string,\n\t\tcacheName: string,\n\t\tfilename: string,\n\t) => {\n\t\tvoid fetcher.submit(\n\t\t\t{\n\t\t\t\tintent: 'delete-entry',\n\t\t\t\tworkshopId,\n\t\t\t\tcacheName,\n\t\t\t\tfilename,\n\t\t\t},\n\t\t\t{ method: 'POST' },\n\t\t)\n\t}\n\n\tconst deleteCache = (workshopId: string, cacheName: string) => {\n\t\tvoid fetcher.submit(\n\t\t\t{\n\t\t\t\tintent: 'delete-cache',\n\t\t\t\tworkshopId,\n\t\t\t\tcacheName,\n\t\t\t},\n\t\t\t{ method: 'POST' },\n\t\t)\n\t}\n\n\tconst deleteWorkshopCache = (workshopId: string) => {\n\t\tvoid fetcher.submit(\n\t\t\t{\n\t\t\t\tintent: 'delete-workshop-cache',\n\t\t\t\tworkshopId,\n\t\t\t},\n\t\t\t{ method: 'POST' },\n\t\t)\n\t}\n\n\tconst {\n\t\tcurrentWorkshopId,\n\t\tfilteredCaches,\n\t\tfilterQuery,\n\t\tselectedWorkshops,\n\t\tavailableWorkshops,\n\t} = loaderData\n\n\treturn (\n\t\t<div className=\"space-y-6\">\n\t\t\t<div>\n\t\t\t\t<h2 className=\"mb-2 text-2xl font-bold\">Cache Management</h2>\n\t\t\t\t<p className=\"text-muted-foreground\">\n\t\t\t\t\tCurrent Workshop:{' '}\n\t\t\t\t\t<span className=\"text-foreground font-semibold\">\n\t\t\t\t\t\t{currentWorkshopId}\n\t\t\t\t\t</span>\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<WorkshopChooser\n\t\t\t\tselectedWorkshops={selectedWorkshops}\n\t\t\t\tavailableWorkshops={availableWorkshops}\n\t\t\t\tcurrentWorkshopId={currentWorkshopId}\n\t\t\t/>\n\n\t\t\t<SearchFilter filterQuery={filterQuery} />\n\n\t\t\t{fetcher.data?.status === 'success' ? (\n\t\t\t\t<div className=\"border-border bg-success text-success-foreground rounded border p-4\">\n\t\t\t\t\t{fetcher.data.message}\n\t\t\t\t</div>\n\t\t\t) : null}\n\n\t\t\t{fetcher.data?.status === 'error' ? (\n\t\t\t\t<div className=\"border-border bg-destructive text-destructive-foreground rounded border p-4\">\n\t\t\t\t\t{fetcher.data.error}\n\t\t\t\t</div>\n\t\t\t) : null}\n\n\t\t\t{filteredCaches.length === 0 ? (\n\t\t\t\t<div className=\"text-muted-foreground py-8 text-center\">\n\t\t\t\t\tNo caches found matching your criteria.\n\t\t\t\t</div>\n\t\t\t) : null}\n\n\t\t\t<div className=\"space-y-6\">\n\t\t\t\t{filteredCaches.map((workshopCache) => (\n\t\t\t\t\t<details\n\t\t\t\t\t\tkey={workshopCache.workshopId}\n\t\t\t\t\t\topen={workshopCache.workshopId === currentWorkshopId}\n\t\t\t\t\t>\n\t\t\t\t\t\t<summary className=\"border-border bg-card hover:bg-accent cursor-pointer rounded-lg border p-4\">\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t\t<h3 className=\"text-card-foreground flex items-center gap-2 text-lg font-semibold\">\n\t\t\t\t\t\t\t\t\t<Icon name=\"Files\" className=\"h-5 w-5\" />\n\t\t\t\t\t\t\t\t\t{workshopCache.workshopId === 'global'\n\t\t\t\t\t\t\t\t\t\t? 'Global Caches'\n\t\t\t\t\t\t\t\t\t\t: workshopCache.workshopId}\n\t\t\t\t\t\t\t\t\t{workshopCache.workshopId === currentWorkshopId ? (\n\t\t\t\t\t\t\t\t\t\t<span className=\"bg-primary text-primary-foreground rounded px-2 py-1 text-xs\">\n\t\t\t\t\t\t\t\t\t\t\tCurrent\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t<DoubleCheckButton\n\t\t\t\t\t\t\t\t\tonConfirm={() =>\n\t\t\t\t\t\t\t\t\t\tdeleteWorkshopCache(workshopCache.workshopId)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ttitle=\"Delete all workshop caches\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Icon name=\"Remove\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t</DoubleCheckButton>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</summary>\n\n\t\t\t\t\t\t<div className=\"mt-4 space-y-4 pl-4\">\n\t\t\t\t\t\t\t{workshopCache.caches.map((cache) => {\n\t\t\t\t\t\t\t\tconst totalSize = cache.entries.reduce(\n\t\t\t\t\t\t\t\t\t(sum, entry) => sum + (entry.size || 0),\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tconst skippedSize = (cache.skippedFiles || []).reduce(\n\t\t\t\t\t\t\t\t\t(sum, file) => sum + file.size,\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tconst grandTotal = totalSize + skippedSize\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<details key={cache.name} className=\"bg-muted rounded-md\">\n\t\t\t\t\t\t\t\t\t\t<summary className=\"hover:bg-accent cursor-pointer p-3\">\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t\t\t\t\t\t<h4 className=\"text-muted-foreground flex items-center gap-2 font-medium\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon name=\"Files\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cache.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t({cache.entries.length} entr\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{cache.entries.length === 1 ? 'y' : 'ies'})\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{grandTotal > 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground text-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t•{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span title={`${grandTotal} bytes`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatFileSize(grandTotal)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttotal\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{skippedSize > 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-warning\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span title={`${skippedSize} bytes`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatFileSize(skippedSize)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tskipped)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t\t</h4>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleCheckButton\n\t\t\t\t\t\t\t\t\t\t\t\t\tonConfirm={() =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeleteCache(workshopCache.workshopId, cache.name)\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Delete cache\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon name=\"Remove\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleCheckButton>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</summary>\n\n\t\t\t\t\t\t\t\t\t\t<div className=\"p-3 pt-0\">\n\t\t\t\t\t\t\t\t\t\t\t{cache.entries.length === 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-muted-foreground text-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tNo entries match your search.\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t) : null}\n\n\t\t\t\t\t\t\t\t\t\t\t{cache.skippedFiles && cache.skippedFiles.length > 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<SkippedFilesSection\n\t\t\t\t\t\t\t\t\t\t\t\t\tskippedFiles={cache.skippedFiles}\n\t\t\t\t\t\t\t\t\t\t\t\t\tworkshopId={workshopCache.workshopId}\n\t\t\t\t\t\t\t\t\t\t\t\t\tcacheName={cache.name}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t) : null}\n\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t{cache.entries.map(\n\t\t\t\t\t\t\t\t\t\t\t\t\t({ key, metadata, filename, size, filepath }) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"border-border bg-background rounded border p-3\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-start justify-between\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"mb-1 flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"truncate font-mono text-sm font-medium\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={key}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{key}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{size ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"bg-muted text-muted-foreground inline-flex items-center rounded px-1.5 py-0.5 text-xs whitespace-nowrap\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={`${size} bytes`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatFileSize(size)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<CacheMetadata metadata={metadata} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"ml-4 flex shrink-0 gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thref={href('/admin/cache/*', {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'*': `${workshopCache.workshopId}/${cache.name}/${filename}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"border-border bg-background text-foreground hover:bg-muted focus:ring-ring inline-flex h-8 w-8 items-center justify-center rounded border focus:ring-2 focus:outline-none\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"View JSON\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname=\"ExternalLink\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{filepath ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<LaunchEditor\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfile={filepath}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={iconButtonClassName}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname=\"Files\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Open in editor\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</LaunchEditor>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<DoubleCheckButton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonConfirm={() =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeleteEntry(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tworkshopCache.workshopId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcache.name,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilename,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Delete entry\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon name=\"Remove\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</DoubleCheckButton>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<InlineEntryEditor\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tworkshopId={workshopCache.workshopId}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcacheName={cache.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilename={filename}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tentryKey={key}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</details>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\n// Component for displaying cache metadata with live countdown\nfunction CacheMetadata({\n\tmetadata,\n}: {\n\tmetadata: {\n\t\tcreatedTime: number\n\t\tttl?: number | null\n\t\tswr?: number\n\t}\n}) {\n\tconst dayjs = useDayjs()\n\tconst [, setCurrentTime] = useState(Date.now())\n\tconst expirationTime = calculateExpirationTime(metadata)\n\n\t// Update time every second for live countdown\n\tuseInterval(() => {\n\t\tsetCurrentTime(Date.now())\n\t}, 1000)\n\n\tconst createdDate = dayjs(metadata.createdTime)\n\tconst timeRemaining = expirationTime\n\t\t? formatTimeRemaining(expirationTime)\n\t\t: { text: 'Never', isExpired: false, isExpiringSoon: false }\n\n\treturn (\n\t\t<div className=\"text-muted-foreground flex flex-col gap-1 text-xs\">\n\t\t\t<div>\n\t\t\t\tCreated: {createdDate.format('MMM D, YYYY HH:mm:ss')}{' '}\n\t\t\t\t<ClientOnly>{() => `(${createdDate.fromNow()})`}</ClientOnly>\n\t\t\t</div>\n\t\t\t<div className=\"flex flex-wrap items-center gap-3\">\n\t\t\t\t{metadata.ttl !== undefined && metadata.ttl !== null ? (\n\t\t\t\t\t<span>\n\t\t\t\t\t\tTTL:{' '}\n\t\t\t\t\t\t{metadata.ttl === Infinity ? (\n\t\t\t\t\t\t\t'Forever'\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span title={`${metadata.ttl}ms`}>\n\t\t\t\t\t\t\t\t{formatDuration(metadata.ttl)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t) : null}\n\t\t\t\t{metadata.swr !== undefined ? (\n\t\t\t\t\t<span>\n\t\t\t\t\t\tSWR:{' '}\n\t\t\t\t\t\t<span title={`${metadata.swr}ms`}>\n\t\t\t\t\t\t\t{formatDuration(metadata.swr)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t) : null}\n\t\t\t\t<div\n\t\t\t\t\tclassName={`inline-flex w-auto rounded-full px-2 py-[2px] font-medium ${\n\t\t\t\t\t\ttimeRemaining.isExpired\n\t\t\t\t\t\t\t? 'bg-destructive text-destructive-foreground'\n\t\t\t\t\t\t\t: timeRemaining.isExpiringSoon\n\t\t\t\t\t\t\t\t? 'bg-warning text-warning-foreground'\n\t\t\t\t\t\t\t\t: 'text-foreground'\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t{expirationTime ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\tExpires: {dayjs(expirationTime).format('MMM D, YYYY HH:mm:ss')} (\n\t\t\t\t\t\t\t<span className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t<ClientOnly>{() => timeRemaining.text}</ClientOnly>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t'Expires: Never'\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\n// Double-check delete button\nfunction DoubleCheckButton({\n\tonConfirm,\n\tchildren,\n\tclassName,\n\t...props\n}: React.ComponentPropsWithoutRef<'button'> & {\n\tonConfirm: () => void\n}) {\n\tconst doubleCheck = useDoubleCheck()\n\n\treturn (\n\t\t<IconButton\n\t\t\t{...doubleCheck.getButtonProps({\n\t\t\t\tonClick: doubleCheck.doubleCheck ? onConfirm : undefined,\n\t\t\t\t...props,\n\t\t\t})}\n\t\t\tclassName={cn(\n\t\t\t\tdoubleCheck.doubleCheck\n\t\t\t\t\t? 'bg-destructive text-destructive-foreground'\n\t\t\t\t\t: null,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{doubleCheck.doubleCheck ? '✓' : children}\n\t\t</IconButton>\n\t)\n}\n"],"names":["WorkshopChooser","selectedWorkshops","availableWorkshops","currentWorkshopId","searchParams","setSearchParams","useSearchParams","handleWorkshopChange","workshop","checked","newSelected","filter","w","params","URLSearchParams","length","set","join","delete","jsxs","className","children","jsx","map","type","includes","onChange","e","target","SearchFilter","filterQuery","inputValue","setInputValue","useState","inputRef","useRef","useEffect","handleSearch","query","handleClear","current","focus","ref","placeholder","value","IconButton","onClick","title","Icon","name","InlineEntryEditor","workshopId","cacheName","filename","entryKey","entryFetcher","useFetcher","updateFetcher","editValue","setEditValue","baselineValue","setBaselineValue","hasChanges","setHasChanges","hasRequested","setHasRequested","hasStartedLoading","setHasStartedLoading","submittedValueRef","prevUpdateStateRef","state","entryPath","entryValue","data","entry","isEntryLoading","hasEntry","Boolean","entryMissing","entryFetchFailed","formattedValue","JSON","stringify","currentUpdateState","status","handleSave","submit","intent","newValue","method","handleChange","handleReset","handleToggle","event","currentTarget","open","load","href","handleRetry","onToggle","Button","varient","Fragment","disabled","SkippedFilesSection","skippedFiles","fetcher","skippedFile","error","size","formatFileSize","DoubleCheckButton","onConfirm","cache","_UNSAFE_withComponentProps","loaderData","deleteEntry","deleteCache","deleteWorkshopCache","filteredCaches","message","workshopCache","caches","totalSize","entries","reduce","sum","skippedSize","file","grandTotal","key","metadata","filepath","CacheMetadata","rel","LaunchEditor","iconButtonClassName","dayjs","useDayjs","setCurrentTime","Date","now","expirationTime","calculateExpirationTime","useInterval","createdDate","createdTime","timeRemaining","formatTimeRemaining","text","isExpired","isExpiringSoon","format","ClientOnly","fromNow","ttl","Infinity","formatDuration","swr","props","doubleCheck","useDoubleCheck","getButtonProps","cn"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.__reactRouterManifest={"entry":{"module":"/assets/entry.client-C5IgiyiE.js","imports":["/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js","/assets/index-vDCSPjrM.js","/assets/chunk-4LKRSAEJ-5b-X0-W6.js","/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/preload-helper-BXl3LOEh.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/root-HnVIVArh.js","imports":["/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js","/assets/index-vDCSPjrM.js","/assets/chunk-4LKRSAEJ-5b-X0-W6.js","/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/preload-helper-BXl3LOEh.js","/assets/misc-DNNpiA4n.js","/assets/client-only-CTGgqT3G.js","/assets/error-boundary-DdjH6trX.js","/assets/dialog-DC0NrI90.js","/assets/progress-bar-CPpSmw1y.js","/assets/index-DzdDahau.js","/assets/tooltip-DB1Mvqo5.js","/assets/schemas-Uj5SZtvt.js","/assets/index-CgjxpKnr.js","/assets/presence-cV5FMWJG.js","/assets/seo-t5J-DRxw.js","/assets/pe-FSGstb4x.js","/assets/index-C4dcRzSw.js","/assets/root-loader-DCpknoYz.js","/assets/online-Dusu3kom.js","/assets/coerce-CkHW0SMv.js"],"css":[]},"routes/$":{"id":"routes/$","parentId":"root","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/_-CVWKN67K.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/error-boundary-DdjH6trX.js","/assets/misc-DNNpiA4n.js","/assets/index-CqIc3cxq.js","/assets/preload-helper-BXl3LOEh.js"],"css":[]},"routes/_app+/_layout":{"id":"routes/_app+/_layout","parentId":"root","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/_layout-DLbMMUkp.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/misc-DNNpiA4n.js","/assets/index-CqIc3cxq.js","/assets/pe-FSGstb4x.js","/assets/onboarding-indicator-Dr3uJ2a-.js","/assets/product-Bvo6ar0v.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/status-indicator-C6DiLYL5.js","/assets/dialog-DC0NrI90.js","/assets/index-_Yn7oCIK.js","/assets/tooltip-DB1Mvqo5.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/online-Dusu3kom.js","/assets/presence-cV5FMWJG.js","/assets/root-loader-DCpknoYz.js","/assets/progress-Dfi0P9b6.js","/assets/index-CgjxpKnr.js","/assets/schemas-Uj5SZtvt.js","/assets/index-C4dcRzSw.js","/assets/index-vDCSPjrM.js","/assets/coerce-CkHW0SMv.js"],"css":[]},"routes/_app+/account":{"id":"routes/_app+/account","parentId":"routes/_app+/_layout","path":"account","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/account-CBaZPdj-.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/button-BNnUtmu5.js","/assets/misc-DNNpiA4n.js","/assets/onboarding-indicator-Dr3uJ2a-.js","/assets/tooltip-DB1Mvqo5.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/index-CqIc3cxq.js","/assets/root-loader-DCpknoYz.js","/assets/index-vDCSPjrM.js"],"css":[]},"routes/_app+/app.$appName+/$":{"id":"routes/_app+/app.$appName+/$","parentId":"routes/_app+/_layout","path":"app/:appName/*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/api.$":{"id":"routes/_app+/app.$appName+/api.$","parentId":"routes/_app+/_layout","path":"app/:appName/api/*","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/api._-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/epic_ws[.js]":{"id":"routes/_app+/app.$appName+/epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/epic_ws.js","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/index":{"id":"routes/_app+/app.$appName+/index","parentId":"routes/_app+/_layout","path":"app/:appName","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/index-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.$testName":{"id":"routes/_app+/app.$appName+/test.$testName","parentId":"routes/_app+/_layout","path":"app/:appName/test/:testName","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/test._testName-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.epic_ws[.js]":{"id":"routes/_app+/app.$appName+/test.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/test/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/test.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.epic_ws[.js]":{"id":"routes/_app+/app.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/app.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/discord":{"id":"routes/_app+/discord","parentId":"routes/_app+/_layout","path":"discord","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/discord-BI3sKsOi.js","imports":["/assets/discord-CnNgoE5_.js","/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/index-CqIc3cxq.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/misc-DNNpiA4n.js","/assets/user-CsmzX0SJ.js","/assets/root-loader-DCpknoYz.js","/assets/workshop-config-DAgfN2cG.js"],"css":[]},"routes/_app+/exercise+/_layout":{"id":"routes/_app+/exercise+/_layout","parentId":"routes/_app+/_layout","path":"exercise","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/_layout-C6zpF1_6.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber":{"id":"routes/_app+/exercise+/$exerciseNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber-Cpd_xzBa.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/epic-video-zIIQq7F6.js","/assets/error-boundary-DdjH6trX.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/launch-editor-CODm6xV9.js","/assets/progress-Dfi0P9b6.js","/assets/mdx-D3rADQeG.js","/assets/root-loader-DCpknoYz.js","/assets/seo-t5J-DRxw.js","/assets/error-boundary-BZFkJO70.js","/assets/index-CqIc3cxq.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-vDCSPjrM.js","/assets/index-CgjxpKnr.js","/assets/misc-DNNpiA4n.js","/assets/tooltip-DB1Mvqo5.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/preload-helper-BXl3LOEh.js","/assets/progress-bar-CPpSmw1y.js","/assets/chunk-4LKRSAEJ-5b-X0-W6.js","/assets/coerce-CkHW0SMv.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/:stepNumber/:type","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/_layout-kWQ2_uM6.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/index-CqIc3cxq.js","/assets/error-boundary-DdjH6trX.js","/assets/nav-chevrons-DoYP32rF.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/launch-editor-CODm6xV9.js","/assets/progress-Dfi0P9b6.js","/assets/set-playground-DQaMYgsB.js","/assets/misc-DNNpiA4n.js","/assets/root-loader-DCpknoYz.js","/assets/seo-t5J-DRxw.js","/assets/split-layout-DnRER1bP.js","/assets/error-boundary-BZFkJO70.js","/assets/epic-video-zIIQq7F6.js","/assets/tooltip-DB1Mvqo5.js","/assets/mdx-D3rADQeG.js","/assets/index-_Yn7oCIK.js","/assets/onboarding-indicator-Dr3uJ2a-.js","/assets/preload-helper-BXl3LOEh.js","/assets/schemas-Uj5SZtvt.js","/assets/progress-bar-CPpSmw1y.js","/assets/pe-FSGstb4x.js","/assets/index-DxxplhFG.js","/assets/index-vDCSPjrM.js","/assets/index-C4dcRzSw.js","/assets/button-BNnUtmu5.js","/assets/dialog-DC0NrI90.js","/assets/chunk-4LKRSAEJ-5b-X0-W6.js","/assets/coerce-CkHW0SMv.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-CgjxpKnr.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"app","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/app-CFb3MOPP.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js","/assets/preview-C1nvwOgT.js","/assets/misc-DNNpiA4n.js","/assets/button-BNnUtmu5.js","/assets/loading-Bul3MCPB.js","/assets/index-CgjxpKnr.js","/assets/tooltip-DB1Mvqo5.js","/assets/index-vDCSPjrM.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/progress-bar-CPpSmw1y.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/index-DdtI2qE4.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/playground-Bcq8gU78.js","/assets/diff-BnNULbxE.js","/assets/error-boundary-DdjH6trX.js","/assets/workshop-config-DAgfN2cG.js","/assets/misc-DNNpiA4n.js","/assets/preview-C1nvwOgT.js","/assets/tests-B1ZxOCP0.js","/assets/index-CqIc3cxq.js","/assets/loading-Bul3MCPB.js","/assets/index-CgjxpKnr.js","/assets/tooltip-DB1Mvqo5.js","/assets/index-vDCSPjrM.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/discord-CnNgoE5_.js","/assets/user-CsmzX0SJ.js","/assets/online-Dusu3kom.js","/assets/index-DxxplhFG.js","/assets/index-C4dcRzSw.js","/assets/status-indicator-C6DiLYL5.js","/assets/index-DzdDahau.js","/assets/set-playground-DQaMYgsB.js","/assets/button-BNnUtmu5.js","/assets/onboarding-indicator-Dr3uJ2a-.js","/assets/progress-bar-CPpSmw1y.js","/assets/dialog-DC0NrI90.js","/assets/playground-window-BLj2vFhH.js","/assets/accordion-DXLTgj7r.js","/assets/mdx-D3rADQeG.js","/assets/epic-video-zIIQq7F6.js","/assets/use-event-source-BuD4_2SF.js","/assets/format-CZ5n8p10.js","/assets/preload-helper-BXl3LOEh.js","/assets/launch-editor-CODm6xV9.js","/assets/revalidation-ws-B7gxE2XT.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"test","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/test-Bbdrfu35.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/tests-B1ZxOCP0.js","/assets/index-CqIc3cxq.js","/assets/accordion-DXLTgj7r.js","/assets/tooltip-DB1Mvqo5.js","/assets/index-vDCSPjrM.js","/assets/misc-DNNpiA4n.js","/assets/index-DxxplhFG.js","/assets/index-C4dcRzSw.js","/assets/epic-video-zIIQq7F6.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-CgjxpKnr.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/playground-window-BLj2vFhH.js","/assets/set-playground-DQaMYgsB.js","/assets/button-BNnUtmu5.js","/assets/onboarding-indicator-Dr3uJ2a-.js","/assets/progress-bar-CPpSmw1y.js","/assets/dialog-DC0NrI90.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/:stepNumber","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber_._stepNumber.index-y96ENZqu.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/error-boundary-DdjH6trX.js","/assets/error-boundary-BZFkJO70.js","/assets/index-CqIc3cxq.js","/assets/preload-helper-BXl3LOEh.js","/assets/misc-DNNpiA4n.js","/assets/chunk-4LKRSAEJ-5b-X0-W6.js","/assets/schemas-Uj5SZtvt.js","/assets/coerce-CkHW0SMv.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.finished":{"id":"routes/_app+/exercise+/$exerciseNumber_.finished","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_.finished-P1GS1kL8.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/index-CqIc3cxq.js","/assets/epic-video-zIIQq7F6.js","/assets/misc-DNNpiA4n.js","/assets/loading-Bul3MCPB.js","/assets/nav-chevrons-DoYP32rF.js","/assets/retrieval-practice-Db_juC2_.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/launch-editor-CODm6xV9.js","/assets/progress-Dfi0P9b6.js","/assets/index-CgjxpKnr.js","/assets/mdx-D3rADQeG.js","/assets/online-Dusu3kom.js","/assets/root-loader-DCpknoYz.js","/assets/seo-t5J-DRxw.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-vDCSPjrM.js","/assets/schemas-Uj5SZtvt.js","/assets/tooltip-DB1Mvqo5.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/progress-bar-CPpSmw1y.js","/assets/pe-FSGstb4x.js","/assets/preload-helper-BXl3LOEh.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/extra+/_layout":{"id":"routes/_app+/extra+/_layout","parentId":"routes/_app+/_layout","path":"extra","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/_layout-D0kJ70e0.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/_app+/extra+/$extra":{"id":"routes/_app+/extra+/$extra","parentId":"routes/_app+/extra+/_layout","path":":extra","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/_extra-Bgg3LO8n.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/playground-Bcq8gU78.js","/assets/index-CqIc3cxq.js","/assets/diff-BnNULbxE.js","/assets/epic-video-zIIQq7F6.js","/assets/error-boundary-DdjH6trX.js","/assets/nav-chevrons-DoYP32rF.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/workshop-config-DAgfN2cG.js","/assets/preview-C1nvwOgT.js","/assets/launch-editor-CODm6xV9.js","/assets/set-playground-DQaMYgsB.js","/assets/mdx-D3rADQeG.js","/assets/root-loader-DCpknoYz.js","/assets/seo-t5J-DRxw.js","/assets/split-layout-DnRER1bP.js","/assets/misc-DNNpiA4n.js","/assets/loading-Bul3MCPB.js","/assets/index-CgjxpKnr.js","/assets/tooltip-DB1Mvqo5.js","/assets/index-vDCSPjrM.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/discord-CnNgoE5_.js","/assets/user-CsmzX0SJ.js","/assets/online-Dusu3kom.js","/assets/index-DxxplhFG.js","/assets/index-C4dcRzSw.js","/assets/status-indicator-C6DiLYL5.js","/assets/index-DzdDahau.js","/assets/playground-window-BLj2vFhH.js","/assets/accordion-DXLTgj7r.js","/assets/use-event-source-BuD4_2SF.js","/assets/format-CZ5n8p10.js","/assets/preload-helper-BXl3LOEh.js","/assets/button-BNnUtmu5.js","/assets/progress-bar-CPpSmw1y.js","/assets/onboarding-indicator-Dr3uJ2a-.js","/assets/dialog-DC0NrI90.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/extra+/index":{"id":"routes/_app+/extra+/index","parentId":"routes/_app+/extra+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/index-DAwFXOCI.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/epic-video-zIIQq7F6.js","/assets/error-boundary-DdjH6trX.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/launch-editor-CODm6xV9.js","/assets/mdx-D3rADQeG.js","/assets/misc-DNNpiA4n.js","/assets/root-loader-DCpknoYz.js","/assets/seo-t5J-DRxw.js","/assets/index-CqIc3cxq.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-vDCSPjrM.js","/assets/index-CgjxpKnr.js","/assets/tooltip-DB1Mvqo5.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/preload-helper-BXl3LOEh.js","/assets/progress-bar-CPpSmw1y.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/finished":{"id":"routes/_app+/finished","parentId":"routes/_app+/_layout","path":"finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/finished-Bk-fF1HX.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/index-CqIc3cxq.js","/assets/epic-video-zIIQq7F6.js","/assets/misc-DNNpiA4n.js","/assets/loading-Bul3MCPB.js","/assets/nav-chevrons-DoYP32rF.js","/assets/retrieval-practice-Db_juC2_.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/mdx-D3rADQeG.js","/assets/online-Dusu3kom.js","/assets/root-loader-DCpknoYz.js","/assets/seo-t5J-DRxw.js","/assets/launch-editor-CODm6xV9.js","/assets/progress-Dfi0P9b6.js","/assets/index-CgjxpKnr.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-vDCSPjrM.js","/assets/schemas-Uj5SZtvt.js","/assets/tooltip-DB1Mvqo5.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/preload-helper-BXl3LOEh.js","/assets/progress-bar-CPpSmw1y.js","/assets/pe-FSGstb4x.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/guide":{"id":"routes/_app+/guide","parentId":"routes/_app+/_layout","path":"guide","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/guide-CDj10zGZ.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/_app+/index":{"id":"routes/_app+/index","parentId":"routes/_app+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/index-CNGl4G6U.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/epic-video-zIIQq7F6.js","/assets/error-boundary-DdjH6trX.js","/assets/launch-editor-CODm6xV9.js","/assets/mdx-D3rADQeG.js","/assets/misc-DNNpiA4n.js","/assets/progress-Dfi0P9b6.js","/assets/index-CqIc3cxq.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-vDCSPjrM.js","/assets/index-CgjxpKnr.js","/assets/tooltip-DB1Mvqo5.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/preload-helper-BXl3LOEh.js","/assets/progress-bar-CPpSmw1y.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/l":{"id":"routes/_app+/l","parentId":"routes/_app+/_layout","path":"l","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/l-mCt29B3Y.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/_app+/login":{"id":"routes/_app+/login","parentId":"routes/_app+/_layout","path":"login","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/login-J8iyXigI.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js","/assets/use-event-source-BuD4_2SF.js","/assets/button-BNnUtmu5.js","/assets/loading-Bul3MCPB.js","/assets/product-Bvo6ar0v.js","/assets/workshop-config-DAgfN2cG.js","/assets/schemas-Uj5SZtvt.js","/assets/misc-DNNpiA4n.js","/assets/index-CgjxpKnr.js","/assets/tooltip-DB1Mvqo5.js","/assets/index-vDCSPjrM.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js"],"css":[]},"routes/_app+/preferences":{"id":"routes/_app+/preferences","parentId":"routes/_app+/_layout","path":"preferences","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/preferences-ChwHoPXA.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/button-BNnUtmu5.js","/assets/misc-DNNpiA4n.js","/assets/tooltip-DB1Mvqo5.js","/assets/format-CZ5n8p10.js","/assets/root-loader-DCpknoYz.js","/assets/index-CqIc3cxq.js","/assets/index-vDCSPjrM.js"],"css":[]},"routes/_app+/support":{"id":"routes/_app+/support","parentId":"routes/_app+/_layout","path":"support","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/support-Dvvjq6Qz.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/_app+/workspace-structure":{"id":"routes/_app+/workspace-structure","parentId":"routes/_app+/_layout","path":"workspace-structure","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/workspace-structure-BgwUwavv.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/button-BNnUtmu5.js","/assets/index-CqIc3cxq.js","/assets/misc-DNNpiA4n.js"],"css":[]},"routes/admin+/_layout":{"id":"routes/admin+/_layout","parentId":"root","path":"admin","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/_layout-sHMziZmV.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/root-loader-DCpknoYz.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/admin+/apps":{"id":"routes/admin+/apps","parentId":"routes/admin+/_layout","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/apps-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/cache":{"id":"routes/admin+/cache","parentId":"routes/admin+/_layout","path":"cache","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/cache-muVFgDkV.js","imports":["/assets/chunk-4LKRSAEJ-5b-X0-W6.js","/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js","/assets/client-only-CTGgqT3G.js","/assets/button-BNnUtmu5.js","/assets/misc-DNNpiA4n.js","/assets/launch-editor-CODm6xV9.js","/assets/pe-FSGstb4x.js","/assets/progress-bar-CPpSmw1y.js","/assets/root-loader-DCpknoYz.js"],"css":[]},"routes/admin+/cache.$":{"id":"routes/admin+/cache.$","parentId":"routes/admin+/cache","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/cache._-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/db":{"id":"routes/admin+/db","parentId":"routes/admin+/_layout","path":"db","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/db-026f86om.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/misc-DNNpiA4n.js","/assets/tooltip-DB1Mvqo5.js","/assets/launch-editor-CODm6xV9.js","/assets/index-CqIc3cxq.js","/assets/index-vDCSPjrM.js","/assets/progress-bar-CPpSmw1y.js","/assets/pe-FSGstb4x.js","/assets/root-loader-DCpknoYz.js"],"css":[]},"routes/admin+/index":{"id":"routes/admin+/index","parentId":"routes/admin+/_layout","index":true,"hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/index-6hPEaMox.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/misc-DNNpiA4n.js","/assets/index-CqIc3cxq.js","/assets/tooltip-DB1Mvqo5.js","/assets/progress-Dfi0P9b6.js","/assets/root-loader-DCpknoYz.js","/assets/index-vDCSPjrM.js","/assets/pe-FSGstb4x.js"],"css":[]},"routes/admin+/notifications":{"id":"routes/admin+/notifications","parentId":"routes/admin+/_layout","path":"notifications","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/notifications-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/offline-videos":{"id":"routes/admin+/offline-videos","parentId":"routes/admin+/_layout","path":"offline-videos","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/offline-videos-DBzHEdef.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/format-CZ5n8p10.js","/assets/misc-DNNpiA4n.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/admin+/version":{"id":"routes/admin+/version","parentId":"routes/admin+/_layout","path":"version","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/version-DqcLWrd-.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/workshop-config-DAgfN2cG.js","/assets/index-CqIc3cxq.js","/assets/root-loader-DCpknoYz.js"],"css":[]},"routes/admin+/version[.json]":{"id":"routes/admin+/version[.json]","parentId":"routes/admin+/_layout","path":"version.json","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/version_.json_-l0sNRNKZ.js","imports":[],"css":[]},"routes/apps":{"id":"routes/apps","parentId":"root","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/apps-DP2rzg_V.js","imports":[],"css":[]},"routes/diff":{"id":"routes/diff","parentId":"root","path":"diff","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/diff-YYfEooTn.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/misc-DNNpiA4n.js","/assets/diff-BnNULbxE.js","/assets/nav-chevrons-DoYP32rF.js","/assets/index-CqIc3cxq.js","/assets/accordion-DXLTgj7r.js","/assets/tooltip-DB1Mvqo5.js","/assets/index-vDCSPjrM.js","/assets/index-DxxplhFG.js","/assets/index-C4dcRzSw.js","/assets/mdx-D3rADQeG.js","/assets/index-DzdDahau.js","/assets/epic-video-zIIQq7F6.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-CgjxpKnr.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/preload-helper-BXl3LOEh.js","/assets/launch-editor-CODm6xV9.js","/assets/progress-bar-CPpSmw1y.js","/assets/revalidation-ws-B7gxE2XT.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/diff.$shortcut":{"id":"routes/diff.$shortcut","parentId":"routes/diff","path":":shortcut","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/diff._shortcut-l0sNRNKZ.js","imports":[],"css":[]},"routes/exercises":{"id":"routes/exercises","parentId":"root","path":"exercises","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/exercises-l0sNRNKZ.js","imports":[],"css":[]},"routes/launch-editor":{"id":"routes/launch-editor","parentId":"root","path":"launch-editor","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/launch-editor-l0sNRNKZ.js","imports":[],"css":[]},"routes/login-sse":{"id":"routes/login-sse","parentId":"root","path":"login-sse","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/login-sse-l0sNRNKZ.js","imports":[],"css":[]},"routes/mark-onboarding-complete":{"id":"routes/mark-onboarding-complete","parentId":"root","path":"mark-onboarding-complete","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/mark-onboarding-complete-l0sNRNKZ.js","imports":[],"css":[]},"routes/mcp-ui+/epic-video":{"id":"routes/mcp-ui+/epic-video","parentId":"root","path":"mcp-ui/epic-video","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/epic-video-BIdyODeo.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js","/assets/epic-video-zIIQq7F6.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-vDCSPjrM.js","/assets/index-CgjxpKnr.js","/assets/misc-DNNpiA4n.js","/assets/tooltip-DB1Mvqo5.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/og":{"id":"routes/og","parentId":"root","path":"og","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/og-l0sNRNKZ.js","imports":[],"css":[]},"routes/persist-playground":{"id":"routes/persist-playground","parentId":"root","path":"persist-playground","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/persist-playground-l0sNRNKZ.js","imports":[],"css":[]},"routes/processes":{"id":"routes/processes","parentId":"root","path":"processes","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/processes-l0sNRNKZ.js","imports":[],"css":[]},"routes/progress":{"id":"routes/progress","parentId":"root","path":"progress","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/progress-l0sNRNKZ.js","imports":[],"css":[]},"routes/resources+/healthcheck":{"id":"routes/resources+/healthcheck","parentId":"root","path":"resources/healthcheck","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/healthcheck-l0sNRNKZ.js","imports":[],"css":[]},"routes/resources+/lookout":{"id":"routes/resources+/lookout","parentId":"root","path":"resources/lookout","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/lookout-l0sNRNKZ.js","imports":[],"css":[]},"routes/resources+/offline-video-progress.$playbackId":{"id":"routes/resources+/offline-video-progress.$playbackId","parentId":"root","path":"resources/offline-video-progress/:playbackId","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/offline-video-progress._playbackId-l0sNRNKZ.js","imports":[],"css":[]},"routes/resources+/offline-videos":{"id":"routes/resources+/offline-videos","parentId":"root","path":"resources/offline-videos","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/offline-videos-l0sNRNKZ.js","imports":[],"css":[]},"routes/resources+/offline-videos.$playbackId":{"id":"routes/resources+/offline-videos.$playbackId","parentId":"routes/resources+/offline-videos","path":":playbackId","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/offline-videos._playbackId-l0sNRNKZ.js","imports":[],"css":[]},"routes/robots[.]txt":{"id":"routes/robots[.]txt","parentId":"root","path":"robots.txt","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/robots_._txt-l0sNRNKZ.js","imports":[],"css":[]},"routes/saved-playgrounds":{"id":"routes/saved-playgrounds","parentId":"root","path":"saved-playgrounds","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/saved-playgrounds-l0sNRNKZ.js","imports":[],"css":[]},"routes/set-playground":{"id":"routes/set-playground","parentId":"root","path":"set-playground","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/set-playground-l0sNRNKZ.js","imports":[],"css":[]},"routes/sitemap[.]xml":{"id":"routes/sitemap[.]xml","parentId":"root","path":"sitemap.xml","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/sitemap_._xml-l0sNRNKZ.js","imports":[],"css":[]},"routes/start":{"id":"routes/start","parentId":"root","path":"start","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/start-l0sNRNKZ.js","imports":[],"css":[]},"routes/test":{"id":"routes/test","parentId":"root","path":"test","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/test-l0sNRNKZ.js","imports":[],"css":[]},"routes/theme/index":{"id":"routes/theme/index","parentId":"root","path":"theme","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/index-DP2rzg_V.js","imports":[],"css":[]},"routes/video-player/index":{"id":"routes/video-player/index","parentId":"root","path":"video-player","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/index-K6Dvbx-E.js","imports":[],"css":[]}},"url":"/assets/manifest-5068a5dd.js","version":"5068a5dd"};
|
|
1
|
+
window.__reactRouterManifest={"entry":{"module":"/assets/entry.client-C5IgiyiE.js","imports":["/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js","/assets/index-vDCSPjrM.js","/assets/chunk-4LKRSAEJ-5b-X0-W6.js","/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/preload-helper-BXl3LOEh.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/root-HnVIVArh.js","imports":["/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js","/assets/index-vDCSPjrM.js","/assets/chunk-4LKRSAEJ-5b-X0-W6.js","/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/preload-helper-BXl3LOEh.js","/assets/misc-DNNpiA4n.js","/assets/client-only-CTGgqT3G.js","/assets/error-boundary-DdjH6trX.js","/assets/dialog-DC0NrI90.js","/assets/progress-bar-CPpSmw1y.js","/assets/index-DzdDahau.js","/assets/tooltip-DB1Mvqo5.js","/assets/schemas-Uj5SZtvt.js","/assets/index-CgjxpKnr.js","/assets/presence-cV5FMWJG.js","/assets/seo-t5J-DRxw.js","/assets/pe-FSGstb4x.js","/assets/index-C4dcRzSw.js","/assets/root-loader-DCpknoYz.js","/assets/online-Dusu3kom.js","/assets/coerce-CkHW0SMv.js"],"css":[]},"routes/$":{"id":"routes/$","parentId":"root","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/_-CVWKN67K.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/error-boundary-DdjH6trX.js","/assets/misc-DNNpiA4n.js","/assets/index-CqIc3cxq.js","/assets/preload-helper-BXl3LOEh.js"],"css":[]},"routes/_app+/_layout":{"id":"routes/_app+/_layout","parentId":"root","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/_layout-DLbMMUkp.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/misc-DNNpiA4n.js","/assets/index-CqIc3cxq.js","/assets/pe-FSGstb4x.js","/assets/onboarding-indicator-Dr3uJ2a-.js","/assets/product-Bvo6ar0v.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/status-indicator-C6DiLYL5.js","/assets/dialog-DC0NrI90.js","/assets/index-_Yn7oCIK.js","/assets/tooltip-DB1Mvqo5.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/online-Dusu3kom.js","/assets/presence-cV5FMWJG.js","/assets/root-loader-DCpknoYz.js","/assets/progress-Dfi0P9b6.js","/assets/index-CgjxpKnr.js","/assets/schemas-Uj5SZtvt.js","/assets/index-C4dcRzSw.js","/assets/index-vDCSPjrM.js","/assets/coerce-CkHW0SMv.js"],"css":[]},"routes/_app+/account":{"id":"routes/_app+/account","parentId":"routes/_app+/_layout","path":"account","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/account-CBaZPdj-.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/button-BNnUtmu5.js","/assets/misc-DNNpiA4n.js","/assets/onboarding-indicator-Dr3uJ2a-.js","/assets/tooltip-DB1Mvqo5.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/index-CqIc3cxq.js","/assets/root-loader-DCpknoYz.js","/assets/index-vDCSPjrM.js"],"css":[]},"routes/_app+/app.$appName+/$":{"id":"routes/_app+/app.$appName+/$","parentId":"routes/_app+/_layout","path":"app/:appName/*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/api.$":{"id":"routes/_app+/app.$appName+/api.$","parentId":"routes/_app+/_layout","path":"app/:appName/api/*","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/api._-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/epic_ws[.js]":{"id":"routes/_app+/app.$appName+/epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/epic_ws.js","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/index":{"id":"routes/_app+/app.$appName+/index","parentId":"routes/_app+/_layout","path":"app/:appName","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/index-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.$testName":{"id":"routes/_app+/app.$appName+/test.$testName","parentId":"routes/_app+/_layout","path":"app/:appName/test/:testName","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/test._testName-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.epic_ws[.js]":{"id":"routes/_app+/app.$appName+/test.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/test/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/test.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.epic_ws[.js]":{"id":"routes/_app+/app.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/app.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/discord":{"id":"routes/_app+/discord","parentId":"routes/_app+/_layout","path":"discord","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/discord-BI3sKsOi.js","imports":["/assets/discord-CnNgoE5_.js","/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/index-CqIc3cxq.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/misc-DNNpiA4n.js","/assets/user-CsmzX0SJ.js","/assets/root-loader-DCpknoYz.js","/assets/workshop-config-DAgfN2cG.js"],"css":[]},"routes/_app+/exercise+/_layout":{"id":"routes/_app+/exercise+/_layout","parentId":"routes/_app+/_layout","path":"exercise","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/_layout-C6zpF1_6.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber":{"id":"routes/_app+/exercise+/$exerciseNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber-Cpd_xzBa.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/epic-video-zIIQq7F6.js","/assets/error-boundary-DdjH6trX.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/launch-editor-CODm6xV9.js","/assets/progress-Dfi0P9b6.js","/assets/mdx-D3rADQeG.js","/assets/root-loader-DCpknoYz.js","/assets/seo-t5J-DRxw.js","/assets/error-boundary-BZFkJO70.js","/assets/index-CqIc3cxq.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-vDCSPjrM.js","/assets/index-CgjxpKnr.js","/assets/misc-DNNpiA4n.js","/assets/tooltip-DB1Mvqo5.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/preload-helper-BXl3LOEh.js","/assets/progress-bar-CPpSmw1y.js","/assets/chunk-4LKRSAEJ-5b-X0-W6.js","/assets/coerce-CkHW0SMv.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/:stepNumber/:type","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/_layout-kWQ2_uM6.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/index-CqIc3cxq.js","/assets/error-boundary-DdjH6trX.js","/assets/nav-chevrons-DoYP32rF.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/launch-editor-CODm6xV9.js","/assets/progress-Dfi0P9b6.js","/assets/set-playground-DQaMYgsB.js","/assets/misc-DNNpiA4n.js","/assets/root-loader-DCpknoYz.js","/assets/seo-t5J-DRxw.js","/assets/split-layout-DnRER1bP.js","/assets/error-boundary-BZFkJO70.js","/assets/epic-video-zIIQq7F6.js","/assets/tooltip-DB1Mvqo5.js","/assets/mdx-D3rADQeG.js","/assets/index-_Yn7oCIK.js","/assets/onboarding-indicator-Dr3uJ2a-.js","/assets/preload-helper-BXl3LOEh.js","/assets/schemas-Uj5SZtvt.js","/assets/progress-bar-CPpSmw1y.js","/assets/pe-FSGstb4x.js","/assets/index-DxxplhFG.js","/assets/index-vDCSPjrM.js","/assets/index-C4dcRzSw.js","/assets/button-BNnUtmu5.js","/assets/dialog-DC0NrI90.js","/assets/chunk-4LKRSAEJ-5b-X0-W6.js","/assets/coerce-CkHW0SMv.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-CgjxpKnr.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"app","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/app-CFb3MOPP.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js","/assets/preview-C1nvwOgT.js","/assets/misc-DNNpiA4n.js","/assets/button-BNnUtmu5.js","/assets/loading-Bul3MCPB.js","/assets/index-CgjxpKnr.js","/assets/tooltip-DB1Mvqo5.js","/assets/index-vDCSPjrM.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/progress-bar-CPpSmw1y.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/index-DdtI2qE4.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/playground-Bcq8gU78.js","/assets/diff-BnNULbxE.js","/assets/error-boundary-DdjH6trX.js","/assets/workshop-config-DAgfN2cG.js","/assets/misc-DNNpiA4n.js","/assets/preview-C1nvwOgT.js","/assets/tests-B1ZxOCP0.js","/assets/index-CqIc3cxq.js","/assets/loading-Bul3MCPB.js","/assets/index-CgjxpKnr.js","/assets/tooltip-DB1Mvqo5.js","/assets/index-vDCSPjrM.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/discord-CnNgoE5_.js","/assets/user-CsmzX0SJ.js","/assets/online-Dusu3kom.js","/assets/index-DxxplhFG.js","/assets/index-C4dcRzSw.js","/assets/status-indicator-C6DiLYL5.js","/assets/index-DzdDahau.js","/assets/set-playground-DQaMYgsB.js","/assets/button-BNnUtmu5.js","/assets/onboarding-indicator-Dr3uJ2a-.js","/assets/progress-bar-CPpSmw1y.js","/assets/dialog-DC0NrI90.js","/assets/playground-window-BLj2vFhH.js","/assets/accordion-DXLTgj7r.js","/assets/mdx-D3rADQeG.js","/assets/epic-video-zIIQq7F6.js","/assets/use-event-source-BuD4_2SF.js","/assets/format-CZ5n8p10.js","/assets/preload-helper-BXl3LOEh.js","/assets/launch-editor-CODm6xV9.js","/assets/revalidation-ws-B7gxE2XT.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"test","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/test-Bbdrfu35.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/tests-B1ZxOCP0.js","/assets/index-CqIc3cxq.js","/assets/accordion-DXLTgj7r.js","/assets/tooltip-DB1Mvqo5.js","/assets/index-vDCSPjrM.js","/assets/misc-DNNpiA4n.js","/assets/index-DxxplhFG.js","/assets/index-C4dcRzSw.js","/assets/epic-video-zIIQq7F6.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-CgjxpKnr.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/playground-window-BLj2vFhH.js","/assets/set-playground-DQaMYgsB.js","/assets/button-BNnUtmu5.js","/assets/onboarding-indicator-Dr3uJ2a-.js","/assets/progress-bar-CPpSmw1y.js","/assets/dialog-DC0NrI90.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/:stepNumber","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber_._stepNumber.index-y96ENZqu.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/error-boundary-DdjH6trX.js","/assets/error-boundary-BZFkJO70.js","/assets/index-CqIc3cxq.js","/assets/preload-helper-BXl3LOEh.js","/assets/misc-DNNpiA4n.js","/assets/chunk-4LKRSAEJ-5b-X0-W6.js","/assets/schemas-Uj5SZtvt.js","/assets/coerce-CkHW0SMv.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.finished":{"id":"routes/_app+/exercise+/$exerciseNumber_.finished","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_.finished-P1GS1kL8.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/index-CqIc3cxq.js","/assets/epic-video-zIIQq7F6.js","/assets/misc-DNNpiA4n.js","/assets/loading-Bul3MCPB.js","/assets/nav-chevrons-DoYP32rF.js","/assets/retrieval-practice-Db_juC2_.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/launch-editor-CODm6xV9.js","/assets/progress-Dfi0P9b6.js","/assets/index-CgjxpKnr.js","/assets/mdx-D3rADQeG.js","/assets/online-Dusu3kom.js","/assets/root-loader-DCpknoYz.js","/assets/seo-t5J-DRxw.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-vDCSPjrM.js","/assets/schemas-Uj5SZtvt.js","/assets/tooltip-DB1Mvqo5.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/progress-bar-CPpSmw1y.js","/assets/pe-FSGstb4x.js","/assets/preload-helper-BXl3LOEh.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/extra+/_layout":{"id":"routes/_app+/extra+/_layout","parentId":"routes/_app+/_layout","path":"extra","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/_layout-D0kJ70e0.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/_app+/extra+/$extra":{"id":"routes/_app+/extra+/$extra","parentId":"routes/_app+/extra+/_layout","path":":extra","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/_extra-Bgg3LO8n.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/playground-Bcq8gU78.js","/assets/index-CqIc3cxq.js","/assets/diff-BnNULbxE.js","/assets/epic-video-zIIQq7F6.js","/assets/error-boundary-DdjH6trX.js","/assets/nav-chevrons-DoYP32rF.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/workshop-config-DAgfN2cG.js","/assets/preview-C1nvwOgT.js","/assets/launch-editor-CODm6xV9.js","/assets/set-playground-DQaMYgsB.js","/assets/mdx-D3rADQeG.js","/assets/root-loader-DCpknoYz.js","/assets/seo-t5J-DRxw.js","/assets/split-layout-DnRER1bP.js","/assets/misc-DNNpiA4n.js","/assets/loading-Bul3MCPB.js","/assets/index-CgjxpKnr.js","/assets/tooltip-DB1Mvqo5.js","/assets/index-vDCSPjrM.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/discord-CnNgoE5_.js","/assets/user-CsmzX0SJ.js","/assets/online-Dusu3kom.js","/assets/index-DxxplhFG.js","/assets/index-C4dcRzSw.js","/assets/status-indicator-C6DiLYL5.js","/assets/index-DzdDahau.js","/assets/playground-window-BLj2vFhH.js","/assets/accordion-DXLTgj7r.js","/assets/use-event-source-BuD4_2SF.js","/assets/format-CZ5n8p10.js","/assets/preload-helper-BXl3LOEh.js","/assets/button-BNnUtmu5.js","/assets/progress-bar-CPpSmw1y.js","/assets/onboarding-indicator-Dr3uJ2a-.js","/assets/dialog-DC0NrI90.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/extra+/index":{"id":"routes/_app+/extra+/index","parentId":"routes/_app+/extra+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/index-DAwFXOCI.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/epic-video-zIIQq7F6.js","/assets/error-boundary-DdjH6trX.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/launch-editor-CODm6xV9.js","/assets/mdx-D3rADQeG.js","/assets/misc-DNNpiA4n.js","/assets/root-loader-DCpknoYz.js","/assets/seo-t5J-DRxw.js","/assets/index-CqIc3cxq.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-vDCSPjrM.js","/assets/index-CgjxpKnr.js","/assets/tooltip-DB1Mvqo5.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/preload-helper-BXl3LOEh.js","/assets/progress-bar-CPpSmw1y.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/finished":{"id":"routes/_app+/finished","parentId":"routes/_app+/_layout","path":"finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/finished-Bk-fF1HX.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/index-CqIc3cxq.js","/assets/epic-video-zIIQq7F6.js","/assets/misc-DNNpiA4n.js","/assets/loading-Bul3MCPB.js","/assets/nav-chevrons-DoYP32rF.js","/assets/retrieval-practice-Db_juC2_.js","/assets/revalidation-ws-B7gxE2XT.js","/assets/mdx-D3rADQeG.js","/assets/online-Dusu3kom.js","/assets/root-loader-DCpknoYz.js","/assets/seo-t5J-DRxw.js","/assets/launch-editor-CODm6xV9.js","/assets/progress-Dfi0P9b6.js","/assets/index-CgjxpKnr.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-vDCSPjrM.js","/assets/schemas-Uj5SZtvt.js","/assets/tooltip-DB1Mvqo5.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/preload-helper-BXl3LOEh.js","/assets/progress-bar-CPpSmw1y.js","/assets/pe-FSGstb4x.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/guide":{"id":"routes/_app+/guide","parentId":"routes/_app+/_layout","path":"guide","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/guide-CDj10zGZ.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/_app+/index":{"id":"routes/_app+/index","parentId":"routes/_app+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/index-CNGl4G6U.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-Dh1LZOLA.js","/assets/epic-video-zIIQq7F6.js","/assets/error-boundary-DdjH6trX.js","/assets/launch-editor-CODm6xV9.js","/assets/mdx-D3rADQeG.js","/assets/misc-DNNpiA4n.js","/assets/progress-Dfi0P9b6.js","/assets/index-CqIc3cxq.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-vDCSPjrM.js","/assets/index-CgjxpKnr.js","/assets/tooltip-DB1Mvqo5.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/preload-helper-BXl3LOEh.js","/assets/progress-bar-CPpSmw1y.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/_app+/l":{"id":"routes/_app+/l","parentId":"routes/_app+/_layout","path":"l","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/l-mCt29B3Y.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/_app+/login":{"id":"routes/_app+/login","parentId":"routes/_app+/_layout","path":"login","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/login-J8iyXigI.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js","/assets/use-event-source-BuD4_2SF.js","/assets/button-BNnUtmu5.js","/assets/loading-Bul3MCPB.js","/assets/product-Bvo6ar0v.js","/assets/workshop-config-DAgfN2cG.js","/assets/schemas-Uj5SZtvt.js","/assets/misc-DNNpiA4n.js","/assets/index-CgjxpKnr.js","/assets/tooltip-DB1Mvqo5.js","/assets/index-vDCSPjrM.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js"],"css":[]},"routes/_app+/preferences":{"id":"routes/_app+/preferences","parentId":"routes/_app+/_layout","path":"preferences","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/preferences-ChwHoPXA.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/button-BNnUtmu5.js","/assets/misc-DNNpiA4n.js","/assets/tooltip-DB1Mvqo5.js","/assets/format-CZ5n8p10.js","/assets/root-loader-DCpknoYz.js","/assets/index-CqIc3cxq.js","/assets/index-vDCSPjrM.js"],"css":[]},"routes/_app+/support":{"id":"routes/_app+/support","parentId":"routes/_app+/_layout","path":"support","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/support-Dvvjq6Qz.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/_app+/workspace-structure":{"id":"routes/_app+/workspace-structure","parentId":"routes/_app+/_layout","path":"workspace-structure","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/workspace-structure-BgwUwavv.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/button-BNnUtmu5.js","/assets/index-CqIc3cxq.js","/assets/misc-DNNpiA4n.js"],"css":[]},"routes/admin+/_layout":{"id":"routes/admin+/_layout","parentId":"root","path":"admin","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/_layout-sHMziZmV.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/root-loader-DCpknoYz.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/admin+/apps":{"id":"routes/admin+/apps","parentId":"routes/admin+/_layout","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/apps-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/cache":{"id":"routes/admin+/cache","parentId":"routes/admin+/_layout","path":"cache","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/cache-BymCGtPO.js","imports":["/assets/chunk-4LKRSAEJ-5b-X0-W6.js","/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js","/assets/client-only-CTGgqT3G.js","/assets/button-BNnUtmu5.js","/assets/misc-DNNpiA4n.js","/assets/launch-editor-CODm6xV9.js","/assets/pe-FSGstb4x.js","/assets/progress-bar-CPpSmw1y.js","/assets/root-loader-DCpknoYz.js"],"css":[]},"routes/admin+/cache.$":{"id":"routes/admin+/cache.$","parentId":"routes/admin+/cache","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/cache._-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/db":{"id":"routes/admin+/db","parentId":"routes/admin+/_layout","path":"db","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/db-026f86om.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/misc-DNNpiA4n.js","/assets/tooltip-DB1Mvqo5.js","/assets/launch-editor-CODm6xV9.js","/assets/index-CqIc3cxq.js","/assets/index-vDCSPjrM.js","/assets/progress-bar-CPpSmw1y.js","/assets/pe-FSGstb4x.js","/assets/root-loader-DCpknoYz.js"],"css":[]},"routes/admin+/index":{"id":"routes/admin+/index","parentId":"routes/admin+/_layout","index":true,"hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/index-6hPEaMox.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/misc-DNNpiA4n.js","/assets/index-CqIc3cxq.js","/assets/tooltip-DB1Mvqo5.js","/assets/progress-Dfi0P9b6.js","/assets/root-loader-DCpknoYz.js","/assets/index-vDCSPjrM.js","/assets/pe-FSGstb4x.js"],"css":[]},"routes/admin+/notifications":{"id":"routes/admin+/notifications","parentId":"routes/admin+/_layout","path":"notifications","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/notifications-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/offline-videos":{"id":"routes/admin+/offline-videos","parentId":"routes/admin+/_layout","path":"offline-videos","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/offline-videos-DBzHEdef.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/format-CZ5n8p10.js","/assets/misc-DNNpiA4n.js","/assets/index-CqIc3cxq.js"],"css":[]},"routes/admin+/version":{"id":"routes/admin+/version","parentId":"routes/admin+/_layout","path":"version","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/version-DqcLWrd-.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/workshop-config-DAgfN2cG.js","/assets/index-CqIc3cxq.js","/assets/root-loader-DCpknoYz.js"],"css":[]},"routes/admin+/version[.json]":{"id":"routes/admin+/version[.json]","parentId":"routes/admin+/_layout","path":"version.json","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/version_.json_-l0sNRNKZ.js","imports":[],"css":[]},"routes/apps":{"id":"routes/apps","parentId":"root","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/apps-DP2rzg_V.js","imports":[],"css":[]},"routes/diff":{"id":"routes/diff","parentId":"root","path":"diff","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/diff-YYfEooTn.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/misc-DNNpiA4n.js","/assets/diff-BnNULbxE.js","/assets/nav-chevrons-DoYP32rF.js","/assets/index-CqIc3cxq.js","/assets/accordion-DXLTgj7r.js","/assets/tooltip-DB1Mvqo5.js","/assets/index-vDCSPjrM.js","/assets/index-DxxplhFG.js","/assets/index-C4dcRzSw.js","/assets/mdx-D3rADQeG.js","/assets/index-DzdDahau.js","/assets/epic-video-zIIQq7F6.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-CgjxpKnr.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js","/assets/preload-helper-BXl3LOEh.js","/assets/launch-editor-CODm6xV9.js","/assets/progress-bar-CPpSmw1y.js","/assets/revalidation-ws-B7gxE2XT.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/diff.$shortcut":{"id":"routes/diff.$shortcut","parentId":"routes/diff","path":":shortcut","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/diff._shortcut-l0sNRNKZ.js","imports":[],"css":[]},"routes/exercises":{"id":"routes/exercises","parentId":"root","path":"exercises","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/exercises-l0sNRNKZ.js","imports":[],"css":[]},"routes/launch-editor":{"id":"routes/launch-editor","parentId":"root","path":"launch-editor","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/launch-editor-l0sNRNKZ.js","imports":[],"css":[]},"routes/login-sse":{"id":"routes/login-sse","parentId":"root","path":"login-sse","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/login-sse-l0sNRNKZ.js","imports":[],"css":[]},"routes/mark-onboarding-complete":{"id":"routes/mark-onboarding-complete","parentId":"root","path":"mark-onboarding-complete","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/mark-onboarding-complete-l0sNRNKZ.js","imports":[],"css":[]},"routes/mcp-ui+/epic-video":{"id":"routes/mcp-ui+/epic-video","parentId":"root","path":"mcp-ui/epic-video","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/epic-video-BIdyODeo.js","imports":["/assets/chunk-JZWAC4HX-BRaE0UIv.js","/assets/jsx-runtime-C5WNSv3b.js","/assets/index-CqIc3cxq.js","/assets/epic-video-zIIQq7F6.js","/assets/use-event-source-BuD4_2SF.js","/assets/index-DzdDahau.js","/assets/index-vDCSPjrM.js","/assets/index-CgjxpKnr.js","/assets/misc-DNNpiA4n.js","/assets/tooltip-DB1Mvqo5.js","/assets/root-loader-DCpknoYz.js","/assets/pe-FSGstb4x.js","/assets/schemas-Uj5SZtvt.js","/assets/online-Dusu3kom.js","/assets/loading-Bul3MCPB.js","/assets/format-CZ5n8p10.js","/assets/user-CsmzX0SJ.js","/assets/workshop-config-DAgfN2cG.js"],"css":["/assets/epic-video-irT-uesJ.css"]},"routes/og":{"id":"routes/og","parentId":"root","path":"og","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/og-l0sNRNKZ.js","imports":[],"css":[]},"routes/persist-playground":{"id":"routes/persist-playground","parentId":"root","path":"persist-playground","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/persist-playground-l0sNRNKZ.js","imports":[],"css":[]},"routes/processes":{"id":"routes/processes","parentId":"root","path":"processes","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/processes-l0sNRNKZ.js","imports":[],"css":[]},"routes/progress":{"id":"routes/progress","parentId":"root","path":"progress","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/progress-l0sNRNKZ.js","imports":[],"css":[]},"routes/resources+/healthcheck":{"id":"routes/resources+/healthcheck","parentId":"root","path":"resources/healthcheck","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/healthcheck-l0sNRNKZ.js","imports":[],"css":[]},"routes/resources+/lookout":{"id":"routes/resources+/lookout","parentId":"root","path":"resources/lookout","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/lookout-l0sNRNKZ.js","imports":[],"css":[]},"routes/resources+/offline-video-progress.$playbackId":{"id":"routes/resources+/offline-video-progress.$playbackId","parentId":"root","path":"resources/offline-video-progress/:playbackId","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/offline-video-progress._playbackId-l0sNRNKZ.js","imports":[],"css":[]},"routes/resources+/offline-videos":{"id":"routes/resources+/offline-videos","parentId":"root","path":"resources/offline-videos","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/offline-videos-l0sNRNKZ.js","imports":[],"css":[]},"routes/resources+/offline-videos.$playbackId":{"id":"routes/resources+/offline-videos.$playbackId","parentId":"routes/resources+/offline-videos","path":":playbackId","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/offline-videos._playbackId-l0sNRNKZ.js","imports":[],"css":[]},"routes/robots[.]txt":{"id":"routes/robots[.]txt","parentId":"root","path":"robots.txt","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/robots_._txt-l0sNRNKZ.js","imports":[],"css":[]},"routes/saved-playgrounds":{"id":"routes/saved-playgrounds","parentId":"root","path":"saved-playgrounds","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/saved-playgrounds-l0sNRNKZ.js","imports":[],"css":[]},"routes/set-playground":{"id":"routes/set-playground","parentId":"root","path":"set-playground","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/set-playground-l0sNRNKZ.js","imports":[],"css":[]},"routes/sitemap[.]xml":{"id":"routes/sitemap[.]xml","parentId":"root","path":"sitemap.xml","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/sitemap_._xml-l0sNRNKZ.js","imports":[],"css":[]},"routes/start":{"id":"routes/start","parentId":"root","path":"start","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/start-l0sNRNKZ.js","imports":[],"css":[]},"routes/test":{"id":"routes/test","parentId":"root","path":"test","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/test-l0sNRNKZ.js","imports":[],"css":[]},"routes/theme/index":{"id":"routes/theme/index","parentId":"root","path":"theme","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/index-DP2rzg_V.js","imports":[],"css":[]},"routes/video-player/index":{"id":"routes/video-player/index","parentId":"root","path":"video-player","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/index-K6Dvbx-E.js","imports":[],"css":[]}},"url":"/assets/manifest-27726850.js","version":"27726850"};
|