@djvlc/runtime-web 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/runtime.esm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.esm.js","sources":["../../../node_modules/.pnpm/@djvlc+contracts-types@1.4.0/node_modules/@djvlc/contracts-types/dist/index.mjs","../../core/dist/index.js","../src/index.ts"],"sourcesContent":["// src/version.ts\nvar PAGE_SCHEMA_VERSION = \"1.0.0\";\nvar COMPONENT_META_SCHEMA_VERSION = \"1.0.0\";\nvar ACTION_SPEC_VERSION = \"1.0.0\";\nvar DATA_QUERY_SPEC_VERSION = \"1.0.0\";\nfunction getContractsVersion() {\n return {\n pageSchema: PAGE_SCHEMA_VERSION,\n componentMeta: COMPONENT_META_SCHEMA_VERSION,\n actionSpec: ACTION_SPEC_VERSION,\n dataQuerySpec: DATA_QUERY_SPEC_VERSION\n };\n}\nfunction isVersionCompatible(required, current) {\n const [reqMajor, reqMinor] = required.split(\".\").map(Number);\n const [curMajor, curMinor] = current.split(\".\").map(Number);\n return curMajor === reqMajor && curMinor >= reqMinor;\n}\n\n// src/errors/index.ts\nvar ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {\n ErrorCode2[ErrorCode2[\"UNKNOWN\"] = 1e3] = \"UNKNOWN\";\n ErrorCode2[ErrorCode2[\"INVALID_REQUEST\"] = 1001] = \"INVALID_REQUEST\";\n ErrorCode2[ErrorCode2[\"UNAUTHORIZED\"] = 1002] = \"UNAUTHORIZED\";\n ErrorCode2[ErrorCode2[\"FORBIDDEN\"] = 1003] = \"FORBIDDEN\";\n ErrorCode2[ErrorCode2[\"NOT_FOUND\"] = 1004] = \"NOT_FOUND\";\n ErrorCode2[ErrorCode2[\"RATE_LIMITED\"] = 1005] = \"RATE_LIMITED\";\n ErrorCode2[ErrorCode2[\"VALIDATION_ERROR\"] = 1006] = \"VALIDATION_ERROR\";\n ErrorCode2[ErrorCode2[\"INTERNAL_ERROR\"] = 1007] = \"INTERNAL_ERROR\";\n ErrorCode2[ErrorCode2[\"SERVICE_UNAVAILABLE\"] = 1008] = \"SERVICE_UNAVAILABLE\";\n ErrorCode2[ErrorCode2[\"TIMEOUT\"] = 1009] = \"TIMEOUT\";\n ErrorCode2[ErrorCode2[\"ACTION_NOT_FOUND\"] = 2001] = \"ACTION_NOT_FOUND\";\n ErrorCode2[ErrorCode2[\"ACTION_INVALID_PARAMS\"] = 2002] = \"ACTION_INVALID_PARAMS\";\n ErrorCode2[ErrorCode2[\"ACTION_EXECUTION_FAILED\"] = 2003] = \"ACTION_EXECUTION_FAILED\";\n ErrorCode2[ErrorCode2[\"ACTION_IDEMPOTENCY_CONFLICT\"] = 2004] = \"ACTION_IDEMPOTENCY_CONFLICT\";\n ErrorCode2[ErrorCode2[\"ACTION_BLOCKED\"] = 2005] = \"ACTION_BLOCKED\";\n ErrorCode2[ErrorCode2[\"ACTION_RISK_REJECTED\"] = 2006] = \"ACTION_RISK_REJECTED\";\n ErrorCode2[ErrorCode2[\"ACTION_EXPIRED\"] = 2007] = \"ACTION_EXPIRED\";\n ErrorCode2[ErrorCode2[\"ACTION_QUOTA_EXCEEDED\"] = 2008] = \"ACTION_QUOTA_EXCEEDED\";\n ErrorCode2[ErrorCode2[\"QUERY_NOT_FOUND\"] = 3001] = \"QUERY_NOT_FOUND\";\n ErrorCode2[ErrorCode2[\"QUERY_INVALID_PARAMS\"] = 3002] = \"QUERY_INVALID_PARAMS\";\n ErrorCode2[ErrorCode2[\"QUERY_EXECUTION_FAILED\"] = 3003] = \"QUERY_EXECUTION_FAILED\";\n ErrorCode2[ErrorCode2[\"QUERY_FIELD_NOT_ALLOWED\"] = 3004] = \"QUERY_FIELD_NOT_ALLOWED\";\n ErrorCode2[ErrorCode2[\"QUERY_TIMEOUT\"] = 3005] = \"QUERY_TIMEOUT\";\n ErrorCode2[ErrorCode2[\"QUERY_DISABLED\"] = 3006] = \"QUERY_DISABLED\";\n ErrorCode2[ErrorCode2[\"COMPONENT_NOT_FOUND\"] = 4001] = \"COMPONENT_NOT_FOUND\";\n ErrorCode2[ErrorCode2[\"COMPONENT_VERSION_NOT_FOUND\"] = 4002] = \"COMPONENT_VERSION_NOT_FOUND\";\n ErrorCode2[ErrorCode2[\"COMPONENT_BLOCKED\"] = 4003] = \"COMPONENT_BLOCKED\";\n ErrorCode2[ErrorCode2[\"COMPONENT_INTEGRITY_MISMATCH\"] = 4004] = \"COMPONENT_INTEGRITY_MISMATCH\";\n ErrorCode2[ErrorCode2[\"COMPONENT_INCOMPATIBLE\"] = 4005] = \"COMPONENT_INCOMPATIBLE\";\n ErrorCode2[ErrorCode2[\"COMPONENT_LOAD_FAILED\"] = 4006] = \"COMPONENT_LOAD_FAILED\";\n ErrorCode2[ErrorCode2[\"COMPONENT_RENDER_ERROR\"] = 4007] = \"COMPONENT_RENDER_ERROR\";\n ErrorCode2[ErrorCode2[\"PAGE_NOT_FOUND\"] = 5001] = \"PAGE_NOT_FOUND\";\n ErrorCode2[ErrorCode2[\"PAGE_VERSION_NOT_FOUND\"] = 5002] = \"PAGE_VERSION_NOT_FOUND\";\n ErrorCode2[ErrorCode2[\"PAGE_SCHEMA_INVALID\"] = 5003] = \"PAGE_SCHEMA_INVALID\";\n ErrorCode2[ErrorCode2[\"PAGE_MANIFEST_INVALID\"] = 5004] = \"PAGE_MANIFEST_INVALID\";\n ErrorCode2[ErrorCode2[\"PAGE_PUBLISH_FAILED\"] = 5005] = \"PAGE_PUBLISH_FAILED\";\n ErrorCode2[ErrorCode2[\"PAGE_ROLLBACK_FAILED\"] = 5006] = \"PAGE_ROLLBACK_FAILED\";\n ErrorCode2[ErrorCode2[\"ACTIVITY_NOT_FOUND\"] = 6001] = \"ACTIVITY_NOT_FOUND\";\n ErrorCode2[ErrorCode2[\"ACTIVITY_NOT_STARTED\"] = 6002] = \"ACTIVITY_NOT_STARTED\";\n ErrorCode2[ErrorCode2[\"ACTIVITY_ENDED\"] = 6003] = \"ACTIVITY_ENDED\";\n ErrorCode2[ErrorCode2[\"ACTIVITY_ALREADY_CLAIMED\"] = 6004] = \"ACTIVITY_ALREADY_CLAIMED\";\n ErrorCode2[ErrorCode2[\"ACTIVITY_ALREADY_SIGNED\"] = 6005] = \"ACTIVITY_ALREADY_SIGNED\";\n ErrorCode2[ErrorCode2[\"ACTIVITY_LIMIT_EXCEEDED\"] = 6006] = \"ACTIVITY_LIMIT_EXCEEDED\";\n ErrorCode2[ErrorCode2[\"ACTIVITY_DISABLED\"] = 6007] = \"ACTIVITY_DISABLED\";\n ErrorCode2[ErrorCode2[\"EXPRESSION_SYNTAX_ERROR\"] = 7001] = \"EXPRESSION_SYNTAX_ERROR\";\n ErrorCode2[ErrorCode2[\"EXPRESSION_UNKNOWN_FUNCTION\"] = 7002] = \"EXPRESSION_UNKNOWN_FUNCTION\";\n ErrorCode2[ErrorCode2[\"EXPRESSION_INVALID_ARGUMENT\"] = 7003] = \"EXPRESSION_INVALID_ARGUMENT\";\n ErrorCode2[ErrorCode2[\"EXPRESSION_UNKNOWN_VARIABLE\"] = 7004] = \"EXPRESSION_UNKNOWN_VARIABLE\";\n ErrorCode2[ErrorCode2[\"EXPRESSION_TYPE_MISMATCH\"] = 7005] = \"EXPRESSION_TYPE_MISMATCH\";\n ErrorCode2[ErrorCode2[\"EXPRESSION_ACCESS_DENIED\"] = 7006] = \"EXPRESSION_ACCESS_DENIED\";\n ErrorCode2[ErrorCode2[\"SCHEMA_VERSION_MISMATCH\"] = 8001] = \"SCHEMA_VERSION_MISMATCH\";\n ErrorCode2[ErrorCode2[\"MIGRATION_FAILED\"] = 8002] = \"MIGRATION_FAILED\";\n ErrorCode2[ErrorCode2[\"MIGRATION_NOT_FOUND\"] = 8003] = \"MIGRATION_NOT_FOUND\";\n ErrorCode2[ErrorCode2[\"VERSION_INCOMPATIBLE\"] = 8004] = \"VERSION_INCOMPATIBLE\";\n return ErrorCode2;\n})(ErrorCode || {});\nvar ErrorCodeCategory = {\n GENERAL: [1e3, 1999],\n ACTION: [2e3, 2999],\n QUERY: [3e3, 3999],\n COMPONENT: [4e3, 4999],\n PAGE: [5e3, 5999],\n ACTIVITY: [6e3, 6999],\n EXPRESSION: [7e3, 7999],\n VERSION: [8e3, 8999]\n};\nvar ErrorMessages = {\n // 通用错误\n [1e3 /* UNKNOWN */]: \"\\u672A\\u77E5\\u9519\\u8BEF\",\n [1001 /* INVALID_REQUEST */]: \"\\u8BF7\\u6C42\\u53C2\\u6570\\u65E0\\u6548\",\n [1002 /* UNAUTHORIZED */]: \"\\u672A\\u6388\\u6743\\u8BBF\\u95EE\",\n [1003 /* FORBIDDEN */]: \"\\u7981\\u6B62\\u8BBF\\u95EE\",\n [1004 /* NOT_FOUND */]: \"\\u8D44\\u6E90\\u4E0D\\u5B58\\u5728\",\n [1005 /* RATE_LIMITED */]: \"\\u8BF7\\u6C42\\u9891\\u7387\\u8D85\\u9650\",\n [1006 /* VALIDATION_ERROR */]: \"\\u6570\\u636E\\u6821\\u9A8C\\u5931\\u8D25\",\n [1007 /* INTERNAL_ERROR */]: \"\\u670D\\u52A1\\u5185\\u90E8\\u9519\\u8BEF\",\n [1008 /* SERVICE_UNAVAILABLE */]: \"\\u670D\\u52A1\\u6682\\u4E0D\\u53EF\\u7528\",\n [1009 /* TIMEOUT */]: \"\\u8BF7\\u6C42\\u8D85\\u65F6\",\n // Action 错误\n [2001 /* ACTION_NOT_FOUND */]: \"\\u52A8\\u4F5C\\u4E0D\\u5B58\\u5728\",\n [2002 /* ACTION_INVALID_PARAMS */]: \"\\u52A8\\u4F5C\\u53C2\\u6570\\u65E0\\u6548\",\n [2003 /* ACTION_EXECUTION_FAILED */]: \"\\u52A8\\u4F5C\\u6267\\u884C\\u5931\\u8D25\",\n [2004 /* ACTION_IDEMPOTENCY_CONFLICT */]: \"\\u91CD\\u590D\\u8BF7\\u6C42\",\n [2005 /* ACTION_BLOCKED */]: \"\\u52A8\\u4F5C\\u5DF2\\u88AB\\u7981\\u7528\",\n [2006 /* ACTION_RISK_REJECTED */]: \"\\u98CE\\u63A7\\u62D2\\u7EDD\",\n [2007 /* ACTION_EXPIRED */]: \"\\u52A8\\u4F5C\\u5DF2\\u8FC7\\u671F\",\n [2008 /* ACTION_QUOTA_EXCEEDED */]: \"\\u914D\\u989D\\u5DF2\\u7528\\u5C3D\",\n // Data Query 错误\n [3001 /* QUERY_NOT_FOUND */]: \"\\u67E5\\u8BE2\\u4E0D\\u5B58\\u5728\",\n [3002 /* QUERY_INVALID_PARAMS */]: \"\\u67E5\\u8BE2\\u53C2\\u6570\\u65E0\\u6548\",\n [3003 /* QUERY_EXECUTION_FAILED */]: \"\\u67E5\\u8BE2\\u6267\\u884C\\u5931\\u8D25\",\n [3004 /* QUERY_FIELD_NOT_ALLOWED */]: \"\\u5B57\\u6BB5\\u8BBF\\u95EE\\u88AB\\u62D2\\u7EDD\",\n [3005 /* QUERY_TIMEOUT */]: \"\\u67E5\\u8BE2\\u8D85\\u65F6\",\n [3006 /* QUERY_DISABLED */]: \"\\u67E5\\u8BE2\\u5DF2\\u7981\\u7528\",\n // 组件错误\n [4001 /* COMPONENT_NOT_FOUND */]: \"\\u7EC4\\u4EF6\\u4E0D\\u5B58\\u5728\",\n [4002 /* COMPONENT_VERSION_NOT_FOUND */]: \"\\u7EC4\\u4EF6\\u7248\\u672C\\u4E0D\\u5B58\\u5728\",\n [4003 /* COMPONENT_BLOCKED */]: \"\\u7EC4\\u4EF6\\u5DF2\\u88AB\\u7981\\u7528\",\n [4004 /* COMPONENT_INTEGRITY_MISMATCH */]: \"\\u7EC4\\u4EF6\\u5B8C\\u6574\\u6027\\u6821\\u9A8C\\u5931\\u8D25\",\n [4005 /* COMPONENT_INCOMPATIBLE */]: \"\\u7EC4\\u4EF6\\u7248\\u672C\\u4E0D\\u517C\\u5BB9\",\n [4006 /* COMPONENT_LOAD_FAILED */]: \"\\u7EC4\\u4EF6\\u52A0\\u8F7D\\u5931\\u8D25\",\n [4007 /* COMPONENT_RENDER_ERROR */]: \"\\u7EC4\\u4EF6\\u6E32\\u67D3\\u9519\\u8BEF\",\n // 页面错误\n [5001 /* PAGE_NOT_FOUND */]: \"\\u9875\\u9762\\u4E0D\\u5B58\\u5728\",\n [5002 /* PAGE_VERSION_NOT_FOUND */]: \"\\u9875\\u9762\\u7248\\u672C\\u4E0D\\u5B58\\u5728\",\n [5003 /* PAGE_SCHEMA_INVALID */]: \"\\u9875\\u9762 Schema \\u65E0\\u6548\",\n [5004 /* PAGE_MANIFEST_INVALID */]: \"\\u9875\\u9762 Manifest \\u65E0\\u6548\",\n [5005 /* PAGE_PUBLISH_FAILED */]: \"\\u9875\\u9762\\u53D1\\u5E03\\u5931\\u8D25\",\n [5006 /* PAGE_ROLLBACK_FAILED */]: \"\\u9875\\u9762\\u56DE\\u6EDA\\u5931\\u8D25\",\n // 活动错误\n [6001 /* ACTIVITY_NOT_FOUND */]: \"\\u6D3B\\u52A8\\u4E0D\\u5B58\\u5728\",\n [6002 /* ACTIVITY_NOT_STARTED */]: \"\\u6D3B\\u52A8\\u672A\\u5F00\\u59CB\",\n [6003 /* ACTIVITY_ENDED */]: \"\\u6D3B\\u52A8\\u5DF2\\u7ED3\\u675F\",\n [6004 /* ACTIVITY_ALREADY_CLAIMED */]: \"\\u5DF2\\u9886\\u53D6\\u8FC7\",\n [6005 /* ACTIVITY_ALREADY_SIGNED */]: \"\\u4ECA\\u65E5\\u5DF2\\u7B7E\\u5230\",\n [6006 /* ACTIVITY_LIMIT_EXCEEDED */]: \"\\u8D85\\u51FA\\u9886\\u53D6\\u9650\\u5236\",\n [6007 /* ACTIVITY_DISABLED */]: \"\\u6D3B\\u52A8\\u5DF2\\u7981\\u7528\",\n // 表达式错误\n [7001 /* EXPRESSION_SYNTAX_ERROR */]: \"\\u8868\\u8FBE\\u5F0F\\u8BED\\u6CD5\\u9519\\u8BEF\",\n [7002 /* EXPRESSION_UNKNOWN_FUNCTION */]: \"\\u672A\\u77E5\\u51FD\\u6570\",\n [7003 /* EXPRESSION_INVALID_ARGUMENT */]: \"\\u65E0\\u6548\\u53C2\\u6570\",\n [7004 /* EXPRESSION_UNKNOWN_VARIABLE */]: \"\\u672A\\u77E5\\u53D8\\u91CF\",\n [7005 /* EXPRESSION_TYPE_MISMATCH */]: \"\\u7C7B\\u578B\\u4E0D\\u5339\\u914D\",\n [7006 /* EXPRESSION_ACCESS_DENIED */]: \"\\u8BBF\\u95EE\\u88AB\\u62D2\\u7EDD\",\n // 版本/迁移错误\n [8001 /* SCHEMA_VERSION_MISMATCH */]: \"Schema \\u7248\\u672C\\u4E0D\\u5339\\u914D\",\n [8002 /* MIGRATION_FAILED */]: \"\\u8FC1\\u79FB\\u5931\\u8D25\",\n [8003 /* MIGRATION_NOT_FOUND */]: \"\\u8FC1\\u79FB\\u811A\\u672C\\u4E0D\\u5B58\\u5728\",\n [8004 /* VERSION_INCOMPATIBLE */]: \"\\u7248\\u672C\\u4E0D\\u517C\\u5BB9\"\n};\nfunction createDjvlcError(code, details, traceId) {\n return {\n code,\n message: ErrorMessages[code] || \"\\u672A\\u77E5\\u9519\\u8BEF\",\n details,\n traceId,\n timestamp: Date.now()\n };\n}\nfunction getHttpStatusFromErrorCode(code) {\n if (code === 1002 /* UNAUTHORIZED */) return 401;\n if (code === 1003 /* FORBIDDEN */) return 403;\n if (code === 1004 /* NOT_FOUND */) return 404;\n if (code === 1005 /* RATE_LIMITED */) return 429;\n if (code === 1009 /* TIMEOUT */) return 408;\n if (code === 1008 /* SERVICE_UNAVAILABLE */) return 503;\n const numericCode = Number(code);\n if (numericCode >= 1e3 && numericCode < 2e3) return 400;\n if (numericCode >= 2e3 && numericCode < 3e3) return 400;\n if (numericCode >= 3e3 && numericCode < 4e3) return 400;\n if (numericCode >= 4e3 && numericCode < 5e3) return 404;\n if (numericCode >= 5e3 && numericCode < 6e3) return 404;\n if (numericCode >= 6e3 && numericCode < 7e3) return 400;\n if (numericCode >= 7e3 && numericCode < 8e3) return 400;\n if (numericCode >= 8e3 && numericCode < 9e3) return 400;\n return 500;\n}\nfunction isRetryableError(code) {\n return [\n 1009 /* TIMEOUT */,\n 1008 /* SERVICE_UNAVAILABLE */,\n 3005 /* QUERY_TIMEOUT */,\n 4006 /* COMPONENT_LOAD_FAILED */\n ].includes(code);\n}\n\n// src/page/index.ts\nvar PublishStatus = /* @__PURE__ */ ((PublishStatus2) => {\n PublishStatus2[\"PENDING\"] = \"pending\";\n PublishStatus2[\"PUBLISHING\"] = \"publishing\";\n PublishStatus2[\"SUCCESS\"] = \"success\";\n PublishStatus2[\"FAILED\"] = \"failed\";\n PublishStatus2[\"ROLLBACK\"] = \"rollback\";\n return PublishStatus2;\n})(PublishStatus || {});\n\n// src/component/index.ts\nvar COMPONENT_CATEGORIES = [\n \"basic\",\n \"form\",\n \"layout\",\n \"navigation\",\n \"feedback\",\n \"display\",\n \"data\",\n \"business\",\n \"chart\",\n \"other\"\n];\n\n// src/expression/index.ts\nvar BUILTIN_FUNCTIONS = [\n // 字符串函数\n {\n name: \"len\",\n description: \"\\u83B7\\u53D6\\u5B57\\u7B26\\u4E32\\u6216\\u6570\\u7EC4\\u957F\\u5EA6\",\n params: [{ name: \"value\", type: \"any\", required: true }],\n returnType: \"number\",\n examples: ['len(\"hello\")', \"len([1,2,3])\"]\n },\n {\n name: \"trim\",\n description: \"\\u53BB\\u9664\\u5B57\\u7B26\\u4E32\\u9996\\u5C3E\\u7A7A\\u683C\",\n params: [{ name: \"str\", type: \"string\", required: true }],\n returnType: \"string\",\n examples: ['trim(\" hello \")']\n },\n {\n name: \"upper\",\n description: \"\\u8F6C\\u4E3A\\u5927\\u5199\",\n params: [{ name: \"str\", type: \"string\", required: true }],\n returnType: \"string\",\n examples: ['upper(\"hello\")']\n },\n {\n name: \"lower\",\n description: \"\\u8F6C\\u4E3A\\u5C0F\\u5199\",\n params: [{ name: \"str\", type: \"string\", required: true }],\n returnType: \"string\",\n examples: ['lower(\"HELLO\")']\n },\n {\n name: \"substr\",\n description: \"\\u622A\\u53D6\\u5B50\\u5B57\\u7B26\\u4E32\",\n params: [\n { name: \"str\", type: \"string\", required: true },\n { name: \"start\", type: \"number\", required: true },\n { name: \"length\", type: \"number\", required: false }\n ],\n returnType: \"string\",\n examples: ['substr(\"hello\", 0, 2)']\n },\n {\n name: \"concat\",\n description: \"\\u8FDE\\u63A5\\u5B57\\u7B26\\u4E32\",\n params: [\n { name: \"values\", type: \"any\", required: true, description: \"\\u53EF\\u53D8\\u53C2\\u6570\" }\n ],\n returnType: \"string\",\n examples: ['concat(\"a\", \"b\", \"c\")']\n },\n {\n name: \"replace\",\n description: \"\\u66FF\\u6362\\u5B57\\u7B26\\u4E32\",\n params: [\n { name: \"str\", type: \"string\", required: true },\n { name: \"search\", type: \"string\", required: true },\n { name: \"replacement\", type: \"string\", required: true }\n ],\n returnType: \"string\",\n examples: ['replace(\"hello\", \"l\", \"x\")']\n },\n {\n name: \"split\",\n description: \"\\u5206\\u5272\\u5B57\\u7B26\\u4E32\",\n params: [\n { name: \"str\", type: \"string\", required: true },\n { name: \"separator\", type: \"string\", required: true }\n ],\n returnType: \"array\",\n examples: ['split(\"a,b,c\", \",\")']\n },\n {\n name: \"join\",\n description: \"\\u8FDE\\u63A5\\u6570\\u7EC4\\u4E3A\\u5B57\\u7B26\\u4E32\",\n params: [\n { name: \"arr\", type: \"array\", required: true },\n { name: \"separator\", type: \"string\", required: false, defaultValue: \",\" }\n ],\n returnType: \"string\",\n examples: ['join([\"a\",\"b\",\"c\"], \"-\")']\n },\n // 数字函数\n {\n name: \"toNumber\",\n description: \"\\u8F6C\\u4E3A\\u6570\\u5B57\",\n params: [{ name: \"value\", type: \"any\", required: true }],\n returnType: \"number\",\n examples: ['toNumber(\"123\")']\n },\n {\n name: \"toString\",\n description: \"\\u8F6C\\u4E3A\\u5B57\\u7B26\\u4E32\",\n params: [{ name: \"value\", type: \"any\", required: true }],\n returnType: \"string\",\n examples: [\"toString(123)\"]\n },\n {\n name: \"round\",\n description: \"\\u56DB\\u820D\\u4E94\\u5165\",\n params: [\n { name: \"value\", type: \"number\", required: true },\n { name: \"decimals\", type: \"number\", required: false, defaultValue: 0 }\n ],\n returnType: \"number\",\n examples: [\"round(3.14159, 2)\"]\n },\n {\n name: \"floor\",\n description: \"\\u5411\\u4E0B\\u53D6\\u6574\",\n params: [{ name: \"value\", type: \"number\", required: true }],\n returnType: \"number\",\n examples: [\"floor(3.7)\"]\n },\n {\n name: \"ceil\",\n description: \"\\u5411\\u4E0A\\u53D6\\u6574\",\n params: [{ name: \"value\", type: \"number\", required: true }],\n returnType: \"number\",\n examples: [\"ceil(3.2)\"]\n },\n {\n name: \"abs\",\n description: \"\\u7EDD\\u5BF9\\u503C\",\n params: [{ name: \"value\", type: \"number\", required: true }],\n returnType: \"number\",\n examples: [\"abs(-5)\"]\n },\n {\n name: \"min\",\n description: \"\\u6700\\u5C0F\\u503C\",\n params: [\n { name: \"values\", type: \"number\", required: true, description: \"\\u53EF\\u53D8\\u53C2\\u6570\" }\n ],\n returnType: \"number\",\n examples: [\"min(1, 2, 3)\"]\n },\n {\n name: \"max\",\n description: \"\\u6700\\u5927\\u503C\",\n params: [\n { name: \"values\", type: \"number\", required: true, description: \"\\u53EF\\u53D8\\u53C2\\u6570\" }\n ],\n returnType: \"number\",\n examples: [\"max(1, 2, 3)\"]\n },\n // 日期函数\n {\n name: \"now\",\n description: \"\\u5F53\\u524D\\u65F6\\u95F4\\u6233\\uFF08\\u6BEB\\u79D2\\uFF09\",\n params: [],\n returnType: \"number\",\n examples: [\"now()\"]\n },\n {\n name: \"dateFormat\",\n description: \"\\u683C\\u5F0F\\u5316\\u65E5\\u671F\",\n params: [\n { name: \"timestamp\", type: \"number\", required: true },\n { name: \"format\", type: \"string\", required: false, defaultValue: \"YYYY-MM-DD\" }\n ],\n returnType: \"string\",\n examples: ['dateFormat(now(), \"YYYY-MM-DD HH:mm:ss\")']\n },\n {\n name: \"dateParse\",\n description: \"\\u89E3\\u6790\\u65E5\\u671F\\u5B57\\u7B26\\u4E32\",\n params: [\n { name: \"dateStr\", type: \"string\", required: true },\n { name: \"format\", type: \"string\", required: false }\n ],\n returnType: \"number\",\n examples: ['dateParse(\"2024-01-01\")']\n },\n // 数组函数\n {\n name: \"first\",\n description: \"\\u83B7\\u53D6\\u6570\\u7EC4\\u7B2C\\u4E00\\u4E2A\\u5143\\u7D20\",\n params: [{ name: \"arr\", type: \"array\", required: true }],\n returnType: \"any\",\n examples: [\"first([1,2,3])\"]\n },\n {\n name: \"last\",\n description: \"\\u83B7\\u53D6\\u6570\\u7EC4\\u6700\\u540E\\u4E00\\u4E2A\\u5143\\u7D20\",\n params: [{ name: \"arr\", type: \"array\", required: true }],\n returnType: \"any\",\n examples: [\"last([1,2,3])\"]\n },\n {\n name: \"includes\",\n description: \"\\u68C0\\u67E5\\u6570\\u7EC4\\u662F\\u5426\\u5305\\u542B\\u5143\\u7D20\",\n params: [\n { name: \"arr\", type: \"array\", required: true },\n { name: \"value\", type: \"any\", required: true }\n ],\n returnType: \"boolean\",\n examples: [\"includes([1,2,3], 2)\"]\n },\n {\n name: \"slice\",\n description: \"\\u622A\\u53D6\\u6570\\u7EC4\",\n params: [\n { name: \"arr\", type: \"array\", required: true },\n { name: \"start\", type: \"number\", required: true },\n { name: \"end\", type: \"number\", required: false }\n ],\n returnType: \"array\",\n examples: [\"slice([1,2,3,4], 1, 3)\"]\n },\n // 条件函数\n {\n name: \"default\",\n description: \"\\u63D0\\u4F9B\\u9ED8\\u8BA4\\u503C\",\n params: [\n { name: \"value\", type: \"any\", required: true },\n { name: \"defaultValue\", type: \"any\", required: true }\n ],\n returnType: \"any\",\n examples: ['default(null, \"fallback\")']\n },\n {\n name: \"ifElse\",\n description: \"\\u6761\\u4EF6\\u5224\\u65AD\",\n params: [\n { name: \"condition\", type: \"boolean\", required: true },\n { name: \"trueValue\", type: \"any\", required: true },\n { name: \"falseValue\", type: \"any\", required: true }\n ],\n returnType: \"any\",\n examples: ['ifElse(age > 18, \"\\u6210\\u5E74\", \"\\u672A\\u6210\\u5E74\")']\n },\n {\n name: \"isEmpty\",\n description: \"\\u68C0\\u67E5\\u662F\\u5426\\u4E3A\\u7A7A\",\n params: [{ name: \"value\", type: \"any\", required: true }],\n returnType: \"boolean\",\n examples: ['isEmpty(\"\")', \"isEmpty([])\"]\n },\n {\n name: \"isNull\",\n description: \"\\u68C0\\u67E5\\u662F\\u5426\\u4E3A null \\u6216 undefined\",\n params: [{ name: \"value\", type: \"any\", required: true }],\n returnType: \"boolean\",\n examples: [\"isNull(null)\"]\n },\n // JSON 函数\n {\n name: \"jsonParse\",\n description: \"\\u89E3\\u6790 JSON \\u5B57\\u7B26\\u4E32\",\n params: [{ name: \"str\", type: \"string\", required: true }],\n returnType: \"any\",\n examples: [`jsonParse('{\"a\":1}')`]\n },\n {\n name: \"jsonStringify\",\n description: \"\\u5E8F\\u5217\\u5316\\u4E3A JSON\",\n params: [{ name: \"value\", type: \"any\", required: true }],\n returnType: \"string\",\n examples: [\"jsonStringify({a:1})\"]\n }\n];\nvar BUILTIN_FUNCTION_NAMES = new Set(BUILTIN_FUNCTIONS.map((f) => f.name));\nvar ALLOWED_ROOT_VARIABLES = [\n \"state\",\n \"query\",\n \"context\",\n \"event\",\n \"item\",\n \"index\"\n];\nfunction isExpressionBinding(value) {\n return value !== null && typeof value === \"object\" && value.__isExpression === true && typeof value.expression === \"string\";\n}\nfunction createExpressionBinding(expression, fallback) {\n return {\n __isExpression: true,\n expression,\n fallback\n };\n}\n\n// src/migrations/index.ts\nvar SCHEMA_VERSIONS = [\"1.0.0\", \"1.1.0\", \"2.0.0\"];\nvar CURRENT_SCHEMA_VERSION = \"1.0.0\";\nvar migrations = [];\nfunction registerMigration(migration) {\n const exists = migrations.some(\n (m) => m.from === migration.from && m.to === migration.to\n );\n if (exists) {\n throw new Error(`Migration from ${migration.from} to ${migration.to} already exists`);\n }\n migrations.push(migration);\n}\nfunction getAllMigrations() {\n return [...migrations];\n}\nfunction findMigrationPath(from, to) {\n const path = [];\n let current = from;\n while (current !== to) {\n const nextMigration = migrations.find((m) => m.from === current);\n if (!nextMigration) {\n throw new Error(`No migration path from ${current} to ${to}`);\n }\n path.push(nextMigration);\n current = nextMigration.to;\n if (path.length > 100) {\n throw new Error(\"Migration path too long, possible circular dependency\");\n }\n }\n return path;\n}\nfunction migratePageSchema(data, targetVersion) {\n const fromVersion = data.schemaVersion || \"1.0.0\";\n const toVersion = targetVersion || CURRENT_SCHEMA_VERSION;\n if (fromVersion === toVersion) {\n return {\n success: true,\n data,\n fromVersion,\n toVersion,\n appliedMigrations: []\n };\n }\n try {\n const path = findMigrationPath(fromVersion, toVersion);\n let result = { ...data };\n const appliedMigrations = [];\n for (const migration of path) {\n result = migration.migrate(result);\n result.schemaVersion = migration.to;\n appliedMigrations.push(`${migration.from} -> ${migration.to}`);\n }\n return {\n success: true,\n data: result,\n fromVersion,\n toVersion,\n appliedMigrations\n };\n } catch (error) {\n return {\n success: false,\n fromVersion,\n toVersion,\n appliedMigrations: [],\n error: error instanceof Error ? error.message : \"Unknown error\"\n };\n }\n}\nfunction needsMigration(data, targetVersion) {\n const currentVersion = data.schemaVersion || \"1.0.0\";\n const target = targetVersion || CURRENT_SCHEMA_VERSION;\n return currentVersion !== target;\n}\nfunction getVersionInfo(version) {\n const [major, minor, patch] = version.split(\".\").map(Number);\n return { major, minor, patch };\n}\nfunction compareVersions(a, b) {\n const va = getVersionInfo(a);\n const vb = getVersionInfo(b);\n if (va.major !== vb.major) return va.major < vb.major ? -1 : 1;\n if (va.minor !== vb.minor) return va.minor < vb.minor ? -1 : 1;\n if (va.patch !== vb.patch) return va.patch < vb.patch ? -1 : 1;\n return 0;\n}\nregisterMigration({\n from: \"1.0.0\",\n to: \"1.1.0\",\n description: \"\\u6DFB\\u52A0 Definition \\u7248\\u672C\\u7ED1\\u5B9A\\u5B57\\u6BB5\",\n migrate: (data) => {\n return {\n ...data,\n actionDefVersionIds: data.actionDefVersionIds || [],\n dataQueryVersionIds: data.dataQueryVersionIds || []\n };\n }\n});\nregisterMigration({\n from: \"1.1.0\",\n to: \"2.0.0\",\n description: \"\\u91CD\\u6784\\u7EC4\\u4EF6\\u4E8B\\u4EF6\\u7ED3\\u6784\",\n breaking: true,\n migrate: (data) => {\n return {\n ...data,\n components: data.components.map((component) => ({\n ...component,\n // 示例:将 events 数组中的 actions 结构标准化\n events: component.events?.map((event) => ({\n ...event,\n // 确保 enabled 字段存在\n enabled: event.enabled ?? true\n }))\n }))\n };\n }\n});\nexport {\n ACTION_SPEC_VERSION,\n ALLOWED_ROOT_VARIABLES,\n BUILTIN_FUNCTIONS,\n BUILTIN_FUNCTION_NAMES,\n COMPONENT_CATEGORIES,\n COMPONENT_META_SCHEMA_VERSION,\n CURRENT_SCHEMA_VERSION,\n DATA_QUERY_SPEC_VERSION,\n ErrorCode,\n ErrorCodeCategory,\n ErrorMessages,\n PAGE_SCHEMA_VERSION,\n PublishStatus,\n SCHEMA_VERSIONS,\n compareVersions,\n createDjvlcError,\n createExpressionBinding,\n findMigrationPath,\n getAllMigrations,\n getContractsVersion,\n getHttpStatusFromErrorCode,\n getVersionInfo,\n isExpressionBinding,\n isRetryableError,\n isVersionCompatible,\n migratePageSchema,\n needsMigration,\n registerMigration\n};\n//# sourceMappingURL=index.mjs.map","// src/types/errors.ts\nimport { ErrorCode, ErrorMessages } from \"@djvlc/contracts-types\";\nvar DjvlcRuntimeError = class extends Error {\n constructor(code, message, details, traceId) {\n super(message || ErrorMessages[code] || \"Unknown error\");\n this.name = \"DjvlcRuntimeError\";\n this.code = code;\n this.details = details;\n this.traceId = traceId;\n this.timestamp = Date.now();\n }\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n details: this.details,\n traceId: this.traceId,\n timestamp: this.timestamp\n };\n }\n};\nvar PageLoadError = class extends DjvlcRuntimeError {\n constructor(message, details, traceId) {\n super(ErrorCode.PAGE_NOT_FOUND, message, details, traceId);\n this.name = \"PageLoadError\";\n }\n};\nvar ComponentLoadError = class extends DjvlcRuntimeError {\n constructor(componentName, componentVersion, message, code = ErrorCode.COMPONENT_NOT_FOUND, details) {\n super(code, message, { ...details, componentName, componentVersion });\n this.name = \"ComponentLoadError\";\n this.componentName = componentName;\n this.componentVersion = componentVersion;\n }\n};\nvar IntegrityError = class extends DjvlcRuntimeError {\n constructor(componentName, componentVersion, expectedHash, actualHash) {\n super(\n ErrorCode.COMPONENT_INTEGRITY_MISMATCH,\n `Integrity check failed for ${componentName}@${componentVersion}`,\n { expectedHash, actualHash }\n );\n this.name = \"IntegrityError\";\n this.componentName = componentName;\n this.componentVersion = componentVersion;\n this.expectedHash = expectedHash;\n this.actualHash = actualHash;\n }\n};\nvar ComponentBlockedError = class extends DjvlcRuntimeError {\n constructor(componentName, componentVersion, reason) {\n super(ErrorCode.COMPONENT_BLOCKED, `Component ${componentName}@${componentVersion} is blocked`, {\n componentName,\n componentVersion,\n reason\n });\n this.name = \"ComponentBlockedError\";\n this.componentName = componentName;\n this.componentVersion = componentVersion;\n this.reason = reason;\n }\n};\nvar ExpressionError = class extends DjvlcRuntimeError {\n constructor(expression, message, position, details) {\n super(ErrorCode.UNKNOWN, message, { ...details, expression, position });\n this.name = \"ExpressionError\";\n this.expression = expression;\n this.position = position;\n }\n};\nvar ActionError = class extends DjvlcRuntimeError {\n constructor(actionType, message, code = ErrorCode.ACTION_EXECUTION_FAILED, actionId, details) {\n super(code, message, { ...details, actionType, actionId });\n this.name = \"ActionError\";\n this.actionType = actionType;\n this.actionId = actionId;\n }\n};\nvar QueryError = class extends DjvlcRuntimeError {\n constructor(queryId, message, code = ErrorCode.QUERY_EXECUTION_FAILED, details) {\n super(code, message, { ...details, queryId });\n this.name = \"QueryError\";\n this.queryId = queryId;\n }\n};\nvar RenderError = class extends DjvlcRuntimeError {\n constructor(componentId, componentType, message, details) {\n super(ErrorCode.UNKNOWN, message, { ...details, componentId, componentType });\n this.name = \"RenderError\";\n this.componentId = componentId;\n this.componentType = componentType;\n }\n};\n\n// src/loader/page-loader.ts\nvar PageLoader = class {\n constructor(options) {\n this.cache = /* @__PURE__ */ new Map();\n this.options = {\n channel: \"prod\",\n cache: { enabled: true, maxAge: 300 },\n ...options\n };\n }\n /**\n * 解析页面\n * @param pageUid 页面 UID\n * @param params 额外参数\n */\n async resolve(pageUid, params) {\n const cacheKey = this.getCacheKey(pageUid, params);\n if (this.options.cache?.enabled) {\n const cached = this.cache.get(cacheKey);\n if (cached && this.isCacheValid(cached.timestamp)) {\n this.log(\"debug\", `Page ${pageUid} loaded from cache`);\n return cached.data;\n }\n }\n const startTime = performance.now();\n try {\n const url = this.buildResolveUrl(pageUid, params);\n const response = await fetch(url, {\n method: \"GET\",\n headers: this.buildHeaders()\n });\n if (!response.ok) {\n throw new PageLoadError(\n `Failed to resolve page: ${response.status} ${response.statusText}`,\n { pageUid, status: response.status }\n );\n }\n const result = await response.json();\n if (!this.isValidPageResolveResult(result)) {\n throw new PageLoadError(\"Invalid page resolve response\", { pageUid });\n }\n const data = result.data;\n if (this.options.cache?.enabled) {\n this.cache.set(cacheKey, { data, timestamp: Date.now() });\n }\n const loadTime = performance.now() - startTime;\n this.log(\"info\", `Page ${pageUid} resolved in ${loadTime.toFixed(2)}ms`);\n return data;\n } catch (error) {\n if (error instanceof PageLoadError) {\n throw error;\n }\n throw new PageLoadError(\n `Failed to resolve page: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n { pageUid }\n );\n }\n }\n /**\n * 预连接 API 服务器\n */\n preconnect() {\n const link = document.createElement(\"link\");\n link.rel = \"preconnect\";\n link.href = this.options.apiBaseUrl;\n document.head.appendChild(link);\n }\n /**\n * 清除缓存\n */\n clearCache(pageUid) {\n if (pageUid) {\n for (const key of this.cache.keys()) {\n if (key.startsWith(pageUid)) {\n this.cache.delete(key);\n }\n }\n } else {\n this.cache.clear();\n }\n }\n buildResolveUrl(pageUid, params) {\n const url = new URL(`${this.options.apiBaseUrl}/page/resolve`);\n url.searchParams.set(\"pageUid\", pageUid);\n if (this.options.channel) {\n url.searchParams.set(\"channel\", this.options.channel);\n }\n if (this.options.previewToken) {\n url.searchParams.set(\"previewToken\", this.options.previewToken);\n }\n if (params?.uid) {\n url.searchParams.set(\"uid\", params.uid);\n }\n if (params?.deviceId) {\n url.searchParams.set(\"deviceId\", params.deviceId);\n }\n return url.toString();\n }\n buildHeaders() {\n const headers = {\n \"Content-Type\": \"application/json\",\n ...this.options.headers\n };\n if (this.options.authToken) {\n headers[\"Authorization\"] = `Bearer ${this.options.authToken}`;\n }\n return headers;\n }\n getCacheKey(pageUid, params) {\n const parts = [pageUid, this.options.channel];\n if (params?.uid) parts.push(params.uid);\n if (params?.deviceId) parts.push(params.deviceId);\n return parts.join(\":\");\n }\n isCacheValid(timestamp) {\n const maxAge = (this.options.cache?.maxAge ?? 300) * 1e3;\n return Date.now() - timestamp < maxAge;\n }\n isValidPageResolveResult(result) {\n if (!result || typeof result !== \"object\") return false;\n const r = result;\n if (!r.data || typeof r.data !== \"object\") return false;\n const data = r.data;\n return typeof data.pageUid === \"string\" && typeof data.pageVersionId === \"string\" && data.pageJson !== void 0 && data.manifest !== void 0;\n }\n log(level, message) {\n if (this.options.logger) {\n this.options.logger[level](message);\n }\n }\n};\n\n// src/loader/component-loader.ts\nvar ComponentLoader = class {\n constructor(options) {\n this.loadedComponents = /* @__PURE__ */ new Map();\n this.loadingPromises = /* @__PURE__ */ new Map();\n this.options = {\n enableSRI: true,\n concurrency: 4,\n timeout: 3e4,\n blockedComponents: [],\n ...options\n };\n this.blockedSet = new Set(this.options.blockedComponents);\n }\n /**\n * 加载单个组件\n */\n async load(item) {\n const key = this.getComponentKey(item.name, item.version);\n if (this.isBlocked(item.name, item.version)) {\n throw new ComponentBlockedError(item.name, item.version, \"Component is blocked\");\n }\n const loaded = this.loadedComponents.get(key);\n if (loaded) {\n return loaded;\n }\n const loading = this.loadingPromises.get(key);\n if (loading) {\n return loading;\n }\n const loadPromise = this.loadComponent(item);\n this.loadingPromises.set(key, loadPromise);\n try {\n const component = await loadPromise;\n this.loadedComponents.set(key, component);\n return component;\n } finally {\n this.loadingPromises.delete(key);\n }\n }\n /**\n * 加载 Manifest 中的所有组件\n */\n async loadAll(manifest) {\n const results = /* @__PURE__ */ new Map();\n const { concurrency = 4 } = this.options;\n const components = manifest.components;\n for (let i = 0; i < components.length; i += concurrency) {\n const batch = components.slice(i, i + concurrency);\n const batchPromises = batch.map(async (item) => {\n const key = this.getComponentKey(item.name, item.version);\n const startTime = performance.now();\n try {\n const loaded = await this.load(item);\n results.set(key, {\n name: item.name,\n version: item.version,\n status: \"loaded\",\n component: loaded.Component,\n loadTime: performance.now() - startTime\n });\n } catch (error) {\n const status = error instanceof ComponentBlockedError ? \"blocked\" : \"failed\";\n results.set(key, {\n name: item.name,\n version: item.version,\n status,\n error: error instanceof Error ? error.message : \"Unknown error\",\n loadTime: performance.now() - startTime\n });\n if (item.critical) {\n throw error;\n }\n }\n });\n await Promise.all(batchPromises);\n }\n return results;\n }\n /**\n * 预加载组件\n */\n preload(items) {\n items.forEach((item) => {\n const link = document.createElement(\"link\");\n link.rel = \"preload\";\n link.as = \"script\";\n link.href = this.resolveUrl(item.entryUrl);\n if (this.options.enableSRI && item.integrity) {\n link.integrity = item.integrity;\n link.crossOrigin = \"anonymous\";\n }\n document.head.appendChild(link);\n });\n }\n /**\n * 检查组件是否已加载\n */\n isLoaded(name, version) {\n return this.loadedComponents.has(this.getComponentKey(name, version));\n }\n /**\n * 获取已加载的组件\n */\n get(name, version) {\n return this.loadedComponents.get(this.getComponentKey(name, version));\n }\n /**\n * 检查组件是否被阻断\n */\n isBlocked(name, version) {\n return this.blockedSet.has(`${name}@${version}`) || this.blockedSet.has(name);\n }\n /**\n * 更新阻断列表\n */\n updateBlockedList(blocked) {\n this.blockedSet = new Set(blocked);\n }\n async loadComponent(item) {\n const startTime = performance.now();\n const url = this.resolveUrl(item.entryUrl);\n this.log(\"debug\", `Loading component ${item.name}@${item.version}`);\n try {\n const response = await this.fetchWithTimeout(url);\n if (!response.ok) {\n throw new ComponentLoadError(\n item.name,\n item.version,\n `Failed to fetch component: ${response.status} ${response.statusText}`\n );\n }\n const content = await response.text();\n if (this.options.enableSRI && item.integrity) {\n await this.validateIntegrity(item, content);\n }\n const Component = await this.executeScript(content, item);\n const loadTime = performance.now() - startTime;\n this.log(\"info\", `Component ${item.name}@${item.version} loaded in ${loadTime.toFixed(2)}ms`);\n return {\n name: item.name,\n version: item.version,\n Component,\n loadTime\n };\n } catch (error) {\n if (error instanceof ComponentLoadError || error instanceof IntegrityError || error instanceof ComponentBlockedError) {\n throw error;\n }\n throw new ComponentLoadError(\n item.name,\n item.version,\n `Failed to load component: ${error instanceof Error ? error.message : \"Unknown error\"}`\n );\n }\n }\n async fetchWithTimeout(url) {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.options.timeout);\n try {\n return await fetch(url, {\n signal: controller.signal,\n credentials: \"omit\"\n });\n } finally {\n clearTimeout(timeout);\n }\n }\n async validateIntegrity(item, content) {\n if (!item.integrity) return;\n const [algorithm, expectedHash] = item.integrity.split(\"-\");\n if (!algorithm || !expectedHash) {\n throw new IntegrityError(item.name, item.version, item.integrity, \"Invalid format\");\n }\n const hashBuffer = await crypto.subtle.digest(\n algorithm.toUpperCase(),\n new TextEncoder().encode(content)\n );\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const actualHash = btoa(String.fromCharCode(...hashArray));\n if (actualHash !== expectedHash) {\n throw new IntegrityError(item.name, item.version, expectedHash, actualHash);\n }\n }\n async executeScript(content, item) {\n const blob = new Blob([content], { type: \"application/javascript\" });\n const blobUrl = URL.createObjectURL(blob);\n try {\n const module = await import(\n /* @vite-ignore */\n blobUrl\n );\n const Component = module.default || module[item.name] || module.Component;\n if (!Component) {\n throw new ComponentLoadError(\n item.name,\n item.version,\n \"Component module does not export a valid component\"\n );\n }\n return Component;\n } finally {\n URL.revokeObjectURL(blobUrl);\n }\n }\n resolveUrl(entryUrl) {\n if (entryUrl.startsWith(\"http://\") || entryUrl.startsWith(\"https://\")) {\n return entryUrl;\n }\n return `${this.options.cdnBaseUrl}/${entryUrl.replace(/^\\//, \"\")}`;\n }\n getComponentKey(name, version) {\n return `${name}@${version}`;\n }\n log(level, message) {\n if (this.options.logger) {\n this.options.logger[level](message);\n }\n }\n};\n\n// src/loader/asset-loader.ts\nvar AssetLoader = class {\n constructor(options) {\n this.preconnectedHosts = /* @__PURE__ */ new Set();\n this.preloadedAssets = /* @__PURE__ */ new Set();\n this.options = options;\n }\n /**\n * 预连接所有域名\n */\n preconnectAll() {\n const allHosts = [...this.options.cdnHosts, ...this.options.apiHosts];\n allHosts.forEach((host) => this.preconnect(host));\n }\n /**\n * 预连接单个域名\n */\n preconnect(host) {\n if (this.preconnectedHosts.has(host)) return;\n const link = document.createElement(\"link\");\n link.rel = \"preconnect\";\n link.href = host.startsWith(\"http\") ? host : `https://${host}`;\n link.crossOrigin = \"anonymous\";\n document.head.appendChild(link);\n this.preconnectedHosts.add(host);\n }\n /**\n * DNS 预解析\n */\n dnsPrefetch(host) {\n const link = document.createElement(\"link\");\n link.rel = \"dns-prefetch\";\n link.href = host.startsWith(\"http\") ? host : `https://${host}`;\n document.head.appendChild(link);\n }\n /**\n * 预加载脚本\n */\n preloadScript(url, integrity) {\n if (this.preloadedAssets.has(url)) return;\n const link = document.createElement(\"link\");\n link.rel = \"preload\";\n link.as = \"script\";\n link.href = url;\n if (integrity) {\n link.integrity = integrity;\n link.crossOrigin = \"anonymous\";\n }\n document.head.appendChild(link);\n this.preloadedAssets.add(url);\n }\n /**\n * 预加载样式\n */\n preloadStyle(url, integrity) {\n if (this.preloadedAssets.has(url)) return;\n const link = document.createElement(\"link\");\n link.rel = \"preload\";\n link.as = \"style\";\n link.href = url;\n if (integrity) {\n link.integrity = integrity;\n link.crossOrigin = \"anonymous\";\n }\n document.head.appendChild(link);\n this.preloadedAssets.add(url);\n }\n /**\n * 预加载图片\n */\n preloadImage(url) {\n if (this.preloadedAssets.has(url)) return;\n const link = document.createElement(\"link\");\n link.rel = \"preload\";\n link.as = \"image\";\n link.href = url;\n document.head.appendChild(link);\n this.preloadedAssets.add(url);\n }\n /**\n * 预获取资源(低优先级)\n */\n prefetch(url, as) {\n const link = document.createElement(\"link\");\n link.rel = \"prefetch\";\n link.href = url;\n if (as) link.as = as;\n document.head.appendChild(link);\n }\n /**\n * 加载样式表\n */\n loadStylesheet(url, integrity) {\n return new Promise((resolve, reject) => {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = url;\n if (integrity) {\n link.integrity = integrity;\n link.crossOrigin = \"anonymous\";\n }\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to load stylesheet: ${url}`));\n document.head.appendChild(link);\n });\n }\n /**\n * 加载脚本\n */\n loadScript(url, integrity) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = url;\n script.async = true;\n if (integrity) {\n script.integrity = integrity;\n script.crossOrigin = \"anonymous\";\n }\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(`Failed to load script: ${url}`));\n document.body.appendChild(script);\n });\n }\n};\n\n// src/state/state-manager.ts\nvar StateManager = class {\n constructor() {\n this.listeners = /* @__PURE__ */ new Set();\n this.state = this.createInitialState();\n }\n /**\n * 获取当前状态\n */\n getState() {\n return this.state;\n }\n /**\n * 获取当前阶段\n */\n getPhase() {\n return this.state.phase;\n }\n /**\n * 设置阶段\n */\n setPhase(phase) {\n this.setState({ phase });\n }\n /**\n * 设置页面数据\n */\n setPage(page) {\n this.setState({\n page,\n variables: page.pageJson.page.variables || {}\n });\n }\n /**\n * 设置错误\n */\n setError(error) {\n this.setState({\n phase: \"error\",\n error\n });\n }\n /**\n * 获取变量值\n */\n getVariable(key) {\n return this.state.variables[key];\n }\n /**\n * 设置变量值\n */\n setVariable(key, value) {\n this.setState({\n variables: {\n ...this.state.variables,\n [key]: value\n }\n });\n }\n /**\n * 批量设置变量\n */\n setVariables(variables) {\n this.setState({\n variables: {\n ...this.state.variables,\n ...variables\n }\n });\n }\n /**\n * 获取查询结果\n */\n getQuery(queryId) {\n return this.state.queries[queryId];\n }\n /**\n * 设置查询结果\n */\n setQuery(queryId, data) {\n this.setState({\n queries: {\n ...this.state.queries,\n [queryId]: data\n }\n });\n }\n /**\n * 更新组件加载状态\n */\n setComponentStatus(key, result) {\n const components = new Map(this.state.components);\n components.set(key, result);\n this.setState({ components });\n }\n /**\n * 标记为已销毁\n */\n setDestroyed() {\n this.setState({ destroyed: true });\n }\n /**\n * 订阅状态变更\n */\n subscribe(listener) {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n /**\n * 重置状态\n */\n reset() {\n this.state = this.createInitialState();\n this.notifyListeners();\n }\n setState(partial) {\n this.state = { ...this.state, ...partial };\n this.notifyListeners();\n }\n notifyListeners() {\n this.listeners.forEach((listener) => {\n try {\n listener(this.state);\n } catch (error) {\n console.error(\"State listener error:\", error);\n }\n });\n }\n createInitialState() {\n return {\n phase: \"idle\",\n page: null,\n variables: {},\n queries: {},\n components: /* @__PURE__ */ new Map(),\n error: null,\n destroyed: false\n };\n }\n};\n\n// src/events/event-bus.ts\nvar EventBus = class {\n constructor(options = {}) {\n this.handlers = /* @__PURE__ */ new Map();\n this.options = {\n debug: false,\n maxListeners: 100,\n ...options\n };\n }\n /**\n * 发送事件\n */\n emit(event) {\n if (this.options.debug) {\n this.log(\"debug\", `Event emitted: ${event.type}`, event);\n }\n const handlers = this.handlers.get(event.type);\n if (!handlers) return;\n handlers.forEach((handler) => {\n try {\n handler(event);\n } catch (error) {\n this.log(\"error\", `Error in event handler for ${event.type}:`, error);\n }\n });\n }\n /**\n * 订阅事件\n */\n on(type, handler) {\n let handlers = this.handlers.get(type);\n if (!handlers) {\n handlers = /* @__PURE__ */ new Set();\n this.handlers.set(type, handlers);\n }\n if (handlers.size >= (this.options.maxListeners ?? 100)) {\n this.log(\"warn\", `Max listeners (${this.options.maxListeners}) reached for event: ${type}`);\n }\n handlers.add(handler);\n return () => {\n handlers?.delete(handler);\n if (handlers?.size === 0) {\n this.handlers.delete(type);\n }\n };\n }\n /**\n * 取消订阅\n */\n off(type, handler) {\n const handlers = this.handlers.get(type);\n if (handlers) {\n handlers.delete(handler);\n if (handlers.size === 0) {\n this.handlers.delete(type);\n }\n }\n }\n /**\n * 一次性订阅\n */\n once(type, handler) {\n const wrappedHandler = (event) => {\n unsubscribe();\n handler(event);\n };\n const unsubscribe = this.on(type, wrappedHandler);\n return unsubscribe;\n }\n /**\n * 清除所有监听器\n */\n clear(type) {\n if (type) {\n this.handlers.delete(type);\n } else {\n this.handlers.clear();\n }\n }\n /**\n * 获取监听器数量\n */\n listenerCount(type) {\n return this.handlers.get(type)?.size ?? 0;\n }\n /**\n * 创建事件\n */\n static createEvent(type, data, traceId) {\n return {\n type,\n data,\n timestamp: Date.now(),\n traceId\n };\n }\n log(level, message, ...args) {\n if (this.options.logger) {\n this.options.logger[level](message, ...args);\n } else if (this.options.debug) {\n console[level](`[EventBus] ${message}`, ...args);\n }\n }\n};\n\n// src/events/action-bridge.ts\nvar ActionBridge = class {\n constructor(options) {\n this.debounceTimers = /* @__PURE__ */ new Map();\n this.throttleTimers = /* @__PURE__ */ new Map();\n this.options = options;\n }\n /**\n * 处理组件事件\n */\n async handleEvent(event, eventData, context) {\n if (event.enabled === false) {\n return;\n }\n if (event.condition) {\n this.log(\"debug\", `Event condition: ${event.condition}`);\n }\n if (event.debounce && event.debounce > 0) {\n await this.debounce(event.id, event.debounce);\n }\n if (event.throttle && event.throttle > 0) {\n if (!this.throttle(event.id, event.throttle)) {\n return;\n }\n }\n for (const action of event.actions) {\n if (action.enabled === false) continue;\n try {\n if (action.delay && action.delay > 0) {\n await this.delay(action.delay);\n }\n const params = this.resolveParams(action.params, eventData, context);\n await this.executeAction(action, params);\n } catch (error) {\n this.log(\"error\", `Action ${action.type} failed:`, error);\n }\n }\n }\n /**\n * 销毁\n */\n destroy() {\n this.debounceTimers.forEach((timer) => clearTimeout(timer));\n this.debounceTimers.clear();\n this.throttleTimers.clear();\n }\n async executeAction(action, params) {\n this.log(\"debug\", `Executing action: ${action.type}`, params);\n const result = await this.options.executor.execute(action.type, params);\n this.log(\"debug\", `Action ${action.type} completed:`, result);\n }\n resolveParams(params, eventData, context) {\n return {\n ...params,\n __eventData: eventData,\n __context: context\n };\n }\n debounce(id, delay) {\n return new Promise((resolve) => {\n const existing = this.debounceTimers.get(id);\n if (existing) {\n clearTimeout(existing);\n }\n const timer = setTimeout(() => {\n this.debounceTimers.delete(id);\n resolve();\n }, delay);\n this.debounceTimers.set(id, timer);\n });\n }\n throttle(id, interval) {\n const now = Date.now();\n const lastTime = this.throttleTimers.get(id) ?? 0;\n if (now - lastTime < interval) {\n return false;\n }\n this.throttleTimers.set(id, now);\n return true;\n }\n delay(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n log(level, message, ...args) {\n if (this.options.logger) {\n this.options.logger[level](message, ...args);\n } else if (this.options.debug) {\n console[level](`[ActionBridge] ${message}`, ...args);\n }\n }\n};\n\n// src/expression/lexer.ts\nvar Lexer = class {\n constructor(input) {\n this.pos = 0;\n this.tokens = [];\n this.input = input;\n }\n /**\n * 分析表达式,返回 Token 列表\n */\n tokenize() {\n this.pos = 0;\n this.tokens = [];\n while (this.pos < this.input.length) {\n this.skipWhitespace();\n if (this.pos >= this.input.length) break;\n const token = this.readToken();\n if (token) {\n this.tokens.push(token);\n }\n }\n this.tokens.push({\n type: \"EOF\",\n value: null,\n start: this.input.length,\n end: this.input.length\n });\n return this.tokens;\n }\n readToken() {\n const char = this.input[this.pos];\n const start = this.pos;\n if (this.isDigit(char) || char === \"-\" && this.isDigit(this.peek(1))) {\n return this.readNumber();\n }\n if (char === '\"' || char === \"'\") {\n return this.readString(char);\n }\n if (this.isIdentifierStart(char)) {\n return this.readIdentifier();\n }\n const operator = this.readOperator();\n if (operator) {\n return operator;\n }\n switch (char) {\n case \".\":\n this.pos++;\n return { type: \"DOT\", value: \".\", start, end: this.pos };\n case \"[\":\n this.pos++;\n return { type: \"LBRACKET\", value: \"[\", start, end: this.pos };\n case \"]\":\n this.pos++;\n return { type: \"RBRACKET\", value: \"]\", start, end: this.pos };\n case \"(\":\n this.pos++;\n return { type: \"LPAREN\", value: \"(\", start, end: this.pos };\n case \")\":\n this.pos++;\n return { type: \"RPAREN\", value: \")\", start, end: this.pos };\n case \",\":\n this.pos++;\n return { type: \"COMMA\", value: \",\", start, end: this.pos };\n case \"?\":\n this.pos++;\n return { type: \"QUESTION\", value: \"?\", start, end: this.pos };\n case \":\":\n this.pos++;\n return { type: \"COLON\", value: \":\", start, end: this.pos };\n }\n throw new Error(`Unexpected character '${char}' at position ${this.pos}`);\n }\n readNumber() {\n const start = this.pos;\n let value = \"\";\n if (this.input[this.pos] === \"-\") {\n value += \"-\";\n this.pos++;\n }\n while (this.isDigit(this.input[this.pos])) {\n value += this.input[this.pos];\n this.pos++;\n }\n if (this.input[this.pos] === \".\" && this.isDigit(this.peek(1))) {\n value += \".\";\n this.pos++;\n while (this.isDigit(this.input[this.pos])) {\n value += this.input[this.pos];\n this.pos++;\n }\n }\n return {\n type: \"NUMBER\",\n value: parseFloat(value),\n start,\n end: this.pos\n };\n }\n readString(quote) {\n const start = this.pos;\n this.pos++;\n let value = \"\";\n while (this.pos < this.input.length && this.input[this.pos] !== quote) {\n if (this.input[this.pos] === \"\\\\\") {\n this.pos++;\n const escaped = this.input[this.pos];\n switch (escaped) {\n case \"n\":\n value += \"\\n\";\n break;\n case \"t\":\n value += \"\t\";\n break;\n case \"r\":\n value += \"\\r\";\n break;\n case \"\\\\\":\n value += \"\\\\\";\n break;\n case '\"':\n value += '\"';\n break;\n case \"'\":\n value += \"'\";\n break;\n default:\n value += escaped;\n }\n } else {\n value += this.input[this.pos];\n }\n this.pos++;\n }\n if (this.input[this.pos] !== quote) {\n throw new Error(`Unterminated string at position ${start}`);\n }\n this.pos++;\n return {\n type: \"STRING\",\n value,\n start,\n end: this.pos\n };\n }\n readIdentifier() {\n const start = this.pos;\n let value = \"\";\n while (this.pos < this.input.length && this.isIdentifierChar(this.input[this.pos])) {\n value += this.input[this.pos];\n this.pos++;\n }\n if (value === \"true\") {\n return { type: \"BOOLEAN\", value: true, start, end: this.pos };\n }\n if (value === \"false\") {\n return { type: \"BOOLEAN\", value: false, start, end: this.pos };\n }\n if (value === \"null\") {\n return { type: \"NULL\", value: null, start, end: this.pos };\n }\n return { type: \"IDENTIFIER\", value, start, end: this.pos };\n }\n readOperator() {\n const start = this.pos;\n const twoChar = this.input.slice(this.pos, this.pos + 2);\n const oneChar = this.input[this.pos];\n const twoCharOps = [\"==\", \"!=\", \">=\", \"<=\", \"&&\", \"||\", \"??\"];\n if (twoCharOps.includes(twoChar)) {\n this.pos += 2;\n return { type: \"OPERATOR\", value: twoChar, start, end: this.pos };\n }\n const oneCharOps = [\"+\", \"-\", \"*\", \"/\", \"%\", \">\", \"<\", \"!\"];\n if (oneCharOps.includes(oneChar)) {\n this.pos++;\n return { type: \"OPERATOR\", value: oneChar, start, end: this.pos };\n }\n return null;\n }\n skipWhitespace() {\n while (this.pos < this.input.length && /\\s/.test(this.input[this.pos])) {\n this.pos++;\n }\n }\n isDigit(char) {\n return /[0-9]/.test(char);\n }\n isIdentifierStart(char) {\n return /[a-zA-Z_$]/.test(char);\n }\n isIdentifierChar(char) {\n return /[a-zA-Z0-9_$]/.test(char);\n }\n peek(offset = 1) {\n return this.input[this.pos + offset] || \"\";\n }\n};\n\n// src/expression/parser.ts\nimport { BUILTIN_FUNCTION_NAMES } from \"@djvlc/contracts-types\";\nvar PRECEDENCE = {\n \"||\": 1,\n \"??\": 1,\n \"&&\": 2,\n \"==\": 3,\n \"!=\": 3,\n \"<\": 4,\n \">\": 4,\n \"<=\": 4,\n \">=\": 4,\n \"+\": 5,\n \"-\": 5,\n \"*\": 6,\n \"/\": 6,\n \"%\": 6\n};\nvar Parser = class {\n constructor(tokens) {\n this.pos = 0;\n this.tokens = tokens;\n }\n /**\n * 解析表达式\n */\n parse() {\n const result = this.parseExpression();\n if (this.current().type !== \"EOF\") {\n throw new Error(`Unexpected token '${this.current().value}' at position ${this.current().start}`);\n }\n return result;\n }\n parseExpression() {\n return this.parseTernary();\n }\n parseTernary() {\n const test = this.parseBinary(0);\n if (this.current().type === \"QUESTION\") {\n this.advance();\n const consequent = this.parseExpression();\n this.expect(\"COLON\");\n const alternate = this.parseExpression();\n return {\n type: \"conditional\",\n test,\n consequent,\n alternate,\n raw: void 0\n };\n }\n return test;\n }\n parseBinary(minPrecedence) {\n let left = this.parseUnary();\n while (true) {\n const token = this.current();\n if (token.type !== \"OPERATOR\") break;\n const precedence = PRECEDENCE[token.value];\n if (precedence === void 0 || precedence < minPrecedence) break;\n this.advance();\n const right = this.parseBinary(precedence + 1);\n left = {\n type: \"binary\",\n operator: token.value,\n left,\n right,\n raw: void 0\n };\n }\n return left;\n }\n parseUnary() {\n const token = this.current();\n if (token.type === \"OPERATOR\" && (token.value === \"!\" || token.value === \"-\")) {\n this.advance();\n const argument = this.parseUnary();\n return {\n type: \"unary\",\n operator: token.value,\n argument,\n raw: void 0\n };\n }\n return this.parsePostfix();\n }\n parsePostfix() {\n let node = this.parsePrimary();\n while (true) {\n const token = this.current();\n if (token.type === \"DOT\") {\n this.advance();\n const propToken = this.expect(\"IDENTIFIER\");\n node = {\n type: \"member\",\n object: node,\n property: propToken.value,\n computed: false,\n raw: void 0\n };\n } else if (token.type === \"LBRACKET\") {\n this.advance();\n const index = this.parseExpression();\n this.expect(\"RBRACKET\");\n node = {\n type: \"member\",\n object: node,\n property: index,\n computed: true,\n raw: void 0\n };\n } else if (token.type === \"LPAREN\" && node.type === \"identifier\") {\n const callee = node.name;\n if (!BUILTIN_FUNCTION_NAMES.has(callee)) {\n throw new Error(`Unknown function '${callee}' at position ${token.start}`);\n }\n this.advance();\n const args = this.parseArguments();\n this.expect(\"RPAREN\");\n node = {\n type: \"call\",\n callee,\n arguments: args,\n raw: void 0\n };\n } else {\n break;\n }\n }\n return node;\n }\n parsePrimary() {\n const token = this.current();\n if (token.type === \"NUMBER\" || token.type === \"STRING\" || token.type === \"BOOLEAN\" || token.type === \"NULL\") {\n this.advance();\n return {\n type: \"literal\",\n value: token.value,\n start: token.start,\n end: token.end,\n raw: void 0\n };\n }\n if (token.type === \"IDENTIFIER\") {\n this.advance();\n return {\n type: \"identifier\",\n name: token.value,\n start: token.start,\n end: token.end,\n raw: void 0\n };\n }\n if (token.type === \"LBRACKET\") {\n return this.parseArray();\n }\n if (token.type === \"LPAREN\") {\n this.advance();\n const expr = this.parseExpression();\n this.expect(\"RPAREN\");\n return expr;\n }\n throw new Error(`Unexpected token '${token.value}' at position ${token.start}`);\n }\n parseArray() {\n const start = this.current().start;\n this.advance();\n const elements = [];\n while (this.current().type !== \"RBRACKET\") {\n elements.push(this.parseExpression());\n if (this.current().type === \"COMMA\") {\n this.advance();\n } else {\n break;\n }\n }\n const end = this.current().end;\n this.expect(\"RBRACKET\");\n return {\n type: \"array\",\n elements,\n start,\n end,\n raw: void 0\n };\n }\n parseArguments() {\n const args = [];\n if (this.current().type !== \"RPAREN\") {\n args.push(this.parseExpression());\n while (this.current().type === \"COMMA\") {\n this.advance();\n args.push(this.parseExpression());\n }\n }\n return args;\n }\n current() {\n return this.tokens[this.pos];\n }\n advance() {\n return this.tokens[this.pos++];\n }\n expect(type) {\n const token = this.current();\n if (token.type !== type) {\n throw new Error(`Expected '${type}' but got '${token.type}' at position ${token.start}`);\n }\n return this.advance();\n }\n};\n\n// src/expression/functions.ts\nvar builtinFunctions = {\n // ==================== 字符串函数 ====================\n len: (value) => {\n if (typeof value === \"string\" || Array.isArray(value)) {\n return value.length;\n }\n return 0;\n },\n trim: (str) => {\n return String(str ?? \"\").trim();\n },\n upper: (str) => {\n return String(str ?? \"\").toUpperCase();\n },\n lower: (str) => {\n return String(str ?? \"\").toLowerCase();\n },\n substr: (str, start, length) => {\n const s = String(str ?? \"\");\n const startNum = Number(start) || 0;\n const lengthNum = length !== void 0 ? Number(length) : void 0;\n return s.substring(startNum, lengthNum !== void 0 ? startNum + lengthNum : void 0);\n },\n concat: (...args) => {\n return args.map((a) => String(a ?? \"\")).join(\"\");\n },\n replace: (str, search, replacement) => {\n return String(str ?? \"\").split(String(search)).join(String(replacement));\n },\n split: (str, separator) => {\n return String(str ?? \"\").split(String(separator));\n },\n join: (arr, separator) => {\n if (!Array.isArray(arr)) return \"\";\n return arr.join(separator !== void 0 ? String(separator) : \",\");\n },\n startsWith: (str, search) => {\n return String(str ?? \"\").startsWith(String(search));\n },\n endsWith: (str, search) => {\n return String(str ?? \"\").endsWith(String(search));\n },\n contains: (str, search) => {\n return String(str ?? \"\").includes(String(search));\n },\n // ==================== 数字函数 ====================\n toNumber: (value) => {\n const num = Number(value);\n return isNaN(num) ? 0 : num;\n },\n toString: (value) => {\n return String(value ?? \"\");\n },\n toInt: (value) => {\n return Math.trunc(Number(value) || 0);\n },\n toFloat: (value) => {\n return parseFloat(String(value)) || 0;\n },\n round: (value, decimals) => {\n const num = Number(value) || 0;\n const dec = Number(decimals) || 0;\n const factor = Math.pow(10, dec);\n return Math.round(num * factor) / factor;\n },\n floor: (value) => {\n return Math.floor(Number(value) || 0);\n },\n ceil: (value) => {\n return Math.ceil(Number(value) || 0);\n },\n abs: (value) => {\n return Math.abs(Number(value) || 0);\n },\n min: (...args) => {\n const nums = args.map((a) => Number(a)).filter((n) => !isNaN(n));\n return nums.length > 0 ? Math.min(...nums) : 0;\n },\n max: (...args) => {\n const nums = args.map((a) => Number(a)).filter((n) => !isNaN(n));\n return nums.length > 0 ? Math.max(...nums) : 0;\n },\n sum: (arr) => {\n if (!Array.isArray(arr)) return 0;\n return arr.reduce((acc, val) => acc + (Number(val) || 0), 0);\n },\n avg: (arr) => {\n if (!Array.isArray(arr) || arr.length === 0) return 0;\n const sum = arr.reduce((acc, val) => acc + (Number(val) || 0), 0);\n return sum / arr.length;\n },\n random: () => {\n return Math.random();\n },\n randomInt: (min, max) => {\n const minNum = Math.ceil(Number(min) || 0);\n const maxNum = Math.floor(Number(max) || 100);\n return Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum;\n },\n // ==================== 日期函数 ====================\n now: () => {\n return Date.now();\n },\n today: () => {\n return (/* @__PURE__ */ new Date()).toISOString().split(\"T\")[0];\n },\n dateFormat: (timestamp, format) => {\n const date = new Date(Number(timestamp) || Date.now());\n const fmt = String(format || \"YYYY-MM-DD\");\n const pad = (n) => n.toString().padStart(2, \"0\");\n return fmt.replace(\"YYYY\", date.getFullYear().toString()).replace(\"MM\", pad(date.getMonth() + 1)).replace(\"DD\", pad(date.getDate())).replace(\"HH\", pad(date.getHours())).replace(\"mm\", pad(date.getMinutes())).replace(\"ss\", pad(date.getSeconds()));\n },\n dateParse: (dateStr) => {\n const date = new Date(String(dateStr));\n return date.getTime();\n },\n year: (timestamp) => {\n return new Date(Number(timestamp) || Date.now()).getFullYear();\n },\n month: (timestamp) => {\n return new Date(Number(timestamp) || Date.now()).getMonth() + 1;\n },\n day: (timestamp) => {\n return new Date(Number(timestamp) || Date.now()).getDate();\n },\n addDays: (timestamp, days) => {\n const date = new Date(Number(timestamp) || Date.now());\n date.setDate(date.getDate() + (Number(days) || 0));\n return date.getTime();\n },\n diffDays: (timestamp1, timestamp2) => {\n const date1 = new Date(Number(timestamp1) || Date.now());\n const date2 = new Date(Number(timestamp2) || Date.now());\n const diffTime = Math.abs(date2.getTime() - date1.getTime());\n return Math.floor(diffTime / (1e3 * 60 * 60 * 24));\n },\n // ==================== 类型检查函数 ====================\n isNull: (value) => {\n return value === null || value === void 0;\n },\n isUndefined: (value) => {\n return value === void 0;\n },\n isEmpty: (value) => {\n if (value === null || value === void 0) return true;\n if (typeof value === \"string\") return value.length === 0;\n if (Array.isArray(value)) return value.length === 0;\n if (typeof value === \"object\") return Object.keys(value).length === 0;\n return false;\n },\n isArray: (value) => {\n return Array.isArray(value);\n },\n isObject: (value) => {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n },\n isString: (value) => {\n return typeof value === \"string\";\n },\n isNumber: (value) => {\n return typeof value === \"number\" && !isNaN(value);\n },\n isBoolean: (value) => {\n return typeof value === \"boolean\";\n },\n typeOf: (value) => {\n if (value === null) return \"null\";\n if (Array.isArray(value)) return \"array\";\n return typeof value;\n },\n // ==================== 默认值函数 ====================\n default: (value, defaultValue) => {\n return value ?? defaultValue;\n },\n coalesce: (...args) => {\n for (const arg of args) {\n if (arg !== null && arg !== void 0) return arg;\n }\n return null;\n },\n ifElse: (condition, trueValue, falseValue) => {\n return condition ? trueValue : falseValue;\n },\n // ==================== 数组函数 ====================\n first: (arr) => {\n if (!Array.isArray(arr)) return void 0;\n return arr[0];\n },\n last: (arr) => {\n if (!Array.isArray(arr)) return void 0;\n return arr[arr.length - 1];\n },\n at: (arr, index) => {\n if (!Array.isArray(arr)) return void 0;\n return arr[Number(index) || 0];\n },\n slice: (arr, start, end) => {\n if (!Array.isArray(arr)) return [];\n return arr.slice(Number(start) || 0, end !== void 0 ? Number(end) : void 0);\n },\n includes: (arr, value) => {\n if (!Array.isArray(arr)) return false;\n return arr.includes(value);\n },\n indexOf: (arr, value) => {\n if (!Array.isArray(arr)) return -1;\n return arr.indexOf(value);\n },\n reverse: (arr) => {\n if (!Array.isArray(arr)) return [];\n return [...arr].reverse();\n },\n sort: (arr) => {\n if (!Array.isArray(arr)) return [];\n return [...arr].sort();\n },\n unique: (arr) => {\n if (!Array.isArray(arr)) return [];\n return [...new Set(arr)];\n },\n flatten: (arr) => {\n if (!Array.isArray(arr)) return [];\n return arr.flat();\n },\n count: (arr) => {\n if (!Array.isArray(arr)) return 0;\n return arr.length;\n },\n // ==================== 对象函数 ====================\n get: (obj, path, defaultValue) => {\n if (obj === null || obj === void 0) return defaultValue;\n const pathStr = String(path);\n const parts = pathStr.split(\".\");\n let current = obj;\n for (const part of parts) {\n if (current === null || current === void 0) return defaultValue;\n current = current[part];\n }\n return current ?? defaultValue;\n },\n keys: (obj) => {\n if (typeof obj !== \"object\" || obj === null) return [];\n return Object.keys(obj);\n },\n values: (obj) => {\n if (typeof obj !== \"object\" || obj === null) return [];\n return Object.values(obj);\n },\n entries: (obj) => {\n if (typeof obj !== \"object\" || obj === null) return [];\n return Object.entries(obj);\n },\n has: (obj, key) => {\n if (typeof obj !== \"object\" || obj === null) return false;\n return String(key) in obj;\n },\n merge: (...objs) => {\n const result = {};\n for (const obj of objs) {\n if (typeof obj === \"object\" && obj !== null) {\n Object.assign(result, obj);\n }\n }\n return result;\n },\n // ==================== 逻辑函数 ====================\n and: (...args) => {\n return args.every((a) => Boolean(a));\n },\n or: (...args) => {\n return args.some((a) => Boolean(a));\n },\n not: (value) => {\n return !value;\n },\n eq: (a, b) => {\n return a === b;\n },\n ne: (a, b) => {\n return a !== b;\n },\n gt: (a, b) => {\n return Number(a) > Number(b);\n },\n gte: (a, b) => {\n return Number(a) >= Number(b);\n },\n lt: (a, b) => {\n return Number(a) < Number(b);\n },\n lte: (a, b) => {\n return Number(a) <= Number(b);\n },\n between: (value, min, max) => {\n const num = Number(value);\n return num >= Number(min) && num <= Number(max);\n },\n // ==================== 格式化函数 ====================\n formatNumber: (value, decimals) => {\n const num = Number(value) || 0;\n const dec = Number(decimals) ?? 0;\n return num.toLocaleString(void 0, {\n minimumFractionDigits: dec,\n maximumFractionDigits: dec\n });\n },\n formatCurrency: (value, currency) => {\n const num = Number(value) || 0;\n const cur = String(currency || \"CNY\");\n return num.toLocaleString(\"zh-CN\", { style: \"currency\", currency: cur });\n },\n formatPercent: (value, decimals) => {\n const num = Number(value) || 0;\n const dec = Number(decimals) ?? 0;\n return (num * 100).toFixed(dec) + \"%\";\n },\n // ==================== JSON 函数 ====================\n jsonParse: (str) => {\n try {\n return JSON.parse(String(str));\n } catch {\n return null;\n }\n },\n jsonStringify: (value) => {\n return JSON.stringify(value);\n }\n};\n\n// src/expression/evaluator.ts\nvar Evaluator = class {\n constructor(options = {}) {\n this.depth = 0;\n this.startTime = 0;\n this.options = {\n maxDepth: 100,\n timeout: 1e3,\n debug: false,\n ...options\n };\n }\n /**\n * 求值表达式\n */\n evaluate(ast, context) {\n this.depth = 0;\n this.startTime = Date.now();\n try {\n const value = this.evaluateNode(ast, context);\n return { value };\n } catch (error) {\n return {\n value: void 0,\n error: error instanceof Error ? error : new Error(String(error))\n };\n }\n }\n evaluateNode(node, context) {\n this.checkLimits();\n switch (node.type) {\n case \"literal\":\n return this.evaluateLiteral(node);\n case \"identifier\":\n return this.evaluateIdentifier(node, context);\n case \"member\":\n return this.evaluateMember(node, context);\n case \"call\":\n return this.evaluateCall(node, context);\n case \"binary\":\n return this.evaluateBinary(node, context);\n case \"unary\":\n return this.evaluateUnary(node, context);\n case \"conditional\":\n return this.evaluateConditional(node, context);\n case \"array\":\n return this.evaluateArray(node, context);\n default:\n throw new ExpressionError(\"\", `Unknown node type: ${node.type}`);\n }\n }\n evaluateLiteral(node) {\n return node.value;\n }\n evaluateIdentifier(node, context) {\n const name = node.name;\n switch (name) {\n case \"state\":\n return context.state;\n case \"query\":\n return context.query;\n case \"context\":\n return context.context;\n case \"event\":\n return context.event;\n case \"item\":\n return context.item;\n case \"index\":\n return context.index;\n default:\n throw new ExpressionError(\n \"\",\n `Unknown variable '${name}'`,\n node.start !== void 0 && node.end !== void 0 ? { start: node.start, end: node.end } : void 0\n );\n }\n }\n evaluateMember(node, context) {\n const object = this.evaluateNode(node.object, context);\n if (object === null || object === void 0) {\n return void 0;\n }\n let property;\n if (node.computed) {\n const propValue = this.evaluateNode(node.property, context);\n property = propValue;\n } else {\n property = node.property;\n }\n if (typeof object === \"object\" && object !== null) {\n return object[property];\n }\n return void 0;\n }\n evaluateCall(node, context) {\n const fn = builtinFunctions[node.callee];\n if (!fn) {\n throw new ExpressionError(\"\", `Unknown function '${node.callee}'`);\n }\n const args = node.arguments.map((arg) => this.evaluateNode(arg, context));\n return fn(...args);\n }\n evaluateBinary(node, context) {\n const op = node.operator;\n if (op === \"&&\") {\n const left2 = this.evaluateNode(node.left, context);\n if (!left2) return left2;\n return this.evaluateNode(node.right, context);\n }\n if (op === \"||\") {\n const left2 = this.evaluateNode(node.left, context);\n if (left2) return left2;\n return this.evaluateNode(node.right, context);\n }\n if (op === \"??\") {\n const left2 = this.evaluateNode(node.left, context);\n if (left2 !== null && left2 !== void 0) return left2;\n return this.evaluateNode(node.right, context);\n }\n const left = this.evaluateNode(node.left, context);\n const right = this.evaluateNode(node.right, context);\n switch (op) {\n case \"+\":\n if (typeof left === \"string\" || typeof right === \"string\") {\n return String(left) + String(right);\n }\n return left + right;\n case \"-\":\n return left - right;\n case \"*\":\n return left * right;\n case \"/\":\n return left / right;\n case \"%\":\n return left % right;\n case \"==\":\n return left === right;\n case \"!=\":\n return left !== right;\n case \"<\":\n return left < right;\n case \">\":\n return left > right;\n case \"<=\":\n return left <= right;\n case \">=\":\n return left >= right;\n default:\n throw new ExpressionError(\"\", `Unknown operator '${op}'`);\n }\n }\n evaluateUnary(node, context) {\n const argument = this.evaluateNode(node.argument, context);\n switch (node.operator) {\n case \"!\":\n return !argument;\n case \"-\":\n return -argument;\n default:\n throw new ExpressionError(\"\", `Unknown unary operator '${node.operator}'`);\n }\n }\n evaluateConditional(node, context) {\n const test = this.evaluateNode(node.test, context);\n if (test) {\n return this.evaluateNode(node.consequent, context);\n }\n return this.evaluateNode(node.alternate, context);\n }\n evaluateArray(node, context) {\n return node.elements.map((el) => this.evaluateNode(el, context));\n }\n checkLimits() {\n this.depth++;\n if (this.depth > (this.options.maxDepth ?? 100)) {\n throw new ExpressionError(\"\", \"Maximum recursion depth exceeded\");\n }\n const elapsed = Date.now() - this.startTime;\n if (elapsed > (this.options.timeout ?? 1e3)) {\n throw new ExpressionError(\"\", \"Expression evaluation timeout\");\n }\n }\n};\n\n// src/expression/engine.ts\nvar ExpressionEngine = class {\n constructor(options = {}) {\n this.astCache = /* @__PURE__ */ new Map();\n this.options = {\n cacheAST: true,\n maxCacheSize: 1e3,\n ...options\n };\n this.evaluator = new Evaluator(options);\n }\n /**\n * 求值表达式\n */\n evaluate(expression, context) {\n try {\n const ast = this.parse(expression);\n return this.evaluator.evaluate(ast, context);\n } catch (error) {\n return {\n value: void 0,\n error: error instanceof Error ? error : new Error(String(error))\n };\n }\n }\n /**\n * 求值表达式并返回值\n * 出错时返回 fallback 值\n */\n evaluateWithFallback(expression, context, fallback) {\n const result = this.evaluate(expression, context);\n if (result.error) {\n this.log(\"warn\", `Expression evaluation failed: ${result.error.message}`, expression);\n return fallback;\n }\n return result.value;\n }\n /**\n * 求值模板字符串\n * 支持 ${expression} 语法\n */\n evaluateTemplate(template, context) {\n return template.replace(/\\$\\{([^}]+)\\}/g, (_, expr) => {\n const result = this.evaluate(expr.trim(), context);\n if (result.error) {\n this.log(\"warn\", `Template expression failed: ${result.error.message}`, expr);\n return \"\";\n }\n return String(result.value ?? \"\");\n });\n }\n /**\n * 解析表达式为 AST\n */\n parse(expression) {\n if (this.options.cacheAST) {\n const cached = this.astCache.get(expression);\n if (cached) {\n return cached;\n }\n }\n try {\n const lexer = new Lexer(expression);\n const tokens = lexer.tokenize();\n const parser = new Parser(tokens);\n const ast = parser.parse();\n if (this.options.cacheAST) {\n if (this.astCache.size >= (this.options.maxCacheSize ?? 1e3)) {\n const keysToDelete = Array.from(this.astCache.keys()).slice(\n 0,\n Math.floor(this.astCache.size / 2)\n );\n keysToDelete.forEach((key) => this.astCache.delete(key));\n }\n this.astCache.set(expression, ast);\n }\n return ast;\n } catch (error) {\n throw new ExpressionError(\n expression,\n error instanceof Error ? error.message : \"Parse error\"\n );\n }\n }\n /**\n * 校验表达式\n */\n validate(expression) {\n const errors = [];\n const warnings = [];\n const referencedPaths = [];\n const calledFunctions = [];\n try {\n const ast = this.parse(expression);\n this.collectReferences(ast, referencedPaths, calledFunctions);\n return {\n valid: true,\n errors: [],\n warnings,\n referencedPaths,\n calledFunctions\n };\n } catch (error) {\n errors.push({\n type: \"SYNTAX_ERROR\",\n message: error instanceof Error ? error.message : \"Parse error\"\n });\n return {\n valid: false,\n errors,\n warnings,\n referencedPaths,\n calledFunctions\n };\n }\n }\n /**\n * 清除 AST 缓存\n */\n clearCache() {\n this.astCache.clear();\n }\n collectReferences(node, paths, functions) {\n switch (node.type) {\n case \"identifier\":\n paths.push(node.name);\n break;\n case \"member\": {\n const path = this.buildMemberPath(node);\n if (path) paths.push(path);\n break;\n }\n case \"call\":\n functions.push(node.callee);\n node.arguments.forEach((arg) => this.collectReferences(arg, paths, functions));\n break;\n case \"binary\":\n this.collectReferences(node.left, paths, functions);\n this.collectReferences(node.right, paths, functions);\n break;\n case \"unary\":\n this.collectReferences(node.argument, paths, functions);\n break;\n case \"conditional\":\n this.collectReferences(node.test, paths, functions);\n this.collectReferences(node.consequent, paths, functions);\n this.collectReferences(node.alternate, paths, functions);\n break;\n case \"array\":\n node.elements.forEach((el) => this.collectReferences(el, paths, functions));\n break;\n }\n }\n buildMemberPath(node) {\n if (node.type === \"identifier\") {\n return node.name;\n }\n if (node.type === \"member\" && !node.computed) {\n const objectPath = this.buildMemberPath(node.object);\n if (objectPath) {\n return `${objectPath}.${node.property}`;\n }\n }\n return null;\n }\n log(level, message, ...args) {\n if (this.options.logger) {\n this.options.logger[level](message, ...args);\n } else if (this.options.debug) {\n console[level](`[ExpressionEngine] ${message}`, ...args);\n }\n }\n};\n\n// src/host-api/host-api-impl.ts\nvar HostAPIImpl = class {\n constructor(options) {\n // ==================== 存储 ====================\n this.storage = {\n get: (key, options) => {\n const fullKey = this.getStorageKey(key, options?.namespace);\n const item = localStorage.getItem(fullKey);\n if (!item) return void 0;\n try {\n const parsed = JSON.parse(item);\n if (parsed.expires && Date.now() > parsed.expires) {\n localStorage.removeItem(fullKey);\n return void 0;\n }\n return parsed.value;\n } catch {\n return void 0;\n }\n },\n set: (key, value, options) => {\n const fullKey = this.getStorageKey(key, options?.namespace);\n const item = {\n value,\n expires: options?.ttl ? Date.now() + options.ttl * 1e3 : void 0\n };\n localStorage.setItem(fullKey, JSON.stringify(item));\n },\n remove: (key, options) => {\n const fullKey = this.getStorageKey(key, options?.namespace);\n localStorage.removeItem(fullKey);\n }\n };\n this.options = options;\n this.storageNamespace = `djvlc:${options.context.pageUid}`;\n }\n // ==================== 数据请求 ====================\n async requestData(queryId, params) {\n this.log(\"debug\", `Requesting data: ${queryId}`, params);\n const startTime = performance.now();\n const context = this.options.context;\n try {\n const response = await fetch(`${this.options.apiBaseUrl}/data/query`, {\n method: \"POST\",\n headers: this.buildHeaders(),\n body: JSON.stringify({\n queryVersionId: queryId,\n params: params || {},\n context: {\n pageVersionId: context.pageVersionId,\n uid: context.userId\n }\n })\n });\n const result = await response.json();\n const duration = performance.now() - startTime;\n this.log(\"debug\", `Data query completed in ${duration.toFixed(2)}ms`);\n if (result.success && result.data) {\n this.options.stateManager.setQuery(queryId, result.data);\n }\n return result;\n } catch (error) {\n this.log(\"error\", `Data query failed: ${queryId}`, error);\n return {\n success: false,\n message: error instanceof Error ? error.message : \"Query failed\"\n };\n }\n }\n async executeAction(actionType, params) {\n this.log(\"debug\", `Executing action: ${actionType}`, params);\n const startTime = performance.now();\n const context = this.options.context;\n try {\n const response = await fetch(`${this.options.apiBaseUrl}/actions/execute`, {\n method: \"POST\",\n headers: this.buildHeaders(),\n body: JSON.stringify({\n actionType,\n params: params || {},\n context: {\n pageVersionId: context.pageVersionId,\n uid: context.userId,\n deviceId: context.deviceId,\n channel: context.channel\n },\n idempotencyKey: this.generateIdempotencyKey(actionType, params)\n })\n });\n const result = await response.json();\n const duration = performance.now() - startTime;\n this.log(\"debug\", `Action completed in ${duration.toFixed(2)}ms`);\n return result;\n } catch (error) {\n this.log(\"error\", `Action failed: ${actionType}`, error);\n return {\n success: false,\n message: error instanceof Error ? error.message : \"Action failed\"\n };\n }\n }\n // ==================== 导航 ====================\n navigate(options) {\n this.log(\"debug\", \"Navigate:\", options);\n this.track({\n eventName: \"navigate\",\n params: { url: options.url, newTab: options.newTab }\n });\n let url = options.url;\n if (options.params) {\n const searchParams = new URLSearchParams(options.params);\n url += (url.includes(\"?\") ? \"&\" : \"?\") + searchParams.toString();\n }\n if (options.newTab) {\n window.open(url, \"_blank\");\n } else if (options.replace) {\n window.location.replace(url);\n } else {\n window.location.href = url;\n }\n }\n goBack() {\n this.log(\"debug\", \"Navigate back\");\n window.history.back();\n }\n refresh() {\n this.log(\"debug\", \"Refresh page\");\n window.location.reload();\n }\n // ==================== 对话框 ====================\n async openDialog(options) {\n this.log(\"debug\", \"Open dialog:\", options);\n switch (options.type) {\n case \"alert\":\n window.alert(options.content || options.title);\n return true;\n case \"confirm\":\n return window.confirm(options.content || options.title);\n case \"prompt\":\n return window.prompt(options.content || options.title) || \"\";\n case \"custom\":\n this.log(\"warn\", \"Custom dialog not implemented\");\n return false;\n default:\n return false;\n }\n }\n closeDialog() {\n this.log(\"debug\", \"Close dialog\");\n }\n showToast(options) {\n this.log(\"debug\", \"Show toast:\", options);\n const toast = document.createElement(\"div\");\n toast.className = `djvlc-toast djvlc-toast-${options.type || \"info\"} djvlc-toast-${options.position || \"top\"}`;\n toast.textContent = options.message;\n Object.assign(toast.style, {\n position: \"fixed\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n padding: \"12px 24px\",\n borderRadius: \"8px\",\n color: \"#fff\",\n fontSize: \"14px\",\n zIndex: \"10000\",\n animation: \"djvlc-toast-fade-in 0.3s ease\"\n });\n const colors = {\n success: \"#52c41a\",\n error: \"#ff4d4f\",\n warning: \"#faad14\",\n info: \"#1890ff\"\n };\n toast.style.backgroundColor = colors[options.type || \"info\"];\n const positions = {\n top: { top: \"20px\" },\n center: { top: \"50%\", transform: \"translate(-50%, -50%)\" },\n bottom: { bottom: \"20px\" }\n };\n Object.assign(toast.style, positions[options.position || \"top\"]);\n document.body.appendChild(toast);\n setTimeout(() => {\n toast.style.animation = \"djvlc-toast-fade-out 0.3s ease\";\n setTimeout(() => toast.remove(), 300);\n }, options.duration || 3e3);\n }\n // ==================== 埋点 ====================\n track(event) {\n this.log(\"debug\", \"Track event:\", event);\n const context = this.options.context;\n fetch(`${this.options.apiBaseUrl}/track`, {\n method: \"POST\",\n headers: this.buildHeaders(),\n body: JSON.stringify({\n eventName: event.eventName,\n params: event.params,\n timestamp: event.timestamp || Date.now(),\n context: {\n pageVersionId: context.pageVersionId,\n runtimeVersion: context.runtimeVersion,\n userId: context.userId,\n deviceId: context.deviceId,\n channel: context.channel\n }\n }),\n keepalive: true\n // 页面关闭时也能发送\n }).catch((error) => {\n this.log(\"warn\", \"Track failed:\", error);\n });\n }\n // ==================== 剪贴板 ====================\n async copyToClipboard(text) {\n try {\n await navigator.clipboard.writeText(text);\n return { success: true, content: text };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : \"Copy failed\"\n };\n }\n }\n async readFromClipboard() {\n try {\n const text = await navigator.clipboard.readText();\n return { success: true, content: text };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : \"Read failed\"\n };\n }\n }\n // ==================== 状态管理 ====================\n getState(key) {\n return this.options.stateManager.getVariable(key);\n }\n setState(key, value) {\n this.options.stateManager.setVariable(key, value);\n }\n getVariable(name) {\n return this.options.stateManager.getVariable(name);\n }\n // ==================== 组件通信 ====================\n postMessage(componentId, message) {\n this.log(\"debug\", `Post message to ${componentId}:`, message);\n const event = new CustomEvent(`djvlc:message:${componentId}`, {\n detail: { message, from: this.options.context.pageUid }\n });\n document.dispatchEvent(event);\n }\n broadcast(channel, message) {\n this.log(\"debug\", `Broadcast to ${channel}:`, message);\n const event = new CustomEvent(`djvlc:broadcast:${channel}`, {\n detail: { message, from: this.options.context.pageUid }\n });\n document.dispatchEvent(event);\n }\n // ==================== 上下文信息 ====================\n getContext() {\n return { ...this.options.context };\n }\n // ==================== 私有方法 ====================\n buildHeaders() {\n const headers = {\n \"Content-Type\": \"application/json\",\n ...this.options.headers\n };\n if (this.options.authToken) {\n headers[\"Authorization\"] = `Bearer ${this.options.authToken}`;\n }\n return headers;\n }\n getStorageKey(key, namespace) {\n return `${namespace || this.storageNamespace}:${key}`;\n }\n generateIdempotencyKey(actionType, params) {\n const timestamp = Date.now();\n const paramsStr = JSON.stringify(params || {});\n return `${actionType}:${timestamp}:${this.simpleHash(paramsStr)}`;\n }\n simpleHash(str) {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n return Math.abs(hash).toString(36);\n }\n log(level, message, ...args) {\n if (this.options.logger) {\n this.options.logger[level](message, ...args);\n } else if (this.options.debug) {\n console[level](`[HostAPI] ${message}`, ...args);\n }\n }\n};\n\n// src/security/security-manager.ts\nvar SecurityManager = class {\n constructor(options = {}) {\n this.blockedComponentsMap = /* @__PURE__ */ new Map();\n this.blockedActionsSet = /* @__PURE__ */ new Set();\n this.options = {\n enableSRI: true,\n cdnDomains: [],\n apiDomains: [],\n blockedComponents: [],\n blockedActions: [],\n ...options\n };\n this.updateBlockedList(options.blockedComponents || [], options.blockedActions || []);\n }\n /**\n * 更新阻断列表\n */\n updateBlockedList(components, actions) {\n this.blockedComponentsMap.clear();\n components.forEach((c) => {\n this.blockedComponentsMap.set(`${c.name}@${c.version}`, c);\n });\n this.blockedActionsSet = new Set(actions);\n }\n /**\n * 检查组件是否被阻断\n */\n isComponentBlocked(name, version) {\n return this.blockedComponentsMap.has(`${name}@${version}`);\n }\n /**\n * 获取组件阻断信息\n */\n getBlockedInfo(name, version) {\n return this.blockedComponentsMap.get(`${name}@${version}`);\n }\n /**\n * 检查动作是否被阻断\n */\n isActionBlocked(actionType) {\n return this.blockedActionsSet.has(actionType);\n }\n /**\n * 验证组件完整性\n */\n async validateComponent(name, version, content, expectedIntegrity) {\n if (!this.options.enableSRI) return;\n const [algorithm, expectedHash] = expectedIntegrity.split(\"-\");\n if (!algorithm || !expectedHash) {\n throw new IntegrityError(name, version, expectedIntegrity, \"Invalid format\");\n }\n const actualHash = await this.computeHash(content, algorithm);\n if (actualHash !== expectedHash) {\n throw new IntegrityError(name, version, expectedHash, actualHash);\n }\n }\n /**\n * 验证 URL 是否在白名单内\n */\n isAllowedUrl(url, type) {\n const domains = type === \"cdn\" ? this.options.cdnDomains : this.options.apiDomains;\n if (!domains || domains.length === 0) return true;\n try {\n const parsedUrl = new URL(url);\n return domains.some((domain) => {\n if (domain.startsWith(\"*.\")) {\n const suffix = domain.slice(2);\n return parsedUrl.hostname.endsWith(suffix);\n }\n return parsedUrl.hostname === domain;\n });\n } catch {\n return false;\n }\n }\n /**\n * 生成 CSP 策略\n */\n generateCSPPolicy() {\n const cdnDomains = this.options.cdnDomains || [];\n const apiDomains = this.options.apiDomains || [];\n const scriptSrc = [\"'self'\", ...cdnDomains].join(\" \");\n const connectSrc = [\"'self'\", ...apiDomains].join(\" \");\n const styleSrc = [\"'self'\", \"'unsafe-inline'\", ...cdnDomains].join(\" \");\n const imgSrc = [\"'self'\", \"data:\", \"blob:\", ...cdnDomains].join(\" \");\n return [\n `default-src 'self'`,\n `script-src ${scriptSrc}`,\n `style-src ${styleSrc}`,\n `img-src ${imgSrc}`,\n `connect-src ${connectSrc}`,\n `font-src 'self' data: ${cdnDomains.join(\" \")}`,\n `frame-ancestors 'self'`,\n `base-uri 'self'`,\n `form-action 'self'`\n ].join(\"; \");\n }\n /**\n * 应用 CSP 策略\n */\n applyCSP() {\n const meta = document.createElement(\"meta\");\n meta.httpEquiv = \"Content-Security-Policy\";\n meta.content = this.generateCSPPolicy();\n document.head.appendChild(meta);\n }\n /**\n * 确保组件未被阻断\n */\n assertNotBlocked(name, version) {\n const blocked = this.getBlockedInfo(name, version);\n if (blocked) {\n throw new ComponentBlockedError(name, version, blocked.reason);\n }\n }\n /**\n * 计算哈希值\n */\n async computeHash(content, algorithm) {\n const encoder = new TextEncoder();\n const data = encoder.encode(content);\n const hashBuffer = await crypto.subtle.digest(\n algorithm.toUpperCase(),\n data\n );\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return btoa(String.fromCharCode(...hashArray));\n }\n _log(level, message) {\n if (this.options.logger) {\n this.options.logger[level](message);\n }\n }\n // 使用 _log 避免 unused 错误,后续可按需启用日志\n get log() {\n return this._log.bind(this);\n }\n};\n\n// src/telemetry/telemetry-manager.ts\nvar TelemetryManager = class {\n constructor(options) {\n this.spans = /* @__PURE__ */ new Map();\n this.metrics = [];\n this.errors = [];\n this.options = {\n enabled: true,\n sampleRate: 1,\n ...options\n };\n this.traceId = this.generateId();\n this.shouldSample = Math.random() < (this.options.sampleRate ?? 1);\n }\n /**\n * 获取 Trace ID\n */\n getTraceId() {\n return this.traceId;\n }\n /**\n * 获取 W3C Trace Context 格式的 traceparent\n */\n getTraceparent() {\n return `00-${this.traceId}-${this.generateId().slice(0, 16)}-01`;\n }\n /**\n * 开始一个 Span\n */\n startSpan(name, parentSpanId, attributes) {\n const span = {\n spanId: this.generateId().slice(0, 16),\n traceId: this.traceId,\n parentSpanId,\n name,\n startTime: performance.now(),\n attributes\n };\n this.spans.set(span.spanId, span);\n this.log(\"debug\", `Span started: ${name} (${span.spanId})`);\n return span;\n }\n /**\n * 结束一个 Span\n */\n endSpan(spanId, status = \"ok\") {\n const span = this.spans.get(spanId);\n if (span) {\n span.endTime = performance.now();\n span.status = status;\n this.log(\"debug\", `Span ended: ${span.name} (${spanId}) - ${span.endTime - span.startTime}ms`);\n }\n }\n /**\n * 记录性能指标\n */\n recordMetric(type, name, duration, extra) {\n const metric = {\n type,\n name,\n duration,\n startTime: performance.now() - duration,\n extra\n };\n this.metrics.push(metric);\n this.log(\"debug\", `Metric: ${type} - ${name} - ${duration}ms`);\n if (this.options.onMetric) {\n this.options.onMetric(metric);\n }\n }\n /**\n * 记录错误\n */\n recordError(error, context) {\n const runtimeError = {\n type: \"LOAD_ERROR\",\n message: error.message,\n stack: error instanceof Error ? error.stack : void 0,\n timestamp: Date.now(),\n traceId: this.traceId,\n ...context\n };\n this.errors.push(runtimeError);\n this.log(\"error\", `Error recorded: ${error.message}`);\n if (this.shouldSample && this.options.enabled) {\n this.reportError(runtimeError);\n }\n }\n /**\n * 记录页面加载时间\n */\n recordPageLoad(duration, extra) {\n this.recordMetric(\"page_resolve\", \"page_load\", duration, {\n pageVersionId: this.options.pageVersionId,\n ...extra\n });\n }\n /**\n * 记录组件加载时间\n */\n recordComponentLoad(name, version, duration, success) {\n this.recordMetric(\"component_load\", `${name}@${version}`, duration, {\n success\n });\n }\n /**\n * 记录首次渲染时间\n */\n recordFirstRender(duration) {\n this.recordMetric(\"first_render\", \"first_render\", duration, {\n pageVersionId: this.options.pageVersionId\n });\n }\n /**\n * 记录动作执行时间\n */\n recordActionExecute(actionType, duration, success) {\n this.recordMetric(\"action_execute\", actionType, duration, { success });\n }\n /**\n * 记录查询执行时间\n */\n recordQueryExecute(queryId, duration, success, fromCache) {\n this.recordMetric(\"query_execute\", queryId, duration, {\n success,\n fromCache\n });\n }\n /**\n * 获取所有指标\n */\n getMetrics() {\n return [...this.metrics];\n }\n /**\n * 获取所有 Span\n */\n getSpans() {\n return Array.from(this.spans.values());\n }\n /**\n * 清理数据\n */\n clear() {\n this.spans.clear();\n this.metrics = [];\n this.errors = [];\n }\n /**\n * 刷新上报\n */\n async flush() {\n if (!this.shouldSample || !this.options.enabled || !this.options.endpoint) {\n return;\n }\n const payload = {\n traceId: this.traceId,\n pageVersionId: this.options.pageVersionId,\n appId: this.options.appId,\n spans: this.getSpans(),\n metrics: this.metrics,\n errors: this.errors,\n timestamp: Date.now()\n };\n try {\n await fetch(this.options.endpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(payload),\n keepalive: true\n });\n } catch (error) {\n this.log(\"warn\", \"Failed to flush telemetry:\", error);\n }\n }\n reportError(error) {\n if (this.options.endpoint) {\n fetch(`${this.options.endpoint}/errors`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(error),\n keepalive: true\n }).catch(() => {\n });\n }\n }\n generateId() {\n const array = new Uint8Array(16);\n crypto.getRandomValues(array);\n return Array.from(array, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n }\n log(level, message, ...args) {\n if (this.options.logger) {\n this.options.logger[level](message, ...args);\n } else if (this.options.debug) {\n console[level](`[Telemetry] ${message}`, ...args);\n }\n }\n};\n\n// src/renderer/base-renderer.ts\nimport { isExpressionBinding } from \"@djvlc/contracts-types\";\nvar BaseRenderer = class {\n constructor(options) {\n this.container = null;\n this.renderedElements = /* @__PURE__ */ new Map();\n this.expressionContext = {\n state: {},\n query: {},\n context: {}\n };\n this.options = options;\n }\n /**\n * 初始化渲染器\n */\n init() {\n this.log(\"debug\", \"Renderer initialized\");\n }\n /**\n * 渲染页面\n */\n render(schema, container) {\n this.container = container;\n this.log(\"debug\", \"Rendering page\", schema.page.id);\n container.innerHTML = \"\";\n this.applyPageStyles(schema.page.canvas);\n const fragment = document.createDocumentFragment();\n for (const component of schema.components) {\n const element = this.renderComponent(component);\n if (element) {\n fragment.appendChild(element);\n }\n }\n container.appendChild(fragment);\n this.log(\"info\", `Rendered ${schema.components.length} components`);\n }\n /**\n * 更新组件属性\n */\n updateComponent(componentId, props) {\n const element = this.renderedElements.get(componentId);\n if (!element) {\n this.log(\"warn\", `Component not found: ${componentId}`);\n return;\n }\n this.applyProps(element, props);\n }\n /**\n * 更新表达式上下文\n */\n updateContext(context) {\n this.expressionContext = {\n ...this.expressionContext,\n ...context\n };\n }\n /**\n * 销毁渲染器\n */\n destroy() {\n this.renderedElements.forEach((element) => {\n element.remove();\n });\n this.renderedElements.clear();\n if (this.container) {\n this.container.innerHTML = \"\";\n }\n this.log(\"debug\", \"Renderer destroyed\");\n }\n /**\n * 渲染单个组件\n */\n renderComponent(instance) {\n const { id, type, props, style, children, visible } = instance;\n if (visible === false) {\n return null;\n }\n try {\n const loadedComponent = this.options.components.get(type);\n let element;\n if (loadedComponent && customElements.get(type)) {\n element = document.createElement(type);\n } else {\n element = document.createElement(\"div\");\n element.className = `djvlc-component djvlc-${type}`;\n if (!loadedComponent) {\n this.log(\"warn\", `Component not loaded: ${type}`);\n element.textContent = `[Component: ${type}]`;\n }\n }\n element.setAttribute(\"data-component-id\", id);\n element.setAttribute(\"data-component-type\", type);\n const resolvedProps = this.resolveProps(props);\n this.applyProps(element, resolvedProps);\n if (style) {\n this.applyStyles(element, style);\n }\n this.options.injectHostApi(element, id);\n if (children && children.length > 0) {\n for (const child of children) {\n const childElement = this.renderComponent(child);\n if (childElement) {\n element.appendChild(childElement);\n }\n }\n }\n this.renderedElements.set(id, element);\n return element;\n } catch (error) {\n this.log(\"error\", `Failed to render component: ${id}`, error);\n if (this.options.onRenderError) {\n return this.options.onRenderError(id, error);\n }\n const fallback = document.createElement(\"div\");\n fallback.className = \"djvlc-error-boundary\";\n fallback.textContent = `Error rendering component: ${type}`;\n return fallback;\n }\n }\n /**\n * 解析 props 中的表达式\n */\n resolveProps(props) {\n const resolved = {};\n for (const [key, value] of Object.entries(props)) {\n if (isExpressionBinding(value)) {\n const result = this.options.expressionEngine.evaluateWithFallback(\n value.expression,\n this.expressionContext,\n value.fallback\n );\n resolved[key] = result;\n } else if (typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n resolved[key] = this.resolveProps(value);\n } else {\n resolved[key] = value;\n }\n }\n return resolved;\n }\n /**\n * 应用 props 到元素\n */\n applyProps(element, props) {\n for (const [key, value] of Object.entries(props)) {\n if (value === null || value === void 0) continue;\n if (element.tagName.includes(\"-\")) {\n element[key] = value;\n } else {\n if (typeof value === \"boolean\") {\n if (value) {\n element.setAttribute(key, \"\");\n } else {\n element.removeAttribute(key);\n }\n } else if (typeof value === \"object\") {\n element.setAttribute(key, JSON.stringify(value));\n } else {\n element.setAttribute(key, String(value));\n }\n }\n }\n }\n /**\n * 应用样式到元素\n */\n applyStyles(element, style) {\n for (const [key, value] of Object.entries(style)) {\n if (value === null || value === void 0) continue;\n let cssValue;\n if (typeof value === \"number\") {\n const unitless = [\"zIndex\", \"opacity\", \"flex\", \"fontWeight\"];\n cssValue = unitless.includes(key) ? String(value) : `${value}px`;\n } else {\n cssValue = String(value);\n }\n const cssKey = key.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n element.style.setProperty(cssKey, cssValue);\n }\n }\n /**\n * 应用页面样式\n */\n applyPageStyles(canvas) {\n if (!this.container) return;\n this.container.style.width = `${canvas.width}px`;\n if (canvas.height) {\n this.container.style.minHeight = `${canvas.height}px`;\n }\n if (canvas.background) {\n this.container.style.background = canvas.background;\n }\n this.container.classList.add(\"djvlc-page\", `djvlc-canvas-${canvas.type}`);\n }\n log(level, message, ...args) {\n if (this.options.logger) {\n this.options.logger[level](message, ...args);\n } else if (this.options.debug) {\n console[level](`[Renderer] ${message}`, ...args);\n }\n }\n};\n\n// src/renderer/fallback-component.ts\nfunction registerFallbackComponents() {\n if (!customElements.get(\"djvlc-fallback\")) {\n customElements.define(\n \"djvlc-fallback\",\n class extends HTMLElement {\n constructor() {\n super();\n const shadow = this.attachShadow({ mode: \"open\" });\n shadow.innerHTML = `\n <style>\n :host {\n display: block;\n padding: 16px;\n background: #fff2f0;\n border: 1px solid #ffccc7;\n border-radius: 4px;\n color: #ff4d4f;\n font-size: 14px;\n }\n .title {\n font-weight: 600;\n margin-bottom: 8px;\n }\n .message {\n color: #666;\n }\n </style>\n <div class=\"title\">\\u7EC4\\u4EF6\\u52A0\\u8F7D\\u5931\\u8D25</div>\n <div class=\"message\"><slot>\\u8BF7\\u5237\\u65B0\\u9875\\u9762\\u91CD\\u8BD5</slot></div>\n `;\n }\n static get observedAttributes() {\n return [\"message\", \"component-name\"];\n }\n attributeChangedCallback(name, _oldValue, newValue) {\n if (name === \"message\" && this.shadowRoot) {\n const message = this.shadowRoot.querySelector(\".message\");\n if (message) message.textContent = newValue;\n }\n if (name === \"component-name\" && this.shadowRoot) {\n const title = this.shadowRoot.querySelector(\".title\");\n if (title) title.textContent = `\\u7EC4\\u4EF6 ${newValue} \\u52A0\\u8F7D\\u5931\\u8D25`;\n }\n }\n }\n );\n }\n if (!customElements.get(\"djvlc-blocked\")) {\n customElements.define(\n \"djvlc-blocked\",\n class extends HTMLElement {\n constructor() {\n super();\n const shadow = this.attachShadow({ mode: \"open\" });\n shadow.innerHTML = `\n <style>\n :host {\n display: block;\n padding: 16px;\n background: #fffbe6;\n border: 1px solid #ffe58f;\n border-radius: 4px;\n color: #faad14;\n font-size: 14px;\n }\n .icon {\n margin-right: 8px;\n }\n </style>\n <span class=\"icon\">\\u26A0\\uFE0F</span>\n <span>\\u6B64\\u7EC4\\u4EF6\\u5DF2\\u88AB\\u6682\\u505C\\u4F7F\\u7528</span>\n `;\n }\n }\n );\n }\n if (!customElements.get(\"djvlc-error-boundary\")) {\n customElements.define(\n \"djvlc-error-boundary\",\n class extends HTMLElement {\n constructor() {\n super();\n const shadow = this.attachShadow({ mode: \"open\" });\n shadow.innerHTML = `\n <style>\n :host {\n display: block;\n padding: 16px;\n background: #f5f5f5;\n border: 1px dashed #d9d9d9;\n border-radius: 4px;\n color: #999;\n font-size: 14px;\n text-align: center;\n }\n </style>\n <slot>\\u6E32\\u67D3\\u51FA\\u9519</slot>\n `;\n }\n }\n );\n }\n}\nfunction createFallbackElement(type, message, componentName) {\n const tagName = `djvlc-${type === \"error\" ? \"error-boundary\" : type}`;\n const element = document.createElement(tagName);\n if (message) {\n element.setAttribute(\"message\", message);\n }\n if (componentName) {\n element.setAttribute(\"component-name\", componentName);\n }\n return element;\n}\n\n// src/runtime.ts\nfunction createRuntime(options) {\n return new DjvlcRuntime(options);\n}\nvar DjvlcRuntime = class {\n constructor(options) {\n this.container = null;\n this.options = {\n channel: \"prod\",\n debug: false,\n enableSRI: true,\n ...options\n };\n this.logger = this.createLogger();\n this.stateManager = new StateManager();\n this.eventBus = new EventBus({ debug: options.debug, logger: this.logger });\n this.expressionEngine = new ExpressionEngine({ debug: options.debug, logger: this.logger });\n this.pageLoader = new PageLoader({\n apiBaseUrl: options.apiBaseUrl,\n channel: options.channel,\n authToken: options.authToken,\n previewToken: options.previewToken,\n headers: options.headers,\n logger: this.logger\n });\n this.componentLoader = new ComponentLoader({\n cdnBaseUrl: options.cdnBaseUrl,\n enableSRI: options.enableSRI,\n logger: this.logger\n });\n this.assetLoader = new AssetLoader({\n cdnHosts: [new URL(options.cdnBaseUrl).host],\n apiHosts: [new URL(options.apiBaseUrl).host]\n });\n this.securityManager = new SecurityManager({\n enableSRI: options.enableSRI,\n cdnDomains: [new URL(options.cdnBaseUrl).host],\n apiDomains: [new URL(options.apiBaseUrl).host],\n logger: this.logger\n });\n this.log(\"info\", \"Runtime created\");\n }\n /**\n * 初始化运行时\n */\n async init() {\n this.log(\"info\", \"Initializing runtime\");\n const startTime = performance.now();\n try {\n this.container = this.resolveContainer();\n this.assetLoader.preconnectAll();\n this.pageLoader.preconnect();\n registerFallbackComponents();\n this.stateManager.setPhase(\"resolving\");\n const initTime = performance.now() - startTime;\n this.log(\"info\", `Runtime initialized in ${initTime.toFixed(2)}ms`);\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n /**\n * 加载页面\n */\n async load() {\n this.log(\"info\", \"Loading page:\", this.options.pageUid);\n const startTime = performance.now();\n try {\n this.stateManager.setPhase(\"resolving\");\n const page = await this.pageLoader.resolve(this.options.pageUid, {\n uid: this.options.userId,\n deviceId: this.options.deviceId\n });\n this.stateManager.setPage(page);\n this.telemetryManager = new TelemetryManager({\n pageVersionId: page.pageVersionId,\n debug: this.options.debug,\n logger: this.logger,\n onMetric: this.options.onMetric\n });\n if (page.runtimeConfig) {\n this.securityManager.updateBlockedList(\n page.runtimeConfig.blockedComponents || [],\n page.runtimeConfig.killSwitches || []\n );\n this.componentLoader.updateBlockedList(\n page.runtimeConfig.blockedComponents?.map((c) => `${c.name}@${c.version}`) || []\n );\n }\n this.stateManager.setPhase(\"loading\");\n this.componentLoader.preload(page.manifest.components);\n const componentResults = await this.componentLoader.loadAll(page.manifest);\n componentResults.forEach((result, key) => {\n this.stateManager.setComponentStatus(key, result);\n this.telemetryManager.recordComponentLoad(\n result.name,\n result.version,\n result.loadTime || 0,\n result.status === \"loaded\"\n );\n });\n this.initHostApi(page);\n this.initRenderer();\n const loadTime = performance.now() - startTime;\n this.telemetryManager.recordPageLoad(loadTime);\n this.log(\"info\", `Page loaded in ${loadTime.toFixed(2)}ms`);\n this.emitEvent(\"page:loaded\", { page, loadTime });\n return page;\n } catch (error) {\n this.stateManager.setPhase(\"error\");\n this.handleError(error);\n throw error;\n }\n }\n /**\n * 渲染页面\n */\n async render() {\n const state = this.stateManager.getState();\n if (!state.page || !this.container) {\n throw new PageLoadError(\"Page not loaded\");\n }\n this.log(\"info\", \"Rendering page\");\n const startTime = performance.now();\n try {\n this.stateManager.setPhase(\"rendering\");\n this.renderer.updateContext({\n state: state.variables,\n query: state.queries,\n context: {\n userId: this.options.userId,\n deviceId: this.options.deviceId,\n channel: this.options.channel,\n pageVersionId: state.page.pageVersionId\n }\n });\n this.renderer.render(state.page.pageJson, this.container);\n this.stateManager.setPhase(\"ready\");\n const renderTime = performance.now() - startTime;\n this.telemetryManager.recordFirstRender(renderTime);\n this.log(\"info\", `Page rendered in ${renderTime.toFixed(2)}ms`);\n } catch (error) {\n this.stateManager.setPhase(\"error\");\n this.handleError(error);\n throw error;\n }\n }\n /**\n * 获取 Host API\n */\n getHostApi() {\n return this.hostApi;\n }\n /**\n * 获取当前状态\n */\n getState() {\n return this.stateManager.getState();\n }\n /**\n * 订阅状态变更\n */\n onStateChange(listener) {\n return this.stateManager.subscribe(listener);\n }\n /**\n * 订阅事件\n */\n on(type, handler) {\n return this.eventBus.on(type, handler);\n }\n /**\n * 更新组件\n */\n updateComponent(componentId, props) {\n this.renderer.updateComponent(componentId, props);\n }\n /**\n * 设置变量\n */\n setVariable(key, value) {\n this.stateManager.setVariable(key, value);\n const state = this.stateManager.getState();\n if (state.page && this.container) {\n this.renderer.updateContext({\n state: state.variables\n });\n }\n }\n /**\n * 刷新数据\n */\n async refreshData(queryId) {\n const result = await this.hostApi.requestData(queryId);\n if (result.success) {\n this.stateManager.setQuery(queryId, result.data);\n const state = this.stateManager.getState();\n this.renderer.updateContext({\n query: state.queries\n });\n }\n }\n /**\n * 销毁运行时\n */\n destroy() {\n this.log(\"info\", \"Destroying runtime\");\n this.telemetryManager?.flush();\n this.renderer?.destroy();\n this.eventBus.clear();\n this.stateManager.setDestroyed();\n if (this.container) {\n this.container.innerHTML = \"\";\n }\n this.log(\"info\", \"Runtime destroyed\");\n }\n // ==================== 私有方法 ====================\n resolveContainer() {\n const { container } = this.options;\n if (typeof container === \"string\") {\n const element = document.querySelector(container);\n if (!element) {\n throw new Error(`Container not found: ${container}`);\n }\n return element;\n }\n return container;\n }\n initHostApi(page) {\n const context = {\n pageUid: page.pageUid,\n pageVersionId: page.pageVersionId,\n runtimeVersion: \"0.1.0\",\n userId: this.options.userId,\n deviceId: this.options.deviceId,\n channel: this.options.channel,\n isEditMode: false,\n isPreviewMode: page.isPreview || false\n };\n this.hostApi = new HostAPIImpl({\n apiBaseUrl: this.options.apiBaseUrl,\n authToken: this.options.authToken,\n headers: this.options.headers,\n stateManager: this.stateManager,\n eventBus: this.eventBus,\n expressionEngine: this.expressionEngine,\n context,\n debug: this.options.debug,\n logger: this.logger\n });\n }\n initRenderer() {\n const components = /* @__PURE__ */ new Map();\n const state = this.stateManager.getState();\n state.components.forEach((result, key) => {\n if (result.status === \"loaded\" && result.component) {\n const [name, version] = key.split(\"@\");\n components.set(name, {\n name,\n version,\n Component: result.component,\n loadTime: result.loadTime || 0\n });\n }\n });\n this.renderer = new BaseRenderer({\n expressionEngine: this.expressionEngine,\n components,\n injectHostApi: (element, componentId) => {\n element.hostApi = this.hostApi;\n element.componentId = componentId;\n },\n debug: this.options.debug,\n logger: this.logger,\n onRenderError: (componentId, error) => {\n this.log(\"error\", `Render error in ${componentId}:`, error);\n this.emitEvent(\"component:error\", { componentId, error: error.message });\n return createFallbackElement(\"error\", error.message);\n }\n });\n this.renderer.init();\n }\n handleError(error) {\n const runtimeError = error instanceof DjvlcRuntimeError ? error : { type: \"LOAD_ERROR\", message: error.message, timestamp: Date.now() };\n this.stateManager.setError(runtimeError);\n this.telemetryManager?.recordError(error);\n this.emitEvent(\"page:error\", { error: error.message });\n if (this.options.onError) {\n this.options.onError(runtimeError);\n }\n }\n emitEvent(type, data) {\n const event = EventBus.createEvent(type, data, this.telemetryManager?.getTraceId());\n this.eventBus.emit(event);\n if (this.options.onEvent) {\n this.options.onEvent(event);\n }\n }\n createLogger() {\n const prefix = \"[DJVLC]\";\n return {\n debug: (...args) => {\n if (this.options.debug) console.debug(prefix, ...args);\n },\n info: (...args) => console.info(prefix, ...args),\n warn: (...args) => console.warn(prefix, ...args),\n error: (...args) => console.error(prefix, ...args)\n };\n }\n log(level, message, ...args) {\n this.logger[level](message, ...args);\n }\n};\nexport {\n ActionBridge,\n ActionError,\n AssetLoader,\n BaseRenderer,\n ComponentBlockedError,\n ComponentLoadError,\n ComponentLoader,\n DjvlcRuntime,\n DjvlcRuntimeError,\n Evaluator,\n EventBus,\n ExpressionEngine,\n ExpressionError,\n HostAPIImpl,\n IntegrityError,\n Lexer,\n PageLoadError,\n PageLoader,\n Parser,\n QueryError,\n RenderError,\n SecurityManager,\n StateManager,\n TelemetryManager,\n builtinFunctions,\n createFallbackElement,\n createRuntime,\n registerFallbackComponents\n};\n","/**\n * @djvlc/runtime-web - DJV 低代码平台浏览器版运行时\n *\n * 用于 CDN 发布,提供:\n * - runtime.esm.js - ES Module 版本\n * - runtime.iife.js - IIFE 版本(全局变量 DJVRuntime)\n * - runtime.css - 运行时样式\n *\n * @example\n * ```html\n * <!-- IIFE 方式 -->\n * <script src=\"https://cdn.example.com/runtime/1.0.0/runtime.iife.js\"></script>\n * <script>\n * DJVRuntime.mount('#app', { pageUid: 'page_123', apiBaseUrl: '...' });\n * </script>\n *\n * <!-- ESM 方式 -->\n * <script type=\"module\">\n * import { mount } from 'https://cdn.example.com/runtime/1.0.0/runtime.esm.js';\n * mount('#app', { pageUid: 'page_123', apiBaseUrl: '...' });\n * </script>\n * ```\n */\n\nimport { createRuntime } from '@djvlc/runtime-core';\nimport type { RuntimeOptions } from '@djvlc/runtime-core';\n\n// 运行时版本\ndeclare const __RUNTIME_VERSION__: string;\nexport const RUNTIME_VERSION = typeof __RUNTIME_VERSION__ !== 'undefined' ? __RUNTIME_VERSION__ : '0.0.0';\n\n// ==================== 类型定义 ====================\n\n/**\n * 挂载选项(简化版,用于浏览器端)\n */\nexport interface MountOptions {\n /** 页面 UID */\n pageUid: string;\n /** API 基础 URL */\n apiBaseUrl: string;\n /** CDN 基础 URL */\n cdnBaseUrl: string;\n /** 渠道 */\n channel?: 'preview' | 'prod' | 'gray';\n /** 用户 ID */\n userId?: string;\n /** 设备 ID */\n deviceId?: string;\n /** 认证 Token */\n authToken?: string;\n /** 预览 Token(仅 preview 渠道) */\n previewToken?: string;\n /** 调试模式 */\n debug?: boolean;\n /** 是否启用 SRI 校验 */\n enableSRI?: boolean;\n /** 自定义请求头 */\n headers?: Record<string, string>;\n /** 加载完成回调 */\n onLoad?: (data: unknown) => void;\n /** 错误回调 */\n onError?: (error: Error) => void;\n /** 性能指标回调 */\n onMetric?: (metric: unknown) => void;\n}\n\n/**\n * 挂载结果\n */\nexport interface MountResult {\n /** 运行时实例 */\n runtime: ReturnType<typeof createRuntime>;\n /** 销毁函数 */\n destroy: () => void;\n}\n\n// ==================== 挂载函数 ====================\n\n/**\n * 挂载运行时到指定容器\n *\n * @param container - 容器选择器或元素\n * @param options - 挂载选项\n * @returns 挂载结果\n *\n * @example\n * ```javascript\n * const { runtime, destroy } = await DJVRuntime.mount('#app', {\n * pageUid: 'page_123',\n * apiBaseUrl: 'https://api.example.com',\n * cdnBaseUrl: 'https://cdn.example.com',\n * channel: 'prod',\n * });\n *\n * // 页面卸载时销毁\n * window.addEventListener('beforeunload', destroy);\n * ```\n */\nexport async function mount(\n container: string | HTMLElement,\n options: MountOptions\n): Promise<MountResult> {\n const runtimeOptions: RuntimeOptions = {\n container,\n pageUid: options.pageUid,\n apiBaseUrl: options.apiBaseUrl,\n cdnBaseUrl: options.cdnBaseUrl,\n channel: options.channel,\n userId: options.userId,\n deviceId: options.deviceId,\n authToken: options.authToken,\n previewToken: options.previewToken,\n debug: options.debug,\n enableSRI: options.enableSRI,\n headers: options.headers,\n onError: options.onError ? (error) => options.onError?.(new Error(error.message)) : undefined,\n onMetric: options.onMetric,\n };\n\n const runtime = createRuntime(runtimeOptions);\n\n try {\n await runtime.init();\n await runtime.load();\n await runtime.render();\n\n options.onLoad?.(runtime.getState());\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n options.onError?.(err);\n throw err;\n }\n\n return {\n runtime,\n destroy: () => runtime.destroy(),\n };\n}\n\n// ==================== 工具函数 ====================\n\n/**\n * 预连接 CDN/API 域名(优化加载速度)\n *\n * @param hosts - 域名列表\n *\n * @example\n * ```javascript\n * DJVRuntime.preconnect(['cdn.example.com', 'api.example.com']);\n * ```\n */\nexport function preconnect(hosts: string[]): void {\n hosts.forEach((host) => {\n const link = document.createElement('link');\n link.rel = 'preconnect';\n link.href = host.startsWith('http') ? host : `https://${host}`;\n link.crossOrigin = 'anonymous';\n document.head.appendChild(link);\n });\n}\n\n/**\n * 预加载 runtime 资源\n *\n * @param cdnBaseUrl - CDN 基础 URL\n * @param version - 运行时版本(默认当前版本)\n */\nexport function preloadAssets(cdnBaseUrl: string, version: string = RUNTIME_VERSION): void {\n const assets = [\n `${cdnBaseUrl}/runtime/${version}/runtime.esm.js`,\n `${cdnBaseUrl}/runtime/${version}/runtime.css`,\n ];\n\n assets.forEach((href) => {\n const link = document.createElement('link');\n link.rel = 'preload';\n link.href = href;\n link.as = href.endsWith('.js') ? 'script' : 'style';\n if (href.endsWith('.js')) {\n link.crossOrigin = 'anonymous';\n }\n document.head.appendChild(link);\n });\n}\n\n/**\n * 获取设备 ID(自动生成并持久化)\n */\nexport function getDeviceId(): string {\n const key = 'djv_device_id';\n let deviceId = localStorage.getItem(key);\n\n if (!deviceId) {\n deviceId = `${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;\n try {\n localStorage.setItem(key, deviceId);\n } catch {\n // localStorage 不可用时忽略\n }\n }\n\n return deviceId;\n}\n\n/**\n * 生成追踪 ID(W3C Trace Context 格式)\n */\nexport function generateTraceId(): string {\n const randomHex = (len: number) =>\n Array.from({ length: len }, () => Math.floor(Math.random() * 16).toString(16)).join('');\n return randomHex(32);\n}\n\n/**\n * 生成 Span ID\n */\nexport function generateSpanId(): string {\n const randomHex = (len: number) =>\n Array.from({ length: len }, () => Math.floor(Math.random() * 16).toString(16)).join('');\n return randomHex(16);\n}\n\n/**\n * 生成 traceparent 头\n */\nexport function generateTraceparent(): string {\n const traceId = generateTraceId();\n const spanId = generateSpanId();\n return `00-${traceId}-${spanId}-01`;\n}\n\n// ==================== 重新导出核心 API ====================\n\nexport { createRuntime } from '@djvlc/runtime-core';\nexport type { RuntimeOptions, RuntimeState, LoadedComponent, Logger } from '@djvlc/runtime-core';\n\n// ==================== 默认导出 ====================\n\nexport default {\n mount,\n preconnect,\n preloadAssets,\n getDeviceId,\n generateTraceId,\n generateSpanId,\n generateTraceparent,\n createRuntime,\n RUNTIME_VERSION,\n};\n"],"names":["index","options","_a"],"mappings":"AAoBA,IAAI,YAA6B,kBAAC,eAAe;AAC/C,aAAW,WAAW,SAAS,IAAI,GAAG,IAAI;AAC1C,aAAW,WAAW,iBAAiB,IAAI,IAAI,IAAI;AACnD,aAAW,WAAW,cAAc,IAAI,IAAI,IAAI;AAChD,aAAW,WAAW,WAAW,IAAI,IAAI,IAAI;AAC7C,aAAW,WAAW,WAAW,IAAI,IAAI,IAAI;AAC7C,aAAW,WAAW,cAAc,IAAI,IAAI,IAAI;AAChD,aAAW,WAAW,kBAAkB,IAAI,IAAI,IAAI;AACpD,aAAW,WAAW,gBAAgB,IAAI,IAAI,IAAI;AAClD,aAAW,WAAW,qBAAqB,IAAI,IAAI,IAAI;AACvD,aAAW,WAAW,SAAS,IAAI,IAAI,IAAI;AAC3C,aAAW,WAAW,kBAAkB,IAAI,IAAI,IAAI;AACpD,aAAW,WAAW,uBAAuB,IAAI,IAAI,IAAI;AACzD,aAAW,WAAW,yBAAyB,IAAI,IAAI,IAAI;AAC3D,aAAW,WAAW,6BAA6B,IAAI,IAAI,IAAI;AAC/D,aAAW,WAAW,gBAAgB,IAAI,IAAI,IAAI;AAClD,aAAW,WAAW,sBAAsB,IAAI,IAAI,IAAI;AACxD,aAAW,WAAW,gBAAgB,IAAI,IAAI,IAAI;AAClD,aAAW,WAAW,uBAAuB,IAAI,IAAI,IAAI;AACzD,aAAW,WAAW,iBAAiB,IAAI,IAAI,IAAI;AACnD,aAAW,WAAW,sBAAsB,IAAI,IAAI,IAAI;AACxD,aAAW,WAAW,wBAAwB,IAAI,IAAI,IAAI;AAC1D,aAAW,WAAW,yBAAyB,IAAI,IAAI,IAAI;AAC3D,aAAW,WAAW,eAAe,IAAI,IAAI,IAAI;AACjD,aAAW,WAAW,gBAAgB,IAAI,IAAI,IAAI;AAClD,aAAW,WAAW,qBAAqB,IAAI,IAAI,IAAI;AACvD,aAAW,WAAW,6BAA6B,IAAI,IAAI,IAAI;AAC/D,aAAW,WAAW,mBAAmB,IAAI,IAAI,IAAI;AACrD,aAAW,WAAW,8BAA8B,IAAI,IAAI,IAAI;AAChE,aAAW,WAAW,wBAAwB,IAAI,IAAI,IAAI;AAC1D,aAAW,WAAW,uBAAuB,IAAI,IAAI,IAAI;AACzD,aAAW,WAAW,wBAAwB,IAAI,IAAI,IAAI;AAC1D,aAAW,WAAW,gBAAgB,IAAI,IAAI,IAAI;AAClD,aAAW,WAAW,wBAAwB,IAAI,IAAI,IAAI;AAC1D,aAAW,WAAW,qBAAqB,IAAI,IAAI,IAAI;AACvD,aAAW,WAAW,uBAAuB,IAAI,IAAI,IAAI;AACzD,aAAW,WAAW,qBAAqB,IAAI,IAAI,IAAI;AACvD,aAAW,WAAW,sBAAsB,IAAI,IAAI,IAAI;AACxD,aAAW,WAAW,oBAAoB,IAAI,IAAI,IAAI;AACtD,aAAW,WAAW,sBAAsB,IAAI,IAAI,IAAI;AACxD,aAAW,WAAW,gBAAgB,IAAI,IAAI,IAAI;AAClD,aAAW,WAAW,0BAA0B,IAAI,IAAI,IAAI;AAC5D,aAAW,WAAW,yBAAyB,IAAI,IAAI,IAAI;AAC3D,aAAW,WAAW,yBAAyB,IAAI,IAAI,IAAI;AAC3D,aAAW,WAAW,mBAAmB,IAAI,IAAI,IAAI;AACrD,aAAW,WAAW,yBAAyB,IAAI,IAAI,IAAI;AAC3D,aAAW,WAAW,6BAA6B,IAAI,IAAI,IAAI;AAC/D,aAAW,WAAW,6BAA6B,IAAI,IAAI,IAAI;AAC/D,aAAW,WAAW,6BAA6B,IAAI,IAAI,IAAI;AAC/D,aAAW,WAAW,0BAA0B,IAAI,IAAI,IAAI;AAC5D,aAAW,WAAW,0BAA0B,IAAI,IAAI,IAAI;AAC5D,aAAW,WAAW,yBAAyB,IAAI,IAAI,IAAI;AAC3D,aAAW,WAAW,kBAAkB,IAAI,IAAI,IAAI;AACpD,aAAW,WAAW,qBAAqB,IAAI,IAAI,IAAI;AACvD,aAAW,WAAW,sBAAsB,IAAI,IAAI,IAAI;AACxD,SAAO;AACT,GAAG,aAAa,CAAA,CAAE;AAWlB,IAAI,gBAAgB;AAAA;AAAA,EAElB;AAAA,IAAC;AAAA;AAAA,EAAG,GAAiB;AAAA,EACrB;AAAA,IAAC;AAAA;AAAA,EAAI,GAAyB;AAAA,EAC9B;AAAA,IAAC;AAAA;AAAA,EAAI,GAAsB;AAAA,EAC3B;AAAA,IAAC;AAAA;AAAA,EAAI,GAAmB;AAAA,EACxB;AAAA,IAAC;AAAA;AAAA,EAAI,GAAmB;AAAA,EACxB;AAAA,IAAC;AAAA;AAAA,EAAI,GAAsB;AAAA,EAC3B;AAAA,IAAC;AAAA;AAAA,EAAI,GAA0B;AAAA,EAC/B;AAAA,IAAC;AAAA;AAAA,EAAI,GAAwB;AAAA,EAC7B;AAAA,IAAC;AAAA;AAAA,EAAI,GAA6B;AAAA,EAClC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAiB;AAAA;AAAA,EAEtB;AAAA,IAAC;AAAA;AAAA,EAAI,GAA0B;AAAA,EAC/B;AAAA,IAAC;AAAA;AAAA,EAAI,GAA+B;AAAA,EACpC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAiC;AAAA,EACtC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAqC;AAAA,EAC1C;AAAA,IAAC;AAAA;AAAA,EAAI,GAAwB;AAAA,EAC7B;AAAA,IAAC;AAAA;AAAA,EAAI,GAA8B;AAAA,EACnC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAwB;AAAA,EAC7B;AAAA,IAAC;AAAA;AAAA,EAAI,GAA+B;AAAA;AAAA,EAEpC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAyB;AAAA,EAC9B;AAAA,IAAC;AAAA;AAAA,EAAI,GAA8B;AAAA,EACnC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAgC;AAAA,EACrC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAiC;AAAA,EACtC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAuB;AAAA,EAC5B;AAAA,IAAC;AAAA;AAAA,EAAI,GAAwB;AAAA;AAAA,EAE7B;AAAA,IAAC;AAAA;AAAA,EAAI,GAA6B;AAAA,EAClC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAqC;AAAA,EAC1C;AAAA,IAAC;AAAA;AAAA,EAAI,GAA2B;AAAA,EAChC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAsC;AAAA,EAC3C;AAAA,IAAC;AAAA;AAAA,EAAI,GAAgC;AAAA,EACrC;AAAA,IAAC;AAAA;AAAA,EAAI,GAA+B;AAAA,EACpC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAgC;AAAA;AAAA,EAErC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAwB;AAAA,EAC7B;AAAA,IAAC;AAAA;AAAA,EAAI,GAAgC;AAAA,EACrC;AAAA,IAAC;AAAA;AAAA,EAAI,GAA6B;AAAA,EAClC;AAAA,IAAC;AAAA;AAAA,EAAI,GAA+B;AAAA,EACpC;AAAA,IAAC;AAAA;AAAA,EAAI,GAA6B;AAAA,EAClC;AAAA,IAAC;AAAA;AAAA,EAAI,GAA8B;AAAA;AAAA,EAEnC;AAAA,IAAC;AAAA;AAAA,EAAI,GAA4B;AAAA,EACjC;AAAA,IAAC;AAAA;AAAA,EAAI,GAA8B;AAAA,EACnC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAwB;AAAA,EAC7B;AAAA,IAAC;AAAA;AAAA,EAAI,GAAkC;AAAA,EACvC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAiC;AAAA,EACtC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAiC;AAAA,EACtC;AAAA,IAAC;AAAA;AAAA,EAAI,GAA2B;AAAA;AAAA,EAEhC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAiC;AAAA,EACtC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAqC;AAAA,EAC1C;AAAA,IAAC;AAAA;AAAA,EAAI,GAAqC;AAAA,EAC1C;AAAA,IAAC;AAAA;AAAA,EAAI,GAAqC;AAAA,EAC1C;AAAA,IAAC;AAAA;AAAA,EAAI,GAAkC;AAAA,EACvC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAkC;AAAA;AAAA,EAEvC;AAAA,IAAC;AAAA;AAAA,EAAI,GAAiC;AAAA,EACtC;AAAA,IAAC;AAAA;AAAA,EAAI,GAA0B;AAAA,EAC/B;AAAA,IAAC;AAAA;AAAA,EAAI,GAA6B;AAAA,EAClC;AAAA,IAAC;AAAA;AAAA,EAAI,GAA8B;AACrC;AA8DA,IAAI,oBAAoB;AAAA;AAAA,EAEtB;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,OAAO,UAAU,MAAM;AAAA,IACvD,YAAY;AAAA,IACZ,UAAU,CAAC,gBAAgB,cAAc;AAAA,EAC7C;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,OAAO,MAAM,UAAU,UAAU,MAAM;AAAA,IACxD,YAAY;AAAA,IACZ,UAAU,CAAC,mBAAmB;AAAA,EAClC;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,OAAO,MAAM,UAAU,UAAU,MAAM;AAAA,IACxD,YAAY;AAAA,IACZ,UAAU,CAAC,gBAAgB;AAAA,EAC/B;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,OAAO,MAAM,UAAU,UAAU,MAAM;AAAA,IACxD,YAAY;AAAA,IACZ,UAAU,CAAC,gBAAgB;AAAA,EAC/B;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,OAAO,MAAM,UAAU,UAAU,KAAI;AAAA,MAC7C,EAAE,MAAM,SAAS,MAAM,UAAU,UAAU,KAAI;AAAA,MAC/C,EAAE,MAAM,UAAU,MAAM,UAAU,UAAU,MAAK;AAAA,IACvD;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,uBAAuB;AAAA,EACtC;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,UAAU,MAAM,OAAO,UAAU,MAAM,aAAa,OAA0B;AAAA,IAC5F;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,uBAAuB;AAAA,EACtC;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,OAAO,MAAM,UAAU,UAAU,KAAI;AAAA,MAC7C,EAAE,MAAM,UAAU,MAAM,UAAU,UAAU,KAAI;AAAA,MAChD,EAAE,MAAM,eAAe,MAAM,UAAU,UAAU,KAAI;AAAA,IAC3D;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,4BAA4B;AAAA,EAC3C;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,OAAO,MAAM,UAAU,UAAU,KAAI;AAAA,MAC7C,EAAE,MAAM,aAAa,MAAM,UAAU,UAAU,KAAI;AAAA,IACzD;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,qBAAqB;AAAA,EACpC;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,OAAO,MAAM,SAAS,UAAU,KAAI;AAAA,MAC5C,EAAE,MAAM,aAAa,MAAM,UAAU,UAAU,OAAO,cAAc,IAAG;AAAA,IAC7E;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,0BAA0B;AAAA,EACzC;AAAA;AAAA,EAEE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,OAAO,UAAU,MAAM;AAAA,IACvD,YAAY;AAAA,IACZ,UAAU,CAAC,iBAAiB;AAAA,EAChC;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,OAAO,UAAU,MAAM;AAAA,IACvD,YAAY;AAAA,IACZ,UAAU,CAAC,eAAe;AAAA,EAC9B;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,SAAS,MAAM,UAAU,UAAU,KAAI;AAAA,MAC/C,EAAE,MAAM,YAAY,MAAM,UAAU,UAAU,OAAO,cAAc,EAAC;AAAA,IAC1E;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,mBAAmB;AAAA,EAClC;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,UAAU,UAAU,MAAM;AAAA,IAC1D,YAAY;AAAA,IACZ,UAAU,CAAC,YAAY;AAAA,EAC3B;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,UAAU,UAAU,MAAM;AAAA,IAC1D,YAAY;AAAA,IACZ,UAAU,CAAC,WAAW;AAAA,EAC1B;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,UAAU,UAAU,MAAM;AAAA,IAC1D,YAAY;AAAA,IACZ,UAAU,CAAC,SAAS;AAAA,EACxB;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,UAAU,MAAM,UAAU,UAAU,MAAM,aAAa,OAA0B;AAAA,IAC/F;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,cAAc;AAAA,EAC7B;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,UAAU,MAAM,UAAU,UAAU,MAAM,aAAa,OAA0B;AAAA,IAC/F;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,cAAc;AAAA,EAC7B;AAAA;AAAA,EAEE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAA;AAAA,IACR,YAAY;AAAA,IACZ,UAAU,CAAC,OAAO;AAAA,EACtB;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,aAAa,MAAM,UAAU,UAAU,KAAI;AAAA,MACnD,EAAE,MAAM,UAAU,MAAM,UAAU,UAAU,OAAO,cAAc,aAAY;AAAA,IACnF;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,0CAA0C;AAAA,EACzD;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,WAAW,MAAM,UAAU,UAAU,KAAI;AAAA,MACjD,EAAE,MAAM,UAAU,MAAM,UAAU,UAAU,MAAK;AAAA,IACvD;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,yBAAyB;AAAA,EACxC;AAAA;AAAA,EAEE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,OAAO,MAAM,SAAS,UAAU,MAAM;AAAA,IACvD,YAAY;AAAA,IACZ,UAAU,CAAC,gBAAgB;AAAA,EAC/B;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,OAAO,MAAM,SAAS,UAAU,MAAM;AAAA,IACvD,YAAY;AAAA,IACZ,UAAU,CAAC,eAAe;AAAA,EAC9B;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,OAAO,MAAM,SAAS,UAAU,KAAI;AAAA,MAC5C,EAAE,MAAM,SAAS,MAAM,OAAO,UAAU,KAAI;AAAA,IAClD;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,sBAAsB;AAAA,EACrC;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,OAAO,MAAM,SAAS,UAAU,KAAI;AAAA,MAC5C,EAAE,MAAM,SAAS,MAAM,UAAU,UAAU,KAAI;AAAA,MAC/C,EAAE,MAAM,OAAO,MAAM,UAAU,UAAU,MAAK;AAAA,IACpD;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,wBAAwB;AAAA,EACvC;AAAA;AAAA,EAEE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,SAAS,MAAM,OAAO,UAAU,KAAI;AAAA,MAC5C,EAAE,MAAM,gBAAgB,MAAM,OAAO,UAAU,KAAI;AAAA,IACzD;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,2BAA2B;AAAA,EAC1C;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,aAAa,MAAM,WAAW,UAAU,KAAI;AAAA,MACpD,EAAE,MAAM,aAAa,MAAM,OAAO,UAAU,KAAI;AAAA,MAChD,EAAE,MAAM,cAAc,MAAM,OAAO,UAAU,KAAI;AAAA,IACvD;AAAA,IACI,YAAY;AAAA,IACZ,UAAU,CAAC,+BAAwD;AAAA,EACvE;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,OAAO,UAAU,MAAM;AAAA,IACvD,YAAY;AAAA,IACZ,UAAU,CAAC,eAAe,aAAa;AAAA,EAC3C;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,OAAO,UAAU,MAAM;AAAA,IACvD,YAAY;AAAA,IACZ,UAAU,CAAC,cAAc;AAAA,EAC7B;AAAA;AAAA,EAEE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,OAAO,MAAM,UAAU,UAAU,MAAM;AAAA,IACxD,YAAY;AAAA,IACZ,UAAU,CAAC,sBAAsB;AAAA,EACrC;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,OAAO,UAAU,MAAM;AAAA,IACvD,YAAY;AAAA,IACZ,UAAU,CAAC,sBAAsB;AAAA,EACrC;AACA;AACA,IAAI,yBAAyB,IAAI,IAAI,kBAAkB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AASzE,SAAS,oBAAoB,OAAO;AAClC,SAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,MAAM,mBAAmB,QAAQ,OAAO,MAAM,eAAe;AACrH;AAYA,IAAI,aAAa,CAAA;AACjB,SAAS,kBAAkB,WAAW;AACpC,QAAM,SAAS,WAAW;AAAA,IACxB,CAAC,MAAM,EAAE,SAAS,UAAU,QAAQ,EAAE,OAAO,UAAU;AAAA,EAC3D;AACE,MAAI,QAAQ;AACV,UAAM,IAAI,MAAM,kBAAkB,UAAU,IAAI,OAAO,UAAU,EAAE,iBAAiB;AAAA,EACtF;AACA,aAAW,KAAK,SAAS;AAC3B;AA2EA,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,SAAS,CAAC,SAAS;AACjB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,qBAAqB,KAAK,uBAAuB,CAAA;AAAA,MACjD,qBAAqB,KAAK,uBAAuB,CAAA;AAAA,IACvD;AAAA,EACE;AACF,CAAC;AACD,kBAAkB;AAAA,EAChB,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,YAAY,KAAK,WAAW,IAAI,CAAC,cAAS;AAxlBhD;AAwlBsD;AAAA,UAC9C,GAAG;AAAA;AAAA,UAEH,SAAQ,eAAU,WAAV,mBAAkB,IAAI,CAAC,WAAW;AAAA,YACxC,GAAG;AAAA;AAAA,YAEH,SAAS,MAAM,WAAW;AAAA,UACpC;AAAA,QACA;AAAA,OAAQ;AAAA,IACR;AAAA,EACE;AACF,CAAC;ACjmBD,IAAI,oBAAoB,cAAc,MAAM;AAAA,EAC1C,YAAY,MAAM,SAAS,SAAS,SAAS;AAC3C,UAAM,WAAW,cAAc,IAAI,KAAK,eAAe;AACvD,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,YAAY,KAAK,IAAG;AAAA,EAC3B;AAAA,EACA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,IACtB;AAAA,EACE;AACF;AACA,IAAI,gBAAgB,cAAc,kBAAkB;AAAA,EAClD,YAAY,SAAS,SAAS,SAAS;AACrC,UAAM,UAAU,gBAAgB,SAAS,SAAS,OAAO;AACzD,SAAK,OAAO;AAAA,EACd;AACF;AACA,IAAI,qBAAqB,cAAc,kBAAkB;AAAA,EACvD,YAAY,eAAe,kBAAkB,SAAS,OAAO,UAAU,qBAAqB,SAAS;AACnG,UAAM,MAAM,SAAS,EAAE,GAAG,SAAS,eAAe,kBAAkB;AACpE,SAAK,OAAO;AACZ,SAAK,gBAAgB;AACrB,SAAK,mBAAmB;AAAA,EAC1B;AACF;AACA,IAAI,iBAAiB,cAAc,kBAAkB;AAAA,EACnD,YAAY,eAAe,kBAAkB,cAAc,YAAY;AACrE;AAAA,MACE,UAAU;AAAA,MACV,8BAA8B,aAAa,IAAI,gBAAgB;AAAA,MAC/D,EAAE,cAAc,WAAU;AAAA,IAChC;AACI,SAAK,OAAO;AACZ,SAAK,gBAAgB;AACrB,SAAK,mBAAmB;AACxB,SAAK,eAAe;AACpB,SAAK,aAAa;AAAA,EACpB;AACF;AACA,IAAI,wBAAwB,cAAc,kBAAkB;AAAA,EAC1D,YAAY,eAAe,kBAAkB,QAAQ;AACnD,UAAM,UAAU,mBAAmB,aAAa,aAAa,IAAI,gBAAgB,eAAe;AAAA,MAC9F;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK;AACD,SAAK,OAAO;AACZ,SAAK,gBAAgB;AACrB,SAAK,mBAAmB;AACxB,SAAK,SAAS;AAAA,EAChB;AACF;AACA,IAAI,kBAAkB,cAAc,kBAAkB;AAAA,EACpD,YAAY,YAAY,SAAS,UAAU,SAAS;AAClD,UAAM,UAAU,SAAS,SAAS,EAAE,GAAG,SAAS,YAAY,UAAU;AACtE,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AACF;AA0BA,IAAI,aAAa,MAAM;AAAA,EACrB,YAAY,SAAS;AACnB,SAAK,QAAwB,oBAAI,IAAG;AACpC,SAAK,UAAU;AAAA,MACb,SAAS;AAAA,MACT,OAAO,EAAE,SAAS,MAAM,QAAQ,IAAG;AAAA,MACnC,GAAG;AAAA,IACT;AAAA,EACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAQ,SAAS,QAAQ;AD9GjC;AC+GI,UAAM,WAAW,KAAK,YAAY,SAAS,MAAM;AACjD,SAAI,UAAK,QAAQ,UAAb,mBAAoB,SAAS;AAC/B,YAAM,SAAS,KAAK,MAAM,IAAI,QAAQ;AACtC,UAAI,UAAU,KAAK,aAAa,OAAO,SAAS,GAAG;AACjD,aAAK,IAAI,SAAS,QAAQ,OAAO,oBAAoB;AACrD,eAAO,OAAO;AAAA,MAChB;AAAA,IACF;AACA,UAAM,YAAY,YAAY,IAAG;AACjC,QAAI;AACF,YAAM,MAAM,KAAK,gBAAgB,SAAS,MAAM;AAChD,YAAM,WAAW,MAAM,MAAM,KAAK;AAAA,QAChC,QAAQ;AAAA,QACR,SAAS,KAAK,aAAY;AAAA,MAClC,CAAO;AACD,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI;AAAA,UACR,2BAA2B,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,UACjE,EAAE,SAAS,QAAQ,SAAS,OAAM;AAAA,QAC5C;AAAA,MACM;AACA,YAAM,SAAS,MAAM,SAAS,KAAI;AAClC,UAAI,CAAC,KAAK,yBAAyB,MAAM,GAAG;AAC1C,cAAM,IAAI,cAAc,iCAAiC,EAAE,QAAO,CAAE;AAAA,MACtE;AACA,YAAM,OAAO,OAAO;AACpB,WAAI,UAAK,QAAQ,UAAb,mBAAoB,SAAS;AAC/B,aAAK,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,KAAK,IAAG,GAAI;AAAA,MAC1D;AACA,YAAM,WAAW,YAAY,IAAG,IAAK;AACrC,WAAK,IAAI,QAAQ,QAAQ,OAAO,gBAAgB,SAAS,QAAQ,CAAC,CAAC,IAAI;AACvE,aAAO;AAAA,IACT,SAAS,OAAO;AACd,UAAI,iBAAiB,eAAe;AAClC,cAAM;AAAA,MACR;AACA,YAAM,IAAI;AAAA,QACR,2BAA2B,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,QACnF,EAAE,QAAO;AAAA,MACjB;AAAA,IACI;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa;AACX,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAK,MAAM;AACX,SAAK,OAAO,KAAK,QAAQ;AACzB,aAAS,KAAK,YAAY,IAAI;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,SAAS;AAClB,QAAI,SAAS;AACX,iBAAW,OAAO,KAAK,MAAM,KAAI,GAAI;AACnC,YAAI,IAAI,WAAW,OAAO,GAAG;AAC3B,eAAK,MAAM,OAAO,GAAG;AAAA,QACvB;AAAA,MACF;AAAA,IACF,OAAO;AACL,WAAK,MAAM,MAAK;AAAA,IAClB;AAAA,EACF;AAAA,EACA,gBAAgB,SAAS,QAAQ;AAC/B,UAAM,MAAM,IAAI,IAAI,GAAG,KAAK,QAAQ,UAAU,eAAe;AAC7D,QAAI,aAAa,IAAI,WAAW,OAAO;AACvC,QAAI,KAAK,QAAQ,SAAS;AACxB,UAAI,aAAa,IAAI,WAAW,KAAK,QAAQ,OAAO;AAAA,IACtD;AACA,QAAI,KAAK,QAAQ,cAAc;AAC7B,UAAI,aAAa,IAAI,gBAAgB,KAAK,QAAQ,YAAY;AAAA,IAChE;AACA,QAAI,iCAAQ,KAAK;AACf,UAAI,aAAa,IAAI,OAAO,OAAO,GAAG;AAAA,IACxC;AACA,QAAI,iCAAQ,UAAU;AACpB,UAAI,aAAa,IAAI,YAAY,OAAO,QAAQ;AAAA,IAClD;AACA,WAAO,IAAI,SAAQ;AAAA,EACrB;AAAA,EACA,eAAe;AACb,UAAM,UAAU;AAAA,MACd,gBAAgB;AAAA,MAChB,GAAG,KAAK,QAAQ;AAAA,IACtB;AACI,QAAI,KAAK,QAAQ,WAAW;AAC1B,cAAQ,eAAe,IAAI,UAAU,KAAK,QAAQ,SAAS;AAAA,IAC7D;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY,SAAS,QAAQ;AAC3B,UAAM,QAAQ,CAAC,SAAS,KAAK,QAAQ,OAAO;AAC5C,QAAI,iCAAQ,IAAK,OAAM,KAAK,OAAO,GAAG;AACtC,QAAI,iCAAQ,SAAU,OAAM,KAAK,OAAO,QAAQ;AAChD,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB;AAAA,EACA,aAAa,WAAW;ADjN1B;ACkNI,UAAM,YAAU,UAAK,QAAQ,UAAb,mBAAoB,WAAU,OAAO;AACrD,WAAO,KAAK,QAAQ,YAAY;AAAA,EAClC;AAAA,EACA,yBAAyB,QAAQ;AAC/B,QAAI,CAAC,UAAU,OAAO,WAAW,SAAU,QAAO;AAClD,UAAM,IAAI;AACV,QAAI,CAAC,EAAE,QAAQ,OAAO,EAAE,SAAS,SAAU,QAAO;AAClD,UAAM,OAAO,EAAE;AACf,WAAO,OAAO,KAAK,YAAY,YAAY,OAAO,KAAK,kBAAkB,YAAY,KAAK,aAAa,UAAU,KAAK,aAAa;AAAA,EACrI;AAAA,EACA,IAAI,OAAO,SAAS;AAClB,QAAI,KAAK,QAAQ,QAAQ;AACvB,WAAK,QAAQ,OAAO,KAAK,EAAE,OAAO;AAAA,IACpC;AAAA,EACF;AACF;AAGA,IAAI,kBAAkB,MAAM;AAAA,EAC1B,YAAY,SAAS;AACnB,SAAK,mBAAmC,oBAAI,IAAG;AAC/C,SAAK,kBAAkC,oBAAI,IAAG;AAC9C,SAAK,UAAU;AAAA,MACb,WAAW;AAAA,MACX,aAAa;AAAA,MACb,SAAS;AAAA,MACT,mBAAmB,CAAA;AAAA,MACnB,GAAG;AAAA,IACT;AACI,SAAK,aAAa,IAAI,IAAI,KAAK,QAAQ,iBAAiB;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,KAAK,MAAM;AACf,UAAM,MAAM,KAAK,gBAAgB,KAAK,MAAM,KAAK,OAAO;AACxD,QAAI,KAAK,UAAU,KAAK,MAAM,KAAK,OAAO,GAAG;AAC3C,YAAM,IAAI,sBAAsB,KAAK,MAAM,KAAK,SAAS,sBAAsB;AAAA,IACjF;AACA,UAAM,SAAS,KAAK,iBAAiB,IAAI,GAAG;AAC5C,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AACA,UAAM,UAAU,KAAK,gBAAgB,IAAI,GAAG;AAC5C,QAAI,SAAS;AACX,aAAO;AAAA,IACT;AACA,UAAM,cAAc,KAAK,cAAc,IAAI;AAC3C,SAAK,gBAAgB,IAAI,KAAK,WAAW;AACzC,QAAI;AACF,YAAM,YAAY,MAAM;AACxB,WAAK,iBAAiB,IAAI,KAAK,SAAS;AACxC,aAAO;AAAA,IACT,UAAC;AACC,WAAK,gBAAgB,OAAO,GAAG;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,QAAQ,UAAU;AACtB,UAAM,UAA0B,oBAAI,IAAG;AACvC,UAAM,EAAE,cAAc,EAAC,IAAK,KAAK;AACjC,UAAM,aAAa,SAAS;AAC5B,aAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,aAAa;AACvD,YAAM,QAAQ,WAAW,MAAM,GAAG,IAAI,WAAW;AACjD,YAAM,gBAAgB,MAAM,IAAI,OAAO,SAAS;AAC9C,cAAM,MAAM,KAAK,gBAAgB,KAAK,MAAM,KAAK,OAAO;AACxD,cAAM,YAAY,YAAY,IAAG;AACjC,YAAI;AACF,gBAAM,SAAS,MAAM,KAAK,KAAK,IAAI;AACnC,kBAAQ,IAAI,KAAK;AAAA,YACf,MAAM,KAAK;AAAA,YACX,SAAS,KAAK;AAAA,YACd,QAAQ;AAAA,YACR,WAAW,OAAO;AAAA,YAClB,UAAU,YAAY,QAAQ;AAAA,UAC1C,CAAW;AAAA,QACH,SAAS,OAAO;AACd,gBAAM,SAAS,iBAAiB,wBAAwB,YAAY;AACpE,kBAAQ,IAAI,KAAK;AAAA,YACf,MAAM,KAAK;AAAA,YACX,SAAS,KAAK;AAAA,YACd;AAAA,YACA,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,YAChD,UAAU,YAAY,QAAQ;AAAA,UAC1C,CAAW;AACD,cAAI,KAAK,UAAU;AACjB,kBAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF,CAAC;AACD,YAAM,QAAQ,IAAI,aAAa;AAAA,IACjC;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ,OAAO;AACb,UAAM,QAAQ,CAAC,SAAS;AACtB,YAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,WAAK,MAAM;AACX,WAAK,KAAK;AACV,WAAK,OAAO,KAAK,WAAW,KAAK,QAAQ;AACzC,UAAI,KAAK,QAAQ,aAAa,KAAK,WAAW;AAC5C,aAAK,YAAY,KAAK;AACtB,aAAK,cAAc;AAAA,MACrB;AACA,eAAS,KAAK,YAAY,IAAI;AAAA,IAChC,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,MAAM,SAAS;AACtB,WAAO,KAAK,iBAAiB,IAAI,KAAK,gBAAgB,MAAM,OAAO,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,MAAM,SAAS;AACjB,WAAO,KAAK,iBAAiB,IAAI,KAAK,gBAAgB,MAAM,OAAO,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA,EAIA,UAAU,MAAM,SAAS;AACvB,WAAO,KAAK,WAAW,IAAI,GAAG,IAAI,IAAI,OAAO,EAAE,KAAK,KAAK,WAAW,IAAI,IAAI;AAAA,EAC9E;AAAA;AAAA;AAAA;AAAA,EAIA,kBAAkB,SAAS;AACzB,SAAK,aAAa,IAAI,IAAI,OAAO;AAAA,EACnC;AAAA,EACA,MAAM,cAAc,MAAM;AACxB,UAAM,YAAY,YAAY,IAAG;AACjC,UAAM,MAAM,KAAK,WAAW,KAAK,QAAQ;AACzC,SAAK,IAAI,SAAS,qBAAqB,KAAK,IAAI,IAAI,KAAK,OAAO,EAAE;AAClE,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,iBAAiB,GAAG;AAChD,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI;AAAA,UACR,KAAK;AAAA,UACL,KAAK;AAAA,UACL,8BAA8B,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QAC9E;AAAA,MACM;AACA,YAAM,UAAU,MAAM,SAAS,KAAI;AACnC,UAAI,KAAK,QAAQ,aAAa,KAAK,WAAW;AAC5C,cAAM,KAAK,kBAAkB,MAAM,OAAO;AAAA,MAC5C;AACA,YAAM,YAAY,MAAM,KAAK,cAAc,SAAS,IAAI;AACxD,YAAM,WAAW,YAAY,IAAG,IAAK;AACrC,WAAK,IAAI,QAAQ,aAAa,KAAK,IAAI,IAAI,KAAK,OAAO,cAAc,SAAS,QAAQ,CAAC,CAAC,IAAI;AAC5F,aAAO;AAAA,QACL,MAAM,KAAK;AAAA,QACX,SAAS,KAAK;AAAA,QACd;AAAA,QACA;AAAA,MACR;AAAA,IACI,SAAS,OAAO;AACd,UAAI,iBAAiB,sBAAsB,iBAAiB,kBAAkB,iBAAiB,uBAAuB;AACpH,cAAM;AAAA,MACR;AACA,YAAM,IAAI;AAAA,QACR,KAAK;AAAA,QACL,KAAK;AAAA,QACL,6BAA6B,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,MAC7F;AAAA,IACI;AAAA,EACF;AAAA,EACA,MAAM,iBAAiB,KAAK;AAC1B,UAAM,aAAa,IAAI,gBAAe;AACtC,UAAM,UAAU,WAAW,MAAM,WAAW,MAAK,GAAI,KAAK,QAAQ,OAAO;AACzE,QAAI;AACF,aAAO,MAAM,MAAM,KAAK;AAAA,QACtB,QAAQ,WAAW;AAAA,QACnB,aAAa;AAAA,MACrB,CAAO;AAAA,IACH,UAAC;AACC,mBAAa,OAAO;AAAA,IACtB;AAAA,EACF;AAAA,EACA,MAAM,kBAAkB,MAAM,SAAS;AACrC,QAAI,CAAC,KAAK,UAAW;AACrB,UAAM,CAAC,WAAW,YAAY,IAAI,KAAK,UAAU,MAAM,GAAG;AAC1D,QAAI,CAAC,aAAa,CAAC,cAAc;AAC/B,YAAM,IAAI,eAAe,KAAK,MAAM,KAAK,SAAS,KAAK,WAAW,gBAAgB;AAAA,IACpF;AACA,UAAM,aAAa,MAAM,OAAO,OAAO;AAAA,MACrC,UAAU,YAAW;AAAA,MACrB,IAAI,YAAW,EAAG,OAAO,OAAO;AAAA,IACtC;AACI,UAAM,YAAY,MAAM,KAAK,IAAI,WAAW,UAAU,CAAC;AACvD,UAAM,aAAa,KAAK,OAAO,aAAa,GAAG,SAAS,CAAC;AACzD,QAAI,eAAe,cAAc;AAC/B,YAAM,IAAI,eAAe,KAAK,MAAM,KAAK,SAAS,cAAc,UAAU;AAAA,IAC5E;AAAA,EACF;AAAA,EACA,MAAM,cAAc,SAAS,MAAM;AACjC,UAAM,OAAO,IAAI,KAAK,CAAC,OAAO,GAAG,EAAE,MAAM,0BAA0B;AACnE,UAAM,UAAU,IAAI,gBAAgB,IAAI;AACxC,QAAI;AACF,YAAM,SAAS,MAAM;AAAA;AAAA,QAEnB;AAAA;AAEF,YAAM,YAAY,OAAO,WAAW,OAAO,KAAK,IAAI,KAAK,OAAO;AAChE,UAAI,CAAC,WAAW;AACd,cAAM,IAAI;AAAA,UACR,KAAK;AAAA,UACL,KAAK;AAAA,UACL;AAAA,QACV;AAAA,MACM;AACA,aAAO;AAAA,IACT,UAAC;AACC,UAAI,gBAAgB,OAAO;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,WAAW,UAAU;AACnB,QAAI,SAAS,WAAW,SAAS,KAAK,SAAS,WAAW,UAAU,GAAG;AACrE,aAAO;AAAA,IACT;AACA,WAAO,GAAG,KAAK,QAAQ,UAAU,IAAI,SAAS,QAAQ,OAAO,EAAE,CAAC;AAAA,EAClE;AAAA,EACA,gBAAgB,MAAM,SAAS;AAC7B,WAAO,GAAG,IAAI,IAAI,OAAO;AAAA,EAC3B;AAAA,EACA,IAAI,OAAO,SAAS;AAClB,QAAI,KAAK,QAAQ,QAAQ;AACvB,WAAK,QAAQ,OAAO,KAAK,EAAE,OAAO;AAAA,IACpC;AAAA,EACF;AACF;AAGA,IAAI,cAAc,MAAM;AAAA,EACtB,YAAY,SAAS;AACnB,SAAK,oBAAoC,oBAAI,IAAG;AAChD,SAAK,kBAAkC,oBAAI,IAAG;AAC9C,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgB;AACd,UAAM,WAAW,CAAC,GAAG,KAAK,QAAQ,UAAU,GAAG,KAAK,QAAQ,QAAQ;AACpE,aAAS,QAAQ,CAAC,SAAS,KAAK,WAAW,IAAI,CAAC;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,MAAM;AACf,QAAI,KAAK,kBAAkB,IAAI,IAAI,EAAG;AACtC,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAK,MAAM;AACX,SAAK,OAAO,KAAK,WAAW,MAAM,IAAI,OAAO,WAAW,IAAI;AAC5D,SAAK,cAAc;AACnB,aAAS,KAAK,YAAY,IAAI;AAC9B,SAAK,kBAAkB,IAAI,IAAI;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAIA,YAAY,MAAM;AAChB,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAK,MAAM;AACX,SAAK,OAAO,KAAK,WAAW,MAAM,IAAI,OAAO,WAAW,IAAI;AAC5D,aAAS,KAAK,YAAY,IAAI;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAIA,cAAc,KAAK,WAAW;AAC5B,QAAI,KAAK,gBAAgB,IAAI,GAAG,EAAG;AACnC,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAK,MAAM;AACX,SAAK,KAAK;AACV,SAAK,OAAO;AACZ,QAAI,WAAW;AACb,WAAK,YAAY;AACjB,WAAK,cAAc;AAAA,IACrB;AACA,aAAS,KAAK,YAAY,IAAI;AAC9B,SAAK,gBAAgB,IAAI,GAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,KAAK,WAAW;AAC3B,QAAI,KAAK,gBAAgB,IAAI,GAAG,EAAG;AACnC,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAK,MAAM;AACX,SAAK,KAAK;AACV,SAAK,OAAO;AACZ,QAAI,WAAW;AACb,WAAK,YAAY;AACjB,WAAK,cAAc;AAAA,IACrB;AACA,aAAS,KAAK,YAAY,IAAI;AAC9B,SAAK,gBAAgB,IAAI,GAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,KAAK;AAChB,QAAI,KAAK,gBAAgB,IAAI,GAAG,EAAG;AACnC,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAK,MAAM;AACX,SAAK,KAAK;AACV,SAAK,OAAO;AACZ,aAAS,KAAK,YAAY,IAAI;AAC9B,SAAK,gBAAgB,IAAI,GAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,KAAK,IAAI;AAChB,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAK,MAAM;AACX,SAAK,OAAO;AACZ,QAAI,GAAI,MAAK,KAAK;AAClB,aAAS,KAAK,YAAY,IAAI;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAIA,eAAe,KAAK,WAAW;AAC7B,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,WAAK,MAAM;AACX,WAAK,OAAO;AACZ,UAAI,WAAW;AACb,aAAK,YAAY;AACjB,aAAK,cAAc;AAAA,MACrB;AACA,WAAK,SAAS,MAAM,QAAO;AAC3B,WAAK,UAAU,MAAM,OAAO,IAAI,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAC1E,eAAS,KAAK,YAAY,IAAI;AAAA,IAChC,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,KAAK,WAAW;AACzB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,aAAO,MAAM;AACb,aAAO,QAAQ;AACf,UAAI,WAAW;AACb,eAAO,YAAY;AACnB,eAAO,cAAc;AAAA,MACvB;AACA,aAAO,SAAS,MAAM,QAAO;AAC7B,aAAO,UAAU,MAAM,OAAO,IAAI,MAAM,0BAA0B,GAAG,EAAE,CAAC;AACxE,eAAS,KAAK,YAAY,MAAM;AAAA,IAClC,CAAC;AAAA,EACH;AACF;AAGA,IAAI,eAAe,MAAM;AAAA,EACvB,cAAc;AACZ,SAAK,YAA4B,oBAAI,IAAG;AACxC,SAAK,QAAQ,KAAK,mBAAkB;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AACT,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AACT,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,OAAO;AACd,SAAK,SAAS,EAAE,OAAO;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ,MAAM;AACZ,SAAK,SAAS;AAAA,MACZ;AAAA,MACA,WAAW,KAAK,SAAS,KAAK,aAAa,CAAA;AAAA,IACjD,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,OAAO;AACd,SAAK,SAAS;AAAA,MACZ,OAAO;AAAA,MACP;AAAA,IACN,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,YAAY,KAAK;AACf,WAAO,KAAK,MAAM,UAAU,GAAG;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAIA,YAAY,KAAK,OAAO;AACtB,SAAK,SAAS;AAAA,MACZ,WAAW;AAAA,QACT,GAAG,KAAK,MAAM;AAAA,QACd,CAAC,GAAG,GAAG;AAAA,MACf;AAAA,IACA,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,WAAW;AACtB,SAAK,SAAS;AAAA,MACZ,WAAW;AAAA,QACT,GAAG,KAAK,MAAM;AAAA,QACd,GAAG;AAAA,MACX;AAAA,IACA,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,SAAS;AAChB,WAAO,KAAK,MAAM,QAAQ,OAAO;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,SAAS,MAAM;AACtB,SAAK,SAAS;AAAA,MACZ,SAAS;AAAA,QACP,GAAG,KAAK,MAAM;AAAA,QACd,CAAC,OAAO,GAAG;AAAA,MACnB;AAAA,IACA,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,mBAAmB,KAAK,QAAQ;AAC9B,UAAM,aAAa,IAAI,IAAI,KAAK,MAAM,UAAU;AAChD,eAAW,IAAI,KAAK,MAAM;AAC1B,SAAK,SAAS,EAAE,YAAY;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAIA,eAAe;AACb,SAAK,SAAS,EAAE,WAAW,KAAI,CAAE;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAIA,UAAU,UAAU;AAClB,SAAK,UAAU,IAAI,QAAQ;AAC3B,WAAO,MAAM;AACX,WAAK,UAAU,OAAO,QAAQ;AAAA,IAChC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ;AACN,SAAK,QAAQ,KAAK,mBAAkB;AACpC,SAAK,gBAAe;AAAA,EACtB;AAAA,EACA,SAAS,SAAS;AAChB,SAAK,QAAQ,EAAE,GAAG,KAAK,OAAO,GAAG,QAAO;AACxC,SAAK,gBAAe;AAAA,EACtB;AAAA,EACA,kBAAkB;AAChB,SAAK,UAAU,QAAQ,CAAC,aAAa;AACnC,UAAI;AACF,iBAAS,KAAK,KAAK;AAAA,MACrB,SAAS,OAAO;AACd,gBAAQ,MAAM,yBAAyB,KAAK;AAAA,MAC9C;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,qBAAqB;AACnB,WAAO;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,WAAW,CAAA;AAAA,MACX,SAAS,CAAA;AAAA,MACT,YAA4B,oBAAI,IAAG;AAAA,MACnC,OAAO;AAAA,MACP,WAAW;AAAA,IACjB;AAAA,EACE;AACF;AAGA,IAAI,WAAW,MAAM;AAAA,EACnB,YAAY,UAAU,IAAI;AACxB,SAAK,WAA2B,oBAAI,IAAG;AACvC,SAAK,UAAU;AAAA,MACb,OAAO;AAAA,MACP,cAAc;AAAA,MACd,GAAG;AAAA,IACT;AAAA,EACE;AAAA;AAAA;AAAA;AAAA,EAIA,KAAK,OAAO;AACV,QAAI,KAAK,QAAQ,OAAO;AACtB,WAAK,IAAI,SAAS,kBAAkB,MAAM,IAAI,IAAI,KAAK;AAAA,IACzD;AACA,UAAM,WAAW,KAAK,SAAS,IAAI,MAAM,IAAI;AAC7C,QAAI,CAAC,SAAU;AACf,aAAS,QAAQ,CAAC,YAAY;AAC5B,UAAI;AACF,gBAAQ,KAAK;AAAA,MACf,SAAS,OAAO;AACd,aAAK,IAAI,SAAS,8BAA8B,MAAM,IAAI,KAAK,KAAK;AAAA,MACtE;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,GAAG,MAAM,SAAS;AAChB,QAAI,WAAW,KAAK,SAAS,IAAI,IAAI;AACrC,QAAI,CAAC,UAAU;AACb,iBAA2B,oBAAI,IAAG;AAClC,WAAK,SAAS,IAAI,MAAM,QAAQ;AAAA,IAClC;AACA,QAAI,SAAS,SAAS,KAAK,QAAQ,gBAAgB,MAAM;AACvD,WAAK,IAAI,QAAQ,kBAAkB,KAAK,QAAQ,YAAY,wBAAwB,IAAI,EAAE;AAAA,IAC5F;AACA,aAAS,IAAI,OAAO;AACpB,WAAO,MAAM;AACX,2CAAU,OAAO;AACjB,WAAI,qCAAU,UAAS,GAAG;AACxB,aAAK,SAAS,OAAO,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,MAAM,SAAS;AACjB,UAAM,WAAW,KAAK,SAAS,IAAI,IAAI;AACvC,QAAI,UAAU;AACZ,eAAS,OAAO,OAAO;AACvB,UAAI,SAAS,SAAS,GAAG;AACvB,aAAK,SAAS,OAAO,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,KAAK,MAAM,SAAS;AAClB,UAAM,iBAAiB,CAAC,UAAU;AAChC,kBAAW;AACX,cAAQ,KAAK;AAAA,IACf;AACA,UAAM,cAAc,KAAK,GAAG,MAAM,cAAc;AAChD,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,MAAM;AACV,QAAI,MAAM;AACR,WAAK,SAAS,OAAO,IAAI;AAAA,IAC3B,OAAO;AACL,WAAK,SAAS,MAAK;AAAA,IACrB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,cAAc,MAAM;AD/xBtB;ACgyBI,aAAO,UAAK,SAAS,IAAI,IAAI,MAAtB,mBAAyB,SAAQ;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,YAAY,MAAM,MAAM,SAAS;AACtC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,WAAW,KAAK,IAAG;AAAA,MACnB;AAAA,IACN;AAAA,EACE;AAAA,EACA,IAAI,OAAO,YAAY,MAAM;AAC3B,QAAI,KAAK,QAAQ,QAAQ;AACvB,WAAK,QAAQ,OAAO,KAAK,EAAE,SAAS,GAAG,IAAI;AAAA,IAC7C,WAAW,KAAK,QAAQ,OAAO;AAC7B,cAAQ,KAAK,EAAE,cAAc,OAAO,IAAI,GAAG,IAAI;AAAA,IACjD;AAAA,EACF;AACF;AA+FA,IAAI,QAAQ,MAAM;AAAA,EAChB,YAAY,OAAO;AACjB,SAAK,MAAM;AACX,SAAK,SAAS,CAAA;AACd,SAAK,QAAQ;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AACT,SAAK,MAAM;AACX,SAAK,SAAS,CAAA;AACd,WAAO,KAAK,MAAM,KAAK,MAAM,QAAQ;AACnC,WAAK,eAAc;AACnB,UAAI,KAAK,OAAO,KAAK,MAAM,OAAQ;AACnC,YAAM,QAAQ,KAAK,UAAS;AAC5B,UAAI,OAAO;AACT,aAAK,OAAO,KAAK,KAAK;AAAA,MACxB;AAAA,IACF;AACA,SAAK,OAAO,KAAK;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO,KAAK,MAAM;AAAA,MAClB,KAAK,KAAK,MAAM;AAAA,IACtB,CAAK;AACD,WAAO,KAAK;AAAA,EACd;AAAA,EACA,YAAY;AACV,UAAM,OAAO,KAAK,MAAM,KAAK,GAAG;AAChC,UAAM,QAAQ,KAAK;AACnB,QAAI,KAAK,QAAQ,IAAI,KAAK,SAAS,OAAO,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,GAAG;AACpE,aAAO,KAAK,WAAU;AAAA,IACxB;AACA,QAAI,SAAS,OAAO,SAAS,KAAK;AAChC,aAAO,KAAK,WAAW,IAAI;AAAA,IAC7B;AACA,QAAI,KAAK,kBAAkB,IAAI,GAAG;AAChC,aAAO,KAAK,eAAc;AAAA,IAC5B;AACA,UAAM,WAAW,KAAK,aAAY;AAClC,QAAI,UAAU;AACZ,aAAO;AAAA,IACT;AACA,YAAQ,MAAI;AAAA,MACV,KAAK;AACH,aAAK;AACL,eAAO,EAAE,MAAM,OAAO,OAAO,KAAK,OAAO,KAAK,KAAK,IAAG;AAAA,MACxD,KAAK;AACH,aAAK;AACL,eAAO,EAAE,MAAM,YAAY,OAAO,KAAK,OAAO,KAAK,KAAK,IAAG;AAAA,MAC7D,KAAK;AACH,aAAK;AACL,eAAO,EAAE,MAAM,YAAY,OAAO,KAAK,OAAO,KAAK,KAAK,IAAG;AAAA,MAC7D,KAAK;AACH,aAAK;AACL,eAAO,EAAE,MAAM,UAAU,OAAO,KAAK,OAAO,KAAK,KAAK,IAAG;AAAA,MAC3D,KAAK;AACH,aAAK;AACL,eAAO,EAAE,MAAM,UAAU,OAAO,KAAK,OAAO,KAAK,KAAK,IAAG;AAAA,MAC3D,KAAK;AACH,aAAK;AACL,eAAO,EAAE,MAAM,SAAS,OAAO,KAAK,OAAO,KAAK,KAAK,IAAG;AAAA,MAC1D,KAAK;AACH,aAAK;AACL,eAAO,EAAE,MAAM,YAAY,OAAO,KAAK,OAAO,KAAK,KAAK,IAAG;AAAA,MAC7D,KAAK;AACH,aAAK;AACL,eAAO,EAAE,MAAM,SAAS,OAAO,KAAK,OAAO,KAAK,KAAK,IAAG;AAAA,IAChE;AACI,UAAM,IAAI,MAAM,yBAAyB,IAAI,iBAAiB,KAAK,GAAG,EAAE;AAAA,EAC1E;AAAA,EACA,aAAa;AACX,UAAM,QAAQ,KAAK;AACnB,QAAI,QAAQ;AACZ,QAAI,KAAK,MAAM,KAAK,GAAG,MAAM,KAAK;AAChC,eAAS;AACT,WAAK;AAAA,IACP;AACA,WAAO,KAAK,QAAQ,KAAK,MAAM,KAAK,GAAG,CAAC,GAAG;AACzC,eAAS,KAAK,MAAM,KAAK,GAAG;AAC5B,WAAK;AAAA,IACP;AACA,QAAI,KAAK,MAAM,KAAK,GAAG,MAAM,OAAO,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,GAAG;AAC9D,eAAS;AACT,WAAK;AACL,aAAO,KAAK,QAAQ,KAAK,MAAM,KAAK,GAAG,CAAC,GAAG;AACzC,iBAAS,KAAK,MAAM,KAAK,GAAG;AAC5B,aAAK;AAAA,MACP;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,WAAW,KAAK;AAAA,MACvB;AAAA,MACA,KAAK,KAAK;AAAA,IAChB;AAAA,EACE;AAAA,EACA,WAAW,OAAO;AAChB,UAAM,QAAQ,KAAK;AACnB,SAAK;AACL,QAAI,QAAQ;AACZ,WAAO,KAAK,MAAM,KAAK,MAAM,UAAU,KAAK,MAAM,KAAK,GAAG,MAAM,OAAO;AACrE,UAAI,KAAK,MAAM,KAAK,GAAG,MAAM,MAAM;AACjC,aAAK;AACL,cAAM,UAAU,KAAK,MAAM,KAAK,GAAG;AACnC,gBAAQ,SAAO;AAAA,UACb,KAAK;AACH,qBAAS;AACT;AAAA,UACF,KAAK;AACH,qBAAS;AACT;AAAA,UACF,KAAK;AACH,qBAAS;AACT;AAAA,UACF,KAAK;AACH,qBAAS;AACT;AAAA,UACF,KAAK;AACH,qBAAS;AACT;AAAA,UACF,KAAK;AACH,qBAAS;AACT;AAAA,UACF;AACE,qBAAS;AAAA,QACrB;AAAA,MACM,OAAO;AACL,iBAAS,KAAK,MAAM,KAAK,GAAG;AAAA,MAC9B;AACA,WAAK;AAAA,IACP;AACA,QAAI,KAAK,MAAM,KAAK,GAAG,MAAM,OAAO;AAClC,YAAM,IAAI,MAAM,mCAAmC,KAAK,EAAE;AAAA,IAC5D;AACA,SAAK;AACL,WAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,KAAK,KAAK;AAAA,IAChB;AAAA,EACE;AAAA,EACA,iBAAiB;AACf,UAAM,QAAQ,KAAK;AACnB,QAAI,QAAQ;AACZ,WAAO,KAAK,MAAM,KAAK,MAAM,UAAU,KAAK,iBAAiB,KAAK,MAAM,KAAK,GAAG,CAAC,GAAG;AAClF,eAAS,KAAK,MAAM,KAAK,GAAG;AAC5B,WAAK;AAAA,IACP;AACA,QAAI,UAAU,QAAQ;AACpB,aAAO,EAAE,MAAM,WAAW,OAAO,MAAM,OAAO,KAAK,KAAK,IAAG;AAAA,IAC7D;AACA,QAAI,UAAU,SAAS;AACrB,aAAO,EAAE,MAAM,WAAW,OAAO,OAAO,OAAO,KAAK,KAAK,IAAG;AAAA,IAC9D;AACA,QAAI,UAAU,QAAQ;AACpB,aAAO,EAAE,MAAM,QAAQ,OAAO,MAAM,OAAO,KAAK,KAAK,IAAG;AAAA,IAC1D;AACA,WAAO,EAAE,MAAM,cAAc,OAAO,OAAO,KAAK,KAAK,IAAG;AAAA,EAC1D;AAAA,EACA,eAAe;AACb,UAAM,QAAQ,KAAK;AACnB,UAAM,UAAU,KAAK,MAAM,MAAM,KAAK,KAAK,KAAK,MAAM,CAAC;AACvD,UAAM,UAAU,KAAK,MAAM,KAAK,GAAG;AACnC,UAAM,aAAa,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAC5D,QAAI,WAAW,SAAS,OAAO,GAAG;AAChC,WAAK,OAAO;AACZ,aAAO,EAAE,MAAM,YAAY,OAAO,SAAS,OAAO,KAAK,KAAK,IAAG;AAAA,IACjE;AACA,UAAM,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAC1D,QAAI,WAAW,SAAS,OAAO,GAAG;AAChC,WAAK;AACL,aAAO,EAAE,MAAM,YAAY,OAAO,SAAS,OAAO,KAAK,KAAK,IAAG;AAAA,IACjE;AACA,WAAO;AAAA,EACT;AAAA,EACA,iBAAiB;AACf,WAAO,KAAK,MAAM,KAAK,MAAM,UAAU,KAAK,KAAK,KAAK,MAAM,KAAK,GAAG,CAAC,GAAG;AACtE,WAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,QAAQ,MAAM;AACZ,WAAO,QAAQ,KAAK,IAAI;AAAA,EAC1B;AAAA,EACA,kBAAkB,MAAM;AACtB,WAAO,aAAa,KAAK,IAAI;AAAA,EAC/B;AAAA,EACA,iBAAiB,MAAM;AACrB,WAAO,gBAAgB,KAAK,IAAI;AAAA,EAClC;AAAA,EACA,KAAK,SAAS,GAAG;AACf,WAAO,KAAK,MAAM,KAAK,MAAM,MAAM,KAAK;AAAA,EAC1C;AACF;AAIA,IAAI,aAAa;AAAA,EACf,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;AACA,IAAI,SAAS,MAAM;AAAA,EACjB,YAAY,QAAQ;AAClB,SAAK,MAAM;AACX,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ;AACN,UAAM,SAAS,KAAK,gBAAe;AACnC,QAAI,KAAK,UAAU,SAAS,OAAO;AACjC,YAAM,IAAI,MAAM,qBAAqB,KAAK,QAAO,EAAG,KAAK,iBAAiB,KAAK,UAAU,KAAK,EAAE;AAAA,IAClG;AACA,WAAO;AAAA,EACT;AAAA,EACA,kBAAkB;AAChB,WAAO,KAAK,aAAY;AAAA,EAC1B;AAAA,EACA,eAAe;AACb,UAAM,OAAO,KAAK,YAAY,CAAC;AAC/B,QAAI,KAAK,UAAU,SAAS,YAAY;AACtC,WAAK,QAAO;AACZ,YAAM,aAAa,KAAK,gBAAe;AACvC,WAAK,OAAO,OAAO;AACnB,YAAM,YAAY,KAAK,gBAAe;AACtC,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAK;AAAA,MACb;AAAA,IACI;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY,eAAe;AACzB,QAAI,OAAO,KAAK,WAAU;AAC1B,WAAO,MAAM;AACX,YAAM,QAAQ,KAAK,QAAO;AAC1B,UAAI,MAAM,SAAS,WAAY;AAC/B,YAAM,aAAa,WAAW,MAAM,KAAK;AACzC,UAAI,eAAe,UAAU,aAAa,cAAe;AACzD,WAAK,QAAO;AACZ,YAAM,QAAQ,KAAK,YAAY,aAAa,CAAC;AAC7C,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,QAChB;AAAA,QACA;AAAA,QACA,KAAK;AAAA,MACb;AAAA,IACI;AACA,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,UAAM,QAAQ,KAAK,QAAO;AAC1B,QAAI,MAAM,SAAS,eAAe,MAAM,UAAU,OAAO,MAAM,UAAU,MAAM;AAC7E,WAAK,QAAO;AACZ,YAAM,WAAW,KAAK,WAAU;AAChC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,QAChB;AAAA,QACA,KAAK;AAAA,MACb;AAAA,IACI;AACA,WAAO,KAAK,aAAY;AAAA,EAC1B;AAAA,EACA,eAAe;AACb,QAAI,OAAO,KAAK,aAAY;AAC5B,WAAO,MAAM;AACX,YAAM,QAAQ,KAAK,QAAO;AAC1B,UAAI,MAAM,SAAS,OAAO;AACxB,aAAK,QAAO;AACZ,cAAM,YAAY,KAAK,OAAO,YAAY;AAC1C,eAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,UAAU,UAAU;AAAA,UACpB,UAAU;AAAA,UACV,KAAK;AAAA,QACf;AAAA,MACM,WAAW,MAAM,SAAS,YAAY;AACpC,aAAK,QAAO;AACZ,cAAMA,SAAQ,KAAK,gBAAe;AAClC,aAAK,OAAO,UAAU;AACtB,eAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,UAAUA;AAAA,UACV,UAAU;AAAA,UACV,KAAK;AAAA,QACf;AAAA,MACM,WAAW,MAAM,SAAS,YAAY,KAAK,SAAS,cAAc;AAChE,cAAM,SAAS,KAAK;AACpB,YAAI,CAAC,uBAAuB,IAAI,MAAM,GAAG;AACvC,gBAAM,IAAI,MAAM,qBAAqB,MAAM,iBAAiB,MAAM,KAAK,EAAE;AAAA,QAC3E;AACA,aAAK,QAAO;AACZ,cAAM,OAAO,KAAK,eAAc;AAChC,aAAK,OAAO,QAAQ;AACpB,eAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,UACA,WAAW;AAAA,UACX,KAAK;AAAA,QACf;AAAA,MACM,OAAO;AACL;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,eAAe;AACb,UAAM,QAAQ,KAAK,QAAO;AAC1B,QAAI,MAAM,SAAS,YAAY,MAAM,SAAS,YAAY,MAAM,SAAS,aAAa,MAAM,SAAS,QAAQ;AAC3G,WAAK,QAAO;AACZ,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,MAAM;AAAA,QACb,OAAO,MAAM;AAAA,QACb,KAAK,MAAM;AAAA,QACX,KAAK;AAAA,MACb;AAAA,IACI;AACA,QAAI,MAAM,SAAS,cAAc;AAC/B,WAAK,QAAO;AACZ,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM,MAAM;AAAA,QACZ,OAAO,MAAM;AAAA,QACb,KAAK,MAAM;AAAA,QACX,KAAK;AAAA,MACb;AAAA,IACI;AACA,QAAI,MAAM,SAAS,YAAY;AAC7B,aAAO,KAAK,WAAU;AAAA,IACxB;AACA,QAAI,MAAM,SAAS,UAAU;AAC3B,WAAK,QAAO;AACZ,YAAM,OAAO,KAAK,gBAAe;AACjC,WAAK,OAAO,QAAQ;AACpB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,MAAM,qBAAqB,MAAM,KAAK,iBAAiB,MAAM,KAAK,EAAE;AAAA,EAChF;AAAA,EACA,aAAa;AACX,UAAM,QAAQ,KAAK,QAAO,EAAG;AAC7B,SAAK,QAAO;AACZ,UAAM,WAAW,CAAA;AACjB,WAAO,KAAK,UAAU,SAAS,YAAY;AACzC,eAAS,KAAK,KAAK,iBAAiB;AACpC,UAAI,KAAK,UAAU,SAAS,SAAS;AACnC,aAAK,QAAO;AAAA,MACd,OAAO;AACL;AAAA,MACF;AAAA,IACF;AACA,UAAM,MAAM,KAAK,QAAO,EAAG;AAC3B,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK;AAAA,IACX;AAAA,EACE;AAAA,EACA,iBAAiB;AACf,UAAM,OAAO,CAAA;AACb,QAAI,KAAK,UAAU,SAAS,UAAU;AACpC,WAAK,KAAK,KAAK,iBAAiB;AAChC,aAAO,KAAK,UAAU,SAAS,SAAS;AACtC,aAAK,QAAO;AACZ,aAAK,KAAK,KAAK,iBAAiB;AAAA,MAClC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,UAAU;AACR,WAAO,KAAK,OAAO,KAAK,GAAG;AAAA,EAC7B;AAAA,EACA,UAAU;AACR,WAAO,KAAK,OAAO,KAAK,KAAK;AAAA,EAC/B;AAAA,EACA,OAAO,MAAM;AACX,UAAM,QAAQ,KAAK,QAAO;AAC1B,QAAI,MAAM,SAAS,MAAM;AACvB,YAAM,IAAI,MAAM,aAAa,IAAI,cAAc,MAAM,IAAI,iBAAiB,MAAM,KAAK,EAAE;AAAA,IACzF;AACA,WAAO,KAAK,QAAO;AAAA,EACrB;AACF;AAGA,IAAI,mBAAmB;AAAA;AAAA,EAErB,KAAK,CAAC,UAAU;AACd,QAAI,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AACrD,aAAO,MAAM;AAAA,IACf;AACA,WAAO;AAAA,EACT;AAAA,EACA,MAAM,CAAC,QAAQ;AACb,WAAO,OAAO,OAAO,EAAE,EAAE,KAAI;AAAA,EAC/B;AAAA,EACA,OAAO,CAAC,QAAQ;AACd,WAAO,OAAO,OAAO,EAAE,EAAE,YAAW;AAAA,EACtC;AAAA,EACA,OAAO,CAAC,QAAQ;AACd,WAAO,OAAO,OAAO,EAAE,EAAE,YAAW;AAAA,EACtC;AAAA,EACA,QAAQ,CAAC,KAAK,OAAO,WAAW;AAC9B,UAAM,IAAI,OAAO,OAAO,EAAE;AAC1B,UAAM,WAAW,OAAO,KAAK,KAAK;AAClC,UAAM,YAAY,WAAW,SAAS,OAAO,MAAM,IAAI;AACvD,WAAO,EAAE,UAAU,UAAU,cAAc,SAAS,WAAW,YAAY,MAAM;AAAA,EACnF;AAAA,EACA,QAAQ,IAAI,SAAS;AACnB,WAAO,KAAK,IAAI,CAAC,MAAM,OAAO,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;AAAA,EACjD;AAAA,EACA,SAAS,CAAC,KAAK,QAAQ,gBAAgB;AACrC,WAAO,OAAO,OAAO,EAAE,EAAE,MAAM,OAAO,MAAM,CAAC,EAAE,KAAK,OAAO,WAAW,CAAC;AAAA,EACzE;AAAA,EACA,OAAO,CAAC,KAAK,cAAc;AACzB,WAAO,OAAO,OAAO,EAAE,EAAE,MAAM,OAAO,SAAS,CAAC;AAAA,EAClD;AAAA,EACA,MAAM,CAAC,KAAK,cAAc;AACxB,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO;AAChC,WAAO,IAAI,KAAK,cAAc,SAAS,OAAO,SAAS,IAAI,GAAG;AAAA,EAChE;AAAA,EACA,YAAY,CAAC,KAAK,WAAW;AAC3B,WAAO,OAAO,OAAO,EAAE,EAAE,WAAW,OAAO,MAAM,CAAC;AAAA,EACpD;AAAA,EACA,UAAU,CAAC,KAAK,WAAW;AACzB,WAAO,OAAO,OAAO,EAAE,EAAE,SAAS,OAAO,MAAM,CAAC;AAAA,EAClD;AAAA,EACA,UAAU,CAAC,KAAK,WAAW;AACzB,WAAO,OAAO,OAAO,EAAE,EAAE,SAAS,OAAO,MAAM,CAAC;AAAA,EAClD;AAAA;AAAA,EAEA,UAAU,CAAC,UAAU;AACnB,UAAM,MAAM,OAAO,KAAK;AACxB,WAAO,MAAM,GAAG,IAAI,IAAI;AAAA,EAC1B;AAAA,EACA,UAAU,CAAC,UAAU;AACnB,WAAO,OAAO,SAAS,EAAE;AAAA,EAC3B;AAAA,EACA,OAAO,CAAC,UAAU;AAChB,WAAO,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;AAAA,EACtC;AAAA,EACA,SAAS,CAAC,UAAU;AAClB,WAAO,WAAW,OAAO,KAAK,CAAC,KAAK;AAAA,EACtC;AAAA,EACA,OAAO,CAAC,OAAO,aAAa;AAC1B,UAAM,MAAM,OAAO,KAAK,KAAK;AAC7B,UAAM,MAAM,OAAO,QAAQ,KAAK;AAChC,UAAM,SAAS,KAAK,IAAI,IAAI,GAAG;AAC/B,WAAO,KAAK,MAAM,MAAM,MAAM,IAAI;AAAA,EACpC;AAAA,EACA,OAAO,CAAC,UAAU;AAChB,WAAO,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;AAAA,EACtC;AAAA,EACA,MAAM,CAAC,UAAU;AACf,WAAO,KAAK,KAAK,OAAO,KAAK,KAAK,CAAC;AAAA,EACrC;AAAA,EACA,KAAK,CAAC,UAAU;AACd,WAAO,KAAK,IAAI,OAAO,KAAK,KAAK,CAAC;AAAA,EACpC;AAAA,EACA,KAAK,IAAI,SAAS;AAChB,UAAM,OAAO,KAAK,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/D,WAAO,KAAK,SAAS,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI;AAAA,EAC/C;AAAA,EACA,KAAK,IAAI,SAAS;AAChB,UAAM,OAAO,KAAK,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/D,WAAO,KAAK,SAAS,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI;AAAA,EAC/C;AAAA,EACA,KAAK,CAAC,QAAQ;AACZ,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO;AAChC,WAAO,IAAI,OAAO,CAAC,KAAK,QAAQ,OAAO,OAAO,GAAG,KAAK,IAAI,CAAC;AAAA,EAC7D;AAAA,EACA,KAAK,CAAC,QAAQ;AACZ,QAAI,CAAC,MAAM,QAAQ,GAAG,KAAK,IAAI,WAAW,EAAG,QAAO;AACpD,UAAM,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,OAAO,OAAO,GAAG,KAAK,IAAI,CAAC;AAChE,WAAO,MAAM,IAAI;AAAA,EACnB;AAAA,EACA,QAAQ,MAAM;AACZ,WAAO,KAAK,OAAM;AAAA,EACpB;AAAA,EACA,WAAW,CAAC,KAAK,QAAQ;AACvB,UAAM,SAAS,KAAK,KAAK,OAAO,GAAG,KAAK,CAAC;AACzC,UAAM,SAAS,KAAK,MAAM,OAAO,GAAG,KAAK,GAAG;AAC5C,WAAO,KAAK,MAAM,KAAK,OAAM,KAAM,SAAS,SAAS,EAAE,IAAI;AAAA,EAC7D;AAAA;AAAA,EAEA,KAAK,MAAM;AACT,WAAO,KAAK,IAAG;AAAA,EACjB;AAAA,EACA,OAAO,MAAM;AACX,YAAwB,oBAAI,QAAQ,YAAW,EAAG,MAAM,GAAG,EAAE,CAAC;AAAA,EAChE;AAAA,EACA,YAAY,CAAC,WAAW,WAAW;AACjC,UAAM,OAAO,IAAI,KAAK,OAAO,SAAS,KAAK,KAAK,KAAK;AACrD,UAAM,MAAM,OAAO,UAAU,YAAY;AACzC,UAAM,MAAM,CAAC,MAAM,EAAE,SAAQ,EAAG,SAAS,GAAG,GAAG;AAC/C,WAAO,IAAI,QAAQ,QAAQ,KAAK,cAAc,UAAU,EAAE,QAAQ,MAAM,IAAI,KAAK,SAAQ,IAAK,CAAC,CAAC,EAAE,QAAQ,MAAM,IAAI,KAAK,QAAO,CAAE,CAAC,EAAE,QAAQ,MAAM,IAAI,KAAK,SAAQ,CAAE,CAAC,EAAE,QAAQ,MAAM,IAAI,KAAK,YAAY,CAAC,EAAE,QAAQ,MAAM,IAAI,KAAK,WAAU,CAAE,CAAC;AAAA,EACrP;AAAA,EACA,WAAW,CAAC,YAAY;AACtB,UAAM,OAAO,IAAI,KAAK,OAAO,OAAO,CAAC;AACrC,WAAO,KAAK,QAAO;AAAA,EACrB;AAAA,EACA,MAAM,CAAC,cAAc;AACnB,WAAO,IAAI,KAAK,OAAO,SAAS,KAAK,KAAK,IAAG,CAAE,EAAE,YAAW;AAAA,EAC9D;AAAA,EACA,OAAO,CAAC,cAAc;AACpB,WAAO,IAAI,KAAK,OAAO,SAAS,KAAK,KAAK,IAAG,CAAE,EAAE,SAAQ,IAAK;AAAA,EAChE;AAAA,EACA,KAAK,CAAC,cAAc;AAClB,WAAO,IAAI,KAAK,OAAO,SAAS,KAAK,KAAK,IAAG,CAAE,EAAE,QAAO;AAAA,EAC1D;AAAA,EACA,SAAS,CAAC,WAAW,SAAS;AAC5B,UAAM,OAAO,IAAI,KAAK,OAAO,SAAS,KAAK,KAAK,KAAK;AACrD,SAAK,QAAQ,KAAK,QAAO,KAAM,OAAO,IAAI,KAAK,EAAE;AACjD,WAAO,KAAK,QAAO;AAAA,EACrB;AAAA,EACA,UAAU,CAAC,YAAY,eAAe;AACpC,UAAM,QAAQ,IAAI,KAAK,OAAO,UAAU,KAAK,KAAK,KAAK;AACvD,UAAM,QAAQ,IAAI,KAAK,OAAO,UAAU,KAAK,KAAK,KAAK;AACvD,UAAM,WAAW,KAAK,IAAI,MAAM,YAAY,MAAM,SAAS;AAC3D,WAAO,KAAK,MAAM,YAAY,MAAM,KAAK,KAAK,GAAG;AAAA,EACnD;AAAA;AAAA,EAEA,QAAQ,CAAC,UAAU;AACjB,WAAO,UAAU,QAAQ,UAAU;AAAA,EACrC;AAAA,EACA,aAAa,CAAC,UAAU;AACtB,WAAO,UAAU;AAAA,EACnB;AAAA,EACA,SAAS,CAAC,UAAU;AAClB,QAAI,UAAU,QAAQ,UAAU,OAAQ,QAAO;AAC/C,QAAI,OAAO,UAAU,SAAU,QAAO,MAAM,WAAW;AACvD,QAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,MAAM,WAAW;AAClD,QAAI,OAAO,UAAU,SAAU,QAAO,OAAO,KAAK,KAAK,EAAE,WAAW;AACpE,WAAO;AAAA,EACT;AAAA,EACA,SAAS,CAAC,UAAU;AAClB,WAAO,MAAM,QAAQ,KAAK;AAAA,EAC5B;AAAA,EACA,UAAU,CAAC,UAAU;AACnB,WAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK;AAAA,EAC5E;AAAA,EACA,UAAU,CAAC,UAAU;AACnB,WAAO,OAAO,UAAU;AAAA,EAC1B;AAAA,EACA,UAAU,CAAC,UAAU;AACnB,WAAO,OAAO,UAAU,YAAY,CAAC,MAAM,KAAK;AAAA,EAClD;AAAA,EACA,WAAW,CAAC,UAAU;AACpB,WAAO,OAAO,UAAU;AAAA,EAC1B;AAAA,EACA,QAAQ,CAAC,UAAU;AACjB,QAAI,UAAU,KAAM,QAAO;AAC3B,QAAI,MAAM,QAAQ,KAAK,EAAG,QAAO;AACjC,WAAO,OAAO;AAAA,EAChB;AAAA;AAAA,EAEA,SAAS,CAAC,OAAO,iBAAiB;AAChC,WAAO,SAAS;AAAA,EAClB;AAAA,EACA,UAAU,IAAI,SAAS;AACrB,eAAW,OAAO,MAAM;AACtB,UAAI,QAAQ,QAAQ,QAAQ,OAAQ,QAAO;AAAA,IAC7C;AACA,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,CAAC,WAAW,WAAW,eAAe;AAC5C,WAAO,YAAY,YAAY;AAAA,EACjC;AAAA;AAAA,EAEA,OAAO,CAAC,QAAQ;AACd,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO;AAChC,WAAO,IAAI,CAAC;AAAA,EACd;AAAA,EACA,MAAM,CAAC,QAAQ;AACb,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO;AAChC,WAAO,IAAI,IAAI,SAAS,CAAC;AAAA,EAC3B;AAAA,EACA,IAAI,CAAC,KAAKA,WAAU;AAClB,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO;AAChC,WAAO,IAAI,OAAOA,MAAK,KAAK,CAAC;AAAA,EAC/B;AAAA,EACA,OAAO,CAAC,KAAK,OAAO,QAAQ;AAC1B,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO,CAAA;AAChC,WAAO,IAAI,MAAM,OAAO,KAAK,KAAK,GAAG,QAAQ,SAAS,OAAO,GAAG,IAAI,MAAM;AAAA,EAC5E;AAAA,EACA,UAAU,CAAC,KAAK,UAAU;AACxB,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO;AAChC,WAAO,IAAI,SAAS,KAAK;AAAA,EAC3B;AAAA,EACA,SAAS,CAAC,KAAK,UAAU;AACvB,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO;AAChC,WAAO,IAAI,QAAQ,KAAK;AAAA,EAC1B;AAAA,EACA,SAAS,CAAC,QAAQ;AAChB,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO,CAAA;AAChC,WAAO,CAAC,GAAG,GAAG,EAAE,QAAO;AAAA,EACzB;AAAA,EACA,MAAM,CAAC,QAAQ;AACb,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO,CAAA;AAChC,WAAO,CAAC,GAAG,GAAG,EAAE,KAAI;AAAA,EACtB;AAAA,EACA,QAAQ,CAAC,QAAQ;AACf,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO,CAAA;AAChC,WAAO,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC;AAAA,EACzB;AAAA,EACA,SAAS,CAAC,QAAQ;AAChB,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO,CAAA;AAChC,WAAO,IAAI,KAAI;AAAA,EACjB;AAAA,EACA,OAAO,CAAC,QAAQ;AACd,QAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO;AAChC,WAAO,IAAI;AAAA,EACb;AAAA;AAAA,EAEA,KAAK,CAAC,KAAK,MAAM,iBAAiB;AAChC,QAAI,QAAQ,QAAQ,QAAQ,OAAQ,QAAO;AAC3C,UAAM,UAAU,OAAO,IAAI;AAC3B,UAAM,QAAQ,QAAQ,MAAM,GAAG;AAC/B,QAAI,UAAU;AACd,eAAW,QAAQ,OAAO;AACxB,UAAI,YAAY,QAAQ,YAAY,OAAQ,QAAO;AACnD,gBAAU,QAAQ,IAAI;AAAA,IACxB;AACA,WAAO,WAAW;AAAA,EACpB;AAAA,EACA,MAAM,CAAC,QAAQ;AACb,QAAI,OAAO,QAAQ,YAAY,QAAQ,KAAM,QAAO,CAAA;AACpD,WAAO,OAAO,KAAK,GAAG;AAAA,EACxB;AAAA,EACA,QAAQ,CAAC,QAAQ;AACf,QAAI,OAAO,QAAQ,YAAY,QAAQ,KAAM,QAAO,CAAA;AACpD,WAAO,OAAO,OAAO,GAAG;AAAA,EAC1B;AAAA,EACA,SAAS,CAAC,QAAQ;AAChB,QAAI,OAAO,QAAQ,YAAY,QAAQ,KAAM,QAAO,CAAA;AACpD,WAAO,OAAO,QAAQ,GAAG;AAAA,EAC3B;AAAA,EACA,KAAK,CAAC,KAAK,QAAQ;AACjB,QAAI,OAAO,QAAQ,YAAY,QAAQ,KAAM,QAAO;AACpD,WAAO,OAAO,GAAG,KAAK;AAAA,EACxB;AAAA,EACA,OAAO,IAAI,SAAS;AAClB,UAAM,SAAS,CAAA;AACf,eAAW,OAAO,MAAM;AACtB,UAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAC3C,eAAO,OAAO,QAAQ,GAAG;AAAA,MAC3B;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAEA,KAAK,IAAI,SAAS;AAChB,WAAO,KAAK,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;AAAA,EACrC;AAAA,EACA,IAAI,IAAI,SAAS;AACf,WAAO,KAAK,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;AAAA,EACpC;AAAA,EACA,KAAK,CAAC,UAAU;AACd,WAAO,CAAC;AAAA,EACV;AAAA,EACA,IAAI,CAAC,GAAG,MAAM;AACZ,WAAO,MAAM;AAAA,EACf;AAAA,EACA,IAAI,CAAC,GAAG,MAAM;AACZ,WAAO,MAAM;AAAA,EACf;AAAA,EACA,IAAI,CAAC,GAAG,MAAM;AACZ,WAAO,OAAO,CAAC,IAAI,OAAO,CAAC;AAAA,EAC7B;AAAA,EACA,KAAK,CAAC,GAAG,MAAM;AACb,WAAO,OAAO,CAAC,KAAK,OAAO,CAAC;AAAA,EAC9B;AAAA,EACA,IAAI,CAAC,GAAG,MAAM;AACZ,WAAO,OAAO,CAAC,IAAI,OAAO,CAAC;AAAA,EAC7B;AAAA,EACA,KAAK,CAAC,GAAG,MAAM;AACb,WAAO,OAAO,CAAC,KAAK,OAAO,CAAC;AAAA,EAC9B;AAAA,EACA,SAAS,CAAC,OAAO,KAAK,QAAQ;AAC5B,UAAM,MAAM,OAAO,KAAK;AACxB,WAAO,OAAO,OAAO,GAAG,KAAK,OAAO,OAAO,GAAG;AAAA,EAChD;AAAA;AAAA,EAEA,cAAc,CAAC,OAAO,aAAa;AACjC,UAAM,MAAM,OAAO,KAAK,KAAK;AAC7B,UAAM,MAAM,OAAO,QAAQ,KAAK;AAChC,WAAO,IAAI,eAAe,QAAQ;AAAA,MAChC,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IAC7B,CAAK;AAAA,EACH;AAAA,EACA,gBAAgB,CAAC,OAAO,aAAa;AACnC,UAAM,MAAM,OAAO,KAAK,KAAK;AAC7B,UAAM,MAAM,OAAO,YAAY,KAAK;AACpC,WAAO,IAAI,eAAe,SAAS,EAAE,OAAO,YAAY,UAAU,KAAK;AAAA,EACzE;AAAA,EACA,eAAe,CAAC,OAAO,aAAa;AAClC,UAAM,MAAM,OAAO,KAAK,KAAK;AAC7B,UAAM,MAAM,OAAO,QAAQ,KAAK;AAChC,YAAQ,MAAM,KAAK,QAAQ,GAAG,IAAI;AAAA,EACpC;AAAA;AAAA,EAEA,WAAW,CAAC,QAAQ;AAClB,QAAI;AACF,aAAO,KAAK,MAAM,OAAO,GAAG,CAAC;AAAA,IAC/B,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,eAAe,CAAC,UAAU;AACxB,WAAO,KAAK,UAAU,KAAK;AAAA,EAC7B;AACF;AAGA,IAAI,YAAY,MAAM;AAAA,EACpB,YAAY,UAAU,IAAI;AACxB,SAAK,QAAQ;AACb,SAAK,YAAY;AACjB,SAAK,UAAU;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,MACT,OAAO;AAAA,MACP,GAAG;AAAA,IACT;AAAA,EACE;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,KAAK,SAAS;AACrB,SAAK,QAAQ;AACb,SAAK,YAAY,KAAK,IAAG;AACzB,QAAI;AACF,YAAM,QAAQ,KAAK,aAAa,KAAK,OAAO;AAC5C,aAAO,EAAE,MAAK;AAAA,IAChB,SAAS,OAAO;AACd,aAAO;AAAA,QACL,OAAO;AAAA,QACP,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,MACvE;AAAA,IACI;AAAA,EACF;AAAA,EACA,aAAa,MAAM,SAAS;AAC1B,SAAK,YAAW;AAChB,YAAQ,KAAK,MAAI;AAAA,MACf,KAAK;AACH,eAAO,KAAK,gBAAgB,IAAI;AAAA,MAClC,KAAK;AACH,eAAO,KAAK,mBAAmB,MAAM,OAAO;AAAA,MAC9C,KAAK;AACH,eAAO,KAAK,eAAe,MAAM,OAAO;AAAA,MAC1C,KAAK;AACH,eAAO,KAAK,aAAa,MAAM,OAAO;AAAA,MACxC,KAAK;AACH,eAAO,KAAK,eAAe,MAAM,OAAO;AAAA,MAC1C,KAAK;AACH,eAAO,KAAK,cAAc,MAAM,OAAO;AAAA,MACzC,KAAK;AACH,eAAO,KAAK,oBAAoB,MAAM,OAAO;AAAA,MAC/C,KAAK;AACH,eAAO,KAAK,cAAc,MAAM,OAAO;AAAA,MACzC;AACE,cAAM,IAAI,gBAAgB,IAAI,sBAAsB,KAAK,IAAI,EAAE;AAAA,IACvE;AAAA,EACE;AAAA,EACA,gBAAgB,MAAM;AACpB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,mBAAmB,MAAM,SAAS;AAChC,UAAM,OAAO,KAAK;AAClB,YAAQ,MAAI;AAAA,MACV,KAAK;AACH,eAAO,QAAQ;AAAA,MACjB,KAAK;AACH,eAAO,QAAQ;AAAA,MACjB,KAAK;AACH,eAAO,QAAQ;AAAA,MACjB,KAAK;AACH,eAAO,QAAQ;AAAA,MACjB,KAAK;AACH,eAAO,QAAQ;AAAA,MACjB,KAAK;AACH,eAAO,QAAQ;AAAA,MACjB;AACE,cAAM,IAAI;AAAA,UACR;AAAA,UACA,qBAAqB,IAAI;AAAA,UACzB,KAAK,UAAU,UAAU,KAAK,QAAQ,SAAS,EAAE,OAAO,KAAK,OAAO,KAAK,KAAK,IAAG,IAAK;AAAA,QAChG;AAAA,IACA;AAAA,EACE;AAAA,EACA,eAAe,MAAM,SAAS;AAC5B,UAAM,SAAS,KAAK,aAAa,KAAK,QAAQ,OAAO;AACrD,QAAI,WAAW,QAAQ,WAAW,QAAQ;AACxC,aAAO;AAAA,IACT;AACA,QAAI;AACJ,QAAI,KAAK,UAAU;AACjB,YAAM,YAAY,KAAK,aAAa,KAAK,UAAU,OAAO;AAC1D,iBAAW;AAAA,IACb,OAAO;AACL,iBAAW,KAAK;AAAA,IAClB;AACA,QAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AACjD,aAAO,OAAO,QAAQ;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAAA,EACA,aAAa,MAAM,SAAS;AAC1B,UAAM,KAAK,iBAAiB,KAAK,MAAM;AACvC,QAAI,CAAC,IAAI;AACP,YAAM,IAAI,gBAAgB,IAAI,qBAAqB,KAAK,MAAM,GAAG;AAAA,IACnE;AACA,UAAM,OAAO,KAAK,UAAU,IAAI,CAAC,QAAQ,KAAK,aAAa,KAAK,OAAO,CAAC;AACxE,WAAO,GAAG,GAAG,IAAI;AAAA,EACnB;AAAA,EACA,eAAe,MAAM,SAAS;AAC5B,UAAM,KAAK,KAAK;AAChB,QAAI,OAAO,MAAM;AACf,YAAM,QAAQ,KAAK,aAAa,KAAK,MAAM,OAAO;AAClD,UAAI,CAAC,MAAO,QAAO;AACnB,aAAO,KAAK,aAAa,KAAK,OAAO,OAAO;AAAA,IAC9C;AACA,QAAI,OAAO,MAAM;AACf,YAAM,QAAQ,KAAK,aAAa,KAAK,MAAM,OAAO;AAClD,UAAI,MAAO,QAAO;AAClB,aAAO,KAAK,aAAa,KAAK,OAAO,OAAO;AAAA,IAC9C;AACA,QAAI,OAAO,MAAM;AACf,YAAM,QAAQ,KAAK,aAAa,KAAK,MAAM,OAAO;AAClD,UAAI,UAAU,QAAQ,UAAU,OAAQ,QAAO;AAC/C,aAAO,KAAK,aAAa,KAAK,OAAO,OAAO;AAAA,IAC9C;AACA,UAAM,OAAO,KAAK,aAAa,KAAK,MAAM,OAAO;AACjD,UAAM,QAAQ,KAAK,aAAa,KAAK,OAAO,OAAO;AACnD,YAAQ,IAAE;AAAA,MACR,KAAK;AACH,YAAI,OAAO,SAAS,YAAY,OAAO,UAAU,UAAU;AACzD,iBAAO,OAAO,IAAI,IAAI,OAAO,KAAK;AAAA,QACpC;AACA,eAAO,OAAO;AAAA,MAChB,KAAK;AACH,eAAO,OAAO;AAAA,MAChB,KAAK;AACH,eAAO,OAAO;AAAA,MAChB,KAAK;AACH,eAAO,OAAO;AAAA,MAChB,KAAK;AACH,eAAO,OAAO;AAAA,MAChB,KAAK;AACH,eAAO,SAAS;AAAA,MAClB,KAAK;AACH,eAAO,SAAS;AAAA,MAClB,KAAK;AACH,eAAO,OAAO;AAAA,MAChB,KAAK;AACH,eAAO,OAAO;AAAA,MAChB,KAAK;AACH,eAAO,QAAQ;AAAA,MACjB,KAAK;AACH,eAAO,QAAQ;AAAA,MACjB;AACE,cAAM,IAAI,gBAAgB,IAAI,qBAAqB,EAAE,GAAG;AAAA,IAChE;AAAA,EACE;AAAA,EACA,cAAc,MAAM,SAAS;AAC3B,UAAM,WAAW,KAAK,aAAa,KAAK,UAAU,OAAO;AACzD,YAAQ,KAAK,UAAQ;AAAA,MACnB,KAAK;AACH,eAAO,CAAC;AAAA,MACV,KAAK;AACH,eAAO,CAAC;AAAA,MACV;AACE,cAAM,IAAI,gBAAgB,IAAI,2BAA2B,KAAK,QAAQ,GAAG;AAAA,IACjF;AAAA,EACE;AAAA,EACA,oBAAoB,MAAM,SAAS;AACjC,UAAM,OAAO,KAAK,aAAa,KAAK,MAAM,OAAO;AACjD,QAAI,MAAM;AACR,aAAO,KAAK,aAAa,KAAK,YAAY,OAAO;AAAA,IACnD;AACA,WAAO,KAAK,aAAa,KAAK,WAAW,OAAO;AAAA,EAClD;AAAA,EACA,cAAc,MAAM,SAAS;AAC3B,WAAO,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,aAAa,IAAI,OAAO,CAAC;AAAA,EACjE;AAAA,EACA,cAAc;AACZ,SAAK;AACL,QAAI,KAAK,SAAS,KAAK,QAAQ,YAAY,MAAM;AAC/C,YAAM,IAAI,gBAAgB,IAAI,kCAAkC;AAAA,IAClE;AACA,UAAM,UAAU,KAAK,IAAG,IAAK,KAAK;AAClC,QAAI,WAAW,KAAK,QAAQ,WAAW,MAAM;AAC3C,YAAM,IAAI,gBAAgB,IAAI,+BAA+B;AAAA,IAC/D;AAAA,EACF;AACF;AAGA,IAAI,mBAAmB,MAAM;AAAA,EAC3B,YAAY,UAAU,IAAI;AACxB,SAAK,WAA2B,oBAAI,IAAG;AACvC,SAAK,UAAU;AAAA,MACb,UAAU;AAAA,MACV,cAAc;AAAA,MACd,GAAG;AAAA,IACT;AACI,SAAK,YAAY,IAAI,UAAU,OAAO;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,YAAY,SAAS;AAC5B,QAAI;AACF,YAAM,MAAM,KAAK,MAAM,UAAU;AACjC,aAAO,KAAK,UAAU,SAAS,KAAK,OAAO;AAAA,IAC7C,SAAS,OAAO;AACd,aAAO;AAAA,QACL,OAAO;AAAA,QACP,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,MACvE;AAAA,IACI;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB,YAAY,SAAS,UAAU;AAClD,UAAM,SAAS,KAAK,SAAS,YAAY,OAAO;AAChD,QAAI,OAAO,OAAO;AAChB,WAAK,IAAI,QAAQ,iCAAiC,OAAO,MAAM,OAAO,IAAI,UAAU;AACpF,aAAO;AAAA,IACT;AACA,WAAO,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAiB,UAAU,SAAS;AAClC,WAAO,SAAS,QAAQ,kBAAkB,CAAC,GAAG,SAAS;AACrD,YAAM,SAAS,KAAK,SAAS,KAAK,KAAI,GAAI,OAAO;AACjD,UAAI,OAAO,OAAO;AAChB,aAAK,IAAI,QAAQ,+BAA+B,OAAO,MAAM,OAAO,IAAI,IAAI;AAC5E,eAAO;AAAA,MACT;AACA,aAAO,OAAO,OAAO,SAAS,EAAE;AAAA,IAClC,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,YAAY;AAChB,QAAI,KAAK,QAAQ,UAAU;AACzB,YAAM,SAAS,KAAK,SAAS,IAAI,UAAU;AAC3C,UAAI,QAAQ;AACV,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI;AACF,YAAM,QAAQ,IAAI,MAAM,UAAU;AAClC,YAAM,SAAS,MAAM,SAAQ;AAC7B,YAAM,SAAS,IAAI,OAAO,MAAM;AAChC,YAAM,MAAM,OAAO,MAAK;AACxB,UAAI,KAAK,QAAQ,UAAU;AACzB,YAAI,KAAK,SAAS,SAAS,KAAK,QAAQ,gBAAgB,MAAM;AAC5D,gBAAM,eAAe,MAAM,KAAK,KAAK,SAAS,KAAI,CAAE,EAAE;AAAA,YACpD;AAAA,YACA,KAAK,MAAM,KAAK,SAAS,OAAO,CAAC;AAAA,UAC7C;AACU,uBAAa,QAAQ,CAAC,QAAQ,KAAK,SAAS,OAAO,GAAG,CAAC;AAAA,QACzD;AACA,aAAK,SAAS,IAAI,YAAY,GAAG;AAAA,MACnC;AACA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,IAAI;AAAA,QACR;AAAA,QACA,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MACjD;AAAA,IACI;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,YAAY;AACnB,UAAM,SAAS,CAAA;AACf,UAAM,WAAW,CAAA;AACjB,UAAM,kBAAkB,CAAA;AACxB,UAAM,kBAAkB,CAAA;AACxB,QAAI;AACF,YAAM,MAAM,KAAK,MAAM,UAAU;AACjC,WAAK,kBAAkB,KAAK,iBAAiB,eAAe;AAC5D,aAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAAA;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MACR;AAAA,IACI,SAAS,OAAO;AACd,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MAC1D,CAAO;AACD,aAAO;AAAA,QACL,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR;AAAA,IACI;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa;AACX,SAAK,SAAS,MAAK;AAAA,EACrB;AAAA,EACA,kBAAkB,MAAM,OAAO,WAAW;AACxC,YAAQ,KAAK,MAAI;AAAA,MACf,KAAK;AACH,cAAM,KAAK,KAAK,IAAI;AACpB;AAAA,MACF,KAAK,UAAU;AACb,cAAM,OAAO,KAAK,gBAAgB,IAAI;AACtC,YAAI,KAAM,OAAM,KAAK,IAAI;AACzB;AAAA,MACF;AAAA,MACA,KAAK;AACH,kBAAU,KAAK,KAAK,MAAM;AAC1B,aAAK,UAAU,QAAQ,CAAC,QAAQ,KAAK,kBAAkB,KAAK,OAAO,SAAS,CAAC;AAC7E;AAAA,MACF,KAAK;AACH,aAAK,kBAAkB,KAAK,MAAM,OAAO,SAAS;AAClD,aAAK,kBAAkB,KAAK,OAAO,OAAO,SAAS;AACnD;AAAA,MACF,KAAK;AACH,aAAK,kBAAkB,KAAK,UAAU,OAAO,SAAS;AACtD;AAAA,MACF,KAAK;AACH,aAAK,kBAAkB,KAAK,MAAM,OAAO,SAAS;AAClD,aAAK,kBAAkB,KAAK,YAAY,OAAO,SAAS;AACxD,aAAK,kBAAkB,KAAK,WAAW,OAAO,SAAS;AACvD;AAAA,MACF,KAAK;AACH,aAAK,SAAS,QAAQ,CAAC,OAAO,KAAK,kBAAkB,IAAI,OAAO,SAAS,CAAC;AAC1E;AAAA,IACR;AAAA,EACE;AAAA,EACA,gBAAgB,MAAM;AACpB,QAAI,KAAK,SAAS,cAAc;AAC9B,aAAO,KAAK;AAAA,IACd;AACA,QAAI,KAAK,SAAS,YAAY,CAAC,KAAK,UAAU;AAC5C,YAAM,aAAa,KAAK,gBAAgB,KAAK,MAAM;AACnD,UAAI,YAAY;AACd,eAAO,GAAG,UAAU,IAAI,KAAK,QAAQ;AAAA,MACvC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,YAAY,MAAM;AAC3B,QAAI,KAAK,QAAQ,QAAQ;AACvB,WAAK,QAAQ,OAAO,KAAK,EAAE,SAAS,GAAG,IAAI;AAAA,IAC7C,WAAW,KAAK,QAAQ,OAAO;AAC7B,cAAQ,KAAK,EAAE,sBAAsB,OAAO,IAAI,GAAG,IAAI;AAAA,IACzD;AAAA,EACF;AACF;AAGA,IAAI,cAAc,MAAM;AAAA,EACtB,YAAY,SAAS;AAEnB,SAAK,UAAU;AAAA,MACb,KAAK,CAAC,KAAKC,aAAY;AACrB,cAAM,UAAU,KAAK,cAAc,KAAKA,YAAA,gBAAAA,SAAS,SAAS;AAC1D,cAAM,OAAO,aAAa,QAAQ,OAAO;AACzC,YAAI,CAAC,KAAM,QAAO;AAClB,YAAI;AACF,gBAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,cAAI,OAAO,WAAW,KAAK,IAAG,IAAK,OAAO,SAAS;AACjD,yBAAa,WAAW,OAAO;AAC/B,mBAAO;AAAA,UACT;AACA,iBAAO,OAAO;AAAA,QAChB,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,KAAK,CAAC,KAAK,OAAOA,aAAY;AAC5B,cAAM,UAAU,KAAK,cAAc,KAAKA,YAAA,gBAAAA,SAAS,SAAS;AAC1D,cAAM,OAAO;AAAA,UACX;AAAA,UACA,UAASA,YAAA,gBAAAA,SAAS,OAAM,KAAK,IAAG,IAAKA,SAAQ,MAAM,MAAM;AAAA,QACnE;AACQ,qBAAa,QAAQ,SAAS,KAAK,UAAU,IAAI,CAAC;AAAA,MACpD;AAAA,MACA,QAAQ,CAAC,KAAKA,aAAY;AACxB,cAAM,UAAU,KAAK,cAAc,KAAKA,YAAA,gBAAAA,SAAS,SAAS;AAC1D,qBAAa,WAAW,OAAO;AAAA,MACjC;AAAA,IACN;AACI,SAAK,UAAU;AACf,SAAK,mBAAmB,SAAS,QAAQ,QAAQ,OAAO;AAAA,EAC1D;AAAA;AAAA,EAEA,MAAM,YAAY,SAAS,QAAQ;AACjC,SAAK,IAAI,SAAS,oBAAoB,OAAO,IAAI,MAAM;AACvD,UAAM,YAAY,YAAY,IAAG;AACjC,UAAM,UAAU,KAAK,QAAQ;AAC7B,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,GAAG,KAAK,QAAQ,UAAU,eAAe;AAAA,QACpE,QAAQ;AAAA,QACR,SAAS,KAAK,aAAY;AAAA,QAC1B,MAAM,KAAK,UAAU;AAAA,UACnB,gBAAgB;AAAA,UAChB,QAAQ,UAAU,CAAA;AAAA,UAClB,SAAS;AAAA,YACP,eAAe,QAAQ;AAAA,YACvB,KAAK,QAAQ;AAAA,UACzB;AAAA,QACA,CAAS;AAAA,MACT,CAAO;AACD,YAAM,SAAS,MAAM,SAAS,KAAI;AAClC,YAAM,WAAW,YAAY,IAAG,IAAK;AACrC,WAAK,IAAI,SAAS,2BAA2B,SAAS,QAAQ,CAAC,CAAC,IAAI;AACpE,UAAI,OAAO,WAAW,OAAO,MAAM;AACjC,aAAK,QAAQ,aAAa,SAAS,SAAS,OAAO,IAAI;AAAA,MACzD;AACA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,IAAI,SAAS,sBAAsB,OAAO,IAAI,KAAK;AACxD,aAAO;AAAA,QACL,SAAS;AAAA,QACT,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MAC1D;AAAA,IACI;AAAA,EACF;AAAA,EACA,MAAM,cAAc,YAAY,QAAQ;AACtC,SAAK,IAAI,SAAS,qBAAqB,UAAU,IAAI,MAAM;AAC3D,UAAM,YAAY,YAAY,IAAG;AACjC,UAAM,UAAU,KAAK,QAAQ;AAC7B,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,GAAG,KAAK,QAAQ,UAAU,oBAAoB;AAAA,QACzE,QAAQ;AAAA,QACR,SAAS,KAAK,aAAY;AAAA,QAC1B,MAAM,KAAK,UAAU;AAAA,UACnB;AAAA,UACA,QAAQ,UAAU,CAAA;AAAA,UAClB,SAAS;AAAA,YACP,eAAe,QAAQ;AAAA,YACvB,KAAK,QAAQ;AAAA,YACb,UAAU,QAAQ;AAAA,YAClB,SAAS,QAAQ;AAAA,UAC7B;AAAA,UACU,gBAAgB,KAAK,uBAAuB,YAAY,MAAM;AAAA,QACxE,CAAS;AAAA,MACT,CAAO;AACD,YAAM,SAAS,MAAM,SAAS,KAAI;AAClC,YAAM,WAAW,YAAY,IAAG,IAAK;AACrC,WAAK,IAAI,SAAS,uBAAuB,SAAS,QAAQ,CAAC,CAAC,IAAI;AAChE,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,IAAI,SAAS,kBAAkB,UAAU,IAAI,KAAK;AACvD,aAAO;AAAA,QACL,SAAS;AAAA,QACT,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MAC1D;AAAA,IACI;AAAA,EACF;AAAA;AAAA,EAEA,SAAS,SAAS;AAChB,SAAK,IAAI,SAAS,aAAa,OAAO;AACtC,SAAK,MAAM;AAAA,MACT,WAAW;AAAA,MACX,QAAQ,EAAE,KAAK,QAAQ,KAAK,QAAQ,QAAQ,OAAM;AAAA,IACxD,CAAK;AACD,QAAI,MAAM,QAAQ;AAClB,QAAI,QAAQ,QAAQ;AAClB,YAAM,eAAe,IAAI,gBAAgB,QAAQ,MAAM;AACvD,cAAQ,IAAI,SAAS,GAAG,IAAI,MAAM,OAAO,aAAa,SAAQ;AAAA,IAChE;AACA,QAAI,QAAQ,QAAQ;AAClB,aAAO,KAAK,KAAK,QAAQ;AAAA,IAC3B,WAAW,QAAQ,SAAS;AAC1B,aAAO,SAAS,QAAQ,GAAG;AAAA,IAC7B,OAAO;AACL,aAAO,SAAS,OAAO;AAAA,IACzB;AAAA,EACF;AAAA,EACA,SAAS;AACP,SAAK,IAAI,SAAS,eAAe;AACjC,WAAO,QAAQ,KAAI;AAAA,EACrB;AAAA,EACA,UAAU;AACR,SAAK,IAAI,SAAS,cAAc;AAChC,WAAO,SAAS,OAAM;AAAA,EACxB;AAAA;AAAA,EAEA,MAAM,WAAW,SAAS;AACxB,SAAK,IAAI,SAAS,gBAAgB,OAAO;AACzC,YAAQ,QAAQ,MAAI;AAAA,MAClB,KAAK;AACH,eAAO,MAAM,QAAQ,WAAW,QAAQ,KAAK;AAC7C,eAAO;AAAA,MACT,KAAK;AACH,eAAO,OAAO,QAAQ,QAAQ,WAAW,QAAQ,KAAK;AAAA,MACxD,KAAK;AACH,eAAO,OAAO,OAAO,QAAQ,WAAW,QAAQ,KAAK,KAAK;AAAA,MAC5D,KAAK;AACH,aAAK,IAAI,QAAQ,+BAA+B;AAChD,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACf;AAAA,EACE;AAAA,EACA,cAAc;AACZ,SAAK,IAAI,SAAS,cAAc;AAAA,EAClC;AAAA,EACA,UAAU,SAAS;AACjB,SAAK,IAAI,SAAS,eAAe,OAAO;AACxC,UAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,UAAM,YAAY,2BAA2B,QAAQ,QAAQ,MAAM,gBAAgB,QAAQ,YAAY,KAAK;AAC5G,UAAM,cAAc,QAAQ;AAC5B,WAAO,OAAO,MAAM,OAAO;AAAA,MACzB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,MACX,SAAS;AAAA,MACT,cAAc;AAAA,MACd,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,WAAW;AAAA,IACjB,CAAK;AACD,UAAM,SAAS;AAAA,MACb,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,IACZ;AACI,UAAM,MAAM,kBAAkB,OAAO,QAAQ,QAAQ,MAAM;AAC3D,UAAM,YAAY;AAAA,MAChB,KAAK,EAAE,KAAK,OAAM;AAAA,MAClB,QAAQ,EAAE,KAAK,OAAO,WAAW,wBAAuB;AAAA,MACxD,QAAQ,EAAE,QAAQ,OAAM;AAAA,IAC9B;AACI,WAAO,OAAO,MAAM,OAAO,UAAU,QAAQ,YAAY,KAAK,CAAC;AAC/D,aAAS,KAAK,YAAY,KAAK;AAC/B,eAAW,MAAM;AACf,YAAM,MAAM,YAAY;AACxB,iBAAW,MAAM,MAAM,OAAM,GAAI,GAAG;AAAA,IACtC,GAAG,QAAQ,YAAY,GAAG;AAAA,EAC5B;AAAA;AAAA,EAEA,MAAM,OAAO;AACX,SAAK,IAAI,SAAS,gBAAgB,KAAK;AACvC,UAAM,UAAU,KAAK,QAAQ;AAC7B,UAAM,GAAG,KAAK,QAAQ,UAAU,UAAU;AAAA,MACxC,QAAQ;AAAA,MACR,SAAS,KAAK,aAAY;AAAA,MAC1B,MAAM,KAAK,UAAU;AAAA,QACnB,WAAW,MAAM;AAAA,QACjB,QAAQ,MAAM;AAAA,QACd,WAAW,MAAM,aAAa,KAAK,IAAG;AAAA,QACtC,SAAS;AAAA,UACP,eAAe,QAAQ;AAAA,UACvB,gBAAgB,QAAQ;AAAA,UACxB,QAAQ,QAAQ;AAAA,UAChB,UAAU,QAAQ;AAAA,UAClB,SAAS,QAAQ;AAAA,QAC3B;AAAA,MACA,CAAO;AAAA,MACD,WAAW;AAAA;AAAA,IAEjB,CAAK,EAAE,MAAM,CAAC,UAAU;AAClB,WAAK,IAAI,QAAQ,iBAAiB,KAAK;AAAA,IACzC,CAAC;AAAA,EACH;AAAA;AAAA,EAEA,MAAM,gBAAgB,MAAM;AAC1B,QAAI;AACF,YAAM,UAAU,UAAU,UAAU,IAAI;AACxC,aAAO,EAAE,SAAS,MAAM,SAAS,KAAI;AAAA,IACvC,SAAS,OAAO;AACd,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MACxD;AAAA,IACI;AAAA,EACF;AAAA,EACA,MAAM,oBAAoB;AACxB,QAAI;AACF,YAAM,OAAO,MAAM,UAAU,UAAU,SAAQ;AAC/C,aAAO,EAAE,SAAS,MAAM,SAAS,KAAI;AAAA,IACvC,SAAS,OAAO;AACd,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MACxD;AAAA,IACI;AAAA,EACF;AAAA;AAAA,EAEA,SAAS,KAAK;AACZ,WAAO,KAAK,QAAQ,aAAa,YAAY,GAAG;AAAA,EAClD;AAAA,EACA,SAAS,KAAK,OAAO;AACnB,SAAK,QAAQ,aAAa,YAAY,KAAK,KAAK;AAAA,EAClD;AAAA,EACA,YAAY,MAAM;AAChB,WAAO,KAAK,QAAQ,aAAa,YAAY,IAAI;AAAA,EACnD;AAAA;AAAA,EAEA,YAAY,aAAa,SAAS;AAChC,SAAK,IAAI,SAAS,mBAAmB,WAAW,KAAK,OAAO;AAC5D,UAAM,QAAQ,IAAI,YAAY,iBAAiB,WAAW,IAAI;AAAA,MAC5D,QAAQ,EAAE,SAAS,MAAM,KAAK,QAAQ,QAAQ,QAAO;AAAA,IAC3D,CAAK;AACD,aAAS,cAAc,KAAK;AAAA,EAC9B;AAAA,EACA,UAAU,SAAS,SAAS;AAC1B,SAAK,IAAI,SAAS,gBAAgB,OAAO,KAAK,OAAO;AACrD,UAAM,QAAQ,IAAI,YAAY,mBAAmB,OAAO,IAAI;AAAA,MAC1D,QAAQ,EAAE,SAAS,MAAM,KAAK,QAAQ,QAAQ,QAAO;AAAA,IAC3D,CAAK;AACD,aAAS,cAAc,KAAK;AAAA,EAC9B;AAAA;AAAA,EAEA,aAAa;AACX,WAAO,EAAE,GAAG,KAAK,QAAQ,QAAO;AAAA,EAClC;AAAA;AAAA,EAEA,eAAe;AACb,UAAM,UAAU;AAAA,MACd,gBAAgB;AAAA,MAChB,GAAG,KAAK,QAAQ;AAAA,IACtB;AACI,QAAI,KAAK,QAAQ,WAAW;AAC1B,cAAQ,eAAe,IAAI,UAAU,KAAK,QAAQ,SAAS;AAAA,IAC7D;AACA,WAAO;AAAA,EACT;AAAA,EACA,cAAc,KAAK,WAAW;AAC5B,WAAO,GAAG,aAAa,KAAK,gBAAgB,IAAI,GAAG;AAAA,EACrD;AAAA,EACA,uBAAuB,YAAY,QAAQ;AACzC,UAAM,YAAY,KAAK,IAAG;AAC1B,UAAM,YAAY,KAAK,UAAU,UAAU,CAAA,CAAE;AAC7C,WAAO,GAAG,UAAU,IAAI,SAAS,IAAI,KAAK,WAAW,SAAS,CAAC;AAAA,EACjE;AAAA,EACA,WAAW,KAAK;AACd,QAAI,OAAO;AACX,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,YAAM,OAAO,IAAI,WAAW,CAAC;AAC7B,cAAQ,QAAQ,KAAK,OAAO;AAC5B,aAAO,OAAO;AAAA,IAChB;AACA,WAAO,KAAK,IAAI,IAAI,EAAE,SAAS,EAAE;AAAA,EACnC;AAAA,EACA,IAAI,OAAO,YAAY,MAAM;AAC3B,QAAI,KAAK,QAAQ,QAAQ;AACvB,WAAK,QAAQ,OAAO,KAAK,EAAE,SAAS,GAAG,IAAI;AAAA,IAC7C,WAAW,KAAK,QAAQ,OAAO;AAC7B,cAAQ,KAAK,EAAE,aAAa,OAAO,IAAI,GAAG,IAAI;AAAA,IAChD;AAAA,EACF;AACF;AAGA,IAAI,kBAAkB,MAAM;AAAA,EAC1B,YAAY,UAAU,IAAI;AACxB,SAAK,uBAAuC,oBAAI,IAAG;AACnD,SAAK,oBAAoC,oBAAI,IAAG;AAChD,SAAK,UAAU;AAAA,MACb,WAAW;AAAA,MACX,YAAY,CAAA;AAAA,MACZ,YAAY,CAAA;AAAA,MACZ,mBAAmB,CAAA;AAAA,MACnB,gBAAgB,CAAA;AAAA,MAChB,GAAG;AAAA,IACT;AACI,SAAK,kBAAkB,QAAQ,qBAAqB,CAAA,GAAI,QAAQ,kBAAkB,EAAE;AAAA,EACtF;AAAA;AAAA;AAAA;AAAA,EAIA,kBAAkB,YAAY,SAAS;AACrC,SAAK,qBAAqB,MAAK;AAC/B,eAAW,QAAQ,CAAC,MAAM;AACxB,WAAK,qBAAqB,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,IAC3D,CAAC;AACD,SAAK,oBAAoB,IAAI,IAAI,OAAO;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAIA,mBAAmB,MAAM,SAAS;AAChC,WAAO,KAAK,qBAAqB,IAAI,GAAG,IAAI,IAAI,OAAO,EAAE;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA,EAIA,eAAe,MAAM,SAAS;AAC5B,WAAO,KAAK,qBAAqB,IAAI,GAAG,IAAI,IAAI,OAAO,EAAE;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgB,YAAY;AAC1B,WAAO,KAAK,kBAAkB,IAAI,UAAU;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,kBAAkB,MAAM,SAAS,SAAS,mBAAmB;AACjE,QAAI,CAAC,KAAK,QAAQ,UAAW;AAC7B,UAAM,CAAC,WAAW,YAAY,IAAI,kBAAkB,MAAM,GAAG;AAC7D,QAAI,CAAC,aAAa,CAAC,cAAc;AAC/B,YAAM,IAAI,eAAe,MAAM,SAAS,mBAAmB,gBAAgB;AAAA,IAC7E;AACA,UAAM,aAAa,MAAM,KAAK,YAAY,SAAS,SAAS;AAC5D,QAAI,eAAe,cAAc;AAC/B,YAAM,IAAI,eAAe,MAAM,SAAS,cAAc,UAAU;AAAA,IAClE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,KAAK,MAAM;AACtB,UAAM,UAAU,SAAS,QAAQ,KAAK,QAAQ,aAAa,KAAK,QAAQ;AACxE,QAAI,CAAC,WAAW,QAAQ,WAAW,EAAG,QAAO;AAC7C,QAAI;AACF,YAAM,YAAY,IAAI,IAAI,GAAG;AAC7B,aAAO,QAAQ,KAAK,CAAC,WAAW;AAC9B,YAAI,OAAO,WAAW,IAAI,GAAG;AAC3B,gBAAM,SAAS,OAAO,MAAM,CAAC;AAC7B,iBAAO,UAAU,SAAS,SAAS,MAAM;AAAA,QAC3C;AACA,eAAO,UAAU,aAAa;AAAA,MAChC,CAAC;AAAA,IACH,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,oBAAoB;AAClB,UAAM,aAAa,KAAK,QAAQ,cAAc,CAAA;AAC9C,UAAM,aAAa,KAAK,QAAQ,cAAc,CAAA;AAC9C,UAAM,YAAY,CAAC,UAAU,GAAG,UAAU,EAAE,KAAK,GAAG;AACpD,UAAM,aAAa,CAAC,UAAU,GAAG,UAAU,EAAE,KAAK,GAAG;AACrD,UAAM,WAAW,CAAC,UAAU,mBAAmB,GAAG,UAAU,EAAE,KAAK,GAAG;AACtE,UAAM,SAAS,CAAC,UAAU,SAAS,SAAS,GAAG,UAAU,EAAE,KAAK,GAAG;AACnE,WAAO;AAAA,MACL;AAAA,MACA,cAAc,SAAS;AAAA,MACvB,aAAa,QAAQ;AAAA,MACrB,WAAW,MAAM;AAAA,MACjB,eAAe,UAAU;AAAA,MACzB,yBAAyB,WAAW,KAAK,GAAG,CAAC;AAAA,MAC7C;AAAA,MACA;AAAA,MACA;AAAA,IACN,EAAM,KAAK,IAAI;AAAA,EACb;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AACT,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAK,YAAY;AACjB,SAAK,UAAU,KAAK,kBAAiB;AACrC,aAAS,KAAK,YAAY,IAAI;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAIA,iBAAiB,MAAM,SAAS;AAC9B,UAAM,UAAU,KAAK,eAAe,MAAM,OAAO;AACjD,QAAI,SAAS;AACX,YAAM,IAAI,sBAAsB,MAAM,SAAS,QAAQ,MAAM;AAAA,IAC/D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,YAAY,SAAS,WAAW;AACpC,UAAM,UAAU,IAAI,YAAW;AAC/B,UAAM,OAAO,QAAQ,OAAO,OAAO;AACnC,UAAM,aAAa,MAAM,OAAO,OAAO;AAAA,MACrC,UAAU,YAAW;AAAA,MACrB;AAAA,IACN;AACI,UAAM,YAAY,MAAM,KAAK,IAAI,WAAW,UAAU,CAAC;AACvD,WAAO,KAAK,OAAO,aAAa,GAAG,SAAS,CAAC;AAAA,EAC/C;AAAA,EACA,KAAK,OAAO,SAAS;AACnB,QAAI,KAAK,QAAQ,QAAQ;AACvB,WAAK,QAAQ,OAAO,KAAK,EAAE,OAAO;AAAA,IACpC;AAAA,EACF;AAAA;AAAA,EAEA,IAAI,MAAM;AACR,WAAO,KAAK,KAAK,KAAK,IAAI;AAAA,EAC5B;AACF;AAGA,IAAI,mBAAmB,MAAM;AAAA,EAC3B,YAAY,SAAS;AACnB,SAAK,QAAwB,oBAAI,IAAG;AACpC,SAAK,UAAU,CAAA;AACf,SAAK,SAAS,CAAA;AACd,SAAK,UAAU;AAAA,MACb,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,GAAG;AAAA,IACT;AACI,SAAK,UAAU,KAAK,WAAU;AAC9B,SAAK,eAAe,KAAK,OAAM,KAAM,KAAK,QAAQ,cAAc;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa;AACX,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,iBAAiB;AACf,WAAO,MAAM,KAAK,OAAO,IAAI,KAAK,WAAU,EAAG,MAAM,GAAG,EAAE,CAAC;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA,EAIA,UAAU,MAAM,cAAc,YAAY;AACxC,UAAM,OAAO;AAAA,MACX,QAAQ,KAAK,WAAU,EAAG,MAAM,GAAG,EAAE;AAAA,MACrC,SAAS,KAAK;AAAA,MACd;AAAA,MACA;AAAA,MACA,WAAW,YAAY,IAAG;AAAA,MAC1B;AAAA,IACN;AACI,SAAK,MAAM,IAAI,KAAK,QAAQ,IAAI;AAChC,SAAK,IAAI,SAAS,iBAAiB,IAAI,KAAK,KAAK,MAAM,GAAG;AAC1D,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ,QAAQ,SAAS,MAAM;AAC7B,UAAM,OAAO,KAAK,MAAM,IAAI,MAAM;AAClC,QAAI,MAAM;AACR,WAAK,UAAU,YAAY,IAAG;AAC9B,WAAK,SAAS;AACd,WAAK,IAAI,SAAS,eAAe,KAAK,IAAI,KAAK,MAAM,OAAO,KAAK,UAAU,KAAK,SAAS,IAAI;AAAA,IAC/F;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,MAAM,MAAM,UAAU,OAAO;AACxC,UAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,YAAY,IAAG,IAAK;AAAA,MAC/B;AAAA,IACN;AACI,SAAK,QAAQ,KAAK,MAAM;AACxB,SAAK,IAAI,SAAS,WAAW,IAAI,MAAM,IAAI,MAAM,QAAQ,IAAI;AAC7D,QAAI,KAAK,QAAQ,UAAU;AACzB,WAAK,QAAQ,SAAS,MAAM;AAAA,IAC9B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,YAAY,OAAO,SAAS;AAC1B,UAAM,eAAe;AAAA,MACnB,MAAM;AAAA,MACN,SAAS,MAAM;AAAA,MACf,OAAO,iBAAiB,QAAQ,MAAM,QAAQ;AAAA,MAC9C,WAAW,KAAK,IAAG;AAAA,MACnB,SAAS,KAAK;AAAA,MACd,GAAG;AAAA,IACT;AACI,SAAK,OAAO,KAAK,YAAY;AAC7B,SAAK,IAAI,SAAS,mBAAmB,MAAM,OAAO,EAAE;AACpD,QAAI,KAAK,gBAAgB,KAAK,QAAQ,SAAS;AAC7C,WAAK,YAAY,YAAY;AAAA,IAC/B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,eAAe,UAAU,OAAO;AAC9B,SAAK,aAAa,gBAAgB,aAAa,UAAU;AAAA,MACvD,eAAe,KAAK,QAAQ;AAAA,MAC5B,GAAG;AAAA,IACT,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,oBAAoB,MAAM,SAAS,UAAU,SAAS;AACpD,SAAK,aAAa,kBAAkB,GAAG,IAAI,IAAI,OAAO,IAAI,UAAU;AAAA,MAClE;AAAA,IACN,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,kBAAkB,UAAU;AAC1B,SAAK,aAAa,gBAAgB,gBAAgB,UAAU;AAAA,MAC1D,eAAe,KAAK,QAAQ;AAAA,IAClC,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,oBAAoB,YAAY,UAAU,SAAS;AACjD,SAAK,aAAa,kBAAkB,YAAY,UAAU,EAAE,SAAS;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA,EAIA,mBAAmB,SAAS,UAAU,SAAS,WAAW;AACxD,SAAK,aAAa,iBAAiB,SAAS,UAAU;AAAA,MACpD;AAAA,MACA;AAAA,IACN,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa;AACX,WAAO,CAAC,GAAG,KAAK,OAAO;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AACT,WAAO,MAAM,KAAK,KAAK,MAAM,OAAM,CAAE;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ;AACN,SAAK,MAAM,MAAK;AAChB,SAAK,UAAU,CAAA;AACf,SAAK,SAAS,CAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,QAAQ;AACZ,QAAI,CAAC,KAAK,gBAAgB,CAAC,KAAK,QAAQ,WAAW,CAAC,KAAK,QAAQ,UAAU;AACzE;AAAA,IACF;AACA,UAAM,UAAU;AAAA,MACd,SAAS,KAAK;AAAA,MACd,eAAe,KAAK,QAAQ;AAAA,MAC5B,OAAO,KAAK,QAAQ;AAAA,MACpB,OAAO,KAAK,SAAQ;AAAA,MACpB,SAAS,KAAK;AAAA,MACd,QAAQ,KAAK;AAAA,MACb,WAAW,KAAK,IAAG;AAAA,IACzB;AACI,QAAI;AACF,YAAM,MAAM,KAAK,QAAQ,UAAU;AAAA,QACjC,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,mBAAkB;AAAA,QAC7C,MAAM,KAAK,UAAU,OAAO;AAAA,QAC5B,WAAW;AAAA,MACnB,CAAO;AAAA,IACH,SAAS,OAAO;AACd,WAAK,IAAI,QAAQ,8BAA8B,KAAK;AAAA,IACtD;AAAA,EACF;AAAA,EACA,YAAY,OAAO;AACjB,QAAI,KAAK,QAAQ,UAAU;AACzB,YAAM,GAAG,KAAK,QAAQ,QAAQ,WAAW;AAAA,QACvC,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,mBAAkB;AAAA,QAC7C,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,WAAW;AAAA,MACnB,CAAO,EAAE,MAAM,MAAM;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,aAAa;AACX,UAAM,QAAQ,IAAI,WAAW,EAAE;AAC/B,WAAO,gBAAgB,KAAK;AAC5B,WAAO,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAAA,EAC1E;AAAA,EACA,IAAI,OAAO,YAAY,MAAM;AAC3B,QAAI,KAAK,QAAQ,QAAQ;AACvB,WAAK,QAAQ,OAAO,KAAK,EAAE,SAAS,GAAG,IAAI;AAAA,IAC7C,WAAW,KAAK,QAAQ,OAAO;AAC7B,cAAQ,KAAK,EAAE,eAAe,OAAO,IAAI,GAAG,IAAI;AAAA,IAClD;AAAA,EACF;AACF;AAIA,IAAI,eAAe,MAAM;AAAA,EACvB,YAAY,SAAS;AACnB,SAAK,YAAY;AACjB,SAAK,mBAAmC,oBAAI,IAAG;AAC/C,SAAK,oBAAoB;AAAA,MACvB,OAAO,CAAA;AAAA,MACP,OAAO,CAAA;AAAA,MACP,SAAS,CAAA;AAAA,IACf;AACI,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO;AACL,SAAK,IAAI,SAAS,sBAAsB;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,QAAQ,WAAW;AACxB,SAAK,YAAY;AACjB,SAAK,IAAI,SAAS,kBAAkB,OAAO,KAAK,EAAE;AAClD,cAAU,YAAY;AACtB,SAAK,gBAAgB,OAAO,KAAK,MAAM;AACvC,UAAM,WAAW,SAAS,uBAAsB;AAChD,eAAW,aAAa,OAAO,YAAY;AACzC,YAAM,UAAU,KAAK,gBAAgB,SAAS;AAC9C,UAAI,SAAS;AACX,iBAAS,YAAY,OAAO;AAAA,MAC9B;AAAA,IACF;AACA,cAAU,YAAY,QAAQ;AAC9B,SAAK,IAAI,QAAQ,YAAY,OAAO,WAAW,MAAM,aAAa;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgB,aAAa,OAAO;AAClC,UAAM,UAAU,KAAK,iBAAiB,IAAI,WAAW;AACrD,QAAI,CAAC,SAAS;AACZ,WAAK,IAAI,QAAQ,wBAAwB,WAAW,EAAE;AACtD;AAAA,IACF;AACA,SAAK,WAAW,SAAS,KAAK;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAIA,cAAc,SAAS;AACrB,SAAK,oBAAoB;AAAA,MACvB,GAAG,KAAK;AAAA,MACR,GAAG;AAAA,IACT;AAAA,EACE;AAAA;AAAA;AAAA;AAAA,EAIA,UAAU;AACR,SAAK,iBAAiB,QAAQ,CAAC,YAAY;AACzC,cAAQ,OAAM;AAAA,IAChB,CAAC;AACD,SAAK,iBAAiB,MAAK;AAC3B,QAAI,KAAK,WAAW;AAClB,WAAK,UAAU,YAAY;AAAA,IAC7B;AACA,SAAK,IAAI,SAAS,oBAAoB;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgB,UAAU;AACxB,UAAM,EAAE,IAAI,MAAM,OAAO,OAAO,UAAU,QAAO,IAAK;AACtD,QAAI,YAAY,OAAO;AACrB,aAAO;AAAA,IACT;AACA,QAAI;AACF,YAAM,kBAAkB,KAAK,QAAQ,WAAW,IAAI,IAAI;AACxD,UAAI;AACJ,UAAI,mBAAmB,eAAe,IAAI,IAAI,GAAG;AAC/C,kBAAU,SAAS,cAAc,IAAI;AAAA,MACvC,OAAO;AACL,kBAAU,SAAS,cAAc,KAAK;AACtC,gBAAQ,YAAY,yBAAyB,IAAI;AACjD,YAAI,CAAC,iBAAiB;AACpB,eAAK,IAAI,QAAQ,yBAAyB,IAAI,EAAE;AAChD,kBAAQ,cAAc,eAAe,IAAI;AAAA,QAC3C;AAAA,MACF;AACA,cAAQ,aAAa,qBAAqB,EAAE;AAC5C,cAAQ,aAAa,uBAAuB,IAAI;AAChD,YAAM,gBAAgB,KAAK,aAAa,KAAK;AAC7C,WAAK,WAAW,SAAS,aAAa;AACtC,UAAI,OAAO;AACT,aAAK,YAAY,SAAS,KAAK;AAAA,MACjC;AACA,WAAK,QAAQ,cAAc,SAAS,EAAE;AACtC,UAAI,YAAY,SAAS,SAAS,GAAG;AACnC,mBAAW,SAAS,UAAU;AAC5B,gBAAM,eAAe,KAAK,gBAAgB,KAAK;AAC/C,cAAI,cAAc;AAChB,oBAAQ,YAAY,YAAY;AAAA,UAClC;AAAA,QACF;AAAA,MACF;AACA,WAAK,iBAAiB,IAAI,IAAI,OAAO;AACrC,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,IAAI,SAAS,+BAA+B,EAAE,IAAI,KAAK;AAC5D,UAAI,KAAK,QAAQ,eAAe;AAC9B,eAAO,KAAK,QAAQ,cAAc,IAAI,KAAK;AAAA,MAC7C;AACA,YAAM,WAAW,SAAS,cAAc,KAAK;AAC7C,eAAS,YAAY;AACrB,eAAS,cAAc,8BAA8B,IAAI;AACzD,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa,OAAO;AAClB,UAAM,WAAW,CAAA;AACjB,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,UAAI,oBAAoB,KAAK,GAAG;AAC9B,cAAM,SAAS,KAAK,QAAQ,iBAAiB;AAAA,UAC3C,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,QAChB;AACQ,iBAAS,GAAG,IAAI;AAAA,MAClB,WAAW,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,GAAG;AAC/E,iBAAS,GAAG,IAAI,KAAK,aAAa,KAAK;AAAA,MACzC,OAAO;AACL,iBAAS,GAAG,IAAI;AAAA,MAClB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,SAAS,OAAO;AACzB,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,UAAI,UAAU,QAAQ,UAAU,OAAQ;AACxC,UAAI,QAAQ,QAAQ,SAAS,GAAG,GAAG;AACjC,gBAAQ,GAAG,IAAI;AAAA,MACjB,OAAO;AACL,YAAI,OAAO,UAAU,WAAW;AAC9B,cAAI,OAAO;AACT,oBAAQ,aAAa,KAAK,EAAE;AAAA,UAC9B,OAAO;AACL,oBAAQ,gBAAgB,GAAG;AAAA,UAC7B;AAAA,QACF,WAAW,OAAO,UAAU,UAAU;AACpC,kBAAQ,aAAa,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,QACjD,OAAO;AACL,kBAAQ,aAAa,KAAK,OAAO,KAAK,CAAC;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,YAAY,SAAS,OAAO;AAC1B,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,UAAI,UAAU,QAAQ,UAAU,OAAQ;AACxC,UAAI;AACJ,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,WAAW,CAAC,UAAU,WAAW,QAAQ,YAAY;AAC3D,mBAAW,SAAS,SAAS,GAAG,IAAI,OAAO,KAAK,IAAI,GAAG,KAAK;AAAA,MAC9D,OAAO;AACL,mBAAW,OAAO,KAAK;AAAA,MACzB;AACA,YAAM,SAAS,IAAI,QAAQ,YAAY,KAAK,EAAE,YAAW;AACzD,cAAQ,MAAM,YAAY,QAAQ,QAAQ;AAAA,IAC5C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgB,QAAQ;AACtB,QAAI,CAAC,KAAK,UAAW;AACrB,SAAK,UAAU,MAAM,QAAQ,GAAG,OAAO,KAAK;AAC5C,QAAI,OAAO,QAAQ;AACjB,WAAK,UAAU,MAAM,YAAY,GAAG,OAAO,MAAM;AAAA,IACnD;AACA,QAAI,OAAO,YAAY;AACrB,WAAK,UAAU,MAAM,aAAa,OAAO;AAAA,IAC3C;AACA,SAAK,UAAU,UAAU,IAAI,cAAc,gBAAgB,OAAO,IAAI,EAAE;AAAA,EAC1E;AAAA,EACA,IAAI,OAAO,YAAY,MAAM;AAC3B,QAAI,KAAK,QAAQ,QAAQ;AACvB,WAAK,QAAQ,OAAO,KAAK,EAAE,SAAS,GAAG,IAAI;AAAA,IAC7C,WAAW,KAAK,QAAQ,OAAO;AAC7B,cAAQ,KAAK,EAAE,cAAc,OAAO,IAAI,GAAG,IAAI;AAAA,IACjD;AAAA,EACF;AACF;AAGA,SAAS,6BAA6B;AACpC,MAAI,CAAC,eAAe,IAAI,gBAAgB,GAAG;AACzC,mBAAe;AAAA,MACb;AAAA,MACA,cAAc,YAAY;AAAA,QACxB,cAAc;AACZ,gBAAK;AACL,gBAAM,SAAS,KAAK,aAAa,EAAE,MAAM,OAAM,CAAE;AACjD,iBAAO,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAsBrB;AAAA,QACA,WAAW,qBAAqB;AAC9B,iBAAO,CAAC,WAAW,gBAAgB;AAAA,QACrC;AAAA,QACA,yBAAyB,MAAM,WAAW,UAAU;AAClD,cAAI,SAAS,aAAa,KAAK,YAAY;AACzC,kBAAM,UAAU,KAAK,WAAW,cAAc,UAAU;AACxD,gBAAI,QAAS,SAAQ,cAAc;AAAA,UACrC;AACA,cAAI,SAAS,oBAAoB,KAAK,YAAY;AAChD,kBAAM,QAAQ,KAAK,WAAW,cAAc,QAAQ;AACpD,gBAAI,MAAO,OAAM,cAAc,MAAgB,QAAQ;AAAA,UACzD;AAAA,QACF;AAAA,MACR;AAAA,IACA;AAAA,EACE;AACA,MAAI,CAAC,eAAe,IAAI,eAAe,GAAG;AACxC,mBAAe;AAAA,MACb;AAAA,MACA,cAAc,YAAY;AAAA,QACxB,cAAc;AACZ,gBAAK;AACL,gBAAM,SAAS,KAAK,aAAa,EAAE,MAAM,OAAM,CAAE;AACjD,iBAAO,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAkBrB;AAAA,MACR;AAAA,IACA;AAAA,EACE;AACA,MAAI,CAAC,eAAe,IAAI,sBAAsB,GAAG;AAC/C,mBAAe;AAAA,MACb;AAAA,MACA,cAAc,YAAY;AAAA,QACxB,cAAc;AACZ,gBAAK;AACL,gBAAM,SAAS,KAAK,aAAa,EAAE,MAAM,OAAM,CAAE;AACjD,iBAAO,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAerB;AAAA,MACR;AAAA,IACA;AAAA,EACE;AACF;AACA,SAAS,sBAAsB,MAAM,SAAS,eAAe;AAC3D,QAAM,UAAU,SAA4B,gBAAuB;AACnE,QAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,MAAI,SAAS;AACX,YAAQ,aAAa,WAAW,OAAO;AAAA,EACzC;AAIA,SAAO;AACT;AAGA,SAAS,cAAc,SAAS;AAC9B,SAAO,IAAI,aAAa,OAAO;AACjC;AACA,IAAI,eAAe,MAAM;AAAA,EACvB,YAAY,SAAS;AACnB,SAAK,YAAY;AACjB,SAAK,UAAU;AAAA,MACb,SAAS;AAAA,MACT,OAAO;AAAA,MACP,WAAW;AAAA,MACX,GAAG;AAAA,IACT;AACI,SAAK,SAAS,KAAK,aAAY;AAC/B,SAAK,eAAe,IAAI,aAAY;AACpC,SAAK,WAAW,IAAI,SAAS,EAAE,OAAO,QAAQ,OAAO,QAAQ,KAAK,QAAQ;AAC1E,SAAK,mBAAmB,IAAI,iBAAiB,EAAE,OAAO,QAAQ,OAAO,QAAQ,KAAK,QAAQ;AAC1F,SAAK,aAAa,IAAI,WAAW;AAAA,MAC/B,YAAY,QAAQ;AAAA,MACpB,SAAS,QAAQ;AAAA,MACjB,WAAW,QAAQ;AAAA,MACnB,cAAc,QAAQ;AAAA,MACtB,SAAS,QAAQ;AAAA,MACjB,QAAQ,KAAK;AAAA,IACnB,CAAK;AACD,SAAK,kBAAkB,IAAI,gBAAgB;AAAA,MACzC,YAAY,QAAQ;AAAA,MACpB,WAAW,QAAQ;AAAA,MACnB,QAAQ,KAAK;AAAA,IACnB,CAAK;AACD,SAAK,cAAc,IAAI,YAAY;AAAA,MACjC,UAAU,CAAC,IAAI,IAAI,QAAQ,UAAU,EAAE,IAAI;AAAA,MAC3C,UAAU,CAAC,IAAI,IAAI,QAAQ,UAAU,EAAE,IAAI;AAAA,IACjD,CAAK;AACD,SAAK,kBAAkB,IAAI,gBAAgB;AAAA,MACzC,WAAW,QAAQ;AAAA,MACnB,YAAY,CAAC,IAAI,IAAI,QAAQ,UAAU,EAAE,IAAI;AAAA,MAC7C,YAAY,CAAC,IAAI,IAAI,QAAQ,UAAU,EAAE,IAAI;AAAA,MAC7C,QAAQ,KAAK;AAAA,IACnB,CAAK;AACD,SAAK,IAAI,QAAQ,iBAAiB;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,OAAO;AACX,SAAK,IAAI,QAAQ,sBAAsB;AACvC,UAAM,YAAY,YAAY,IAAG;AACjC,QAAI;AACF,WAAK,YAAY,KAAK,iBAAgB;AACtC,WAAK,YAAY,cAAa;AAC9B,WAAK,WAAW,WAAU;AAC1B,iCAA0B;AAC1B,WAAK,aAAa,SAAS,WAAW;AACtC,YAAM,WAAW,YAAY,IAAG,IAAK;AACrC,WAAK,IAAI,QAAQ,0BAA0B,SAAS,QAAQ,CAAC,CAAC,IAAI;AAAA,IACpE,SAAS,OAAO;AACd,WAAK,YAAY,KAAK;AACtB,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,OAAO;AD39Ff;AC49FI,SAAK,IAAI,QAAQ,iBAAiB,KAAK,QAAQ,OAAO;AACtD,UAAM,YAAY,YAAY,IAAG;AACjC,QAAI;AACF,WAAK,aAAa,SAAS,WAAW;AACtC,YAAM,OAAO,MAAM,KAAK,WAAW,QAAQ,KAAK,QAAQ,SAAS;AAAA,QAC/D,KAAK,KAAK,QAAQ;AAAA,QAClB,UAAU,KAAK,QAAQ;AAAA,MAC/B,CAAO;AACD,WAAK,aAAa,QAAQ,IAAI;AAC9B,WAAK,mBAAmB,IAAI,iBAAiB;AAAA,QAC3C,eAAe,KAAK;AAAA,QACpB,OAAO,KAAK,QAAQ;AAAA,QACpB,QAAQ,KAAK;AAAA,QACb,UAAU,KAAK,QAAQ;AAAA,MAC/B,CAAO;AACD,UAAI,KAAK,eAAe;AACtB,aAAK,gBAAgB;AAAA,UACnB,KAAK,cAAc,qBAAqB,CAAA;AAAA,UACxC,KAAK,cAAc,gBAAgB,CAAA;AAAA,QAC7C;AACQ,aAAK,gBAAgB;AAAA,YACnB,UAAK,cAAc,sBAAnB,mBAAsC,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,EAAE,OAAO,QAAO,CAAA;AAAA,QACxF;AAAA,MACM;AACA,WAAK,aAAa,SAAS,SAAS;AACpC,WAAK,gBAAgB,QAAQ,KAAK,SAAS,UAAU;AACrD,YAAM,mBAAmB,MAAM,KAAK,gBAAgB,QAAQ,KAAK,QAAQ;AACzE,uBAAiB,QAAQ,CAAC,QAAQ,QAAQ;AACxC,aAAK,aAAa,mBAAmB,KAAK,MAAM;AAChD,aAAK,iBAAiB;AAAA,UACpB,OAAO;AAAA,UACP,OAAO;AAAA,UACP,OAAO,YAAY;AAAA,UACnB,OAAO,WAAW;AAAA,QAC5B;AAAA,MACM,CAAC;AACD,WAAK,YAAY,IAAI;AACrB,WAAK,aAAY;AACjB,YAAM,WAAW,YAAY,IAAG,IAAK;AACrC,WAAK,iBAAiB,eAAe,QAAQ;AAC7C,WAAK,IAAI,QAAQ,kBAAkB,SAAS,QAAQ,CAAC,CAAC,IAAI;AAC1D,WAAK,UAAU,eAAe,EAAE,MAAM,SAAQ,CAAE;AAChD,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,aAAa,SAAS,OAAO;AAClC,WAAK,YAAY,KAAK;AACtB,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,SAAS;AACb,UAAM,QAAQ,KAAK,aAAa,SAAQ;AACxC,QAAI,CAAC,MAAM,QAAQ,CAAC,KAAK,WAAW;AAClC,YAAM,IAAI,cAAc,iBAAiB;AAAA,IAC3C;AACA,SAAK,IAAI,QAAQ,gBAAgB;AACjC,UAAM,YAAY,YAAY,IAAG;AACjC,QAAI;AACF,WAAK,aAAa,SAAS,WAAW;AACtC,WAAK,SAAS,cAAc;AAAA,QAC1B,OAAO,MAAM;AAAA,QACb,OAAO,MAAM;AAAA,QACb,SAAS;AAAA,UACP,QAAQ,KAAK,QAAQ;AAAA,UACrB,UAAU,KAAK,QAAQ;AAAA,UACvB,SAAS,KAAK,QAAQ;AAAA,UACtB,eAAe,MAAM,KAAK;AAAA,QACpC;AAAA,MACA,CAAO;AACD,WAAK,SAAS,OAAO,MAAM,KAAK,UAAU,KAAK,SAAS;AACxD,WAAK,aAAa,SAAS,OAAO;AAClC,YAAM,aAAa,YAAY,IAAG,IAAK;AACvC,WAAK,iBAAiB,kBAAkB,UAAU;AAClD,WAAK,IAAI,QAAQ,oBAAoB,WAAW,QAAQ,CAAC,CAAC,IAAI;AAAA,IAChE,SAAS,OAAO;AACd,WAAK,aAAa,SAAS,OAAO;AAClC,WAAK,YAAY,KAAK;AACtB,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa;AACX,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AACT,WAAO,KAAK,aAAa,SAAQ;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAIA,cAAc,UAAU;AACtB,WAAO,KAAK,aAAa,UAAU,QAAQ;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAIA,GAAG,MAAM,SAAS;AAChB,WAAO,KAAK,SAAS,GAAG,MAAM,OAAO;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgB,aAAa,OAAO;AAClC,SAAK,SAAS,gBAAgB,aAAa,KAAK;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAIA,YAAY,KAAK,OAAO;AACtB,SAAK,aAAa,YAAY,KAAK,KAAK;AACxC,UAAM,QAAQ,KAAK,aAAa,SAAQ;AACxC,QAAI,MAAM,QAAQ,KAAK,WAAW;AAChC,WAAK,SAAS,cAAc;AAAA,QAC1B,OAAO,MAAM;AAAA,MACrB,CAAO;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,YAAY,SAAS;AACzB,UAAM,SAAS,MAAM,KAAK,QAAQ,YAAY,OAAO;AACrD,QAAI,OAAO,SAAS;AAClB,WAAK,aAAa,SAAS,SAAS,OAAO,IAAI;AAC/C,YAAM,QAAQ,KAAK,aAAa,SAAQ;AACxC,WAAK,SAAS,cAAc;AAAA,QAC1B,OAAO,MAAM;AAAA,MACrB,CAAO;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,UAAU;ADxmGZ;ACymGI,SAAK,IAAI,QAAQ,oBAAoB;AACrC,eAAK,qBAAL,mBAAuB;AACvB,eAAK,aAAL,mBAAe;AACf,SAAK,SAAS,MAAK;AACnB,SAAK,aAAa,aAAY;AAC9B,QAAI,KAAK,WAAW;AAClB,WAAK,UAAU,YAAY;AAAA,IAC7B;AACA,SAAK,IAAI,QAAQ,mBAAmB;AAAA,EACtC;AAAA;AAAA,EAEA,mBAAmB;AACjB,UAAM,EAAE,cAAc,KAAK;AAC3B,QAAI,OAAO,cAAc,UAAU;AACjC,YAAM,UAAU,SAAS,cAAc,SAAS;AAChD,UAAI,CAAC,SAAS;AACZ,cAAM,IAAI,MAAM,wBAAwB,SAAS,EAAE;AAAA,MACrD;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY,MAAM;AAChB,UAAM,UAAU;AAAA,MACd,SAAS,KAAK;AAAA,MACd,eAAe,KAAK;AAAA,MACpB,gBAAgB;AAAA,MAChB,QAAQ,KAAK,QAAQ;AAAA,MACrB,UAAU,KAAK,QAAQ;AAAA,MACvB,SAAS,KAAK,QAAQ;AAAA,MACtB,YAAY;AAAA,MACZ,eAAe,KAAK,aAAa;AAAA,IACvC;AACI,SAAK,UAAU,IAAI,YAAY;AAAA,MAC7B,YAAY,KAAK,QAAQ;AAAA,MACzB,WAAW,KAAK,QAAQ;AAAA,MACxB,SAAS,KAAK,QAAQ;AAAA,MACtB,cAAc,KAAK;AAAA,MACnB,UAAU,KAAK;AAAA,MACf,kBAAkB,KAAK;AAAA,MACvB;AAAA,MACA,OAAO,KAAK,QAAQ;AAAA,MACpB,QAAQ,KAAK;AAAA,IACnB,CAAK;AAAA,EACH;AAAA,EACA,eAAe;AACb,UAAM,aAA6B,oBAAI,IAAG;AAC1C,UAAM,QAAQ,KAAK,aAAa,SAAQ;AACxC,UAAM,WAAW,QAAQ,CAAC,QAAQ,QAAQ;AACxC,UAAI,OAAO,WAAW,YAAY,OAAO,WAAW;AAClD,cAAM,CAAC,MAAM,OAAO,IAAI,IAAI,MAAM,GAAG;AACrC,mBAAW,IAAI,MAAM;AAAA,UACnB;AAAA,UACA;AAAA,UACA,WAAW,OAAO;AAAA,UAClB,UAAU,OAAO,YAAY;AAAA,QACvC,CAAS;AAAA,MACH;AAAA,IACF,CAAC;AACD,SAAK,WAAW,IAAI,aAAa;AAAA,MAC/B,kBAAkB,KAAK;AAAA,MACvB;AAAA,MACA,eAAe,CAAC,SAAS,gBAAgB;AACvC,gBAAQ,UAAU,KAAK;AACvB,gBAAQ,cAAc;AAAA,MACxB;AAAA,MACA,OAAO,KAAK,QAAQ;AAAA,MACpB,QAAQ,KAAK;AAAA,MACb,eAAe,CAAC,aAAa,UAAU;AACrC,aAAK,IAAI,SAAS,mBAAmB,WAAW,KAAK,KAAK;AAC1D,aAAK,UAAU,mBAAmB,EAAE,aAAa,OAAO,MAAM,SAAS;AACvE,eAAO,sBAAsB,SAAS,MAAM,OAAO;AAAA,MACrD;AAAA,IACN,CAAK;AACD,SAAK,SAAS,KAAI;AAAA,EACpB;AAAA,EACA,YAAY,OAAO;ADrrGrB;ACsrGI,UAAM,eAAe,iBAAiB,oBAAoB,QAAQ,EAAE,MAAM,cAAc,SAAS,MAAM,SAAS,WAAW,KAAK,IAAG,EAAE;AACrI,SAAK,aAAa,SAAS,YAAY;AACvC,eAAK,qBAAL,mBAAuB,YAAY;AACnC,SAAK,UAAU,cAAc,EAAE,OAAO,MAAM,SAAS;AACrD,QAAI,KAAK,QAAQ,SAAS;AACxB,WAAK,QAAQ,QAAQ,YAAY;AAAA,IACnC;AAAA,EACF;AAAA,EACA,UAAU,MAAM,MAAM;AD9rGxB;AC+rGI,UAAM,QAAQ,SAAS,YAAY,MAAM,OAAM,UAAK,qBAAL,mBAAuB,YAAY;AAClF,SAAK,SAAS,KAAK,KAAK;AACxB,QAAI,KAAK,QAAQ,SAAS;AACxB,WAAK,QAAQ,QAAQ,KAAK;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,eAAe;AACb,UAAM,SAAS;AACf,WAAO;AAAA,MACL,OAAO,IAAI,SAAS;AAClB,YAAI,KAAK,QAAQ,MAAO,SAAQ,MAAM,QAAQ,GAAG,IAAI;AAAA,MACvD;AAAA,MACA,MAAM,IAAI,SAAS,QAAQ,KAAK,QAAQ,GAAG,IAAI;AAAA,MAC/C,MAAM,IAAI,SAAS,QAAQ,KAAK,QAAQ,GAAG,IAAI;AAAA,MAC/C,OAAO,IAAI,SAAS,QAAQ,MAAM,QAAQ,GAAG,IAAI;AAAA,IACvD;AAAA,EACE;AAAA,EACA,IAAI,OAAO,YAAY,MAAM;AAC3B,SAAK,OAAO,KAAK,EAAE,SAAS,GAAG,IAAI;AAAA,EACrC;AACF;ACtrGO,MAAM,kBAA+D;AAsE5E,eAAsB,MACpB,WACA,SACsB;AFtGxB;AEuGE,QAAM,iBAAiC;AAAA,IACrC;AAAA,IACA,SAAS,QAAQ;AAAA,IACjB,YAAY,QAAQ;AAAA,IACpB,YAAY,QAAQ;AAAA,IACpB,SAAS,QAAQ;AAAA,IACjB,QAAQ,QAAQ;AAAA,IAChB,UAAU,QAAQ;AAAA,IAClB,WAAW,QAAQ;AAAA,IACnB,cAAc,QAAQ;AAAA,IACtB,OAAO,QAAQ;AAAA,IACf,WAAW,QAAQ;AAAA,IACnB,SAAS,QAAQ;AAAA,IACjB,SAAS,QAAQ,UAAU,CAAC,UAAA;AFpHhC,UAAAC;AEoH0C,cAAAA,MAAA,QAAQ,YAAR,gBAAAA,IAAA,cAAkB,IAAI,MAAM,MAAM,OAAO;AAAA,QAAK;AAAA,IACpF,UAAU,QAAQ;AAAA,EAAA;AAGpB,QAAM,UAAU,cAAc,cAAc;AAE5C,MAAI;AACF,UAAM,QAAQ,KAAA;AACd,UAAM,QAAQ,KAAA;AACd,UAAM,QAAQ,OAAA;AAEd,kBAAQ,WAAR,iCAAiB,QAAQ;EAC3B,SAAS,OAAO;AACd,UAAM,MAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AACpE,kBAAQ,YAAR,iCAAkB;AAClB,UAAM;AAAA,EACR;AAEA,SAAO;AAAA,IACL;AAAA,IACA,SAAS,MAAM,QAAQ,QAAA;AAAA,EAAQ;AAEnC;AAcO,SAAS,WAAW,OAAuB;AAChD,QAAM,QAAQ,CAAC,SAAS;AACtB,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAK,MAAM;AACX,SAAK,OAAO,KAAK,WAAW,MAAM,IAAI,OAAO,WAAW,IAAI;AAC5D,SAAK,cAAc;AACnB,aAAS,KAAK,YAAY,IAAI;AAAA,EAChC,CAAC;AACH;AAQO,SAAS,cAAc,YAAoB,UAAkB,iBAAuB;AACzF,QAAM,SAAS;AAAA,IACb,GAAG,UAAU,YAAY,OAAO;AAAA,IAChC,GAAG,UAAU,YAAY,OAAO;AAAA,EAAA;AAGlC,SAAO,QAAQ,CAAC,SAAS;AACvB,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAK,MAAM;AACX,SAAK,OAAO;AACZ,SAAK,KAAK,KAAK,SAAS,KAAK,IAAI,WAAW;AAC5C,QAAI,KAAK,SAAS,KAAK,GAAG;AACxB,WAAK,cAAc;AAAA,IACrB;AACA,aAAS,KAAK,YAAY,IAAI;AAAA,EAChC,CAAC;AACH;AAKO,SAAS,cAAsB;AACpC,QAAM,MAAM;AACZ,MAAI,WAAW,aAAa,QAAQ,GAAG;AAEvC,MAAI,CAAC,UAAU;AACb,eAAW,GAAG,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,UAAU,GAAG,EAAE,CAAC;AACvE,QAAI;AACF,mBAAa,QAAQ,KAAK,QAAQ;AAAA,IACpC,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,SAAO;AACT;AAKO,SAAS,kBAA0B;AACxC,QAAM,YAAY,CAAC,QACjB,MAAM,KAAK,EAAE,QAAQ,IAAA,GAAO,MAAM,KAAK,MAAM,KAAK,OAAA,IAAW,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE;AACxF,SAAO,UAAU,EAAE;AACrB;AAKO,SAAS,iBAAyB;AACvC,QAAM,YAAY,CAAC,QACjB,MAAM,KAAK,EAAE,QAAQ,IAAA,GAAO,MAAM,KAAK,MAAM,KAAK,OAAA,IAAW,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE;AACxF,SAAO,UAAU,EAAE;AACrB;AAKO,SAAS,sBAA8B;AAC5C,QAAM,UAAU,gBAAA;AAChB,QAAM,SAAS,eAAA;AACf,SAAO,MAAM,OAAO,IAAI,MAAM;AAChC;AASA,MAAA,QAAe;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","x_google_ignoreList":[0]}
|