{"version":3,"file":"server2.js","names":["clsx","_clsx","devalue.uneval"],"sources":["../../../node_modules/svelte/src/constants.js","../../../node_modules/svelte/src/escaping.js","../../../node_modules/clsx/dist/clsx.mjs","../../../node_modules/svelte/src/internal/shared/utils.js","../../../node_modules/svelte/src/internal/shared/attributes.js","../../../node_modules/svelte/src/internal/client/constants.js","../../../node_modules/svelte/src/internal/shared/errors.js","../../../node_modules/svelte/src/internal/flags/index.js","../../../node_modules/svelte/src/internal/shared/context.js","../../../node_modules/svelte/src/internal/server/hydration.js","../../../node_modules/svelte/src/utils.js","../../../node_modules/svelte/src/internal/server/errors.js","../../../node_modules/svelte/src/internal/server/context.js","../../../node_modules/svelte/src/internal/server/warnings.js","../../../node_modules/svelte/src/internal/server/render-context.js","../../../node_modules/svelte/src/internal/server/crypto.js","../../../node_modules/svelte/src/internal/server/renderer.js","../../../node_modules/svelte/src/html-tree-validation.js","../../../node_modules/svelte/src/internal/server/index.js"],"sourcesContent":["export const EACH_ITEM_REACTIVE = 1;\nexport const EACH_INDEX_REACTIVE = 1 << 1;\n/** See EachBlock interface metadata.is_controlled for an explanation what this is */\nexport const EACH_IS_CONTROLLED = 1 << 2;\nexport const EACH_IS_ANIMATED = 1 << 3;\nexport const EACH_ITEM_IMMUTABLE = 1 << 4;\n\nexport const PROPS_IS_IMMUTABLE = 1;\nexport const PROPS_IS_RUNES = 1 << 1;\nexport const PROPS_IS_UPDATED = 1 << 2;\nexport const PROPS_IS_BINDABLE = 1 << 3;\nexport const PROPS_IS_LAZY_INITIAL = 1 << 4;\n\nexport const TRANSITION_IN = 1;\nexport const TRANSITION_OUT = 1 << 1;\nexport const TRANSITION_GLOBAL = 1 << 2;\n\nexport const TEMPLATE_FRAGMENT = 1;\nexport const TEMPLATE_USE_IMPORT_NODE = 1 << 1;\nexport const TEMPLATE_USE_SVG = 1 << 2;\nexport const TEMPLATE_USE_MATHML = 1 << 3;\n\nexport const HYDRATION_START = '[';\n/** used to indicate that an `{:else}...` block was rendered */\nexport const HYDRATION_START_ELSE = '[!';\n/** used to indicate that a boundary's `failed` snippet was rendered on the server */\nexport const HYDRATION_START_FAILED = '[?';\nexport const HYDRATION_END = ']';\nexport const HYDRATION_ERROR = {};\n\nexport const ELEMENT_IS_NAMESPACED = 1;\nexport const ELEMENT_PRESERVE_ATTRIBUTE_CASE = 1 << 1;\nexport const ELEMENT_IS_INPUT = 1 << 2;\n\nexport const UNINITIALIZED = Symbol('uninitialized');\n\n// Dev-time component properties\nexport const FILENAME = Symbol('filename');\nexport const HMR = Symbol('hmr');\n\nexport const NAMESPACE_HTML = 'http://www.w3.org/1999/xhtml';\nexport const NAMESPACE_SVG = 'http://www.w3.org/2000/svg';\nexport const NAMESPACE_MATHML = 'http://www.w3.org/1998/Math/MathML';\n\n// we use a list of ignorable runtime warnings because not every runtime warning\n// can be ignored and we want to keep the validation for svelte-ignore in place\nexport const IGNORABLE_RUNTIME_WARNINGS = /** @type {const} */ ([\n\t'await_waterfall',\n\t'await_reactivity_loss',\n\t'state_snapshot_uncloneable',\n\t'binding_property_non_reactive',\n\t'hydration_attribute_changed',\n\t'hydration_html_changed',\n\t'ownership_invalid_binding',\n\t'ownership_invalid_mutation'\n]);\n\n/**\n * Whitespace inside one of these elements will not result in\n * a whitespace node being created in any circumstances. (This\n * list is almost certainly very incomplete)\n * TODO this is currently unused\n */\nexport const ELEMENTS_WITHOUT_TEXT = ['audio', 'datalist', 'dl', 'optgroup', 'select', 'video'];\n\nexport const ATTACHMENT_KEY = '@attach';\n","const ATTR_REGEX = /[&\"<]/g;\nconst CONTENT_REGEX = /[&<]/g;\n\n/**\n * @template V\n * @param {V} value\n * @param {boolean} [is_attr]\n */\nexport function escape_html(value, is_attr) {\n\tconst str = String(value ?? '');\n\n\tconst pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX;\n\tpattern.lastIndex = 0;\n\n\tlet escaped = '';\n\tlet last = 0;\n\n\twhile (pattern.test(str)) {\n\t\tconst i = pattern.lastIndex - 1;\n\t\tconst ch = str[i];\n\t\tescaped += str.substring(last, i) + (ch === '&' ? '&amp;' : ch === '\"' ? '&quot;' : '&lt;');\n\t\tlast = i + 1;\n\t}\n\n\treturn escaped + str.substring(last);\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","// Store the references to globals in case someone tries to monkey patch these, causing the below\n// to de-opt (this occurs often when using popular extensions).\nexport var is_array = Array.isArray;\nexport var index_of = Array.prototype.indexOf;\nexport var includes = Array.prototype.includes;\nexport var array_from = Array.from;\nexport var object_keys = Object.keys;\nexport var define_property = Object.defineProperty;\nexport var get_descriptor = Object.getOwnPropertyDescriptor;\nexport var get_descriptors = Object.getOwnPropertyDescriptors;\nexport var object_prototype = Object.prototype;\nexport var array_prototype = Array.prototype;\nexport var get_prototype_of = Object.getPrototypeOf;\nexport var is_extensible = Object.isExtensible;\nexport var has_own_property = Object.prototype.hasOwnProperty;\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nexport function is_function(thing) {\n\treturn typeof thing === 'function';\n}\n\nexport const noop = () => {};\n\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\n\n/**\n * @template [T=any]\n * @param {any} value\n * @returns {value is PromiseLike<T>}\n */\nexport function is_promise(value) {\n\treturn typeof value?.then === 'function';\n}\n\n/** @param {Function} fn */\nexport function run(fn) {\n\treturn fn();\n}\n\n/** @param {Array<() => void>} arr */\nexport function run_all(arr) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tarr[i]();\n\t}\n}\n\n/**\n * TODO replace with Promise.withResolvers once supported widely enough\n * @template [T=void]\n */\nexport function deferred() {\n\t/** @type {(value: T) => void} */\n\tvar resolve;\n\n\t/** @type {(reason: any) => void} */\n\tvar reject;\n\n\t/** @type {Promise<T>} */\n\tvar promise = new Promise((res, rej) => {\n\t\tresolve = res;\n\t\treject = rej;\n\t});\n\n\t// @ts-expect-error\n\treturn { promise, resolve, reject };\n}\n\n/**\n * @template V\n * @param {V} value\n * @param {V | (() => V)} fallback\n * @param {boolean} [lazy]\n * @returns {V}\n */\nexport function fallback(value, fallback, lazy = false) {\n\treturn value === undefined\n\t\t? lazy\n\t\t\t? /** @type {() => V} */ (fallback)()\n\t\t\t: /** @type {V} */ (fallback)\n\t\t: value;\n}\n\n/**\n * When encountering a situation like `let [a, b, c] = $derived(blah())`,\n * we need to stash an intermediate value that `a`, `b`, and `c` derive\n * from, in case it's an iterable\n * @template T\n * @param {ArrayLike<T> | Iterable<T>} value\n * @param {number} [n]\n * @returns {Array<T>}\n */\nexport function to_array(value, n) {\n\t// return arrays unchanged\n\tif (Array.isArray(value)) {\n\t\treturn value;\n\t}\n\n\t// if value is not iterable, or `n` is unspecified (indicates a rest\n\t// element, which means we're not concerned about unbounded iterables)\n\t// convert to an array with `Array.from`\n\tif (n === undefined || !(Symbol.iterator in value)) {\n\t\treturn Array.from(value);\n\t}\n\n\t// otherwise, populate an array with `n` values\n\n\t/** @type {T[]} */\n\tconst array = [];\n\n\tfor (const element of value) {\n\t\tarray.push(element);\n\t\tif (array.length === n) break;\n\t}\n\n\treturn array;\n}\n\n/**\n * @param {Record<string | symbol, unknown>} obj\n * @param {Array<string | symbol>} keys\n * @returns {Record<string | symbol, unknown>}\n */\nexport function exclude_from_object(obj, keys) {\n\t/** @type {Record<string | symbol, unknown>} */\n\tvar result = {};\n\n\tfor (var key in obj) {\n\t\tif (!keys.includes(key)) {\n\t\t\tresult[key] = obj[key];\n\t\t}\n\t}\n\n\tfor (var symbol of Object.getOwnPropertySymbols(obj)) {\n\t\tif (Object.propertyIsEnumerable.call(obj, symbol) && !keys.includes(symbol)) {\n\t\t\tresult[symbol] = obj[symbol];\n\t\t}\n\t}\n\n\treturn result;\n}\n","import { escape_html } from '../../escaping.js';\nimport { clsx as _clsx } from 'clsx';\nimport { has_own_property } from './utils.js';\n\n/**\n * `<div translate={false}>` should be rendered as `<div translate=\"no\">` and _not_\n * `<div translate=\"false\">`, which is equivalent to `<div translate=\"yes\">`. There\n * may be other odd cases that need to be added to this list in future\n * @type {Record<string, Map<any, string>>}\n */\nconst replacements = {\n\ttranslate: new Map([\n\t\t[true, 'yes'],\n\t\t[false, 'no']\n\t])\n};\n\n/**\n * @template V\n * @param {string} name\n * @param {V} value\n * @param {boolean} [is_boolean]\n * @returns {string}\n */\nexport function attr(name, value, is_boolean = false) {\n\t// attribute hidden for values other than \"until-found\" behaves like a boolean attribute\n\tif (name === 'hidden' && value !== 'until-found') {\n\t\tis_boolean = true;\n\t}\n\t// `''` is a present boolean attribute, as it is in markup and on the client\n\tif (value == null || (is_boolean && !value && value !== '')) return '';\n\tconst normalized =\n\t\t(has_own_property.call(replacements, name) && replacements[name].get(value)) || value;\n\tconst assignment = is_boolean ? `=\"\"` : `=\"${escape_html(normalized, true)}\"`;\n\treturn ` ${name}${assignment}`;\n}\n\n/**\n * Small wrapper around clsx to preserve Svelte's (weird) handling of falsy values.\n * TODO Svelte 6 revisit this, and likely turn all falsy values into the empty string (what clsx also does)\n * @param  {any} value\n */\nexport function clsx(value) {\n\tif (typeof value === 'object') {\n\t\treturn _clsx(value);\n\t} else {\n\t\treturn value ?? '';\n\t}\n}\n\nconst whitespace = [...' \\t\\n\\r\\f\\u00a0\\u000b\\ufeff'];\n\n/**\n * @param {any} value\n * @param {string | null} [hash]\n * @param {Record<string, boolean>} [directives]\n * @returns {string | null}\n */\nexport function to_class(value, hash, directives) {\n\tvar classname = value == null ? '' : '' + value;\n\n\tif (hash) {\n\t\tclassname = classname ? classname + ' ' + hash : hash;\n\t}\n\n\tif (directives) {\n\t\tfor (var key of Object.keys(directives)) {\n\t\t\tif (directives[key]) {\n\t\t\t\tclassname = classname ? classname + ' ' + key : key;\n\t\t\t} else if (classname.length) {\n\t\t\t\tvar len = key.length;\n\t\t\t\tvar a = 0;\n\n\t\t\t\twhile ((a = classname.indexOf(key, a)) >= 0) {\n\t\t\t\t\tvar b = a + len;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(a === 0 || whitespace.includes(classname[a - 1])) &&\n\t\t\t\t\t\t(b === classname.length || whitespace.includes(classname[b]))\n\t\t\t\t\t) {\n\t\t\t\t\t\tclassname = (a === 0 ? '' : classname.substring(0, a)) + classname.substring(b + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ta = b;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn classname === '' ? null : classname;\n}\n\n/**\n *\n * @param {Record<string,any>} styles\n * @param {boolean} important\n */\nfunction append_styles(styles, important = false) {\n\tvar separator = important ? ' !important;' : ';';\n\tvar css = '';\n\n\tfor (var key of Object.keys(styles)) {\n\t\tvar value = styles[key];\n\t\tif (value != null && value !== '') {\n\t\t\tcss += ' ' + key + ': ' + value + separator;\n\t\t}\n\t}\n\n\treturn css;\n}\n\n/**\n * @param {string} name\n * @returns {string}\n */\nfunction to_css_name(name) {\n\tif (name[0] !== '-' || name[1] !== '-') {\n\t\treturn name.toLowerCase();\n\t}\n\treturn name;\n}\n\n/**\n * @param {any} value\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [styles]\n * @returns {string | null}\n */\nexport function to_style(value, styles) {\n\tif (styles) {\n\t\tvar new_style = '';\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar normal_styles;\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar important_styles;\n\n\t\tif (Array.isArray(styles)) {\n\t\t\tnormal_styles = styles[0];\n\t\t\timportant_styles = styles[1];\n\t\t} else {\n\t\t\tnormal_styles = styles;\n\t\t}\n\n\t\tif (value) {\n\t\t\t// strip comments; surrounding whitespace is handled by the trims below (which is much faster than doing it through regex)\n\t\t\tvalue = String(value)\n\t\t\t\t.replaceAll(/\\/\\*.*?\\*\\//g, '')\n\t\t\t\t.trim();\n\n\t\t\t/** @type {boolean | '\"' | \"'\"} */\n\t\t\tvar in_str = false;\n\t\t\tvar in_apo = 0;\n\t\t\tvar in_comment = false;\n\n\t\t\tvar reserved_names = [];\n\n\t\t\tif (normal_styles) {\n\t\t\t\treserved_names.push(...Object.keys(normal_styles).map(to_css_name));\n\t\t\t}\n\t\t\tif (important_styles) {\n\t\t\t\treserved_names.push(...Object.keys(important_styles).map(to_css_name));\n\t\t\t}\n\n\t\t\tvar start_index = 0;\n\t\t\tvar name_index = -1;\n\n\t\t\tconst len = value.length;\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar c = value[i];\n\n\t\t\t\tif (in_comment) {\n\t\t\t\t\tif (c === '/' && value[i - 1] === '*') {\n\t\t\t\t\t\tin_comment = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (in_str) {\n\t\t\t\t\tif (in_str === c) {\n\t\t\t\t\t\tin_str = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (c === '/' && value[i + 1] === '*') {\n\t\t\t\t\tin_comment = true;\n\t\t\t\t} else if (c === '\"' || c === \"'\") {\n\t\t\t\t\tin_str = c;\n\t\t\t\t} else if (c === '(') {\n\t\t\t\t\tin_apo++;\n\t\t\t\t} else if (c === ')') {\n\t\t\t\t\tin_apo--;\n\t\t\t\t}\n\n\t\t\t\tif (!in_comment && in_str === false && in_apo === 0) {\n\t\t\t\t\tif (c === ':' && name_index === -1) {\n\t\t\t\t\t\tname_index = i;\n\t\t\t\t\t} else if (c === ';' || i === len - 1) {\n\t\t\t\t\t\tif (name_index !== -1) {\n\t\t\t\t\t\t\tvar name = to_css_name(value.substring(start_index, name_index).trim());\n\n\t\t\t\t\t\t\tif (!reserved_names.includes(name)) {\n\t\t\t\t\t\t\t\tif (c !== ';') {\n\t\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar property = value.substring(start_index, i).trim();\n\t\t\t\t\t\t\t\tnew_style += ' ' + property + ';';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart_index = i + 1;\n\t\t\t\t\t\tname_index = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (normal_styles) {\n\t\t\tnew_style += append_styles(normal_styles);\n\t\t}\n\n\t\tif (important_styles) {\n\t\t\tnew_style += append_styles(important_styles, true);\n\t\t}\n\n\t\tnew_style = new_style.trim();\n\t\treturn new_style === '' ? null : new_style;\n\t}\n\n\treturn value == null ? null : String(value);\n}\n","// General flags\nexport const DERIVED = 1 << 1;\nexport const EFFECT = 1 << 2;\nexport const RENDER_EFFECT = 1 << 3;\n/**\n * An effect that does not destroy its child effects when it reruns.\n * Runs as part of render effects, i.e. not eagerly as part of tree traversal or effect flushing.\n */\nexport const MANAGED_EFFECT = 1 << 24;\n/**\n * An effect that does not destroy its child effects when it reruns (like MANAGED_EFFECT).\n * Runs eagerly as part of tree traversal or effect flushing.\n */\nexport const BLOCK_EFFECT = 1 << 4;\nexport const BRANCH_EFFECT = 1 << 5;\nexport const ROOT_EFFECT = 1 << 6;\nexport const BOUNDARY_EFFECT = 1 << 7;\n/**\n * Set on the effect that `pause_effect` was called on, i.e. the root of a paused subtree,\n * as opposed to its descendants which are merely `INERT`. This allows `resume_effect` on\n * an ancestor to skip subtrees that were paused for their own reasons (such as a block\n * whose condition is still false) rather than resurrecting them\n */\nexport const PAUSED = 1 << 8;\n/**\n * Indicates that a reaction is connected to an effect root — either it is an effect,\n * or it is a derived that is depended on by at least one effect. If a derived has\n * no dependents, we can disconnect it from the graph, allowing it to either be\n * GC'd or reconnected later if an effect comes to depend on it again\n */\nexport const CONNECTED = 1 << 9;\nexport const CLEAN = 1 << 10;\nexport const DIRTY = 1 << 11;\nexport const MAYBE_DIRTY = 1 << 12;\nexport const INERT = 1 << 13;\nexport const DESTROYED = 1 << 14;\n/** Set once a reaction has run for the first time */\nexport const REACTION_RAN = 1 << 15;\n/** Effect is in the process of getting destroyed. Can be observed in child teardown functions */\nexport const DESTROYING = 1 << 25;\n\n// Flags exclusive to effects\n/**\n * 'Transparent' effects do not create a transition boundary.\n * This is on a block effect 99% of the time but may also be on a branch effect if its parent block effect was pruned\n */\nexport const EFFECT_TRANSPARENT = 1 << 16;\nexport const EAGER_EFFECT = 1 << 17;\nexport const HEAD_EFFECT = 1 << 18;\nexport const EFFECT_PRESERVED = 1 << 19;\nexport const USER_EFFECT = 1 << 20;\nexport const EFFECT_OFFSCREEN = 1 << 25;\n\n// Flags used for async\nexport const REACTION_IS_UPDATING = 1 << 21;\nexport const ASYNC = 1 << 22;\n\nexport const ERROR_VALUE = 1 << 23;\n\nexport const STATE_SYMBOL = Symbol('$state');\n/** Marks component export objects, so that `proxy(...)` leaves them untouched */\nexport const COMPONENT_SYMBOL = Symbol('component');\nexport const LEGACY_PROPS = Symbol('legacy props');\nexport const LOADING_ATTR_SYMBOL = Symbol('');\nexport const PROXY_PATH_SYMBOL = Symbol('proxy path');\nexport const ATTRIBUTES_CACHE = Symbol('attributes');\nexport const CLASS_CACHE = Symbol('class');\nexport const STYLE_CACHE = Symbol('style');\nexport const TEXT_CACHE = Symbol('text');\nexport const FORM_RESET_HANDLER = Symbol('form reset');\n/** An anchor might change, via this symbol on the original anchor we can tell HMR about the updated anchor */\nexport const HMR_ANCHOR = Symbol('hmr anchor');\n\n/** allow users to ignore aborted signal errors if `reason.name === 'StaleReactionError` */\nexport const STALE_REACTION = new (class StaleReactionError extends Error {\n\tname = 'StaleReactionError';\n\tmessage = 'The reaction that called `getAbortSignal()` was re-run or destroyed';\n})();\n\nexport const IS_XHTML =\n\t// We gotta write it like this because after downleveling the pure comment may end up in the wrong location\n\t!!globalThis.document?.contentType &&\n\t/* @__PURE__ */ globalThis.document.contentType.includes('xml');\nexport const ELEMENT_NODE = 1;\nexport const TEXT_NODE = 3;\nexport const COMMENT_NODE = 8;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\n\n/**\n * Cannot use `%name%(...)` unless the `experimental.async` compiler option is `true`\n * @param {string} name\n * @returns {never}\n */\nexport function experimental_async_required(name) {\n\tif (DEV) {\n\t\tconst error = new Error(`experimental_async_required\\nCannot use \\`${name}(...)\\` unless the \\`experimental.async\\` compiler option is \\`true\\`\\nhttps://svelte.dev/e/experimental_async_required`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/experimental_async_required`);\n\t}\n}\n\n/**\n * Cannot use `{@render children(...)}` if the parent component uses `let:` directives. Consider using a named snippet instead\n * @returns {never}\n */\nexport function invalid_default_snippet() {\n\tif (DEV) {\n\t\tconst error = new Error(`invalid_default_snippet\\nCannot use \\`{@render children(...)}\\` if the parent component uses \\`let:\\` directives. Consider using a named snippet instead\\nhttps://svelte.dev/e/invalid_default_snippet`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/invalid_default_snippet`);\n\t}\n}\n\n/**\n * A snippet function was passed invalid arguments. Snippets should only be instantiated via `{@render ...}`\n * @returns {never}\n */\nexport function invalid_snippet_arguments() {\n\tif (DEV) {\n\t\tconst error = new Error(`invalid_snippet_arguments\\nA snippet function was passed invalid arguments. Snippets should only be instantiated via \\`{@render ...}\\`\\nhttps://svelte.dev/e/invalid_snippet_arguments`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/invalid_snippet_arguments`);\n\t}\n}\n\n/**\n * An invariant violation occurred, meaning Svelte's internal assumptions were flawed. This is a bug in Svelte, not your app — please open an issue at https://github.com/sveltejs/svelte, citing the following message: \"%message%\"\n * @param {string} message\n * @returns {never}\n */\nexport function invariant_violation(message) {\n\tif (DEV) {\n\t\tconst error = new Error(`invariant_violation\\nAn invariant violation occurred, meaning Svelte's internal assumptions were flawed. This is a bug in Svelte, not your app — please open an issue at https://github.com/sveltejs/svelte, citing the following message: \"${message}\"\\nhttps://svelte.dev/e/invariant_violation`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/invariant_violation`);\n\t}\n}\n\n/**\n * `%name%(...)` can only be used during component initialisation\n * @param {string} name\n * @returns {never}\n */\nexport function lifecycle_outside_component(name) {\n\tif (DEV) {\n\t\tconst error = new Error(`lifecycle_outside_component\\n\\`${name}(...)\\` can only be used during component initialisation\\nhttps://svelte.dev/e/lifecycle_outside_component`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/lifecycle_outside_component`);\n\t}\n}\n\n/**\n * Context was not set in the current component or any of its ancestors\n * @returns {never}\n */\nexport function missing_context() {\n\tif (DEV) {\n\t\tconst error = new Error(`missing_context\\nContext was not set in the current component or any of its ancestors\\nhttps://svelte.dev/e/missing_context`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/missing_context`);\n\t}\n}\n\n/**\n * `setContext` must be called when a component first initializes, not in a subsequent effect or after an `await` expression\n * @returns {never}\n */\nexport function set_context_after_init() {\n\tif (DEV) {\n\t\tconst error = new Error(`set_context_after_init\\n\\`setContext\\` must be called when a component first initializes, not in a subsequent effect or after an \\`await\\` expression\\nhttps://svelte.dev/e/set_context_after_init`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/set_context_after_init`);\n\t}\n}\n\n/**\n * Attempted to render a snippet without a `{@render}` block. This would cause the snippet code to be stringified instead of its content being rendered to the DOM. To fix this, change `{snippet}` to `{@render snippet()}`.\n * @returns {never}\n */\nexport function snippet_without_render_tag() {\n\tif (DEV) {\n\t\tconst error = new Error(`snippet_without_render_tag\\nAttempted to render a snippet without a \\`{@render}\\` block. This would cause the snippet code to be stringified instead of its content being rendered to the DOM. To fix this, change \\`{snippet}\\` to \\`{@render snippet()}\\`.\\nhttps://svelte.dev/e/snippet_without_render_tag`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/snippet_without_render_tag`);\n\t}\n}\n\n/**\n * `%name%` is not a store with a `subscribe` method\n * @param {string} name\n * @returns {never}\n */\nexport function store_invalid_shape(name) {\n\tif (DEV) {\n\t\tconst error = new Error(`store_invalid_shape\\n\\`${name}\\` is not a store with a \\`subscribe\\` method\\nhttps://svelte.dev/e/store_invalid_shape`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/store_invalid_shape`);\n\t}\n}\n\n/**\n * The `this` prop on `<svelte:element>` must be a string, if defined\n * @returns {never}\n */\nexport function svelte_element_invalid_this_value() {\n\tif (DEV) {\n\t\tconst error = new Error(`svelte_element_invalid_this_value\\nThe \\`this\\` prop on \\`<svelte:element>\\` must be a string, if defined\\nhttps://svelte.dev/e/svelte_element_invalid_this_value`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/svelte_element_invalid_this_value`);\n\t}\n}","/** True if experimental.async=true */\nexport let async_mode_flag = false;\n/** True if we're not certain that we only have Svelte 5 code in the compilation */\nexport let legacy_mode_flag = false;\n/** True if $inspect.trace is used */\nexport let tracing_mode_flag = false;\n\nexport function enable_async_mode_flag() {\n\tasync_mode_flag = true;\n}\n\n/** ONLY USE THIS DURING TESTING */\nexport function disable_async_mode_flag() {\n\tasync_mode_flag = false;\n}\n\nexport function enable_legacy_mode_flag() {\n\tlegacy_mode_flag = true;\n}\n\nexport function enable_tracing_mode_flag() {\n\ttracing_mode_flag = true;\n}\n","import { lifecycle_outside_component, missing_context } from './errors.js';\n\n/**\n * @template T\n * @param {(key: object) => T} get_context\n * @param {(key: object, context: T) => T} set_context\n * @param {(key: object) => boolean} has_context\n * @returns {[() => T, (context: T) => T, () => boolean]}\n */\nexport function create_context(get_context, set_context, has_context) {\n\tconst key = {};\n\n\treturn [\n\t\t() => {\n\t\t\tif (!has_context(key)) {\n\t\t\t\tmissing_context();\n\t\t\t}\n\n\t\t\treturn get_context(key);\n\t\t},\n\t\t(context) => set_context(key, context),\n\t\t() => has_context(key)\n\t];\n}\n\n/**\n * @typedef {{ p: Context | null, c: Map<unknown, unknown> | null }} Context\n */\n\n/**\n * @param {Context} context\n * @returns {Map<unknown, unknown> | null}\n */\nfunction get_parent_context(context) {\n\tlet parent = context.p;\n\twhile (parent !== null && parent.c === null) {\n\t\tparent = parent.p;\n\t}\n\treturn parent?.c ?? null;\n}\n\n/**\n * @param {Context | null} context\n * @param {string} name\n * @returns {Map<unknown, unknown>}\n */\nexport function get_or_init_context_map(context, name) {\n\tif (context === null) {\n\t\tlifecycle_outside_component(name);\n\t}\n\n\treturn (context.c ??= new Map(get_parent_context(context) || undefined));\n}\n","import { HYDRATION_END, HYDRATION_START, HYDRATION_START_ELSE } from '../../constants.js';\n\nexport const BLOCK_OPEN = `<!--${HYDRATION_START}-->`;\nexport const BLOCK_OPEN_ELSE = `<!--${HYDRATION_START_ELSE}-->`;\nexport const BLOCK_CLOSE = `<!--${HYDRATION_END}-->`;\nexport const EMPTY_COMMENT = `<!---->`;\n","const regex_return_characters = /\\r/g;\n\n/**\n * @param {string} str\n * @returns {string}\n */\nexport function hash(str) {\n\tstr = str.replace(regex_return_characters, '');\n\tlet hash = 5381;\n\tlet i = str.length;\n\n\twhile (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n\treturn (hash >>> 0).toString(36);\n}\n\nconst VOID_ELEMENT_NAMES = [\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'command',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'keygen',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr'\n];\n\n/**\n * Returns `true` if `name` is of a void element\n * @param {string} name\n */\nexport function is_void(name) {\n\treturn VOID_ELEMENT_NAMES.includes(name) || name.toLowerCase() === '!doctype';\n}\n\nconst RESERVED_WORDS = [\n\t'arguments',\n\t'await',\n\t'break',\n\t'case',\n\t'catch',\n\t'class',\n\t'const',\n\t'continue',\n\t'debugger',\n\t'default',\n\t'delete',\n\t'do',\n\t'else',\n\t'enum',\n\t'eval',\n\t'export',\n\t'extends',\n\t'false',\n\t'finally',\n\t'for',\n\t'function',\n\t'if',\n\t'implements',\n\t'import',\n\t'in',\n\t'instanceof',\n\t'interface',\n\t'let',\n\t'new',\n\t'null',\n\t'package',\n\t'private',\n\t'protected',\n\t'public',\n\t'return',\n\t'static',\n\t'super',\n\t'switch',\n\t'this',\n\t'throw',\n\t'true',\n\t'try',\n\t'typeof',\n\t'var',\n\t'void',\n\t'while',\n\t'with',\n\t'yield'\n];\n\n/**\n * Returns `true` if `word` is a reserved JavaScript keyword\n * @param {string} word\n */\nexport function is_reserved(word) {\n\treturn RESERVED_WORDS.includes(word);\n}\n\n/**\n * @param {string} name\n */\nexport function is_capture_event(name) {\n\treturn name.endsWith('capture') && name !== 'gotpointercapture' && name !== 'lostpointercapture';\n}\n\n/** List of Element events that will be delegated */\nconst DELEGATED_EVENTS = [\n\t'beforeinput',\n\t'click',\n\t'change',\n\t'dblclick',\n\t'contextmenu',\n\t'focusin',\n\t'focusout',\n\t'input',\n\t'keydown',\n\t'keyup',\n\t'mousedown',\n\t'mousemove',\n\t'mouseout',\n\t'mouseover',\n\t'mouseup',\n\t'pointerdown',\n\t'pointermove',\n\t'pointerout',\n\t'pointerover',\n\t'pointerup',\n\t'touchend',\n\t'touchmove',\n\t'touchstart'\n];\n\n/**\n * Returns `true` if `event_name` is a delegated event\n * @param {string} event_name\n */\nexport function can_delegate_event(event_name) {\n\treturn DELEGATED_EVENTS.includes(event_name);\n}\n\n/**\n * Attributes that are boolean, i.e. they are present or not present.\n */\nconst DOM_BOOLEAN_ATTRIBUTES = [\n\t'allowfullscreen',\n\t'async',\n\t'autofocus',\n\t'autoplay',\n\t'checked',\n\t'controls',\n\t'default',\n\t'disabled',\n\t'formnovalidate',\n\t'indeterminate',\n\t'inert',\n\t'ismap',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nomodule',\n\t'novalidate',\n\t'open',\n\t'playsinline',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'seamless',\n\t'selected',\n\t'webkitdirectory',\n\t'defer',\n\t'disablepictureinpicture',\n\t'disableremoteplayback'\n];\n\n/**\n * Returns `true` if `name` is a boolean attribute\n * @param {string} name\n */\nexport function is_boolean_attribute(name) {\n\treturn DOM_BOOLEAN_ATTRIBUTES.includes(name);\n}\n\n/**\n * @type {Record<string, string>}\n * List of attribute names that should be aliased to their property names\n * because they behave differently between setting them as an attribute and\n * setting them as a property.\n */\nconst ATTRIBUTE_ALIASES = {\n\t// no `class: 'className'` because we handle that separately\n\tformnovalidate: 'formNoValidate',\n\tismap: 'isMap',\n\tnomodule: 'noModule',\n\tplaysinline: 'playsInline',\n\treadonly: 'readOnly',\n\tdefaultvalue: 'defaultValue',\n\tdefaultchecked: 'defaultChecked',\n\tsrcobject: 'srcObject',\n\tnovalidate: 'noValidate',\n\tallowfullscreen: 'allowFullscreen',\n\tdisablepictureinpicture: 'disablePictureInPicture',\n\tdisableremoteplayback: 'disableRemotePlayback'\n};\n\n/**\n * @param {string} name\n */\nexport function normalize_attribute(name) {\n\tname = name.toLowerCase();\n\treturn ATTRIBUTE_ALIASES[name] ?? name;\n}\n\nconst DOM_PROPERTIES = [\n\t...DOM_BOOLEAN_ATTRIBUTES,\n\t'formNoValidate',\n\t'isMap',\n\t'noModule',\n\t'playsInline',\n\t'readOnly',\n\t'value',\n\t'volume',\n\t'defaultValue',\n\t'defaultChecked',\n\t'srcObject',\n\t'noValidate',\n\t'allowFullscreen',\n\t'disablePictureInPicture',\n\t'disableRemotePlayback'\n];\n\n/**\n * @param {string} name\n */\nexport function is_dom_property(name) {\n\treturn DOM_PROPERTIES.includes(name);\n}\n\nconst NON_STATIC_PROPERTIES = ['autofocus', 'muted', 'defaultValue', 'defaultChecked'];\n\n/**\n * Returns `true` if the given attribute cannot be set through the template\n * string, i.e. needs some kind of JavaScript handling to work.\n * @param {string} name\n */\nexport function cannot_be_set_statically(name) {\n\treturn NON_STATIC_PROPERTIES.includes(name);\n}\n\n/**\n * Subset of delegated events which should be passive by default.\n * These two are already passive via browser defaults on window, document and body.\n * But since\n * - we're delegating them\n * - they happen often\n * - they apply to mobile which is generally less performant\n * we're marking them as passive by default for other elements, too.\n */\nconst PASSIVE_EVENTS = ['touchstart', 'touchmove'];\n\n/**\n * Returns `true` if `name` is a passive event\n * @param {string} name\n */\nexport function is_passive_event(name) {\n\treturn PASSIVE_EVENTS.includes(name);\n}\n\nconst CONTENT_EDITABLE_BINDINGS = ['textContent', 'innerHTML', 'innerText'];\n\n/** @param {string} name */\nexport function is_content_editable_binding(name) {\n\treturn CONTENT_EDITABLE_BINDINGS.includes(name);\n}\n\nconst LOAD_ERROR_ELEMENTS = [\n\t'body',\n\t'embed',\n\t'iframe',\n\t'img',\n\t'link',\n\t'object',\n\t'script',\n\t'style',\n\t'track'\n];\n\n/**\n * Returns `true` if the element emits `load` and `error` events\n * @param {string} name\n */\nexport function is_load_error_element(name) {\n\treturn LOAD_ERROR_ELEMENTS.includes(name);\n}\n\nconst SVG_ELEMENTS = [\n\t'altGlyph',\n\t'altGlyphDef',\n\t'altGlyphItem',\n\t'animate',\n\t'animateColor',\n\t'animateMotion',\n\t'animateTransform',\n\t'circle',\n\t'clipPath',\n\t'color-profile',\n\t'cursor',\n\t'defs',\n\t'desc',\n\t'discard',\n\t'ellipse',\n\t'feBlend',\n\t'feColorMatrix',\n\t'feComponentTransfer',\n\t'feComposite',\n\t'feConvolveMatrix',\n\t'feDiffuseLighting',\n\t'feDisplacementMap',\n\t'feDistantLight',\n\t'feDropShadow',\n\t'feFlood',\n\t'feFuncA',\n\t'feFuncB',\n\t'feFuncG',\n\t'feFuncR',\n\t'feGaussianBlur',\n\t'feImage',\n\t'feMerge',\n\t'feMergeNode',\n\t'feMorphology',\n\t'feOffset',\n\t'fePointLight',\n\t'feSpecularLighting',\n\t'feSpotLight',\n\t'feTile',\n\t'feTurbulence',\n\t'filter',\n\t'font',\n\t'font-face',\n\t'font-face-format',\n\t'font-face-name',\n\t'font-face-src',\n\t'font-face-uri',\n\t'foreignObject',\n\t'g',\n\t'glyph',\n\t'glyphRef',\n\t'hatch',\n\t'hatchpath',\n\t'hkern',\n\t'image',\n\t'line',\n\t'linearGradient',\n\t'marker',\n\t'mask',\n\t'mesh',\n\t'meshgradient',\n\t'meshpatch',\n\t'meshrow',\n\t'metadata',\n\t'missing-glyph',\n\t'mpath',\n\t'path',\n\t'pattern',\n\t'polygon',\n\t'polyline',\n\t'radialGradient',\n\t'rect',\n\t'set',\n\t'solidcolor',\n\t'stop',\n\t'svg',\n\t'switch',\n\t'symbol',\n\t'text',\n\t'textPath',\n\t'tref',\n\t'tspan',\n\t'unknown',\n\t'use',\n\t'view',\n\t'vkern'\n];\n\n/** @param {string} name */\nexport function is_svg(name) {\n\treturn SVG_ELEMENTS.includes(name);\n}\n\nconst MATHML_ELEMENTS = [\n\t'annotation',\n\t'annotation-xml',\n\t'maction',\n\t'math',\n\t'merror',\n\t'mfrac',\n\t'mi',\n\t'mmultiscripts',\n\t'mn',\n\t'mo',\n\t'mover',\n\t'mpadded',\n\t'mphantom',\n\t'mprescripts',\n\t'mroot',\n\t'mrow',\n\t'ms',\n\t'mspace',\n\t'msqrt',\n\t'mstyle',\n\t'msub',\n\t'msubsup',\n\t'msup',\n\t'mtable',\n\t'mtd',\n\t'mtext',\n\t'mtr',\n\t'munder',\n\t'munderover',\n\t'semantics'\n];\n\n/** @param {string} name */\nexport function is_mathml(name) {\n\treturn MATHML_ELEMENTS.includes(name);\n}\n\nconst STATE_CREATION_RUNES = /** @type {const} */ ([\n\t'$state',\n\t'$state.raw',\n\t'$derived',\n\t'$derived.by'\n]);\n\nexport const RUNES = /** @type {const} */ ([\n\t...STATE_CREATION_RUNES,\n\t'$state.eager',\n\t'$state.snapshot',\n\t'$props',\n\t'$props.id',\n\t'$bindable',\n\t'$effect',\n\t'$effect.pre',\n\t'$effect.tracking',\n\t'$effect.root',\n\t'$effect.pending',\n\t'$inspect',\n\t'$inspect().with',\n\t'$inspect.trace',\n\t'$host'\n]);\n\n/** @typedef {typeof RUNES[number]} RuneName */\n\n/**\n * @param {string} name\n * @returns {name is RuneName}\n */\nexport function is_rune(name) {\n\treturn RUNES.includes(/** @type {RuneName} */ (name));\n}\n\n/** @typedef {typeof STATE_CREATION_RUNES[number]} StateCreationRuneName */\n\n/**\n * @param {string} name\n * @returns {name is StateCreationRuneName}\n */\nexport function is_state_creation_rune(name) {\n\treturn STATE_CREATION_RUNES.includes(/** @type {StateCreationRuneName} */ (name));\n}\n\n/** List of elements that require raw contents and should not have SSR comments put in them */\nconst RAW_TEXT_ELEMENTS = /** @type {const} */ (['textarea', 'script', 'style', 'title']);\n\n/** @param {string} name */\nexport function is_raw_text_element(name) {\n\treturn RAW_TEXT_ELEMENTS.includes(/** @type {typeof RAW_TEXT_ELEMENTS[number]} */ (name));\n}\n\n// Matches valid HTML/SVG/MathML element names and custom element names.\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n//\n// Standard elements: ASCII alpha start, followed by ASCII alphanumerics.\n// Custom elements: ASCII alpha start, followed by any mix of PCENChar (which\n// includes ASCII alphanumerics, `-`, `.`, `_`, and specified Unicode ranges),\n// with at least one hyphen required somewhere after the first character.\n//\n// Rejects strings containing whitespace, quotes, angle brackets, slashes, equals,\n// or other characters that could break out of a tag-name token and enable markup injection.\nexport const REGEX_VALID_TAG_NAME =\n\t/^[a-zA-Z][a-zA-Z0-9]*(-[a-zA-Z0-9.\\-_\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u{10000}-\\u{EFFFF}]*)?$/u;\n\n/**\n * Prevent devtools trying to make `location` a clickable link by inserting a zero-width space\n * @template {string | undefined} T\n * @param {T} location\n * @returns {T};\n */\nexport function sanitize_location(location) {\n\treturn /** @type {T} */ (location?.replace(/\\//g, '/\\u200b'));\n}\n","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nexport *  from '../shared/errors.js';\n\n/**\n * The node API `AsyncLocalStorage` is not available, but is required to use async server rendering.\n * @returns {never}\n */\nexport function async_local_storage_unavailable() {\n\tconst error = new Error(`async_local_storage_unavailable\\nThe node API \\`AsyncLocalStorage\\` is not available, but is required to use async server rendering.\\nhttps://svelte.dev/e/async_local_storage_unavailable`);\n\n\terror.name = 'Svelte error';\n\n\tthrow error;\n}\n\n/**\n * Encountered asynchronous work while rendering synchronously.\n * @returns {never}\n */\nexport function await_invalid() {\n\tconst error = new Error(`await_invalid\\nEncountered asynchronous work while rendering synchronously.\\nhttps://svelte.dev/e/await_invalid`);\n\n\terror.name = 'Svelte error';\n\n\tthrow error;\n}\n\n/**\n * `<svelte:element this=\"%tag%\">` is not a valid element name — the element will not be rendered\n * @param {string} tag\n * @returns {never}\n */\nexport function dynamic_element_invalid_tag(tag) {\n\tconst error = new Error(`dynamic_element_invalid_tag\\n\\`<svelte:element this=\"${tag}\">\\` is not a valid element name — the element will not be rendered\\nhttps://svelte.dev/e/dynamic_element_invalid_tag`);\n\n\terror.name = 'Svelte error';\n\n\tthrow error;\n}\n\n/**\n * The `html` property of server render results has been deprecated. Use `body` instead.\n * @returns {never}\n */\nexport function html_deprecated() {\n\tconst error = new Error(`html_deprecated\\nThe \\`html\\` property of server render results has been deprecated. Use \\`body\\` instead.\\nhttps://svelte.dev/e/html_deprecated`);\n\n\terror.name = 'Svelte error';\n\n\tthrow error;\n}\n\n/**\n * Attempted to set `hydratable` with key `%key%` twice with different values.\n * \n * %stack%\n * @param {string} key\n * @param {string} stack\n * @returns {never}\n */\nexport function hydratable_clobbering(key, stack) {\n\tconst error = new Error(`hydratable_clobbering\\nAttempted to set \\`hydratable\\` with key \\`${key}\\` twice with different values.\n\n${stack}\\nhttps://svelte.dev/e/hydratable_clobbering`);\n\n\terror.name = 'Svelte error';\n\n\tthrow error;\n}\n\n/**\n * Failed to serialize `hydratable` data for key `%key%`.\n * \n * `hydratable` can serialize anything [`uneval` from `devalue`](https://npmjs.com/package/uneval) can, plus Promises.\n * \n * Cause:\n * %stack%\n * @param {string} key\n * @param {string} stack\n * @returns {never}\n */\nexport function hydratable_serialization_failed(key, stack) {\n\tconst error = new Error(`hydratable_serialization_failed\\nFailed to serialize \\`hydratable\\` data for key \\`${key}\\`.\n\n\\`hydratable\\` can serialize anything [\\`uneval\\` from \\`devalue\\`](https://npmjs.com/package/uneval) can, plus Promises.\n\nCause:\n${stack}\\nhttps://svelte.dev/e/hydratable_serialization_failed`);\n\n\terror.name = 'Svelte error';\n\n\tthrow error;\n}\n\n/**\n * `csp.nonce` was set while `csp.hash` was `true`. These options cannot be used simultaneously.\n * @returns {never}\n */\nexport function invalid_csp() {\n\tconst error = new Error(`invalid_csp\\n\\`csp.nonce\\` was set while \\`csp.hash\\` was \\`true\\`. These options cannot be used simultaneously.\\nhttps://svelte.dev/e/invalid_csp`);\n\n\terror.name = 'Svelte error';\n\n\tthrow error;\n}\n\n/**\n * The `idPrefix` option cannot include `--`.\n * @returns {never}\n */\nexport function invalid_id_prefix() {\n\tconst error = new Error(`invalid_id_prefix\\nThe \\`idPrefix\\` option cannot include \\`--\\`.\\nhttps://svelte.dev/e/invalid_id_prefix`);\n\n\terror.name = 'Svelte error';\n\n\tthrow error;\n}\n\n/**\n * `%name%(...)` is not available on the server\n * @param {string} name\n * @returns {never}\n */\nexport function lifecycle_function_unavailable(name) {\n\tconst error = new Error(`lifecycle_function_unavailable\\n\\`${name}(...)\\` is not available on the server\\nhttps://svelte.dev/e/lifecycle_function_unavailable`);\n\n\terror.name = 'Svelte error';\n\n\tthrow error;\n}\n\n/**\n * Could not resolve `render` context.\n * @returns {never}\n */\nexport function server_context_required() {\n\tconst error = new Error(`server_context_required\\nCould not resolve \\`render\\` context.\\nhttps://svelte.dev/e/server_context_required`);\n\n\terror.name = 'Svelte error';\n\n\tthrow error;\n}","/** @import { SSRContext } from '#server' */\nimport { DEV } from 'esm-env';\nimport { create_context, get_or_init_context_map } from '../shared/context.js';\nimport * as e from './errors.js';\n\n/** @type {SSRContext | null} */\nexport var ssr_context = null;\n\n/** @param {SSRContext | null} v */\nexport function set_ssr_context(v) {\n\tssr_context = v;\n}\n\n/**\n * @template T\n * @returns {[() => T, (context: T) => T, () => boolean]}\n * @since 5.40.0\n */\nexport function createContext() {\n\treturn /** @type {[() => T, (context: T) => T, () => boolean]} */ (\n\t\tcreate_context(getContext, setContext, hasContext)\n\t);\n}\n\n/**\n * @template T\n * @param {any} key\n * @returns {T}\n */\nexport function getContext(key) {\n\tconst context_map = get_or_init_context_map(ssr_context, 'getContext');\n\tconst result = /** @type {T} */ (context_map.get(key));\n\n\treturn result;\n}\n\n/**\n * @template T\n * @param {any} key\n * @param {T} context\n * @returns {T}\n */\nexport function setContext(key, context) {\n\tconst context_map = get_or_init_context_map(ssr_context, 'setContext');\n\n\tif (/** @type {SSRContext} */ (ssr_context).i) {\n\t\te.set_context_after_init();\n\t}\n\n\tcontext_map.set(key, context);\n\treturn context;\n}\n\n/**\n * @param {any} key\n * @returns {boolean}\n */\nexport function hasContext(key) {\n\treturn get_or_init_context_map(ssr_context, 'hasContext').has(key);\n}\n\n/** @returns {Map<any, any>} */\nexport function getAllContexts() {\n\treturn get_or_init_context_map(ssr_context, 'getAllContexts');\n}\n\n/**\n * @param {Function} [fn]\n */\nexport function push(fn) {\n\tssr_context = { p: ssr_context, c: null, r: null, i: false };\n\n\tif (DEV) {\n\t\tssr_context.function = fn;\n\t\tssr_context.element = ssr_context.p?.element;\n\t}\n}\n\nexport function pop() {\n\tssr_context = /** @type {SSRContext} */ (ssr_context).p;\n}\n\n/**\n * Wraps an `await` expression in such a way that the component context that was\n * active before the expression evaluated can be reapplied afterwards —\n * `await a + b()` becomes `(await $.save(a))() + b()`, meaning `b()` will have access\n * to the context of its component.\n * @template T\n * @param {Promise<T>} promise\n * @returns {Promise<() => T>}\n */\nexport async function save(promise) {\n\tvar previous_context = ssr_context;\n\tvar value = await promise;\n\n\treturn () => {\n\t\tssr_context = previous_context;\n\t\treturn value;\n\t};\n}\n","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\n\nvar bold = 'font-weight: bold';\nvar normal = 'font-weight: normal';\n\n/**\n * A `hydratable` value with key `%key%` was created, but at least part of it was not used during the render.\n * \n * The `hydratable` was initialized in:\n * %stack%\n * @param {string} key\n * @param {string} stack\n */\nexport function unresolved_hydratable(key, stack) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] unresolved_hydratable\\n%cA \\`hydratable\\` value with key \\`${key}\\` was created, but at least part of it was not used during the render.\n\nThe \\`hydratable\\` was initialized in:\n${stack}\\nhttps://svelte.dev/e/unresolved_hydratable`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/unresolved_hydratable`);\n\t}\n}","// @ts-ignore -- we don't include node types in the production build\n/** @import { AsyncLocalStorage } from 'node:async_hooks' */\n/** @import { RenderContext } from '#server' */\n\nimport { deferred, noop } from '../shared/utils.js';\nimport * as e from './errors.js';\n\n/** @type {Promise<void> | null} */\nlet current_render = null;\n\n/** @type {RenderContext | null} */\nlet context = null;\n\n/** @returns {RenderContext} */\nexport function get_render_context() {\n\tconst store = context ?? als?.getStore();\n\n\tif (!store) {\n\t\te.server_context_required();\n\t}\n\n\treturn store;\n}\n\n/**\n * @template T\n * @param {() => Promise<T>} fn\n * @returns {Promise<T>}\n */\nexport async function with_render_context(fn) {\n\tcontext = {\n\t\thydratable: {\n\t\t\tlookup: new Map(),\n\t\t\tcomparisons: [],\n\t\t\tunresolved_promises: new Map()\n\t\t}\n\t};\n\n\tif (in_webcontainer()) {\n\t\tconst { promise, resolve } = deferred();\n\t\tconst previous_render = current_render;\n\t\tcurrent_render = promise;\n\t\tawait previous_render;\n\t\treturn fn().finally(resolve);\n\t}\n\n\ttry {\n\t\tif (als === null) {\n\t\t\te.async_local_storage_unavailable();\n\t\t}\n\t\treturn als.run(context, fn);\n\t} finally {\n\t\tcontext = null;\n\t}\n}\n\n/** @type {AsyncLocalStorage<RenderContext | null> | null} */\nlet als = null;\n/** @type {Promise<void> | null} */\nlet als_import = null;\n\n/**\n *\n * @returns {Promise<void>}\n */\nexport function init_render_context() {\n\t// It's important the right side of this assignment can run a maximum of one time\n\t// otherwise it's possible for a very, very well-timed race condition to assign to `als`\n\t// at the beginning of a render, and then another render to assign to it again, which causes\n\t// the first render's second half to use a new instance of `als` which doesn't have its\n\t// context anymore.\n\t// @ts-ignore -- we don't include node types in the production build\n\tals_import ??= import('node:async_hooks')\n\t\t.then((hooks) => {\n\t\t\tals = new hooks.AsyncLocalStorage();\n\t\t})\n\t\t.then(noop, noop);\n\treturn als_import;\n}\n\n// this has to be a function because rollup won't treeshake it if it's a constant\nfunction in_webcontainer() {\n\t// @ts-ignore -- this will fail when we run typecheck because we exclude node types\n\t// eslint-disable-next-line n/prefer-global/process\n\treturn !!globalThis.process?.versions?.webcontainer;\n}\n","import { BROWSER } from 'esm-env';\n\nlet text_encoder;\n// TODO - remove this and use global `crypto` when we drop Node 18\nlet crypto;\n\n/** @param {string} module_name */\nconst obfuscated_import = (module_name) => import(/* @vite-ignore */ module_name);\n\n/** @param {string} data */\nexport async function sha256(data) {\n\ttext_encoder ??= new TextEncoder();\n\n\t// @ts-expect-error\n\tcrypto ??= globalThis.crypto?.subtle?.digest\n\t\t? globalThis.crypto\n\t\t: // @ts-ignore - we don't install node types in the prod build\n\t\t\t// don't use import('node:crypto') directly because static analysers will think we rely on node when we don't\n\t\t\t(await obfuscated_import('node:crypto')).webcrypto;\n\n\tconst hash_buffer = await crypto.subtle.digest('SHA-256', text_encoder.encode(data));\n\n\treturn base64_encode(hash_buffer);\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {string}\n */\nexport function base64_encode(bytes) {\n\t// Using `Buffer` is faster than iterating\n\t// @ts-ignore\n\tif (!BROWSER && globalThis.Buffer) {\n\t\t// @ts-ignore\n\t\treturn globalThis.Buffer.from(bytes).toString('base64');\n\t}\n\n\tlet binary = '';\n\n\tfor (let i = 0; i < bytes.length; i++) {\n\t\tbinary += String.fromCharCode(bytes[i]);\n\t}\n\n\treturn btoa(binary);\n}\n","/** @import { Component } from 'svelte' */\n/** @import { HydratableContext, SSRContext } from './types.js' */\n/** @import { Csp, RenderOutput, SyncRenderOutput, Sha256Source } from '../../server/public.js' */\n/** @import { MaybePromise } from '#shared' */\nimport { async_mode_flag } from '../flags/index.js';\nimport { STALE_REACTION } from '../client/constants.js';\nimport { pop, push, set_ssr_context, ssr_context } from './context.js';\nimport * as e from './errors.js';\nimport * as w from './warnings.js';\nimport { BLOCK_CLOSE, BLOCK_OPEN } from './hydration.js';\nimport { HYDRATION_START_FAILED } from '../../constants.js';\nimport { attributes } from './index.js';\nimport { get_render_context, with_render_context, init_render_context } from './render-context.js';\nimport { sha256 } from './crypto.js';\nimport * as devalue from 'devalue';\nimport { has_own_property, is_array, noop } from '../shared/utils.js';\nimport { escape_html } from '../../escaping.js';\n\n/** @typedef {'head' | 'body'} RendererType */\n/** @typedef {{ [key in RendererType]: string }} AccumulatedContent */\n\n/**\n * @typedef {string | Renderer} RendererItem\n */\n\nclass RenderResult {\n\t/** @type {() => AccumulatedContent} */\n\t#render;\n\n\t/** @type {() => Promise<AccumulatedContent & { hashes: { script: Sha256Source[] } }>} */\n\t#render_async;\n\n\t/** @type {AccumulatedContent | undefined} */\n\t#sync;\n\n\t/** @type {{ script: '' }} */\n\t#hashes = { script: '' };\n\n\t/** @type {Promise<AccumulatedContent & { hashes: { script: Sha256Source[] } }> | undefined} */\n\t#promise;\n\n\t/**\n\t * @param {() => AccumulatedContent} render\n\t * @param {() => Promise<AccumulatedContent & { hashes: { script: Sha256Source[] } }>} render_async\n\t */\n\tconstructor(render, render_async) {\n\t\tthis.#render = render;\n\t\tthis.#render_async = render_async;\n\t}\n\n\t#get() {\n\t\treturn (this.#sync ??= this.#render());\n\t}\n\n\tget html() {\n\t\treturn this.#get().body;\n\t}\n\n\tget head() {\n\t\treturn this.#get().head;\n\t}\n\n\tget body() {\n\t\treturn this.#get().body;\n\t}\n\n\tget hashes() {\n\t\treturn this.#hashes;\n\t}\n\n\t/**\n\t * This is not type-safe, but honestly it's the best I can do right now, and it's a straightforward function.\n\t *\n\t * @template TResult1\n\t * @template [TResult2=never]\n\t * @param {(value: SyncRenderOutput) => TResult1} onfulfilled\n\t * @param {(reason: unknown) => TResult2} onrejected\n\t */\n\tthen(onfulfilled, onrejected) {\n\t\tif (!async_mode_flag) {\n\t\t\tconst result = this.#get();\n\t\t\tconst user_result = onfulfilled({\n\t\t\t\thead: result.head,\n\t\t\t\tbody: result.body,\n\t\t\t\thtml: result.body,\n\t\t\t\thashes: { script: [] }\n\t\t\t});\n\t\t\treturn Promise.resolve(user_result);\n\t\t}\n\n\t\tthis.#promise ??= this.#render_async().then((result) => {\n\t\t\tObject.defineProperty(result, 'html', {\n\t\t\t\t// eslint-disable-next-line getter-return\n\t\t\t\tget: () => {\n\t\t\t\t\te.html_deprecated();\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn result;\n\t\t});\n\t\treturn this.#promise.then(\n\t\t\t(result) => onfulfilled(/** @type {SyncRenderOutput} */ (result)),\n\t\t\tonrejected\n\t\t);\n\t}\n}\n\n/**\n * Renderers are basically a tree of `string | Renderer`s, where each `Renderer` in the tree represents\n * work that may or may not have completed. A renderer can be {@link collect}ed to aggregate the\n * content from itself and all of its children, but this will throw if any of the children are\n * performing asynchronous work. To asynchronously collect a renderer, just `await` it.\n *\n * The `string` values within a renderer are always associated with the {@link type} of that renderer. To switch types,\n * call {@link child} with a different `type` argument.\n */\nexport class Renderer {\n\t/**\n\t * The contents of the renderer.\n\t * @type {RendererItem[]}\n\t */\n\t#out = [];\n\n\t/**\n\t * Any `onDestroy` callbacks registered during execution of this renderer.\n\t * @type {(() => void)[] | undefined}\n\t */\n\t#on_destroy = undefined;\n\n\t/**\n\t * Whether this renderer is a component body.\n\t * @type {boolean}\n\t */\n\t#is_component_body = false;\n\n\t/**\n\t * If set, this renderer is an error boundary. When async collection\n\t * of the children fails, the failed snippet is rendered instead.\n\t * @type {{\n\t * \tfailed: (renderer: Renderer, error: unknown, reset: () => void) => void;\n\t * \ttransformError: (error: unknown) => unknown;\n\t * \tcontext: SSRContext | null;\n\t * } | null}\n\t */\n\t#boundary = null;\n\n\t/**\n\t * The type of string content that this renderer is accumulating.\n\t * @type {RendererType}\n\t */\n\ttype;\n\n\t/** @type {Renderer | undefined} */\n\t#parent;\n\n\t/**\n\t * Asynchronous work associated with this renderer\n\t * @type {Promise<void> | undefined}\n\t */\n\tpromise = undefined;\n\n\t/**\n\t * State which is associated with the content tree as a whole.\n\t * It will be re-exposed, uncopied, on all children.\n\t * @type {SSRState}\n\t * @readonly\n\t */\n\tglobal;\n\n\t/**\n\t * State that is local to the branch it is declared in.\n\t * It will be shallow-copied to all children.\n\t *\n\t * @type {{ select_value: any, multiple: boolean }}\n\t */\n\tlocal;\n\n\t/**\n\t * @param {SSRState} global\n\t * @param {Renderer | undefined} [parent]\n\t */\n\tconstructor(global, parent) {\n\t\tthis.#parent = parent;\n\n\t\tthis.global = global;\n\t\tthis.local = parent ? { ...parent.local } : { select_value: undefined, multiple: false };\n\t\tthis.type = parent ? parent.type : 'body';\n\t}\n\n\t/**\n\t * @param {(renderer: Renderer) => void} fn\n\t */\n\thead(fn) {\n\t\tconst head = new Renderer(this.global, this);\n\t\thead.type = 'head';\n\n\t\tthis.#out.push(head);\n\t\thead.child(fn);\n\t}\n\n\t/**\n\t * @param {Array<Promise<void>>} blockers\n\t * @param {(renderer: Renderer) => void} fn\n\t */\n\tasync_block(blockers, fn) {\n\t\tthis.#out.push(BLOCK_OPEN);\n\t\tthis.async(blockers, fn);\n\t\tthis.#out.push(BLOCK_CLOSE);\n\t}\n\n\t/**\n\t * @param {Array<Promise<void>>} blockers\n\t * @param {(renderer: Renderer) => void} fn\n\t */\n\tasync(blockers, fn) {\n\t\tlet callback = fn;\n\n\t\tif (blockers.length > 0) {\n\t\t\tconst context = ssr_context;\n\n\t\t\tcallback = (renderer) => {\n\t\t\t\treturn Promise.all(blockers).then(() => {\n\t\t\t\t\tconst previous_context = ssr_context;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tset_ssr_context(context);\n\t\t\t\t\t\treturn fn(renderer);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tset_ssr_context(previous_context);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\tthis.child(callback);\n\t}\n\n\t/**\n\t * @param {Array<() => void>} thunks\n\t */\n\trun(thunks) {\n\t\tconst context = ssr_context;\n\n\t\tlet promise = Promise.resolve(thunks[0]());\n\t\tconst promises = [promise];\n\n\t\tif (context !== null && thunks.length > 1) {\n\t\t\t// the remaining thunks run after an `await`, by which point it is too late to set context\n\t\t\tcontext.i = true;\n\t\t}\n\n\t\tfor (const fn of thunks.slice(1)) {\n\t\t\tpromise = promise.then(() => {\n\t\t\t\tconst previous_context = ssr_context;\n\t\t\t\tset_ssr_context(context);\n\n\t\t\t\ttry {\n\t\t\t\t\treturn fn();\n\t\t\t\t} finally {\n\t\t\t\t\tset_ssr_context(previous_context);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpromises.push(promise);\n\t\t}\n\n\t\t// prevent unhandled rejections, and attach the promise to the renderer instance\n\t\t// so that rejections correctly cause rendering to fail\n\t\tpromise.catch(noop);\n\t\tthis.promise = this.global.track(promise);\n\n\t\treturn promises;\n\t}\n\n\t/**\n\t * @param {(renderer: Renderer) => MaybePromise<void>} fn\n\t */\n\tchild_block(fn) {\n\t\tthis.#out.push(BLOCK_OPEN);\n\t\tthis.child(fn);\n\t\tthis.#out.push(BLOCK_CLOSE);\n\t}\n\n\t/**\n\t * Create a child renderer. The child renderer inherits the state from the parent,\n\t * but has its own content.\n\t * @param {(renderer: Renderer) => MaybePromise<void>} fn\n\t */\n\tchild(fn) {\n\t\tconst child = new Renderer(this.global, this);\n\t\tthis.#out.push(child);\n\n\t\tconst parent = ssr_context;\n\n\t\tset_ssr_context({\n\t\t\t...ssr_context,\n\t\t\tp: parent,\n\t\t\tc: null,\n\t\t\tr: child,\n\t\t\ti: ssr_context?.i ?? false\n\t\t});\n\n\t\tconst result = fn(child);\n\n\t\tset_ssr_context(parent);\n\n\t\tif (result instanceof Promise) {\n\t\t\t// catch to avoid unhandled promise rejections - we'll end up throwing in `collect_async` if something fails\n\t\t\tresult.catch(noop);\n\t\t\tresult.finally(() => set_ssr_context(null)).catch(noop);\n\n\t\t\tif (child.global.mode === 'sync') {\n\t\t\t\te.await_invalid();\n\t\t\t}\n\n\t\t\tchild.promise = child.global.track(result);\n\t\t}\n\n\t\treturn child;\n\t}\n\n\t/**\n\t * Render children inside an error boundary. If the children throw and the API-level\n\t * `transformError` transform handles the error (doesn't re-throw), the `failed` snippet is\n\t * rendered instead. Otherwise the error propagates.\n\t *\n\t * @param {{ failed?: (renderer: Renderer, error: unknown, reset: () => void) => void }} props\n\t * @param {(renderer: Renderer) => MaybePromise<void>} children_fn\n\t */\n\tboundary(props, children_fn) {\n\t\t// Create a child renderer for the boundary content.\n\t\t// Mark it as a boundary so that #collect_content_async can catch\n\t\t// errors from nested async children and render the failed snippet.\n\t\tconst child = new Renderer(this.global, this);\n\t\tthis.#out.push(child);\n\n\t\tconst parent_context = ssr_context;\n\n\t\tif (props.failed) {\n\t\t\tchild.#boundary = {\n\t\t\t\tfailed: props.failed,\n\t\t\t\ttransformError: this.global.transformError,\n\t\t\t\tcontext: parent_context\n\t\t\t};\n\t\t}\n\n\t\tset_ssr_context({\n\t\t\t...ssr_context,\n\t\t\tp: parent_context,\n\t\t\tc: null,\n\t\t\tr: child,\n\t\t\ti: ssr_context?.i ?? false\n\t\t});\n\n\t\ttry {\n\t\t\tconst result = children_fn(child);\n\n\t\t\tset_ssr_context(parent_context);\n\n\t\t\tif (result instanceof Promise) {\n\t\t\t\tif (child.global.mode === 'sync') {\n\t\t\t\t\te.await_invalid();\n\t\t\t\t}\n\t\t\t\tresult.catch(noop);\n\t\t\t\tchild.promise = child.global.track(result);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\t// synchronous errors are handled here, async errors will be handled in #collect_content_async\n\t\t\tset_ssr_context(parent_context);\n\n\t\t\tconst failed_snippet = props.failed;\n\n\t\t\tif (!failed_snippet) throw error;\n\n\t\t\tconst result = this.global.transformError(error);\n\n\t\t\tchild.#out.length = 0;\n\t\t\tchild.#boundary = null;\n\n\t\t\tif (result instanceof Promise) {\n\t\t\t\tif (this.global.mode === 'sync') {\n\t\t\t\t\te.await_invalid();\n\t\t\t\t}\n\n\t\t\t\tchild.promise = child.global.track(\n\t\t\t\t\t/** @type {Promise<unknown>} */ (result).then((transformed) => {\n\t\t\t\t\t\tset_ssr_context(parent_context);\n\t\t\t\t\t\tchild.#out.push(Renderer.#serialize_failed_boundary(transformed));\n\t\t\t\t\t\tfailed_snippet(child, transformed, noop);\n\t\t\t\t\t\tchild.#out.push(BLOCK_CLOSE);\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t\tchild.promise.catch(noop);\n\t\t\t} else {\n\t\t\t\tchild.#out.push(Renderer.#serialize_failed_boundary(result));\n\t\t\t\tfailed_snippet(child, result, noop);\n\t\t\t\tchild.#out.push(BLOCK_CLOSE);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Create a component renderer. The component renderer inherits the state from the parent,\n\t * but has its own content. It is treated as an ordering boundary for ondestroy callbacks.\n\t * @param {(renderer: Renderer) => MaybePromise<void>} fn\n\t * @param {Function} [component_fn]\n\t * @returns {void}\n\t */\n\tcomponent(fn, component_fn) {\n\t\tpush(component_fn);\n\t\t// mark before running so `onDestroy` callbacks are still collected if `fn` throws\n\t\tthis.child((renderer) => {\n\t\t\trenderer.#is_component_body = true;\n\t\t\treturn fn(renderer);\n\t\t});\n\t\tpop();\n\t}\n\n\t/**\n\t * @param {Record<string, any>} attrs\n\t * @param {(renderer: Renderer) => void} fn\n\t * @param {string | undefined} [css_hash]\n\t * @param {Record<string, boolean> | undefined} [classes]\n\t * @param {Record<string, string> | undefined} [styles]\n\t * @param {number | undefined} [flags]\n\t * @param {boolean | undefined} [is_rich]\n\t * @returns {void}\n\t */\n\tselect(attrs, fn, css_hash, classes, styles, flags, is_rich) {\n\t\tconst { value, defaultValue, ...select_attrs } = attrs;\n\t\tif (select_attrs.multiple === '') select_attrs.multiple = true;\n\n\t\tthis.push(`<select${attributes(select_attrs, css_hash, classes, styles, flags)}>`);\n\t\tthis.child((renderer) => {\n\t\t\trenderer.local.select_value = value === undefined ? defaultValue : value;\n\t\t\trenderer.local.multiple = !!select_attrs.multiple;\n\t\t\tfn(renderer);\n\t\t});\n\t\tthis.push(`${is_rich ? '<!>' : ''}</select>`);\n\t}\n\n\t/**\n\t * @param {Record<string, any>} attrs\n\t * @param {string | number | boolean | ((renderer: Renderer) => void)} body\n\t * @param {string | undefined} [css_hash]\n\t * @param {Record<string, boolean> | undefined} [classes]\n\t * @param {Record<string, string> | undefined} [styles]\n\t * @param {number | undefined} [flags]\n\t * @param {boolean | undefined} [is_rich]\n\t */\n\toption(attrs, body, css_hash, classes, styles, flags, is_rich) {\n\t\tthis.#out.push(`<option${attributes(attrs, css_hash, classes, styles, flags)}`);\n\n\t\t/**\n\t\t * @param {Renderer} renderer\n\t\t * @param {any} value\n\t\t * @param {{ head?: string, body: any }} content\n\t\t */\n\t\tconst close = (renderer, value, { head, body }) => {\n\t\t\tif (has_own_property.call(attrs, 'value')) {\n\t\t\t\tvalue = attrs.value;\n\t\t\t}\n\n\t\t\tvar select_value = this.local.select_value;\n\n\t\t\tif (\n\t\t\t\t// Super edge-case, but theoretically someone could use arrays with non-multiple selects,\n\t\t\t\t// so we gotta check for the multiple attribute presence, too.\n\t\t\t\tthis.local.multiple && is_array(select_value)\n\t\t\t\t\t? select_value.includes(value)\n\t\t\t\t\t: value === select_value\n\t\t\t) {\n\t\t\t\trenderer.#out.push(' selected=\"\"');\n\t\t\t}\n\n\t\t\trenderer.#out.push(`>${body}${is_rich ? '<!>' : ''}</option>`);\n\n\t\t\t// super edge case, but may as well handle it\n\t\t\tif (head) {\n\t\t\t\trenderer.head((child) => child.push(head));\n\t\t\t}\n\t\t};\n\n\t\tif (typeof body === 'function') {\n\t\t\tthis.child((renderer) => {\n\t\t\t\tconst r = new Renderer(this.global, this);\n\t\t\t\tbody(r);\n\n\t\t\t\tif (this.global.mode === 'async') {\n\t\t\t\t\treturn r.#collect_content_async().then((content) => {\n\t\t\t\t\t\tclose(renderer, content.body.replaceAll('<!---->', ''), content);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst content = r.#collect_content();\n\t\t\t\t\tclose(renderer, content.body.replaceAll('<!---->', ''), content);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tclose(this, body, { body: escape_html(body) });\n\t\t}\n\t}\n\n\t/**\n\t * @param {(renderer: Renderer) => void} fn\n\t */\n\ttitle(fn) {\n\t\tconst path = this.get_path();\n\n\t\t/** @param {string} head */\n\t\tconst close = (head) => {\n\t\t\tthis.global.set_title(head, path);\n\t\t};\n\n\t\tthis.child((renderer) => {\n\t\t\tconst r = new Renderer(renderer.global, renderer);\n\t\t\tfn(r);\n\n\t\t\tif (renderer.global.mode === 'async') {\n\t\t\t\treturn r.#collect_content_async().then((content) => {\n\t\t\t\t\tclose(content.head);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst content = r.#collect_content();\n\t\t\t\tclose(content.head);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * @param {string | (() => Promise<string>)} content\n\t */\n\tpush(content) {\n\t\tif (typeof content === 'function') {\n\t\t\tthis.child(async (renderer) => renderer.push(await content()));\n\t\t} else {\n\t\t\tthis.#out.push(content);\n\t\t}\n\t}\n\n\t/**\n\t * @param {() => void} fn\n\t */\n\ton_destroy(fn) {\n\t\t(this.#on_destroy ??= []).push(fn);\n\t}\n\n\t/**\n\t * @returns {number[]}\n\t */\n\tget_path() {\n\t\treturn this.#parent ? [...this.#parent.get_path(), this.#parent.#out.indexOf(this)] : [];\n\t}\n\n\t/**\n\t * @deprecated this is needed for legacy component bindings\n\t */\n\tcopy() {\n\t\tconst copy = new Renderer(this.global, this.#parent);\n\t\tcopy.type = this.type;\n\t\tcopy.#out = this.#out.map((item) => (item instanceof Renderer ? item.copy() : item));\n\t\tcopy.promise = this.promise;\n\t\treturn copy;\n\t}\n\n\t/**\n\t * @param {Renderer} other\n\t * @deprecated this is needed for legacy component bindings\n\t */\n\tsubsume(other) {\n\t\tif (this.global.mode !== other.global.mode) {\n\t\t\tthrow new Error(\n\t\t\t\t\"invariant: A renderer cannot switch modes. If you're seeing this, there's a compiler bug. File an issue!\"\n\t\t\t);\n\t\t}\n\n\t\tthis.local = other.local;\n\t\tthis.#out = other.#out.map((item, i) => {\n\t\t\tconst current = this.#out[i];\n\n\t\t\tif (current instanceof Renderer && item instanceof Renderer) {\n\t\t\t\tcurrent.subsume(item);\n\t\t\t\treturn current;\n\t\t\t}\n\n\t\t\treturn item;\n\t\t});\n\t\tthis.promise = other.promise;\n\t\tthis.type = other.type;\n\t}\n\n\tget length() {\n\t\treturn this.#out.length;\n\t}\n\n\t/**\n\t * Creates the hydration comment that marks the start of a failed boundary.\n\t * The error is JSON-serialized and embedded inside an HTML comment for the client\n\t * to parse during hydration. The JSON is escaped to prevent `-->` or `<!--` sequences\n\t * from breaking out of the comment (XSS). Uses unicode escapes which `JSON.parse()`\n\t * handles transparently.\n\t * @param {unknown} error\n\t * @returns {string}\n\t */\n\tstatic #serialize_failed_boundary(error) {\n\t\tvar json = JSON.stringify(error);\n\t\tvar escaped = json.replace(/>/g, '\\\\u003e').replace(/</g, '\\\\u003c');\n\t\treturn `<!--${HYDRATION_START_FAILED}${escaped}-->`;\n\t}\n\n\t/**\n\t * Only available on the server and when compiling with the `server` option.\n\t * Takes a component and returns an object with `body` and `head` properties on it, which you can use to populate the HTML when server-rendering your app.\n\t * @template {Record<string, any>} Props\n\t * @param {Component<Props>} component\n\t * @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string; csp?: Csp }} [options]\n\t * @returns {RenderOutput}\n\t */\n\tstatic render(component, options = {}) {\n\t\treturn /** @type {RenderOutput} */ (\n\t\t\t/** @type {unknown} */ (\n\t\t\t\tnew RenderResult(\n\t\t\t\t\t() => Renderer.#render(component, options),\n\t\t\t\t\t() =>\n\t\t\t\t\t\tinit_render_context().then(() =>\n\t\t\t\t\t\t\twith_render_context(() => Renderer.#render_async(component, options))\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Collect all of the `onDestroy` callbacks registered during rendering. In an async context, this is only safe to call\n\t * after awaiting `collect_async`.\n\t *\n\t * Child renderers are \"porous\" and don't affect execution order, but component body renderers\n\t * create ordering boundaries. Within a renderer, callbacks run in order until hitting a component boundary.\n\t * @returns {Iterable<() => void>}\n\t */\n\t*#collect_on_destroy() {\n\t\tfor (const component of this.#traverse_components()) {\n\t\t\tyield* component.#collect_ondestroy();\n\t\t}\n\t}\n\n\t/**\n\t * Performs a depth-first search of renderers, yielding the deepest components first, then additional components as we backtrack up the tree.\n\t * @returns {Iterable<Renderer>}\n\t */\n\t*#traverse_components() {\n\t\tfor (const child of this.#out) {\n\t\t\tif (typeof child !== 'string') {\n\t\t\t\tyield* child.#traverse_components();\n\t\t\t}\n\t\t}\n\t\tif (this.#is_component_body) {\n\t\t\tyield this;\n\t\t}\n\t}\n\n\t/**\n\t * @returns {Iterable<() => void>}\n\t */\n\t*#collect_ondestroy() {\n\t\tif (this.#on_destroy) {\n\t\t\tfor (const fn of this.#on_destroy) {\n\t\t\t\tyield fn;\n\t\t\t}\n\t\t}\n\t\tfor (const child of this.#out) {\n\t\t\tif (child instanceof Renderer && !child.#is_component_body) {\n\t\t\t\tyield* child.#collect_ondestroy();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Runs every `onDestroy` callback in this renderer tree. On a failed render,\n\t * cleanup errors are suppressed so they do not mask the render error.\n\t * @param {boolean} suppress_errors\n\t */\n\t#run_on_destroy(suppress_errors) {\n\t\tlet first_error;\n\t\tlet has_error = false;\n\n\t\tfor (const cleanup of this.#collect_on_destroy()) {\n\t\t\ttry {\n\t\t\t\tcleanup();\n\t\t\t} catch (error) {\n\t\t\t\tif (!suppress_errors && !has_error) {\n\t\t\t\t\tfirst_error = error;\n\t\t\t\t\thas_error = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (has_error) throw first_error;\n\t}\n\n\t/**\n\t * @param {'sync' | 'async'} mode\n\t * @param {{ idPrefix?: string; csp?: Csp; transformError?: (error: unknown) => unknown }} options\n\t * @returns {Renderer}\n\t */\n\tstatic #create(mode, options) {\n\t\tif (options.idPrefix?.includes('--')) {\n\t\t\te.invalid_id_prefix();\n\t\t}\n\n\t\treturn new Renderer(\n\t\t\tnew SSRState(\n\t\t\t\tmode,\n\t\t\t\toptions.idPrefix ? options.idPrefix + '-' : '',\n\t\t\t\toptions.csp,\n\t\t\t\toptions.transformError\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Render a component. Throws if any of the children are performing asynchronous work.\n\t *\n\t * @template {Record<string, any>} Props\n\t * @param {Component<Props>} component\n\t * @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string }} options\n\t * @returns {AccumulatedContent}\n\t */\n\tstatic #render(component, options) {\n\t\tvar previous_context = ssr_context;\n\t\tconst renderer = Renderer.#create('sync', options);\n\t\t/** @type {AccumulatedContent | undefined} */\n\t\tlet result;\n\t\tlet render_error;\n\t\tlet failed = false;\n\n\t\ttry {\n\t\t\ttry {\n\t\t\t\tRenderer.#open_render(renderer, component, options);\n\t\t\t\tresult = Renderer.#close_render(renderer.#collect_content(), renderer);\n\t\t\t} catch (error) {\n\t\t\t\trender_error = error;\n\t\t\t\tfailed = true;\n\t\t\t}\n\n\t\t\trenderer.#run_on_destroy(failed);\n\t\t\tif (failed) throw render_error;\n\n\t\t\treturn /** @type {AccumulatedContent} */ (result);\n\t\t} finally {\n\t\t\trenderer.global.abort();\n\t\t\tset_ssr_context(previous_context);\n\t\t}\n\t}\n\n\t/**\n\t * Render a component.\n\t *\n\t * @template {Record<string, any>} Props\n\t * @param {Component<Props>} component\n\t * @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string; csp?: Csp }} options\n\t * @returns {Promise<AccumulatedContent & { hashes: { script: Sha256Source[] } }>}\n\t */\n\tstatic async #render_async(component, options) {\n\t\tconst previous_context = ssr_context;\n\t\tconst renderer = Renderer.#create('async', options);\n\t\t/** @type {(AccumulatedContent & { hashes: { script: Sha256Source[] } }) | undefined} */\n\t\tlet result;\n\t\tlet render_error;\n\t\tlet failed = false;\n\n\t\ttry {\n\t\t\ttry {\n\t\t\t\tRenderer.#open_render(renderer, component, options);\n\t\t\t\tconst content = await renderer.#collect_content_async();\n\t\t\t\tconst hydratables = await renderer.#collect_hydratables();\n\t\t\t\tif (hydratables !== null) {\n\t\t\t\t\tcontent.head = hydratables + content.head;\n\t\t\t\t}\n\t\t\t\tresult = Renderer.#close_render(content, renderer);\n\t\t\t} catch (error) {\n\t\t\t\trender_error = error;\n\t\t\t\tfailed = true;\n\t\t\t\trenderer.global.abort();\n\t\t\t\tawait renderer.global.settle();\n\t\t\t}\n\n\t\t\trenderer.#run_on_destroy(failed);\n\t\t\tif (failed) throw render_error;\n\n\t\t\treturn /** @type {AccumulatedContent & { hashes: { script: Sha256Source[] } }} */ (result);\n\t\t} finally {\n\t\t\tset_ssr_context(previous_context);\n\t\t\trenderer.global.abort();\n\t\t}\n\t}\n\n\t/**\n\t * Collect all of the code from the `out` array and return it as a string, or a promise resolving to a string.\n\t * @param {AccumulatedContent} content\n\t * @returns {AccumulatedContent}\n\t */\n\t#collect_content(content = { head: '', body: '' }) {\n\t\tfor (const item of this.#out) {\n\t\t\tif (typeof item === 'string') {\n\t\t\t\tcontent[this.type] += item;\n\t\t\t} else if (item instanceof Renderer) {\n\t\t\t\titem.#collect_content(content);\n\t\t\t}\n\t\t}\n\n\t\treturn content;\n\t}\n\n\t/**\n\t * Collect all of the code from the `out` array and return it as a string.\n\t * @param {AccumulatedContent} content\n\t * @returns {Promise<AccumulatedContent>}\n\t */\n\tasync #collect_content_async(content = { head: '', body: '' }) {\n\t\tawait this.promise;\n\n\t\t// no danger to sequentially awaiting stuff in here; all of the work is already kicked off\n\t\tfor (const item of this.#out) {\n\t\t\tif (typeof item === 'string') {\n\t\t\t\tcontent[this.type] += item;\n\t\t\t} else if (item instanceof Renderer) {\n\t\t\t\tif (item.#boundary) {\n\t\t\t\t\t// This renderer is an error boundary - collect into a separate\n\t\t\t\t\t// accumulator so we can discard partial content on error\n\t\t\t\t\t/** @type {AccumulatedContent} */\n\t\t\t\t\tconst boundary_content = { head: '', body: '' };\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait item.#collect_content_async(boundary_content);\n\t\t\t\t\t\t// Success - merge into the main content\n\t\t\t\t\t\tcontent.head += boundary_content.head;\n\t\t\t\t\t\tcontent.body += boundary_content.body;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconst { context, failed, transformError } = item.#boundary;\n\n\t\t\t\t\t\tset_ssr_context(context);\n\n\t\t\t\t\t\tlet promise = transformError(error);\n\t\t\t\t\t\tset_ssr_context(null);\n\n\t\t\t\t\t\tlet transformed = await promise;\n\t\t\t\t\t\tset_ssr_context(context);\n\n\t\t\t\t\t\t// Render the failed snippet instead of the partial children content\n\t\t\t\t\t\tconst failed_renderer = new Renderer(item.global, item);\n\t\t\t\t\t\tfailed_renderer.type = item.type;\n\t\t\t\t\t\tfailed_renderer.#out.push(Renderer.#serialize_failed_boundary(transformed));\n\t\t\t\t\t\tfailed(failed_renderer, transformed, noop);\n\t\t\t\t\t\tfailed_renderer.#out.push(BLOCK_CLOSE);\n\t\t\t\t\t\tawait failed_renderer.#collect_content_async(content);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tawait item.#collect_content_async(content);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn content;\n\t}\n\n\tasync #collect_hydratables() {\n\t\tconst ctx = get_render_context().hydratable;\n\n\t\tfor (const [_, key] of ctx.unresolved_promises) {\n\t\t\t// this is a problem -- it means we've finished the render but we're still waiting on a promise to resolve so we can\n\t\t\t// serialize it, so we're blocking the response on useless content.\n\t\t\tw.unresolved_hydratable(key, ctx.lookup.get(key)?.stack ?? '<missing stack trace>');\n\t\t}\n\n\t\tfor (const comparison of ctx.comparisons) {\n\t\t\t// these reject if there's a mismatch\n\t\t\tawait comparison;\n\t\t}\n\n\t\treturn await this.#hydratable_block(ctx);\n\t}\n\n\t/**\n\t * @template {Record<string, any>} Props\n\t * @param {Renderer} renderer\n\t * @param {import('svelte').Component<Props>} component\n\t * @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string; csp?: Csp; transformError?: (error: unknown) => unknown }} options\n\t * @returns {void}\n\t */\n\tstatic #open_render(renderer, component, options) {\n\t\tvar previous_context = ssr_context;\n\n\t\ttry {\n\t\t\t/** @type {SSRContext} */\n\t\t\tconst context = { p: null, c: options.context ?? null, r: renderer, i: false };\n\t\t\tset_ssr_context(context);\n\n\t\t\trenderer.push(BLOCK_OPEN);\n\t\t\t// @ts-expect-error\n\t\t\tcomponent(renderer, options.props ?? {});\n\t\t\trenderer.push(BLOCK_CLOSE);\n\t\t} finally {\n\t\t\tset_ssr_context(previous_context);\n\t\t}\n\t}\n\n\t/**\n\t * @param {AccumulatedContent} content\n\t * @param {Renderer} renderer\n\t * @returns {AccumulatedContent & { hashes: { script: Sha256Source[] } }}\n\t */\n\tstatic #close_render(content, renderer) {\n\t\tlet head = content.head + renderer.global.get_title();\n\t\tlet body = content.body;\n\n\t\tfor (const { hash, code } of renderer.global.css) {\n\t\t\thead += `<style id=\"${hash}\">${code}</style>`;\n\t\t}\n\n\t\treturn {\n\t\t\thead,\n\t\t\tbody,\n\t\t\thashes: {\n\t\t\t\tscript: renderer.global.csp.script_hashes\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * @param {HydratableContext} ctx\n\t */\n\tasync #hydratable_block(ctx) {\n\t\tif (ctx.lookup.size === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet entries = [];\n\t\tlet has_promises = false;\n\n\t\tfor (const [k, v] of ctx.lookup) {\n\t\t\tif (v.promises) {\n\t\t\t\thas_promises = true;\n\t\t\t\tfor (const p of v.promises) await p;\n\t\t\t}\n\n\t\t\tentries.push(`[${devalue.uneval(k)},${v.serialized}]`);\n\t\t}\n\n\t\tlet prelude = `const h = (window.__svelte ??= {}).h ??= new Map();`;\n\n\t\tif (has_promises) {\n\t\t\tprelude = `const r = (v) => Promise.resolve(v);\n\t\t\t\t${prelude}`;\n\t\t}\n\n\t\tconst body = `\n\t\t\t{\n\t\t\t\t${prelude}\n\n\t\t\t\tfor (const [k, v] of [\n\t\t\t\t\t${entries.join(',\\n\\t\\t\\t\\t\\t')}\n\t\t\t\t]) {\n\t\t\t\t\th.set(k, v);\n\t\t\t\t}\n\t\t\t}\n\t\t`;\n\n\t\tlet csp_attr = '';\n\t\tif (this.global.csp.nonce) {\n\t\t\tcsp_attr = ` nonce=\"${this.global.csp.nonce}\"`;\n\t\t} else if (this.global.csp.hash) {\n\t\t\t// note to future selves: this doesn't need to be optimized with a Map<body, hash>\n\t\t\t// because the it's impossible for identical data to occur multiple times in a single render\n\t\t\t// (this would require the same hydratable key:value pair to be serialized multiple times)\n\t\t\tconst hash = await sha256(body);\n\t\t\tthis.global.csp.script_hashes.push(`sha256-${hash}`);\n\t\t}\n\n\t\treturn `\\n\\t\\t<script${csp_attr}>${body}</script>`;\n\t}\n}\n\nexport class SSRState {\n\t/** @readonly @type {Csp & { script_hashes: Sha256Source[] }} */\n\tcsp;\n\n\t/** @readonly @type {'sync' | 'async'} */\n\tmode;\n\n\t/** @readonly @type {() => string} */\n\tuid;\n\n\t/** @readonly @type {Set<{ hash: string; code: string }>} */\n\tcss = new Set();\n\n\t/** @type {Set<Promise<unknown>>} */\n\t#pending = new Set();\n\n\t/** @type {AbortController | null} */\n\t#controller = null;\n\n\t#aborted = false;\n\n\t/**\n\t * `transformError` passed to `render`. Called when an error boundary catches an error.\n\t * Throws by default if unset in `render`.\n\t * @type {(error: unknown) => unknown}\n\t */\n\ttransformError;\n\n\t/** @type {{ path: number[], value: string }} */\n\t#title = { path: [], value: '' };\n\n\t/**\n\t * @param {'sync' | 'async'} mode\n\t * @param {string} id_prefix\n\t * @param {Csp} csp\n\t * @param {((error: unknown) => unknown) | undefined} [transformError]\n\t */\n\tconstructor(mode, id_prefix = '', csp = { hash: false }, transformError) {\n\t\tthis.mode = mode;\n\t\tthis.csp = { ...csp, script_hashes: [] };\n\n\t\tthis.transformError =\n\t\t\ttransformError ??\n\t\t\t((error) => {\n\t\t\t\tthrow error;\n\t\t\t});\n\n\t\tlet uid = 1;\n\t\tthis.uid = () => `${id_prefix}s${uid++}`;\n\t}\n\n\t/**\n\t * @template T\n\t * @param {Promise<T>} promise\n\t * @returns {Promise<T>}\n\t */\n\ttrack(promise) {\n\t\tthis.#pending.add(promise);\n\t\tpromise.then(\n\t\t\t() => this.#pending.delete(promise),\n\t\t\t() => this.#pending.delete(promise)\n\t\t);\n\t\treturn promise;\n\t}\n\n\tasync settle() {\n\t\twhile (this.#pending.size > 0) {\n\t\t\tawait Promise.allSettled([...this.#pending]);\n\t\t}\n\t}\n\n\tabort() {\n\t\tif (this.#aborted) return;\n\t\tthis.#aborted = true;\n\t\tthis.#controller?.abort(STALE_REACTION);\n\t}\n\n\tget_abort_signal() {\n\t\tconst controller = (this.#controller ??= new AbortController());\n\t\tif (this.#aborted) controller.abort(STALE_REACTION);\n\t\treturn controller.signal;\n\t}\n\n\tget_title() {\n\t\treturn this.#title.value;\n\t}\n\n\t/**\n\t * Performs a depth-first (lexicographic) comparison using the path. Rejects sets\n\t * from earlier than or equal to the current value.\n\t * @param {string} value\n\t * @param {number[]} path\n\t */\n\tset_title(value, path) {\n\t\tconst current = this.#title.path;\n\n\t\tlet i = 0;\n\t\tlet l = Math.min(path.length, current.length);\n\n\t\t// skip identical prefixes - [1, 2, 3, ...] === [1, 2, 3, ...]\n\t\twhile (i < l && path[i] === current[i]) i += 1;\n\n\t\tif (path[i] === undefined) return;\n\n\t\t// replace title if\n\t\t// - incoming path is longer - [7, 8, 9] > [7, 8]\n\t\t// - incoming path is later  - [7, 8, 9] > [7, 8, 8]\n\t\tif (current[i] === undefined || path[i] > current[i]) {\n\t\t\tthis.#title.path = path;\n\t\t\tthis.#title.value = value;\n\t\t}\n\t}\n}\n","/**\n * Map of elements that have certain elements that are not allowed inside them, in the sense that they will auto-close the parent/ancestor element.\n * Theoretically one could take advantage of it but most of the time it will just result in confusing behavior and break when SSR'd.\n * There are more elements that are invalid inside other elements, but they're not auto-closed and so don't break SSR and are therefore not listed here.\n * @type {Record<string, { direct: string[]} | { descendant: string[]; reset_by?: string[] }>}\n */\nconst autoclosing_children = {\n\t// based on http://developers.whatwg.org/syntax.html#syntax-tag-omission\n\tli: { direct: ['li'] },\n\t// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dt#technical_summary\n\tdt: { descendant: ['dt', 'dd'], reset_by: ['dl'] },\n\tdd: { descendant: ['dt', 'dd'], reset_by: ['dl'] },\n\tp: {\n\t\tdescendant: [\n\t\t\t'address',\n\t\t\t'article',\n\t\t\t'aside',\n\t\t\t'blockquote',\n\t\t\t'div',\n\t\t\t'dl',\n\t\t\t'fieldset',\n\t\t\t'footer',\n\t\t\t'form',\n\t\t\t'h1',\n\t\t\t'h2',\n\t\t\t'h3',\n\t\t\t'h4',\n\t\t\t'h5',\n\t\t\t'h6',\n\t\t\t'header',\n\t\t\t'hgroup',\n\t\t\t'hr',\n\t\t\t'main',\n\t\t\t'menu',\n\t\t\t'nav',\n\t\t\t'ol',\n\t\t\t'p',\n\t\t\t'pre',\n\t\t\t'section',\n\t\t\t'table',\n\t\t\t'ul'\n\t\t]\n\t},\n\trt: { descendant: ['rt', 'rp'] },\n\trp: { descendant: ['rt', 'rp'] },\n\toptgroup: { descendant: ['optgroup'] },\n\toption: { descendant: ['option', 'optgroup'] },\n\tthead: { direct: ['tbody', 'tfoot'] },\n\ttbody: { direct: ['tbody', 'tfoot'] },\n\ttfoot: { direct: ['tbody'] },\n\ttr: { direct: ['tr', 'tbody'] },\n\ttd: { direct: ['td', 'th', 'tr'] },\n\tth: { direct: ['td', 'th', 'tr'] }\n};\n\n/**\n * Returns true if the tag is either the last in the list of siblings and will be autoclosed,\n * or not allowed inside the parent tag such that it will auto-close it. The latter results\n * in the browser repairing the HTML, which will likely result in an error during hydration.\n * @param {string} current\n * @param {string} [next]\n */\nexport function closing_tag_omitted(current, next) {\n\tconst disallowed = autoclosing_children[current];\n\tif (disallowed) {\n\t\tif (\n\t\t\t!next ||\n\t\t\t('direct' in disallowed ? disallowed.direct : disallowed.descendant).includes(next)\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Map of elements that have certain elements that are not allowed inside them, in the sense that the browser will somehow repair the HTML.\n * There are more elements that are invalid inside other elements, but they're not repaired and so don't break SSR and are therefore not listed here.\n * @type {Record<string, { direct: string[]} | { descendant: string[]; reset_by?: string[]; only?: string[] } | { only: string[] }>}\n */\nconst disallowed_children = {\n\t...autoclosing_children,\n\t// Strictly speaking, seeing an <option> doesn't mean we're in a <select>, but we assume it here\n\t// option or optgroup does not have an `only` restriction because newer browsers support rich HTML content\n\t// inside option elements. For older browsers, hydration will handle the mismatch.\n\tform: { descendant: ['form'] },\n\ta: { descendant: ['a'] },\n\tbutton: { descendant: ['button'] },\n\th1: { descendant: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] },\n\th2: { descendant: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] },\n\th3: { descendant: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] },\n\th4: { descendant: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] },\n\th5: { descendant: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] },\n\th6: { descendant: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] },\n\n\t// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n\t// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n\t// No special behavior since these rules fall back to \"in body\" mode for\n\t// all except special table nodes which cause bad parsing behavior anyway.\n\n\t// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n\ttr: { only: ['th', 'td', 'style', 'script', 'template'] },\n\t// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n\ttbody: { only: ['tr', 'style', 'script', 'template'] },\n\tthead: { only: ['tr', 'style', 'script', 'template'] },\n\ttfoot: { only: ['tr', 'style', 'script', 'template'] },\n\t// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n\tcolgroup: { only: ['col', 'template'] },\n\t// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n\ttable: {\n\t\tonly: ['caption', 'colgroup', 'tbody', 'thead', 'tfoot', 'style', 'script', 'template']\n\t},\n\t// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n\thead: {\n\t\tonly: [\n\t\t\t'base',\n\t\t\t'basefont',\n\t\t\t'bgsound',\n\t\t\t'link',\n\t\t\t'meta',\n\t\t\t'title',\n\t\t\t'noscript',\n\t\t\t'noframes',\n\t\t\t'style',\n\t\t\t'script',\n\t\t\t'template'\n\t\t]\n\t},\n\t// https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n\thtml: { only: ['head', 'body', 'frameset'] },\n\tframeset: { only: ['frame'] },\n\t'#document': { only: ['html'] }\n};\n\n/**\n * Returns an error message if the tag is not allowed inside the ancestor tag (which is grandparent and above) such that it will result\n * in the browser repairing the HTML, which will likely result in an error during hydration.\n * @param {string} child_tag\n * @param {string[]} ancestors All nodes starting with the parent, up until the ancestor, which means two entries minimum\n * @param {string} [child_loc]\n * @param {string} [ancestor_loc]\n * @returns {string | null}\n */\nexport function is_tag_valid_with_ancestor(child_tag, ancestors, child_loc, ancestor_loc) {\n\tif (child_tag.includes('-')) return null; // custom elements can be anything\n\n\tconst ancestor_tag = ancestors[ancestors.length - 1];\n\tconst disallowed = disallowed_children[ancestor_tag];\n\tif (!disallowed) return null;\n\n\tif ('reset_by' in disallowed && disallowed.reset_by) {\n\t\tfor (let i = ancestors.length - 2; i >= 0; i--) {\n\t\t\tconst ancestor = ancestors[i];\n\t\t\tif (ancestor.includes('-')) return null; // custom elements can be anything\n\n\t\t\t// A reset means that forbidden descendants are allowed again\n\t\t\tif (disallowed.reset_by.includes(ancestors[i])) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ('descendant' in disallowed && disallowed.descendant.includes(child_tag)) {\n\t\tconst child = child_loc ? `\\`<${child_tag}>\\` (${child_loc})` : `\\`<${child_tag}>\\``;\n\t\tconst ancestor = ancestor_loc\n\t\t\t? `\\`<${ancestor_tag}>\\` (${ancestor_loc})`\n\t\t\t: `\\`<${ancestor_tag}>\\``;\n\n\t\treturn `${child} cannot be a descendant of ${ancestor}`;\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns an error message if the tag is not allowed inside the parent tag such that it will result\n * in the browser repairing the HTML, which will likely result in an error during hydration.\n * @param {string} child_tag\n * @param {string} parent_tag\n * @param {string} [child_loc]\n * @param {string} [parent_loc]\n * @returns {string | null}\n */\nexport function is_tag_valid_with_parent(child_tag, parent_tag, child_loc, parent_loc) {\n\tif (child_tag.includes('-') || parent_tag?.includes('-')) return null; // custom elements can be anything\n\n\tif (parent_tag === 'template') return null; // no errors or warning should be thrown in immediate children of template tags\n\n\tconst disallowed = disallowed_children[parent_tag];\n\n\tconst child = child_loc ? `\\`<${child_tag}>\\` (${child_loc})` : `\\`<${child_tag}>\\``;\n\tconst parent = parent_loc ? `\\`<${parent_tag}>\\` (${parent_loc})` : `\\`<${parent_tag}>\\``;\n\n\tif (disallowed) {\n\t\tif ('direct' in disallowed && disallowed.direct.includes(child_tag)) {\n\t\t\treturn `${child} cannot be a direct child of ${parent}`;\n\t\t}\n\n\t\tif ('descendant' in disallowed && disallowed.descendant.includes(child_tag)) {\n\t\t\treturn `${child} cannot be a child of ${parent}`;\n\t\t}\n\n\t\tif ('only' in disallowed && disallowed.only) {\n\t\t\tif (disallowed.only.includes(child_tag)) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\treturn `${child} cannot be a child of ${parent}. \\`<${parent_tag}>\\` only allows these children: ${disallowed.only.map((d) => `\\`<${d}>\\``).join(', ')}`;\n\t\t\t}\n\t\t}\n\t}\n\n\t// These tags are only valid with a few parents that have special child\n\t// parsing rules - if we're down here, then none of those matched and\n\t// so we allow it only if we don't know what the parent is, as all other\n\t// cases are invalid (and we only get into this function if we know the parent).\n\tswitch (child_tag) {\n\t\tcase 'body':\n\t\tcase 'caption':\n\t\tcase 'col':\n\t\tcase 'colgroup':\n\t\tcase 'frameset':\n\t\tcase 'frame':\n\t\tcase 'head':\n\t\tcase 'html':\n\t\t\treturn `${child} cannot be a child of ${parent}`;\n\t\tcase 'thead':\n\t\tcase 'tbody':\n\t\tcase 'tfoot':\n\t\t\treturn `${child} must be the child of a \\`<table>\\`, not a ${parent}`;\n\t\tcase 'td':\n\t\tcase 'th':\n\t\t\treturn `${child} must be the child of a \\`<tr>\\`, not a ${parent}`;\n\t\tcase 'tr':\n\t\t\treturn `\\`<tr>\\` must be the child of a \\`<thead>\\`, \\`<tbody>\\`, or \\`<tfoot>\\`, not a ${parent}`;\n\t}\n\n\treturn null;\n}\n","/** @import { ComponentType, SvelteComponent, Component } from 'svelte' */\n/** @import { Csp, RenderOutput } from '../../server/public.js' */\n/** @import { Store } from '#shared' */\nexport { FILENAME, HMR } from '../../constants.js';\nimport { attr, clsx, to_class, to_style } from '../shared/attributes.js';\nimport { is_promise, noop } from '../shared/utils.js';\nimport { subscribe_to_store } from '../../store/utils.js';\nimport {\n\tUNINITIALIZED,\n\tELEMENT_PRESERVE_ATTRIBUTE_CASE,\n\tELEMENT_IS_NAMESPACED,\n\tELEMENT_IS_INPUT\n} from '../../constants.js';\nimport { escape_html } from '../../escaping.js';\nimport { DEV } from 'esm-env';\nimport { EMPTY_COMMENT, BLOCK_OPEN, BLOCK_OPEN_ELSE } from './hydration.js';\nimport { validate_store } from '../shared/validate.js';\nimport {\n\tis_boolean_attribute,\n\tis_raw_text_element,\n\tis_void,\n\tREGEX_VALID_TAG_NAME\n} from '../../utils.js';\nimport { Renderer } from './renderer.js';\nimport * as e from './errors.js';\nimport { ssr_context } from './context.js';\n\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nconst INVALID_ATTR_NAME_CHAR_REGEX =\n\t/[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n\n/**\n * @param {Renderer} renderer\n * @param {string} tag\n * @param {() => void} attributes_fn\n * @param {() => void} children_fn\n * @returns {void}\n */\nexport function element(renderer, tag, attributes_fn = noop, children_fn = noop) {\n\trenderer.push('<!---->');\n\n\tif (tag) {\n\t\tif (!REGEX_VALID_TAG_NAME.test(tag)) {\n\t\t\te.dynamic_element_invalid_tag(tag);\n\t\t}\n\t\trenderer.push(`<${tag}`);\n\t\tattributes_fn();\n\t\trenderer.push(`>`);\n\n\t\tif (!is_void(tag)) {\n\t\t\tchildren_fn();\n\t\t\tif (!is_raw_text_element(tag)) {\n\t\t\t\trenderer.push(EMPTY_COMMENT);\n\t\t\t}\n\t\t\trenderer.push(`</${tag}>`);\n\t\t}\n\t}\n\n\trenderer.push('<!---->');\n}\n\n/**\n * Only available on the server and when compiling with the `server` option.\n * Takes a component and returns an object with `body` and `head` properties on it, which you can use to populate the HTML when server-rendering your app.\n * @template {Record<string, any>} Props\n * @param {Component<Props> | ComponentType<SvelteComponent<Props>>} component\n * @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string; csp?: Csp; transformError?: (error: unknown) => unknown }} [options]\n * @returns {RenderOutput}\n */\nexport function render(component, options = {}) {\n\tif (options.csp?.hash && options.csp.nonce) {\n\t\te.invalid_csp();\n\t}\n\treturn Renderer.render(/** @type {Component<Props>} */ (component), options);\n}\n\n/**\n * @param {string} hash\n * @param {Renderer} renderer\n * @param {(renderer: Renderer) => Promise<void> | void} fn\n * @returns {void}\n */\nexport function head(hash, renderer, fn) {\n\trenderer.head((renderer) => {\n\t\trenderer.push(`<!--${hash}-->`);\n\t\trenderer.child(fn);\n\t\trenderer.push(EMPTY_COMMENT);\n\t});\n}\n\n/**\n * @param {Renderer} renderer\n * @param {boolean} is_html\n * @param {Record<string, string>} props\n * @param {() => void} component\n * @param {boolean} dynamic\n * @returns {void}\n */\nexport function css_props(renderer, is_html, props, component, dynamic = false) {\n\tconst styles = style_object_to_string(props);\n\n\tif (is_html) {\n\t\trenderer.push(`<svelte-css-wrapper style=\"display: contents; ${styles}\">`);\n\t} else {\n\t\trenderer.push(`<g style=\"${styles}\">`);\n\t}\n\n\tcomponent();\n\n\tif (!dynamic) {\n\t\trenderer.push('<!---->');\n\t}\n\n\tif (is_html) {\n\t\trenderer.push('</svelte-css-wrapper>');\n\t} else {\n\t\trenderer.push('</g>');\n\t}\n}\n\n/**\n * @param {Record<string, unknown>} attrs\n * @param {string} [css_hash]\n * @param {Record<string, boolean>} [classes]\n * @param {Record<string, string>} [styles]\n * @param {number} [flags]\n * @returns {string}\n */\nexport function attributes(attrs, css_hash, classes, styles, flags = 0) {\n\tif (styles) {\n\t\tattrs.style = to_style(attrs.style, styles);\n\t}\n\n\tif (attrs.class) {\n\t\tattrs.class = clsx(attrs.class);\n\t}\n\n\tif (css_hash || classes) {\n\t\tattrs.class = to_class(attrs.class, css_hash, classes);\n\t}\n\n\tlet attr_str = '';\n\tlet name;\n\n\tconst is_html = (flags & ELEMENT_IS_NAMESPACED) === 0;\n\tconst lowercase = (flags & ELEMENT_PRESERVE_ATTRIBUTE_CASE) === 0;\n\tconst is_input = (flags & ELEMENT_IS_INPUT) !== 0;\n\tconst names = Object.keys(attrs);\n\n\touter: for (let i = 0; i < names.length; i++) {\n\t\tname = names[i];\n\t\t// omit functions, internal svelte properties and invalid attribute names\n\t\tif (typeof attrs[name] === 'function') continue;\n\t\tif (name[0] === '$' && name[1] === '$') continue; // faster than name.startsWith('$$')\n\t\tif (name === '' || INVALID_ATTR_NAME_CHAR_REGEX.test(name)) continue;\n\n\t\tvar value = attrs[name];\n\t\tvar lower = name.toLowerCase();\n\n\t\tif (lowercase) name = lower;\n\n\t\t// omit event handler attributes\n\t\tif (lower.length > 2 && lower.startsWith('on')) continue;\n\n\t\tif (is_input) {\n\t\t\tif (name === 'defaultvalue' || name === 'defaultchecked') {\n\t\t\t\t// value/checked takes precedence over defaultValue/defaultChecked\n\t\t\t\tname = name === 'defaultvalue' ? 'value' : 'checked';\n\t\t\t\tif (name in attrs) continue;\n\t\t\t\t// We're checking prior entries as well because \"name in attrs\" is not enough as the attributes may have different casing\n\t\t\t\tfor (let j = 0; j < names.length; j++) {\n\t\t\t\t\tif (names[j].toLowerCase() === name) continue outer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tattr_str += attr(name, value, is_html && is_boolean_attribute(name));\n\t}\n\n\treturn attr_str;\n}\n\n/**\n * @param {Record<string, unknown>[]} props\n * @returns {Record<string, unknown>}\n */\nexport function spread_props(props) {\n\t/** @type {Record<string, unknown>} */\n\tconst merged_props = {};\n\tlet key;\n\n\tfor (let i = 0; i < props.length; i++) {\n\t\tconst obj = props[i];\n\t\tif (obj == null) continue;\n\t\tfor (key of Object.keys(obj)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(obj, key);\n\t\t\tif (desc) {\n\t\t\t\tObject.defineProperty(merged_props, key, desc);\n\t\t\t} else {\n\t\t\t\tmerged_props[key] = obj[key];\n\t\t\t}\n\t\t}\n\t}\n\treturn merged_props;\n}\n\n/**\n * @param {unknown} value\n * @returns {string}\n */\nexport function stringify(value) {\n\treturn typeof value === 'string' ? value : value == null ? '' : value + '';\n}\n\n/** @param {Record<string, string>} style_object */\nfunction style_object_to_string(style_object) {\n\treturn Object.keys(style_object)\n\t\t.filter(/** @param {any} key */ (key) => style_object[key] != null && style_object[key] !== '')\n\t\t.map(/** @param {any} key */ (key) => `${key}: ${escape_html(style_object[key], true)};`)\n\t\t.join(' ');\n}\n\n/**\n * @param {any} value\n * @param {string | undefined} [hash]\n * @param {Record<string, boolean>} [directives]\n */\nexport function attr_class(value, hash, directives) {\n\tvar result = to_class(value, hash, directives);\n\treturn result ? ` class=\"${escape_html(result, true)}\"` : '';\n}\n\n/**\n * @param {any} value\n * @param {Record<string,any>|[Record<string,any>,Record<string,any>]} [directives]\n */\nexport function attr_style(value, directives) {\n\tvar result = to_style(value, directives);\n\treturn result ? ` style=\"${escape_html(result, true)}\"` : '';\n}\n\n/**\n * @template V\n * @param {Record<string, [any, any, any]>} store_values\n * @param {string} store_name\n * @param {Store<V> | null | undefined} store\n * @returns {V}\n */\nexport function store_get(store_values, store_name, store) {\n\tif (DEV) {\n\t\tvalidate_store(store, store_name.slice(1));\n\t}\n\n\t// it could be that someone eagerly updates the store in the instance script, so\n\t// we should only reuse the store value in the template\n\tif (store_name in store_values && store_values[store_name][0] === store) {\n\t\treturn store_values[store_name][2];\n\t}\n\n\tstore_values[store_name]?.[1](); // if store was switched, unsubscribe from old store\n\tstore_values[store_name] = [store, null, undefined];\n\tconst unsub = subscribe_to_store(\n\t\tstore,\n\t\t/** @param {any} v */ (v) => (store_values[store_name][2] = v)\n\t);\n\tstore_values[store_name][1] = unsub;\n\treturn store_values[store_name][2];\n}\n\n/**\n * Sets the new value of a store and returns that value.\n * @template V\n * @param {Store<V>} store\n * @param {V} value\n * @returns {V}\n */\nexport function store_set(store, value) {\n\tstore.set(value);\n\treturn value;\n}\n\n/**\n * Updates a store with a new value.\n * @template V\n * @param {Record<string, [any, any, any]>} store_values\n * @param {string} store_name\n * @param {Store<V>} store\n * @param {any} expression\n */\nexport function store_mutate(store_values, store_name, store, expression) {\n\tstore_set(store, store_get(store_values, store_name, store));\n\treturn expression;\n}\n\n/**\n * @param {Record<string, [any, any, any]>} store_values\n * @param {string} store_name\n * @param {Store<number>} store\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_store(store_values, store_name, store, d = 1) {\n\tlet store_value = store_get(store_values, store_name, store);\n\tstore.set(store_value + d);\n\treturn store_value;\n}\n\n/**\n * @param {Record<string, [any, any, any]>} store_values\n * @param {string} store_name\n * @param {Store<number>} store\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_store_pre(store_values, store_name, store, d = 1) {\n\tconst value = store_get(store_values, store_name, store) + d;\n\tstore.set(value);\n\treturn value;\n}\n\n/** @param {Record<string, [any, any, any]>} store_values */\nexport function unsubscribe_stores(store_values) {\n\tfor (const store_name of Object.keys(store_values)) {\n\t\tstore_values[store_name][1]();\n\t}\n}\n\n/**\n * @param {Renderer} renderer\n * @param {Record<string, any>} $$props\n * @param {string} name\n * @param {Record<string, unknown>} slot_props\n * @param {null | (() => void)} fallback_fn\n * @returns {void}\n */\nexport function slot(renderer, $$props, name, slot_props, fallback_fn) {\n\tvar slot_fn = $$props.$$slots?.[name];\n\t// Interop: Can use snippets to fill slots\n\tif (slot_fn === true) {\n\t\tslot_fn = $$props[name === 'default' ? 'children' : name];\n\t}\n\n\tif (slot_fn !== undefined) {\n\t\tslot_fn(renderer, slot_props);\n\t} else {\n\t\tfallback_fn?.();\n\t}\n}\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string[]} rest\n * @returns {Record<string, unknown>}\n */\nexport function rest_props(props, rest) {\n\t/** @type {Record<string, unknown>} */\n\tconst rest_props = {};\n\tlet key;\n\tfor (key of Object.keys(props)) {\n\t\tif (!rest.includes(key)) {\n\t\t\trest_props[key] = props[key];\n\t\t}\n\t}\n\treturn rest_props;\n}\n\n/**\n * @param {Record<string, unknown>} props\n * @returns {Record<string, unknown>}\n */\nexport function sanitize_props(props) {\n\tconst { children, $$slots, ...sanitized } = props;\n\treturn sanitized;\n}\n\n/**\n * @param {Record<string, any>} props\n * @returns {Record<string, boolean>}\n */\nexport function sanitize_slots(props) {\n\t/** @type {Record<string, boolean>} */\n\tconst sanitized = {};\n\tif (props.children) sanitized.default = true;\n\tfor (const key of Object.keys(props.$$slots || {})) {\n\t\tsanitized[key] = true;\n\t}\n\treturn sanitized;\n}\n\n/**\n * Legacy mode: If the prop has a fallback and is bound in the\n * parent component, propagate the fallback value upwards.\n * @param {Record<string, unknown>} props_parent\n * @param {Record<string, unknown>} props_now\n */\nexport function bind_props(props_parent, props_now) {\n\tfor (const key of Object.keys(props_now)) {\n\t\tconst initial_value = props_parent[key];\n\t\tconst value = props_now[key];\n\t\tif (\n\t\t\tinitial_value === undefined &&\n\t\t\tvalue !== undefined &&\n\t\t\tObject.getOwnPropertyDescriptor(props_parent, key)?.set\n\t\t) {\n\t\t\tprops_parent[key] = value;\n\t\t}\n\t}\n}\n\n/**\n * @template V\n * @param {Renderer} renderer\n * @param {Promise<V>} promise\n * @param {null | (() => void)} pending_fn\n * @param {(value: V) => void} then_fn\n * @returns {void}\n */\nfunction await_block(renderer, promise, pending_fn, then_fn) {\n\tif (is_promise(promise)) {\n\t\trenderer.push(BLOCK_OPEN);\n\t\tpromise.then(null, noop);\n\t\tif (pending_fn !== null) {\n\t\t\tpending_fn();\n\t\t}\n\t} else if (then_fn !== null) {\n\t\trenderer.push(BLOCK_OPEN_ELSE);\n\t\tthen_fn(promise);\n\t}\n}\n\nexport { await_block as await };\n\n/** @param {any} array_like_or_iterator */\nexport function ensure_array_like(array_like_or_iterator) {\n\tif (array_like_or_iterator) {\n\t\treturn array_like_or_iterator.length !== undefined\n\t\t\t? array_like_or_iterator\n\t\t\t: Array.from(array_like_or_iterator);\n\t}\n\treturn [];\n}\n\n/**\n * @template V\n * @param {() => V} get_value\n */\nexport function once(get_value) {\n\tlet value = /** @type {V} */ (UNINITIALIZED);\n\treturn () => {\n\t\tif (value === UNINITIALIZED) {\n\t\t\tvalue = get_value();\n\t\t}\n\t\treturn value;\n\t};\n}\n\n/**\n * Create an unique ID\n * @param {Renderer} renderer\n * @returns {string}\n */\nexport function props_id(renderer) {\n\tconst uid = renderer.global.uid();\n\trenderer.push('<!--$' + uid + '-->');\n\treturn uid;\n}\n\nexport { attr, clsx };\n\nexport { html } from './blocks/html.js';\n\nexport { save } from './context.js';\n\nexport { push_element, pop_element, validate_snippet_args } from './dev.js';\n\nexport { snapshot } from '../shared/clone.js';\n\nexport { fallback, to_array, exclude_from_object } from '../shared/utils.js';\n\nexport {\n\tinvalid_default_snippet,\n\tvalidate_dynamic_element_tag,\n\tvalidate_void_dynamic_element,\n\tprevent_snippet_stringification\n} from '../shared/validate.js';\n\nexport { escape_html as escape };\n\n/**\n * @template T\n * @param {()=>T} fn\n * @returns {(new_value?: T) => (T | void)}\n */\nexport function derived(fn) {\n\t// deriveds created during render are memoized,\n\t// deriveds created outside (e.g. SvelteKit `page` stuff) are not\n\tconst get_value = ssr_context === null ? fn : once(fn);\n\n\t/** @type {T | undefined} */\n\tlet updated_value;\n\n\treturn function (new_value) {\n\t\tif (arguments.length === 0) {\n\t\t\treturn updated_value ?? get_value();\n\t\t}\n\n\t\tupdated_value = new_value;\n\t\treturn updated_value;\n\t};\n}\n\n/**\n * @template {number | bigint} T\n * @param {(value?: T) => T} derived\n * @param {1 | -1} [d]\n * @returns {T}\n */\nexport function update_derived(derived, d = 1) {\n\tconst value = derived();\n\tlet increase = typeof value === 'bigint' ? BigInt(d) : d;\n\t// for some reason TS is mad even if T is always number or bigint\n\tderived(value + /** @type {*} */ (increase));\n\treturn value;\n}\n\n/**\n * @template {number | bigint} T\n * @param {(value?: T) => T} derived\n * @param {1 | -1} [d]\n * @returns {T}\n */\nexport function update_derived_pre(derived, d = 1) {\n\tconst old_value = derived();\n\tlet increase = typeof old_value === 'bigint' ? BigInt(d) : d;\n\t// for some reason TS is mad even if T is always number or bigint\n\tconst value = old_value + /** @type {*} */ (increase);\n\tderived(value);\n\treturn value;\n}\n\n/**\n * @template T\n * @param {()=>T} fn\n */\nexport function async_derived(fn) {\n\treturn Promise.resolve(fn()).then((value) => {\n\t\treturn () => value;\n\t});\n}\n"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],"mappings":"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"}