langchat-widget 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchat-widget.es.js","sources":["../../../node_modules/.pnpm/@vue+shared@3.5.20/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../node_modules/.pnpm/@vue+reactivity@3.5.20/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../node_modules/.pnpm/@vue+runtime-core@3.5.20/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../node_modules/.pnpm/@vue+runtime-dom@3.5.20/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/tailwind-merge@2.6.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../src/components/ui/Button.vue","../src/components/ChatHeader.vue","../src/utils/message-store.ts","../../../node_modules/.pnpm/mdurl@2.0.0/node_modules/mdurl/lib/decode.mjs","../../../node_modules/.pnpm/mdurl@2.0.0/node_modules/mdurl/lib/encode.mjs","../../../node_modules/.pnpm/mdurl@2.0.0/node_modules/mdurl/lib/format.mjs","../../../node_modules/.pnpm/mdurl@2.0.0/node_modules/mdurl/lib/parse.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/properties/Any/regex.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/categories/Cc/regex.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/categories/Cf/regex.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/categories/P/regex.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/categories/S/regex.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/categories/Z/regex.mjs","../../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-html.js","../../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-xml.js","../../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode_codepoint.js","../../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode.js","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/common/utils.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/helpers/parse_link_label.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/helpers/parse_link_destination.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/helpers/parse_link_title.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/renderer.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/ruler.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/token.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_core/state_core.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_core/normalize.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_core/block.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_core/inline.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_core/linkify.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_core/replacements.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_core/smartquotes.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_core/text_join.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/parser_core.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_block/state_block.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_block/table.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_block/code.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_block/fence.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_block/blockquote.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_block/hr.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_block/list.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_block/reference.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/common/html_blocks.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/common/html_re.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_block/html_block.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_block/heading.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_block/lheading.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_block/paragraph.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/parser_block.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/state_inline.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/text.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/linkify.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/newline.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/escape.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/backticks.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/strikethrough.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/emphasis.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/link.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/image.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/autolink.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/html_inline.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/entity.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/rules_inline/fragments_join.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/parser_inline.mjs","../../../node_modules/.pnpm/linkify-it@5.0.0/node_modules/linkify-it/lib/re.mjs","../../../node_modules/.pnpm/linkify-it@5.0.0/node_modules/linkify-it/index.mjs","../../../node_modules/.pnpm/punycode.js@2.3.1/node_modules/punycode.js/punycode.es6.js","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/presets/default.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/presets/zero.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/presets/commonmark.mjs","../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/index.mjs","../src/components/QuestionsSuggestions.vue","../src/components/WelcomeMessage.vue","../src/components/ChatMessages.vue","../src/components/ChatSender.vue","../src/components/Copyright.vue","../src/components/ChatWindow.vue","../src/components/WidgetButton.vue","../src/types/index.ts","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/internal/qs/formats.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/internal/qs/utils.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/internal/qs/stringify.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/version.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/_shims/registry.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/_shims/MultipartBody.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/_shims/web-runtime.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/_shims/index.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/error.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/internal/decoders/line.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/internal/stream-utils.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/streaming.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/uploads.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/core.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/pagination.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resource.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/chat/completions/messages.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/chat/completions/completions.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/chat/chat.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/audio/speech.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/audio/transcriptions.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/audio/translations.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/audio/audio.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/batches.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/lib/EventStream.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/lib/AssistantStream.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/beta/assistants.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/lib/RunnableFunction.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/lib/chatCompletionUtils.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/lib/parser.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/lib/AbstractChatCompletionRunner.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/lib/ChatCompletionRunner.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/_vendor/partial-json-parser/parser.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/lib/ChatCompletionStream.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/beta/chat/completions.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/beta/chat/chat.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/beta/realtime/sessions.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/beta/realtime/realtime.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/beta/threads/messages.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/beta/threads/runs/steps.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/beta/threads/runs/runs.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/beta/threads/threads.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/beta/beta.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/completions.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/containers/files/content.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/containers/files/files.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/containers/containers.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/embeddings.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/evals/runs/output-items.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/evals/runs/runs.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/evals/evals.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/files.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/fine-tuning/methods.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/graders.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/fine-tuning/fine-tuning.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/graders/grader-models.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/graders/graders.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/images.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/models.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/moderations.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/lib/ResponsesParser.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/responses/input-items.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/lib/responses/ResponseStream.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/responses/responses.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/uploads/parts.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/uploads/uploads.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/lib/Util.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/vector-stores/files.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/vector-stores/file-batches.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/resources/vector-stores/vector-stores.mjs","../../../node_modules/.pnpm/openai@4.104.0_encoding@0.1.13_zod@3.25.76/node_modules/openai/index.mjs","../src/utils/openai-client.ts","../src/utils/theme-manager.ts","../src/LangChatBot.ts","../src/utils/error-handler.ts","../src/main.ts"],"sourcesContent":["/**\n* @vue/shared v3.5.20\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str) {\n const map = /* @__PURE__ */ Object.create(null);\n for (const key of str.split(\",\")) map[key] = 1;\n return (val) => val in map;\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction(\n (str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n }\n);\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction(\n (str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n }\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](...arg);\n }\n};\nconst def = (obj, key, value, writable = false) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n writable,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\nfunction genCacheKey(source, options) {\n return source + JSON.stringify(\n options,\n (_, val) => typeof val === \"function\" ? val.toString() : val\n );\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"CACHED\": -1,\n \"-1\": \"CACHED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `CACHED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n start = Math.max(0, Math.min(start, source.length));\n end = Math.max(0, Math.min(end, source.length));\n if (start > end) return \"\";\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n if (!styles) return \"\";\n if (isString(styles)) return styles;\n let ret = \"\";\n for (const key in styles) {\n const value = styles[key];\n if (isString(value) || typeof value === \"number\") {\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props) return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nconst isKnownMathMLAttr = /* @__PURE__ */ makeMap(\n `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \"&quot;\";\n break;\n case 38:\n escaped = \"&amp;\";\n break;\n case 39:\n escaped = \"&#39;\";\n break;\n case 60:\n escaped = \"&lt;\";\n break;\n case 62:\n escaped = \"&gt;\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n return src.replace(commentStripRE, \"\");\n}\nconst cssVarNameEscapeSymbolsRE = /[ !\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~]/g;\nfunction getEscapedCssVarName(key, doubleEscape) {\n return key.replace(\n cssVarNameEscapeSymbolsRE,\n (s) => doubleEscape ? s === '\"' ? '\\\\\\\\\\\\\"' : `\\\\\\\\${s}` : `\\\\${s}`\n );\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length) return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b) return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n return !!(val && val[\"__v_isRef\"] === true);\n};\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (isRef(val)) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nfunction normalizeCssVarValue(value) {\n if (value == null) {\n return \"initial\";\n }\n if (typeof value === \"string\") {\n return value === \"\" ? \" \" : value;\n }\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n console.warn(\n \"[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:\",\n value\n );\n }\n }\n return String(value);\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, cssVarNameEscapeSymbolsRE, def, escapeHtml, escapeHtmlComment, extend, genCacheKey, genPropsAccessExp, generateCodeFrame, getEscapedCssVarName, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownMathMLAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeCssVarValue, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.5.20\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { extend, hasChanged, isArray, isIntegerKey, isSymbol, isMap, hasOwn, makeMap, isObject, capitalize, toRawType, def, isFunction, EMPTY_OBJ, isSet, isPlainObject, remove, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal track `on` calls, allow `on` call multiple times\n */\n this._on = 0;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this._isPaused = false;\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n pause() {\n if (this._active) {\n this._isPaused = true;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].pause();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].pause();\n }\n }\n }\n /**\n * Resumes the effect scope, including all child scopes and effects.\n */\n resume() {\n if (this._active) {\n if (this._isPaused) {\n this._isPaused = false;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].resume();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].resume();\n }\n }\n }\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n if (++this._on === 1) {\n this.prevScope = activeEffectScope;\n activeEffectScope = this;\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n if (this._on > 0 && --this._on === 0) {\n activeEffectScope = this.prevScope;\n this.prevScope = void 0;\n }\n }\n stop(fromParent) {\n if (this._active) {\n this._active = false;\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n this.effects.length = 0;\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n this.cleanups.length = 0;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n this.scopes.length = 0;\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeSub;\nconst EffectFlags = {\n \"ACTIVE\": 1,\n \"1\": \"ACTIVE\",\n \"RUNNING\": 2,\n \"2\": \"RUNNING\",\n \"TRACKING\": 4,\n \"4\": \"TRACKING\",\n \"NOTIFIED\": 8,\n \"8\": \"NOTIFIED\",\n \"DIRTY\": 16,\n \"16\": \"DIRTY\",\n \"ALLOW_RECURSE\": 32,\n \"32\": \"ALLOW_RECURSE\",\n \"PAUSED\": 64,\n \"64\": \"PAUSED\",\n \"EVALUATED\": 128,\n \"128\": \"EVALUATED\"\n};\nconst pausedQueueEffects = /* @__PURE__ */ new WeakSet();\nclass ReactiveEffect {\n constructor(fn) {\n this.fn = fn;\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 1 | 4;\n /**\n * @internal\n */\n this.next = void 0;\n /**\n * @internal\n */\n this.cleanup = void 0;\n this.scheduler = void 0;\n if (activeEffectScope && activeEffectScope.active) {\n activeEffectScope.effects.push(this);\n }\n }\n pause() {\n this.flags |= 64;\n }\n resume() {\n if (this.flags & 64) {\n this.flags &= -65;\n if (pausedQueueEffects.has(this)) {\n pausedQueueEffects.delete(this);\n this.trigger();\n }\n }\n }\n /**\n * @internal\n */\n notify() {\n if (this.flags & 2 && !(this.flags & 32)) {\n return;\n }\n if (!(this.flags & 8)) {\n batch(this);\n }\n }\n run() {\n if (!(this.flags & 1)) {\n return this.fn();\n }\n this.flags |= 2;\n cleanupEffect(this);\n prepareDeps(this);\n const prevEffect = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = this;\n shouldTrack = true;\n try {\n return this.fn();\n } finally {\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub !== this) {\n warn(\n \"Active effect was not restored correctly - this is likely a Vue internal bug.\"\n );\n }\n cleanupDeps(this);\n activeSub = prevEffect;\n shouldTrack = prevShouldTrack;\n this.flags &= -3;\n }\n }\n stop() {\n if (this.flags & 1) {\n for (let link = this.deps; link; link = link.nextDep) {\n removeSub(link);\n }\n this.deps = this.depsTail = void 0;\n cleanupEffect(this);\n this.onStop && this.onStop();\n this.flags &= -2;\n }\n }\n trigger() {\n if (this.flags & 64) {\n pausedQueueEffects.add(this);\n } else if (this.scheduler) {\n this.scheduler();\n } else {\n this.runIfDirty();\n }\n }\n /**\n * @internal\n */\n runIfDirty() {\n if (isDirty(this)) {\n this.run();\n }\n }\n get dirty() {\n return isDirty(this);\n }\n}\nlet batchDepth = 0;\nlet batchedSub;\nlet batchedComputed;\nfunction batch(sub, isComputed = false) {\n sub.flags |= 8;\n if (isComputed) {\n sub.next = batchedComputed;\n batchedComputed = sub;\n return;\n }\n sub.next = batchedSub;\n batchedSub = sub;\n}\nfunction startBatch() {\n batchDepth++;\n}\nfunction endBatch() {\n if (--batchDepth > 0) {\n return;\n }\n if (batchedComputed) {\n let e = batchedComputed;\n batchedComputed = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n e = next;\n }\n }\n let error;\n while (batchedSub) {\n let e = batchedSub;\n batchedSub = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n if (e.flags & 1) {\n try {\n ;\n e.trigger();\n } catch (err) {\n if (!error) error = err;\n }\n }\n e = next;\n }\n }\n if (error) throw error;\n}\nfunction prepareDeps(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n link.version = -1;\n link.prevActiveLink = link.dep.activeLink;\n link.dep.activeLink = link;\n }\n}\nfunction cleanupDeps(sub) {\n let head;\n let tail = sub.depsTail;\n let link = tail;\n while (link) {\n const prev = link.prevDep;\n if (link.version === -1) {\n if (link === tail) tail = prev;\n removeSub(link);\n removeDep(link);\n } else {\n head = link;\n }\n link.dep.activeLink = link.prevActiveLink;\n link.prevActiveLink = void 0;\n link = prev;\n }\n sub.deps = head;\n sub.depsTail = tail;\n}\nfunction isDirty(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {\n return true;\n }\n }\n if (sub._dirty) {\n return true;\n }\n return false;\n}\nfunction refreshComputed(computed) {\n if (computed.flags & 4 && !(computed.flags & 16)) {\n return;\n }\n computed.flags &= -17;\n if (computed.globalVersion === globalVersion) {\n return;\n }\n computed.globalVersion = globalVersion;\n if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) {\n return;\n }\n computed.flags |= 2;\n const dep = computed.dep;\n const prevSub = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = computed;\n shouldTrack = true;\n try {\n prepareDeps(computed);\n const value = computed.fn(computed._value);\n if (dep.version === 0 || hasChanged(value, computed._value)) {\n computed.flags |= 128;\n computed._value = value;\n dep.version++;\n }\n } catch (err) {\n dep.version++;\n throw err;\n } finally {\n activeSub = prevSub;\n shouldTrack = prevShouldTrack;\n cleanupDeps(computed);\n computed.flags &= -3;\n }\n}\nfunction removeSub(link, soft = false) {\n const { dep, prevSub, nextSub } = link;\n if (prevSub) {\n prevSub.nextSub = nextSub;\n link.prevSub = void 0;\n }\n if (nextSub) {\n nextSub.prevSub = prevSub;\n link.nextSub = void 0;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && dep.subsHead === link) {\n dep.subsHead = nextSub;\n }\n if (dep.subs === link) {\n dep.subs = prevSub;\n if (!prevSub && dep.computed) {\n dep.computed.flags &= -5;\n for (let l = dep.computed.deps; l; l = l.nextDep) {\n removeSub(l, true);\n }\n }\n }\n if (!soft && !--dep.sc && dep.map) {\n dep.map.delete(dep.key);\n }\n}\nfunction removeDep(link) {\n const { prevDep, nextDep } = link;\n if (prevDep) {\n prevDep.nextDep = nextDep;\n link.prevDep = void 0;\n }\n if (nextDep) {\n nextDep.prevDep = prevDep;\n link.nextDep = void 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const e = new ReactiveEffect(fn);\n if (options) {\n extend(e, options);\n }\n try {\n e.run();\n } catch (err) {\n e.stop();\n throw err;\n }\n const runner = e.run.bind(e);\n runner.effect = e;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction onEffectCleanup(fn, failSilently = false) {\n if (activeSub instanceof ReactiveEffect) {\n activeSub.cleanup = fn;\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onEffectCleanup() was called when there was no active effect to associate with.`\n );\n }\n}\nfunction cleanupEffect(e) {\n const { cleanup } = e;\n e.cleanup = void 0;\n if (cleanup) {\n const prevSub = activeSub;\n activeSub = void 0;\n try {\n cleanup();\n } finally {\n activeSub = prevSub;\n }\n }\n}\n\nlet globalVersion = 0;\nclass Link {\n constructor(sub, dep) {\n this.sub = sub;\n this.dep = dep;\n this.version = dep.version;\n this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;\n }\n}\nclass Dep {\n // TODO isolatedDeclarations \"__v_skip\"\n constructor(computed) {\n this.computed = computed;\n this.version = 0;\n /**\n * Link between this dep and the current active effect\n */\n this.activeLink = void 0;\n /**\n * Doubly linked list representing the subscribing effects (tail)\n */\n this.subs = void 0;\n /**\n * For object property deps cleanup\n */\n this.map = void 0;\n this.key = void 0;\n /**\n * Subscriber counter\n */\n this.sc = 0;\n /**\n * @internal\n */\n this.__v_skip = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.subsHead = void 0;\n }\n }\n track(debugInfo) {\n if (!activeSub || !shouldTrack || activeSub === this.computed) {\n return;\n }\n let link = this.activeLink;\n if (link === void 0 || link.sub !== activeSub) {\n link = this.activeLink = new Link(activeSub, this);\n if (!activeSub.deps) {\n activeSub.deps = activeSub.depsTail = link;\n } else {\n link.prevDep = activeSub.depsTail;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n }\n addSub(link);\n } else if (link.version === -1) {\n link.version = this.version;\n if (link.nextDep) {\n const next = link.nextDep;\n next.prevDep = link.prevDep;\n if (link.prevDep) {\n link.prevDep.nextDep = next;\n }\n link.prevDep = activeSub.depsTail;\n link.nextDep = void 0;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n if (activeSub.deps === link) {\n activeSub.deps = next;\n }\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub.onTrack) {\n activeSub.onTrack(\n extend(\n {\n effect: activeSub\n },\n debugInfo\n )\n );\n }\n return link;\n }\n trigger(debugInfo) {\n this.version++;\n globalVersion++;\n this.notify(debugInfo);\n }\n notify(debugInfo) {\n startBatch();\n try {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (let head = this.subsHead; head; head = head.nextSub) {\n if (head.sub.onTrigger && !(head.sub.flags & 8)) {\n head.sub.onTrigger(\n extend(\n {\n effect: head.sub\n },\n debugInfo\n )\n );\n }\n }\n }\n for (let link = this.subs; link; link = link.prevSub) {\n if (link.sub.notify()) {\n ;\n link.sub.dep.notify();\n }\n }\n } finally {\n endBatch();\n }\n }\n}\nfunction addSub(link) {\n link.dep.sc++;\n if (link.sub.flags & 4) {\n const computed = link.dep.computed;\n if (computed && !link.dep.subs) {\n computed.flags |= 4 | 16;\n for (let l = computed.deps; l; l = l.nextDep) {\n addSub(l);\n }\n }\n const currentTail = link.dep.subs;\n if (currentTail !== link) {\n link.prevSub = currentTail;\n if (currentTail) currentTail.nextSub = link;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && link.dep.subsHead === void 0) {\n link.dep.subsHead = link;\n }\n link.dep.subs = link;\n }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Object iterate\" : \"\"\n);\nconst MAP_KEY_ITERATE_KEY = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Map keys iterate\" : \"\"\n);\nconst ARRAY_ITERATE_KEY = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Array iterate\" : \"\"\n);\nfunction track(target, type, key) {\n if (shouldTrack && activeSub) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = new Dep());\n dep.map = depsMap;\n dep.key = key;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.track({\n target,\n type,\n key\n });\n } else {\n dep.track();\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n globalVersion++;\n return;\n }\n const run = (dep) => {\n if (dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.trigger({\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n });\n } else {\n dep.trigger();\n }\n }\n };\n startBatch();\n if (type === \"clear\") {\n depsMap.forEach(run);\n } else {\n const targetIsArray = isArray(target);\n const isArrayIndex = targetIsArray && isIntegerKey(key);\n if (targetIsArray && key === \"length\") {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {\n run(dep);\n }\n });\n } else {\n if (key !== void 0 || depsMap.has(void 0)) {\n run(depsMap.get(key));\n }\n if (isArrayIndex) {\n run(depsMap.get(ARRAY_ITERATE_KEY));\n }\n switch (type) {\n case \"add\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isArrayIndex) {\n run(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n run(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n }\n endBatch();\n}\nfunction getDepFromReactive(object, key) {\n const depMap = targetMap.get(object);\n return depMap && depMap.get(key);\n}\n\nfunction reactiveReadArray(array) {\n const raw = toRaw(array);\n if (raw === array) return raw;\n track(raw, \"iterate\", ARRAY_ITERATE_KEY);\n return isShallow(array) ? raw : raw.map(toReactive);\n}\nfunction shallowReadArray(arr) {\n track(arr = toRaw(arr), \"iterate\", ARRAY_ITERATE_KEY);\n return arr;\n}\nconst arrayInstrumentations = {\n __proto__: null,\n [Symbol.iterator]() {\n return iterator(this, Symbol.iterator, toReactive);\n },\n concat(...args) {\n return reactiveReadArray(this).concat(\n ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)\n );\n },\n entries() {\n return iterator(this, \"entries\", (value) => {\n value[1] = toReactive(value[1]);\n return value;\n });\n },\n every(fn, thisArg) {\n return apply(this, \"every\", fn, thisArg, void 0, arguments);\n },\n filter(fn, thisArg) {\n return apply(this, \"filter\", fn, thisArg, (v) => v.map(toReactive), arguments);\n },\n find(fn, thisArg) {\n return apply(this, \"find\", fn, thisArg, toReactive, arguments);\n },\n findIndex(fn, thisArg) {\n return apply(this, \"findIndex\", fn, thisArg, void 0, arguments);\n },\n findLast(fn, thisArg) {\n return apply(this, \"findLast\", fn, thisArg, toReactive, arguments);\n },\n findLastIndex(fn, thisArg) {\n return apply(this, \"findLastIndex\", fn, thisArg, void 0, arguments);\n },\n // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement\n forEach(fn, thisArg) {\n return apply(this, \"forEach\", fn, thisArg, void 0, arguments);\n },\n includes(...args) {\n return searchProxy(this, \"includes\", args);\n },\n indexOf(...args) {\n return searchProxy(this, \"indexOf\", args);\n },\n join(separator) {\n return reactiveReadArray(this).join(separator);\n },\n // keys() iterator only reads `length`, no optimization required\n lastIndexOf(...args) {\n return searchProxy(this, \"lastIndexOf\", args);\n },\n map(fn, thisArg) {\n return apply(this, \"map\", fn, thisArg, void 0, arguments);\n },\n pop() {\n return noTracking(this, \"pop\");\n },\n push(...args) {\n return noTracking(this, \"push\", args);\n },\n reduce(fn, ...args) {\n return reduce(this, \"reduce\", fn, args);\n },\n reduceRight(fn, ...args) {\n return reduce(this, \"reduceRight\", fn, args);\n },\n shift() {\n return noTracking(this, \"shift\");\n },\n // slice could use ARRAY_ITERATE but also seems to beg for range tracking\n some(fn, thisArg) {\n return apply(this, \"some\", fn, thisArg, void 0, arguments);\n },\n splice(...args) {\n return noTracking(this, \"splice\", args);\n },\n toReversed() {\n return reactiveReadArray(this).toReversed();\n },\n toSorted(comparer) {\n return reactiveReadArray(this).toSorted(comparer);\n },\n toSpliced(...args) {\n return reactiveReadArray(this).toSpliced(...args);\n },\n unshift(...args) {\n return noTracking(this, \"unshift\", args);\n },\n values() {\n return iterator(this, \"values\", toReactive);\n }\n};\nfunction iterator(self, method, wrapValue) {\n const arr = shallowReadArray(self);\n const iter = arr[method]();\n if (arr !== self && !isShallow(self)) {\n iter._next = iter.next;\n iter.next = () => {\n const result = iter._next();\n if (result.value) {\n result.value = wrapValue(result.value);\n }\n return result;\n };\n }\n return iter;\n}\nconst arrayProto = Array.prototype;\nfunction apply(self, method, fn, thisArg, wrappedRetFn, args) {\n const arr = shallowReadArray(self);\n const needsWrap = arr !== self && !isShallow(self);\n const methodFn = arr[method];\n if (methodFn !== arrayProto[method]) {\n const result2 = methodFn.apply(self, args);\n return needsWrap ? toReactive(result2) : result2;\n }\n let wrappedFn = fn;\n if (arr !== self) {\n if (needsWrap) {\n wrappedFn = function(item, index) {\n return fn.call(this, toReactive(item), index, self);\n };\n } else if (fn.length > 2) {\n wrappedFn = function(item, index) {\n return fn.call(this, item, index, self);\n };\n }\n }\n const result = methodFn.call(arr, wrappedFn, thisArg);\n return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;\n}\nfunction reduce(self, method, fn, args) {\n const arr = shallowReadArray(self);\n let wrappedFn = fn;\n if (arr !== self) {\n if (!isShallow(self)) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, toReactive(item), index, self);\n };\n } else if (fn.length > 3) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, item, index, self);\n };\n }\n }\n return arr[method](wrappedFn, ...args);\n}\nfunction searchProxy(self, method, args) {\n const arr = toRaw(self);\n track(arr, \"iterate\", ARRAY_ITERATE_KEY);\n const res = arr[method](...args);\n if ((res === -1 || res === false) && isProxy(args[0])) {\n args[0] = toRaw(args[0]);\n return arr[method](...args);\n }\n return res;\n}\nfunction noTracking(self, method, args = []) {\n pauseTracking();\n startBatch();\n const res = toRaw(self)[method].apply(self, args);\n endBatch();\n resetTracking();\n return res;\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nfunction hasOwnProperty(key) {\n if (!isSymbol(key)) key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n if (key === \"__v_skip\") return target[\"__v_skip\"];\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the receiver is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n let fn;\n if (targetIsArray && (fn = arrayInstrumentations[key])) {\n return fn;\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(\n target,\n key,\n // if this is a proxy wrapping a ref, return methods using the raw ref\n // as receiver so that we don't have to call `toRaw` on the ref in all\n // its class methods\n isRef(target) ? target : receiver\n );\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target[key]\n );\n }\n return true;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(\n target,\n key,\n value,\n isRef(target) ? target : receiver\n );\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations(readonly, shallow) {\n const instrumentations = {\n get(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n },\n get size() {\n const target = this[\"__v_raw\"];\n !readonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return target.size;\n },\n has(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n },\n forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n !readonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n }\n };\n extend(\n instrumentations,\n readonly ? {\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\")\n } : {\n add(value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n },\n set(key, value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n },\n delete(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n },\n clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(\n target,\n \"clear\",\n void 0,\n void 0,\n oldTarget\n );\n }\n return result;\n }\n }\n );\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n instrumentations[method] = createIterableMethod(method, readonly, shallow);\n });\n return instrumentations;\n}\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n const instrumentations = createInstrumentations(isReadonly2, shallow);\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n target\n )}`\n );\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (!hasOwn(value, \"__v_skip\") && Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction isRef(r) {\n return r ? r[\"__v_isRef\"] === true : false;\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, isShallow2) {\n this.dep = new Dep();\n this[\"__v_isRef\"] = true;\n this[\"__v_isShallow\"] = false;\n this._rawValue = isShallow2 ? value : toRaw(value);\n this._value = isShallow2 ? value : toReactive(value);\n this[\"__v_isShallow\"] = isShallow2;\n }\n get value() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n });\n } else {\n this.dep.track();\n }\n return this._value;\n }\n set value(newValue) {\n const oldValue = this._rawValue;\n const useDirectValue = this[\"__v_isShallow\"] || isShallow(newValue) || isReadonly(newValue);\n newValue = useDirectValue ? newValue : toRaw(newValue);\n if (hasChanged(newValue, oldValue)) {\n this._rawValue = newValue;\n this._value = useDirectValue ? newValue : toReactive(newValue);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.trigger({\n target: this,\n type: \"set\",\n key: \"value\",\n newValue,\n oldValue\n });\n } else {\n this.dep.trigger();\n }\n }\n }\n}\nfunction triggerRef(ref2) {\n if (ref2.dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n ref2.dep.trigger({\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: ref2._value\n });\n } else {\n ref2.dep.trigger();\n }\n }\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => key === \"__v_raw\" ? target : unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n const dep = this.dep = new Dep();\n const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._value = this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n }\n get value() {\n const val = this._object[this._key];\n return this._value = val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this[\"__v_isRef\"] = true;\n this[\"__v_isReadonly\"] = true;\n this._value = void 0;\n }\n get value() {\n return this._value = this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nclass ComputedRefImpl {\n constructor(fn, setter, isSSR) {\n this.fn = fn;\n this.setter = setter;\n /**\n * @internal\n */\n this._value = void 0;\n /**\n * @internal\n */\n this.dep = new Dep(this);\n /**\n * @internal\n */\n this.__v_isRef = true;\n // TODO isolatedDeclarations \"__v_isReadonly\"\n // A computed is also a subscriber that tracks other deps\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 16;\n /**\n * @internal\n */\n this.globalVersion = globalVersion - 1;\n /**\n * @internal\n */\n this.next = void 0;\n // for backwards compat\n this.effect = this;\n this[\"__v_isReadonly\"] = !setter;\n this.isSSR = isSSR;\n }\n /**\n * @internal\n */\n notify() {\n this.flags |= 16;\n if (!(this.flags & 8) && // avoid infinite self recursion\n activeSub !== this) {\n batch(this, true);\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) ;\n }\n get value() {\n const link = !!(process.env.NODE_ENV !== \"production\") ? this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n }) : this.dep.track();\n refreshComputed(this);\n if (link) {\n link.version = this.dep.version;\n }\n return this._value;\n }\n set value(newValue) {\n if (this.setter) {\n this.setter(newValue);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\"Write operation failed: computed value is readonly\");\n }\n }\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n if (isFunction(getterOrOptions)) {\n getter = getterOrOptions;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.onTrack = debugOptions.onTrack;\n cRef.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\",\n \"IS_REF\": \"__v_isRef\"\n};\n\nconst WatchErrorCodes = {\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\"\n};\nconst INITIAL_WATCHER_VALUE = {};\nconst cleanupMap = /* @__PURE__ */ new WeakMap();\nlet activeWatcher = void 0;\nfunction getCurrentWatcher() {\n return activeWatcher;\n}\nfunction onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {\n if (owner) {\n let cleanups = cleanupMap.get(owner);\n if (!cleanups) cleanupMap.set(owner, cleanups = []);\n cleanups.push(cleanupFn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onWatcherCleanup() was called when there was no active watcher to associate with.`\n );\n }\n}\nfunction watch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, once, scheduler, augmentJob, call } = options;\n const warnInvalidSource = (s) => {\n (options.onWarn || warn)(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const reactiveGetter = (source2) => {\n if (deep) return source2;\n if (isShallow(source2) || deep === false || deep === 0)\n return traverse(source2, 1);\n return traverse(source2);\n };\n let effect;\n let getter;\n let cleanup;\n let boundCleanup;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return call ? call(s, 2) : s();\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = call ? () => call(source, 2) : source;\n } else {\n getter = () => {\n if (cleanup) {\n pauseTracking();\n try {\n cleanup();\n } finally {\n resetTracking();\n }\n }\n const currentEffect = activeWatcher;\n activeWatcher = effect;\n try {\n return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);\n } finally {\n activeWatcher = currentEffect;\n }\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n const depth = deep === true ? Infinity : deep;\n getter = () => traverse(baseGetter(), depth);\n }\n const scope = getCurrentScope();\n const watchHandle = () => {\n effect.stop();\n if (scope && scope.active) {\n remove(scope.effects, effect);\n }\n };\n if (once && cb) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n watchHandle();\n };\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = (immediateFirstRun) => {\n if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {\n if (cleanup) {\n cleanup();\n }\n const currentWatcher = activeWatcher;\n activeWatcher = effect;\n try {\n const args = [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n boundCleanup\n ];\n oldValue = newValue;\n call ? call(cb, 3, args) : (\n // @ts-expect-error\n cb(...args)\n );\n } finally {\n activeWatcher = currentWatcher;\n }\n }\n } else {\n effect.run();\n }\n };\n if (augmentJob) {\n augmentJob(job);\n }\n effect = new ReactiveEffect(getter);\n effect.scheduler = scheduler ? () => scheduler(job, false) : job;\n boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);\n cleanup = effect.onStop = () => {\n const cleanups = cleanupMap.get(effect);\n if (cleanups) {\n if (call) {\n call(cleanups, 4);\n } else {\n for (const cleanup2 of cleanups) cleanup2();\n }\n cleanupMap.delete(effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = options.onTrack;\n effect.onTrigger = options.onTrigger;\n }\n if (cb) {\n if (immediate) {\n job(true);\n } else {\n oldValue = effect.run();\n }\n } else if (scheduler) {\n scheduler(job.bind(null, true), true);\n } else {\n effect.run();\n }\n watchHandle.pause = effect.pause.bind(effect);\n watchHandle.resume = effect.resume.bind(effect);\n watchHandle.stop = watchHandle;\n return watchHandle;\n}\nfunction traverse(value, depth = Infinity, seen) {\n if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n seen = seen || /* @__PURE__ */ new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n depth--;\n if (isRef(value)) {\n traverse(value.value, depth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, seen);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n if (Object.prototype.propertyIsEnumerable.call(value, key)) {\n traverse(value[key], depth, seen);\n }\n }\n }\n return value;\n}\n\nexport { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };\n","/**\n* @vue/runtime-core v3.5.20\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, traverse, shallowRef, readonly, isReactive, ref, isShallow, isReadonly, shallowReadArray, toReadonly, toReactive, shallowReadonly, track, reactive, shallowReactive, trigger, ReactiveEffect, watch as watch$1, customRef, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1 } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, EMPTY_OBJ, isPromise, isArray, NOOP, getGlobalThis, extend, isBuiltInDirective, NO, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, normalizeCssVarValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, camelize, capitalize, isSymbol, isGloballyAllowed, EMPTY_ARR, hyphenate, makeMap, toRawType, hasChanged, looseToNumber, isModelListener, toNumber } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nlet isWarning = false;\nfunction warn$1(msg, ...args) {\n if (isWarning) return;\n isWarning = true;\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n // eslint-disable-next-line no-restricted-syntax\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n isWarning = false;\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\")) return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\",\n \"COMPONENT_UPDATE\": 15,\n \"15\": \"COMPONENT_UPDATE\",\n \"APP_UNMOUNT_CLEANUP\": 16,\n \"16\": \"APP_UNMOUNT_CLEANUP\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush\",\n [15]: \"component update\",\n [16]: \"app unmount cleanup function\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n if (errorHandler) {\n pauseTracking();\n callWithErrorHandling(errorHandler, null, 10, [\n err,\n exposedInstance,\n errorInfo\n ]);\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);\n}\nfunction logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else if (throwInProd) {\n throw err;\n } else {\n console.error(err);\n }\n}\n\nconst queue = [];\nlet flushIndex = -1;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!(job.flags & 1)) {\n const jobId = getId(job);\n const lastJob = queue[queue.length - 1];\n if (!lastJob || // fast path when the job id is larger than the tail\n !(job.flags & 2) && jobId >= getId(lastJob)) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(jobId), 0, job);\n }\n job.flags |= 1;\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!currentFlushPromise) {\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (activePostFlushCbs && cb.id === -1) {\n activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);\n } else if (!(cb.flags & 1)) {\n pendingPostFlushCbs.push(cb);\n cb.flags |= 1;\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = flushIndex + 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.flags & 2) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n if (cb.flags & 4) {\n cb.flags &= -2;\n }\n cb();\n if (!(cb.flags & 4)) {\n cb.flags &= -2;\n }\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n const cb = activePostFlushCbs[postFlushIndex];\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n if (cb.flags & 4) {\n cb.flags &= -2;\n }\n if (!(cb.flags & 8)) cb();\n cb.flags &= -2;\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;\nfunction flushJobs(seen) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && !(job.flags & 8)) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n if (job.flags & 4) {\n job.flags &= ~1;\n }\n callWithErrorHandling(\n job,\n job.i,\n job.i ? 15 : 14\n );\n if (!(job.flags & 4)) {\n job.flags &= ~1;\n }\n }\n }\n } finally {\n for (; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job) {\n job.flags &= -2;\n }\n }\n flushIndex = -1;\n queue.length = 0;\n flushPostFlushCbs(seen);\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n const count = seen.get(fn) || 0;\n if (count > RECURSION_LIMIT) {\n const instance = fn.i;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n }\n seen.set(fn, count + 1);\n return false;\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Map();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n if (!(instance.job.flags & 8)) {\n instance.update();\n }\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record) return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (let i = 0; i < instances.length; i++) {\n const instance = instances[i];\n const oldComp = normalizeClassComponent(instance.type);\n let dirtyInstances = hmrDirtyComponents.get(oldComp);\n if (!dirtyInstances) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set());\n }\n dirtyInstances.add(instance);\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n dirtyInstances.add(instance);\n instance.ceReload(newComp.styles);\n dirtyInstances.delete(instance);\n } else if (instance.parent) {\n queueJob(() => {\n isHmrUpdating = true;\n instance.parent.update();\n isHmrUpdating = false;\n dirtyInstances.delete(instance);\n });\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n if (instance.root.ce && instance !== instance.root) {\n instance.root.ce._removeChildStyle(oldComp);\n }\n }\n queuePostFlushCb(() => {\n hmrDirtyComponents.clear();\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n // eslint-disable-next-line no-restricted-syntax\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx) return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getComponentPublicInstance(currentRenderingInstance);\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst TeleportEndKey = Symbol(\"_vte\");\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTeleportDeferred = (props) => props && (props.defer || props.defer === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n );\n return null;\n } else {\n const target = select(targetSelector);\n if (!!(process.env.NODE_ENV !== \"production\") && !target && !isTeleportDisabled(props)) {\n warn$1(\n `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n );\n }\n return target;\n }\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n warn$1(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n name: \"Teleport\",\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n const {\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n o: { insert, querySelector, createText, createComment }\n } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const mount = (container2, anchor2) => {\n if (shapeFlag & 16) {\n if (parentComponent && parentComponent.isCE) {\n parentComponent.ce._teleportTarget = container2;\n }\n mountChildren(\n children,\n container2,\n anchor2,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const mountToTarget = () => {\n const target = n2.target = resolveTarget(n2.props, querySelector);\n const targetAnchor = prepareAnchor(target, n2, createText, insert);\n if (target) {\n if (namespace !== \"svg\" && isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace !== \"mathml\" && isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (!disabled) {\n mount(target, targetAnchor);\n updateCssVars(n2, false);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n warn$1(\n \"Invalid Teleport target on mount:\",\n target,\n `(${typeof target})`\n );\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n updateCssVars(n2, true);\n }\n if (isTeleportDeferred(n2.props)) {\n n2.el.__isMounted = false;\n queuePostRenderEffect(() => {\n mountToTarget();\n delete n2.el.__isMounted;\n }, parentSuspense);\n } else {\n mountToTarget();\n }\n } else {\n if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {\n queuePostRenderEffect(() => {\n TeleportImpl.process(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n internals\n );\n }, parentSuspense);\n return;\n }\n n2.el = n1.el;\n n2.targetStart = n1.targetStart;\n const mainAnchor = n2.anchor = n1.anchor;\n const target = n2.target = n1.target;\n const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n if (namespace === \"svg\" || isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n currentContainer,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds\n );\n traverseStaticChildren(n1, n2, !!!(process.env.NODE_ENV !== \"production\"));\n } else if (!optimized) {\n patchChildren(\n n1,\n n2,\n currentContainer,\n currentAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n false\n );\n }\n if (disabled) {\n if (!wasDisabled) {\n moveTeleport(\n n2,\n container,\n mainAnchor,\n internals,\n 1\n );\n } else {\n if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n n2.props.to = n1.props.to;\n }\n }\n } else {\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = n2.target = resolveTarget(\n n2.props,\n querySelector\n );\n if (nextTarget) {\n moveTeleport(\n n2,\n nextTarget,\n null,\n internals,\n 0\n );\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Invalid Teleport target on update:\",\n target,\n `(${typeof target})`\n );\n }\n } else if (wasDisabled) {\n moveTeleport(\n n2,\n target,\n targetAnchor,\n internals,\n 1\n );\n }\n }\n updateCssVars(n2, disabled);\n }\n },\n remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const {\n shapeFlag,\n children,\n anchor,\n targetStart,\n targetAnchor,\n target,\n props\n } = vnode;\n if (target) {\n hostRemove(targetStart);\n hostRemove(targetAnchor);\n }\n doRemove && hostRemove(anchor);\n if (shapeFlag & 16) {\n const shouldRemove = doRemove || !isTeleportDisabled(props);\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(\n child,\n parentComponent,\n parentSuspense,\n shouldRemove,\n !!child.dynamicChildren\n );\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n if (moveType === 0) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2;\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n if (!isReorder || isTeleportDisabled(props)) {\n if (shapeFlag & 16) {\n for (let i = 0; i < children.length; i++) {\n move(\n children[i],\n container,\n parentAnchor,\n 2\n );\n }\n }\n }\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n o: { nextSibling, parentNode, querySelector, insert, createText }\n}, hydrateChildren) {\n const target = vnode.target = resolveTarget(\n vnode.props,\n querySelector\n );\n if (target) {\n const disabled = isTeleportDisabled(vnode.props);\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16) {\n if (disabled) {\n vnode.anchor = hydrateChildren(\n nextSibling(node),\n vnode,\n parentNode(node),\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n vnode.targetStart = targetNode;\n vnode.targetAnchor = targetNode && nextSibling(targetNode);\n } else {\n vnode.anchor = nextSibling(node);\n let targetAnchor = targetNode;\n while (targetAnchor) {\n if (targetAnchor && targetAnchor.nodeType === 8) {\n if (targetAnchor.data === \"teleport start anchor\") {\n vnode.targetStart = targetAnchor;\n } else if (targetAnchor.data === \"teleport anchor\") {\n vnode.targetAnchor = targetAnchor;\n target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n targetAnchor = nextSibling(targetAnchor);\n }\n if (!vnode.targetAnchor) {\n prepareAnchor(target, vnode, createText, insert);\n }\n hydrateChildren(\n targetNode && nextSibling(targetNode),\n vnode,\n target,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n }\n updateCssVars(vnode, disabled);\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode, isDisabled) {\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node, anchor;\n if (isDisabled) {\n node = vnode.el;\n anchor = vnode.anchor;\n } else {\n node = vnode.targetStart;\n anchor = vnode.targetAnchor;\n }\n while (node && node !== anchor) {\n if (node.nodeType === 1) node.setAttribute(\"data-v-owner\", ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\nfunction prepareAnchor(target, vnode, createText, insert) {\n const targetStart = vnode.targetStart = createText(\"\");\n const targetAnchor = vnode.targetAnchor = createText(\"\");\n targetStart[TeleportEndKey] = targetAnchor;\n if (target) {\n insert(targetStart, target);\n insert(targetAnchor, target);\n }\n return targetAnchor;\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst recursiveGetSubtree = (instance) => {\n const subTree = instance.subTree;\n return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n const child = findNonCommentChild(children);\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid <transition> mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getInnerChild$1(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n let enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance,\n // #11061, ensure enterHooks is fresh after clone\n (hooks) => enterHooks = hooks\n );\n if (innerChild.type !== Comment) {\n setTransitionHooks(innerChild, enterHooks);\n }\n let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);\n if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {\n let leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\" && innerChild.type !== Comment) {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (!(instance.job.flags & 8)) {\n instance.update();\n }\n delete leavingHooks.afterLeave;\n oldInnerChild = void 0;\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n enterHooks.delayedLeave = () => {\n delayedLeave();\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n };\n } else {\n oldInnerChild = void 0;\n }\n } else if (oldInnerChild) {\n oldInnerChild = void 0;\n }\n return child;\n };\n }\n};\nfunction findNonCommentChild(children) {\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \"<transition> can only be used on a single element or component. Use <transition-group> for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\")) break;\n }\n }\n }\n return child;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance, postClone) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1)) done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el[enterCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el[leaveCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n const hooks2 = resolveTransitionHooks(\n vnode2,\n props,\n state,\n instance,\n postClone\n );\n if (postClone) postClone(hooks2);\n return hooks2;\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getInnerChild$1(vnode) {\n if (!isKeepAlive(vnode)) {\n if (isTeleport(vnode.type) && vnode.children) {\n return findNonCommentChild(vnode.children);\n }\n return vnode;\n }\n if (vnode.component) {\n return vnode.component.subTree;\n }\n const { shapeFlag, children } = vnode;\n if (children) {\n if (shapeFlag & 16) {\n return children[0];\n }\n if (shapeFlag & 32 && isFunction(children.default)) {\n return children.default();\n }\n }\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n vnode.transition = hooks;\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128) keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8236: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nfunction useId() {\n const i = getCurrentInstance();\n if (i) {\n return (i.appContext.config.idPrefix || \"v\") + \"-\" + i.ids[0] + i.ids[1]++;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useId() is called when there is no active component instance to be associated with.`\n );\n }\n return \"\";\n}\nfunction markAsyncBoundary(instance) {\n instance.ids = [instance.ids[0] + instance.ids[2]++ + \"-\", 0, 0];\n}\n\nconst knownTemplateRefs = /* @__PURE__ */ new WeakSet();\nfunction useTemplateRef(key) {\n const i = getCurrentInstance();\n const r = shallowRef(null);\n if (i) {\n const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;\n let desc;\n if (!!(process.env.NODE_ENV !== \"production\") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {\n warn$1(`useTemplateRef('${key}') already exists.`);\n } else {\n Object.defineProperty(refs, key, {\n enumerable: true,\n get: () => r.value,\n set: (val) => r.value = val\n });\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useTemplateRef() is called when there is no active component instance to be associated with.`\n );\n }\n const ret = !!(process.env.NODE_ENV !== \"production\") ? readonly(r) : r;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n knownTemplateRefs.add(ret);\n }\n return ret;\n}\n\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach(\n (r, i) => setRef(\n r,\n oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n parentSuspense,\n vnode,\n isUnmount\n )\n );\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) {\n setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree);\n }\n return;\n }\n const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n warn$1(\n `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n );\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n const setupState = owner.setupState;\n const rawSetupState = toRaw(setupState);\n const canSetSetupRef = setupState === EMPTY_OBJ ? NO : (key) => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {\n warn$1(\n `Template ref \"${key}\" used on a non-ref value. It will not work in the production build.`\n );\n }\n if (knownTemplateRefs.has(rawSetupState[key])) {\n return false;\n }\n }\n return hasOwn(rawSetupState, key);\n };\n const canSetRef = (ref2) => {\n return !!!(process.env.NODE_ENV !== \"production\") || !knownTemplateRefs.has(ref2);\n };\n if (oldRef != null && oldRef !== ref) {\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (canSetSetupRef(oldRef)) {\n setupState[oldRef] = null;\n }\n } else if (isRef(oldRef)) {\n if (canSetRef(oldRef)) {\n oldRef.value = null;\n }\n const oldRawRefAtom = oldRawRef;\n if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12, [value, refs]);\n } else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : canSetRef(ref) || !rawRef.k ? ref.value : refs[rawRef.k];\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n } else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (canSetSetupRef(ref)) {\n setupState[ref] = refs[ref];\n }\n } else {\n const newVal = [refValue];\n if (canSetRef(ref)) {\n ref.value = newVal;\n }\n if (rawRef.k) refs[rawRef.k] = newVal;\n }\n } else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n } else if (_isString) {\n refs[ref] = value;\n if (canSetSetupRef(ref)) {\n setupState[ref] = value;\n }\n } else if (_isRef) {\n if (canSetRef(ref)) {\n ref.value = value;\n }\n if (rawRef.k) refs[rawRef.k] = value;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n };\n if (value) {\n doSet.id = -1;\n queuePostRenderEffect(doSet, parentSuspense);\n } else {\n doSet();\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n }\n}\n\nlet hasLoggedMismatchError = false;\nconst logMismatchError = () => {\n if (hasLoggedMismatchError) {\n return;\n }\n console.error(\"Hydration completed but contains mismatches.\");\n hasLoggedMismatchError = true;\n};\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n if (container.nodeType !== 1) return void 0;\n if (isSVGContainer(container)) return \"svg\";\n if (isMathMLContainer(container)) return \"mathml\";\n return void 0;\n};\nconst isComment = (node) => node.nodeType === 8;\nfunction createHydrationFunctions(rendererInternals) {\n const {\n mt: mountComponent,\n p: patch,\n o: {\n patchProp,\n createText,\n nextSibling,\n parentNode,\n remove,\n insert,\n createComment\n }\n } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n );\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const isFragmentStart = isComment(node) && node.data === \"[\";\n const onMismatch = () => handleMismatch(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n isFragmentStart\n );\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n def(node, \"__vnode\", vnode, true);\n def(node, \"__vueParentComponent\", parentComponent, true);\n }\n if (patchFlag === -2) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3) {\n if (vnode.children === \"\") {\n insert(vnode.el = createText(\"\"), parentNode(node), node);\n nextNode = node;\n } else {\n nextNode = onMismatch();\n }\n } else {\n if (node.data !== vnode.children) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text mismatch in`,\n node.parentNode,\n `\n - rendered on server: ${JSON.stringify(\n node.data\n )}\n - expected on client: ${JSON.stringify(vnode.children)}`\n );\n logMismatchError();\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (isTemplateNode(node)) {\n nextNode = nextSibling(node);\n replaceNode(\n vnode.el = node.content.firstChild,\n node,\n parentComponent\n );\n } else if (domType !== 8 || isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 || domType === 3) {\n nextNode = node;\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n } else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateFragment(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n break;\n default:\n if (shapeFlag & 1) {\n if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateElement(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n } else if (shapeFlag & 6) {\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n if (isFragmentStart) {\n nextNode = locateClosingAnchor(node);\n } else if (isComment(node) && node.data === \"teleport start\") {\n nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n } else {\n nextNode = nextSibling(node);\n }\n mountComponent(\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n optimized\n );\n if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n } else {\n subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n } else if (shapeFlag & 64) {\n if (domType !== 8) {\n nextNode = onMismatch();\n } else {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateChildren\n );\n }\n } else if (shapeFlag & 128) {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n getContainerType(parentNode(node)),\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateNode\n );\n } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n const forcePatch = type === \"input\" || type === \"option\";\n if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n }\n let needCallTransitionHooks = false;\n if (isTemplateNode(el)) {\n needCallTransitionHooks = needTransition(\n null,\n // no need check parentSuspense in hydration\n transition\n ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n const content = el.content.firstChild;\n if (needCallTransitionHooks) {\n const cls = content.getAttribute(\"class\");\n if (cls) content.$cls = cls;\n transition.beforeEnter(content);\n }\n replaceNode(content, el, parentComponent);\n vnode.el = el = content;\n }\n if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(\n el.firstChild,\n vnode,\n el,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n let hasWarned = false;\n while (next) {\n if (!isMismatchAllowed(el, 1 /* CHILDREN */)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n el,\n `\nServer rendered element contains more child nodes than client vdom.`\n );\n hasWarned = true;\n }\n logMismatchError();\n }\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n } else if (shapeFlag & 8) {\n let clientText = vnode.children;\n if (clientText[0] === \"\\n\" && (el.tagName === \"PRE\" || el.tagName === \"TEXTAREA\")) {\n clientText = clientText.slice(1);\n }\n if (el.textContent !== clientText) {\n if (!isMismatchAllowed(el, 0 /* TEXT */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text content mismatch on`,\n el,\n `\n - rendered on server: ${el.textContent}\n - expected on client: ${vnode.children}`\n );\n logMismatchError();\n }\n el.textContent = vnode.children;\n }\n }\n if (props) {\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ || forcePatch || !optimized || patchFlag & (16 | 32)) {\n const isCustomElement = el.tagName.includes(\"-\");\n for (const key in props) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && // #11189 skip if this node has directives that have created hooks\n // as it could have mutated the DOM in any possible way\n !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) {\n logMismatchError();\n }\n if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n key[0] === \".\" || isCustomElement) {\n patchProp(el, key, null, props[key], void 0, parentComponent);\n }\n }\n } else if (props.onClick) {\n patchProp(\n el,\n \"onClick\",\n null,\n props.onClick,\n void 0,\n parentComponent\n );\n } else if (patchFlag & 4 && isReactive(props.style)) {\n for (const key in props.style) props.style[key];\n }\n }\n let vnodeHooks;\n if (vnodeHooks = props && props.onVnodeBeforeMount) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n }, parentSuspense);\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n const isText = vnode.type === Text;\n if (node) {\n if (isText && !optimized) {\n if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {\n insert(\n createText(\n node.data.slice(vnode.children.length)\n ),\n container,\n nextSibling(node)\n );\n node.data = vnode.children;\n }\n }\n node = hydrateNode(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n } else if (isText && !vnode.children) {\n insert(vnode.el = createText(\"\"), container);\n } else {\n if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n container,\n `\nServer rendered element contains fewer child nodes than client vdom.`\n );\n hasWarned = true;\n }\n logMismatchError();\n }\n patch(\n null,\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(\n nextSibling(node),\n vnode,\n container,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n if (next && isComment(next) && next.data === \"]\") {\n return nextSibling(vnode.anchor = next);\n } else {\n logMismatchError();\n insert(vnode.anchor = createComment(`]`), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration node mismatch:\n- rendered on server:`,\n node,\n node.nodeType === 3 ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n `\n- expected on client:`,\n vnode.type\n );\n logMismatchError();\n }\n vnode.el = null;\n if (isFragment) {\n const end = locateClosingAnchor(node);\n while (true) {\n const next2 = nextSibling(node);\n if (next2 && next2 !== end) {\n remove(next2);\n } else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(\n null,\n vnode,\n container,\n next,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n if (parentComponent) {\n parentComponent.vnode.el = vnode.el;\n updateHOCHostEl(parentComponent, vnode.el);\n }\n return next;\n };\n const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === open) match++;\n if (node.data === close) {\n if (match === 0) {\n return nextSibling(node);\n } else {\n match--;\n }\n }\n }\n }\n return node;\n };\n const replaceNode = (newNode, oldNode, parentComponent) => {\n const parentNode2 = oldNode.parentNode;\n if (parentNode2) {\n parentNode2.replaceChild(newNode, oldNode);\n }\n let parent = parentComponent;\n while (parent) {\n if (parent.vnode.el === oldNode) {\n parent.vnode.el = parent.subTree.el = newNode;\n }\n parent = parent.parent;\n }\n };\n const isTemplateNode = (node) => {\n return node.nodeType === 1 && node.tagName === \"TEMPLATE\";\n };\n return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue, vnode, instance) {\n let mismatchType;\n let mismatchKey;\n let actual;\n let expected;\n if (key === \"class\") {\n if (el.$cls) {\n actual = el.$cls;\n delete el.$cls;\n } else {\n actual = el.getAttribute(\"class\");\n }\n expected = normalizeClass(clientValue);\n if (!isSetEqual(toClassSet(actual || \"\"), toClassSet(expected))) {\n mismatchType = 2 /* CLASS */;\n mismatchKey = `class`;\n }\n } else if (key === \"style\") {\n actual = el.getAttribute(\"style\") || \"\";\n expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n const actualMap = toStyleMap(actual);\n const expectedMap = toStyleMap(expected);\n if (vnode.dirs) {\n for (const { dir, value } of vnode.dirs) {\n if (dir.name === \"show\" && !value) {\n expectedMap.set(\"display\", \"none\");\n }\n }\n }\n if (instance) {\n resolveCssVars(instance, vnode, expectedMap);\n }\n if (!isMapEqual(actualMap, expectedMap)) {\n mismatchType = 3 /* STYLE */;\n mismatchKey = \"style\";\n }\n } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n if (isBooleanAttr(key)) {\n actual = el.hasAttribute(key);\n expected = includeBooleanAttr(clientValue);\n } else if (clientValue == null) {\n actual = el.hasAttribute(key);\n expected = false;\n } else {\n if (el.hasAttribute(key)) {\n actual = el.getAttribute(key);\n } else if (key === \"value\" && el.tagName === \"TEXTAREA\") {\n actual = el.value;\n } else {\n actual = false;\n }\n expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;\n }\n if (actual !== expected) {\n mismatchType = 4 /* ATTRIBUTE */;\n mismatchKey = key;\n }\n }\n if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) {\n const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`;\n const postSegment = `\n - rendered on server: ${format(actual)}\n - expected on client: ${format(expected)}\n Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n You should fix the source of the mismatch.`;\n {\n warn$1(preSegment, el, postSegment);\n }\n return true;\n }\n return false;\n}\nfunction toClassSet(str) {\n return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const s of a) {\n if (!b.has(s)) {\n return false;\n }\n }\n return true;\n}\nfunction toStyleMap(str) {\n const styleMap = /* @__PURE__ */ new Map();\n for (const item of str.split(\";\")) {\n let [key, value] = item.split(\":\");\n key = key.trim();\n value = value && value.trim();\n if (key && value) {\n styleMap.set(key, value);\n }\n }\n return styleMap;\n}\nfunction isMapEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, value] of a) {\n if (value !== b.get(key)) {\n return false;\n }\n }\n return true;\n}\nfunction resolveCssVars(instance, vnode, expectedMap) {\n const root = instance.subTree;\n if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {\n const cssVars = instance.getCssVars();\n for (const key in cssVars) {\n const value = normalizeCssVarValue(cssVars[key]);\n expectedMap.set(`--${getEscapedCssVarName(key, false)}`, value);\n }\n }\n if (vnode === root && instance.parent) {\n resolveCssVars(instance.parent, instance.vnode, expectedMap);\n }\n}\nconst allowMismatchAttr = \"data-allow-mismatch\";\nconst MismatchTypeString = {\n [0 /* TEXT */]: \"text\",\n [1 /* CHILDREN */]: \"children\",\n [2 /* CLASS */]: \"class\",\n [3 /* STYLE */]: \"style\",\n [4 /* ATTRIBUTE */]: \"attribute\"\n};\nfunction isMismatchAllowed(el, allowedType) {\n if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) {\n while (el && !el.hasAttribute(allowMismatchAttr)) {\n el = el.parentElement;\n }\n }\n const allowedAttr = el && el.getAttribute(allowMismatchAttr);\n if (allowedAttr == null) {\n return false;\n } else if (allowedAttr === \"\") {\n return true;\n } else {\n const list = allowedAttr.split(\",\");\n if (allowedType === 0 /* TEXT */ && list.includes(\"children\")) {\n return true;\n }\n return list.includes(MismatchTypeString[allowedType]);\n }\n}\n\nconst requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));\nconst cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));\nconst hydrateOnIdle = (timeout = 1e4) => (hydrate) => {\n const id = requestIdleCallback(hydrate, { timeout });\n return () => cancelIdleCallback(id);\n};\nfunction elementIsVisibleInViewport(el) {\n const { top, left, bottom, right } = el.getBoundingClientRect();\n const { innerHeight, innerWidth } = window;\n return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);\n}\nconst hydrateOnVisible = (opts) => (hydrate, forEach) => {\n const ob = new IntersectionObserver((entries) => {\n for (const e of entries) {\n if (!e.isIntersecting) continue;\n ob.disconnect();\n hydrate();\n break;\n }\n }, opts);\n forEach((el) => {\n if (!(el instanceof Element)) return;\n if (elementIsVisibleInViewport(el)) {\n hydrate();\n ob.disconnect();\n return false;\n }\n ob.observe(el);\n });\n return () => ob.disconnect();\n};\nconst hydrateOnMediaQuery = (query) => (hydrate) => {\n if (query) {\n const mql = matchMedia(query);\n if (mql.matches) {\n hydrate();\n } else {\n mql.addEventListener(\"change\", hydrate, { once: true });\n return () => mql.removeEventListener(\"change\", hydrate);\n }\n }\n};\nconst hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {\n if (isString(interactions)) interactions = [interactions];\n let hasHydrated = false;\n const doHydrate = (e) => {\n if (!hasHydrated) {\n hasHydrated = true;\n teardown();\n hydrate();\n e.target.dispatchEvent(new e.constructor(e.type, e));\n }\n };\n const teardown = () => {\n forEach((el) => {\n for (const i of interactions) {\n el.removeEventListener(i, doHydrate);\n }\n });\n };\n forEach((el) => {\n for (const i of interactions) {\n el.addEventListener(i, doHydrate, { once: true });\n }\n });\n return teardown;\n};\nfunction forEachElement(node, cb) {\n if (isComment(node) && node.data === \"[\") {\n let depth = 1;\n let next = node.nextSibling;\n while (next) {\n if (next.nodeType === 1) {\n const result = cb(next);\n if (result === false) {\n break;\n }\n } else if (isComment(next)) {\n if (next.data === \"]\") {\n if (--depth === 0) break;\n } else if (next.data === \"[\") {\n depth++;\n }\n }\n next = next.nextSibling;\n }\n } else {\n cb(node);\n }\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n hydrate: hydrateStrategy,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n __asyncHydrate(el, instance, hydrate) {\n let patched = false;\n (instance.bu || (instance.bu = [])).push(() => patched = true);\n const performHydrate = () => {\n if (patched) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.`\n );\n }\n return;\n }\n hydrate();\n };\n const doHydrate = hydrateStrategy ? () => {\n const teardown = hydrateStrategy(\n performHydrate,\n (cb) => forEachElement(el, cb)\n );\n if (teardown) {\n (instance.bum || (instance.bum = [])).push(teardown);\n }\n } : performHydrate;\n if (resolvedComp) {\n doHydrate();\n } else {\n load().then(() => !instance.isUnmounted && doHydrate());\n }\n },\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n markAsyncBoundary(instance);\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.update();\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n invalidateMount(instance2.m);\n invalidateMount(instance2.a);\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n if (!!(process.env.NODE_ENV !== \"production\") && true) {\n instance2.__keepAliveStorageContainer = storageContainer;\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && !filter(name)) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (cached && (!current || !isSameVNodeType(cached, current))) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n if (isSuspense(instance.subTree.type)) {\n queuePostRenderEffect(() => {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }, instance.subTree.suspense);\n } else {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return current = null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n if (vnode.type === Comment) {\n current = null;\n return vnode;\n }\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n vnode.shapeFlag &= -257;\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n pattern.lastIndex = 0;\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= -257;\n vnode.shapeFlag &= -513;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n injectHook(lifecycle, (...args) => hook(...args), target);\n }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\n \"bu\"\n);\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\n \"bum\"\n);\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\n \"sp\"\n);\nconst onRenderTriggered = createHook(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n const sourceIsArray = isArray(source);\n if (sourceIsArray || isString(source)) {\n const sourceIsReactiveArray = sourceIsArray && isReactive(source);\n let needsWrap = false;\n let isReadonlySource = false;\n if (sourceIsReactiveArray) {\n needsWrap = !isShallow(source);\n isReadonlySource = isReadonly(source);\n source = shallowReadArray(source);\n }\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(\n needsWrap ? isReadonlySource ? toReadonly(toReactive(source[i])) : toReactive(source[i]) : source[i],\n i,\n void 0,\n cached && cached[i]\n );\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res) res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {\n if (name !== \"default\") props.name = name;\n return openBlock(), createBlock(\n Fragment,\n null,\n [createVNode(\"slot\", props, fallback && fallback())],\n 64\n );\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key;\n const rendered = createBlock(\n Fragment,\n {\n key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content\n (!validSlotContent && fallback ? \"_fb\" : \"\")\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i) return null;\n if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $host: (i) => i.ce,\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n return false;\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n data[key] = value;\n return true;\n } else if (hasOwn(instance.props, key)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n return false;\n }\n if (key[0] === \"$\" && key.slice(1) in instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Attempting to mutate public property \"${key}\". Properties starting with $ are reserved and readonly.`\n );\n return false;\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && key in instance.appContext.config.globalProperties) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n value\n });\n } else {\n ctx[key] = value;\n }\n }\n return true;\n },\n has({\n _: { data, setupState, accessCache, ctx, appContext, propsOptions, type }\n }, key) {\n let normalizedProps, cssModules;\n return !!(accessCache[key] || data !== EMPTY_OBJ && key[0] !== \"$\" && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key) || (cssModules = type.__cssModules) && cssModules[key]);\n },\n defineProperty(target, key, descriptor) {\n if (descriptor.get != null) {\n target._.accessCache[key] = 0;\n } else if (hasOwn(descriptor, \"value\")) {\n this.set(target, key, descriptor.value, null);\n }\n return Reflect.defineProperty(target, key, descriptor);\n }\n};\nif (!!(process.env.NODE_ENV !== \"production\") && true) {\n PublicInstanceProxyHandlers.ownKeys = (target) => {\n warn$1(\n `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`\n );\n return Reflect.ownKeys(target);\n };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend({}, PublicInstanceProxyHandlers, {\n get(target, key) {\n if (key === Symbol.unscopables) {\n return;\n }\n return PublicInstanceProxyHandlers.get(target, key, target);\n },\n has(_, key) {\n const has = key[0] !== \"_\" && !isGloballyAllowed(key);\n if (!!(process.env.NODE_ENV !== \"production\") && !has && PublicInstanceProxyHandlers.has(_, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} should not start with _ which is a reserved prefix for Vue internals.`\n );\n }\n return has;\n }\n});\nfunction createDevRenderContext(instance) {\n const target = {};\n Object.defineProperty(target, `_`, {\n configurable: true,\n enumerable: false,\n get: () => instance\n });\n Object.keys(publicPropertiesMap).forEach((key) => {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get: () => publicPropertiesMap[key](instance),\n // intercepted by the proxy so no need for implementation,\n // but needed to prevent set errors\n set: NOOP\n });\n });\n return target;\n}\nfunction exposePropsOnRenderContext(instance) {\n const {\n ctx,\n propsOptions: [propsOptions]\n } = instance;\n if (propsOptions) {\n Object.keys(propsOptions).forEach((key) => {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => instance.props[key],\n set: NOOP\n });\n });\n }\n}\nfunction exposeSetupStateOnRenderContext(instance) {\n const { ctx, setupState } = instance;\n Object.keys(toRaw(setupState)).forEach((key) => {\n if (!setupState.__isScriptSetup) {\n if (isReservedPrefix(key[0])) {\n warn$1(\n `setup() return property ${JSON.stringify(\n key\n )} should not start with \"$\" or \"_\" which are reserved prefixes for Vue internals.`\n );\n return;\n }\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => setupState[key],\n set: NOOP\n });\n }\n });\n}\n\nconst warnRuntimeUsage = (method) => warn$1(\n `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`\n);\nfunction defineProps() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineProps`);\n }\n return null;\n}\nfunction defineEmits() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineEmits`);\n }\n return null;\n}\nfunction defineExpose(exposed) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineExpose`);\n }\n}\nfunction defineOptions(options) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineOptions`);\n }\n}\nfunction defineSlots() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineSlots`);\n }\n return null;\n}\nfunction defineModel() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(\"defineModel\");\n }\n}\nfunction withDefaults(props, defaults) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`withDefaults`);\n }\n return null;\n}\nfunction useSlots() {\n return getContext(\"useSlots\").slots;\n}\nfunction useAttrs() {\n return getContext(\"useAttrs\").attrs;\n}\nfunction getContext(calledFunctionName) {\n const i = getCurrentInstance();\n if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n warn$1(`${calledFunctionName}() called without active instance.`);\n }\n return i.setupContext || (i.setupContext = createSetupContext(i));\n}\nfunction normalizePropsOrEmits(props) {\n return isArray(props) ? props.reduce(\n (normalized, p) => (normalized[p] = null, normalized),\n {}\n ) : props;\n}\nfunction mergeDefaults(raw, defaults) {\n const props = normalizePropsOrEmits(raw);\n for (const key in defaults) {\n if (key.startsWith(\"__skip\")) continue;\n let opt = props[key];\n if (opt) {\n if (isArray(opt) || isFunction(opt)) {\n opt = props[key] = { type: opt, default: defaults[key] };\n } else {\n opt.default = defaults[key];\n }\n } else if (opt === null) {\n opt = props[key] = { default: defaults[key] };\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`props default key \"${key}\" has no corresponding declaration.`);\n }\n if (opt && defaults[`__skip_${key}`]) {\n opt.skipFactory = true;\n }\n }\n return props;\n}\nfunction mergeModels(a, b) {\n if (!a || !b) return a || b;\n if (isArray(a) && isArray(b)) return a.concat(b);\n return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));\n}\nfunction createPropsRestProxy(props, excludedKeys) {\n const ret = {};\n for (const key in props) {\n if (!excludedKeys.includes(key)) {\n Object.defineProperty(ret, key, {\n enumerable: true,\n get: () => props[key]\n });\n }\n }\n return ret;\n}\nfunction withAsyncContext(getAwaitable) {\n const ctx = getCurrentInstance();\n if (!!(process.env.NODE_ENV !== \"production\") && !ctx) {\n warn$1(\n `withAsyncContext called without active current instance. This is likely a bug.`\n );\n }\n let awaitable = getAwaitable();\n unsetCurrentInstance();\n if (isPromise(awaitable)) {\n awaitable = awaitable.catch((e) => {\n setCurrentInstance(ctx);\n throw e;\n });\n }\n return [awaitable, () => setCurrentInstance(ctx)];\n}\n\nfunction createDuplicateChecker() {\n const cache = /* @__PURE__ */ Object.create(null);\n return (type, key) => {\n if (cache[key]) {\n warn$1(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n } else {\n cache[key] = type;\n }\n };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n const options = resolveMergedOptions(instance);\n const publicThis = instance.proxy;\n const ctx = instance.ctx;\n shouldCacheAccess = false;\n if (options.beforeCreate) {\n callHook(options.beforeCreate, instance, \"bc\");\n }\n const {\n // state\n data: dataOptions,\n computed: computedOptions,\n methods,\n watch: watchOptions,\n provide: provideOptions,\n inject: injectOptions,\n // lifecycle\n created,\n beforeMount,\n mounted,\n beforeUpdate,\n updated,\n activated,\n deactivated,\n beforeDestroy,\n beforeUnmount,\n destroyed,\n unmounted,\n render,\n renderTracked,\n renderTriggered,\n errorCaptured,\n serverPrefetch,\n // public API\n expose,\n inheritAttrs,\n // assets\n components,\n directives,\n filters\n } = options;\n const checkDuplicateProperties = !!(process.env.NODE_ENV !== \"production\") ? createDuplicateChecker() : null;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const [propsOptions] = instance.propsOptions;\n if (propsOptions) {\n for (const key in propsOptions) {\n checkDuplicateProperties(\"Props\" /* PROPS */, key);\n }\n }\n }\n if (injectOptions) {\n resolveInjections(injectOptions, ctx, checkDuplicateProperties);\n }\n if (methods) {\n for (const key in methods) {\n const methodHandler = methods[key];\n if (isFunction(methodHandler)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n Object.defineProperty(ctx, key, {\n value: methodHandler.bind(publicThis),\n configurable: true,\n enumerable: true,\n writable: true\n });\n } else {\n ctx[key] = methodHandler.bind(publicThis);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n checkDuplicateProperties(\"Methods\" /* METHODS */, key);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. Did you reference the function correctly?`\n );\n }\n }\n }\n if (dataOptions) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(dataOptions)) {\n warn$1(\n `The data option must be a function. Plain object usage is no longer supported.`\n );\n }\n const data = dataOptions.call(publicThis, publicThis);\n if (!!(process.env.NODE_ENV !== \"production\") && isPromise(data)) {\n warn$1(\n `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`\n );\n }\n if (!isObject(data)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`data() should return an object.`);\n } else {\n instance.data = reactive(data);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (const key in data) {\n checkDuplicateProperties(\"Data\" /* DATA */, key);\n if (!isReservedPrefix(key[0])) {\n Object.defineProperty(ctx, key, {\n configurable: true,\n enumerable: true,\n get: () => data[key],\n set: NOOP\n });\n }\n }\n }\n }\n }\n shouldCacheAccess = true;\n if (computedOptions) {\n for (const key in computedOptions) {\n const opt = computedOptions[key];\n const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n if (!!(process.env.NODE_ENV !== \"production\") && get === NOOP) {\n warn$1(`Computed property \"${key}\" has no getter.`);\n }\n const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn$1(\n `Write operation failed: computed property \"${key}\" is readonly.`\n );\n } : NOOP;\n const c = computed({\n get,\n set\n });\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => c.value,\n set: (v) => c.value = v\n });\n if (!!(process.env.NODE_ENV !== \"production\")) {\n checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\n }\n }\n }\n if (watchOptions) {\n for (const key in watchOptions) {\n createWatcher(watchOptions[key], ctx, publicThis, key);\n }\n }\n if (provideOptions) {\n const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n Reflect.ownKeys(provides).forEach((key) => {\n provide(key, provides[key]);\n });\n }\n if (created) {\n callHook(created, instance, \"c\");\n }\n function registerLifecycleHook(register, hook) {\n if (isArray(hook)) {\n hook.forEach((_hook) => register(_hook.bind(publicThis)));\n } else if (hook) {\n register(hook.bind(publicThis));\n }\n }\n registerLifecycleHook(onBeforeMount, beforeMount);\n registerLifecycleHook(onMounted, mounted);\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n registerLifecycleHook(onUpdated, updated);\n registerLifecycleHook(onActivated, activated);\n registerLifecycleHook(onDeactivated, deactivated);\n registerLifecycleHook(onErrorCaptured, errorCaptured);\n registerLifecycleHook(onRenderTracked, renderTracked);\n registerLifecycleHook(onRenderTriggered, renderTriggered);\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n registerLifecycleHook(onUnmounted, unmounted);\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\n if (isArray(expose)) {\n if (expose.length) {\n const exposed = instance.exposed || (instance.exposed = {});\n expose.forEach((key) => {\n Object.defineProperty(exposed, key, {\n get: () => publicThis[key],\n set: (val) => publicThis[key] = val,\n enumerable: true\n });\n });\n } else if (!instance.exposed) {\n instance.exposed = {};\n }\n }\n if (render && instance.render === NOOP) {\n instance.render = render;\n }\n if (inheritAttrs != null) {\n instance.inheritAttrs = inheritAttrs;\n }\n if (components) instance.components = components;\n if (directives) instance.directives = directives;\n if (serverPrefetch) {\n markAsyncBoundary(instance);\n }\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {\n if (isArray(injectOptions)) {\n injectOptions = normalizeInject(injectOptions);\n }\n for (const key in injectOptions) {\n const opt = injectOptions[key];\n let injected;\n if (isObject(opt)) {\n if (\"default\" in opt) {\n injected = inject(\n opt.from || key,\n opt.default,\n true\n );\n } else {\n injected = inject(opt.from || key);\n }\n } else {\n injected = inject(opt);\n }\n if (isRef(injected)) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => injected.value,\n set: (v) => injected.value = v\n });\n } else {\n ctx[key] = injected;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n checkDuplicateProperties(\"Inject\" /* INJECT */, key);\n }\n }\n}\nfunction callHook(hook, instance, type) {\n callWithAsyncErrorHandling(\n isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),\n instance,\n type\n );\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n let getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n if (isString(raw)) {\n const handler = ctx[raw];\n if (isFunction(handler)) {\n {\n watch(getter, handler);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid watch handler specified by key \"${raw}\"`, handler);\n }\n } else if (isFunction(raw)) {\n {\n watch(getter, raw.bind(publicThis));\n }\n } else if (isObject(raw)) {\n if (isArray(raw)) {\n raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n } else {\n const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n if (isFunction(handler)) {\n watch(getter, handler, raw);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n }\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid watch option: \"${key}\"`, raw);\n }\n}\nfunction resolveMergedOptions(instance) {\n const base = instance.type;\n const { mixins, extends: extendsOptions } = base;\n const {\n mixins: globalMixins,\n optionsCache: cache,\n config: { optionMergeStrategies }\n } = instance.appContext;\n const cached = cache.get(base);\n let resolved;\n if (cached) {\n resolved = cached;\n } else if (!globalMixins.length && !mixins && !extendsOptions) {\n {\n resolved = base;\n }\n } else {\n resolved = {};\n if (globalMixins.length) {\n globalMixins.forEach(\n (m) => mergeOptions(resolved, m, optionMergeStrategies, true)\n );\n }\n mergeOptions(resolved, base, optionMergeStrategies);\n }\n if (isObject(base)) {\n cache.set(base, resolved);\n }\n return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n const { mixins, extends: extendsOptions } = from;\n if (extendsOptions) {\n mergeOptions(to, extendsOptions, strats, true);\n }\n if (mixins) {\n mixins.forEach(\n (m) => mergeOptions(to, m, strats, true)\n );\n }\n for (const key in from) {\n if (asMixin && key === \"expose\") {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `\"expose\" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`\n );\n } else {\n const strat = internalOptionMergeStrats[key] || strats && strats[key];\n to[key] = strat ? strat(to[key], from[key]) : from[key];\n }\n }\n return to;\n}\nconst internalOptionMergeStrats = {\n data: mergeDataFn,\n props: mergeEmitsOrPropsOptions,\n emits: mergeEmitsOrPropsOptions,\n // objects\n methods: mergeObjectOptions,\n computed: mergeObjectOptions,\n // lifecycle\n beforeCreate: mergeAsArray,\n created: mergeAsArray,\n beforeMount: mergeAsArray,\n mounted: mergeAsArray,\n beforeUpdate: mergeAsArray,\n updated: mergeAsArray,\n beforeDestroy: mergeAsArray,\n beforeUnmount: mergeAsArray,\n destroyed: mergeAsArray,\n unmounted: mergeAsArray,\n activated: mergeAsArray,\n deactivated: mergeAsArray,\n errorCaptured: mergeAsArray,\n serverPrefetch: mergeAsArray,\n // assets\n components: mergeObjectOptions,\n directives: mergeObjectOptions,\n // watch\n watch: mergeWatchOptions,\n // provide / inject\n provide: mergeDataFn,\n inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n if (!from) {\n return to;\n }\n if (!to) {\n return from;\n }\n return function mergedDataFn() {\n return (extend)(\n isFunction(to) ? to.call(this, this) : to,\n isFunction(from) ? from.call(this, this) : from\n );\n };\n}\nfunction mergeInject(to, from) {\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n if (isArray(raw)) {\n const res = {};\n for (let i = 0; i < raw.length; i++) {\n res[raw[i]] = raw[i];\n }\n return res;\n }\n return raw;\n}\nfunction mergeAsArray(to, from) {\n return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;\n}\nfunction mergeEmitsOrPropsOptions(to, from) {\n if (to) {\n if (isArray(to) && isArray(from)) {\n return [.../* @__PURE__ */ new Set([...to, ...from])];\n }\n return extend(\n /* @__PURE__ */ Object.create(null),\n normalizePropsOrEmits(to),\n normalizePropsOrEmits(from != null ? from : {})\n );\n } else {\n return from;\n }\n}\nfunction mergeWatchOptions(to, from) {\n if (!to) return from;\n if (!from) return to;\n const merged = extend(/* @__PURE__ */ Object.create(null), to);\n for (const key in from) {\n merged[key] = mergeAsArray(to[key], from[key]);\n }\n return merged;\n}\n\nfunction createAppContext() {\n return {\n app: null,\n config: {\n isNativeTag: NO,\n performance: false,\n globalProperties: {},\n optionMergeStrategies: {},\n errorHandler: void 0,\n warnHandler: void 0,\n compilerOptions: {}\n },\n mixins: [],\n components: {},\n directives: {},\n provides: /* @__PURE__ */ Object.create(null),\n optionsCache: /* @__PURE__ */ new WeakMap(),\n propsCache: /* @__PURE__ */ new WeakMap(),\n emitsCache: /* @__PURE__ */ new WeakMap()\n };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction(rootComponent)) {\n rootComponent = extend({}, rootComponent);\n }\n if (rootProps != null && !isObject(rootProps)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`root props passed to app.mount() must be an object.`);\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = /* @__PURE__ */ new WeakSet();\n const pluginCleanupFns = [];\n let isMounted = false;\n const app = context.app = {\n _uid: uid$1++,\n _component: rootComponent,\n _props: rootProps,\n _container: null,\n _context: context,\n _instance: null,\n version,\n get config() {\n return context.config;\n },\n set config(v) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `app.config cannot be replaced. Modify individual options instead.`\n );\n }\n },\n use(plugin, ...options) {\n if (installedPlugins.has(plugin)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`Plugin has already been applied to target app.`);\n } else if (plugin && isFunction(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options);\n } else if (isFunction(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `A plugin must either be a function or an object with an \"install\" function.`\n );\n }\n return app;\n },\n mixin(mixin) {\n if (__VUE_OPTIONS_API__) {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Mixin has already been applied to target app\" + (mixin.name ? `: ${mixin.name}` : \"\")\n );\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Mixins are only available in builds supporting Options API\");\n }\n return app;\n },\n component(name, component) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateComponentName(name, context.config);\n }\n if (!component) {\n return context.components[name];\n }\n if (!!(process.env.NODE_ENV !== \"production\") && context.components[name]) {\n warn$1(`Component \"${name}\" has already been registered in target app.`);\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateDirectiveName(name);\n }\n if (!directive) {\n return context.directives[name];\n }\n if (!!(process.env.NODE_ENV !== \"production\") && context.directives[name]) {\n warn$1(`Directive \"${name}\" has already been registered in target app.`);\n }\n context.directives[name] = directive;\n return app;\n },\n mount(rootContainer, isHydrate, namespace) {\n if (!isMounted) {\n if (!!(process.env.NODE_ENV !== \"production\") && rootContainer.__vue_app__) {\n warn$1(\n `There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling \\`app.unmount()\\` first.`\n );\n }\n const vnode = app._ceVNode || createVNode(rootComponent, rootProps);\n vnode.appContext = context;\n if (namespace === true) {\n namespace = \"svg\";\n } else if (namespace === false) {\n namespace = void 0;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n context.reload = () => {\n const cloned = cloneVNode(vnode);\n cloned.el = null;\n render(cloned, rootContainer, namespace);\n };\n }\n if (isHydrate && hydrate) {\n hydrate(vnode, rootContainer);\n } else {\n render(vnode, rootContainer, namespace);\n }\n isMounted = true;\n app._container = rootContainer;\n rootContainer.__vue_app__ = app;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n app._instance = vnode.component;\n devtoolsInitApp(app, version);\n }\n return getComponentPublicInstance(vnode.component);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \\`const createMyApp = () => createApp(App)\\``\n );\n }\n },\n onUnmount(cleanupFn) {\n if (!!(process.env.NODE_ENV !== \"production\") && typeof cleanupFn !== \"function\") {\n warn$1(\n `Expected function as first argument to app.onUnmount(), but got ${typeof cleanupFn}`\n );\n }\n pluginCleanupFns.push(cleanupFn);\n },\n unmount() {\n if (isMounted) {\n callWithAsyncErrorHandling(\n pluginCleanupFns,\n app._instance,\n 16\n );\n render(null, app._container);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n app._instance = null;\n devtoolsUnmountApp(app);\n }\n delete app._container.__vue_app__;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Cannot unmount an app that is not mounted.`);\n }\n },\n provide(key, value) {\n if (!!(process.env.NODE_ENV !== \"production\") && key in context.provides) {\n if (hasOwn(context.provides, key)) {\n warn$1(\n `App already provides property with key \"${String(key)}\". It will be overwritten with the new value.`\n );\n } else {\n warn$1(\n `App already provides property with key \"${String(key)}\" inherited from its parent element. It will be overwritten with the new value.`\n );\n }\n }\n context.provides[key] = value;\n return app;\n },\n runWithContext(fn) {\n const lastApp = currentApp;\n currentApp = app;\n try {\n return fn();\n } finally {\n currentApp = lastApp;\n }\n }\n };\n return app;\n };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`provide() can only be used inside setup().`);\n }\n } else {\n let provides = currentInstance.provides;\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n const instance = getCurrentInstance();\n if (instance || currentApp) {\n let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;\n if (provides && key in provides) {\n return provides[key];\n } else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`injection \"${String(key)}\" not found.`);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`inject() can only be used inside setup() or functional components.`);\n }\n}\nfunction hasInjectionContext() {\n return !!(getCurrentInstance() || currentApp);\n}\n\nconst internalObjectProto = {};\nconst createInternalObject = () => Object.create(internalObjectProto);\nconst isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;\n\nfunction initProps(instance, rawProps, isStateful, isSSR = false) {\n const props = {};\n const attrs = createInternalObject();\n instance.propsDefaults = /* @__PURE__ */ Object.create(null);\n setFullProps(instance, rawProps, props, attrs);\n for (const key in instance.propsOptions[0]) {\n if (!(key in props)) {\n props[key] = void 0;\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateProps(rawProps || {}, props, instance);\n }\n if (isStateful) {\n instance.props = isSSR ? props : shallowReactive(props);\n } else {\n if (!instance.type.props) {\n instance.props = attrs;\n } else {\n instance.props = props;\n }\n }\n instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n while (instance) {\n if (instance.type.__hmrId) return true;\n instance = instance.parent;\n }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n const {\n props,\n attrs,\n vnode: { patchFlag }\n } = instance;\n const rawCurrentProps = toRaw(props);\n const [options] = instance.propsOptions;\n let hasAttrsChanged = false;\n if (\n // always force full diff in dev\n // - #1942 if hmr is enabled with sfc component\n // - vite#872 non-sfc component used by sfc component\n !(!!(process.env.NODE_ENV !== \"production\") && isInHmrContext(instance)) && (optimized || patchFlag > 0) && !(patchFlag & 16)\n ) {\n if (patchFlag & 8) {\n const propsToUpdate = instance.vnode.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n let key = propsToUpdate[i];\n if (isEmitListener(instance.emitsOptions, key)) {\n continue;\n }\n const value = rawProps[key];\n if (options) {\n if (hasOwn(attrs, key)) {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n } else {\n const camelizedKey = camelize(key);\n props[camelizedKey] = resolvePropValue(\n options,\n rawCurrentProps,\n camelizedKey,\n value,\n instance,\n false\n );\n }\n } else {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n } else {\n if (setFullProps(instance, rawProps, props, attrs)) {\n hasAttrsChanged = true;\n }\n let kebabKey;\n for (const key in rawCurrentProps) {\n if (!rawProps || // for camelCase\n !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case\n // and converted to camelCase (#955)\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {\n if (options) {\n if (rawPrevProps && // for camelCase\n (rawPrevProps[key] !== void 0 || // for kebab-case\n rawPrevProps[kebabKey] !== void 0)) {\n props[key] = resolvePropValue(\n options,\n rawCurrentProps,\n key,\n void 0,\n instance,\n true\n );\n }\n } else {\n delete props[key];\n }\n }\n }\n if (attrs !== rawCurrentProps) {\n for (const key in attrs) {\n if (!rawProps || !hasOwn(rawProps, key) && true) {\n delete attrs[key];\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (hasAttrsChanged) {\n trigger(instance.attrs, \"set\", \"\");\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateProps(rawProps || {}, props, instance);\n }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n const [options, needCastKeys] = instance.propsOptions;\n let hasAttrsChanged = false;\n let rawCastValues;\n if (rawProps) {\n for (let key in rawProps) {\n if (isReservedProp(key)) {\n continue;\n }\n const value = rawProps[key];\n let camelKey;\n if (options && hasOwn(options, camelKey = camelize(key))) {\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n props[camelKey] = value;\n } else {\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n }\n } else if (!isEmitListener(instance.emitsOptions, key)) {\n if (!(key in attrs) || value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (needCastKeys) {\n const rawCurrentProps = toRaw(props);\n const castValues = rawCastValues || EMPTY_OBJ;\n for (let i = 0; i < needCastKeys.length; i++) {\n const key = needCastKeys[i];\n props[key] = resolvePropValue(\n options,\n rawCurrentProps,\n key,\n castValues[key],\n instance,\n !hasOwn(castValues, key)\n );\n }\n }\n return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n const opt = options[key];\n if (opt != null) {\n const hasDefault = hasOwn(opt, \"default\");\n if (hasDefault && value === void 0) {\n const defaultValue = opt.default;\n if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {\n const { propsDefaults } = instance;\n if (key in propsDefaults) {\n value = propsDefaults[key];\n } else {\n const reset = setCurrentInstance(instance);\n value = propsDefaults[key] = defaultValue.call(\n null,\n props\n );\n reset();\n }\n } else {\n value = defaultValue;\n }\n if (instance.ce) {\n instance.ce._setProp(key, value);\n }\n }\n if (opt[0 /* shouldCast */]) {\n if (isAbsent && !hasDefault) {\n value = false;\n } else if (opt[1 /* shouldCastTrue */] && (value === \"\" || value === hyphenate(key))) {\n value = true;\n }\n }\n }\n return value;\n}\nconst mixinPropsCache = /* @__PURE__ */ new WeakMap();\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n const cache = __VUE_OPTIONS_API__ && asMixin ? mixinPropsCache : appContext.propsCache;\n const cached = cache.get(comp);\n if (cached) {\n return cached;\n }\n const raw = comp.props;\n const normalized = {};\n const needCastKeys = [];\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendProps = (raw2) => {\n hasExtends = true;\n const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n extend(normalized, props);\n if (keys) needCastKeys.push(...keys);\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendProps);\n }\n if (comp.extends) {\n extendProps(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendProps);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, EMPTY_ARR);\n }\n return EMPTY_ARR;\n }\n if (isArray(raw)) {\n for (let i = 0; i < raw.length; i++) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isString(raw[i])) {\n warn$1(`props must be strings when using array syntax.`, raw[i]);\n }\n const normalizedKey = camelize(raw[i]);\n if (validatePropName(normalizedKey)) {\n normalized[normalizedKey] = EMPTY_OBJ;\n }\n }\n } else if (raw) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(raw)) {\n warn$1(`invalid props options`, raw);\n }\n for (const key in raw) {\n const normalizedKey = camelize(key);\n if (validatePropName(normalizedKey)) {\n const opt = raw[key];\n const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt);\n const propType = prop.type;\n let shouldCast = false;\n let shouldCastTrue = true;\n if (isArray(propType)) {\n for (let index = 0; index < propType.length; ++index) {\n const type = propType[index];\n const typeName = isFunction(type) && type.name;\n if (typeName === \"Boolean\") {\n shouldCast = true;\n break;\n } else if (typeName === \"String\") {\n shouldCastTrue = false;\n }\n }\n } else {\n shouldCast = isFunction(propType) && propType.name === \"Boolean\";\n }\n prop[0 /* shouldCast */] = shouldCast;\n prop[1 /* shouldCastTrue */] = shouldCastTrue;\n if (shouldCast || hasOwn(prop, \"default\")) {\n needCastKeys.push(normalizedKey);\n }\n }\n }\n }\n const res = [normalized, needCastKeys];\n if (isObject(comp)) {\n cache.set(comp, res);\n }\n return res;\n}\nfunction validatePropName(key) {\n if (key[0] !== \"$\" && !isReservedProp(key)) {\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid prop name: \"${key}\" is a reserved property.`);\n }\n return false;\n}\nfunction getType(ctor) {\n if (ctor === null) {\n return \"null\";\n }\n if (typeof ctor === \"function\") {\n return ctor.name || \"\";\n } else if (typeof ctor === \"object\") {\n const name = ctor.constructor && ctor.constructor.name;\n return name || \"\";\n }\n return \"\";\n}\nfunction validateProps(rawProps, props, instance) {\n const resolvedValues = toRaw(props);\n const options = instance.propsOptions[0];\n const camelizePropsKey = Object.keys(rawProps).map((key) => camelize(key));\n for (const key in options) {\n let opt = options[key];\n if (opt == null) continue;\n validateProp(\n key,\n resolvedValues[key],\n opt,\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(resolvedValues) : resolvedValues,\n !camelizePropsKey.includes(key)\n );\n }\n}\nfunction validateProp(name, value, prop, props, isAbsent) {\n const { type, required, validator, skipCheck } = prop;\n if (required && isAbsent) {\n warn$1('Missing required prop: \"' + name + '\"');\n return;\n }\n if (value == null && !required) {\n return;\n }\n if (type != null && type !== true && !skipCheck) {\n let isValid = false;\n const types = isArray(type) ? type : [type];\n const expectedTypes = [];\n for (let i = 0; i < types.length && !isValid; i++) {\n const { valid, expectedType } = assertType(value, types[i]);\n expectedTypes.push(expectedType || \"\");\n isValid = valid;\n }\n if (!isValid) {\n warn$1(getInvalidTypeMessage(name, value, expectedTypes));\n return;\n }\n }\n if (validator && !validator(value, props)) {\n warn$1('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n }\n}\nconst isSimpleType = /* @__PURE__ */ makeMap(\n \"String,Number,Boolean,Function,Symbol,BigInt\"\n);\nfunction assertType(value, type) {\n let valid;\n const expectedType = getType(type);\n if (expectedType === \"null\") {\n valid = value === null;\n } else if (isSimpleType(expectedType)) {\n const t = typeof value;\n valid = t === expectedType.toLowerCase();\n if (!valid && t === \"object\") {\n valid = value instanceof type;\n }\n } else if (expectedType === \"Object\") {\n valid = isObject(value);\n } else if (expectedType === \"Array\") {\n valid = isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid,\n expectedType\n };\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n if (expectedTypes.length === 0) {\n return `Prop type [] for prop \"${name}\" won't match anything. Did you mean to use type Array instead?`;\n }\n let message = `Invalid prop: type check failed for prop \"${name}\". Expected ${expectedTypes.map(capitalize).join(\" | \")}`;\n const expectedType = expectedTypes[0];\n const receivedType = toRawType(value);\n const expectedValue = styleValue(value, expectedType);\n const receivedValue = styleValue(value, receivedType);\n if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {\n message += ` with value ${expectedValue}`;\n }\n message += `, got ${receivedType} `;\n if (isExplicable(receivedType)) {\n message += `with value ${receivedValue}.`;\n }\n return message;\n}\nfunction styleValue(value, type) {\n if (type === \"String\") {\n return `\"${value}\"`;\n } else if (type === \"Number\") {\n return `${Number(value)}`;\n } else {\n return `${value}`;\n }\n}\nfunction isExplicable(type) {\n const explicitTypes = [\"string\", \"number\", \"boolean\"];\n return explicitTypes.some((elem) => type.toLowerCase() === elem);\n}\nfunction isBoolean(...args) {\n return args.some((elem) => elem.toLowerCase() === \"boolean\");\n}\n\nconst isInternalKey = (key) => key === \"_\" || key === \"_ctx\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n if (rawSlot._n) {\n return rawSlot;\n }\n const normalized = withCtx((...args) => {\n if (!!(process.env.NODE_ENV !== \"production\") && currentInstance && !(ctx === null && currentRenderingInstance) && !(ctx && ctx.root !== currentInstance.root)) {\n warn$1(\n `Slot \"${key}\" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`\n );\n }\n return normalizeSlotValue(rawSlot(...args));\n }, ctx);\n normalized._c = false;\n return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n const ctx = rawSlots._ctx;\n for (const key in rawSlots) {\n if (isInternalKey(key)) continue;\n const value = rawSlots[key];\n if (isFunction(value)) {\n slots[key] = normalizeSlot(key, value, ctx);\n } else if (value != null) {\n if (!!(process.env.NODE_ENV !== \"production\") && true) {\n warn$1(\n `Non-function value encountered for slot \"${key}\". Prefer function slots for better performance.`\n );\n }\n const normalized = normalizeSlotValue(value);\n slots[key] = () => normalized;\n }\n }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n if (!!(process.env.NODE_ENV !== \"production\") && !isKeepAlive(instance.vnode) && true) {\n warn$1(\n `Non-function value encountered for default slot. Prefer function slots for better performance.`\n );\n }\n const normalized = normalizeSlotValue(children);\n instance.slots.default = () => normalized;\n};\nconst assignSlots = (slots, children, optimized) => {\n for (const key in children) {\n if (optimized || !isInternalKey(key)) {\n slots[key] = children[key];\n }\n }\n};\nconst initSlots = (instance, children, optimized) => {\n const slots = instance.slots = createInternalObject();\n if (instance.vnode.shapeFlag & 32) {\n const type = children._;\n if (type) {\n assignSlots(slots, children, optimized);\n if (optimized) {\n def(slots, \"_\", type, true);\n }\n } else {\n normalizeObjectSlots(children, slots);\n }\n } else if (children) {\n normalizeVNodeSlots(instance, children);\n }\n};\nconst updateSlots = (instance, children, optimized) => {\n const { vnode, slots } = instance;\n let needDeletionCheck = true;\n let deletionComparisonTarget = EMPTY_OBJ;\n if (vnode.shapeFlag & 32) {\n const type = children._;\n if (type) {\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n assignSlots(slots, children, optimized);\n trigger(instance, \"set\", \"$slots\");\n } else if (optimized && type === 1) {\n needDeletionCheck = false;\n } else {\n assignSlots(slots, children, optimized);\n }\n } else {\n needDeletionCheck = !children.$stable;\n normalizeObjectSlots(children, slots);\n }\n deletionComparisonTarget = children;\n } else if (children) {\n normalizeVNodeSlots(instance, children);\n deletionComparisonTarget = { default: 1 };\n }\n if (needDeletionCheck) {\n for (const key in slots) {\n if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {\n delete slots[key];\n }\n }\n }\n};\n\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n perf.mark(`vue-${type}-${instance.uid}`);\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction endMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n const startTag = `vue-${type}-${instance.uid}`;\n const endTag = startTag + `:end`;\n const measureName = `<${formatComponentName(instance, instance.type)}> ${type}`;\n perf.mark(endTag);\n perf.measure(measureName, startTag, endTag);\n perf.clearMeasures(measureName);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction isSupported() {\n if (supported !== void 0) {\n return supported;\n }\n if (typeof window !== \"undefined\" && window.performance) {\n supported = true;\n perf = window.performance;\n } else {\n supported = false;\n }\n return supported;\n}\n\nfunction initFeatureFlags() {\n const needWarn = [];\n if (typeof __VUE_OPTIONS_API__ !== \"boolean\") {\n !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_OPTIONS_API__`);\n getGlobalThis().__VUE_OPTIONS_API__ = true;\n }\n if (typeof __VUE_PROD_DEVTOOLS__ !== \"boolean\") {\n !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n }\n if (typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ !== \"boolean\") {\n !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_HYDRATION_MISMATCH_DETAILS__`);\n getGlobalThis().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ = false;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && needWarn.length) {\n const multi = needWarn.length > 1;\n console.warn(\n `Feature flag${multi ? `s` : ``} ${needWarn.join(\", \")} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle.\n\nFor more details, see https://link.vuejs.org/feature-flags.`\n );\n }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense ;\nfunction createRenderer(options) {\n return baseCreateRenderer(options);\n}\nfunction createHydrationRenderer(options) {\n return baseCreateRenderer(options, createHydrationFunctions);\n}\nfunction baseCreateRenderer(options, createHydrationFns) {\n {\n initFeatureFlags();\n }\n const target = getGlobalThis();\n target.__VUE__ = true;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n }\n const {\n insert: hostInsert,\n remove: hostRemove,\n patchProp: hostPatchProp,\n createElement: hostCreateElement,\n createText: hostCreateText,\n createComment: hostCreateComment,\n setText: hostSetText,\n setElementText: hostSetElementText,\n parentNode: hostParentNode,\n nextSibling: hostNextSibling,\n setScopeId: hostSetScopeId = NOOP,\n insertStaticContent: hostInsertStaticContent\n } = options;\n const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!(process.env.NODE_ENV !== \"production\") && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n if (n1 === n2) {\n return;\n }\n if (n1 && !isSameVNodeType(n1, n2)) {\n anchor = getNextHostNode(n1);\n unmount(n1, parentComponent, parentSuspense, true);\n n1 = null;\n }\n if (n2.patchFlag === -2) {\n optimized = false;\n n2.dynamicChildren = null;\n }\n const { type, ref, shapeFlag } = n2;\n switch (type) {\n case Text:\n processText(n1, n2, container, anchor);\n break;\n case Comment:\n processCommentNode(n1, n2, container, anchor);\n break;\n case Static:\n if (n1 == null) {\n mountStaticNode(n2, container, anchor, namespace);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n patchStaticNode(n1, n2, container, namespace);\n }\n break;\n case Fragment:\n processFragment(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n break;\n default:\n if (shapeFlag & 1) {\n processElement(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else if (shapeFlag & 6) {\n processComponent(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else if (shapeFlag & 64) {\n type.process(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n internals\n );\n } else if (shapeFlag & 128) {\n type.process(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n internals\n );\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid VNode type:\", type, `(${typeof type})`);\n }\n }\n if (ref != null && parentComponent) {\n setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n } else if (ref == null && n1 && n1.ref != null) {\n setRef(n1.ref, null, parentSuspense, n1, true);\n }\n };\n const processText = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert(\n n2.el = hostCreateText(n2.children),\n container,\n anchor\n );\n } else {\n const el = n2.el = n1.el;\n if (n2.children !== n1.children) {\n hostSetText(el, n2.children);\n }\n }\n };\n const processCommentNode = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert(\n n2.el = hostCreateComment(n2.children || \"\"),\n container,\n anchor\n );\n } else {\n n2.el = n1.el;\n }\n };\n const mountStaticNode = (n2, container, anchor, namespace) => {\n [n2.el, n2.anchor] = hostInsertStaticContent(\n n2.children,\n container,\n anchor,\n namespace,\n n2.el,\n n2.anchor\n );\n };\n const patchStaticNode = (n1, n2, container, namespace) => {\n if (n2.children !== n1.children) {\n const anchor = hostNextSibling(n1.anchor);\n removeStaticNode(n1);\n [n2.el, n2.anchor] = hostInsertStaticContent(\n n2.children,\n container,\n anchor,\n namespace\n );\n } else {\n n2.el = n1.el;\n n2.anchor = n1.anchor;\n }\n };\n const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostInsert(el, container, nextSibling);\n el = next;\n }\n hostInsert(anchor, container, nextSibling);\n };\n const removeStaticNode = ({ el, anchor }) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostRemove(el);\n el = next;\n }\n hostRemove(anchor);\n };\n const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n if (n2.type === \"svg\") {\n namespace = \"svg\";\n } else if (n2.type === \"math\") {\n namespace = \"mathml\";\n }\n if (n1 == null) {\n mountElement(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n patchElement(\n n1,\n n2,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n let el;\n let vnodeHook;\n const { props, shapeFlag, transition, dirs } = vnode;\n el = vnode.el = hostCreateElement(\n vnode.type,\n namespace,\n props && props.is,\n props\n );\n if (shapeFlag & 8) {\n hostSetElementText(el, vnode.children);\n } else if (shapeFlag & 16) {\n mountChildren(\n vnode.children,\n el,\n null,\n parentComponent,\n parentSuspense,\n resolveChildrenNamespace(vnode, namespace),\n slotScopeIds,\n optimized\n );\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n }\n setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n if (props) {\n for (const key in props) {\n if (key !== \"value\" && !isReservedProp(key)) {\n hostPatchProp(el, key, null, props[key], namespace, parentComponent);\n }\n }\n if (\"value\" in props) {\n hostPatchProp(el, \"value\", null, props.value, namespace);\n }\n if (vnodeHook = props.onVnodeBeforeMount) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n def(el, \"__vnode\", vnode, true);\n def(el, \"__vueParentComponent\", parentComponent, true);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n }\n const needCallTransitionHooks = needTransition(parentSuspense, transition);\n if (needCallTransitionHooks) {\n transition.beforeEnter(el);\n }\n hostInsert(el, container, anchor);\n if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n }, parentSuspense);\n }\n };\n const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n if (scopeId) {\n hostSetScopeId(el, scopeId);\n }\n if (slotScopeIds) {\n for (let i = 0; i < slotScopeIds.length; i++) {\n hostSetScopeId(el, slotScopeIds[i]);\n }\n }\n if (parentComponent) {\n let subTree = parentComponent.subTree;\n if (!!(process.env.NODE_ENV !== \"production\") && subTree.patchFlag > 0 && subTree.patchFlag & 2048) {\n subTree = filterSingleRoot(subTree.children) || subTree;\n }\n if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) {\n const parentVNode = parentComponent.vnode;\n setScopeId(\n el,\n parentVNode,\n parentVNode.scopeId,\n parentVNode.slotScopeIds,\n parentComponent.parent\n );\n }\n }\n };\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {\n for (let i = start; i < children.length; i++) {\n const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n patch(\n null,\n child,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n const el = n2.el = n1.el;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n el.__vnode = n2;\n }\n let { patchFlag, dynamicChildren, dirs } = n2;\n patchFlag |= n1.patchFlag & 16;\n const oldProps = n1.props || EMPTY_OBJ;\n const newProps = n2.props || EMPTY_OBJ;\n let vnodeHook;\n parentComponent && toggleRecurse(parentComponent, false);\n if (vnodeHook = newProps.onVnodeBeforeUpdate) {\n invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n }\n if (dirs) {\n invokeDirectiveHook(n2, n1, parentComponent, \"beforeUpdate\");\n }\n parentComponent && toggleRecurse(parentComponent, true);\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) {\n hostSetElementText(el, \"\");\n }\n if (dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n el,\n parentComponent,\n parentSuspense,\n resolveChildrenNamespace(n2, namespace),\n slotScopeIds\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n traverseStaticChildren(n1, n2);\n }\n } else if (!optimized) {\n patchChildren(\n n1,\n n2,\n el,\n null,\n parentComponent,\n parentSuspense,\n resolveChildrenNamespace(n2, namespace),\n slotScopeIds,\n false\n );\n }\n if (patchFlag > 0) {\n if (patchFlag & 16) {\n patchProps(el, oldProps, newProps, parentComponent, namespace);\n } else {\n if (patchFlag & 2) {\n if (oldProps.class !== newProps.class) {\n hostPatchProp(el, \"class\", null, newProps.class, namespace);\n }\n }\n if (patchFlag & 4) {\n hostPatchProp(el, \"style\", oldProps.style, newProps.style, namespace);\n }\n if (patchFlag & 8) {\n const propsToUpdate = n2.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n const key = propsToUpdate[i];\n const prev = oldProps[key];\n const next = newProps[key];\n if (next !== prev || key === \"value\") {\n hostPatchProp(el, key, prev, next, namespace, parentComponent);\n }\n }\n }\n }\n if (patchFlag & 1) {\n if (n1.children !== n2.children) {\n hostSetElementText(el, n2.children);\n }\n }\n } else if (!optimized && dynamicChildren == null) {\n patchProps(el, oldProps, newProps, parentComponent, namespace);\n }\n if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n dirs && invokeDirectiveHook(n2, n1, parentComponent, \"updated\");\n }, parentSuspense);\n }\n };\n const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {\n for (let i = 0; i < newChildren.length; i++) {\n const oldVNode = oldChildren[i];\n const newVNode = newChildren[i];\n const container = (\n // oldVNode may be an errored async setup() component inside Suspense\n // which will not have a mounted element\n oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent\n // of the Fragment itself so it can move its children.\n (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement\n // which also requires the correct parent container\n !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.\n oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (\n // In other cases, the parent container is not actually used so we\n // just pass the block element here to avoid a DOM parentNode call.\n fallbackContainer\n )\n );\n patch(\n oldVNode,\n newVNode,\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n true\n );\n }\n };\n const patchProps = (el, oldProps, newProps, parentComponent, namespace) => {\n if (oldProps !== newProps) {\n if (oldProps !== EMPTY_OBJ) {\n for (const key in oldProps) {\n if (!isReservedProp(key) && !(key in newProps)) {\n hostPatchProp(\n el,\n key,\n oldProps[key],\n null,\n namespace,\n parentComponent\n );\n }\n }\n }\n for (const key in newProps) {\n if (isReservedProp(key)) continue;\n const next = newProps[key];\n const prev = oldProps[key];\n if (next !== prev && key !== \"value\") {\n hostPatchProp(el, key, prev, next, namespace, parentComponent);\n }\n }\n if (\"value\" in newProps) {\n hostPatchProp(el, \"value\", oldProps.value, newProps.value, namespace);\n }\n }\n };\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(\"\");\n const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(\"\");\n let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n if (!!(process.env.NODE_ENV !== \"production\") && // #5523 dev root fragment may inherit directives\n (isHmrUpdating || patchFlag & 2048)) {\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n }\n if (n1 == null) {\n hostInsert(fragmentStartAnchor, container, anchor);\n hostInsert(fragmentEndAnchor, container, anchor);\n mountChildren(\n // #10007\n // such fragment like `<></>` will be compiled into\n // a fragment which doesn't have a children.\n // In this case fallback to an empty array\n n2.children || [],\n container,\n fragmentEndAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result\n // of renderSlot() with no valid children\n n1.dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n container,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n traverseStaticChildren(n1, n2);\n } else if (\n // #2080 if the stable fragment has a key, it's a <template v-for> that may\n // get moved around. Make sure all root level vnodes inherit el.\n // #2134 or if it's a component root, it may also get moved around\n // as the component is being moved.\n n2.key != null || parentComponent && n2 === parentComponent.subTree\n ) {\n traverseStaticChildren(\n n1,\n n2,\n true\n /* shallow */\n );\n }\n } else {\n patchChildren(\n n1,\n n2,\n container,\n fragmentEndAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n }\n };\n const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n n2.slotScopeIds = slotScopeIds;\n if (n1 == null) {\n if (n2.shapeFlag & 512) {\n parentComponent.ctx.activate(\n n2,\n container,\n anchor,\n namespace,\n optimized\n );\n } else {\n mountComponent(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n optimized\n );\n }\n } else {\n updateComponent(n1, n2, optimized);\n }\n };\n const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {\n const instance = (initialVNode.component = createComponentInstance(\n initialVNode,\n parentComponent,\n parentSuspense\n ));\n if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n registerHMR(instance);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(initialVNode);\n startMeasure(instance, `mount`);\n }\n if (isKeepAlive(initialVNode)) {\n instance.ctx.renderer = internals;\n }\n {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `init`);\n }\n setupComponent(instance, false, optimized);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `init`);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) initialVNode.el = null;\n if (instance.asyncDep) {\n parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);\n if (!initialVNode.el) {\n const placeholder = instance.subTree = createVNode(Comment);\n processCommentNode(null, placeholder, container, anchor);\n initialVNode.placeholder = placeholder.el;\n }\n } else {\n setupRenderEffect(\n instance,\n initialVNode,\n container,\n anchor,\n parentSuspense,\n namespace,\n optimized\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n endMeasure(instance, `mount`);\n }\n };\n const updateComponent = (n1, n2, optimized) => {\n const instance = n2.component = n1.component;\n if (shouldUpdateComponent(n1, n2, optimized)) {\n if (instance.asyncDep && !instance.asyncResolved) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(n2);\n }\n updateComponentPreRender(instance, n2, optimized);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n return;\n } else {\n instance.next = n2;\n instance.update();\n }\n } else {\n n2.el = n1.el;\n instance.vnode = n2;\n }\n };\n const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {\n const componentUpdateFn = () => {\n if (!instance.isMounted) {\n let vnodeHook;\n const { el, props } = initialVNode;\n const { bm, m, parent, root, type } = instance;\n const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n toggleRecurse(instance, false);\n if (bm) {\n invokeArrayFns(bm);\n }\n if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parent, initialVNode);\n }\n toggleRecurse(instance, true);\n if (el && hydrateNode) {\n const hydrateSubTree = () => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `render`);\n }\n instance.subTree = renderComponentRoot(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `render`);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `hydrate`);\n }\n hydrateNode(\n el,\n instance.subTree,\n instance,\n parentSuspense,\n null\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `hydrate`);\n }\n };\n if (isAsyncWrapperVNode && type.__asyncHydrate) {\n type.__asyncHydrate(\n el,\n instance,\n hydrateSubTree\n );\n } else {\n hydrateSubTree();\n }\n } else {\n if (root.ce && // @ts-expect-error _def is private\n root.ce._def.shadowRoot !== false) {\n root.ce._injectChildStyle(type);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `render`);\n }\n const subTree = instance.subTree = renderComponentRoot(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `render`);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `patch`);\n }\n patch(\n null,\n subTree,\n container,\n anchor,\n instance,\n parentSuspense,\n namespace\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `patch`);\n }\n initialVNode.el = subTree.el;\n }\n if (m) {\n queuePostRenderEffect(m, parentSuspense);\n }\n if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {\n const scopedInitialVNode = initialVNode;\n queuePostRenderEffect(\n () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),\n parentSuspense\n );\n }\n if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n }\n instance.isMounted = true;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance);\n }\n initialVNode = container = anchor = null;\n } else {\n let { next, bu, u, parent, vnode } = instance;\n {\n const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);\n if (nonHydratedAsyncRoot) {\n if (next) {\n next.el = vnode.el;\n updateComponentPreRender(instance, next, optimized);\n }\n nonHydratedAsyncRoot.asyncDep.then(() => {\n if (!instance.isUnmounted) {\n componentUpdateFn();\n }\n });\n return;\n }\n }\n let originNext = next;\n let vnodeHook;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(next || instance.vnode);\n }\n toggleRecurse(instance, false);\n if (next) {\n next.el = vnode.el;\n updateComponentPreRender(instance, next, optimized);\n } else {\n next = vnode;\n }\n if (bu) {\n invokeArrayFns(bu);\n }\n if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {\n invokeVNodeHook(vnodeHook, parent, next, vnode);\n }\n toggleRecurse(instance, true);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `render`);\n }\n const nextTree = renderComponentRoot(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `render`);\n }\n const prevTree = instance.subTree;\n instance.subTree = nextTree;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `patch`);\n }\n patch(\n prevTree,\n nextTree,\n // parent may have changed if it's in a teleport\n hostParentNode(prevTree.el),\n // anchor may have changed if it's in a fragment\n getNextHostNode(prevTree),\n instance,\n parentSuspense,\n namespace\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `patch`);\n }\n next.el = nextTree.el;\n if (originNext === null) {\n updateHOCHostEl(instance, nextTree.el);\n }\n if (u) {\n queuePostRenderEffect(u, parentSuspense);\n }\n if (vnodeHook = next.props && next.props.onVnodeUpdated) {\n queuePostRenderEffect(\n () => invokeVNodeHook(vnodeHook, parent, next, vnode),\n parentSuspense\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(instance);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n }\n };\n instance.scope.on();\n const effect = instance.effect = new ReactiveEffect(componentUpdateFn);\n instance.scope.off();\n const update = instance.update = effect.run.bind(effect);\n const job = instance.job = effect.runIfDirty.bind(effect);\n job.i = instance;\n job.id = instance.uid;\n effect.scheduler = () => queueJob(job);\n toggleRecurse(instance, true);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0;\n effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0;\n }\n update();\n };\n const updateComponentPreRender = (instance, nextVNode, optimized) => {\n nextVNode.component = instance;\n const prevProps = instance.vnode.props;\n instance.vnode = nextVNode;\n instance.next = null;\n updateProps(instance, nextVNode.props, prevProps, optimized);\n updateSlots(instance, nextVNode.children, optimized);\n pauseTracking();\n flushPreFlushCbs(instance);\n resetTracking();\n };\n const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {\n const c1 = n1 && n1.children;\n const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n const c2 = n2.children;\n const { patchFlag, shapeFlag } = n2;\n if (patchFlag > 0) {\n if (patchFlag & 128) {\n patchKeyedChildren(\n c1,\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n return;\n } else if (patchFlag & 256) {\n patchUnkeyedChildren(\n c1,\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n return;\n }\n }\n if (shapeFlag & 8) {\n if (prevShapeFlag & 16) {\n unmountChildren(c1, parentComponent, parentSuspense);\n }\n if (c2 !== c1) {\n hostSetElementText(container, c2);\n }\n } else {\n if (prevShapeFlag & 16) {\n if (shapeFlag & 16) {\n patchKeyedChildren(\n c1,\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n unmountChildren(c1, parentComponent, parentSuspense, true);\n }\n } else {\n if (prevShapeFlag & 8) {\n hostSetElementText(container, \"\");\n }\n if (shapeFlag & 16) {\n mountChildren(\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n }\n }\n };\n const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n c1 = c1 || EMPTY_ARR;\n c2 = c2 || EMPTY_ARR;\n const oldLength = c1.length;\n const newLength = c2.length;\n const commonLength = Math.min(oldLength, newLength);\n let i;\n for (i = 0; i < commonLength; i++) {\n const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n patch(\n c1[i],\n nextChild,\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n if (oldLength > newLength) {\n unmountChildren(\n c1,\n parentComponent,\n parentSuspense,\n true,\n false,\n commonLength\n );\n } else {\n mountChildren(\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n commonLength\n );\n }\n };\n const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n let i = 0;\n const l2 = c2.length;\n let e1 = c1.length - 1;\n let e2 = l2 - 1;\n while (i <= e1 && i <= e2) {\n const n1 = c1[i];\n const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n if (isSameVNodeType(n1, n2)) {\n patch(\n n1,\n n2,\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n break;\n }\n i++;\n }\n while (i <= e1 && i <= e2) {\n const n1 = c1[e1];\n const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);\n if (isSameVNodeType(n1, n2)) {\n patch(\n n1,\n n2,\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n break;\n }\n e1--;\n e2--;\n }\n if (i > e1) {\n if (i <= e2) {\n const nextPos = e2 + 1;\n const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n while (i <= e2) {\n patch(\n null,\n c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n i++;\n }\n }\n } else if (i > e2) {\n while (i <= e1) {\n unmount(c1[i], parentComponent, parentSuspense, true);\n i++;\n }\n } else {\n const s1 = i;\n const s2 = i;\n const keyToNewIndexMap = /* @__PURE__ */ new Map();\n for (i = s2; i <= e2; i++) {\n const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n if (nextChild.key != null) {\n if (!!(process.env.NODE_ENV !== \"production\") && keyToNewIndexMap.has(nextChild.key)) {\n warn$1(\n `Duplicate keys found during update:`,\n JSON.stringify(nextChild.key),\n `Make sure keys are unique.`\n );\n }\n keyToNewIndexMap.set(nextChild.key, i);\n }\n }\n let j;\n let patched = 0;\n const toBePatched = e2 - s2 + 1;\n let moved = false;\n let maxNewIndexSoFar = 0;\n const newIndexToOldIndexMap = new Array(toBePatched);\n for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0;\n for (i = s1; i <= e1; i++) {\n const prevChild = c1[i];\n if (patched >= toBePatched) {\n unmount(prevChild, parentComponent, parentSuspense, true);\n continue;\n }\n let newIndex;\n if (prevChild.key != null) {\n newIndex = keyToNewIndexMap.get(prevChild.key);\n } else {\n for (j = s2; j <= e2; j++) {\n if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {\n newIndex = j;\n break;\n }\n }\n }\n if (newIndex === void 0) {\n unmount(prevChild, parentComponent, parentSuspense, true);\n } else {\n newIndexToOldIndexMap[newIndex - s2] = i + 1;\n if (newIndex >= maxNewIndexSoFar) {\n maxNewIndexSoFar = newIndex;\n } else {\n moved = true;\n }\n patch(\n prevChild,\n c2[newIndex],\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n patched++;\n }\n }\n const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;\n j = increasingNewIndexSequence.length - 1;\n for (i = toBePatched - 1; i >= 0; i--) {\n const nextIndex = s2 + i;\n const nextChild = c2[nextIndex];\n const anchorVNode = c2[nextIndex + 1];\n const anchor = nextIndex + 1 < l2 ? (\n // #13559, fallback to el placeholder for unresolved async component\n anchorVNode.el || anchorVNode.placeholder\n ) : parentAnchor;\n if (newIndexToOldIndexMap[i] === 0) {\n patch(\n null,\n nextChild,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else if (moved) {\n if (j < 0 || i !== increasingNewIndexSequence[j]) {\n move(nextChild, container, anchor, 2);\n } else {\n j--;\n }\n }\n }\n }\n };\n const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n const { el, type, transition, children, shapeFlag } = vnode;\n if (shapeFlag & 6) {\n move(vnode.component.subTree, container, anchor, moveType);\n return;\n }\n if (shapeFlag & 128) {\n vnode.suspense.move(container, anchor, moveType);\n return;\n }\n if (shapeFlag & 64) {\n type.move(vnode, container, anchor, internals);\n return;\n }\n if (type === Fragment) {\n hostInsert(el, container, anchor);\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, anchor, moveType);\n }\n hostInsert(vnode.anchor, container, anchor);\n return;\n }\n if (type === Static) {\n moveStaticNode(vnode, container, anchor);\n return;\n }\n const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;\n if (needTransition2) {\n if (moveType === 0) {\n transition.beforeEnter(el);\n hostInsert(el, container, anchor);\n queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n } else {\n const { leave, delayLeave, afterLeave } = transition;\n const remove2 = () => {\n if (vnode.ctx.isUnmounted) {\n hostRemove(el);\n } else {\n hostInsert(el, container, anchor);\n }\n };\n const performLeave = () => {\n if (el._isLeaving) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n leave(el, () => {\n remove2();\n afterLeave && afterLeave();\n });\n };\n if (delayLeave) {\n delayLeave(el, remove2, performLeave);\n } else {\n performLeave();\n }\n }\n } else {\n hostInsert(el, container, anchor);\n }\n };\n const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n const {\n type,\n props,\n ref,\n children,\n dynamicChildren,\n shapeFlag,\n patchFlag,\n dirs,\n cacheIndex\n } = vnode;\n if (patchFlag === -2) {\n optimized = false;\n }\n if (ref != null) {\n pauseTracking();\n setRef(ref, null, parentSuspense, vnode, true);\n resetTracking();\n }\n if (cacheIndex != null) {\n parentComponent.renderCache[cacheIndex] = void 0;\n }\n if (shapeFlag & 256) {\n parentComponent.ctx.deactivate(vnode);\n return;\n }\n const shouldInvokeDirs = shapeFlag & 1 && dirs;\n const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n let vnodeHook;\n if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n if (shapeFlag & 6) {\n unmountComponent(vnode.component, parentSuspense, doRemove);\n } else {\n if (shapeFlag & 128) {\n vnode.suspense.unmount(parentSuspense, doRemove);\n return;\n }\n if (shouldInvokeDirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeUnmount\");\n }\n if (shapeFlag & 64) {\n vnode.type.remove(\n vnode,\n parentComponent,\n parentSuspense,\n internals,\n doRemove\n );\n } else if (dynamicChildren && // #5154\n // when v-once is used inside a block, setBlockTracking(-1) marks the\n // parent block with hasOnce: true\n // so that it doesn't take the fast path during unmount - otherwise\n // components nested in v-once are never unmounted.\n !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments\n (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n unmountChildren(\n dynamicChildren,\n parentComponent,\n parentSuspense,\n false,\n true\n );\n } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n unmountChildren(children, parentComponent, parentSuspense);\n }\n if (doRemove) {\n remove(vnode);\n }\n }\n if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, \"unmounted\");\n }, parentSuspense);\n }\n };\n const remove = (vnode) => {\n const { type, el, anchor, transition } = vnode;\n if (type === Fragment) {\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {\n vnode.children.forEach((child) => {\n if (child.type === Comment) {\n hostRemove(child.el);\n } else {\n remove(child);\n }\n });\n } else {\n removeFragment(el, anchor);\n }\n return;\n }\n if (type === Static) {\n removeStaticNode(vnode);\n return;\n }\n const performRemove = () => {\n hostRemove(el);\n if (transition && !transition.persisted && transition.afterLeave) {\n transition.afterLeave();\n }\n };\n if (vnode.shapeFlag & 1 && transition && !transition.persisted) {\n const { leave, delayLeave } = transition;\n const performLeave = () => leave(el, performRemove);\n if (delayLeave) {\n delayLeave(vnode.el, performRemove, performLeave);\n } else {\n performLeave();\n }\n } else {\n performRemove();\n }\n };\n const removeFragment = (cur, end) => {\n let next;\n while (cur !== end) {\n next = hostNextSibling(cur);\n hostRemove(cur);\n cur = next;\n }\n hostRemove(end);\n };\n const unmountComponent = (instance, parentSuspense, doRemove) => {\n if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n unregisterHMR(instance);\n }\n const { bum, scope, job, subTree, um, m, a } = instance;\n invalidateMount(m);\n invalidateMount(a);\n if (bum) {\n invokeArrayFns(bum);\n }\n scope.stop();\n if (job) {\n job.flags |= 8;\n unmount(subTree, instance, parentSuspense, doRemove);\n }\n if (um) {\n queuePostRenderEffect(um, parentSuspense);\n }\n queuePostRenderEffect(() => {\n instance.isUnmounted = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentRemoved(instance);\n }\n };\n const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n for (let i = start; i < children.length; i++) {\n unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n }\n };\n const getNextHostNode = (vnode) => {\n if (vnode.shapeFlag & 6) {\n return getNextHostNode(vnode.component.subTree);\n }\n if (vnode.shapeFlag & 128) {\n return vnode.suspense.next();\n }\n const el = hostNextSibling(vnode.anchor || vnode.el);\n const teleportEnd = el && el[TeleportEndKey];\n return teleportEnd ? hostNextSibling(teleportEnd) : el;\n };\n let isFlushing = false;\n const render = (vnode, container, namespace) => {\n if (vnode == null) {\n if (container._vnode) {\n unmount(container._vnode, null, null, true);\n }\n } else {\n patch(\n container._vnode || null,\n vnode,\n container,\n null,\n null,\n null,\n namespace\n );\n }\n container._vnode = vnode;\n if (!isFlushing) {\n isFlushing = true;\n flushPreFlushCbs();\n flushPostFlushCbs();\n isFlushing = false;\n }\n };\n const internals = {\n p: patch,\n um: unmount,\n m: move,\n r: remove,\n mt: mountComponent,\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n n: getNextHostNode,\n o: options\n };\n let hydrate;\n let hydrateNode;\n if (createHydrationFns) {\n [hydrate, hydrateNode] = createHydrationFns(\n internals\n );\n }\n return {\n render,\n hydrate,\n createApp: createAppAPI(render, hydrate)\n };\n}\nfunction resolveChildrenNamespace({ type, props }, currentNamespace) {\n return currentNamespace === \"svg\" && type === \"foreignObject\" || currentNamespace === \"mathml\" && type === \"annotation-xml\" && props && props.encoding && props.encoding.includes(\"html\") ? void 0 : currentNamespace;\n}\nfunction toggleRecurse({ effect, job }, allowed) {\n if (allowed) {\n effect.flags |= 32;\n job.flags |= 4;\n } else {\n effect.flags &= -33;\n job.flags &= -5;\n }\n}\nfunction needTransition(parentSuspense, transition) {\n return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n const ch1 = n1.children;\n const ch2 = n2.children;\n if (isArray(ch1) && isArray(ch2)) {\n for (let i = 0; i < ch1.length; i++) {\n const c1 = ch1[i];\n let c2 = ch2[i];\n if (c2.shapeFlag & 1 && !c2.dynamicChildren) {\n if (c2.patchFlag <= 0 || c2.patchFlag === 32) {\n c2 = ch2[i] = cloneIfMounted(ch2[i]);\n c2.el = c1.el;\n }\n if (!shallow && c2.patchFlag !== -2)\n traverseStaticChildren(c1, c2);\n }\n if (c2.type === Text && // avoid cached text nodes retaining detached dom nodes\n c2.patchFlag !== -1) {\n c2.el = c1.el;\n }\n if (c2.type === Comment && !c2.el) {\n c2.el = c1.el;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n c2.el && (c2.el.__vnode = c2);\n }\n }\n }\n}\nfunction getSequence(arr) {\n const p = arr.slice();\n const result = [0];\n let i, j, u, v, c;\n const len = arr.length;\n for (i = 0; i < len; i++) {\n const arrI = arr[i];\n if (arrI !== 0) {\n j = result[result.length - 1];\n if (arr[j] < arrI) {\n p[i] = j;\n result.push(i);\n continue;\n }\n u = 0;\n v = result.length - 1;\n while (u < v) {\n c = u + v >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n } else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = result.length;\n v = result[u - 1];\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n return result;\n}\nfunction locateNonHydratedAsyncRoot(instance) {\n const subComponent = instance.subTree.component;\n if (subComponent) {\n if (subComponent.asyncDep && !subComponent.asyncResolved) {\n return subComponent;\n } else {\n return locateNonHydratedAsyncRoot(subComponent);\n }\n }\n}\nfunction invalidateMount(hooks) {\n if (hooks) {\n for (let i = 0; i < hooks.length; i++)\n hooks[i].flags |= 8;\n }\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, flush, once } = options;\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const baseWatchOptions = extend({}, options);\n if (!!(process.env.NODE_ENV !== \"production\")) baseWatchOptions.onWarn = warn$1;\n const runsImmediately = cb && immediate || !cb && flush !== \"post\";\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n if (flush === \"sync\") {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n } else if (!runsImmediately) {\n const watchStopHandle = () => {\n };\n watchStopHandle.stop = NOOP;\n watchStopHandle.resume = NOOP;\n watchStopHandle.pause = NOOP;\n return watchStopHandle;\n }\n }\n const instance = currentInstance;\n baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args);\n let isPre = false;\n if (flush === \"post\") {\n baseWatchOptions.scheduler = (job) => {\n queuePostRenderEffect(job, instance && instance.suspense);\n };\n } else if (flush !== \"sync\") {\n isPre = true;\n baseWatchOptions.scheduler = (job, isFirstRun) => {\n if (isFirstRun) {\n job();\n } else {\n queueJob(job);\n }\n };\n }\n baseWatchOptions.augmentJob = (job) => {\n if (cb) {\n job.flags |= 4;\n }\n if (isPre) {\n job.flags |= 2;\n if (instance) {\n job.id = instance.uid;\n job.i = instance;\n }\n }\n };\n const watchHandle = watch$1(source, cb, baseWatchOptions);\n if (isInSSRComponentSetup) {\n if (ssrCleanup) {\n ssrCleanup.push(watchHandle);\n } else if (runsImmediately) {\n watchHandle();\n }\n }\n return watchHandle;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const reset = setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n reset();\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\n\nfunction useModel(props, name, options = EMPTY_OBJ) {\n const i = getCurrentInstance();\n if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n warn$1(`useModel() called without active instance.`);\n return ref();\n }\n const camelizedName = camelize(name);\n if (!!(process.env.NODE_ENV !== \"production\") && !i.propsOptions[0][camelizedName]) {\n warn$1(`useModel() called with prop \"${name}\" which is not declared.`);\n return ref();\n }\n const hyphenatedName = hyphenate(name);\n const modifiers = getModelModifiers(props, camelizedName);\n const res = customRef((track, trigger) => {\n let localValue;\n let prevSetValue = EMPTY_OBJ;\n let prevEmittedValue;\n watchSyncEffect(() => {\n const propValue = props[camelizedName];\n if (hasChanged(localValue, propValue)) {\n localValue = propValue;\n trigger();\n }\n });\n return {\n get() {\n track();\n return options.get ? options.get(localValue) : localValue;\n },\n set(value) {\n const emittedValue = options.set ? options.set(value) : value;\n if (!hasChanged(emittedValue, localValue) && !(prevSetValue !== EMPTY_OBJ && hasChanged(value, prevSetValue))) {\n return;\n }\n const rawProps = i.vnode.props;\n if (!(rawProps && // check if parent has passed v-model\n (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) {\n localValue = value;\n trigger();\n }\n i.emit(`update:${name}`, emittedValue);\n if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) {\n trigger();\n }\n prevSetValue = value;\n prevEmittedValue = emittedValue;\n }\n };\n });\n res[Symbol.iterator] = () => {\n let i2 = 0;\n return {\n next() {\n if (i2 < 2) {\n return { value: i2++ ? modifiers || EMPTY_OBJ : res, done: false };\n } else {\n return { done: true };\n }\n }\n };\n };\n return res;\n}\nconst getModelModifiers = (props, modelName) => {\n return modelName === \"modelValue\" || modelName === \"model-value\" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${camelize(modelName)}Modifiers`] || props[`${hyphenate(modelName)}Modifiers`];\n};\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted) return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(camelize(event)) in propsOptions)) {\n warn$1(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(camelize(event))}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn$1(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modifiers = isModelListener && getModelModifiers(props, event.slice(7));\n if (modifiers) {\n if (modifiers.trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (modifiers.number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn$1(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n event\n )}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const {\n type: Component,\n vnode,\n proxy,\n withProxy,\n propsOptions: [propsOptions],\n slots,\n attrs,\n emit,\n render,\n renderCache,\n props,\n data,\n setupState,\n ctx,\n inheritAttrs\n } = instance;\n const prev = setCurrentRenderingInstance(instance);\n let result;\n let fallthroughAttrs;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4) {\n const proxyToUse = withProxy || proxy;\n const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n get(target, key, receiver) {\n warn$1(\n `Property '${String(\n key\n )}' was accessed via 'this'. Avoid using 'this' in templates.`\n );\n return Reflect.get(target, key, receiver);\n }\n }) : proxyToUse;\n result = normalizeVNode(\n render.call(\n thisProxy,\n proxyToUse,\n renderCache,\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n setupState,\n data,\n ctx\n )\n );\n fallthroughAttrs = attrs;\n } else {\n const render2 = Component;\n if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(\n render2.length > 1 ? render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n !!(process.env.NODE_ENV !== \"production\") ? {\n get attrs() {\n markAttrsAccessed();\n return shallowReadonly(attrs);\n },\n slots,\n emit\n } : { attrs, slots, emit }\n ) : render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n null\n )\n );\n fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n }\n } catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1);\n result = createVNode(Comment);\n }\n let root = result;\n let setRoot = void 0;\n if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 | 6)) {\n if (propsOptions && keys.some(isModelListener)) {\n fallthroughAttrs = filterModelListeners(\n fallthroughAttrs,\n propsOptions\n );\n }\n root = cloneVNode(root, fallthroughAttrs, false, true);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n if (!isModelListener(key)) {\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n } else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn$1(\n `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text or teleport root nodes.`\n );\n }\n if (eventAttrs.length) {\n warn$1(\n `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n );\n }\n }\n }\n }\n if (vnode.dirs) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n );\n }\n root = cloneVNode(root, null, false, true);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n if (vnode.transition) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Component inside <Transition> renders non-element root node that cannot be animated.`\n );\n }\n setTransitionHooks(root, vnode.transition);\n }\n if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n setRoot(root);\n } else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren, false);\n if (!childRoot) {\n return [vnode, void 0];\n } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n return getChildRoot(childRoot);\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n } else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n if (child.type !== Comment || child.children === \"v-if\") {\n if (singleRoot) {\n return;\n } else {\n singleRoot = child;\n if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n return filterSingleRoot(singleRoot.children);\n }\n }\n }\n } else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === \"class\" || key === \"style\" || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024) {\n return true;\n }\n if (patchFlag & 16) {\n if (!prevProps) {\n return !!nextProps;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n } else if (patchFlag & 8) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n } else {\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n while (parent) {\n const root = parent.subTree;\n if (root.suspense && root.suspense.activeBranch === vnode) {\n root.el = vnode.el;\n }\n if (root === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n } else {\n break;\n }\n }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n name: \"Suspense\",\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n if (n1 == null) {\n mountSuspense(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n } else {\n if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {\n n2.suspense = n1.suspense;\n n2.suspense.vnode = n2;\n n2.el = n1.el;\n return;\n }\n patchSuspense(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n }\n },\n hydrate: hydrateSuspense,\n normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n const {\n p: patch,\n o: { createElement }\n } = rendererInternals;\n const hiddenContainer = createElement(\"div\");\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n container,\n hiddenContainer,\n anchor,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n patch(\n null,\n suspense.pendingBranch = vnode.ssContent,\n hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds\n );\n if (suspense.deps > 0) {\n triggerEvent(vnode, \"onPending\");\n triggerEvent(vnode, \"onFallback\");\n patch(\n null,\n vnode.ssFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds\n );\n setActiveBranch(suspense, vnode.ssFallback);\n } else {\n suspense.resolve(false, true);\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = n2.suspense = n1.suspense;\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n patch(\n pendingBranch,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else if (isInFallback) {\n if (!isHydrating) {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n }\n } else {\n suspense.pendingId = suspenseId++;\n if (isHydrating) {\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n } else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n suspense.deps = 0;\n suspense.effects.length = 0;\n suspense.hiddenContainer = createElement(\"div\");\n if (isInFallback) {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n suspense.resolve(true);\n } else {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n } else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newBranch);\n } else {\n triggerEvent(n2, \"onPending\");\n suspense.pendingBranch = newBranch;\n if (newBranch.shapeFlag & 512) {\n suspense.pendingId = newBranch.component.suspenseId;\n } else {\n suspense.pendingId = suspenseId++;\n }\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n } else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n hasWarned = true;\n console[console.info ? \"info\" : \"log\"](\n `<Suspense> is an experimental feature and its API will likely change.`\n );\n }\n const {\n p: patch,\n m: move,\n um: unmount,\n n: next,\n o: { parentNode, remove }\n } = rendererInternals;\n let parentSuspenseId;\n const isSuspensible = isVNodeSuspensible(vnode);\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch) {\n parentSuspenseId = parentSuspense.pendingId;\n parentSuspense.deps++;\n }\n }\n const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(timeout, `Suspense timeout`);\n }\n const initialAnchor = anchor;\n const suspense = {\n vnode,\n parent: parentSuspense,\n parentComponent,\n namespace,\n container,\n hiddenContainer,\n deps: 0,\n pendingId: suspenseId++,\n timeout: typeof timeout === \"number\" ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: !isHydrating,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false, sync = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(\n `suspense.resolve() is called without a pending branch.`\n );\n }\n if (suspense.isUnmounted) {\n throw new Error(\n `suspense.resolve() is called on an already unmounted suspense boundary.`\n );\n }\n }\n const {\n vnode: vnode2,\n activeBranch,\n pendingBranch,\n pendingId,\n effects,\n parentComponent: parentComponent2,\n container: container2\n } = suspense;\n let delayEnter = false;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n } else if (!resume) {\n delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(\n pendingBranch,\n container2,\n anchor === initialAnchor ? next(activeBranch) : anchor,\n 0\n );\n queuePostFlushCb(effects);\n }\n };\n }\n if (activeBranch) {\n if (parentNode(activeBranch.el) === container2) {\n anchor = next(activeBranch);\n }\n unmount(activeBranch, parentComponent2, suspense, true);\n }\n if (!delayEnter) {\n move(pendingBranch, container2, anchor, 0);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n if (!hasUnresolvedAncestor && !delayEnter) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0 && !sync) {\n parentSuspense.resolve();\n }\n }\n }\n triggerEvent(vnode2, \"onResolve\");\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n triggerEvent(vnode2, \"onFallback\");\n const anchor2 = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n patch(\n null,\n fallbackVNode,\n container2,\n anchor2,\n parentComponent2,\n null,\n // fallback tree will not have suspense context\n namespace2,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n unmount(\n activeBranch,\n parentComponent2,\n null,\n // no suspense so unmount hooks fire now\n true\n // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container2, anchor2, type) {\n suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n suspense.container = container2;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect, optimized2) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance.asyncDep.catch((err) => {\n handleError(err, instance, 0);\n }).then((asyncSetupResult) => {\n if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n return;\n }\n instance.asyncResolved = true;\n const { vnode: vnode2 } = instance;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(vnode2);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n vnode2.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(\n instance,\n vnode2,\n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el),\n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree),\n suspense,\n namespace,\n optimized2\n );\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode2.el);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense2, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(\n suspense.activeBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n if (suspense.pendingBranch) {\n unmount(\n suspense.pendingBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n node.parentNode,\n // eslint-disable-next-line no-restricted-globals\n document.createElement(\"div\"),\n null,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals,\n true\n );\n const result = hydrateNode(\n node,\n suspense.pendingBranch = vnode.ssContent,\n parentComponent,\n suspense,\n slotScopeIds,\n optimized\n );\n if (suspense.deps === 0) {\n suspense.resolve(false, true);\n }\n return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32;\n vnode.ssContent = normalizeSuspenseSlot(\n isSlotChildren ? children.default : children\n );\n vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n warn$1(`<Suspense> slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter((c) => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n } else {\n suspense.effects.push(fn);\n }\n } else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n let el = branch.el;\n while (!el && branch.component) {\n branch = branch.component.subTree;\n el = branch.el;\n }\n vnode.el = el;\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\nfunction isVNodeSuspensible(vnode) {\n const suspensible = vnode.props && vnode.props.suspensible;\n return suspensible != null && suspensible !== false;\n}\n\nconst Fragment = Symbol.for(\"v-fgt\");\nconst Text = Symbol.for(\"v-txt\");\nconst Comment = Symbol.for(\"v-cmt\");\nconst Static = Symbol.for(\"v-stc\");\nconst blockStack = [];\nlet currentBlock = null;\nfunction openBlock(disableTracking = false) {\n blockStack.push(currentBlock = disableTracking ? null : []);\n}\nfunction closeBlock() {\n blockStack.pop();\n currentBlock = blockStack[blockStack.length - 1] || null;\n}\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value, inVOnce = false) {\n isBlockTreeEnabled += value;\n if (value < 0 && currentBlock && inVOnce) {\n currentBlock.hasOnce = true;\n }\n}\nfunction setupBlock(vnode) {\n vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n closeBlock();\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n return setupBlock(\n createBaseVNode(\n type,\n props,\n children,\n patchFlag,\n dynamicProps,\n shapeFlag,\n true\n )\n );\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n return setupBlock(\n createVNode(\n type,\n props,\n children,\n patchFlag,\n dynamicProps,\n true\n )\n );\n}\nfunction isVNode(value) {\n return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n if (!!(process.env.NODE_ENV !== \"production\") && n2.shapeFlag & 6 && n1.component) {\n const dirtyInstances = hmrDirtyComponents.get(n2.type);\n if (dirtyInstances && dirtyInstances.has(n1.component)) {\n n1.shapeFlag &= -257;\n n2.shapeFlag &= -513;\n return false;\n }\n }\n return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\nfunction transformVNodeArgs(transformer) {\n vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n return _createVNode(\n ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args\n );\n};\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({\n ref,\n ref_key,\n ref_for\n}) => {\n if (typeof ref === \"number\") {\n ref = \"\" + ref;\n }\n return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n const vnode = {\n __v_isVNode: true,\n __v_skip: true,\n type,\n props,\n key: props && normalizeKey(props),\n ref: props && normalizeRef(props),\n scopeId: currentScopeId,\n slotScopeIds: null,\n children,\n component: null,\n suspense: null,\n ssContent: null,\n ssFallback: null,\n dirs: null,\n transition: null,\n el: null,\n anchor: null,\n target: null,\n targetStart: null,\n targetAnchor: null,\n staticCount: 0,\n shapeFlag,\n patchFlag,\n dynamicProps,\n dynamicChildren: null,\n appContext: null,\n ctx: currentRenderingInstance\n };\n if (needFullChildrenNormalization) {\n normalizeChildren(vnode, children);\n if (shapeFlag & 128) {\n type.normalize(vnode);\n }\n } else if (children) {\n vnode.shapeFlag |= isString(children) ? 8 : 16;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.key !== vnode.key) {\n warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n }\n if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself\n !isBlockNode && // has current parent block\n currentBlock && // presence of a patch flag indicates this node needs patching on updates.\n // component nodes also should always be patched, because even if the\n // component doesn't need to update, it needs to persist the instance on to\n // the next vnode so that it can be properly unmounted later.\n (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the\n // vnode should not be considered dynamic due to handler caching.\n vnode.patchFlag !== 32) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nconst createVNode = !!(process.env.NODE_ENV !== \"production\") ? createVNodeWithArgsTransform : _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\n if (!!(process.env.NODE_ENV !== \"production\") && !type) {\n warn$1(`Invalid vnode type when creating vnode: ${type}.`);\n }\n type = Comment;\n }\n if (isVNode(type)) {\n const cloned = cloneVNode(\n type,\n props,\n true\n /* mergeRef: true */\n );\n if (children) {\n normalizeChildren(cloned, children);\n }\n if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n if (cloned.shapeFlag & 6) {\n currentBlock[currentBlock.indexOf(type)] = cloned;\n } else {\n currentBlock.push(cloned);\n }\n }\n cloned.patchFlag = -2;\n return cloned;\n }\n if (isClassComponent(type)) {\n type = type.__vccOpts;\n }\n if (props) {\n props = guardReactiveProps(props);\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (isObject(style)) {\n if (isProxy(style) && !isArray(style)) {\n style = extend({}, style);\n }\n props.style = normalizeStyle(style);\n }\n }\n const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;\n if (!!(process.env.NODE_ENV !== \"production\") && shapeFlag & 4 && isProxy(type)) {\n type = toRaw(type);\n warn$1(\n `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \\`markRaw\\` or using \\`shallowRef\\` instead of \\`ref\\`.`,\n `\nComponent that was made reactive: `,\n type\n );\n }\n return createBaseVNode(\n type,\n props,\n children,\n patchFlag,\n dynamicProps,\n shapeFlag,\n isBlockNode,\n true\n );\n}\nfunction guardReactiveProps(props) {\n if (!props) return null;\n return isProxy(props) || isInternalObject(props) ? extend({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) {\n const { props, ref, patchFlag, children, transition } = vnode;\n const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n const cloned = {\n __v_isVNode: true,\n __v_skip: true,\n type: vnode.type,\n props: mergedProps,\n key: mergedProps && normalizeKey(mergedProps),\n ref: extraProps && extraProps.ref ? (\n // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n // if the vnode itself already has a ref, cloneVNode will need to merge\n // the refs so the single vnode can be set on multiple refs\n mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)\n ) : ref,\n scopeId: vnode.scopeId,\n slotScopeIds: vnode.slotScopeIds,\n children: !!(process.env.NODE_ENV !== \"production\") && patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children,\n target: vnode.target,\n targetStart: vnode.targetStart,\n targetAnchor: vnode.targetAnchor,\n staticCount: vnode.staticCount,\n shapeFlag: vnode.shapeFlag,\n // if the vnode is cloned with extra props, we can no longer assume its\n // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n // note: preserve flag for fragments since they use the flag for children\n // fast paths only.\n patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n dynamicProps: vnode.dynamicProps,\n dynamicChildren: vnode.dynamicChildren,\n appContext: vnode.appContext,\n dirs: vnode.dirs,\n transition,\n // These should technically only be non-null on mounted VNodes. However,\n // they *should* be copied for kept-alive vnodes. So we just always copy\n // them since them being non-null during a mount doesn't affect the logic as\n // they will simply be overwritten.\n component: vnode.component,\n suspense: vnode.suspense,\n ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n placeholder: vnode.placeholder,\n el: vnode.el,\n anchor: vnode.anchor,\n ctx: vnode.ctx,\n ce: vnode.ce\n };\n if (transition && cloneTransition) {\n setTransitionHooks(\n cloned,\n transition.clone(cloned)\n );\n }\n return cloned;\n}\nfunction deepCloneVNode(vnode) {\n const cloned = cloneVNode(vnode);\n if (isArray(vnode.children)) {\n cloned.children = vnode.children.map(deepCloneVNode);\n }\n return cloned;\n}\nfunction createTextVNode(text = \" \", flag = 0) {\n return createVNode(Text, null, text, flag);\n}\nfunction createStaticVNode(content, numberOfNodes) {\n const vnode = createVNode(Static, null, content);\n vnode.staticCount = numberOfNodes;\n return vnode;\n}\nfunction createCommentVNode(text = \"\", asBlock = false) {\n return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n if (child == null || typeof child === \"boolean\") {\n return createVNode(Comment);\n } else if (isArray(child)) {\n return createVNode(\n Fragment,\n null,\n // #3666, avoid reference pollution when reusing vnode\n child.slice()\n );\n } else if (isVNode(child)) {\n return cloneIfMounted(child);\n } else {\n return createVNode(Text, null, String(child));\n }\n}\nfunction cloneIfMounted(child) {\n return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n let type = 0;\n const { shapeFlag } = vnode;\n if (children == null) {\n children = null;\n } else if (isArray(children)) {\n type = 16;\n } else if (typeof children === \"object\") {\n if (shapeFlag & (1 | 64)) {\n const slot = children.default;\n if (slot) {\n slot._c && (slot._d = false);\n normalizeChildren(vnode, slot());\n slot._c && (slot._d = true);\n }\n return;\n } else {\n type = 32;\n const slotFlag = children._;\n if (!slotFlag && !isInternalObject(children)) {\n children._ctx = currentRenderingInstance;\n } else if (slotFlag === 3 && currentRenderingInstance) {\n if (currentRenderingInstance.slots._ === 1) {\n children._ = 1;\n } else {\n children._ = 2;\n vnode.patchFlag |= 1024;\n }\n }\n }\n } else if (isFunction(children)) {\n children = { default: children, _ctx: currentRenderingInstance };\n type = 32;\n } else {\n children = String(children);\n if (shapeFlag & 64) {\n type = 16;\n children = [createTextVNode(children)];\n } else {\n type = 8;\n }\n }\n vnode.children = children;\n vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n const toMerge = args[i];\n for (const key in toMerge) {\n if (key === \"class\") {\n if (ret.class !== toMerge.class) {\n ret.class = normalizeClass([ret.class, toMerge.class]);\n }\n } else if (key === \"style\") {\n ret.style = normalizeStyle([ret.style, toMerge.style]);\n } else if (isOn(key)) {\n const existing = ret[key];\n const incoming = toMerge[key];\n if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {\n ret[key] = existing ? [].concat(existing, incoming) : incoming;\n }\n } else if (key !== \"\") {\n ret[key] = toMerge[key];\n }\n }\n }\n return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n callWithAsyncErrorHandling(hook, instance, 7, [\n vnode,\n prevVNode\n ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n const type = vnode.type;\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n const instance = {\n uid: uid++,\n vnode,\n type,\n parent,\n appContext,\n root: null,\n // to be immediately set\n next: null,\n subTree: null,\n // will be set synchronously right after creation\n effect: null,\n update: null,\n // will be set synchronously right after creation\n job: null,\n scope: new EffectScope(\n true\n /* detached */\n ),\n render: null,\n proxy: null,\n exposed: null,\n exposeProxy: null,\n withProxy: null,\n provides: parent ? parent.provides : Object.create(appContext.provides),\n ids: parent ? parent.ids : [\"\", 0, 0],\n accessCache: null,\n renderCache: [],\n // local resolved assets\n components: null,\n directives: null,\n // resolved props and emits options\n propsOptions: normalizePropsOptions(type, appContext),\n emitsOptions: normalizeEmitsOptions(type, appContext),\n // emit\n emit: null,\n // to be set immediately\n emitted: null,\n // props default value\n propsDefaults: EMPTY_OBJ,\n // inheritAttrs\n inheritAttrs: type.inheritAttrs,\n // state\n ctx: EMPTY_OBJ,\n data: EMPTY_OBJ,\n props: EMPTY_OBJ,\n attrs: EMPTY_OBJ,\n slots: EMPTY_OBJ,\n refs: EMPTY_OBJ,\n setupState: EMPTY_OBJ,\n setupContext: null,\n // suspense related\n suspense,\n suspenseId: suspense ? suspense.pendingId : 0,\n asyncDep: null,\n asyncResolved: false,\n // lifecycle hooks\n // not using enums here because it results in computed properties\n isMounted: false,\n isUnmounted: false,\n isDeactivated: false,\n bc: null,\n c: null,\n bm: null,\n m: null,\n bu: null,\n u: null,\n um: null,\n bum: null,\n da: null,\n a: null,\n rtg: null,\n rtc: null,\n ec: null,\n sp: null\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n instance.ctx = createDevRenderContext(instance);\n } else {\n instance.ctx = { _: instance };\n }\n instance.root = parent ? parent.root : instance;\n instance.emit = emit.bind(null, instance);\n if (vnode.ce) {\n vnode.ce(instance);\n }\n return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nlet internalSetCurrentInstance;\nlet setInSSRSetupState;\n{\n const g = getGlobalThis();\n const registerGlobalSetter = (key, setter) => {\n let setters;\n if (!(setters = g[key])) setters = g[key] = [];\n setters.push(setter);\n return (v) => {\n if (setters.length > 1) setters.forEach((set) => set(v));\n else setters[0](v);\n };\n };\n internalSetCurrentInstance = registerGlobalSetter(\n `__VUE_INSTANCE_SETTERS__`,\n (v) => currentInstance = v\n );\n setInSSRSetupState = registerGlobalSetter(\n `__VUE_SSR_SETTERS__`,\n (v) => isInSSRComponentSetup = v\n );\n}\nconst setCurrentInstance = (instance) => {\n const prev = currentInstance;\n internalSetCurrentInstance(instance);\n instance.scope.on();\n return () => {\n instance.scope.off();\n internalSetCurrentInstance(prev);\n };\n};\nconst unsetCurrentInstance = () => {\n currentInstance && currentInstance.scope.off();\n internalSetCurrentInstance(null);\n};\nconst isBuiltInTag = /* @__PURE__ */ makeMap(\"slot,component\");\nfunction validateComponentName(name, { isNativeTag }) {\n if (isBuiltInTag(name) || isNativeTag(name)) {\n warn$1(\n \"Do not use built-in or reserved HTML elements as component id: \" + name\n );\n }\n}\nfunction isStatefulComponent(instance) {\n return instance.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false, optimized = false) {\n isSSR && setInSSRSetupState(isSSR);\n const { props, children } = instance.vnode;\n const isStateful = isStatefulComponent(instance);\n initProps(instance, props, isStateful, isSSR);\n initSlots(instance, children, optimized || isSSR);\n const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;\n isSSR && setInSSRSetupState(false);\n return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n var _a;\n const Component = instance.type;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (Component.name) {\n validateComponentName(Component.name, instance.appContext.config);\n }\n if (Component.components) {\n const names = Object.keys(Component.components);\n for (let i = 0; i < names.length; i++) {\n validateComponentName(names[i], instance.appContext.config);\n }\n }\n if (Component.directives) {\n const names = Object.keys(Component.directives);\n for (let i = 0; i < names.length; i++) {\n validateDirectiveName(names[i]);\n }\n }\n if (Component.compilerOptions && isRuntimeOnly()) {\n warn$1(\n `\"compilerOptions\" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`\n );\n }\n }\n instance.accessCache = /* @__PURE__ */ Object.create(null);\n instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n exposePropsOnRenderContext(instance);\n }\n const { setup } = Component;\n if (setup) {\n pauseTracking();\n const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;\n const reset = setCurrentInstance(instance);\n const setupResult = callWithErrorHandling(\n setup,\n instance,\n 0,\n [\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(instance.props) : instance.props,\n setupContext\n ]\n );\n const isAsyncSetup = isPromise(setupResult);\n resetTracking();\n reset();\n if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) {\n markAsyncBoundary(instance);\n }\n if (isAsyncSetup) {\n setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n if (isSSR) {\n return setupResult.then((resolvedResult) => {\n handleSetupResult(instance, resolvedResult, isSSR);\n }).catch((e) => {\n handleError(e, instance, 0);\n });\n } else {\n instance.asyncDep = setupResult;\n if (!!(process.env.NODE_ENV !== \"production\") && !instance.suspense) {\n const name = (_a = Component.name) != null ? _a : \"Anonymous\";\n warn$1(\n `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`\n );\n }\n }\n } else {\n handleSetupResult(instance, setupResult, isSSR);\n }\n } else {\n finishComponentSetup(instance, isSSR);\n }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n if (isFunction(setupResult)) {\n if (instance.type.__ssrInlineRender) {\n instance.ssrRender = setupResult;\n } else {\n instance.render = setupResult;\n }\n } else if (isObject(setupResult)) {\n if (!!(process.env.NODE_ENV !== \"production\") && isVNode(setupResult)) {\n warn$1(\n `setup() should not return VNodes directly - return a render function instead.`\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.devtoolsRawSetupState = setupResult;\n }\n instance.setupState = proxyRefs(setupResult);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n exposeSetupStateOnRenderContext(instance);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupResult !== void 0) {\n warn$1(\n `setup() should return an object. Received: ${setupResult === null ? \"null\" : typeof setupResult}`\n );\n }\n finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\nfunction registerRuntimeCompiler(_compile) {\n compile = _compile;\n installWithProxy = (i) => {\n if (i.render._rc) {\n i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n }\n };\n}\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n const Component = instance.type;\n if (!instance.render) {\n if (!isSSR && compile && !Component.render) {\n const template = Component.template || __VUE_OPTIONS_API__ && resolveMergedOptions(instance).template;\n if (template) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `compile`);\n }\n const { isCustomElement, compilerOptions } = instance.appContext.config;\n const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n const finalCompilerOptions = extend(\n extend(\n {\n isCustomElement,\n delimiters\n },\n compilerOptions\n ),\n componentCompilerOptions\n );\n Component.render = compile(template, finalCompilerOptions);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `compile`);\n }\n }\n }\n instance.render = Component.render || NOOP;\n if (installWithProxy) {\n installWithProxy(instance);\n }\n }\n if (__VUE_OPTIONS_API__ && true) {\n const reset = setCurrentInstance(instance);\n pauseTracking();\n try {\n applyOptions(instance);\n } finally {\n resetTracking();\n reset();\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !Component.render && instance.render === NOOP && !isSSR) {\n if (!compile && Component.template) {\n warn$1(\n `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n );\n } else {\n warn$1(`Component is missing template or render function: `, Component);\n }\n }\n}\nconst attrsProxyHandlers = !!(process.env.NODE_ENV !== \"production\") ? {\n get(target, key) {\n markAttrsAccessed();\n track(target, \"get\", \"\");\n return target[key];\n },\n set() {\n warn$1(`setupContext.attrs is readonly.`);\n return false;\n },\n deleteProperty() {\n warn$1(`setupContext.attrs is readonly.`);\n return false;\n }\n} : {\n get(target, key) {\n track(target, \"get\", \"\");\n return target[key];\n }\n};\nfunction getSlotsProxy(instance) {\n return new Proxy(instance.slots, {\n get(target, key) {\n track(instance, \"get\", \"$slots\");\n return target[key];\n }\n });\n}\nfunction createSetupContext(instance) {\n const expose = (exposed) => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (instance.exposed) {\n warn$1(`expose() should be called only once per setup().`);\n }\n if (exposed != null) {\n let exposedType = typeof exposed;\n if (exposedType === \"object\") {\n if (isArray(exposed)) {\n exposedType = \"array\";\n } else if (isRef(exposed)) {\n exposedType = \"ref\";\n }\n }\n if (exposedType !== \"object\") {\n warn$1(\n `expose() should be passed a plain object, received ${exposedType}.`\n );\n }\n }\n }\n instance.exposed = exposed || {};\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n let attrsProxy;\n let slotsProxy;\n return Object.freeze({\n get attrs() {\n return attrsProxy || (attrsProxy = new Proxy(instance.attrs, attrsProxyHandlers));\n },\n get slots() {\n return slotsProxy || (slotsProxy = getSlotsProxy(instance));\n },\n get emit() {\n return (event, ...args) => instance.emit(event, ...args);\n },\n expose\n });\n } else {\n return {\n attrs: new Proxy(instance.attrs, attrsProxyHandlers),\n slots: instance.slots,\n emit: instance.emit,\n expose\n };\n }\n}\nfunction getComponentPublicInstance(instance) {\n if (instance.exposed) {\n return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n get(target, key) {\n if (key in target) {\n return target[key];\n } else if (key in publicPropertiesMap) {\n return publicPropertiesMap[key](instance);\n }\n },\n has(target, key) {\n return key in target || key in publicPropertiesMap;\n }\n }));\n } else {\n return instance.proxy;\n }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, \"\");\nfunction getComponentName(Component, includeInferred = true) {\n return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction formatComponentName(instance, Component, isRoot = false) {\n let name = getComponentName(Component);\n if (!name && Component.__file) {\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n if (match) {\n name = match[1];\n }\n }\n if (!name && instance && instance.parent) {\n const inferFromRegistry = (registry) => {\n for (const key in registry) {\n if (registry[key] === Component) {\n return key;\n }\n }\n };\n name = inferFromRegistry(\n instance.components || instance.parent.type.components\n ) || inferFromRegistry(instance.appContext.components);\n }\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n return isFunction(value) && \"__vccOpts\" in value;\n}\n\nconst computed = (getterOrOptions, debugOptions) => {\n const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const i = getCurrentInstance();\n if (i && i.appContext.config.warnRecursiveComputed) {\n c._warnRecursive = true;\n }\n }\n return c;\n};\n\nfunction h(type, propsOrChildren, children) {\n const l = arguments.length;\n if (l === 2) {\n if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n if (isVNode(propsOrChildren)) {\n return createVNode(type, null, [propsOrChildren]);\n }\n return createVNode(type, propsOrChildren);\n } else {\n return createVNode(type, null, propsOrChildren);\n }\n } else {\n if (l > 3) {\n children = Array.prototype.slice.call(arguments, 2);\n } else if (l === 3 && isVNode(children)) {\n children = [children];\n }\n return createVNode(type, propsOrChildren, children);\n }\n}\n\nfunction initCustomFormatter() {\n if (!!!(process.env.NODE_ENV !== \"production\") || typeof window === \"undefined\") {\n return;\n }\n const vueStyle = { style: \"color:#3ba776\" };\n const numberStyle = { style: \"color:#1677ff\" };\n const stringStyle = { style: \"color:#f5222d\" };\n const keywordStyle = { style: \"color:#eb2f96\" };\n const formatter = {\n __vue_custom_formatter: true,\n header(obj) {\n if (!isObject(obj)) {\n return null;\n }\n if (obj.__isVue) {\n return [\"div\", vueStyle, `VueInstance`];\n } else if (isRef(obj)) {\n pauseTracking();\n const value = obj.value;\n resetTracking();\n return [\n \"div\",\n {},\n [\"span\", vueStyle, genRefFlag(obj)],\n \"<\",\n formatValue(value),\n `>`\n ];\n } else if (isReactive(obj)) {\n return [\n \"div\",\n {},\n [\"span\", vueStyle, isShallow(obj) ? \"ShallowReactive\" : \"Reactive\"],\n \"<\",\n formatValue(obj),\n `>${isReadonly(obj) ? ` (readonly)` : ``}`\n ];\n } else if (isReadonly(obj)) {\n return [\n \"div\",\n {},\n [\"span\", vueStyle, isShallow(obj) ? \"ShallowReadonly\" : \"Readonly\"],\n \"<\",\n formatValue(obj),\n \">\"\n ];\n }\n return null;\n },\n hasBody(obj) {\n return obj && obj.__isVue;\n },\n body(obj) {\n if (obj && obj.__isVue) {\n return [\n \"div\",\n {},\n ...formatInstance(obj.$)\n ];\n }\n }\n };\n function formatInstance(instance) {\n const blocks = [];\n if (instance.type.props && instance.props) {\n blocks.push(createInstanceBlock(\"props\", toRaw(instance.props)));\n }\n if (instance.setupState !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock(\"setup\", instance.setupState));\n }\n if (instance.data !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock(\"data\", toRaw(instance.data)));\n }\n const computed = extractKeys(instance, \"computed\");\n if (computed) {\n blocks.push(createInstanceBlock(\"computed\", computed));\n }\n const injected = extractKeys(instance, \"inject\");\n if (injected) {\n blocks.push(createInstanceBlock(\"injected\", injected));\n }\n blocks.push([\n \"div\",\n {},\n [\n \"span\",\n {\n style: keywordStyle.style + \";opacity:0.66\"\n },\n \"$ (internal): \"\n ],\n [\"object\", { object: instance }]\n ]);\n return blocks;\n }\n function createInstanceBlock(type, target) {\n target = extend({}, target);\n if (!Object.keys(target).length) {\n return [\"span\", {}];\n }\n return [\n \"div\",\n { style: \"line-height:1.25em;margin-bottom:0.6em\" },\n [\n \"div\",\n {\n style: \"color:#476582\"\n },\n type\n ],\n [\n \"div\",\n {\n style: \"padding-left:1.25em\"\n },\n ...Object.keys(target).map((key) => {\n return [\n \"div\",\n {},\n [\"span\", keywordStyle, key + \": \"],\n formatValue(target[key], false)\n ];\n })\n ]\n ];\n }\n function formatValue(v, asRaw = true) {\n if (typeof v === \"number\") {\n return [\"span\", numberStyle, v];\n } else if (typeof v === \"string\") {\n return [\"span\", stringStyle, JSON.stringify(v)];\n } else if (typeof v === \"boolean\") {\n return [\"span\", keywordStyle, v];\n } else if (isObject(v)) {\n return [\"object\", { object: asRaw ? toRaw(v) : v }];\n } else {\n return [\"span\", stringStyle, String(v)];\n }\n }\n function extractKeys(instance, type) {\n const Comp = instance.type;\n if (isFunction(Comp)) {\n return;\n }\n const extracted = {};\n for (const key in instance.ctx) {\n if (isKeyOfType(Comp, key, type)) {\n extracted[key] = instance.ctx[key];\n }\n }\n return extracted;\n }\n function isKeyOfType(Comp, key, type) {\n const opts = Comp[type];\n if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) {\n return true;\n }\n if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n return true;\n }\n if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) {\n return true;\n }\n }\n function genRefFlag(v) {\n if (isShallow(v)) {\n return `ShallowRef`;\n }\n if (v.effect) {\n return `ComputedRef`;\n }\n return `Ref`;\n }\n if (window.devtoolsFormatters) {\n window.devtoolsFormatters.push(formatter);\n } else {\n window.devtoolsFormatters = [formatter];\n }\n}\n\nfunction withMemo(memo, render, cache, index) {\n const cached = cache[index];\n if (cached && isMemoSame(cached, memo)) {\n return cached;\n }\n const ret = render();\n ret.memo = memo.slice();\n ret.cacheIndex = index;\n return cache[index] = ret;\n}\nfunction isMemoSame(cached, memo) {\n const prev = cached.memo;\n if (prev.length != memo.length) {\n return false;\n }\n for (let i = 0; i < prev.length; i++) {\n if (hasChanged(prev[i], memo[i])) {\n return false;\n }\n }\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(cached);\n }\n return true;\n}\n\nconst version = \"3.5.20\";\nconst warn = !!(process.env.NODE_ENV !== \"production\") ? warn$1 : NOOP;\nconst ErrorTypeStrings = ErrorTypeStrings$1 ;\nconst devtools = !!(process.env.NODE_ENV !== \"production\") || true ? devtools$1 : void 0;\nconst setDevtoolsHook = !!(process.env.NODE_ENV !== \"production\") || true ? setDevtoolsHook$1 : NOOP;\nconst _ssrUtils = {\n createComponentInstance,\n setupComponent,\n renderComponentRoot,\n setCurrentRenderingInstance,\n isVNode: isVNode,\n normalizeVNode,\n getComponentPublicInstance,\n ensureValidVNode,\n pushWarningContext,\n popWarningContext\n};\nconst ssrUtils = _ssrUtils ;\nconst resolveFilter = null;\nconst compatUtils = null;\nconst DeprecationTypes = null;\n\nexport { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, Static, Suspense, Teleport, Text, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSlots, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeModels, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useId, useModel, useSSRContext, useSlots, useTemplateRef, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };\n","/**\n* @vue/runtime-dom v3.5.20\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { warn, BaseTransitionPropsValidators, h, BaseTransition, assertNumber, getCurrentInstance, onBeforeUpdate, queuePostFlushCb, onMounted, watch, onUnmounted, Fragment, Static, camelize, callWithAsyncErrorHandling, defineComponent, nextTick, unref, createVNode, useTransitionState, onUpdated, toRaw, getTransitionRawChildren, setTransitionHooks, resolveTransitionHooks, Text, createRenderer, createHydrationRenderer, isRuntimeOnly } from '@vue/runtime-core';\nexport * from '@vue/runtime-core';\nimport { extend, isObject, toNumber, isArray, NOOP, normalizeCssVarValue, isString, hyphenate, capitalize, isSpecialBooleanAttr, includeBooleanAttr, isSymbol, isFunction, isOn, isModelListener, camelize as camelize$1, isPlainObject, hasOwn, EMPTY_OBJ, looseToNumber, looseIndexOf, isSet, looseEqual, invokeArrayFns, isHTMLTag, isSVGTag, isMathMLTag } from '@vue/shared';\n\nlet policy = void 0;\nconst tt = typeof window !== \"undefined\" && window.trustedTypes;\nif (tt) {\n try {\n policy = /* @__PURE__ */ tt.createPolicy(\"vue\", {\n createHTML: (val) => val\n });\n } catch (e) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Error creating trusted types policy: ${e}`);\n }\n}\nconst unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val;\nconst svgNS = \"http://www.w3.org/2000/svg\";\nconst mathmlNS = \"http://www.w3.org/1998/Math/MathML\";\nconst doc = typeof document !== \"undefined\" ? document : null;\nconst templateContainer = doc && /* @__PURE__ */ doc.createElement(\"template\");\nconst nodeOps = {\n insert: (child, parent, anchor) => {\n parent.insertBefore(child, anchor || null);\n },\n remove: (child) => {\n const parent = child.parentNode;\n if (parent) {\n parent.removeChild(child);\n }\n },\n createElement: (tag, namespace, is, props) => {\n const el = namespace === \"svg\" ? doc.createElementNS(svgNS, tag) : namespace === \"mathml\" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag);\n if (tag === \"select\" && props && props.multiple != null) {\n el.setAttribute(\"multiple\", props.multiple);\n }\n return el;\n },\n createText: (text) => doc.createTextNode(text),\n createComment: (text) => doc.createComment(text),\n setText: (node, text) => {\n node.nodeValue = text;\n },\n setElementText: (el, text) => {\n el.textContent = text;\n },\n parentNode: (node) => node.parentNode,\n nextSibling: (node) => node.nextSibling,\n querySelector: (selector) => doc.querySelector(selector),\n setScopeId(el, id) {\n el.setAttribute(id, \"\");\n },\n // __UNSAFE__\n // Reason: innerHTML.\n // Static content here can only come from compiled templates.\n // As long as the user only uses trusted templates, this is safe.\n insertStaticContent(content, parent, anchor, namespace, start, end) {\n const before = anchor ? anchor.previousSibling : parent.lastChild;\n if (start && (start === end || start.nextSibling)) {\n while (true) {\n parent.insertBefore(start.cloneNode(true), anchor);\n if (start === end || !(start = start.nextSibling)) break;\n }\n } else {\n templateContainer.innerHTML = unsafeToTrustedHTML(\n namespace === \"svg\" ? `<svg>${content}</svg>` : namespace === \"mathml\" ? `<math>${content}</math>` : content\n );\n const template = templateContainer.content;\n if (namespace === \"svg\" || namespace === \"mathml\") {\n const wrapper = template.firstChild;\n while (wrapper.firstChild) {\n template.appendChild(wrapper.firstChild);\n }\n template.removeChild(wrapper);\n }\n parent.insertBefore(template, anchor);\n }\n return [\n // first\n before ? before.nextSibling : parent.firstChild,\n // last\n anchor ? anchor.previousSibling : parent.lastChild\n ];\n }\n};\n\nconst TRANSITION = \"transition\";\nconst ANIMATION = \"animation\";\nconst vtcKey = Symbol(\"_vtc\");\nconst DOMTransitionPropsValidators = {\n name: String,\n type: String,\n css: {\n type: Boolean,\n default: true\n },\n duration: [String, Number, Object],\n enterFromClass: String,\n enterActiveClass: String,\n enterToClass: String,\n appearFromClass: String,\n appearActiveClass: String,\n appearToClass: String,\n leaveFromClass: String,\n leaveActiveClass: String,\n leaveToClass: String\n};\nconst TransitionPropsValidators = /* @__PURE__ */ extend(\n {},\n BaseTransitionPropsValidators,\n DOMTransitionPropsValidators\n);\nconst decorate$1 = (t) => {\n t.displayName = \"Transition\";\n t.props = TransitionPropsValidators;\n return t;\n};\nconst Transition = /* @__PURE__ */ decorate$1(\n (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots)\n);\nconst callHook = (hook, args = []) => {\n if (isArray(hook)) {\n hook.forEach((h2) => h2(...args));\n } else if (hook) {\n hook(...args);\n }\n};\nconst hasExplicitCallback = (hook) => {\n return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;\n};\nfunction resolveTransitionProps(rawProps) {\n const baseProps = {};\n for (const key in rawProps) {\n if (!(key in DOMTransitionPropsValidators)) {\n baseProps[key] = rawProps[key];\n }\n }\n if (rawProps.css === false) {\n return baseProps;\n }\n const {\n name = \"v\",\n type,\n duration,\n enterFromClass = `${name}-enter-from`,\n enterActiveClass = `${name}-enter-active`,\n enterToClass = `${name}-enter-to`,\n appearFromClass = enterFromClass,\n appearActiveClass = enterActiveClass,\n appearToClass = enterToClass,\n leaveFromClass = `${name}-leave-from`,\n leaveActiveClass = `${name}-leave-active`,\n leaveToClass = `${name}-leave-to`\n } = rawProps;\n const durations = normalizeDuration(duration);\n const enterDuration = durations && durations[0];\n const leaveDuration = durations && durations[1];\n const {\n onBeforeEnter,\n onEnter,\n onEnterCancelled,\n onLeave,\n onLeaveCancelled,\n onBeforeAppear = onBeforeEnter,\n onAppear = onEnter,\n onAppearCancelled = onEnterCancelled\n } = baseProps;\n const finishEnter = (el, isAppear, done, isCancelled) => {\n el._enterCancelled = isCancelled;\n removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n done && done();\n };\n const finishLeave = (el, done) => {\n el._isLeaving = false;\n removeTransitionClass(el, leaveFromClass);\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n done && done();\n };\n const makeEnterHook = (isAppear) => {\n return (el, done) => {\n const hook = isAppear ? onAppear : onEnter;\n const resolve = () => finishEnter(el, isAppear, done);\n callHook(hook, [el, resolve]);\n nextFrame(() => {\n removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n if (!hasExplicitCallback(hook)) {\n whenTransitionEnds(el, type, enterDuration, resolve);\n }\n });\n };\n };\n return extend(baseProps, {\n onBeforeEnter(el) {\n callHook(onBeforeEnter, [el]);\n addTransitionClass(el, enterFromClass);\n addTransitionClass(el, enterActiveClass);\n },\n onBeforeAppear(el) {\n callHook(onBeforeAppear, [el]);\n addTransitionClass(el, appearFromClass);\n addTransitionClass(el, appearActiveClass);\n },\n onEnter: makeEnterHook(false),\n onAppear: makeEnterHook(true),\n onLeave(el, done) {\n el._isLeaving = true;\n const resolve = () => finishLeave(el, done);\n addTransitionClass(el, leaveFromClass);\n if (!el._enterCancelled) {\n forceReflow();\n addTransitionClass(el, leaveActiveClass);\n } else {\n addTransitionClass(el, leaveActiveClass);\n forceReflow();\n }\n nextFrame(() => {\n if (!el._isLeaving) {\n return;\n }\n removeTransitionClass(el, leaveFromClass);\n addTransitionClass(el, leaveToClass);\n if (!hasExplicitCallback(onLeave)) {\n whenTransitionEnds(el, type, leaveDuration, resolve);\n }\n });\n callHook(onLeave, [el, resolve]);\n },\n onEnterCancelled(el) {\n finishEnter(el, false, void 0, true);\n callHook(onEnterCancelled, [el]);\n },\n onAppearCancelled(el) {\n finishEnter(el, true, void 0, true);\n callHook(onAppearCancelled, [el]);\n },\n onLeaveCancelled(el) {\n finishLeave(el);\n callHook(onLeaveCancelled, [el]);\n }\n });\n}\nfunction normalizeDuration(duration) {\n if (duration == null) {\n return null;\n } else if (isObject(duration)) {\n return [NumberOf(duration.enter), NumberOf(duration.leave)];\n } else {\n const n = NumberOf(duration);\n return [n, n];\n }\n}\nfunction NumberOf(val) {\n const res = toNumber(val);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(res, \"<transition> explicit duration\");\n }\n return res;\n}\nfunction addTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach((c) => c && el.classList.remove(c));\n const _vtc = el[vtcKey];\n if (_vtc) {\n _vtc.delete(cls);\n if (!_vtc.size) {\n el[vtcKey] = void 0;\n }\n }\n}\nfunction nextFrame(cb) {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n const id = el._endId = ++endId;\n const resolveIfNotStale = () => {\n if (id === el._endId) {\n resolve();\n }\n };\n if (explicitTimeout != null) {\n return setTimeout(resolveIfNotStale, explicitTimeout);\n }\n const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n if (!type) {\n return resolve();\n }\n const endEvent = type + \"end\";\n let ended = 0;\n const end = () => {\n el.removeEventListener(endEvent, onEnd);\n resolveIfNotStale();\n };\n const onEnd = (e) => {\n if (e.target === el && ++ended >= propCount) {\n end();\n }\n };\n setTimeout(() => {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n const styles = window.getComputedStyle(el);\n const getStyleProperties = (key) => (styles[key] || \"\").split(\", \");\n const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);\n const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);\n const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n const animationTimeout = getTimeout(animationDelays, animationDurations);\n let type = null;\n let timeout = 0;\n let propCount = 0;\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n }\n const hasTransform = type === TRANSITION && /\\b(transform|all)(,|$)/.test(\n getStyleProperties(`${TRANSITION}Property`).toString()\n );\n return {\n type,\n timeout,\n propCount,\n hasTransform\n };\n}\nfunction getTimeout(delays, durations) {\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\nfunction toMs(s) {\n if (s === \"auto\") return 0;\n return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n return document.body.offsetHeight;\n}\n\nfunction patchClass(el, value, isSVG) {\n const transitionClasses = el[vtcKey];\n if (transitionClasses) {\n value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(\" \");\n }\n if (value == null) {\n el.removeAttribute(\"class\");\n } else if (isSVG) {\n el.setAttribute(\"class\", value);\n } else {\n el.className = value;\n }\n}\n\nconst vShowOriginalDisplay = Symbol(\"_vod\");\nconst vShowHidden = Symbol(\"_vsh\");\nconst vShow = {\n // used for prop mismatch check during hydration\n name: \"show\",\n beforeMount(el, { value }, { transition }) {\n el[vShowOriginalDisplay] = el.style.display === \"none\" ? \"\" : el.style.display;\n if (transition && value) {\n transition.beforeEnter(el);\n } else {\n setDisplay(el, value);\n }\n },\n mounted(el, { value }, { transition }) {\n if (transition && value) {\n transition.enter(el);\n }\n },\n updated(el, { value, oldValue }, { transition }) {\n if (!value === !oldValue) return;\n if (transition) {\n if (value) {\n transition.beforeEnter(el);\n setDisplay(el, true);\n transition.enter(el);\n } else {\n transition.leave(el, () => {\n setDisplay(el, false);\n });\n }\n } else {\n setDisplay(el, value);\n }\n },\n beforeUnmount(el, { value }) {\n setDisplay(el, value);\n }\n};\nfunction setDisplay(el, value) {\n el.style.display = value ? el[vShowOriginalDisplay] : \"none\";\n el[vShowHidden] = !value;\n}\nfunction initVShowForSSR() {\n vShow.getSSRProps = ({ value }) => {\n if (!value) {\n return { style: { display: \"none\" } };\n }\n };\n}\n\nconst CSS_VAR_TEXT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"CSS_VAR_TEXT\" : \"\");\nfunction useCssVars(getter) {\n const instance = getCurrentInstance();\n if (!instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`useCssVars is called without current active component instance.`);\n return;\n }\n const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {\n Array.from(\n document.querySelectorAll(`[data-v-owner=\"${instance.uid}\"]`)\n ).forEach((node) => setVarsOnNode(node, vars));\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n instance.getCssVars = () => getter(instance.proxy);\n }\n const setVars = () => {\n const vars = getter(instance.proxy);\n if (instance.ce) {\n setVarsOnNode(instance.ce, vars);\n } else {\n setVarsOnVNode(instance.subTree, vars);\n }\n updateTeleports(vars);\n };\n onBeforeUpdate(() => {\n queuePostFlushCb(setVars);\n });\n onMounted(() => {\n watch(setVars, NOOP, { flush: \"post\" });\n const ob = new MutationObserver(setVars);\n ob.observe(instance.subTree.el.parentNode, { childList: true });\n onUnmounted(() => ob.disconnect());\n });\n}\nfunction setVarsOnVNode(vnode, vars) {\n if (vnode.shapeFlag & 128) {\n const suspense = vnode.suspense;\n vnode = suspense.activeBranch;\n if (suspense.pendingBranch && !suspense.isHydrating) {\n suspense.effects.push(() => {\n setVarsOnVNode(suspense.activeBranch, vars);\n });\n }\n }\n while (vnode.component) {\n vnode = vnode.component.subTree;\n }\n if (vnode.shapeFlag & 1 && vnode.el) {\n setVarsOnNode(vnode.el, vars);\n } else if (vnode.type === Fragment) {\n vnode.children.forEach((c) => setVarsOnVNode(c, vars));\n } else if (vnode.type === Static) {\n let { el, anchor } = vnode;\n while (el) {\n setVarsOnNode(el, vars);\n if (el === anchor) break;\n el = el.nextSibling;\n }\n }\n}\nfunction setVarsOnNode(el, vars) {\n if (el.nodeType === 1) {\n const style = el.style;\n let cssText = \"\";\n for (const key in vars) {\n const value = normalizeCssVarValue(vars[key]);\n style.setProperty(`--${key}`, value);\n cssText += `--${key}: ${value};`;\n }\n style[CSS_VAR_TEXT] = cssText;\n }\n}\n\nconst displayRE = /(^|;)\\s*display\\s*:/;\nfunction patchStyle(el, prev, next) {\n const style = el.style;\n const isCssString = isString(next);\n let hasControlledDisplay = false;\n if (next && !isCssString) {\n if (prev) {\n if (!isString(prev)) {\n for (const key in prev) {\n if (next[key] == null) {\n setStyle(style, key, \"\");\n }\n }\n } else {\n for (const prevStyle of prev.split(\";\")) {\n const key = prevStyle.slice(0, prevStyle.indexOf(\":\")).trim();\n if (next[key] == null) {\n setStyle(style, key, \"\");\n }\n }\n }\n }\n for (const key in next) {\n if (key === \"display\") {\n hasControlledDisplay = true;\n }\n setStyle(style, key, next[key]);\n }\n } else {\n if (isCssString) {\n if (prev !== next) {\n const cssVarText = style[CSS_VAR_TEXT];\n if (cssVarText) {\n next += \";\" + cssVarText;\n }\n style.cssText = next;\n hasControlledDisplay = displayRE.test(next);\n }\n } else if (prev) {\n el.removeAttribute(\"style\");\n }\n }\n if (vShowOriginalDisplay in el) {\n el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : \"\";\n if (el[vShowHidden]) {\n style.display = \"none\";\n }\n }\n}\nconst semicolonRE = /[^\\\\];\\s*$/;\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n if (isArray(val)) {\n val.forEach((v) => setStyle(style, name, v));\n } else {\n if (val == null) val = \"\";\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (semicolonRE.test(val)) {\n warn(\n `Unexpected semicolon at the end of '${name}' style value: '${val}'`\n );\n }\n }\n if (name.startsWith(\"--\")) {\n style.setProperty(name, val);\n } else {\n const prefixed = autoPrefix(style, name);\n if (importantRE.test(val)) {\n style.setProperty(\n hyphenate(prefixed),\n val.replace(importantRE, \"\"),\n \"important\"\n );\n } else {\n style[prefixed] = val;\n }\n }\n }\n}\nconst prefixes = [\"Webkit\", \"Moz\", \"ms\"];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n const cached = prefixCache[rawName];\n if (cached) {\n return cached;\n }\n let name = camelize(rawName);\n if (name !== \"filter\" && name in style) {\n return prefixCache[rawName] = name;\n }\n name = capitalize(name);\n for (let i = 0; i < prefixes.length; i++) {\n const prefixed = prefixes[i] + name;\n if (prefixed in style) {\n return prefixCache[rawName] = prefixed;\n }\n }\n return rawName;\n}\n\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance, isBoolean = isSpecialBooleanAttr(key)) {\n if (isSVG && key.startsWith(\"xlink:\")) {\n if (value == null) {\n el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n if (value == null || isBoolean && !includeBooleanAttr(value)) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(\n key,\n isBoolean ? \"\" : isSymbol(value) ? String(value) : value\n );\n }\n }\n}\n\nfunction patchDOMProp(el, key, value, parentComponent, attrName) {\n if (key === \"innerHTML\" || key === \"textContent\") {\n if (value != null) {\n el[key] = key === \"innerHTML\" ? unsafeToTrustedHTML(value) : value;\n }\n return;\n }\n const tag = el.tagName;\n if (key === \"value\" && tag !== \"PROGRESS\" && // custom elements may use _value internally\n !tag.includes(\"-\")) {\n const oldValue = tag === \"OPTION\" ? el.getAttribute(\"value\") || \"\" : el.value;\n const newValue = value == null ? (\n // #11647: value should be set as empty string for null and undefined,\n // but <input type=\"checkbox\"> should be set as 'on'.\n el.type === \"checkbox\" ? \"on\" : \"\"\n ) : String(value);\n if (oldValue !== newValue || !(\"_value\" in el)) {\n el.value = newValue;\n }\n if (value == null) {\n el.removeAttribute(key);\n }\n el._value = value;\n return;\n }\n let needRemove = false;\n if (value === \"\" || value == null) {\n const type = typeof el[key];\n if (type === \"boolean\") {\n value = includeBooleanAttr(value);\n } else if (value == null && type === \"string\") {\n value = \"\";\n needRemove = true;\n } else if (type === \"number\") {\n value = 0;\n needRemove = true;\n }\n }\n try {\n el[key] = value;\n } catch (e) {\n if (!!(process.env.NODE_ENV !== \"production\") && !needRemove) {\n warn(\n `Failed setting prop \"${key}\" on <${tag.toLowerCase()}>: value ${value} is invalid.`,\n e\n );\n }\n }\n needRemove && el.removeAttribute(attrName || key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n el.removeEventListener(event, handler, options);\n}\nconst veiKey = Symbol(\"_vei\");\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n const invokers = el[veiKey] || (el[veiKey] = {});\n const existingInvoker = invokers[rawName];\n if (nextValue && existingInvoker) {\n existingInvoker.value = !!(process.env.NODE_ENV !== \"production\") ? sanitizeEventValue(nextValue, rawName) : nextValue;\n } else {\n const [name, options] = parseName(rawName);\n if (nextValue) {\n const invoker = invokers[rawName] = createInvoker(\n !!(process.env.NODE_ENV !== \"production\") ? sanitizeEventValue(nextValue, rawName) : nextValue,\n instance\n );\n addEventListener(el, name, invoker, options);\n } else if (existingInvoker) {\n removeEventListener(el, name, existingInvoker, options);\n invokers[rawName] = void 0;\n }\n }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n let options;\n if (optionsModifierRE.test(name)) {\n options = {};\n let m;\n while (m = name.match(optionsModifierRE)) {\n name = name.slice(0, name.length - m[0].length);\n options[m[0].toLowerCase()] = true;\n }\n }\n const event = name[2] === \":\" ? name.slice(3) : hyphenate(name.slice(2));\n return [event, options];\n}\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());\nfunction createInvoker(initialValue, instance) {\n const invoker = (e) => {\n if (!e._vts) {\n e._vts = Date.now();\n } else if (e._vts <= invoker.attached) {\n return;\n }\n callWithAsyncErrorHandling(\n patchStopImmediatePropagation(e, invoker.value),\n instance,\n 5,\n [e]\n );\n };\n invoker.value = initialValue;\n invoker.attached = getNow();\n return invoker;\n}\nfunction sanitizeEventValue(value, propName) {\n if (isFunction(value) || isArray(value)) {\n return value;\n }\n warn(\n `Wrong type passed as event handler to ${propName} - did you forget @ or : in front of your prop?\nExpected function or array of functions, received type ${typeof value}.`\n );\n return NOOP;\n}\nfunction patchStopImmediatePropagation(e, value) {\n if (isArray(value)) {\n const originalStop = e.stopImmediatePropagation;\n e.stopImmediatePropagation = () => {\n originalStop.call(e);\n e._stopped = true;\n };\n return value.map(\n (fn) => (e2) => !e2._stopped && fn && fn(e2)\n );\n } else {\n return value;\n }\n}\n\nconst isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter\nkey.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;\nconst patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => {\n const isSVG = namespace === \"svg\";\n if (key === \"class\") {\n patchClass(el, nextValue, isSVG);\n } else if (key === \"style\") {\n patchStyle(el, prevValue, nextValue);\n } else if (isOn(key)) {\n if (!isModelListener(key)) {\n patchEvent(el, key, prevValue, nextValue, parentComponent);\n }\n } else if (key[0] === \".\" ? (key = key.slice(1), true) : key[0] === \"^\" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {\n patchDOMProp(el, key, nextValue);\n if (!el.tagName.includes(\"-\") && (key === \"value\" || key === \"checked\" || key === \"selected\")) {\n patchAttr(el, key, nextValue, isSVG, parentComponent, key !== \"value\");\n }\n } else if (\n // #11081 force set props for possible async custom element\n el._isVueCE && (/[A-Z]/.test(key) || !isString(nextValue))\n ) {\n patchDOMProp(el, camelize$1(key), nextValue, parentComponent, key);\n } else {\n if (key === \"true-value\") {\n el._trueValue = nextValue;\n } else if (key === \"false-value\") {\n el._falseValue = nextValue;\n }\n patchAttr(el, key, nextValue, isSVG);\n }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n if (isSVG) {\n if (key === \"innerHTML\" || key === \"textContent\") {\n return true;\n }\n if (key in el && isNativeOn(key) && isFunction(value)) {\n return true;\n }\n return false;\n }\n if (key === \"spellcheck\" || key === \"draggable\" || key === \"translate\" || key === \"autocorrect\") {\n return false;\n }\n if (key === \"form\") {\n return false;\n }\n if (key === \"list\" && el.tagName === \"INPUT\") {\n return false;\n }\n if (key === \"type\" && el.tagName === \"TEXTAREA\") {\n return false;\n }\n if (key === \"width\" || key === \"height\") {\n const tag = el.tagName;\n if (tag === \"IMG\" || tag === \"VIDEO\" || tag === \"CANVAS\" || tag === \"SOURCE\") {\n return false;\n }\n }\n if (isNativeOn(key) && isString(value)) {\n return false;\n }\n return key in el;\n}\n\nconst REMOVAL = {};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineCustomElement(options, extraOptions, _createApp) {\n const Comp = defineComponent(options, extraOptions);\n if (isPlainObject(Comp)) extend(Comp, extraOptions);\n class VueCustomElement extends VueElement {\n constructor(initialProps) {\n super(Comp, initialProps, _createApp);\n }\n }\n VueCustomElement.def = Comp;\n return VueCustomElement;\n}\n\nconst defineSSRCustomElement = (/* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => {\n return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp);\n});\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n constructor(_def, _props = {}, _createApp = createApp) {\n super();\n this._def = _def;\n this._props = _props;\n this._createApp = _createApp;\n this._isVueCE = true;\n /**\n * @internal\n */\n this._instance = null;\n /**\n * @internal\n */\n this._app = null;\n /**\n * @internal\n */\n this._nonce = this._def.nonce;\n this._connected = false;\n this._resolved = false;\n this._numberProps = null;\n this._styleChildren = /* @__PURE__ */ new WeakSet();\n this._ob = null;\n if (this.shadowRoot && _createApp !== createApp) {\n this._root = this.shadowRoot;\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && this.shadowRoot) {\n warn(\n `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \\`defineSSRCustomElement\\`.`\n );\n }\n if (_def.shadowRoot !== false) {\n this.attachShadow({ mode: \"open\" });\n this._root = this.shadowRoot;\n } else {\n this._root = this;\n }\n }\n }\n connectedCallback() {\n if (!this.isConnected) return;\n if (!this.shadowRoot && !this._resolved) {\n this._parseSlots();\n }\n this._connected = true;\n let parent = this;\n while (parent = parent && (parent.parentNode || parent.host)) {\n if (parent instanceof VueElement) {\n this._parent = parent;\n break;\n }\n }\n if (!this._instance) {\n if (this._resolved) {\n this._mount(this._def);\n } else {\n if (parent && parent._pendingResolve) {\n this._pendingResolve = parent._pendingResolve.then(() => {\n this._pendingResolve = void 0;\n this._resolveDef();\n });\n } else {\n this._resolveDef();\n }\n }\n }\n }\n _setParent(parent = this._parent) {\n if (parent) {\n this._instance.parent = parent._instance;\n this._inheritParentContext(parent);\n }\n }\n _inheritParentContext(parent = this._parent) {\n if (parent && this._app) {\n Object.setPrototypeOf(\n this._app._context.provides,\n parent._instance.provides\n );\n }\n }\n disconnectedCallback() {\n this._connected = false;\n nextTick(() => {\n if (!this._connected) {\n if (this._ob) {\n this._ob.disconnect();\n this._ob = null;\n }\n this._app && this._app.unmount();\n if (this._instance) this._instance.ce = void 0;\n this._app = this._instance = null;\n }\n });\n }\n /**\n * resolve inner component definition (handle possible async component)\n */\n _resolveDef() {\n if (this._pendingResolve) {\n return;\n }\n for (let i = 0; i < this.attributes.length; i++) {\n this._setAttr(this.attributes[i].name);\n }\n this._ob = new MutationObserver((mutations) => {\n for (const m of mutations) {\n this._setAttr(m.attributeName);\n }\n });\n this._ob.observe(this, { attributes: true });\n const resolve = (def, isAsync = false) => {\n this._resolved = true;\n this._pendingResolve = void 0;\n const { props, styles } = def;\n let numberProps;\n if (props && !isArray(props)) {\n for (const key in props) {\n const opt = props[key];\n if (opt === Number || opt && opt.type === Number) {\n if (key in this._props) {\n this._props[key] = toNumber(this._props[key]);\n }\n (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize$1(key)] = true;\n }\n }\n }\n this._numberProps = numberProps;\n this._resolveProps(def);\n if (this.shadowRoot) {\n this._applyStyles(styles);\n } else if (!!(process.env.NODE_ENV !== \"production\") && styles) {\n warn(\n \"Custom element style injection is not supported when using shadowRoot: false\"\n );\n }\n this._mount(def);\n };\n const asyncDef = this._def.__asyncLoader;\n if (asyncDef) {\n this._pendingResolve = asyncDef().then((def) => {\n def.configureApp = this._def.configureApp;\n resolve(this._def = def, true);\n });\n } else {\n resolve(this._def);\n }\n }\n _mount(def) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) && !def.name) {\n def.name = \"VueElement\";\n }\n this._app = this._createApp(def);\n this._inheritParentContext();\n if (def.configureApp) {\n def.configureApp(this._app);\n }\n this._app._ceVNode = this._createVNode();\n this._app.mount(this._root);\n const exposed = this._instance && this._instance.exposed;\n if (!exposed) return;\n for (const key in exposed) {\n if (!hasOwn(this, key)) {\n Object.defineProperty(this, key, {\n // unwrap ref to be consistent with public instance behavior\n get: () => unref(exposed[key])\n });\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`Exposed property \"${key}\" already exists on custom element.`);\n }\n }\n }\n _resolveProps(def) {\n const { props } = def;\n const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});\n for (const key of Object.keys(this)) {\n if (key[0] !== \"_\" && declaredPropKeys.includes(key)) {\n this._setProp(key, this[key]);\n }\n }\n for (const key of declaredPropKeys.map(camelize$1)) {\n Object.defineProperty(this, key, {\n get() {\n return this._getProp(key);\n },\n set(val) {\n this._setProp(key, val, true, true);\n }\n });\n }\n }\n _setAttr(key) {\n if (key.startsWith(\"data-v-\")) return;\n const has = this.hasAttribute(key);\n let value = has ? this.getAttribute(key) : REMOVAL;\n const camelKey = camelize$1(key);\n if (has && this._numberProps && this._numberProps[camelKey]) {\n value = toNumber(value);\n }\n this._setProp(camelKey, value, false, true);\n }\n /**\n * @internal\n */\n _getProp(key) {\n return this._props[key];\n }\n /**\n * @internal\n */\n _setProp(key, val, shouldReflect = true, shouldUpdate = false) {\n if (val !== this._props[key]) {\n if (val === REMOVAL) {\n delete this._props[key];\n } else {\n this._props[key] = val;\n if (key === \"key\" && this._app) {\n this._app._ceVNode.key = val;\n }\n }\n if (shouldUpdate && this._instance) {\n this._update();\n }\n if (shouldReflect) {\n const ob = this._ob;\n ob && ob.disconnect();\n if (val === true) {\n this.setAttribute(hyphenate(key), \"\");\n } else if (typeof val === \"string\" || typeof val === \"number\") {\n this.setAttribute(hyphenate(key), val + \"\");\n } else if (!val) {\n this.removeAttribute(hyphenate(key));\n }\n ob && ob.observe(this, { attributes: true });\n }\n }\n }\n _update() {\n const vnode = this._createVNode();\n if (this._app) vnode.appContext = this._app._context;\n render(vnode, this._root);\n }\n _createVNode() {\n const baseProps = {};\n if (!this.shadowRoot) {\n baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this);\n }\n const vnode = createVNode(this._def, extend(baseProps, this._props));\n if (!this._instance) {\n vnode.ce = (instance) => {\n this._instance = instance;\n instance.ce = this;\n instance.isCE = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n instance.ceReload = (newStyles) => {\n if (this._styles) {\n this._styles.forEach((s) => this._root.removeChild(s));\n this._styles.length = 0;\n }\n this._applyStyles(newStyles);\n this._instance = null;\n this._update();\n };\n }\n const dispatch = (event, args) => {\n this.dispatchEvent(\n new CustomEvent(\n event,\n isPlainObject(args[0]) ? extend({ detail: args }, args[0]) : { detail: args }\n )\n );\n };\n instance.emit = (event, ...args) => {\n dispatch(event, args);\n if (hyphenate(event) !== event) {\n dispatch(hyphenate(event), args);\n }\n };\n this._setParent();\n };\n }\n return vnode;\n }\n _applyStyles(styles, owner) {\n if (!styles) return;\n if (owner) {\n if (owner === this._def || this._styleChildren.has(owner)) {\n return;\n }\n this._styleChildren.add(owner);\n }\n const nonce = this._nonce;\n for (let i = styles.length - 1; i >= 0; i--) {\n const s = document.createElement(\"style\");\n if (nonce) s.setAttribute(\"nonce\", nonce);\n s.textContent = styles[i];\n this.shadowRoot.prepend(s);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (owner) {\n if (owner.__hmrId) {\n if (!this._childStyles) this._childStyles = /* @__PURE__ */ new Map();\n let entry = this._childStyles.get(owner.__hmrId);\n if (!entry) {\n this._childStyles.set(owner.__hmrId, entry = []);\n }\n entry.push(s);\n }\n } else {\n (this._styles || (this._styles = [])).push(s);\n }\n }\n }\n }\n /**\n * Only called when shadowRoot is false\n */\n _parseSlots() {\n const slots = this._slots = {};\n let n;\n while (n = this.firstChild) {\n const slotName = n.nodeType === 1 && n.getAttribute(\"slot\") || \"default\";\n (slots[slotName] || (slots[slotName] = [])).push(n);\n this.removeChild(n);\n }\n }\n /**\n * Only called when shadowRoot is false\n */\n _renderSlots() {\n const outlets = (this._teleportTarget || this).querySelectorAll(\"slot\");\n const scopeId = this._instance.type.__scopeId;\n for (let i = 0; i < outlets.length; i++) {\n const o = outlets[i];\n const slotName = o.getAttribute(\"name\") || \"default\";\n const content = this._slots[slotName];\n const parent = o.parentNode;\n if (content) {\n for (const n of content) {\n if (scopeId && n.nodeType === 1) {\n const id = scopeId + \"-s\";\n const walker = document.createTreeWalker(n, 1);\n n.setAttribute(id, \"\");\n let child;\n while (child = walker.nextNode()) {\n child.setAttribute(id, \"\");\n }\n }\n parent.insertBefore(n, o);\n }\n } else {\n while (o.firstChild) parent.insertBefore(o.firstChild, o);\n }\n parent.removeChild(o);\n }\n }\n /**\n * @internal\n */\n _injectChildStyle(comp) {\n this._applyStyles(comp.styles, comp);\n }\n /**\n * @internal\n */\n _removeChildStyle(comp) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this._styleChildren.delete(comp);\n if (this._childStyles && comp.__hmrId) {\n const oldStyles = this._childStyles.get(comp.__hmrId);\n if (oldStyles) {\n oldStyles.forEach((s) => this._root.removeChild(s));\n oldStyles.length = 0;\n }\n }\n }\n }\n}\nfunction useHost(caller) {\n const instance = getCurrentInstance();\n const el = instance && instance.ce;\n if (el) {\n return el;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!instance) {\n warn(\n `${caller || \"useHost\"} called without an active component instance.`\n );\n } else {\n warn(\n `${caller || \"useHost\"} can only be used in components defined via defineCustomElement.`\n );\n }\n }\n return null;\n}\nfunction useShadowRoot() {\n const el = !!(process.env.NODE_ENV !== \"production\") ? useHost(\"useShadowRoot\") : useHost();\n return el && el.shadowRoot;\n}\n\nfunction useCssModule(name = \"$style\") {\n {\n const instance = getCurrentInstance();\n if (!instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`useCssModule must be called inside setup()`);\n return EMPTY_OBJ;\n }\n const modules = instance.type.__cssModules;\n if (!modules) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS modules injected.`);\n return EMPTY_OBJ;\n }\n const mod = modules[name];\n if (!mod) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS module named \"${name}\".`);\n return EMPTY_OBJ;\n }\n return mod;\n }\n}\n\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst moveCbKey = Symbol(\"_moveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nconst decorate = (t) => {\n delete t.props.mode;\n return t;\n};\nconst TransitionGroupImpl = /* @__PURE__ */ decorate({\n name: \"TransitionGroup\",\n props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {\n tag: String,\n moveClass: String\n }),\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevChildren;\n let children;\n onUpdated(() => {\n if (!prevChildren.length) {\n return;\n }\n const moveClass = props.moveClass || `${props.name || \"v\"}-move`;\n if (!hasCSSTransform(\n prevChildren[0].el,\n instance.vnode.el,\n moveClass\n )) {\n prevChildren = [];\n return;\n }\n prevChildren.forEach(callPendingCbs);\n prevChildren.forEach(recordPosition);\n const movedChildren = prevChildren.filter(applyTranslation);\n forceReflow();\n movedChildren.forEach((c) => {\n const el = c.el;\n const style = el.style;\n addTransitionClass(el, moveClass);\n style.transform = style.webkitTransform = style.transitionDuration = \"\";\n const cb = el[moveCbKey] = (e) => {\n if (e && e.target !== el) {\n return;\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(\"transitionend\", cb);\n el[moveCbKey] = null;\n removeTransitionClass(el, moveClass);\n }\n };\n el.addEventListener(\"transitionend\", cb);\n });\n prevChildren = [];\n });\n return () => {\n const rawProps = toRaw(props);\n const cssTransitionProps = resolveTransitionProps(rawProps);\n let tag = rawProps.tag || Fragment;\n prevChildren = [];\n if (children) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.el && child.el instanceof Element) {\n prevChildren.push(child);\n setTransitionHooks(\n child,\n resolveTransitionHooks(\n child,\n cssTransitionProps,\n state,\n instance\n )\n );\n positionMap.set(\n child,\n child.el.getBoundingClientRect()\n );\n }\n }\n }\n children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.key != null) {\n setTransitionHooks(\n child,\n resolveTransitionHooks(child, cssTransitionProps, state, instance)\n );\n } else if (!!(process.env.NODE_ENV !== \"production\") && child.type !== Text) {\n warn(`<TransitionGroup> children must be keyed.`);\n }\n }\n return createVNode(tag, null, children);\n };\n }\n});\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n const el = c.el;\n if (el[moveCbKey]) {\n el[moveCbKey]();\n }\n if (el[enterCbKey]) {\n el[enterCbKey]();\n }\n}\nfunction recordPosition(c) {\n newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n const oldPos = positionMap.get(c);\n const newPos = newPositionMap.get(c);\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n if (dx || dy) {\n const s = c.el.style;\n s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = \"0s\";\n return c;\n }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n const clone = el.cloneNode();\n const _vtc = el[vtcKey];\n if (_vtc) {\n _vtc.forEach((cls) => {\n cls.split(/\\s+/).forEach((c) => c && clone.classList.remove(c));\n });\n }\n moveClass.split(/\\s+/).forEach((c) => c && clone.classList.add(c));\n clone.style.display = \"none\";\n const container = root.nodeType === 1 ? root : root.parentNode;\n container.appendChild(clone);\n const { hasTransform } = getTransitionInfo(clone);\n container.removeChild(clone);\n return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n const fn = vnode.props[\"onUpdate:modelValue\"] || false;\n return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n const target = e.target;\n if (target.composing) {\n target.composing = false;\n target.dispatchEvent(new Event(\"input\"));\n }\n}\nconst assignKey = Symbol(\"_assign\");\nconst vModelText = {\n created(el, { modifiers: { lazy, trim, number } }, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n const castToNumber = number || vnode.props && vnode.props.type === \"number\";\n addEventListener(el, lazy ? \"change\" : \"input\", (e) => {\n if (e.target.composing) return;\n let domValue = el.value;\n if (trim) {\n domValue = domValue.trim();\n }\n if (castToNumber) {\n domValue = looseToNumber(domValue);\n }\n el[assignKey](domValue);\n });\n if (trim) {\n addEventListener(el, \"change\", () => {\n el.value = el.value.trim();\n });\n }\n if (!lazy) {\n addEventListener(el, \"compositionstart\", onCompositionStart);\n addEventListener(el, \"compositionend\", onCompositionEnd);\n addEventListener(el, \"change\", onCompositionEnd);\n }\n },\n // set value on mounted so it's after min/max for type=\"range\"\n mounted(el, { value }) {\n el.value = value == null ? \"\" : value;\n },\n beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n if (el.composing) return;\n const elValue = (number || el.type === \"number\") && !/^0\\d/.test(el.value) ? looseToNumber(el.value) : el.value;\n const newValue = value == null ? \"\" : value;\n if (elValue === newValue) {\n return;\n }\n if (document.activeElement === el && el.type !== \"range\") {\n if (lazy && value === oldValue) {\n return;\n }\n if (trim && el.value.trim() === newValue) {\n return;\n }\n }\n el.value = newValue;\n }\n};\nconst vModelCheckbox = {\n // #4096 array checkboxes need to be deep traversed\n deep: true,\n created(el, _, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n addEventListener(el, \"change\", () => {\n const modelValue = el._modelValue;\n const elementValue = getValue(el);\n const checked = el.checked;\n const assign = el[assignKey];\n if (isArray(modelValue)) {\n const index = looseIndexOf(modelValue, elementValue);\n const found = index !== -1;\n if (checked && !found) {\n assign(modelValue.concat(elementValue));\n } else if (!checked && found) {\n const filtered = [...modelValue];\n filtered.splice(index, 1);\n assign(filtered);\n }\n } else if (isSet(modelValue)) {\n const cloned = new Set(modelValue);\n if (checked) {\n cloned.add(elementValue);\n } else {\n cloned.delete(elementValue);\n }\n assign(cloned);\n } else {\n assign(getCheckboxValue(el, checked));\n }\n });\n },\n // set initial checked on mount to wait for true-value/false-value\n mounted: setChecked,\n beforeUpdate(el, binding, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n setChecked(el, binding, vnode);\n }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n el._modelValue = value;\n let checked;\n if (isArray(value)) {\n checked = looseIndexOf(value, vnode.props.value) > -1;\n } else if (isSet(value)) {\n checked = value.has(vnode.props.value);\n } else {\n if (value === oldValue) return;\n checked = looseEqual(value, getCheckboxValue(el, true));\n }\n if (el.checked !== checked) {\n el.checked = checked;\n }\n}\nconst vModelRadio = {\n created(el, { value }, vnode) {\n el.checked = looseEqual(value, vnode.props.value);\n el[assignKey] = getModelAssigner(vnode);\n addEventListener(el, \"change\", () => {\n el[assignKey](getValue(el));\n });\n },\n beforeUpdate(el, { value, oldValue }, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n if (value !== oldValue) {\n el.checked = looseEqual(value, vnode.props.value);\n }\n }\n};\nconst vModelSelect = {\n // <select multiple> value need to be deep traversed\n deep: true,\n created(el, { value, modifiers: { number } }, vnode) {\n const isSetModel = isSet(value);\n addEventListener(el, \"change\", () => {\n const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(\n (o) => number ? looseToNumber(getValue(o)) : getValue(o)\n );\n el[assignKey](\n el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]\n );\n el._assigning = true;\n nextTick(() => {\n el._assigning = false;\n });\n });\n el[assignKey] = getModelAssigner(vnode);\n },\n // set value in mounted & updated because <select> relies on its children\n // <option>s.\n mounted(el, { value }) {\n setSelected(el, value);\n },\n beforeUpdate(el, _binding, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n },\n updated(el, { value }) {\n if (!el._assigning) {\n setSelected(el, value);\n }\n }\n};\nfunction setSelected(el, value) {\n const isMultiple = el.multiple;\n const isArrayValue = isArray(value);\n if (isMultiple && !isArrayValue && !isSet(value)) {\n !!(process.env.NODE_ENV !== \"production\") && warn(\n `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.`\n );\n return;\n }\n for (let i = 0, l = el.options.length; i < l; i++) {\n const option = el.options[i];\n const optionValue = getValue(option);\n if (isMultiple) {\n if (isArrayValue) {\n const optionType = typeof optionValue;\n if (optionType === \"string\" || optionType === \"number\") {\n option.selected = value.some((v) => String(v) === String(optionValue));\n } else {\n option.selected = looseIndexOf(value, optionValue) > -1;\n }\n } else {\n option.selected = value.has(optionValue);\n }\n } else if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) el.selectedIndex = i;\n return;\n }\n }\n if (!isMultiple && el.selectedIndex !== -1) {\n el.selectedIndex = -1;\n }\n}\nfunction getValue(el) {\n return \"_value\" in el ? el._value : el.value;\n}\nfunction getCheckboxValue(el, checked) {\n const key = checked ? \"_trueValue\" : \"_falseValue\";\n return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n created(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, \"created\");\n },\n mounted(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, \"mounted\");\n },\n beforeUpdate(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, \"beforeUpdate\");\n },\n updated(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, \"updated\");\n }\n};\nfunction resolveDynamicModel(tagName, type) {\n switch (tagName) {\n case \"SELECT\":\n return vModelSelect;\n case \"TEXTAREA\":\n return vModelText;\n default:\n switch (type) {\n case \"checkbox\":\n return vModelCheckbox;\n case \"radio\":\n return vModelRadio;\n default:\n return vModelText;\n }\n }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n const modelToUse = resolveDynamicModel(\n el.tagName,\n vnode.props && vnode.props.type\n );\n const fn = modelToUse[hook];\n fn && fn(el, binding, vnode, prevVNode);\n}\nfunction initVModelForSSR() {\n vModelText.getSSRProps = ({ value }) => ({ value });\n vModelRadio.getSSRProps = ({ value }, vnode) => {\n if (vnode.props && looseEqual(vnode.props.value, value)) {\n return { checked: true };\n }\n };\n vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n if (isArray(value)) {\n if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n return { checked: true };\n }\n } else if (isSet(value)) {\n if (vnode.props && value.has(vnode.props.value)) {\n return { checked: true };\n }\n } else if (value) {\n return { checked: true };\n }\n };\n vModelDynamic.getSSRProps = (binding, vnode) => {\n if (typeof vnode.type !== \"string\") {\n return;\n }\n const modelToUse = resolveDynamicModel(\n // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n vnode.type.toUpperCase(),\n vnode.props && vnode.props.type\n );\n if (modelToUse.getSSRProps) {\n return modelToUse.getSSRProps(binding, vnode);\n }\n };\n}\n\nconst systemModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\"];\nconst modifierGuards = {\n stop: (e) => e.stopPropagation(),\n prevent: (e) => e.preventDefault(),\n self: (e) => e.target !== e.currentTarget,\n ctrl: (e) => !e.ctrlKey,\n shift: (e) => !e.shiftKey,\n alt: (e) => !e.altKey,\n meta: (e) => !e.metaKey,\n left: (e) => \"button\" in e && e.button !== 0,\n middle: (e) => \"button\" in e && e.button !== 1,\n right: (e) => \"button\" in e && e.button !== 2,\n exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))\n};\nconst withModifiers = (fn, modifiers) => {\n const cache = fn._withMods || (fn._withMods = {});\n const cacheKey = modifiers.join(\".\");\n return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {\n for (let i = 0; i < modifiers.length; i++) {\n const guard = modifierGuards[modifiers[i]];\n if (guard && guard(event, modifiers)) return;\n }\n return fn(event, ...args);\n }));\n};\nconst keyNames = {\n esc: \"escape\",\n space: \" \",\n up: \"arrow-up\",\n left: \"arrow-left\",\n right: \"arrow-right\",\n down: \"arrow-down\",\n delete: \"backspace\"\n};\nconst withKeys = (fn, modifiers) => {\n const cache = fn._withKeys || (fn._withKeys = {});\n const cacheKey = modifiers.join(\".\");\n return cache[cacheKey] || (cache[cacheKey] = ((event) => {\n if (!(\"key\" in event)) {\n return;\n }\n const eventKey = hyphenate(event.key);\n if (modifiers.some(\n (k) => k === eventKey || keyNames[k] === eventKey\n )) {\n return fn(event);\n }\n }));\n};\n\nconst rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n return renderer || (renderer = createRenderer(rendererOptions));\n}\nfunction ensureHydrationRenderer() {\n renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions);\n enabledHydration = true;\n return renderer;\n}\nconst render = ((...args) => {\n ensureRenderer().render(...args);\n});\nconst hydrate = ((...args) => {\n ensureHydrationRenderer().hydrate(...args);\n});\nconst createApp = ((...args) => {\n const app = ensureRenderer().createApp(...args);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (!container) return;\n const component = app._component;\n if (!isFunction(component) && !component.render && !component.template) {\n component.template = container.innerHTML;\n }\n if (container.nodeType === 1) {\n container.textContent = \"\";\n }\n const proxy = mount(container, false, resolveRootNamespace(container));\n if (container instanceof Element) {\n container.removeAttribute(\"v-cloak\");\n container.setAttribute(\"data-v-app\", \"\");\n }\n return proxy;\n };\n return app;\n});\nconst createSSRApp = ((...args) => {\n const app = ensureHydrationRenderer().createApp(...args);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (container) {\n return mount(container, true, resolveRootNamespace(container));\n }\n };\n return app;\n});\nfunction resolveRootNamespace(container) {\n if (container instanceof SVGElement) {\n return \"svg\";\n }\n if (typeof MathMLElement === \"function\" && container instanceof MathMLElement) {\n return \"mathml\";\n }\n}\nfunction injectNativeTagCheck(app) {\n Object.defineProperty(app.config, \"isNativeTag\", {\n value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag),\n writable: false\n });\n}\nfunction injectCompilerOptionsCheck(app) {\n if (isRuntimeOnly()) {\n const isCustomElement = app.config.isCustomElement;\n Object.defineProperty(app.config, \"isCustomElement\", {\n get() {\n return isCustomElement;\n },\n set() {\n warn(\n `The \\`isCustomElement\\` config option is deprecated. Use \\`compilerOptions.isCustomElement\\` instead.`\n );\n }\n });\n const compilerOptions = app.config.compilerOptions;\n const msg = `The \\`compilerOptions\\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka \"full build\"). Since you are using the runtime-only build, \\`compilerOptions\\` must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\n- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`;\n Object.defineProperty(app.config, \"compilerOptions\", {\n get() {\n warn(msg);\n return compilerOptions;\n },\n set() {\n warn(msg);\n }\n });\n }\n}\nfunction normalizeContainer(container) {\n if (isString(container)) {\n const res = document.querySelector(container);\n if (!!(process.env.NODE_ENV !== \"production\") && !res) {\n warn(\n `Failed to mount app: mount target selector \"${container}\" returned null.`\n );\n }\n return res;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === \"closed\") {\n warn(\n `mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`\n );\n }\n return container;\n}\nlet ssrDirectiveInitialized = false;\nconst initDirectivesForSSR = () => {\n if (!ssrDirectiveInitialized) {\n ssrDirectiveInitialized = true;\n initVModelForSSR();\n initVShowForSSR();\n }\n} ;\n\nexport { Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, useHost, useShadowRoot, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers };\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;","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n prefix\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);\n prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n processClassesRecursively(classGroup, classMap, classGroupId, theme);\n });\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\nconst getPrefixedClassGroupEntries = (classGroupEntries, prefix) => {\n if (!prefix) {\n return classGroupEntries;\n }\n return classGroupEntries.map(([classGroupId, classGroup]) => {\n const prefixedClassGroup = classGroup.map(classDefinition => {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition;\n }\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]));\n }\n return classDefinition;\n });\n return [classGroupId, prefixedClassGroup];\n });\n};\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst createParseClassName = config => {\n const {\n separator,\n experimentalParseClassName\n } = config;\n const isSeparatorSingleCharacter = separator.length === 1;\n const firstSeparatorCharacter = separator[0];\n const separatorLength = separator.length;\n // parseClassName inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n const parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0) {\n if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + separatorLength;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);\n const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (experimentalParseClassName) {\n return className => experimentalParseClassName({\n className,\n parseClassName\n });\n }\n return parseClassName;\n};\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isArbitraryVariant = modifier[0] === '[';\n if (isArbitraryVariant) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n let hasPostfixModifier = Boolean(maybePostfixModifierPosition);\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst stringLengths = /*#__PURE__*/new Set(['px', 'full', 'screen']);\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isLength = value => isNumber(value) || stringLengths.has(value) || fractionRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, 'length', isLengthOnly);\nconst isNumber = value => Boolean(value) && !Number.isNaN(Number(value));\nconst isArbitraryNumber = value => getIsArbitraryValue(value, 'number', isNumber);\nconst isInteger = value => Boolean(value) && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst sizeLabels = /*#__PURE__*/new Set(['length', 'size', 'percentage']);\nconst isArbitrarySize = value => getIsArbitraryValue(value, sizeLabels, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, 'position', isNever);\nconst imageLabels = /*#__PURE__*/new Set(['image', 'url']);\nconst isArbitraryImage = value => getIsArbitraryValue(value, imageLabels, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, '', isShadow);\nconst isAny = () => true;\nconst getIsArbitraryValue = (value, label, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return typeof label === 'string' ? result[1] === label : label.has(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isInteger,\n isLength,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n const colors = fromTheme('colors');\n const spacing = fromTheme('spacing');\n const blur = fromTheme('blur');\n const brightness = fromTheme('brightness');\n const borderColor = fromTheme('borderColor');\n const borderRadius = fromTheme('borderRadius');\n const borderSpacing = fromTheme('borderSpacing');\n const borderWidth = fromTheme('borderWidth');\n const contrast = fromTheme('contrast');\n const grayscale = fromTheme('grayscale');\n const hueRotate = fromTheme('hueRotate');\n const invert = fromTheme('invert');\n const gap = fromTheme('gap');\n const gradientColorStops = fromTheme('gradientColorStops');\n const gradientColorStopPositions = fromTheme('gradientColorStopPositions');\n const inset = fromTheme('inset');\n const margin = fromTheme('margin');\n const opacity = fromTheme('opacity');\n const padding = fromTheme('padding');\n const saturate = fromTheme('saturate');\n const scale = fromTheme('scale');\n const sepia = fromTheme('sepia');\n const skew = fromTheme('skew');\n const space = fromTheme('space');\n const translate = fromTheme('translate');\n const getOverscroll = () => ['auto', 'contain', 'none'];\n const getOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const getSpacingWithAutoAndArbitrary = () => ['auto', isArbitraryValue, spacing];\n const getSpacingWithArbitrary = () => [isArbitraryValue, spacing];\n const getLengthWithEmptyAndArbitrary = () => ['', isLength, isArbitraryLength];\n const getNumberWithAutoAndArbitrary = () => ['auto', isNumber, isArbitraryValue];\n const getPositions = () => ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];\n const getLineStyles = () => ['solid', 'dashed', 'dotted', 'double', 'none'];\n const getBlendModes = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const getAlign = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'];\n const getZeroAndEmpty = () => ['', '0', isArbitraryValue];\n const getBreaks = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const getNumberAndArbitrary = () => [isNumber, isArbitraryValue];\n return {\n cacheSize: 500,\n separator: ':',\n theme: {\n colors: [isAny],\n spacing: [isLength, isArbitraryLength],\n blur: ['none', '', isTshirtSize, isArbitraryValue],\n brightness: getNumberAndArbitrary(),\n borderColor: [colors],\n borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],\n borderSpacing: getSpacingWithArbitrary(),\n borderWidth: getLengthWithEmptyAndArbitrary(),\n contrast: getNumberAndArbitrary(),\n grayscale: getZeroAndEmpty(),\n hueRotate: getNumberAndArbitrary(),\n invert: getZeroAndEmpty(),\n gap: getSpacingWithArbitrary(),\n gradientColorStops: [colors],\n gradientColorStopPositions: [isPercent, isArbitraryLength],\n inset: getSpacingWithAutoAndArbitrary(),\n margin: getSpacingWithAutoAndArbitrary(),\n opacity: getNumberAndArbitrary(),\n padding: getSpacingWithArbitrary(),\n saturate: getNumberAndArbitrary(),\n scale: getNumberAndArbitrary(),\n sepia: getZeroAndEmpty(),\n skew: getNumberAndArbitrary(),\n space: getSpacingWithArbitrary(),\n translate: getSpacingWithArbitrary()\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', 'video', isArbitraryValue]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isTshirtSize]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': getBreaks()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': getBreaks()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: [...getPositions(), isArbitraryValue]\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: getOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': getOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': getOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: getOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': getOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': getOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: [inset]\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': [inset]\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': [inset]\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: [inset]\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: [inset]\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: [inset]\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: [inset]\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: [inset]\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: [inset]\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: ['auto', isInteger, isArbitraryValue]\n }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: getSpacingWithAutoAndArbitrary()\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['wrap', 'wrap-reverse', 'nowrap']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: ['1', 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: getZeroAndEmpty()\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: getZeroAndEmpty()\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: ['first', 'last', 'none', isInteger, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': [isAny]\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: ['auto', {\n span: ['full', isInteger, isArbitraryValue]\n }, isArbitraryValue]\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': [isAny]\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: ['auto', {\n span: [isInteger, isArbitraryValue]\n }, isArbitraryValue]\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: [gap]\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': [gap]\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': [gap]\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: ['normal', ...getAlign()]\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': ['start', 'end', 'center', 'stretch']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...getAlign(), 'baseline']\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline']\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': [...getAlign(), 'baseline']\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: [padding]\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: [padding]\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: [padding]\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: [padding]\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: [padding]\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: [padding]\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: [padding]\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: [padding]\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: [padding]\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: [margin]\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: [margin]\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: [margin]\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: [margin]\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: [margin]\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: [margin]\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: [margin]\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: [margin]\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: [margin]\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x': [{\n 'space-x': [space]\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y': [{\n 'space-y': [space]\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y-reverse': ['space-y-reverse'],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: ['auto', 'min', 'max', 'fit', 'svw', 'lvw', 'dvw', isArbitraryValue, spacing]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [isArbitraryValue, spacing, 'min', 'max', 'fit']\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [isArbitraryValue, spacing, 'none', 'full', 'min', 'max', 'fit', 'prose', {\n screen: [isTshirtSize]\n }, isTshirtSize]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Size\n * @see https://tailwindcss.com/docs/size\n */\n size: [{\n size: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit']\n }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', isTshirtSize, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black', isArbitraryNumber]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isAny]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest', isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': ['none', isNumber, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose', isLength, isArbitraryValue]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryValue]\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['none', 'disc', 'decimal', isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: [colors]\n }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n 'placeholder-opacity': [{\n 'placeholder-opacity': [opacity]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: [colors]\n }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n 'text-opacity': [{\n 'text-opacity': [opacity]\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...getLineStyles(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: ['auto', 'from-font', isLength, isArbitraryLength]\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': ['auto', isLength, isArbitraryValue]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: [colors]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: getSpacingWithArbitrary()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryValue]\n }],\n // Backgrounds\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n 'bg-opacity': [{\n 'bg-opacity': [opacity]\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: [...getPositions(), isArbitraryPosition]\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: ['no-repeat', {\n repeat: ['', 'x', 'y', 'round', 'space']\n }]\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: ['auto', 'cover', 'contain', isArbitrarySize]\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: [colors]\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: [gradientColorStops]\n }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: [borderRadius]\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': [borderRadius]\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': [borderRadius]\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': [borderRadius]\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': [borderRadius]\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': [borderRadius]\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': [borderRadius]\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': [borderRadius]\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': [borderRadius]\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': [borderRadius]\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': [borderRadius]\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': [borderRadius]\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': [borderRadius]\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': [borderRadius]\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': [borderRadius]\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: [borderWidth]\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': [borderWidth]\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': [borderWidth]\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': [borderWidth]\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': [borderWidth]\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': [borderWidth]\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': [borderWidth]\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': [borderWidth]\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': [borderWidth]\n }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n 'border-opacity': [{\n 'border-opacity': [opacity]\n }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...getLineStyles(), 'hidden']\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x': [{\n 'divide-x': [borderWidth]\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y': [{\n 'divide-y': [borderWidth]\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n 'divide-opacity': [{\n 'divide-opacity': [opacity]\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n 'divide-style': [{\n divide: getLineStyles()\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: [borderColor]\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': [borderColor]\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': [borderColor]\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': [borderColor]\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': [borderColor]\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': [borderColor]\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': [borderColor]\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': [borderColor]\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': [borderColor]\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: [borderColor]\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: ['', ...getLineStyles()]\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isLength, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: [isLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: [colors]\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w': [{\n ring: getLengthWithEmptyAndArbitrary()\n }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n 'ring-color': [{\n ring: [colors]\n }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n 'ring-opacity': [{\n 'ring-opacity': [opacity]\n }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n 'ring-offset-w': [{\n 'ring-offset': [isLength, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n 'ring-offset-color': [{\n 'ring-offset': [colors]\n }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n 'shadow-color': [{\n shadow: [isAny]\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [opacity]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...getBlendModes(), 'plus-lighter', 'plus-darker']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': getBlendModes()\n }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: ['', 'none']\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: [blur]\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [brightness]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [contrast]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue]\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: [grayscale]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [hueRotate]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: [invert]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [saturate]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: [sepia]\n }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': ['', 'none']\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': [blur]\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [brightness]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [contrast]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': [grayscale]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [hueRotate]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': [invert]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [opacity]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [saturate]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': [sepia]\n }],\n // Tables\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': [borderSpacing]\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': [borderSpacing]\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': [borderSpacing]\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['none', 'all', '', 'colors', 'opacity', 'shadow', 'transform', isArbitraryValue]\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: getNumberAndArbitrary()\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: getNumberAndArbitrary()\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue]\n }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: ['', 'gpu', 'none']\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: [scale]\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': [scale]\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': [scale]\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: [isInteger, isArbitraryValue]\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': [translate]\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': [translate]\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': [skew]\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': [skew]\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryValue]\n }],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: ['auto', colors]\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryValue]\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: [colors]\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['none', 'auto']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', 'y', 'x', '']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue]\n }],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: [colors, 'none']\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: [colors, 'none']\n }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n }\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n separator,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'separator', separator);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n for (const configKey in override) {\n overrideConfigProperties(baseConfig[configKey], override[configKey]);\n }\n for (const key in extend) {\n mergeConfigProperties(baseConfig[key], extend[key]);\n }\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = (baseObject[key] || []).concat(mergeValue);\n }\n }\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import type { ClassValue } from 'clsx';\n\nimport { clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","<script lang=\"ts\" setup>\nimport { cn } from '@/lib/utils';\nimport { cva } from 'class-variance-authority';\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n destructive:\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n outline:\n 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-10 px-4 py-2',\n sm: 'h-9 rounded-md px-3',\n lg: 'h-11 rounded-md px-8',\n icon: 'h-10 w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\ninterface Props {\n variant?: NonNullable<Parameters<typeof buttonVariants>[0]>['variant'];\n size?: NonNullable<Parameters<typeof buttonVariants>[0]>['size'];\n as?: string;\n}\n\n// eslint-disable-next-line vue/define-macros-order\nwithDefaults(defineProps<Props>(), {\n as: 'button',\n});\n</script>\n\n<template>\n <component\n :is=\"as\"\n :class=\"cn(buttonVariants({ variant, size }), $attrs.class ?? '')\"\n >\n <slot></slot>\n </component>\n</template>\n","<script lang=\"ts\" setup>\nimport type { LangChatConfig } from '../types'; // Props\n\nimport { ref } from 'vue';\n\nimport Button from '@/components/ui/Button.vue';\n\n// Props\ninterface Props {\n config: LangChatConfig;\n}\n\nconst props = defineProps<Props>();\n\n// Emits\nconst emit = defineEmits<{\n close: [];\n}>();\n\n// 拖拽相关状态\nconst isDragging = ref(false);\nconst dragStart = ref({ x: 0, y: 0 });\nconst dragOffset = ref({ x: 0, y: 0 });\n\n// 事件处理\nconst handleClose = () => {\n emit('close');\n};\n\nconst handleMouseDown = (event: MouseEvent) => {\n if (!props.config.header?.draggable) return;\n\n isDragging.value = true;\n dragStart.value = { x: event.clientX, y: event.clientY };\n\n // 添加全局鼠标事件监听\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n // 防止文本选择\n event.preventDefault();\n};\n\nconst handleMouseMove = (event: MouseEvent) => {\n if (!isDragging.value) return;\n\n const deltaX = event.clientX - dragStart.value.x;\n const deltaY = event.clientY - dragStart.value.y;\n\n dragOffset.value = { x: deltaX, y: deltaY };\n\n // 这里可以实现实际的拖拽逻辑\n // 由于组件结构限制,拖拽功能需要在父组件中实现\n};\n\nconst handleMouseUp = () => {\n isDragging.value = false;\n dragOffset.value = { x: 0, y: 0 };\n\n // 移除全局事件监听\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n};\n</script>\n\n<template>\n <div\n class=\"border-border flex cursor-move select-none items-center justify-between border-b p-3 sm:p-4\"\n @mousedown=\"handleMouseDown\"\n >\n <!-- 标题 -->\n <div class=\"flex items-center gap-2\">\n <div\n class=\"bg-primary text-primary-foreground flex h-7 w-7 items-center justify-center rounded-lg sm:h-8 sm:w-8\"\n >\n <svg\n class=\"h-3.5 w-3.5 sm:h-4 sm:w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n />\n </svg>\n </div>\n <h3 class=\"text-foreground truncate text-xs font-semibold sm:text-sm\">\n {{ config.header?.title || '聊天助手' }}\n </h3>\n </div>\n\n <!-- 关闭按钮 -->\n <Button\n v-if=\"config.header?.showCloseButton !== false\"\n class=\"h-7 w-10 p-0\"\n size=\"sm\"\n title=\"关闭聊天\"\n variant=\"ghost\"\n @click=\"handleClose\"\n >\n <svg class=\"size-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n d=\"M6 18L18 6M6 6l12 12\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n />\n </svg>\n </Button>\n </div>\n</template>\n","import { ref, computed, watch } from 'vue'\nimport type { ChatMessage, ChatSession, QuestionItem } from '../types'\n\nexport class MessageStore {\n private messages = ref<ChatMessage[]>([])\n private sessions = ref<ChatSession[]>([])\n private currentSessionId = ref<string>('')\n private questions = ref<QuestionItem[]>([])\n // private maxHistoryItems: number = 100\n private enableHistory: boolean = true\n\n constructor(options: { maxHistoryItems?: number; enableHistory?: boolean } = {}) {\n // this.maxHistoryItems = options.maxHistoryItems || 100\n this.enableHistory = options.enableHistory !== false\n \n // 初始化当前会话\n this.currentSessionId.value = this.generateSessionId()\n \n // 加载历史记录\n if (this.enableHistory) {\n this.loadHistory()\n }\n \n // 监听消息变化,自动保存\n watch(this.messages, () => {\n if (this.enableHistory) {\n this.saveHistory()\n }\n }, { deep: true })\n }\n\n // 获取器\n get allMessages() {\n return computed(() => this.messages.value)\n }\n\n get currentMessages() {\n return computed(() => this.messages.value)\n }\n\n get messageCount() {\n return computed(() => this.messages.value.length)\n }\n\n get hasMessages() {\n return computed(() => this.messages.value.length > 0)\n }\n\n get lastMessage() {\n return computed(() => this.messages.value[this.messages.value.length - 1])\n }\n\n get userMessages() {\n return computed(() => this.messages.value.filter(msg => msg.type === 'user'))\n }\n\n get aiMessages() {\n return computed(() => this.messages.value.filter(msg => msg.type === 'ai'))\n }\n\n get streamingMessages() {\n return computed(() => this.messages.value.filter(msg => msg.isStreaming))\n }\n\n get errorMessages() {\n return computed(() => this.messages.value.filter(msg => msg.status === 'error'))\n }\n\n get suggestedQuestions() {\n return computed(() => this.questions.value)\n }\n\n get hasQuestions() {\n return computed(() => this.questions.value.length > 0)\n }\n\n // 消息操作方法\n addMessage(message: Omit<ChatMessage, 'id' | 'timestamp'>): ChatMessage {\n const newMessage: ChatMessage = {\n ...message,\n id: this.generateMessageId(),\n timestamp: new Date()\n }\n \n this.messages.value.push(newMessage)\n \n // 当添加新消息时,自动清空questions\n if (message.type === 'user') {\n this.clearQuestions()\n }\n \n return newMessage\n }\n\n updateMessage(messageId: string, updates: Partial<ChatMessage>): boolean {\n const index = this.messages.value.findIndex(msg => msg.id === messageId)\n if (index !== -1) {\n const currentMessage = this.messages.value[index]\n if (currentMessage) {\n this.messages.value[index] = { ...currentMessage, ...updates }\n }\n return true\n }\n return false\n }\n\n removeMessage(messageId: string): boolean {\n const index = this.messages.value.findIndex(msg => msg.id === messageId)\n if (index !== -1) {\n this.messages.value.splice(index, 1)\n return true\n }\n return false\n }\n\n getMessage(messageId: string): ChatMessage | undefined {\n return this.messages.value.find(msg => msg.id === messageId)\n }\n\n // 消息状态管理\n setMessageStatus(messageId: string, status: ChatMessage['status']): boolean {\n return this.updateMessage(messageId, { status })\n }\n\n setMessageStreaming(messageId: string, isStreaming: boolean): boolean {\n return this.updateMessage(messageId, { \n isStreaming,\n status: isStreaming ? 'streaming' : 'sent'\n })\n }\n\n setMessageError(messageId: string, error: string): boolean {\n return this.updateMessage(messageId, { \n status: 'error',\n error,\n isStreaming: false\n })\n }\n\n // 流式消息内容更新\n updateStreamingContent(messageId: string, content: string): boolean {\n return this.updateMessage(messageId, { \n content,\n streamContent: content\n })\n }\n\n // 批量操作\n addMessages(messages: Omit<ChatMessage, 'id' | 'timestamp'>[]): ChatMessage[] {\n const newMessages = messages.map(msg => ({\n ...msg,\n id: this.generateMessageId(),\n timestamp: new Date()\n }))\n \n this.messages.value.push(...newMessages)\n return newMessages\n }\n\n clearMessages(): void {\n this.messages.value = []\n }\n\n // Questions管理方法\n setQuestions(questions: QuestionItem[]): void {\n this.questions.value = questions\n }\n\n addQuestion(question: QuestionItem): void {\n this.questions.value.push(question)\n }\n\n clearQuestions(): void {\n this.questions.value = []\n }\n\n removeQuestion(questionId: string): boolean {\n const index = this.questions.value.findIndex(q => q.id === questionId)\n if (index !== -1) {\n this.questions.value.splice(index, 1)\n return true\n }\n return false\n }\n\n removeMessages(messageIds: string[]): number {\n let removedCount = 0\n messageIds.forEach(id => {\n if (this.removeMessage(id)) {\n removedCount++\n }\n })\n return removedCount\n }\n\n // 消息过滤和搜索\n filterMessages(predicate: (message: ChatMessage) => boolean): ChatMessage[] {\n return this.messages.value.filter(predicate)\n }\n\n searchMessages(query: string): ChatMessage[] {\n const lowerQuery = query.toLowerCase()\n return this.messages.value.filter(msg => \n msg.content.toLowerCase().includes(lowerQuery)\n )\n }\n\n getMessagesByType(type: ChatMessage['type']): ChatMessage[] {\n return this.messages.value.filter(msg => msg.type === type)\n }\n\n getMessagesByStatus(status: ChatMessage['status']): ChatMessage[] {\n return this.messages.value.filter(msg => msg.status === status)\n }\n\n // 会话管理\n createSession(): string {\n const sessionId = this.generateSessionId()\n const session: ChatSession = {\n id: sessionId,\n messages: [],\n createdAt: new Date(),\n updatedAt: new Date()\n }\n \n this.sessions.value.push(session)\n this.currentSessionId.value = sessionId\n return sessionId\n }\n\n switchSession(sessionId: string): boolean {\n const session = this.sessions.value.find(s => s.id === sessionId)\n if (session) {\n this.currentSessionId.value = sessionId\n this.messages.value = [...session.messages]\n return true\n }\n return false\n }\n\n deleteSession(sessionId: string): boolean {\n const index = this.sessions.value.findIndex(s => s.id === sessionId)\n if (index !== -1) {\n this.sessions.value.splice(index, 1)\n \n // 如果删除的是当前会话,切换到第一个可用会话\n if (sessionId === this.currentSessionId.value) {\n if (this.sessions.value.length > 0) {\n if (this.sessions.value[0]) {\n this.switchSession(this.sessions.value[0].id)\n }\n } else {\n this.createSession()\n }\n }\n return true\n }\n return false\n }\n\n getSession(sessionId: string): ChatSession | undefined {\n return this.sessions.value.find(s => s.id === sessionId)\n }\n\n getAllSessions(): ChatSession[] {\n return [...this.sessions.value]\n }\n\n // 历史记录管理\n private saveHistory(): void {\n try {\n const historyData = {\n sessions: this.sessions.value,\n currentSessionId: this.currentSessionId.value,\n timestamp: Date.now()\n }\n localStorage.setItem('langchat-history', JSON.stringify(historyData))\n } catch (error) {\n console.warn('Failed to save history:', error)\n }\n }\n\n private loadHistory(): void {\n try {\n const historyData = localStorage.getItem('langchat-history')\n if (historyData) {\n const parsed = JSON.parse(historyData)\n \n if (parsed.sessions && Array.isArray(parsed.sessions)) {\n this.sessions.value = parsed.sessions.map((session: any) => ({\n ...session,\n createdAt: new Date(session.createdAt),\n updatedAt: new Date(session.updatedAt),\n messages: session.messages.map((msg: any) => ({\n ...msg,\n timestamp: new Date(msg.timestamp)\n }))\n }))\n }\n \n if (parsed.currentSessionId) {\n this.currentSessionId.value = parsed.currentSessionId\n const currentSession = this.getSession(parsed.currentSessionId)\n if (currentSession) {\n this.messages.value = [...currentSession.messages]\n }\n }\n }\n } catch (error) {\n console.warn('Failed to load history:', error)\n // 如果加载失败,创建新会话\n this.createSession()\n }\n }\n\n // 导出和导入\n exportHistory(): string {\n const exportData = {\n sessions: this.sessions.value,\n currentSessionId: this.currentSessionId.value,\n exportTime: new Date().toISOString(),\n version: '1.0.0'\n }\n return JSON.stringify(exportData, null, 2)\n }\n\n importHistory(historyData: string): boolean {\n try {\n const parsed = JSON.parse(historyData)\n \n if (parsed.sessions && Array.isArray(parsed.sessions)) {\n this.sessions.value = parsed.sessions.map((session: any) => ({\n ...session,\n createdAt: new Date(session.createdAt),\n updatedAt: new Date(session.updatedAt),\n messages: session.messages.map((msg: any) => ({\n ...msg,\n timestamp: new Date(msg.timestamp)\n }))\n }))\n \n if (parsed.currentSessionId) {\n this.currentSessionId.value = parsed.currentSessionId\n const currentSession = this.getSession(parsed.currentSessionId)\n if (currentSession) {\n this.messages.value = [...currentSession.messages]\n }\n }\n \n return true\n }\n return false\n } catch (error) {\n console.error('Failed to import history:', error)\n return false\n }\n }\n\n // 统计信息\n getStats() {\n const totalMessages = this.messages.value.length\n const userMessages = this.userMessages.value.length\n const aiMessages = this.aiMessages.value.length\n const errorMessages = this.errorMessages.value.length\n const streamingMessages = this.streamingMessages.value.length\n \n return {\n totalMessages,\n userMessages,\n aiMessages,\n errorMessages,\n streamingMessages,\n sessions: this.sessions.value.length,\n averageMessagesPerSession: totalMessages / Math.max(this.sessions.value.length, 1)\n }\n }\n\n // 清理过期数据\n cleanup(olderThanDays: number = 30): number {\n const cutoffDate = new Date()\n cutoffDate.setDate(cutoffDate.getDate() - olderThanDays)\n \n let cleanedCount = 0\n \n // 清理过期会话\n this.sessions.value = this.sessions.value.filter(session => {\n if (session.updatedAt < cutoffDate) {\n cleanedCount += session.messages.length\n return false\n }\n return true\n })\n \n // 清理过期消息\n this.messages.value = this.messages.value.filter(message => {\n if (message.timestamp < cutoffDate) {\n cleanedCount++\n return false\n }\n return true\n })\n \n return cleanedCount\n }\n\n // 工具方法\n private generateMessageId(): string {\n return `msg_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n }\n\n private generateSessionId(): string {\n return `session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n }\n\n // 销毁\n destroy(): void {\n this.messages.value = []\n this.sessions.value = []\n this.currentSessionId.value = ''\n }\n}\n\n// 创建单例实例\nexport const messageStore = new MessageStore()\n\n// 导出创建函数\nexport function createMessageStore(options?: { maxHistoryItems?: number; enableHistory?: boolean }) {\n return new MessageStore(options)\n}\n","/* eslint-disable no-bitwise */\n\nconst decodeCache = {}\n\nfunction getDecodeCache (exclude) {\n let cache = decodeCache[exclude]\n if (cache) { return cache }\n\n cache = decodeCache[exclude] = []\n\n for (let i = 0; i < 128; i++) {\n const ch = String.fromCharCode(i)\n cache.push(ch)\n }\n\n for (let i = 0; i < exclude.length; i++) {\n const ch = exclude.charCodeAt(i)\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2)\n }\n\n return cache\n}\n\n// Decode percent-encoded string.\n//\nfunction decode (string, exclude) {\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars\n }\n\n const cache = getDecodeCache(exclude)\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function (seq) {\n let result = ''\n\n for (let i = 0, l = seq.length; i < l; i += 3) {\n const b1 = parseInt(seq.slice(i + 1, i + 3), 16)\n\n if (b1 < 0x80) {\n result += cache[b1]\n continue\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n\n if ((b2 & 0xC0) === 0x80) {\n const chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F)\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd'\n } else {\n result += String.fromCharCode(chr)\n }\n\n i += 3\n continue\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n const b3 = parseInt(seq.slice(i + 7, i + 9), 16)\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n const chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F)\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd'\n } else {\n result += String.fromCharCode(chr)\n }\n\n i += 6\n continue\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n const b3 = parseInt(seq.slice(i + 7, i + 9), 16)\n const b4 = parseInt(seq.slice(i + 10, i + 12), 16)\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n let chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F)\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd'\n } else {\n chr -= 0x10000\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF))\n }\n\n i += 9\n continue\n }\n }\n\n result += '\\ufffd'\n }\n\n return result\n })\n}\n\ndecode.defaultChars = ';/?:@&=+$,#'\ndecode.componentChars = ''\n\nexport default decode\n","const encodeCache = {}\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache (exclude) {\n let cache = encodeCache[exclude]\n if (cache) { return cache }\n\n cache = encodeCache[exclude] = []\n\n for (let i = 0; i < 128; i++) {\n const ch = String.fromCharCode(i)\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch)\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2))\n }\n }\n\n for (let i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i]\n }\n\n return cache\n}\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode (string, exclude, keepEscaped) {\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude\n exclude = encode.defaultChars\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true\n }\n\n const cache = getEncodeCache(exclude)\n let result = ''\n\n for (let i = 0, l = string.length; i < l; i++) {\n const code = string.charCodeAt(i)\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3)\n i += 2\n continue\n }\n }\n\n if (code < 128) {\n result += cache[code]\n continue\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n const nextCode = string.charCodeAt(i + 1)\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1])\n i++\n continue\n }\n }\n result += '%EF%BF%BD'\n continue\n }\n\n result += encodeURIComponent(string[i])\n }\n\n return result\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\"\nencode.componentChars = \"-_.!~*'()\"\n\nexport default encode\n","export default function format (url) {\n let result = ''\n\n result += url.protocol || ''\n result += url.slashes ? '//' : ''\n result += url.auth ? url.auth + '@' : ''\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']'\n } else {\n result += url.hostname || ''\n }\n\n result += url.port ? ':' + url.port : ''\n result += url.pathname || ''\n result += url.search || ''\n result += url.hash || ''\n\n return result\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\nfunction Url () {\n this.protocol = null\n this.slashes = null\n this.auth = null\n this.port = null\n this.hostname = null\n this.hash = null\n this.search = null\n this.pathname = null\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nconst protocolPattern = /^([a-z0-9.+-]+:)/i\nconst portPattern = /:[0-9]*$/\n\n// Special case for a simple path URL\n/* eslint-disable-next-line no-useless-escape */\nconst simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/\n\n// RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\nconst delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t']\n\n// RFC 2396: characters not allowed for various reasons.\nconst unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims)\n\n// Allowed by RFCs, but cause of XSS attacks. Always escape these.\nconst autoEscape = ['\\''].concat(unwise)\n// Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nconst nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape)\nconst hostEndingChars = ['/', '?', '#']\nconst hostnameMaxLen = 255\nconst hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/\nconst hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/\n// protocols that can allow \"unsafe\" and \"unwise\" chars.\n// protocols that never have a hostname.\nconst hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n}\n// protocols that always contain a // bit.\nconst slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n}\n\nfunction urlParse (url, slashesDenoteHost) {\n if (url && url instanceof Url) return url\n\n const u = new Url()\n u.parse(url, slashesDenoteHost)\n return u\n}\n\nUrl.prototype.parse = function (url, slashesDenoteHost) {\n let lowerProto, hec, slashes\n let rest = url\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim()\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n const simplePath = simplePathPattern.exec(rest)\n if (simplePath) {\n this.pathname = simplePath[1]\n if (simplePath[2]) {\n this.search = simplePath[2]\n }\n return this\n }\n }\n\n let proto = protocolPattern.exec(rest)\n if (proto) {\n proto = proto[0]\n lowerProto = proto.toLowerCase()\n this.protocol = proto\n rest = rest.substr(proto.length)\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n /* eslint-disable-next-line no-useless-escape */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//'\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2)\n this.slashes = true\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n let hostEnd = -1\n for (let i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i])\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec\n }\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n let auth, atSign\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@')\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd)\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign)\n rest = rest.slice(atSign + 1)\n this.auth = auth\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1\n for (let i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i])\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec\n }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) {\n hostEnd = rest.length\n }\n\n if (rest[hostEnd - 1] === ':') { hostEnd-- }\n const host = rest.slice(0, hostEnd)\n rest = rest.slice(hostEnd)\n\n // pull out port.\n this.parseHost(host)\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || ''\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n const ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']'\n\n // validate a little.\n if (!ipv6Hostname) {\n const hostparts = this.hostname.split(/\\./)\n for (let i = 0, l = hostparts.length; i < l; i++) {\n const part = hostparts[i]\n if (!part) { continue }\n if (!part.match(hostnamePartPattern)) {\n let newpart = ''\n for (let j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x'\n } else {\n newpart += part[j]\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n const validParts = hostparts.slice(0, i)\n const notHost = hostparts.slice(i + 1)\n const bit = part.match(hostnamePartStart)\n if (bit) {\n validParts.push(bit[1])\n notHost.unshift(bit[2])\n }\n if (notHost.length) {\n rest = notHost.join('.') + rest\n }\n this.hostname = validParts.join('.')\n break\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = ''\n }\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2)\n }\n }\n\n // chop off from the tail first.\n const hash = rest.indexOf('#')\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash)\n rest = rest.slice(0, hash)\n }\n const qm = rest.indexOf('?')\n if (qm !== -1) {\n this.search = rest.substr(qm)\n rest = rest.slice(0, qm)\n }\n if (rest) { this.pathname = rest }\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = ''\n }\n\n return this\n}\n\nUrl.prototype.parseHost = function (host) {\n let port = portPattern.exec(host)\n if (port) {\n port = port[0]\n if (port !== ':') {\n this.port = port.substr(1)\n }\n host = host.substr(0, host.length - port.length)\n }\n if (host) { this.hostname = host }\n}\n\nexport default urlParse\n","export default /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/","export default /[\\0-\\x1F\\x7F-\\x9F]/","export default /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC3F]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/","export default /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2\\uDF00-\\uDF09]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDF43-\\uDF4F\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/","export default /[\\$\\+<->\\^`\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u0888\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20C0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u31EF\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uAB6A\\uAB6B\\uFB29\\uFBB2-\\uFBC2\\uFD40-\\uFD4F\\uFDCF\\uFDFC-\\uFDFF\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD]|\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED7\\uDEDC-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDF76\\uDF7B-\\uDFD9\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0\\uDCB1\\uDD00-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC5\\uDECE-\\uDEDB\\uDEE0-\\uDEE8\\uDEF0-\\uDEF8\\uDF00-\\uDF92\\uDF94-\\uDFCA]/","export default /[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","// Utilities\n//\n\nimport * as mdurl from 'mdurl'\nimport * as ucmicro from 'uc.micro'\nimport { decodeHTML } from 'entities'\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\n\nfunction isString (obj) { return _class(obj) === '[object String]' }\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction has (object, key) {\n return _hasOwnProperty.call(object, key)\n}\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n const sources = Array.prototype.slice.call(arguments, 1)\n\n sources.forEach(function (source) {\n if (!source) { return }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object')\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key]\n })\n })\n\n return obj\n}\n\n// Remove element from array and put another array at those position.\n// Useful for some operations with tokens\nfunction arrayReplaceAt (src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1))\n}\n\nfunction isValidEntityCode (c) {\n /* eslint no-bitwise:0 */\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) { return false }\n // never used\n if (c >= 0xFDD0 && c <= 0xFDEF) { return false }\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false }\n // control codes\n if (c >= 0x00 && c <= 0x08) { return false }\n if (c === 0x0B) { return false }\n if (c >= 0x0E && c <= 0x1F) { return false }\n if (c >= 0x7F && c <= 0x9F) { return false }\n // out of range\n if (c > 0x10FFFF) { return false }\n return true\n}\n\nfunction fromCodePoint (c) {\n /* eslint no-bitwise:0 */\n if (c > 0xffff) {\n c -= 0x10000\n const surrogate1 = 0xd800 + (c >> 10)\n const surrogate2 = 0xdc00 + (c & 0x3ff)\n\n return String.fromCharCode(surrogate1, surrogate2)\n }\n return String.fromCharCode(c)\n}\n\nconst UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g\nconst ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi\nconst UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi')\n\nconst DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i\n\nfunction replaceEntityPattern (match, name) {\n if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n const code = name[1].toLowerCase() === 'x'\n ? parseInt(name.slice(2), 16)\n : parseInt(name.slice(1), 10)\n\n if (isValidEntityCode(code)) {\n return fromCodePoint(code)\n }\n\n return match\n }\n\n const decoded = decodeHTML(match)\n if (decoded !== match) {\n return decoded\n }\n\n return match\n}\n\n/* function replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n\n return str.replace(ENTITY_RE, replaceEntityPattern);\n} */\n\nfunction unescapeMd (str) {\n if (str.indexOf('\\\\') < 0) { return str }\n return str.replace(UNESCAPE_MD_RE, '$1')\n}\n\nfunction unescapeAll (str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) { return str }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) { return escaped }\n return replaceEntityPattern(match, entity)\n })\n}\n\nconst HTML_ESCAPE_TEST_RE = /[&<>\"]/\nconst HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g\nconst HTML_REPLACEMENTS = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;'\n}\n\nfunction replaceUnsafeChar (ch) {\n return HTML_REPLACEMENTS[ch]\n}\n\nfunction escapeHtml (str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar)\n }\n return str\n}\n\nconst REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g\n\nfunction escapeRE (str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&')\n}\n\nfunction isSpace (code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true\n }\n return false\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace (code) {\n if (code >= 0x2000 && code <= 0x200A) { return true }\n switch (code) {\n case 0x09: // \\t\n case 0x0A: // \\n\n case 0x0B: // \\v\n case 0x0C: // \\f\n case 0x0D: // \\r\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true\n }\n return false\n}\n\n/* eslint-disable max-len */\n\n// Currently without astral characters support.\nfunction isPunctChar (ch) {\n return ucmicro.P.test(ch) || ucmicro.S.test(ch)\n}\n\n// Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\nfunction isMdAsciiPunct (ch) {\n switch (ch) {\n case 0x21/* ! */:\n case 0x22/* \" */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x27/* ' */:\n case 0x28/* ( */:\n case 0x29/* ) */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2C/* , */:\n case 0x2D/* - */:\n case 0x2E/* . */:\n case 0x2F/* / */:\n case 0x3A/* : */:\n case 0x3B/* ; */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x3F/* ? */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7C/* | */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true\n default:\n return false\n }\n}\n\n// Hepler to unify [reference labels].\n//\nfunction normalizeReference (str) {\n // Trim and collapse whitespace\n //\n str = str.trim().replace(/\\s+/g, ' ')\n\n // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n // fixed in v12 (couldn't find any details).\n //\n // So treat this one as a special case\n // (remove this when node v10 is no longer supported).\n //\n if ('ẞ'.toLowerCase() === 'Ṿ') {\n str = str.replace(/ẞ/g, 'ß')\n }\n\n // .toLowerCase().toUpperCase() should get rid of all differences\n // between letter variants.\n //\n // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n // uppercased versions).\n //\n // Here's an example showing how it happens. Lets take greek letter omega:\n // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n //\n // Unicode entries:\n // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n // 03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;\n //\n // Case-insensitive comparison should treat all of them as equivalent.\n //\n // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n // and .toUpperCase() doesn't change ϴ (already uppercase).\n //\n // Applying first lower then upper case normalizes any character:\n // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n //\n // Note: this is equivalent to unicode case folding; unicode normalization\n // is a different step that is not required here.\n //\n // Final result should be uppercased, because it's later stored in an object\n // (this avoid a conflict with Object.prototype members,\n // most notably, `__proto__`)\n //\n return str.toLowerCase().toUpperCase()\n}\n\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\nconst lib = { mdurl, ucmicro }\n\nexport {\n lib,\n assign,\n isString,\n has,\n unescapeMd,\n unescapeAll,\n isValidEntityCode,\n fromCodePoint,\n escapeHtml,\n arrayReplaceAt,\n isSpace,\n isWhiteSpace,\n isMdAsciiPunct,\n isPunctChar,\n escapeRE,\n normalizeReference\n}\n","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n\nexport default function parseLinkLabel (state, start, disableNested) {\n let level, found, marker, prevPos\n\n const max = state.posMax\n const oldPos = state.pos\n\n state.pos = start + 1\n level = 1\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos)\n if (marker === 0x5D /* ] */) {\n level--\n if (level === 0) {\n found = true\n break\n }\n }\n\n prevPos = state.pos\n state.md.inline.skipToken(state)\n if (marker === 0x5B /* [ */) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++\n } else if (disableNested) {\n state.pos = oldPos\n return -1\n }\n }\n }\n\n let labelEnd = -1\n\n if (found) {\n labelEnd = state.pos\n }\n\n // restore old state\n state.pos = oldPos\n\n return labelEnd\n}\n","// Parse link destination\n//\n\nimport { unescapeAll } from '../common/utils.mjs'\n\nexport default function parseLinkDestination (str, start, max) {\n let code\n let pos = start\n\n const result = {\n ok: false,\n pos: 0,\n str: ''\n }\n\n if (str.charCodeAt(pos) === 0x3C /* < */) {\n pos++\n while (pos < max) {\n code = str.charCodeAt(pos)\n if (code === 0x0A /* \\n */) { return result }\n if (code === 0x3C /* < */) { return result }\n if (code === 0x3E /* > */) {\n result.pos = pos + 1\n result.str = unescapeAll(str.slice(start + 1, pos))\n result.ok = true\n return result\n }\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2\n continue\n }\n\n pos++\n }\n\n // no closing '>'\n return result\n }\n\n // this should be ... } else { ... branch\n\n let level = 0\n while (pos < max) {\n code = str.charCodeAt(pos)\n\n if (code === 0x20) { break }\n\n // ascii control characters\n if (code < 0x20 || code === 0x7F) { break }\n\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n if (str.charCodeAt(pos + 1) === 0x20) { break }\n pos += 2\n continue\n }\n\n if (code === 0x28 /* ( */) {\n level++\n if (level > 32) { return result }\n }\n\n if (code === 0x29 /* ) */) {\n if (level === 0) { break }\n level--\n }\n\n pos++\n }\n\n if (start === pos) { return result }\n if (level !== 0) { return result }\n\n result.str = unescapeAll(str.slice(start, pos))\n result.pos = pos\n result.ok = true\n return result\n}\n","// Parse link title\n//\n\nimport { unescapeAll } from '../common/utils.mjs'\n\n// Parse link title within `str` in [start, max] range,\n// or continue previous parsing if `prev_state` is defined (equal to result of last execution).\n//\nexport default function parseLinkTitle (str, start, max, prev_state) {\n let code\n let pos = start\n\n const state = {\n // if `true`, this is a valid link title\n ok: false,\n // if `true`, this link can be continued on the next line\n can_continue: false,\n // if `ok`, it's the position of the first character after the closing marker\n pos: 0,\n // if `ok`, it's the unescaped title\n str: '',\n // expected closing marker character code\n marker: 0\n }\n\n if (prev_state) {\n // this is a continuation of a previous parseLinkTitle call on the next line,\n // used in reference links only\n state.str = prev_state.str\n state.marker = prev_state.marker\n } else {\n if (pos >= max) { return state }\n\n let marker = str.charCodeAt(pos)\n if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return state }\n\n start++\n pos++\n\n // if opening marker is \"(\", switch it to closing marker \")\"\n if (marker === 0x28) { marker = 0x29 }\n\n state.marker = marker\n }\n\n while (pos < max) {\n code = str.charCodeAt(pos)\n if (code === state.marker) {\n state.pos = pos + 1\n state.str += unescapeAll(str.slice(start, pos))\n state.ok = true\n return state\n } else if (code === 0x28 /* ( */ && state.marker === 0x29 /* ) */) {\n return state\n } else if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos++\n }\n\n pos++\n }\n\n // no closing marker found, but this link title may continue on the next line (for references)\n state.can_continue = true\n state.str += unescapeAll(str.slice(start, pos))\n return state\n}\n","/**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n\nimport { assign, unescapeAll, escapeHtml } from './common/utils.mjs'\n\nconst default_rules = {}\n\ndefault_rules.code_inline = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n return '<code' + slf.renderAttrs(token) + '>' +\n escapeHtml(token.content) +\n '</code>'\n}\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n return '<pre' + slf.renderAttrs(token) + '><code>' +\n escapeHtml(tokens[idx].content) +\n '</code></pre>\\n'\n}\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n const info = token.info ? unescapeAll(token.info).trim() : ''\n let langName = ''\n let langAttrs = ''\n\n if (info) {\n const arr = info.split(/(\\s+)/g)\n langName = arr[0]\n langAttrs = arr.slice(2).join('')\n }\n\n let highlighted\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content)\n } else {\n highlighted = escapeHtml(token.content)\n }\n\n if (highlighted.indexOf('<pre') === 0) {\n return highlighted + '\\n'\n }\n\n // If language exists, inject class gently, without modifying original token.\n // May be, one day we will add .deepClone() for token and simplify this part, but\n // now we prefer to keep things local.\n if (info) {\n const i = token.attrIndex('class')\n const tmpAttrs = token.attrs ? token.attrs.slice() : []\n\n if (i < 0) {\n tmpAttrs.push(['class', options.langPrefix + langName])\n } else {\n tmpAttrs[i] = tmpAttrs[i].slice()\n tmpAttrs[i][1] += ' ' + options.langPrefix + langName\n }\n\n // Fake token just to render attributes\n const tmpToken = {\n attrs: tmpAttrs\n }\n\n return `<pre><code${slf.renderAttrs(tmpToken)}>${highlighted}</code></pre>\\n`\n }\n\n return `<pre><code${slf.renderAttrs(token)}>${highlighted}</code></pre>\\n`\n}\n\ndefault_rules.image = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n // should be placed on proper position for tests.\n //\n // Replace content with actual value\n\n token.attrs[token.attrIndex('alt')][1] =\n slf.renderInlineAsText(token.children, options, env)\n\n return slf.renderToken(tokens, idx, options)\n}\n\ndefault_rules.hardbreak = function (tokens, idx, options /*, env */) {\n return options.xhtmlOut ? '<br />\\n' : '<br>\\n'\n}\ndefault_rules.softbreak = function (tokens, idx, options /*, env */) {\n return options.breaks ? (options.xhtmlOut ? '<br />\\n' : '<br>\\n') : '\\n'\n}\n\ndefault_rules.text = function (tokens, idx /*, options, env */) {\n return escapeHtml(tokens[idx].content)\n}\n\ndefault_rules.html_block = function (tokens, idx /*, options, env */) {\n return tokens[idx].content\n}\ndefault_rules.html_inline = function (tokens, idx /*, options, env */) {\n return tokens[idx].content\n}\n\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\nfunction Renderer () {\n /**\n * Renderer#rules -> Object\n *\n * Contains render rules for tokens. Can be updated and extended.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.renderer.rules.strong_open = function () { return '<b>'; };\n * md.renderer.rules.strong_close = function () { return '</b>'; };\n *\n * var result = md.renderInline(...);\n * ```\n *\n * Each rule is called as independent static function with fixed signature:\n *\n * ```javascript\n * function my_token_render(tokens, idx, options, env, renderer) {\n * // ...\n * return renderedHTML;\n * }\n * ```\n *\n * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.mjs)\n * for more details and examples.\n **/\n this.rules = assign({}, default_rules)\n}\n\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\nRenderer.prototype.renderAttrs = function renderAttrs (token) {\n let i, l, result\n\n if (!token.attrs) { return '' }\n\n result = ''\n\n for (i = 0, l = token.attrs.length; i < l; i++) {\n result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"'\n }\n\n return result\n}\n\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\nRenderer.prototype.renderToken = function renderToken (tokens, idx, options) {\n const token = tokens[idx]\n let result = ''\n\n // Tight list paragraphs\n if (token.hidden) {\n return ''\n }\n\n // Insert a newline between hidden paragraph and subsequent opening\n // block-level tag.\n //\n // For example, here we should insert a newline before blockquote:\n // - a\n // >\n //\n if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += '\\n'\n }\n\n // Add token name, e.g. `<img`\n result += (token.nesting === -1 ? '</' : '<') + token.tag\n\n // Encode attributes, e.g. `<img src=\"foo\"`\n result += this.renderAttrs(token)\n\n // Add a slash for self-closing tags, e.g. `<img src=\"foo\" /`\n if (token.nesting === 0 && options.xhtmlOut) {\n result += ' /'\n }\n\n // Check if we need to add a newline after this tag\n let needLf = false\n if (token.block) {\n needLf = true\n\n if (token.nesting === 1) {\n if (idx + 1 < tokens.length) {\n const nextToken = tokens[idx + 1]\n\n if (nextToken.type === 'inline' || nextToken.hidden) {\n // Block-level tag containing an inline tag.\n //\n needLf = false\n } else if (nextToken.nesting === -1 && nextToken.tag === token.tag) {\n // Opening tag + closing tag of the same type. E.g. `<li></li>`.\n //\n needLf = false\n }\n }\n }\n }\n\n result += needLf ? '>\\n' : '>'\n\n return result\n}\n\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\nRenderer.prototype.renderInline = function (tokens, options, env) {\n let result = ''\n const rules = this.rules\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n const type = tokens[i].type\n\n if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this)\n } else {\n result += this.renderToken(tokens, i, options)\n }\n }\n\n return result\n}\n\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\nRenderer.prototype.renderInlineAsText = function (tokens, options, env) {\n let result = ''\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n switch (tokens[i].type) {\n case 'text':\n result += tokens[i].content\n break\n case 'image':\n result += this.renderInlineAsText(tokens[i].children, options, env)\n break\n case 'html_inline':\n case 'html_block':\n result += tokens[i].content\n break\n case 'softbreak':\n case 'hardbreak':\n result += '\\n'\n break\n default:\n // all other tokens are skipped\n }\n }\n\n return result\n}\n\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\nRenderer.prototype.render = function (tokens, options, env) {\n let result = ''\n const rules = this.rules\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n const type = tokens[i].type\n\n if (type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env)\n } else if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this)\n } else {\n result += this.renderToken(tokens, i, options, env)\n }\n }\n\n return result\n}\n\nexport default Renderer\n","/**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n\n/**\n * new Ruler()\n **/\nfunction Ruler () {\n // List of added rules. Each element is:\n //\n // {\n // name: XXX,\n // enabled: Boolean,\n // fn: Function(),\n // alt: [ name2, name3 ]\n // }\n //\n this.__rules__ = []\n\n // Cached rule chains.\n //\n // First level - chain name, '' for default.\n // Second level - diginal anchor for fast filtering by charcodes.\n //\n this.__cache__ = null\n}\n\n// Helper methods, should not be used directly\n\n// Find rule index by name\n//\nRuler.prototype.__find__ = function (name) {\n for (let i = 0; i < this.__rules__.length; i++) {\n if (this.__rules__[i].name === name) {\n return i\n }\n }\n return -1\n}\n\n// Build rules lookup cache\n//\nRuler.prototype.__compile__ = function () {\n const self = this\n const chains = ['']\n\n // collect unique names\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName)\n }\n })\n })\n\n self.__cache__ = {}\n\n chains.forEach(function (chain) {\n self.__cache__[chain] = []\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return }\n\n if (chain && rule.alt.indexOf(chain) < 0) { return }\n\n self.__cache__[chain].push(rule.fn)\n })\n })\n}\n\n/**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.at = function (name, fn, options) {\n const index = this.__find__(name)\n const opt = options || {}\n\n if (index === -1) { throw new Error('Parser rule not found: ' + name) }\n\n this.__rules__[index].fn = fn\n this.__rules__[index].alt = opt.alt || []\n this.__cache__ = null\n}\n\n/**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n const index = this.__find__(beforeName)\n const opt = options || {}\n\n if (index === -1) { throw new Error('Parser rule not found: ' + beforeName) }\n\n this.__rules__.splice(index, 0, {\n name: ruleName,\n enabled: true,\n fn,\n alt: opt.alt || []\n })\n\n this.__cache__ = null\n}\n\n/**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n const index = this.__find__(afterName)\n const opt = options || {}\n\n if (index === -1) { throw new Error('Parser rule not found: ' + afterName) }\n\n this.__rules__.splice(index + 1, 0, {\n name: ruleName,\n enabled: true,\n fn,\n alt: opt.alt || []\n })\n\n this.__cache__ = null\n}\n\n/**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.push = function (ruleName, fn, options) {\n const opt = options || {}\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn,\n alt: opt.alt || []\n })\n\n this.__cache__ = null\n}\n\n/**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.enable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [list] }\n\n const result = []\n\n // Search by name and enable\n list.forEach(function (name) {\n const idx = this.__find__(name)\n\n if (idx < 0) {\n if (ignoreInvalid) { return }\n throw new Error('Rules manager: invalid rule name ' + name)\n }\n this.__rules__[idx].enabled = true\n result.push(name)\n }, this)\n\n this.__cache__ = null\n return result\n}\n\n/**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\nRuler.prototype.enableOnly = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [list] }\n\n this.__rules__.forEach(function (rule) { rule.enabled = false })\n\n this.enable(list, ignoreInvalid)\n}\n\n/**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.disable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [list] }\n\n const result = []\n\n // Search by name and disable\n list.forEach(function (name) {\n const idx = this.__find__(name)\n\n if (idx < 0) {\n if (ignoreInvalid) { return }\n throw new Error('Rules manager: invalid rule name ' + name)\n }\n this.__rules__[idx].enabled = false\n result.push(name)\n }, this)\n\n this.__cache__ = null\n return result\n}\n\n/**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\nRuler.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__()\n }\n\n // Chain can be empty, if rules disabled. But we still have to return Array.\n return this.__cache__[chainName] || []\n}\n\nexport default Ruler\n","// Token class\n\n/**\n * class Token\n **/\n\n/**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\nfunction Token (type, tag, nesting) {\n /**\n * Token#type -> String\n *\n * Type of the token (string, e.g. \"paragraph_open\")\n **/\n this.type = type\n\n /**\n * Token#tag -> String\n *\n * html tag name, e.g. \"p\"\n **/\n this.tag = tag\n\n /**\n * Token#attrs -> Array\n *\n * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n **/\n this.attrs = null\n\n /**\n * Token#map -> Array\n *\n * Source map info. Format: `[ line_begin, line_end ]`\n **/\n this.map = null\n\n /**\n * Token#nesting -> Number\n *\n * Level change (number in {-1, 0, 1} set), where:\n *\n * - `1` means the tag is opening\n * - `0` means the tag is self-closing\n * - `-1` means the tag is closing\n **/\n this.nesting = nesting\n\n /**\n * Token#level -> Number\n *\n * nesting level, the same as `state.level`\n **/\n this.level = 0\n\n /**\n * Token#children -> Array\n *\n * An array of child nodes (inline and img tokens)\n **/\n this.children = null\n\n /**\n * Token#content -> String\n *\n * In a case of self-closing tag (code, html, fence, etc.),\n * it has contents of this tag.\n **/\n this.content = ''\n\n /**\n * Token#markup -> String\n *\n * '*' or '_' for emphasis, fence string for fence, etc.\n **/\n this.markup = ''\n\n /**\n * Token#info -> String\n *\n * Additional information:\n *\n * - Info string for \"fence\" tokens\n * - The value \"auto\" for autolink \"link_open\" and \"link_close\" tokens\n * - The string value of the item marker for ordered-list \"list_item_open\" tokens\n **/\n this.info = ''\n\n /**\n * Token#meta -> Object\n *\n * A place for plugins to store an arbitrary data\n **/\n this.meta = null\n\n /**\n * Token#block -> Boolean\n *\n * True for block-level tokens, false for inline tokens.\n * Used in renderer to calculate line breaks\n **/\n this.block = false\n\n /**\n * Token#hidden -> Boolean\n *\n * If it's true, ignore this element when rendering. Used for tight lists\n * to hide paragraphs.\n **/\n this.hidden = false\n}\n\n/**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\nToken.prototype.attrIndex = function attrIndex (name) {\n if (!this.attrs) { return -1 }\n\n const attrs = this.attrs\n\n for (let i = 0, len = attrs.length; i < len; i++) {\n if (attrs[i][0] === name) { return i }\n }\n return -1\n}\n\n/**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\nToken.prototype.attrPush = function attrPush (attrData) {\n if (this.attrs) {\n this.attrs.push(attrData)\n } else {\n this.attrs = [attrData]\n }\n}\n\n/**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\nToken.prototype.attrSet = function attrSet (name, value) {\n const idx = this.attrIndex(name)\n const attrData = [name, value]\n\n if (idx < 0) {\n this.attrPush(attrData)\n } else {\n this.attrs[idx] = attrData\n }\n}\n\n/**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\nToken.prototype.attrGet = function attrGet (name) {\n const idx = this.attrIndex(name)\n let value = null\n if (idx >= 0) {\n value = this.attrs[idx][1]\n }\n return value\n}\n\n/**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\nToken.prototype.attrJoin = function attrJoin (name, value) {\n const idx = this.attrIndex(name)\n\n if (idx < 0) {\n this.attrPush([name, value])\n } else {\n this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value\n }\n}\n\nexport default Token\n","// Core state object\n//\n\nimport Token from '../token.mjs'\n\nfunction StateCore (src, md, env) {\n this.src = src\n this.env = env\n this.tokens = []\n this.inlineMode = false\n this.md = md // link to parser instance\n}\n\n// re-export Token class to use in core rules\nStateCore.prototype.Token = Token\n\nexport default StateCore\n","// Normalize input string\n\n// https://spec.commonmark.org/0.29/#line-ending\nconst NEWLINES_RE = /\\r\\n?|\\n/g\nconst NULL_RE = /\\0/g\n\nexport default function normalize (state) {\n let str\n\n // Normalize newlines\n str = state.src.replace(NEWLINES_RE, '\\n')\n\n // Replace NULL characters\n str = str.replace(NULL_RE, '\\uFFFD')\n\n state.src = str\n}\n","export default function block (state) {\n let token\n\n if (state.inlineMode) {\n token = new state.Token('inline', '', 0)\n token.content = state.src\n token.map = [0, 1]\n token.children = []\n state.tokens.push(token)\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens)\n }\n}\n","export default function inline (state) {\n const tokens = state.tokens\n\n // Parse inlines\n for (let i = 0, l = tokens.length; i < l; i++) {\n const tok = tokens[i]\n if (tok.type === 'inline') {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children)\n }\n }\n}\n","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `md.validateLink()` to http/https/ftp\n//\n\nimport { arrayReplaceAt } from '../common/utils.mjs'\n\nfunction isLinkOpen (str) {\n return /^<a[>\\s]/i.test(str)\n}\nfunction isLinkClose (str) {\n return /^<\\/a\\s*>/i.test(str)\n}\n\nexport default function linkify (state) {\n const blockTokens = state.tokens\n\n if (!state.md.options.linkify) { return }\n\n for (let j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline' ||\n !state.md.linkify.pretest(blockTokens[j].content)) {\n continue\n }\n\n let tokens = blockTokens[j].children\n\n let htmlLinkLevel = 0\n\n // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n for (let i = tokens.length - 1; i >= 0; i--) {\n const currentToken = tokens[i]\n\n // Skip content of markdown links\n if (currentToken.type === 'link_close') {\n i--\n while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n i--\n }\n continue\n }\n\n // Skip content of html tag links\n if (currentToken.type === 'html_inline') {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--\n }\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++\n }\n }\n if (htmlLinkLevel > 0) { continue }\n\n if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n const text = currentToken.content\n let links = state.md.linkify.match(text)\n\n // Now split string to nodes\n const nodes = []\n let level = currentToken.level\n let lastPos = 0\n\n // forbid escape sequence at the start of the string,\n // this avoids http\\://example.com/ from being linkified as\n // http:<a href=\"//example.com/\">//example.com/</a>\n if (links.length > 0 &&\n links[0].index === 0 &&\n i > 0 &&\n tokens[i - 1].type === 'text_special') {\n links = links.slice(1)\n }\n\n for (let ln = 0; ln < links.length; ln++) {\n const url = links[ln].url\n const fullUrl = state.md.normalizeLink(url)\n if (!state.md.validateLink(fullUrl)) { continue }\n\n let urlText = links[ln].text\n\n // Linkifier might send raw hostnames like \"example.com\", where url\n // starts with domain name. So we prepend http:// in those cases,\n // and remove it afterwards.\n //\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '')\n } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '')\n } else {\n urlText = state.md.normalizeLinkText(urlText)\n }\n\n const pos = links[ln].index\n\n if (pos > lastPos) {\n const token = new state.Token('text', '', 0)\n token.content = text.slice(lastPos, pos)\n token.level = level\n nodes.push(token)\n }\n\n const token_o = new state.Token('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.level = level++\n token_o.markup = 'linkify'\n token_o.info = 'auto'\n nodes.push(token_o)\n\n const token_t = new state.Token('text', '', 0)\n token_t.content = urlText\n token_t.level = level\n nodes.push(token_t)\n\n const token_c = new state.Token('link_close', 'a', -1)\n token_c.level = --level\n token_c.markup = 'linkify'\n token_c.info = 'auto'\n nodes.push(token_c)\n\n lastPos = links[ln].lastIndex\n }\n if (lastPos < text.length) {\n const token = new state.Token('text', '', 0)\n token.content = text.slice(lastPos)\n token.level = level\n nodes.push(token)\n }\n\n // replace current node\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes)\n }\n }\n }\n}\n","// Simple typographic replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → &ndash;, --- → &mdash;\n//\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - multiplications 2 x 4 -> 2 × 4\n\nconst RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/\n\n// Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\nconst SCOPED_ABBR_TEST_RE = /\\((c|tm|r)\\)/i\n\nconst SCOPED_ABBR_RE = /\\((c|tm|r)\\)/ig\nconst SCOPED_ABBR = {\n c: '©',\n r: '®',\n tm: '™'\n}\n\nfunction replaceFn (match, name) {\n return SCOPED_ABBR[name.toLowerCase()]\n}\n\nfunction replace_scoped (inlineTokens) {\n let inside_autolink = 0\n\n for (let i = inlineTokens.length - 1; i >= 0; i--) {\n const token = inlineTokens[i]\n\n if (token.type === 'text' && !inside_autolink) {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn)\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++\n }\n }\n}\n\nfunction replace_rare (inlineTokens) {\n let inside_autolink = 0\n\n for (let i = inlineTokens.length - 1; i >= 0; i--) {\n const token = inlineTokens[i]\n\n if (token.type === 'text' && !inside_autolink) {\n if (RARE_RE.test(token.content)) {\n token.content = token.content\n .replace(/\\+-/g, '±')\n // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n // em-dash\n .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\\u2014')\n // en-dash\n .replace(/(^|\\s)--(?=\\s|$)/mg, '$1\\u2013')\n .replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, '$1\\u2013')\n }\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++\n }\n }\n}\n\nexport default function replace (state) {\n let blkIdx\n\n if (!state.md.options.typographer) { return }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline') { continue }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children)\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children)\n }\n }\n}\n","// Convert straight quotation marks to typographic ones\n//\n\nimport { isWhiteSpace, isPunctChar, isMdAsciiPunct } from '../common/utils.mjs'\n\nconst QUOTE_TEST_RE = /['\"]/\nconst QUOTE_RE = /['\"]/g\nconst APOSTROPHE = '\\u2019' /* ’ */\n\nfunction replaceAt (str, index, ch) {\n return str.slice(0, index) + ch + str.slice(index + 1)\n}\n\nfunction process_inlines (tokens, state) {\n let j\n\n const stack = []\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i]\n\n const thisLevel = tokens[i].level\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) { break }\n }\n stack.length = j + 1\n\n if (token.type !== 'text') { continue }\n\n let text = token.content\n let pos = 0\n let max = text.length\n\n /* eslint no-labels:0,block-scoped-var:0 */\n OUTER:\n while (pos < max) {\n QUOTE_RE.lastIndex = pos\n const t = QUOTE_RE.exec(text)\n if (!t) { break }\n\n let canOpen = true\n let canClose = true\n pos = t.index + 1\n const isSingle = (t[0] === \"'\")\n\n // Find previous character,\n // default to space if it's the beginning of the line\n //\n let lastChar = 0x20\n\n if (t.index - 1 >= 0) {\n lastChar = text.charCodeAt(t.index - 1)\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break // lastChar defaults to 0x20\n if (!tokens[j].content) continue // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1)\n break\n }\n }\n\n // Find next character,\n // default to space if it's the end of the line\n //\n let nextChar = 0x20\n\n if (pos < max) {\n nextChar = text.charCodeAt(pos)\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break // nextChar defaults to 0x20\n if (!tokens[j].content) continue // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n nextChar = tokens[j].content.charCodeAt(0)\n break\n }\n }\n\n const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar))\n const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar))\n\n const isLastWhiteSpace = isWhiteSpace(lastChar)\n const isNextWhiteSpace = isWhiteSpace(nextChar)\n\n if (isNextWhiteSpace) {\n canOpen = false\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false\n }\n }\n\n if (nextChar === 0x22 /* \" */ && t[0] === '\"') {\n if (lastChar >= 0x30 /* 0 */ && lastChar <= 0x39 /* 9 */) {\n // special case: 1\"\" - count first quote as an inch\n canClose = canOpen = false\n }\n }\n\n if (canOpen && canClose) {\n // Replace quotes in the middle of punctuation sequence, but not\n // in the middle of the words, i.e.:\n //\n // 1. foo \" bar \" baz - not replaced\n // 2. foo-\"-bar-\"-baz - replaced\n // 3. foo\"bar\"baz - not replaced\n //\n canOpen = isLastPunctChar\n canClose = isNextPunctChar\n }\n\n if (!canOpen && !canClose) {\n // middle of word\n if (isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE)\n }\n continue\n }\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n let item = stack[j]\n if (stack[j].level < thisLevel) { break }\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j]\n\n let openQuote\n let closeQuote\n if (isSingle) {\n openQuote = state.md.options.quotes[2]\n closeQuote = state.md.options.quotes[3]\n } else {\n openQuote = state.md.options.quotes[0]\n closeQuote = state.md.options.quotes[1]\n }\n\n // replace token.content *before* tokens[item.token].content,\n // because, if they are pointing at the same token, replaceAt\n // could mess up indices when quote length != 1\n token.content = replaceAt(token.content, t.index, closeQuote)\n tokens[item.token].content = replaceAt(\n tokens[item.token].content, item.pos, openQuote)\n\n pos += closeQuote.length - 1\n if (item.token === i) { pos += openQuote.length - 1 }\n\n text = token.content\n max = text.length\n\n stack.length = j\n continue OUTER\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n })\n } else if (canClose && isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE)\n }\n }\n }\n}\n\nexport default function smartquotes (state) {\n /* eslint max-depth:0 */\n if (!state.md.options.typographer) { return }\n\n for (let blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline' ||\n !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue\n }\n\n process_inlines(state.tokens[blkIdx].children, state)\n }\n}\n","// Join raw text tokens with the rest of the text\n//\n// This is set as a separate rule to provide an opportunity for plugins\n// to run text replacements after text join, but before escape join.\n//\n// For example, `\\:)` shouldn't be replaced with an emoji.\n//\n\nexport default function text_join (state) {\n let curr, last\n const blockTokens = state.tokens\n const l = blockTokens.length\n\n for (let j = 0; j < l; j++) {\n if (blockTokens[j].type !== 'inline') continue\n\n const tokens = blockTokens[j].children\n const max = tokens.length\n\n for (curr = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text_special') {\n tokens[curr].type = 'text'\n }\n }\n\n for (curr = last = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text' &&\n curr + 1 < max &&\n tokens[curr + 1].type === 'text') {\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content\n } else {\n if (curr !== last) { tokens[last] = tokens[curr] }\n\n last++\n }\n }\n\n if (curr !== last) {\n tokens.length = last\n }\n }\n}\n","/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateCore from './rules_core/state_core.mjs'\n\nimport r_normalize from './rules_core/normalize.mjs'\nimport r_block from './rules_core/block.mjs'\nimport r_inline from './rules_core/inline.mjs'\nimport r_linkify from './rules_core/linkify.mjs'\nimport r_replacements from './rules_core/replacements.mjs'\nimport r_smartquotes from './rules_core/smartquotes.mjs'\nimport r_text_join from './rules_core/text_join.mjs'\n\nconst _rules = [\n ['normalize', r_normalize],\n ['block', r_block],\n ['inline', r_inline],\n ['linkify', r_linkify],\n ['replacements', r_replacements],\n ['smartquotes', r_smartquotes],\n // `text_join` finds `text_special` tokens (for escape sequences)\n // and joins them with the rest of the text\n ['text_join', r_text_join]\n]\n\n/**\n * new Core()\n **/\nfunction Core () {\n /**\n * Core#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of core rules.\n **/\n this.ruler = new Ruler()\n\n for (let i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1])\n }\n}\n\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\nCore.prototype.process = function (state) {\n const rules = this.ruler.getRules('')\n\n for (let i = 0, l = rules.length; i < l; i++) {\n rules[i](state)\n }\n}\n\nCore.prototype.State = StateCore\n\nexport default Core\n","// Parser state class\n\nimport Token from '../token.mjs'\nimport { isSpace } from '../common/utils.mjs'\n\nfunction StateBlock (src, md, env, tokens) {\n this.src = src\n\n // link to parser instance\n this.md = md\n\n this.env = env\n\n //\n // Internal state vartiables\n //\n\n this.tokens = tokens\n\n this.bMarks = [] // line begin offsets for fast jumps\n this.eMarks = [] // line end offsets for fast jumps\n this.tShift = [] // offsets of the first non-space characters (tabs not expanded)\n this.sCount = [] // indents for each line (tabs expanded)\n\n // An amount of virtual spaces (tabs expanded) between beginning\n // of each line (bMarks) and real beginning of that line.\n //\n // It exists only as a hack because blockquotes override bMarks\n // losing information in the process.\n //\n // It's used only when expanding tabs, you can think about it as\n // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n // means first tab should be expanded to 4-21%4 === 3 spaces.\n //\n this.bsCount = []\n\n // block parser variables\n\n // required block content indent (for example, if we are\n // inside a list, it would be positioned after list marker)\n this.blkIndent = 0\n this.line = 0 // line index in src\n this.lineMax = 0 // lines count\n this.tight = false // loose/tight mode for lists\n this.ddIndent = -1 // indent of the current dd block (-1 if there isn't any)\n this.listIndent = -1 // indent of the current list block (-1 if there isn't any)\n\n // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n // used in lists to determine if they interrupt a paragraph\n this.parentType = 'root'\n\n this.level = 0\n\n // Create caches\n // Generate markers.\n const s = this.src\n\n for (let start = 0, pos = 0, indent = 0, offset = 0, len = s.length, indent_found = false; pos < len; pos++) {\n const ch = s.charCodeAt(pos)\n\n if (!indent_found) {\n if (isSpace(ch)) {\n indent++\n\n if (ch === 0x09) {\n offset += 4 - offset % 4\n } else {\n offset++\n }\n continue\n } else {\n indent_found = true\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) { pos++ }\n this.bMarks.push(start)\n this.eMarks.push(pos)\n this.tShift.push(indent)\n this.sCount.push(offset)\n this.bsCount.push(0)\n\n indent_found = false\n indent = 0\n offset = 0\n start = pos + 1\n }\n }\n\n // Push fake entry to simplify cache bounds checks\n this.bMarks.push(s.length)\n this.eMarks.push(s.length)\n this.tShift.push(0)\n this.sCount.push(0)\n this.bsCount.push(0)\n\n this.lineMax = this.bMarks.length - 1 // don't count last fake line\n}\n\n// Push new token to \"stream\".\n//\nStateBlock.prototype.push = function (type, tag, nesting) {\n const token = new Token(type, tag, nesting)\n token.block = true\n\n if (nesting < 0) this.level-- // closing tag\n token.level = this.level\n if (nesting > 0) this.level++ // opening tag\n\n this.tokens.push(token)\n return token\n}\n\nStateBlock.prototype.isEmpty = function isEmpty (line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]\n}\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines (from) {\n for (let max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break\n }\n }\n return from\n}\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces (pos) {\n for (let max = this.src.length; pos < max; pos++) {\n const ch = this.src.charCodeAt(pos)\n if (!isSpace(ch)) { break }\n }\n return pos\n}\n\n// Skip spaces from given position in reverse.\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack (pos, min) {\n if (pos <= min) { return pos }\n\n while (pos > min) {\n if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1 }\n }\n return pos\n}\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars (pos, code) {\n for (let max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) { break }\n }\n return pos\n}\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack (pos, code, min) {\n if (pos <= min) { return pos }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) { return pos + 1 }\n }\n return pos\n}\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines (begin, end, indent, keepLastLF) {\n if (begin >= end) {\n return ''\n }\n\n const queue = new Array(end - begin)\n\n for (let i = 0, line = begin; line < end; line++, i++) {\n let lineIndent = 0\n const lineStart = this.bMarks[line]\n let first = lineStart\n let last\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1\n } else {\n last = this.eMarks[line]\n }\n\n while (first < last && lineIndent < indent) {\n const ch = this.src.charCodeAt(first)\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4\n } else {\n lineIndent++\n }\n } else if (first - lineStart < this.tShift[line]) {\n // patched tShift masked characters to look like spaces (blockquotes, list markers)\n lineIndent++\n } else {\n break\n }\n\n first++\n }\n\n if (lineIndent > indent) {\n // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n // with indent=2 becomes ' \\tfoobar'\n queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last)\n } else {\n queue[i] = this.src.slice(first, last)\n }\n }\n\n return queue.join('')\n}\n\n// re-export Token class to use in block rules\nStateBlock.prototype.Token = Token\n\nexport default StateBlock\n","// GFM table, https://github.github.com/gfm/#tables-extension-\n\nimport { isSpace } from '../common/utils.mjs'\n\n// Limit the amount of empty autocompleted cells in a table,\n// see https://github.com/markdown-it/markdown-it/issues/1000,\n//\n// Both pulldown-cmark and commonmark-hs limit the number of cells this way to ~200k.\n// We set it to 65k, which can expand user input by a factor of x370\n// (256x256 square is 1.8kB expanded into 650kB).\nconst MAX_AUTOCOMPLETED_CELLS = 0x10000\n\nfunction getLine (state, line) {\n const pos = state.bMarks[line] + state.tShift[line]\n const max = state.eMarks[line]\n\n return state.src.slice(pos, max)\n}\n\nfunction escapedSplit (str) {\n const result = []\n const max = str.length\n\n let pos = 0\n let ch = str.charCodeAt(pos)\n let isEscaped = false\n let lastPos = 0\n let current = ''\n\n while (pos < max) {\n if (ch === 0x7c/* | */) {\n if (!isEscaped) {\n // pipe separating cells, '|'\n result.push(current + str.substring(lastPos, pos))\n current = ''\n lastPos = pos + 1\n } else {\n // escaped pipe, '\\|'\n current += str.substring(lastPos, pos - 1)\n lastPos = pos\n }\n }\n\n isEscaped = (ch === 0x5c/* \\ */)\n pos++\n\n ch = str.charCodeAt(pos)\n }\n\n result.push(current + str.substring(lastPos))\n\n return result\n}\n\nexport default function table (state, startLine, endLine, silent) {\n // should have at least two lines\n if (startLine + 2 > endLine) { return false }\n\n let nextLine = startLine + 1\n\n if (state.sCount[nextLine] < state.blkIndent) { return false }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { return false }\n\n // first character of the second line should be '|', '-', ':',\n // and no other characters are allowed but spaces;\n // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n let pos = state.bMarks[nextLine] + state.tShift[nextLine]\n if (pos >= state.eMarks[nextLine]) { return false }\n\n const firstCh = state.src.charCodeAt(pos++)\n if (firstCh !== 0x7C/* | */ && firstCh !== 0x2D/* - */ && firstCh !== 0x3A/* : */) { return false }\n\n if (pos >= state.eMarks[nextLine]) { return false }\n\n const secondCh = state.src.charCodeAt(pos++)\n if (secondCh !== 0x7C/* | */ && secondCh !== 0x2D/* - */ && secondCh !== 0x3A/* : */ && !isSpace(secondCh)) {\n return false\n }\n\n // if first character is '-', then second character must not be a space\n // (due to parsing ambiguity with list)\n if (firstCh === 0x2D/* - */ && isSpace(secondCh)) { return false }\n\n while (pos < state.eMarks[nextLine]) {\n const ch = state.src.charCodeAt(pos)\n\n if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */ && !isSpace(ch)) { return false }\n\n pos++\n }\n\n let lineText = getLine(state, startLine + 1)\n let columns = lineText.split('|')\n const aligns = []\n for (let i = 0; i < columns.length; i++) {\n const t = columns[i].trim()\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === columns.length - 1) {\n continue\n } else {\n return false\n }\n }\n\n if (!/^:?-+:?$/.test(t)) { return false }\n if (t.charCodeAt(t.length - 1) === 0x3A/* : */) {\n aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right')\n } else if (t.charCodeAt(0) === 0x3A/* : */) {\n aligns.push('left')\n } else {\n aligns.push('')\n }\n }\n\n lineText = getLine(state, startLine).trim()\n if (lineText.indexOf('|') === -1) { return false }\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n columns = escapedSplit(lineText)\n if (columns.length && columns[0] === '') columns.shift()\n if (columns.length && columns[columns.length - 1] === '') columns.pop()\n\n // header row will define an amount of columns in the entire table,\n // and align row should be exactly the same (the rest of the rows can differ)\n const columnCount = columns.length\n if (columnCount === 0 || columnCount !== aligns.length) { return false }\n\n if (silent) { return true }\n\n const oldParentType = state.parentType\n state.parentType = 'table'\n\n // use 'blockquote' lists for termination because it's\n // the most similar to tables\n const terminatorRules = state.md.block.ruler.getRules('blockquote')\n\n const token_to = state.push('table_open', 'table', 1)\n const tableLines = [startLine, 0]\n token_to.map = tableLines\n\n const token_tho = state.push('thead_open', 'thead', 1)\n token_tho.map = [startLine, startLine + 1]\n\n const token_htro = state.push('tr_open', 'tr', 1)\n token_htro.map = [startLine, startLine + 1]\n\n for (let i = 0; i < columns.length; i++) {\n const token_ho = state.push('th_open', 'th', 1)\n if (aligns[i]) {\n token_ho.attrs = [['style', 'text-align:' + aligns[i]]]\n }\n\n const token_il = state.push('inline', '', 0)\n token_il.content = columns[i].trim()\n token_il.children = []\n\n state.push('th_close', 'th', -1)\n }\n\n state.push('tr_close', 'tr', -1)\n state.push('thead_close', 'thead', -1)\n\n let tbodyLines\n let autocompletedCells = 0\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break }\n\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n\n if (terminate) { break }\n lineText = getLine(state, nextLine).trim()\n if (!lineText) { break }\n if (state.sCount[nextLine] - state.blkIndent >= 4) { break }\n columns = escapedSplit(lineText)\n if (columns.length && columns[0] === '') columns.shift()\n if (columns.length && columns[columns.length - 1] === '') columns.pop()\n\n // note: autocomplete count can be negative if user specifies more columns than header,\n // but that does not affect intended use (which is limiting expansion)\n autocompletedCells += columnCount - columns.length\n if (autocompletedCells > MAX_AUTOCOMPLETED_CELLS) { break }\n\n if (nextLine === startLine + 2) {\n const token_tbo = state.push('tbody_open', 'tbody', 1)\n token_tbo.map = tbodyLines = [startLine + 2, 0]\n }\n\n const token_tro = state.push('tr_open', 'tr', 1)\n token_tro.map = [nextLine, nextLine + 1]\n\n for (let i = 0; i < columnCount; i++) {\n const token_tdo = state.push('td_open', 'td', 1)\n if (aligns[i]) {\n token_tdo.attrs = [['style', 'text-align:' + aligns[i]]]\n }\n\n const token_il = state.push('inline', '', 0)\n token_il.content = columns[i] ? columns[i].trim() : ''\n token_il.children = []\n\n state.push('td_close', 'td', -1)\n }\n state.push('tr_close', 'tr', -1)\n }\n\n if (tbodyLines) {\n state.push('tbody_close', 'tbody', -1)\n tbodyLines[1] = nextLine\n }\n\n state.push('table_close', 'table', -1)\n tableLines[1] = nextLine\n\n state.parentType = oldParentType\n state.line = nextLine\n return true\n}\n","// Code block (4 spaces padded)\n\nexport default function code (state, startLine, endLine/*, silent */) {\n if (state.sCount[startLine] - state.blkIndent < 4) { return false }\n\n let nextLine = startLine + 1\n let last = nextLine\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n nextLine++\n continue\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n nextLine++\n last = nextLine\n continue\n }\n break\n }\n\n state.line = last\n\n const token = state.push('code_block', 'code', 0)\n token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + '\\n'\n token.map = [startLine, state.line]\n\n return true\n}\n","// fences (``` lang, ~~~ lang)\n\nexport default function fence (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n if (pos + 3 > max) { return false }\n\n const marker = state.src.charCodeAt(pos)\n\n if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) {\n return false\n }\n\n // scan marker length\n let mem = pos\n pos = state.skipChars(pos, marker)\n\n let len = pos - mem\n\n if (len < 3) { return false }\n\n const markup = state.src.slice(mem, pos)\n const params = state.src.slice(pos, max)\n\n if (marker === 0x60 /* ` */) {\n if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n return false\n }\n }\n\n // Since start is found, we can report success here in validation mode\n if (silent) { return true }\n\n // search end of block\n let nextLine = startLine\n let haveEndMarker = false\n\n for (;;) {\n nextLine++\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]\n max = state.eMarks[nextLine]\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break\n }\n\n if (state.src.charCodeAt(pos) !== marker) { continue }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue\n }\n\n pos = state.skipChars(pos, marker)\n\n // closing code fence must be at least as long as the opening one\n if (pos - mem < len) { continue }\n\n // make sure tail has spaces only\n pos = state.skipSpaces(pos)\n\n if (pos < max) { continue }\n\n haveEndMarker = true\n // found!\n break\n }\n\n // If a fence has heading spaces, they should be removed from its inner block\n len = state.sCount[startLine]\n\n state.line = nextLine + (haveEndMarker ? 1 : 0)\n\n const token = state.push('fence', 'code', 0)\n token.info = params\n token.content = state.getLines(startLine + 1, nextLine, len, true)\n token.markup = markup\n token.map = [startLine, state.line]\n\n return true\n}\n","// Block quotes\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function blockquote (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n const oldLineMax = state.lineMax\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n // check the block quote marker\n if (state.src.charCodeAt(pos) !== 0x3E/* > */) { return false }\n\n // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n if (silent) { return true }\n\n const oldBMarks = []\n const oldBSCount = []\n const oldSCount = []\n const oldTShift = []\n\n const terminatorRules = state.md.block.ruler.getRules('blockquote')\n\n const oldParentType = state.parentType\n state.parentType = 'blockquote'\n let lastLineEmpty = false\n let nextLine\n\n // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag:\n // ```\n // > test\n // - - -\n // ```\n for (nextLine = startLine; nextLine < endLine; nextLine++) {\n // check if it's outdented, i.e. it's inside list item and indented\n // less than said list item:\n //\n // ```\n // 1. anything\n // > current blockquote\n // 2. checking this line\n // ```\n const isOutdented = state.sCount[nextLine] < state.blkIndent\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine]\n max = state.eMarks[nextLine]\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E/* > */ && !isOutdented) {\n // This line is inside the blockquote.\n\n // set offset past spaces and \">\"\n let initial = state.sCount[nextLine] + 1\n let spaceAfterMarker\n let adjustTab\n\n // skip one optional space after '>'\n if (state.src.charCodeAt(pos) === 0x20 /* space */) {\n // ' > test '\n // ^ -- position start of line here:\n pos++\n initial++\n adjustTab = false\n spaceAfterMarker = true\n } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) {\n spaceAfterMarker = true\n\n if ((state.bsCount[nextLine] + initial) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++\n initial++\n adjustTab = false\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true\n }\n } else {\n spaceAfterMarker = false\n }\n\n let offset = initial\n oldBMarks.push(state.bMarks[nextLine])\n state.bMarks[nextLine] = pos\n\n while (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4\n } else {\n offset++\n }\n } else {\n break\n }\n\n pos++\n }\n\n lastLineEmpty = pos >= max\n\n oldBSCount.push(state.bsCount[nextLine])\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0)\n\n oldSCount.push(state.sCount[nextLine])\n state.sCount[nextLine] = offset - initial\n\n oldTShift.push(state.tShift[nextLine])\n state.tShift[nextLine] = pos - state.bMarks[nextLine]\n continue\n }\n\n // Case 2: line is not inside the blockquote, and the last line was empty.\n if (lastLineEmpty) { break }\n\n // Case 3: another tag found.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n\n if (terminate) {\n // Quirk to enforce \"hard termination mode\" for paragraphs;\n // normally if you call `tokenize(state, startLine, nextLine)`,\n // paragraphs will look below nextLine for paragraph continuation,\n // but if blockquote is terminated by another tag, they shouldn't\n state.lineMax = nextLine\n\n if (state.blkIndent !== 0) {\n // state.blkIndent was non-zero, we now set it to zero,\n // so we need to re-calculate all offsets to appear as\n // if indent wasn't changed\n oldBMarks.push(state.bMarks[nextLine])\n oldBSCount.push(state.bsCount[nextLine])\n oldTShift.push(state.tShift[nextLine])\n oldSCount.push(state.sCount[nextLine])\n state.sCount[nextLine] -= state.blkIndent\n }\n\n break\n }\n\n oldBMarks.push(state.bMarks[nextLine])\n oldBSCount.push(state.bsCount[nextLine])\n oldTShift.push(state.tShift[nextLine])\n oldSCount.push(state.sCount[nextLine])\n\n // A negative indentation means that this is a paragraph continuation\n //\n state.sCount[nextLine] = -1\n }\n\n const oldIndent = state.blkIndent\n state.blkIndent = 0\n\n const token_o = state.push('blockquote_open', 'blockquote', 1)\n token_o.markup = '>'\n const lines = [startLine, 0]\n token_o.map = lines\n\n state.md.block.tokenize(state, startLine, nextLine)\n\n const token_c = state.push('blockquote_close', 'blockquote', -1)\n token_c.markup = '>'\n\n state.lineMax = oldLineMax\n state.parentType = oldParentType\n lines[1] = state.line\n\n // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n for (let i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i]\n state.tShift[i + startLine] = oldTShift[i]\n state.sCount[i + startLine] = oldSCount[i]\n state.bsCount[i + startLine] = oldBSCount[i]\n }\n state.blkIndent = oldIndent\n\n return true\n}\n","// Horizontal rule\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function hr (state, startLine, endLine, silent) {\n const max = state.eMarks[startLine]\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n const marker = state.src.charCodeAt(pos++)\n\n // Check hr marker\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x5F/* _ */) {\n return false\n }\n\n // markers can be mixed with spaces, but there should be at least 3 of them\n\n let cnt = 1\n while (pos < max) {\n const ch = state.src.charCodeAt(pos++)\n if (ch !== marker && !isSpace(ch)) { return false }\n if (ch === marker) { cnt++ }\n }\n\n if (cnt < 3) { return false }\n\n if (silent) { return true }\n\n state.line = startLine + 1\n\n const token = state.push('hr', 'hr', 0)\n token.map = [startLine, state.line]\n token.markup = Array(cnt + 1).join(String.fromCharCode(marker))\n\n return true\n}\n","// Lists\n\nimport { isSpace } from '../common/utils.mjs'\n\n// Search `[-+*][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipBulletListMarker (state, startLine) {\n const max = state.eMarks[startLine]\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n\n const marker = state.src.charCodeAt(pos++)\n // Check bullet\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x2B/* + */) {\n return -1\n }\n\n if (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (!isSpace(ch)) {\n // \" -test \" - is not a list item\n return -1\n }\n }\n\n return pos\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker (state, startLine) {\n const start = state.bMarks[startLine] + state.tShift[startLine]\n const max = state.eMarks[startLine]\n let pos = start\n\n // List marker should have at least 2 chars (digit + dot)\n if (pos + 1 >= max) { return -1 }\n\n let ch = state.src.charCodeAt(pos++)\n\n if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1 }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) { return -1 }\n\n ch = state.src.charCodeAt(pos++)\n\n if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) {\n // List marker should have no more than 9 digits\n // (prevents integer overflow in browsers)\n if (pos - start >= 10) { return -1 }\n\n continue\n }\n\n // found valid marker\n if (ch === 0x29/* ) */ || ch === 0x2e/* . */) {\n break\n }\n\n return -1\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos)\n\n if (!isSpace(ch)) {\n // \" 1.test \" - is not a list item\n return -1\n }\n }\n return pos\n}\n\nfunction markTightParagraphs (state, idx) {\n const level = state.level + 2\n\n for (let i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true\n state.tokens[i].hidden = true\n i += 2\n }\n }\n}\n\nexport default function list (state, startLine, endLine, silent) {\n let max, pos, start, token\n let nextLine = startLine\n let tight = true\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { return false }\n\n // Special case:\n // - item 1\n // - item 2\n // - item 3\n // - item 4\n // - this one is a paragraph continuation\n if (state.listIndent >= 0 &&\n state.sCount[nextLine] - state.listIndent >= 4 &&\n state.sCount[nextLine] < state.blkIndent) {\n return false\n }\n\n let isTerminatingParagraph = false\n\n // limit conditions when list can interrupt\n // a paragraph (validation mode only)\n if (silent && state.parentType === 'paragraph') {\n // Next list item should still terminate previous list item;\n //\n // This code can fail if plugins use blkIndent as well as lists,\n // but I hope the spec gets fixed long before that happens.\n //\n if (state.sCount[nextLine] >= state.blkIndent) {\n isTerminatingParagraph = true\n }\n }\n\n // Detect list type and position after marker\n let isOrdered\n let markerValue\n let posAfterMarker\n if ((posAfterMarker = skipOrderedListMarker(state, nextLine)) >= 0) {\n isOrdered = true\n start = state.bMarks[nextLine] + state.tShift[nextLine]\n markerValue = Number(state.src.slice(start, posAfterMarker - 1))\n\n // If we're starting a new ordered list right after\n // a paragraph, it should start with 1.\n if (isTerminatingParagraph && markerValue !== 1) return false\n } else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) {\n isOrdered = false\n } else {\n return false\n }\n\n // If we're starting a new unordered list right after\n // a paragraph, first line should not be empty.\n if (isTerminatingParagraph) {\n if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false\n }\n\n // For validation mode we can terminate immediately\n if (silent) { return true }\n\n // We should terminate list on style change. Remember first one to compare.\n const markerCharCode = state.src.charCodeAt(posAfterMarker - 1)\n\n // Start list\n const listTokIdx = state.tokens.length\n\n if (isOrdered) {\n token = state.push('ordered_list_open', 'ol', 1)\n if (markerValue !== 1) {\n token.attrs = [['start', markerValue]]\n }\n } else {\n token = state.push('bullet_list_open', 'ul', 1)\n }\n\n const listLines = [nextLine, 0]\n token.map = listLines\n token.markup = String.fromCharCode(markerCharCode)\n\n //\n // Iterate list items\n //\n\n let prevEmptyEnd = false\n const terminatorRules = state.md.block.ruler.getRules('list')\n\n const oldParentType = state.parentType\n state.parentType = 'list'\n\n while (nextLine < endLine) {\n pos = posAfterMarker\n max = state.eMarks[nextLine]\n\n const initial = state.sCount[nextLine] + posAfterMarker - (state.bMarks[nextLine] + state.tShift[nextLine])\n let offset = initial\n\n while (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine]) % 4\n } else if (ch === 0x20) {\n offset++\n } else {\n break\n }\n\n pos++\n }\n\n const contentStart = pos\n let indentAfterMarker\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1\n } else {\n indentAfterMarker = offset - initial\n }\n\n // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n if (indentAfterMarker > 4) { indentAfterMarker = 1 }\n\n // \" - test\"\n // ^^^^^ - calculating total length of this thing\n const indent = initial + indentAfterMarker\n\n // Run subparser & write tokens\n token = state.push('list_item_open', 'li', 1)\n token.markup = String.fromCharCode(markerCharCode)\n const itemLines = [nextLine, 0]\n token.map = itemLines\n if (isOrdered) {\n token.info = state.src.slice(start, posAfterMarker - 1)\n }\n\n // change current state, then restore it after parser subcall\n const oldTight = state.tight\n const oldTShift = state.tShift[nextLine]\n const oldSCount = state.sCount[nextLine]\n\n // - example list\n // ^ listIndent position will be here\n // ^ blkIndent position will be here\n //\n const oldListIndent = state.listIndent\n state.listIndent = state.blkIndent\n state.blkIndent = indent\n\n state.tight = true\n state.tShift[nextLine] = contentStart - state.bMarks[nextLine]\n state.sCount[nextLine] = offset\n\n if (contentStart >= max && state.isEmpty(nextLine + 1)) {\n // workaround for this case\n // (list item is empty, list terminates before \"foo\"):\n // ~~~~~~~~\n // -\n //\n // foo\n // ~~~~~~~~\n state.line = Math.min(state.line + 2, endLine)\n } else {\n state.md.block.tokenize(state, nextLine, endLine, true)\n }\n\n // If any of list item is tight, mark list as tight\n if (!state.tight || prevEmptyEnd) {\n tight = false\n }\n // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n prevEmptyEnd = (state.line - nextLine) > 1 && state.isEmpty(state.line - 1)\n\n state.blkIndent = state.listIndent\n state.listIndent = oldListIndent\n state.tShift[nextLine] = oldTShift\n state.sCount[nextLine] = oldSCount\n state.tight = oldTight\n\n token = state.push('list_item_close', 'li', -1)\n token.markup = String.fromCharCode(markerCharCode)\n\n nextLine = state.line\n itemLines[1] = nextLine\n\n if (nextLine >= endLine) { break }\n\n //\n // Try to check if list is terminated or continued.\n //\n if (state.sCount[nextLine] < state.blkIndent) { break }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { break }\n\n // fail if terminating block found\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n if (terminate) { break }\n\n // fail if list has another type\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine)\n if (posAfterMarker < 0) { break }\n start = state.bMarks[nextLine] + state.tShift[nextLine]\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine)\n if (posAfterMarker < 0) { break }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break }\n }\n\n // Finalize list\n if (isOrdered) {\n token = state.push('ordered_list_close', 'ol', -1)\n } else {\n token = state.push('bullet_list_close', 'ul', -1)\n }\n token.markup = String.fromCharCode(markerCharCode)\n\n listLines[1] = nextLine\n state.line = nextLine\n\n state.parentType = oldParentType\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx)\n }\n\n return true\n}\n","import { isSpace, normalizeReference } from '../common/utils.mjs'\n\nexport default function reference (state, startLine, _endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n let nextLine = startLine + 1\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n if (state.src.charCodeAt(pos) !== 0x5B/* [ */) { return false }\n\n function getNextLine (nextLine) {\n const endLine = state.lineMax\n\n if (nextLine >= endLine || state.isEmpty(nextLine)) {\n // empty line or end of input\n return null\n }\n\n let isContinuation = false\n\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { isContinuation = true }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { isContinuation = true }\n\n if (!isContinuation) {\n const terminatorRules = state.md.block.ruler.getRules('reference')\n const oldParentType = state.parentType\n state.parentType = 'reference'\n\n // Some tags can terminate paragraph without empty line.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n\n state.parentType = oldParentType\n if (terminate) {\n // terminated by another block\n return null\n }\n }\n\n const pos = state.bMarks[nextLine] + state.tShift[nextLine]\n const max = state.eMarks[nextLine]\n\n // max + 1 explicitly includes the newline\n return state.src.slice(pos, max + 1)\n }\n\n let str = state.src.slice(pos, max + 1)\n\n max = str.length\n let labelEnd = -1\n\n for (pos = 1; pos < max; pos++) {\n const ch = str.charCodeAt(pos)\n if (ch === 0x5B /* [ */) {\n return false\n } else if (ch === 0x5D /* ] */) {\n labelEnd = pos\n break\n } else if (ch === 0x0A /* \\n */) {\n const lineContent = getNextLine(nextLine)\n if (lineContent !== null) {\n str += lineContent\n max = str.length\n nextLine++\n }\n } else if (ch === 0x5C /* \\ */) {\n pos++\n if (pos < max && str.charCodeAt(pos) === 0x0A) {\n const lineContent = getNextLine(nextLine)\n if (lineContent !== null) {\n str += lineContent\n max = str.length\n nextLine++\n }\n }\n }\n }\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return false }\n\n // [label]: destination 'title'\n // ^^^ skip optional whitespace here\n for (pos = labelEnd + 2; pos < max; pos++) {\n const ch = str.charCodeAt(pos)\n if (ch === 0x0A) {\n const lineContent = getNextLine(nextLine)\n if (lineContent !== null) {\n str += lineContent\n max = str.length\n nextLine++\n }\n } else if (isSpace(ch)) {\n /* eslint no-empty:0 */\n } else {\n break\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^^^^^ parse this\n const destRes = state.md.helpers.parseLinkDestination(str, pos, max)\n if (!destRes.ok) { return false }\n\n const href = state.md.normalizeLink(destRes.str)\n if (!state.md.validateLink(href)) { return false }\n\n pos = destRes.pos\n\n // save cursor state, we could require to rollback later\n const destEndPos = pos\n const destEndLineNo = nextLine\n\n // [label]: destination 'title'\n // ^^^ skipping those spaces\n const start = pos\n for (; pos < max; pos++) {\n const ch = str.charCodeAt(pos)\n if (ch === 0x0A) {\n const lineContent = getNextLine(nextLine)\n if (lineContent !== null) {\n str += lineContent\n max = str.length\n nextLine++\n }\n } else if (isSpace(ch)) {\n /* eslint no-empty:0 */\n } else {\n break\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^ parse this\n let titleRes = state.md.helpers.parseLinkTitle(str, pos, max)\n while (titleRes.can_continue) {\n const lineContent = getNextLine(nextLine)\n if (lineContent === null) break\n str += lineContent\n pos = max\n max = str.length\n nextLine++\n titleRes = state.md.helpers.parseLinkTitle(str, pos, max, titleRes)\n }\n let title\n\n if (pos < max && start !== pos && titleRes.ok) {\n title = titleRes.str\n pos = titleRes.pos\n } else {\n title = ''\n pos = destEndPos\n nextLine = destEndLineNo\n }\n\n // skip trailing spaces until the rest of the line\n while (pos < max) {\n const ch = str.charCodeAt(pos)\n if (!isSpace(ch)) { break }\n pos++\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n if (title) {\n // garbage at the end of the line after title,\n // but it could still be a valid reference if we roll back\n title = ''\n pos = destEndPos\n nextLine = destEndLineNo\n while (pos < max) {\n const ch = str.charCodeAt(pos)\n if (!isSpace(ch)) { break }\n pos++\n }\n }\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n // garbage at the end of the line\n return false\n }\n\n const label = normalizeReference(str.slice(1, labelEnd))\n if (!label) {\n // CommonMark 0.20 disallows empty labels\n return false\n }\n\n // Reference can not terminate anything. This check is for safety only.\n /* istanbul ignore if */\n if (silent) { return true }\n\n if (typeof state.env.references === 'undefined') {\n state.env.references = {}\n }\n if (typeof state.env.references[label] === 'undefined') {\n state.env.references[label] = { title, href }\n }\n\n state.line = nextLine\n return true\n}\n","// List of valid html blocks names, according to commonmark spec\n// https://spec.commonmark.org/0.30/#html-blocks\n\nexport default [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n","// Regexps to match html elements\n\nconst attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*'\n\nconst unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+'\nconst single_quoted = \"'[^']*'\"\nconst double_quoted = '\"[^\"]*\"'\n\nconst attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')'\n\nconst attribute = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)'\n\nconst open_tag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>'\n\nconst close_tag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>'\nconst comment = '<!---?>|<!--(?:[^-]|-[^-]|--[^>])*-->'\nconst processing = '<[?][\\\\s\\\\S]*?[?]>'\nconst declaration = '<![A-Za-z][^>]*>'\nconst cdata = '<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>'\n\nconst HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment +\n '|' + processing + '|' + declaration + '|' + cdata + ')')\nconst HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')')\n\nexport { HTML_TAG_RE, HTML_OPEN_CLOSE_TAG_RE }\n","// HTML block\n\nimport block_names from '../common/html_blocks.mjs'\nimport { HTML_OPEN_CLOSE_TAG_RE } from '../common/html_re.mjs'\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\nconst HTML_SEQUENCES = [\n [/^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true],\n [/^<!--/, /-->/, true],\n [/^<\\?/, /\\?>/, true],\n [/^<![A-Z]/, />/, true],\n [/^<!\\[CDATA\\[/, /\\]\\]>/, true],\n [new RegExp('^</?(' + block_names.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true],\n [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false]\n]\n\nexport default function html_block (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n if (!state.md.options.html) { return false }\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false }\n\n let lineText = state.src.slice(pos, max)\n\n let i = 0\n for (; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) { break }\n }\n if (i === HTML_SEQUENCES.length) { return false }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2]\n }\n\n let nextLine = startLine + 1\n\n // If we are here - we detected HTML block.\n // Let's roll down till block end.\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine]\n max = state.eMarks[nextLine]\n lineText = state.src.slice(pos, max)\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) { nextLine++ }\n break\n }\n }\n }\n\n state.line = nextLine\n\n const token = state.push('html_block', '', 0)\n token.map = [startLine, nextLine]\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true)\n\n return true\n}\n","// heading (#, ##, ...)\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function heading (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n let ch = state.src.charCodeAt(pos)\n\n if (ch !== 0x23/* # */ || pos >= max) { return false }\n\n // count heading level\n let level = 1\n ch = state.src.charCodeAt(++pos)\n while (ch === 0x23/* # */ && pos < max && level <= 6) {\n level++\n ch = state.src.charCodeAt(++pos)\n }\n\n if (level > 6 || (pos < max && !isSpace(ch))) { return false }\n\n if (silent) { return true }\n\n // Let's cut tails like ' ### ' from the end of string\n\n max = state.skipSpacesBack(max, pos)\n const tmp = state.skipCharsBack(max, 0x23, pos) // #\n if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n max = tmp\n }\n\n state.line = startLine + 1\n\n const token_o = state.push('heading_open', 'h' + String(level), 1)\n token_o.markup = '########'.slice(0, level)\n token_o.map = [startLine, state.line]\n\n const token_i = state.push('inline', '', 0)\n token_i.content = state.src.slice(pos, max).trim()\n token_i.map = [startLine, state.line]\n token_i.children = []\n\n const token_c = state.push('heading_close', 'h' + String(level), -1)\n token_c.markup = '########'.slice(0, level)\n\n return true\n}\n","// lheading (---, ===)\n\nexport default function lheading (state, startLine, endLine/*, silent */) {\n const terminatorRules = state.md.block.ruler.getRules('paragraph')\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n const oldParentType = state.parentType\n state.parentType = 'paragraph' // use paragraph to match terminatorRules\n\n // jump line-by-line until empty one or EOF\n let level = 0\n let marker\n let nextLine = startLine + 1\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue }\n\n //\n // Check for underline in setext header\n //\n if (state.sCount[nextLine] >= state.blkIndent) {\n let pos = state.bMarks[nextLine] + state.tShift[nextLine]\n const max = state.eMarks[nextLine]\n\n if (pos < max) {\n marker = state.src.charCodeAt(pos)\n\n if (marker === 0x2D/* - */ || marker === 0x3D/* = */) {\n pos = state.skipChars(pos, marker)\n pos = state.skipSpaces(pos)\n\n if (pos >= max) {\n level = (marker === 0x3D/* = */ ? 1 : 2)\n break\n }\n }\n }\n }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue }\n\n // Some tags can terminate paragraph without empty line.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n if (terminate) { break }\n }\n\n if (!level) {\n // Didn't find valid underline\n return false\n }\n\n const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim()\n\n state.line = nextLine + 1\n\n const token_o = state.push('heading_open', 'h' + String(level), 1)\n token_o.markup = String.fromCharCode(marker)\n token_o.map = [startLine, state.line]\n\n const token_i = state.push('inline', '', 0)\n token_i.content = content\n token_i.map = [startLine, state.line - 1]\n token_i.children = []\n\n const token_c = state.push('heading_close', 'h' + String(level), -1)\n token_c.markup = String.fromCharCode(marker)\n\n state.parentType = oldParentType\n\n return true\n}\n","// Paragraph\n\nexport default function paragraph (state, startLine, endLine) {\n const terminatorRules = state.md.block.ruler.getRules('paragraph')\n const oldParentType = state.parentType\n let nextLine = startLine + 1\n state.parentType = 'paragraph'\n\n // jump line-by-line until empty one or EOF\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue }\n\n // Some tags can terminate paragraph without empty line.\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n if (terminate) { break }\n }\n\n const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim()\n\n state.line = nextLine\n\n const token_o = state.push('paragraph_open', 'p', 1)\n token_o.map = [startLine, state.line]\n\n const token_i = state.push('inline', '', 0)\n token_i.content = content\n token_i.map = [startLine, state.line]\n token_i.children = []\n\n state.push('paragraph_close', 'p', -1)\n\n state.parentType = oldParentType\n\n return true\n}\n","/** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateBlock from './rules_block/state_block.mjs'\n\nimport r_table from './rules_block/table.mjs'\nimport r_code from './rules_block/code.mjs'\nimport r_fence from './rules_block/fence.mjs'\nimport r_blockquote from './rules_block/blockquote.mjs'\nimport r_hr from './rules_block/hr.mjs'\nimport r_list from './rules_block/list.mjs'\nimport r_reference from './rules_block/reference.mjs'\nimport r_html_block from './rules_block/html_block.mjs'\nimport r_heading from './rules_block/heading.mjs'\nimport r_lheading from './rules_block/lheading.mjs'\nimport r_paragraph from './rules_block/paragraph.mjs'\n\nconst _rules = [\n // First 2 params - rule name & source. Secondary array - list of rules,\n // which can be terminated by this one.\n ['table', r_table, ['paragraph', 'reference']],\n ['code', r_code],\n ['fence', r_fence, ['paragraph', 'reference', 'blockquote', 'list']],\n ['blockquote', r_blockquote, ['paragraph', 'reference', 'blockquote', 'list']],\n ['hr', r_hr, ['paragraph', 'reference', 'blockquote', 'list']],\n ['list', r_list, ['paragraph', 'reference', 'blockquote']],\n ['reference', r_reference],\n ['html_block', r_html_block, ['paragraph', 'reference', 'blockquote']],\n ['heading', r_heading, ['paragraph', 'reference', 'blockquote']],\n ['lheading', r_lheading],\n ['paragraph', r_paragraph]\n]\n\n/**\n * new ParserBlock()\n **/\nfunction ParserBlock () {\n /**\n * ParserBlock#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of block rules.\n **/\n this.ruler = new Ruler()\n\n for (let i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1], { alt: (_rules[i][2] || []).slice() })\n }\n}\n\n// Generate tokens for input range\n//\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n const rules = this.ruler.getRules('')\n const len = rules.length\n const maxNesting = state.md.options.maxNesting\n let line = startLine\n let hasEmptyLines = false\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line)\n if (line >= endLine) { break }\n\n // Termination condition for nested calls.\n // Nested calls currently used for blockquotes & lists\n if (state.sCount[line] < state.blkIndent) { break }\n\n // If nesting level exceeded - skip tail to the end. That's not ordinary\n // situation and we should not care about content.\n if (state.level >= maxNesting) {\n state.line = endLine\n break\n }\n\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.line`\n // - update `state.tokens`\n // - return true\n const prevLine = state.line\n let ok = false\n\n for (let i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false)\n if (ok) {\n if (prevLine >= state.line) {\n throw new Error(\"block rule didn't increment state.line\")\n }\n break\n }\n }\n\n // this can only happen if user disables paragraph rule\n if (!ok) throw new Error('none of the block rules matched')\n\n // set state.tight if we had an empty line before current tag\n // i.e. latest empty line should not count\n state.tight = !hasEmptyLines\n\n // paragraph might \"eat\" one newline after it in nested lists\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true\n }\n\n line = state.line\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true\n line++\n state.line = line\n }\n }\n}\n\n/**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\nParserBlock.prototype.parse = function (src, md, env, outTokens) {\n if (!src) { return }\n\n const state = new this.State(src, md, env, outTokens)\n\n this.tokenize(state, state.line, state.lineMax)\n}\n\nParserBlock.prototype.State = StateBlock\n\nexport default ParserBlock\n","// Inline parser state\n\nimport Token from '../token.mjs'\nimport { isWhiteSpace, isPunctChar, isMdAsciiPunct } from '../common/utils.mjs'\n\nfunction StateInline (src, md, env, outTokens) {\n this.src = src\n this.env = env\n this.md = md\n this.tokens = outTokens\n this.tokens_meta = Array(outTokens.length)\n\n this.pos = 0\n this.posMax = this.src.length\n this.level = 0\n this.pending = ''\n this.pendingLevel = 0\n\n // Stores { start: end } pairs. Useful for backtrack\n // optimization of pairs parse (emphasis, strikes).\n this.cache = {}\n\n // List of emphasis-like delimiters for current tag\n this.delimiters = []\n\n // Stack of delimiter lists for upper level tags\n this._prev_delimiters = []\n\n // backtick length => last seen position\n this.backticks = {}\n this.backticksScanned = false\n\n // Counter used to disable inline linkify-it execution\n // inside <a> and markdown links\n this.linkLevel = 0\n}\n\n// Flush pending text\n//\nStateInline.prototype.pushPending = function () {\n const token = new Token('text', '', 0)\n token.content = this.pending\n token.level = this.pendingLevel\n this.tokens.push(token)\n this.pending = ''\n return token\n}\n\n// Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\nStateInline.prototype.push = function (type, tag, nesting) {\n if (this.pending) {\n this.pushPending()\n }\n\n const token = new Token(type, tag, nesting)\n let token_meta = null\n\n if (nesting < 0) {\n // closing tag\n this.level--\n this.delimiters = this._prev_delimiters.pop()\n }\n\n token.level = this.level\n\n if (nesting > 0) {\n // opening tag\n this.level++\n this._prev_delimiters.push(this.delimiters)\n this.delimiters = []\n token_meta = { delimiters: this.delimiters }\n }\n\n this.pendingLevel = this.level\n this.tokens.push(token)\n this.tokens_meta.push(token_meta)\n return token\n}\n\n// Scan a sequence of emphasis-like markers, and determine whether\n// it can start an emphasis sequence or end an emphasis sequence.\n//\n// - start - position to scan from (it should point at a valid marker);\n// - canSplitWord - determine if these markers can be found inside a word\n//\nStateInline.prototype.scanDelims = function (start, canSplitWord) {\n const max = this.posMax\n const marker = this.src.charCodeAt(start)\n\n // treat beginning of the line as a whitespace\n const lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20\n\n let pos = start\n while (pos < max && this.src.charCodeAt(pos) === marker) { pos++ }\n\n const count = pos - start\n\n // treat end of the line as a whitespace\n const nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20\n\n const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar))\n const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar))\n\n const isLastWhiteSpace = isWhiteSpace(lastChar)\n const isNextWhiteSpace = isWhiteSpace(nextChar)\n\n const left_flanking =\n !isNextWhiteSpace && (!isNextPunctChar || isLastWhiteSpace || isLastPunctChar)\n const right_flanking =\n !isLastWhiteSpace && (!isLastPunctChar || isNextWhiteSpace || isNextPunctChar)\n\n const can_open = left_flanking && (canSplitWord || !right_flanking || isLastPunctChar)\n const can_close = right_flanking && (canSplitWord || !left_flanking || isNextPunctChar)\n\n return { can_open, can_close, length: count }\n}\n\n// re-export Token class to use in block rules\nStateInline.prototype.Token = Token\n\nexport default StateInline\n","// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n\n// Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n\n// !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\nfunction isTerminatorChar (ch) {\n switch (ch) {\n case 0x0A/* \\n */:\n case 0x21/* ! */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2D/* - */:\n case 0x3A/* : */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true\n default:\n return false\n }\n}\n\nexport default function text (state, silent) {\n let pos = state.pos\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++\n }\n\n if (pos === state.pos) { return false }\n\n if (!silent) { state.pending += state.src.slice(state.pos, pos) }\n\n state.pos = pos\n\n return true\n}\n\n// Alternative implementation, for memory.\n//\n// It costs 10% of performance, but allows extend terminators list, if place it\n// to `ParserInline` property. Probably, will switch to it sometime, such\n// flexibility required.\n\n/*\nvar TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos,\n idx = state.src.slice(pos).search(TERMINATOR_RE);\n\n // first char is terminator -> empty text\n if (idx === 0) { return false; }\n\n // no terminator -> text till end of string\n if (idx < 0) {\n if (!silent) { state.pending += state.src.slice(pos); }\n state.pos = state.src.length;\n return true;\n }\n\n if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n\n state.pos += idx;\n\n return true;\n}; */\n","// Process links like https://example.org/\n\n// RFC3986: scheme = ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\nconst SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i\n\nexport default function linkify (state, silent) {\n if (!state.md.options.linkify) return false\n if (state.linkLevel > 0) return false\n\n const pos = state.pos\n const max = state.posMax\n\n if (pos + 3 > max) return false\n if (state.src.charCodeAt(pos) !== 0x3A/* : */) return false\n if (state.src.charCodeAt(pos + 1) !== 0x2F/* / */) return false\n if (state.src.charCodeAt(pos + 2) !== 0x2F/* / */) return false\n\n const match = state.pending.match(SCHEME_RE)\n if (!match) return false\n\n const proto = match[1]\n\n const link = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length))\n if (!link) return false\n\n let url = link.url\n\n // invalid link, but still detected by linkify somehow;\n // need to check to prevent infinite loop below\n if (url.length <= proto.length) return false\n\n // disallow '*' at the end of the link (conflicts with emphasis)\n url = url.replace(/\\*+$/, '')\n\n const fullUrl = state.md.normalizeLink(url)\n if (!state.md.validateLink(fullUrl)) return false\n\n if (!silent) {\n state.pending = state.pending.slice(0, -proto.length)\n\n const token_o = state.push('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.markup = 'linkify'\n token_o.info = 'auto'\n\n const token_t = state.push('text', '', 0)\n token_t.content = state.md.normalizeLinkText(url)\n\n const token_c = state.push('link_close', 'a', -1)\n token_c.markup = 'linkify'\n token_c.info = 'auto'\n }\n\n state.pos += url.length - proto.length\n return true\n}\n","// Proceess '\\n'\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function newline (state, silent) {\n let pos = state.pos\n\n if (state.src.charCodeAt(pos) !== 0x0A/* \\n */) { return false }\n\n const pmax = state.pending.length - 1\n const max = state.posMax\n\n // ' \\n' -> hardbreak\n // Lookup in pending chars is bad practice! Don't copy to other rules!\n // Pending string is stored in concat mode, indexed lookups will cause\n // convertion to flat mode.\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n // Find whitespaces tail of pending chars.\n let ws = pmax - 1\n while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 0x20) ws--\n\n state.pending = state.pending.slice(0, ws)\n state.push('hardbreak', 'br', 0)\n } else {\n state.pending = state.pending.slice(0, -1)\n state.push('softbreak', 'br', 0)\n }\n } else {\n state.push('softbreak', 'br', 0)\n }\n }\n\n pos++\n\n // skip heading spaces for next line\n while (pos < max && isSpace(state.src.charCodeAt(pos))) { pos++ }\n\n state.pos = pos\n return true\n}\n","// Process escaped chars and hardbreaks\n\nimport { isSpace } from '../common/utils.mjs'\n\nconst ESCAPED = []\n\nfor (let i = 0; i < 256; i++) { ESCAPED.push(0) }\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'\n .split('').forEach(function (ch) { ESCAPED[ch.charCodeAt(0)] = 1 })\n\nexport default function escape (state, silent) {\n let pos = state.pos\n const max = state.posMax\n\n if (state.src.charCodeAt(pos) !== 0x5C/* \\ */) return false\n pos++\n\n // '\\' at the end of the inline block\n if (pos >= max) return false\n\n let ch1 = state.src.charCodeAt(pos)\n\n if (ch1 === 0x0A) {\n if (!silent) {\n state.push('hardbreak', 'br', 0)\n }\n\n pos++\n // skip leading whitespaces from next line\n while (pos < max) {\n ch1 = state.src.charCodeAt(pos)\n if (!isSpace(ch1)) break\n pos++\n }\n\n state.pos = pos\n return true\n }\n\n let escapedStr = state.src[pos]\n\n if (ch1 >= 0xD800 && ch1 <= 0xDBFF && pos + 1 < max) {\n const ch2 = state.src.charCodeAt(pos + 1)\n\n if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) {\n escapedStr += state.src[pos + 1]\n pos++\n }\n }\n\n const origStr = '\\\\' + escapedStr\n\n if (!silent) {\n const token = state.push('text_special', '', 0)\n\n if (ch1 < 256 && ESCAPED[ch1] !== 0) {\n token.content = escapedStr\n } else {\n token.content = origStr\n }\n\n token.markup = origStr\n token.info = 'escape'\n }\n\n state.pos = pos + 1\n return true\n}\n","// Parse backticks\n\nexport default function backtick (state, silent) {\n let pos = state.pos\n const ch = state.src.charCodeAt(pos)\n\n if (ch !== 0x60/* ` */) { return false }\n\n const start = pos\n pos++\n const max = state.posMax\n\n // scan marker length\n while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++ }\n\n const marker = state.src.slice(start, pos)\n const openerLength = marker.length\n\n if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n if (!silent) state.pending += marker\n state.pos += openerLength\n return true\n }\n\n let matchEnd = pos\n let matchStart\n\n // Nothing found in the cache, scan until the end of the line (or until marker is found)\n while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n matchEnd = matchStart + 1\n\n // scan marker length\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++ }\n\n const closerLength = matchEnd - matchStart\n\n if (closerLength === openerLength) {\n // Found matching closer length.\n if (!silent) {\n const token = state.push('code_inline', 'code', 0)\n token.markup = marker\n token.content = state.src.slice(pos, matchStart)\n .replace(/\\n/g, ' ')\n .replace(/^ (.+) $/, '$1')\n }\n state.pos = matchEnd\n return true\n }\n\n // Some different length found, put it in cache as upper limit of where closer can be found\n state.backticks[closerLength] = matchStart\n }\n\n // Scanned through the end, didn't find anything\n state.backticksScanned = true\n\n if (!silent) state.pending += marker\n state.pos += openerLength\n return true\n}\n","// ~~strike through~~\n//\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nfunction strikethrough_tokenize (state, silent) {\n const start = state.pos\n const marker = state.src.charCodeAt(start)\n\n if (silent) { return false }\n\n if (marker !== 0x7E/* ~ */) { return false }\n\n const scanned = state.scanDelims(state.pos, true)\n let len = scanned.length\n const ch = String.fromCharCode(marker)\n\n if (len < 2) { return false }\n\n let token\n\n if (len % 2) {\n token = state.push('text', '', 0)\n token.content = ch\n len--\n }\n\n for (let i = 0; i < len; i += 2) {\n token = state.push('text', '', 0)\n token.content = ch + ch\n\n state.delimiters.push({\n marker,\n length: 0, // disable \"rule of 3\" length checks meant for emphasis\n token: state.tokens.length - 1,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n })\n }\n\n state.pos += scanned.length\n\n return true\n}\n\nfunction postProcess (state, delimiters) {\n let token\n const loneMarkers = []\n const max = delimiters.length\n\n for (let i = 0; i < max; i++) {\n const startDelim = delimiters[i]\n\n if (startDelim.marker !== 0x7E/* ~ */) {\n continue\n }\n\n if (startDelim.end === -1) {\n continue\n }\n\n const endDelim = delimiters[startDelim.end]\n\n token = state.tokens[startDelim.token]\n token.type = 's_open'\n token.tag = 's'\n token.nesting = 1\n token.markup = '~~'\n token.content = ''\n\n token = state.tokens[endDelim.token]\n token.type = 's_close'\n token.tag = 's'\n token.nesting = -1\n token.markup = '~~'\n token.content = ''\n\n if (state.tokens[endDelim.token - 1].type === 'text' &&\n state.tokens[endDelim.token - 1].content === '~') {\n loneMarkers.push(endDelim.token - 1)\n }\n }\n\n // If a marker sequence has an odd number of characters, it's splitted\n // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n // start of the sequence.\n //\n // So, we have to move all those markers after subsequent s_close tags.\n //\n while (loneMarkers.length) {\n const i = loneMarkers.pop()\n let j = i + 1\n\n while (j < state.tokens.length && state.tokens[j].type === 's_close') {\n j++\n }\n\n j--\n\n if (i !== j) {\n token = state.tokens[j]\n state.tokens[j] = state.tokens[i]\n state.tokens[i] = token\n }\n }\n}\n\n// Walk through delimiter list and replace text tokens with tags\n//\nfunction strikethrough_postProcess (state) {\n const tokens_meta = state.tokens_meta\n const max = state.tokens_meta.length\n\n postProcess(state, state.delimiters)\n\n for (let curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters)\n }\n }\n}\n\nexport default {\n tokenize: strikethrough_tokenize,\n postProcess: strikethrough_postProcess\n}\n","// Process *this* and _that_\n//\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nfunction emphasis_tokenize (state, silent) {\n const start = state.pos\n const marker = state.src.charCodeAt(start)\n\n if (silent) { return false }\n\n if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false }\n\n const scanned = state.scanDelims(state.pos, marker === 0x2A)\n\n for (let i = 0; i < scanned.length; i++) {\n const token = state.push('text', '', 0)\n token.content = String.fromCharCode(marker)\n\n state.delimiters.push({\n // Char code of the starting marker (number).\n //\n marker,\n\n // Total length of these series of delimiters.\n //\n length: scanned.length,\n\n // A position of the token this delimiter corresponds to.\n //\n token: state.tokens.length - 1,\n\n // If this delimiter is matched as a valid opener, `end` will be\n // equal to its position, otherwise it's `-1`.\n //\n end: -1,\n\n // Boolean flags that determine if this delimiter could open or close\n // an emphasis.\n //\n open: scanned.can_open,\n close: scanned.can_close\n })\n }\n\n state.pos += scanned.length\n\n return true\n}\n\nfunction postProcess (state, delimiters) {\n const max = delimiters.length\n\n for (let i = max - 1; i >= 0; i--) {\n const startDelim = delimiters[i]\n\n if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {\n continue\n }\n\n // Process only opening markers\n if (startDelim.end === -1) {\n continue\n }\n\n const endDelim = delimiters[startDelim.end]\n\n // If the previous delimiter has the same marker and is adjacent to this one,\n // merge those into one strong delimiter.\n //\n // `<em><em>whatever</em></em>` -> `<strong>whatever</strong>`\n //\n const isStrong = i > 0 &&\n delimiters[i - 1].end === startDelim.end + 1 &&\n // check that first two markers match and adjacent\n delimiters[i - 1].marker === startDelim.marker &&\n delimiters[i - 1].token === startDelim.token - 1 &&\n // check that last two markers are adjacent (we can safely assume they match)\n delimiters[startDelim.end + 1].token === endDelim.token + 1\n\n const ch = String.fromCharCode(startDelim.marker)\n\n const token_o = state.tokens[startDelim.token]\n token_o.type = isStrong ? 'strong_open' : 'em_open'\n token_o.tag = isStrong ? 'strong' : 'em'\n token_o.nesting = 1\n token_o.markup = isStrong ? ch + ch : ch\n token_o.content = ''\n\n const token_c = state.tokens[endDelim.token]\n token_c.type = isStrong ? 'strong_close' : 'em_close'\n token_c.tag = isStrong ? 'strong' : 'em'\n token_c.nesting = -1\n token_c.markup = isStrong ? ch + ch : ch\n token_c.content = ''\n\n if (isStrong) {\n state.tokens[delimiters[i - 1].token].content = ''\n state.tokens[delimiters[startDelim.end + 1].token].content = ''\n i--\n }\n }\n}\n\n// Walk through delimiter list and replace text tokens with tags\n//\nfunction emphasis_post_process (state) {\n const tokens_meta = state.tokens_meta\n const max = state.tokens_meta.length\n\n postProcess(state, state.delimiters)\n\n for (let curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters)\n }\n }\n}\n\nexport default {\n tokenize: emphasis_tokenize,\n postProcess: emphasis_post_process\n}\n","// Process [link](<to> \"stuff\")\n\nimport { normalizeReference, isSpace } from '../common/utils.mjs'\n\nexport default function link (state, silent) {\n let code, label, res, ref\n let href = ''\n let title = ''\n let start = state.pos\n let parseReference = true\n\n if (state.src.charCodeAt(state.pos) !== 0x5B/* [ */) { return false }\n\n const oldPos = state.pos\n const max = state.posMax\n const labelStart = state.pos + 1\n const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true)\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false }\n\n let pos = labelEnd + 1\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // might have found a valid shortcut link, disable reference parsing\n parseReference = false\n\n // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n pos++\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n if (pos >= max) { return false }\n\n // [link]( <href> \"title\" )\n // ^^^^^^ parsing link destination\n start = pos\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax)\n if (res.ok) {\n href = state.md.normalizeLink(res.str)\n if (state.md.validateLink(href)) {\n pos = res.pos\n } else {\n href = ''\n }\n\n // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n start = pos\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n\n // [link]( <href> \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax)\n if (pos < max && start !== pos && res.ok) {\n title = res.str\n pos = res.pos\n\n // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n }\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n // parsing a valid shortcut link failed, fallback to reference\n parseReference = true\n }\n pos++\n }\n\n if (parseReference) {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1\n pos = state.md.helpers.parseLinkLabel(state, pos)\n if (pos >= 0) {\n label = state.src.slice(start, pos++)\n } else {\n pos = labelEnd + 1\n }\n } else {\n pos = labelEnd + 1\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd) }\n\n ref = state.env.references[normalizeReference(label)]\n if (!ref) {\n state.pos = oldPos\n return false\n }\n href = ref.href\n title = ref.title\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n state.pos = labelStart\n state.posMax = labelEnd\n\n const token_o = state.push('link_open', 'a', 1)\n const attrs = [['href', href]]\n token_o.attrs = attrs\n if (title) {\n attrs.push(['title', title])\n }\n\n state.linkLevel++\n state.md.inline.tokenize(state)\n state.linkLevel--\n\n state.push('link_close', 'a', -1)\n }\n\n state.pos = pos\n state.posMax = max\n return true\n}\n","// Process ![image](<src> \"title\")\n\nimport { normalizeReference, isSpace } from '../common/utils.mjs'\n\nexport default function image (state, silent) {\n let code, content, label, pos, ref, res, title, start\n let href = ''\n const oldPos = state.pos\n const max = state.posMax\n\n if (state.src.charCodeAt(state.pos) !== 0x21/* ! */) { return false }\n if (state.src.charCodeAt(state.pos + 1) !== 0x5B/* [ */) { return false }\n\n const labelStart = state.pos + 2\n const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false)\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false }\n\n pos = labelEnd + 1\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n pos++\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n if (pos >= max) { return false }\n\n // [link]( <href> \"title\" )\n // ^^^^^^ parsing link destination\n start = pos\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax)\n if (res.ok) {\n href = state.md.normalizeLink(res.str)\n if (state.md.validateLink(href)) {\n pos = res.pos\n } else {\n href = ''\n }\n }\n\n // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n start = pos\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n\n // [link]( <href> \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax)\n if (pos < max && start !== pos && res.ok) {\n title = res.str\n pos = res.pos\n\n // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos)\n if (!isSpace(code) && code !== 0x0A) { break }\n }\n } else {\n title = ''\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n state.pos = oldPos\n return false\n }\n pos++\n } else {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1\n pos = state.md.helpers.parseLinkLabel(state, pos)\n if (pos >= 0) {\n label = state.src.slice(start, pos++)\n } else {\n pos = labelEnd + 1\n }\n } else {\n pos = labelEnd + 1\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd) }\n\n ref = state.env.references[normalizeReference(label)]\n if (!ref) {\n state.pos = oldPos\n return false\n }\n href = ref.href\n title = ref.title\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n content = state.src.slice(labelStart, labelEnd)\n\n const tokens = []\n state.md.inline.parse(\n content,\n state.md,\n state.env,\n tokens\n )\n\n const token = state.push('image', 'img', 0)\n const attrs = [['src', href], ['alt', '']]\n token.attrs = attrs\n token.children = tokens\n token.content = content\n\n if (title) {\n attrs.push(['title', title])\n }\n }\n\n state.pos = pos\n state.posMax = max\n return true\n}\n","// Process autolinks '<protocol:...>'\n\n/* eslint max-len:0 */\nconst EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/\n/* eslint-disable-next-line no-control-regex */\nconst AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\\x00-\\x20]*)$/\n\nexport default function autolink (state, silent) {\n let pos = state.pos\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false }\n\n const start = state.pos\n const max = state.posMax\n\n for (;;) {\n if (++pos >= max) return false\n\n const ch = state.src.charCodeAt(pos)\n\n if (ch === 0x3C /* < */) return false\n if (ch === 0x3E /* > */) break\n }\n\n const url = state.src.slice(start + 1, pos)\n\n if (AUTOLINK_RE.test(url)) {\n const fullUrl = state.md.normalizeLink(url)\n if (!state.md.validateLink(fullUrl)) { return false }\n\n if (!silent) {\n const token_o = state.push('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.markup = 'autolink'\n token_o.info = 'auto'\n\n const token_t = state.push('text', '', 0)\n token_t.content = state.md.normalizeLinkText(url)\n\n const token_c = state.push('link_close', 'a', -1)\n token_c.markup = 'autolink'\n token_c.info = 'auto'\n }\n\n state.pos += url.length + 2\n return true\n }\n\n if (EMAIL_RE.test(url)) {\n const fullUrl = state.md.normalizeLink('mailto:' + url)\n if (!state.md.validateLink(fullUrl)) { return false }\n\n if (!silent) {\n const token_o = state.push('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.markup = 'autolink'\n token_o.info = 'auto'\n\n const token_t = state.push('text', '', 0)\n token_t.content = state.md.normalizeLinkText(url)\n\n const token_c = state.push('link_close', 'a', -1)\n token_c.markup = 'autolink'\n token_c.info = 'auto'\n }\n\n state.pos += url.length + 2\n return true\n }\n\n return false\n}\n","// Process html tags\n\nimport { HTML_TAG_RE } from '../common/html_re.mjs'\n\nfunction isLinkOpen (str) {\n return /^<a[>\\s]/i.test(str)\n}\nfunction isLinkClose (str) {\n return /^<\\/a\\s*>/i.test(str)\n}\n\nfunction isLetter (ch) {\n /* eslint no-bitwise:0 */\n const lc = ch | 0x20 // to lower case\n return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */)\n}\n\nexport default function html_inline (state, silent) {\n if (!state.md.options.html) { return false }\n\n // Check start\n const max = state.posMax\n const pos = state.pos\n if (state.src.charCodeAt(pos) !== 0x3C/* < */ ||\n pos + 2 >= max) {\n return false\n }\n\n // Quick fail on second char\n const ch = state.src.charCodeAt(pos + 1)\n if (ch !== 0x21/* ! */ &&\n ch !== 0x3F/* ? */ &&\n ch !== 0x2F/* / */ &&\n !isLetter(ch)) {\n return false\n }\n\n const match = state.src.slice(pos).match(HTML_TAG_RE)\n if (!match) { return false }\n\n if (!silent) {\n const token = state.push('html_inline', '', 0)\n token.content = match[0]\n\n if (isLinkOpen(token.content)) state.linkLevel++\n if (isLinkClose(token.content)) state.linkLevel--\n }\n state.pos += match[0].length\n return true\n}\n","// Process html entity - &#123;, &#xAF;, &quot;, ...\n\nimport { decodeHTML } from 'entities'\nimport { isValidEntityCode, fromCodePoint } from '../common/utils.mjs'\n\nconst DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i\nconst NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i\n\nexport default function entity (state, silent) {\n const pos = state.pos\n const max = state.posMax\n\n if (state.src.charCodeAt(pos) !== 0x26/* & */) return false\n\n if (pos + 1 >= max) return false\n\n const ch = state.src.charCodeAt(pos + 1)\n\n if (ch === 0x23 /* # */) {\n const match = state.src.slice(pos).match(DIGITAL_RE)\n if (match) {\n if (!silent) {\n const code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10)\n\n const token = state.push('text_special', '', 0)\n token.content = isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD)\n token.markup = match[0]\n token.info = 'entity'\n }\n state.pos += match[0].length\n return true\n }\n } else {\n const match = state.src.slice(pos).match(NAMED_RE)\n if (match) {\n const decoded = decodeHTML(match[0])\n if (decoded !== match[0]) {\n if (!silent) {\n const token = state.push('text_special', '', 0)\n token.content = decoded\n token.markup = match[0]\n token.info = 'entity'\n }\n state.pos += match[0].length\n return true\n }\n }\n }\n\n return false\n}\n","// For each opening emphasis-like marker find a matching closing one\n//\n\nfunction processDelimiters (delimiters) {\n const openersBottom = {}\n const max = delimiters.length\n\n if (!max) return\n\n // headerIdx is the first delimiter of the current (where closer is) delimiter run\n let headerIdx = 0\n let lastTokenIdx = -2 // needs any value lower than -1\n const jumps = []\n\n for (let closerIdx = 0; closerIdx < max; closerIdx++) {\n const closer = delimiters[closerIdx]\n\n jumps.push(0)\n\n // markers belong to same delimiter run if:\n // - they have adjacent tokens\n // - AND markers are the same\n //\n if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {\n headerIdx = closerIdx\n }\n\n lastTokenIdx = closer.token\n\n // Length is only used for emphasis-specific \"rule of 3\",\n // if it's not defined (in strikethrough or 3rd party plugins),\n // we can default it to 0 to disable those checks.\n //\n closer.length = closer.length || 0\n\n if (!closer.close) continue\n\n // Previously calculated lower bounds (previous fails)\n // for each marker, each delimiter length modulo 3,\n // and for whether this closer can be an opener;\n // https://github.com/commonmark/cmark/commit/34250e12ccebdc6372b8b49c44fab57c72443460\n /* eslint-disable-next-line no-prototype-builtins */\n if (!openersBottom.hasOwnProperty(closer.marker)) {\n openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1]\n }\n\n const minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length % 3)]\n\n let openerIdx = headerIdx - jumps[headerIdx] - 1\n\n let newMinOpenerIdx = openerIdx\n\n for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {\n const opener = delimiters[openerIdx]\n\n if (opener.marker !== closer.marker) continue\n\n if (opener.open && opener.end < 0) {\n let isOddMatch = false\n\n // from spec:\n //\n // If one of the delimiters can both open and close emphasis, then the\n // sum of the lengths of the delimiter runs containing the opening and\n // closing delimiters must not be a multiple of 3 unless both lengths\n // are multiples of 3.\n //\n if (opener.close || closer.open) {\n if ((opener.length + closer.length) % 3 === 0) {\n if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n isOddMatch = true\n }\n }\n }\n\n if (!isOddMatch) {\n // If previous delimiter cannot be an opener, we can safely skip\n // the entire sequence in future checks. This is required to make\n // sure algorithm has linear complexity (see *_*_*_*_*_... case).\n //\n const lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open\n ? jumps[openerIdx - 1] + 1\n : 0\n\n jumps[closerIdx] = closerIdx - openerIdx + lastJump\n jumps[openerIdx] = lastJump\n\n closer.open = false\n opener.end = closerIdx\n opener.close = false\n newMinOpenerIdx = -1\n // treat next token as start of run,\n // it optimizes skips in **<...>**a**<...>** pathological case\n lastTokenIdx = -2\n break\n }\n }\n }\n\n if (newMinOpenerIdx !== -1) {\n // If match for this delimiter run failed, we want to set lower bound for\n // future lookups. This is required to make sure algorithm has linear\n // complexity.\n //\n // See details here:\n // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442\n //\n openersBottom[closer.marker][(closer.open ? 3 : 0) + ((closer.length || 0) % 3)] = newMinOpenerIdx\n }\n }\n}\n\nexport default function link_pairs (state) {\n const tokens_meta = state.tokens_meta\n const max = state.tokens_meta.length\n\n processDelimiters(state.delimiters)\n\n for (let curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n processDelimiters(tokens_meta[curr].delimiters)\n }\n }\n}\n","// Clean up tokens after emphasis and strikethrough postprocessing:\n// merge adjacent text nodes into one and re-calculate all token levels\n//\n// This is necessary because initially emphasis delimiter markers (*, _, ~)\n// are treated as their own separate text tokens. Then emphasis rule either\n// leaves them as text (needed to merge with adjacent text) or turns them\n// into opening/closing tags (which messes up levels inside).\n//\n\nexport default function fragments_join (state) {\n let curr, last\n let level = 0\n const tokens = state.tokens\n const max = state.tokens.length\n\n for (curr = last = 0; curr < max; curr++) {\n // re-calculate levels after emphasis/strikethrough turns some text nodes\n // into opening/closing tags\n if (tokens[curr].nesting < 0) level-- // closing tag\n tokens[curr].level = level\n if (tokens[curr].nesting > 0) level++ // opening tag\n\n if (tokens[curr].type === 'text' &&\n curr + 1 < max &&\n tokens[curr + 1].type === 'text') {\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content\n } else {\n if (curr !== last) { tokens[last] = tokens[curr] }\n\n last++\n }\n }\n\n if (curr !== last) {\n tokens.length = last\n }\n}\n","/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateInline from './rules_inline/state_inline.mjs'\n\nimport r_text from './rules_inline/text.mjs'\nimport r_linkify from './rules_inline/linkify.mjs'\nimport r_newline from './rules_inline/newline.mjs'\nimport r_escape from './rules_inline/escape.mjs'\nimport r_backticks from './rules_inline/backticks.mjs'\nimport r_strikethrough from './rules_inline/strikethrough.mjs'\nimport r_emphasis from './rules_inline/emphasis.mjs'\nimport r_link from './rules_inline/link.mjs'\nimport r_image from './rules_inline/image.mjs'\nimport r_autolink from './rules_inline/autolink.mjs'\nimport r_html_inline from './rules_inline/html_inline.mjs'\nimport r_entity from './rules_inline/entity.mjs'\n\nimport r_balance_pairs from './rules_inline/balance_pairs.mjs'\nimport r_fragments_join from './rules_inline/fragments_join.mjs'\n\n// Parser rules\n\nconst _rules = [\n ['text', r_text],\n ['linkify', r_linkify],\n ['newline', r_newline],\n ['escape', r_escape],\n ['backticks', r_backticks],\n ['strikethrough', r_strikethrough.tokenize],\n ['emphasis', r_emphasis.tokenize],\n ['link', r_link],\n ['image', r_image],\n ['autolink', r_autolink],\n ['html_inline', r_html_inline],\n ['entity', r_entity]\n]\n\n// `rule2` ruleset was created specifically for emphasis/strikethrough\n// post-processing and may be changed in the future.\n//\n// Don't use this for anything except pairs (plugins working with `balance_pairs`).\n//\nconst _rules2 = [\n ['balance_pairs', r_balance_pairs],\n ['strikethrough', r_strikethrough.postProcess],\n ['emphasis', r_emphasis.postProcess],\n // rules for pairs separate '**' into its own text tokens, which may be left unused,\n // rule below merges unused segments back with the rest of the text\n ['fragments_join', r_fragments_join]\n]\n\n/**\n * new ParserInline()\n **/\nfunction ParserInline () {\n /**\n * ParserInline#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of inline rules.\n **/\n this.ruler = new Ruler()\n\n for (let i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1])\n }\n\n /**\n * ParserInline#ruler2 -> Ruler\n *\n * [[Ruler]] instance. Second ruler used for post-processing\n * (e.g. in emphasis-like rules).\n **/\n this.ruler2 = new Ruler()\n\n for (let i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1])\n }\n}\n\n// Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n//\nParserInline.prototype.skipToken = function (state) {\n const pos = state.pos\n const rules = this.ruler.getRules('')\n const len = rules.length\n const maxNesting = state.md.options.maxNesting\n const cache = state.cache\n\n if (typeof cache[pos] !== 'undefined') {\n state.pos = cache[pos]\n return\n }\n\n let ok = false\n\n if (state.level < maxNesting) {\n for (let i = 0; i < len; i++) {\n // Increment state.level and decrement it later to limit recursion.\n // It's harmless to do here, because no tokens are created. But ideally,\n // we'd need a separate private state variable for this purpose.\n //\n state.level++\n ok = rules[i](state, true)\n state.level--\n\n if (ok) {\n if (pos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\") }\n break\n }\n }\n } else {\n // Too much nesting, just skip until the end of the paragraph.\n //\n // NOTE: this will cause links to behave incorrectly in the following case,\n // when an amount of `[` is exactly equal to `maxNesting + 1`:\n //\n // [[[[[[[[[[[[[[[[[[[[[foo]()\n //\n // TODO: remove this workaround when CM standard will allow nested links\n // (we can replace it by preventing links from being parsed in\n // validation mode)\n //\n state.pos = state.posMax\n }\n\n if (!ok) { state.pos++ }\n cache[pos] = state.pos\n}\n\n// Generate tokens for input range\n//\nParserInline.prototype.tokenize = function (state) {\n const rules = this.ruler.getRules('')\n const len = rules.length\n const end = state.posMax\n const maxNesting = state.md.options.maxNesting\n\n while (state.pos < end) {\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n const prevPos = state.pos\n let ok = false\n\n if (state.level < maxNesting) {\n for (let i = 0; i < len; i++) {\n ok = rules[i](state, false)\n if (ok) {\n if (prevPos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\") }\n break\n }\n }\n }\n\n if (ok) {\n if (state.pos >= end) { break }\n continue\n }\n\n state.pending += state.src[state.pos++]\n }\n\n if (state.pending) {\n state.pushPending()\n }\n}\n\n/**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\nParserInline.prototype.parse = function (str, md, env, outTokens) {\n const state = new this.State(str, md, env, outTokens)\n\n this.tokenize(state)\n\n const rules = this.ruler2.getRules('')\n const len = rules.length\n\n for (let i = 0; i < len; i++) {\n rules[i](state)\n }\n}\n\nParserInline.prototype.State = StateInline\n\nexport default ParserInline\n","import { Any, Cc, Z, P } from 'uc.micro'\n\nexport default function (opts) {\n const re = {}\n opts = opts || {}\n\n re.src_Any = Any.source\n re.src_Cc = Cc.source\n re.src_Z = Z.source\n re.src_P = P.source\n\n // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join('|')\n\n // \\p{\\Z\\Cc} (white spaces + control)\n re.src_ZCc = [re.src_Z, re.src_Cc].join('|')\n\n // Experimental. List of chars, completely prohibited in links\n // because can separate it from other part of text\n const text_separators = '[><\\uff5c]'\n\n // All possible word characters (everything without punctuation, spaces & controls)\n // Defined via punctuation & spaces to save space\n // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n re.src_pseudo_letter = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')'\n // The same as abothe but without [0-9]\n // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n\n re.src_ip4 =\n\n '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'\n\n // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n re.src_auth = '(?:(?:(?!' + re.src_ZCc + '|[@/\\\\[\\\\]()]).)+@)?'\n\n re.src_port =\n\n '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?'\n\n re.src_host_terminator =\n\n '(?=$|' + text_separators + '|' + re.src_ZPCc + ')' +\n '(?!' + (opts['---'] ? '-(?!--)|' : '-|') + '_|:\\\\d|\\\\.-|\\\\.(?!$|' + re.src_ZPCc + '))'\n\n re.src_path =\n\n '(?:' +\n '[/?#]' +\n '(?:' +\n '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\\\]{}.,\"\\'?!\\\\-;]).|' +\n '\\\\[(?:(?!' + re.src_ZCc + '|\\\\]).)*\\\\]|' +\n '\\\\((?:(?!' + re.src_ZCc + '|[)]).)*\\\\)|' +\n '\\\\{(?:(?!' + re.src_ZCc + '|[}]).)*\\\\}|' +\n '\\\\\"(?:(?!' + re.src_ZCc + '|[\"]).)+\\\\\"|' +\n \"\\\\'(?:(?!\" + re.src_ZCc + \"|[']).)+\\\\'|\" +\n\n // allow `I'm_king` if no pair found\n \"\\\\'(?=\" + re.src_pseudo_letter + '|[-])|' +\n\n // google has many dots in \"google search\" links (#66, #81).\n // github has ... in commit range links,\n // Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // - params separator\n // until more examples found.\n '\\\\.{2,}[a-zA-Z0-9%/&]|' +\n\n '\\\\.(?!' + re.src_ZCc + '|[.]|$)|' +\n (opts['---']\n ? '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n : '\\\\-+|'\n ) +\n // allow `,,,` in paths\n ',(?!' + re.src_ZCc + '|$)|' +\n\n // allow `;` if not followed by space-like char\n ';(?!' + re.src_ZCc + '|$)|' +\n\n // allow `!!!` in paths, but not at the end\n '\\\\!+(?!' + re.src_ZCc + '|[!]|$)|' +\n\n '\\\\?(?!' + re.src_ZCc + '|[?]|$)' +\n ')+' +\n '|\\\\/' +\n ')?'\n\n // Allow anything in markdown spec, forbid quote (\") at the first position\n // because emails enclosed in quotes are far more common\n re.src_email_name =\n\n '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*'\n\n re.src_xn =\n\n 'xn--[a-z0-9\\\\-]{1,59}'\n\n // More to read about domain names\n // http://serverfault.com/questions/638260/\n\n re.src_domain_root =\n\n // Allow letters & digits (http://test1)\n '(?:' +\n re.src_xn +\n '|' +\n re.src_pseudo_letter + '{1,63}' +\n ')'\n\n re.src_domain =\n\n '(?:' +\n re.src_xn +\n '|' +\n '(?:' + re.src_pseudo_letter + ')' +\n '|' +\n '(?:' + re.src_pseudo_letter + '(?:-|' + re.src_pseudo_letter + '){0,61}' + re.src_pseudo_letter + ')' +\n ')'\n\n re.src_host =\n\n '(?:' +\n // Don't need IP check, because digits are already allowed in normal domain names\n // src_ip4 +\n // '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)*' + re.src_domain/* _root */ + ')' +\n ')'\n\n re.tpl_host_fuzzy =\n\n '(?:' +\n re.src_ip4 +\n '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))' +\n ')'\n\n re.tpl_host_no_ip_fuzzy =\n\n '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))'\n\n re.src_host_strict =\n\n re.src_host + re.src_host_terminator\n\n re.tpl_host_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_host_terminator\n\n re.src_host_port_strict =\n\n re.src_host + re.src_port + re.src_host_terminator\n\n re.tpl_host_port_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_port + re.src_host_terminator\n\n re.tpl_host_port_no_ip_fuzzy_strict =\n\n re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator\n\n //\n // Main rules\n //\n\n // Rude test fuzzy links by host, for quick deny\n re.tpl_host_fuzzy_test =\n\n 'localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:' + re.src_ZPCc + '|>|$))'\n\n re.tpl_email_fuzzy =\n\n '(^|' + text_separators + '|\"|\\\\(|' + re.src_ZCc + ')' +\n '(' + re.src_email_name + '@' + re.tpl_host_fuzzy_strict + ')'\n\n re.tpl_link_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_fuzzy_strict + re.src_path + ')'\n\n re.tpl_link_no_ip_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ')'\n\n return re\n}\n","import reFactory from './lib/re.mjs'\n\n//\n// Helpers\n//\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n const sources = Array.prototype.slice.call(arguments, 1)\n\n sources.forEach(function (source) {\n if (!source) { return }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key]\n })\n })\n\n return obj\n}\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\nfunction isString (obj) { return _class(obj) === '[object String]' }\nfunction isObject (obj) { return _class(obj) === '[object Object]' }\nfunction isRegExp (obj) { return _class(obj) === '[object RegExp]' }\nfunction isFunction (obj) { return _class(obj) === '[object Function]' }\n\nfunction escapeRE (str) { return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&') }\n\n//\n\nconst defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n}\n\nfunction isOptionsObj (obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n /* eslint-disable-next-line no-prototype-builtins */\n return acc || defaultOptions.hasOwnProperty(k)\n }, false)\n}\n\nconst defaultSchemas = {\n 'http:': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos)\n\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp(\n '^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i'\n )\n }\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length\n }\n return 0\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos)\n\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp(\n '^' +\n self.re.src_auth +\n // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' +\n self.re.src_port +\n self.re.src_host_terminator +\n self.re.src_path,\n\n 'i'\n )\n }\n\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') { return 0 }\n if (pos >= 3 && text[pos - 3] === '/') { return 0 }\n return tail.match(self.re.no_http)[0].length\n }\n return 0\n }\n },\n 'mailto:': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos)\n\n if (!self.re.mailto) {\n self.re.mailto = new RegExp(\n '^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i'\n )\n }\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length\n }\n return 0\n }\n }\n}\n\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\n/* eslint-disable-next-line max-len */\nconst tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]'\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nconst tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|')\n\nfunction resetScanCache (self) {\n self.__index__ = -1\n self.__text_cache__ = ''\n}\n\nfunction createValidator (re) {\n return function (text, pos) {\n const tail = text.slice(pos)\n\n if (re.test(tail)) {\n return tail.match(re)[0].length\n }\n return 0\n }\n}\n\nfunction createNormalizer () {\n return function (match, self) {\n self.normalize(match)\n }\n}\n\n// Schemas compiler. Build regexps.\n//\nfunction compile (self) {\n // Load & clone RE patterns.\n const re = self.re = reFactory(self.__opts__)\n\n // Define dynamic patterns\n const tlds = self.__tlds__.slice()\n\n self.onCompile()\n\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re)\n }\n tlds.push(re.src_xn)\n\n re.src_tlds = tlds.join('|')\n\n function untpl (tpl) { return tpl.replace('%TLDS%', re.src_tlds) }\n\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i')\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i')\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i')\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i')\n\n //\n // Compile each schema\n //\n\n const aliases = []\n\n self.__compiled__ = {} // Reset compiled data\n\n function schemaError (name, val) {\n throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val)\n }\n\n Object.keys(self.__schemas__).forEach(function (name) {\n const val = self.__schemas__[name]\n\n // skip disabled methods\n if (val === null) { return }\n\n const compiled = { validate: null, link: null }\n\n self.__compiled__[name] = compiled\n\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate)\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate\n } else {\n schemaError(name, val)\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer()\n } else {\n schemaError(name, val)\n }\n\n return\n }\n\n if (isString(val)) {\n aliases.push(name)\n return\n }\n\n schemaError(name, val)\n })\n\n //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return\n }\n\n self.__compiled__[alias].validate =\n self.__compiled__[self.__schemas__[alias]].validate\n self.__compiled__[alias].normalize =\n self.__compiled__[self.__schemas__[alias]].normalize\n })\n\n //\n // Fake record for guessed links\n //\n self.__compiled__[''] = { validate: null, normalize: createNormalizer() }\n\n //\n // Build schema condition\n //\n const slist = Object.keys(self.__compiled__)\n .filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name]\n })\n .map(escapeRE)\n .join('|')\n // (?!_) cause 1.5x slowdown\n self.re.schema_test = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'i')\n self.re.schema_search = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'ig')\n self.re.schema_at_start = RegExp('^' + self.re.schema_search.source, 'i')\n\n self.re.pretest = RegExp(\n '(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@',\n 'i'\n )\n\n //\n // Cleanup\n //\n\n resetScanCache(self)\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\nfunction Match (self, shift) {\n const start = self.__index__\n const end = self.__last_index__\n const text = self.__text_cache__.slice(start, end)\n\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n this.schema = self.__schema__.toLowerCase()\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n this.index = start + shift\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n this.lastIndex = end + shift\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n this.raw = text\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n this.text = text\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n this.url = text\n}\n\nfunction createMatch (self, shift) {\n const match = new Match(self, shift)\n\n self.__compiled__[match.schema].normalize(match, self)\n\n return match\n}\n\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\nfunction LinkifyIt (schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options)\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas\n schemas = {}\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options)\n\n // Cache last tested result. Used to skip repeating steps on next `match` call.\n this.__index__ = -1\n this.__last_index__ = -1 // Next scan position\n this.__schema__ = ''\n this.__text_cache__ = ''\n\n this.__schemas__ = assign({}, defaultSchemas, schemas)\n this.__compiled__ = {}\n\n this.__tlds__ = tlds_default\n this.__tlds_replaced__ = false\n\n this.re = {}\n\n compile(this)\n}\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\nLinkifyIt.prototype.add = function add (schema, definition) {\n this.__schemas__[schema] = definition\n compile(this)\n return this\n}\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\nLinkifyIt.prototype.set = function set (options) {\n this.__opts__ = assign(this.__opts__, options)\n return this\n}\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\nLinkifyIt.prototype.test = function test (text) {\n // Reset scan cache\n this.__text_cache__ = text\n this.__index__ = -1\n\n if (!text.length) { return false }\n\n let m, ml, me, len, shift, next, re, tld_pos, at_pos\n\n // try to scan for link with schema - that's the most simple rule\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search\n re.lastIndex = 0\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex)\n if (len) {\n this.__schema__ = m[2]\n this.__index__ = m.index + m[1].length\n this.__last_index__ = m.index + m[0].length + len\n break\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n tld_pos = text.search(this.re.host_fuzzy_test)\n if (tld_pos >= 0) {\n // if tld is located after found link - no need to check fuzzy pattern\n if (this.__index__ < 0 || tld_pos < this.__index__) {\n if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n shift = ml.index + ml[1].length\n\n if (this.__index__ < 0 || shift < this.__index__) {\n this.__schema__ = ''\n this.__index__ = shift\n this.__last_index__ = ml.index + ml[0].length\n }\n }\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n at_pos = text.indexOf('@')\n if (at_pos >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if ((me = text.match(this.re.email_fuzzy)) !== null) {\n shift = me.index + me[1].length\n next = me.index + me[0].length\n\n if (this.__index__ < 0 || shift < this.__index__ ||\n (shift === this.__index__ && next > this.__last_index__)) {\n this.__schema__ = 'mailto:'\n this.__index__ = shift\n this.__last_index__ = next\n }\n }\n }\n }\n\n return this.__index__ >= 0\n}\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\nLinkifyIt.prototype.pretest = function pretest (text) {\n return this.re.pretest.test(text)\n}\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt (text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0\n }\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this)\n}\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\nLinkifyIt.prototype.match = function match (text) {\n const result = []\n let shift = 0\n\n // Try to take previous element from cache, if .test() called before\n if (this.__index__ >= 0 && this.__text_cache__ === text) {\n result.push(createMatch(this, shift))\n shift = this.__last_index__\n }\n\n // Cut head if cache was used\n let tail = shift ? text.slice(shift) : text\n\n // Scan string until end reached\n while (this.test(tail)) {\n result.push(createMatch(this, shift))\n\n tail = tail.slice(this.__last_index__)\n shift += this.__last_index__\n }\n\n if (result.length) {\n return result\n }\n\n return null\n}\n\n/**\n * LinkifyIt#matchAtStart(text) -> Match|null\n *\n * Returns fully-formed (not fuzzy) link if it starts at the beginning\n * of the string, and null otherwise.\n **/\nLinkifyIt.prototype.matchAtStart = function matchAtStart (text) {\n // Reset scan cache\n this.__text_cache__ = text\n this.__index__ = -1\n\n if (!text.length) return null\n\n const m = this.re.schema_at_start.exec(text)\n if (!m) return null\n\n const len = this.testSchemaAt(text, m[2], m[0].length)\n if (!len) return null\n\n this.__schema__ = m[2]\n this.__index__ = m.index + m[1].length\n this.__last_index__ = m.index + m[0].length + len\n\n return createMatch(this, 0)\n}\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\nLinkifyIt.prototype.tlds = function tlds (list, keepOld) {\n list = Array.isArray(list) ? list : [list]\n\n if (!keepOld) {\n this.__tlds__ = list.slice()\n this.__tlds_replaced__ = true\n compile(this)\n return this\n }\n\n this.__tlds__ = this.__tlds__.concat(list)\n .sort()\n .filter(function (el, idx, arr) {\n return el !== arr[idx - 1]\n })\n .reverse()\n\n compile(this)\n return this\n}\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\nLinkifyIt.prototype.normalize = function normalize (match) {\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n\n if (!match.schema) { match.url = 'http://' + match.url }\n\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = 'mailto:' + match.url\n }\n}\n\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\nLinkifyIt.prototype.onCompile = function onCompile () {\n}\n\nexport default LinkifyIt\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","// markdown-it default options\n\nexport default {\n options: {\n // Enable HTML tags in source\n html: false,\n\n // Use '/' to close single tags (<br />)\n xhtmlOut: false,\n\n // Convert '\\n' in paragraphs into <br>\n breaks: false,\n\n // CSS language prefix for fenced blocks\n langPrefix: 'language-',\n\n // autoconvert URL-like texts to links\n linkify: false,\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with <pre... internal wrapper is skipped.\n //\n // function (/*str, lang*/) { return ''; }\n //\n highlight: null,\n\n // Internal protection, recursion limit\n maxNesting: 100\n },\n\n components: {\n core: {},\n block: {},\n inline: {}\n }\n}\n","// \"Zero\" preset, with nothing enabled. Useful for manual configuring of simple\n// modes. For example, to parse bold/italic only.\n\nexport default {\n options: {\n // Enable HTML tags in source\n html: false,\n\n // Use '/' to close single tags (<br />)\n xhtmlOut: false,\n\n // Convert '\\n' in paragraphs into <br>\n breaks: false,\n\n // CSS language prefix for fenced blocks\n langPrefix: 'language-',\n\n // autoconvert URL-like texts to links\n linkify: false,\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with <pre... internal wrapper is skipped.\n //\n // function (/*str, lang*/) { return ''; }\n //\n highlight: null,\n\n // Internal protection, recursion limit\n maxNesting: 20\n },\n\n components: {\n\n core: {\n rules: [\n 'normalize',\n 'block',\n 'inline',\n 'text_join'\n ]\n },\n\n block: {\n rules: [\n 'paragraph'\n ]\n },\n\n inline: {\n rules: [\n 'text'\n ],\n rules2: [\n 'balance_pairs',\n 'fragments_join'\n ]\n }\n }\n}\n","// Commonmark default options\n\nexport default {\n options: {\n // Enable HTML tags in source\n html: true,\n\n // Use '/' to close single tags (<br />)\n xhtmlOut: true,\n\n // Convert '\\n' in paragraphs into <br>\n breaks: false,\n\n // CSS language prefix for fenced blocks\n langPrefix: 'language-',\n\n // autoconvert URL-like texts to links\n linkify: false,\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with <pre... internal wrapper is skipped.\n //\n // function (/*str, lang*/) { return ''; }\n //\n highlight: null,\n\n // Internal protection, recursion limit\n maxNesting: 20\n },\n\n components: {\n\n core: {\n rules: [\n 'normalize',\n 'block',\n 'inline',\n 'text_join'\n ]\n },\n\n block: {\n rules: [\n 'blockquote',\n 'code',\n 'fence',\n 'heading',\n 'hr',\n 'html_block',\n 'lheading',\n 'list',\n 'reference',\n 'paragraph'\n ]\n },\n\n inline: {\n rules: [\n 'autolink',\n 'backticks',\n 'emphasis',\n 'entity',\n 'escape',\n 'html_inline',\n 'image',\n 'link',\n 'newline',\n 'text'\n ],\n rules2: [\n 'balance_pairs',\n 'emphasis',\n 'fragments_join'\n ]\n }\n }\n}\n","// Main parser class\n\nimport * as utils from './common/utils.mjs'\nimport * as helpers from './helpers/index.mjs'\nimport Renderer from './renderer.mjs'\nimport ParserCore from './parser_core.mjs'\nimport ParserBlock from './parser_block.mjs'\nimport ParserInline from './parser_inline.mjs'\nimport LinkifyIt from 'linkify-it'\nimport * as mdurl from 'mdurl'\nimport punycode from 'punycode.js'\n\nimport cfg_default from './presets/default.mjs'\nimport cfg_zero from './presets/zero.mjs'\nimport cfg_commonmark from './presets/commonmark.mjs'\n\nconst config = {\n default: cfg_default,\n zero: cfg_zero,\n commonmark: cfg_commonmark\n}\n\n//\n// This validator can prohibit more than really needed to prevent XSS. It's a\n// tradeoff to keep code simple and to be secure by default.\n//\n// If you need different setup - override validator method as you wish. Or\n// replace it with dummy function and use external sanitizer.\n//\n\nconst BAD_PROTO_RE = /^(vbscript|javascript|file|data):/\nconst GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/\n\nfunction validateLink (url) {\n // url should be normalized at this point, and existing entities are decoded\n const str = url.trim().toLowerCase()\n\n return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) : true\n}\n\nconst RECODE_HOSTNAME_FOR = ['http:', 'https:', 'mailto:']\n\nfunction normalizeLink (url) {\n const parsed = mdurl.parse(url, true)\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toASCII(parsed.hostname)\n } catch (er) { /**/ }\n }\n }\n\n return mdurl.encode(mdurl.format(parsed))\n}\n\nfunction normalizeLinkText (url) {\n const parsed = mdurl.parse(url, true)\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toUnicode(parsed.hostname)\n } catch (er) { /**/ }\n }\n }\n\n // add '%' to exclude list because of https://github.com/markdown-it/markdown-it/issues/720\n return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + '%')\n}\n\n/**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n * md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n/**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.mjs) -\n * configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.mjs) -\n * similar to GFM, used when no preset name given. Enables all available rules,\n * but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.mjs) -\n * all rules disabled. Useful to quickly setup your config via `.enable()`.\n * For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n * That's not safe! You may need external sanitizer to protect output from XSS.\n * It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n * (`<br />`). This is needed only for full CommonMark compatibility. In real\n * world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `<br>`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n * Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__ - `false`. Set `true` to enable [some language-neutral\n * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.mjs) +\n * quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n * pairs, when typographer enabled and smartquotes on. For example, you can\n * use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n * `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n * Highlighter `function (str, lang)` should return escaped HTML. It can also\n * return empty string if the source was not changed and should be escaped\n * externaly. If result starts with <pre... internal wrapper is skipped.\n *\n * ##### Example\n *\n * ```javascript\n * // commonmark mode\n * var md = require('markdown-it')('commonmark');\n *\n * // default mode\n * var md = require('markdown-it')();\n *\n * // enable everything\n * var md = require('markdown-it')({\n * html: true,\n * linkify: true,\n * typographer: true\n * });\n * ```\n *\n * ##### Syntax highlighting\n *\n * ```js\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return hljs.highlight(str, { language: lang, ignoreIllegals: true }).value;\n * } catch (__) {}\n * }\n *\n * return ''; // use external default escaping\n * }\n * });\n * ```\n *\n * Or with full wrapper override (if you need assign class to `<pre>` or `<code>`):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return '<pre><code class=\"hljs\">' +\n * hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +\n * '</code></pre>';\n * } catch (__) {}\n * }\n *\n * return '<pre><code class=\"hljs\">' + md.utils.escapeHtml(str) + '</code></pre>';\n * }\n * });\n * ```\n *\n **/\nfunction MarkdownIt (presetName, options) {\n if (!(this instanceof MarkdownIt)) {\n return new MarkdownIt(presetName, options)\n }\n\n if (!options) {\n if (!utils.isString(presetName)) {\n options = presetName || {}\n presetName = 'default'\n }\n }\n\n /**\n * MarkdownIt#inline -> ParserInline\n *\n * Instance of [[ParserInline]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.inline = new ParserInline()\n\n /**\n * MarkdownIt#block -> ParserBlock\n *\n * Instance of [[ParserBlock]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.block = new ParserBlock()\n\n /**\n * MarkdownIt#core -> Core\n *\n * Instance of [[Core]] chain executor. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.core = new ParserCore()\n\n /**\n * MarkdownIt#renderer -> Renderer\n *\n * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n * rules for new token types, generated by plugins.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * function myToken(tokens, idx, options, env, self) {\n * //...\n * return result;\n * };\n *\n * md.renderer.rules['my_token'] = myToken\n * ```\n *\n * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.mjs).\n **/\n this.renderer = new Renderer()\n\n /**\n * MarkdownIt#linkify -> LinkifyIt\n *\n * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.mjs)\n * rule.\n **/\n this.linkify = new LinkifyIt()\n\n /**\n * MarkdownIt#validateLink(url) -> Boolean\n *\n * Link validation function. CommonMark allows too much in links. By default\n * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n * except some embedded image types.\n *\n * You can change this behaviour:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * // enable everything\n * md.validateLink = function () { return true; }\n * ```\n **/\n this.validateLink = validateLink\n\n /**\n * MarkdownIt#normalizeLink(url) -> String\n *\n * Function used to encode link url to a machine-readable format,\n * which includes url-encoding, punycode, etc.\n **/\n this.normalizeLink = normalizeLink\n\n /**\n * MarkdownIt#normalizeLinkText(url) -> String\n *\n * Function used to decode link url to a human-readable format`\n **/\n this.normalizeLinkText = normalizeLinkText\n\n // Expose utils & helpers for easy acces from plugins\n\n /**\n * MarkdownIt#utils -> utils\n *\n * Assorted utility functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.mjs).\n **/\n this.utils = utils\n\n /**\n * MarkdownIt#helpers -> helpers\n *\n * Link components parser functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n **/\n this.helpers = utils.assign({}, helpers)\n\n this.options = {}\n this.configure(presetName)\n\n if (options) { this.set(options) }\n}\n\n/** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .set({ html: true, breaks: true })\n * .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\nMarkdownIt.prototype.set = function (options) {\n utils.assign(this.options, options)\n return this\n}\n\n/** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you will - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\nMarkdownIt.prototype.configure = function (presets) {\n const self = this\n\n if (utils.isString(presets)) {\n const presetName = presets\n presets = config[presetName]\n if (!presets) { throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name') }\n }\n\n if (!presets) { throw new Error('Wrong `markdown-it` preset, can\\'t be empty') }\n\n if (presets.options) { self.set(presets.options) }\n\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name) {\n if (presets.components[name].rules) {\n self[name].ruler.enableOnly(presets.components[name].rules)\n }\n if (presets.components[name].rules2) {\n self[name].ruler2.enableOnly(presets.components[name].rules2)\n }\n })\n }\n return this\n}\n\n/** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .enable(['sub', 'sup'])\n * .disable('smartquotes');\n * ```\n **/\nMarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n let result = []\n\n if (!Array.isArray(list)) { list = [list] }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.enable(list, true))\n }, this)\n\n result = result.concat(this.inline.ruler2.enable(list, true))\n\n const missed = list.filter(function (name) { return result.indexOf(name) < 0 })\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed)\n }\n\n return this\n}\n\n/** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\nMarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n let result = []\n\n if (!Array.isArray(list)) { list = [list] }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.disable(list, true))\n }, this)\n\n result = result.concat(this.inline.ruler2.disable(list, true))\n\n const missed = list.filter(function (name) { return result.indexOf(name) < 0 })\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed)\n }\n return this\n}\n\n/** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n * });\n * ```\n **/\nMarkdownIt.prototype.use = function (plugin /*, params, ... */) {\n const args = [this].concat(Array.prototype.slice.call(arguments, 1))\n plugin.apply(plugin, args)\n return this\n}\n\n/** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and return list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\nMarkdownIt.prototype.parse = function (src, env) {\n if (typeof src !== 'string') {\n throw new Error('Input data should be a String')\n }\n\n const state = new this.core.State(src, this, env)\n\n this.core.process(state)\n\n return state.tokens\n}\n\n/**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\nMarkdownIt.prototype.render = function (src, env) {\n env = env || {}\n\n return this.renderer.render(this.parse(src, env), this.options, env)\n}\n\n/** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\nMarkdownIt.prototype.parseInline = function (src, env) {\n const state = new this.core.State(src, this, env)\n\n state.inlineMode = true\n this.core.process(state)\n\n return state.tokens\n}\n\n/**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `<p>` tags.\n **/\nMarkdownIt.prototype.renderInline = function (src, env) {\n env = env || {}\n\n return this.renderer.render(this.parseInline(src, env), this.options, env)\n}\n\nexport default MarkdownIt\n","<script lang=\"ts\" setup>\nimport type { LangChatConfig, QuestionItem } from '../types'; // Props\n\nimport { computed } from 'vue';\n\nimport Button from '@/components/ui/Button.vue';\n\n// Props\ninterface Props {\n config: LangChatConfig;\n questions: QuestionItem[];\n title?: string;\n showTitle?: boolean;\n backgroundColor?: string;\n textColor?: string;\n buttonStyle?: 'filled' | 'outlined' | 'rounded';\n maxQuestions?: number;\n}\n\nconst props = defineProps<Props>();\n\n// Emits\nconst emit = defineEmits<{\n questionClick: [question: QuestionItem];\n}>();\n\n// 计算属性\nconst displayQuestions = computed(() => {\n const maxQuestions = props.maxQuestions || 6;\n return props.questions.slice(0, maxQuestions);\n});\n\nconst questionButtonClasses = computed(() => {\n const buttonStyle = props.buttonStyle || 'rounded';\n\n const baseClasses = [\n 'w-auto',\n 'px-4',\n 'py-2',\n 'text-sm',\n 'transition-all',\n 'duration-200',\n 'ease-in-out',\n 'focus:outline-none',\n 'focus:ring-2',\n 'focus:ring-blue-500',\n 'focus:ring-opacity-50',\n 'self-start',\n ];\n\n switch (buttonStyle) {\n case 'filled': {\n return [...baseClasses, 'bg-white', 'hover:bg-gray-50', 'shadow-sm'];\n }\n case 'outlined': {\n return [\n ...baseClasses,\n 'border',\n 'border-gray-300',\n 'hover:border-gray-400',\n 'hover:bg-gray-50',\n ];\n }\n case 'rounded':\n default: {\n return [\n ...baseClasses,\n 'bg-white',\n 'hover:bg-gray-50',\n 'rounded-lg',\n 'shadow-sm',\n ];\n }\n }\n});\n\nconst questionButtonStyles = computed(() => ({\n color: props.textColor || '#475569',\n}));\n\n// 事件处理\nconst handleQuestionClick = (question: QuestionItem) => {\n emit('questionClick', question);\n};\n</script>\n\n<template>\n <div v-if=\"questions.length > 0\" class=\"px-1 text-xs\">\n <!-- 标题 -->\n <div v-if=\"title && showTitle !== false\" class=\"mb-3 text-center\">\n <h3 class=\"text-sm font-medium opacity-80\">\n {{ title }}\n </h3>\n </div>\n\n <!-- 问题按钮列表 -->\n <div class=\"flex flex-col items-start space-y-2\">\n <Button\n v-for=\"question in displayQuestions\"\n :key=\"question.id\"\n :class=\"questionButtonClasses\"\n :style=\"questionButtonStyles\"\n class=\"langchat-widget-question-btn\"\n variant=\"outline\"\n @click=\"handleQuestionClick(question)\"\n >\n <div class=\"flex items-center gap-2 text-xs\">\n <div>{{ question.text }}</div>\n <svg\n class=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </div>\n </Button>\n </div>\n </div>\n</template>\n\n<style scoped></style>\n","<template>\n <div \n v-if=\"config.welcome?.enabled\"\n class=\"langchat-widget-welcome\"\n :class=\"welcomeClasses\"\n :style=\"welcomeStyles\"\n >\n <div class=\"text-center py-6\">\n <!-- 图标 -->\n <div class=\"mb-3\">\n <span class=\"text-3xl\">{{ welcomeData.icon || '👋' }}</span>\n </div>\n \n <!-- 标题 -->\n <h2 class=\"text-xl font-semibold mb-2\">\n {{ welcomeData.title }}\n </h2>\n \n <!-- 副标题 -->\n <p v-if=\"welcomeData.subtitle\" class=\"text-sm opacity-80\">\n {{ welcomeData.subtitle }}\n </p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport type { LangChatConfig, WelcomeData } from '../types'\n\n// Props\ninterface Props {\n config: LangChatConfig\n welcomeData: WelcomeData\n}\n\nconst props = defineProps<Props>()\n\n// 计算属性\nconst welcomeClasses = computed(() => [\n 'px-4',\n 'py-2',\n 'rounded-xl',\n 'mx-4',\n 'mb-4'\n])\n\nconst welcomeStyles = computed(() => ({\n backgroundColor: props.config.welcome?.backgroundColor || '#f0f9ff',\n color: props.config.welcome?.textColor || '#0369a1'\n}))\n</script>\n\n<style scoped>\n.langchat-widget-welcome {\n /* 确保欢迎语在所有情况下都可见 */\n z-index: 1;\n}\n\n/* 响应式设计 */\n@media (max-width: 640px) {\n .langchat-widget-welcome {\n margin: 0.5rem;\n padding: 0.75rem;\n }\n \n .langchat-widget-welcome h2 {\n font-size: 1.125rem;\n }\n \n .langchat-widget-welcome p {\n font-size: 0.875rem;\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport type {\n ChatMessage,\n LangChatConfig,\n QuestionItem,\n WelcomeData,\n} from '../types';\n\nimport { computed, nextTick, onMounted, ref, watch } from 'vue';\nimport { messageStore } from '../utils/message-store';\n\nimport MarkdownIt from 'markdown-it';\n\nimport QuestionsSuggestions from './QuestionsSuggestions.vue'; // Props\nimport WelcomeMessage from './WelcomeMessage.vue';\n\nimport 'github-markdown-css';\n\nimport '../styles/markdown.css';\n\n// Props\ninterface Props {\n messages: ChatMessage[];\n isLoading: boolean;\n config: LangChatConfig;\n suggestedQuestions: QuestionItem[];\n welcomeData: WelcomeData;\n}\n\nconst props = defineProps<Props>();\n\n// Emits\nconst emit = defineEmits<{\n questionClick: [question: QuestionItem];\n}>();\n\n// 响应式引用\nconst messagesContainer = ref<HTMLElement>();\n\n// 计算属性\nconst showWelcome = computed(() => {\n return props.config.welcome?.enabled && props.messages.length === 0;\n});\n\n// 显示预制问题(只在没有消息时显示)\nconst showInitialQuestions = computed(() => {\n return messageStore.hasQuestions.value && props.messages.length === 0;\n});\n\n// 显示相似问题(在消息列表最下方显示)\nconst showSimilarQuestions = computed(() => {\n return messageStore.hasQuestions.value && props.messages.length > 0;\n});\n\nconst avatarStyles = computed(() => ({\n width: `${props.config.avatars?.size || 32}px`,\n height: `${props.config.avatars?.size || 32}px`,\n borderRadius: props.config.avatars?.borderRadius || '50%',\n}));\n\n// Markdown渲染器\nconst md = new MarkdownIt({\n html: props.config.messages?.markdownOptions?.html || false,\n linkify: props.config.messages?.markdownOptions?.linkify || true,\n typographer: props.config.messages?.markdownOptions?.typographer || false,\n breaks: props.config.messages?.markdownOptions?.breaks || true,\n});\n\n// 方法\nconst messageClasses = (message: ChatMessage) => {\n const baseClasses = ['text-sm', 'break-words'];\n\n return message.type === 'user'\n ? [...baseClasses, 'text-right']\n : [...baseClasses, 'text-left'];\n};\n\nconst messageStyles = (message: ChatMessage) => {\n return message.type === 'user'\n ? {\n backgroundColor:\n props.config.messages?.userBackgroundColor || '#3b82f6',\n color: props.config.messages?.userTextColor || '#ffffff',\n }\n : {\n backgroundColor: props.config.messages?.aiBackgroundColor || '#f3f4f6',\n color: props.config.messages?.aiTextColor || '#1f2937',\n };\n};\n\nconst renderMarkdown = (content: string): string => {\n try {\n // 安全处理:防止XSS攻击\n const sanitizedContent = content\n .replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, '')\n .replace(/<iframe\\b[^<]*(?:(?!<\\/iframe>)<[^<]*)*<\\/iframe>/gi, '')\n .replace(/javascript:/gi, '');\n\n return md.render(sanitizedContent);\n } catch (error) {\n console.warn('Markdown rendering failed:', error);\n return content;\n }\n};\n\nconst formatTime = (timestamp: Date): string => {\n const now = new Date();\n const diff = now.getTime() - timestamp.getTime();\n\n if (diff < 60_000) {\n // 1分钟内\n return '刚刚';\n } else if (diff < 3_600_000) {\n // 1小时内\n return `${Math.floor(diff / 60_000)}分钟前`;\n } else if (diff < 86_400_000) {\n // 1天内\n return `${Math.floor(diff / 3_600_000)}小时前`;\n } else {\n return timestamp.toLocaleDateString();\n }\n};\n\n// 事件处理\nconst handleQuestionClick = (question: QuestionItem) => {\n emit('questionClick', question);\n};\n\n// 防抖函数,避免频繁滚动\nconst debounce = (func: Function, delay: number) => {\n let timeoutId: NodeJS.Timeout;\n return (...args: any[]) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => func.apply(null, args), delay);\n };\n};\n\n// 自动滚动到底部\nconst scrollToBottom = async () => {\n await nextTick();\n if (messagesContainer.value) {\n // 平滑滚动到底部\n messagesContainer.value.scrollTop = messagesContainer.value.scrollHeight;\n }\n};\n\n// 防抖版本的滚动函数\nconst debouncedScrollToBottom = debounce(scrollToBottom, 200);\n\n// 强制滚动到底部的备用方案\nconst forceScrollToBottom = () => {\n if (messagesContainer.value) {\n console.log('Force scrolling to bottom...');\n // 使用多种滚动方法确保成功\n messagesContainer.value.scrollTop = messagesContainer.value.scrollHeight;\n \n // 使用scrollIntoView作为备用方案\n const lastMessage = messagesContainer.value.lastElementChild;\n if (lastMessage) {\n lastMessage.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }\n }\n};\n\n// 监听消息变化,自动滚动(使用防抖避免频繁滚动)\nwatch(() => props.messages.length, debouncedScrollToBottom, { flush: 'post' });\nwatch(() => props.isLoading, debouncedScrollToBottom, { flush: 'post' });\n\n// 深度监听每个消息的content变化,确保流式内容更新时能滚动\nwatch(\n () => props.messages.map(msg => ({ id: msg.id, content: msg.content, isStreaming: msg.isStreaming })),\n () => {\n // 如果有流式消息,使用防抖滚动避免抖动\n const hasStreamingMessage = props.messages.some(msg => msg.isStreaming);\n if (hasStreamingMessage) {\n debouncedScrollToBottom(); // 流式消息也使用防抖滚动\n }\n },\n { deep: true, flush: 'post' }\n);\n\n\n\n// 组件挂载后滚动到底部\nonMounted(() => {\n debouncedScrollToBottom();\n});\n</script>\n\n<template>\n <div class=\"bg-background flex-1 overflow-hidden flex flex-col\">\n <!-- 消息列表 -->\n <div\n ref=\"messagesContainer\"\n class=\"flex-1 space-y-3 overflow-y-auto px-3 py-2 sm:space-y-4 sm:px-4 sm:py-2\"\n style=\"max-height: calc(100vh - 200px); min-height: 300px;\"\n >\n <!-- 欢迎消息 -->\n <WelcomeMessage\n v-if=\"showWelcome\"\n :config=\"config\"\n :welcome-data=\"welcomeData\"\n />\n\n <!-- 预制问题建议(只在没有消息时显示) -->\n <QuestionsSuggestions\n v-if=\"showInitialQuestions\"\n :config=\"config\"\n :questions=\"messageStore.suggestedQuestions.value\"\n title=\"常见问题\"\n background-color=\"#f8fafc\"\n text-color=\"#475569\"\n button-style=\"rounded\"\n :max-questions=\"6\"\n @question-click=\"handleQuestionClick\"\n />\n\n <!-- 消息项 -->\n <div\n v-for=\"message in messages\"\n :key=\"message.id\"\n :class=\"message.type === 'user' ? 'justify-end' : 'justify-start'\"\n class=\"flex items-start space-x-3\"\n >\n <!-- AI头像 -->\n <div\n v-if=\"message.type === 'ai'\"\n :style=\"avatarStyles\"\n class=\"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full bg-gray-200 text-sm\"\n >\n {{ config.avatars?.ai || '🤖' }}\n </div>\n\n <!-- 消息内容 -->\n <div\n :class=\"messageClasses(message)\"\n :style=\"messageStyles(message)\"\n class=\"max-w-[280px] rounded-lg px-3 py-2 transition-all duration-200 sm:max-w-xs sm:px-4 sm:py-2 lg:max-w-md\"\n >\n <!-- Markdown内容 -->\n <div\n v-if=\"message.type === 'ai' && config.enableMarkdown\"\n :data-theme=\"config.theme?.mode || 'light'\"\n class=\"markdown-body\"\n v-html=\"renderMarkdown(message.content)\"\n ></div>\n\n <!-- 普通文本 -->\n <div v-else class=\"whitespace-pre-wrap\">\n {{ message.content }}\n </div>\n\n <!-- 流式内容指示器 -->\n <div\n v-if=\"message.isStreaming\"\n class=\"ml-1 inline-block h-2 w-2 animate-pulse rounded-full bg-current\"\n ></div>\n\n <!-- 时间戳 -->\n <div\n v-if=\"config.messages?.showTimestamp\"\n :class=\"message.type === 'user' ? 'text-right' : 'text-left'\"\n class=\"mt-1 text-xs opacity-60\"\n >\n {{ formatTime(message.timestamp) }}\n </div>\n\n <!-- 错误状态 -->\n <div\n v-if=\"message.status === 'error'\"\n class=\"mt-1 text-xs text-red-500\"\n >\n {{ message.error || '发送失败' }}\n </div>\n </div>\n\n <!-- 用户头像 -->\n <div\n v-if=\"message.type === 'user'\"\n :style=\"avatarStyles\"\n class=\"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full bg-blue-500 text-sm text-white\"\n >\n {{ config.avatars?.user || '👤' }}\n </div>\n </div>\n\n <!-- 加载指示器 -->\n <div v-if=\"isLoading\" class=\"flex items-start space-x-3\">\n <div\n :style=\"avatarStyles\"\n class=\"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full bg-gray-200 text-sm\"\n >\n {{ config.avatars?.ai || '🤖' }}\n </div>\n <div class=\"rounded-2xl bg-gray-100 px-4 py-2\">\n <div class=\"flex space-x-1\">\n <div class=\"h-2 w-2 animate-bounce rounded-full bg-gray-400\"></div>\n <div\n class=\"h-2 w-2 animate-bounce rounded-full bg-gray-400\"\n style=\"animation-delay: 0.1s\"\n ></div>\n <div\n class=\"h-2 w-2 animate-bounce rounded-full bg-gray-400\"\n style=\"animation-delay: 0.2s\"\n ></div>\n </div>\n </div>\n </div>\n\n <!-- 相似问题建议(在消息列表最下方显示) -->\n <QuestionsSuggestions\n v-if=\"showSimilarQuestions\"\n :config=\"config\"\n :questions=\"messageStore.suggestedQuestions.value\"\n :show-title=\"false\"\n background-color=\"#f8fafc\"\n text-color=\"#475569\"\n button-style=\"rounded\"\n :max-questions=\"6\"\n @question-click=\"handleQuestionClick\"\n />\n </div>\n </div>\n</template>\n\n<style scoped>\n.langchat-widget-messages {\n /* 确保消息区域在所有情况下都可见 */\n z-index: 1;\n}\n\n/* 自定义滚动条 */\n.langchat-widget-messages ::-webkit-scrollbar {\n width: 6px;\n}\n\n.langchat-widget-messages ::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.langchat-widget-messages ::-webkit-scrollbar-thumb {\n background: rgba(156, 163, 175, 0.5);\n border-radius: 3px;\n}\n\n.langchat-widget-messages ::-webkit-scrollbar-thumb:hover {\n background: rgba(156, 163, 175, 0.8);\n}\n\n/* 响应式设计 */\n@media (max-width: 640px) {\n .langchat-widget-messages {\n padding: 0.5rem;\n }\n\n .langchat-widget-messages .space-y-4 > div {\n margin-bottom: 0.75rem;\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport type { LangChatConfig } from '@/types';\n\nimport { nextTick, onMounted, ref } from 'vue';\n\nimport Button from '@/components/ui/Button.vue';\n\ninterface Props {\n config: LangChatConfig;\n isLoading?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n isLoading: false,\n});\n\nconst emit = defineEmits<{\n send: [message: string];\n}>();\n\nconst message = ref('');\nconst textareaRef = ref<HTMLTextAreaElement>();\n\nconst sendMessage = () => {\n const trimmedMessage = message.value.trim();\n if (trimmedMessage && !props.isLoading) {\n emit('send', trimmedMessage);\n message.value = '';\n nextTick(() => {\n if (textareaRef.value) {\n // 完全重置textarea到初始状态\n textareaRef.value.style.height = '22px';\n textareaRef.value.style.lineHeight = '22px';\n // 重置多行状态\n isMultiLine.value = false;\n }\n });\n }\n};\n\nconst handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n sendMessage();\n }\n};\n\nconst autoResize = () => {\n nextTick(() => {\n try {\n if (textareaRef.value) {\n // 先重置到基础高度,确保scrollHeight计算准确\n textareaRef.value.style.height = '22px';\n textareaRef.value.style.lineHeight = '22px';\n\n // 计算实际需要的高度\n const scrollHeight = textareaRef.value.scrollHeight;\n const newHeight = Math.max(22, scrollHeight);\n\n // 设置新高度\n textareaRef.value.style.height = `${newHeight}px`;\n\n // 更新多行状态\n isMultiLine.value = newHeight > 22;\n }\n } catch (error) {\n console.warn('AutoResize error:', error);\n }\n });\n};\n\n// 判断是否为多行状态\nconst isMultiLine = ref(false);\n\n// 组件挂载后确保textarea处于正确状态\nonMounted(() => {\n nextTick(() => {\n if (textareaRef.value) {\n // 确保初始状态为单行\n textareaRef.value.style.height = '22px';\n textareaRef.value.style.lineHeight = '22px';\n isMultiLine.value = false;\n }\n });\n});\n</script>\n\n<template>\n <div class=\"bg-background flex items-center gap-2 p-3 px-4 pb-0\">\n <div\n :class=\"{ '!items-end': isMultiLine, '!items-center': !isMultiLine }\"\n class=\"border-input bg-background relative flex flex-1 items-center rounded-xl border px-4 py-3\"\n style=\"min-height: 56px\"\n >\n <textarea\n ref=\"textareaRef\"\n v-model=\"message\"\n :disabled=\"isLoading\"\n :maxlength=\"config.messages?.maxLength || 1000\"\n :placeholder=\"config.messages?.placeholder || '输入消息...'\"\n class=\"flex-1 resize-none overflow-hidden border-none bg-transparent text-sm outline-none\"\n style=\"height: 22px; line-height: 22px\"\n @input=\"autoResize\"\n @keydown=\"handleKeyDown\"\n ></textarea>\n <div class=\"flex flex-shrink-0 items-center justify-center gap-1\">\n <!-- Audio按钮 - 根据配置显示,位于Submit按钮左侧 -->\n <Button\n v-if=\"config.messages?.showAudioButton\"\n class=\"!text-primary !h-8 w-8 rounded-lg !p-0\"\n size=\"sm\"\n variant=\"ghost\"\n >\n <svg\n aria-hidden=\"true\"\n class=\"size-4\"\n data-icon=\"audio\"\n fill=\"currentColor\"\n focusable=\"false\"\n viewBox=\"64 64 896 896\"\n >\n <path\n d=\"M842 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1zM512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm-94-392c0-50.6 41.9-92 94-92s94 41.4 94 92v224c0 50.6-41.9 92-94 92s-94-41.4-94-92V232z\"\n />\n </svg>\n </Button>\n <!-- Submit按钮 -->\n <Button\n :disabled=\"!message.trim() || isLoading\"\n :variant=\"message.trim() ? 'default' : 'secondary'\"\n class=\"!bg-primary !h-8 w-8 rounded-full !p-0 !text-white\"\n size=\"sm\"\n @click=\"sendMessage\"\n >\n <svg\n class=\"size-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"m5 12 7-7 7 7\" />\n <path d=\"M12 19V5\" />\n </svg>\n </Button>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped></style>\n","<script lang=\"ts\" setup>\nimport type { LangChatConfig } from '../types'; // Props\n\nimport { computed } from 'vue';\n\n// Props\ninterface Props {\n config: LangChatConfig;\n}\n\nconst props = defineProps<Props>();\n\n// 计算属性\nconst showCopyright = computed(() => {\n return props.config.copyright?.text || props.config.copyright?.link;\n});\n\nconst copyrightClasses = computed(() => [\n 'px-4',\n 'p-2',\n 'text-center',\n 'border-t',\n 'border-gray-200',\n]);\n\nconst copyrightStyles = computed(() => ({\n backgroundColor: props.config.copyright?.backgroundColor || '',\n color: props.config.copyright?.textColor || '',\n borderTopColor: props.config.theme?.borderRadius ? 'transparent' : '',\n}));\n\nconst linkStyles = computed(() => ({\n color: props.config.copyright?.textColor || '#6b7280',\n}));\n</script>\n\n<template>\n <div\n v-if=\"showCopyright\"\n :class=\"copyrightClasses\"\n :style=\"copyrightStyles\"\n class=\"langchat-widget-copyright\"\n >\n <!-- 版权文本 -->\n <div class=\"text-center text-[10px]\">\n <span class=\"opacity-70\">\n {{ config.copyright?.text || 'Powered by LangChat' }}\n </span>\n\n <!-- 链接 -->\n <a\n v-if=\"config.copyright?.link\"\n :href=\"config.copyright.link\"\n :style=\"linkStyles\"\n class=\"ml-1 underline transition-opacity duration-200 hover:opacity-80\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {{ config.copyright.linkText || 'LangChat' }}\n </a>\n </div>\n </div>\n</template>\n\n<style scoped>\n.langchat-widget-copyright {\n /* 确保版权信息在所有情况下都可见 */\n z-index: 1;\n}\n\n/* 链接悬停效果 */\n.langchat-widget-copyright a:hover {\n text-decoration: underline;\n}\n\n/* 响应式设计 */\n@media (max-width: 640px) {\n .langchat-widget-copyright {\n padding: 0.5rem 1rem;\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport type {\n ChatMessage,\n LangChatConfig,\n QuestionItem,\n WelcomeData,\n} from '../types';\n\nimport { computed } from 'vue';\n\nimport ChatHeader from './ChatHeader.vue';\nimport ChatMessages from './ChatMessages.vue';\nimport ChatSender from './ChatSender.vue';\nimport Copyright from './Copyright.vue'; // Props\n\n// Props\ninterface Props {\n messages: ChatMessage[];\n isLoading: boolean;\n config: LangChatConfig;\n suggestedQuestions: QuestionItem[];\n welcomeData: WelcomeData;\n onClose: () => void;\n onSendMessage: (content: string) => void;\n onQuestionClick: (question: QuestionItem) => void;\n}\n\nconst props = defineProps<Props>();\n\n// 计算属性\nconst windowClasses = computed(() => {\n const position = props.config.position || 'bottom-right';\n const baseClasses =\n 'fixed z-40 flex flex-col rounded-lg border bg-background shadow-lg transition-all duration-300 ease-in-out';\n\n // 根据位置添加定位类(响应式)\n const positionClasses = {\n 'bottom-right': 'bottom-4 right-4 sm:bottom-24 sm:right-6',\n 'bottom-left': 'bottom-4 left-4 sm:bottom-24 sm:left-6',\n 'top-right': 'top-4 right-4 sm:top-6 sm:right-6',\n 'top-left': 'top-4 left-4 sm:top-6 sm:left-6',\n };\n\n return `${baseClasses} ${positionClasses[position as keyof typeof positionClasses] || positionClasses['bottom-right']}`;\n});\n\n// 事件处理\nconst handleClose = () => {\n props.onClose();\n};\n\nconst handleSendMessage = (content: string) => {\n props.onSendMessage(content);\n};\n\nconst handleQuestionClick = (question: QuestionItem) => {\n props.onQuestionClick(question);\n};\n</script>\n\n<template>\n <div\n :class=\"windowClasses\"\n class=\"bg-background/95 animate-in slide-in-from-bottom-4 fade-in-0 fixed z-40 flex h-[calc(100vh-120px)] w-[450px] flex-col rounded-xl border shadow-2xl backdrop-blur-sm transition-all duration-300 ease-in-out\"\n >\n <!-- 聊天头部 -->\n <ChatHeader :config=\"config\" @close=\"handleClose\" />\n\n <!-- 消息展示区域 -->\n <ChatMessages\n :config=\"config\"\n :is-loading=\"isLoading\"\n :messages=\"messages\"\n :suggested-questions=\"suggestedQuestions\"\n :welcome-data=\"welcomeData\"\n @question-click=\"handleQuestionClick\"\n />\n\n <!-- 消息发送区域 -->\n <ChatSender :config=\"config\" @send=\"handleSendMessage\" />\n\n <!-- 版权信息 -->\n <Copyright :config=\"config\" />\n </div>\n</template>\n","<template>\n <button\n :class=\"buttonClasses\"\n @click=\"handleClick\"\n :title=\"isOpen ? '关闭聊天' : '打开聊天'\"\n >\n <svg\n v-if=\"!isOpen\"\n class=\"h-6 w-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z\"\n />\n </svg>\n <svg\n v-else\n class=\"h-6 w-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n \n <!-- 脉冲动画指示器 -->\n <div\n v-if=\"!isOpen\"\n class=\"absolute inset-0 rounded-full bg-primary/20 animate-ping\"\n ></div>\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport type { LangChatConfig } from '../types'\n\n// Props\ninterface Props {\n isOpen: boolean\n onClick: () => void\n config: LangChatConfig\n}\n\nconst props = defineProps<Props>()\n\n// 计算属性\nconst buttonClasses = computed(() => {\n const position = props.config.position || 'bottom-right'\n const baseClasses = 'fixed z-50 flex h-12 w-12 sm:h-14 sm:w-14 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg transition-all duration-300 hover:scale-110 hover:shadow-2xl focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 hover:bg-primary/90'\n \n // 根据位置添加定位类(响应式)\n const positionClasses = {\n 'bottom-right': 'bottom-4 right-4 sm:bottom-6 sm:right-6',\n 'bottom-left': 'bottom-4 left-4 sm:bottom-6 sm:left-6',\n 'top-right': 'top-4 right-4 sm:top-6 sm:right-6',\n 'top-left': 'top-4 left-4 sm:top-6 sm:left-6'\n }\n \n return `${baseClasses} ${positionClasses[position as keyof typeof positionClasses] || positionClasses['bottom-right']}`\n})\n\n// 事件处理\nconst handleClick = () => {\n props.onClick()\n}\n</script>\n\n\n","// 基础配置接口\nexport interface HeaderConfig {\n title?: string;\n className?: string;\n backgroundColor?: string;\n textColor?: string;\n showCloseButton?: boolean;\n draggable?: boolean;\n}\n\nexport interface AvatarConfig {\n ai?: string;\n user?: string;\n size?: number;\n borderRadius?: string;\n}\n\nexport interface ThemeConfig {\n mode?: 'auto' | 'dark' | 'light';\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n borderRadius?: string;\n shadow?: string;\n customCSS?: string;\n}\n\nexport interface MessageConfig {\n aiBackgroundColor?: string;\n userBackgroundColor?: string;\n aiTextColor?: string;\n userTextColor?: string;\n maxHeight?: string;\n showTimestamp?: boolean;\n markdownOptions?: MarkdownOptions;\n placeholder?: string;\n maxLength?: number;\n showAudioButton?: boolean;\n}\n\nexport interface CopyrightConfig {\n text?: string;\n link?: string;\n linkText?: string;\n className?: string;\n backgroundColor?: string;\n textColor?: string;\n}\n\nexport interface WelcomeConfig {\n enabled?: boolean;\n title?: string;\n subtitle?: string;\n backgroundColor?: string;\n textColor?: string;\n}\n\nexport interface QuestionsConfig {\n enabled?: boolean;\n items?: QuestionItem[];\n maxItems?: number;\n showCategories?: boolean;\n autoSuggest?: boolean;\n}\n\n\n\nexport interface MarkdownOptions {\n html?: boolean;\n linkify?: boolean;\n typographer?: boolean;\n breaks?: boolean;\n}\n\n// 消息相关接口\nexport interface ChatMessage {\n id: string;\n type: 'ai' | 'questions' | 'user' | 'welcome';\n content: string;\n timestamp: Date;\n status?: 'error' | 'sending' | 'sent' | 'streaming';\n error?: string;\n // 流式消息相关\n isStreaming?: boolean;\n streamContent?: string;\n // 问题相关\n questions?: QuestionItem[];\n // 欢迎语相关\n welcomeData?: WelcomeData;\n}\n\nexport interface QuestionItem {\n id: string;\n text: string;\n value?: string;\n category?: string;\n priority?: number;\n}\n\nexport interface WelcomeData {\n title: string;\n subtitle?: string;\n icon?: string;\n}\n\nexport interface ChatSession {\n id: string;\n messages: ChatMessage[];\n createdAt: Date;\n updatedAt: Date;\n}\n\n// API相关接口\nexport interface OpenAIConfig {\n apiKey: string;\n baseUrl?: string;\n organization?: string;\n timeout?: number;\n maxRetries?: number;\n enableStreaming?: boolean;\n}\n\nexport interface ChatRequest {\n messages: Array<{\n content: string;\n role: 'assistant' | 'system' | 'user';\n }>;\n model?: string;\n temperature?: number;\n maxTokens?: number;\n stream?: boolean;\n}\n\nexport interface ChatResponse {\n id: string;\n object: string;\n created: number;\n model: string;\n choices: Array<{\n finishReason: string;\n index: number;\n message: {\n content: string;\n role: string;\n };\n }>;\n usage: {\n completionTokens: number;\n promptTokens: number;\n totalTokens: number;\n };\n}\n\nexport interface StreamingChatResponse {\n id: string;\n object: string;\n created: number;\n model: string;\n choices: Array<{\n delta: {\n content?: string;\n role?: string;\n };\n finishReason?: string;\n index: number;\n }>;\n}\n\n// 后端API接口\nexport interface BackendAPI {\n getSuggestedQuestions: (context: string) => Promise<QuestionItem[]>;\n getWelcomeMessage: () => Promise<WelcomeData>;\n}\n\n// 主配置接口\nexport interface LangChatConfig {\n // API配置\n apiKey: string;\n modelName: string;\n baseUrl?: string;\n organization?: string;\n\n // UI配置\n header?: HeaderConfig;\n avatars?: AvatarConfig;\n theme?: ThemeConfig;\n messages?: MessageConfig;\n copyright?: CopyrightConfig;\n welcome?: WelcomeConfig;\n questions?: QuestionItem[];\n\n // 功能配置\n autoOpen?: boolean;\n position?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';\n zIndex?: number;\n enableMarkdown?: boolean;\n enableHistory?: boolean;\n maxHistoryItems?: number;\n enableStreaming?: boolean;\n enableAutoSuggestions?: boolean;\n\n // 后端API配置\n backendAPI?: BackendAPI;\n\n // 回调函数\n onMessageSent?: (message: ChatMessage) => void;\n onMessageReceived?: (message: ChatMessage) => void;\n onStreamingUpdate?: (messageId: string, content: string) => void;\n onError?: (error: Error) => void;\n onOpen?: () => void;\n onClose?: () => void;\n}\n\n// 实例接口\nexport interface LangChatInstance {\n // 基础方法\n init(): void;\n destroy(): void;\n open(): void;\n close(): void;\n toggle(): void;\n\n // 消息方法\n sendMessage(content: string): Promise<void>;\n clearHistory(): void;\n getHistory(): ChatMessage[];\n\n // 流式消息方法\n startStreaming(messageId: string): void;\n stopStreaming(messageId: string): void;\n\n // 问题建议方法\n getSuggestedQuestions(context?: string): Promise<QuestionItem[]>;\n\n // 配置方法\n updateConfig(config: Partial<LangChatConfig>): void;\n getConfig(): LangChatConfig;\n\n // 状态方法\n isOpen(): boolean;\n isLoading(): boolean;\n}\n\n// 事件类型\nexport type LangChatEvent =\n | 'close'\n | 'config-updated'\n | 'error'\n | 'init'\n | 'message-received'\n | 'message-sent'\n | 'open'\n | 'questions-updated'\n | 'streaming-update';\n\n// 工具类型\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport type RequiredFields<T, K extends keyof T> = Required<Pick<T, K>> & T;\n\n// 默认配置\nexport const DEFAULT_CONFIG: Required<LangChatConfig> = {\n apiKey: '',\n modelName: '',\n baseUrl: 'https://api.openai.com/v1',\n organization: '',\n\n header: {\n title: 'LangChat',\n className: '',\n backgroundColor: '#3b82f6',\n textColor: '#ffffff',\n showCloseButton: true,\n draggable: false,\n },\n\n avatars: {\n ai: '🤖',\n user: '👤',\n size: 32,\n borderRadius: '50%',\n },\n\n theme: {\n mode: 'light',\n primaryColor: '#3b82f6',\n backgroundColor: '#ffffff',\n textColor: '#1f2937',\n borderRadius: '1rem',\n shadow: '0 20px 25px -5px rgba(0, 0, 0, 0.1)',\n customCSS: '',\n },\n\n messages: {\n aiBackgroundColor: '#f3f4f6',\n userBackgroundColor: '#3b82f6',\n aiTextColor: '#1f2937',\n userTextColor: '#ffffff',\n maxHeight: '400px',\n showTimestamp: true,\n placeholder: '输入消息...',\n maxLength: 1000,\n showAudioButton: false,\n markdownOptions: {\n html: false,\n linkify: true,\n typographer: false,\n breaks: true,\n },\n },\n\n copyright: {\n text: 'Powered by LangChat',\n link: 'https://github.com/langchat/langchat-widget',\n linkText: 'GitHub',\n className: '',\n backgroundColor: '',\n textColor: '',\n },\n\n welcome: {\n enabled: true,\n title: '欢迎使用 LangChat!',\n subtitle: '开始您的对话吧',\n backgroundColor: '#f0f9ff',\n textColor: '#0369a1',\n },\n\n questions: [\n {\n id: '1',\n text: '如何使用这个聊天机器人?',\n value: '如何使用这个聊天机器人?',\n },\n {\n id: '2', \n text: '支持哪些功能?',\n value: '支持哪些功能?',\n },\n ],\n\n autoOpen: false,\n position: 'bottom-right',\n zIndex: 9999,\n enableMarkdown: true,\n enableHistory: true,\n maxHistoryItems: 100,\n enableStreaming: true,\n enableAutoSuggestions: false,\n\n backendAPI: {\n getSuggestedQuestions: async () => [],\n getWelcomeMessage: async () => ({\n title: '欢迎使用 LangChat!',\n subtitle: '开始您的对话吧',\n icon: '👋',\n }),\n },\n\n onMessageSent: () => {},\n onMessageReceived: () => {},\n onStreamingUpdate: () => {},\n onError: () => {},\n onOpen: () => {},\n onClose: () => {},\n};\n","export const default_format = 'RFC3986';\nexport const formatters = {\n RFC1738: (v) => String(v).replace(/%20/g, '+'),\n RFC3986: (v) => String(v),\n};\nexport const RFC1738 = 'RFC1738';\nexport const RFC3986 = 'RFC3986';\n//# sourceMappingURL=formats.mjs.map","import { RFC1738 } from \"./formats.mjs\";\nconst has = Object.prototype.hasOwnProperty;\nconst is_array = Array.isArray;\nconst hex_table = (() => {\n const array = [];\n for (let i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n return array;\n})();\nfunction compact_queue(queue) {\n while (queue.length > 1) {\n const item = queue.pop();\n if (!item)\n continue;\n const obj = item.obj[item.prop];\n if (is_array(obj)) {\n const compacted = [];\n for (let j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n // @ts-ignore\n item.obj[item.prop] = compacted;\n }\n }\n}\nfunction array_to_object(source, options) {\n const obj = options && options.plainObjects ? Object.create(null) : {};\n for (let i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n return obj;\n}\nexport function merge(target, source, options = {}) {\n if (!source) {\n return target;\n }\n if (typeof source !== 'object') {\n if (is_array(target)) {\n target.push(source);\n }\n else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) ||\n !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n }\n else {\n return [target, source];\n }\n return target;\n }\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n let mergeTarget = target;\n if (is_array(target) && !is_array(source)) {\n // @ts-ignore\n mergeTarget = array_to_object(target, options);\n }\n if (is_array(target) && is_array(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n const targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n }\n else {\n target.push(item);\n }\n }\n else {\n target[i] = item;\n }\n });\n return target;\n }\n return Object.keys(source).reduce(function (acc, key) {\n const value = source[key];\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n }\n else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n}\nexport function assign_single_source(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n}\nexport function decode(str, _, charset) {\n const strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n }\n catch (e) {\n return strWithoutPlus;\n }\n}\nconst limit = 1024;\nexport const encode = (str, _defaultEncoder, charset, _kind, format) => {\n // This code was originally written by Brian White for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n let string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n }\n else if (typeof str !== 'string') {\n string = String(str);\n }\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n let out = '';\n for (let j = 0; j < string.length; j += limit) {\n const segment = string.length >= limit ? string.slice(j, j + limit) : string;\n const arr = [];\n for (let i = 0; i < segment.length; ++i) {\n let c = segment.charCodeAt(i);\n if (c === 0x2d || // -\n c === 0x2e || // .\n c === 0x5f || // _\n c === 0x7e || // ~\n (c >= 0x30 && c <= 0x39) || // 0-9\n (c >= 0x41 && c <= 0x5a) || // a-z\n (c >= 0x61 && c <= 0x7a) || // A-Z\n (format === RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n arr[arr.length] = segment.charAt(i);\n continue;\n }\n if (c < 0x80) {\n arr[arr.length] = hex_table[c];\n continue;\n }\n if (c < 0x800) {\n arr[arr.length] = hex_table[0xc0 | (c >> 6)] + hex_table[0x80 | (c & 0x3f)];\n continue;\n }\n if (c < 0xd800 || c >= 0xe000) {\n arr[arr.length] =\n hex_table[0xe0 | (c >> 12)] + hex_table[0x80 | ((c >> 6) & 0x3f)] + hex_table[0x80 | (c & 0x3f)];\n continue;\n }\n i += 1;\n c = 0x10000 + (((c & 0x3ff) << 10) | (segment.charCodeAt(i) & 0x3ff));\n arr[arr.length] =\n hex_table[0xf0 | (c >> 18)] +\n hex_table[0x80 | ((c >> 12) & 0x3f)] +\n hex_table[0x80 | ((c >> 6) & 0x3f)] +\n hex_table[0x80 | (c & 0x3f)];\n }\n out += arr.join('');\n }\n return out;\n};\nexport function compact(value) {\n const queue = [{ obj: { o: value }, prop: 'o' }];\n const refs = [];\n for (let i = 0; i < queue.length; ++i) {\n const item = queue[i];\n // @ts-ignore\n const obj = item.obj[item.prop];\n const keys = Object.keys(obj);\n for (let j = 0; j < keys.length; ++j) {\n const key = keys[j];\n const val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n compact_queue(queue);\n return value;\n}\nexport function is_regexp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\nexport function is_buffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n}\nexport function combine(a, b) {\n return [].concat(a, b);\n}\nexport function maybe_map(val, fn) {\n if (is_array(val)) {\n const mapped = [];\n for (let i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n}\n//# sourceMappingURL=utils.mjs.map","import { encode, is_buffer, maybe_map } from \"./utils.mjs\";\nimport { default_format, formatters } from \"./formats.mjs\";\nconst has = Object.prototype.hasOwnProperty;\nconst array_prefix_generators = {\n brackets(prefix) {\n return String(prefix) + '[]';\n },\n comma: 'comma',\n indices(prefix, key) {\n return String(prefix) + '[' + key + ']';\n },\n repeat(prefix) {\n return String(prefix);\n },\n};\nconst is_array = Array.isArray;\nconst push = Array.prototype.push;\nconst push_to_array = function (arr, value_or_array) {\n push.apply(arr, is_array(value_or_array) ? value_or_array : [value_or_array]);\n};\nconst to_ISO = Date.prototype.toISOString;\nconst defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: encode,\n encodeValuesOnly: false,\n format: default_format,\n formatter: formatters[default_format],\n /** @deprecated */\n indices: false,\n serializeDate(date) {\n return to_ISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false,\n};\nfunction is_non_nullish_primitive(v) {\n return (typeof v === 'string' ||\n typeof v === 'number' ||\n typeof v === 'boolean' ||\n typeof v === 'symbol' ||\n typeof v === 'bigint');\n}\nconst sentinel = {};\nfunction inner_stringify(object, prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel) {\n let obj = object;\n let tmp_sc = sideChannel;\n let step = 0;\n let find_flag = false;\n while ((tmp_sc = tmp_sc.get(sentinel)) !== void undefined && !find_flag) {\n // Where object last appeared in the ref tree\n const pos = tmp_sc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n }\n else {\n find_flag = true; // Break while\n }\n }\n if (typeof tmp_sc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n }\n else if (obj instanceof Date) {\n obj = serializeDate?.(obj);\n }\n else if (generateArrayPrefix === 'comma' && is_array(obj)) {\n obj = maybe_map(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate?.(value);\n }\n return value;\n });\n }\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ?\n // @ts-expect-error\n encoder(prefix, defaults.encoder, charset, 'key', format)\n : prefix;\n }\n obj = '';\n }\n if (is_non_nullish_primitive(obj) || is_buffer(obj)) {\n if (encoder) {\n const key_value = encodeValuesOnly ? prefix\n // @ts-expect-error\n : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [\n formatter?.(key_value) +\n '=' +\n // @ts-expect-error\n formatter?.(encoder(obj, defaults.encoder, charset, 'value', format)),\n ];\n }\n return [formatter?.(prefix) + '=' + formatter?.(String(obj))];\n }\n const values = [];\n if (typeof obj === 'undefined') {\n return values;\n }\n let obj_keys;\n if (generateArrayPrefix === 'comma' && is_array(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n // @ts-expect-error values only\n obj = maybe_map(obj, encoder);\n }\n obj_keys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n }\n else if (is_array(filter)) {\n obj_keys = filter;\n }\n else {\n const keys = Object.keys(obj);\n obj_keys = sort ? keys.sort(sort) : keys;\n }\n const encoded_prefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n const adjusted_prefix = commaRoundTrip && is_array(obj) && obj.length === 1 ? encoded_prefix + '[]' : encoded_prefix;\n if (allowEmptyArrays && is_array(obj) && obj.length === 0) {\n return adjusted_prefix + '[]';\n }\n for (let j = 0; j < obj_keys.length; ++j) {\n const key = obj_keys[j];\n const value = \n // @ts-ignore\n typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n if (skipNulls && value === null) {\n continue;\n }\n // @ts-ignore\n const encoded_key = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n const key_prefix = is_array(obj) ?\n typeof generateArrayPrefix === 'function' ?\n generateArrayPrefix(adjusted_prefix, encoded_key)\n : adjusted_prefix\n : adjusted_prefix + (allowDots ? '.' + encoded_key : '[' + encoded_key + ']');\n sideChannel.set(object, step);\n const valueSideChannel = new WeakMap();\n valueSideChannel.set(sentinel, sideChannel);\n push_to_array(values, inner_stringify(value, key_prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, \n // @ts-ignore\n generateArrayPrefix === 'comma' && encodeValuesOnly && is_array(obj) ? null : encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, valueSideChannel));\n }\n return values;\n}\nfunction normalize_stringify_options(opts = defaults) {\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n const charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n let format = default_format;\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n const formatter = formatters[format];\n let filter = defaults.filter;\n if (typeof opts.filter === 'function' || is_array(opts.filter)) {\n filter = opts.filter;\n }\n let arrayFormat;\n if (opts.arrayFormat && opts.arrayFormat in array_prefix_generators) {\n arrayFormat = opts.arrayFormat;\n }\n else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n }\n else {\n arrayFormat = defaults.arrayFormat;\n }\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n const allowDots = typeof opts.allowDots === 'undefined' ?\n !!opts.encodeDotInKeys === true ?\n true\n : defaults.allowDots\n : !!opts.allowDots;\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n // @ts-ignore\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: !!opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n // @ts-ignore\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n };\n}\nexport function stringify(object, opts = {}) {\n let obj = object;\n const options = normalize_stringify_options(opts);\n let obj_keys;\n let filter;\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n }\n else if (is_array(options.filter)) {\n filter = options.filter;\n obj_keys = filter;\n }\n const keys = [];\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n const generateArrayPrefix = array_prefix_generators[options.arrayFormat];\n const commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n if (!obj_keys) {\n obj_keys = Object.keys(obj);\n }\n if (options.sort) {\n obj_keys.sort(options.sort);\n }\n const sideChannel = new WeakMap();\n for (let i = 0; i < obj_keys.length; ++i) {\n const key = obj_keys[i];\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n push_to_array(keys, inner_stringify(obj[key], key, \n // @ts-expect-error\n generateArrayPrefix, commaRoundTrip, options.allowEmptyArrays, options.strictNullHandling, options.skipNulls, options.encodeDotInKeys, options.encode ? options.encoder : null, options.filter, options.sort, options.allowDots, options.serializeDate, options.format, options.formatter, options.encodeValuesOnly, options.charset, sideChannel));\n }\n const joined = keys.join(options.delimiter);\n let prefix = options.addQueryPrefix === true ? '?' : '';\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n }\n else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n return joined.length > 0 ? prefix + joined : '';\n}\n//# sourceMappingURL=stringify.mjs.map","export const VERSION = '4.104.0'; // x-release-please-version\n//# sourceMappingURL=version.mjs.map","export let auto = false;\nexport let kind = undefined;\nexport let fetch = undefined;\nexport let Request = undefined;\nexport let Response = undefined;\nexport let Headers = undefined;\nexport let FormData = undefined;\nexport let Blob = undefined;\nexport let File = undefined;\nexport let ReadableStream = undefined;\nexport let getMultipartRequestOptions = undefined;\nexport let getDefaultAgent = undefined;\nexport let fileFromPath = undefined;\nexport let isFsReadStream = undefined;\nexport function setShims(shims, options = { auto: false }) {\n if (auto) {\n throw new Error(`you must \\`import 'openai/shims/${shims.kind}'\\` before importing anything else from openai`);\n }\n if (kind) {\n throw new Error(`can't \\`import 'openai/shims/${shims.kind}'\\` after \\`import 'openai/shims/${kind}'\\``);\n }\n auto = options.auto;\n kind = shims.kind;\n fetch = shims.fetch;\n Request = shims.Request;\n Response = shims.Response;\n Headers = shims.Headers;\n FormData = shims.FormData;\n Blob = shims.Blob;\n File = shims.File;\n ReadableStream = shims.ReadableStream;\n getMultipartRequestOptions = shims.getMultipartRequestOptions;\n getDefaultAgent = shims.getDefaultAgent;\n fileFromPath = shims.fileFromPath;\n isFsReadStream = shims.isFsReadStream;\n}\n//# sourceMappingURL=registry.mjs.map","/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nexport class MultipartBody {\n constructor(body) {\n this.body = body;\n }\n get [Symbol.toStringTag]() {\n return 'MultipartBody';\n }\n}\n//# sourceMappingURL=MultipartBody.mjs.map","import { MultipartBody } from \"./MultipartBody.mjs\";\nexport function getRuntime({ manuallyImported } = {}) {\n const recommendation = manuallyImported ?\n `You may need to use polyfills`\n : `Add one of these imports before your first \\`import … from 'openai'\\`:\n- \\`import 'openai/shims/node'\\` (if you're running on Node)\n- \\`import 'openai/shims/web'\\` (otherwise)\n`;\n let _fetch, _Request, _Response, _Headers;\n try {\n // @ts-ignore\n _fetch = fetch;\n // @ts-ignore\n _Request = Request;\n // @ts-ignore\n _Response = Response;\n // @ts-ignore\n _Headers = Headers;\n }\n catch (error) {\n throw new Error(`this environment is missing the following Web Fetch API type: ${error.message}. ${recommendation}`);\n }\n return {\n kind: 'web',\n fetch: _fetch,\n Request: _Request,\n Response: _Response,\n Headers: _Headers,\n FormData: \n // @ts-ignore\n typeof FormData !== 'undefined' ? FormData : (class FormData {\n // @ts-ignore\n constructor() {\n throw new Error(`file uploads aren't supported in this environment yet as 'FormData' is undefined. ${recommendation}`);\n }\n }),\n Blob: typeof Blob !== 'undefined' ? Blob : (class Blob {\n constructor() {\n throw new Error(`file uploads aren't supported in this environment yet as 'Blob' is undefined. ${recommendation}`);\n }\n }),\n File: \n // @ts-ignore\n typeof File !== 'undefined' ? File : (class File {\n // @ts-ignore\n constructor() {\n throw new Error(`file uploads aren't supported in this environment yet as 'File' is undefined. ${recommendation}`);\n }\n }),\n ReadableStream: \n // @ts-ignore\n typeof ReadableStream !== 'undefined' ? ReadableStream : (class ReadableStream {\n // @ts-ignore\n constructor() {\n throw new Error(`streaming isn't supported in this environment yet as 'ReadableStream' is undefined. ${recommendation}`);\n }\n }),\n getMultipartRequestOptions: async (\n // @ts-ignore\n form, opts) => ({\n ...opts,\n body: new MultipartBody(form),\n }),\n getDefaultAgent: (url) => undefined,\n fileFromPath: () => {\n throw new Error('The `fileFromPath` function is only supported in Node. See the README for more details: https://www.github.com/openai/openai-node#file-uploads');\n },\n isFsReadStream: (value) => false,\n };\n}\n//# sourceMappingURL=web-runtime.mjs.map","/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nimport * as shims from './registry.mjs';\nimport * as auto from 'openai/_shims/auto/runtime';\nexport const init = () => {\n if (!shims.kind) shims.setShims(auto.getRuntime(), { auto: true });\n};\nexport * from './registry.mjs';\n\ninit();\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { castToError } from \"./core.mjs\";\nexport class OpenAIError extends Error {\n}\nexport class APIError extends OpenAIError {\n constructor(status, error, message, headers) {\n super(`${APIError.makeMessage(status, error, message)}`);\n this.status = status;\n this.headers = headers;\n this.request_id = headers?.['x-request-id'];\n this.error = error;\n const data = error;\n this.code = data?.['code'];\n this.param = data?.['param'];\n this.type = data?.['type'];\n }\n static makeMessage(status, error, message) {\n const msg = error?.message ?\n typeof error.message === 'string' ?\n error.message\n : JSON.stringify(error.message)\n : error ? JSON.stringify(error)\n : message;\n if (status && msg) {\n return `${status} ${msg}`;\n }\n if (status) {\n return `${status} status code (no body)`;\n }\n if (msg) {\n return msg;\n }\n return '(no status code or body)';\n }\n static generate(status, errorResponse, message, headers) {\n if (!status || !headers) {\n return new APIConnectionError({ message, cause: castToError(errorResponse) });\n }\n const error = errorResponse?.['error'];\n if (status === 400) {\n return new BadRequestError(status, error, message, headers);\n }\n if (status === 401) {\n return new AuthenticationError(status, error, message, headers);\n }\n if (status === 403) {\n return new PermissionDeniedError(status, error, message, headers);\n }\n if (status === 404) {\n return new NotFoundError(status, error, message, headers);\n }\n if (status === 409) {\n return new ConflictError(status, error, message, headers);\n }\n if (status === 422) {\n return new UnprocessableEntityError(status, error, message, headers);\n }\n if (status === 429) {\n return new RateLimitError(status, error, message, headers);\n }\n if (status >= 500) {\n return new InternalServerError(status, error, message, headers);\n }\n return new APIError(status, error, message, headers);\n }\n}\nexport class APIUserAbortError extends APIError {\n constructor({ message } = {}) {\n super(undefined, undefined, message || 'Request was aborted.', undefined);\n }\n}\nexport class APIConnectionError extends APIError {\n constructor({ message, cause }) {\n super(undefined, undefined, message || 'Connection error.', undefined);\n // in some environments the 'cause' property is already declared\n // @ts-ignore\n if (cause)\n this.cause = cause;\n }\n}\nexport class APIConnectionTimeoutError extends APIConnectionError {\n constructor({ message } = {}) {\n super({ message: message ?? 'Request timed out.' });\n }\n}\nexport class BadRequestError extends APIError {\n}\nexport class AuthenticationError extends APIError {\n}\nexport class PermissionDeniedError extends APIError {\n}\nexport class NotFoundError extends APIError {\n}\nexport class ConflictError extends APIError {\n}\nexport class UnprocessableEntityError extends APIError {\n}\nexport class RateLimitError extends APIError {\n}\nexport class InternalServerError extends APIError {\n}\nexport class LengthFinishReasonError extends OpenAIError {\n constructor() {\n super(`Could not parse response content as the length limit was reached`);\n }\n}\nexport class ContentFilterFinishReasonError extends OpenAIError {\n constructor() {\n super(`Could not parse response content as the request was rejected by the content filter`);\n }\n}\n//# sourceMappingURL=error.mjs.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _LineDecoder_carriageReturnIndex;\nimport { OpenAIError } from \"../../error.mjs\";\n/**\n * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally\n * reading lines from text.\n *\n * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258\n */\nexport class LineDecoder {\n constructor() {\n _LineDecoder_carriageReturnIndex.set(this, void 0);\n this.buffer = new Uint8Array();\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n }\n decode(chunk) {\n if (chunk == null) {\n return [];\n }\n const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n : typeof chunk === 'string' ? new TextEncoder().encode(chunk)\n : chunk;\n let newData = new Uint8Array(this.buffer.length + binaryChunk.length);\n newData.set(this.buffer);\n newData.set(binaryChunk, this.buffer.length);\n this.buffer = newData;\n const lines = [];\n let patternIndex;\n while ((patternIndex = findNewlineIndex(this.buffer, __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\"))) != null) {\n if (patternIndex.carriage && __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") == null) {\n // skip until we either get a corresponding `\\n`, a new `\\r` or nothing\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, patternIndex.index, \"f\");\n continue;\n }\n // we got double \\r or \\rtext\\n\n if (__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") != null &&\n (patternIndex.index !== __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") + 1 || patternIndex.carriage)) {\n lines.push(this.decodeText(this.buffer.slice(0, __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") - 1)));\n this.buffer = this.buffer.slice(__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\"));\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n continue;\n }\n const endIndex = __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") !== null ? patternIndex.preceding - 1 : patternIndex.preceding;\n const line = this.decodeText(this.buffer.slice(0, endIndex));\n lines.push(line);\n this.buffer = this.buffer.slice(patternIndex.index);\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n }\n return lines;\n }\n decodeText(bytes) {\n if (bytes == null)\n return '';\n if (typeof bytes === 'string')\n return bytes;\n // Node:\n if (typeof Buffer !== 'undefined') {\n if (bytes instanceof Buffer) {\n return bytes.toString();\n }\n if (bytes instanceof Uint8Array) {\n return Buffer.from(bytes).toString();\n }\n throw new OpenAIError(`Unexpected: received non-Uint8Array (${bytes.constructor.name}) stream chunk in an environment with a global \"Buffer\" defined, which this library assumes to be Node. Please report this error.`);\n }\n // Browser\n if (typeof TextDecoder !== 'undefined') {\n if (bytes instanceof Uint8Array || bytes instanceof ArrayBuffer) {\n this.textDecoder ?? (this.textDecoder = new TextDecoder('utf8'));\n return this.textDecoder.decode(bytes);\n }\n throw new OpenAIError(`Unexpected: received non-Uint8Array/ArrayBuffer (${bytes.constructor.name}) in a web platform. Please report this error.`);\n }\n throw new OpenAIError(`Unexpected: neither Buffer nor TextDecoder are available as globals. Please report this error.`);\n }\n flush() {\n if (!this.buffer.length) {\n return [];\n }\n return this.decode('\\n');\n }\n}\n_LineDecoder_carriageReturnIndex = new WeakMap();\n// prettier-ignore\nLineDecoder.NEWLINE_CHARS = new Set(['\\n', '\\r']);\nLineDecoder.NEWLINE_REGEXP = /\\r\\n|[\\n\\r]/g;\n/**\n * This function searches the buffer for the end patterns, (\\r or \\n)\n * and returns an object with the index preceding the matched newline and the\n * index after the newline char. `null` is returned if no new line is found.\n *\n * ```ts\n * findNewLineIndex('abc\\ndef') -> { preceding: 2, index: 3 }\n * ```\n */\nfunction findNewlineIndex(buffer, startIndex) {\n const newline = 0x0a; // \\n\n const carriage = 0x0d; // \\r\n for (let i = startIndex ?? 0; i < buffer.length; i++) {\n if (buffer[i] === newline) {\n return { preceding: i, index: i + 1, carriage: false };\n }\n if (buffer[i] === carriage) {\n return { preceding: i, index: i + 1, carriage: true };\n }\n }\n return null;\n}\nexport function findDoubleNewlineIndex(buffer) {\n // This function searches the buffer for the end patterns (\\r\\r, \\n\\n, \\r\\n\\r\\n)\n // and returns the index right after the first occurrence of any pattern,\n // or -1 if none of the patterns are found.\n const newline = 0x0a; // \\n\n const carriage = 0x0d; // \\r\n for (let i = 0; i < buffer.length - 1; i++) {\n if (buffer[i] === newline && buffer[i + 1] === newline) {\n // \\n\\n\n return i + 2;\n }\n if (buffer[i] === carriage && buffer[i + 1] === carriage) {\n // \\r\\r\n return i + 2;\n }\n if (buffer[i] === carriage &&\n buffer[i + 1] === newline &&\n i + 3 < buffer.length &&\n buffer[i + 2] === carriage &&\n buffer[i + 3] === newline) {\n // \\r\\n\\r\\n\n return i + 4;\n }\n }\n return -1;\n}\n//# sourceMappingURL=line.mjs.map","/**\n * Most browsers don't yet have async iterable support for ReadableStream,\n * and Node has a very different way of reading bytes from its \"ReadableStream\".\n *\n * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport function ReadableStreamToAsyncIterable(stream) {\n if (stream[Symbol.asyncIterator])\n return stream;\n const reader = stream.getReader();\n return {\n async next() {\n try {\n const result = await reader.read();\n if (result?.done)\n reader.releaseLock(); // release lock when stream becomes closed\n return result;\n }\n catch (e) {\n reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n },\n async return() {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n return { done: true, value: undefined };\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n//# sourceMappingURL=stream-utils.mjs.map","import { ReadableStream } from \"./_shims/index.mjs\";\nimport { OpenAIError } from \"./error.mjs\";\nimport { findDoubleNewlineIndex, LineDecoder } from \"./internal/decoders/line.mjs\";\nimport { ReadableStreamToAsyncIterable } from \"./internal/stream-utils.mjs\";\nimport { createResponseHeaders } from \"./core.mjs\";\nimport { APIError } from \"./error.mjs\";\nexport class Stream {\n constructor(iterator, controller) {\n this.iterator = iterator;\n this.controller = controller;\n }\n static fromSSEResponse(response, controller) {\n let consumed = false;\n async function* iterator() {\n if (consumed) {\n throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const sse of _iterSSEMessages(response, controller)) {\n if (done)\n continue;\n if (sse.data.startsWith('[DONE]')) {\n done = true;\n continue;\n }\n if (sse.event === null ||\n sse.event.startsWith('response.') ||\n sse.event.startsWith('transcript.')) {\n let data;\n try {\n data = JSON.parse(sse.data);\n }\n catch (e) {\n console.error(`Could not parse message into JSON:`, sse.data);\n console.error(`From chunk:`, sse.raw);\n throw e;\n }\n if (data && data.error) {\n throw new APIError(undefined, data.error, undefined, createResponseHeaders(response.headers));\n }\n yield data;\n }\n else {\n let data;\n try {\n data = JSON.parse(sse.data);\n }\n catch (e) {\n console.error(`Could not parse message into JSON:`, sse.data);\n console.error(`From chunk:`, sse.raw);\n throw e;\n }\n // TODO: Is this where the error should be thrown?\n if (sse.event == 'error') {\n throw new APIError(undefined, data.error, data.message, undefined);\n }\n yield { event: sse.event, data: data };\n }\n }\n done = true;\n }\n catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (e instanceof Error && e.name === 'AbortError')\n return;\n throw e;\n }\n finally {\n // If the user `break`s, abort the ongoing request.\n if (!done)\n controller.abort();\n }\n }\n return new Stream(iterator, controller);\n }\n /**\n * Generates a Stream from a newline-separated ReadableStream\n * where each item is a JSON value.\n */\n static fromReadableStream(readableStream, controller) {\n let consumed = false;\n async function* iterLines() {\n const lineDecoder = new LineDecoder();\n const iter = ReadableStreamToAsyncIterable(readableStream);\n for await (const chunk of iter) {\n for (const line of lineDecoder.decode(chunk)) {\n yield line;\n }\n }\n for (const line of lineDecoder.flush()) {\n yield line;\n }\n }\n async function* iterator() {\n if (consumed) {\n throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const line of iterLines()) {\n if (done)\n continue;\n if (line)\n yield JSON.parse(line);\n }\n done = true;\n }\n catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (e instanceof Error && e.name === 'AbortError')\n return;\n throw e;\n }\n finally {\n // If the user `break`s, abort the ongoing request.\n if (!done)\n controller.abort();\n }\n }\n return new Stream(iterator, controller);\n }\n [Symbol.asyncIterator]() {\n return this.iterator();\n }\n /**\n * Splits the stream into two streams which can be\n * independently read from at different speeds.\n */\n tee() {\n const left = [];\n const right = [];\n const iterator = this.iterator();\n const teeIterator = (queue) => {\n return {\n next: () => {\n if (queue.length === 0) {\n const result = iterator.next();\n left.push(result);\n right.push(result);\n }\n return queue.shift();\n },\n };\n };\n return [\n new Stream(() => teeIterator(left), this.controller),\n new Stream(() => teeIterator(right), this.controller),\n ];\n }\n /**\n * Converts this stream to a newline-separated ReadableStream of\n * JSON stringified values in the stream\n * which can be turned back into a Stream with `Stream.fromReadableStream()`.\n */\n toReadableStream() {\n const self = this;\n let iter;\n const encoder = new TextEncoder();\n return new ReadableStream({\n async start() {\n iter = self[Symbol.asyncIterator]();\n },\n async pull(ctrl) {\n try {\n const { value, done } = await iter.next();\n if (done)\n return ctrl.close();\n const bytes = encoder.encode(JSON.stringify(value) + '\\n');\n ctrl.enqueue(bytes);\n }\n catch (err) {\n ctrl.error(err);\n }\n },\n async cancel() {\n await iter.return?.();\n },\n });\n }\n}\nexport async function* _iterSSEMessages(response, controller) {\n if (!response.body) {\n controller.abort();\n throw new OpenAIError(`Attempted to iterate over a response with no body`);\n }\n const sseDecoder = new SSEDecoder();\n const lineDecoder = new LineDecoder();\n const iter = ReadableStreamToAsyncIterable(response.body);\n for await (const sseChunk of iterSSEChunks(iter)) {\n for (const line of lineDecoder.decode(sseChunk)) {\n const sse = sseDecoder.decode(line);\n if (sse)\n yield sse;\n }\n }\n for (const line of lineDecoder.flush()) {\n const sse = sseDecoder.decode(line);\n if (sse)\n yield sse;\n }\n}\n/**\n * Given an async iterable iterator, iterates over it and yields full\n * SSE chunks, i.e. yields when a double new-line is encountered.\n */\nasync function* iterSSEChunks(iterator) {\n let data = new Uint8Array();\n for await (const chunk of iterator) {\n if (chunk == null) {\n continue;\n }\n const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n : typeof chunk === 'string' ? new TextEncoder().encode(chunk)\n : chunk;\n let newData = new Uint8Array(data.length + binaryChunk.length);\n newData.set(data);\n newData.set(binaryChunk, data.length);\n data = newData;\n let patternIndex;\n while ((patternIndex = findDoubleNewlineIndex(data)) !== -1) {\n yield data.slice(0, patternIndex);\n data = data.slice(patternIndex);\n }\n }\n if (data.length > 0) {\n yield data;\n }\n}\nclass SSEDecoder {\n constructor() {\n this.event = null;\n this.data = [];\n this.chunks = [];\n }\n decode(line) {\n if (line.endsWith('\\r')) {\n line = line.substring(0, line.length - 1);\n }\n if (!line) {\n // empty line and we didn't previously encounter any messages\n if (!this.event && !this.data.length)\n return null;\n const sse = {\n event: this.event,\n data: this.data.join('\\n'),\n raw: this.chunks,\n };\n this.event = null;\n this.data = [];\n this.chunks = [];\n return sse;\n }\n this.chunks.push(line);\n if (line.startsWith(':')) {\n return null;\n }\n let [fieldname, _, value] = partition(line, ':');\n if (value.startsWith(' ')) {\n value = value.substring(1);\n }\n if (fieldname === 'event') {\n this.event = value;\n }\n else if (fieldname === 'data') {\n this.data.push(value);\n }\n return null;\n }\n}\nfunction partition(str, delimiter) {\n const index = str.indexOf(delimiter);\n if (index !== -1) {\n return [str.substring(0, index), delimiter, str.substring(index + delimiter.length)];\n }\n return [str, '', ''];\n}\n//# sourceMappingURL=streaming.mjs.map","import { FormData, File, getMultipartRequestOptions, isFsReadStream, } from \"./_shims/index.mjs\";\nexport { fileFromPath } from \"./_shims/index.mjs\";\nexport const isResponseLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.url === 'string' &&\n typeof value.blob === 'function';\nexport const isFileLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.name === 'string' &&\n typeof value.lastModified === 'number' &&\n isBlobLike(value);\n/**\n * The BlobLike type omits arrayBuffer() because @types/node-fetch@^2.6.4 lacks it; but this check\n * adds the arrayBuffer() method type because it is available and used at runtime\n */\nexport const isBlobLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.size === 'number' &&\n typeof value.type === 'string' &&\n typeof value.text === 'function' &&\n typeof value.slice === 'function' &&\n typeof value.arrayBuffer === 'function';\nexport const isUploadable = (value) => {\n return isFileLike(value) || isResponseLike(value) || isFsReadStream(value);\n};\n/**\n * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats\n * @param value the raw content of the file. Can be an {@link Uploadable}, {@link BlobLikePart}, or {@link AsyncIterable} of {@link BlobLikePart}s\n * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible\n * @param {Object=} options additional properties\n * @param {string=} options.type the MIME type of the content\n * @param {number=} options.lastModified the last modified timestamp\n * @returns a {@link File} with the given properties\n */\nexport async function toFile(value, name, options) {\n // If it's a promise, resolve it.\n value = await value;\n // If we've been given a `File` we don't need to do anything\n if (isFileLike(value)) {\n return value;\n }\n if (isResponseLike(value)) {\n const blob = await value.blob();\n name || (name = new URL(value.url).pathname.split(/[\\\\/]/).pop() ?? 'unknown_file');\n // we need to convert the `Blob` into an array buffer because the `Blob` class\n // that `node-fetch` defines is incompatible with the web standard which results\n // in `new File` interpreting it as a string instead of binary data.\n const data = isBlobLike(blob) ? [(await blob.arrayBuffer())] : [blob];\n return new File(data, name, options);\n }\n const bits = await getBytes(value);\n name || (name = getName(value) ?? 'unknown_file');\n if (!options?.type) {\n const type = bits[0]?.type;\n if (typeof type === 'string') {\n options = { ...options, type };\n }\n }\n return new File(bits, name, options);\n}\nasync function getBytes(value) {\n let parts = [];\n if (typeof value === 'string' ||\n ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.\n value instanceof ArrayBuffer) {\n parts.push(value);\n }\n else if (isBlobLike(value)) {\n parts.push(await value.arrayBuffer());\n }\n else if (isAsyncIterableIterator(value) // includes Readable, ReadableStream, etc.\n ) {\n for await (const chunk of value) {\n parts.push(chunk); // TODO, consider validating?\n }\n }\n else {\n throw new Error(`Unexpected data type: ${typeof value}; constructor: ${value?.constructor\n ?.name}; props: ${propsForError(value)}`);\n }\n return parts;\n}\nfunction propsForError(value) {\n const props = Object.getOwnPropertyNames(value);\n return `[${props.map((p) => `\"${p}\"`).join(', ')}]`;\n}\nfunction getName(value) {\n return (getStringFromMaybeBuffer(value.name) ||\n getStringFromMaybeBuffer(value.filename) ||\n // For fs.ReadStream\n getStringFromMaybeBuffer(value.path)?.split(/[\\\\/]/).pop());\n}\nconst getStringFromMaybeBuffer = (x) => {\n if (typeof x === 'string')\n return x;\n if (typeof Buffer !== 'undefined' && x instanceof Buffer)\n return String(x);\n return undefined;\n};\nconst isAsyncIterableIterator = (value) => value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';\nexport const isMultipartBody = (body) => body && typeof body === 'object' && body.body && body[Symbol.toStringTag] === 'MultipartBody';\n/**\n * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.\n * Otherwise returns the request as is.\n */\nexport const maybeMultipartFormRequestOptions = async (opts) => {\n if (!hasUploadableValue(opts.body))\n return opts;\n const form = await createForm(opts.body);\n return getMultipartRequestOptions(form, opts);\n};\nexport const multipartFormRequestOptions = async (opts) => {\n const form = await createForm(opts.body);\n return getMultipartRequestOptions(form, opts);\n};\nexport const createForm = async (body) => {\n const form = new FormData();\n await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));\n return form;\n};\nconst hasUploadableValue = (value) => {\n if (isUploadable(value))\n return true;\n if (Array.isArray(value))\n return value.some(hasUploadableValue);\n if (value && typeof value === 'object') {\n for (const k in value) {\n if (hasUploadableValue(value[k]))\n return true;\n }\n }\n return false;\n};\nconst addFormValue = async (form, key, value) => {\n if (value === undefined)\n return;\n if (value == null) {\n throw new TypeError(`Received null for \"${key}\"; to pass null in FormData, you must use the string 'null'`);\n }\n // TODO: make nested formats configurable\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n form.append(key, String(value));\n }\n else if (isUploadable(value)) {\n const file = await toFile(value);\n form.append(key, file);\n }\n else if (Array.isArray(value)) {\n await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry)));\n }\n else if (typeof value === 'object') {\n await Promise.all(Object.entries(value).map(([name, prop]) => addFormValue(form, `${key}[${name}]`, prop)));\n }\n else {\n throw new TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`);\n }\n};\n//# sourceMappingURL=uploads.mjs.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractPage_client;\nimport { VERSION } from \"./version.mjs\";\nimport { Stream } from \"./streaming.mjs\";\nimport { OpenAIError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, } from \"./error.mjs\";\nimport { kind as shimsKind, getDefaultAgent, fetch, init, } from \"./_shims/index.mjs\";\n// try running side effects outside of _shims/index to workaround https://github.com/vercel/next.js/issues/76881\ninit();\nimport { isBlobLike, isMultipartBody } from \"./uploads.mjs\";\nexport { maybeMultipartFormRequestOptions, multipartFormRequestOptions, createForm, } from \"./uploads.mjs\";\nasync function defaultParseResponse(props) {\n const { response } = props;\n if (props.options.stream) {\n debug('response', response.status, response.url, response.headers, response.body);\n // Note: there is an invariant here that isn't represented in the type system\n // that if you set `stream: true` the response type must also be `Stream<T>`\n if (props.options.__streamClass) {\n return props.options.__streamClass.fromSSEResponse(response, props.controller);\n }\n return Stream.fromSSEResponse(response, props.controller);\n }\n // fetch refuses to read the body when the status code is 204.\n if (response.status === 204) {\n return null;\n }\n if (props.options.__binaryResponse) {\n return response;\n }\n const contentType = response.headers.get('content-type');\n const mediaType = contentType?.split(';')[0]?.trim();\n const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');\n if (isJSON) {\n const json = await response.json();\n debug('response', response.status, response.url, response.headers, json);\n return _addRequestID(json, response);\n }\n const text = await response.text();\n debug('response', response.status, response.url, response.headers, text);\n // TODO handle blob, arraybuffer, other content types, etc.\n return text;\n}\nfunction _addRequestID(value, response) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return value;\n }\n return Object.defineProperty(value, '_request_id', {\n value: response.headers.get('x-request-id'),\n enumerable: false,\n });\n}\n/**\n * A subclass of `Promise` providing additional helper methods\n * for interacting with the SDK.\n */\nexport class APIPromise extends Promise {\n constructor(responsePromise, parseResponse = defaultParseResponse) {\n super((resolve) => {\n // this is maybe a bit weird but this has to be a no-op to not implicitly\n // parse the response body; instead .then, .catch, .finally are overridden\n // to parse the response\n resolve(null);\n });\n this.responsePromise = responsePromise;\n this.parseResponse = parseResponse;\n }\n _thenUnwrap(transform) {\n return new APIPromise(this.responsePromise, async (props) => _addRequestID(transform(await this.parseResponse(props), props), props.response));\n }\n /**\n * Gets the raw `Response` instance instead of parsing the response\n * data.\n *\n * If you want to parse the response body but still get the `Response`\n * instance, you can use {@link withResponse()}.\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` if you can,\n * or add one of these imports before your first `import … from 'openai'`:\n * - `import 'openai/shims/node'` (if you're running on Node)\n * - `import 'openai/shims/web'` (otherwise)\n */\n asResponse() {\n return this.responsePromise.then((p) => p.response);\n }\n /**\n * Gets the parsed response data, the raw `Response` instance and the ID of the request,\n * returned via the X-Request-ID header which is useful for debugging requests and reporting\n * issues to OpenAI.\n *\n * If you just want to get the raw `Response` instance without parsing it,\n * you can use {@link asResponse()}.\n *\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` if you can,\n * or add one of these imports before your first `import … from 'openai'`:\n * - `import 'openai/shims/node'` (if you're running on Node)\n * - `import 'openai/shims/web'` (otherwise)\n */\n async withResponse() {\n const [data, response] = await Promise.all([this.parse(), this.asResponse()]);\n return { data, response, request_id: response.headers.get('x-request-id') };\n }\n parse() {\n if (!this.parsedPromise) {\n this.parsedPromise = this.responsePromise.then(this.parseResponse);\n }\n return this.parsedPromise;\n }\n then(onfulfilled, onrejected) {\n return this.parse().then(onfulfilled, onrejected);\n }\n catch(onrejected) {\n return this.parse().catch(onrejected);\n }\n finally(onfinally) {\n return this.parse().finally(onfinally);\n }\n}\nexport class APIClient {\n constructor({ baseURL, maxRetries = 2, timeout = 600000, // 10 minutes\n httpAgent, fetch: overriddenFetch, }) {\n this.baseURL = baseURL;\n this.maxRetries = validatePositiveInteger('maxRetries', maxRetries);\n this.timeout = validatePositiveInteger('timeout', timeout);\n this.httpAgent = httpAgent;\n this.fetch = overriddenFetch ?? fetch;\n }\n authHeaders(opts) {\n return {};\n }\n /**\n * Override this to add your own default headers, for example:\n *\n * {\n * ...super.defaultHeaders(),\n * Authorization: 'Bearer 123',\n * }\n */\n defaultHeaders(opts) {\n return {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'User-Agent': this.getUserAgent(),\n ...getPlatformHeaders(),\n ...this.authHeaders(opts),\n };\n }\n /**\n * Override this to add your own headers validation:\n */\n validateHeaders(headers, customHeaders) { }\n defaultIdempotencyKey() {\n return `stainless-node-retry-${uuid4()}`;\n }\n get(path, opts) {\n return this.methodRequest('get', path, opts);\n }\n post(path, opts) {\n return this.methodRequest('post', path, opts);\n }\n patch(path, opts) {\n return this.methodRequest('patch', path, opts);\n }\n put(path, opts) {\n return this.methodRequest('put', path, opts);\n }\n delete(path, opts) {\n return this.methodRequest('delete', path, opts);\n }\n methodRequest(method, path, opts) {\n return this.request(Promise.resolve(opts).then(async (opts) => {\n const body = opts && isBlobLike(opts?.body) ? new DataView(await opts.body.arrayBuffer())\n : opts?.body instanceof DataView ? opts.body\n : opts?.body instanceof ArrayBuffer ? new DataView(opts.body)\n : opts && ArrayBuffer.isView(opts?.body) ? new DataView(opts.body.buffer)\n : opts?.body;\n return { method, path, ...opts, body };\n }));\n }\n getAPIList(path, Page, opts) {\n return this.requestAPIList(Page, { method: 'get', path, ...opts });\n }\n calculateContentLength(body) {\n if (typeof body === 'string') {\n if (typeof Buffer !== 'undefined') {\n return Buffer.byteLength(body, 'utf8').toString();\n }\n if (typeof TextEncoder !== 'undefined') {\n const encoder = new TextEncoder();\n const encoded = encoder.encode(body);\n return encoded.length.toString();\n }\n }\n else if (ArrayBuffer.isView(body)) {\n return body.byteLength.toString();\n }\n return null;\n }\n buildRequest(inputOptions, { retryCount = 0 } = {}) {\n const options = { ...inputOptions };\n const { method, path, query, headers: headers = {} } = options;\n const body = ArrayBuffer.isView(options.body) || (options.__binaryRequest && typeof options.body === 'string') ?\n options.body\n : isMultipartBody(options.body) ? options.body.body\n : options.body ? JSON.stringify(options.body, null, 2)\n : null;\n const contentLength = this.calculateContentLength(body);\n const url = this.buildURL(path, query);\n if ('timeout' in options)\n validatePositiveInteger('timeout', options.timeout);\n options.timeout = options.timeout ?? this.timeout;\n const httpAgent = options.httpAgent ?? this.httpAgent ?? getDefaultAgent(url);\n const minAgentTimeout = options.timeout + 1000;\n if (typeof httpAgent?.options?.timeout === 'number' &&\n minAgentTimeout > (httpAgent.options.timeout ?? 0)) {\n // Allow any given request to bump our agent active socket timeout.\n // This may seem strange, but leaking active sockets should be rare and not particularly problematic,\n // and without mutating agent we would need to create more of them.\n // This tradeoff optimizes for performance.\n httpAgent.options.timeout = minAgentTimeout;\n }\n if (this.idempotencyHeader && method !== 'get') {\n if (!inputOptions.idempotencyKey)\n inputOptions.idempotencyKey = this.defaultIdempotencyKey();\n headers[this.idempotencyHeader] = inputOptions.idempotencyKey;\n }\n const reqHeaders = this.buildHeaders({ options, headers, contentLength, retryCount });\n const req = {\n method,\n ...(body && { body: body }),\n headers: reqHeaders,\n ...(httpAgent && { agent: httpAgent }),\n // @ts-ignore node-fetch uses a custom AbortSignal type that is\n // not compatible with standard web types\n signal: options.signal ?? null,\n };\n return { req, url, timeout: options.timeout };\n }\n buildHeaders({ options, headers, contentLength, retryCount, }) {\n const reqHeaders = {};\n if (contentLength) {\n reqHeaders['content-length'] = contentLength;\n }\n const defaultHeaders = this.defaultHeaders(options);\n applyHeadersMut(reqHeaders, defaultHeaders);\n applyHeadersMut(reqHeaders, headers);\n // let builtin fetch set the Content-Type for multipart bodies\n if (isMultipartBody(options.body) && shimsKind !== 'node') {\n delete reqHeaders['content-type'];\n }\n // Don't set theses headers if they were already set or removed through default headers or by the caller.\n // We check `defaultHeaders` and `headers`, which can contain nulls, instead of `reqHeaders` to account\n // for the removal case.\n if (getHeader(defaultHeaders, 'x-stainless-retry-count') === undefined &&\n getHeader(headers, 'x-stainless-retry-count') === undefined) {\n reqHeaders['x-stainless-retry-count'] = String(retryCount);\n }\n if (getHeader(defaultHeaders, 'x-stainless-timeout') === undefined &&\n getHeader(headers, 'x-stainless-timeout') === undefined &&\n options.timeout) {\n reqHeaders['x-stainless-timeout'] = String(Math.trunc(options.timeout / 1000));\n }\n this.validateHeaders(reqHeaders, headers);\n return reqHeaders;\n }\n /**\n * Used as a callback for mutating the given `FinalRequestOptions` object.\n */\n async prepareOptions(options) { }\n /**\n * Used as a callback for mutating the given `RequestInit` object.\n *\n * This is useful for cases where you want to add certain headers based off of\n * the request properties, e.g. `method` or `url`.\n */\n async prepareRequest(request, { url, options }) { }\n parseHeaders(headers) {\n return (!headers ? {}\n : Symbol.iterator in headers ?\n Object.fromEntries(Array.from(headers).map((header) => [...header]))\n : { ...headers });\n }\n makeStatusError(status, error, message, headers) {\n return APIError.generate(status, error, message, headers);\n }\n request(options, remainingRetries = null) {\n return new APIPromise(this.makeRequest(options, remainingRetries));\n }\n async makeRequest(optionsInput, retriesRemaining) {\n const options = await optionsInput;\n const maxRetries = options.maxRetries ?? this.maxRetries;\n if (retriesRemaining == null) {\n retriesRemaining = maxRetries;\n }\n await this.prepareOptions(options);\n const { req, url, timeout } = this.buildRequest(options, { retryCount: maxRetries - retriesRemaining });\n await this.prepareRequest(req, { url, options });\n debug('request', url, options, req.headers);\n if (options.signal?.aborted) {\n throw new APIUserAbortError();\n }\n const controller = new AbortController();\n const response = await this.fetchWithTimeout(url, req, timeout, controller).catch(castToError);\n if (response instanceof Error) {\n if (options.signal?.aborted) {\n throw new APIUserAbortError();\n }\n if (retriesRemaining) {\n return this.retryRequest(options, retriesRemaining);\n }\n if (response.name === 'AbortError') {\n throw new APIConnectionTimeoutError();\n }\n throw new APIConnectionError({ cause: response });\n }\n const responseHeaders = createResponseHeaders(response.headers);\n if (!response.ok) {\n if (retriesRemaining && this.shouldRetry(response)) {\n const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n debug(`response (error; ${retryMessage})`, response.status, url, responseHeaders);\n return this.retryRequest(options, retriesRemaining, responseHeaders);\n }\n const errText = await response.text().catch((e) => castToError(e).message);\n const errJSON = safeJSON(errText);\n const errMessage = errJSON ? undefined : errText;\n const retryMessage = retriesRemaining ? `(error; no more retries left)` : `(error; not retryable)`;\n debug(`response (error; ${retryMessage})`, response.status, url, responseHeaders, errMessage);\n const err = this.makeStatusError(response.status, errJSON, errMessage, responseHeaders);\n throw err;\n }\n return { response, options, controller };\n }\n requestAPIList(Page, options) {\n const request = this.makeRequest(options, null);\n return new PagePromise(this, request, Page);\n }\n buildURL(path, query) {\n const url = isAbsoluteURL(path) ?\n new URL(path)\n : new URL(this.baseURL + (this.baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));\n const defaultQuery = this.defaultQuery();\n if (!isEmptyObj(defaultQuery)) {\n query = { ...defaultQuery, ...query };\n }\n if (typeof query === 'object' && query && !Array.isArray(query)) {\n url.search = this.stringifyQuery(query);\n }\n return url.toString();\n }\n stringifyQuery(query) {\n return Object.entries(query)\n .filter(([_, value]) => typeof value !== 'undefined')\n .map(([key, value]) => {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n }\n if (value === null) {\n return `${encodeURIComponent(key)}=`;\n }\n throw new OpenAIError(`Cannot stringify type ${typeof value}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`);\n })\n .join('&');\n }\n async fetchWithTimeout(url, init, ms, controller) {\n const { signal, ...options } = init || {};\n if (signal)\n signal.addEventListener('abort', () => controller.abort());\n const timeout = setTimeout(() => controller.abort(), ms);\n const fetchOptions = {\n signal: controller.signal,\n ...options,\n };\n if (fetchOptions.method) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = fetchOptions.method.toUpperCase();\n }\n return (\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n this.fetch.call(undefined, url, fetchOptions).finally(() => {\n clearTimeout(timeout);\n }));\n }\n shouldRetry(response) {\n // Note this is not a standard header.\n const shouldRetryHeader = response.headers.get('x-should-retry');\n // If the server explicitly says whether or not to retry, obey.\n if (shouldRetryHeader === 'true')\n return true;\n if (shouldRetryHeader === 'false')\n return false;\n // Retry on request timeouts.\n if (response.status === 408)\n return true;\n // Retry on lock timeouts.\n if (response.status === 409)\n return true;\n // Retry on rate limits.\n if (response.status === 429)\n return true;\n // Retry internal errors.\n if (response.status >= 500)\n return true;\n return false;\n }\n async retryRequest(options, retriesRemaining, responseHeaders) {\n let timeoutMillis;\n // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.\n const retryAfterMillisHeader = responseHeaders?.['retry-after-ms'];\n if (retryAfterMillisHeader) {\n const timeoutMs = parseFloat(retryAfterMillisHeader);\n if (!Number.isNaN(timeoutMs)) {\n timeoutMillis = timeoutMs;\n }\n }\n // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n const retryAfterHeader = responseHeaders?.['retry-after'];\n if (retryAfterHeader && !timeoutMillis) {\n const timeoutSeconds = parseFloat(retryAfterHeader);\n if (!Number.isNaN(timeoutSeconds)) {\n timeoutMillis = timeoutSeconds * 1000;\n }\n else {\n timeoutMillis = Date.parse(retryAfterHeader) - Date.now();\n }\n }\n // If the API asks us to wait a certain amount of time (and it's a reasonable amount),\n // just do what it says, but otherwise calculate a default\n if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1000)) {\n const maxRetries = options.maxRetries ?? this.maxRetries;\n timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);\n }\n await sleep(timeoutMillis);\n return this.makeRequest(options, retriesRemaining - 1);\n }\n calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries) {\n const initialRetryDelay = 0.5;\n const maxRetryDelay = 8.0;\n const numRetries = maxRetries - retriesRemaining;\n // Apply exponential backoff, but not more than the max.\n const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay);\n // Apply some jitter, take up to at most 25 percent of the retry time.\n const jitter = 1 - Math.random() * 0.25;\n return sleepSeconds * jitter * 1000;\n }\n getUserAgent() {\n return `${this.constructor.name}/JS ${VERSION}`;\n }\n}\nexport class AbstractPage {\n constructor(client, response, body, options) {\n _AbstractPage_client.set(this, void 0);\n __classPrivateFieldSet(this, _AbstractPage_client, client, \"f\");\n this.options = options;\n this.response = response;\n this.body = body;\n }\n hasNextPage() {\n const items = this.getPaginatedItems();\n if (!items.length)\n return false;\n return this.nextPageInfo() != null;\n }\n async getNextPage() {\n const nextInfo = this.nextPageInfo();\n if (!nextInfo) {\n throw new OpenAIError('No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.');\n }\n const nextOptions = { ...this.options };\n if ('params' in nextInfo && typeof nextOptions.query === 'object') {\n nextOptions.query = { ...nextOptions.query, ...nextInfo.params };\n }\n else if ('url' in nextInfo) {\n const params = [...Object.entries(nextOptions.query || {}), ...nextInfo.url.searchParams.entries()];\n for (const [key, value] of params) {\n nextInfo.url.searchParams.set(key, value);\n }\n nextOptions.query = undefined;\n nextOptions.path = nextInfo.url.toString();\n }\n return await __classPrivateFieldGet(this, _AbstractPage_client, \"f\").requestAPIList(this.constructor, nextOptions);\n }\n async *iterPages() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let page = this;\n yield page;\n while (page.hasNextPage()) {\n page = await page.getNextPage();\n yield page;\n }\n }\n async *[(_AbstractPage_client = new WeakMap(), Symbol.asyncIterator)]() {\n for await (const page of this.iterPages()) {\n for (const item of page.getPaginatedItems()) {\n yield item;\n }\n }\n }\n}\n/**\n * This subclass of Promise will resolve to an instantiated Page once the request completes.\n *\n * It also implements AsyncIterable to allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\nexport class PagePromise extends APIPromise {\n constructor(client, request, Page) {\n super(request, async (props) => new Page(client, props.response, await defaultParseResponse(props), props.options));\n }\n /**\n * Allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\n async *[Symbol.asyncIterator]() {\n const page = await this;\n for await (const item of page) {\n yield item;\n }\n }\n}\nexport const createResponseHeaders = (headers) => {\n return new Proxy(Object.fromEntries(\n // @ts-ignore\n headers.entries()), {\n get(target, name) {\n const key = name.toString();\n return target[key.toLowerCase()] || target[key];\n },\n });\n};\n// This is required so that we can determine if a given object matches the RequestOptions\n// type at runtime. While this requires duplication, it is enforced by the TypeScript\n// compiler such that any missing / extraneous keys will cause an error.\nconst requestOptionsKeys = {\n method: true,\n path: true,\n query: true,\n body: true,\n headers: true,\n maxRetries: true,\n stream: true,\n timeout: true,\n httpAgent: true,\n signal: true,\n idempotencyKey: true,\n __metadata: true,\n __binaryRequest: true,\n __binaryResponse: true,\n __streamClass: true,\n};\nexport const isRequestOptions = (obj) => {\n return (typeof obj === 'object' &&\n obj !== null &&\n !isEmptyObj(obj) &&\n Object.keys(obj).every((k) => hasOwn(requestOptionsKeys, k)));\n};\nconst getPlatformProperties = () => {\n if (typeof Deno !== 'undefined' && Deno.build != null) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(Deno.build.os),\n 'X-Stainless-Arch': normalizeArch(Deno.build.arch),\n 'X-Stainless-Runtime': 'deno',\n 'X-Stainless-Runtime-Version': typeof Deno.version === 'string' ? Deno.version : Deno.version?.deno ?? 'unknown',\n };\n }\n if (typeof EdgeRuntime !== 'undefined') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': `other:${EdgeRuntime}`,\n 'X-Stainless-Runtime': 'edge',\n 'X-Stainless-Runtime-Version': process.version,\n };\n }\n // Check if Node.js\n if (Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(process.platform),\n 'X-Stainless-Arch': normalizeArch(process.arch),\n 'X-Stainless-Runtime': 'node',\n 'X-Stainless-Runtime-Version': process.version,\n };\n }\n const browserInfo = getBrowserInfo();\n if (browserInfo) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': `browser:${browserInfo.browser}`,\n 'X-Stainless-Runtime-Version': browserInfo.version,\n };\n }\n // TODO add support for Cloudflare workers, etc.\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': 'unknown',\n 'X-Stainless-Runtime-Version': 'unknown',\n };\n};\n// Note: modified from https://github.com/JS-DevTools/host-environment/blob/b1ab79ecde37db5d6e163c050e54fe7d287d7c92/src/isomorphic.browser.ts\nfunction getBrowserInfo() {\n if (typeof navigator === 'undefined' || !navigator) {\n return null;\n }\n // NOTE: The order matters here!\n const browserPatterns = [\n { key: 'edge', pattern: /Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie', pattern: /MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie', pattern: /Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'chrome', pattern: /Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'firefox', pattern: /Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'safari', pattern: /(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/ },\n ];\n // Find the FIRST matching browser\n for (const { key, pattern } of browserPatterns) {\n const match = pattern.exec(navigator.userAgent);\n if (match) {\n const major = match[1] || 0;\n const minor = match[2] || 0;\n const patch = match[3] || 0;\n return { browser: key, version: `${major}.${minor}.${patch}` };\n }\n }\n return null;\n}\nconst normalizeArch = (arch) => {\n // Node docs:\n // - https://nodejs.org/api/process.html#processarch\n // Deno docs:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n if (arch === 'x32')\n return 'x32';\n if (arch === 'x86_64' || arch === 'x64')\n return 'x64';\n if (arch === 'arm')\n return 'arm';\n if (arch === 'aarch64' || arch === 'arm64')\n return 'arm64';\n if (arch)\n return `other:${arch}`;\n return 'unknown';\n};\nconst normalizePlatform = (platform) => {\n // Node platforms:\n // - https://nodejs.org/api/process.html#processplatform\n // Deno platforms:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n // - https://github.com/denoland/deno/issues/14799\n platform = platform.toLowerCase();\n // NOTE: this iOS check is untested and may not work\n // Node does not work natively on IOS, there is a fork at\n // https://github.com/nodejs-mobile/nodejs-mobile\n // however it is unknown at the time of writing how to detect if it is running\n if (platform.includes('ios'))\n return 'iOS';\n if (platform === 'android')\n return 'Android';\n if (platform === 'darwin')\n return 'MacOS';\n if (platform === 'win32')\n return 'Windows';\n if (platform === 'freebsd')\n return 'FreeBSD';\n if (platform === 'openbsd')\n return 'OpenBSD';\n if (platform === 'linux')\n return 'Linux';\n if (platform)\n return `Other:${platform}`;\n return 'Unknown';\n};\nlet _platformHeaders;\nconst getPlatformHeaders = () => {\n return (_platformHeaders ?? (_platformHeaders = getPlatformProperties()));\n};\nexport const safeJSON = (text) => {\n try {\n return JSON.parse(text);\n }\n catch (err) {\n return undefined;\n }\n};\n// https://url.spec.whatwg.org/#url-scheme-string\nconst startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;\nconst isAbsoluteURL = (url) => {\n return startsWithSchemeRegexp.test(url);\n};\nexport const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nconst validatePositiveInteger = (name, n) => {\n if (typeof n !== 'number' || !Number.isInteger(n)) {\n throw new OpenAIError(`${name} must be an integer`);\n }\n if (n < 0) {\n throw new OpenAIError(`${name} must be a positive integer`);\n }\n return n;\n};\nexport const castToError = (err) => {\n if (err instanceof Error)\n return err;\n if (typeof err === 'object' && err !== null) {\n try {\n return new Error(JSON.stringify(err));\n }\n catch { }\n }\n return new Error(err);\n};\nexport const ensurePresent = (value) => {\n if (value == null)\n throw new OpenAIError(`Expected a value to be given but received ${value} instead.`);\n return value;\n};\n/**\n * Read an environment variable.\n *\n * Trims beginning and trailing whitespace.\n *\n * Will return undefined if the environment variable doesn't exist or cannot be accessed.\n */\nexport const readEnv = (env) => {\n if (typeof process !== 'undefined') {\n return process.env?.[env]?.trim() ?? undefined;\n }\n if (typeof Deno !== 'undefined') {\n return Deno.env?.get?.(env)?.trim();\n }\n return undefined;\n};\nexport const coerceInteger = (value) => {\n if (typeof value === 'number')\n return Math.round(value);\n if (typeof value === 'string')\n return parseInt(value, 10);\n throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceFloat = (value) => {\n if (typeof value === 'number')\n return value;\n if (typeof value === 'string')\n return parseFloat(value);\n throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceBoolean = (value) => {\n if (typeof value === 'boolean')\n return value;\n if (typeof value === 'string')\n return value === 'true';\n return Boolean(value);\n};\nexport const maybeCoerceInteger = (value) => {\n if (value === undefined) {\n return undefined;\n }\n return coerceInteger(value);\n};\nexport const maybeCoerceFloat = (value) => {\n if (value === undefined) {\n return undefined;\n }\n return coerceFloat(value);\n};\nexport const maybeCoerceBoolean = (value) => {\n if (value === undefined) {\n return undefined;\n }\n return coerceBoolean(value);\n};\n// https://stackoverflow.com/a/34491287\nexport function isEmptyObj(obj) {\n if (!obj)\n return true;\n for (const _k in obj)\n return false;\n return true;\n}\n// https://eslint.org/docs/latest/rules/no-prototype-builtins\nexport function hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n/**\n * Copies headers from \"newHeaders\" onto \"targetHeaders\",\n * using lower-case for all properties,\n * ignoring any keys with undefined values,\n * and deleting any keys with null values.\n */\nfunction applyHeadersMut(targetHeaders, newHeaders) {\n for (const k in newHeaders) {\n if (!hasOwn(newHeaders, k))\n continue;\n const lowerKey = k.toLowerCase();\n if (!lowerKey)\n continue;\n const val = newHeaders[k];\n if (val === null) {\n delete targetHeaders[lowerKey];\n }\n else if (val !== undefined) {\n targetHeaders[lowerKey] = val;\n }\n }\n}\nconst SENSITIVE_HEADERS = new Set(['authorization', 'api-key']);\nexport function debug(action, ...args) {\n if (typeof process !== 'undefined' && process?.env?.['DEBUG'] === 'true') {\n const modifiedArgs = args.map((arg) => {\n if (!arg) {\n return arg;\n }\n // Check for sensitive headers in request body 'headers' object\n if (arg['headers']) {\n // clone so we don't mutate\n const modifiedArg = { ...arg, headers: { ...arg['headers'] } };\n for (const header in arg['headers']) {\n if (SENSITIVE_HEADERS.has(header.toLowerCase())) {\n modifiedArg['headers'][header] = 'REDACTED';\n }\n }\n return modifiedArg;\n }\n let modifiedArg = null;\n // Check for sensitive headers in headers object\n for (const header in arg) {\n if (SENSITIVE_HEADERS.has(header.toLowerCase())) {\n // avoid making a copy until we need to\n modifiedArg ?? (modifiedArg = { ...arg });\n modifiedArg[header] = 'REDACTED';\n }\n }\n return modifiedArg ?? arg;\n });\n console.log(`OpenAI:DEBUG:${action}`, ...modifiedArgs);\n }\n}\n/**\n * https://stackoverflow.com/a/2117523\n */\nconst uuid4 = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\nexport const isRunningInBrowser = () => {\n return (\n // @ts-ignore\n typeof window !== 'undefined' &&\n // @ts-ignore\n typeof window.document !== 'undefined' &&\n // @ts-ignore\n typeof navigator !== 'undefined');\n};\nexport const isHeadersProtocol = (headers) => {\n return typeof headers?.get === 'function';\n};\nexport const getRequiredHeader = (headers, header) => {\n const foundHeader = getHeader(headers, header);\n if (foundHeader === undefined) {\n throw new Error(`Could not find ${header} header`);\n }\n return foundHeader;\n};\nexport const getHeader = (headers, header) => {\n const lowerCasedHeader = header.toLowerCase();\n if (isHeadersProtocol(headers)) {\n // to deal with the case where the header looks like Stainless-Event-Id\n const intercapsHeader = header[0]?.toUpperCase() +\n header.substring(1).replace(/([^\\w])(\\w)/g, (_m, g1, g2) => g1 + g2.toUpperCase());\n for (const key of [header, lowerCasedHeader, header.toUpperCase(), intercapsHeader]) {\n const value = headers.get(key);\n if (value) {\n return value;\n }\n }\n }\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === lowerCasedHeader) {\n if (Array.isArray(value)) {\n if (value.length <= 1)\n return value[0];\n console.warn(`Received ${value.length} entries for the ${header} header, using the first entry.`);\n return value[0];\n }\n return value;\n }\n }\n return undefined;\n};\n/**\n * Encodes a string to Base64 format.\n */\nexport const toBase64 = (str) => {\n if (!str)\n return '';\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str).toString('base64');\n }\n if (typeof btoa !== 'undefined') {\n return btoa(str);\n }\n throw new OpenAIError('Cannot generate b64 string; Expected `Buffer` or `btoa` to be defined');\n};\n/**\n * Converts a Base64 encoded string to a Float32Array.\n * @param base64Str - The Base64 encoded string.\n * @returns An Array of numbers interpreted as Float32 values.\n */\nexport const toFloat32Array = (base64Str) => {\n if (typeof Buffer !== 'undefined') {\n // for Node.js environment\n const buf = Buffer.from(base64Str, 'base64');\n return Array.from(new Float32Array(buf.buffer, buf.byteOffset, buf.length / Float32Array.BYTES_PER_ELEMENT));\n }\n else {\n // for legacy web platform APIs\n const binaryStr = atob(base64Str);\n const len = binaryStr.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryStr.charCodeAt(i);\n }\n return Array.from(new Float32Array(bytes.buffer));\n }\n};\nexport function isObj(obj) {\n return obj != null && typeof obj === 'object' && !Array.isArray(obj);\n}\n//# sourceMappingURL=core.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { AbstractPage } from \"./core.mjs\";\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class Page extends AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.object = body.object;\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n // @deprecated Please use `nextPageInfo()` instead\n /**\n * This page represents a response that isn't actually paginated at the API level\n * so there will never be any next page params.\n */\n nextPageParams() {\n return null;\n }\n nextPageInfo() {\n return null;\n }\n}\nexport class CursorPage extends AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.has_more = body.has_more || false;\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n hasNextPage() {\n if (this.has_more === false) {\n return false;\n }\n return super.hasNextPage();\n }\n // @deprecated Please use `nextPageInfo()` instead\n nextPageParams() {\n const info = this.nextPageInfo();\n if (!info)\n return null;\n if ('params' in info)\n return info.params;\n const params = Object.fromEntries(info.url.searchParams);\n if (!Object.keys(params).length)\n return null;\n return params;\n }\n nextPageInfo() {\n const data = this.getPaginatedItems();\n if (!data.length) {\n return null;\n }\n const id = data[data.length - 1]?.id;\n if (!id) {\n return null;\n }\n return { params: { after: id } };\n }\n}\n//# sourceMappingURL=pagination.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport class APIResource {\n constructor(client) {\n this._client = client;\n }\n}\n//# sourceMappingURL=resource.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport { ChatCompletionStoreMessagesPage } from \"./completions.mjs\";\nexport class Messages extends APIResource {\n list(completionId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(completionId, {}, query);\n }\n return this._client.getAPIList(`/chat/completions/${completionId}/messages`, ChatCompletionStoreMessagesPage, { query, ...options });\n }\n}\nexport { ChatCompletionStoreMessagesPage };\n//# sourceMappingURL=messages.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport * as MessagesAPI from \"./messages.mjs\";\nimport { Messages } from \"./messages.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\nexport class Completions extends APIResource {\n constructor() {\n super(...arguments);\n this.messages = new MessagesAPI.Messages(this._client);\n }\n create(body, options) {\n return this._client.post('/chat/completions', { body, ...options, stream: body.stream ?? false });\n }\n /**\n * Get a stored chat completion. Only Chat Completions that have been created with\n * the `store` parameter set to `true` will be returned.\n *\n * @example\n * ```ts\n * const chatCompletion =\n * await client.chat.completions.retrieve('completion_id');\n * ```\n */\n retrieve(completionId, options) {\n return this._client.get(`/chat/completions/${completionId}`, options);\n }\n /**\n * Modify a stored chat completion. Only Chat Completions that have been created\n * with the `store` parameter set to `true` can be modified. Currently, the only\n * supported modification is to update the `metadata` field.\n *\n * @example\n * ```ts\n * const chatCompletion = await client.chat.completions.update(\n * 'completion_id',\n * { metadata: { foo: 'string' } },\n * );\n * ```\n */\n update(completionId, body, options) {\n return this._client.post(`/chat/completions/${completionId}`, { body, ...options });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/chat/completions', ChatCompletionsPage, { query, ...options });\n }\n /**\n * Delete a stored chat completion. Only Chat Completions that have been created\n * with the `store` parameter set to `true` can be deleted.\n *\n * @example\n * ```ts\n * const chatCompletionDeleted =\n * await client.chat.completions.del('completion_id');\n * ```\n */\n del(completionId, options) {\n return this._client.delete(`/chat/completions/${completionId}`, options);\n }\n}\nexport class ChatCompletionsPage extends CursorPage {\n}\nexport class ChatCompletionStoreMessagesPage extends CursorPage {\n}\nCompletions.ChatCompletionsPage = ChatCompletionsPage;\nCompletions.Messages = Messages;\n//# sourceMappingURL=completions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as CompletionsAPI from \"./completions/completions.mjs\";\nimport { ChatCompletionsPage, Completions, } from \"./completions/completions.mjs\";\nexport class Chat extends APIResource {\n constructor() {\n super(...arguments);\n this.completions = new CompletionsAPI.Completions(this._client);\n }\n}\nChat.Completions = Completions;\nChat.ChatCompletionsPage = ChatCompletionsPage;\n//# sourceMappingURL=chat.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nexport class Speech extends APIResource {\n /**\n * Generates audio from the input text.\n *\n * @example\n * ```ts\n * const speech = await client.audio.speech.create({\n * input: 'input',\n * model: 'string',\n * voice: 'ash',\n * });\n *\n * const content = await speech.blob();\n * console.log(content);\n * ```\n */\n create(body, options) {\n return this._client.post('/audio/speech', {\n body,\n ...options,\n headers: { Accept: 'application/octet-stream', ...options?.headers },\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=speech.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as Core from \"../../core.mjs\";\nexport class Transcriptions extends APIResource {\n create(body, options) {\n return this._client.post('/audio/transcriptions', Core.multipartFormRequestOptions({\n body,\n ...options,\n stream: body.stream ?? false,\n __metadata: { model: body.model },\n }));\n }\n}\n//# sourceMappingURL=transcriptions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as Core from \"../../core.mjs\";\nexport class Translations extends APIResource {\n create(body, options) {\n return this._client.post('/audio/translations', Core.multipartFormRequestOptions({ body, ...options, __metadata: { model: body.model } }));\n }\n}\n//# sourceMappingURL=translations.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as SpeechAPI from \"./speech.mjs\";\nimport { Speech } from \"./speech.mjs\";\nimport * as TranscriptionsAPI from \"./transcriptions.mjs\";\nimport { Transcriptions, } from \"./transcriptions.mjs\";\nimport * as TranslationsAPI from \"./translations.mjs\";\nimport { Translations, } from \"./translations.mjs\";\nexport class Audio extends APIResource {\n constructor() {\n super(...arguments);\n this.transcriptions = new TranscriptionsAPI.Transcriptions(this._client);\n this.translations = new TranslationsAPI.Translations(this._client);\n this.speech = new SpeechAPI.Speech(this._client);\n }\n}\nAudio.Transcriptions = Transcriptions;\nAudio.Translations = Translations;\nAudio.Speech = Speech;\n//# sourceMappingURL=audio.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { CursorPage } from \"../pagination.mjs\";\nexport class Batches extends APIResource {\n /**\n * Creates and executes a batch from an uploaded file of requests\n */\n create(body, options) {\n return this._client.post('/batches', { body, ...options });\n }\n /**\n * Retrieves a batch.\n */\n retrieve(batchId, options) {\n return this._client.get(`/batches/${batchId}`, options);\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/batches', BatchesPage, { query, ...options });\n }\n /**\n * Cancels an in-progress batch. The batch will be in status `cancelling` for up to\n * 10 minutes, before changing to `cancelled`, where it will have partial results\n * (if any) available in the output file.\n */\n cancel(batchId, options) {\n return this._client.post(`/batches/${batchId}/cancel`, options);\n }\n}\nexport class BatchesPage extends CursorPage {\n}\nBatches.BatchesPage = BatchesPage;\n//# sourceMappingURL=batches.mjs.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _EventStream_instances, _EventStream_connectedPromise, _EventStream_resolveConnectedPromise, _EventStream_rejectConnectedPromise, _EventStream_endPromise, _EventStream_resolveEndPromise, _EventStream_rejectEndPromise, _EventStream_listeners, _EventStream_ended, _EventStream_errored, _EventStream_aborted, _EventStream_catchingPromiseCreated, _EventStream_handleError;\nimport { APIUserAbortError, OpenAIError } from \"../error.mjs\";\nexport class EventStream {\n constructor() {\n _EventStream_instances.add(this);\n this.controller = new AbortController();\n _EventStream_connectedPromise.set(this, void 0);\n _EventStream_resolveConnectedPromise.set(this, () => { });\n _EventStream_rejectConnectedPromise.set(this, () => { });\n _EventStream_endPromise.set(this, void 0);\n _EventStream_resolveEndPromise.set(this, () => { });\n _EventStream_rejectEndPromise.set(this, () => { });\n _EventStream_listeners.set(this, {});\n _EventStream_ended.set(this, false);\n _EventStream_errored.set(this, false);\n _EventStream_aborted.set(this, false);\n _EventStream_catchingPromiseCreated.set(this, false);\n __classPrivateFieldSet(this, _EventStream_connectedPromise, new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_resolveConnectedPromise, resolve, \"f\");\n __classPrivateFieldSet(this, _EventStream_rejectConnectedPromise, reject, \"f\");\n }), \"f\");\n __classPrivateFieldSet(this, _EventStream_endPromise, new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_resolveEndPromise, resolve, \"f\");\n __classPrivateFieldSet(this, _EventStream_rejectEndPromise, reject, \"f\");\n }), \"f\");\n // Don't let these promises cause unhandled rejection errors.\n // we will manually cause an unhandled rejection error later\n // if the user hasn't registered any error listener or called\n // any promise-returning method.\n __classPrivateFieldGet(this, _EventStream_connectedPromise, \"f\").catch(() => { });\n __classPrivateFieldGet(this, _EventStream_endPromise, \"f\").catch(() => { });\n }\n _run(executor) {\n // Unfortunately if we call `executor()` immediately we get runtime errors about\n // references to `this` before the `super()` constructor call returns.\n setTimeout(() => {\n executor().then(() => {\n this._emitFinal();\n this._emit('end');\n }, __classPrivateFieldGet(this, _EventStream_instances, \"m\", _EventStream_handleError).bind(this));\n }, 0);\n }\n _connected() {\n if (this.ended)\n return;\n __classPrivateFieldGet(this, _EventStream_resolveConnectedPromise, \"f\").call(this);\n this._emit('connect');\n }\n get ended() {\n return __classPrivateFieldGet(this, _EventStream_ended, \"f\");\n }\n get errored() {\n return __classPrivateFieldGet(this, _EventStream_errored, \"f\");\n }\n get aborted() {\n return __classPrivateFieldGet(this, _EventStream_aborted, \"f\");\n }\n abort() {\n this.controller.abort();\n }\n /**\n * Adds the listener function to the end of the listeners array for the event.\n * No checks are made to see if the listener has already been added. Multiple calls passing\n * the same combination of event and listener will result in the listener being added, and\n * called, multiple times.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n on(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = []);\n listeners.push({ listener });\n return this;\n }\n /**\n * Removes the specified listener from the listener array for the event.\n * off() will remove, at most, one instance of a listener from the listener array. If any single\n * listener has been added multiple times to the listener array for the specified event, then\n * off() must be called multiple times to remove each instance.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n off(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event];\n if (!listeners)\n return this;\n const index = listeners.findIndex((l) => l.listener === listener);\n if (index >= 0)\n listeners.splice(index, 1);\n return this;\n }\n /**\n * Adds a one-time listener function for the event. The next time the event is triggered,\n * this listener is removed and then invoked.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n once(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = []);\n listeners.push({ listener, once: true });\n return this;\n }\n /**\n * This is similar to `.once()`, but returns a Promise that resolves the next time\n * the event is triggered, instead of calling a listener callback.\n * @returns a Promise that resolves the next time given event is triggered,\n * or rejects if an error is emitted. (If you request the 'error' event,\n * returns a promise that resolves with the error).\n *\n * Example:\n *\n * const message = await stream.emitted('message') // rejects if the stream errors\n */\n emitted(event) {\n return new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, \"f\");\n if (event !== 'error')\n this.once('error', reject);\n this.once(event, resolve);\n });\n }\n async done() {\n __classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, \"f\");\n await __classPrivateFieldGet(this, _EventStream_endPromise, \"f\");\n }\n _emit(event, ...args) {\n // make sure we don't emit any events after end\n if (__classPrivateFieldGet(this, _EventStream_ended, \"f\")) {\n return;\n }\n if (event === 'end') {\n __classPrivateFieldSet(this, _EventStream_ended, true, \"f\");\n __classPrivateFieldGet(this, _EventStream_resolveEndPromise, \"f\").call(this);\n }\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event];\n if (listeners) {\n __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = listeners.filter((l) => !l.once);\n listeners.forEach(({ listener }) => listener(...args));\n }\n if (event === 'abort') {\n const error = args[0];\n if (!__classPrivateFieldGet(this, _EventStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n Promise.reject(error);\n }\n __classPrivateFieldGet(this, _EventStream_rejectConnectedPromise, \"f\").call(this, error);\n __classPrivateFieldGet(this, _EventStream_rejectEndPromise, \"f\").call(this, error);\n this._emit('end');\n return;\n }\n if (event === 'error') {\n // NOTE: _emit('error', error) should only be called from #handleError().\n const error = args[0];\n if (!__classPrivateFieldGet(this, _EventStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n // Trigger an unhandled rejection if the user hasn't registered any error handlers.\n // If you are seeing stack traces here, make sure to handle errors via either:\n // - runner.on('error', () => ...)\n // - await runner.done()\n // - await runner.finalChatCompletion()\n // - etc.\n Promise.reject(error);\n }\n __classPrivateFieldGet(this, _EventStream_rejectConnectedPromise, \"f\").call(this, error);\n __classPrivateFieldGet(this, _EventStream_rejectEndPromise, \"f\").call(this, error);\n this._emit('end');\n }\n }\n _emitFinal() { }\n}\n_EventStream_connectedPromise = new WeakMap(), _EventStream_resolveConnectedPromise = new WeakMap(), _EventStream_rejectConnectedPromise = new WeakMap(), _EventStream_endPromise = new WeakMap(), _EventStream_resolveEndPromise = new WeakMap(), _EventStream_rejectEndPromise = new WeakMap(), _EventStream_listeners = new WeakMap(), _EventStream_ended = new WeakMap(), _EventStream_errored = new WeakMap(), _EventStream_aborted = new WeakMap(), _EventStream_catchingPromiseCreated = new WeakMap(), _EventStream_instances = new WeakSet(), _EventStream_handleError = function _EventStream_handleError(error) {\n __classPrivateFieldSet(this, _EventStream_errored, true, \"f\");\n if (error instanceof Error && error.name === 'AbortError') {\n error = new APIUserAbortError();\n }\n if (error instanceof APIUserAbortError) {\n __classPrivateFieldSet(this, _EventStream_aborted, true, \"f\");\n return this._emit('abort', error);\n }\n if (error instanceof OpenAIError) {\n return this._emit('error', error);\n }\n if (error instanceof Error) {\n const openAIError = new OpenAIError(error.message);\n // @ts-ignore\n openAIError.cause = error;\n return this._emit('error', openAIError);\n }\n return this._emit('error', new OpenAIError(String(error)));\n};\n//# sourceMappingURL=EventStream.mjs.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AssistantStream_instances, _AssistantStream_events, _AssistantStream_runStepSnapshots, _AssistantStream_messageSnapshots, _AssistantStream_messageSnapshot, _AssistantStream_finalRun, _AssistantStream_currentContentIndex, _AssistantStream_currentContent, _AssistantStream_currentToolCallIndex, _AssistantStream_currentToolCall, _AssistantStream_currentEvent, _AssistantStream_currentRunSnapshot, _AssistantStream_currentRunStepSnapshot, _AssistantStream_addEvent, _AssistantStream_endRequest, _AssistantStream_handleMessage, _AssistantStream_handleRunStep, _AssistantStream_handleEvent, _AssistantStream_accumulateRunStep, _AssistantStream_accumulateMessage, _AssistantStream_accumulateContent, _AssistantStream_handleRun;\nimport * as Core from \"../core.mjs\";\nimport { Stream } from \"../streaming.mjs\";\nimport { APIUserAbortError, OpenAIError } from \"../error.mjs\";\nimport { EventStream } from \"./EventStream.mjs\";\nexport class AssistantStream extends EventStream {\n constructor() {\n super(...arguments);\n _AssistantStream_instances.add(this);\n //Track all events in a single list for reference\n _AssistantStream_events.set(this, []);\n //Used to accumulate deltas\n //We are accumulating many types so the value here is not strict\n _AssistantStream_runStepSnapshots.set(this, {});\n _AssistantStream_messageSnapshots.set(this, {});\n _AssistantStream_messageSnapshot.set(this, void 0);\n _AssistantStream_finalRun.set(this, void 0);\n _AssistantStream_currentContentIndex.set(this, void 0);\n _AssistantStream_currentContent.set(this, void 0);\n _AssistantStream_currentToolCallIndex.set(this, void 0);\n _AssistantStream_currentToolCall.set(this, void 0);\n //For current snapshot methods\n _AssistantStream_currentEvent.set(this, void 0);\n _AssistantStream_currentRunSnapshot.set(this, void 0);\n _AssistantStream_currentRunStepSnapshot.set(this, void 0);\n }\n [(_AssistantStream_events = new WeakMap(), _AssistantStream_runStepSnapshots = new WeakMap(), _AssistantStream_messageSnapshots = new WeakMap(), _AssistantStream_messageSnapshot = new WeakMap(), _AssistantStream_finalRun = new WeakMap(), _AssistantStream_currentContentIndex = new WeakMap(), _AssistantStream_currentContent = new WeakMap(), _AssistantStream_currentToolCallIndex = new WeakMap(), _AssistantStream_currentToolCall = new WeakMap(), _AssistantStream_currentEvent = new WeakMap(), _AssistantStream_currentRunSnapshot = new WeakMap(), _AssistantStream_currentRunStepSnapshot = new WeakMap(), _AssistantStream_instances = new WeakSet(), Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n //Catch all for passing along all events\n this.on('event', (event) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(event);\n }\n else {\n pushQueue.push(event);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n }\n const chunk = pushQueue.shift();\n return { value: chunk, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n static fromReadableStream(stream) {\n const runner = new AssistantStream();\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n async _fromReadableStream(readableStream, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n this._connected();\n const stream = Stream.fromReadableStream(readableStream, this.controller);\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n toReadableStream() {\n const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n static createToolAssistantStream(threadId, runId, runs, params, options) {\n const runner = new AssistantStream();\n runner._run(() => runner._runToolAssistantStream(threadId, runId, runs, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n async _createToolAssistantStream(run, threadId, runId, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await run.submitToolOutputs(threadId, runId, body, {\n ...options,\n signal: this.controller.signal,\n });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n static createThreadAssistantStream(params, thread, options) {\n const runner = new AssistantStream();\n runner._run(() => runner._threadAssistantStream(params, thread, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n static createAssistantStream(threadId, runs, params, options) {\n const runner = new AssistantStream();\n runner._run(() => runner._runAssistantStream(threadId, runs, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n currentEvent() {\n return __classPrivateFieldGet(this, _AssistantStream_currentEvent, \"f\");\n }\n currentRun() {\n return __classPrivateFieldGet(this, _AssistantStream_currentRunSnapshot, \"f\");\n }\n currentMessageSnapshot() {\n return __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\");\n }\n currentRunStepSnapshot() {\n return __classPrivateFieldGet(this, _AssistantStream_currentRunStepSnapshot, \"f\");\n }\n async finalRunSteps() {\n await this.done();\n return Object.values(__classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\"));\n }\n async finalMessages() {\n await this.done();\n return Object.values(__classPrivateFieldGet(this, _AssistantStream_messageSnapshots, \"f\"));\n }\n async finalRun() {\n await this.done();\n if (!__classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\"))\n throw Error('Final run was not received.');\n return __classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\");\n }\n async _createThreadAssistantStream(thread, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await thread.createAndRun(body, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n async _createAssistantStream(run, threadId, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await run.create(threadId, body, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n static accumulateDelta(acc, delta) {\n for (const [key, deltaValue] of Object.entries(delta)) {\n if (!acc.hasOwnProperty(key)) {\n acc[key] = deltaValue;\n continue;\n }\n let accValue = acc[key];\n if (accValue === null || accValue === undefined) {\n acc[key] = deltaValue;\n continue;\n }\n // We don't accumulate these special properties\n if (key === 'index' || key === 'type') {\n acc[key] = deltaValue;\n continue;\n }\n // Type-specific accumulation logic\n if (typeof accValue === 'string' && typeof deltaValue === 'string') {\n accValue += deltaValue;\n }\n else if (typeof accValue === 'number' && typeof deltaValue === 'number') {\n accValue += deltaValue;\n }\n else if (Core.isObj(accValue) && Core.isObj(deltaValue)) {\n accValue = this.accumulateDelta(accValue, deltaValue);\n }\n else if (Array.isArray(accValue) && Array.isArray(deltaValue)) {\n if (accValue.every((x) => typeof x === 'string' || typeof x === 'number')) {\n accValue.push(...deltaValue); // Use spread syntax for efficient addition\n continue;\n }\n for (const deltaEntry of deltaValue) {\n if (!Core.isObj(deltaEntry)) {\n throw new Error(`Expected array delta entry to be an object but got: ${deltaEntry}`);\n }\n const index = deltaEntry['index'];\n if (index == null) {\n console.error(deltaEntry);\n throw new Error('Expected array delta entry to have an `index` property');\n }\n if (typeof index !== 'number') {\n throw new Error(`Expected array delta entry \\`index\\` property to be a number but got ${index}`);\n }\n const accEntry = accValue[index];\n if (accEntry == null) {\n accValue.push(deltaEntry);\n }\n else {\n accValue[index] = this.accumulateDelta(accEntry, deltaEntry);\n }\n }\n continue;\n }\n else {\n throw Error(`Unhandled record type: ${key}, deltaValue: ${deltaValue}, accValue: ${accValue}`);\n }\n acc[key] = accValue;\n }\n return acc;\n }\n _addRun(run) {\n return run;\n }\n async _threadAssistantStream(params, thread, options) {\n return await this._createThreadAssistantStream(thread, params, options);\n }\n async _runAssistantStream(threadId, runs, params, options) {\n return await this._createAssistantStream(runs, threadId, params, options);\n }\n async _runToolAssistantStream(threadId, runId, runs, params, options) {\n return await this._createToolAssistantStream(runs, threadId, runId, params, options);\n }\n}\n_AssistantStream_addEvent = function _AssistantStream_addEvent(event) {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _AssistantStream_currentEvent, event, \"f\");\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleEvent).call(this, event);\n switch (event.event) {\n case 'thread.created':\n //No action on this event.\n break;\n case 'thread.run.created':\n case 'thread.run.queued':\n case 'thread.run.in_progress':\n case 'thread.run.requires_action':\n case 'thread.run.completed':\n case 'thread.run.incomplete':\n case 'thread.run.failed':\n case 'thread.run.cancelling':\n case 'thread.run.cancelled':\n case 'thread.run.expired':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleRun).call(this, event);\n break;\n case 'thread.run.step.created':\n case 'thread.run.step.in_progress':\n case 'thread.run.step.delta':\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleRunStep).call(this, event);\n break;\n case 'thread.message.created':\n case 'thread.message.in_progress':\n case 'thread.message.delta':\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleMessage).call(this, event);\n break;\n case 'error':\n //This is included for completeness, but errors are processed in the SSE event processing so this should not occur\n throw new Error('Encountered an error event in event processing - errors should be processed earlier');\n default:\n assertNever(event);\n }\n}, _AssistantStream_endRequest = function _AssistantStream_endRequest() {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n if (!__classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\"))\n throw Error('Final run has not been received');\n return __classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\");\n}, _AssistantStream_handleMessage = function _AssistantStream_handleMessage(event) {\n const [accumulatedMessage, newContent] = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateMessage).call(this, event, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_messageSnapshot, accumulatedMessage, \"f\");\n __classPrivateFieldGet(this, _AssistantStream_messageSnapshots, \"f\")[accumulatedMessage.id] = accumulatedMessage;\n for (const content of newContent) {\n const snapshotContent = accumulatedMessage.content[content.index];\n if (snapshotContent?.type == 'text') {\n this._emit('textCreated', snapshotContent.text);\n }\n }\n switch (event.event) {\n case 'thread.message.created':\n this._emit('messageCreated', event.data);\n break;\n case 'thread.message.in_progress':\n break;\n case 'thread.message.delta':\n this._emit('messageDelta', event.data.delta, accumulatedMessage);\n if (event.data.delta.content) {\n for (const content of event.data.delta.content) {\n //If it is text delta, emit a text delta event\n if (content.type == 'text' && content.text) {\n let textDelta = content.text;\n let snapshot = accumulatedMessage.content[content.index];\n if (snapshot && snapshot.type == 'text') {\n this._emit('textDelta', textDelta, snapshot.text);\n }\n else {\n throw Error('The snapshot associated with this text delta is not text or missing');\n }\n }\n if (content.index != __classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\")) {\n //See if we have in progress content\n if (__classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\")) {\n switch (__classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").type) {\n case 'text':\n this._emit('textDone', __classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").text, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n case 'image_file':\n this._emit('imageFileDone', __classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").image_file, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n }\n }\n __classPrivateFieldSet(this, _AssistantStream_currentContentIndex, content.index, \"f\");\n }\n __classPrivateFieldSet(this, _AssistantStream_currentContent, accumulatedMessage.content[content.index], \"f\");\n }\n }\n break;\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n //We emit the latest content we were working on on completion (including incomplete)\n if (__classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\") !== undefined) {\n const currentContent = event.data.content[__classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\")];\n if (currentContent) {\n switch (currentContent.type) {\n case 'image_file':\n this._emit('imageFileDone', currentContent.image_file, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n case 'text':\n this._emit('textDone', currentContent.text, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n }\n }\n }\n if (__classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\")) {\n this._emit('messageDone', event.data);\n }\n __classPrivateFieldSet(this, _AssistantStream_messageSnapshot, undefined, \"f\");\n }\n}, _AssistantStream_handleRunStep = function _AssistantStream_handleRunStep(event) {\n const accumulatedRunStep = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateRunStep).call(this, event);\n __classPrivateFieldSet(this, _AssistantStream_currentRunStepSnapshot, accumulatedRunStep, \"f\");\n switch (event.event) {\n case 'thread.run.step.created':\n this._emit('runStepCreated', event.data);\n break;\n case 'thread.run.step.delta':\n const delta = event.data.delta;\n if (delta.step_details &&\n delta.step_details.type == 'tool_calls' &&\n delta.step_details.tool_calls &&\n accumulatedRunStep.step_details.type == 'tool_calls') {\n for (const toolCall of delta.step_details.tool_calls) {\n if (toolCall.index == __classPrivateFieldGet(this, _AssistantStream_currentToolCallIndex, \"f\")) {\n this._emit('toolCallDelta', toolCall, accumulatedRunStep.step_details.tool_calls[toolCall.index]);\n }\n else {\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n }\n __classPrivateFieldSet(this, _AssistantStream_currentToolCallIndex, toolCall.index, \"f\");\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, accumulatedRunStep.step_details.tool_calls[toolCall.index], \"f\");\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"))\n this._emit('toolCallCreated', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n }\n }\n }\n this._emit('runStepDelta', event.data.delta, accumulatedRunStep);\n break;\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n __classPrivateFieldSet(this, _AssistantStream_currentRunStepSnapshot, undefined, \"f\");\n const details = event.data.step_details;\n if (details.type == 'tool_calls') {\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, undefined, \"f\");\n }\n }\n this._emit('runStepDone', event.data, accumulatedRunStep);\n break;\n case 'thread.run.step.in_progress':\n break;\n }\n}, _AssistantStream_handleEvent = function _AssistantStream_handleEvent(event) {\n __classPrivateFieldGet(this, _AssistantStream_events, \"f\").push(event);\n this._emit('event', event);\n}, _AssistantStream_accumulateRunStep = function _AssistantStream_accumulateRunStep(event) {\n switch (event.event) {\n case 'thread.run.step.created':\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = event.data;\n return event.data;\n case 'thread.run.step.delta':\n let snapshot = __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n if (!snapshot) {\n throw Error('Received a RunStepDelta before creation of a snapshot');\n }\n let data = event.data;\n if (data.delta) {\n const accumulated = AssistantStream.accumulateDelta(snapshot, data.delta);\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = accumulated;\n }\n return __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n case 'thread.run.step.in_progress':\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = event.data;\n break;\n }\n if (__classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id])\n return __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n throw new Error('No snapshot available');\n}, _AssistantStream_accumulateMessage = function _AssistantStream_accumulateMessage(event, snapshot) {\n let newContent = [];\n switch (event.event) {\n case 'thread.message.created':\n //On creation the snapshot is just the initial message\n return [event.data, newContent];\n case 'thread.message.delta':\n if (!snapshot) {\n throw Error('Received a delta with no existing snapshot (there should be one from message creation)');\n }\n let data = event.data;\n //If this delta does not have content, nothing to process\n if (data.delta.content) {\n for (const contentElement of data.delta.content) {\n if (contentElement.index in snapshot.content) {\n let currentContent = snapshot.content[contentElement.index];\n snapshot.content[contentElement.index] = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateContent).call(this, contentElement, currentContent);\n }\n else {\n snapshot.content[contentElement.index] = contentElement;\n // This is a new element\n newContent.push(contentElement);\n }\n }\n }\n return [snapshot, newContent];\n case 'thread.message.in_progress':\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n //No changes on other thread events\n if (snapshot) {\n return [snapshot, newContent];\n }\n else {\n throw Error('Received thread message event with no existing snapshot');\n }\n }\n throw Error('Tried to accumulate a non-message event');\n}, _AssistantStream_accumulateContent = function _AssistantStream_accumulateContent(contentElement, currentContent) {\n return AssistantStream.accumulateDelta(currentContent, contentElement);\n}, _AssistantStream_handleRun = function _AssistantStream_handleRun(event) {\n __classPrivateFieldSet(this, _AssistantStream_currentRunSnapshot, event.data, \"f\");\n switch (event.event) {\n case 'thread.run.created':\n break;\n case 'thread.run.queued':\n break;\n case 'thread.run.in_progress':\n break;\n case 'thread.run.requires_action':\n case 'thread.run.cancelled':\n case 'thread.run.failed':\n case 'thread.run.completed':\n case 'thread.run.expired':\n __classPrivateFieldSet(this, _AssistantStream_finalRun, event.data, \"f\");\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, undefined, \"f\");\n }\n break;\n case 'thread.run.cancelling':\n break;\n }\n};\nfunction assertNever(_x) { }\n//# sourceMappingURL=AssistantStream.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport { CursorPage } from \"../../pagination.mjs\";\nimport { AssistantStream } from \"../../lib/AssistantStream.mjs\";\nexport class Assistants extends APIResource {\n /**\n * Create an assistant with a model and instructions.\n *\n * @example\n * ```ts\n * const assistant = await client.beta.assistants.create({\n * model: 'gpt-4o',\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/assistants', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves an assistant.\n *\n * @example\n * ```ts\n * const assistant = await client.beta.assistants.retrieve(\n * 'assistant_id',\n * );\n * ```\n */\n retrieve(assistantId, options) {\n return this._client.get(`/assistants/${assistantId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies an assistant.\n *\n * @example\n * ```ts\n * const assistant = await client.beta.assistants.update(\n * 'assistant_id',\n * );\n * ```\n */\n update(assistantId, body, options) {\n return this._client.post(`/assistants/${assistantId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/assistants', AssistantsPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Delete an assistant.\n *\n * @example\n * ```ts\n * const assistantDeleted = await client.beta.assistants.del(\n * 'assistant_id',\n * );\n * ```\n */\n del(assistantId, options) {\n return this._client.delete(`/assistants/${assistantId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexport class AssistantsPage extends CursorPage {\n}\nAssistants.AssistantsPage = AssistantsPage;\n//# sourceMappingURL=assistants.mjs.map","export function isRunnableFunctionWithParse(fn) {\n return typeof fn.parse === 'function';\n}\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n *\n * @deprecated - please use ParsingToolFunction instead.\n */\nexport class ParsingFunction {\n constructor(input) {\n this.function = input.function;\n this.parse = input.parse;\n this.parameters = input.parameters;\n this.description = input.description;\n this.name = input.name;\n }\n}\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n */\nexport class ParsingToolFunction {\n constructor(input) {\n this.type = 'function';\n this.function = input;\n }\n}\n//# sourceMappingURL=RunnableFunction.mjs.map","export const isAssistantMessage = (message) => {\n return message?.role === 'assistant';\n};\nexport const isFunctionMessage = (message) => {\n return message?.role === 'function';\n};\nexport const isToolMessage = (message) => {\n return message?.role === 'tool';\n};\nexport function isPresent(obj) {\n return obj != null;\n}\n//# sourceMappingURL=chatCompletionUtils.mjs.map","import { ContentFilterFinishReasonError, LengthFinishReasonError, OpenAIError } from \"../error.mjs\";\nexport function makeParseableResponseFormat(response_format, parser) {\n const obj = { ...response_format };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-response-format',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function makeParseableTextFormat(response_format, parser) {\n const obj = { ...response_format };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-response-format',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function isAutoParsableResponseFormat(response_format) {\n return response_format?.['$brand'] === 'auto-parseable-response-format';\n}\nexport function makeParseableTool(tool, { parser, callback, }) {\n const obj = { ...tool };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-tool',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n $callback: {\n value: callback,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function isAutoParsableTool(tool) {\n return tool?.['$brand'] === 'auto-parseable-tool';\n}\nexport function maybeParseChatCompletion(completion, params) {\n if (!params || !hasAutoParseableInput(params)) {\n return {\n ...completion,\n choices: completion.choices.map((choice) => ({\n ...choice,\n message: {\n ...choice.message,\n parsed: null,\n ...(choice.message.tool_calls ?\n {\n tool_calls: choice.message.tool_calls,\n }\n : undefined),\n },\n })),\n };\n }\n return parseChatCompletion(completion, params);\n}\nexport function parseChatCompletion(completion, params) {\n const choices = completion.choices.map((choice) => {\n if (choice.finish_reason === 'length') {\n throw new LengthFinishReasonError();\n }\n if (choice.finish_reason === 'content_filter') {\n throw new ContentFilterFinishReasonError();\n }\n return {\n ...choice,\n message: {\n ...choice.message,\n ...(choice.message.tool_calls ?\n {\n tool_calls: choice.message.tool_calls?.map((toolCall) => parseToolCall(params, toolCall)) ?? undefined,\n }\n : undefined),\n parsed: choice.message.content && !choice.message.refusal ?\n parseResponseFormat(params, choice.message.content)\n : null,\n },\n };\n });\n return { ...completion, choices };\n}\nfunction parseResponseFormat(params, content) {\n if (params.response_format?.type !== 'json_schema') {\n return null;\n }\n if (params.response_format?.type === 'json_schema') {\n if ('$parseRaw' in params.response_format) {\n const response_format = params.response_format;\n return response_format.$parseRaw(content);\n }\n return JSON.parse(content);\n }\n return null;\n}\nfunction parseToolCall(params, toolCall) {\n const inputTool = params.tools?.find((inputTool) => inputTool.function?.name === toolCall.function.name);\n return {\n ...toolCall,\n function: {\n ...toolCall.function,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCall.function.arguments)\n : inputTool?.function.strict ? JSON.parse(toolCall.function.arguments)\n : null,\n },\n };\n}\nexport function shouldParseToolCall(params, toolCall) {\n if (!params) {\n return false;\n }\n const inputTool = params.tools?.find((inputTool) => inputTool.function?.name === toolCall.function.name);\n return isAutoParsableTool(inputTool) || inputTool?.function.strict || false;\n}\nexport function hasAutoParseableInput(params) {\n if (isAutoParsableResponseFormat(params.response_format)) {\n return true;\n }\n return (params.tools?.some((t) => isAutoParsableTool(t) || (t.type === 'function' && t.function.strict === true)) ?? false);\n}\nexport function validateInputTools(tools) {\n for (const tool of tools ?? []) {\n if (tool.type !== 'function') {\n throw new OpenAIError(`Currently only \\`function\\` tool types support auto-parsing; Received \\`${tool.type}\\``);\n }\n if (tool.function.strict !== true) {\n throw new OpenAIError(`The \\`${tool.function.name}\\` tool is not marked with \\`strict: true\\`. Only strict function tools can be auto-parsed`);\n }\n }\n}\n//# sourceMappingURL=parser.mjs.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractChatCompletionRunner_instances, _AbstractChatCompletionRunner_getFinalContent, _AbstractChatCompletionRunner_getFinalMessage, _AbstractChatCompletionRunner_getFinalFunctionCall, _AbstractChatCompletionRunner_getFinalFunctionCallResult, _AbstractChatCompletionRunner_calculateTotalUsage, _AbstractChatCompletionRunner_validateParams, _AbstractChatCompletionRunner_stringifyFunctionCallResult;\nimport { OpenAIError } from \"../error.mjs\";\nimport { isRunnableFunctionWithParse, } from \"./RunnableFunction.mjs\";\nimport { isAssistantMessage, isFunctionMessage, isToolMessage } from \"./chatCompletionUtils.mjs\";\nimport { EventStream } from \"./EventStream.mjs\";\nimport { isAutoParsableTool, parseChatCompletion } from \"../lib/parser.mjs\";\nconst DEFAULT_MAX_CHAT_COMPLETIONS = 10;\nexport class AbstractChatCompletionRunner extends EventStream {\n constructor() {\n super(...arguments);\n _AbstractChatCompletionRunner_instances.add(this);\n this._chatCompletions = [];\n this.messages = [];\n }\n _addChatCompletion(chatCompletion) {\n this._chatCompletions.push(chatCompletion);\n this._emit('chatCompletion', chatCompletion);\n const message = chatCompletion.choices[0]?.message;\n if (message)\n this._addMessage(message);\n return chatCompletion;\n }\n _addMessage(message, emit = true) {\n if (!('content' in message))\n message.content = null;\n this.messages.push(message);\n if (emit) {\n this._emit('message', message);\n if ((isFunctionMessage(message) || isToolMessage(message)) && message.content) {\n // Note, this assumes that {role: 'tool', content: …} is always the result of a call of tool of type=function.\n this._emit('functionCallResult', message.content);\n }\n else if (isAssistantMessage(message) && message.function_call) {\n this._emit('functionCall', message.function_call);\n }\n else if (isAssistantMessage(message) && message.tool_calls) {\n for (const tool_call of message.tool_calls) {\n if (tool_call.type === 'function') {\n this._emit('functionCall', tool_call.function);\n }\n }\n }\n }\n }\n /**\n * @returns a promise that resolves with the final ChatCompletion, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletion.\n */\n async finalChatCompletion() {\n await this.done();\n const completion = this._chatCompletions[this._chatCompletions.length - 1];\n if (!completion)\n throw new OpenAIError('stream ended without producing a ChatCompletion');\n return completion;\n }\n /**\n * @returns a promise that resolves with the content of the final ChatCompletionMessage, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalContent() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n }\n /**\n * @returns a promise that resolves with the the final assistant ChatCompletionMessage response,\n * or rejects if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalMessage() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n }\n /**\n * @returns a promise that resolves with the content of the final FunctionCall, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalFunctionCall() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCall).call(this);\n }\n async finalFunctionCallResult() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCallResult).call(this);\n }\n async totalUsage() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this);\n }\n allChatCompletions() {\n return [...this._chatCompletions];\n }\n _emitFinal() {\n const completion = this._chatCompletions[this._chatCompletions.length - 1];\n if (completion)\n this._emit('finalChatCompletion', completion);\n const finalMessage = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n if (finalMessage)\n this._emit('finalMessage', finalMessage);\n const finalContent = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n if (finalContent)\n this._emit('finalContent', finalContent);\n const finalFunctionCall = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCall).call(this);\n if (finalFunctionCall)\n this._emit('finalFunctionCall', finalFunctionCall);\n const finalFunctionCallResult = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCallResult).call(this);\n if (finalFunctionCallResult != null)\n this._emit('finalFunctionCallResult', finalFunctionCallResult);\n if (this._chatCompletions.some((c) => c.usage)) {\n this._emit('totalUsage', __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this));\n }\n }\n async _createChatCompletion(client, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_validateParams).call(this, params);\n const chatCompletion = await client.chat.completions.create({ ...params, stream: false }, { ...options, signal: this.controller.signal });\n this._connected();\n return this._addChatCompletion(parseChatCompletion(chatCompletion, params));\n }\n async _runChatCompletion(client, params, options) {\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n return await this._createChatCompletion(client, params, options);\n }\n async _runFunctions(client, params, options) {\n const role = 'function';\n const { function_call = 'auto', stream, ...restParams } = params;\n const singleFunctionToCall = typeof function_call !== 'string' && function_call?.name;\n const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n const functionsByName = {};\n for (const f of params.functions) {\n functionsByName[f.name || f.function.name] = f;\n }\n const functions = params.functions.map((f) => ({\n name: f.name || f.function.name,\n parameters: f.parameters,\n description: f.description,\n }));\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n for (let i = 0; i < maxChatCompletions; ++i) {\n const chatCompletion = await this._createChatCompletion(client, {\n ...restParams,\n function_call,\n functions,\n messages: [...this.messages],\n }, options);\n const message = chatCompletion.choices[0]?.message;\n if (!message) {\n throw new OpenAIError(`missing message in ChatCompletion response`);\n }\n if (!message.function_call)\n return;\n const { name, arguments: args } = message.function_call;\n const fn = functionsByName[name];\n if (!fn) {\n const content = `Invalid function_call: ${JSON.stringify(name)}. Available options are: ${functions\n .map((f) => JSON.stringify(f.name))\n .join(', ')}. Please try again`;\n this._addMessage({ role, name, content });\n continue;\n }\n else if (singleFunctionToCall && singleFunctionToCall !== name) {\n const content = `Invalid function_call: ${JSON.stringify(name)}. ${JSON.stringify(singleFunctionToCall)} requested. Please try again`;\n this._addMessage({ role, name, content });\n continue;\n }\n let parsed;\n try {\n parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;\n }\n catch (error) {\n this._addMessage({\n role,\n name,\n content: error instanceof Error ? error.message : String(error),\n });\n continue;\n }\n // @ts-expect-error it can't rule out `never` type.\n const rawContent = await fn.function(parsed, this);\n const content = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_stringifyFunctionCallResult).call(this, rawContent);\n this._addMessage({ role, name, content });\n if (singleFunctionToCall)\n return;\n }\n }\n async _runTools(client, params, options) {\n const role = 'tool';\n const { tool_choice = 'auto', stream, ...restParams } = params;\n const singleFunctionToCall = typeof tool_choice !== 'string' && tool_choice?.function?.name;\n const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n // TODO(someday): clean this logic up\n const inputTools = params.tools.map((tool) => {\n if (isAutoParsableTool(tool)) {\n if (!tool.$callback) {\n throw new OpenAIError('Tool given to `.runTools()` that does not have an associated function');\n }\n return {\n type: 'function',\n function: {\n function: tool.$callback,\n name: tool.function.name,\n description: tool.function.description || '',\n parameters: tool.function.parameters,\n parse: tool.$parseRaw,\n strict: true,\n },\n };\n }\n return tool;\n });\n const functionsByName = {};\n for (const f of inputTools) {\n if (f.type === 'function') {\n functionsByName[f.function.name || f.function.function.name] = f.function;\n }\n }\n const tools = 'tools' in params ?\n inputTools.map((t) => t.type === 'function' ?\n {\n type: 'function',\n function: {\n name: t.function.name || t.function.function.name,\n parameters: t.function.parameters,\n description: t.function.description,\n strict: t.function.strict,\n },\n }\n : t)\n : undefined;\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n for (let i = 0; i < maxChatCompletions; ++i) {\n const chatCompletion = await this._createChatCompletion(client, {\n ...restParams,\n tool_choice,\n tools,\n messages: [...this.messages],\n }, options);\n const message = chatCompletion.choices[0]?.message;\n if (!message) {\n throw new OpenAIError(`missing message in ChatCompletion response`);\n }\n if (!message.tool_calls?.length) {\n return;\n }\n for (const tool_call of message.tool_calls) {\n if (tool_call.type !== 'function')\n continue;\n const tool_call_id = tool_call.id;\n const { name, arguments: args } = tool_call.function;\n const fn = functionsByName[name];\n if (!fn) {\n const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${Object.keys(functionsByName)\n .map((name) => JSON.stringify(name))\n .join(', ')}. Please try again`;\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n else if (singleFunctionToCall && singleFunctionToCall !== name) {\n const content = `Invalid tool_call: ${JSON.stringify(name)}. ${JSON.stringify(singleFunctionToCall)} requested. Please try again`;\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n let parsed;\n try {\n parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;\n }\n catch (error) {\n const content = error instanceof Error ? error.message : String(error);\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n // @ts-expect-error it can't rule out `never` type.\n const rawContent = await fn.function(parsed, this);\n const content = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_stringifyFunctionCallResult).call(this, rawContent);\n this._addMessage({ role, tool_call_id, content });\n if (singleFunctionToCall) {\n return;\n }\n }\n }\n return;\n }\n}\n_AbstractChatCompletionRunner_instances = new WeakSet(), _AbstractChatCompletionRunner_getFinalContent = function _AbstractChatCompletionRunner_getFinalContent() {\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this).content ?? null;\n}, _AbstractChatCompletionRunner_getFinalMessage = function _AbstractChatCompletionRunner_getFinalMessage() {\n let i = this.messages.length;\n while (i-- > 0) {\n const message = this.messages[i];\n if (isAssistantMessage(message)) {\n const { function_call, ...rest } = message;\n // TODO: support audio here\n const ret = {\n ...rest,\n content: message.content ?? null,\n refusal: message.refusal ?? null,\n };\n if (function_call) {\n ret.function_call = function_call;\n }\n return ret;\n }\n }\n throw new OpenAIError('stream ended without producing a ChatCompletionMessage with role=assistant');\n}, _AbstractChatCompletionRunner_getFinalFunctionCall = function _AbstractChatCompletionRunner_getFinalFunctionCall() {\n for (let i = this.messages.length - 1; i >= 0; i--) {\n const message = this.messages[i];\n if (isAssistantMessage(message) && message?.function_call) {\n return message.function_call;\n }\n if (isAssistantMessage(message) && message?.tool_calls?.length) {\n return message.tool_calls.at(-1)?.function;\n }\n }\n return;\n}, _AbstractChatCompletionRunner_getFinalFunctionCallResult = function _AbstractChatCompletionRunner_getFinalFunctionCallResult() {\n for (let i = this.messages.length - 1; i >= 0; i--) {\n const message = this.messages[i];\n if (isFunctionMessage(message) && message.content != null) {\n return message.content;\n }\n if (isToolMessage(message) &&\n message.content != null &&\n typeof message.content === 'string' &&\n this.messages.some((x) => x.role === 'assistant' &&\n x.tool_calls?.some((y) => y.type === 'function' && y.id === message.tool_call_id))) {\n return message.content;\n }\n }\n return;\n}, _AbstractChatCompletionRunner_calculateTotalUsage = function _AbstractChatCompletionRunner_calculateTotalUsage() {\n const total = {\n completion_tokens: 0,\n prompt_tokens: 0,\n total_tokens: 0,\n };\n for (const { usage } of this._chatCompletions) {\n if (usage) {\n total.completion_tokens += usage.completion_tokens;\n total.prompt_tokens += usage.prompt_tokens;\n total.total_tokens += usage.total_tokens;\n }\n }\n return total;\n}, _AbstractChatCompletionRunner_validateParams = function _AbstractChatCompletionRunner_validateParams(params) {\n if (params.n != null && params.n > 1) {\n throw new OpenAIError('ChatCompletion convenience helpers only support n=1 at this time. To use n>1, please use chat.completions.create() directly.');\n }\n}, _AbstractChatCompletionRunner_stringifyFunctionCallResult = function _AbstractChatCompletionRunner_stringifyFunctionCallResult(rawContent) {\n return (typeof rawContent === 'string' ? rawContent\n : rawContent === undefined ? 'undefined'\n : JSON.stringify(rawContent));\n};\n//# sourceMappingURL=AbstractChatCompletionRunner.mjs.map","import { AbstractChatCompletionRunner, } from \"./AbstractChatCompletionRunner.mjs\";\nimport { isAssistantMessage } from \"./chatCompletionUtils.mjs\";\nexport class ChatCompletionRunner extends AbstractChatCompletionRunner {\n /** @deprecated - please use `runTools` instead. */\n static runFunctions(client, params, options) {\n const runner = new ChatCompletionRunner();\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runFunctions' },\n };\n runner._run(() => runner._runFunctions(client, params, opts));\n return runner;\n }\n static runTools(client, params, options) {\n const runner = new ChatCompletionRunner();\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n };\n runner._run(() => runner._runTools(client, params, opts));\n return runner;\n }\n _addMessage(message, emit = true) {\n super._addMessage(message, emit);\n if (isAssistantMessage(message) && message.content) {\n this._emit('content', message.content);\n }\n }\n}\n//# sourceMappingURL=ChatCompletionRunner.mjs.map","const STR = 0b000000001;\nconst NUM = 0b000000010;\nconst ARR = 0b000000100;\nconst OBJ = 0b000001000;\nconst NULL = 0b000010000;\nconst BOOL = 0b000100000;\nconst NAN = 0b001000000;\nconst INFINITY = 0b010000000;\nconst MINUS_INFINITY = 0b100000000;\nconst INF = INFINITY | MINUS_INFINITY;\nconst SPECIAL = NULL | BOOL | INF | NAN;\nconst ATOM = STR | NUM | SPECIAL;\nconst COLLECTION = ARR | OBJ;\nconst ALL = ATOM | COLLECTION;\nconst Allow = {\n STR,\n NUM,\n ARR,\n OBJ,\n NULL,\n BOOL,\n NAN,\n INFINITY,\n MINUS_INFINITY,\n INF,\n SPECIAL,\n ATOM,\n COLLECTION,\n ALL,\n};\n// The JSON string segment was unable to be parsed completely\nclass PartialJSON extends Error {\n}\nclass MalformedJSON extends Error {\n}\n/**\n * Parse incomplete JSON\n * @param {string} jsonString Partial JSON to be parsed\n * @param {number} allowPartial Specify what types are allowed to be partial, see {@link Allow} for details\n * @returns The parsed JSON\n * @throws {PartialJSON} If the JSON is incomplete (related to the `allow` parameter)\n * @throws {MalformedJSON} If the JSON is malformed\n */\nfunction parseJSON(jsonString, allowPartial = Allow.ALL) {\n if (typeof jsonString !== 'string') {\n throw new TypeError(`expecting str, got ${typeof jsonString}`);\n }\n if (!jsonString.trim()) {\n throw new Error(`${jsonString} is empty`);\n }\n return _parseJSON(jsonString.trim(), allowPartial);\n}\nconst _parseJSON = (jsonString, allow) => {\n const length = jsonString.length;\n let index = 0;\n const markPartialJSON = (msg) => {\n throw new PartialJSON(`${msg} at position ${index}`);\n };\n const throwMalformedError = (msg) => {\n throw new MalformedJSON(`${msg} at position ${index}`);\n };\n const parseAny = () => {\n skipBlank();\n if (index >= length)\n markPartialJSON('Unexpected end of input');\n if (jsonString[index] === '\"')\n return parseStr();\n if (jsonString[index] === '{')\n return parseObj();\n if (jsonString[index] === '[')\n return parseArr();\n if (jsonString.substring(index, index + 4) === 'null' ||\n (Allow.NULL & allow && length - index < 4 && 'null'.startsWith(jsonString.substring(index)))) {\n index += 4;\n return null;\n }\n if (jsonString.substring(index, index + 4) === 'true' ||\n (Allow.BOOL & allow && length - index < 4 && 'true'.startsWith(jsonString.substring(index)))) {\n index += 4;\n return true;\n }\n if (jsonString.substring(index, index + 5) === 'false' ||\n (Allow.BOOL & allow && length - index < 5 && 'false'.startsWith(jsonString.substring(index)))) {\n index += 5;\n return false;\n }\n if (jsonString.substring(index, index + 8) === 'Infinity' ||\n (Allow.INFINITY & allow && length - index < 8 && 'Infinity'.startsWith(jsonString.substring(index)))) {\n index += 8;\n return Infinity;\n }\n if (jsonString.substring(index, index + 9) === '-Infinity' ||\n (Allow.MINUS_INFINITY & allow &&\n 1 < length - index &&\n length - index < 9 &&\n '-Infinity'.startsWith(jsonString.substring(index)))) {\n index += 9;\n return -Infinity;\n }\n if (jsonString.substring(index, index + 3) === 'NaN' ||\n (Allow.NAN & allow && length - index < 3 && 'NaN'.startsWith(jsonString.substring(index)))) {\n index += 3;\n return NaN;\n }\n return parseNum();\n };\n const parseStr = () => {\n const start = index;\n let escape = false;\n index++; // skip initial quote\n while (index < length && (jsonString[index] !== '\"' || (escape && jsonString[index - 1] === '\\\\'))) {\n escape = jsonString[index] === '\\\\' ? !escape : false;\n index++;\n }\n if (jsonString.charAt(index) == '\"') {\n try {\n return JSON.parse(jsonString.substring(start, ++index - Number(escape)));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n else if (Allow.STR & allow) {\n try {\n return JSON.parse(jsonString.substring(start, index - Number(escape)) + '\"');\n }\n catch (e) {\n // SyntaxError: Invalid escape sequence\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf('\\\\')) + '\"');\n }\n }\n markPartialJSON('Unterminated string literal');\n };\n const parseObj = () => {\n index++; // skip initial brace\n skipBlank();\n const obj = {};\n try {\n while (jsonString[index] !== '}') {\n skipBlank();\n if (index >= length && Allow.OBJ & allow)\n return obj;\n const key = parseStr();\n skipBlank();\n index++; // skip colon\n try {\n const value = parseAny();\n Object.defineProperty(obj, key, { value, writable: true, enumerable: true, configurable: true });\n }\n catch (e) {\n if (Allow.OBJ & allow)\n return obj;\n else\n throw e;\n }\n skipBlank();\n if (jsonString[index] === ',')\n index++; // skip comma\n }\n }\n catch (e) {\n if (Allow.OBJ & allow)\n return obj;\n else\n markPartialJSON(\"Expected '}' at end of object\");\n }\n index++; // skip final brace\n return obj;\n };\n const parseArr = () => {\n index++; // skip initial bracket\n const arr = [];\n try {\n while (jsonString[index] !== ']') {\n arr.push(parseAny());\n skipBlank();\n if (jsonString[index] === ',') {\n index++; // skip comma\n }\n }\n }\n catch (e) {\n if (Allow.ARR & allow) {\n return arr;\n }\n markPartialJSON(\"Expected ']' at end of array\");\n }\n index++; // skip final bracket\n return arr;\n };\n const parseNum = () => {\n if (index === 0) {\n if (jsonString === '-' && Allow.NUM & allow)\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString);\n }\n catch (e) {\n if (Allow.NUM & allow) {\n try {\n if ('.' === jsonString[jsonString.length - 1])\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf('.')));\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf('e')));\n }\n catch (e) { }\n }\n throwMalformedError(String(e));\n }\n }\n const start = index;\n if (jsonString[index] === '-')\n index++;\n while (jsonString[index] && !',]}'.includes(jsonString[index]))\n index++;\n if (index == length && !(Allow.NUM & allow))\n markPartialJSON('Unterminated number literal');\n try {\n return JSON.parse(jsonString.substring(start, index));\n }\n catch (e) {\n if (jsonString.substring(start, index) === '-' && Allow.NUM & allow)\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf('e')));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n };\n const skipBlank = () => {\n while (index < length && ' \\n\\r\\t'.includes(jsonString[index])) {\n index++;\n }\n };\n return parseAny();\n};\n// using this function with malformed JSON is undefined behavior\nconst partialParse = (input) => parseJSON(input, Allow.ALL ^ Allow.NUM);\nexport { partialParse, PartialJSON, MalformedJSON };\n//# sourceMappingURL=parser.mjs.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ChatCompletionStream_instances, _ChatCompletionStream_params, _ChatCompletionStream_choiceEventStates, _ChatCompletionStream_currentChatCompletionSnapshot, _ChatCompletionStream_beginRequest, _ChatCompletionStream_getChoiceEventState, _ChatCompletionStream_addChunk, _ChatCompletionStream_emitToolCallDoneEvent, _ChatCompletionStream_emitContentDoneEvents, _ChatCompletionStream_endRequest, _ChatCompletionStream_getAutoParseableResponseFormat, _ChatCompletionStream_accumulateChatCompletion;\nimport { OpenAIError, APIUserAbortError, LengthFinishReasonError, ContentFilterFinishReasonError, } from \"../error.mjs\";\nimport { AbstractChatCompletionRunner, } from \"./AbstractChatCompletionRunner.mjs\";\nimport { Stream } from \"../streaming.mjs\";\nimport { hasAutoParseableInput, isAutoParsableResponseFormat, isAutoParsableTool, maybeParseChatCompletion, shouldParseToolCall, } from \"../lib/parser.mjs\";\nimport { partialParse } from \"../_vendor/partial-json-parser/parser.mjs\";\nexport class ChatCompletionStream extends AbstractChatCompletionRunner {\n constructor(params) {\n super();\n _ChatCompletionStream_instances.add(this);\n _ChatCompletionStream_params.set(this, void 0);\n _ChatCompletionStream_choiceEventStates.set(this, void 0);\n _ChatCompletionStream_currentChatCompletionSnapshot.set(this, void 0);\n __classPrivateFieldSet(this, _ChatCompletionStream_params, params, \"f\");\n __classPrivateFieldSet(this, _ChatCompletionStream_choiceEventStates, [], \"f\");\n }\n get currentChatCompletionSnapshot() {\n return __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n }\n /**\n * Intended for use on the frontend, consuming a stream produced with\n * `.toReadableStream()` on the backend.\n *\n * Note that messages sent to the model do not appear in `.on('message')`\n * in this context.\n */\n static fromReadableStream(stream) {\n const runner = new ChatCompletionStream(null);\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n static createChatCompletion(client, params, options) {\n const runner = new ChatCompletionStream(params);\n runner._run(() => runner._runChatCompletion(client, { ...params, stream: true }, { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } }));\n return runner;\n }\n async _createChatCompletion(client, params, options) {\n super._createChatCompletion;\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n const stream = await client.chat.completions.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const chunk of stream) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n async _fromReadableStream(readableStream, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n this._connected();\n const stream = Stream.fromReadableStream(readableStream, this.controller);\n let chatId;\n for await (const chunk of stream) {\n if (chatId && chatId !== chunk.id) {\n // A new request has been made.\n this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n chatId = chunk.id;\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n [(_ChatCompletionStream_params = new WeakMap(), _ChatCompletionStream_choiceEventStates = new WeakMap(), _ChatCompletionStream_currentChatCompletionSnapshot = new WeakMap(), _ChatCompletionStream_instances = new WeakSet(), _ChatCompletionStream_beginRequest = function _ChatCompletionStream_beginRequest() {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n }, _ChatCompletionStream_getChoiceEventState = function _ChatCompletionStream_getChoiceEventState(choice) {\n let state = __classPrivateFieldGet(this, _ChatCompletionStream_choiceEventStates, \"f\")[choice.index];\n if (state) {\n return state;\n }\n state = {\n content_done: false,\n refusal_done: false,\n logprobs_content_done: false,\n logprobs_refusal_done: false,\n done_tool_calls: new Set(),\n current_tool_call_index: null,\n };\n __classPrivateFieldGet(this, _ChatCompletionStream_choiceEventStates, \"f\")[choice.index] = state;\n return state;\n }, _ChatCompletionStream_addChunk = function _ChatCompletionStream_addChunk(chunk) {\n if (this.ended)\n return;\n const completion = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_accumulateChatCompletion).call(this, chunk);\n this._emit('chunk', chunk, completion);\n for (const choice of chunk.choices) {\n const choiceSnapshot = completion.choices[choice.index];\n if (choice.delta.content != null &&\n choiceSnapshot.message?.role === 'assistant' &&\n choiceSnapshot.message?.content) {\n this._emit('content', choice.delta.content, choiceSnapshot.message.content);\n this._emit('content.delta', {\n delta: choice.delta.content,\n snapshot: choiceSnapshot.message.content,\n parsed: choiceSnapshot.message.parsed,\n });\n }\n if (choice.delta.refusal != null &&\n choiceSnapshot.message?.role === 'assistant' &&\n choiceSnapshot.message?.refusal) {\n this._emit('refusal.delta', {\n delta: choice.delta.refusal,\n snapshot: choiceSnapshot.message.refusal,\n });\n }\n if (choice.logprobs?.content != null && choiceSnapshot.message?.role === 'assistant') {\n this._emit('logprobs.content.delta', {\n content: choice.logprobs?.content,\n snapshot: choiceSnapshot.logprobs?.content ?? [],\n });\n }\n if (choice.logprobs?.refusal != null && choiceSnapshot.message?.role === 'assistant') {\n this._emit('logprobs.refusal.delta', {\n refusal: choice.logprobs?.refusal,\n snapshot: choiceSnapshot.logprobs?.refusal ?? [],\n });\n }\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (choiceSnapshot.finish_reason) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitContentDoneEvents).call(this, choiceSnapshot);\n if (state.current_tool_call_index != null) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitToolCallDoneEvent).call(this, choiceSnapshot, state.current_tool_call_index);\n }\n }\n for (const toolCall of choice.delta.tool_calls ?? []) {\n if (state.current_tool_call_index !== toolCall.index) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitContentDoneEvents).call(this, choiceSnapshot);\n // new tool call started, the previous one is done\n if (state.current_tool_call_index != null) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitToolCallDoneEvent).call(this, choiceSnapshot, state.current_tool_call_index);\n }\n }\n state.current_tool_call_index = toolCall.index;\n }\n for (const toolCallDelta of choice.delta.tool_calls ?? []) {\n const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallDelta.index];\n if (!toolCallSnapshot?.type) {\n continue;\n }\n if (toolCallSnapshot?.type === 'function') {\n this._emit('tool_calls.function.arguments.delta', {\n name: toolCallSnapshot.function?.name,\n index: toolCallDelta.index,\n arguments: toolCallSnapshot.function.arguments,\n parsed_arguments: toolCallSnapshot.function.parsed_arguments,\n arguments_delta: toolCallDelta.function?.arguments ?? '',\n });\n }\n else {\n assertNever(toolCallSnapshot?.type);\n }\n }\n }\n }, _ChatCompletionStream_emitToolCallDoneEvent = function _ChatCompletionStream_emitToolCallDoneEvent(choiceSnapshot, toolCallIndex) {\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (state.done_tool_calls.has(toolCallIndex)) {\n // we've already fired the done event\n return;\n }\n const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallIndex];\n if (!toolCallSnapshot) {\n throw new Error('no tool call snapshot');\n }\n if (!toolCallSnapshot.type) {\n throw new Error('tool call snapshot missing `type`');\n }\n if (toolCallSnapshot.type === 'function') {\n const inputTool = __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\")?.tools?.find((tool) => tool.type === 'function' && tool.function.name === toolCallSnapshot.function.name);\n this._emit('tool_calls.function.arguments.done', {\n name: toolCallSnapshot.function.name,\n index: toolCallIndex,\n arguments: toolCallSnapshot.function.arguments,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCallSnapshot.function.arguments)\n : inputTool?.function.strict ? JSON.parse(toolCallSnapshot.function.arguments)\n : null,\n });\n }\n else {\n assertNever(toolCallSnapshot.type);\n }\n }, _ChatCompletionStream_emitContentDoneEvents = function _ChatCompletionStream_emitContentDoneEvents(choiceSnapshot) {\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (choiceSnapshot.message.content && !state.content_done) {\n state.content_done = true;\n const responseFormat = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getAutoParseableResponseFormat).call(this);\n this._emit('content.done', {\n content: choiceSnapshot.message.content,\n parsed: responseFormat ? responseFormat.$parseRaw(choiceSnapshot.message.content) : null,\n });\n }\n if (choiceSnapshot.message.refusal && !state.refusal_done) {\n state.refusal_done = true;\n this._emit('refusal.done', { refusal: choiceSnapshot.message.refusal });\n }\n if (choiceSnapshot.logprobs?.content && !state.logprobs_content_done) {\n state.logprobs_content_done = true;\n this._emit('logprobs.content.done', { content: choiceSnapshot.logprobs.content });\n }\n if (choiceSnapshot.logprobs?.refusal && !state.logprobs_refusal_done) {\n state.logprobs_refusal_done = true;\n this._emit('logprobs.refusal.done', { refusal: choiceSnapshot.logprobs.refusal });\n }\n }, _ChatCompletionStream_endRequest = function _ChatCompletionStream_endRequest() {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n if (!snapshot) {\n throw new OpenAIError(`request ended without sending any chunks`);\n }\n __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n __classPrivateFieldSet(this, _ChatCompletionStream_choiceEventStates, [], \"f\");\n return finalizeChatCompletion(snapshot, __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"));\n }, _ChatCompletionStream_getAutoParseableResponseFormat = function _ChatCompletionStream_getAutoParseableResponseFormat() {\n const responseFormat = __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\")?.response_format;\n if (isAutoParsableResponseFormat(responseFormat)) {\n return responseFormat;\n }\n return null;\n }, _ChatCompletionStream_accumulateChatCompletion = function _ChatCompletionStream_accumulateChatCompletion(chunk) {\n var _a, _b, _c, _d;\n let snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n const { choices, ...rest } = chunk;\n if (!snapshot) {\n snapshot = __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, {\n ...rest,\n choices: [],\n }, \"f\");\n }\n else {\n Object.assign(snapshot, rest);\n }\n for (const { delta, finish_reason, index, logprobs = null, ...other } of chunk.choices) {\n let choice = snapshot.choices[index];\n if (!choice) {\n choice = snapshot.choices[index] = { finish_reason, index, message: {}, logprobs, ...other };\n }\n if (logprobs) {\n if (!choice.logprobs) {\n choice.logprobs = Object.assign({}, logprobs);\n }\n else {\n const { content, refusal, ...rest } = logprobs;\n assertIsEmpty(rest);\n Object.assign(choice.logprobs, rest);\n if (content) {\n (_a = choice.logprobs).content ?? (_a.content = []);\n choice.logprobs.content.push(...content);\n }\n if (refusal) {\n (_b = choice.logprobs).refusal ?? (_b.refusal = []);\n choice.logprobs.refusal.push(...refusal);\n }\n }\n }\n if (finish_reason) {\n choice.finish_reason = finish_reason;\n if (__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\") && hasAutoParseableInput(__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"))) {\n if (finish_reason === 'length') {\n throw new LengthFinishReasonError();\n }\n if (finish_reason === 'content_filter') {\n throw new ContentFilterFinishReasonError();\n }\n }\n }\n Object.assign(choice, other);\n if (!delta)\n continue; // Shouldn't happen; just in case.\n const { content, refusal, function_call, role, tool_calls, ...rest } = delta;\n assertIsEmpty(rest);\n Object.assign(choice.message, rest);\n if (refusal) {\n choice.message.refusal = (choice.message.refusal || '') + refusal;\n }\n if (role)\n choice.message.role = role;\n if (function_call) {\n if (!choice.message.function_call) {\n choice.message.function_call = function_call;\n }\n else {\n if (function_call.name)\n choice.message.function_call.name = function_call.name;\n if (function_call.arguments) {\n (_c = choice.message.function_call).arguments ?? (_c.arguments = '');\n choice.message.function_call.arguments += function_call.arguments;\n }\n }\n }\n if (content) {\n choice.message.content = (choice.message.content || '') + content;\n if (!choice.message.refusal && __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getAutoParseableResponseFormat).call(this)) {\n choice.message.parsed = partialParse(choice.message.content);\n }\n }\n if (tool_calls) {\n if (!choice.message.tool_calls)\n choice.message.tool_calls = [];\n for (const { index, id, type, function: fn, ...rest } of tool_calls) {\n const tool_call = ((_d = choice.message.tool_calls)[index] ?? (_d[index] = {}));\n Object.assign(tool_call, rest);\n if (id)\n tool_call.id = id;\n if (type)\n tool_call.type = type;\n if (fn)\n tool_call.function ?? (tool_call.function = { name: fn.name ?? '', arguments: '' });\n if (fn?.name)\n tool_call.function.name = fn.name;\n if (fn?.arguments) {\n tool_call.function.arguments += fn.arguments;\n if (shouldParseToolCall(__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"), tool_call)) {\n tool_call.function.parsed_arguments = partialParse(tool_call.function.arguments);\n }\n }\n }\n }\n }\n return snapshot;\n }, Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n this.on('chunk', (chunk) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(chunk);\n }\n else {\n pushQueue.push(chunk);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n }\n const chunk = pushQueue.shift();\n return { value: chunk, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n toReadableStream() {\n const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n}\nfunction finalizeChatCompletion(snapshot, params) {\n const { id, choices, created, model, system_fingerprint, ...rest } = snapshot;\n const completion = {\n ...rest,\n id,\n choices: choices.map(({ message, finish_reason, index, logprobs, ...choiceRest }) => {\n if (!finish_reason) {\n throw new OpenAIError(`missing finish_reason for choice ${index}`);\n }\n const { content = null, function_call, tool_calls, ...messageRest } = message;\n const role = message.role; // this is what we expect; in theory it could be different which would make our types a slight lie but would be fine.\n if (!role) {\n throw new OpenAIError(`missing role for choice ${index}`);\n }\n if (function_call) {\n const { arguments: args, name } = function_call;\n if (args == null) {\n throw new OpenAIError(`missing function_call.arguments for choice ${index}`);\n }\n if (!name) {\n throw new OpenAIError(`missing function_call.name for choice ${index}`);\n }\n return {\n ...choiceRest,\n message: {\n content,\n function_call: { arguments: args, name },\n role,\n refusal: message.refusal ?? null,\n },\n finish_reason,\n index,\n logprobs,\n };\n }\n if (tool_calls) {\n return {\n ...choiceRest,\n index,\n finish_reason,\n logprobs,\n message: {\n ...messageRest,\n role,\n content,\n refusal: message.refusal ?? null,\n tool_calls: tool_calls.map((tool_call, i) => {\n const { function: fn, type, id, ...toolRest } = tool_call;\n const { arguments: args, name, ...fnRest } = fn || {};\n if (id == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].id\\n${str(snapshot)}`);\n }\n if (type == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].type\\n${str(snapshot)}`);\n }\n if (name == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.name\\n${str(snapshot)}`);\n }\n if (args == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.arguments\\n${str(snapshot)}`);\n }\n return { ...toolRest, id, type, function: { ...fnRest, name, arguments: args } };\n }),\n },\n };\n }\n return {\n ...choiceRest,\n message: { ...messageRest, content, role, refusal: message.refusal ?? null },\n finish_reason,\n index,\n logprobs,\n };\n }),\n created,\n model,\n object: 'chat.completion',\n ...(system_fingerprint ? { system_fingerprint } : {}),\n };\n return maybeParseChatCompletion(completion, params);\n}\nfunction str(x) {\n return JSON.stringify(x);\n}\n/**\n * Ensures the given argument is an empty object, useful for\n * asserting that all known properties on an object have been\n * destructured.\n */\nfunction assertIsEmpty(obj) {\n return;\n}\nfunction assertNever(_x) { }\n//# sourceMappingURL=ChatCompletionStream.mjs.map","import { ChatCompletionStream } from \"./ChatCompletionStream.mjs\";\nexport class ChatCompletionStreamingRunner extends ChatCompletionStream {\n static fromReadableStream(stream) {\n const runner = new ChatCompletionStreamingRunner(null);\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n /** @deprecated - please use `runTools` instead. */\n static runFunctions(client, params, options) {\n const runner = new ChatCompletionStreamingRunner(null);\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runFunctions' },\n };\n runner._run(() => runner._runFunctions(client, params, opts));\n return runner;\n }\n static runTools(client, params, options) {\n const runner = new ChatCompletionStreamingRunner(\n // @ts-expect-error TODO these types are incompatible\n params);\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n };\n runner._run(() => runner._runTools(client, params, opts));\n return runner;\n }\n}\n//# sourceMappingURL=ChatCompletionStreamingRunner.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { ChatCompletionRunner } from \"../../../lib/ChatCompletionRunner.mjs\";\nimport { ChatCompletionStreamingRunner, } from \"../../../lib/ChatCompletionStreamingRunner.mjs\";\nimport { ChatCompletionStream } from \"../../../lib/ChatCompletionStream.mjs\";\nimport { parseChatCompletion, validateInputTools } from \"../../../lib/parser.mjs\";\nexport { ChatCompletionStreamingRunner, } from \"../../../lib/ChatCompletionStreamingRunner.mjs\";\nexport { ParsingFunction, ParsingToolFunction, } from \"../../../lib/RunnableFunction.mjs\";\nexport { ChatCompletionStream } from \"../../../lib/ChatCompletionStream.mjs\";\nexport { ChatCompletionRunner, } from \"../../../lib/ChatCompletionRunner.mjs\";\nexport class Completions extends APIResource {\n parse(body, options) {\n validateInputTools(body.tools);\n return this._client.chat.completions\n .create(body, {\n ...options,\n headers: {\n ...options?.headers,\n 'X-Stainless-Helper-Method': 'beta.chat.completions.parse',\n },\n })\n ._thenUnwrap((completion) => parseChatCompletion(completion, body));\n }\n runFunctions(body, options) {\n if (body.stream) {\n return ChatCompletionStreamingRunner.runFunctions(this._client, body, options);\n }\n return ChatCompletionRunner.runFunctions(this._client, body, options);\n }\n runTools(body, options) {\n if (body.stream) {\n return ChatCompletionStreamingRunner.runTools(this._client, body, options);\n }\n return ChatCompletionRunner.runTools(this._client, body, options);\n }\n /**\n * Creates a chat completion stream\n */\n stream(body, options) {\n return ChatCompletionStream.createChatCompletion(this._client, body, options);\n }\n}\n//# sourceMappingURL=completions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport * as CompletionsAPI from \"./completions.mjs\";\nexport class Chat extends APIResource {\n constructor() {\n super(...arguments);\n this.completions = new CompletionsAPI.Completions(this._client);\n }\n}\n(function (Chat) {\n Chat.Completions = CompletionsAPI.Completions;\n})(Chat || (Chat = {}));\n//# sourceMappingURL=chat.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nexport class Sessions extends APIResource {\n /**\n * Create an ephemeral API token for use in client-side applications with the\n * Realtime API. Can be configured with the same session parameters as the\n * `session.update` client event.\n *\n * It responds with a session object, plus a `client_secret` key which contains a\n * usable ephemeral API token that can be used to authenticate browser clients for\n * the Realtime API.\n *\n * @example\n * ```ts\n * const session =\n * await client.beta.realtime.sessions.create();\n * ```\n */\n create(body, options) {\n return this._client.post('/realtime/sessions', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\n//# sourceMappingURL=sessions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nexport class TranscriptionSessions extends APIResource {\n /**\n * Create an ephemeral API token for use in client-side applications with the\n * Realtime API specifically for realtime transcriptions. Can be configured with\n * the same session parameters as the `transcription_session.update` client event.\n *\n * It responds with a session object, plus a `client_secret` key which contains a\n * usable ephemeral API token that can be used to authenticate browser clients for\n * the Realtime API.\n *\n * @example\n * ```ts\n * const transcriptionSession =\n * await client.beta.realtime.transcriptionSessions.create();\n * ```\n */\n create(body, options) {\n return this._client.post('/realtime/transcription_sessions', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\n//# sourceMappingURL=transcription-sessions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport * as SessionsAPI from \"./sessions.mjs\";\nimport { Sessions, } from \"./sessions.mjs\";\nimport * as TranscriptionSessionsAPI from \"./transcription-sessions.mjs\";\nimport { TranscriptionSessions, } from \"./transcription-sessions.mjs\";\nexport class Realtime extends APIResource {\n constructor() {\n super(...arguments);\n this.sessions = new SessionsAPI.Sessions(this._client);\n this.transcriptionSessions = new TranscriptionSessionsAPI.TranscriptionSessions(this._client);\n }\n}\nRealtime.Sessions = Sessions;\nRealtime.TranscriptionSessions = TranscriptionSessions;\n//# sourceMappingURL=realtime.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\n/**\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Messages extends APIResource {\n /**\n * Create a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n create(threadId, body, options) {\n return this._client.post(`/threads/${threadId}/messages`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieve a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(threadId, messageId, options) {\n return this._client.get(`/threads/${threadId}/messages/${messageId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n update(threadId, messageId, body, options) {\n return this._client.post(`/threads/${threadId}/messages/${messageId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(threadId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(threadId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/messages`, MessagesPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Deletes a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n del(threadId, messageId, options) {\n return this._client.delete(`/threads/${threadId}/messages/${messageId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexport class MessagesPage extends CursorPage {\n}\nMessages.MessagesPage = MessagesPage;\n//# sourceMappingURL=messages.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../../core.mjs\";\nimport { CursorPage } from \"../../../../pagination.mjs\";\n/**\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Steps extends APIResource {\n retrieve(threadId, runId, stepId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.retrieve(threadId, runId, stepId, {}, query);\n }\n return this._client.get(`/threads/${threadId}/runs/${runId}/steps/${stepId}`, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(threadId, runId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(threadId, runId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/runs/${runId}/steps`, RunStepsPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexport class RunStepsPage extends CursorPage {\n}\nSteps.RunStepsPage = RunStepsPage;\n//# sourceMappingURL=steps.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../../core.mjs\";\nimport { AssistantStream } from \"../../../../lib/AssistantStream.mjs\";\nimport { sleep } from \"../../../../core.mjs\";\nimport * as StepsAPI from \"./steps.mjs\";\nimport { RunStepsPage, Steps, } from \"./steps.mjs\";\nimport { CursorPage } from \"../../../../pagination.mjs\";\n/**\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Runs extends APIResource {\n constructor() {\n super(...arguments);\n this.steps = new StepsAPI.Steps(this._client);\n }\n create(threadId, params, options) {\n const { include, ...body } = params;\n return this._client.post(`/threads/${threadId}/runs`, {\n query: { include },\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n stream: params.stream ?? false,\n });\n }\n /**\n * Retrieves a run.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(threadId, runId, options) {\n return this._client.get(`/threads/${threadId}/runs/${runId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies a run.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n update(threadId, runId, body, options) {\n return this._client.post(`/threads/${threadId}/runs/${runId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(threadId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(threadId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/runs`, RunsPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Cancels a run that is `in_progress`.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n cancel(threadId, runId, options) {\n return this._client.post(`/threads/${threadId}/runs/${runId}/cancel`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * A helper to create a run an poll for a terminal state. More information on Run\n * lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async createAndPoll(threadId, body, options) {\n const run = await this.create(threadId, body, options);\n return await this.poll(threadId, run.id, options);\n }\n /**\n * Create a Run stream\n *\n * @deprecated use `stream` instead\n */\n createAndStream(threadId, body, options) {\n return AssistantStream.createAssistantStream(threadId, this._client.beta.threads.runs, body, options);\n }\n /**\n * A helper to poll a run status until it reaches a terminal state. More\n * information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async poll(threadId, runId, options) {\n const headers = { ...options?.headers, 'X-Stainless-Poll-Helper': 'true' };\n if (options?.pollIntervalMs) {\n headers['X-Stainless-Custom-Poll-Interval'] = options.pollIntervalMs.toString();\n }\n while (true) {\n const { data: run, response } = await this.retrieve(threadId, runId, {\n ...options,\n headers: { ...options?.headers, ...headers },\n }).withResponse();\n switch (run.status) {\n //If we are in any sort of intermediate state we poll\n case 'queued':\n case 'in_progress':\n case 'cancelling':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await sleep(sleepInterval);\n break;\n //We return the run in any terminal state.\n case 'requires_action':\n case 'incomplete':\n case 'cancelled':\n case 'completed':\n case 'failed':\n case 'expired':\n return run;\n }\n }\n }\n /**\n * Create a Run stream\n */\n stream(threadId, body, options) {\n return AssistantStream.createAssistantStream(threadId, this._client.beta.threads.runs, body, options);\n }\n submitToolOutputs(threadId, runId, body, options) {\n return this._client.post(`/threads/${threadId}/runs/${runId}/submit_tool_outputs`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n stream: body.stream ?? false,\n });\n }\n /**\n * A helper to submit a tool output to a run and poll for a terminal run state.\n * More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async submitToolOutputsAndPoll(threadId, runId, body, options) {\n const run = await this.submitToolOutputs(threadId, runId, body, options);\n return await this.poll(threadId, run.id, options);\n }\n /**\n * Submit the tool outputs from a previous run and stream the run to a terminal\n * state. More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n submitToolOutputsStream(threadId, runId, body, options) {\n return AssistantStream.createToolAssistantStream(threadId, runId, this._client.beta.threads.runs, body, options);\n }\n}\nexport class RunsPage extends CursorPage {\n}\nRuns.RunsPage = RunsPage;\nRuns.Steps = Steps;\nRuns.RunStepsPage = RunStepsPage;\n//# sourceMappingURL=runs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport { AssistantStream } from \"../../../lib/AssistantStream.mjs\";\nimport * as MessagesAPI from \"./messages.mjs\";\nimport { Messages, MessagesPage, } from \"./messages.mjs\";\nimport * as RunsAPI from \"./runs/runs.mjs\";\nimport { Runs, RunsPage, } from \"./runs/runs.mjs\";\n/**\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Threads extends APIResource {\n constructor() {\n super(...arguments);\n this.runs = new RunsAPI.Runs(this._client);\n this.messages = new MessagesAPI.Messages(this._client);\n }\n create(body = {}, options) {\n if (isRequestOptions(body)) {\n return this.create({}, body);\n }\n return this._client.post('/threads', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(threadId, options) {\n return this._client.get(`/threads/${threadId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n update(threadId, body, options) {\n return this._client.post(`/threads/${threadId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Delete a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n del(threadId, options) {\n return this._client.delete(`/threads/${threadId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n createAndRun(body, options) {\n return this._client.post('/threads/runs', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n stream: body.stream ?? false,\n });\n }\n /**\n * A helper to create a thread, start a run and then poll for a terminal state.\n * More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async createAndRunPoll(body, options) {\n const run = await this.createAndRun(body, options);\n return await this.runs.poll(run.thread_id, run.id, options);\n }\n /**\n * Create a thread and stream the run back\n */\n createAndRunStream(body, options) {\n return AssistantStream.createThreadAssistantStream(body, this._client.beta.threads, options);\n }\n}\nThreads.Runs = Runs;\nThreads.RunsPage = RunsPage;\nThreads.Messages = Messages;\nThreads.MessagesPage = MessagesPage;\n//# sourceMappingURL=threads.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as AssistantsAPI from \"./assistants.mjs\";\nimport * as ChatAPI from \"./chat/chat.mjs\";\nimport { Assistants, AssistantsPage, } from \"./assistants.mjs\";\nimport * as RealtimeAPI from \"./realtime/realtime.mjs\";\nimport { Realtime, } from \"./realtime/realtime.mjs\";\nimport * as ThreadsAPI from \"./threads/threads.mjs\";\nimport { Threads, } from \"./threads/threads.mjs\";\nimport { Chat } from \"./chat/chat.mjs\";\nexport class Beta extends APIResource {\n constructor() {\n super(...arguments);\n this.realtime = new RealtimeAPI.Realtime(this._client);\n this.chat = new ChatAPI.Chat(this._client);\n this.assistants = new AssistantsAPI.Assistants(this._client);\n this.threads = new ThreadsAPI.Threads(this._client);\n }\n}\nBeta.Realtime = Realtime;\nBeta.Assistants = Assistants;\nBeta.AssistantsPage = AssistantsPage;\nBeta.Threads = Threads;\n//# sourceMappingURL=beta.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nexport class Completions extends APIResource {\n create(body, options) {\n return this._client.post('/completions', { body, ...options, stream: body.stream ?? false });\n }\n}\n//# sourceMappingURL=completions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nexport class Content extends APIResource {\n /**\n * Retrieve Container File Content\n */\n retrieve(containerId, fileId, options) {\n return this._client.get(`/containers/${containerId}/files/${fileId}/content`, {\n ...options,\n headers: { Accept: 'application/binary', ...options?.headers },\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=content.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport * as Core from \"../../../core.mjs\";\nimport * as ContentAPI from \"./content.mjs\";\nimport { Content } from \"./content.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\nexport class Files extends APIResource {\n constructor() {\n super(...arguments);\n this.content = new ContentAPI.Content(this._client);\n }\n /**\n * Create a Container File\n *\n * You can send either a multipart/form-data request with the raw file content, or\n * a JSON request with a file ID.\n */\n create(containerId, body, options) {\n return this._client.post(`/containers/${containerId}/files`, Core.multipartFormRequestOptions({ body, ...options }));\n }\n /**\n * Retrieve Container File\n */\n retrieve(containerId, fileId, options) {\n return this._client.get(`/containers/${containerId}/files/${fileId}`, options);\n }\n list(containerId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(containerId, {}, query);\n }\n return this._client.getAPIList(`/containers/${containerId}/files`, FileListResponsesPage, {\n query,\n ...options,\n });\n }\n /**\n * Delete Container File\n */\n del(containerId, fileId, options) {\n return this._client.delete(`/containers/${containerId}/files/${fileId}`, {\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n}\nexport class FileListResponsesPage extends CursorPage {\n}\nFiles.FileListResponsesPage = FileListResponsesPage;\nFiles.Content = Content;\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport * as FilesAPI from \"./files/files.mjs\";\nimport { FileListResponsesPage, Files, } from \"./files/files.mjs\";\nimport { CursorPage } from \"../../pagination.mjs\";\nexport class Containers extends APIResource {\n constructor() {\n super(...arguments);\n this.files = new FilesAPI.Files(this._client);\n }\n /**\n * Create Container\n */\n create(body, options) {\n return this._client.post('/containers', { body, ...options });\n }\n /**\n * Retrieve Container\n */\n retrieve(containerId, options) {\n return this._client.get(`/containers/${containerId}`, options);\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/containers', ContainerListResponsesPage, { query, ...options });\n }\n /**\n * Delete Container\n */\n del(containerId, options) {\n return this._client.delete(`/containers/${containerId}`, {\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n}\nexport class ContainerListResponsesPage extends CursorPage {\n}\nContainers.ContainerListResponsesPage = ContainerListResponsesPage;\nContainers.Files = Files;\nContainers.FileListResponsesPage = FileListResponsesPage;\n//# sourceMappingURL=containers.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport * as Core from \"../core.mjs\";\nexport class Embeddings extends APIResource {\n /**\n * Creates an embedding vector representing the input text.\n *\n * @example\n * ```ts\n * const createEmbeddingResponse =\n * await client.embeddings.create({\n * input: 'The quick brown fox jumped over the lazy dog',\n * model: 'text-embedding-3-small',\n * });\n * ```\n */\n create(body, options) {\n const hasUserProvidedEncodingFormat = !!body.encoding_format;\n // No encoding_format specified, defaulting to base64 for performance reasons\n // See https://github.com/openai/openai-node/pull/1312\n let encoding_format = hasUserProvidedEncodingFormat ? body.encoding_format : 'base64';\n if (hasUserProvidedEncodingFormat) {\n Core.debug('Request', 'User defined encoding_format:', body.encoding_format);\n }\n const response = this._client.post('/embeddings', {\n body: {\n ...body,\n encoding_format: encoding_format,\n },\n ...options,\n });\n // if the user specified an encoding_format, return the response as-is\n if (hasUserProvidedEncodingFormat) {\n return response;\n }\n // in this stage, we are sure the user did not specify an encoding_format\n // and we defaulted to base64 for performance reasons\n // we are sure then that the response is base64 encoded, let's decode it\n // the returned result will be a float32 array since this is OpenAI API's default encoding\n Core.debug('response', 'Decoding base64 embeddings to float32 array');\n return response._thenUnwrap((response) => {\n if (response && response.data) {\n response.data.forEach((embeddingBase64Obj) => {\n const embeddingBase64Str = embeddingBase64Obj.embedding;\n embeddingBase64Obj.embedding = Core.toFloat32Array(embeddingBase64Str);\n });\n }\n return response;\n });\n }\n}\n//# sourceMappingURL=embeddings.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\nexport class OutputItems extends APIResource {\n /**\n * Get an evaluation run output item by ID.\n */\n retrieve(evalId, runId, outputItemId, options) {\n return this._client.get(`/evals/${evalId}/runs/${runId}/output_items/${outputItemId}`, options);\n }\n list(evalId, runId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(evalId, runId, {}, query);\n }\n return this._client.getAPIList(`/evals/${evalId}/runs/${runId}/output_items`, OutputItemListResponsesPage, { query, ...options });\n }\n}\nexport class OutputItemListResponsesPage extends CursorPage {\n}\nOutputItems.OutputItemListResponsesPage = OutputItemListResponsesPage;\n//# sourceMappingURL=output-items.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport * as OutputItemsAPI from \"./output-items.mjs\";\nimport { OutputItemListResponsesPage, OutputItems, } from \"./output-items.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\nexport class Runs extends APIResource {\n constructor() {\n super(...arguments);\n this.outputItems = new OutputItemsAPI.OutputItems(this._client);\n }\n /**\n * Kicks off a new run for a given evaluation, specifying the data source, and what\n * model configuration to use to test. The datasource will be validated against the\n * schema specified in the config of the evaluation.\n */\n create(evalId, body, options) {\n return this._client.post(`/evals/${evalId}/runs`, { body, ...options });\n }\n /**\n * Get an evaluation run by ID.\n */\n retrieve(evalId, runId, options) {\n return this._client.get(`/evals/${evalId}/runs/${runId}`, options);\n }\n list(evalId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(evalId, {}, query);\n }\n return this._client.getAPIList(`/evals/${evalId}/runs`, RunListResponsesPage, { query, ...options });\n }\n /**\n * Delete an eval run.\n */\n del(evalId, runId, options) {\n return this._client.delete(`/evals/${evalId}/runs/${runId}`, options);\n }\n /**\n * Cancel an ongoing evaluation run.\n */\n cancel(evalId, runId, options) {\n return this._client.post(`/evals/${evalId}/runs/${runId}`, options);\n }\n}\nexport class RunListResponsesPage extends CursorPage {\n}\nRuns.RunListResponsesPage = RunListResponsesPage;\nRuns.OutputItems = OutputItems;\nRuns.OutputItemListResponsesPage = OutputItemListResponsesPage;\n//# sourceMappingURL=runs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport * as RunsAPI from \"./runs/runs.mjs\";\nimport { RunListResponsesPage, Runs, } from \"./runs/runs.mjs\";\nimport { CursorPage } from \"../../pagination.mjs\";\nexport class Evals extends APIResource {\n constructor() {\n super(...arguments);\n this.runs = new RunsAPI.Runs(this._client);\n }\n /**\n * Create the structure of an evaluation that can be used to test a model's\n * performance. An evaluation is a set of testing criteria and the config for a\n * data source, which dictates the schema of the data used in the evaluation. After\n * creating an evaluation, you can run it on different models and model parameters.\n * We support several types of graders and datasources. For more information, see\n * the [Evals guide](https://platform.openai.com/docs/guides/evals).\n */\n create(body, options) {\n return this._client.post('/evals', { body, ...options });\n }\n /**\n * Get an evaluation by ID.\n */\n retrieve(evalId, options) {\n return this._client.get(`/evals/${evalId}`, options);\n }\n /**\n * Update certain properties of an evaluation.\n */\n update(evalId, body, options) {\n return this._client.post(`/evals/${evalId}`, { body, ...options });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/evals', EvalListResponsesPage, { query, ...options });\n }\n /**\n * Delete an evaluation.\n */\n del(evalId, options) {\n return this._client.delete(`/evals/${evalId}`, options);\n }\n}\nexport class EvalListResponsesPage extends CursorPage {\n}\nEvals.EvalListResponsesPage = EvalListResponsesPage;\nEvals.Runs = Runs;\nEvals.RunListResponsesPage = RunListResponsesPage;\n//# sourceMappingURL=evals.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { sleep } from \"../core.mjs\";\nimport { APIConnectionTimeoutError } from \"../error.mjs\";\nimport * as Core from \"../core.mjs\";\nimport { CursorPage } from \"../pagination.mjs\";\nexport class Files extends APIResource {\n /**\n * Upload a file that can be used across various endpoints. Individual files can be\n * up to 512 MB, and the size of all files uploaded by one organization can be up\n * to 100 GB.\n *\n * The Assistants API supports files up to 2 million tokens and of specific file\n * types. See the\n * [Assistants Tools guide](https://platform.openai.com/docs/assistants/tools) for\n * details.\n *\n * The Fine-tuning API only supports `.jsonl` files. The input also has certain\n * required formats for fine-tuning\n * [chat](https://platform.openai.com/docs/api-reference/fine-tuning/chat-input) or\n * [completions](https://platform.openai.com/docs/api-reference/fine-tuning/completions-input)\n * models.\n *\n * The Batch API only supports `.jsonl` files up to 200 MB in size. The input also\n * has a specific required\n * [format](https://platform.openai.com/docs/api-reference/batch/request-input).\n *\n * Please [contact us](https://help.openai.com/) if you need to increase these\n * storage limits.\n */\n create(body, options) {\n return this._client.post('/files', Core.multipartFormRequestOptions({ body, ...options }));\n }\n /**\n * Returns information about a specific file.\n */\n retrieve(fileId, options) {\n return this._client.get(`/files/${fileId}`, options);\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/files', FileObjectsPage, { query, ...options });\n }\n /**\n * Delete a file.\n */\n del(fileId, options) {\n return this._client.delete(`/files/${fileId}`, options);\n }\n /**\n * Returns the contents of the specified file.\n */\n content(fileId, options) {\n return this._client.get(`/files/${fileId}/content`, {\n ...options,\n headers: { Accept: 'application/binary', ...options?.headers },\n __binaryResponse: true,\n });\n }\n /**\n * Returns the contents of the specified file.\n *\n * @deprecated The `.content()` method should be used instead\n */\n retrieveContent(fileId, options) {\n return this._client.get(`/files/${fileId}/content`, options);\n }\n /**\n * Waits for the given file to be processed, default timeout is 30 mins.\n */\n async waitForProcessing(id, { pollInterval = 5000, maxWait = 30 * 60 * 1000 } = {}) {\n const TERMINAL_STATES = new Set(['processed', 'error', 'deleted']);\n const start = Date.now();\n let file = await this.retrieve(id);\n while (!file.status || !TERMINAL_STATES.has(file.status)) {\n await sleep(pollInterval);\n file = await this.retrieve(id);\n if (Date.now() - start > maxWait) {\n throw new APIConnectionTimeoutError({\n message: `Giving up on waiting for file ${id} to finish processing after ${maxWait} milliseconds.`,\n });\n }\n }\n return file;\n }\n}\nexport class FileObjectsPage extends CursorPage {\n}\nFiles.FileObjectsPage = FileObjectsPage;\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nexport class Methods extends APIResource {\n}\n//# sourceMappingURL=methods.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nexport class Graders extends APIResource {\n /**\n * Run a grader.\n *\n * @example\n * ```ts\n * const response = await client.fineTuning.alpha.graders.run({\n * grader: {\n * input: 'input',\n * name: 'name',\n * operation: 'eq',\n * reference: 'reference',\n * type: 'string_check',\n * },\n * model_sample: 'model_sample',\n * reference_answer: 'string',\n * });\n * ```\n */\n run(body, options) {\n return this._client.post('/fine_tuning/alpha/graders/run', { body, ...options });\n }\n /**\n * Validate a grader.\n *\n * @example\n * ```ts\n * const response =\n * await client.fineTuning.alpha.graders.validate({\n * grader: {\n * input: 'input',\n * name: 'name',\n * operation: 'eq',\n * reference: 'reference',\n * type: 'string_check',\n * },\n * });\n * ```\n */\n validate(body, options) {\n return this._client.post('/fine_tuning/alpha/graders/validate', { body, ...options });\n }\n}\n//# sourceMappingURL=graders.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport * as GradersAPI from \"./graders.mjs\";\nimport { Graders, } from \"./graders.mjs\";\nexport class Alpha extends APIResource {\n constructor() {\n super(...arguments);\n this.graders = new GradersAPI.Graders(this._client);\n }\n}\nAlpha.Graders = Graders;\n//# sourceMappingURL=alpha.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport { Page } from \"../../../pagination.mjs\";\nexport class Permissions extends APIResource {\n /**\n * **NOTE:** Calling this endpoint requires an [admin API key](../admin-api-keys).\n *\n * This enables organization owners to share fine-tuned models with other projects\n * in their organization.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const permissionCreateResponse of client.fineTuning.checkpoints.permissions.create(\n * 'ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd',\n * { project_ids: ['string'] },\n * )) {\n * // ...\n * }\n * ```\n */\n create(fineTunedModelCheckpoint, body, options) {\n return this._client.getAPIList(`/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions`, PermissionCreateResponsesPage, { body, method: 'post', ...options });\n }\n retrieve(fineTunedModelCheckpoint, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.retrieve(fineTunedModelCheckpoint, {}, query);\n }\n return this._client.get(`/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions`, {\n query,\n ...options,\n });\n }\n /**\n * **NOTE:** This endpoint requires an [admin API key](../admin-api-keys).\n *\n * Organization owners can use this endpoint to delete a permission for a\n * fine-tuned model checkpoint.\n *\n * @example\n * ```ts\n * const permission =\n * await client.fineTuning.checkpoints.permissions.del(\n * 'ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd',\n * 'cp_zc4Q7MP6XxulcVzj4MZdwsAB',\n * );\n * ```\n */\n del(fineTunedModelCheckpoint, permissionId, options) {\n return this._client.delete(`/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions/${permissionId}`, options);\n }\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class PermissionCreateResponsesPage extends Page {\n}\nPermissions.PermissionCreateResponsesPage = PermissionCreateResponsesPage;\n//# sourceMappingURL=permissions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport * as PermissionsAPI from \"./permissions.mjs\";\nimport { PermissionCreateResponsesPage, Permissions, } from \"./permissions.mjs\";\nexport class Checkpoints extends APIResource {\n constructor() {\n super(...arguments);\n this.permissions = new PermissionsAPI.Permissions(this._client);\n }\n}\nCheckpoints.Permissions = Permissions;\nCheckpoints.PermissionCreateResponsesPage = PermissionCreateResponsesPage;\n//# sourceMappingURL=checkpoints.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\nexport class Checkpoints extends APIResource {\n list(fineTuningJobId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(fineTuningJobId, {}, query);\n }\n return this._client.getAPIList(`/fine_tuning/jobs/${fineTuningJobId}/checkpoints`, FineTuningJobCheckpointsPage, { query, ...options });\n }\n}\nexport class FineTuningJobCheckpointsPage extends CursorPage {\n}\nCheckpoints.FineTuningJobCheckpointsPage = FineTuningJobCheckpointsPage;\n//# sourceMappingURL=checkpoints.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport * as CheckpointsAPI from \"./checkpoints.mjs\";\nimport { Checkpoints, FineTuningJobCheckpointsPage, } from \"./checkpoints.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\nexport class Jobs extends APIResource {\n constructor() {\n super(...arguments);\n this.checkpoints = new CheckpointsAPI.Checkpoints(this._client);\n }\n /**\n * Creates a fine-tuning job which begins the process of creating a new model from\n * a given dataset.\n *\n * Response includes details of the enqueued job including job status and the name\n * of the fine-tuned models once complete.\n *\n * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.create({\n * model: 'gpt-4o-mini',\n * training_file: 'file-abc123',\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/fine_tuning/jobs', { body, ...options });\n }\n /**\n * Get info about a fine-tuning job.\n *\n * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.retrieve(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n retrieve(fineTuningJobId, options) {\n return this._client.get(`/fine_tuning/jobs/${fineTuningJobId}`, options);\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/fine_tuning/jobs', FineTuningJobsPage, { query, ...options });\n }\n /**\n * Immediately cancel a fine-tune job.\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.cancel(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n cancel(fineTuningJobId, options) {\n return this._client.post(`/fine_tuning/jobs/${fineTuningJobId}/cancel`, options);\n }\n listEvents(fineTuningJobId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.listEvents(fineTuningJobId, {}, query);\n }\n return this._client.getAPIList(`/fine_tuning/jobs/${fineTuningJobId}/events`, FineTuningJobEventsPage, {\n query,\n ...options,\n });\n }\n /**\n * Pause a fine-tune job.\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.pause(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n pause(fineTuningJobId, options) {\n return this._client.post(`/fine_tuning/jobs/${fineTuningJobId}/pause`, options);\n }\n /**\n * Resume a fine-tune job.\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.resume(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n resume(fineTuningJobId, options) {\n return this._client.post(`/fine_tuning/jobs/${fineTuningJobId}/resume`, options);\n }\n}\nexport class FineTuningJobsPage extends CursorPage {\n}\nexport class FineTuningJobEventsPage extends CursorPage {\n}\nJobs.FineTuningJobsPage = FineTuningJobsPage;\nJobs.FineTuningJobEventsPage = FineTuningJobEventsPage;\nJobs.Checkpoints = Checkpoints;\nJobs.FineTuningJobCheckpointsPage = FineTuningJobCheckpointsPage;\n//# sourceMappingURL=jobs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as MethodsAPI from \"./methods.mjs\";\nimport { Methods, } from \"./methods.mjs\";\nimport * as AlphaAPI from \"./alpha/alpha.mjs\";\nimport { Alpha } from \"./alpha/alpha.mjs\";\nimport * as CheckpointsAPI from \"./checkpoints/checkpoints.mjs\";\nimport { Checkpoints } from \"./checkpoints/checkpoints.mjs\";\nimport * as JobsAPI from \"./jobs/jobs.mjs\";\nimport { FineTuningJobEventsPage, FineTuningJobsPage, Jobs, } from \"./jobs/jobs.mjs\";\nexport class FineTuning extends APIResource {\n constructor() {\n super(...arguments);\n this.methods = new MethodsAPI.Methods(this._client);\n this.jobs = new JobsAPI.Jobs(this._client);\n this.checkpoints = new CheckpointsAPI.Checkpoints(this._client);\n this.alpha = new AlphaAPI.Alpha(this._client);\n }\n}\nFineTuning.Methods = Methods;\nFineTuning.Jobs = Jobs;\nFineTuning.FineTuningJobsPage = FineTuningJobsPage;\nFineTuning.FineTuningJobEventsPage = FineTuningJobEventsPage;\nFineTuning.Checkpoints = Checkpoints;\nFineTuning.Alpha = Alpha;\n//# sourceMappingURL=fine-tuning.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nexport class GraderModels extends APIResource {\n}\n//# sourceMappingURL=grader-models.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as GraderModelsAPI from \"./grader-models.mjs\";\nimport { GraderModels, } from \"./grader-models.mjs\";\nexport class Graders extends APIResource {\n constructor() {\n super(...arguments);\n this.graderModels = new GraderModelsAPI.GraderModels(this._client);\n }\n}\nGraders.GraderModels = GraderModels;\n//# sourceMappingURL=graders.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport * as Core from \"../core.mjs\";\nexport class Images extends APIResource {\n /**\n * Creates a variation of a given image. This endpoint only supports `dall-e-2`.\n *\n * @example\n * ```ts\n * const imagesResponse = await client.images.createVariation({\n * image: fs.createReadStream('otter.png'),\n * });\n * ```\n */\n createVariation(body, options) {\n return this._client.post('/images/variations', Core.multipartFormRequestOptions({ body, ...options }));\n }\n /**\n * Creates an edited or extended image given one or more source images and a\n * prompt. This endpoint only supports `gpt-image-1` and `dall-e-2`.\n *\n * @example\n * ```ts\n * const imagesResponse = await client.images.edit({\n * image: fs.createReadStream('path/to/file'),\n * prompt: 'A cute baby sea otter wearing a beret',\n * });\n * ```\n */\n edit(body, options) {\n return this._client.post('/images/edits', Core.multipartFormRequestOptions({ body, ...options }));\n }\n /**\n * Creates an image given a prompt.\n * [Learn more](https://platform.openai.com/docs/guides/images).\n *\n * @example\n * ```ts\n * const imagesResponse = await client.images.generate({\n * prompt: 'A cute baby sea otter',\n * });\n * ```\n */\n generate(body, options) {\n return this._client.post('/images/generations', { body, ...options });\n }\n}\n//# sourceMappingURL=images.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { Page } from \"../pagination.mjs\";\nexport class Models extends APIResource {\n /**\n * Retrieves a model instance, providing basic information about the model such as\n * the owner and permissioning.\n */\n retrieve(model, options) {\n return this._client.get(`/models/${model}`, options);\n }\n /**\n * Lists the currently available models, and provides basic information about each\n * one such as the owner and availability.\n */\n list(options) {\n return this._client.getAPIList('/models', ModelsPage, options);\n }\n /**\n * Delete a fine-tuned model. You must have the Owner role in your organization to\n * delete a model.\n */\n del(model, options) {\n return this._client.delete(`/models/${model}`, options);\n }\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class ModelsPage extends Page {\n}\nModels.ModelsPage = ModelsPage;\n//# sourceMappingURL=models.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nexport class Moderations extends APIResource {\n /**\n * Classifies if text and/or image inputs are potentially harmful. Learn more in\n * the [moderation guide](https://platform.openai.com/docs/guides/moderation).\n */\n create(body, options) {\n return this._client.post('/moderations', { body, ...options });\n }\n}\n//# sourceMappingURL=moderations.mjs.map","import { OpenAIError } from \"../error.mjs\";\nimport { isAutoParsableResponseFormat } from \"../lib/parser.mjs\";\nexport function maybeParseResponse(response, params) {\n if (!params || !hasAutoParseableInput(params)) {\n return {\n ...response,\n output_parsed: null,\n output: response.output.map((item) => {\n if (item.type === 'function_call') {\n return {\n ...item,\n parsed_arguments: null,\n };\n }\n if (item.type === 'message') {\n return {\n ...item,\n content: item.content.map((content) => ({\n ...content,\n parsed: null,\n })),\n };\n }\n else {\n return item;\n }\n }),\n };\n }\n return parseResponse(response, params);\n}\nexport function parseResponse(response, params) {\n const output = response.output.map((item) => {\n if (item.type === 'function_call') {\n return {\n ...item,\n parsed_arguments: parseToolCall(params, item),\n };\n }\n if (item.type === 'message') {\n const content = item.content.map((content) => {\n if (content.type === 'output_text') {\n return {\n ...content,\n parsed: parseTextFormat(params, content.text),\n };\n }\n return content;\n });\n return {\n ...item,\n content,\n };\n }\n return item;\n });\n const parsed = Object.assign({}, response, { output });\n if (!Object.getOwnPropertyDescriptor(response, 'output_text')) {\n addOutputText(parsed);\n }\n Object.defineProperty(parsed, 'output_parsed', {\n enumerable: true,\n get() {\n for (const output of parsed.output) {\n if (output.type !== 'message') {\n continue;\n }\n for (const content of output.content) {\n if (content.type === 'output_text' && content.parsed !== null) {\n return content.parsed;\n }\n }\n }\n return null;\n },\n });\n return parsed;\n}\nfunction parseTextFormat(params, content) {\n if (params.text?.format?.type !== 'json_schema') {\n return null;\n }\n if ('$parseRaw' in params.text?.format) {\n const text_format = params.text?.format;\n return text_format.$parseRaw(content);\n }\n return JSON.parse(content);\n}\nexport function hasAutoParseableInput(params) {\n if (isAutoParsableResponseFormat(params.text?.format)) {\n return true;\n }\n return false;\n}\nexport function makeParseableResponseTool(tool, { parser, callback, }) {\n const obj = { ...tool };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-tool',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n $callback: {\n value: callback,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function isAutoParsableTool(tool) {\n return tool?.['$brand'] === 'auto-parseable-tool';\n}\nfunction getInputToolByName(input_tools, name) {\n return input_tools.find((tool) => tool.type === 'function' && tool.name === name);\n}\nfunction parseToolCall(params, toolCall) {\n const inputTool = getInputToolByName(params.tools ?? [], toolCall.name);\n return {\n ...toolCall,\n ...toolCall,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCall.arguments)\n : inputTool?.strict ? JSON.parse(toolCall.arguments)\n : null,\n };\n}\nexport function shouldParseToolCall(params, toolCall) {\n if (!params) {\n return false;\n }\n const inputTool = getInputToolByName(params.tools ?? [], toolCall.name);\n return isAutoParsableTool(inputTool) || inputTool?.strict || false;\n}\nexport function validateInputTools(tools) {\n for (const tool of tools ?? []) {\n if (tool.type !== 'function') {\n throw new OpenAIError(`Currently only \\`function\\` tool types support auto-parsing; Received \\`${tool.type}\\``);\n }\n if (tool.function.strict !== true) {\n throw new OpenAIError(`The \\`${tool.function.name}\\` tool is not marked with \\`strict: true\\`. Only strict function tools can be auto-parsed`);\n }\n }\n}\nexport function addOutputText(rsp) {\n const texts = [];\n for (const output of rsp.output) {\n if (output.type !== 'message') {\n continue;\n }\n for (const content of output.content) {\n if (content.type === 'output_text') {\n texts.push(content.text);\n }\n }\n }\n rsp.output_text = texts.join('');\n}\n//# sourceMappingURL=ResponsesParser.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport { ResponseItemsPage } from \"./responses.mjs\";\nexport class InputItems extends APIResource {\n list(responseId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(responseId, {}, query);\n }\n return this._client.getAPIList(`/responses/${responseId}/input_items`, ResponseItemsPage, {\n query,\n ...options,\n });\n }\n}\nexport { ResponseItemsPage };\n//# sourceMappingURL=input-items.mjs.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ResponseStream_instances, _ResponseStream_params, _ResponseStream_currentResponseSnapshot, _ResponseStream_finalResponse, _ResponseStream_beginRequest, _ResponseStream_addEvent, _ResponseStream_endRequest, _ResponseStream_accumulateResponse;\nimport { APIUserAbortError, OpenAIError } from \"../../error.mjs\";\nimport { EventStream } from \"../EventStream.mjs\";\nimport { maybeParseResponse } from \"../ResponsesParser.mjs\";\nexport class ResponseStream extends EventStream {\n constructor(params) {\n super();\n _ResponseStream_instances.add(this);\n _ResponseStream_params.set(this, void 0);\n _ResponseStream_currentResponseSnapshot.set(this, void 0);\n _ResponseStream_finalResponse.set(this, void 0);\n __classPrivateFieldSet(this, _ResponseStream_params, params, \"f\");\n }\n static createResponse(client, params, options) {\n const runner = new ResponseStream(params);\n runner._run(() => runner._createOrRetrieveResponse(client, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n async _createOrRetrieveResponse(client, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_beginRequest).call(this);\n let stream;\n let starting_after = null;\n if ('response_id' in params) {\n stream = await client.responses.retrieve(params.response_id, { stream: true }, { ...options, signal: this.controller.signal, stream: true });\n starting_after = params.starting_after ?? null;\n }\n else {\n stream = await client.responses.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n }\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_addEvent).call(this, event, starting_after);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_endRequest).call(this);\n }\n [(_ResponseStream_params = new WeakMap(), _ResponseStream_currentResponseSnapshot = new WeakMap(), _ResponseStream_finalResponse = new WeakMap(), _ResponseStream_instances = new WeakSet(), _ResponseStream_beginRequest = function _ResponseStream_beginRequest() {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, undefined, \"f\");\n }, _ResponseStream_addEvent = function _ResponseStream_addEvent(event, starting_after) {\n if (this.ended)\n return;\n const maybeEmit = (name, event) => {\n if (starting_after == null || event.sequence_number > starting_after) {\n this._emit(name, event);\n }\n };\n const response = __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_accumulateResponse).call(this, event);\n maybeEmit('event', event);\n switch (event.type) {\n case 'response.output_text.delta': {\n const output = response.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n const content = output.content[event.content_index];\n if (!content) {\n throw new OpenAIError(`missing content at index ${event.content_index}`);\n }\n if (content.type !== 'output_text') {\n throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);\n }\n maybeEmit('response.output_text.delta', {\n ...event,\n snapshot: content.text,\n });\n }\n break;\n }\n case 'response.function_call_arguments.delta': {\n const output = response.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'function_call') {\n maybeEmit('response.function_call_arguments.delta', {\n ...event,\n snapshot: output.arguments,\n });\n }\n break;\n }\n default:\n maybeEmit(event.type, event);\n break;\n }\n }, _ResponseStream_endRequest = function _ResponseStream_endRequest() {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = __classPrivateFieldGet(this, _ResponseStream_currentResponseSnapshot, \"f\");\n if (!snapshot) {\n throw new OpenAIError(`request ended without sending any events`);\n }\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, undefined, \"f\");\n const parsedResponse = finalizeResponse(snapshot, __classPrivateFieldGet(this, _ResponseStream_params, \"f\"));\n __classPrivateFieldSet(this, _ResponseStream_finalResponse, parsedResponse, \"f\");\n return parsedResponse;\n }, _ResponseStream_accumulateResponse = function _ResponseStream_accumulateResponse(event) {\n let snapshot = __classPrivateFieldGet(this, _ResponseStream_currentResponseSnapshot, \"f\");\n if (!snapshot) {\n if (event.type !== 'response.created') {\n throw new OpenAIError(`When snapshot hasn't been set yet, expected 'response.created' event, got ${event.type}`);\n }\n snapshot = __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, event.response, \"f\");\n return snapshot;\n }\n switch (event.type) {\n case 'response.output_item.added': {\n snapshot.output.push(event.item);\n break;\n }\n case 'response.content_part.added': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n output.content.push(event.part);\n }\n break;\n }\n case 'response.output_text.delta': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n const content = output.content[event.content_index];\n if (!content) {\n throw new OpenAIError(`missing content at index ${event.content_index}`);\n }\n if (content.type !== 'output_text') {\n throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);\n }\n content.text += event.delta;\n }\n break;\n }\n case 'response.function_call_arguments.delta': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'function_call') {\n output.arguments += event.delta;\n }\n break;\n }\n case 'response.completed': {\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, event.response, \"f\");\n break;\n }\n }\n return snapshot;\n }, Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n this.on('event', (event) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(event);\n }\n else {\n pushQueue.push(event);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((event) => (event ? { value: event, done: false } : { value: undefined, done: true }));\n }\n const event = pushQueue.shift();\n return { value: event, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n /**\n * @returns a promise that resolves with the final Response, or rejects\n * if an error occurred or the stream ended prematurely without producing a REsponse.\n */\n async finalResponse() {\n await this.done();\n const response = __classPrivateFieldGet(this, _ResponseStream_finalResponse, \"f\");\n if (!response)\n throw new OpenAIError('stream ended without producing a ChatCompletion');\n return response;\n }\n}\nfunction finalizeResponse(snapshot, params) {\n return maybeParseResponse(snapshot, params);\n}\n//# sourceMappingURL=ResponseStream.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { parseResponse, addOutputText, } from \"../../lib/ResponsesParser.mjs\";\nimport { APIResource } from \"../../resource.mjs\";\nimport * as InputItemsAPI from \"./input-items.mjs\";\nimport { InputItems } from \"./input-items.mjs\";\nimport { ResponseStream } from \"../../lib/responses/ResponseStream.mjs\";\nimport { CursorPage } from \"../../pagination.mjs\";\nexport class Responses extends APIResource {\n constructor() {\n super(...arguments);\n this.inputItems = new InputItemsAPI.InputItems(this._client);\n }\n create(body, options) {\n return this._client.post('/responses', { body, ...options, stream: body.stream ?? false })._thenUnwrap((rsp) => {\n if ('object' in rsp && rsp.object === 'response') {\n addOutputText(rsp);\n }\n return rsp;\n });\n }\n retrieve(responseId, query = {}, options) {\n return this._client.get(`/responses/${responseId}`, {\n query,\n ...options,\n stream: query?.stream ?? false,\n });\n }\n /**\n * Deletes a model response with the given ID.\n *\n * @example\n * ```ts\n * await client.responses.del(\n * 'resp_677efb5139a88190b512bc3fef8e535d',\n * );\n * ```\n */\n del(responseId, options) {\n return this._client.delete(`/responses/${responseId}`, {\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n parse(body, options) {\n return this._client.responses\n .create(body, options)\n ._thenUnwrap((response) => parseResponse(response, body));\n }\n /**\n * Creates a model response stream\n */\n stream(body, options) {\n return ResponseStream.createResponse(this._client, body, options);\n }\n /**\n * Cancels a model response with the given ID. Only responses created with the\n * `background` parameter set to `true` can be cancelled.\n * [Learn more](https://platform.openai.com/docs/guides/background).\n *\n * @example\n * ```ts\n * await client.responses.cancel(\n * 'resp_677efb5139a88190b512bc3fef8e535d',\n * );\n * ```\n */\n cancel(responseId, options) {\n return this._client.post(`/responses/${responseId}/cancel`, {\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n}\nexport class ResponseItemsPage extends CursorPage {\n}\nResponses.InputItems = InputItems;\n//# sourceMappingURL=responses.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as Core from \"../../core.mjs\";\nexport class Parts extends APIResource {\n /**\n * Adds a\n * [Part](https://platform.openai.com/docs/api-reference/uploads/part-object) to an\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object.\n * A Part represents a chunk of bytes from the file you are trying to upload.\n *\n * Each Part can be at most 64 MB, and you can add Parts until you hit the Upload\n * maximum of 8 GB.\n *\n * It is possible to add multiple Parts in parallel. You can decide the intended\n * order of the Parts when you\n * [complete the Upload](https://platform.openai.com/docs/api-reference/uploads/complete).\n */\n create(uploadId, body, options) {\n return this._client.post(`/uploads/${uploadId}/parts`, Core.multipartFormRequestOptions({ body, ...options }));\n }\n}\n//# sourceMappingURL=parts.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as PartsAPI from \"./parts.mjs\";\nimport { Parts } from \"./parts.mjs\";\nexport class Uploads extends APIResource {\n constructor() {\n super(...arguments);\n this.parts = new PartsAPI.Parts(this._client);\n }\n /**\n * Creates an intermediate\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object\n * that you can add\n * [Parts](https://platform.openai.com/docs/api-reference/uploads/part-object) to.\n * Currently, an Upload can accept at most 8 GB in total and expires after an hour\n * after you create it.\n *\n * Once you complete the Upload, we will create a\n * [File](https://platform.openai.com/docs/api-reference/files/object) object that\n * contains all the parts you uploaded. This File is usable in the rest of our\n * platform as a regular File object.\n *\n * For certain `purpose` values, the correct `mime_type` must be specified. Please\n * refer to documentation for the\n * [supported MIME types for your use case](https://platform.openai.com/docs/assistants/tools/file-search#supported-files).\n *\n * For guidance on the proper filename extensions for each purpose, please follow\n * the documentation on\n * [creating a File](https://platform.openai.com/docs/api-reference/files/create).\n */\n create(body, options) {\n return this._client.post('/uploads', { body, ...options });\n }\n /**\n * Cancels the Upload. No Parts may be added after an Upload is cancelled.\n */\n cancel(uploadId, options) {\n return this._client.post(`/uploads/${uploadId}/cancel`, options);\n }\n /**\n * Completes the\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object).\n *\n * Within the returned Upload object, there is a nested\n * [File](https://platform.openai.com/docs/api-reference/files/object) object that\n * is ready to use in the rest of the platform.\n *\n * You can specify the order of the Parts by passing in an ordered list of the Part\n * IDs.\n *\n * The number of bytes uploaded upon completion must match the number of bytes\n * initially specified when creating the Upload object. No Parts may be added after\n * an Upload is completed.\n */\n complete(uploadId, body, options) {\n return this._client.post(`/uploads/${uploadId}/complete`, { body, ...options });\n }\n}\nUploads.Parts = Parts;\n//# sourceMappingURL=uploads.mjs.map","/**\n * Like `Promise.allSettled()` but throws an error if any promises are rejected.\n */\nexport const allSettledWithThrow = async (promises) => {\n const results = await Promise.allSettled(promises);\n const rejected = results.filter((result) => result.status === 'rejected');\n if (rejected.length) {\n for (const result of rejected) {\n console.error(result.reason);\n }\n throw new Error(`${rejected.length} promise(s) failed - see the above errors`);\n }\n // Note: TS was complaining about using `.filter().map()` here for some reason\n const values = [];\n for (const result of results) {\n if (result.status === 'fulfilled') {\n values.push(result.value);\n }\n }\n return values;\n};\n//# sourceMappingURL=Util.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { sleep, isRequestOptions } from \"../../core.mjs\";\nimport { CursorPage, Page } from \"../../pagination.mjs\";\nexport class Files extends APIResource {\n /**\n * Create a vector store file by attaching a\n * [File](https://platform.openai.com/docs/api-reference/files) to a\n * [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object).\n */\n create(vectorStoreId, body, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}/files`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves a vector store file.\n */\n retrieve(vectorStoreId, fileId, options) {\n return this._client.get(`/vector_stores/${vectorStoreId}/files/${fileId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Update attributes on a vector store file.\n */\n update(vectorStoreId, fileId, body, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}/files/${fileId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(vectorStoreId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(vectorStoreId, {}, query);\n }\n return this._client.getAPIList(`/vector_stores/${vectorStoreId}/files`, VectorStoreFilesPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Delete a vector store file. This will remove the file from the vector store but\n * the file itself will not be deleted. To delete the file, use the\n * [delete file](https://platform.openai.com/docs/api-reference/files/delete)\n * endpoint.\n */\n del(vectorStoreId, fileId, options) {\n return this._client.delete(`/vector_stores/${vectorStoreId}/files/${fileId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Attach a file to the given vector store and wait for it to be processed.\n */\n async createAndPoll(vectorStoreId, body, options) {\n const file = await this.create(vectorStoreId, body, options);\n return await this.poll(vectorStoreId, file.id, options);\n }\n /**\n * Wait for the vector store file to finish processing.\n *\n * Note: this will return even if the file failed to process, you need to check\n * file.last_error and file.status to handle these cases\n */\n async poll(vectorStoreId, fileId, options) {\n const headers = { ...options?.headers, 'X-Stainless-Poll-Helper': 'true' };\n if (options?.pollIntervalMs) {\n headers['X-Stainless-Custom-Poll-Interval'] = options.pollIntervalMs.toString();\n }\n while (true) {\n const fileResponse = await this.retrieve(vectorStoreId, fileId, {\n ...options,\n headers,\n }).withResponse();\n const file = fileResponse.data;\n switch (file.status) {\n case 'in_progress':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = fileResponse.response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await sleep(sleepInterval);\n break;\n case 'failed':\n case 'completed':\n return file;\n }\n }\n }\n /**\n * Upload a file to the `files` API and then attach it to the given vector store.\n *\n * Note the file will be asynchronously processed (you can use the alternative\n * polling helper method to wait for processing to complete).\n */\n async upload(vectorStoreId, file, options) {\n const fileInfo = await this._client.files.create({ file: file, purpose: 'assistants' }, options);\n return this.create(vectorStoreId, { file_id: fileInfo.id }, options);\n }\n /**\n * Add a file to a vector store and poll until processing is complete.\n */\n async uploadAndPoll(vectorStoreId, file, options) {\n const fileInfo = await this.upload(vectorStoreId, file, options);\n return await this.poll(vectorStoreId, fileInfo.id, options);\n }\n /**\n * Retrieve the parsed contents of a vector store file.\n */\n content(vectorStoreId, fileId, options) {\n return this._client.getAPIList(`/vector_stores/${vectorStoreId}/files/${fileId}/content`, FileContentResponsesPage, { ...options, headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers } });\n }\n}\nexport class VectorStoreFilesPage extends CursorPage {\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class FileContentResponsesPage extends Page {\n}\nFiles.VectorStoreFilesPage = VectorStoreFilesPage;\nFiles.FileContentResponsesPage = FileContentResponsesPage;\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport { sleep } from \"../../core.mjs\";\nimport { allSettledWithThrow } from \"../../lib/Util.mjs\";\nimport { VectorStoreFilesPage } from \"./files.mjs\";\nexport class FileBatches extends APIResource {\n /**\n * Create a vector store file batch.\n */\n create(vectorStoreId, body, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}/file_batches`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves a vector store file batch.\n */\n retrieve(vectorStoreId, batchId, options) {\n return this._client.get(`/vector_stores/${vectorStoreId}/file_batches/${batchId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Cancel a vector store file batch. This attempts to cancel the processing of\n * files in this batch as soon as possible.\n */\n cancel(vectorStoreId, batchId, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}/file_batches/${batchId}/cancel`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Create a vector store batch and poll until all files have been processed.\n */\n async createAndPoll(vectorStoreId, body, options) {\n const batch = await this.create(vectorStoreId, body);\n return await this.poll(vectorStoreId, batch.id, options);\n }\n listFiles(vectorStoreId, batchId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.listFiles(vectorStoreId, batchId, {}, query);\n }\n return this._client.getAPIList(`/vector_stores/${vectorStoreId}/file_batches/${batchId}/files`, VectorStoreFilesPage, { query, ...options, headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers } });\n }\n /**\n * Wait for the given file batch to be processed.\n *\n * Note: this will return even if one of the files failed to process, you need to\n * check batch.file_counts.failed_count to handle this case.\n */\n async poll(vectorStoreId, batchId, options) {\n const headers = { ...options?.headers, 'X-Stainless-Poll-Helper': 'true' };\n if (options?.pollIntervalMs) {\n headers['X-Stainless-Custom-Poll-Interval'] = options.pollIntervalMs.toString();\n }\n while (true) {\n const { data: batch, response } = await this.retrieve(vectorStoreId, batchId, {\n ...options,\n headers,\n }).withResponse();\n switch (batch.status) {\n case 'in_progress':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await sleep(sleepInterval);\n break;\n case 'failed':\n case 'cancelled':\n case 'completed':\n return batch;\n }\n }\n }\n /**\n * Uploads the given files concurrently and then creates a vector store file batch.\n *\n * The concurrency limit is configurable using the `maxConcurrency` parameter.\n */\n async uploadAndPoll(vectorStoreId, { files, fileIds = [] }, options) {\n if (files == null || files.length == 0) {\n throw new Error(`No \\`files\\` provided to process. If you've already uploaded files you should use \\`.createAndPoll()\\` instead`);\n }\n const configuredConcurrency = options?.maxConcurrency ?? 5;\n // We cap the number of workers at the number of files (so we don't start any unnecessary workers)\n const concurrencyLimit = Math.min(configuredConcurrency, files.length);\n const client = this._client;\n const fileIterator = files.values();\n const allFileIds = [...fileIds];\n // This code is based on this design. The libraries don't accommodate our environment limits.\n // https://stackoverflow.com/questions/40639432/what-is-the-best-way-to-limit-concurrency-when-using-es6s-promise-all\n async function processFiles(iterator) {\n for (let item of iterator) {\n const fileObj = await client.files.create({ file: item, purpose: 'assistants' }, options);\n allFileIds.push(fileObj.id);\n }\n }\n // Start workers to process results\n const workers = Array(concurrencyLimit).fill(fileIterator).map(processFiles);\n // Wait for all processing to complete.\n await allSettledWithThrow(workers);\n return await this.createAndPoll(vectorStoreId, {\n file_ids: allFileIds,\n });\n }\n}\nexport { VectorStoreFilesPage };\n//# sourceMappingURL=file-batches.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport * as FileBatchesAPI from \"./file-batches.mjs\";\nimport { FileBatches, } from \"./file-batches.mjs\";\nimport * as FilesAPI from \"./files.mjs\";\nimport { FileContentResponsesPage, Files, VectorStoreFilesPage, } from \"./files.mjs\";\nimport { CursorPage, Page } from \"../../pagination.mjs\";\nexport class VectorStores extends APIResource {\n constructor() {\n super(...arguments);\n this.files = new FilesAPI.Files(this._client);\n this.fileBatches = new FileBatchesAPI.FileBatches(this._client);\n }\n /**\n * Create a vector store.\n */\n create(body, options) {\n return this._client.post('/vector_stores', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves a vector store.\n */\n retrieve(vectorStoreId, options) {\n return this._client.get(`/vector_stores/${vectorStoreId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies a vector store.\n */\n update(vectorStoreId, body, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/vector_stores', VectorStoresPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Delete a vector store.\n */\n del(vectorStoreId, options) {\n return this._client.delete(`/vector_stores/${vectorStoreId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Search a vector store for relevant chunks based on a query and file attributes\n * filter.\n */\n search(vectorStoreId, body, options) {\n return this._client.getAPIList(`/vector_stores/${vectorStoreId}/search`, VectorStoreSearchResponsesPage, {\n body,\n method: 'post',\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexport class VectorStoresPage extends CursorPage {\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class VectorStoreSearchResponsesPage extends Page {\n}\nVectorStores.VectorStoresPage = VectorStoresPage;\nVectorStores.VectorStoreSearchResponsesPage = VectorStoreSearchResponsesPage;\nVectorStores.Files = Files;\nVectorStores.VectorStoreFilesPage = VectorStoreFilesPage;\nVectorStores.FileContentResponsesPage = FileContentResponsesPage;\nVectorStores.FileBatches = FileBatches;\n//# sourceMappingURL=vector-stores.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _a;\nimport * as qs from \"./internal/qs/index.mjs\";\nimport * as Core from \"./core.mjs\";\nimport * as Errors from \"./error.mjs\";\nimport * as Pagination from \"./pagination.mjs\";\nimport * as Uploads from \"./uploads.mjs\";\nimport * as API from \"./resources/index.mjs\";\nimport { Batches, BatchesPage, } from \"./resources/batches.mjs\";\nimport { Completions, } from \"./resources/completions.mjs\";\nimport { Embeddings, } from \"./resources/embeddings.mjs\";\nimport { FileObjectsPage, Files, } from \"./resources/files.mjs\";\nimport { Images, } from \"./resources/images.mjs\";\nimport { Models, ModelsPage } from \"./resources/models.mjs\";\nimport { Moderations, } from \"./resources/moderations.mjs\";\nimport { Audio } from \"./resources/audio/audio.mjs\";\nimport { Beta } from \"./resources/beta/beta.mjs\";\nimport { Chat } from \"./resources/chat/chat.mjs\";\nimport { ContainerListResponsesPage, Containers, } from \"./resources/containers/containers.mjs\";\nimport { EvalListResponsesPage, Evals, } from \"./resources/evals/evals.mjs\";\nimport { FineTuning } from \"./resources/fine-tuning/fine-tuning.mjs\";\nimport { Graders } from \"./resources/graders/graders.mjs\";\nimport { Responses } from \"./resources/responses/responses.mjs\";\nimport { Uploads as UploadsAPIUploads, } from \"./resources/uploads/uploads.mjs\";\nimport { VectorStoreSearchResponsesPage, VectorStores, VectorStoresPage, } from \"./resources/vector-stores/vector-stores.mjs\";\nimport { ChatCompletionsPage, } from \"./resources/chat/completions/completions.mjs\";\n/**\n * API Client for interfacing with the OpenAI API.\n */\nexport class OpenAI extends Core.APIClient {\n /**\n * API Client for interfacing with the OpenAI API.\n *\n * @param {string | undefined} [opts.apiKey=process.env['OPENAI_API_KEY'] ?? undefined]\n * @param {string | null | undefined} [opts.organization=process.env['OPENAI_ORG_ID'] ?? null]\n * @param {string | null | undefined} [opts.project=process.env['OPENAI_PROJECT_ID'] ?? null]\n * @param {string} [opts.baseURL=process.env['OPENAI_BASE_URL'] ?? https://api.openai.com/v1] - Override the default base URL for the API.\n * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n * @param {number} [opts.httpAgent] - An HTTP agent used to manage HTTP(s) connections.\n * @param {Core.Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n * @param {Core.Headers} opts.defaultHeaders - Default headers to include with every request to the API.\n * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.\n * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n */\n constructor({ baseURL = Core.readEnv('OPENAI_BASE_URL'), apiKey = Core.readEnv('OPENAI_API_KEY'), organization = Core.readEnv('OPENAI_ORG_ID') ?? null, project = Core.readEnv('OPENAI_PROJECT_ID') ?? null, ...opts } = {}) {\n if (apiKey === undefined) {\n throw new Errors.OpenAIError(\"The OPENAI_API_KEY environment variable is missing or empty; either provide it, or instantiate the OpenAI client with an apiKey option, like new OpenAI({ apiKey: 'My API Key' }).\");\n }\n const options = {\n apiKey,\n organization,\n project,\n ...opts,\n baseURL: baseURL || `https://api.openai.com/v1`,\n };\n if (!options.dangerouslyAllowBrowser && Core.isRunningInBrowser()) {\n throw new Errors.OpenAIError(\"It looks like you're running in a browser-like environment.\\n\\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\\nIf you understand the risks and have appropriate mitigations in place,\\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\\n\\nnew OpenAI({ apiKey, dangerouslyAllowBrowser: true });\\n\\nhttps://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety\\n\");\n }\n super({\n baseURL: options.baseURL,\n timeout: options.timeout ?? 600000 /* 10 minutes */,\n httpAgent: options.httpAgent,\n maxRetries: options.maxRetries,\n fetch: options.fetch,\n });\n this.completions = new API.Completions(this);\n this.chat = new API.Chat(this);\n this.embeddings = new API.Embeddings(this);\n this.files = new API.Files(this);\n this.images = new API.Images(this);\n this.audio = new API.Audio(this);\n this.moderations = new API.Moderations(this);\n this.models = new API.Models(this);\n this.fineTuning = new API.FineTuning(this);\n this.graders = new API.Graders(this);\n this.vectorStores = new API.VectorStores(this);\n this.beta = new API.Beta(this);\n this.batches = new API.Batches(this);\n this.uploads = new API.Uploads(this);\n this.responses = new API.Responses(this);\n this.evals = new API.Evals(this);\n this.containers = new API.Containers(this);\n this._options = options;\n this.apiKey = apiKey;\n this.organization = organization;\n this.project = project;\n }\n defaultQuery() {\n return this._options.defaultQuery;\n }\n defaultHeaders(opts) {\n return {\n ...super.defaultHeaders(opts),\n 'OpenAI-Organization': this.organization,\n 'OpenAI-Project': this.project,\n ...this._options.defaultHeaders,\n };\n }\n authHeaders(opts) {\n return { Authorization: `Bearer ${this.apiKey}` };\n }\n stringifyQuery(query) {\n return qs.stringify(query, { arrayFormat: 'brackets' });\n }\n}\n_a = OpenAI;\nOpenAI.OpenAI = _a;\nOpenAI.DEFAULT_TIMEOUT = 600000; // 10 minutes\nOpenAI.OpenAIError = Errors.OpenAIError;\nOpenAI.APIError = Errors.APIError;\nOpenAI.APIConnectionError = Errors.APIConnectionError;\nOpenAI.APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;\nOpenAI.APIUserAbortError = Errors.APIUserAbortError;\nOpenAI.NotFoundError = Errors.NotFoundError;\nOpenAI.ConflictError = Errors.ConflictError;\nOpenAI.RateLimitError = Errors.RateLimitError;\nOpenAI.BadRequestError = Errors.BadRequestError;\nOpenAI.AuthenticationError = Errors.AuthenticationError;\nOpenAI.InternalServerError = Errors.InternalServerError;\nOpenAI.PermissionDeniedError = Errors.PermissionDeniedError;\nOpenAI.UnprocessableEntityError = Errors.UnprocessableEntityError;\nOpenAI.toFile = Uploads.toFile;\nOpenAI.fileFromPath = Uploads.fileFromPath;\nOpenAI.Completions = Completions;\nOpenAI.Chat = Chat;\nOpenAI.ChatCompletionsPage = ChatCompletionsPage;\nOpenAI.Embeddings = Embeddings;\nOpenAI.Files = Files;\nOpenAI.FileObjectsPage = FileObjectsPage;\nOpenAI.Images = Images;\nOpenAI.Audio = Audio;\nOpenAI.Moderations = Moderations;\nOpenAI.Models = Models;\nOpenAI.ModelsPage = ModelsPage;\nOpenAI.FineTuning = FineTuning;\nOpenAI.Graders = Graders;\nOpenAI.VectorStores = VectorStores;\nOpenAI.VectorStoresPage = VectorStoresPage;\nOpenAI.VectorStoreSearchResponsesPage = VectorStoreSearchResponsesPage;\nOpenAI.Beta = Beta;\nOpenAI.Batches = Batches;\nOpenAI.BatchesPage = BatchesPage;\nOpenAI.Uploads = UploadsAPIUploads;\nOpenAI.Responses = Responses;\nOpenAI.Evals = Evals;\nOpenAI.EvalListResponsesPage = EvalListResponsesPage;\nOpenAI.Containers = Containers;\nOpenAI.ContainerListResponsesPage = ContainerListResponsesPage;\n/** API Client for interfacing with the Azure OpenAI API. */\nexport class AzureOpenAI extends OpenAI {\n /**\n * API Client for interfacing with the Azure OpenAI API.\n *\n * @param {string | undefined} [opts.apiVersion=process.env['OPENAI_API_VERSION'] ?? undefined]\n * @param {string | undefined} [opts.endpoint=process.env['AZURE_OPENAI_ENDPOINT'] ?? undefined] - Your Azure endpoint, including the resource, e.g. `https://example-resource.azure.openai.com/`\n * @param {string | undefined} [opts.apiKey=process.env['AZURE_OPENAI_API_KEY'] ?? undefined]\n * @param {string | undefined} opts.deployment - A model deployment, if given, sets the base client URL to include `/deployments/{deployment}`.\n * @param {string | null | undefined} [opts.organization=process.env['OPENAI_ORG_ID'] ?? null]\n * @param {string} [opts.baseURL=process.env['OPENAI_BASE_URL']] - Sets the base URL for the API, e.g. `https://example-resource.azure.openai.com/openai/`.\n * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n * @param {number} [opts.httpAgent] - An HTTP agent used to manage HTTP(s) connections.\n * @param {Core.Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n * @param {Core.Headers} opts.defaultHeaders - Default headers to include with every request to the API.\n * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.\n * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n */\n constructor({ baseURL = Core.readEnv('OPENAI_BASE_URL'), apiKey = Core.readEnv('AZURE_OPENAI_API_KEY'), apiVersion = Core.readEnv('OPENAI_API_VERSION'), endpoint, deployment, azureADTokenProvider, dangerouslyAllowBrowser, ...opts } = {}) {\n if (!apiVersion) {\n throw new Errors.OpenAIError(\"The OPENAI_API_VERSION environment variable is missing or empty; either provide it, or instantiate the AzureOpenAI client with an apiVersion option, like new AzureOpenAI({ apiVersion: 'My API Version' }).\");\n }\n if (typeof azureADTokenProvider === 'function') {\n dangerouslyAllowBrowser = true;\n }\n if (!azureADTokenProvider && !apiKey) {\n throw new Errors.OpenAIError('Missing credentials. Please pass one of `apiKey` and `azureADTokenProvider`, or set the `AZURE_OPENAI_API_KEY` environment variable.');\n }\n if (azureADTokenProvider && apiKey) {\n throw new Errors.OpenAIError('The `apiKey` and `azureADTokenProvider` arguments are mutually exclusive; only one can be passed at a time.');\n }\n // define a sentinel value to avoid any typing issues\n apiKey ?? (apiKey = API_KEY_SENTINEL);\n opts.defaultQuery = { ...opts.defaultQuery, 'api-version': apiVersion };\n if (!baseURL) {\n if (!endpoint) {\n endpoint = process.env['AZURE_OPENAI_ENDPOINT'];\n }\n if (!endpoint) {\n throw new Errors.OpenAIError('Must provide one of the `baseURL` or `endpoint` arguments, or the `AZURE_OPENAI_ENDPOINT` environment variable');\n }\n baseURL = `${endpoint}/openai`;\n }\n else {\n if (endpoint) {\n throw new Errors.OpenAIError('baseURL and endpoint are mutually exclusive');\n }\n }\n super({\n apiKey,\n baseURL,\n ...opts,\n ...(dangerouslyAllowBrowser !== undefined ? { dangerouslyAllowBrowser } : {}),\n });\n this.apiVersion = '';\n this._azureADTokenProvider = azureADTokenProvider;\n this.apiVersion = apiVersion;\n this.deploymentName = deployment;\n }\n buildRequest(options, props = {}) {\n if (_deployments_endpoints.has(options.path) && options.method === 'post' && options.body !== undefined) {\n if (!Core.isObj(options.body)) {\n throw new Error('Expected request body to be an object');\n }\n const model = this.deploymentName || options.body['model'] || options.__metadata?.['model'];\n if (model !== undefined && !this.baseURL.includes('/deployments')) {\n options.path = `/deployments/${model}${options.path}`;\n }\n }\n return super.buildRequest(options, props);\n }\n async _getAzureADToken() {\n if (typeof this._azureADTokenProvider === 'function') {\n const token = await this._azureADTokenProvider();\n if (!token || typeof token !== 'string') {\n throw new Errors.OpenAIError(`Expected 'azureADTokenProvider' argument to return a string but it returned ${token}`);\n }\n return token;\n }\n return undefined;\n }\n authHeaders(opts) {\n return {};\n }\n async prepareOptions(opts) {\n /**\n * The user should provide a bearer token provider if they want\n * to use Azure AD authentication. The user shouldn't set the\n * Authorization header manually because the header is overwritten\n * with the Azure AD token if a bearer token provider is provided.\n */\n if (opts.headers?.['api-key']) {\n return super.prepareOptions(opts);\n }\n const token = await this._getAzureADToken();\n opts.headers ?? (opts.headers = {});\n if (token) {\n opts.headers['Authorization'] = `Bearer ${token}`;\n }\n else if (this.apiKey !== API_KEY_SENTINEL) {\n opts.headers['api-key'] = this.apiKey;\n }\n else {\n throw new Errors.OpenAIError('Unable to handle auth');\n }\n return super.prepareOptions(opts);\n }\n}\nconst _deployments_endpoints = new Set([\n '/completions',\n '/chat/completions',\n '/embeddings',\n '/audio/transcriptions',\n '/audio/translations',\n '/audio/speech',\n '/images/generations',\n '/images/edits',\n]);\nconst API_KEY_SENTINEL = '<Missing Key>';\nexport { toFile, fileFromPath } from \"./uploads.mjs\";\nexport { OpenAIError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, NotFoundError, ConflictError, RateLimitError, BadRequestError, AuthenticationError, InternalServerError, PermissionDeniedError, UnprocessableEntityError, } from \"./error.mjs\";\nexport default OpenAI;\n//# sourceMappingURL=index.mjs.map","import type {\n ChatRequest,\n OpenAIConfig,\n StreamingChatResponse,\n} from '../types';\n\nimport OpenAI from 'openai';\n\nexport class OpenAIClient {\n private client: OpenAI;\n private config: OpenAIConfig;\n\n constructor(config: OpenAIConfig) {\n this.config = {\n timeout: 30_000,\n maxRetries: 3,\n enableStreaming: true,\n ...config,\n };\n\n this.client = new OpenAI({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl,\n organization: this.config.organization,\n timeout: this.config.timeout,\n maxRetries: this.config.maxRetries,\n dangerouslyAllowBrowser: true, // 允许在浏览器环境中使用\n });\n }\n\n /**\n * 流式聊天(主要方法)\n */\n async *chatCompletionStream(\n request: ChatRequest,\n ): AsyncGenerator<StreamingChatResponse, void, unknown> {\n try {\n const stream = await this.client.chat.completions.create({\n model: request.model || 'gpt-3.5-turbo',\n messages: request.messages,\n temperature: request.temperature || 0.7,\n max_tokens: request.maxTokens || 1000,\n stream: true, // 强制使用流式模式\n });\n\n for await (const chunk of stream) {\n yield {\n id: chunk.id,\n object: chunk.object,\n created: chunk.created,\n model: chunk.model,\n choices: chunk.choices.map((choice) => ({\n index: choice.index,\n delta: {\n role: choice.delta.role,\n content: choice.delta.content || undefined,\n },\n finishReason: choice.finish_reason || undefined,\n })),\n };\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n\n /**\n * 清理资源\n */\n destroy(): void {\n // 清理客户端资源\n this.client = null as any;\n }\n\n /**\n * 获取当前配置\n */\n getConfig(): OpenAIConfig {\n return { ...this.config };\n }\n\n /**\n * 获取模型列表\n */\n async listModels(): Promise<any[]> {\n try {\n const response = await this.client.models.list();\n return response.data;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n\n /**\n * 测试API连接\n */\n async testConnection(): Promise<boolean> {\n try {\n await this.client.models.list();\n return true;\n } catch (error) {\n console.warn('OpenAI API connection test failed:', error);\n return false;\n }\n }\n\n /**\n * 更新配置\n */\n updateConfig(config: Partial<OpenAIConfig>): void {\n this.config = { ...this.config, ...config };\n\n // 重新创建客户端\n this.client = new OpenAI({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl,\n organization: this.config.organization,\n timeout: this.config.timeout,\n maxRetries: this.config.maxRetries,\n dangerouslyAllowBrowser: true, // 允许在浏览器环境中使用\n });\n }\n\n /**\n * 错误处理\n */\n private handleError(error: any): Error {\n let message = '未知错误';\n let code = 'UNKNOWN_ERROR';\n\n if (error instanceof Error) {\n message = error.message;\n\n // 处理OpenAI API错误\n if (error.message.includes('401')) {\n message = 'API密钥无效或已过期';\n code = 'INVALID_API_KEY';\n } else if (error.message.includes('429')) {\n message = '请求频率过高,请稍后重试';\n code = 'RATE_LIMIT_EXCEEDED';\n } else if (error.message.includes('500')) {\n message = 'OpenAI服务器错误,请稍后重试';\n code = 'SERVER_ERROR';\n } else if (error.message.includes('timeout')) {\n message = '请求超时,请检查网络连接';\n code = 'TIMEOUT_ERROR';\n } else if (error.message.includes('network')) {\n message = '网络连接错误,请检查网络设置';\n code = 'NETWORK_ERROR';\n }\n } else if (typeof error === 'string') {\n message = error;\n } else if (error?.message) {\n message = error.message;\n }\n\n const customError = new Error(message) as any;\n customError.code = code;\n customError.originalError = error;\n\n return customError;\n }\n}\n\n/**\n * 创建OpenAI客户端实例\n */\nexport function createOpenAIClient(config: OpenAIConfig): OpenAIClient {\n return new OpenAIClient(config);\n}\n\n/**\n * 验证API密钥格式\n */\nexport function validateApiKey(apiKey: string): boolean {\n return /^sk-[a-zA-Z0-9]{32,}$/.test(apiKey);\n}\n\n/**\n * 验证baseUrl格式\n */\nexport function validateBaseUrl(baseUrl: string): boolean {\n try {\n new URL(baseUrl);\n return true;\n } catch {\n return false;\n }\n}\n","import { ref, watch } from 'vue'\n\n// 主题类型\nexport type ThemeMode = 'light' | 'dark' | 'auto'\n\n// 主题配置接口\nexport interface ThemeConfig {\n mode: ThemeMode\n primaryColor: string\n backgroundColor: string\n textColor: string\n borderRadius: string\n shadow: string\n customCSS?: string\n}\n\n// 默认主题配置\nconst DEFAULT_THEMES: Record<string, ThemeConfig> = {\n light: {\n mode: 'light',\n primaryColor: '#3b82f6',\n backgroundColor: '#ffffff',\n textColor: '#1f2937',\n borderRadius: '0.5rem',\n shadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1)'\n },\n dark: {\n mode: 'dark',\n primaryColor: '#60a5fa',\n backgroundColor: '#1f2937',\n textColor: '#f9fafb',\n borderRadius: '0.5rem',\n shadow: '0 10px 15px -3px rgba(0, 0, 0, 0.3)'\n },\n blue: {\n mode: 'light',\n primaryColor: '#2563eb',\n backgroundColor: '#ffffff',\n textColor: '#1e40af',\n borderRadius: '0.75rem',\n shadow: '0 20px 25px -5px rgba(37, 99, 235, 0.1)'\n },\n green: {\n mode: 'light',\n primaryColor: '#059669',\n backgroundColor: '#ffffff',\n textColor: '#065f46',\n borderRadius: '0.5rem',\n shadow: '0 10px 15px -3px rgba(5, 150, 105, 0.1)'\n },\n purple: {\n mode: 'light',\n primaryColor: '#7c3aed',\n backgroundColor: '#ffffff',\n textColor: '#5b21b6',\n borderRadius: '1rem',\n shadow: '0 20px 25px -5px rgba(124, 58, 237, 0.1)'\n }\n}\n\nexport class ThemeManager {\n private currentTheme = ref<ThemeConfig>(DEFAULT_THEMES.light)\n private themeMode = ref<ThemeMode>('light')\n private customThemes = ref<Record<string, ThemeConfig>>({})\n private styleElement: HTMLStyleElement | null = null\n\n constructor(initialTheme?: Partial<ThemeConfig>) {\n this.initializeTheme(initialTheme)\n this.setupThemeWatcher()\n this.createStyleElement()\n this.applyTheme()\n }\n\n /**\n * 初始化主题\n */\n private initializeTheme(initialTheme?: Partial<ThemeConfig>) {\n if (initialTheme) {\n this.currentTheme.value = { \n ...DEFAULT_THEMES.light, \n ...initialTheme \n }\n }\n \n // 检查本地存储的主题\n const savedTheme = this.loadThemeFromStorage()\n if (savedTheme) {\n this.currentTheme.value = { ...this.currentTheme.value, ...savedTheme }\n }\n \n // 检查系统主题偏好\n if (this.currentTheme.value.mode === 'auto') {\n this.themeMode.value = this.getSystemTheme()\n } else {\n this.themeMode.value = this.currentTheme.value.mode\n }\n }\n\n /**\n * 设置主题监听器\n */\n private setupThemeWatcher() {\n watch(this.currentTheme, () => {\n this.applyTheme()\n this.saveThemeToStorage()\n }, { deep: true })\n\n // 监听系统主题变化\n if (typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n mediaQuery.addEventListener('change', () => {\n if (this.currentTheme.value.mode === 'auto') {\n this.themeMode.value = this.getSystemTheme()\n this.applyTheme()\n }\n })\n }\n }\n\n /**\n * 创建样式元素\n */\n private createStyleElement() {\n if (typeof document !== 'undefined') {\n this.styleElement = document.createElement('style')\n this.styleElement.id = 'langchat-theme-styles'\n document.head.appendChild(this.styleElement)\n }\n }\n\n /**\n * 应用主题\n */\n private applyTheme() {\n if (!this.styleElement) return\n\n const theme = this.currentTheme.value\n const cssVariables = this.generateCSSVariables(theme)\n const customCSS = theme.customCSS || ''\n\n this.styleElement.textContent = `\n :root {\n ${cssVariables}\n }\n \n .langchat-widget {\n ${customCSS}\n }\n \n /* 主题特定的样式 */\n .langchat-widget[data-theme=\"light\"] {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n --secondary: 210 40% 96%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n --muted: 210 40% 96%;\n --muted-foreground: 215.4 16.3% 46.9%;\n --accent: 210 40% 96%;\n --accent-foreground: 222.2 47.4% 11.2%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 222.2 84% 4.9%;\n --radius: 0.5rem;\n }\n \n .langchat-widget[data-theme=\"dark\"] {\n --background: 222.2 84% 4.9%;\n --foreground: 210 40% 98%;\n --card: 222.2 84% 4.9%;\n --card-foreground: 210 40% 98%;\n --popover: 222.2 84% 4.9%;\n --popover-foreground: 210 40% 98%;\n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 11.2%;\n --secondary: 217.2 32.6% 17.5%;\n --secondary-foreground: 210 40% 98%;\n --muted: 217.2 32.6% 17.5%;\n --muted-foreground: 215 20.2% 65.1%;\n --accent: 217.2 32.6% 17.5%;\n --accent-foreground: 210 40% 98%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 40% 98%;\n --border: 217.2 32.6% 17.5%;\n --input: 217.2 32.6% 17.5%;\n --ring: 212.7 26.8% 83.9%;\n }\n `\n }\n\n /**\n * 生成CSS变量\n */\n private generateCSSVariables(theme: ThemeConfig): string {\n return `\n --langchat-primary-color: ${theme.primaryColor};\n --langchat-background-color: ${theme.backgroundColor};\n --langchat-text-color: ${theme.textColor};\n --langchat-border-radius: ${theme.borderRadius};\n --langchat-shadow: ${theme.shadow};\n `\n }\n\n /**\n * 获取系统主题\n */\n private getSystemTheme(): 'light' | 'dark' {\n if (typeof window !== 'undefined') {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n }\n return 'light'\n }\n\n /**\n * 从本地存储加载主题\n */\n private loadThemeFromStorage(): Partial<ThemeConfig> | null {\n try {\n const saved = localStorage.getItem('langchat-theme')\n return saved ? JSON.parse(saved) : null\n } catch {\n return null\n }\n }\n\n /**\n * 保存主题到本地存储\n */\n private saveThemeToStorage() {\n try {\n localStorage.setItem('langchat-theme', JSON.stringify(this.currentTheme.value))\n } catch {\n // 忽略存储错误\n }\n }\n\n /**\n * 获取当前主题\n */\n getCurrentTheme(): ThemeConfig {\n return { ...this.currentTheme.value }\n }\n\n /**\n * 设置主题\n */\n setTheme(theme: Partial<ThemeConfig>) {\n this.currentTheme.value = { ...this.currentTheme.value, ...theme }\n }\n\n /**\n * 切换主题模式\n */\n setThemeMode(mode: ThemeMode) {\n this.currentTheme.value.mode = mode\n if (mode === 'auto') {\n this.themeMode.value = this.getSystemTheme()\n } else {\n this.themeMode.value = mode\n }\n }\n\n /**\n * 应用预设主题\n */\n applyPresetTheme(themeName: string) {\n const presetTheme = DEFAULT_THEMES[themeName]\n if (presetTheme) {\n this.currentTheme.value = { ...presetTheme }\n }\n }\n\n /**\n * 添加自定义主题\n */\n addCustomTheme(name: string, theme: ThemeConfig) {\n this.customThemes.value[name] = { ...theme }\n }\n\n /**\n * 获取自定义主题\n */\n getCustomTheme(name: string): ThemeConfig | null {\n return this.customThemes.value[name] || null\n }\n\n /**\n * 获取所有可用主题\n */\n getAvailableThemes(): string[] {\n return [...Object.keys(DEFAULT_THEMES), ...Object.keys(this.customThemes.value)]\n }\n\n /**\n * 获取主题模式\n */\n getThemeMode(): ThemeMode {\n return this.themeMode.value\n }\n\n /**\n * 检查是否为暗色主题\n */\n isDarkMode(): boolean {\n return this.themeMode.value === 'dark'\n }\n\n /**\n * 获取主题CSS变量\n */\n getCSSVariables(): Record<string, string> {\n const theme = this.currentTheme.value\n return {\n '--langchat-primary-color': theme.primaryColor,\n '--langchat-background-color': theme.backgroundColor,\n '--langchat-text-color': theme.textColor,\n '--langchat-border-radius': theme.borderRadius,\n '--langchat-shadow': theme.shadow\n }\n }\n\n /**\n * 导出主题配置\n */\n exportTheme(): string {\n return JSON.stringify(this.currentTheme.value, null, 2)\n }\n\n /**\n * 导入主题配置\n */\n importTheme(themeData: string): boolean {\n try {\n const theme = JSON.parse(themeData)\n this.setTheme(theme)\n return true\n } catch {\n return false\n }\n }\n\n /**\n * 重置为默认主题\n */\n resetToDefault() {\n this.currentTheme.value = { ...DEFAULT_THEMES.light }\n }\n\n /**\n * 销毁主题管理器\n */\n destroy() {\n if (this.styleElement && this.styleElement.parentNode) {\n this.styleElement.parentNode.removeChild(this.styleElement)\n }\n this.styleElement = null\n }\n}\n\n// 创建单例实例\nexport const themeManager = new ThemeManager()\n\n// 导出创建函数\nexport function createThemeManager(initialTheme?: Partial<ThemeConfig>) {\n return new ThemeManager(initialTheme)\n}\n\n// 工具函数\nexport function hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n return result ? {\n r: parseInt(result[1]!, 16),\n g: parseInt(result[2]!, 16),\n b: parseInt(result[3]!, 16)\n } : null\n}\n\nexport function rgbToHex(r: number, g: number, b: number): string {\n return '#' + [r, g, b].map(x => {\n const hex = x.toString(16)\n return hex.length === 1 ? '0' + hex : hex\n }).join('')\n}\n\nexport function adjustColor(color: string, amount: number): string {\n const rgb = hexToRgb(color)\n if (!rgb) return color\n \n const newR = Math.max(0, Math.min(255, rgb.r + amount))\n const newG = Math.max(0, Math.min(255, rgb.g + amount))\n const newB = Math.max(0, Math.min(255, rgb.b + amount))\n \n return rgbToHex(newR, newG, newB)\n}\n","import type {\n ChatMessage,\n LangChatConfig,\n LangChatEvent,\n LangChatInstance,\n QuestionItem,\n WelcomeData,\n} from './types';\n\nimport { computed, createApp, h, reactive, ref } from 'vue';\n\nimport ChatWindow from './components/ChatWindow.vue';\nimport WidgetButton from './components/WidgetButton.vue';\nimport { DEFAULT_CONFIG } from './types';\nimport {\n createOpenAIClient,\n validateApiKey,\n validateBaseUrl,\n} from './utils/openai-client';\nimport { themeManager } from './utils/theme-manager';\nimport { messageStore } from './utils/message-store';\n\nexport class LangChatBot implements LangChatInstance {\n private _isLoading = ref(false);\n private _isOpen = ref(false);\n private app: any;\n private config: Required<LangChatConfig>;\n private container: HTMLElement | null = null;\n private eventListeners = new Map<LangChatEvent, Set<Function>>();\n private isInitialized = ref(false);\n private messages = ref<ChatMessage[]>([]);\n private openaiClient: any = null;\n\n private streamingMessageId: null | string = null;\n private suggestedQuestions = ref<QuestionItem[]>([]);\n // 欢迎语和问题建议状态\n private welcomeData = ref<WelcomeData>({\n title: '欢迎使用 LangChat!',\n subtitle: '开始您的对话吧',\n icon: '👋',\n });\n\n constructor(config: LangChatConfig) {\n // 合并配置\n this.config = this.mergeConfig(config as LangChatConfig);\n\n // 验证必需配置\n this.validateConfig();\n\n // 初始化主题管理器\n this.initializeThemeManager();\n\n // 初始化OpenAI客户端\n this.initializeOpenAIClient();\n\n // 初始化欢迎语和问题建议\n this.initializeWelcomeAndQuestions();\n\n // 初始化\n this.init();\n }\n\n /**\n * 清空历史记录\n */\n public clearHistory(): void {\n this.messages.value = [];\n localStorage.removeItem('langchat-history');\n }\n\n /**\n * 关闭聊天窗口\n */\n public close(): void {\n if (!this.isInitialized.value) {\n return;\n }\n\n this._isOpen.value = false;\n this.emit('close');\n this.config.onClose?.();\n }\n\n /**\n * 销毁聊天组件\n */\n public destroy(): void {\n if (!this.isInitialized.value) {\n return;\n }\n\n try {\n // 关闭聊天窗口\n this.close();\n\n // 停止流式消息\n if (this.streamingMessageId) {\n this.stopStreaming(this.streamingMessageId);\n }\n\n // 清理主题管理器\n themeManager.destroy();\n\n // 卸载Vue应用\n if (this.app) {\n this.app.unmount();\n this.app = null;\n }\n\n // 移除DOM容器\n if (this.container && this.container.parentNode) {\n this.container.remove();\n this.container = null;\n }\n\n // 清理OpenAI客户端\n if (this.openaiClient) {\n this.openaiClient.destroy();\n this.openaiClient = null;\n }\n\n // 清理事件监听器\n this.eventListeners.clear();\n\n // 重置状态\n this.isInitialized.value = false;\n this._isOpen.value = false;\n this._isLoading.value = false;\n this.messages.value = [];\n this.streamingMessageId = null;\n } catch (error) {\n console.error('Failed to destroy LangChatBot:', error);\n }\n }\n\n /**\n * 获取当前配置\n */\n public getConfig(): LangChatConfig {\n return { ...this.config };\n }\n\n /**\n * 获取历史记录\n */\n public getHistory(): ChatMessage[] {\n return [...this.messages.value];\n }\n\n /**\n * 获取建议问题\n */\n public async getSuggestedQuestions(\n context?: string,\n ): Promise<QuestionItem[]> {\n try {\n // 优先使用配置中的 questions 数组\n if (this.config.questions && this.config.questions.length > 0) {\n this.suggestedQuestions.value = this.config.questions;\n this.emit('questions-updated', this.config.questions);\n // 同步到messageStore\n messageStore.setQuestions(this.config.questions);\n return this.config.questions;\n }\n \n // 如果没有配置 questions,则使用 backendAPI\n if (this.config.backendAPI?.getSuggestedQuestions) {\n const questions = await this.config.backendAPI.getSuggestedQuestions(\n context || '',\n );\n this.suggestedQuestions.value = questions;\n this.emit('questions-updated', questions);\n // 同步到messageStore\n messageStore.setQuestions(questions);\n return questions;\n }\n return [];\n } catch (error) {\n console.warn('Failed to get suggested questions:', error);\n return [];\n }\n }\n\n /**\n * 初始化聊天组件\n */\n public init(): void {\n if (this.isInitialized.value) {\n console.warn('LangChatBot already initialized');\n return;\n }\n\n try {\n // 创建容器\n this.createContainer();\n\n // 创建Vue应用\n this.createVueApp();\n\n // 设置初始状态\n this.isInitialized.value = true;\n\n // 如果配置为自动打开,则打开聊天窗口\n if (this.config.autoOpen) {\n this.open();\n }\n\n // 触发初始化完成事件\n this.emit('init');\n } catch (error) {\n console.error('Failed to initialize LangChatBot:', error);\n this.config.onError?.(error as Error);\n }\n }\n\n /**\n * 检查是否正在加载\n */\n public isLoading(): boolean {\n return this._isLoading.value;\n }\n\n /**\n * 检查聊天窗口是否打开\n */\n public isOpen(): boolean {\n return this._isOpen.value;\n }\n\n /**\n * 移除事件监听器\n */\n public off(event: LangChatEvent, callback: Function): void {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.delete(callback);\n }\n }\n\n /**\n * 添加事件监听器\n */\n public on(event: LangChatEvent, callback: Function): void {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, new Set());\n }\n this.eventListeners.get(event)!.add(callback);\n }\n\n /**\n * 打开聊天窗口\n */\n public open(): void {\n if (!this.isInitialized.value) {\n console.warn('LangChatBot not initialized');\n return;\n }\n\n this._isOpen.value = true;\n this.emit('open');\n this.config.onOpen?.();\n }\n\n /**\n * 发送消息\n */\n public async sendMessage(content: string): Promise<void> {\n if (!content.trim()) {\n return;\n }\n\n try {\n // 创建用户消息\n const userMessage: ChatMessage = {\n id: this.generateId(),\n type: 'user',\n content: content.trim(),\n timestamp: new Date(),\n status: 'sending',\n };\n\n // 添加到消息列表\n this.messages.value.push(userMessage);\n\n // 立即清空questions列表\n this.suggestedQuestions.value = [];\n messageStore.clearQuestions();\n\n // 触发消息发送事件\n this.emit('message-sent', userMessage);\n this.config.onMessageSent?.(userMessage);\n\n // 更新消息状态\n userMessage.status = 'sent';\n\n // 显示加载状态\n this._isLoading.value = true;\n\n // 创建AI消息占位符\n const aiMessage: ChatMessage = {\n id: this.generateId(),\n type: 'ai',\n content: '',\n timestamp: new Date(),\n status: 'streaming',\n isStreaming: true,\n };\n\n // 添加到消息列表\n this.messages.value.push(aiMessage);\n\n // 开始流式回复\n await this.startStreamingReply(content, aiMessage.id);\n\n // 根据配置决定是否自动获取建议问题\n if (this.config.enableAutoSuggestions && this.config.backendAPI?.getSuggestedQuestions) {\n await this.updateSuggestedQuestions(content);\n }\n\n // 保存到历史记录\n this.saveToHistory();\n } catch (error) {\n console.error('Failed to send message:', error);\n\n // 更新最后一条消息状态为错误\n if (this.messages.value.length > 0) {\n const lastMessage = this.messages.value[this.messages.value.length - 1];\n if (lastMessage) {\n lastMessage.status = 'error';\n lastMessage.error = (error as Error).message;\n }\n }\n\n // 触发错误事件\n this.emit('error', error as Error);\n this.config.onError?.(error as Error);\n } finally {\n this._isLoading.value = false;\n }\n }\n\n /**\n * 开始流式消息\n */\n public startStreaming(messageId: string): void {\n const message = this.messages.value.find((msg) => msg.id === messageId);\n if (message) {\n message.isStreaming = true;\n message.status = 'streaming';\n }\n }\n\n /**\n * 停止流式消息\n */\n public stopStreaming(messageId: string): void {\n const message = this.messages.value.find((msg) => msg.id === messageId);\n if (message) {\n message.isStreaming = false;\n message.status = 'sent';\n }\n this.streamingMessageId = null;\n }\n\n /**\n * 切换聊天窗口状态\n */\n public toggle(): void {\n if (this._isOpen.value) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * 更新配置\n */\n public updateConfig(config: Partial<LangChatConfig>): void {\n // 合并新配置\n this.config = this.mergeConfig(config as LangChatConfig);\n\n // 验证配置\n this.validateConfig();\n\n // 更新OpenAI客户端配置\n this.updateOpenAIClient();\n\n // 触发配置更新事件\n this.emit('config-updated', this.config);\n }\n\n /**\n * 创建DOM容器\n */\n private createContainer(): void {\n this.container = document.createElement('div');\n this.container.id = 'langchat-widget-container';\n this.container.style.cssText = `\n position: fixed;\n z-index: ${this.config.zIndex};\n `;\n\n // 根据位置设置容器样式\n this.updateContainerPosition();\n\n document.body.append(this.container);\n }\n\n /**\n * 创建Vue应用\n */\n private createVueApp(): void {\n if (!this.container) return;\n\n // 创建Vue应用\n this.app = createApp({\n setup: () => {\n // 响应式状态\n const state = reactive({\n isOpen: computed(() => this._isOpen.value),\n isLoading: computed(() => this._isLoading.value),\n messages: computed(() => this.messages.value),\n config: computed(() => this.config),\n suggestedQuestions: computed(() => this.suggestedQuestions.value),\n welcomeData: computed(() => this.welcomeData.value),\n });\n\n // 方法\n const methods = {\n open: () => this.open(),\n close: () => this.close(),\n toggle: () => this.toggle(),\n sendMessage: (content: string) => this.sendMessage(content),\n questionClick: (question: QuestionItem) =>\n this.sendMessage(question.text),\n };\n\n return () =>\n h('div', { class: 'langchat-widget' }, [\n // 浮动按钮\n h(WidgetButton, {\n isOpen: state.isOpen,\n onClick: methods.toggle,\n config: state.config,\n }),\n\n // 聊天窗口\n state.isOpen &&\n h(ChatWindow, {\n messages: state.messages,\n isLoading: state.isLoading,\n config: state.config,\n suggestedQuestions: state.suggestedQuestions,\n welcomeData: state.welcomeData,\n onClose: methods.close,\n onSendMessage: methods.sendMessage,\n onQuestionClick: methods.questionClick,\n }),\n ]);\n },\n });\n\n // 挂载应用\n this.app.mount(this.container);\n }\n\n /**\n * 触发事件\n */\n private emit(event: LangChatEvent, data?: any): void {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.forEach((callback) => {\n try {\n callback(data);\n } catch (error) {\n console.error(`Error in event listener for ${event}:`, error);\n }\n });\n }\n }\n\n /**\n * 生成唯一ID\n */\n private generateId(): string {\n return Date.now().toString(36) + Math.random().toString(36).slice(2);\n }\n\n /**\n * 初始化OpenAI客户端\n */\n private initializeOpenAIClient(): void {\n if (this.config.apiKey) {\n this.openaiClient = createOpenAIClient({\n apiKey: this.config.apiKey,\n baseUrl: this.config.baseUrl,\n organization: this.config.organization,\n timeout: 30_000,\n maxRetries: 3,\n enableStreaming: true,\n });\n }\n }\n\n /**\n * 初始化主题管理器\n */\n private initializeThemeManager(): void {\n // 应用配置中的主题设置\n if (this.config.theme) {\n themeManager.setTheme({\n mode: this.config.theme.mode || 'light',\n primaryColor: this.config.theme.primaryColor || '#3b82f6',\n backgroundColor: this.config.theme.backgroundColor || '#ffffff',\n textColor: this.config.theme.textColor || '#1f2937',\n borderRadius: this.config.theme.borderRadius || '0.5rem',\n shadow:\n this.config.theme.shadow || '0 10px 15px -3px rgba(0, 0, 0, 0.1)',\n customCSS: this.config.theme.customCSS,\n });\n }\n }\n\n /**\n * 初始化欢迎语和问题建议\n */\n private async initializeWelcomeAndQuestions(): Promise<void> {\n try {\n // 获取欢迎语\n if (this.config.backendAPI?.getWelcomeMessage) {\n this.welcomeData.value =\n await this.config.backendAPI.getWelcomeMessage();\n }\n\n // 获取初始问题建议\n await this.getSuggestedQuestions();\n \n // 将questions同步到messageStore\n if (this.suggestedQuestions.value.length > 0) {\n messageStore.setQuestions(this.suggestedQuestions.value);\n }\n } catch (error) {\n console.warn('Failed to initialize welcome and questions:', error);\n }\n }\n\n /**\n * 合并配置\n */\n private mergeConfig(config: LangChatConfig): Required<LangChatConfig> {\n const merged = { ...DEFAULT_CONFIG };\n\n // 递归合并配置\n const deepMerge = (target: any, source: any) => {\n for (const key in source) {\n if (\n source[key] &&\n typeof source[key] === 'object' &&\n !Array.isArray(source[key])\n ) {\n target[key] = target[key] || {};\n deepMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n };\n\n deepMerge(merged, config);\n return merged;\n }\n\n /**\n * 保存到历史记录\n */\n private saveToHistory(): void {\n if (!this.config.enableHistory) return;\n\n try {\n const history = this.messages.value.slice(-this.config.maxHistoryItems);\n localStorage.setItem('langchat-history', JSON.stringify(history));\n } catch (error) {\n console.warn('Failed to save history:', error);\n }\n }\n\n /**\n * 开始流式回复\n */\n private async startStreamingReply(\n userContent: string,\n messageId: string,\n ): Promise<void> {\n if (!this.openaiClient) {\n throw new Error('OpenAI client not initialized');\n }\n\n try {\n this.streamingMessageId = messageId;\n\n // 构建消息历史\n const messageHistory = this.messages.value\n .filter((msg) => msg.type === 'user' || msg.type === 'ai')\n .slice(-10) // 只保留最近10条消息\n .map((msg) => ({\n role: msg.type === 'user' ? 'user' : 'assistant',\n content: msg.content,\n }));\n\n // 添加当前用户消息\n messageHistory.push({\n role: 'user',\n content: userContent,\n });\n\n // 开始流式调用\n const stream = this.openaiClient.chatCompletionStream({\n messages: messageHistory,\n model: this.config.modelName,\n temperature: 0.7,\n maxTokens: 1000,\n });\n\n let fullContent = '';\n\n for await (const chunk of stream) {\n const content = chunk.choices[0]?.delta?.content;\n if (content) {\n fullContent += content;\n\n // 更新消息内容\n const message = this.messages.value.find(\n (msg) => msg.id === messageId,\n );\n if (message) {\n message.content = fullContent;\n message.streamContent = fullContent;\n\n // 触发流式更新事件\n this.emit('streaming-update', { messageId, content: fullContent });\n this.config.onStreamingUpdate?.(messageId, fullContent);\n }\n }\n\n // 检查是否完成\n if (chunk.choices[0]?.finishReason) {\n break;\n }\n }\n\n // 完成流式回复\n const message = this.messages.value.find((msg) => msg.id === messageId);\n if (message) {\n message.status = 'sent';\n message.isStreaming = false;\n delete message.streamContent;\n\n // 触发消息接收事件\n this.emit('message-received', message);\n this.config.onMessageReceived?.(message);\n }\n } catch (error) {\n console.error('Streaming reply failed:', error);\n\n // 更新消息状态为错误\n const message = this.messages.value.find((msg) => msg.id === messageId);\n if (message) {\n message.status = 'error';\n message.isStreaming = false;\n message.error = (error as Error).message;\n }\n\n throw error;\n } finally {\n this.streamingMessageId = null;\n }\n }\n\n /**\n * 更新容器位置\n */\n private updateContainerPosition(): void {\n if (!this.container) return;\n\n const position = this.config.position;\n const isRight = position.includes('right');\n const isBottom = position.includes('bottom');\n\n this.container.style.right = isRight ? '20px' : 'auto';\n this.container.style.left = isRight ? 'auto' : '20px';\n this.container.style.bottom = isBottom ? '20px' : 'auto';\n this.container.style.top = isBottom ? 'auto' : '20px';\n }\n\n /**\n * 更新OpenAI客户端配置\n */\n private updateOpenAIClient(): void {\n if (this.openaiClient && this.config.apiKey) {\n this.openaiClient.updateConfig({\n apiKey: this.config.apiKey,\n baseUrl: this.config.baseUrl,\n organization: this.config.organization,\n });\n } else if (this.config.apiKey) {\n this.initializeOpenAIClient();\n }\n }\n\n /**\n * 更新问题建议\n */\n private async updateSuggestedQuestions(context: string): Promise<void> {\n try {\n await this.getSuggestedQuestions(context);\n } catch (error) {\n console.warn('Failed to update suggested questions:', error);\n }\n }\n\n /**\n * 验证配置\n */\n private validateConfig(): void {\n if (!this.config.apiKey) {\n throw new Error('API key is required');\n }\n\n if (this.config.baseUrl && !validateBaseUrl(this.config.baseUrl)) {\n throw new Error('Invalid base URL format');\n }\n\n if (this.config.maxHistoryItems < 1) {\n throw new Error('maxHistoryItems must be greater than 0');\n }\n }\n}\n","// import type { LangChatEvent } from '../types'\n\n// 错误类型枚举\nexport enum ErrorType {\n NETWORK = 'NETWORK',\n API = 'API',\n VALIDATION = 'VALIDATION',\n AUTHENTICATION = 'AUTHENTICATION',\n RATE_LIMIT = 'RATE_LIMIT',\n TIMEOUT = 'TIMEOUT',\n UNKNOWN = 'UNKNOWN'\n}\n\n// 错误严重程度\nexport enum ErrorSeverity {\n LOW = 'LOW',\n MEDIUM = 'MEDIUM',\n HIGH = 'HIGH',\n CRITICAL = 'CRITICAL'\n}\n\n// 错误信息接口\nexport interface ErrorInfo {\n type: ErrorType\n severity: ErrorSeverity\n code: string\n message: string\n userMessage: string\n technicalDetails?: string\n retryable: boolean\n retryCount?: number\n maxRetries?: number\n timestamp: Date\n context?: Record<string, any>\n}\n\n// 错误处理配置\nexport interface ErrorHandlerConfig {\n enableRetry: boolean\n maxRetries: number\n retryDelay: number\n showTechnicalDetails: boolean\n logErrors: boolean\n onError?: (error: ErrorInfo) => void\n}\n\n// 默认配置\nconst DEFAULT_CONFIG: ErrorHandlerConfig = {\n enableRetry: true,\n maxRetries: 3,\n retryDelay: 1000,\n showTechnicalDetails: false,\n logErrors: true,\n}\n\nexport class ErrorHandler {\n private config: ErrorHandlerConfig\n private errorHistory: ErrorInfo[] = []\n private retryQueue: Map<string, { error: ErrorInfo; retryCount: number }> = new Map()\n\n constructor(config: Partial<ErrorHandlerConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config }\n }\n\n /**\n * 处理错误\n */\n handleError(error: any, context?: Record<string, any>): ErrorInfo {\n const errorInfo = this.createErrorInfo(error, context)\n \n // 记录错误\n this.errorHistory.push(errorInfo)\n \n // 日志记录\n if (this.config.logErrors) {\n this.logError(errorInfo)\n }\n \n // 触发回调\n this.config.onError?.(errorInfo)\n \n // 处理重试\n if (this.config.enableRetry && errorInfo.retryable) {\n this.scheduleRetry(errorInfo)\n }\n \n return errorInfo\n }\n\n /**\n * 创建错误信息\n */\n private createErrorInfo(error: any, context?: Record<string, any>): ErrorInfo {\n let type = ErrorType.UNKNOWN\n let severity = ErrorSeverity.MEDIUM\n let code = 'UNKNOWN_ERROR'\n let message = '未知错误'\n let userMessage = '发生了一个错误,请稍后重试'\n let technicalDetails: string | undefined\n let retryable = false\n\n // 分析错误类型\n if (error instanceof Error) {\n message = error.message\n \n // 网络错误\n if (error.message.includes('network') || error.message.includes('fetch')) {\n type = ErrorType.NETWORK\n severity = ErrorSeverity.HIGH\n code = 'NETWORK_ERROR'\n userMessage = '网络连接错误,请检查网络设置'\n retryable = true\n }\n // API错误\n else if (error.message.includes('API') || error.message.includes('openai')) {\n type = ErrorType.API\n severity = ErrorSeverity.HIGH\n code = 'API_ERROR'\n userMessage = 'API调用失败,请稍后重试'\n retryable = true\n }\n // 认证错误\n else if (error.message.includes('401') || error.message.includes('unauthorized')) {\n type = ErrorType.AUTHENTICATION\n severity = ErrorSeverity.CRITICAL\n code = 'AUTHENTICATION_ERROR'\n userMessage = '认证失败,请检查API密钥'\n retryable = false\n }\n // 频率限制\n else if (error.message.includes('429') || error.message.includes('rate limit')) {\n type = ErrorType.RATE_LIMIT\n severity = ErrorSeverity.MEDIUM\n code = 'RATE_LIMIT_ERROR'\n userMessage = '请求过于频繁,请稍后重试'\n retryable = true\n }\n // 超时错误\n else if (error.message.includes('timeout')) {\n type = ErrorType.TIMEOUT\n severity = ErrorSeverity.MEDIUM\n code = 'TIMEOUT_ERROR'\n userMessage = '请求超时,请检查网络连接'\n retryable = true\n }\n // 验证错误\n else if (error.message.includes('validation') || error.message.includes('invalid')) {\n type = ErrorType.VALIDATION\n severity = ErrorSeverity.LOW\n code = 'VALIDATION_ERROR'\n userMessage = '输入参数无效,请检查后重试'\n retryable = false\n }\n \n technicalDetails = error.stack\n } else if (typeof error === 'string') {\n message = error\n userMessage = error\n } else if (error?.message) {\n message = error.message\n userMessage = error.message\n }\n\n return {\n type,\n severity,\n code,\n message,\n userMessage,\n technicalDetails,\n retryable,\n timestamp: new Date(),\n context\n }\n }\n\n /**\n * 安排重试\n */\n private scheduleRetry(errorInfo: ErrorInfo): void {\n const retryKey = `${errorInfo.code}_${errorInfo.timestamp.getTime()}`\n \n if (!this.retryQueue.has(retryKey)) {\n this.retryQueue.set(retryKey, { error: errorInfo, retryCount: 0 })\n }\n \n const retryItem = this.retryQueue.get(retryKey)!\n \n if (retryItem.retryCount < this.config.maxRetries) {\n retryItem.retryCount++\n \n setTimeout(() => {\n this.executeRetry(retryKey, retryItem)\n }, this.config.retryDelay * Math.pow(2, retryItem.retryCount - 1)) // 指数退避\n } else {\n // 重试次数用完,从队列中移除\n this.retryQueue.delete(retryKey)\n \n // 更新错误信息\n const finalError: ErrorInfo = {\n ...errorInfo,\n retryCount: retryItem.retryCount,\n maxRetries: this.config.maxRetries,\n userMessage: '重试次数已用完,请稍后手动重试'\n }\n \n this.errorHistory.push(finalError)\n }\n }\n\n /**\n * 执行重试\n */\n private executeRetry(retryKey: string, retryItem: { error: ErrorInfo; retryCount: number }): void {\n // 这里应该调用原始操作的重试逻辑\n // 由于无法直接访问原始操作,我们只记录重试事件\n console.log(`Retrying operation: ${retryItem.error.code} (attempt ${retryItem.retryCount})`)\n \n // 从队列中移除\n this.retryQueue.delete(retryKey)\n }\n\n /**\n * 日志记录\n */\n private logError(errorInfo: ErrorInfo): void {\n const logLevel = this.getLogLevel(errorInfo.severity)\n const logMessage = `[${logLevel}] ${errorInfo.code}: ${errorInfo.message}`\n \n if (errorInfo.severity === ErrorSeverity.CRITICAL) {\n console.error(logMessage, errorInfo)\n } else if (errorInfo.severity === ErrorSeverity.HIGH) {\n console.warn(logMessage, errorInfo)\n } else {\n console.log(logMessage, errorInfo)\n }\n }\n\n /**\n * 获取日志级别\n */\n private getLogLevel(severity: ErrorSeverity): string {\n switch (severity) {\n case ErrorSeverity.CRITICAL:\n return 'ERROR'\n case ErrorSeverity.HIGH:\n return 'WARN'\n case ErrorSeverity.MEDIUM:\n return 'INFO'\n case ErrorSeverity.LOW:\n return 'DEBUG'\n default:\n return 'INFO'\n }\n }\n\n /**\n * 获取错误历史\n */\n getErrorHistory(): ErrorInfo[] {\n return [...this.errorHistory]\n }\n\n /**\n * 获取特定类型的错误\n */\n getErrorsByType(type: ErrorType): ErrorInfo[] {\n return this.errorHistory.filter(error => error.type === type)\n }\n\n /**\n * 获取特定严重程度的错误\n */\n getErrorsBySeverity(severity: ErrorSeverity): ErrorInfo[] {\n return this.errorHistory.filter(error => error.severity === severity)\n }\n\n /**\n * 获取可重试的错误\n */\n getRetryableErrors(): ErrorInfo[] {\n return this.errorHistory.filter(error => error.retryable)\n }\n\n /**\n * 清理错误历史\n */\n clearErrorHistory(): void {\n this.errorHistory = []\n }\n\n /**\n * 清理过期错误\n */\n cleanupOldErrors(olderThanHours: number = 24): number {\n const cutoffTime = new Date()\n cutoffTime.setHours(cutoffTime.getHours() - olderThanHours)\n \n const initialCount = this.errorHistory.length\n this.errorHistory = this.errorHistory.filter(error => \n error.timestamp > cutoffTime\n )\n \n return initialCount - this.errorHistory.length\n }\n\n /**\n * 获取错误统计\n */\n getErrorStats(): Record<string, any> {\n const totalErrors = this.errorHistory.length\n const errorsByType = Object.values(ErrorType).reduce((acc, type) => {\n acc[type] = this.getErrorsByType(type).length\n return acc\n }, {} as Record<string, number>)\n \n const errorsBySeverity = Object.values(ErrorSeverity).reduce((acc, severity) => {\n acc[severity] = this.getErrorsBySeverity(severity).length\n return acc\n }, {} as Record<string, number>)\n \n const retryableErrors = this.getRetryableErrors().length\n \n return {\n totalErrors,\n errorsByType,\n errorsBySeverity,\n retryableErrors,\n retryQueueSize: this.retryQueue.size\n }\n }\n\n /**\n * 更新配置\n */\n updateConfig(config: Partial<ErrorHandlerConfig>): void {\n this.config = { ...this.config, ...config }\n }\n\n /**\n * 获取当前配置\n */\n getConfig(): ErrorHandlerConfig {\n return { ...this.config }\n }\n\n /**\n * 销毁\n */\n destroy(): void {\n this.errorHistory = []\n this.retryQueue.clear()\n }\n}\n\n// 创建单例实例\nexport const errorHandler = new ErrorHandler()\n\n// 导出创建函数\nexport function createErrorHandler(config?: Partial<ErrorHandlerConfig>) {\n return new ErrorHandler(config)\n}\n\n// 工具函数\nexport function isRetryableError(error: any): boolean {\n const errorInfo = errorHandler.handleError(error)\n return errorInfo.retryable\n}\n\nexport function getUserFriendlyMessage(error: any): string {\n const errorInfo = errorHandler.handleError(error)\n return errorInfo.userMessage\n}\n\nexport function getErrorType(error: any): ErrorType {\n const errorInfo = errorHandler.handleError(error)\n return errorInfo.type\n}\n","// Vue插件\nimport type { App } from 'vue';\n\nimport { LangChatBot } from './LangChatBot';\n\n// 引入项目纬度的自定义样式\nimport './style.css';\n\n// 导出主类\nexport { LangChatBot } from './LangChatBot';\n\n// 导出类型定义\nexport type {\n AvatarConfig,\n BackendAPI,\n ChatMessage,\n ChatRequest,\n ChatResponse,\n ChatSession,\n CopyrightConfig,\n DeepPartial,\n HeaderConfig,\n LangChatConfig,\n LangChatEvent,\n LangChatInstance,\n MarkdownOptions,\n MessageConfig,\n OpenAIConfig,\n QuestionItem,\n QuestionsConfig,\n RequiredFields,\n StreamingChatResponse,\n ThemeConfig,\n WelcomeConfig,\n WelcomeData,\n} from './types';\n\n// 导出默认配置\nexport { DEFAULT_CONFIG } from './types';\nexport { createErrorHandler, errorHandler } from './utils/error-handler';\nexport { createMessageStore, messageStore } from './utils/message-store';\n// 导出工具函数\nexport {\n createOpenAIClient,\n validateApiKey,\n validateBaseUrl,\n} from './utils/openai-client';\n\nexport { createThemeManager, themeManager } from './utils/theme-manager';\n\nconst VuePlugin = {\n install: (app: App) => {\n app.config.globalProperties.$langchat = LangChatBot;\n },\n};\n\n// 默认导出\nexport default LangChatBot;\n\n// 命名导出\nexport { VuePlugin };\n"],"names":["str","map","hasOwnProperty","hasOwn","isFunction","isString","isObject","isRef","_a","link","error","computed","self","readonly","has","r","watch","effect","errorHandler","p","ref","createApp","remove2","remove","isModelListener","emit","text","set","match","camelize$1","config","classGroup","isNumber","skew","base","param","_openBlock","_createBlock","_resolveDynamicComponent","as","_normalizeClass","_unref","variant","size","$attrs","_renderSlot","_createElementBlock","_createElementVNode","_hoisted_1","_hoisted_2","_toDisplayString","Button","decode","encode","code","fromCodePoint","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","errors","_class","assign","entity","escapeRE","ucmicro.P","ucmicro.S","list","isLinkOpen","isLinkClose","linkify","stack","_rules","r_normalize","r_block","r_inline","r_linkify","r_replacements","r_smartquotes","r_text_join","queue","nextLine","pos","max","r_table","r_code","r_fence","r_blockquote","r_hr","r_list","r_reference","r_html_block","r_heading","r_lheading","r_paragraph","escape","postProcess","r_text","r_newline","r_escape","r_backticks","r_link","r_image","r_autolink","r_html_inline","r_entity","r_balance_pairs","r_fragments_join","tlds","normalize","mdurl.parse","mdurl.encode","mdurl.format","mdurl.decode","utils.isString","ParserCore","utils.assign","questions","title","showTitle","_hoisted_3","_hoisted_4","_Fragment","_renderList","_hoisted_5","welcomeData","QuestionsSuggestions","messages","_normalizeStyle","isLoading","_createVNode","ChatHeader","suggestedQuestions","ChatSender","isOpen","DEFAULT_CONFIG","is_array","format","fetch","FormData","File","ReadableStream","shims.kind","shims.setShims","auto.getRuntime","__classPrivateFieldSet","kind","__classPrivateFieldGet","newline","iterator","delimiter","parseResponse","resolve","opts","Page","shimsKind","retryMessage","init","modifiedArg","MessagesAPI.Messages","Completions","Messages","CompletionsAPI.Completions","Chat","Core.multipartFormRequestOptions","TranscriptionsAPI.Transcriptions","TranslationsAPI.Translations","SpeechAPI.Speech","_EventStream_handleError","chunk","Core.isObj","_AssistantStream_addEvent","_AssistantStream_endRequest","_AssistantStream_handleMessage","_AssistantStream_handleRunStep","_AssistantStream_handleEvent","_AssistantStream_accumulateRunStep","_AssistantStream_accumulateMessage","_AssistantStream_accumulateContent","_AssistantStream_handleRun","isAutoParsableTool","hasAutoParseableInput","parseToolCall","inputTool","content","name","_AbstractChatCompletionRunner_getFinalContent","_AbstractChatCompletionRunner_getFinalMessage","_AbstractChatCompletionRunner_getFinalFunctionCall","_AbstractChatCompletionRunner_getFinalFunctionCallResult","_AbstractChatCompletionRunner_calculateTotalUsage","_AbstractChatCompletionRunner_validateParams","_AbstractChatCompletionRunner_stringifyFunctionCallResult","e","_ChatCompletionStream_beginRequest","_ChatCompletionStream_getChoiceEventState","_ChatCompletionStream_addChunk","_ChatCompletionStream_emitToolCallDoneEvent","_ChatCompletionStream_emitContentDoneEvents","_ChatCompletionStream_endRequest","_ChatCompletionStream_getAutoParseableResponseFormat","_ChatCompletionStream_accumulateChatCompletion","refusal","rest","index","id","SessionsAPI.Sessions","TranscriptionSessionsAPI.TranscriptionSessions","StepsAPI.Steps","Runs","RunsAPI.Runs","RealtimeAPI.Realtime","ChatAPI.Chat","AssistantsAPI.Assistants","ThreadsAPI.Threads","ContentAPI.Content","Files","FilesAPI.Files","Core.debug","response","Core.toFloat32Array","OutputItemsAPI.OutputItems","GradersAPI.Graders","Graders","PermissionsAPI.Permissions","Checkpoints","CheckpointsAPI.Checkpoints","MethodsAPI.Methods","JobsAPI.Jobs","AlphaAPI.Alpha","GraderModelsAPI.GraderModels","output","_ResponseStream_beginRequest","_ResponseStream_addEvent","event","_ResponseStream_endRequest","_ResponseStream_accumulateResponse","InputItemsAPI.InputItems","PartsAPI.Parts","batch","FileBatchesAPI.FileBatches","Core.APIClient","Core.readEnv","Errors.OpenAIError","Core.isRunningInBrowser","API.Completions","API.Chat","API.Embeddings","API.Files","API.Images","API.Audio","API.Moderations","API.Models","API.FineTuning","API.Graders","API.VectorStores","API.Beta","API.Batches","API.Uploads","API.Responses","API.Evals","API.Containers","qs.stringify","Errors.APIError","Errors.APIConnectionError","Errors.APIConnectionTimeoutError","Errors.APIUserAbortError","Errors.NotFoundError","Errors.ConflictError","Errors.RateLimitError","Errors.BadRequestError","Errors.AuthenticationError","Errors.InternalServerError","Errors.PermissionDeniedError","Errors.UnprocessableEntityError","Uploads.toFile","Uploads.fileFromPath","UploadsAPIUploads","WidgetButton","ChatWindow","message","ErrorType","ErrorSeverity"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,7,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164]}