{"version":3,"mappings":"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","names":["sharedConfig","setHydrateContext","context","equalFn","a","b","$PROXY","$TRACK","signalOptions","ERROR","runEffects","runQueue","STALE","PENDING","UNOWNED","NO_INIT","Owner","Transition","Listener","Updates","Effects","ExecCount","transPending","setTransPending","createSignal","createRoot","fn","detachedOwner","listener","owner","unowned","current","root","updateFn","untrack","cleanNode","runUpdates","value","options","s","setter","writeSignal","readSignal","createComputed","c","createComputation","updateComputation","createRenderEffect","createEffect","runUserEffects","SuspenseContext","useContext","createMemo","isPromise","v","createResource","pSource","pFetcher","pOptions","source","fetcher","pr","initP","id","loadedUnderTransition","scheduled","resolved","dynamic","contexts","setValue","error","setError","track","trigger","state","setState","loadEnd","p","key","completeLoad","err","read","load","refetching","lookup","e","castError","batch","on","deps","isArray","prevInput","defer","prevValue","input","i","result","onMount","onCleanup","catchError","handler","handleError","getListener","getOwner","runWithOwner","o","prev","prevListener","startTransition","l","t","res","useTransition","resumeEffects","createContext","defaultValue","createProvider","children","memo","resolveChildren","getSuspenseContext","runningTransition","updates","lookUpstream","sSlot","node","isComp","TransitionRunning","markDownstream","time","runComputation","nextValue","init","pure","runTop","ancestors","top","wait","completeUpdates","sources","disposed","d","len","queue","userLength","ignore","index","obs","n","reset","runErrors","fns","f","results","props","FALLBACK","dispose","mapArray","list","mapFn","items","mapped","disposers","indexes","newItems","j","newLen","newIndices","newIndicesNext","temp","tempdisposers","tempIndexes","start","end","newEnd","item","disposer","mapper","set","indexArray","signals","createComponent","Comp","trueFn","propTraps","_","property","receiver","resolveSource","resolveSources","length","mergeProps","proxy","keys","target","sourcesMap","defined","sourceKeys","desc","splitProps","blocked","k","otherObject","objects","propName","isDefaultDesc","objectIndex","lazy","comp","wrap","ctx","mod","r","counter","createUniqueId","narrowedError","name","For","fallback","Index","Show","keyed","condition","child","Errors","resetErrorBoundaries","ErrorBoundary","errored","setErrored","SuspenseListContext","Suspense","show","flicker","inFallback","setFallback","store","ref","listContext","rendered","showContent","showFallback","booleans","Properties","ChildProperties","Aliases","PropAliases","getPropAlias","prop","tagName","DelegatedEvents","SVGNamespace","reconcileArrays","parentNode","bLength","aEnd","bEnd","aStart","bStart","after","map","sequence","$$EVENTS","render","code","element","insert","template","html","isCE","isSVG","create","delegateEvents","eventNames","document","eventHandler","setAttribute","setAttributeNS","namespace","className","addEventListener","delegate","handlerFn","classList","classKeys","prevKeys","toggleClassKey","classValue","style","nodeStyle","spread","skipChildren","prevProps","insertExpression","assign","use","arg","parent","accessor","marker","initial","skipRef","assignProp","toPropertyName","w","classNames","nameLen","isProp","isChildProp","propAlias","forceProp","h","ns","data","unwrapArray","cleaned","multi","cleanChildren","array","currentArray","normalizeIncomingArray","nodes","appendNodes","normalized","unwrap","replacement","inserted","el","isParent","isServer","SVG_NAMESPACE","createElement","Portal","useShadow","mount","content","hydrating","clean","setClean","cleanup","container","renderRoot","Icon","_el$","_tmpl$","_$effect","_$className","icon","class","ab","ay","by","ch","de","en","fr","hr","ja","je","ma","mo","od","ot","ru","zx","food","gold","stone","wood","popcap","oliveoil","vizier","FLAGS","RESOURCES","CivFlag","civ","rest","_$spread","_$mergeProps","src","abbr","CIVILIZATIONS","CIVILIZATION_BY_SLUG","acc","ITEMS","SUPPORTED_MODIFIER_PROPERTIES","SIMILAIR_ITEMS","PRETTY_AGE_MAP","PRETTY_AGE_MAP_LONG","PRETTY_AGE_MAP_SHORT","CURATED_CONTENT_API","staticMaps","SDK","mapCivsArgument","civs","configs","getItemTechnologies","type","includeAllCivsUnitSpecificTech","Get","technologies","unifiedItem","filteringByCiv","variations","modifiers","techMatchesItemId","m","modifierMatches","techMatchesItemClass","appliesToMultipleCivs","itemIsUnique","getMostAppropriateVariation","_a","splitUnitsIntoGroups","units","grouped","unit","splitBuildingsIntoGroups","buildings","splitTechnologiesIntroGroups","tech","matcher","_b","_c","matchesId","matchesClass","cl","canonicalItemName","group","getItemByCanonicalName","getMapAsItem","sdk","findClosestMatch","similair","closestMatch","capitlize","string","patchOrder","sortPatchDiff","getPatchHistory","patches","__vitePreload","cid","civAbbrs","history","patch","diff","section","civOverlap","lc","filter"],"sources":["../../../node_modules/solid-js/dist/solid.js","../../../node_modules/solid-js/web/dist/web.js","../../../app/frontend/lib/explorer/src/components/Icon.tsx","../../../app/frontend/lib/explorer/assets/flags/ab.png","../../../app/frontend/lib/explorer/assets/flags/ay.png","../../../app/frontend/lib/explorer/assets/flags/by.png","../../../app/frontend/lib/explorer/assets/flags/ch.png","../../../app/frontend/lib/explorer/assets/flags/de.png","../../../app/frontend/lib/explorer/assets/flags/en.png","../../../app/frontend/lib/explorer/assets/flags/fr.png","../../../app/frontend/lib/explorer/assets/flags/hr.png","../../../app/frontend/lib/explorer/assets/flags/ja.png","../../../app/frontend/lib/explorer/assets/flags/je.png","../../../app/frontend/lib/explorer/assets/flags/ma.png","../../../app/frontend/lib/explorer/assets/flags/mo.png","../../../app/frontend/lib/explorer/assets/flags/od.png","../../../app/frontend/lib/explorer/assets/flags/ot.png","../../../app/frontend/lib/explorer/assets/flags/ru.png","../../../app/frontend/lib/explorer/assets/flags/zx.png","../../../app/frontend/lib/explorer/assets/resources/food.png","../../../app/frontend/lib/explorer/assets/resources/gold.png","../../../app/frontend/lib/explorer/assets/resources/stone.png","../../../app/frontend/lib/explorer/assets/resources/wood.png","../../../app/frontend/lib/explorer/assets/resources/time.png","../../../app/frontend/lib/explorer/assets/resources/popcap.png","../../../app/frontend/lib/explorer/assets/resources/oliveoil.png","../../../app/frontend/lib/explorer/assets/resources/vizierpoints.png","../../../app/frontend/lib/explorer/assets/index.ts","../../../app/frontend/lib/explorer/src/components/CivFlag.tsx","../../../app/frontend/lib/explorer/data/src/lib/config/civs.ts","../../../app/frontend/lib/explorer/data/src/types/civs.ts","../../../app/frontend/lib/explorer/data/src/types/items.ts","../../../app/frontend/lib/explorer/src/config.ts","../../../app/frontend/lib/explorer/src/data/maps.ts","../../../app/frontend/lib/explorer/src/query/utils.ts"],"sourcesContent":["let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined\n};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceFactory = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (arguments.length === 2 && typeof pFetcher === \"object\" || arguments.length === 1) {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n } else {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = (\"initialValue\" in options),\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n let v;\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v;\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup, {\n value: value(),\n refetching\n }));\n if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"value\" in p) {\n if (p.status === \"success\") loadEnd(pr, p.value, undefined, lookup);else loadEnd(pr, undefined, undefined, lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));else load(false);\n return [read, {\n refetch: load,\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, options);\n updateComputation(node);\n setDeferred(() => Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return undefined;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n return Owner && Owner.context && Owner.context[context.id] !== undefined ? Owner.context[context.id] : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory) {\n if (ExternalSourceFactory) {\n const oldFactory = ExternalSourceFactory;\n ExternalSourceFactory = (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n };\n } else {\n ExternalSourceFactory = factory;\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const owner = Owner,\n listener = Listener,\n time = ExecCount;\n Listener = Owner = node;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n Listener = listener;\n Owner = owner;\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceFactory) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceFactory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n } else if (sharedConfig.effects) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n setHydrateContext();\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, owner && owner.owner || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects) Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const target = {};\n const sourcesMap = {};\n const defined = new Set();\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = 0, length = sourceKeys.length; i < length; i++) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined.has(key)) {\n if (desc.get) {\n defined.add(key);\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])\n });\n } else {\n if (desc.value !== undefined) defined.add(key);\n target[key] = desc.value;\n }\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) {\n sources.push(desc.get.bind(source));\n } else if (desc.value !== undefined) {\n sources.push(() => desc.value);\n }\n } else if (target[key] === undefined) target[key] = desc.value;\n }\n }\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n if ($PROXY in props) {\n const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n }, propTraps));\n return res;\n }\n const otherObject = {};\n const objects = keys.map(() => ({}));\n for (const propName of Object.getOwnPropertyNames(props)) {\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n let blocked = false;\n let objectIndex = 0;\n for (const k of keys) {\n if (k.includes(propName)) {\n blocked = true;\n isDefaultDesc ? objects[objectIndex][propName] = desc.value : Object.defineProperty(objects[objectIndex], propName, desc);\n }\n ++objectIndex;\n }\n if (!blocked) {\n isDefaultDesc ? otherObject[propName] = desc.value : Object.defineProperty(otherObject, propName, desc);\n }\n }\n return [...objects, otherObject];\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) && untrack(() => {\n if (false) ;\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }));\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => keyed ? a === b : !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(keyed ? c : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return props.when;\n })) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n let keyed = false;\n const equals = (a, b) => a[0] === b[0] && (keyed ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n const conditions = children(() => props.children),\n evalConditions = createMemo(() => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) {\n keyed = !!conds[i].keyed;\n return [i, c, conds[i]];\n }\n }\n return [-1];\n }, undefined, {\n equals\n });\n return createMemo(() => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n const fn = typeof c === \"function\" && c.length > 0;\n return fn ? untrack(() => c(keyed ? when : () => {\n if (untrack(evalConditions)[0] !== index) throw narrowedError(\"Match\");\n return cond.when;\n })) : c;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load) err = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count);\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n let ref = sharedConfig.load(key);\n if (ref && (typeof ref !== \"object\" || ref.status !== \"success\")) p = ref;\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(() => {\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n }).catch(err => {\n if (err || sharedConfig.done) {\n err && (error = err);\n return set();\n }\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, catchError, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createRoot, sharedConfig, createRenderEffect, untrack, enableHydration, getOwner, createEffect, runWithOwner, createMemo, createSignal, onCleanup, splitProps } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, createMemo as memo, mergeProps, untrack } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"autofocus\", \"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\", \"indeterminate\", \"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\", \"selected\"];\nconst Properties = /*#__PURE__*/new Set([\"className\", \"value\", \"readOnly\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", ...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = /*#__PURE__*/Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: {\n $: \"formNoValidate\",\n BUTTON: 1,\n INPUT: 1\n },\n ismap: {\n $: \"isMap\",\n IMG: 1\n },\n nomodule: {\n $: \"noModule\",\n SCRIPT: 1\n },\n playsinline: {\n $: \"playsInline\",\n VIDEO: 1\n },\n readonly: {\n $: \"readOnly\",\n INPUT: 1,\n TEXTAREA: 1\n }\n});\nfunction getPropAlias(prop, tagName) {\n const a = PropAliases[prop];\n return typeof a === \"object\" ? a[tagName] ? a[\"$\"] : undefined : a;\n}\nconst DelegatedEvents = /*#__PURE__*/new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = /*#__PURE__*/new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, isCE, isSVG) {\n let node;\n const create = () => {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n return isSVG ? t.content.firstChild.firstChild : t.content.firstChild;\n };\n const fn = isCE ? () => untrack(() => document.importNode(node || (node = create()), true)) : () => (node || (node = create())).cloneNode(true);\n fn.cloneNode = fn;\n return fn;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setProperty(node, name, value) {\n !sharedConfig.context && (node[name] = value);\n}\nfunction setAttribute(node, name, value) {\n if (sharedConfig.context) return;\n if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (sharedConfig.context) return;\n if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (sharedConfig.context) return;\n if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return nodeStyle.cssText = value;\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = id => globalThis._$HY.r[id];\n sharedConfig.has = id => id in globalThis._$HY.r;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes], options);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n return template();\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"$\") count++;else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const {\n completed,\n events\n } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp, propAlias, forceProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev);\n value && node.addEventListener(e, value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if (prop.slice(0, 5) === \"attr:\") {\n setAttribute(node, prop.slice(5), value);\n } else if ((forceProp = prop.slice(0, 5) === \"prop:\") || (isChildProp = ChildProperties.has(prop)) || !isSVG && ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\"))) {\n if (forceProp) {\n prop = prop.slice(5);\n isProp = true;\n } else if (sharedConfig.context) return value;\n if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[propAlias || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = e.composedPath && e.composedPath()[0] || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;\n while (node) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node = node._$host || node.parentNode || node.host;\n }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n if (sharedConfig.context) {\n !current && (current = [...parent.childNodes]);\n let cleaned = [];\n for (let i = 0; i < current.length; i++) {\n const node = current[i];\n if (node.nodeType === 8 && node.data.slice(0, 2) === \"!$\") node.remove();else cleaned.push(node);\n }\n current = cleaned;\n }\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = multi && current[0] && current[0].parentNode || parent;\n if (t === \"string\" || t === \"number\") {\n if (sharedConfig.context) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data = value;\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (sharedConfig.context) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (sharedConfig.context) {\n if (!array.length) return current;\n if (marker === undefined) return [...parent.childNodes];\n let node = array[0];\n let nodes = [node];\n while ((node = node.nextSibling) !== marker) nodes.push(node);\n return current = nodes;\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value.nodeType) {\n if (sharedConfig.context && value.parentNode) return current = multi ? [value] : value;\n if (Array.isArray(current)) {\n if (multi) return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else ;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[i],\n t;\n if (item == null || item === true || item === false) ; else if ((t = typeof item) === \"object\" && item.nodeType) {\n normalized.push(item);\n } else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return parent.textContent = \"\";\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nfunction voidFn() {}\nconst RequestContext = Symbol();\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst isDev = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const {\n useShadow\n } = props,\n marker = document.createTextNode(\"\"),\n mount = () => props.mount || document.body,\n owner = getOwner();\n let content;\n let hydrating = !!sharedConfig.context;\n createEffect(() => {\n if (hydrating) getOwner().user = hydrating = false;\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n const el = mount();\n if (el instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(el, () => !clean() ? content() : dispose(), null));\n onCleanup(cleanup);\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n mode: \"open\"\n }) : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => el.removeChild(container));\n }\n }, undefined, {\n render: !hydrating\n });\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, Properties, RequestContext, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, getPropAlias, voidFn as getRequestEvent, hydrate, innerHTML, insert, isDev, isServer, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, setProperty, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };\n","import { Component } from \"solid-js\";\n\nexport const Icon: Component<{ icon: string; class?: string }> = (props) => ;\n","export default \"__VITE_ASSET__0773fb1a__\"","export default \"__VITE_ASSET__40fab727__\"","export default \"__VITE_ASSET__56a9b1c8__\"","export default \"__VITE_ASSET__e572896b__\"","export default \"__VITE_ASSET__184ad0fc__\"","export default \"__VITE_ASSET__f43b4562__\"","export default \"__VITE_ASSET__ae28ba06__\"","export default \"__VITE_ASSET__ec52f04f__\"","export default \"__VITE_ASSET__0e8e58bd__\"","export default \"__VITE_ASSET__6af23ece__\"","export default \"__VITE_ASSET__2b74ed27__\"","export default \"__VITE_ASSET__3c0fb50c__\"","export default \"__VITE_ASSET__b4c65213__\"","export default \"__VITE_ASSET__383fced2__\"","export default \"__VITE_ASSET__bb549645__\"","export default \"__VITE_ASSET__49b6a48e__\"","export default \"__VITE_ASSET__8403e97d__\"","export default \"__VITE_ASSET__1473a4e5__\"","export default \"__VITE_ASSET__1ace6197__\"","export default \"__VITE_ASSET__503286f8__\"","export default \"data:image/png;base64,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\"","export default \"__VITE_ASSET__7aefd2b1__\"","export default \"__VITE_ASSET__acc3e711__\"","export default \"__VITE_ASSET__0a640455__\"","import ab from \"./flags/ab.png\";\nimport ay from \"./flags/ay.png\";\nimport by from \"./flags/by.png\";\nimport ch from \"./flags/ch.png\";\nimport de from \"./flags/de.png\";\nimport en from \"./flags/en.png\";\nimport fr from \"./flags/fr.png\";\nimport hr from \"./flags/hr.png\";\nimport ja from \"./flags/ja.png\";\nimport je from \"./flags/je.png\";\nimport ma from \"./flags/ma.png\";\nimport mo from \"./flags/mo.png\";\nimport od from \"./flags/od.png\";\nimport ot from \"./flags/ot.png\";\nimport ru from \"./flags/ru.png\";\nimport zx from \"./flags/zx.png\";\n\nimport food from \"./resources/food.png\";\nimport gold from \"./resources/gold.png\";\nimport stone from \"./resources/stone.png\";\nimport wood from \"./resources/wood.png\";\nimport time from \"./resources/time.png\";\nimport popcap from \"./resources/popcap.png\";\nimport oliveoil from \"./resources/oliveoil.png\";\nimport vizier from \"./resources/vizierpoints.png\";\n\nexport const FLAGS = { ab, ay, by, ch, de, en, fr, hr, ja, je, ma, mo, od, ot, ru, zx };\n\nexport const RESOURCES = { food, gold, stone, wood, time, popcap, oliveoil, vizier };\n","import { Component, ComponentProps, splitProps } from \"solid-js\";\nimport { FLAGS } from \"../../assets\";\nimport { civAbbr } from \"../types/data\";\n\nexport const CivFlag: Component & { abbr: civAbbr }> = (props) => {\n const [civ, rest] = splitProps(props, [\"abbr\"]);\n return
;\n};\n","export const CIVILIZATIONS = {\n ab: {\n name: \"Abbasid Dynasty\",\n abbr: \"ab\",\n slug: \"abbasid\",\n attribName: \"abbasid\",\n expansion: [\"base\"],\n },\n ay: {\n name: \"Ayyubids\",\n abbr: \"ay\",\n slug: \"ayyubids\",\n attribName: \"abbasid_ha_01\",\n expansion: [\"sultans-ascend\"],\n },\n by: {\n name: \"Byzantines\",\n abbr: \"by\",\n slug: \"byzantines\",\n attribName: \"byzantine\",\n expansion: [\"sultans-ascend\"],\n },\n ch: {\n name: \"Chinese\",\n abbr: \"ch\",\n slug: \"chinese\",\n attribName: \"chinese\",\n expansion: [\"base\"],\n },\n de: {\n name: \"Delhi Sultanate\",\n abbr: \"de\",\n slug: \"delhi\",\n attribName: \"sultanate\",\n expansion: [\"base\"],\n },\n en: {\n name: \"English\",\n abbr: \"en\",\n slug: \"english\",\n attribName: \"english\",\n expansion: [\"base\"],\n },\n fr: {\n name: \"French\",\n abbr: \"fr\",\n slug: \"french\",\n attribName: \"french\",\n expansion: [\"base\"],\n },\n hr: {\n name: \"Holy Roman Empire\",\n abbr: \"hr\",\n slug: \"hre\",\n attribName: \"hre\",\n expansion: [\"base\"],\n },\n ja: {\n name: \"Japanese\",\n abbr: \"ja\",\n slug: \"japanese\",\n attribName: \"japanese\",\n expansion: [\"sultans-ascend\"],\n },\n je: {\n name: \"Jeanne d'Arc\",\n abbr: \"je\",\n slug: \"jeannedarc\",\n attribName: \"french_ha_01\",\n expansion: [\"sultans-ascend\"],\n },\n ma: {\n name: \"Malians\",\n abbr: \"ma\",\n slug: \"malians\",\n attribName: \"malian\",\n expansion: [\"base\"],\n },\n mo: {\n name: \"Mongols\",\n abbr: \"mo\",\n slug: \"mongols\",\n attribName: \"mongol\",\n expansion: [\"base\"],\n },\n od: {\n name: \"Order of the Dragon\",\n abbr: \"od\",\n slug: \"orderofthedragon\",\n attribName: \"hre_ha_01\",\n expansion: [\"sultans-ascend\"],\n },\n ot: {\n name: \"Ottomans\",\n abbr: \"ot\",\n slug: \"ottomans\",\n attribName: \"ottoman\",\n expansion: [\"base\"],\n },\n ru: {\n name: \"Rus\",\n abbr: \"ru\",\n slug: \"rus\",\n attribName: \"rus\",\n expansion: [\"base\"],\n },\n zx: {\n name: \"Zhu Xi's Legacy\",\n abbr: \"zx\",\n slug: \"zhuxi\",\n attribName: \"chinese_ha_01\",\n expansion: [\"sultans-ascend\"],\n },\n} as const;\n","import { CIVILIZATIONS } from \"../lib/config/civs\";\n\nexport type CivAbbr = keyof typeof CIVILIZATIONS;\nexport type CivSlug = typeof CIVILIZATIONS[CivAbbr][\"slug\"];\n\nexport type CivConfig = {\n name: string;\n abbr: CivAbbr;\n slug: CivSlug;\n attribName?: string;\n expansion: string[];\n};\n\nexport type CivInfo = {\n name: string;\n classes: string;\n description: string;\n // backdrop?: string;\n overview: { title: string; description?: string; list?: string[] }[];\n};\n\nexport const CIVILIZATION_BY_SLUG: Record = Object.values(CIVILIZATIONS).reduce((acc, civ) => ({ ...acc, [civ.slug]: civ }), {} as Record);\n","import { CivAbbr, ItemSlug } from \"../sdk/utils\";\n\nexport type ItemClass =\n | \"light\"\n | \"heavy\"\n | \"infantry\"\n | \"cavalry\"\n | \"ship\"\n | \"archer\"\n | \"springald\"\n | \"attack\"\n | \"incendiary\"\n | \"warship\"\n | \"ranged\"\n | \"siege\"\n | \"melee\"\n | \"fire\"\n | \"religious\"\n | \"gunpowder\"\n | \"structure\"\n | \"building\"\n | \"transport\"\n | \"support\"\n | \"wall\"\n | \"tower\"\n | \"gate\"\n | \"landmark\"\n | \"wonder\"\n | \"military\"\n | \"technology\"\n | \"hunt\"\n | \"defensive\"\n | \"worker\"\n | string;\n\nexport interface Item {\n id: ItemId;\n baseId: ItemId;\n type: \"unit\" | \"building\" | \"technology\" | \"upgrade\" | \"ability\";\n civs: CivAbbr[];\n classes: ItemClass[];\n displayClasses: string[];\n\n name: string;\n age: number;\n\n description: string;\n icon_src?: string;\n icon?: string;\n\n unique: boolean;\n\n producedBy: string[];\n\n costs: {\n food: number;\n wood: number;\n gold: number;\n stone: number;\n oliveoil?: number;\n vizier?: number;\n time: number;\n popcap?: number;\n total: number;\n };\n\n pbgid?: number;\n attribName?: string;\n}\n\nexport interface PhysicalItem extends Item {\n weapons: Weapon[];\n armor: Armor[];\n\n hitpoints: number;\n\n sight: {\n line: number;\n height: number;\n };\n\n garrison?: {\n capacity: number;\n classes: string[];\n };\n\n unlockedBy?: ItemSlug[];\n}\n\nexport interface Unit extends PhysicalItem {\n type: \"unit\";\n movement: {\n speed: number;\n };\n}\n\n// Todo, may add material properties, units/objects that can be garrisoned, etc.\nexport interface Building extends PhysicalItem {\n type: \"building\";\n influences?: string[];\n popcapIncrease?: number;\n}\n\nexport interface Technology extends Item {\n type: \"technology\";\n effects?: Modifier[];\n}\n\nexport interface Upgrade extends Item {\n type: \"upgrade\";\n unlocks: ItemId;\n}\n\nexport interface Weapon {\n name?: string;\n id?: ItemId;\n type: \"melee\" | \"charge\" | \"ranged\" | \"siege\" | \"fire\";\n damage: number;\n speed: number;\n modifiers?: Modifier[];\n range?: {\n min: number;\n max: number;\n };\n durations?: Record;\n burst?: { count: number };\n attribName?: string;\n pbgid?: number;\n}\n\nexport interface Ability extends Item {\n type: \"ability\";\n active?: \"always\" | \"manual\" | \"toggle\";\n auraRange?: number;\n cooldown?: number;\n toggleGroup?: string;\n effects?: Modifier[];\n unlockedBy?: ItemSlug[];\n activatedOn?: ItemSlug[];\n}\n\nexport type Selector = { class?: ItemClass[][]; id?: ItemId[] };\n\nexport type Modifier = {\n property: ModifyableProperty;\n target?: Selector;\n select?: Selector;\n effect: \"multiply\" | \"change\";\n value: number;\n type: \"passive\" | \"ability\" | \"influence\" | \"bonus\";\n duration?: number;\n};\n\nexport type Armor = {\n type: \"melee\" | \"ranged\" | \"fire\";\n value: number;\n};\n\nexport type ItemId = string;\n\nexport type ItemType = Building | Unit | Technology | Upgrade | Ability;\n\nexport type ModifyableProperty =\n | \"unknown\" // Complex effects not easily incoded in buffed stats\n | \"burst\"\n | \"hitpoints\"\n | \"meleeArmor\"\n | \"rangedArmor\"\n | \"meleeAttack\"\n | \"rangedAttack\"\n | \"siegeAttack\"\n | \"fireAttack\"\n | \"fireArmor\"\n | \"moveSpeed\"\n | \"attackSpeed\"\n | \"minRange\"\n | \"maxRange\"\n | \"heightOfSight\"\n | \"lineOfSight\"\n | \"carryCapacity\"\n | \"huntGatherRate\"\n | \"huntCarryCapacity\"\n | \"foodCost\"\n | \"foodGatherRate\"\n | \"goldCost\"\n | \"goldGatherRate\"\n | \"goldGeneration\"\n | \"stoneCost\"\n | \"stoneGatherRate\"\n | \"woodCost\"\n | \"woodGatherRate\"\n | \"berryGatherRate\"\n | \"farmGatherRate\"\n | \"populationCost\"\n | \"healingRate\"\n | \"repairRate\"\n | \"maxPopulation\"\n | \"buildTime\"\n | \"productionSpeed\"\n | \"researchSpeed\"\n | \"areaOfEffect\";\n\nexport interface UnifiedItem {\n id: ItemId;\n name: string;\n civs: CivAbbr[];\n unique: boolean;\n variations: T[];\n type: T[\"type\"];\n minAge: number;\n classes: ItemClass[];\n displayClasses: string[];\n icon?: string;\n description?: string;\n}\n\nexport enum ITEMS {\n UNITS = \"units\",\n BUILDINGS = \"buildings\",\n TECHNOLOGIES = \"technologies\",\n UPGRADES = \"upgrades\",\n}\n\nexport type ItemTypes = {\n [ITEMS.UNITS]: Unit;\n [ITEMS.TECHNOLOGIES]: Technology;\n [ITEMS.BUILDINGS]: Building;\n [ITEMS.UPGRADES]: Upgrade;\n};\n","import { ModifyableProperty } from \"@data/types/items\";\nexport { CIVILIZATIONS } from \"@data/lib/config/civs\";\nexport { CIVILIZATION_BY_SLUG } from \"@data/types/civs\";\nexport { ITEMS } from \"@data/types/items\";\nexport type { Building, ModifyableProperty, Technology, Unit, Upgrade, ItemTypes } from \"@data/types/items\";\n\nexport const SUPPORTED_MODIFIER_PROPERTIES: ModifyableProperty[] = [\n \"meleeArmor\",\n \"meleeAttack\",\n \"rangedArmor\",\n \"rangedAttack\",\n \"fireAttack\",\n \"fireArmor\",\n \"siegeAttack\",\n \"burst\",\n \"hitpoints\",\n \"moveSpeed\",\n \"attackSpeed\",\n \"lineOfSight\",\n \"maxRange\",\n];\n\nexport const DATA_ROOT = import.meta.env.DATA_URL && import.meta.env.DEV ? import.meta.env.DATA_URL : \"https://data.aoe4world.com/\";\n\nexport const SIMILAIR_ITEMS = [\n [\"villager\", \"dragon-villager\"],\n [\"archer\", \"longbowman\", \"gilded-archer\", \"yumi-ashigaru\", \"zhuge-nu\"],\n [\"spearman\", \"donso\", \"gilded-spearman\", \"limitanei\"],\n [\"knight\", \"lancer\", \"royal-knight\", \"keshik\", \"sofa\", \"gilded-knight\", \"mounted-samurai\", \"cataphract\", \"camel-lancer\"],\n [\"monk\", \"scholar\", \"imam\", \"dervish\", \"warrior-monk\", \"shaman\", \"prelate\", \"shinto-priest\", \"buddhist-monk\", \"shaolin-monk\"],\n [\"atabeg\", \"prelate\"],\n [\"desert-raider\", \"camel-rider\"],\n [\"horse-archer\", \"mangudai\", \"camel-archer\", \"tower-elephant\", \"onna-musha\", \"desert-raider\"],\n [\"horseman\", \"ghazi-raider\", \"sipahi\", \"gilded-horseman\"],\n [\"jeannes-rider\", \"yuan-raider\"],\n [\"crossbowman\", \"arbaletrier\", \"javelin-thrower\", \"gilded-crossbowman\"],\n [\"cannon\", \"royal-cannon\", \"bombard\", \"great-bombard\"],\n [\"culverin\", \"royal-culverin\"],\n [\"mangonel\", \"nest-of-bees\", \"manjaniq\"],\n [\"battering-ram\", \"cheirosiphon\"],\n [\"siege-tower\", \"tower-of-the-sultan\"],\n [\"handcannoneer\", \"streltsy\", \"jannisary\", \"musofadi-gunner\", \"dragon-handcannoneer\"],\n [\"traction-trebuchet\", \"trebuchet\", \"counterweight-trebuchet\", \"huihui-pao\"],\n [\"man-at-arms\", \"palace-guard\", \"musofadi-warrior\", \"ghulam\", \"samurai\", \"gilded-man-at-arms\", \"varangian-guard\"],\n [\"onna-bugeisha\", \"landsknecht\", \"gilded-landsknecht\"],\n [\"trade-ship\", \"lodya-trade-ship\"],\n [\"transport-ship\", \"lodya-transport-ship\"],\n [\"fishing-boat\", \"lodya-fishing-boat\"],\n [\"galley\", \"dhow\", \"junk\", \"hunting-canoe\", \"light-junk\", \"lodya-galley\"],\n [\"hulk\", \"baghlah\", \"war-cog\", \"war-canoe\", \"lodya-attack-ship\", \"war-junk\"],\n [\"demolition-ship\", \"lodya-demolition-ship\", \"explosive-junk\", \"explosive-dhow\"],\n [\"carrack\", \"baochuan\", \"xebec\", \"atakebune\"],\n [\"farm\", \"olive-grove\", \"pasture\"],\n [\"monastery\", \"mosque\", \"prayer-tent\", \"shinto-shrine\", \"buddhist-temple\"],\n [\"hunting-cabin\", \"mill\", \"ger\", \"farmhouse\"],\n [\"blacksmith\", \"forge\", \"mining-camp\"],\n [\"palisade-gate\", \"fortified-palisade-gate\"],\n [\"palisade-wall\", \"fortified-palisade-wall\"],\n [\"outpost\", \"wooden-fortress\", \"toll-outpost\"],\n [\"university\", \"madrasa\"],\n [\"castle\", \"keep\"],\n];\n\n// Rendering wrong or not fitting model, never include\nexport const MUTED_UNITS = [\"wynguard-army\", \"khaganate-units\"];\n\nexport const PRETTY_AGE_MAP = [\"\", \"Age I\", \"Age II\", \"Age III\", \"Age IV\"];\nexport const PRETTY_AGE_MAP_LONG = [\"\", \"Dark Age (I)\", \"Feudal Age (II)\", \"Castle Age (III)\", \"Imperial Age (IV)\"];\nexport const PRETTY_AGE_MAP_SHORT = [\"\", \"I\", \"II\", \"III\", \"IV\"];\n\nexport const CURATED_CONTENT_API = \"https://curated.aoe4world.com/\";\n","export const staticMaps = {\n \"ancient-spires\": [\n \"Ancient Spires\",\n \"https://static.aoe4world.com/assets/maps/ancient_spires-f6d4ed2baecb3e883eed7abbb0bc2d0cd9b0ade0b06052886455f9d903064c45.png\",\n ],\n \"high-view\": [\"High View\", \"https://static.aoe4world.com/assets/maps/high_view-554e3c206c2ab5de03eff825bae1782c995f43c3d49045c445c37167755dc756.png\"],\n \"mongolian-heights\": [\n \"Mongolian Heights\",\n \"https://static.aoe4world.com/assets/maps/mongolian_heights-d2e6345c97a7d30d9bcb6349e599833ae70b1b16ea3029c10c986ecda996dc50.png\",\n ],\n \"dry-arabia\": [\"Dry Arabia\", \"https://static.aoe4world.com/assets/maps/dry_arabia-a38664e3a1140c77c184c56ce6ccc91b83ab9bf9e69f463621bf4acc6e663240.png\"],\n \"mountain-pass\": [\n \"Mountain Pass\",\n \"https://static.aoe4world.com/assets/maps/mountain_pass-0b69b081bdb9f8df2c302d3ac3b8847a27f49e75631e2d677fa2f3b730d6ef04.png\",\n ],\n \"hill-and-dale\": [\n \"Hill and Dale\",\n \"https://static.aoe4world.com/assets/maps/hill_and_dale-7867678344511f75ca224324806ade2552c4667e89e57a2153c02fd44684ddee.png\",\n ],\n \"french-pass\": [\"French Pass\", \"https://static.aoe4world.com/assets/maps/french_pass-3ccf8fbacfc7a55fe17fcc69e1409fd6d067ca4394c9fedd55b9ab195c7363cb.png\"],\n \"king-of-the-hill\": [\n \"King of the Hill\",\n \"https://static.aoe4world.com/assets/maps/king_of_the_hill-17717abfb688a8e8ea05bb4a0799dced0c13a3cfc864fa28fb6bf2d010e77180.png\",\n ],\n altai: [\"Altai\", \"https://static.aoe4world.com/assets/maps/altai-9b272a24dce7dfa3a2e60579a801e7152a4a94f041340ee81bef913d9cc70c6c.png\"],\n lipany: [\"Lipany\", \"https://static.aoe4world.com/assets/maps/lipany-d1e494f8fd09007b948dee6ce146402ab57a382ca9c52265f140d668c3ea6b5e.png\"],\n confluence: [\"Confluence\", \"https://static.aoe4world.com/assets/maps/confluence-4322dcd579128d990df9c6ee62f155d0f8d33d1f58fb30149af05967a3b8fdf3.png\"],\n \"danube-river\": [\n \"Danube River\",\n \"https://static.aoe4world.com/assets/maps/danube_river-fb83fa5ec52e63c87867619e4e010bc4f32717ba99234fbc327a86e4e4d6af9d.png\",\n ],\n \"black-forest\": [\n \"Black Forest\",\n \"https://static.aoe4world.com/assets/maps/black_forest-d4431e88f043782a03b5d35d7bb26b515f8a0837dbc707675ac27f7afa0c7534.png\",\n ],\n nagari: [\"Nagari\", \"https://static.aoe4world.com/assets/maps/nagari-a89f44d0283a3e6ca61443994d0fbf025c41e362b0c21297bc889efe9bc91889.png\"],\n \"boulder-bay\": [\"Boulder Bay\", \"https://static.aoe4world.com/assets/maps/boulder_bay-11f453b895a76e632a4507e57653e46ca1e6505801b413e3c3f71c20ef6b91f1.png\"],\n \"warring-islands\": [\n \"Warring Islands\",\n \"https://static.aoe4world.com/assets/maps/warring_islands-4f4e6f79e416317cce05b106056cc551e6cadce4aece5c5c5ebb24da5bc0b346.png\",\n ],\n};\n","import { getAbbr, getSlug } from \"@data/sdk/utils\";\nimport { Ability, Building, Item, Modifier, PhysicalItem } from \"@data/types/items\";\nimport { CIVILIZATIONS, ITEMS, SIMILAIR_ITEMS } from \"../config\";\nimport { staticMaps } from \"../data/maps\";\nimport { civAbbr, civConfig, GroupedBuildings, GroupedUnits, Technology, UnifiedItem, Unit } from \"../types/data\";\nimport { PatchLine, PatchNotes } from \"../types/patches\";\n\nconst SDK = import(\"@data/sdk\");\n\n/** Map any of civAbbr | civConfig | civConfig[] | civAbbr[] to a single array */\nexport type civFilterParam = Parameters[0];\nexport function mapCivsArgument(civs?: civAbbr | civConfig | civConfig[] | civAbbr[]): civConfig[] {\n const configs = Object.values(CIVILIZATIONS);\n if (!civs) return configs;\n else if (Array.isArray(civs)) return civs.map((c) => (typeof c === \"string\" ? configs.find((civ) => civ.abbr === c) : c));\n else if (typeof civs === \"string\") return configs.filter((c) => c.abbr === civs);\n else return [civs];\n}\n\n/** Filter a list of unified items based on their civ or max age */\nexport function filterItems(items: T, { civs, maxAge }: { civs: civFilterParam; maxAge?: number } = { civs: [] }) {\n const cs = mapCivsArgument(civs);\n\n return items.reduce((items, x) => {\n if (!cs.some((c) => x.civs.includes(c.abbr))) return items;\n let filteredVariations = [...(x.variations ?? [])];\n\n filteredVariations = filteredVariations.filter((v) => cs.some((c) => v.civs.includes(c.abbr)));\n if (maxAge) filteredVariations = filteredVariations.filter((v) => v.age <= maxAge);\n\n let filteredCivs = x.civs.filter((c) => filteredVariations.some((v) => v.civs.includes(c)));\n if (filteredVariations.length > 0) items.push({ ...x, civs: filteredCivs, variations: filteredVariations });\n return items;\n }, [] as typeof items);\n}\n\n/** Query the technologies that apply to an item and merge them with all technology modifiers */\nexport async function getItemTechnologies(\n type: T,\n item: string | UnifiedItem,\n civ?: civAbbr | civConfig,\n includeAllCivsUnitSpecificTech = false\n): Promise[]> {\n const { Get, technologies } = await SDK;\n const unifiedItem = typeof item == \"string\" ? Get(`${type}/${item}`) : item;\n return technologies.reduce((acc, t) => {\n const filteringByCiv = !!civ;\n const variations = t.variations.filter((v) => (filteringByCiv ? v.civs.includes(mapCivsArgument(civ)[0].abbr) : true));\n const modifiers = variations.flatMap((v) => v.effects).filter(Boolean);\n if (!modifiers || !variations.length) return acc;\n\n const techResearchedAtId = false; //t.variations.some((v) => v.producedBy.includes(unifiedItem.id));\n const techMatchesItemId = modifiers.some((m) => modifierMatches(m.select, unifiedItem).id);\n const techMatchesItemClass = modifiers.some((m) => modifierMatches(m.select, unifiedItem).class);\n const appliesToMultipleCivs = t.civs.length > 1;\n const itemIsUnique = unifiedItem.civs.length === 1;\n\n if (\n techResearchedAtId ||\n (filteringByCiv\n ? techMatchesItemId || techMatchesItemClass\n : // If we're not looking at techs for a specific civ & unit combo\n // we show only techs that match by id, or those that match by class and have multiple civs\n (techMatchesItemId && itemIsUnique) || (techMatchesItemId && includeAllCivsUnitSpecificTech) || (techMatchesItemClass && appliesToMultipleCivs))\n ) {\n if (techMatchesItemId) acc.unshift({ ...t, variations });\n else acc.push({ ...t, variations });\n }\n\n return acc;\n }, [] as UnifiedItem[]);\n}\n\nexport function getMostAppropriateVariation(item: UnifiedItem, civ: civConfig): T {\n if (!item) return null;\n return (\n (civ ? item.variations.filter((v) => v.civs.includes(civ.abbr)) : item.variations)\n .sort((a, b) => b.costs.total - a.costs.total)\n .sort((a, b) => a.id.length - b.id.length)\n .sort((a, b) => b.civs.length - a.civs.length)[0] ?? item.variations[0]\n );\n}\n\nexport function splitUnitsIntoGroups(units: UnifiedItem[]) {\n const grouped = units?.reduce(\n (acc, unit) => {\n if (unit.classes.some((c) => c === \"hero\")) acc.hero.push(unit);\n else if (unit.classes.some((c) => c === \"ship\")) acc.ships.push(unit);\n else if (unit.variations.some((v) => v.producedBy.includes(\"mercenary-house\") || v.producedBy.includes(\"foreign-engineering-company\")))\n acc.mercenaries.push(unit);\n else if (unit.classes.some((c) => c === \"warship\")) acc.ships.push(unit);\n else if (unit.classes.some((c) => c === \"worker\")) acc.workers.push(unit);\n else if (unit.classes.some((c) => c === \"infantry\")) acc.infantry.push(unit);\n else if (unit.classes.some((c) => c === \"cavalry\")) acc.cavalry.push(unit);\n else if (unit.classes.some((c) => c === \"camel\")) acc.cavalry.push(unit);\n else if (unit.classes.some((c) => c === \"siege\")) acc.siege.push(unit);\n else if (unit.classes.some((c) => c === \"mixed\")) acc.misc.push(unit);\n else acc.workers.push(unit);\n\n return acc;\n },\n { hero: [], workers: [], infantry: [], cavalry: [], siege: [], ships: [], misc: [], mercenaries: [] } as GroupedUnits\n );\n grouped.mercenaries.sort((b, a) => b.variations[0].costs.total - a.variations[0].costs.total);\n return grouped;\n}\n\nexport function splitBuildingsIntoGroups(buildings: UnifiedItem[]) {\n const grouped = buildings?.reduce(\n (acc, unit) => {\n if (unit.classes.some((c) => c === \"landmark\")) acc.landmarks.push(unit);\n else if (unit.classes.some((c) => c === \"wonder\")) acc.wonders.push(unit);\n else if (unit.classes.some((c) => c === \"defensive\")) acc.defensive.push(unit);\n else if (unit.classes.some((c) => c === \"technology\")) acc.technology.push(unit);\n else if (unit.classes.some((c) => c === \"religious\")) acc.religious.push(unit);\n else if (unit.classes.some((c) => c === \"military\")) acc.military.push(unit);\n else acc.economy.push(unit);\n\n return acc;\n },\n { landmarks: [], economy: [], military: [], defensive: [], religious: [], technology: [], wonders: [] } as GroupedBuildings\n );\n grouped.landmarks.sort((b, a) => b.variations[0].costs.total - a.variations[0].costs.total);\n return grouped;\n}\n\nexport function splitTechnologiesIntroGroups(buildings: UnifiedItem[]) {\n return buildings?.reduce(\n (acc, tech) => {\n if (tech.classes.some((c) => [\"advance\"].includes(c) && tech.civs[0] == \"ab\")) return acc;\n else if (tech.classes.some((c) => tech.civs[0] == \"ay\" && tech.id.includes(\"wing\"))) acc.wings.push(tech);\n else if (tech.classes.some((c) => c === \"level-up-choice\") && tech.civs[0] == \"je\") acc.leveling.push(tech);\n else if (tech.classes.some((c) => [\"ship\", \"naval\", \"warship\"].includes(c))) acc.naval.push(tech);\n else if (\n tech.classes.some((c) =>\n [\n \"mining\",\n \"gathering\",\n \"woodcutting\",\n \"farm\",\n \"hunting\",\n \"villager\",\n \"fishing\",\n \"construction\",\n \"official\",\n \"population\",\n \"trade\",\n \"economic\",\n \"research\",\n \"raiding\",\n \"packing\",\n ].includes(c)\n )\n )\n acc.economy.push(tech);\n else if (tech.classes.some((c) => [\"defensive\", \"emplacement\", \"building\", \"outpost\", \"keep\"].includes(c))) acc.defensive.push(tech);\n else if (tech.classes.some((c) => [\"religious\", \"healing\"].includes(c))) acc.religious.push(tech);\n else if (tech.classes.some((c) => [\"Production\", \"siege\", \"melee\", \"cavalry\", \"infantry\", \"ranged\", \"production\", \"gunpowder\"].includes(c)))\n acc.military.push(tech);\n else acc.units.push(tech);\n\n return acc;\n },\n { wings: [], leveling: [], economy: [], naval: [], defensive: [], religious: [], military: [], units: [] } as Record[]>\n );\n}\n\nexport function modifierMatches(matcher: Modifier[\"select\"], item: Item | UnifiedItem) {\n if (!matcher) return { id: false, class: false, any: false };\n const matchesId = matcher.id?.includes(item.id) || matcher.id?.includes((item as Item).baseId);\n const matchesClass = matcher.class?.some((cl) => cl?.every((c) => item.classes.includes(c)));\n return { id: matchesId, class: matchesClass, any: matchesId || matchesClass };\n}\n\nexport function canonicalItemName(item: Item | UnifiedItem) {\n const group = item.type === \"unit\" ? \"units\" : item.type === \"building\" ? \"buildings\" : \"technologies\";\n return `${group}/${\"baseId\" in item ? item.baseId : item.id}`;\n}\n\nexport function getItemByCanonicalName(id: string) {\n if (id.startsWith(\"maps/\")) return getMapAsItem(id.split(\"/\")[1]);\n return SDK.then((sdk) => sdk.Get(id as any));\n}\n\nexport async function findClosestMatch(type: T, id: string, civ: civConfig) {\n const similair = SIMILAIR_ITEMS.find((units) => units.includes(id));\n const closestMatch = similair && (await SDK)[type].where({ civilization: civ.abbr }).find((i) => similair.includes(i.id));\n return closestMatch ?? null;\n}\n\nfunction getMapAsItem(id: string) {\n const [name, icon] = staticMaps[id] ?? [capitlize(id.replaceAll(\"-\", \" \")), \"\"];\n\n return {\n id,\n name,\n civs: [],\n classes: [\"Map\"],\n icon,\n description: \"\",\n type: \"map\",\n } as unknown as UnifiedItem;\n}\n\nexport function capitlize(string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nconst patchOrder = [\"buff\", \"nerf\", \"fix\"];\nexport const sortPatchDiff = (a: PatchLine, b: PatchLine) => patchOrder.indexOf(a[0]) - patchOrder.indexOf(b[0]);\n\n/** Get all changes, line by line, that apply to a specific item */\nexport async function getPatchHistory(item: UnifiedItem, civs?: civConfig[]) {\n const { patches } = await import(\"../data/patches/patch\");\n\n const cid = canonicalItemName(item);\n const civAbbrs = civs?.map((c) => c.abbr);\n const history: { patch: PatchNotes; diff: PatchLine[] }[] = [];\n for (const patch of patches) {\n const diff = [];\n for (const section of patch.sections) {\n if (!civOverlap(civAbbrs, section.civs)) continue;\n diff.push(\n ...section.changes.reduce(\n (acc, c) => (c.items.includes(cid) && civOverlap(civAbbrs, c.civs) ? [...acc, ...c.diff.filter(([t, l, lc]) => civOverlap(civAbbrs, lc)).map(([t, l, lc = []]) => [t, l, [...lc, section.civs]])] : acc),\n [] as PatchLine[]\n )\n );\n }\n if (diff.length) {\n diff.sort(sortPatchDiff);\n history.push({ patch, diff });\n }\n }\n return history.sort((a, b) => patches.indexOf(b.patch) - patches.indexOf(a.patch));\n}\n\nfunction civOverlap(filter: civAbbr[], value: civAbbr[]) {\n if (!value?.length || !filter?.length) return true;\n return filter.some((c) => value.includes(c));\n}\n"],"file":"assets/utils-3cd62ed2.js"}