ai 3.0.8 → 3.1.0-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -4
- package/core/dist/index.d.mts +480 -0
- package/core/dist/index.d.ts +480 -0
- package/core/dist/index.js +1528 -0
- package/core/dist/index.js.map +1 -0
- package/core/dist/index.mjs +1479 -0
- package/core/dist/index.mjs.map +1 -0
- package/package.json +20 -3
- package/provider/dist/chunk-3DTRVHCT.mjs +5046 -0
- package/provider/dist/chunk-3DTRVHCT.mjs.map +1 -0
- package/provider/dist/chunk-4OUDS3CP.mjs +30 -0
- package/provider/dist/chunk-4OUDS3CP.mjs.map +1 -0
- package/provider/dist/chunk-5IYCPJBV.mjs +56 -0
- package/provider/dist/chunk-5IYCPJBV.mjs.map +1 -0
- package/provider/dist/chunk-VB2TCVQ4.mjs +6746 -0
- package/provider/dist/chunk-VB2TCVQ4.mjs.map +1 -0
- package/provider/dist/chunk-VYIXVZ6L.mjs +317 -0
- package/provider/dist/chunk-VYIXVZ6L.mjs.map +1 -0
- package/provider/dist/chunk-WTOUHN6A.mjs +2251 -0
- package/provider/dist/chunk-WTOUHN6A.mjs.map +1 -0
- package/provider/dist/client-22WAAXR7.mjs +10 -0
- package/provider/dist/client-22WAAXR7.mjs.map +1 -0
- package/provider/dist/fileFromPath-23RINPB2.mjs +115 -0
- package/provider/dist/fileFromPath-23RINPB2.mjs.map +1 -0
- package/provider/dist/index.d.mts +387 -0
- package/provider/dist/index.d.ts +387 -0
- package/provider/dist/index.js +26487 -0
- package/provider/dist/index.js.map +1 -0
- package/provider/dist/index.mjs +8087 -0
- package/provider/dist/index.mjs.map +1 -0
- package/provider/dist/lib-BZMMM4HX.mjs +20 -0
- package/provider/dist/lib-BZMMM4HX.mjs.map +1 -0
- package/provider/dist/openai-3YL4AWLI.mjs +3451 -0
- package/provider/dist/openai-3YL4AWLI.mjs.map +1 -0
- package/rsc/dist/index.d.ts +4 -3
- package/rsc/dist/rsc-server.d.mts +3 -2
- package/rsc/dist/rsc-server.mjs.map +1 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/version.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/_shims/registry.ts","../../../../node_modules/.pnpm/web-streams-polyfill@4.0.0-beta.3/node_modules/web-streams-polyfill/dist/ponyfill.js","../../../../node_modules/.pnpm/formdata-node@4.4.1/node_modules/formdata-node/lib/cjs/isFunction.js","../../../../node_modules/.pnpm/formdata-node@4.4.1/node_modules/formdata-node/lib/cjs/blobHelpers.js","../../../../node_modules/.pnpm/formdata-node@4.4.1/node_modules/formdata-node/lib/cjs/Blob.js","../../../../node_modules/.pnpm/formdata-node@4.4.1/node_modules/formdata-node/lib/cjs/File.js","../../../../node_modules/.pnpm/formdata-node@4.4.1/node_modules/formdata-node/lib/cjs/isFile.js","../../../../node_modules/.pnpm/formdata-node@4.4.1/node_modules/formdata-node/lib/cjs/isBlob.js","../../../../node_modules/.pnpm/formdata-node@4.4.1/node_modules/formdata-node/lib/cjs/deprecateConstructorEntries.js","../../../../node_modules/.pnpm/formdata-node@4.4.1/node_modules/formdata-node/lib/cjs/FormData.js","../../../../node_modules/.pnpm/formdata-node@4.4.1/node_modules/formdata-node/lib/cjs/index.js","../../../../node_modules/.pnpm/form-data-encoder@1.7.2/node_modules/form-data-encoder/lib/cjs/util/createBoundary.js","../../../../node_modules/.pnpm/form-data-encoder@1.7.2/node_modules/form-data-encoder/lib/cjs/util/isPlainObject.js","../../../../node_modules/.pnpm/form-data-encoder@1.7.2/node_modules/form-data-encoder/lib/cjs/util/normalizeValue.js","../../../../node_modules/.pnpm/form-data-encoder@1.7.2/node_modules/form-data-encoder/lib/cjs/util/escapeName.js","../../../../node_modules/.pnpm/form-data-encoder@1.7.2/node_modules/form-data-encoder/lib/cjs/util/isFunction.js","../../../../node_modules/.pnpm/form-data-encoder@1.7.2/node_modules/form-data-encoder/lib/cjs/util/isFileLike.js","../../../../node_modules/.pnpm/form-data-encoder@1.7.2/node_modules/form-data-encoder/lib/cjs/util/isFormData.js","../../../../node_modules/.pnpm/form-data-encoder@1.7.2/node_modules/form-data-encoder/lib/cjs/FormDataEncoder.js","../../../../node_modules/.pnpm/form-data-encoder@1.7.2/node_modules/form-data-encoder/lib/cjs/FileLike.js","../../../../node_modules/.pnpm/form-data-encoder@1.7.2/node_modules/form-data-encoder/lib/cjs/FormDataLike.js","../../../../node_modules/.pnpm/form-data-encoder@1.7.2/node_modules/form-data-encoder/lib/cjs/index.js","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/_shims/MultipartBody.ts","../../../../node_modules/.pnpm/formdata-node@4.4.1/node_modules/formdata-node/lib/cjs/isPlainObject.js","../../../../node_modules/.pnpm/formdata-node@4.4.1/node_modules/formdata-node/lib/cjs/fileFromPath.js","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/_shims/node-runtime.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/_shims/auto/runtime-node.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/_shims/index.js","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/error.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/streaming.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/uploads.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/core.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/pagination.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resource.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/chat/completions.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/chat/chat.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/chat/index.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/audio/speech.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/audio/transcriptions.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/audio/translations.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/audio/audio.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/beta/assistants/files.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/beta/assistants/assistants.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/lib/RunnableFunction.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/lib/chatCompletionUtils.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/lib/AbstractChatCompletionRunner.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/lib/ChatCompletionRunner.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/lib/ChatCompletionStream.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/lib/ChatCompletionStreamingRunner.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/beta/chat/completions.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/beta/chat/chat.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/beta/threads/messages/files.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/beta/threads/messages/messages.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/beta/threads/runs/steps.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/beta/threads/runs/runs.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/beta/threads/threads.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/beta/beta.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/completions.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/embeddings.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/files.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/fine-tuning/jobs.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/fine-tuning/fine-tuning.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/images.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/models.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/moderations.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/resources/index.ts","../../../../node_modules/.pnpm/openai@4.28.4/node_modules/openai/src/index.ts","../fireworks/fireworks-facade.ts","../../core/language-model/errors/load-api-key-error.ts","../../core/language-model/util/load-api-key.ts","../openai/create-openai-client.ts","../openai/openai-chat-language-model.ts","../../core/util/try-json-parse.ts","../../streams/ai-stream.ts","../../core/util/uint8-utils.ts","../openai/convert-to-openai-chat-messages.ts","../mistral/mistral-facade.ts","../../core/language-model/errors/unsupported-functionality-error.ts","../mistral/convert-to-mistral-chat-prompt.ts","../mistral/mistral-chat-language-model.ts","../mistral/create-mistral-client.ts","../openai/openai-facade.ts","../perplexity/perplexity-facade.ts"],"sourcesContent":["export const VERSION = '4.28.4'; // x-release-please-version\n","/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nimport { type RequestOptions } from '../core';\n\nexport interface Shims {\n kind: string;\n fetch: any;\n Request: any;\n Response: any;\n Headers: any;\n FormData: any;\n Blob: any;\n File: any;\n ReadableStream: any;\n getMultipartRequestOptions: <T = Record<string, unknown>>(\n form: Shims['FormData'],\n opts: RequestOptions<T>,\n ) => Promise<RequestOptions<T>>;\n getDefaultAgent: (url: string) => any;\n fileFromPath:\n | ((path: string, filename?: string, options?: {}) => Promise<Shims['File']>)\n | ((path: string, options?: {}) => Promise<Shims['File']>);\n isFsReadStream: (value: any) => boolean;\n}\n\nexport let auto = false;\nexport let kind: Shims['kind'] | undefined = undefined;\nexport let fetch: Shims['fetch'] | undefined = undefined;\nexport let Request: Shims['Request'] | undefined = undefined;\nexport let Response: Shims['Response'] | undefined = undefined;\nexport let Headers: Shims['Headers'] | undefined = undefined;\nexport let FormData: Shims['FormData'] | undefined = undefined;\nexport let Blob: Shims['Blob'] | undefined = undefined;\nexport let File: Shims['File'] | undefined = undefined;\nexport let ReadableStream: Shims['ReadableStream'] | undefined = undefined;\nexport let getMultipartRequestOptions: Shims['getMultipartRequestOptions'] | undefined = undefined;\nexport let getDefaultAgent: Shims['getDefaultAgent'] | undefined = undefined;\nexport let fileFromPath: Shims['fileFromPath'] | undefined = undefined;\nexport let isFsReadStream: Shims['isFsReadStream'] | undefined = undefined;\n\nexport function setShims(shims: Shims, options: { auto: boolean } = { auto: false }) {\n if (auto) {\n throw new Error(\n `you must \\`import 'openai/shims/${shims.kind}'\\` before importing anything else from openai`,\n );\n }\n if (kind) {\n throw new Error(`can't \\`import 'openai/shims/${shims.kind}'\\` after \\`import 'openai/shims/${kind}'\\``);\n }\n auto = options.auto;\n kind = shims.kind;\n fetch = shims.fetch;\n Request = shims.Request;\n Response = shims.Response;\n Headers = shims.Headers;\n FormData = shims.FormData;\n Blob = shims.Blob;\n File = shims.File;\n ReadableStream = shims.ReadableStream;\n getMultipartRequestOptions = shims.getMultipartRequestOptions;\n getDefaultAgent = shims.getDefaultAgent;\n fileFromPath = shims.fileFromPath;\n isFsReadStream = shims.isFsReadStream;\n}\n","/**\n * @license\n * web-streams-polyfill v4.0.0-beta.3\n * Copyright 2021 Mattias Buelens, Diwank Singh Tomer and other contributors.\n * This code is released under the MIT license.\n * SPDX-License-Identifier: MIT\n */\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).WebStreamsPolyfill={})}(this,(function(e){\"use strict\";const t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?Symbol:e=>`Symbol(${e})`;function r(){}function o(e){return\"object\"==typeof e&&null!==e||\"function\"==typeof e}const n=r;function a(e,t){try{Object.defineProperty(e,\"name\",{value:t,configurable:!0})}catch(e){}}const i=Promise,l=Promise.prototype.then,s=Promise.resolve.bind(i),u=Promise.reject.bind(i);function c(e){return new i(e)}function d(e){return s(e)}function f(e){return u(e)}function b(e,t,r){return l.call(e,t,r)}function h(e,t,r){b(b(e,t,r),void 0,n)}function _(e,t){h(e,t)}function p(e,t){h(e,void 0,t)}function m(e,t,r){return b(e,t,r)}function y(e){b(e,void 0,n)}let g=e=>{if(\"function\"==typeof queueMicrotask)g=queueMicrotask;else{const e=d(void 0);g=t=>b(e,t)}return g(e)};function S(e,t,r){if(\"function\"!=typeof e)throw new TypeError(\"Argument is not a function\");return Function.prototype.apply.call(e,t,r)}function w(e,t,r){try{return d(S(e,t,r))}catch(e){return f(e)}}class v{constructor(){this._cursor=0,this._size=0,this._front={_elements:[],_next:void 0},this._back=this._front,this._cursor=0,this._size=0}get length(){return this._size}push(e){const t=this._back;let r=t;16383===t._elements.length&&(r={_elements:[],_next:void 0}),t._elements.push(e),r!==t&&(this._back=r,t._next=r),++this._size}shift(){const e=this._front;let t=e;const r=this._cursor;let o=r+1;const n=e._elements,a=n[r];return 16384===o&&(t=e._next,o=0),--this._size,this._cursor=o,e!==t&&(this._front=t),n[r]=void 0,a}forEach(e){let t=this._cursor,r=this._front,o=r._elements;for(;!(t===o.length&&void 0===r._next||t===o.length&&(r=r._next,o=r._elements,t=0,0===o.length));)e(o[t]),++t}peek(){const e=this._front,t=this._cursor;return e._elements[t]}}const R=t(\"[[AbortSteps]]\"),T=t(\"[[ErrorSteps]]\"),q=t(\"[[CancelSteps]]\"),C=t(\"[[PullSteps]]\"),P=t(\"[[ReleaseSteps]]\");function E(e,t){e._ownerReadableStream=t,t._reader=e,\"readable\"===t._state?B(e):\"closed\"===t._state?function(e){B(e),z(e)}(e):A(e,t._storedError)}function W(e,t){return Xt(e._ownerReadableStream,t)}function O(e){const t=e._ownerReadableStream;\"readable\"===t._state?j(e,new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\")):function(e,t){A(e,t)}(e,new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\")),t._readableStreamController[P](),t._reader=void 0,e._ownerReadableStream=void 0}function k(e){return new TypeError(\"Cannot \"+e+\" a stream using a released reader\")}function B(e){e._closedPromise=c(((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r}))}function A(e,t){B(e),j(e,t)}function j(e,t){void 0!==e._closedPromise_reject&&(y(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0)}function z(e){void 0!==e._closedPromise_resolve&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0)}const L=Number.isFinite||function(e){return\"number\"==typeof e&&isFinite(e)},F=Math.trunc||function(e){return e<0?Math.ceil(e):Math.floor(e)};function D(e,t){if(void 0!==e&&(\"object\"!=typeof(r=e)&&\"function\"!=typeof r))throw new TypeError(`${t} is not an object.`);var r}function I(e,t){if(\"function\"!=typeof e)throw new TypeError(`${t} is not a function.`)}function $(e,t){if(!function(e){return\"object\"==typeof e&&null!==e||\"function\"==typeof e}(e))throw new TypeError(`${t} is not an object.`)}function M(e,t,r){if(void 0===e)throw new TypeError(`Parameter ${t} is required in '${r}'.`)}function Y(e,t,r){if(void 0===e)throw new TypeError(`${t} is required in '${r}'.`)}function Q(e){return Number(e)}function N(e){return 0===e?0:e}function x(e,t){const r=Number.MAX_SAFE_INTEGER;let o=Number(e);if(o=N(o),!L(o))throw new TypeError(`${t} is not a finite number`);if(o=function(e){return N(F(e))}(o),o<0||o>r)throw new TypeError(`${t} is outside the accepted range of 0 to ${r}, inclusive`);return L(o)&&0!==o?o:0}function H(e){if(!o(e))return!1;if(\"function\"!=typeof e.getReader)return!1;try{return\"boolean\"==typeof e.locked}catch(e){return!1}}function V(e){if(!o(e))return!1;if(\"function\"!=typeof e.getWriter)return!1;try{return\"boolean\"==typeof e.locked}catch(e){return!1}}function U(e,t){if(!Ut(e))throw new TypeError(`${t} is not a ReadableStream.`)}function G(e,t){e._reader._readRequests.push(t)}function X(e,t,r){const o=e._reader._readRequests.shift();r?o._closeSteps():o._chunkSteps(t)}function J(e){return e._reader._readRequests.length}function K(e){const t=e._reader;return void 0!==t&&!!Z(t)}class ReadableStreamDefaultReader{constructor(e){if(M(e,1,\"ReadableStreamDefaultReader\"),U(e,\"First parameter\"),Gt(e))throw new TypeError(\"This stream has already been locked for exclusive reading by another reader\");E(this,e),this._readRequests=new v}get closed(){return Z(this)?this._closedPromise:f(te(\"closed\"))}cancel(e){return Z(this)?void 0===this._ownerReadableStream?f(k(\"cancel\")):W(this,e):f(te(\"cancel\"))}read(){if(!Z(this))return f(te(\"read\"));if(void 0===this._ownerReadableStream)return f(k(\"read from\"));let e,t;const r=c(((r,o)=>{e=r,t=o}));return function(e,t){const r=e._ownerReadableStream;r._disturbed=!0,\"closed\"===r._state?t._closeSteps():\"errored\"===r._state?t._errorSteps(r._storedError):r._readableStreamController[C](t)}(this,{_chunkSteps:t=>e({value:t,done:!1}),_closeSteps:()=>e({value:void 0,done:!0}),_errorSteps:e=>t(e)}),r}releaseLock(){if(!Z(this))throw te(\"releaseLock\");void 0!==this._ownerReadableStream&&function(e){O(e);const t=new TypeError(\"Reader was released\");ee(e,t)}(this)}}function Z(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_readRequests\")&&e instanceof ReadableStreamDefaultReader)}function ee(e,t){const r=e._readRequests;e._readRequests=new v,r.forEach((e=>{e._errorSteps(t)}))}function te(e){return new TypeError(`ReadableStreamDefaultReader.prototype.${e} can only be used on a ReadableStreamDefaultReader`)}Object.defineProperties(ReadableStreamDefaultReader.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),a(ReadableStreamDefaultReader.prototype.cancel,\"cancel\"),a(ReadableStreamDefaultReader.prototype.read,\"read\"),a(ReadableStreamDefaultReader.prototype.releaseLock,\"releaseLock\"),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(ReadableStreamDefaultReader.prototype,t.toStringTag,{value:\"ReadableStreamDefaultReader\",configurable:!0});class re{constructor(e,t){this._ongoingPromise=void 0,this._isFinished=!1,this._reader=e,this._preventCancel=t}next(){const e=()=>this._nextSteps();return this._ongoingPromise=this._ongoingPromise?m(this._ongoingPromise,e,e):e(),this._ongoingPromise}return(e){const t=()=>this._returnSteps(e);return this._ongoingPromise?m(this._ongoingPromise,t,t):t()}_nextSteps(){if(this._isFinished)return Promise.resolve({value:void 0,done:!0});const e=this._reader;return void 0===e?f(k(\"iterate\")):b(e.read(),(e=>{var t;return this._ongoingPromise=void 0,e.done&&(this._isFinished=!0,null===(t=this._reader)||void 0===t||t.releaseLock(),this._reader=void 0),e}),(e=>{var t;throw this._ongoingPromise=void 0,this._isFinished=!0,null===(t=this._reader)||void 0===t||t.releaseLock(),this._reader=void 0,e}))}_returnSteps(e){if(this._isFinished)return Promise.resolve({value:e,done:!0});this._isFinished=!0;const t=this._reader;if(void 0===t)return f(k(\"finish iterating\"));if(this._reader=void 0,!this._preventCancel){const r=t.cancel(e);return t.releaseLock(),m(r,(()=>({value:e,done:!0})))}return t.releaseLock(),d({value:e,done:!0})}}const oe={next(){return ne(this)?this._asyncIteratorImpl.next():f(ae(\"next\"))},return(e){return ne(this)?this._asyncIteratorImpl.return(e):f(ae(\"return\"))}};function ne(e){if(!o(e))return!1;if(!Object.prototype.hasOwnProperty.call(e,\"_asyncIteratorImpl\"))return!1;try{return e._asyncIteratorImpl instanceof re}catch(e){return!1}}function ae(e){return new TypeError(`ReadableStreamAsyncIterator.${e} can only be used on a ReadableSteamAsyncIterator`)}\"symbol\"==typeof t.asyncIterator&&Object.defineProperty(oe,t.asyncIterator,{value(){return this},writable:!0,configurable:!0});const ie=Number.isNaN||function(e){return e!=e};function le(e,t,r,o,n){new Uint8Array(e).set(new Uint8Array(r,o,n),t)}function se(e){const t=function(e,t,r){if(e.slice)return e.slice(t,r);const o=r-t,n=new ArrayBuffer(o);return le(n,0,e,t,o),n}(e.buffer,e.byteOffset,e.byteOffset+e.byteLength);return new Uint8Array(t)}function ue(e){const t=e._queue.shift();return e._queueTotalSize-=t.size,e._queueTotalSize<0&&(e._queueTotalSize=0),t.value}function ce(e,t,r){if(\"number\"!=typeof(o=r)||ie(o)||o<0||r===1/0)throw new RangeError(\"Size must be a finite, non-NaN, non-negative number.\");var o;e._queue.push({value:t,size:r}),e._queueTotalSize+=r}function de(e){e._queue=new v,e._queueTotalSize=0}class ReadableStreamBYOBRequest{constructor(){throw new TypeError(\"Illegal constructor\")}get view(){if(!be(this))throw Ae(\"view\");return this._view}respond(e){if(!be(this))throw Ae(\"respond\");if(M(e,1,\"respond\"),e=x(e,\"First parameter\"),void 0===this._associatedReadableByteStreamController)throw new TypeError(\"This BYOB request has been invalidated\");this._view.buffer,function(e,t){const r=e._pendingPullIntos.peek();if(\"closed\"===e._controlledReadableByteStream._state){if(0!==t)throw new TypeError(\"bytesWritten must be 0 when calling respond() on a closed stream\")}else{if(0===t)throw new TypeError(\"bytesWritten must be greater than 0 when calling respond() on a readable stream\");if(r.bytesFilled+t>r.byteLength)throw new RangeError(\"bytesWritten out of range\")}r.buffer=r.buffer,Ce(e,t)}(this._associatedReadableByteStreamController,e)}respondWithNewView(e){if(!be(this))throw Ae(\"respondWithNewView\");if(M(e,1,\"respondWithNewView\"),!ArrayBuffer.isView(e))throw new TypeError(\"You can only respond with array buffer views\");if(void 0===this._associatedReadableByteStreamController)throw new TypeError(\"This BYOB request has been invalidated\");e.buffer,function(e,t){const r=e._pendingPullIntos.peek();if(\"closed\"===e._controlledReadableByteStream._state){if(0!==t.byteLength)throw new TypeError(\"The view's length must be 0 when calling respondWithNewView() on a closed stream\")}else if(0===t.byteLength)throw new TypeError(\"The view's length must be greater than 0 when calling respondWithNewView() on a readable stream\");if(r.byteOffset+r.bytesFilled!==t.byteOffset)throw new RangeError(\"The region specified by view does not match byobRequest\");if(r.bufferByteLength!==t.buffer.byteLength)throw new RangeError(\"The buffer of view has different capacity than byobRequest\");if(r.bytesFilled+t.byteLength>r.byteLength)throw new RangeError(\"The region specified by view is larger than byobRequest\");const o=t.byteLength;r.buffer=t.buffer,Ce(e,o)}(this._associatedReadableByteStreamController,e)}}Object.defineProperties(ReadableStreamBYOBRequest.prototype,{respond:{enumerable:!0},respondWithNewView:{enumerable:!0},view:{enumerable:!0}}),a(ReadableStreamBYOBRequest.prototype.respond,\"respond\"),a(ReadableStreamBYOBRequest.prototype.respondWithNewView,\"respondWithNewView\"),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(ReadableStreamBYOBRequest.prototype,t.toStringTag,{value:\"ReadableStreamBYOBRequest\",configurable:!0});class ReadableByteStreamController{constructor(){throw new TypeError(\"Illegal constructor\")}get byobRequest(){if(!fe(this))throw je(\"byobRequest\");return function(e){if(null===e._byobRequest&&e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek(),r=new Uint8Array(t.buffer,t.byteOffset+t.bytesFilled,t.byteLength-t.bytesFilled),o=Object.create(ReadableStreamBYOBRequest.prototype);!function(e,t,r){e._associatedReadableByteStreamController=t,e._view=r}(o,e,r),e._byobRequest=o}return e._byobRequest}(this)}get desiredSize(){if(!fe(this))throw je(\"desiredSize\");return ke(this)}close(){if(!fe(this))throw je(\"close\");if(this._closeRequested)throw new TypeError(\"The stream has already been closed; do not close it again!\");const e=this._controlledReadableByteStream._state;if(\"readable\"!==e)throw new TypeError(`The stream (in ${e} state) is not in the readable state and cannot be closed`);!function(e){const t=e._controlledReadableByteStream;if(e._closeRequested||\"readable\"!==t._state)return;if(e._queueTotalSize>0)return void(e._closeRequested=!0);if(e._pendingPullIntos.length>0){if(e._pendingPullIntos.peek().bytesFilled>0){const t=new TypeError(\"Insufficient bytes to fill elements in the given buffer\");throw We(e,t),t}}Ee(e),Jt(t)}(this)}enqueue(e){if(!fe(this))throw je(\"enqueue\");if(M(e,1,\"enqueue\"),!ArrayBuffer.isView(e))throw new TypeError(\"chunk must be an array buffer view\");if(0===e.byteLength)throw new TypeError(\"chunk must have non-zero byteLength\");if(0===e.buffer.byteLength)throw new TypeError(\"chunk's buffer must have non-zero byteLength\");if(this._closeRequested)throw new TypeError(\"stream is closed or draining\");const t=this._controlledReadableByteStream._state;if(\"readable\"!==t)throw new TypeError(`The stream (in ${t} state) is not in the readable state and cannot be enqueued to`);!function(e,t){const r=e._controlledReadableByteStream;if(e._closeRequested||\"readable\"!==r._state)return;const o=t.buffer,n=t.byteOffset,a=t.byteLength,i=o;if(e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek();t.buffer,0,Te(e),t.buffer=t.buffer,\"none\"===t.readerType&&Se(e,t)}if(K(r))if(function(e){const t=e._controlledReadableByteStream._reader;for(;t._readRequests.length>0;){if(0===e._queueTotalSize)return;Oe(e,t._readRequests.shift())}}(e),0===J(r))ye(e,i,n,a);else{e._pendingPullIntos.length>0&&Pe(e);X(r,new Uint8Array(i,n,a),!1)}else Fe(r)?(ye(e,i,n,a),qe(e)):ye(e,i,n,a);he(e)}(this,e)}error(e){if(!fe(this))throw je(\"error\");We(this,e)}[q](e){_e(this),de(this);const t=this._cancelAlgorithm(e);return Ee(this),t}[C](e){const t=this._controlledReadableByteStream;if(this._queueTotalSize>0)return void Oe(this,e);const r=this._autoAllocateChunkSize;if(void 0!==r){let t;try{t=new ArrayBuffer(r)}catch(t){return void e._errorSteps(t)}const o={buffer:t,bufferByteLength:r,byteOffset:0,byteLength:r,bytesFilled:0,elementSize:1,viewConstructor:Uint8Array,readerType:\"default\"};this._pendingPullIntos.push(o)}G(t,e),he(this)}[P](){if(this._pendingPullIntos.length>0){const e=this._pendingPullIntos.peek();e.readerType=\"none\",this._pendingPullIntos=new v,this._pendingPullIntos.push(e)}}}function fe(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledReadableByteStream\")&&e instanceof ReadableByteStreamController)}function be(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_associatedReadableByteStreamController\")&&e instanceof ReadableStreamBYOBRequest)}function he(e){const t=function(e){const t=e._controlledReadableByteStream;if(\"readable\"!==t._state)return!1;if(e._closeRequested)return!1;if(!e._started)return!1;if(K(t)&&J(t)>0)return!0;if(Fe(t)&&Le(t)>0)return!0;if(ke(e)>0)return!0;return!1}(e);if(!t)return;if(e._pulling)return void(e._pullAgain=!0);e._pulling=!0;h(e._pullAlgorithm(),(()=>(e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,he(e)),null)),(t=>(We(e,t),null)))}function _e(e){Te(e),e._pendingPullIntos=new v}function pe(e,t){let r=!1;\"closed\"===e._state&&(r=!0);const o=me(t);\"default\"===t.readerType?X(e,o,r):function(e,t,r){const o=e._reader._readIntoRequests.shift();r?o._closeSteps(t):o._chunkSteps(t)}(e,o,r)}function me(e){const t=e.bytesFilled,r=e.elementSize;return new e.viewConstructor(e.buffer,e.byteOffset,t/r)}function ye(e,t,r,o){e._queue.push({buffer:t,byteOffset:r,byteLength:o}),e._queueTotalSize+=o}function ge(e,t,r,o){let n;try{n=t.slice(r,r+o)}catch(t){throw We(e,t),t}ye(e,n,0,o)}function Se(e,t){t.bytesFilled>0&&ge(e,t.buffer,t.byteOffset,t.bytesFilled),Pe(e)}function we(e,t){const r=t.elementSize,o=t.bytesFilled-t.bytesFilled%r,n=Math.min(e._queueTotalSize,t.byteLength-t.bytesFilled),a=t.bytesFilled+n,i=a-a%r;let l=n,s=!1;i>o&&(l=i-t.bytesFilled,s=!0);const u=e._queue;for(;l>0;){const r=u.peek(),o=Math.min(l,r.byteLength),n=t.byteOffset+t.bytesFilled;le(t.buffer,n,r.buffer,r.byteOffset,o),r.byteLength===o?u.shift():(r.byteOffset+=o,r.byteLength-=o),e._queueTotalSize-=o,ve(e,o,t),l-=o}return s}function ve(e,t,r){r.bytesFilled+=t}function Re(e){0===e._queueTotalSize&&e._closeRequested?(Ee(e),Jt(e._controlledReadableByteStream)):he(e)}function Te(e){null!==e._byobRequest&&(e._byobRequest._associatedReadableByteStreamController=void 0,e._byobRequest._view=null,e._byobRequest=null)}function qe(e){for(;e._pendingPullIntos.length>0;){if(0===e._queueTotalSize)return;const t=e._pendingPullIntos.peek();we(e,t)&&(Pe(e),pe(e._controlledReadableByteStream,t))}}function Ce(e,t){const r=e._pendingPullIntos.peek();Te(e);\"closed\"===e._controlledReadableByteStream._state?function(e,t){\"none\"===t.readerType&&Pe(e);const r=e._controlledReadableByteStream;if(Fe(r))for(;Le(r)>0;)pe(r,Pe(e))}(e,r):function(e,t,r){if(ve(0,t,r),\"none\"===r.readerType)return Se(e,r),void qe(e);if(r.bytesFilled<r.elementSize)return;Pe(e);const o=r.bytesFilled%r.elementSize;if(o>0){const t=r.byteOffset+r.bytesFilled;ge(e,r.buffer,t-o,o)}r.bytesFilled-=o,pe(e._controlledReadableByteStream,r),qe(e)}(e,t,r),he(e)}function Pe(e){return e._pendingPullIntos.shift()}function Ee(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0}function We(e,t){const r=e._controlledReadableByteStream;\"readable\"===r._state&&(_e(e),de(e),Ee(e),Kt(r,t))}function Oe(e,t){const r=e._queue.shift();e._queueTotalSize-=r.byteLength,Re(e);const o=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);t._chunkSteps(o)}function ke(e){const t=e._controlledReadableByteStream._state;return\"errored\"===t?null:\"closed\"===t?0:e._strategyHWM-e._queueTotalSize}function Be(e,t,r){const o=Object.create(ReadableByteStreamController.prototype);let n,a,i;n=void 0!==t.start?()=>t.start(o):()=>{},a=void 0!==t.pull?()=>t.pull(o):()=>d(void 0),i=void 0!==t.cancel?e=>t.cancel(e):()=>d(void 0);const l=t.autoAllocateChunkSize;if(0===l)throw new TypeError(\"autoAllocateChunkSize must be greater than 0\");!function(e,t,r,o,n,a,i){t._controlledReadableByteStream=e,t._pullAgain=!1,t._pulling=!1,t._byobRequest=null,t._queue=t._queueTotalSize=void 0,de(t),t._closeRequested=!1,t._started=!1,t._strategyHWM=a,t._pullAlgorithm=o,t._cancelAlgorithm=n,t._autoAllocateChunkSize=i,t._pendingPullIntos=new v,e._readableStreamController=t,h(d(r()),(()=>(t._started=!0,he(t),null)),(e=>(We(t,e),null)))}(e,o,n,a,i,r,l)}function Ae(e){return new TypeError(`ReadableStreamBYOBRequest.prototype.${e} can only be used on a ReadableStreamBYOBRequest`)}function je(e){return new TypeError(`ReadableByteStreamController.prototype.${e} can only be used on a ReadableByteStreamController`)}function ze(e,t){e._reader._readIntoRequests.push(t)}function Le(e){return e._reader._readIntoRequests.length}function Fe(e){const t=e._reader;return void 0!==t&&!!De(t)}Object.defineProperties(ReadableByteStreamController.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},byobRequest:{enumerable:!0},desiredSize:{enumerable:!0}}),a(ReadableByteStreamController.prototype.close,\"close\"),a(ReadableByteStreamController.prototype.enqueue,\"enqueue\"),a(ReadableByteStreamController.prototype.error,\"error\"),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(ReadableByteStreamController.prototype,t.toStringTag,{value:\"ReadableByteStreamController\",configurable:!0});class ReadableStreamBYOBReader{constructor(e){if(M(e,1,\"ReadableStreamBYOBReader\"),U(e,\"First parameter\"),Gt(e))throw new TypeError(\"This stream has already been locked for exclusive reading by another reader\");if(!fe(e._readableStreamController))throw new TypeError(\"Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source\");E(this,e),this._readIntoRequests=new v}get closed(){return De(this)?this._closedPromise:f($e(\"closed\"))}cancel(e){return De(this)?void 0===this._ownerReadableStream?f(k(\"cancel\")):W(this,e):f($e(\"cancel\"))}read(e){if(!De(this))return f($e(\"read\"));if(!ArrayBuffer.isView(e))return f(new TypeError(\"view must be an array buffer view\"));if(0===e.byteLength)return f(new TypeError(\"view must have non-zero byteLength\"));if(0===e.buffer.byteLength)return f(new TypeError(\"view's buffer must have non-zero byteLength\"));if(e.buffer,void 0===this._ownerReadableStream)return f(k(\"read from\"));let t,r;const o=c(((e,o)=>{t=e,r=o}));return function(e,t,r){const o=e._ownerReadableStream;o._disturbed=!0,\"errored\"===o._state?r._errorSteps(o._storedError):function(e,t,r){const o=e._controlledReadableByteStream;let n=1;t.constructor!==DataView&&(n=t.constructor.BYTES_PER_ELEMENT);const a=t.constructor,i=t.buffer,l={buffer:i,bufferByteLength:i.byteLength,byteOffset:t.byteOffset,byteLength:t.byteLength,bytesFilled:0,elementSize:n,viewConstructor:a,readerType:\"byob\"};if(e._pendingPullIntos.length>0)return e._pendingPullIntos.push(l),void ze(o,r);if(\"closed\"!==o._state){if(e._queueTotalSize>0){if(we(e,l)){const t=me(l);return Re(e),void r._chunkSteps(t)}if(e._closeRequested){const t=new TypeError(\"Insufficient bytes to fill elements in the given buffer\");return We(e,t),void r._errorSteps(t)}}e._pendingPullIntos.push(l),ze(o,r),he(e)}else{const e=new a(l.buffer,l.byteOffset,0);r._closeSteps(e)}}(o._readableStreamController,t,r)}(this,e,{_chunkSteps:e=>t({value:e,done:!1}),_closeSteps:e=>t({value:e,done:!0}),_errorSteps:e=>r(e)}),o}releaseLock(){if(!De(this))throw $e(\"releaseLock\");void 0!==this._ownerReadableStream&&function(e){O(e);const t=new TypeError(\"Reader was released\");Ie(e,t)}(this)}}function De(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_readIntoRequests\")&&e instanceof ReadableStreamBYOBReader)}function Ie(e,t){const r=e._readIntoRequests;e._readIntoRequests=new v,r.forEach((e=>{e._errorSteps(t)}))}function $e(e){return new TypeError(`ReadableStreamBYOBReader.prototype.${e} can only be used on a ReadableStreamBYOBReader`)}function Me(e,t){const{highWaterMark:r}=e;if(void 0===r)return t;if(ie(r)||r<0)throw new RangeError(\"Invalid highWaterMark\");return r}function Ye(e){const{size:t}=e;return t||(()=>1)}function Qe(e,t){D(e,t);const r=null==e?void 0:e.highWaterMark,o=null==e?void 0:e.size;return{highWaterMark:void 0===r?void 0:Q(r),size:void 0===o?void 0:Ne(o,`${t} has member 'size' that`)}}function Ne(e,t){return I(e,t),t=>Q(e(t))}function xe(e,t,r){return I(e,r),r=>w(e,t,[r])}function He(e,t,r){return I(e,r),()=>w(e,t,[])}function Ve(e,t,r){return I(e,r),r=>S(e,t,[r])}function Ue(e,t,r){return I(e,r),(r,o)=>w(e,t,[r,o])}Object.defineProperties(ReadableStreamBYOBReader.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),a(ReadableStreamBYOBReader.prototype.cancel,\"cancel\"),a(ReadableStreamBYOBReader.prototype.read,\"read\"),a(ReadableStreamBYOBReader.prototype.releaseLock,\"releaseLock\"),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(ReadableStreamBYOBReader.prototype,t.toStringTag,{value:\"ReadableStreamBYOBReader\",configurable:!0});const Ge=\"function\"==typeof AbortController;class WritableStream{constructor(e={},t={}){void 0===e?e=null:$(e,\"First parameter\");const r=Qe(t,\"Second parameter\"),o=function(e,t){D(e,t);const r=null==e?void 0:e.abort,o=null==e?void 0:e.close,n=null==e?void 0:e.start,a=null==e?void 0:e.type,i=null==e?void 0:e.write;return{abort:void 0===r?void 0:xe(r,e,`${t} has member 'abort' that`),close:void 0===o?void 0:He(o,e,`${t} has member 'close' that`),start:void 0===n?void 0:Ve(n,e,`${t} has member 'start' that`),write:void 0===i?void 0:Ue(i,e,`${t} has member 'write' that`),type:a}}(e,\"First parameter\");var n;(n=this)._state=\"writable\",n._storedError=void 0,n._writer=void 0,n._writableStreamController=void 0,n._writeRequests=new v,n._inFlightWriteRequest=void 0,n._closeRequest=void 0,n._inFlightCloseRequest=void 0,n._pendingAbortRequest=void 0,n._backpressure=!1;if(void 0!==o.type)throw new RangeError(\"Invalid type is specified\");const a=Ye(r);!function(e,t,r,o){const n=Object.create(WritableStreamDefaultController.prototype);let a,i,l,s;a=void 0!==t.start?()=>t.start(n):()=>{};i=void 0!==t.write?e=>t.write(e,n):()=>d(void 0);l=void 0!==t.close?()=>t.close():()=>d(void 0);s=void 0!==t.abort?e=>t.abort(e):()=>d(void 0);!function(e,t,r,o,n,a,i,l){t._controlledWritableStream=e,e._writableStreamController=t,t._queue=void 0,t._queueTotalSize=void 0,de(t),t._abortReason=void 0,t._abortController=function(){if(Ge)return new AbortController}(),t._started=!1,t._strategySizeAlgorithm=l,t._strategyHWM=i,t._writeAlgorithm=o,t._closeAlgorithm=n,t._abortAlgorithm=a;const s=ht(t);at(e,s);const u=r();h(d(u),(()=>(t._started=!0,ft(t),null)),(r=>(t._started=!0,et(e,r),null)))}(e,n,a,i,l,s,r,o)}(this,o,Me(r,1),a)}get locked(){if(!Xe(this))throw pt(\"locked\");return Je(this)}abort(e){return Xe(this)?Je(this)?f(new TypeError(\"Cannot abort a stream that already has a writer\")):Ke(this,e):f(pt(\"abort\"))}close(){return Xe(this)?Je(this)?f(new TypeError(\"Cannot close a stream that already has a writer\")):ot(this)?f(new TypeError(\"Cannot close an already-closing stream\")):Ze(this):f(pt(\"close\"))}getWriter(){if(!Xe(this))throw pt(\"getWriter\");return new WritableStreamDefaultWriter(this)}}function Xe(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_writableStreamController\")&&e instanceof WritableStream)}function Je(e){return void 0!==e._writer}function Ke(e,t){var r;if(\"closed\"===e._state||\"errored\"===e._state)return d(void 0);e._writableStreamController._abortReason=t,null===(r=e._writableStreamController._abortController)||void 0===r||r.abort(t);const o=e._state;if(\"closed\"===o||\"errored\"===o)return d(void 0);if(void 0!==e._pendingAbortRequest)return e._pendingAbortRequest._promise;let n=!1;\"erroring\"===o&&(n=!0,t=void 0);const a=c(((r,o)=>{e._pendingAbortRequest={_promise:void 0,_resolve:r,_reject:o,_reason:t,_wasAlreadyErroring:n}}));return e._pendingAbortRequest._promise=a,n||tt(e,t),a}function Ze(e){const t=e._state;if(\"closed\"===t||\"errored\"===t)return f(new TypeError(`The stream (in ${t} state) is not in the writable state and cannot be closed`));const r=c(((t,r)=>{const o={_resolve:t,_reject:r};e._closeRequest=o})),o=e._writer;var n;return void 0!==o&&e._backpressure&&\"writable\"===t&&Et(o),ce(n=e._writableStreamController,st,0),ft(n),r}function et(e,t){\"writable\"!==e._state?rt(e):tt(e,t)}function tt(e,t){const r=e._writableStreamController;e._state=\"erroring\",e._storedError=t;const o=e._writer;void 0!==o&<(o,t),!function(e){if(void 0===e._inFlightWriteRequest&&void 0===e._inFlightCloseRequest)return!1;return!0}(e)&&r._started&&rt(e)}function rt(e){e._state=\"errored\",e._writableStreamController[T]();const t=e._storedError;if(e._writeRequests.forEach((e=>{e._reject(t)})),e._writeRequests=new v,void 0===e._pendingAbortRequest)return void nt(e);const r=e._pendingAbortRequest;if(e._pendingAbortRequest=void 0,r._wasAlreadyErroring)return r._reject(t),void nt(e);h(e._writableStreamController[R](r._reason),(()=>(r._resolve(),nt(e),null)),(t=>(r._reject(t),nt(e),null)))}function ot(e){return void 0!==e._closeRequest||void 0!==e._inFlightCloseRequest}function nt(e){void 0!==e._closeRequest&&(e._closeRequest._reject(e._storedError),e._closeRequest=void 0);const t=e._writer;void 0!==t&&vt(t,e._storedError)}function at(e,t){const r=e._writer;void 0!==r&&t!==e._backpressure&&(t?function(e){Tt(e)}(r):Et(r)),e._backpressure=t}Object.defineProperties(WritableStream.prototype,{abort:{enumerable:!0},close:{enumerable:!0},getWriter:{enumerable:!0},locked:{enumerable:!0}}),a(WritableStream.prototype.abort,\"abort\"),a(WritableStream.prototype.close,\"close\"),a(WritableStream.prototype.getWriter,\"getWriter\"),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(WritableStream.prototype,t.toStringTag,{value:\"WritableStream\",configurable:!0});class WritableStreamDefaultWriter{constructor(e){if(M(e,1,\"WritableStreamDefaultWriter\"),function(e,t){if(!Xe(e))throw new TypeError(`${t} is not a WritableStream.`)}(e,\"First parameter\"),Je(e))throw new TypeError(\"This stream has already been locked for exclusive writing by another writer\");this._ownerWritableStream=e,e._writer=this;const t=e._state;if(\"writable\"===t)!ot(e)&&e._backpressure?Tt(this):Ct(this),St(this);else if(\"erroring\"===t)qt(this,e._storedError),St(this);else if(\"closed\"===t)Ct(this),St(r=this),Rt(r);else{const t=e._storedError;qt(this,t),wt(this,t)}var r}get closed(){return it(this)?this._closedPromise:f(yt(\"closed\"))}get desiredSize(){if(!it(this))throw yt(\"desiredSize\");if(void 0===this._ownerWritableStream)throw gt(\"desiredSize\");return function(e){const t=e._ownerWritableStream,r=t._state;if(\"errored\"===r||\"erroring\"===r)return null;if(\"closed\"===r)return 0;return dt(t._writableStreamController)}(this)}get ready(){return it(this)?this._readyPromise:f(yt(\"ready\"))}abort(e){return it(this)?void 0===this._ownerWritableStream?f(gt(\"abort\")):function(e,t){return Ke(e._ownerWritableStream,t)}(this,e):f(yt(\"abort\"))}close(){if(!it(this))return f(yt(\"close\"));const e=this._ownerWritableStream;return void 0===e?f(gt(\"close\")):ot(e)?f(new TypeError(\"Cannot close an already-closing stream\")):Ze(this._ownerWritableStream)}releaseLock(){if(!it(this))throw yt(\"releaseLock\");void 0!==this._ownerWritableStream&&function(e){const t=e._ownerWritableStream,r=new TypeError(\"Writer was released and can no longer be used to monitor the stream's closedness\");lt(e,r),function(e,t){\"pending\"===e._closedPromiseState?vt(e,t):function(e,t){wt(e,t)}(e,t)}(e,r),t._writer=void 0,e._ownerWritableStream=void 0}(this)}write(e){return it(this)?void 0===this._ownerWritableStream?f(gt(\"write to\")):function(e,t){const r=e._ownerWritableStream,o=r._writableStreamController,n=function(e,t){try{return e._strategySizeAlgorithm(t)}catch(t){return bt(e,t),1}}(o,t);if(r!==e._ownerWritableStream)return f(gt(\"write to\"));const a=r._state;if(\"errored\"===a)return f(r._storedError);if(ot(r)||\"closed\"===a)return f(new TypeError(\"The stream is closing or closed and cannot be written to\"));if(\"erroring\"===a)return f(r._storedError);const i=function(e){return c(((t,r)=>{const o={_resolve:t,_reject:r};e._writeRequests.push(o)}))}(r);return function(e,t,r){try{ce(e,t,r)}catch(t){return void bt(e,t)}const o=e._controlledWritableStream;if(!ot(o)&&\"writable\"===o._state){at(o,ht(e))}ft(e)}(o,t,n),i}(this,e):f(yt(\"write\"))}}function it(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_ownerWritableStream\")&&e instanceof WritableStreamDefaultWriter)}function lt(e,t){\"pending\"===e._readyPromiseState?Pt(e,t):function(e,t){qt(e,t)}(e,t)}Object.defineProperties(WritableStreamDefaultWriter.prototype,{abort:{enumerable:!0},close:{enumerable:!0},releaseLock:{enumerable:!0},write:{enumerable:!0},closed:{enumerable:!0},desiredSize:{enumerable:!0},ready:{enumerable:!0}}),a(WritableStreamDefaultWriter.prototype.abort,\"abort\"),a(WritableStreamDefaultWriter.prototype.close,\"close\"),a(WritableStreamDefaultWriter.prototype.releaseLock,\"releaseLock\"),a(WritableStreamDefaultWriter.prototype.write,\"write\"),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(WritableStreamDefaultWriter.prototype,t.toStringTag,{value:\"WritableStreamDefaultWriter\",configurable:!0});const st={};class WritableStreamDefaultController{constructor(){throw new TypeError(\"Illegal constructor\")}get abortReason(){if(!ut(this))throw mt(\"abortReason\");return this._abortReason}get signal(){if(!ut(this))throw mt(\"signal\");if(void 0===this._abortController)throw new TypeError(\"WritableStreamDefaultController.prototype.signal is not supported\");return this._abortController.signal}error(e){if(!ut(this))throw mt(\"error\");\"writable\"===this._controlledWritableStream._state&&_t(this,e)}[R](e){const t=this._abortAlgorithm(e);return ct(this),t}[T](){de(this)}}function ut(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledWritableStream\")&&e instanceof WritableStreamDefaultController)}function ct(e){e._writeAlgorithm=void 0,e._closeAlgorithm=void 0,e._abortAlgorithm=void 0,e._strategySizeAlgorithm=void 0}function dt(e){return e._strategyHWM-e._queueTotalSize}function ft(e){const t=e._controlledWritableStream;if(!e._started)return;if(void 0!==t._inFlightWriteRequest)return;if(\"erroring\"===t._state)return void rt(t);if(0===e._queue.length)return;const r=e._queue.peek().value;r===st?function(e){const t=e._controlledWritableStream;(function(e){e._inFlightCloseRequest=e._closeRequest,e._closeRequest=void 0})(t),ue(e);const r=e._closeAlgorithm();ct(e),h(r,(()=>(function(e){e._inFlightCloseRequest._resolve(void 0),e._inFlightCloseRequest=void 0,\"erroring\"===e._state&&(e._storedError=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._resolve(),e._pendingAbortRequest=void 0)),e._state=\"closed\";const t=e._writer;void 0!==t&&Rt(t)}(t),null)),(e=>(function(e,t){e._inFlightCloseRequest._reject(t),e._inFlightCloseRequest=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._reject(t),e._pendingAbortRequest=void 0),et(e,t)}(t,e),null)))}(e):function(e,t){const r=e._controlledWritableStream;!function(e){e._inFlightWriteRequest=e._writeRequests.shift()}(r);h(e._writeAlgorithm(t),(()=>{!function(e){e._inFlightWriteRequest._resolve(void 0),e._inFlightWriteRequest=void 0}(r);const t=r._state;if(ue(e),!ot(r)&&\"writable\"===t){const t=ht(e);at(r,t)}return ft(e),null}),(t=>(\"writable\"===r._state&&ct(e),function(e,t){e._inFlightWriteRequest._reject(t),e._inFlightWriteRequest=void 0,et(e,t)}(r,t),null)))}(e,r)}function bt(e,t){\"writable\"===e._controlledWritableStream._state&&_t(e,t)}function ht(e){return dt(e)<=0}function _t(e,t){const r=e._controlledWritableStream;ct(e),tt(r,t)}function pt(e){return new TypeError(`WritableStream.prototype.${e} can only be used on a WritableStream`)}function mt(e){return new TypeError(`WritableStreamDefaultController.prototype.${e} can only be used on a WritableStreamDefaultController`)}function yt(e){return new TypeError(`WritableStreamDefaultWriter.prototype.${e} can only be used on a WritableStreamDefaultWriter`)}function gt(e){return new TypeError(\"Cannot \"+e+\" a stream using a released writer\")}function St(e){e._closedPromise=c(((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r,e._closedPromiseState=\"pending\"}))}function wt(e,t){St(e),vt(e,t)}function vt(e,t){void 0!==e._closedPromise_reject&&(y(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState=\"rejected\")}function Rt(e){void 0!==e._closedPromise_resolve&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState=\"resolved\")}function Tt(e){e._readyPromise=c(((t,r)=>{e._readyPromise_resolve=t,e._readyPromise_reject=r})),e._readyPromiseState=\"pending\"}function qt(e,t){Tt(e),Pt(e,t)}function Ct(e){Tt(e),Et(e)}function Pt(e,t){void 0!==e._readyPromise_reject&&(y(e._readyPromise),e._readyPromise_reject(t),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState=\"rejected\")}function Et(e){void 0!==e._readyPromise_resolve&&(e._readyPromise_resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState=\"fulfilled\")}Object.defineProperties(WritableStreamDefaultController.prototype,{abortReason:{enumerable:!0},signal:{enumerable:!0},error:{enumerable:!0}}),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(WritableStreamDefaultController.prototype,t.toStringTag,{value:\"WritableStreamDefaultController\",configurable:!0});const Wt=\"undefined\"!=typeof DOMException?DOMException:void 0;const Ot=function(e){if(\"function\"!=typeof e&&\"object\"!=typeof e)return!1;try{return new e,!0}catch(e){return!1}}(Wt)?Wt:function(){const e=function(e,t){this.message=e||\"\",this.name=t||\"Error\",Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)};return e.prototype=Object.create(Error.prototype),Object.defineProperty(e.prototype,\"constructor\",{value:e,writable:!0,configurable:!0}),e}();function kt(e,t,r,o,n,a){const i=e.getReader(),l=t.getWriter();Ut(e)&&(e._disturbed=!0);let s,u,p,S=!1,w=!1,v=\"readable\",R=\"writable\",T=!1,q=!1;const C=c((e=>{p=e}));let P=Promise.resolve(void 0);return c(((E,W)=>{let O;function k(){if(S)return;const e=c(((e,t)=>{!function r(o){o?e():b(function(){if(S)return d(!0);return b(l.ready,(()=>b(i.read(),(e=>!!e.done||(P=l.write(e.value),y(P),!1)))))}(),r,t)}(!1)}));y(e)}function B(){return v=\"closed\",r?L():z((()=>(Xe(t)&&(T=ot(t),R=t._state),T||\"closed\"===R?d(void 0):\"erroring\"===R||\"errored\"===R?f(u):(T=!0,l.close()))),!1,void 0),null}function A(e){return S||(v=\"errored\",s=e,o?L(!0,e):z((()=>l.abort(e)),!0,e)),null}function j(e){return w||(R=\"errored\",u=e,n?L(!0,e):z((()=>i.cancel(e)),!0,e)),null}if(void 0!==a&&(O=()=>{const e=void 0!==a.reason?a.reason:new Ot(\"Aborted\",\"AbortError\"),t=[];o||t.push((()=>\"writable\"===R?l.abort(e):d(void 0))),n||t.push((()=>\"readable\"===v?i.cancel(e):d(void 0))),z((()=>Promise.all(t.map((e=>e())))),!0,e)},a.aborted?O():a.addEventListener(\"abort\",O)),Ut(e)&&(v=e._state,s=e._storedError),Xe(t)&&(R=t._state,u=t._storedError,T=ot(t)),Ut(e)&&Xe(t)&&(q=!0,p()),\"errored\"===v)A(s);else if(\"erroring\"===R||\"errored\"===R)j(u);else if(\"closed\"===v)B();else if(T||\"closed\"===R){const e=new TypeError(\"the destination writable stream closed before all data could be piped to it\");n?L(!0,e):z((()=>i.cancel(e)),!0,e)}function z(e,t,r){function o(){return\"writable\"!==R||T?n():_(function(){let e;return d(function t(){if(e!==P)return e=P,m(P,t,t)}())}(),n),null}function n(){return e?h(e(),(()=>F(t,r)),(e=>F(!0,e))):F(t,r),null}S||(S=!0,q?o():_(C,o))}function L(e,t){z(void 0,e,t)}function F(e,t){return w=!0,l.releaseLock(),i.releaseLock(),void 0!==a&&a.removeEventListener(\"abort\",O),e?W(t):E(void 0),null}S||(h(i.closed,B,A),h(l.closed,(function(){return w||(R=\"closed\"),null}),j)),q?k():g((()=>{q=!0,p(),k()}))}))}function Bt(e,t){return function(e){try{return e.getReader({mode:\"byob\"}).releaseLock(),!0}catch(e){return!1}}(e)?function(e){let t,r,o,n,a,i=e.getReader(),l=!1,s=!1,u=!1,f=!1,b=!1,_=!1;const m=c((e=>{a=e}));function y(e){p(e.closed,(t=>(e!==i||(o.error(t),n.error(t),b&&_||a(void 0)),null)))}function g(){l&&(i.releaseLock(),i=e.getReader(),y(i),l=!1),h(i.read(),(e=>{var t,r;if(u=!1,f=!1,e.done)return b||o.close(),_||n.close(),null===(t=o.byobRequest)||void 0===t||t.respond(0),null===(r=n.byobRequest)||void 0===r||r.respond(0),b&&_||a(void 0),null;const l=e.value,c=l;let d=l;if(!b&&!_)try{d=se(l)}catch(e){return o.error(e),n.error(e),a(i.cancel(e)),null}return b||o.enqueue(c),_||n.enqueue(d),s=!1,u?w():f&&v(),null}),(()=>(s=!1,null)))}function S(t,r){l||(i.releaseLock(),i=e.getReader({mode:\"byob\"}),y(i),l=!0);const c=r?n:o,d=r?o:n;h(i.read(t),(e=>{var t;u=!1,f=!1;const o=r?_:b,n=r?b:_;if(e.done){o||c.close(),n||d.close();const r=e.value;return void 0!==r&&(o||c.byobRequest.respondWithNewView(r),n||null===(t=d.byobRequest)||void 0===t||t.respond(0)),o&&n||a(void 0),null}const l=e.value;if(n)o||c.byobRequest.respondWithNewView(l);else{let e;try{e=se(l)}catch(e){return c.error(e),d.error(e),a(i.cancel(e)),null}o||c.byobRequest.respondWithNewView(l),d.enqueue(e)}return s=!1,u?w():f&&v(),null}),(()=>(s=!1,null)))}function w(){if(s)return u=!0,d(void 0);s=!0;const e=o.byobRequest;return null===e?g():S(e.view,!1),d(void 0)}function v(){if(s)return f=!0,d(void 0);s=!0;const e=n.byobRequest;return null===e?g():S(e.view,!0),d(void 0)}function R(e){if(b=!0,t=e,_){const e=[t,r],o=i.cancel(e);a(o)}return m}function T(e){if(_=!0,r=e,b){const e=[t,r],o=i.cancel(e);a(o)}return m}const q=new ReadableStream({type:\"bytes\",start(e){o=e},pull:w,cancel:R}),C=new ReadableStream({type:\"bytes\",start(e){n=e},pull:v,cancel:T});return y(i),[q,C]}(e):function(e,t){const r=e.getReader();let o,n,a,i,l,s=!1,u=!1,f=!1,b=!1;const _=c((e=>{l=e}));function m(){return s?(u=!0,d(void 0)):(s=!0,h(r.read(),(e=>{if(u=!1,e.done)return f||a.close(),b||i.close(),f&&b||l(void 0),null;const t=e.value,r=t,o=t;return f||a.enqueue(r),b||i.enqueue(o),s=!1,u&&m(),null}),(()=>(s=!1,null))),d(void 0))}function y(e){if(f=!0,o=e,b){const e=[o,n],t=r.cancel(e);l(t)}return _}function g(e){if(b=!0,n=e,f){const e=[o,n],t=r.cancel(e);l(t)}return _}const S=new ReadableStream({start(e){a=e},pull:m,cancel:y}),w=new ReadableStream({start(e){i=e},pull:m,cancel:g});return p(r.closed,(e=>(a.error(e),i.error(e),f&&b||l(void 0),null))),[S,w]}(e)}class ReadableStreamDefaultController{constructor(){throw new TypeError(\"Illegal constructor\")}get desiredSize(){if(!At(this))throw $t(\"desiredSize\");return Ft(this)}close(){if(!At(this))throw $t(\"close\");if(!Dt(this))throw new TypeError(\"The stream is not in a state that permits close\");!function(e){if(!Dt(e))return;const t=e._controlledReadableStream;e._closeRequested=!0,0===e._queue.length&&(zt(e),Jt(t))}(this)}enqueue(e){if(!At(this))throw $t(\"enqueue\");if(!Dt(this))throw new TypeError(\"The stream is not in a state that permits enqueue\");return function(e,t){if(!Dt(e))return;const r=e._controlledReadableStream;if(Gt(r)&&J(r)>0)X(r,t,!1);else{let r;try{r=e._strategySizeAlgorithm(t)}catch(t){throw Lt(e,t),t}try{ce(e,t,r)}catch(t){throw Lt(e,t),t}}jt(e)}(this,e)}error(e){if(!At(this))throw $t(\"error\");Lt(this,e)}[q](e){de(this);const t=this._cancelAlgorithm(e);return zt(this),t}[C](e){const t=this._controlledReadableStream;if(this._queue.length>0){const r=ue(this);this._closeRequested&&0===this._queue.length?(zt(this),Jt(t)):jt(this),e._chunkSteps(r)}else G(t,e),jt(this)}[P](){}}function At(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledReadableStream\")&&e instanceof ReadableStreamDefaultController)}function jt(e){const t=function(e){const t=e._controlledReadableStream;if(!Dt(e))return!1;if(!e._started)return!1;if(Gt(t)&&J(t)>0)return!0;if(Ft(e)>0)return!0;return!1}(e);if(!t)return;if(e._pulling)return void(e._pullAgain=!0);e._pulling=!0;h(e._pullAlgorithm(),(()=>(e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,jt(e)),null)),(t=>(Lt(e,t),null)))}function zt(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0,e._strategySizeAlgorithm=void 0}function Lt(e,t){const r=e._controlledReadableStream;\"readable\"===r._state&&(de(e),zt(e),Kt(r,t))}function Ft(e){const t=e._controlledReadableStream._state;return\"errored\"===t?null:\"closed\"===t?0:e._strategyHWM-e._queueTotalSize}function Dt(e){return!e._closeRequested&&\"readable\"===e._controlledReadableStream._state}function It(e,t,r,o){const n=Object.create(ReadableStreamDefaultController.prototype);let a,i,l;a=void 0!==t.start?()=>t.start(n):()=>{},i=void 0!==t.pull?()=>t.pull(n):()=>d(void 0),l=void 0!==t.cancel?e=>t.cancel(e):()=>d(void 0),function(e,t,r,o,n,a,i){t._controlledReadableStream=e,t._queue=void 0,t._queueTotalSize=void 0,de(t),t._started=!1,t._closeRequested=!1,t._pullAgain=!1,t._pulling=!1,t._strategySizeAlgorithm=i,t._strategyHWM=a,t._pullAlgorithm=o,t._cancelAlgorithm=n,e._readableStreamController=t,h(d(r()),(()=>(t._started=!0,jt(t),null)),(e=>(Lt(t,e),null)))}(e,n,a,i,l,r,o)}function $t(e){return new TypeError(`ReadableStreamDefaultController.prototype.${e} can only be used on a ReadableStreamDefaultController`)}function Mt(e,t,r){return I(e,r),r=>w(e,t,[r])}function Yt(e,t,r){return I(e,r),r=>w(e,t,[r])}function Qt(e,t,r){return I(e,r),r=>S(e,t,[r])}function Nt(e,t){if(\"bytes\"!==(e=`${e}`))throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamType`);return e}function xt(e,t){if(\"byob\"!==(e=`${e}`))throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamReaderMode`);return e}function Ht(e,t){D(e,t);const r=null==e?void 0:e.preventAbort,o=null==e?void 0:e.preventCancel,n=null==e?void 0:e.preventClose,a=null==e?void 0:e.signal;return void 0!==a&&function(e,t){if(!function(e){if(\"object\"!=typeof e||null===e)return!1;try{return\"boolean\"==typeof e.aborted}catch(e){return!1}}(e))throw new TypeError(`${t} is not an AbortSignal.`)}(a,`${t} has member 'signal' that`),{preventAbort:Boolean(r),preventCancel:Boolean(o),preventClose:Boolean(n),signal:a}}function Vt(e,t){D(e,t);const r=null==e?void 0:e.readable;Y(r,\"readable\",\"ReadableWritablePair\"),function(e,t){if(!H(e))throw new TypeError(`${t} is not a ReadableStream.`)}(r,`${t} has member 'readable' that`);const o=null==e?void 0:e.writable;return Y(o,\"writable\",\"ReadableWritablePair\"),function(e,t){if(!V(e))throw new TypeError(`${t} is not a WritableStream.`)}(o,`${t} has member 'writable' that`),{readable:r,writable:o}}Object.defineProperties(ReadableStreamDefaultController.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},desiredSize:{enumerable:!0}}),a(ReadableStreamDefaultController.prototype.close,\"close\"),a(ReadableStreamDefaultController.prototype.enqueue,\"enqueue\"),a(ReadableStreamDefaultController.prototype.error,\"error\"),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(ReadableStreamDefaultController.prototype,t.toStringTag,{value:\"ReadableStreamDefaultController\",configurable:!0});class ReadableStream{constructor(e={},t={}){void 0===e?e=null:$(e,\"First parameter\");const r=Qe(t,\"Second parameter\"),o=function(e,t){D(e,t);const r=e,o=null==r?void 0:r.autoAllocateChunkSize,n=null==r?void 0:r.cancel,a=null==r?void 0:r.pull,i=null==r?void 0:r.start,l=null==r?void 0:r.type;return{autoAllocateChunkSize:void 0===o?void 0:x(o,`${t} has member 'autoAllocateChunkSize' that`),cancel:void 0===n?void 0:Mt(n,r,`${t} has member 'cancel' that`),pull:void 0===a?void 0:Yt(a,r,`${t} has member 'pull' that`),start:void 0===i?void 0:Qt(i,r,`${t} has member 'start' that`),type:void 0===l?void 0:Nt(l,`${t} has member 'type' that`)}}(e,\"First parameter\");var n;if((n=this)._state=\"readable\",n._reader=void 0,n._storedError=void 0,n._disturbed=!1,\"bytes\"===o.type){if(void 0!==r.size)throw new RangeError(\"The strategy for a byte stream cannot have a size function\");Be(this,o,Me(r,0))}else{const e=Ye(r);It(this,o,Me(r,1),e)}}get locked(){if(!Ut(this))throw Zt(\"locked\");return Gt(this)}cancel(e){return Ut(this)?Gt(this)?f(new TypeError(\"Cannot cancel a stream that already has a reader\")):Xt(this,e):f(Zt(\"cancel\"))}getReader(e){if(!Ut(this))throw Zt(\"getReader\");return void 0===function(e,t){D(e,t);const r=null==e?void 0:e.mode;return{mode:void 0===r?void 0:xt(r,`${t} has member 'mode' that`)}}(e,\"First parameter\").mode?new ReadableStreamDefaultReader(this):function(e){return new ReadableStreamBYOBReader(e)}(this)}pipeThrough(e,t={}){if(!H(this))throw Zt(\"pipeThrough\");M(e,1,\"pipeThrough\");const r=Vt(e,\"First parameter\"),o=Ht(t,\"Second parameter\");if(this.locked)throw new TypeError(\"ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream\");if(r.writable.locked)throw new TypeError(\"ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream\");return y(kt(this,r.writable,o.preventClose,o.preventAbort,o.preventCancel,o.signal)),r.readable}pipeTo(e,t={}){if(!H(this))return f(Zt(\"pipeTo\"));if(void 0===e)return f(\"Parameter 1 is required in 'pipeTo'.\");if(!V(e))return f(new TypeError(\"ReadableStream.prototype.pipeTo's first argument must be a WritableStream\"));let r;try{r=Ht(t,\"Second parameter\")}catch(e){return f(e)}return this.locked?f(new TypeError(\"ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream\")):e.locked?f(new TypeError(\"ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream\")):kt(this,e,r.preventClose,r.preventAbort,r.preventCancel,r.signal)}tee(){if(!H(this))throw Zt(\"tee\");if(this.locked)throw new TypeError(\"Cannot tee a stream that already has a reader\");return Bt(this)}values(e){if(!H(this))throw Zt(\"values\");return function(e,t){const r=e.getReader(),o=new re(r,t),n=Object.create(oe);return n._asyncIteratorImpl=o,n}(this,function(e,t){D(e,t);const r=null==e?void 0:e.preventCancel;return{preventCancel:Boolean(r)}}(e,\"First parameter\").preventCancel)}}function Ut(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_readableStreamController\")&&e instanceof ReadableStream)}function Gt(e){return void 0!==e._reader}function Xt(e,t){if(e._disturbed=!0,\"closed\"===e._state)return d(void 0);if(\"errored\"===e._state)return f(e._storedError);Jt(e);const o=e._reader;if(void 0!==o&&De(o)){const e=o._readIntoRequests;o._readIntoRequests=new v,e.forEach((e=>{e._closeSteps(void 0)}))}return m(e._readableStreamController[q](t),r)}function Jt(e){e._state=\"closed\";const t=e._reader;if(void 0!==t&&(z(t),Z(t))){const e=t._readRequests;t._readRequests=new v,e.forEach((e=>{e._closeSteps()}))}}function Kt(e,t){e._state=\"errored\",e._storedError=t;const r=e._reader;void 0!==r&&(j(r,t),Z(r)?ee(r,t):Ie(r,t))}function Zt(e){return new TypeError(`ReadableStream.prototype.${e} can only be used on a ReadableStream`)}function er(e,t){D(e,t);const r=null==e?void 0:e.highWaterMark;return Y(r,\"highWaterMark\",\"QueuingStrategyInit\"),{highWaterMark:Q(r)}}Object.defineProperties(ReadableStream.prototype,{cancel:{enumerable:!0},getReader:{enumerable:!0},pipeThrough:{enumerable:!0},pipeTo:{enumerable:!0},tee:{enumerable:!0},values:{enumerable:!0},locked:{enumerable:!0}}),a(ReadableStream.prototype.cancel,\"cancel\"),a(ReadableStream.prototype.getReader,\"getReader\"),a(ReadableStream.prototype.pipeThrough,\"pipeThrough\"),a(ReadableStream.prototype.pipeTo,\"pipeTo\"),a(ReadableStream.prototype.tee,\"tee\"),a(ReadableStream.prototype.values,\"values\"),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(ReadableStream.prototype,t.toStringTag,{value:\"ReadableStream\",configurable:!0}),\"symbol\"==typeof t.asyncIterator&&Object.defineProperty(ReadableStream.prototype,t.asyncIterator,{value:ReadableStream.prototype.values,writable:!0,configurable:!0});const tr=e=>e.byteLength;a(tr,\"size\");class ByteLengthQueuingStrategy{constructor(e){M(e,1,\"ByteLengthQueuingStrategy\"),e=er(e,\"First parameter\"),this._byteLengthQueuingStrategyHighWaterMark=e.highWaterMark}get highWaterMark(){if(!or(this))throw rr(\"highWaterMark\");return this._byteLengthQueuingStrategyHighWaterMark}get size(){if(!or(this))throw rr(\"size\");return tr}}function rr(e){return new TypeError(`ByteLengthQueuingStrategy.prototype.${e} can only be used on a ByteLengthQueuingStrategy`)}function or(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_byteLengthQueuingStrategyHighWaterMark\")&&e instanceof ByteLengthQueuingStrategy)}Object.defineProperties(ByteLengthQueuingStrategy.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(ByteLengthQueuingStrategy.prototype,t.toStringTag,{value:\"ByteLengthQueuingStrategy\",configurable:!0});const nr=()=>1;a(nr,\"size\");class CountQueuingStrategy{constructor(e){M(e,1,\"CountQueuingStrategy\"),e=er(e,\"First parameter\"),this._countQueuingStrategyHighWaterMark=e.highWaterMark}get highWaterMark(){if(!ir(this))throw ar(\"highWaterMark\");return this._countQueuingStrategyHighWaterMark}get size(){if(!ir(this))throw ar(\"size\");return nr}}function ar(e){return new TypeError(`CountQueuingStrategy.prototype.${e} can only be used on a CountQueuingStrategy`)}function ir(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_countQueuingStrategyHighWaterMark\")&&e instanceof CountQueuingStrategy)}function lr(e,t,r){return I(e,r),r=>w(e,t,[r])}function sr(e,t,r){return I(e,r),r=>S(e,t,[r])}function ur(e,t,r){return I(e,r),(r,o)=>w(e,t,[r,o])}Object.defineProperties(CountQueuingStrategy.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(CountQueuingStrategy.prototype,t.toStringTag,{value:\"CountQueuingStrategy\",configurable:!0});class TransformStream{constructor(e={},t={},r={}){void 0===e&&(e=null);const o=Qe(t,\"Second parameter\"),n=Qe(r,\"Third parameter\"),a=function(e,t){D(e,t);const r=null==e?void 0:e.flush,o=null==e?void 0:e.readableType,n=null==e?void 0:e.start,a=null==e?void 0:e.transform,i=null==e?void 0:e.writableType;return{flush:void 0===r?void 0:lr(r,e,`${t} has member 'flush' that`),readableType:o,start:void 0===n?void 0:sr(n,e,`${t} has member 'start' that`),transform:void 0===a?void 0:ur(a,e,`${t} has member 'transform' that`),writableType:i}}(e,\"First parameter\");if(void 0!==a.readableType)throw new RangeError(\"Invalid readableType specified\");if(void 0!==a.writableType)throw new RangeError(\"Invalid writableType specified\");const i=Me(n,0),l=Ye(n),s=Me(o,1),u=Ye(o);let b;!function(e,t,r,o,n,a){function i(){return t}function l(t){return function(e,t){const r=e._transformStreamController;if(e._backpressure){return m(e._backpressureChangePromise,(()=>{if(\"erroring\"===(Xe(e._writable)?e._writable._state:e._writableState))throw Xe(e._writable)?e._writable._storedError:e._writableStoredError;return mr(r,t)}))}return mr(r,t)}(e,t)}function s(t){return function(e,t){return dr(e,t),d(void 0)}(e,t)}function u(){return function(e){const t=e._transformStreamController,r=t._flushAlgorithm();return _r(t),m(r,(()=>{if(\"errored\"===e._readableState)throw e._readableStoredError;Sr(e)&&wr(e)}),(t=>{throw dr(e,t),e._readableStoredError}))}(e)}function c(){return function(e){return br(e,!1),e._backpressureChangePromise}(e)}function f(t){return fr(e,t),d(void 0)}e._writableState=\"writable\",e._writableStoredError=void 0,e._writableHasInFlightOperation=!1,e._writableStarted=!1,e._writable=function(e,t,r,o,n,a,i){return new WritableStream({start(r){e._writableController=r;try{const t=r.signal;void 0!==t&&t.addEventListener(\"abort\",(()=>{\"writable\"===e._writableState&&(e._writableState=\"erroring\",t.reason&&(e._writableStoredError=t.reason))}))}catch(e){}return m(t(),(()=>(e._writableStarted=!0,Pr(e),null)),(t=>{throw e._writableStarted=!0,Tr(e,t),t}))},write:t=>(function(e){e._writableHasInFlightOperation=!0}(e),m(r(t),(()=>(function(e){e._writableHasInFlightOperation=!1}(e),Pr(e),null)),(t=>{throw function(e,t){e._writableHasInFlightOperation=!1,Tr(e,t)}(e,t),t}))),close:()=>(function(e){e._writableHasInFlightOperation=!0}(e),m(o(),(()=>(function(e){e._writableHasInFlightOperation=!1;\"erroring\"===e._writableState&&(e._writableStoredError=void 0);e._writableState=\"closed\"}(e),null)),(t=>{throw function(e,t){e._writableHasInFlightOperation=!1,e._writableState,Tr(e,t)}(e,t),t}))),abort:t=>(e._writableState=\"errored\",e._writableStoredError=t,n(t))},{highWaterMark:a,size:i})}(e,i,l,u,s,r,o),e._readableState=\"readable\",e._readableStoredError=void 0,e._readableCloseRequested=!1,e._readablePulling=!1,e._readable=function(e,t,r,o,n,a){return new ReadableStream({start:r=>(e._readableController=r,t().catch((t=>{vr(e,t)}))),pull:()=>(e._readablePulling=!0,r().catch((t=>{vr(e,t)}))),cancel:t=>(e._readableState=\"closed\",o(t))},{highWaterMark:n,size:a})}(e,i,c,f,n,a),e._backpressure=void 0,e._backpressureChangePromise=void 0,e._backpressureChangePromise_resolve=void 0,br(e,!0),e._transformStreamController=void 0}(this,c((e=>{b=e})),s,u,i,l),function(e,t){const r=Object.create(TransformStreamDefaultController.prototype);let o,n;o=void 0!==t.transform?e=>t.transform(e,r):e=>{try{return pr(r,e),d(void 0)}catch(e){return f(e)}};n=void 0!==t.flush?()=>t.flush(r):()=>d(void 0);!function(e,t,r,o){t._controlledTransformStream=e,e._transformStreamController=t,t._transformAlgorithm=r,t._flushAlgorithm=o}(e,r,o,n)}(this,a),void 0!==a.start?b(a.start(this._transformStreamController)):b(void 0)}get readable(){if(!cr(this))throw gr(\"readable\");return this._readable}get writable(){if(!cr(this))throw gr(\"writable\");return this._writable}}function cr(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_transformStreamController\")&&e instanceof TransformStream)}function dr(e,t){vr(e,t),fr(e,t)}function fr(e,t){_r(e._transformStreamController),function(e,t){e._writableController.error(t);\"writable\"===e._writableState&&qr(e,t)}(e,t),e._backpressure&&br(e,!1)}function br(e,t){void 0!==e._backpressureChangePromise&&e._backpressureChangePromise_resolve(),e._backpressureChangePromise=c((t=>{e._backpressureChangePromise_resolve=t})),e._backpressure=t}Object.defineProperties(TransformStream.prototype,{readable:{enumerable:!0},writable:{enumerable:!0}}),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(TransformStream.prototype,t.toStringTag,{value:\"TransformStream\",configurable:!0});class TransformStreamDefaultController{constructor(){throw new TypeError(\"Illegal constructor\")}get desiredSize(){if(!hr(this))throw yr(\"desiredSize\");return Rr(this._controlledTransformStream)}enqueue(e){if(!hr(this))throw yr(\"enqueue\");pr(this,e)}error(e){if(!hr(this))throw yr(\"error\");var t;t=e,dr(this._controlledTransformStream,t)}terminate(){if(!hr(this))throw yr(\"terminate\");!function(e){const t=e._controlledTransformStream;Sr(t)&&wr(t);const r=new TypeError(\"TransformStream terminated\");fr(t,r)}(this)}}function hr(e){return!!o(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledTransformStream\")&&e instanceof TransformStreamDefaultController)}function _r(e){e._transformAlgorithm=void 0,e._flushAlgorithm=void 0}function pr(e,t){const r=e._controlledTransformStream;if(!Sr(r))throw new TypeError(\"Readable side is not in a state that permits enqueue\");try{!function(e,t){e._readablePulling=!1;try{e._readableController.enqueue(t)}catch(t){throw vr(e,t),t}}(r,t)}catch(e){throw fr(r,e),r._readableStoredError}const o=function(e){return!function(e){if(!Sr(e))return!1;if(e._readablePulling)return!0;if(Rr(e)>0)return!0;return!1}(e)}(r);o!==r._backpressure&&br(r,!0)}function mr(e,t){return m(e._transformAlgorithm(t),void 0,(t=>{throw dr(e._controlledTransformStream,t),t}))}function yr(e){return new TypeError(`TransformStreamDefaultController.prototype.${e} can only be used on a TransformStreamDefaultController`)}function gr(e){return new TypeError(`TransformStream.prototype.${e} can only be used on a TransformStream`)}function Sr(e){return!e._readableCloseRequested&&\"readable\"===e._readableState}function wr(e){e._readableState=\"closed\",e._readableCloseRequested=!0,e._readableController.close()}function vr(e,t){\"readable\"===e._readableState&&(e._readableState=\"errored\",e._readableStoredError=t),e._readableController.error(t)}function Rr(e){return e._readableController.desiredSize}function Tr(e,t){\"writable\"!==e._writableState?Cr(e):qr(e,t)}function qr(e,t){e._writableState=\"erroring\",e._writableStoredError=t,!function(e){return e._writableHasInFlightOperation}(e)&&e._writableStarted&&Cr(e)}function Cr(e){e._writableState=\"errored\"}function Pr(e){\"erroring\"===e._writableState&&Cr(e)}Object.defineProperties(TransformStreamDefaultController.prototype,{enqueue:{enumerable:!0},error:{enumerable:!0},terminate:{enumerable:!0},desiredSize:{enumerable:!0}}),a(TransformStreamDefaultController.prototype.enqueue,\"enqueue\"),a(TransformStreamDefaultController.prototype.error,\"error\"),a(TransformStreamDefaultController.prototype.terminate,\"terminate\"),\"symbol\"==typeof t.toStringTag&&Object.defineProperty(TransformStreamDefaultController.prototype,t.toStringTag,{value:\"TransformStreamDefaultController\",configurable:!0}),e.ByteLengthQueuingStrategy=ByteLengthQueuingStrategy,e.CountQueuingStrategy=CountQueuingStrategy,e.ReadableByteStreamController=ReadableByteStreamController,e.ReadableStream=ReadableStream,e.ReadableStreamBYOBReader=ReadableStreamBYOBReader,e.ReadableStreamBYOBRequest=ReadableStreamBYOBRequest,e.ReadableStreamDefaultController=ReadableStreamDefaultController,e.ReadableStreamDefaultReader=ReadableStreamDefaultReader,e.TransformStream=TransformStream,e.TransformStreamDefaultController=TransformStreamDefaultController,e.WritableStream=WritableStream,e.WritableStreamDefaultController=WritableStreamDefaultController,e.WritableStreamDefaultWriter=WritableStreamDefaultWriter,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isFunction = void 0;\nconst isFunction = (value) => (typeof value === \"function\");\nexports.isFunction = isFunction;\n","\"use strict\";\n/*! Based on fetch-blob. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> & David Frank */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sliceBlob = exports.consumeBlobParts = void 0;\nconst isFunction_1 = require(\"./isFunction\");\nconst CHUNK_SIZE = 65536;\nasync function* clonePart(part) {\n const end = part.byteOffset + part.byteLength;\n let position = part.byteOffset;\n while (position !== end) {\n const size = Math.min(end - position, CHUNK_SIZE);\n const chunk = part.buffer.slice(position, position + size);\n position += chunk.byteLength;\n yield new Uint8Array(chunk);\n }\n}\nasync function* consumeNodeBlob(blob) {\n let position = 0;\n while (position !== blob.size) {\n const chunk = blob.slice(position, Math.min(blob.size, position + CHUNK_SIZE));\n const buffer = await chunk.arrayBuffer();\n position += buffer.byteLength;\n yield new Uint8Array(buffer);\n }\n}\nasync function* consumeBlobParts(parts, clone = false) {\n for (const part of parts) {\n if (ArrayBuffer.isView(part)) {\n if (clone) {\n yield* clonePart(part);\n }\n else {\n yield part;\n }\n }\n else if ((0, isFunction_1.isFunction)(part.stream)) {\n yield* part.stream();\n }\n else {\n yield* consumeNodeBlob(part);\n }\n }\n}\nexports.consumeBlobParts = consumeBlobParts;\nfunction* sliceBlob(blobParts, blobSize, start = 0, end) {\n end !== null && end !== void 0 ? end : (end = blobSize);\n let relativeStart = start < 0\n ? Math.max(blobSize + start, 0)\n : Math.min(start, blobSize);\n let relativeEnd = end < 0\n ? Math.max(blobSize + end, 0)\n : Math.min(end, blobSize);\n const span = Math.max(relativeEnd - relativeStart, 0);\n let added = 0;\n for (const part of blobParts) {\n if (added >= span) {\n break;\n }\n const partSize = ArrayBuffer.isView(part) ? part.byteLength : part.size;\n if (relativeStart && partSize <= relativeStart) {\n relativeStart -= partSize;\n relativeEnd -= partSize;\n }\n else {\n let chunk;\n if (ArrayBuffer.isView(part)) {\n chunk = part.subarray(relativeStart, Math.min(partSize, relativeEnd));\n added += chunk.byteLength;\n }\n else {\n chunk = part.slice(relativeStart, Math.min(partSize, relativeEnd));\n added += chunk.size;\n }\n relativeEnd -= partSize;\n relativeStart = 0;\n yield chunk;\n }\n }\n}\nexports.sliceBlob = sliceBlob;\n","\"use strict\";\n/*! Based on fetch-blob. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> & David Frank */\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Blob_parts, _Blob_type, _Blob_size;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Blob = void 0;\nconst web_streams_polyfill_1 = require(\"web-streams-polyfill\");\nconst isFunction_1 = require(\"./isFunction\");\nconst blobHelpers_1 = require(\"./blobHelpers\");\nclass Blob {\n constructor(blobParts = [], options = {}) {\n _Blob_parts.set(this, []);\n _Blob_type.set(this, \"\");\n _Blob_size.set(this, 0);\n options !== null && options !== void 0 ? options : (options = {});\n if (typeof blobParts !== \"object\" || blobParts === null) {\n throw new TypeError(\"Failed to construct 'Blob': \"\n + \"The provided value cannot be converted to a sequence.\");\n }\n if (!(0, isFunction_1.isFunction)(blobParts[Symbol.iterator])) {\n throw new TypeError(\"Failed to construct 'Blob': \"\n + \"The object must have a callable @@iterator property.\");\n }\n if (typeof options !== \"object\" && !(0, isFunction_1.isFunction)(options)) {\n throw new TypeError(\"Failed to construct 'Blob': parameter 2 cannot convert to dictionary.\");\n }\n const encoder = new TextEncoder();\n for (const raw of blobParts) {\n let part;\n if (ArrayBuffer.isView(raw)) {\n part = new Uint8Array(raw.buffer.slice(raw.byteOffset, raw.byteOffset + raw.byteLength));\n }\n else if (raw instanceof ArrayBuffer) {\n part = new Uint8Array(raw.slice(0));\n }\n else if (raw instanceof Blob) {\n part = raw;\n }\n else {\n part = encoder.encode(String(raw));\n }\n __classPrivateFieldSet(this, _Blob_size, __classPrivateFieldGet(this, _Blob_size, \"f\") + (ArrayBuffer.isView(part) ? part.byteLength : part.size), \"f\");\n __classPrivateFieldGet(this, _Blob_parts, \"f\").push(part);\n }\n const type = options.type === undefined ? \"\" : String(options.type);\n __classPrivateFieldSet(this, _Blob_type, /^[\\x20-\\x7E]*$/.test(type) ? type : \"\", \"f\");\n }\n static [(_Blob_parts = new WeakMap(), _Blob_type = new WeakMap(), _Blob_size = new WeakMap(), Symbol.hasInstance)](value) {\n return Boolean(value\n && typeof value === \"object\"\n && (0, isFunction_1.isFunction)(value.constructor)\n && ((0, isFunction_1.isFunction)(value.stream)\n || (0, isFunction_1.isFunction)(value.arrayBuffer))\n && /^(Blob|File)$/.test(value[Symbol.toStringTag]));\n }\n get type() {\n return __classPrivateFieldGet(this, _Blob_type, \"f\");\n }\n get size() {\n return __classPrivateFieldGet(this, _Blob_size, \"f\");\n }\n slice(start, end, contentType) {\n return new Blob((0, blobHelpers_1.sliceBlob)(__classPrivateFieldGet(this, _Blob_parts, \"f\"), this.size, start, end), {\n type: contentType\n });\n }\n async text() {\n const decoder = new TextDecoder();\n let result = \"\";\n for await (const chunk of (0, blobHelpers_1.consumeBlobParts)(__classPrivateFieldGet(this, _Blob_parts, \"f\"))) {\n result += decoder.decode(chunk, { stream: true });\n }\n result += decoder.decode();\n return result;\n }\n async arrayBuffer() {\n const view = new Uint8Array(this.size);\n let offset = 0;\n for await (const chunk of (0, blobHelpers_1.consumeBlobParts)(__classPrivateFieldGet(this, _Blob_parts, \"f\"))) {\n view.set(chunk, offset);\n offset += chunk.length;\n }\n return view.buffer;\n }\n stream() {\n const iterator = (0, blobHelpers_1.consumeBlobParts)(__classPrivateFieldGet(this, _Blob_parts, \"f\"), true);\n return new web_streams_polyfill_1.ReadableStream({\n async pull(controller) {\n const { value, done } = await iterator.next();\n if (done) {\n return queueMicrotask(() => controller.close());\n }\n controller.enqueue(value);\n },\n async cancel() {\n await iterator.return();\n }\n });\n }\n get [Symbol.toStringTag]() {\n return \"Blob\";\n }\n}\nexports.Blob = Blob;\nObject.defineProperties(Blob.prototype, {\n type: { enumerable: true },\n size: { enumerable: true },\n slice: { enumerable: true },\n stream: { enumerable: true },\n text: { enumerable: true },\n arrayBuffer: { enumerable: true }\n});\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _File_name, _File_lastModified;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.File = void 0;\nconst Blob_1 = require(\"./Blob\");\nclass File extends Blob_1.Blob {\n constructor(fileBits, name, options = {}) {\n super(fileBits, options);\n _File_name.set(this, void 0);\n _File_lastModified.set(this, 0);\n if (arguments.length < 2) {\n throw new TypeError(\"Failed to construct 'File': 2 arguments required, \"\n + `but only ${arguments.length} present.`);\n }\n __classPrivateFieldSet(this, _File_name, String(name), \"f\");\n const lastModified = options.lastModified === undefined\n ? Date.now()\n : Number(options.lastModified);\n if (!Number.isNaN(lastModified)) {\n __classPrivateFieldSet(this, _File_lastModified, lastModified, \"f\");\n }\n }\n static [(_File_name = new WeakMap(), _File_lastModified = new WeakMap(), Symbol.hasInstance)](value) {\n return value instanceof Blob_1.Blob\n && value[Symbol.toStringTag] === \"File\"\n && typeof value.name === \"string\";\n }\n get name() {\n return __classPrivateFieldGet(this, _File_name, \"f\");\n }\n get lastModified() {\n return __classPrivateFieldGet(this, _File_lastModified, \"f\");\n }\n get webkitRelativePath() {\n return \"\";\n }\n get [Symbol.toStringTag]() {\n return \"File\";\n }\n}\nexports.File = File;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isFile = void 0;\nconst File_1 = require(\"./File\");\nconst isFile = (value) => value instanceof File_1.File;\nexports.isFile = isFile;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBlob = void 0;\nconst Blob_1 = require(\"./Blob\");\nconst isBlob = (value) => value instanceof Blob_1.Blob;\nexports.isBlob = isBlob;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deprecateConstructorEntries = void 0;\nconst util_1 = require(\"util\");\nexports.deprecateConstructorEntries = (0, util_1.deprecate)(() => { }, \"Constructor \\\"entries\\\" argument is not spec-compliant \"\n + \"and will be removed in next major release.\");\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FormData_instances, _FormData_entries, _FormData_setEntry;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FormData = void 0;\nconst util_1 = require(\"util\");\nconst File_1 = require(\"./File\");\nconst isFile_1 = require(\"./isFile\");\nconst isBlob_1 = require(\"./isBlob\");\nconst isFunction_1 = require(\"./isFunction\");\nconst deprecateConstructorEntries_1 = require(\"./deprecateConstructorEntries\");\nclass FormData {\n constructor(entries) {\n _FormData_instances.add(this);\n _FormData_entries.set(this, new Map());\n if (entries) {\n (0, deprecateConstructorEntries_1.deprecateConstructorEntries)();\n entries.forEach(({ name, value, fileName }) => this.append(name, value, fileName));\n }\n }\n static [(_FormData_entries = new WeakMap(), _FormData_instances = new WeakSet(), Symbol.hasInstance)](value) {\n return Boolean(value\n && (0, isFunction_1.isFunction)(value.constructor)\n && value[Symbol.toStringTag] === \"FormData\"\n && (0, isFunction_1.isFunction)(value.append)\n && (0, isFunction_1.isFunction)(value.set)\n && (0, isFunction_1.isFunction)(value.get)\n && (0, isFunction_1.isFunction)(value.getAll)\n && (0, isFunction_1.isFunction)(value.has)\n && (0, isFunction_1.isFunction)(value.delete)\n && (0, isFunction_1.isFunction)(value.entries)\n && (0, isFunction_1.isFunction)(value.values)\n && (0, isFunction_1.isFunction)(value.keys)\n && (0, isFunction_1.isFunction)(value[Symbol.iterator])\n && (0, isFunction_1.isFunction)(value.forEach));\n }\n append(name, value, fileName) {\n __classPrivateFieldGet(this, _FormData_instances, \"m\", _FormData_setEntry).call(this, {\n name,\n fileName,\n append: true,\n rawValue: value,\n argsLength: arguments.length\n });\n }\n set(name, value, fileName) {\n __classPrivateFieldGet(this, _FormData_instances, \"m\", _FormData_setEntry).call(this, {\n name,\n fileName,\n append: false,\n rawValue: value,\n argsLength: arguments.length\n });\n }\n get(name) {\n const field = __classPrivateFieldGet(this, _FormData_entries, \"f\").get(String(name));\n if (!field) {\n return null;\n }\n return field[0];\n }\n getAll(name) {\n const field = __classPrivateFieldGet(this, _FormData_entries, \"f\").get(String(name));\n if (!field) {\n return [];\n }\n return field.slice();\n }\n has(name) {\n return __classPrivateFieldGet(this, _FormData_entries, \"f\").has(String(name));\n }\n delete(name) {\n __classPrivateFieldGet(this, _FormData_entries, \"f\").delete(String(name));\n }\n *keys() {\n for (const key of __classPrivateFieldGet(this, _FormData_entries, \"f\").keys()) {\n yield key;\n }\n }\n *entries() {\n for (const name of this.keys()) {\n const values = this.getAll(name);\n for (const value of values) {\n yield [name, value];\n }\n }\n }\n *values() {\n for (const [, value] of this) {\n yield value;\n }\n }\n [(_FormData_setEntry = function _FormData_setEntry({ name, rawValue, append, fileName, argsLength }) {\n const methodName = append ? \"append\" : \"set\";\n if (argsLength < 2) {\n throw new TypeError(`Failed to execute '${methodName}' on 'FormData': `\n + `2 arguments required, but only ${argsLength} present.`);\n }\n name = String(name);\n let value;\n if ((0, isFile_1.isFile)(rawValue)) {\n value = fileName === undefined\n ? rawValue\n : new File_1.File([rawValue], fileName, {\n type: rawValue.type,\n lastModified: rawValue.lastModified\n });\n }\n else if ((0, isBlob_1.isBlob)(rawValue)) {\n value = new File_1.File([rawValue], fileName === undefined ? \"blob\" : fileName, {\n type: rawValue.type\n });\n }\n else if (fileName) {\n throw new TypeError(`Failed to execute '${methodName}' on 'FormData': `\n + \"parameter 2 is not of type 'Blob'.\");\n }\n else {\n value = String(rawValue);\n }\n const values = __classPrivateFieldGet(this, _FormData_entries, \"f\").get(name);\n if (!values) {\n return void __classPrivateFieldGet(this, _FormData_entries, \"f\").set(name, [value]);\n }\n if (!append) {\n return void __classPrivateFieldGet(this, _FormData_entries, \"f\").set(name, [value]);\n }\n values.push(value);\n }, Symbol.iterator)]() {\n return this.entries();\n }\n forEach(callback, thisArg) {\n for (const [name, value] of this) {\n callback.call(thisArg, value, name, this);\n }\n }\n get [Symbol.toStringTag]() {\n return \"FormData\";\n }\n [util_1.inspect.custom]() {\n return this[Symbol.toStringTag];\n }\n}\nexports.FormData = FormData;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./FormData\"), exports);\n__exportStar(require(\"./Blob\"), exports);\n__exportStar(require(\"./File\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst alphabet = \"abcdefghijklmnopqrstuvwxyz0123456789\";\nfunction createBoundary() {\n let size = 16;\n let res = \"\";\n while (size--) {\n res += alphabet[(Math.random() * alphabet.length) << 0];\n }\n return res;\n}\nexports.default = createBoundary;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst getType = (value) => (Object.prototype.toString.call(value).slice(8, -1).toLowerCase());\nfunction isPlainObject(value) {\n if (getType(value) !== \"object\") {\n return false;\n }\n const pp = Object.getPrototypeOf(value);\n if (pp === null || pp === undefined) {\n return true;\n }\n const Ctor = pp.constructor && pp.constructor.toString();\n return Ctor === Object.toString();\n}\nexports.default = isPlainObject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst normalizeValue = (value) => String(value)\n .replace(/\\r|\\n/g, (match, i, str) => {\n if ((match === \"\\r\" && str[i + 1] !== \"\\n\")\n || (match === \"\\n\" && str[i - 1] !== \"\\r\")) {\n return \"\\r\\n\";\n }\n return match;\n});\nexports.default = normalizeValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst escapeName = (name) => String(name)\n .replace(/\\r/g, \"%0D\")\n .replace(/\\n/g, \"%0A\")\n .replace(/\"/g, \"%22\");\nexports.default = escapeName;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst isFunction = (value) => (typeof value === \"function\");\nexports.default = isFunction;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isFileLike = void 0;\nconst isFunction_1 = __importDefault(require(\"./isFunction\"));\nconst isFileLike = (value) => Boolean(value\n && typeof value === \"object\"\n && (0, isFunction_1.default)(value.constructor)\n && value[Symbol.toStringTag] === \"File\"\n && (0, isFunction_1.default)(value.stream)\n && value.name != null\n && value.size != null\n && value.lastModified != null);\nexports.isFileLike = isFileLike;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isFormDataLike = exports.isFormData = void 0;\nconst isFunction_1 = __importDefault(require(\"./isFunction\"));\nconst isFormData = (value) => Boolean(value\n && (0, isFunction_1.default)(value.constructor)\n && value[Symbol.toStringTag] === \"FormData\"\n && (0, isFunction_1.default)(value.append)\n && (0, isFunction_1.default)(value.getAll)\n && (0, isFunction_1.default)(value.entries)\n && (0, isFunction_1.default)(value[Symbol.iterator]));\nexports.isFormData = isFormData;\nexports.isFormDataLike = exports.isFormData;\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _FormDataEncoder_instances, _FormDataEncoder_CRLF, _FormDataEncoder_CRLF_BYTES, _FormDataEncoder_CRLF_BYTES_LENGTH, _FormDataEncoder_DASHES, _FormDataEncoder_encoder, _FormDataEncoder_footer, _FormDataEncoder_form, _FormDataEncoder_options, _FormDataEncoder_getFieldHeader;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Encoder = exports.FormDataEncoder = void 0;\nconst createBoundary_1 = __importDefault(require(\"./util/createBoundary\"));\nconst isPlainObject_1 = __importDefault(require(\"./util/isPlainObject\"));\nconst normalizeValue_1 = __importDefault(require(\"./util/normalizeValue\"));\nconst escapeName_1 = __importDefault(require(\"./util/escapeName\"));\nconst isFileLike_1 = require(\"./util/isFileLike\");\nconst isFormData_1 = require(\"./util/isFormData\");\nconst defaultOptions = {\n enableAdditionalHeaders: false\n};\nclass FormDataEncoder {\n constructor(form, boundaryOrOptions, options) {\n _FormDataEncoder_instances.add(this);\n _FormDataEncoder_CRLF.set(this, \"\\r\\n\");\n _FormDataEncoder_CRLF_BYTES.set(this, void 0);\n _FormDataEncoder_CRLF_BYTES_LENGTH.set(this, void 0);\n _FormDataEncoder_DASHES.set(this, \"-\".repeat(2));\n _FormDataEncoder_encoder.set(this, new TextEncoder());\n _FormDataEncoder_footer.set(this, void 0);\n _FormDataEncoder_form.set(this, void 0);\n _FormDataEncoder_options.set(this, void 0);\n if (!(0, isFormData_1.isFormData)(form)) {\n throw new TypeError(\"Expected first argument to be a FormData instance.\");\n }\n let boundary;\n if ((0, isPlainObject_1.default)(boundaryOrOptions)) {\n options = boundaryOrOptions;\n }\n else {\n boundary = boundaryOrOptions;\n }\n if (!boundary) {\n boundary = (0, createBoundary_1.default)();\n }\n if (typeof boundary !== \"string\") {\n throw new TypeError(\"Expected boundary argument to be a string.\");\n }\n if (options && !(0, isPlainObject_1.default)(options)) {\n throw new TypeError(\"Expected options argument to be an object.\");\n }\n __classPrivateFieldSet(this, _FormDataEncoder_form, form, \"f\");\n __classPrivateFieldSet(this, _FormDataEncoder_options, { ...defaultOptions, ...options }, \"f\");\n __classPrivateFieldSet(this, _FormDataEncoder_CRLF_BYTES, __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\")), \"f\");\n __classPrivateFieldSet(this, _FormDataEncoder_CRLF_BYTES_LENGTH, __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES, \"f\").byteLength, \"f\");\n this.boundary = `form-data-boundary-${boundary}`;\n this.contentType = `multipart/form-data; boundary=${this.boundary}`;\n __classPrivateFieldSet(this, _FormDataEncoder_footer, __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(`${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, \"f\")}${this.boundary}${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, \"f\")}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\").repeat(2)}`), \"f\");\n this.contentLength = String(this.getContentLength());\n this.headers = Object.freeze({\n \"Content-Type\": this.contentType,\n \"Content-Length\": this.contentLength\n });\n Object.defineProperties(this, {\n boundary: { writable: false, configurable: false },\n contentType: { writable: false, configurable: false },\n contentLength: { writable: false, configurable: false },\n headers: { writable: false, configurable: false }\n });\n }\n getContentLength() {\n let length = 0;\n for (const [name, raw] of __classPrivateFieldGet(this, _FormDataEncoder_form, \"f\")) {\n const value = (0, isFileLike_1.isFileLike)(raw) ? raw : __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode((0, normalizeValue_1.default)(raw));\n length += __classPrivateFieldGet(this, _FormDataEncoder_instances, \"m\", _FormDataEncoder_getFieldHeader).call(this, name, value).byteLength;\n length += (0, isFileLike_1.isFileLike)(value) ? value.size : value.byteLength;\n length += __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES_LENGTH, \"f\");\n }\n return length + __classPrivateFieldGet(this, _FormDataEncoder_footer, \"f\").byteLength;\n }\n *values() {\n for (const [name, raw] of __classPrivateFieldGet(this, _FormDataEncoder_form, \"f\").entries()) {\n const value = (0, isFileLike_1.isFileLike)(raw) ? raw : __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode((0, normalizeValue_1.default)(raw));\n yield __classPrivateFieldGet(this, _FormDataEncoder_instances, \"m\", _FormDataEncoder_getFieldHeader).call(this, name, value);\n yield value;\n yield __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES, \"f\");\n }\n yield __classPrivateFieldGet(this, _FormDataEncoder_footer, \"f\");\n }\n async *encode() {\n for (const part of this.values()) {\n if ((0, isFileLike_1.isFileLike)(part)) {\n yield* part.stream();\n }\n else {\n yield part;\n }\n }\n }\n [(_FormDataEncoder_CRLF = new WeakMap(), _FormDataEncoder_CRLF_BYTES = new WeakMap(), _FormDataEncoder_CRLF_BYTES_LENGTH = new WeakMap(), _FormDataEncoder_DASHES = new WeakMap(), _FormDataEncoder_encoder = new WeakMap(), _FormDataEncoder_footer = new WeakMap(), _FormDataEncoder_form = new WeakMap(), _FormDataEncoder_options = new WeakMap(), _FormDataEncoder_instances = new WeakSet(), _FormDataEncoder_getFieldHeader = function _FormDataEncoder_getFieldHeader(name, value) {\n let header = \"\";\n header += `${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, \"f\")}${this.boundary}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\")}`;\n header += `Content-Disposition: form-data; name=\"${(0, escapeName_1.default)(name)}\"`;\n if ((0, isFileLike_1.isFileLike)(value)) {\n header += `; filename=\"${(0, escapeName_1.default)(value.name)}\"${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\")}`;\n header += `Content-Type: ${value.type || \"application/octet-stream\"}`;\n }\n if (__classPrivateFieldGet(this, _FormDataEncoder_options, \"f\").enableAdditionalHeaders === true) {\n header += `${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\")}Content-Length: ${(0, isFileLike_1.isFileLike)(value) ? value.size : value.byteLength}`;\n }\n return __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(`${header}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\").repeat(2)}`);\n }, Symbol.iterator)]() {\n return this.values();\n }\n [Symbol.asyncIterator]() {\n return this.encode();\n }\n}\nexports.FormDataEncoder = FormDataEncoder;\nexports.Encoder = FormDataEncoder;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./FormDataEncoder\"), exports);\n__exportStar(require(\"./FileLike\"), exports);\n__exportStar(require(\"./FormDataLike\"), exports);\n__exportStar(require(\"./util/isFileLike\"), exports);\n__exportStar(require(\"./util/isFormData\"), exports);\n","/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nexport class MultipartBody {\n constructor(public body: any) {}\n get [Symbol.toStringTag](): string {\n return 'MultipartBody';\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst getType = (value) => (Object.prototype.toString.call(value).slice(8, -1).toLowerCase());\nfunction isPlainObject(value) {\n if (getType(value) !== \"object\") {\n return false;\n }\n const pp = Object.getPrototypeOf(value);\n if (pp === null || pp === undefined) {\n return true;\n }\n const Ctor = pp.constructor && pp.constructor.toString();\n return Ctor === Object.toString();\n}\nexports.default = isPlainObject;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _FileFromPath_path, _FileFromPath_start;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fileFromPath = exports.fileFromPathSync = void 0;\nconst fs_1 = require(\"fs\");\nconst path_1 = require(\"path\");\nconst node_domexception_1 = __importDefault(require(\"node-domexception\"));\nconst File_1 = require(\"./File\");\nconst isPlainObject_1 = __importDefault(require(\"./isPlainObject\"));\n__exportStar(require(\"./isFile\"), exports);\nconst MESSAGE = \"The requested file could not be read, \"\n + \"typically due to permission problems that have occurred after a reference \"\n + \"to a file was acquired.\";\nclass FileFromPath {\n constructor(input) {\n _FileFromPath_path.set(this, void 0);\n _FileFromPath_start.set(this, void 0);\n __classPrivateFieldSet(this, _FileFromPath_path, input.path, \"f\");\n __classPrivateFieldSet(this, _FileFromPath_start, input.start || 0, \"f\");\n this.name = (0, path_1.basename)(__classPrivateFieldGet(this, _FileFromPath_path, \"f\"));\n this.size = input.size;\n this.lastModified = input.lastModified;\n }\n slice(start, end) {\n return new FileFromPath({\n path: __classPrivateFieldGet(this, _FileFromPath_path, \"f\"),\n lastModified: this.lastModified,\n size: end - start,\n start\n });\n }\n async *stream() {\n const { mtimeMs } = await fs_1.promises.stat(__classPrivateFieldGet(this, _FileFromPath_path, \"f\"));\n if (mtimeMs > this.lastModified) {\n throw new node_domexception_1.default(MESSAGE, \"NotReadableError\");\n }\n if (this.size) {\n yield* (0, fs_1.createReadStream)(__classPrivateFieldGet(this, _FileFromPath_path, \"f\"), {\n start: __classPrivateFieldGet(this, _FileFromPath_start, \"f\"),\n end: __classPrivateFieldGet(this, _FileFromPath_start, \"f\") + this.size - 1\n });\n }\n }\n get [(_FileFromPath_path = new WeakMap(), _FileFromPath_start = new WeakMap(), Symbol.toStringTag)]() {\n return \"File\";\n }\n}\nfunction createFileFromPath(path, { mtimeMs, size }, filenameOrOptions, options = {}) {\n let filename;\n if ((0, isPlainObject_1.default)(filenameOrOptions)) {\n [options, filename] = [filenameOrOptions, undefined];\n }\n else {\n filename = filenameOrOptions;\n }\n const file = new FileFromPath({ path, size, lastModified: mtimeMs });\n if (!filename) {\n filename = file.name;\n }\n return new File_1.File([file], filename, {\n ...options, lastModified: file.lastModified\n });\n}\nfunction fileFromPathSync(path, filenameOrOptions, options = {}) {\n const stats = (0, fs_1.statSync)(path);\n return createFileFromPath(path, stats, filenameOrOptions, options);\n}\nexports.fileFromPathSync = fileFromPathSync;\nasync function fileFromPath(path, filenameOrOptions, options) {\n const stats = await fs_1.promises.stat(path);\n return createFileFromPath(path, stats, filenameOrOptions, options);\n}\nexports.fileFromPath = fileFromPath;\n","/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nimport * as nf from 'node-fetch';\nimport * as fd from 'formdata-node';\nimport { type File, type FilePropertyBag } from 'formdata-node';\nimport KeepAliveAgent from 'agentkeepalive';\nimport { AbortController as AbortControllerPolyfill } from 'abort-controller';\nimport { ReadStream as FsReadStream } from 'node:fs';\nimport { type Agent } from 'node:http';\nimport { FormDataEncoder } from 'form-data-encoder';\nimport { Readable } from 'node:stream';\nimport { type RequestOptions } from '../core';\nimport { MultipartBody } from './MultipartBody';\nimport { type Shims } from './registry';\n\n// @ts-ignore (this package does not have proper export maps for this export)\nimport { ReadableStream } from 'web-streams-polyfill/dist/ponyfill.es2018.js';\n\ntype FileFromPathOptions = Omit<FilePropertyBag, 'lastModified'>;\n\nlet fileFromPathWarned = false;\n\n/**\n * @deprecated use fs.createReadStream('./my/file.txt') instead\n */\nasync function fileFromPath(path: string): Promise<File>;\nasync function fileFromPath(path: string, filename?: string): Promise<File>;\nasync function fileFromPath(path: string, options?: FileFromPathOptions): Promise<File>;\nasync function fileFromPath(path: string, filename?: string, options?: FileFromPathOptions): Promise<File>;\nasync function fileFromPath(path: string, ...args: any[]): Promise<File> {\n // this import fails in environments that don't handle export maps correctly, like old versions of Jest\n const { fileFromPath: _fileFromPath } = await import('formdata-node/file-from-path');\n\n if (!fileFromPathWarned) {\n console.warn(`fileFromPath is deprecated; use fs.createReadStream(${JSON.stringify(path)}) instead`);\n fileFromPathWarned = true;\n }\n // @ts-ignore\n return await _fileFromPath(path, ...args);\n}\n\nconst defaultHttpAgent: Agent = new KeepAliveAgent({ keepAlive: true, timeout: 5 * 60 * 1000 });\nconst defaultHttpsAgent: Agent = new KeepAliveAgent.HttpsAgent({ keepAlive: true, timeout: 5 * 60 * 1000 });\n\nasync function getMultipartRequestOptions<T = Record<string, unknown>>(\n form: fd.FormData,\n opts: RequestOptions<T>,\n): Promise<RequestOptions<T>> {\n const encoder = new FormDataEncoder(form);\n const readable = Readable.from(encoder);\n const body = new MultipartBody(readable);\n const headers = {\n ...opts.headers,\n ...encoder.headers,\n 'Content-Length': encoder.contentLength,\n };\n\n return { ...opts, body: body as any, headers };\n}\n\nexport function getRuntime(): Shims {\n // Polyfill global object if needed.\n if (typeof AbortController === 'undefined') {\n // @ts-expect-error (the types are subtly different, but compatible in practice)\n globalThis.AbortController = AbortControllerPolyfill;\n }\n return {\n kind: 'node',\n fetch: nf.default,\n Request: nf.Request,\n Response: nf.Response,\n Headers: nf.Headers,\n FormData: fd.FormData,\n Blob: fd.Blob,\n File: fd.File,\n ReadableStream,\n getMultipartRequestOptions,\n getDefaultAgent: (url: string): Agent => (url.startsWith('https') ? defaultHttpsAgent : defaultHttpAgent),\n fileFromPath,\n isFsReadStream: (value: any): value is FsReadStream => value instanceof FsReadStream,\n };\n}\n","/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nexport * from '../node-runtime';\n","/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nconst shims = require('./registry');\nconst auto = require('openai/_shims/auto/runtime');\nif (!shims.kind) shims.setShims(auto.getRuntime(), { auto: true });\nfor (const property of Object.keys(shims)) {\n Object.defineProperty(exports, property, {\n get() {\n return shims[property];\n },\n });\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport { castToError, Headers } from './core';\n\nexport class OpenAIError extends Error {}\n\nexport class APIError extends OpenAIError {\n readonly status: number | undefined;\n readonly headers: Headers | undefined;\n readonly error: Object | undefined;\n\n readonly code: string | null | undefined;\n readonly param: string | null | undefined;\n readonly type: string | undefined;\n\n constructor(\n status: number | undefined,\n error: Object | undefined,\n message: string | undefined,\n headers: Headers | undefined,\n ) {\n super(`${APIError.makeMessage(status, error, message)}`);\n this.status = status;\n this.headers = headers;\n\n const data = error as Record<string, any>;\n this.error = data;\n this.code = data?.['code'];\n this.param = data?.['param'];\n this.type = data?.['type'];\n }\n\n private static makeMessage(status: number | undefined, error: any, message: string | undefined) {\n const msg =\n error?.message ?\n typeof error.message === 'string' ?\n error.message\n : JSON.stringify(error.message)\n : error ? JSON.stringify(error)\n : message;\n\n if (status && msg) {\n return `${status} ${msg}`;\n }\n if (status) {\n return `${status} status code (no body)`;\n }\n if (msg) {\n return msg;\n }\n return '(no status code or body)';\n }\n\n static generate(\n status: number | undefined,\n errorResponse: Object | undefined,\n message: string | undefined,\n headers: Headers | undefined,\n ) {\n if (!status) {\n return new APIConnectionError({ cause: castToError(errorResponse) });\n }\n\n const error = (errorResponse as Record<string, any>)?.['error'];\n\n if (status === 400) {\n return new BadRequestError(status, error, message, headers);\n }\n\n if (status === 401) {\n return new AuthenticationError(status, error, message, headers);\n }\n\n if (status === 403) {\n return new PermissionDeniedError(status, error, message, headers);\n }\n\n if (status === 404) {\n return new NotFoundError(status, error, message, headers);\n }\n\n if (status === 409) {\n return new ConflictError(status, error, message, headers);\n }\n\n if (status === 422) {\n return new UnprocessableEntityError(status, error, message, headers);\n }\n\n if (status === 429) {\n return new RateLimitError(status, error, message, headers);\n }\n\n if (status >= 500) {\n return new InternalServerError(status, error, message, headers);\n }\n\n return new APIError(status, error, message, headers);\n }\n}\n\nexport class APIUserAbortError extends APIError {\n override readonly status: undefined = undefined;\n\n constructor({ message }: { message?: string } = {}) {\n super(undefined, undefined, message || 'Request was aborted.', undefined);\n }\n}\n\nexport class APIConnectionError extends APIError {\n override readonly status: undefined = undefined;\n\n constructor({ message, cause }: { message?: string; cause?: Error | undefined }) {\n super(undefined, undefined, message || 'Connection error.', undefined);\n // in some environments the 'cause' property is already declared\n // @ts-ignore\n if (cause) this.cause = cause;\n }\n}\n\nexport class APIConnectionTimeoutError extends APIConnectionError {\n constructor({ message }: { message?: string } = {}) {\n super({ message: message ?? 'Request timed out.' });\n }\n}\n\nexport class BadRequestError extends APIError {\n override readonly status: 400 = 400;\n}\n\nexport class AuthenticationError extends APIError {\n override readonly status: 401 = 401;\n}\n\nexport class PermissionDeniedError extends APIError {\n override readonly status: 403 = 403;\n}\n\nexport class NotFoundError extends APIError {\n override readonly status: 404 = 404;\n}\n\nexport class ConflictError extends APIError {\n override readonly status: 409 = 409;\n}\n\nexport class UnprocessableEntityError extends APIError {\n override readonly status: 422 = 422;\n}\n\nexport class RateLimitError extends APIError {\n override readonly status: 429 = 429;\n}\n\nexport class InternalServerError extends APIError {}\n","import { ReadableStream, type Response } from './_shims/index';\nimport { OpenAIError } from './error';\n\nimport { APIError } from \"./error\";\n\ntype Bytes = string | ArrayBuffer | Uint8Array | Buffer | null | undefined;\n\nexport type ServerSentEvent = {\n event: string | null;\n data: string;\n raw: string[];\n};\n\nexport class Stream<Item> implements AsyncIterable<Item> {\n controller: AbortController;\n\n constructor(\n private iterator: () => AsyncIterator<Item>,\n controller: AbortController,\n ) {\n this.controller = controller;\n }\n\n static fromSSEResponse<Item>(response: Response, controller: AbortController) {\n let consumed = false;\n const decoder = new SSEDecoder();\n\n async function* iterMessages(): AsyncGenerator<ServerSentEvent, void, unknown> {\n if (!response.body) {\n controller.abort();\n throw new OpenAIError(`Attempted to iterate over a response with no body`);\n }\n\n const lineDecoder = new LineDecoder();\n\n const iter = readableStreamAsyncIterable<Bytes>(response.body);\n for await (const chunk of iter) {\n for (const line of lineDecoder.decode(chunk)) {\n const sse = decoder.decode(line);\n if (sse) yield sse;\n }\n }\n\n for (const line of lineDecoder.flush()) {\n const sse = decoder.decode(line);\n if (sse) yield sse;\n }\n }\n\n async function* iterator(): AsyncIterator<Item, any, undefined> {\n if (consumed) {\n throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const sse of iterMessages()) {\n if (done) continue;\n\n if (sse.data.startsWith('[DONE]')) {\n done = true;\n continue;\n }\n\n if (sse.event === null) {\n let data;\n\n try {\n data = JSON.parse(sse.data);\n } catch (e) {\n console.error(`Could not parse message into JSON:`, sse.data);\n console.error(`From chunk:`, sse.raw);\n throw e;\n }\n\n if (data && data.error) {\n throw new APIError(undefined, data.error, undefined, undefined);\n }\n\n yield data;\n }\n }\n done = true;\n } catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (e instanceof Error && e.name === 'AbortError') return;\n throw e;\n } finally {\n // If the user `break`s, abort the ongoing request.\n if (!done) controller.abort();\n }\n }\n\n return new Stream(iterator, controller);\n }\n\n /**\n * Generates a Stream from a newline-separated ReadableStream\n * where each item is a JSON value.\n */\n static fromReadableStream<Item>(readableStream: ReadableStream, controller: AbortController) {\n let consumed = false;\n\n async function* iterLines(): AsyncGenerator<string, void, unknown> {\n const lineDecoder = new LineDecoder();\n\n const iter = readableStreamAsyncIterable<Bytes>(readableStream);\n for await (const chunk of iter) {\n for (const line of lineDecoder.decode(chunk)) {\n yield line;\n }\n }\n\n for (const line of lineDecoder.flush()) {\n yield line;\n }\n }\n\n async function* iterator(): AsyncIterator<Item, any, undefined> {\n if (consumed) {\n throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const line of iterLines()) {\n if (done) continue;\n if (line) yield JSON.parse(line);\n }\n done = true;\n } catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (e instanceof Error && e.name === 'AbortError') return;\n throw e;\n } finally {\n // If the user `break`s, abort the ongoing request.\n if (!done) controller.abort();\n }\n }\n\n return new Stream(iterator, controller);\n }\n\n [Symbol.asyncIterator](): AsyncIterator<Item> {\n return this.iterator();\n }\n\n /**\n * Splits the stream into two streams which can be\n * independently read from at different speeds.\n */\n tee(): [Stream<Item>, Stream<Item>] {\n const left: Array<Promise<IteratorResult<Item>>> = [];\n const right: Array<Promise<IteratorResult<Item>>> = [];\n const iterator = this.iterator();\n\n const teeIterator = (queue: Array<Promise<IteratorResult<Item>>>): AsyncIterator<Item> => {\n return {\n next: () => {\n if (queue.length === 0) {\n const result = iterator.next();\n left.push(result);\n right.push(result);\n }\n return queue.shift()!;\n },\n };\n };\n\n return [\n new Stream(() => teeIterator(left), this.controller),\n new Stream(() => teeIterator(right), this.controller),\n ];\n }\n\n /**\n * Converts this stream to a newline-separated ReadableStream of\n * JSON stringified values in the stream\n * which can be turned back into a Stream with `Stream.fromReadableStream()`.\n */\n toReadableStream(): ReadableStream {\n const self = this;\n let iter: AsyncIterator<Item>;\n const encoder = new TextEncoder();\n\n return new ReadableStream({\n async start() {\n iter = self[Symbol.asyncIterator]();\n },\n async pull(ctrl) {\n try {\n const { value, done } = await iter.next();\n if (done) return ctrl.close();\n\n const bytes = encoder.encode(JSON.stringify(value) + '\\n');\n\n ctrl.enqueue(bytes);\n } catch (err) {\n ctrl.error(err);\n }\n },\n async cancel() {\n await iter.return?.();\n },\n });\n }\n}\n\nclass SSEDecoder {\n private data: string[];\n private event: string | null;\n private chunks: string[];\n\n constructor() {\n this.event = null;\n this.data = [];\n this.chunks = [];\n }\n\n decode(line: string) {\n if (line.endsWith('\\r')) {\n line = line.substring(0, line.length - 1);\n }\n\n if (!line) {\n // empty line and we didn't previously encounter any messages\n if (!this.event && !this.data.length) return null;\n\n const sse: ServerSentEvent = {\n event: this.event,\n data: this.data.join('\\n'),\n raw: this.chunks,\n };\n\n this.event = null;\n this.data = [];\n this.chunks = [];\n\n return sse;\n }\n\n this.chunks.push(line);\n\n if (line.startsWith(':')) {\n return null;\n }\n\n let [fieldname, _, value] = partition(line, ':');\n\n if (value.startsWith(' ')) {\n value = value.substring(1);\n }\n\n if (fieldname === 'event') {\n this.event = value;\n } else if (fieldname === 'data') {\n this.data.push(value);\n }\n\n return null;\n }\n}\n\n/**\n * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally\n * reading lines from text.\n *\n * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258\n */\nclass LineDecoder {\n // prettier-ignore\n static NEWLINE_CHARS = new Set(['\\n', '\\r', '\\x0b', '\\x0c', '\\x1c', '\\x1d', '\\x1e', '\\x85', '\\u2028', '\\u2029']);\n static NEWLINE_REGEXP = /\\r\\n|[\\n\\r\\x0b\\x0c\\x1c\\x1d\\x1e\\x85\\u2028\\u2029]/g;\n\n buffer: string[];\n trailingCR: boolean;\n textDecoder: any; // TextDecoder found in browsers; not typed to avoid pulling in either \"dom\" or \"node\" types.\n\n constructor() {\n this.buffer = [];\n this.trailingCR = false;\n }\n\n decode(chunk: Bytes): string[] {\n let text = this.decodeText(chunk);\n\n if (this.trailingCR) {\n text = '\\r' + text;\n this.trailingCR = false;\n }\n if (text.endsWith('\\r')) {\n this.trailingCR = true;\n text = text.slice(0, -1);\n }\n\n if (!text) {\n return [];\n }\n\n const trailingNewline = LineDecoder.NEWLINE_CHARS.has(text[text.length - 1] || '');\n let lines = text.split(LineDecoder.NEWLINE_REGEXP);\n\n if (lines.length === 1 && !trailingNewline) {\n this.buffer.push(lines[0]!);\n return [];\n }\n\n if (this.buffer.length > 0) {\n lines = [this.buffer.join('') + lines[0], ...lines.slice(1)];\n this.buffer = [];\n }\n\n if (!trailingNewline) {\n this.buffer = [lines.pop() || ''];\n }\n\n return lines;\n }\n\n decodeText(bytes: Bytes): string {\n if (bytes == null) return '';\n if (typeof bytes === 'string') return bytes;\n\n // Node:\n if (typeof Buffer !== 'undefined') {\n if (bytes instanceof Buffer) {\n return bytes.toString();\n }\n if (bytes instanceof Uint8Array) {\n return Buffer.from(bytes).toString();\n }\n\n throw new OpenAIError(\n `Unexpected: received non-Uint8Array (${bytes.constructor.name}) stream chunk in an environment with a global \"Buffer\" defined, which this library assumes to be Node. Please report this error.`,\n );\n }\n\n // Browser\n if (typeof TextDecoder !== 'undefined') {\n if (bytes instanceof Uint8Array || bytes instanceof ArrayBuffer) {\n this.textDecoder ??= new TextDecoder('utf8');\n return this.textDecoder.decode(bytes);\n }\n\n throw new OpenAIError(\n `Unexpected: received non-Uint8Array/ArrayBuffer (${\n (bytes as any).constructor.name\n }) in a web platform. Please report this error.`,\n );\n }\n\n throw new OpenAIError(\n `Unexpected: neither Buffer nor TextDecoder are available as globals. Please report this error.`,\n );\n }\n\n flush(): string[] {\n if (!this.buffer.length && !this.trailingCR) {\n return [];\n }\n\n const lines = [this.buffer.join('')];\n this.buffer = [];\n this.trailingCR = false;\n return lines;\n }\n}\n\nfunction partition(str: string, delimiter: string): [string, string, string] {\n const index = str.indexOf(delimiter);\n if (index !== -1) {\n return [str.substring(0, index), delimiter, str.substring(index + delimiter.length)];\n }\n\n return [str, '', ''];\n}\n\n/**\n * Most browsers don't yet have async iterable support for ReadableStream,\n * and Node has a very different way of reading bytes from its \"ReadableStream\".\n *\n * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport function readableStreamAsyncIterable<T>(stream: any): AsyncIterableIterator<T> {\n if (stream[Symbol.asyncIterator]) return stream;\n\n const reader = stream.getReader();\n return {\n async next() {\n try {\n const result = await reader.read();\n if (result?.done) reader.releaseLock(); // release lock when stream becomes closed\n return result;\n } catch (e) {\n reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n },\n async return() {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n return { done: true, value: undefined };\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n","import { type RequestOptions } from './core';\nimport {\n FormData,\n File,\n type Blob,\n type FilePropertyBag,\n getMultipartRequestOptions,\n type FsReadStream,\n isFsReadStream,\n} from './_shims/index';\nimport { MultipartBody } from './_shims/MultipartBody';\nexport { fileFromPath } from './_shims/index';\n\ntype BlobLikePart = string | ArrayBuffer | ArrayBufferView | BlobLike | Uint8Array | DataView;\nexport type BlobPart = string | ArrayBuffer | ArrayBufferView | Blob | Uint8Array | DataView;\n\n/**\n * Typically, this is a native \"File\" class.\n *\n * We provide the {@link toFile} utility to convert a variety of objects\n * into the File class.\n *\n * For convenience, you can also pass a fetch Response, or in Node,\n * the result of fs.createReadStream().\n */\nexport type Uploadable = FileLike | ResponseLike | FsReadStream;\n\n/**\n * Intended to match web.Blob, node.Blob, node-fetch.Blob, etc.\n */\nexport interface BlobLike {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/size) */\n readonly size: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/type) */\n readonly type: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/text) */\n text(): Promise<string>;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) */\n slice(start?: number, end?: number): BlobLike;\n // unfortunately @types/node-fetch@^2.6.4 doesn't type the arrayBuffer method\n}\n\n/**\n * Intended to match web.File, node.File, node-fetch.File, etc.\n */\nexport interface FileLike extends BlobLike {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/lastModified) */\n readonly lastModified: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/name) */\n readonly name: string;\n}\n\n/**\n * Intended to match web.Response, node.Response, node-fetch.Response, etc.\n */\nexport interface ResponseLike {\n url: string;\n blob(): Promise<BlobLike>;\n}\n\nexport const isResponseLike = (value: any): value is ResponseLike =>\n value != null &&\n typeof value === 'object' &&\n typeof value.url === 'string' &&\n typeof value.blob === 'function';\n\nexport const isFileLike = (value: any): value is FileLike =>\n value != null &&\n typeof value === 'object' &&\n typeof value.name === 'string' &&\n typeof value.lastModified === 'number' &&\n isBlobLike(value);\n\n/**\n * The BlobLike type omits arrayBuffer() because @types/node-fetch@^2.6.4 lacks it; but this check\n * adds the arrayBuffer() method type because it is available and used at runtime\n */\nexport const isBlobLike = (value: any): value is BlobLike & { arrayBuffer(): Promise<ArrayBuffer> } =>\n value != null &&\n typeof value === 'object' &&\n typeof value.size === 'number' &&\n typeof value.type === 'string' &&\n typeof value.text === 'function' &&\n typeof value.slice === 'function' &&\n typeof value.arrayBuffer === 'function';\n\nexport const isUploadable = (value: any): value is Uploadable => {\n return isFileLike(value) || isResponseLike(value) || isFsReadStream(value);\n};\n\nexport type ToFileInput = Uploadable | Exclude<BlobLikePart, string> | AsyncIterable<BlobLikePart>;\n\n/**\n * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats\n * @param value the raw content of the file. Can be an {@link Uploadable}, {@link BlobLikePart}, or {@link AsyncIterable} of {@link BlobLikePart}s\n * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible\n * @param {Object=} options additional properties\n * @param {string=} options.type the MIME type of the content\n * @param {number=} options.lastModified the last modified timestamp\n * @returns a {@link File} with the given properties\n */\nexport async function toFile(\n value: ToFileInput | PromiseLike<ToFileInput>,\n name?: string | null | undefined,\n options: FilePropertyBag | undefined = {},\n): Promise<FileLike> {\n // If it's a promise, resolve it.\n value = await value;\n\n if (isResponseLike(value)) {\n const blob = await value.blob();\n name ||= new URL(value.url).pathname.split(/[\\\\/]/).pop() ?? 'unknown_file';\n\n return new File([blob as any], name, options);\n }\n\n const bits = await getBytes(value);\n\n name ||= getName(value) ?? 'unknown_file';\n\n if (!options.type) {\n const type = (bits[0] as any)?.type;\n if (typeof type === 'string') {\n options = { ...options, type };\n }\n }\n\n return new File(bits, name, options);\n}\n\nasync function getBytes(value: ToFileInput): Promise<Array<BlobPart>> {\n let parts: Array<BlobPart> = [];\n if (\n typeof value === 'string' ||\n ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.\n value instanceof ArrayBuffer\n ) {\n parts.push(value);\n } else if (isBlobLike(value)) {\n parts.push(await value.arrayBuffer());\n } else if (\n isAsyncIterableIterator(value) // includes Readable, ReadableStream, etc.\n ) {\n for await (const chunk of value) {\n parts.push(chunk as BlobPart); // TODO, consider validating?\n }\n } else {\n throw new Error(\n `Unexpected data type: ${typeof value}; constructor: ${value?.constructor\n ?.name}; props: ${propsForError(value)}`,\n );\n }\n\n return parts;\n}\n\nfunction propsForError(value: any): string {\n const props = Object.getOwnPropertyNames(value);\n return `[${props.map((p) => `\"${p}\"`).join(', ')}]`;\n}\n\nfunction getName(value: any): string | undefined {\n return (\n getStringFromMaybeBuffer(value.name) ||\n getStringFromMaybeBuffer(value.filename) ||\n // For fs.ReadStream\n getStringFromMaybeBuffer(value.path)?.split(/[\\\\/]/).pop()\n );\n}\n\nconst getStringFromMaybeBuffer = (x: string | Buffer | unknown): string | undefined => {\n if (typeof x === 'string') return x;\n if (typeof Buffer !== 'undefined' && x instanceof Buffer) return String(x);\n return undefined;\n};\n\nconst isAsyncIterableIterator = (value: any): value is AsyncIterableIterator<unknown> =>\n value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';\n\nexport const isMultipartBody = (body: any): body is MultipartBody =>\n body && typeof body === 'object' && body.body && body[Symbol.toStringTag] === 'MultipartBody';\n\n/**\n * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.\n * Otherwise returns the request as is.\n */\nexport const maybeMultipartFormRequestOptions = async <T = Record<string, unknown>>(\n opts: RequestOptions<T>,\n): Promise<RequestOptions<T | MultipartBody>> => {\n if (!hasUploadableValue(opts.body)) return opts;\n\n const form = await createForm(opts.body);\n return getMultipartRequestOptions(form, opts);\n};\n\nexport const multipartFormRequestOptions = async <T = Record<string, unknown>>(\n opts: RequestOptions<T>,\n): Promise<RequestOptions<T | MultipartBody>> => {\n const form = await createForm(opts.body);\n return getMultipartRequestOptions(form, opts);\n};\n\nexport const createForm = async <T = Record<string, unknown>>(body: T | undefined): Promise<FormData> => {\n const form = new FormData();\n await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));\n return form;\n};\n\nconst hasUploadableValue = (value: unknown): boolean => {\n if (isUploadable(value)) return true;\n if (Array.isArray(value)) return value.some(hasUploadableValue);\n if (value && typeof value === 'object') {\n for (const k in value) {\n if (hasUploadableValue((value as any)[k])) return true;\n }\n }\n return false;\n};\n\nconst addFormValue = async (form: FormData, key: string, value: unknown): Promise<void> => {\n if (value === undefined) return;\n if (value == null) {\n throw new TypeError(\n `Received null for \"${key}\"; to pass null in FormData, you must use the string 'null'`,\n );\n }\n\n // TODO: make nested formats configurable\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n form.append(key, String(value));\n } else if (isUploadable(value)) {\n const file = await toFile(value);\n form.append(key, file as File);\n } else if (Array.isArray(value)) {\n await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry)));\n } else if (typeof value === 'object') {\n await Promise.all(\n Object.entries(value).map(([name, prop]) => addFormValue(form, `${key}[${name}]`, prop)),\n );\n } else {\n throw new TypeError(\n `Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`,\n );\n }\n};\n","import { VERSION } from './version';\nimport { Stream } from './streaming';\nimport {\n OpenAIError,\n APIError,\n APIConnectionError,\n APIConnectionTimeoutError,\n APIUserAbortError,\n} from './error';\nimport {\n kind as shimsKind,\n type Readable,\n getDefaultAgent,\n type Agent,\n fetch,\n type RequestInfo,\n type RequestInit,\n type Response,\n type HeadersInit,\n} from './_shims/index';\nexport { type Response };\nimport { isMultipartBody } from './uploads';\nexport {\n maybeMultipartFormRequestOptions,\n multipartFormRequestOptions,\n createForm,\n type Uploadable,\n} from './uploads';\n\nexport type Fetch = (url: RequestInfo, init?: RequestInit) => Promise<Response>;\n\ntype PromiseOrValue<T> = T | Promise<T>;\n\ntype APIResponseProps = {\n response: Response;\n options: FinalRequestOptions;\n controller: AbortController;\n};\n\nasync function defaultParseResponse<T>(props: APIResponseProps): Promise<T> {\n const { response } = props;\n if (props.options.stream) {\n debug('response', response.status, response.url, response.headers, response.body);\n\n // Note: there is an invariant here that isn't represented in the type system\n // that if you set `stream: true` the response type must also be `Stream<T>`\n\n if (props.options.__streamClass) {\n return props.options.__streamClass.fromSSEResponse(response, props.controller) as any;\n }\n\n return Stream.fromSSEResponse(response, props.controller) as any;\n }\n\n // fetch refuses to read the body when the status code is 204.\n if (response.status === 204) {\n return null as T;\n }\n\n if (props.options.__binaryResponse) {\n return response as unknown as T;\n }\n\n const contentType = response.headers.get('content-type');\n const isJSON =\n contentType?.includes('application/json') || contentType?.includes('application/vnd.api+json');\n if (isJSON) {\n const json = await response.json();\n\n debug('response', response.status, response.url, response.headers, json);\n\n return json as T;\n }\n\n const text = await response.text();\n debug('response', response.status, response.url, response.headers, text);\n\n // TODO handle blob, arraybuffer, other content types, etc.\n return text as unknown as T;\n}\n\n/**\n * A subclass of `Promise` providing additional helper methods\n * for interacting with the SDK.\n */\nexport class APIPromise<T> extends Promise<T> {\n private parsedPromise: Promise<T> | undefined;\n\n constructor(\n private responsePromise: Promise<APIResponseProps>,\n private parseResponse: (props: APIResponseProps) => PromiseOrValue<T> = defaultParseResponse,\n ) {\n super((resolve) => {\n // this is maybe a bit weird but this has to be a no-op to not implicitly\n // parse the response body; instead .then, .catch, .finally are overridden\n // to parse the response\n resolve(null as any);\n });\n }\n\n _thenUnwrap<U>(transform: (data: T) => U): APIPromise<U> {\n return new APIPromise(this.responsePromise, async (props) => transform(await this.parseResponse(props)));\n }\n\n /**\n * Gets the raw `Response` instance instead of parsing the response\n * data.\n *\n * If you want to parse the response body but still get the `Response`\n * instance, you can use {@link withResponse()}.\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` if you can,\n * or add one of these imports before your first `import … from 'openai'`:\n * - `import 'openai/shims/node'` (if you're running on Node)\n * - `import 'openai/shims/web'` (otherwise)\n */\n asResponse(): Promise<Response> {\n return this.responsePromise.then((p) => p.response);\n }\n /**\n * Gets the parsed response data and the raw `Response` instance.\n *\n * If you just want to get the raw `Response` instance without parsing it,\n * you can use {@link asResponse()}.\n *\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` if you can,\n * or add one of these imports before your first `import … from 'openai'`:\n * - `import 'openai/shims/node'` (if you're running on Node)\n * - `import 'openai/shims/web'` (otherwise)\n */\n async withResponse(): Promise<{ data: T; response: Response }> {\n const [data, response] = await Promise.all([this.parse(), this.asResponse()]);\n return { data, response };\n }\n\n private parse(): Promise<T> {\n if (!this.parsedPromise) {\n this.parsedPromise = this.responsePromise.then(this.parseResponse);\n }\n return this.parsedPromise;\n }\n\n override then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null,\n ): Promise<TResult1 | TResult2> {\n return this.parse().then(onfulfilled, onrejected);\n }\n\n override catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null,\n ): Promise<T | TResult> {\n return this.parse().catch(onrejected);\n }\n\n override finally(onfinally?: (() => void) | undefined | null): Promise<T> {\n return this.parse().finally(onfinally);\n }\n}\n\nexport abstract class APIClient {\n baseURL: string;\n maxRetries: number;\n timeout: number;\n httpAgent: Agent | undefined;\n\n private fetch: Fetch;\n protected idempotencyHeader?: string;\n\n constructor({\n baseURL,\n maxRetries = 2,\n timeout = 600000, // 10 minutes\n httpAgent,\n fetch: overridenFetch,\n }: {\n baseURL: string;\n maxRetries?: number | undefined;\n timeout: number | undefined;\n httpAgent: Agent | undefined;\n fetch: Fetch | undefined;\n }) {\n this.baseURL = baseURL;\n this.maxRetries = validatePositiveInteger('maxRetries', maxRetries);\n this.timeout = validatePositiveInteger('timeout', timeout);\n this.httpAgent = httpAgent;\n\n this.fetch = overridenFetch ?? fetch;\n }\n\n protected authHeaders(opts: FinalRequestOptions): Headers {\n return {};\n }\n\n /**\n * Override this to add your own default headers, for example:\n *\n * {\n * ...super.defaultHeaders(),\n * Authorization: 'Bearer 123',\n * }\n */\n protected defaultHeaders(opts: FinalRequestOptions): Headers {\n return {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'User-Agent': this.getUserAgent(),\n ...getPlatformHeaders(),\n ...this.authHeaders(opts),\n };\n }\n\n protected abstract defaultQuery(): DefaultQuery | undefined;\n\n /**\n * Override this to add your own headers validation:\n */\n protected validateHeaders(headers: Headers, customHeaders: Headers) {}\n\n protected defaultIdempotencyKey(): string {\n return `stainless-node-retry-${uuid4()}`;\n }\n\n get<Req, Rsp>(path: string, opts?: PromiseOrValue<RequestOptions<Req>>): APIPromise<Rsp> {\n return this.methodRequest('get', path, opts);\n }\n\n post<Req, Rsp>(path: string, opts?: PromiseOrValue<RequestOptions<Req>>): APIPromise<Rsp> {\n return this.methodRequest('post', path, opts);\n }\n\n patch<Req, Rsp>(path: string, opts?: PromiseOrValue<RequestOptions<Req>>): APIPromise<Rsp> {\n return this.methodRequest('patch', path, opts);\n }\n\n put<Req, Rsp>(path: string, opts?: PromiseOrValue<RequestOptions<Req>>): APIPromise<Rsp> {\n return this.methodRequest('put', path, opts);\n }\n\n delete<Req, Rsp>(path: string, opts?: PromiseOrValue<RequestOptions<Req>>): APIPromise<Rsp> {\n return this.methodRequest('delete', path, opts);\n }\n\n private methodRequest<Req, Rsp>(\n method: HTTPMethod,\n path: string,\n opts?: PromiseOrValue<RequestOptions<Req>>,\n ): APIPromise<Rsp> {\n return this.request(Promise.resolve(opts).then((opts) => ({ method, path, ...opts })));\n }\n\n getAPIList<Item, PageClass extends AbstractPage<Item> = AbstractPage<Item>>(\n path: string,\n Page: new (...args: any[]) => PageClass,\n opts?: RequestOptions<any>,\n ): PagePromise<PageClass, Item> {\n return this.requestAPIList(Page, { method: 'get', path, ...opts });\n }\n\n private calculateContentLength(body: unknown): string | null {\n if (typeof body === 'string') {\n if (typeof Buffer !== 'undefined') {\n return Buffer.byteLength(body, 'utf8').toString();\n }\n\n if (typeof TextEncoder !== 'undefined') {\n const encoder = new TextEncoder();\n const encoded = encoder.encode(body);\n return encoded.length.toString();\n }\n }\n\n return null;\n }\n\n buildRequest<Req>(options: FinalRequestOptions<Req>): { req: RequestInit; url: string; timeout: number } {\n const { method, path, query, headers: headers = {} } = options;\n\n const body =\n isMultipartBody(options.body) ? options.body.body\n : options.body ? JSON.stringify(options.body, null, 2)\n : null;\n const contentLength = this.calculateContentLength(body);\n\n const url = this.buildURL(path!, query);\n if ('timeout' in options) validatePositiveInteger('timeout', options.timeout);\n const timeout = options.timeout ?? this.timeout;\n const httpAgent = options.httpAgent ?? this.httpAgent ?? getDefaultAgent(url);\n const minAgentTimeout = timeout + 1000;\n if (\n typeof (httpAgent as any)?.options?.timeout === 'number' &&\n minAgentTimeout > ((httpAgent as any).options.timeout ?? 0)\n ) {\n // Allow any given request to bump our agent active socket timeout.\n // This may seem strange, but leaking active sockets should be rare and not particularly problematic,\n // and without mutating agent we would need to create more of them.\n // This tradeoff optimizes for performance.\n (httpAgent as any).options.timeout = minAgentTimeout;\n }\n\n if (this.idempotencyHeader && method !== 'get') {\n if (!options.idempotencyKey) options.idempotencyKey = this.defaultIdempotencyKey();\n headers[this.idempotencyHeader] = options.idempotencyKey;\n }\n\n const reqHeaders = this.buildHeaders({ options, headers, contentLength });\n\n const req: RequestInit = {\n method,\n ...(body && { body: body as any }),\n headers: reqHeaders,\n ...(httpAgent && { agent: httpAgent }),\n // @ts-ignore node-fetch uses a custom AbortSignal type that is\n // not compatible with standard web types\n signal: options.signal ?? null,\n };\n\n return { req, url, timeout };\n }\n\n private buildHeaders({\n options,\n headers,\n contentLength,\n }: {\n options: FinalRequestOptions;\n headers: Record<string, string | null | undefined>;\n contentLength: string | null | undefined;\n }): Record<string, string> {\n const reqHeaders: Record<string, string> = {};\n if (contentLength) {\n reqHeaders['content-length'] = contentLength;\n }\n\n const defaultHeaders = this.defaultHeaders(options);\n applyHeadersMut(reqHeaders, defaultHeaders);\n applyHeadersMut(reqHeaders, headers);\n\n // let builtin fetch set the Content-Type for multipart bodies\n if (isMultipartBody(options.body) && shimsKind !== 'node') {\n delete reqHeaders['content-type'];\n }\n\n this.validateHeaders(reqHeaders, headers);\n\n return reqHeaders;\n }\n\n /**\n * Used as a callback for mutating the given `FinalRequestOptions` object.\n */\n protected async prepareOptions(options: FinalRequestOptions): Promise<void> {}\n\n /**\n * Used as a callback for mutating the given `RequestInit` object.\n *\n * This is useful for cases where you want to add certain headers based off of\n * the request properties, e.g. `method` or `url`.\n */\n protected async prepareRequest(\n request: RequestInit,\n { url, options }: { url: string; options: FinalRequestOptions },\n ): Promise<void> {}\n\n protected parseHeaders(headers: HeadersInit | null | undefined): Record<string, string> {\n return (\n !headers ? {}\n : Symbol.iterator in headers ?\n Object.fromEntries(Array.from(headers as Iterable<string[]>).map((header) => [...header]))\n : { ...headers }\n );\n }\n\n protected makeStatusError(\n status: number | undefined,\n error: Object | undefined,\n message: string | undefined,\n headers: Headers | undefined,\n ) {\n return APIError.generate(status, error, message, headers);\n }\n\n request<Req, Rsp>(\n options: PromiseOrValue<FinalRequestOptions<Req>>,\n remainingRetries: number | null = null,\n ): APIPromise<Rsp> {\n return new APIPromise(this.makeRequest(options, remainingRetries));\n }\n\n private async makeRequest<Req>(\n optionsInput: PromiseOrValue<FinalRequestOptions<Req>>,\n retriesRemaining: number | null,\n ): Promise<APIResponseProps> {\n const options = await optionsInput;\n if (retriesRemaining == null) {\n retriesRemaining = options.maxRetries ?? this.maxRetries;\n }\n\n await this.prepareOptions(options);\n\n const { req, url, timeout } = this.buildRequest(options);\n\n await this.prepareRequest(req, { url, options });\n\n debug('request', url, options, req.headers);\n\n if (options.signal?.aborted) {\n throw new APIUserAbortError();\n }\n\n const controller = new AbortController();\n const response = await this.fetchWithTimeout(url, req, timeout, controller).catch(castToError);\n\n if (response instanceof Error) {\n if (options.signal?.aborted) {\n throw new APIUserAbortError();\n }\n if (retriesRemaining) {\n return this.retryRequest(options, retriesRemaining);\n }\n if (response.name === 'AbortError') {\n throw new APIConnectionTimeoutError();\n }\n throw new APIConnectionError({ cause: response });\n }\n\n const responseHeaders = createResponseHeaders(response.headers);\n\n if (!response.ok) {\n if (retriesRemaining && this.shouldRetry(response)) {\n const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n debug(`response (error; ${retryMessage})`, response.status, url, responseHeaders);\n return this.retryRequest(options, retriesRemaining, responseHeaders);\n }\n\n const errText = await response.text().catch((e) => castToError(e).message);\n const errJSON = safeJSON(errText);\n const errMessage = errJSON ? undefined : errText;\n const retryMessage = retriesRemaining ? `(error; no more retries left)` : `(error; not retryable)`;\n\n debug(`response (error; ${retryMessage})`, response.status, url, responseHeaders, errMessage);\n\n const err = this.makeStatusError(response.status, errJSON, errMessage, responseHeaders);\n throw err;\n }\n\n return { response, options, controller };\n }\n\n requestAPIList<Item = unknown, PageClass extends AbstractPage<Item> = AbstractPage<Item>>(\n Page: new (...args: ConstructorParameters<typeof AbstractPage>) => PageClass,\n options: FinalRequestOptions,\n ): PagePromise<PageClass, Item> {\n const request = this.makeRequest(options, null);\n return new PagePromise<PageClass, Item>(this, request, Page);\n }\n\n buildURL<Req>(path: string, query: Req | null | undefined): string {\n const url =\n isAbsoluteURL(path) ?\n new URL(path)\n : new URL(this.baseURL + (this.baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));\n\n const defaultQuery = this.defaultQuery();\n if (!isEmptyObj(defaultQuery)) {\n query = { ...defaultQuery, ...query } as Req;\n }\n\n if (typeof query === 'object' && query && !Array.isArray(query)) {\n url.search = this.stringifyQuery(query as Record<string, unknown>);\n }\n\n return url.toString();\n }\n\n protected stringifyQuery(query: Record<string, unknown>): string {\n return Object.entries(query)\n .filter(([_, value]) => typeof value !== 'undefined')\n .map(([key, value]) => {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n }\n if (value === null) {\n return `${encodeURIComponent(key)}=`;\n }\n throw new OpenAIError(\n `Cannot stringify type ${typeof value}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`,\n );\n })\n .join('&');\n }\n\n async fetchWithTimeout(\n url: RequestInfo,\n init: RequestInit | undefined,\n ms: number,\n controller: AbortController,\n ): Promise<Response> {\n const { signal, ...options } = init || {};\n if (signal) signal.addEventListener('abort', () => controller.abort());\n\n const timeout = setTimeout(() => controller.abort(), ms);\n\n return (\n this.getRequestClient()\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n .fetch.call(undefined, url, { signal: controller.signal as any, ...options })\n .finally(() => {\n clearTimeout(timeout);\n })\n );\n }\n\n protected getRequestClient(): RequestClient {\n return { fetch: this.fetch };\n }\n\n private shouldRetry(response: Response): boolean {\n // Note this is not a standard header.\n const shouldRetryHeader = response.headers.get('x-should-retry');\n\n // If the server explicitly says whether or not to retry, obey.\n if (shouldRetryHeader === 'true') return true;\n if (shouldRetryHeader === 'false') return false;\n\n // Retry on request timeouts.\n if (response.status === 408) return true;\n\n // Retry on lock timeouts.\n if (response.status === 409) return true;\n\n // Retry on rate limits.\n if (response.status === 429) return true;\n\n // Retry internal errors.\n if (response.status >= 500) return true;\n\n return false;\n }\n\n private async retryRequest(\n options: FinalRequestOptions,\n retriesRemaining: number,\n responseHeaders?: Headers | undefined,\n ): Promise<APIResponseProps> {\n let timeoutMillis: number | undefined;\n\n // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.\n const retryAfterMillisHeader = responseHeaders?.['retry-after-ms'];\n if (retryAfterMillisHeader) {\n const timeoutMs = parseFloat(retryAfterMillisHeader);\n if (!Number.isNaN(timeoutMs)) {\n timeoutMillis = timeoutMs;\n }\n }\n\n // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n const retryAfterHeader = responseHeaders?.['retry-after'];\n if (retryAfterHeader && !timeoutMillis) {\n const timeoutSeconds = parseFloat(retryAfterHeader);\n if (!Number.isNaN(timeoutSeconds)) {\n timeoutMillis = timeoutSeconds * 1000;\n } else {\n timeoutMillis = Date.parse(retryAfterHeader) - Date.now();\n }\n }\n\n // If the API asks us to wait a certain amount of time (and it's a reasonable amount),\n // just do what it says, but otherwise calculate a default\n if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1000)) {\n const maxRetries = options.maxRetries ?? this.maxRetries;\n timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);\n }\n await sleep(timeoutMillis);\n\n return this.makeRequest(options, retriesRemaining - 1);\n }\n\n private calculateDefaultRetryTimeoutMillis(retriesRemaining: number, maxRetries: number): number {\n const initialRetryDelay = 0.5;\n const maxRetryDelay = 8.0;\n\n const numRetries = maxRetries - retriesRemaining;\n\n // Apply exponential backoff, but not more than the max.\n const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay);\n\n // Apply some jitter, take up to at most 25 percent of the retry time.\n const jitter = 1 - Math.random() * 0.25;\n\n return sleepSeconds * jitter * 1000;\n }\n\n private getUserAgent(): string {\n return `${this.constructor.name}/JS ${VERSION}`;\n }\n}\n\nexport type PageInfo = { url: URL } | { params: Record<string, unknown> | null };\n\nexport abstract class AbstractPage<Item> implements AsyncIterable<Item> {\n #client: APIClient;\n protected options: FinalRequestOptions;\n\n protected response: Response;\n protected body: unknown;\n\n constructor(client: APIClient, response: Response, body: unknown, options: FinalRequestOptions) {\n this.#client = client;\n this.options = options;\n this.response = response;\n this.body = body;\n }\n\n /**\n * @deprecated Use nextPageInfo instead\n */\n abstract nextPageParams(): Partial<Record<string, unknown>> | null;\n abstract nextPageInfo(): PageInfo | null;\n\n abstract getPaginatedItems(): Item[];\n\n hasNextPage(): boolean {\n const items = this.getPaginatedItems();\n if (!items.length) return false;\n return this.nextPageInfo() != null;\n }\n\n async getNextPage(): Promise<this> {\n const nextInfo = this.nextPageInfo();\n if (!nextInfo) {\n throw new OpenAIError(\n 'No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.',\n );\n }\n const nextOptions = { ...this.options };\n if ('params' in nextInfo && typeof nextOptions.query === 'object') {\n nextOptions.query = { ...nextOptions.query, ...nextInfo.params };\n } else if ('url' in nextInfo) {\n const params = [...Object.entries(nextOptions.query || {}), ...nextInfo.url.searchParams.entries()];\n for (const [key, value] of params) {\n nextInfo.url.searchParams.set(key, value as any);\n }\n nextOptions.query = undefined;\n nextOptions.path = nextInfo.url.toString();\n }\n return await this.#client.requestAPIList(this.constructor as any, nextOptions);\n }\n\n async *iterPages() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let page: AbstractPage<Item> = this;\n yield page;\n while (page.hasNextPage()) {\n page = await page.getNextPage();\n yield page;\n }\n }\n\n async *[Symbol.asyncIterator]() {\n for await (const page of this.iterPages()) {\n for (const item of page.getPaginatedItems()) {\n yield item;\n }\n }\n }\n}\n\n/**\n * This subclass of Promise will resolve to an instantiated Page once the request completes.\n *\n * It also implements AsyncIterable to allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\nexport class PagePromise<\n PageClass extends AbstractPage<Item>,\n Item = ReturnType<PageClass['getPaginatedItems']>[number],\n >\n extends APIPromise<PageClass>\n implements AsyncIterable<Item>\n{\n constructor(\n client: APIClient,\n request: Promise<APIResponseProps>,\n Page: new (...args: ConstructorParameters<typeof AbstractPage>) => PageClass,\n ) {\n super(\n request,\n async (props) => new Page(client, props.response, await defaultParseResponse(props), props.options),\n );\n }\n\n /**\n * Allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\n async *[Symbol.asyncIterator]() {\n const page = await this;\n for await (const item of page) {\n yield item;\n }\n }\n}\n\nexport const createResponseHeaders = (\n headers: Awaited<ReturnType<Fetch>>['headers'],\n): Record<string, string> => {\n return new Proxy(\n Object.fromEntries(\n // @ts-ignore\n headers.entries(),\n ),\n {\n get(target, name) {\n const key = name.toString();\n return target[key.toLowerCase()] || target[key];\n },\n },\n );\n};\n\ntype HTTPMethod = 'get' | 'post' | 'put' | 'patch' | 'delete';\n\nexport type RequestClient = { fetch: Fetch };\nexport type Headers = Record<string, string | null | undefined>;\nexport type DefaultQuery = Record<string, string | undefined>;\nexport type KeysEnum<T> = { [P in keyof Required<T>]: true };\n\nexport type RequestOptions<Req = unknown | Record<string, unknown> | Readable> = {\n method?: HTTPMethod;\n path?: string;\n query?: Req | undefined;\n body?: Req | null | undefined;\n headers?: Headers | undefined;\n\n maxRetries?: number;\n stream?: boolean | undefined;\n timeout?: number;\n httpAgent?: Agent;\n signal?: AbortSignal | undefined | null;\n idempotencyKey?: string;\n\n __binaryResponse?: boolean | undefined;\n __streamClass?: typeof Stream;\n};\n\n// This is required so that we can determine if a given object matches the RequestOptions\n// type at runtime. While this requires duplication, it is enforced by the TypeScript\n// compiler such that any missing / extraneous keys will cause an error.\nconst requestOptionsKeys: KeysEnum<RequestOptions> = {\n method: true,\n path: true,\n query: true,\n body: true,\n headers: true,\n\n maxRetries: true,\n stream: true,\n timeout: true,\n httpAgent: true,\n signal: true,\n idempotencyKey: true,\n\n __binaryResponse: true,\n __streamClass: true,\n};\n\nexport const isRequestOptions = (obj: unknown): obj is RequestOptions => {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n !isEmptyObj(obj) &&\n Object.keys(obj).every((k) => hasOwn(requestOptionsKeys, k))\n );\n};\n\nexport type FinalRequestOptions<Req = unknown | Record<string, unknown> | Readable> = RequestOptions<Req> & {\n method: HTTPMethod;\n path: string;\n};\n\ndeclare const Deno: any;\ndeclare const EdgeRuntime: any;\ntype Arch = 'x32' | 'x64' | 'arm' | 'arm64' | `other:${string}` | 'unknown';\ntype PlatformName =\n | 'MacOS'\n | 'Linux'\n | 'Windows'\n | 'FreeBSD'\n | 'OpenBSD'\n | 'iOS'\n | 'Android'\n | `Other:${string}`\n | 'Unknown';\ntype Browser = 'ie' | 'edge' | 'chrome' | 'firefox' | 'safari';\ntype PlatformProperties = {\n 'X-Stainless-Lang': 'js';\n 'X-Stainless-Package-Version': string;\n 'X-Stainless-OS': PlatformName;\n 'X-Stainless-Arch': Arch;\n 'X-Stainless-Runtime': 'node' | 'deno' | 'edge' | `browser:${Browser}` | 'unknown';\n 'X-Stainless-Runtime-Version': string;\n};\nconst getPlatformProperties = (): PlatformProperties => {\n if (typeof Deno !== 'undefined' && Deno.build != null) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(Deno.build.os),\n 'X-Stainless-Arch': normalizeArch(Deno.build.arch),\n 'X-Stainless-Runtime': 'deno',\n 'X-Stainless-Runtime-Version': Deno.version,\n };\n }\n if (typeof EdgeRuntime !== 'undefined') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': `other:${EdgeRuntime}`,\n 'X-Stainless-Runtime': 'edge',\n 'X-Stainless-Runtime-Version': process.version,\n };\n }\n // Check if Node.js\n if (Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(process.platform),\n 'X-Stainless-Arch': normalizeArch(process.arch),\n 'X-Stainless-Runtime': 'node',\n 'X-Stainless-Runtime-Version': process.version,\n };\n }\n\n const browserInfo = getBrowserInfo();\n if (browserInfo) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': `browser:${browserInfo.browser}`,\n 'X-Stainless-Runtime-Version': browserInfo.version,\n };\n }\n\n // TODO add support for Cloudflare workers, etc.\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': 'unknown',\n 'X-Stainless-Runtime-Version': 'unknown',\n };\n};\n\ntype BrowserInfo = {\n browser: Browser;\n version: string;\n};\n\ndeclare const navigator: { userAgent: string } | undefined;\n\n// Note: modified from https://github.com/JS-DevTools/host-environment/blob/b1ab79ecde37db5d6e163c050e54fe7d287d7c92/src/isomorphic.browser.ts\nfunction getBrowserInfo(): BrowserInfo | null {\n if (typeof navigator === 'undefined' || !navigator) {\n return null;\n }\n\n // NOTE: The order matters here!\n const browserPatterns = [\n { key: 'edge' as const, pattern: /Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie' as const, pattern: /MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie' as const, pattern: /Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'chrome' as const, pattern: /Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'firefox' as const, pattern: /Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'safari' as const, pattern: /(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/ },\n ];\n\n // Find the FIRST matching browser\n for (const { key, pattern } of browserPatterns) {\n const match = pattern.exec(navigator.userAgent);\n if (match) {\n const major = match[1] || 0;\n const minor = match[2] || 0;\n const patch = match[3] || 0;\n\n return { browser: key, version: `${major}.${minor}.${patch}` };\n }\n }\n\n return null;\n}\n\nconst normalizeArch = (arch: string): Arch => {\n // Node docs:\n // - https://nodejs.org/api/process.html#processarch\n // Deno docs:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n if (arch === 'x32') return 'x32';\n if (arch === 'x86_64' || arch === 'x64') return 'x64';\n if (arch === 'arm') return 'arm';\n if (arch === 'aarch64' || arch === 'arm64') return 'arm64';\n if (arch) return `other:${arch}`;\n return 'unknown';\n};\n\nconst normalizePlatform = (platform: string): PlatformName => {\n // Node platforms:\n // - https://nodejs.org/api/process.html#processplatform\n // Deno platforms:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n // - https://github.com/denoland/deno/issues/14799\n\n platform = platform.toLowerCase();\n\n // NOTE: this iOS check is untested and may not work\n // Node does not work natively on IOS, there is a fork at\n // https://github.com/nodejs-mobile/nodejs-mobile\n // however it is unknown at the time of writing how to detect if it is running\n if (platform.includes('ios')) return 'iOS';\n if (platform === 'android') return 'Android';\n if (platform === 'darwin') return 'MacOS';\n if (platform === 'win32') return 'Windows';\n if (platform === 'freebsd') return 'FreeBSD';\n if (platform === 'openbsd') return 'OpenBSD';\n if (platform === 'linux') return 'Linux';\n if (platform) return `Other:${platform}`;\n return 'Unknown';\n};\n\nlet _platformHeaders: PlatformProperties;\nconst getPlatformHeaders = () => {\n return (_platformHeaders ??= getPlatformProperties());\n};\n\nexport const safeJSON = (text: string) => {\n try {\n return JSON.parse(text);\n } catch (err) {\n return undefined;\n }\n};\n\n// https://stackoverflow.com/a/19709846\nconst startsWithSchemeRegexp = new RegExp('^(?:[a-z]+:)?//', 'i');\nconst isAbsoluteURL = (url: string): boolean => {\n return startsWithSchemeRegexp.test(url);\n};\n\nexport const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst validatePositiveInteger = (name: string, n: unknown): number => {\n if (typeof n !== 'number' || !Number.isInteger(n)) {\n throw new OpenAIError(`${name} must be an integer`);\n }\n if (n < 0) {\n throw new OpenAIError(`${name} must be a positive integer`);\n }\n return n;\n};\n\nexport const castToError = (err: any): Error => {\n if (err instanceof Error) return err;\n return new Error(err);\n};\n\nexport const ensurePresent = <T>(value: T | null | undefined): T => {\n if (value == null) throw new OpenAIError(`Expected a value to be given but received ${value} instead.`);\n return value;\n};\n\n/**\n * Read an environment variable.\n *\n * Trims beginning and trailing whitespace.\n *\n * Will return undefined if the environment variable doesn't exist or cannot be accessed.\n */\nexport const readEnv = (env: string): string | undefined => {\n if (typeof process !== 'undefined') {\n return process.env?.[env]?.trim() ?? undefined;\n }\n if (typeof Deno !== 'undefined') {\n return Deno.env?.get?.(env)?.trim();\n }\n return undefined;\n};\n\nexport const coerceInteger = (value: unknown): number => {\n if (typeof value === 'number') return Math.round(value);\n if (typeof value === 'string') return parseInt(value, 10);\n\n throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\n\nexport const coerceFloat = (value: unknown): number => {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') return parseFloat(value);\n\n throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\n\nexport const coerceBoolean = (value: unknown): boolean => {\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') return value === 'true';\n return Boolean(value);\n};\n\nexport const maybeCoerceInteger = (value: unknown): number | undefined => {\n if (value === undefined) {\n return undefined;\n }\n return coerceInteger(value);\n};\n\nexport const maybeCoerceFloat = (value: unknown): number | undefined => {\n if (value === undefined) {\n return undefined;\n }\n return coerceFloat(value);\n};\n\nexport const maybeCoerceBoolean = (value: unknown): boolean | undefined => {\n if (value === undefined) {\n return undefined;\n }\n return coerceBoolean(value);\n};\n\n// https://stackoverflow.com/a/34491287\nexport function isEmptyObj(obj: Object | null | undefined): boolean {\n if (!obj) return true;\n for (const _k in obj) return false;\n return true;\n}\n\n// https://eslint.org/docs/latest/rules/no-prototype-builtins\nexport function hasOwn(obj: Object, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\n/**\n * Copies headers from \"newHeaders\" onto \"targetHeaders\",\n * using lower-case for all properties,\n * ignoring any keys with undefined values,\n * and deleting any keys with null values.\n */\nfunction applyHeadersMut(targetHeaders: Headers, newHeaders: Headers): void {\n for (const k in newHeaders) {\n if (!hasOwn(newHeaders, k)) continue;\n const lowerKey = k.toLowerCase();\n if (!lowerKey) continue;\n\n const val = newHeaders[k];\n\n if (val === null) {\n delete targetHeaders[lowerKey];\n } else if (val !== undefined) {\n targetHeaders[lowerKey] = val;\n }\n }\n}\n\nexport function debug(action: string, ...args: any[]) {\n if (typeof process !== 'undefined' && process.env['DEBUG'] === 'true') {\n console.log(`OpenAI:DEBUG:${action}`, ...args);\n }\n}\n\n/**\n * https://stackoverflow.com/a/2117523\n */\nconst uuid4 = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\nexport const isRunningInBrowser = () => {\n return (\n // @ts-ignore\n typeof window !== 'undefined' &&\n // @ts-ignore\n typeof window.document !== 'undefined' &&\n // @ts-ignore\n typeof navigator !== 'undefined'\n );\n};\n\nexport interface HeadersProtocol {\n get: (header: string) => string | null | undefined;\n}\nexport type HeadersLike = Record<string, string | string[] | undefined> | HeadersProtocol;\n\nexport const isHeadersProtocol = (headers: any): headers is HeadersProtocol => {\n return typeof headers?.get === 'function';\n};\n\nexport const getRequiredHeader = (headers: HeadersLike, header: string): string => {\n const lowerCasedHeader = header.toLowerCase();\n if (isHeadersProtocol(headers)) {\n // to deal with the case where the header looks like Stainless-Event-Id\n const intercapsHeader =\n header[0]?.toUpperCase() +\n header.substring(1).replace(/([^\\w])(\\w)/g, (_m, g1, g2) => g1 + g2.toUpperCase());\n for (const key of [header, lowerCasedHeader, header.toUpperCase(), intercapsHeader]) {\n const value = headers.get(key);\n if (value) {\n return value;\n }\n }\n }\n\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === lowerCasedHeader) {\n if (Array.isArray(value)) {\n if (value.length <= 1) return value[0];\n console.warn(`Received ${value.length} entries for the ${header} header, using the first entry.`);\n return value[0];\n }\n return value;\n }\n }\n\n throw new Error(`Could not find ${header} header`);\n};\n\n/**\n * Encodes a string to Base64 format.\n */\nexport const toBase64 = (str: string | null | undefined): string => {\n if (!str) return '';\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str).toString('base64');\n }\n\n if (typeof btoa !== 'undefined') {\n return btoa(str);\n }\n\n throw new OpenAIError('Cannot generate b64 string; Expected `Buffer` or `btoa` to be defined');\n};\n\nexport function isObj(obj: unknown): obj is Record<string, unknown> {\n return obj != null && typeof obj === 'object' && !Array.isArray(obj);\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport { AbstractPage, Response, APIClient, FinalRequestOptions, PageInfo } from './core';\n\nexport interface PageResponse<Item> {\n data: Array<Item>;\n\n object: string;\n}\n\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class Page<Item> extends AbstractPage<Item> implements PageResponse<Item> {\n data: Array<Item>;\n\n object: string;\n\n constructor(client: APIClient, response: Response, body: PageResponse<Item>, options: FinalRequestOptions) {\n super(client, response, body, options);\n\n this.data = body.data || [];\n this.object = body.object;\n }\n\n getPaginatedItems(): Item[] {\n return this.data ?? [];\n }\n\n // @deprecated Please use `nextPageInfo()` instead\n /**\n * This page represents a response that isn't actually paginated at the API level\n * so there will never be any next page params.\n */\n nextPageParams(): null {\n return null;\n }\n\n nextPageInfo(): null {\n return null;\n }\n}\n\nexport interface CursorPageResponse<Item> {\n data: Array<Item>;\n}\n\nexport interface CursorPageParams {\n after?: string;\n\n limit?: number;\n}\n\nexport class CursorPage<Item extends { id: string }>\n extends AbstractPage<Item>\n implements CursorPageResponse<Item>\n{\n data: Array<Item>;\n\n constructor(\n client: APIClient,\n response: Response,\n body: CursorPageResponse<Item>,\n options: FinalRequestOptions,\n ) {\n super(client, response, body, options);\n\n this.data = body.data || [];\n }\n\n getPaginatedItems(): Item[] {\n return this.data ?? [];\n }\n\n // @deprecated Please use `nextPageInfo()` instead\n nextPageParams(): Partial<CursorPageParams> | null {\n const info = this.nextPageInfo();\n if (!info) return null;\n if ('params' in info) return info.params;\n const params = Object.fromEntries(info.url.searchParams);\n if (!Object.keys(params).length) return null;\n return params;\n }\n\n nextPageInfo(): PageInfo | null {\n const data = this.getPaginatedItems();\n if (!data.length) {\n return null;\n }\n\n const id = data[data.length - 1]?.id;\n if (!id) {\n return null;\n }\n\n return { params: { after: id } };\n }\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport type { OpenAI } from './index';\n\nexport class APIResource {\n protected _client: OpenAI;\n\n constructor(client: OpenAI) {\n this._client = client;\n }\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../core\";\nimport { APIPromise } from \"../../core\";\nimport { APIResource } from \"../../resource\";\nimport * as ChatCompletionsAPI from \"./completions\";\nimport * as CompletionsAPI from \"../completions\";\nimport * as Shared from \"../shared\";\nimport { Stream } from \"../../streaming\";\n\nexport class Completions extends APIResource {\n /**\n * Creates a model response for the given chat conversation.\n */\n create(\n body: ChatCompletionCreateParamsNonStreaming,\n options?: Core.RequestOptions,\n ): APIPromise<ChatCompletion>;\n create(\n body: ChatCompletionCreateParamsStreaming,\n options?: Core.RequestOptions,\n ): APIPromise<Stream<ChatCompletionChunk>>;\n create(\n body: ChatCompletionCreateParamsBase,\n options?: Core.RequestOptions,\n ): APIPromise<Stream<ChatCompletionChunk> | ChatCompletion>;\n create(\n body: ChatCompletionCreateParams,\n options?: Core.RequestOptions,\n ): APIPromise<ChatCompletion> | APIPromise<Stream<ChatCompletionChunk>> {\n return this._client.post('/chat/completions', { body, ...options, stream: body.stream ?? false }) as\n | APIPromise<ChatCompletion>\n | APIPromise<Stream<ChatCompletionChunk>>;\n }\n}\n\n/**\n * Represents a chat completion response returned by model, based on the provided\n * input.\n */\nexport interface ChatCompletion {\n /**\n * A unique identifier for the chat completion.\n */\n id: string;\n\n /**\n * A list of chat completion choices. Can be more than one if `n` is greater\n * than 1.\n */\n choices: Array<ChatCompletion.Choice>;\n\n /**\n * The Unix timestamp (in seconds) of when the chat completion was created.\n */\n created: number;\n\n /**\n * The model used for the chat completion.\n */\n model: string;\n\n /**\n * The object type, which is always `chat.completion`.\n */\n object: 'chat.completion';\n\n /**\n * This fingerprint represents the backend configuration that the model runs with.\n *\n * Can be used in conjunction with the `seed` request parameter to understand when\n * backend changes have been made that might impact determinism.\n */\n system_fingerprint?: string;\n\n /**\n * Usage statistics for the completion request.\n */\n usage?: CompletionsAPI.CompletionUsage;\n}\n\nexport namespace ChatCompletion {\n export interface Choice {\n /**\n * The reason the model stopped generating tokens. This will be `stop` if the model\n * hit a natural stop point or a provided stop sequence, `length` if the maximum\n * number of tokens specified in the request was reached, `content_filter` if\n * content was omitted due to a flag from our content filters, `tool_calls` if the\n * model called a tool, or `function_call` (deprecated) if the model called a\n * function.\n */\n finish_reason: 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'function_call';\n\n /**\n * The index of the choice in the list of choices.\n */\n index: number;\n\n /**\n * Log probability information for the choice.\n */\n logprobs: Choice.Logprobs | null;\n\n /**\n * A chat completion message generated by the model.\n */\n message: ChatCompletionsAPI.ChatCompletionMessage;\n }\n\n export namespace Choice {\n /**\n * Log probability information for the choice.\n */\n export interface Logprobs {\n /**\n * A list of message content tokens with log probability information.\n */\n content: Array<ChatCompletionsAPI.ChatCompletionTokenLogprob> | null;\n }\n }\n}\n\nexport interface ChatCompletionAssistantMessageParam {\n /**\n * The role of the messages author, in this case `assistant`.\n */\n role: 'assistant';\n\n /**\n * The contents of the assistant message. Required unless `tool_calls` or\n * `function_call` is specified.\n */\n content?: string | null;\n\n /**\n * Deprecated and replaced by `tool_calls`. The name and arguments of a function\n * that should be called, as generated by the model.\n */\n function_call?: ChatCompletionAssistantMessageParam.FunctionCall;\n\n /**\n * An optional name for the participant. Provides the model information to\n * differentiate between participants of the same role.\n */\n name?: string;\n\n /**\n * The tool calls generated by the model, such as function calls.\n */\n tool_calls?: Array<ChatCompletionMessageToolCall>;\n}\n\nexport namespace ChatCompletionAssistantMessageParam {\n /**\n * Deprecated and replaced by `tool_calls`. The name and arguments of a function\n * that should be called, as generated by the model.\n */\n export interface FunctionCall {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments: string;\n\n /**\n * The name of the function to call.\n */\n name: string;\n }\n}\n\n/**\n * Represents a streamed chunk of a chat completion response returned by model,\n * based on the provided input.\n */\nexport interface ChatCompletionChunk {\n /**\n * A unique identifier for the chat completion. Each chunk has the same ID.\n */\n id: string;\n\n /**\n * A list of chat completion choices. Can be more than one if `n` is greater\n * than 1.\n */\n choices: Array<ChatCompletionChunk.Choice>;\n\n /**\n * The Unix timestamp (in seconds) of when the chat completion was created. Each\n * chunk has the same timestamp.\n */\n created: number;\n\n /**\n * The model to generate the completion.\n */\n model: string;\n\n /**\n * The object type, which is always `chat.completion.chunk`.\n */\n object: 'chat.completion.chunk';\n\n /**\n * This fingerprint represents the backend configuration that the model runs with.\n * Can be used in conjunction with the `seed` request parameter to understand when\n * backend changes have been made that might impact determinism.\n */\n system_fingerprint?: string;\n}\n\nexport namespace ChatCompletionChunk {\n export interface Choice {\n /**\n * A chat completion delta generated by streamed model responses.\n */\n delta: Choice.Delta;\n\n /**\n * The reason the model stopped generating tokens. This will be `stop` if the model\n * hit a natural stop point or a provided stop sequence, `length` if the maximum\n * number of tokens specified in the request was reached, `content_filter` if\n * content was omitted due to a flag from our content filters, `tool_calls` if the\n * model called a tool, or `function_call` (deprecated) if the model called a\n * function.\n */\n finish_reason: 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'function_call' | null;\n\n /**\n * The index of the choice in the list of choices.\n */\n index: number;\n\n /**\n * Log probability information for the choice.\n */\n logprobs?: Choice.Logprobs | null;\n }\n\n export namespace Choice {\n /**\n * A chat completion delta generated by streamed model responses.\n */\n export interface Delta {\n /**\n * The contents of the chunk message.\n */\n content?: string | null;\n\n /**\n * Deprecated and replaced by `tool_calls`. The name and arguments of a function\n * that should be called, as generated by the model.\n */\n function_call?: Delta.FunctionCall;\n\n /**\n * The role of the author of this message.\n */\n role?: 'system' | 'user' | 'assistant' | 'tool';\n\n tool_calls?: Array<Delta.ToolCall>;\n }\n\n export namespace Delta {\n /**\n * Deprecated and replaced by `tool_calls`. The name and arguments of a function\n * that should be called, as generated by the model.\n */\n export interface FunctionCall {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments?: string;\n\n /**\n * The name of the function to call.\n */\n name?: string;\n }\n\n export interface ToolCall {\n index: number;\n\n /**\n * The ID of the tool call.\n */\n id?: string;\n\n function?: ToolCall.Function;\n\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type?: 'function';\n }\n\n export namespace ToolCall {\n export interface Function {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments?: string;\n\n /**\n * The name of the function to call.\n */\n name?: string;\n }\n }\n }\n\n /**\n * Log probability information for the choice.\n */\n export interface Logprobs {\n /**\n * A list of message content tokens with log probability information.\n */\n content: Array<ChatCompletionsAPI.ChatCompletionTokenLogprob> | null;\n }\n }\n}\n\nexport type ChatCompletionContentPart = ChatCompletionContentPartText | ChatCompletionContentPartImage;\n\nexport interface ChatCompletionContentPartImage {\n image_url: ChatCompletionContentPartImage.ImageURL;\n\n /**\n * The type of the content part.\n */\n type: 'image_url';\n}\n\nexport namespace ChatCompletionContentPartImage {\n export interface ImageURL {\n /**\n * Either a URL of the image or the base64 encoded image data.\n */\n url: string;\n\n /**\n * Specifies the detail level of the image. Learn more in the\n * [Vision guide](https://platform.openai.com/docs/guides/vision/low-or-high-fidelity-image-understanding).\n */\n detail?: 'auto' | 'low' | 'high';\n }\n}\n\nexport interface ChatCompletionContentPartText {\n /**\n * The text content.\n */\n text: string;\n\n /**\n * The type of the content part.\n */\n type: 'text';\n}\n\n/**\n * Specifying a particular function via `{\"name\": \"my_function\"}` forces the model\n * to call that function.\n */\nexport interface ChatCompletionFunctionCallOption {\n /**\n * The name of the function to call.\n */\n name: string;\n}\n\nexport interface ChatCompletionFunctionMessageParam {\n /**\n * The contents of the function message.\n */\n content: string | null;\n\n /**\n * The name of the function to call.\n */\n name: string;\n\n /**\n * The role of the messages author, in this case `function`.\n */\n role: 'function';\n}\n\n/**\n * A chat completion message generated by the model.\n */\nexport interface ChatCompletionMessage {\n /**\n * The contents of the message.\n */\n content: string | null;\n\n /**\n * The role of the author of this message.\n */\n role: 'assistant';\n\n /**\n * Deprecated and replaced by `tool_calls`. The name and arguments of a function\n * that should be called, as generated by the model.\n */\n function_call?: ChatCompletionMessage.FunctionCall;\n\n /**\n * The tool calls generated by the model, such as function calls.\n */\n tool_calls?: Array<ChatCompletionMessageToolCall>;\n}\n\nexport namespace ChatCompletionMessage {\n /**\n * Deprecated and replaced by `tool_calls`. The name and arguments of a function\n * that should be called, as generated by the model.\n */\n export interface FunctionCall {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments: string;\n\n /**\n * The name of the function to call.\n */\n name: string;\n }\n}\n\nexport type ChatCompletionMessageParam =\n | ChatCompletionSystemMessageParam\n | ChatCompletionUserMessageParam\n | ChatCompletionAssistantMessageParam\n | ChatCompletionToolMessageParam\n | ChatCompletionFunctionMessageParam;\n\nexport interface ChatCompletionMessageToolCall {\n /**\n * The ID of the tool call.\n */\n id: string;\n\n /**\n * The function that the model called.\n */\n function: ChatCompletionMessageToolCall.Function;\n\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: 'function';\n}\n\nexport namespace ChatCompletionMessageToolCall {\n /**\n * The function that the model called.\n */\n export interface Function {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments: string;\n\n /**\n * The name of the function to call.\n */\n name: string;\n }\n}\n\n/**\n * Specifies a tool the model should use. Use to force the model to call a specific\n * function.\n */\nexport interface ChatCompletionNamedToolChoice {\n function: ChatCompletionNamedToolChoice.Function;\n\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: 'function';\n}\n\nexport namespace ChatCompletionNamedToolChoice {\n export interface Function {\n /**\n * The name of the function to call.\n */\n name: string;\n }\n}\n\n/**\n * The role of the author of a message\n */\nexport type ChatCompletionRole = 'system' | 'user' | 'assistant' | 'tool' | 'function';\n\nexport interface ChatCompletionSystemMessageParam {\n /**\n * The contents of the system message.\n */\n content: string;\n\n /**\n * The role of the messages author, in this case `system`.\n */\n role: 'system';\n\n /**\n * An optional name for the participant. Provides the model information to\n * differentiate between participants of the same role.\n */\n name?: string;\n}\n\nexport interface ChatCompletionTokenLogprob {\n /**\n * The token.\n */\n token: string;\n\n /**\n * A list of integers representing the UTF-8 bytes representation of the token.\n * Useful in instances where characters are represented by multiple tokens and\n * their byte representations must be combined to generate the correct text\n * representation. Can be `null` if there is no bytes representation for the token.\n */\n bytes: Array<number> | null;\n\n /**\n * The log probability of this token.\n */\n logprob: number;\n\n /**\n * List of the most likely tokens and their log probability, at this token\n * position. In rare cases, there may be fewer than the number of requested\n * `top_logprobs` returned.\n */\n top_logprobs: Array<ChatCompletionTokenLogprob.TopLogprob>;\n}\n\nexport namespace ChatCompletionTokenLogprob {\n export interface TopLogprob {\n /**\n * The token.\n */\n token: string;\n\n /**\n * A list of integers representing the UTF-8 bytes representation of the token.\n * Useful in instances where characters are represented by multiple tokens and\n * their byte representations must be combined to generate the correct text\n * representation. Can be `null` if there is no bytes representation for the token.\n */\n bytes: Array<number> | null;\n\n /**\n * The log probability of this token.\n */\n logprob: number;\n }\n}\n\nexport interface ChatCompletionTool {\n function: Shared.FunctionDefinition;\n\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: 'function';\n}\n\n/**\n * Controls which (if any) function is called by the model. `none` means the model\n * will not call a function and instead generates a message. `auto` means the model\n * can pick between generating a message or calling a function. Specifying a\n * particular function via\n * `{\"type\": \"function\", \"function\": {\"name\": \"my_function\"}}` forces the model to\n * call that function.\n *\n * `none` is the default when no functions are present. `auto` is the default if\n * functions are present.\n */\nexport type ChatCompletionToolChoiceOption = 'none' | 'auto' | ChatCompletionNamedToolChoice;\n\nexport interface ChatCompletionToolMessageParam {\n /**\n * The contents of the tool message.\n */\n content: string;\n\n /**\n * The role of the messages author, in this case `tool`.\n */\n role: 'tool';\n\n /**\n * Tool call that this message is responding to.\n */\n tool_call_id: string;\n}\n\nexport interface ChatCompletionUserMessageParam {\n /**\n * The contents of the user message.\n */\n content: string | Array<ChatCompletionContentPart>;\n\n /**\n * The role of the messages author, in this case `user`.\n */\n role: 'user';\n\n /**\n * An optional name for the participant. Provides the model information to\n * differentiate between participants of the same role.\n */\n name?: string;\n}\n\n/**\n * @deprecated ChatCompletionMessageParam should be used instead\n */\nexport type CreateChatCompletionRequestMessage = ChatCompletionMessageParam;\n\nexport type ChatCompletionCreateParams =\n | ChatCompletionCreateParamsNonStreaming\n | ChatCompletionCreateParamsStreaming;\n\nexport interface ChatCompletionCreateParamsBase {\n /**\n * A list of messages comprising the conversation so far.\n * [Example Python code](https://cookbook.openai.com/examples/how_to_format_inputs_to_chatgpt_models).\n */\n messages: Array<ChatCompletionMessageParam>;\n\n /**\n * ID of the model to use. See the\n * [model endpoint compatibility](https://platform.openai.com/docs/models/model-endpoint-compatibility)\n * table for details on which models work with the Chat API.\n */\n model:\n | (string & {})\n | 'gpt-4-0125-preview'\n | 'gpt-4-turbo-preview'\n | 'gpt-4-1106-preview'\n | 'gpt-4-vision-preview'\n | 'gpt-4'\n | 'gpt-4-0314'\n | 'gpt-4-0613'\n | 'gpt-4-32k'\n | 'gpt-4-32k-0314'\n | 'gpt-4-32k-0613'\n | 'gpt-3.5-turbo'\n | 'gpt-3.5-turbo-16k'\n | 'gpt-3.5-turbo-0301'\n | 'gpt-3.5-turbo-0613'\n | 'gpt-3.5-turbo-1106'\n | 'gpt-3.5-turbo-0125'\n | 'gpt-3.5-turbo-16k-0613';\n\n /**\n * Number between -2.0 and 2.0. Positive values penalize new tokens based on their\n * existing frequency in the text so far, decreasing the model's likelihood to\n * repeat the same line verbatim.\n *\n * [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/text-generation/parameter-details)\n */\n frequency_penalty?: number | null;\n\n /**\n * Deprecated in favor of `tool_choice`.\n *\n * Controls which (if any) function is called by the model. `none` means the model\n * will not call a function and instead generates a message. `auto` means the model\n * can pick between generating a message or calling a function. Specifying a\n * particular function via `{\"name\": \"my_function\"}` forces the model to call that\n * function.\n *\n * `none` is the default when no functions are present. `auto` is the default if\n * functions are present.\n */\n function_call?: 'none' | 'auto' | ChatCompletionFunctionCallOption;\n\n /**\n * Deprecated in favor of `tools`.\n *\n * A list of functions the model may generate JSON inputs for.\n */\n functions?: Array<ChatCompletionCreateParams.Function>;\n\n /**\n * Modify the likelihood of specified tokens appearing in the completion.\n *\n * Accepts a JSON object that maps tokens (specified by their token ID in the\n * tokenizer) to an associated bias value from -100 to 100. Mathematically, the\n * bias is added to the logits generated by the model prior to sampling. The exact\n * effect will vary per model, but values between -1 and 1 should decrease or\n * increase likelihood of selection; values like -100 or 100 should result in a ban\n * or exclusive selection of the relevant token.\n */\n logit_bias?: Record<string, number> | null;\n\n /**\n * Whether to return log probabilities of the output tokens or not. If true,\n * returns the log probabilities of each output token returned in the `content` of\n * `message`. This option is currently not available on the `gpt-4-vision-preview`\n * model.\n */\n logprobs?: boolean | null;\n\n /**\n * The maximum number of [tokens](/tokenizer) that can be generated in the chat\n * completion.\n *\n * The total length of input tokens and generated tokens is limited by the model's\n * context length.\n * [Example Python code](https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken)\n * for counting tokens.\n */\n max_tokens?: number | null;\n\n /**\n * How many chat completion choices to generate for each input message. Note that\n * you will be charged based on the number of generated tokens across all of the\n * choices. Keep `n` as `1` to minimize costs.\n */\n n?: number | null;\n\n /**\n * Number between -2.0 and 2.0. Positive values penalize new tokens based on\n * whether they appear in the text so far, increasing the model's likelihood to\n * talk about new topics.\n *\n * [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/text-generation/parameter-details)\n */\n presence_penalty?: number | null;\n\n /**\n * An object specifying the format that the model must output. Compatible with\n * [GPT-4 Turbo](https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo) and\n * all GPT-3.5 Turbo models newer than `gpt-3.5-turbo-1106`.\n *\n * Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which guarantees the\n * message the model generates is valid JSON.\n *\n * **Important:** when using JSON mode, you **must** also instruct the model to\n * produce JSON yourself via a system or user message. Without this, the model may\n * generate an unending stream of whitespace until the generation reaches the token\n * limit, resulting in a long-running and seemingly \"stuck\" request. Also note that\n * the message content may be partially cut off if `finish_reason=\"length\"`, which\n * indicates the generation exceeded `max_tokens` or the conversation exceeded the\n * max context length.\n */\n response_format?: ChatCompletionCreateParams.ResponseFormat;\n\n /**\n * This feature is in Beta. If specified, our system will make a best effort to\n * sample deterministically, such that repeated requests with the same `seed` and\n * parameters should return the same result. Determinism is not guaranteed, and you\n * should refer to the `system_fingerprint` response parameter to monitor changes\n * in the backend.\n */\n seed?: number | null;\n\n /**\n * Up to 4 sequences where the API will stop generating further tokens.\n */\n stop?: string | null | Array<string>;\n\n /**\n * If set, partial message deltas will be sent, like in ChatGPT. Tokens will be\n * sent as data-only\n * [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format)\n * as they become available, with the stream terminated by a `data: [DONE]`\n * message.\n * [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions).\n */\n stream?: boolean | null;\n\n /**\n * What sampling temperature to use, between 0 and 2. Higher values like 0.8 will\n * make the output more random, while lower values like 0.2 will make it more\n * focused and deterministic.\n *\n * We generally recommend altering this or `top_p` but not both.\n */\n temperature?: number | null;\n\n /**\n * Controls which (if any) function is called by the model. `none` means the model\n * will not call a function and instead generates a message. `auto` means the model\n * can pick between generating a message or calling a function. Specifying a\n * particular function via\n * `{\"type\": \"function\", \"function\": {\"name\": \"my_function\"}}` forces the model to\n * call that function.\n *\n * `none` is the default when no functions are present. `auto` is the default if\n * functions are present.\n */\n tool_choice?: ChatCompletionToolChoiceOption;\n\n /**\n * A list of tools the model may call. Currently, only functions are supported as a\n * tool. Use this to provide a list of functions the model may generate JSON inputs\n * for.\n */\n tools?: Array<ChatCompletionTool>;\n\n /**\n * An integer between 0 and 5 specifying the number of most likely tokens to return\n * at each token position, each with an associated log probability. `logprobs` must\n * be set to `true` if this parameter is used.\n */\n top_logprobs?: number | null;\n\n /**\n * An alternative to sampling with temperature, called nucleus sampling, where the\n * model considers the results of the tokens with top_p probability mass. So 0.1\n * means only the tokens comprising the top 10% probability mass are considered.\n *\n * We generally recommend altering this or `temperature` but not both.\n */\n top_p?: number | null;\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to monitor\n * and detect abuse.\n * [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids).\n */\n user?: string;\n}\n\nexport namespace ChatCompletionCreateParams {\n export interface Function {\n /**\n * The name of the function to be called. Must be a-z, A-Z, 0-9, or contain\n * underscores and dashes, with a maximum length of 64.\n */\n name: string;\n\n /**\n * A description of what the function does, used by the model to choose when and\n * how to call the function.\n */\n description?: string;\n\n /**\n * The parameters the functions accepts, described as a JSON Schema object. See the\n * [guide](https://platform.openai.com/docs/guides/text-generation/function-calling)\n * for examples, and the\n * [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for\n * documentation about the format.\n *\n * Omitting `parameters` defines a function with an empty parameter list.\n */\n parameters?: Shared.FunctionParameters;\n }\n\n /**\n * An object specifying the format that the model must output. Compatible with\n * [GPT-4 Turbo](https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo) and\n * all GPT-3.5 Turbo models newer than `gpt-3.5-turbo-1106`.\n *\n * Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which guarantees the\n * message the model generates is valid JSON.\n *\n * **Important:** when using JSON mode, you **must** also instruct the model to\n * produce JSON yourself via a system or user message. Without this, the model may\n * generate an unending stream of whitespace until the generation reaches the token\n * limit, resulting in a long-running and seemingly \"stuck\" request. Also note that\n * the message content may be partially cut off if `finish_reason=\"length\"`, which\n * indicates the generation exceeded `max_tokens` or the conversation exceeded the\n * max context length.\n */\n export interface ResponseFormat {\n /**\n * Must be one of `text` or `json_object`.\n */\n type?: 'text' | 'json_object';\n }\n\n export type ChatCompletionCreateParamsNonStreaming =\n ChatCompletionsAPI.ChatCompletionCreateParamsNonStreaming;\n export type ChatCompletionCreateParamsStreaming = ChatCompletionsAPI.ChatCompletionCreateParamsStreaming;\n}\n\n/**\n * @deprecated Use ChatCompletionCreateParams instead\n */\nexport type CompletionCreateParams = ChatCompletionCreateParams;\n\nexport interface ChatCompletionCreateParamsNonStreaming extends ChatCompletionCreateParamsBase {\n /**\n * If set, partial message deltas will be sent, like in ChatGPT. Tokens will be\n * sent as data-only\n * [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format)\n * as they become available, with the stream terminated by a `data: [DONE]`\n * message.\n * [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions).\n */\n stream?: false | null;\n}\n\n/**\n * @deprecated Use ChatCompletionCreateParamsNonStreaming instead\n */\nexport type CompletionCreateParamsNonStreaming = ChatCompletionCreateParamsNonStreaming;\n\nexport interface ChatCompletionCreateParamsStreaming extends ChatCompletionCreateParamsBase {\n /**\n * If set, partial message deltas will be sent, like in ChatGPT. Tokens will be\n * sent as data-only\n * [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format)\n * as they become available, with the stream terminated by a `data: [DONE]`\n * message.\n * [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions).\n */\n stream: true;\n}\n\n/**\n * @deprecated Use ChatCompletionCreateParamsStreaming instead\n */\nexport type CompletionCreateParamsStreaming = ChatCompletionCreateParamsStreaming;\n\nexport namespace Completions {\n export import ChatCompletion = ChatCompletionsAPI.ChatCompletion;\n export import ChatCompletionAssistantMessageParam = ChatCompletionsAPI.ChatCompletionAssistantMessageParam;\n export import ChatCompletionChunk = ChatCompletionsAPI.ChatCompletionChunk;\n export import ChatCompletionContentPart = ChatCompletionsAPI.ChatCompletionContentPart;\n export import ChatCompletionContentPartImage = ChatCompletionsAPI.ChatCompletionContentPartImage;\n export import ChatCompletionContentPartText = ChatCompletionsAPI.ChatCompletionContentPartText;\n export import ChatCompletionFunctionCallOption = ChatCompletionsAPI.ChatCompletionFunctionCallOption;\n export import ChatCompletionFunctionMessageParam = ChatCompletionsAPI.ChatCompletionFunctionMessageParam;\n export import ChatCompletionMessage = ChatCompletionsAPI.ChatCompletionMessage;\n export import ChatCompletionMessageParam = ChatCompletionsAPI.ChatCompletionMessageParam;\n export import ChatCompletionMessageToolCall = ChatCompletionsAPI.ChatCompletionMessageToolCall;\n export import ChatCompletionNamedToolChoice = ChatCompletionsAPI.ChatCompletionNamedToolChoice;\n export import ChatCompletionRole = ChatCompletionsAPI.ChatCompletionRole;\n export import ChatCompletionSystemMessageParam = ChatCompletionsAPI.ChatCompletionSystemMessageParam;\n export import ChatCompletionTokenLogprob = ChatCompletionsAPI.ChatCompletionTokenLogprob;\n export import ChatCompletionTool = ChatCompletionsAPI.ChatCompletionTool;\n export import ChatCompletionToolChoiceOption = ChatCompletionsAPI.ChatCompletionToolChoiceOption;\n export import ChatCompletionToolMessageParam = ChatCompletionsAPI.ChatCompletionToolMessageParam;\n export import ChatCompletionUserMessageParam = ChatCompletionsAPI.ChatCompletionUserMessageParam;\n /**\n * @deprecated ChatCompletionMessageParam should be used instead\n */\n export import CreateChatCompletionRequestMessage = ChatCompletionsAPI.CreateChatCompletionRequestMessage;\n export import ChatCompletionCreateParams = ChatCompletionsAPI.ChatCompletionCreateParams;\n export import CompletionCreateParams = ChatCompletionsAPI.CompletionCreateParams;\n export import ChatCompletionCreateParamsNonStreaming = ChatCompletionsAPI.ChatCompletionCreateParamsNonStreaming;\n export import CompletionCreateParamsNonStreaming = ChatCompletionsAPI.CompletionCreateParamsNonStreaming;\n export import ChatCompletionCreateParamsStreaming = ChatCompletionsAPI.ChatCompletionCreateParamsStreaming;\n export import CompletionCreateParamsStreaming = ChatCompletionsAPI.CompletionCreateParamsStreaming;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport { APIResource } from \"../../resource\";\nimport * as CompletionsAPI from \"./completions\";\n\nexport class Chat extends APIResource {\n completions: CompletionsAPI.Completions = new CompletionsAPI.Completions(this._client);\n}\n\nexport namespace Chat {\n export import Completions = CompletionsAPI.Completions;\n export import ChatCompletion = CompletionsAPI.ChatCompletion;\n export import ChatCompletionAssistantMessageParam = CompletionsAPI.ChatCompletionAssistantMessageParam;\n export import ChatCompletionChunk = CompletionsAPI.ChatCompletionChunk;\n export import ChatCompletionContentPart = CompletionsAPI.ChatCompletionContentPart;\n export import ChatCompletionContentPartImage = CompletionsAPI.ChatCompletionContentPartImage;\n export import ChatCompletionContentPartText = CompletionsAPI.ChatCompletionContentPartText;\n export import ChatCompletionFunctionCallOption = CompletionsAPI.ChatCompletionFunctionCallOption;\n export import ChatCompletionFunctionMessageParam = CompletionsAPI.ChatCompletionFunctionMessageParam;\n export import ChatCompletionMessage = CompletionsAPI.ChatCompletionMessage;\n export import ChatCompletionMessageParam = CompletionsAPI.ChatCompletionMessageParam;\n export import ChatCompletionMessageToolCall = CompletionsAPI.ChatCompletionMessageToolCall;\n export import ChatCompletionNamedToolChoice = CompletionsAPI.ChatCompletionNamedToolChoice;\n export import ChatCompletionRole = CompletionsAPI.ChatCompletionRole;\n export import ChatCompletionSystemMessageParam = CompletionsAPI.ChatCompletionSystemMessageParam;\n export import ChatCompletionTokenLogprob = CompletionsAPI.ChatCompletionTokenLogprob;\n export import ChatCompletionTool = CompletionsAPI.ChatCompletionTool;\n export import ChatCompletionToolChoiceOption = CompletionsAPI.ChatCompletionToolChoiceOption;\n export import ChatCompletionToolMessageParam = CompletionsAPI.ChatCompletionToolMessageParam;\n export import ChatCompletionUserMessageParam = CompletionsAPI.ChatCompletionUserMessageParam;\n /**\n * @deprecated ChatCompletionMessageParam should be used instead\n */\n export import CreateChatCompletionRequestMessage = CompletionsAPI.CreateChatCompletionRequestMessage;\n export import ChatCompletionCreateParams = CompletionsAPI.ChatCompletionCreateParams;\n export import CompletionCreateParams = CompletionsAPI.CompletionCreateParams;\n export import ChatCompletionCreateParamsNonStreaming = CompletionsAPI.ChatCompletionCreateParamsNonStreaming;\n export import CompletionCreateParamsNonStreaming = CompletionsAPI.CompletionCreateParamsNonStreaming;\n export import ChatCompletionCreateParamsStreaming = CompletionsAPI.ChatCompletionCreateParamsStreaming;\n export import CompletionCreateParamsStreaming = CompletionsAPI.CompletionCreateParamsStreaming;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nexport { Chat } from './chat';\nexport {\n ChatCompletion,\n ChatCompletionAssistantMessageParam,\n ChatCompletionChunk,\n ChatCompletionContentPart,\n ChatCompletionContentPartImage,\n ChatCompletionContentPartText,\n ChatCompletionFunctionCallOption,\n ChatCompletionFunctionMessageParam,\n ChatCompletionMessage,\n ChatCompletionMessageParam,\n ChatCompletionMessageToolCall,\n ChatCompletionNamedToolChoice,\n ChatCompletionRole,\n ChatCompletionSystemMessageParam,\n ChatCompletionTokenLogprob,\n ChatCompletionTool,\n ChatCompletionToolChoiceOption,\n ChatCompletionToolMessageParam,\n ChatCompletionUserMessageParam,\n CreateChatCompletionRequestMessage,\n ChatCompletionCreateParams,\n CompletionCreateParams,\n ChatCompletionCreateParamsNonStreaming,\n CompletionCreateParamsNonStreaming,\n ChatCompletionCreateParamsStreaming,\n CompletionCreateParamsStreaming,\n Completions,\n} from './completions';\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../core\";\nimport { APIResource } from \"../../resource\";\nimport { type Response } from \"../../_shims/index\";\nimport * as SpeechAPI from \"./speech\";\n\nexport class Speech extends APIResource {\n /**\n * Generates audio from the input text.\n */\n create(body: SpeechCreateParams, options?: Core.RequestOptions): Core.APIPromise<Response> {\n return this._client.post('/audio/speech', { body, ...options, __binaryResponse: true });\n }\n}\n\nexport interface SpeechCreateParams {\n /**\n * The text to generate audio for. The maximum length is 4096 characters.\n */\n input: string;\n\n /**\n * One of the available [TTS models](https://platform.openai.com/docs/models/tts):\n * `tts-1` or `tts-1-hd`\n */\n model: (string & {}) | 'tts-1' | 'tts-1-hd';\n\n /**\n * The voice to use when generating the audio. Supported voices are `alloy`,\n * `echo`, `fable`, `onyx`, `nova`, and `shimmer`. Previews of the voices are\n * available in the\n * [Text to speech guide](https://platform.openai.com/docs/guides/text-to-speech/voice-options).\n */\n voice: 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer';\n\n /**\n * The format to return audio in. Supported formats are `mp3`, `opus`, `aac`,\n * `flac`, `pcm`, and `wav`.\n *\n * The `pcm` audio format, similar to `wav` but without a header, utilizes a 24kHz\n * sample rate, mono channel, and 16-bit depth in signed little-endian format.\n */\n response_format?: 'mp3' | 'opus' | 'aac' | 'flac' | 'pcm' | 'wav';\n\n /**\n * The speed of the generated audio. Select a value from `0.25` to `4.0`. `1.0` is\n * the default.\n */\n speed?: number;\n}\n\nexport namespace Speech {\n export import SpeechCreateParams = SpeechAPI.SpeechCreateParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../core\";\nimport { APIResource } from \"../../resource\";\nimport * as TranscriptionsAPI from \"./transcriptions\";\nimport { type Uploadable, multipartFormRequestOptions } from \"../../core\";\n\nexport class Transcriptions extends APIResource {\n /**\n * Transcribes audio into the input language.\n */\n create(body: TranscriptionCreateParams, options?: Core.RequestOptions): Core.APIPromise<Transcription> {\n return this._client.post('/audio/transcriptions', multipartFormRequestOptions({ body, ...options }));\n }\n}\n\nexport interface Transcription {\n text: string;\n}\n\nexport interface TranscriptionCreateParams {\n /**\n * The audio file object (not file name) to transcribe, in one of these formats:\n * flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm.\n */\n file: Uploadable;\n\n /**\n * ID of the model to use. Only `whisper-1` is currently available.\n */\n model: (string & {}) | 'whisper-1';\n\n /**\n * The language of the input audio. Supplying the input language in\n * [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format will\n * improve accuracy and latency.\n */\n language?: string;\n\n /**\n * An optional text to guide the model's style or continue a previous audio\n * segment. The\n * [prompt](https://platform.openai.com/docs/guides/speech-to-text/prompting)\n * should match the audio language.\n */\n prompt?: string;\n\n /**\n * The format of the transcript output, in one of these options: `json`, `text`,\n * `srt`, `verbose_json`, or `vtt`.\n */\n response_format?: 'json' | 'text' | 'srt' | 'verbose_json' | 'vtt';\n\n /**\n * The sampling temperature, between 0 and 1. Higher values like 0.8 will make the\n * output more random, while lower values like 0.2 will make it more focused and\n * deterministic. If set to 0, the model will use\n * [log probability](https://en.wikipedia.org/wiki/Log_probability) to\n * automatically increase the temperature until certain thresholds are hit.\n */\n temperature?: number;\n\n /**\n * The timestamp granularities to populate for this transcription. Any of these\n * options: `word`, or `segment`. Note: There is no additional latency for segment\n * timestamps, but generating word timestamps incurs additional latency.\n */\n timestamp_granularities?: Array<'word' | 'segment'>;\n}\n\nexport namespace Transcriptions {\n export import Transcription = TranscriptionsAPI.Transcription;\n export import TranscriptionCreateParams = TranscriptionsAPI.TranscriptionCreateParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../core\";\nimport { APIResource } from \"../../resource\";\nimport * as TranslationsAPI from \"./translations\";\nimport { type Uploadable, multipartFormRequestOptions } from \"../../core\";\n\nexport class Translations extends APIResource {\n /**\n * Translates audio into English.\n */\n create(body: TranslationCreateParams, options?: Core.RequestOptions): Core.APIPromise<Translation> {\n return this._client.post('/audio/translations', multipartFormRequestOptions({ body, ...options }));\n }\n}\n\nexport interface Translation {\n text: string;\n}\n\nexport interface TranslationCreateParams {\n /**\n * The audio file object (not file name) translate, in one of these formats: flac,\n * mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm.\n */\n file: Uploadable;\n\n /**\n * ID of the model to use. Only `whisper-1` is currently available.\n */\n model: (string & {}) | 'whisper-1';\n\n /**\n * An optional text to guide the model's style or continue a previous audio\n * segment. The\n * [prompt](https://platform.openai.com/docs/guides/speech-to-text/prompting)\n * should be in English.\n */\n prompt?: string;\n\n /**\n * The format of the transcript output, in one of these options: `json`, `text`,\n * `srt`, `verbose_json`, or `vtt`.\n */\n response_format?: string;\n\n /**\n * The sampling temperature, between 0 and 1. Higher values like 0.8 will make the\n * output more random, while lower values like 0.2 will make it more focused and\n * deterministic. If set to 0, the model will use\n * [log probability](https://en.wikipedia.org/wiki/Log_probability) to\n * automatically increase the temperature until certain thresholds are hit.\n */\n temperature?: number;\n}\n\nexport namespace Translations {\n export import Translation = TranslationsAPI.Translation;\n export import TranslationCreateParams = TranslationsAPI.TranslationCreateParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport { APIResource } from \"../../resource\";\nimport * as SpeechAPI from \"./speech\";\nimport * as TranscriptionsAPI from \"./transcriptions\";\nimport * as TranslationsAPI from \"./translations\";\n\nexport class Audio extends APIResource {\n transcriptions: TranscriptionsAPI.Transcriptions = new TranscriptionsAPI.Transcriptions(this._client);\n translations: TranslationsAPI.Translations = new TranslationsAPI.Translations(this._client);\n speech: SpeechAPI.Speech = new SpeechAPI.Speech(this._client);\n}\n\nexport namespace Audio {\n export import Transcriptions = TranscriptionsAPI.Transcriptions;\n export import Transcription = TranscriptionsAPI.Transcription;\n export import TranscriptionCreateParams = TranscriptionsAPI.TranscriptionCreateParams;\n export import Translations = TranslationsAPI.Translations;\n export import Translation = TranslationsAPI.Translation;\n export import TranslationCreateParams = TranslationsAPI.TranslationCreateParams;\n export import Speech = SpeechAPI.Speech;\n export import SpeechCreateParams = SpeechAPI.SpeechCreateParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../../core\";\nimport { APIResource } from \"../../../resource\";\nimport { isRequestOptions } from \"../../../core\";\nimport * as FilesAPI from \"./files\";\nimport { CursorPage, type CursorPageParams } from \"../../../pagination\";\n\nexport class Files extends APIResource {\n /**\n * Create an assistant file by attaching a\n * [File](https://platform.openai.com/docs/api-reference/files) to an\n * [assistant](https://platform.openai.com/docs/api-reference/assistants).\n */\n create(\n assistantId: string,\n body: FileCreateParams,\n options?: Core.RequestOptions,\n ): Core.APIPromise<AssistantFile> {\n return this._client.post(`/assistants/${assistantId}/files`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Retrieves an AssistantFile.\n */\n retrieve(\n assistantId: string,\n fileId: string,\n options?: Core.RequestOptions,\n ): Core.APIPromise<AssistantFile> {\n return this._client.get(`/assistants/${assistantId}/files/${fileId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Returns a list of assistant files.\n */\n list(\n assistantId: string,\n query?: FileListParams,\n options?: Core.RequestOptions,\n ): Core.PagePromise<AssistantFilesPage, AssistantFile>;\n list(\n assistantId: string,\n options?: Core.RequestOptions,\n ): Core.PagePromise<AssistantFilesPage, AssistantFile>;\n list(\n assistantId: string,\n query: FileListParams | Core.RequestOptions = {},\n options?: Core.RequestOptions,\n ): Core.PagePromise<AssistantFilesPage, AssistantFile> {\n if (isRequestOptions(query)) {\n return this.list(assistantId, {}, query);\n }\n return this._client.getAPIList(`/assistants/${assistantId}/files`, AssistantFilesPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Delete an assistant file.\n */\n del(\n assistantId: string,\n fileId: string,\n options?: Core.RequestOptions,\n ): Core.APIPromise<FileDeleteResponse> {\n return this._client.delete(`/assistants/${assistantId}/files/${fileId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n}\n\nexport class AssistantFilesPage extends CursorPage<AssistantFile> {}\n\n/**\n * A list of [Files](https://platform.openai.com/docs/api-reference/files) attached\n * to an `assistant`.\n */\nexport interface AssistantFile {\n /**\n * The identifier, which can be referenced in API endpoints.\n */\n id: string;\n\n /**\n * The assistant ID that the file is attached to.\n */\n assistant_id: string;\n\n /**\n * The Unix timestamp (in seconds) for when the assistant file was created.\n */\n created_at: number;\n\n /**\n * The object type, which is always `assistant.file`.\n */\n object: 'assistant.file';\n}\n\n/**\n * Deletes the association between the assistant and the file, but does not delete\n * the [File](https://platform.openai.com/docs/api-reference/files) object itself.\n */\nexport interface FileDeleteResponse {\n id: string;\n\n deleted: boolean;\n\n object: 'assistant.file.deleted';\n}\n\nexport interface FileCreateParams {\n /**\n * A [File](https://platform.openai.com/docs/api-reference/files) ID (with\n * `purpose=\"assistants\"`) that the assistant should use. Useful for tools like\n * `retrieval` and `code_interpreter` that can access files.\n */\n file_id: string;\n}\n\nexport interface FileListParams extends CursorPageParams {\n /**\n * A cursor for use in pagination. `before` is an object ID that defines your place\n * in the list. For instance, if you make a list request and receive 100 objects,\n * ending with obj_foo, your subsequent call can include before=obj_foo in order to\n * fetch the previous page of the list.\n */\n before?: string;\n\n /**\n * Sort order by the `created_at` timestamp of the objects. `asc` for ascending\n * order and `desc` for descending order.\n */\n order?: 'asc' | 'desc';\n}\n\nexport namespace Files {\n export import AssistantFile = FilesAPI.AssistantFile;\n export import FileDeleteResponse = FilesAPI.FileDeleteResponse;\n export import AssistantFilesPage = FilesAPI.AssistantFilesPage;\n export import FileCreateParams = FilesAPI.FileCreateParams;\n export import FileListParams = FilesAPI.FileListParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../../core\";\nimport { APIResource } from \"../../../resource\";\nimport { isRequestOptions } from \"../../../core\";\nimport * as AssistantsAPI from \"./assistants\";\nimport * as Shared from \"../../shared\";\nimport * as FilesAPI from \"./files\";\nimport { CursorPage, type CursorPageParams } from \"../../../pagination\";\n\nexport class Assistants extends APIResource {\n files: FilesAPI.Files = new FilesAPI.Files(this._client);\n\n /**\n * Create an assistant with a model and instructions.\n */\n create(body: AssistantCreateParams, options?: Core.RequestOptions): Core.APIPromise<Assistant> {\n return this._client.post('/assistants', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Retrieves an assistant.\n */\n retrieve(assistantId: string, options?: Core.RequestOptions): Core.APIPromise<Assistant> {\n return this._client.get(`/assistants/${assistantId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Modifies an assistant.\n */\n update(\n assistantId: string,\n body: AssistantUpdateParams,\n options?: Core.RequestOptions,\n ): Core.APIPromise<Assistant> {\n return this._client.post(`/assistants/${assistantId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Returns a list of assistants.\n */\n list(\n query?: AssistantListParams,\n options?: Core.RequestOptions,\n ): Core.PagePromise<AssistantsPage, Assistant>;\n list(options?: Core.RequestOptions): Core.PagePromise<AssistantsPage, Assistant>;\n list(\n query: AssistantListParams | Core.RequestOptions = {},\n options?: Core.RequestOptions,\n ): Core.PagePromise<AssistantsPage, Assistant> {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/assistants', AssistantsPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Delete an assistant.\n */\n del(assistantId: string, options?: Core.RequestOptions): Core.APIPromise<AssistantDeleted> {\n return this._client.delete(`/assistants/${assistantId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n}\n\nexport class AssistantsPage extends CursorPage<Assistant> {}\n\n/**\n * Represents an `assistant` that can call the model and use tools.\n */\nexport interface Assistant {\n /**\n * The identifier, which can be referenced in API endpoints.\n */\n id: string;\n\n /**\n * The Unix timestamp (in seconds) for when the assistant was created.\n */\n created_at: number;\n\n /**\n * The description of the assistant. The maximum length is 512 characters.\n */\n description: string | null;\n\n /**\n * A list of [file](https://platform.openai.com/docs/api-reference/files) IDs\n * attached to this assistant. There can be a maximum of 20 files attached to the\n * assistant. Files are ordered by their creation date in ascending order.\n */\n file_ids: Array<string>;\n\n /**\n * The system instructions that the assistant uses. The maximum length is 32768\n * characters.\n */\n instructions: string | null;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata: unknown | null;\n\n /**\n * ID of the model to use. You can use the\n * [List models](https://platform.openai.com/docs/api-reference/models/list) API to\n * see all of your available models, or see our\n * [Model overview](https://platform.openai.com/docs/models/overview) for\n * descriptions of them.\n */\n model: string;\n\n /**\n * The name of the assistant. The maximum length is 256 characters.\n */\n name: string | null;\n\n /**\n * The object type, which is always `assistant`.\n */\n object: 'assistant';\n\n /**\n * A list of tool enabled on the assistant. There can be a maximum of 128 tools per\n * assistant. Tools can be of types `code_interpreter`, `retrieval`, or `function`.\n */\n tools: Array<Assistant.CodeInterpreter | Assistant.Retrieval | Assistant.Function>;\n}\n\nexport namespace Assistant {\n export interface CodeInterpreter {\n /**\n * The type of tool being defined: `code_interpreter`\n */\n type: 'code_interpreter';\n }\n\n export interface Retrieval {\n /**\n * The type of tool being defined: `retrieval`\n */\n type: 'retrieval';\n }\n\n export interface Function {\n function: Shared.FunctionDefinition;\n\n /**\n * The type of tool being defined: `function`\n */\n type: 'function';\n }\n}\n\nexport interface AssistantDeleted {\n id: string;\n\n deleted: boolean;\n\n object: 'assistant.deleted';\n}\n\nexport interface AssistantCreateParams {\n /**\n * ID of the model to use. You can use the\n * [List models](https://platform.openai.com/docs/api-reference/models/list) API to\n * see all of your available models, or see our\n * [Model overview](https://platform.openai.com/docs/models/overview) for\n * descriptions of them.\n */\n model: string;\n\n /**\n * The description of the assistant. The maximum length is 512 characters.\n */\n description?: string | null;\n\n /**\n * A list of [file](https://platform.openai.com/docs/api-reference/files) IDs\n * attached to this assistant. There can be a maximum of 20 files attached to the\n * assistant. Files are ordered by their creation date in ascending order.\n */\n file_ids?: Array<string>;\n\n /**\n * The system instructions that the assistant uses. The maximum length is 32768\n * characters.\n */\n instructions?: string | null;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata?: unknown | null;\n\n /**\n * The name of the assistant. The maximum length is 256 characters.\n */\n name?: string | null;\n\n /**\n * A list of tool enabled on the assistant. There can be a maximum of 128 tools per\n * assistant. Tools can be of types `code_interpreter`, `retrieval`, or `function`.\n */\n tools?: Array<\n | AssistantCreateParams.AssistantToolsCode\n | AssistantCreateParams.AssistantToolsRetrieval\n | AssistantCreateParams.AssistantToolsFunction\n >;\n}\n\nexport namespace AssistantCreateParams {\n export interface AssistantToolsCode {\n /**\n * The type of tool being defined: `code_interpreter`\n */\n type: 'code_interpreter';\n }\n\n export interface AssistantToolsRetrieval {\n /**\n * The type of tool being defined: `retrieval`\n */\n type: 'retrieval';\n }\n\n export interface AssistantToolsFunction {\n function: Shared.FunctionDefinition;\n\n /**\n * The type of tool being defined: `function`\n */\n type: 'function';\n }\n}\n\nexport interface AssistantUpdateParams {\n /**\n * The description of the assistant. The maximum length is 512 characters.\n */\n description?: string | null;\n\n /**\n * A list of [File](https://platform.openai.com/docs/api-reference/files) IDs\n * attached to this assistant. There can be a maximum of 20 files attached to the\n * assistant. Files are ordered by their creation date in ascending order. If a\n * file was previously attached to the list but does not show up in the list, it\n * will be deleted from the assistant.\n */\n file_ids?: Array<string>;\n\n /**\n * The system instructions that the assistant uses. The maximum length is 32768\n * characters.\n */\n instructions?: string | null;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata?: unknown | null;\n\n /**\n * ID of the model to use. You can use the\n * [List models](https://platform.openai.com/docs/api-reference/models/list) API to\n * see all of your available models, or see our\n * [Model overview](https://platform.openai.com/docs/models/overview) for\n * descriptions of them.\n */\n model?: string;\n\n /**\n * The name of the assistant. The maximum length is 256 characters.\n */\n name?: string | null;\n\n /**\n * A list of tool enabled on the assistant. There can be a maximum of 128 tools per\n * assistant. Tools can be of types `code_interpreter`, `retrieval`, or `function`.\n */\n tools?: Array<\n | AssistantUpdateParams.AssistantToolsCode\n | AssistantUpdateParams.AssistantToolsRetrieval\n | AssistantUpdateParams.AssistantToolsFunction\n >;\n}\n\nexport namespace AssistantUpdateParams {\n export interface AssistantToolsCode {\n /**\n * The type of tool being defined: `code_interpreter`\n */\n type: 'code_interpreter';\n }\n\n export interface AssistantToolsRetrieval {\n /**\n * The type of tool being defined: `retrieval`\n */\n type: 'retrieval';\n }\n\n export interface AssistantToolsFunction {\n function: Shared.FunctionDefinition;\n\n /**\n * The type of tool being defined: `function`\n */\n type: 'function';\n }\n}\n\nexport interface AssistantListParams extends CursorPageParams {\n /**\n * A cursor for use in pagination. `before` is an object ID that defines your place\n * in the list. For instance, if you make a list request and receive 100 objects,\n * ending with obj_foo, your subsequent call can include before=obj_foo in order to\n * fetch the previous page of the list.\n */\n before?: string;\n\n /**\n * Sort order by the `created_at` timestamp of the objects. `asc` for ascending\n * order and `desc` for descending order.\n */\n order?: 'asc' | 'desc';\n}\n\nexport namespace Assistants {\n export import Assistant = AssistantsAPI.Assistant;\n export import AssistantDeleted = AssistantsAPI.AssistantDeleted;\n export import AssistantsPage = AssistantsAPI.AssistantsPage;\n export import AssistantCreateParams = AssistantsAPI.AssistantCreateParams;\n export import AssistantUpdateParams = AssistantsAPI.AssistantUpdateParams;\n export import AssistantListParams = AssistantsAPI.AssistantListParams;\n export import Files = FilesAPI.Files;\n export import AssistantFile = FilesAPI.AssistantFile;\n export import FileDeleteResponse = FilesAPI.FileDeleteResponse;\n export import AssistantFilesPage = FilesAPI.AssistantFilesPage;\n export import FileCreateParams = FilesAPI.FileCreateParams;\n export import FileListParams = FilesAPI.FileListParams;\n}\n","import { type ChatCompletionRunner } from './ChatCompletionRunner';\nimport { type ChatCompletionStreamingRunner } from './ChatCompletionStreamingRunner';\nimport { JSONSchema } from './jsonschema';\n\ntype PromiseOrValue<T> = T | Promise<T>;\n\nexport type RunnableFunctionWithParse<Args extends object> = {\n /**\n * @param args the return value from `parse`.\n * @param runner the runner evaluating this callback.\n * @returns a string to send back to OpenAI.\n */\n function: (\n args: Args,\n runner: ChatCompletionRunner | ChatCompletionStreamingRunner,\n ) => PromiseOrValue<unknown>;\n /**\n * @param input the raw args from the OpenAI function call.\n * @returns the parsed arguments to pass to `function`\n */\n parse: (input: string) => PromiseOrValue<Args>;\n /**\n * The parameters the function accepts, describes as a JSON Schema object.\n */\n parameters: JSONSchema;\n /**\n * A description of what the function does, used by the model to choose when and how to call the function.\n */\n description: string;\n /**\n * The name of the function to be called. Will default to function.name if omitted.\n */\n name?: string | undefined;\n};\n\nexport type RunnableFunctionWithoutParse = {\n /**\n * @param args the raw args from the OpenAI function call.\n * @returns a string to send back to OpenAI\n */\n function: (\n args: string,\n runner: ChatCompletionRunner | ChatCompletionStreamingRunner,\n ) => PromiseOrValue<unknown>;\n /**\n * The parameters the function accepts, describes as a JSON Schema object.\n */\n parameters: JSONSchema;\n /**\n * A description of what the function does, used by the model to choose when and how to call the function.\n */\n description: string;\n /**\n * The name of the function to be called. Will default to function.name if omitted.\n */\n name?: string | undefined;\n};\n\nexport type RunnableFunction<Args extends object | string> =\n Args extends string ? RunnableFunctionWithoutParse\n : Args extends object ? RunnableFunctionWithParse<Args>\n : never;\n\nexport type RunnableToolFunction<Args extends object | string> =\n Args extends string ? RunnableToolFunctionWithoutParse\n : Args extends object ? RunnableToolFunctionWithParse<Args>\n : never;\n\nexport type RunnableToolFunctionWithoutParse = {\n type: 'function';\n function: RunnableFunctionWithoutParse;\n};\nexport type RunnableToolFunctionWithParse<Args extends object> = {\n type: 'function';\n function: RunnableFunctionWithParse<Args>;\n};\n\nexport function isRunnableFunctionWithParse<Args extends object>(\n fn: any,\n): fn is RunnableFunctionWithParse<Args> {\n return typeof (fn as any).parse === 'function';\n}\n\nexport type BaseFunctionsArgs = readonly (object | string)[];\n\nexport type RunnableFunctions<FunctionsArgs extends BaseFunctionsArgs> =\n [any[]] extends [FunctionsArgs] ? readonly RunnableFunction<any>[]\n : {\n [Index in keyof FunctionsArgs]: Index extends number ? RunnableFunction<FunctionsArgs[Index]>\n : FunctionsArgs[Index];\n };\n\nexport type RunnableTools<FunctionsArgs extends BaseFunctionsArgs> =\n [any[]] extends [FunctionsArgs] ? readonly RunnableToolFunction<any>[]\n : {\n [Index in keyof FunctionsArgs]: Index extends number ? RunnableToolFunction<FunctionsArgs[Index]>\n : FunctionsArgs[Index];\n };\n\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n *\n * @deprecated - please use ParsingToolFunction instead.\n */\nexport class ParsingFunction<Args extends object> {\n function: RunnableFunctionWithParse<Args>['function'];\n parse: RunnableFunctionWithParse<Args>['parse'];\n parameters: RunnableFunctionWithParse<Args>['parameters'];\n description: RunnableFunctionWithParse<Args>['description'];\n name?: RunnableFunctionWithParse<Args>['name'];\n\n constructor(input: RunnableFunctionWithParse<Args>) {\n this.function = input.function;\n this.parse = input.parse;\n this.parameters = input.parameters;\n this.description = input.description;\n this.name = input.name;\n }\n}\n\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n */\nexport class ParsingToolFunction<Args extends object> {\n type: 'function';\n function: RunnableFunctionWithParse<Args>;\n\n constructor(input: RunnableFunctionWithParse<Args>) {\n this.type = 'function';\n this.function = input;\n }\n}\n","import {\n type ChatCompletionAssistantMessageParam,\n type ChatCompletionFunctionMessageParam,\n type ChatCompletionMessageParam,\n type ChatCompletionToolMessageParam,\n} from \"../resources\";\n\nexport const isAssistantMessage = (\n message: ChatCompletionMessageParam | null | undefined,\n): message is ChatCompletionAssistantMessageParam => {\n return message?.role === 'assistant';\n};\n\nexport const isFunctionMessage = (\n message: ChatCompletionMessageParam | null | undefined,\n): message is ChatCompletionFunctionMessageParam => {\n return message?.role === 'function';\n};\n\nexport const isToolMessage = (\n message: ChatCompletionMessageParam | null | undefined,\n): message is ChatCompletionToolMessageParam => {\n return message?.role === 'tool';\n};\n\nexport function isPresent<T>(obj: T | null | undefined): obj is T {\n return obj != null;\n}\n","import * as Core from \"../core\";\nimport { type CompletionUsage } from \"../resources/completions\";\nimport {\n type Completions,\n type ChatCompletion,\n type ChatCompletionMessage,\n type ChatCompletionMessageParam,\n type ChatCompletionCreateParams,\n type ChatCompletionTool,\n} from \"../resources/chat/completions\";\nimport { APIUserAbortError, OpenAIError } from \"../error\";\nimport {\n type RunnableFunction,\n isRunnableFunctionWithParse,\n type BaseFunctionsArgs,\n} from './RunnableFunction';\nimport { ChatCompletionFunctionRunnerParams, ChatCompletionToolRunnerParams } from './ChatCompletionRunner';\nimport {\n ChatCompletionStreamingFunctionRunnerParams,\n ChatCompletionStreamingToolRunnerParams,\n} from './ChatCompletionStreamingRunner';\nimport { isAssistantMessage, isFunctionMessage, isToolMessage } from './chatCompletionUtils';\n\nconst DEFAULT_MAX_CHAT_COMPLETIONS = 10;\nexport interface RunnerOptions extends Core.RequestOptions {\n /** How many requests to make before canceling. Default 10. */\n maxChatCompletions?: number;\n}\n\nexport abstract class AbstractChatCompletionRunner<\n Events extends CustomEvents<any> = AbstractChatCompletionRunnerEvents,\n> {\n controller: AbortController = new AbortController();\n\n #connectedPromise: Promise<void>;\n #resolveConnectedPromise: () => void = () => {};\n #rejectConnectedPromise: (error: OpenAIError) => void = () => {};\n\n #endPromise: Promise<void>;\n #resolveEndPromise: () => void = () => {};\n #rejectEndPromise: (error: OpenAIError) => void = () => {};\n\n #listeners: { [Event in keyof Events]?: ListenersForEvent<Events, Event> } = {};\n\n protected _chatCompletions: ChatCompletion[] = [];\n messages: ChatCompletionMessageParam[] = [];\n\n #ended = false;\n #errored = false;\n #aborted = false;\n #catchingPromiseCreated = false;\n\n constructor() {\n this.#connectedPromise = new Promise<void>((resolve, reject) => {\n this.#resolveConnectedPromise = resolve;\n this.#rejectConnectedPromise = reject;\n });\n\n this.#endPromise = new Promise<void>((resolve, reject) => {\n this.#resolveEndPromise = resolve;\n this.#rejectEndPromise = reject;\n });\n\n // Don't let these promises cause unhandled rejection errors.\n // we will manually cause an unhandled rejection error later\n // if the user hasn't registered any error listener or called\n // any promise-returning method.\n this.#connectedPromise.catch(() => {});\n this.#endPromise.catch(() => {});\n }\n\n protected _run(executor: () => Promise<any>) {\n // Unfortunately if we call `executor()` immediately we get runtime errors about\n // references to `this` before the `super()` constructor call returns.\n setTimeout(() => {\n executor().then(() => {\n this._emitFinal();\n this._emit('end');\n }, this.#handleError);\n }, 0);\n }\n\n protected _addChatCompletion(chatCompletion: ChatCompletion): ChatCompletion {\n this._chatCompletions.push(chatCompletion);\n this._emit('chatCompletion', chatCompletion);\n const message = chatCompletion.choices[0]?.message;\n if (message) this._addMessage(message as ChatCompletionMessageParam);\n return chatCompletion;\n }\n\n protected _addMessage(message: ChatCompletionMessageParam, emit = true) {\n if (!('content' in message)) message.content = null;\n\n this.messages.push(message);\n\n if (emit) {\n this._emit('message', message);\n if ((isFunctionMessage(message) || isToolMessage(message)) && message.content) {\n // Note, this assumes that {role: 'tool', content: …} is always the result of a call of tool of type=function.\n this._emit('functionCallResult', message.content as string);\n } else if (isAssistantMessage(message) && message.function_call) {\n this._emit('functionCall', message.function_call);\n } else if (isAssistantMessage(message) && message.tool_calls) {\n for (const tool_call of message.tool_calls) {\n if (tool_call.type === 'function') {\n this._emit('functionCall', tool_call.function);\n }\n }\n }\n }\n }\n\n protected _connected() {\n if (this.ended) return;\n this.#resolveConnectedPromise();\n this._emit('connect');\n }\n\n get ended(): boolean {\n return this.#ended;\n }\n\n get errored(): boolean {\n return this.#errored;\n }\n\n get aborted(): boolean {\n return this.#aborted;\n }\n\n abort() {\n this.controller.abort();\n }\n\n /**\n * Adds the listener function to the end of the listeners array for the event.\n * No checks are made to see if the listener has already been added. Multiple calls passing\n * the same combination of event and listener will result in the listener being added, and\n * called, multiple times.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n on<Event extends keyof Events>(event: Event, listener: ListenerForEvent<Events, Event>): this {\n const listeners: ListenersForEvent<Events, Event> =\n this.#listeners[event] || (this.#listeners[event] = []);\n listeners.push({ listener });\n return this;\n }\n\n /**\n * Removes the specified listener from the listener array for the event.\n * off() will remove, at most, one instance of a listener from the listener array. If any single\n * listener has been added multiple times to the listener array for the specified event, then\n * off() must be called multiple times to remove each instance.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n off<Event extends keyof Events>(event: Event, listener: ListenerForEvent<Events, Event>): this {\n const listeners = this.#listeners[event];\n if (!listeners) return this;\n const index = listeners.findIndex((l) => l.listener === listener);\n if (index >= 0) listeners.splice(index, 1);\n return this;\n }\n\n /**\n * Adds a one-time listener function for the event. The next time the event is triggered,\n * this listener is removed and then invoked.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n once<Event extends keyof Events>(event: Event, listener: ListenerForEvent<Events, Event>): this {\n const listeners: ListenersForEvent<Events, Event> =\n this.#listeners[event] || (this.#listeners[event] = []);\n listeners.push({ listener, once: true });\n return this;\n }\n\n /**\n * This is similar to `.once()`, but returns a Promise that resolves the next time\n * the event is triggered, instead of calling a listener callback.\n * @returns a Promise that resolves the next time given event is triggered,\n * or rejects if an error is emitted. (If you request the 'error' event,\n * returns a promise that resolves with the error).\n *\n * Example:\n *\n * const message = await stream.emitted('message') // rejects if the stream errors\n */\n emitted<Event extends keyof Events>(\n event: Event,\n ): Promise<\n EventParameters<Events, Event> extends [infer Param] ? Param\n : EventParameters<Events, Event> extends [] ? void\n : EventParameters<Events, Event>\n > {\n return new Promise((resolve, reject) => {\n this.#catchingPromiseCreated = true;\n if (event !== 'error') this.once('error', reject);\n this.once(event, resolve as any);\n });\n }\n\n async done(): Promise<void> {\n this.#catchingPromiseCreated = true;\n await this.#endPromise;\n }\n\n /**\n * @returns a promise that resolves with the final ChatCompletion, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletion.\n */\n async finalChatCompletion(): Promise<ChatCompletion> {\n await this.done();\n const completion = this._chatCompletions[this._chatCompletions.length - 1];\n if (!completion) throw new OpenAIError('stream ended without producing a ChatCompletion');\n return completion;\n }\n\n #getFinalContent(): string | null {\n return this.#getFinalMessage().content ?? null;\n }\n\n /**\n * @returns a promise that resolves with the content of the final ChatCompletionMessage, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalContent(): Promise<string | null> {\n await this.done();\n return this.#getFinalContent();\n }\n\n #getFinalMessage(): ChatCompletionMessage {\n let i = this.messages.length;\n while (i-- > 0) {\n const message = this.messages[i];\n if (isAssistantMessage(message)) {\n return { ...message, content: message.content ?? null };\n }\n }\n throw new OpenAIError('stream ended without producing a ChatCompletionMessage with role=assistant');\n }\n\n /**\n * @returns a promise that resolves with the the final assistant ChatCompletionMessage response,\n * or rejects if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalMessage(): Promise<ChatCompletionMessage> {\n await this.done();\n return this.#getFinalMessage();\n }\n\n #getFinalFunctionCall(): ChatCompletionMessage.FunctionCall | undefined {\n for (let i = this.messages.length - 1; i >= 0; i--) {\n const message = this.messages[i];\n if (isAssistantMessage(message) && message?.function_call) {\n return message.function_call;\n }\n if (isAssistantMessage(message) && message?.tool_calls?.length) {\n return message.tool_calls.at(-1)?.function;\n }\n }\n\n return;\n }\n\n /**\n * @returns a promise that resolves with the content of the final FunctionCall, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalFunctionCall(): Promise<ChatCompletionMessage.FunctionCall | undefined> {\n await this.done();\n return this.#getFinalFunctionCall();\n }\n\n #getFinalFunctionCallResult(): string | undefined {\n for (let i = this.messages.length - 1; i >= 0; i--) {\n const message = this.messages[i];\n if (isFunctionMessage(message) && message.content != null) {\n return message.content;\n }\n if (\n isToolMessage(message) &&\n message.content != null &&\n this.messages.some(\n (x) =>\n x.role === 'assistant' &&\n x.tool_calls?.some((y) => y.type === 'function' && y.id === message.tool_call_id),\n )\n ) {\n return message.content;\n }\n }\n\n return;\n }\n\n async finalFunctionCallResult(): Promise<string | undefined> {\n await this.done();\n return this.#getFinalFunctionCallResult();\n }\n\n #calculateTotalUsage(): CompletionUsage {\n const total: CompletionUsage = {\n completion_tokens: 0,\n prompt_tokens: 0,\n total_tokens: 0,\n };\n for (const { usage } of this._chatCompletions) {\n if (usage) {\n total.completion_tokens += usage.completion_tokens;\n total.prompt_tokens += usage.prompt_tokens;\n total.total_tokens += usage.total_tokens;\n }\n }\n return total;\n }\n\n async totalUsage(): Promise<CompletionUsage> {\n await this.done();\n return this.#calculateTotalUsage();\n }\n\n allChatCompletions(): ChatCompletion[] {\n return [...this._chatCompletions];\n }\n\n #handleError = (error: unknown) => {\n this.#errored = true;\n if (error instanceof Error && error.name === 'AbortError') {\n error = new APIUserAbortError();\n }\n if (error instanceof APIUserAbortError) {\n this.#aborted = true;\n return this._emit('abort', error);\n }\n if (error instanceof OpenAIError) {\n return this._emit('error', error);\n }\n if (error instanceof Error) {\n const openAIError: OpenAIError = new OpenAIError(error.message);\n // @ts-ignore\n openAIError.cause = error;\n return this._emit('error', openAIError);\n }\n return this._emit('error', new OpenAIError(String(error)));\n };\n\n protected _emit<Event extends keyof Events>(event: Event, ...args: EventParameters<Events, Event>) {\n // make sure we don't emit any events after end\n if (this.#ended) {\n return;\n }\n\n if (event === 'end') {\n this.#ended = true;\n this.#resolveEndPromise();\n }\n\n const listeners: ListenersForEvent<Events, Event> | undefined = this.#listeners[event];\n if (listeners) {\n this.#listeners[event] = listeners.filter((l) => !l.once) as any;\n listeners.forEach(({ listener }: any) => listener(...args));\n }\n\n if (event === 'abort') {\n const error = args[0] as APIUserAbortError;\n if (!this.#catchingPromiseCreated && !listeners?.length) {\n Promise.reject(error);\n }\n this.#rejectConnectedPromise(error);\n this.#rejectEndPromise(error);\n this._emit('end');\n return;\n }\n\n if (event === 'error') {\n // NOTE: _emit('error', error) should only be called from #handleError().\n\n const error = args[0] as OpenAIError;\n if (!this.#catchingPromiseCreated && !listeners?.length) {\n // Trigger an unhandled rejection if the user hasn't registered any error handlers.\n // If you are seeing stack traces here, make sure to handle errors via either:\n // - runner.on('error', () => ...)\n // - await runner.done()\n // - await runner.finalChatCompletion()\n // - etc.\n Promise.reject(error);\n }\n this.#rejectConnectedPromise(error);\n this.#rejectEndPromise(error);\n this._emit('end');\n }\n }\n\n protected _emitFinal() {\n const completion = this._chatCompletions[this._chatCompletions.length - 1];\n if (completion) this._emit('finalChatCompletion', completion);\n const finalMessage = this.#getFinalMessage();\n if (finalMessage) this._emit('finalMessage', finalMessage);\n const finalContent = this.#getFinalContent();\n if (finalContent) this._emit('finalContent', finalContent);\n\n const finalFunctionCall = this.#getFinalFunctionCall();\n if (finalFunctionCall) this._emit('finalFunctionCall', finalFunctionCall);\n\n const finalFunctionCallResult = this.#getFinalFunctionCallResult();\n if (finalFunctionCallResult != null) this._emit('finalFunctionCallResult', finalFunctionCallResult);\n\n if (this._chatCompletions.some((c) => c.usage)) {\n this._emit('totalUsage', this.#calculateTotalUsage());\n }\n }\n\n #validateParams(params: ChatCompletionCreateParams): void {\n if (params.n != null && params.n > 1) {\n throw new OpenAIError(\n 'ChatCompletion convenience helpers only support n=1 at this time. To use n>1, please use chat.completions.create() directly.',\n );\n }\n }\n\n protected async _createChatCompletion(\n completions: Completions,\n params: ChatCompletionCreateParams,\n options?: Core.RequestOptions,\n ): Promise<ChatCompletion> {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted) this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n this.#validateParams(params);\n\n const chatCompletion = await completions.create(\n { ...params, stream: false },\n { ...options, signal: this.controller.signal },\n );\n this._connected();\n return this._addChatCompletion(chatCompletion);\n }\n\n protected async _runChatCompletion(\n completions: Completions,\n params: ChatCompletionCreateParams,\n options?: Core.RequestOptions,\n ): Promise<ChatCompletion> {\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n return await this._createChatCompletion(completions, params, options);\n }\n\n protected async _runFunctions<FunctionsArgs extends BaseFunctionsArgs>(\n completions: Completions,\n params:\n | ChatCompletionFunctionRunnerParams<FunctionsArgs>\n | ChatCompletionStreamingFunctionRunnerParams<FunctionsArgs>,\n options?: RunnerOptions,\n ) {\n const role = 'function' as const;\n const { function_call = 'auto', stream, ...restParams } = params;\n const singleFunctionToCall = typeof function_call !== 'string' && function_call?.name;\n const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n\n const functionsByName: Record<string, RunnableFunction<any>> = {};\n for (const f of params.functions) {\n functionsByName[f.name || f.function.name] = f;\n }\n\n const functions: ChatCompletionCreateParams.Function[] = params.functions.map(\n (f): ChatCompletionCreateParams.Function => ({\n name: f.name || f.function.name,\n parameters: f.parameters as Record<string, unknown>,\n description: f.description,\n }),\n );\n\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n\n for (let i = 0; i < maxChatCompletions; ++i) {\n const chatCompletion: ChatCompletion = await this._createChatCompletion(\n completions,\n {\n ...restParams,\n function_call,\n functions,\n messages: [...this.messages],\n },\n options,\n );\n const message = chatCompletion.choices[0]?.message;\n if (!message) {\n throw new OpenAIError(`missing message in ChatCompletion response`);\n }\n if (!message.function_call) return;\n const { name, arguments: args } = message.function_call;\n const fn = functionsByName[name];\n if (!fn) {\n const content = `Invalid function_call: ${JSON.stringify(name)}. Available options are: ${functions\n .map((f) => JSON.stringify(f.name))\n .join(', ')}. Please try again`;\n\n this._addMessage({ role, name, content });\n continue;\n } else if (singleFunctionToCall && singleFunctionToCall !== name) {\n const content = `Invalid function_call: ${JSON.stringify(name)}. ${JSON.stringify(\n singleFunctionToCall,\n )} requested. Please try again`;\n\n this._addMessage({ role, name, content });\n continue;\n }\n\n let parsed;\n try {\n parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;\n } catch (error) {\n this._addMessage({\n role,\n name,\n content: error instanceof Error ? error.message : String(error),\n });\n continue;\n }\n\n // @ts-expect-error it can't rule out `never` type.\n const rawContent = await fn.function(parsed, this);\n const content = this.#stringifyFunctionCallResult(rawContent);\n\n this._addMessage({ role, name, content });\n\n if (singleFunctionToCall) return;\n }\n }\n\n protected async _runTools<FunctionsArgs extends BaseFunctionsArgs>(\n completions: Completions,\n params:\n | ChatCompletionToolRunnerParams<FunctionsArgs>\n | ChatCompletionStreamingToolRunnerParams<FunctionsArgs>,\n options?: RunnerOptions,\n ) {\n const role = 'tool' as const;\n const { tool_choice = 'auto', stream, ...restParams } = params;\n const singleFunctionToCall = typeof tool_choice !== 'string' && tool_choice?.function?.name;\n const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n\n const functionsByName: Record<string, RunnableFunction<any>> = {};\n for (const f of params.tools) {\n if (f.type === 'function') {\n functionsByName[f.function.name || f.function.function.name] = f.function;\n }\n }\n\n const tools: ChatCompletionTool[] =\n 'tools' in params ?\n params.tools.map((t) =>\n t.type === 'function' ?\n {\n type: 'function',\n function: {\n name: t.function.name || t.function.function.name,\n parameters: t.function.parameters as Record<string, unknown>,\n description: t.function.description,\n },\n }\n : (t as unknown as ChatCompletionTool),\n )\n : (undefined as any);\n\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n\n for (let i = 0; i < maxChatCompletions; ++i) {\n const chatCompletion: ChatCompletion = await this._createChatCompletion(\n completions,\n {\n ...restParams,\n tool_choice,\n tools,\n messages: [...this.messages],\n },\n options,\n );\n const message = chatCompletion.choices[0]?.message;\n if (!message) {\n throw new OpenAIError(`missing message in ChatCompletion response`);\n }\n if (!message.tool_calls) {\n return;\n }\n\n for (const tool_call of message.tool_calls) {\n if (tool_call.type !== 'function') continue;\n const tool_call_id = tool_call.id;\n const { name, arguments: args } = tool_call.function;\n const fn = functionsByName[name];\n\n if (!fn) {\n const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${tools\n .map((f) => JSON.stringify(f.function.name))\n .join(', ')}. Please try again`;\n\n this._addMessage({ role, tool_call_id, content });\n continue;\n } else if (singleFunctionToCall && singleFunctionToCall !== name) {\n const content = `Invalid tool_call: ${JSON.stringify(name)}. ${JSON.stringify(\n singleFunctionToCall,\n )} requested. Please try again`;\n\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n\n let parsed;\n try {\n parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;\n } catch (error) {\n const content = error instanceof Error ? error.message : String(error);\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n\n // @ts-expect-error it can't rule out `never` type.\n const rawContent = await fn.function(parsed, this);\n const content = this.#stringifyFunctionCallResult(rawContent);\n this._addMessage({ role, tool_call_id, content });\n\n if (singleFunctionToCall) {\n return;\n }\n }\n }\n\n return;\n }\n\n #stringifyFunctionCallResult(rawContent: unknown): string {\n return (\n typeof rawContent === 'string' ? rawContent\n : rawContent === undefined ? 'undefined'\n : JSON.stringify(rawContent)\n );\n }\n}\n\ntype CustomEvents<Event extends string> = {\n [k in Event]: k extends keyof AbstractChatCompletionRunnerEvents ? AbstractChatCompletionRunnerEvents[k]\n : (...args: any[]) => void;\n};\n\ntype ListenerForEvent<Events extends CustomEvents<any>, Event extends keyof Events> = Event extends (\n keyof AbstractChatCompletionRunnerEvents\n) ?\n AbstractChatCompletionRunnerEvents[Event]\n: Events[Event];\n\ntype ListenersForEvent<Events extends CustomEvents<any>, Event extends keyof Events> = Array<{\n listener: ListenerForEvent<Events, Event>;\n once?: boolean;\n}>;\ntype EventParameters<Events extends CustomEvents<any>, Event extends keyof Events> = Parameters<\n ListenerForEvent<Events, Event>\n>;\n\nexport interface AbstractChatCompletionRunnerEvents {\n connect: () => void;\n functionCall: (functionCall: ChatCompletionMessage.FunctionCall) => void;\n message: (message: ChatCompletionMessageParam) => void;\n chatCompletion: (completion: ChatCompletion) => void;\n finalContent: (contentSnapshot: string) => void;\n finalMessage: (message: ChatCompletionMessageParam) => void;\n finalChatCompletion: (completion: ChatCompletion) => void;\n finalFunctionCall: (functionCall: ChatCompletionMessage.FunctionCall) => void;\n functionCallResult: (content: string) => void;\n finalFunctionCallResult: (content: string) => void;\n error: (error: OpenAIError) => void;\n abort: (error: APIUserAbortError) => void;\n end: () => void;\n totalUsage: (usage: CompletionUsage) => void;\n}\n","import {\n type Completions,\n type ChatCompletionMessageParam,\n type ChatCompletionCreateParamsNonStreaming,\n} from \"../resources/chat/completions\";\nimport { type RunnableFunctions, type BaseFunctionsArgs, RunnableTools } from './RunnableFunction';\nimport {\n AbstractChatCompletionRunner,\n AbstractChatCompletionRunnerEvents,\n RunnerOptions,\n} from './AbstractChatCompletionRunner';\nimport { isAssistantMessage } from './chatCompletionUtils';\n\nexport interface ChatCompletionRunnerEvents extends AbstractChatCompletionRunnerEvents {\n content: (content: string) => void;\n}\n\nexport type ChatCompletionFunctionRunnerParams<FunctionsArgs extends BaseFunctionsArgs> = Omit<\n ChatCompletionCreateParamsNonStreaming,\n 'functions'\n> & {\n functions: RunnableFunctions<FunctionsArgs>;\n};\n\nexport type ChatCompletionToolRunnerParams<FunctionsArgs extends BaseFunctionsArgs> = Omit<\n ChatCompletionCreateParamsNonStreaming,\n 'tools'\n> & {\n tools: RunnableTools<FunctionsArgs>;\n};\n\nexport class ChatCompletionRunner extends AbstractChatCompletionRunner<ChatCompletionRunnerEvents> {\n /** @deprecated - please use `runTools` instead. */\n static runFunctions(\n completions: Completions,\n params: ChatCompletionFunctionRunnerParams<any[]>,\n options?: RunnerOptions,\n ): ChatCompletionRunner {\n const runner = new ChatCompletionRunner();\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runFunctions' },\n };\n runner._run(() => runner._runFunctions(completions, params, opts));\n return runner;\n }\n\n static runTools(\n completions: Completions,\n params: ChatCompletionToolRunnerParams<any[]>,\n options?: RunnerOptions,\n ): ChatCompletionRunner {\n const runner = new ChatCompletionRunner();\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n };\n runner._run(() => runner._runTools(completions, params, opts));\n return runner;\n }\n\n override _addMessage(message: ChatCompletionMessageParam) {\n super._addMessage(message);\n if (isAssistantMessage(message) && message.content) {\n this._emit('content', message.content as string);\n }\n }\n}\n","import * as Core from \"../core\";\nimport { OpenAIError, APIUserAbortError } from \"../error\";\nimport {\n Completions,\n type ChatCompletion,\n type ChatCompletionChunk,\n type ChatCompletionCreateParams,\n type ChatCompletionCreateParamsBase,\n} from \"../resources/chat/completions\";\nimport {\n AbstractChatCompletionRunner,\n type AbstractChatCompletionRunnerEvents,\n} from './AbstractChatCompletionRunner';\nimport { type ReadableStream } from \"../_shims/index\";\nimport { Stream } from \"../streaming\";\n\nexport interface ChatCompletionStreamEvents extends AbstractChatCompletionRunnerEvents {\n content: (contentDelta: string, contentSnapshot: string) => void;\n chunk: (chunk: ChatCompletionChunk, snapshot: ChatCompletionSnapshot) => void;\n}\n\nexport type ChatCompletionStreamParams = Omit<ChatCompletionCreateParamsBase, 'stream'> & {\n stream?: true;\n};\n\nexport class ChatCompletionStream\n extends AbstractChatCompletionRunner<ChatCompletionStreamEvents>\n implements AsyncIterable<ChatCompletionChunk>\n{\n #currentChatCompletionSnapshot: ChatCompletionSnapshot | undefined;\n\n get currentChatCompletionSnapshot(): ChatCompletionSnapshot | undefined {\n return this.#currentChatCompletionSnapshot;\n }\n\n /**\n * Intended for use on the frontend, consuming a stream produced with\n * `.toReadableStream()` on the backend.\n *\n * Note that messages sent to the model do not appear in `.on('message')`\n * in this context.\n */\n static fromReadableStream(stream: ReadableStream): ChatCompletionStream {\n const runner = new ChatCompletionStream();\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n\n static createChatCompletion(\n completions: Completions,\n params: ChatCompletionStreamParams,\n options?: Core.RequestOptions,\n ): ChatCompletionStream {\n const runner = new ChatCompletionStream();\n runner._run(() =>\n runner._runChatCompletion(\n completions,\n { ...params, stream: true },\n { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } },\n ),\n );\n return runner;\n }\n\n #beginRequest() {\n if (this.ended) return;\n this.#currentChatCompletionSnapshot = undefined;\n }\n #addChunk(chunk: ChatCompletionChunk) {\n if (this.ended) return;\n const completion = this.#accumulateChatCompletion(chunk);\n this._emit('chunk', chunk, completion);\n const delta = chunk.choices[0]?.delta?.content;\n const snapshot = completion.choices[0]?.message;\n if (delta != null && snapshot?.role === 'assistant' && snapshot?.content) {\n this._emit('content', delta, snapshot.content);\n }\n }\n #endRequest(): ChatCompletion {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = this.#currentChatCompletionSnapshot;\n if (!snapshot) {\n throw new OpenAIError(`request ended without sending any chunks`);\n }\n this.#currentChatCompletionSnapshot = undefined;\n return finalizeChatCompletion(snapshot);\n }\n\n protected override async _createChatCompletion(\n completions: Completions,\n params: ChatCompletionCreateParams,\n options?: Core.RequestOptions,\n ): Promise<ChatCompletion> {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted) this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n this.#beginRequest();\n const stream = await completions.create(\n { ...params, stream: true },\n { ...options, signal: this.controller.signal },\n );\n this._connected();\n for await (const chunk of stream) {\n this.#addChunk(chunk);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addChatCompletion(this.#endRequest());\n }\n\n protected async _fromReadableStream(\n readableStream: ReadableStream,\n options?: Core.RequestOptions,\n ): Promise<ChatCompletion> {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted) this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n this.#beginRequest();\n this._connected();\n const stream = Stream.fromReadableStream<ChatCompletionChunk>(readableStream, this.controller);\n let chatId;\n for await (const chunk of stream) {\n if (chatId && chatId !== chunk.id) {\n // A new request has been made.\n this._addChatCompletion(this.#endRequest());\n }\n\n this.#addChunk(chunk);\n chatId = chunk.id;\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addChatCompletion(this.#endRequest());\n }\n\n #accumulateChatCompletion(chunk: ChatCompletionChunk): ChatCompletionSnapshot {\n let snapshot = this.#currentChatCompletionSnapshot;\n const { choices, ...rest } = chunk;\n if (!snapshot) {\n snapshot = this.#currentChatCompletionSnapshot = {\n ...rest,\n choices: [],\n };\n } else {\n Object.assign(snapshot, rest);\n }\n\n for (const { delta, finish_reason, index, logprobs = null, ...other } of chunk.choices) {\n let choice = snapshot.choices[index];\n if (!choice) {\n choice = snapshot.choices[index] = { finish_reason, index, message: {}, logprobs, ...other };\n }\n\n if (logprobs) {\n if (!choice.logprobs) {\n choice.logprobs = Object.assign({}, logprobs);\n } else {\n const { content, ...rest } = logprobs;\n Object.assign(choice.logprobs, rest);\n if (content) {\n choice.logprobs.content ??= [];\n choice.logprobs.content.push(...content);\n }\n }\n }\n\n if (finish_reason) choice.finish_reason = finish_reason;\n Object.assign(choice, other);\n\n if (!delta) continue; // Shouldn't happen; just in case.\n const { content, function_call, role, tool_calls, ...rest } = delta;\n Object.assign(choice.message, rest);\n\n if (content) choice.message.content = (choice.message.content || '') + content;\n if (role) choice.message.role = role;\n if (function_call) {\n if (!choice.message.function_call) {\n choice.message.function_call = function_call;\n } else {\n if (function_call.name) choice.message.function_call.name = function_call.name;\n if (function_call.arguments) {\n choice.message.function_call.arguments ??= '';\n choice.message.function_call.arguments += function_call.arguments;\n }\n }\n }\n if (tool_calls) {\n if (!choice.message.tool_calls) choice.message.tool_calls = [];\n for (const { index, id, type, function: fn, ...rest } of tool_calls) {\n const tool_call = (choice.message.tool_calls[index] ??= {});\n Object.assign(tool_call, rest);\n if (id) tool_call.id = id;\n if (type) tool_call.type = type;\n if (fn) tool_call.function ??= { arguments: '' };\n if (fn?.name) tool_call.function!.name = fn.name;\n if (fn?.arguments) tool_call.function!.arguments += fn.arguments;\n }\n }\n }\n return snapshot;\n }\n\n [Symbol.asyncIterator](): AsyncIterator<ChatCompletionChunk> {\n const pushQueue: ChatCompletionChunk[] = [];\n const readQueue: ((chunk: ChatCompletionChunk | undefined) => void)[] = [];\n let done = false;\n\n this.on('chunk', (chunk) => {\n const reader = readQueue.shift();\n if (reader) {\n reader(chunk);\n } else {\n pushQueue.push(chunk);\n }\n });\n\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader(undefined);\n }\n readQueue.length = 0;\n });\n\n return {\n next: async (): Promise<IteratorResult<ChatCompletionChunk>> => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise<ChatCompletionChunk | undefined>((resolve) => readQueue.push(resolve)).then(\n (chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }),\n );\n }\n const chunk = pushQueue.shift()!;\n return { value: chunk, done: false };\n },\n };\n }\n\n toReadableStream(): ReadableStream {\n const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n}\n\nfunction finalizeChatCompletion(snapshot: ChatCompletionSnapshot): ChatCompletion {\n const { id, choices, created, model, system_fingerprint, ...rest } = snapshot;\n return {\n ...rest,\n id,\n choices: choices.map(\n ({ message, finish_reason, index, logprobs, ...choiceRest }): ChatCompletion.Choice => {\n if (!finish_reason) throw new OpenAIError(`missing finish_reason for choice ${index}`);\n const { content = null, function_call, tool_calls, ...messageRest } = message;\n const role = message.role as 'assistant'; // this is what we expect; in theory it could be different which would make our types a slight lie but would be fine.\n if (!role) throw new OpenAIError(`missing role for choice ${index}`);\n if (function_call) {\n const { arguments: args, name } = function_call;\n if (args == null) throw new OpenAIError(`missing function_call.arguments for choice ${index}`);\n if (!name) throw new OpenAIError(`missing function_call.name for choice ${index}`);\n return {\n ...choiceRest,\n message: { content, function_call: { arguments: args, name }, role },\n finish_reason,\n index,\n logprobs,\n };\n }\n if (tool_calls) {\n return {\n ...choiceRest,\n index,\n finish_reason,\n logprobs,\n message: {\n ...messageRest,\n role,\n content,\n tool_calls: tool_calls.map((tool_call, i) => {\n const { function: fn, type, id, ...toolRest } = tool_call;\n const { arguments: args, name, ...fnRest } = fn || {};\n if (id == null)\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].id\\n${str(snapshot)}`);\n if (type == null)\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].type\\n${str(snapshot)}`);\n if (name == null)\n throw new OpenAIError(\n `missing choices[${index}].tool_calls[${i}].function.name\\n${str(snapshot)}`,\n );\n if (args == null)\n throw new OpenAIError(\n `missing choices[${index}].tool_calls[${i}].function.arguments\\n${str(snapshot)}`,\n );\n\n return { ...toolRest, id, type, function: { ...fnRest, name, arguments: args } };\n }),\n },\n };\n }\n return {\n ...choiceRest,\n message: { ...messageRest, content, role },\n finish_reason,\n index,\n logprobs,\n };\n },\n ),\n created,\n model,\n object: 'chat.completion',\n ...(system_fingerprint ? { system_fingerprint } : {}),\n };\n}\n\nfunction str(x: unknown) {\n return JSON.stringify(x);\n}\n\n/**\n * Represents a streamed chunk of a chat completion response returned by model,\n * based on the provided input.\n */\nexport interface ChatCompletionSnapshot {\n /**\n * A unique identifier for the chat completion.\n */\n id: string;\n\n /**\n * A list of chat completion choices. Can be more than one if `n` is greater\n * than 1.\n */\n choices: Array<ChatCompletionSnapshot.Choice>;\n\n /**\n * The Unix timestamp (in seconds) of when the chat completion was created.\n */\n created: number;\n\n /**\n * The model to generate the completion.\n */\n model: string;\n\n // Note we do not include an \"object\" type on the snapshot,\n // because the object is not a valid \"chat.completion\" until finalized.\n // object: 'chat.completion';\n\n /**\n * This fingerprint represents the backend configuration that the model runs with.\n *\n * Can be used in conjunction with the `seed` request parameter to understand when\n * backend changes have been made that might impact determinism.\n */\n system_fingerprint?: string;\n}\n\nexport namespace ChatCompletionSnapshot {\n export interface Choice {\n /**\n * A chat completion delta generated by streamed model responses.\n */\n message: Choice.Message;\n\n /**\n * The reason the model stopped generating tokens. This will be `stop` if the model\n * hit a natural stop point or a provided stop sequence, `length` if the maximum\n * number of tokens specified in the request was reached, `content_filter` if\n * content was omitted due to a flag from our content filters, or `function_call`\n * if the model called a function.\n */\n finish_reason: ChatCompletion.Choice['finish_reason'] | null;\n\n /**\n * Log probability information for the choice.\n */\n logprobs: ChatCompletion.Choice.Logprobs | null;\n\n /**\n * The index of the choice in the list of choices.\n */\n index: number;\n }\n\n export namespace Choice {\n /**\n * A chat completion delta generated by streamed model responses.\n */\n export interface Message {\n /**\n * The contents of the chunk message.\n */\n content?: string | null;\n\n /**\n * The name and arguments of a function that should be called, as generated by the\n * model.\n */\n function_call?: Message.FunctionCall;\n\n tool_calls?: Array<Message.ToolCall>;\n\n /**\n * The role of the author of this message.\n */\n role?: 'system' | 'user' | 'assistant' | 'function' | 'tool';\n }\n\n export namespace Message {\n export interface ToolCall {\n /**\n * The ID of the tool call.\n */\n id?: string;\n\n function?: ToolCall.Function;\n\n /**\n * The type of the tool.\n */\n type?: 'function';\n }\n\n export namespace ToolCall {\n export interface Function {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments?: string;\n\n /**\n * The name of the function to call.\n */\n name?: string;\n }\n }\n\n /**\n * The name and arguments of a function that should be called, as generated by the\n * model.\n */\n export interface FunctionCall {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments?: string;\n\n /**\n * The name of the function to call.\n */\n name?: string;\n }\n }\n }\n}\n","import {\n Completions,\n type ChatCompletionChunk,\n type ChatCompletionCreateParamsStreaming,\n} from \"../resources/chat/completions\";\nimport { RunnerOptions, type AbstractChatCompletionRunnerEvents } from './AbstractChatCompletionRunner';\nimport { type ReadableStream } from \"../_shims/index\";\nimport { RunnableTools, type BaseFunctionsArgs, type RunnableFunctions } from './RunnableFunction';\nimport { ChatCompletionSnapshot, ChatCompletionStream } from './ChatCompletionStream';\n\nexport interface ChatCompletionStreamEvents extends AbstractChatCompletionRunnerEvents {\n content: (contentDelta: string, contentSnapshot: string) => void;\n chunk: (chunk: ChatCompletionChunk, snapshot: ChatCompletionSnapshot) => void;\n}\n\nexport type ChatCompletionStreamingFunctionRunnerParams<FunctionsArgs extends BaseFunctionsArgs> = Omit<\n ChatCompletionCreateParamsStreaming,\n 'functions'\n> & {\n functions: RunnableFunctions<FunctionsArgs>;\n};\n\nexport type ChatCompletionStreamingToolRunnerParams<FunctionsArgs extends BaseFunctionsArgs> = Omit<\n ChatCompletionCreateParamsStreaming,\n 'tools'\n> & {\n tools: RunnableTools<FunctionsArgs>;\n};\n\nexport class ChatCompletionStreamingRunner\n extends ChatCompletionStream\n implements AsyncIterable<ChatCompletionChunk>\n{\n static override fromReadableStream(stream: ReadableStream): ChatCompletionStreamingRunner {\n const runner = new ChatCompletionStreamingRunner();\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n\n /** @deprecated - please use `runTools` instead. */\n static runFunctions<T extends (string | object)[]>(\n completions: Completions,\n params: ChatCompletionStreamingFunctionRunnerParams<T>,\n options?: RunnerOptions,\n ): ChatCompletionStreamingRunner {\n const runner = new ChatCompletionStreamingRunner();\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runFunctions' },\n };\n runner._run(() => runner._runFunctions(completions, params, opts));\n return runner;\n }\n\n static runTools<T extends (string | object)[]>(\n completions: Completions,\n params: ChatCompletionStreamingToolRunnerParams<T>,\n options?: RunnerOptions,\n ): ChatCompletionStreamingRunner {\n const runner = new ChatCompletionStreamingRunner();\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n };\n runner._run(() => runner._runTools(completions, params, opts));\n return runner;\n }\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../../core\";\nimport { APIResource } from \"../../../resource\";\nimport { ChatCompletionRunner, ChatCompletionFunctionRunnerParams } from \"../../../lib/ChatCompletionRunner\";\nexport { ChatCompletionRunner, ChatCompletionFunctionRunnerParams } from \"../../../lib/ChatCompletionRunner\";\nimport {\n ChatCompletionStreamingRunner,\n ChatCompletionStreamingFunctionRunnerParams,\n} from \"../../../lib/ChatCompletionStreamingRunner\";\nexport {\n ChatCompletionStreamingRunner,\n ChatCompletionStreamingFunctionRunnerParams,\n} from \"../../../lib/ChatCompletionStreamingRunner\";\nimport { BaseFunctionsArgs } from \"../../../lib/RunnableFunction\";\nexport {\n RunnableFunction,\n RunnableFunctions,\n RunnableFunctionWithParse,\n RunnableFunctionWithoutParse,\n ParsingFunction,\n ParsingToolFunction,\n} from \"../../../lib/RunnableFunction\";\nimport { ChatCompletionToolRunnerParams } from \"../../../lib/ChatCompletionRunner\";\nexport { ChatCompletionToolRunnerParams } from \"../../../lib/ChatCompletionRunner\";\nimport { ChatCompletionStreamingToolRunnerParams } from \"../../../lib/ChatCompletionStreamingRunner\";\nexport { ChatCompletionStreamingToolRunnerParams } from \"../../../lib/ChatCompletionStreamingRunner\";\nimport { ChatCompletionStream, type ChatCompletionStreamParams } from \"../../../lib/ChatCompletionStream\";\nexport { ChatCompletionStream, type ChatCompletionStreamParams } from \"../../../lib/ChatCompletionStream\";\n\nexport class Completions extends APIResource {\n /**\n * @deprecated - use `runTools` instead.\n */\n runFunctions<FunctionsArgs extends BaseFunctionsArgs>(\n body: ChatCompletionFunctionRunnerParams<FunctionsArgs>,\n options?: Core.RequestOptions,\n ): ChatCompletionRunner;\n runFunctions<FunctionsArgs extends BaseFunctionsArgs>(\n body: ChatCompletionStreamingFunctionRunnerParams<FunctionsArgs>,\n options?: Core.RequestOptions,\n ): ChatCompletionStreamingRunner;\n runFunctions<FunctionsArgs extends BaseFunctionsArgs>(\n body:\n | ChatCompletionFunctionRunnerParams<FunctionsArgs>\n | ChatCompletionStreamingFunctionRunnerParams<FunctionsArgs>,\n options?: Core.RequestOptions,\n ): ChatCompletionRunner | ChatCompletionStreamingRunner {\n if (body.stream) {\n return ChatCompletionStreamingRunner.runFunctions(\n this._client.chat.completions,\n body as ChatCompletionStreamingFunctionRunnerParams<FunctionsArgs>,\n options,\n );\n }\n return ChatCompletionRunner.runFunctions(\n this._client.chat.completions,\n body as ChatCompletionFunctionRunnerParams<FunctionsArgs>,\n options,\n );\n }\n\n /**\n * A convenience helper for using tool calls with the /chat/completions endpoint\n * which automatically calls the JavaScript functions you provide and sends their\n * results back to the /chat/completions endpoint, looping as long as the model\n * requests function calls.\n *\n * For more details and examples, see\n * [the docs](https://github.com/openai/openai-node#automated-function-calls)\n */\n runTools<FunctionsArgs extends BaseFunctionsArgs>(\n body: ChatCompletionToolRunnerParams<FunctionsArgs>,\n options?: Core.RequestOptions,\n ): ChatCompletionRunner;\n runTools<FunctionsArgs extends BaseFunctionsArgs>(\n body: ChatCompletionStreamingToolRunnerParams<FunctionsArgs>,\n options?: Core.RequestOptions,\n ): ChatCompletionStreamingRunner;\n runTools<FunctionsArgs extends BaseFunctionsArgs>(\n body:\n | ChatCompletionToolRunnerParams<FunctionsArgs>\n | ChatCompletionStreamingToolRunnerParams<FunctionsArgs>,\n options?: Core.RequestOptions,\n ): ChatCompletionRunner | ChatCompletionStreamingRunner {\n if (body.stream) {\n return ChatCompletionStreamingRunner.runTools(\n this._client.chat.completions,\n body as ChatCompletionStreamingToolRunnerParams<FunctionsArgs>,\n options,\n );\n }\n return ChatCompletionRunner.runTools(\n this._client.chat.completions,\n body as ChatCompletionToolRunnerParams<FunctionsArgs>,\n options,\n );\n }\n\n /**\n * Creates a chat completion stream\n */\n stream(body: ChatCompletionStreamParams, options?: Core.RequestOptions): ChatCompletionStream {\n return ChatCompletionStream.createChatCompletion(this._client.chat.completions, body, options);\n }\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport { APIResource } from \"../../../resource\";\nimport * as CompletionsAPI from \"./completions\";\n\nexport class Chat extends APIResource {\n completions: CompletionsAPI.Completions = new CompletionsAPI.Completions(this._client);\n}\n\nexport namespace Chat {\n export import Completions = CompletionsAPI.Completions;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../../../core\";\nimport { APIResource } from \"../../../../resource\";\nimport { isRequestOptions } from \"../../../../core\";\nimport * as FilesAPI from \"./files\";\nimport { CursorPage, type CursorPageParams } from \"../../../../pagination\";\n\nexport class Files extends APIResource {\n /**\n * Retrieves a message file.\n */\n retrieve(\n threadId: string,\n messageId: string,\n fileId: string,\n options?: Core.RequestOptions,\n ): Core.APIPromise<MessageFile> {\n return this._client.get(`/threads/${threadId}/messages/${messageId}/files/${fileId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Returns a list of message files.\n */\n list(\n threadId: string,\n messageId: string,\n query?: FileListParams,\n options?: Core.RequestOptions,\n ): Core.PagePromise<MessageFilesPage, MessageFile>;\n list(\n threadId: string,\n messageId: string,\n options?: Core.RequestOptions,\n ): Core.PagePromise<MessageFilesPage, MessageFile>;\n list(\n threadId: string,\n messageId: string,\n query: FileListParams | Core.RequestOptions = {},\n options?: Core.RequestOptions,\n ): Core.PagePromise<MessageFilesPage, MessageFile> {\n if (isRequestOptions(query)) {\n return this.list(threadId, messageId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/messages/${messageId}/files`, MessageFilesPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n}\n\nexport class MessageFilesPage extends CursorPage<MessageFile> {}\n\n/**\n * A list of files attached to a `message`.\n */\nexport interface MessageFile {\n /**\n * The identifier, which can be referenced in API endpoints.\n */\n id: string;\n\n /**\n * The Unix timestamp (in seconds) for when the message file was created.\n */\n created_at: number;\n\n /**\n * The ID of the [message](https://platform.openai.com/docs/api-reference/messages)\n * that the [File](https://platform.openai.com/docs/api-reference/files) is\n * attached to.\n */\n message_id: string;\n\n /**\n * The object type, which is always `thread.message.file`.\n */\n object: 'thread.message.file';\n}\n\nexport interface FileListParams extends CursorPageParams {\n /**\n * A cursor for use in pagination. `before` is an object ID that defines your place\n * in the list. For instance, if you make a list request and receive 100 objects,\n * ending with obj_foo, your subsequent call can include before=obj_foo in order to\n * fetch the previous page of the list.\n */\n before?: string;\n\n /**\n * Sort order by the `created_at` timestamp of the objects. `asc` for ascending\n * order and `desc` for descending order.\n */\n order?: 'asc' | 'desc';\n}\n\nexport namespace Files {\n export import MessageFile = FilesAPI.MessageFile;\n export import MessageFilesPage = FilesAPI.MessageFilesPage;\n export import FileListParams = FilesAPI.FileListParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../../../core\";\nimport { APIResource } from \"../../../../resource\";\nimport { isRequestOptions } from \"../../../../core\";\nimport * as MessagesAPI from \"./messages\";\nimport * as FilesAPI from \"./files\";\nimport { CursorPage, type CursorPageParams } from \"../../../../pagination\";\n\nexport class Messages extends APIResource {\n files: FilesAPI.Files = new FilesAPI.Files(this._client);\n\n /**\n * Create a message.\n */\n create(\n threadId: string,\n body: MessageCreateParams,\n options?: Core.RequestOptions,\n ): Core.APIPromise<ThreadMessage> {\n return this._client.post(`/threads/${threadId}/messages`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Retrieve a message.\n */\n retrieve(\n threadId: string,\n messageId: string,\n options?: Core.RequestOptions,\n ): Core.APIPromise<ThreadMessage> {\n return this._client.get(`/threads/${threadId}/messages/${messageId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Modifies a message.\n */\n update(\n threadId: string,\n messageId: string,\n body: MessageUpdateParams,\n options?: Core.RequestOptions,\n ): Core.APIPromise<ThreadMessage> {\n return this._client.post(`/threads/${threadId}/messages/${messageId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Returns a list of messages for a given thread.\n */\n list(\n threadId: string,\n query?: MessageListParams,\n options?: Core.RequestOptions,\n ): Core.PagePromise<ThreadMessagesPage, ThreadMessage>;\n list(threadId: string, options?: Core.RequestOptions): Core.PagePromise<ThreadMessagesPage, ThreadMessage>;\n list(\n threadId: string,\n query: MessageListParams | Core.RequestOptions = {},\n options?: Core.RequestOptions,\n ): Core.PagePromise<ThreadMessagesPage, ThreadMessage> {\n if (isRequestOptions(query)) {\n return this.list(threadId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/messages`, ThreadMessagesPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n}\n\nexport class ThreadMessagesPage extends CursorPage<ThreadMessage> {}\n\n/**\n * References an image [File](https://platform.openai.com/docs/api-reference/files)\n * in the content of a message.\n */\nexport interface MessageContentImageFile {\n image_file: MessageContentImageFile.ImageFile;\n\n /**\n * Always `image_file`.\n */\n type: 'image_file';\n}\n\nexport namespace MessageContentImageFile {\n export interface ImageFile {\n /**\n * The [File](https://platform.openai.com/docs/api-reference/files) ID of the image\n * in the message content.\n */\n file_id: string;\n }\n}\n\n/**\n * The text content that is part of a message.\n */\nexport interface MessageContentText {\n text: MessageContentText.Text;\n\n /**\n * Always `text`.\n */\n type: 'text';\n}\n\nexport namespace MessageContentText {\n export interface Text {\n annotations: Array<Text.FileCitation | Text.FilePath>;\n\n /**\n * The data that makes up the text.\n */\n value: string;\n }\n\n export namespace Text {\n /**\n * A citation within the message that points to a specific quote from a specific\n * File associated with the assistant or the message. Generated when the assistant\n * uses the \"retrieval\" tool to search files.\n */\n export interface FileCitation {\n end_index: number;\n\n file_citation: FileCitation.FileCitation;\n\n start_index: number;\n\n /**\n * The text in the message content that needs to be replaced.\n */\n text: string;\n\n /**\n * Always `file_citation`.\n */\n type: 'file_citation';\n }\n\n export namespace FileCitation {\n export interface FileCitation {\n /**\n * The ID of the specific File the citation is from.\n */\n file_id: string;\n\n /**\n * The specific quote in the file.\n */\n quote: string;\n }\n }\n\n /**\n * A URL for the file that's generated when the assistant used the\n * `code_interpreter` tool to generate a file.\n */\n export interface FilePath {\n end_index: number;\n\n file_path: FilePath.FilePath;\n\n start_index: number;\n\n /**\n * The text in the message content that needs to be replaced.\n */\n text: string;\n\n /**\n * Always `file_path`.\n */\n type: 'file_path';\n }\n\n export namespace FilePath {\n export interface FilePath {\n /**\n * The ID of the file that was generated.\n */\n file_id: string;\n }\n }\n }\n}\n\n/**\n * Represents a message within a\n * [thread](https://platform.openai.com/docs/api-reference/threads).\n */\nexport interface ThreadMessage {\n /**\n * The identifier, which can be referenced in API endpoints.\n */\n id: string;\n\n /**\n * If applicable, the ID of the\n * [assistant](https://platform.openai.com/docs/api-reference/assistants) that\n * authored this message.\n */\n assistant_id: string | null;\n\n /**\n * The content of the message in array of text and/or images.\n */\n content: Array<MessageContentImageFile | MessageContentText>;\n\n /**\n * The Unix timestamp (in seconds) for when the message was created.\n */\n created_at: number;\n\n /**\n * A list of [file](https://platform.openai.com/docs/api-reference/files) IDs that\n * the assistant should use. Useful for tools like retrieval and code_interpreter\n * that can access files. A maximum of 10 files can be attached to a message.\n */\n file_ids: Array<string>;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata: unknown | null;\n\n /**\n * The object type, which is always `thread.message`.\n */\n object: 'thread.message';\n\n /**\n * The entity that produced the message. One of `user` or `assistant`.\n */\n role: 'user' | 'assistant';\n\n /**\n * If applicable, the ID of the\n * [run](https://platform.openai.com/docs/api-reference/runs) associated with the\n * authoring of this message.\n */\n run_id: string | null;\n\n /**\n * The [thread](https://platform.openai.com/docs/api-reference/threads) ID that\n * this message belongs to.\n */\n thread_id: string;\n}\n\nexport interface ThreadMessageDeleted {\n id: string;\n\n deleted: boolean;\n\n object: 'thread.message.deleted';\n}\n\nexport interface MessageCreateParams {\n /**\n * The content of the message.\n */\n content: string;\n\n /**\n * The role of the entity that is creating the message. Currently only `user` is\n * supported.\n */\n role: 'user';\n\n /**\n * A list of [File](https://platform.openai.com/docs/api-reference/files) IDs that\n * the message should use. There can be a maximum of 10 files attached to a\n * message. Useful for tools like `retrieval` and `code_interpreter` that can\n * access and use files.\n */\n file_ids?: Array<string>;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata?: unknown | null;\n}\n\nexport interface MessageUpdateParams {\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata?: unknown | null;\n}\n\nexport interface MessageListParams extends CursorPageParams {\n /**\n * A cursor for use in pagination. `before` is an object ID that defines your place\n * in the list. For instance, if you make a list request and receive 100 objects,\n * ending with obj_foo, your subsequent call can include before=obj_foo in order to\n * fetch the previous page of the list.\n */\n before?: string;\n\n /**\n * Sort order by the `created_at` timestamp of the objects. `asc` for ascending\n * order and `desc` for descending order.\n */\n order?: 'asc' | 'desc';\n}\n\nexport namespace Messages {\n export import MessageContentImageFile = MessagesAPI.MessageContentImageFile;\n export import MessageContentText = MessagesAPI.MessageContentText;\n export import ThreadMessage = MessagesAPI.ThreadMessage;\n export import ThreadMessageDeleted = MessagesAPI.ThreadMessageDeleted;\n export import ThreadMessagesPage = MessagesAPI.ThreadMessagesPage;\n export import MessageCreateParams = MessagesAPI.MessageCreateParams;\n export import MessageUpdateParams = MessagesAPI.MessageUpdateParams;\n export import MessageListParams = MessagesAPI.MessageListParams;\n export import Files = FilesAPI.Files;\n export import MessageFile = FilesAPI.MessageFile;\n export import MessageFilesPage = FilesAPI.MessageFilesPage;\n export import FileListParams = FilesAPI.FileListParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../../../core\";\nimport { APIResource } from \"../../../../resource\";\nimport { isRequestOptions } from \"../../../../core\";\nimport * as StepsAPI from \"./steps\";\nimport { CursorPage, type CursorPageParams } from \"../../../../pagination\";\n\nexport class Steps extends APIResource {\n /**\n * Retrieves a run step.\n */\n retrieve(\n threadId: string,\n runId: string,\n stepId: string,\n options?: Core.RequestOptions,\n ): Core.APIPromise<RunStep> {\n return this._client.get(`/threads/${threadId}/runs/${runId}/steps/${stepId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Returns a list of run steps belonging to a run.\n */\n list(\n threadId: string,\n runId: string,\n query?: StepListParams,\n options?: Core.RequestOptions,\n ): Core.PagePromise<RunStepsPage, RunStep>;\n list(\n threadId: string,\n runId: string,\n options?: Core.RequestOptions,\n ): Core.PagePromise<RunStepsPage, RunStep>;\n list(\n threadId: string,\n runId: string,\n query: StepListParams | Core.RequestOptions = {},\n options?: Core.RequestOptions,\n ): Core.PagePromise<RunStepsPage, RunStep> {\n if (isRequestOptions(query)) {\n return this.list(threadId, runId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/runs/${runId}/steps`, RunStepsPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n}\n\nexport class RunStepsPage extends CursorPage<RunStep> {}\n\n/**\n * Details of the Code Interpreter tool call the run step was involved in.\n */\nexport interface CodeToolCall {\n /**\n * The ID of the tool call.\n */\n id: string;\n\n /**\n * The Code Interpreter tool call definition.\n */\n code_interpreter: CodeToolCall.CodeInterpreter;\n\n /**\n * The type of tool call. This is always going to be `code_interpreter` for this\n * type of tool call.\n */\n type: 'code_interpreter';\n}\n\nexport namespace CodeToolCall {\n /**\n * The Code Interpreter tool call definition.\n */\n export interface CodeInterpreter {\n /**\n * The input to the Code Interpreter tool call.\n */\n input: string;\n\n /**\n * The outputs from the Code Interpreter tool call. Code Interpreter can output one\n * or more items, including text (`logs`) or images (`image`). Each of these are\n * represented by a different object type.\n */\n outputs: Array<CodeInterpreter.Logs | CodeInterpreter.Image>;\n }\n\n export namespace CodeInterpreter {\n /**\n * Text output from the Code Interpreter tool call as part of a run step.\n */\n export interface Logs {\n /**\n * The text output from the Code Interpreter tool call.\n */\n logs: string;\n\n /**\n * Always `logs`.\n */\n type: 'logs';\n }\n\n export interface Image {\n image: Image.Image;\n\n /**\n * Always `image`.\n */\n type: 'image';\n }\n\n export namespace Image {\n export interface Image {\n /**\n * The [file](https://platform.openai.com/docs/api-reference/files) ID of the\n * image.\n */\n file_id: string;\n }\n }\n }\n}\n\nexport interface FunctionToolCall {\n /**\n * The ID of the tool call object.\n */\n id: string;\n\n /**\n * The definition of the function that was called.\n */\n function: FunctionToolCall.Function;\n\n /**\n * The type of tool call. This is always going to be `function` for this type of\n * tool call.\n */\n type: 'function';\n}\n\nexport namespace FunctionToolCall {\n /**\n * The definition of the function that was called.\n */\n export interface Function {\n /**\n * The arguments passed to the function.\n */\n arguments: string;\n\n /**\n * The name of the function.\n */\n name: string;\n\n /**\n * The output of the function. This will be `null` if the outputs have not been\n * [submitted](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs)\n * yet.\n */\n output: string | null;\n }\n}\n\n/**\n * Details of the message creation by the run step.\n */\nexport interface MessageCreationStepDetails {\n message_creation: MessageCreationStepDetails.MessageCreation;\n\n /**\n * Always `message_creation`.\n */\n type: 'message_creation';\n}\n\nexport namespace MessageCreationStepDetails {\n export interface MessageCreation {\n /**\n * The ID of the message that was created by this run step.\n */\n message_id: string;\n }\n}\n\nexport interface RetrievalToolCall {\n /**\n * The ID of the tool call object.\n */\n id: string;\n\n /**\n * For now, this is always going to be an empty object.\n */\n retrieval: unknown;\n\n /**\n * The type of tool call. This is always going to be `retrieval` for this type of\n * tool call.\n */\n type: 'retrieval';\n}\n\n/**\n * Represents a step in execution of a run.\n */\nexport interface RunStep {\n /**\n * The identifier of the run step, which can be referenced in API endpoints.\n */\n id: string;\n\n /**\n * The ID of the\n * [assistant](https://platform.openai.com/docs/api-reference/assistants)\n * associated with the run step.\n */\n assistant_id: string;\n\n /**\n * The Unix timestamp (in seconds) for when the run step was cancelled.\n */\n cancelled_at: number | null;\n\n /**\n * The Unix timestamp (in seconds) for when the run step completed.\n */\n completed_at: number | null;\n\n /**\n * The Unix timestamp (in seconds) for when the run step was created.\n */\n created_at: number;\n\n /**\n * The Unix timestamp (in seconds) for when the run step expired. A step is\n * considered expired if the parent run is expired.\n */\n expired_at: number | null;\n\n /**\n * The Unix timestamp (in seconds) for when the run step failed.\n */\n failed_at: number | null;\n\n /**\n * The last error associated with this run step. Will be `null` if there are no\n * errors.\n */\n last_error: RunStep.LastError | null;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata: unknown | null;\n\n /**\n * The object type, which is always `thread.run.step`.\n */\n object: 'thread.run.step';\n\n /**\n * The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that\n * this run step is a part of.\n */\n run_id: string;\n\n /**\n * The status of the run step, which can be either `in_progress`, `cancelled`,\n * `failed`, `completed`, or `expired`.\n */\n status: 'in_progress' | 'cancelled' | 'failed' | 'completed' | 'expired';\n\n /**\n * The details of the run step.\n */\n step_details: MessageCreationStepDetails | ToolCallsStepDetails;\n\n /**\n * The ID of the [thread](https://platform.openai.com/docs/api-reference/threads)\n * that was run.\n */\n thread_id: string;\n\n /**\n * The type of run step, which can be either `message_creation` or `tool_calls`.\n */\n type: 'message_creation' | 'tool_calls';\n\n /**\n * Usage statistics related to the run step. This value will be `null` while the\n * run step's status is `in_progress`.\n */\n usage: RunStep.Usage | null;\n}\n\nexport namespace RunStep {\n /**\n * The last error associated with this run step. Will be `null` if there are no\n * errors.\n */\n export interface LastError {\n /**\n * One of `server_error` or `rate_limit_exceeded`.\n */\n code: 'server_error' | 'rate_limit_exceeded';\n\n /**\n * A human-readable description of the error.\n */\n message: string;\n }\n\n /**\n * Usage statistics related to the run step. This value will be `null` while the\n * run step's status is `in_progress`.\n */\n export interface Usage {\n /**\n * Number of completion tokens used over the course of the run step.\n */\n completion_tokens: number;\n\n /**\n * Number of prompt tokens used over the course of the run step.\n */\n prompt_tokens: number;\n\n /**\n * Total number of tokens used (prompt + completion).\n */\n total_tokens: number;\n }\n}\n\n/**\n * Details of the tool call.\n */\nexport interface ToolCallsStepDetails {\n /**\n * An array of tool calls the run step was involved in. These can be associated\n * with one of three types of tools: `code_interpreter`, `retrieval`, or\n * `function`.\n */\n tool_calls: Array<CodeToolCall | RetrievalToolCall | FunctionToolCall>;\n\n /**\n * Always `tool_calls`.\n */\n type: 'tool_calls';\n}\n\nexport interface StepListParams extends CursorPageParams {\n /**\n * A cursor for use in pagination. `before` is an object ID that defines your place\n * in the list. For instance, if you make a list request and receive 100 objects,\n * ending with obj_foo, your subsequent call can include before=obj_foo in order to\n * fetch the previous page of the list.\n */\n before?: string;\n\n /**\n * Sort order by the `created_at` timestamp of the objects. `asc` for ascending\n * order and `desc` for descending order.\n */\n order?: 'asc' | 'desc';\n}\n\nexport namespace Steps {\n export import CodeToolCall = StepsAPI.CodeToolCall;\n export import FunctionToolCall = StepsAPI.FunctionToolCall;\n export import MessageCreationStepDetails = StepsAPI.MessageCreationStepDetails;\n export import RetrievalToolCall = StepsAPI.RetrievalToolCall;\n export import RunStep = StepsAPI.RunStep;\n export import ToolCallsStepDetails = StepsAPI.ToolCallsStepDetails;\n export import RunStepsPage = StepsAPI.RunStepsPage;\n export import StepListParams = StepsAPI.StepListParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../../../core\";\nimport { APIResource } from \"../../../../resource\";\nimport { isRequestOptions } from \"../../../../core\";\nimport * as RunsAPI from \"./runs\";\nimport * as Shared from \"../../../shared\";\nimport * as StepsAPI from \"./steps\";\nimport { CursorPage, type CursorPageParams } from \"../../../../pagination\";\n\nexport class Runs extends APIResource {\n steps: StepsAPI.Steps = new StepsAPI.Steps(this._client);\n\n /**\n * Create a run.\n */\n create(threadId: string, body: RunCreateParams, options?: Core.RequestOptions): Core.APIPromise<Run> {\n return this._client.post(`/threads/${threadId}/runs`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Retrieves a run.\n */\n retrieve(threadId: string, runId: string, options?: Core.RequestOptions): Core.APIPromise<Run> {\n return this._client.get(`/threads/${threadId}/runs/${runId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Modifies a run.\n */\n update(\n threadId: string,\n runId: string,\n body: RunUpdateParams,\n options?: Core.RequestOptions,\n ): Core.APIPromise<Run> {\n return this._client.post(`/threads/${threadId}/runs/${runId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Returns a list of runs belonging to a thread.\n */\n list(\n threadId: string,\n query?: RunListParams,\n options?: Core.RequestOptions,\n ): Core.PagePromise<RunsPage, Run>;\n list(threadId: string, options?: Core.RequestOptions): Core.PagePromise<RunsPage, Run>;\n list(\n threadId: string,\n query: RunListParams | Core.RequestOptions = {},\n options?: Core.RequestOptions,\n ): Core.PagePromise<RunsPage, Run> {\n if (isRequestOptions(query)) {\n return this.list(threadId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/runs`, RunsPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Cancels a run that is `in_progress`.\n */\n cancel(threadId: string, runId: string, options?: Core.RequestOptions): Core.APIPromise<Run> {\n return this._client.post(`/threads/${threadId}/runs/${runId}/cancel`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * When a run has the `status: \"requires_action\"` and `required_action.type` is\n * `submit_tool_outputs`, this endpoint can be used to submit the outputs from the\n * tool calls once they're all completed. All outputs must be submitted in a single\n * request.\n */\n submitToolOutputs(\n threadId: string,\n runId: string,\n body: RunSubmitToolOutputsParams,\n options?: Core.RequestOptions,\n ): Core.APIPromise<Run> {\n return this._client.post(`/threads/${threadId}/runs/${runId}/submit_tool_outputs`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n}\n\nexport class RunsPage extends CursorPage<Run> {}\n\n/**\n * Tool call objects\n */\nexport interface RequiredActionFunctionToolCall {\n /**\n * The ID of the tool call. This ID must be referenced when you submit the tool\n * outputs in using the\n * [Submit tool outputs to run](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs)\n * endpoint.\n */\n id: string;\n\n /**\n * The function definition.\n */\n function: RequiredActionFunctionToolCall.Function;\n\n /**\n * The type of tool call the output is required for. For now, this is always\n * `function`.\n */\n type: 'function';\n}\n\nexport namespace RequiredActionFunctionToolCall {\n /**\n * The function definition.\n */\n export interface Function {\n /**\n * The arguments that the model expects you to pass to the function.\n */\n arguments: string;\n\n /**\n * The name of the function.\n */\n name: string;\n }\n}\n\n/**\n * Represents an execution run on a\n * [thread](https://platform.openai.com/docs/api-reference/threads).\n */\nexport interface Run {\n /**\n * The identifier, which can be referenced in API endpoints.\n */\n id: string;\n\n /**\n * The ID of the\n * [assistant](https://platform.openai.com/docs/api-reference/assistants) used for\n * execution of this run.\n */\n assistant_id: string;\n\n /**\n * The Unix timestamp (in seconds) for when the run was cancelled.\n */\n cancelled_at: number | null;\n\n /**\n * The Unix timestamp (in seconds) for when the run was completed.\n */\n completed_at: number | null;\n\n /**\n * The Unix timestamp (in seconds) for when the run was created.\n */\n created_at: number;\n\n /**\n * The Unix timestamp (in seconds) for when the run will expire.\n */\n expires_at: number;\n\n /**\n * The Unix timestamp (in seconds) for when the run failed.\n */\n failed_at: number | null;\n\n /**\n * The list of [File](https://platform.openai.com/docs/api-reference/files) IDs the\n * [assistant](https://platform.openai.com/docs/api-reference/assistants) used for\n * this run.\n */\n file_ids: Array<string>;\n\n /**\n * The instructions that the\n * [assistant](https://platform.openai.com/docs/api-reference/assistants) used for\n * this run.\n */\n instructions: string;\n\n /**\n * The last error associated with this run. Will be `null` if there are no errors.\n */\n last_error: Run.LastError | null;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata: unknown | null;\n\n /**\n * The model that the\n * [assistant](https://platform.openai.com/docs/api-reference/assistants) used for\n * this run.\n */\n model: string;\n\n /**\n * The object type, which is always `thread.run`.\n */\n object: 'thread.run';\n\n /**\n * Details on the action required to continue the run. Will be `null` if no action\n * is required.\n */\n required_action: Run.RequiredAction | null;\n\n /**\n * The Unix timestamp (in seconds) for when the run was started.\n */\n started_at: number | null;\n\n /**\n * The status of the run, which can be either `queued`, `in_progress`,\n * `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, or\n * `expired`.\n */\n status: RunStatus;\n\n /**\n * The ID of the [thread](https://platform.openai.com/docs/api-reference/threads)\n * that was executed on as a part of this run.\n */\n thread_id: string;\n\n /**\n * The list of tools that the\n * [assistant](https://platform.openai.com/docs/api-reference/assistants) used for\n * this run.\n */\n tools: Array<Run.AssistantToolsCode | Run.AssistantToolsRetrieval | Run.AssistantToolsFunction>;\n\n /**\n * Usage statistics related to the run. This value will be `null` if the run is not\n * in a terminal state (i.e. `in_progress`, `queued`, etc.).\n */\n usage: Run.Usage | null;\n}\n\nexport namespace Run {\n /**\n * The last error associated with this run. Will be `null` if there are no errors.\n */\n export interface LastError {\n /**\n * One of `server_error` or `rate_limit_exceeded`.\n */\n code: 'server_error' | 'rate_limit_exceeded';\n\n /**\n * A human-readable description of the error.\n */\n message: string;\n }\n\n /**\n * Details on the action required to continue the run. Will be `null` if no action\n * is required.\n */\n export interface RequiredAction {\n /**\n * Details on the tool outputs needed for this run to continue.\n */\n submit_tool_outputs: RequiredAction.SubmitToolOutputs;\n\n /**\n * For now, this is always `submit_tool_outputs`.\n */\n type: 'submit_tool_outputs';\n }\n\n export namespace RequiredAction {\n /**\n * Details on the tool outputs needed for this run to continue.\n */\n export interface SubmitToolOutputs {\n /**\n * A list of the relevant tool calls.\n */\n tool_calls: Array<RunsAPI.RequiredActionFunctionToolCall>;\n }\n }\n\n export interface AssistantToolsCode {\n /**\n * The type of tool being defined: `code_interpreter`\n */\n type: 'code_interpreter';\n }\n\n export interface AssistantToolsRetrieval {\n /**\n * The type of tool being defined: `retrieval`\n */\n type: 'retrieval';\n }\n\n export interface AssistantToolsFunction {\n function: Shared.FunctionDefinition;\n\n /**\n * The type of tool being defined: `function`\n */\n type: 'function';\n }\n\n /**\n * Usage statistics related to the run. This value will be `null` if the run is not\n * in a terminal state (i.e. `in_progress`, `queued`, etc.).\n */\n export interface Usage {\n /**\n * Number of completion tokens used over the course of the run.\n */\n completion_tokens: number;\n\n /**\n * Number of prompt tokens used over the course of the run.\n */\n prompt_tokens: number;\n\n /**\n * Total number of tokens used (prompt + completion).\n */\n total_tokens: number;\n }\n}\n\n/**\n * The status of the run, which can be either `queued`, `in_progress`,\n * `requires_action`, `cancelling`, `cancelled`, `failed`, `completed`, or\n * `expired`.\n */\nexport type RunStatus =\n | 'queued'\n | 'in_progress'\n | 'requires_action'\n | 'cancelling'\n | 'cancelled'\n | 'failed'\n | 'completed'\n | 'expired';\n\nexport interface RunCreateParams {\n /**\n * The ID of the\n * [assistant](https://platform.openai.com/docs/api-reference/assistants) to use to\n * execute this run.\n */\n assistant_id: string;\n\n /**\n * Appends additional instructions at the end of the instructions for the run. This\n * is useful for modifying the behavior on a per-run basis without overriding other\n * instructions.\n */\n additional_instructions?: string | null;\n\n /**\n * Overrides the\n * [instructions](https://platform.openai.com/docs/api-reference/assistants/createAssistant)\n * of the assistant. This is useful for modifying the behavior on a per-run basis.\n */\n instructions?: string | null;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata?: unknown | null;\n\n /**\n * The ID of the [Model](https://platform.openai.com/docs/api-reference/models) to\n * be used to execute this run. If a value is provided here, it will override the\n * model associated with the assistant. If not, the model associated with the\n * assistant will be used.\n */\n model?: string | null;\n\n /**\n * Override the tools the assistant can use for this run. This is useful for\n * modifying the behavior on a per-run basis.\n */\n tools?: Array<\n | RunCreateParams.AssistantToolsCode\n | RunCreateParams.AssistantToolsRetrieval\n | RunCreateParams.AssistantToolsFunction\n > | null;\n}\n\nexport namespace RunCreateParams {\n export interface AssistantToolsCode {\n /**\n * The type of tool being defined: `code_interpreter`\n */\n type: 'code_interpreter';\n }\n\n export interface AssistantToolsRetrieval {\n /**\n * The type of tool being defined: `retrieval`\n */\n type: 'retrieval';\n }\n\n export interface AssistantToolsFunction {\n function: Shared.FunctionDefinition;\n\n /**\n * The type of tool being defined: `function`\n */\n type: 'function';\n }\n}\n\nexport interface RunUpdateParams {\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata?: unknown | null;\n}\n\nexport interface RunListParams extends CursorPageParams {\n /**\n * A cursor for use in pagination. `before` is an object ID that defines your place\n * in the list. For instance, if you make a list request and receive 100 objects,\n * ending with obj_foo, your subsequent call can include before=obj_foo in order to\n * fetch the previous page of the list.\n */\n before?: string;\n\n /**\n * Sort order by the `created_at` timestamp of the objects. `asc` for ascending\n * order and `desc` for descending order.\n */\n order?: 'asc' | 'desc';\n}\n\nexport interface RunSubmitToolOutputsParams {\n /**\n * A list of tools for which the outputs are being submitted.\n */\n tool_outputs: Array<RunSubmitToolOutputsParams.ToolOutput>;\n}\n\nexport namespace RunSubmitToolOutputsParams {\n export interface ToolOutput {\n /**\n * The output of the tool call to be submitted to continue the run.\n */\n output?: string;\n\n /**\n * The ID of the tool call in the `required_action` object within the run object\n * the output is being submitted for.\n */\n tool_call_id?: string;\n }\n}\n\nexport namespace Runs {\n export import RequiredActionFunctionToolCall = RunsAPI.RequiredActionFunctionToolCall;\n export import Run = RunsAPI.Run;\n export import RunStatus = RunsAPI.RunStatus;\n export import RunsPage = RunsAPI.RunsPage;\n export import RunCreateParams = RunsAPI.RunCreateParams;\n export import RunUpdateParams = RunsAPI.RunUpdateParams;\n export import RunListParams = RunsAPI.RunListParams;\n export import RunSubmitToolOutputsParams = RunsAPI.RunSubmitToolOutputsParams;\n export import Steps = StepsAPI.Steps;\n export import CodeToolCall = StepsAPI.CodeToolCall;\n export import FunctionToolCall = StepsAPI.FunctionToolCall;\n export import MessageCreationStepDetails = StepsAPI.MessageCreationStepDetails;\n export import RetrievalToolCall = StepsAPI.RetrievalToolCall;\n export import RunStep = StepsAPI.RunStep;\n export import ToolCallsStepDetails = StepsAPI.ToolCallsStepDetails;\n export import RunStepsPage = StepsAPI.RunStepsPage;\n export import StepListParams = StepsAPI.StepListParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../../core\";\nimport { APIResource } from \"../../../resource\";\nimport { isRequestOptions } from \"../../../core\";\nimport * as ThreadsAPI from \"./threads\";\nimport * as Shared from \"../../shared\";\nimport * as MessagesAPI from \"./messages/messages\";\nimport * as RunsAPI from \"./runs/runs\";\n\nexport class Threads extends APIResource {\n runs: RunsAPI.Runs = new RunsAPI.Runs(this._client);\n messages: MessagesAPI.Messages = new MessagesAPI.Messages(this._client);\n\n /**\n * Create a thread.\n */\n create(body?: ThreadCreateParams, options?: Core.RequestOptions): Core.APIPromise<Thread>;\n create(options?: Core.RequestOptions): Core.APIPromise<Thread>;\n create(\n body: ThreadCreateParams | Core.RequestOptions = {},\n options?: Core.RequestOptions,\n ): Core.APIPromise<Thread> {\n if (isRequestOptions(body)) {\n return this.create({}, body);\n }\n return this._client.post('/threads', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Retrieves a thread.\n */\n retrieve(threadId: string, options?: Core.RequestOptions): Core.APIPromise<Thread> {\n return this._client.get(`/threads/${threadId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Modifies a thread.\n */\n update(threadId: string, body: ThreadUpdateParams, options?: Core.RequestOptions): Core.APIPromise<Thread> {\n return this._client.post(`/threads/${threadId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Delete a thread.\n */\n del(threadId: string, options?: Core.RequestOptions): Core.APIPromise<ThreadDeleted> {\n return this._client.delete(`/threads/${threadId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n\n /**\n * Create a thread and run it in one request.\n */\n createAndRun(body: ThreadCreateAndRunParams, options?: Core.RequestOptions): Core.APIPromise<RunsAPI.Run> {\n return this._client.post('/threads/runs', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n });\n }\n}\n\n/**\n * Represents a thread that contains\n * [messages](https://platform.openai.com/docs/api-reference/messages).\n */\nexport interface Thread {\n /**\n * The identifier, which can be referenced in API endpoints.\n */\n id: string;\n\n /**\n * The Unix timestamp (in seconds) for when the thread was created.\n */\n created_at: number;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata: unknown | null;\n\n /**\n * The object type, which is always `thread`.\n */\n object: 'thread';\n}\n\nexport interface ThreadDeleted {\n id: string;\n\n deleted: boolean;\n\n object: 'thread.deleted';\n}\n\nexport interface ThreadCreateParams {\n /**\n * A list of [messages](https://platform.openai.com/docs/api-reference/messages) to\n * start the thread with.\n */\n messages?: Array<ThreadCreateParams.Message>;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata?: unknown | null;\n}\n\nexport namespace ThreadCreateParams {\n export interface Message {\n /**\n * The content of the message.\n */\n content: string;\n\n /**\n * The role of the entity that is creating the message. Currently only `user` is\n * supported.\n */\n role: 'user';\n\n /**\n * A list of [File](https://platform.openai.com/docs/api-reference/files) IDs that\n * the message should use. There can be a maximum of 10 files attached to a\n * message. Useful for tools like `retrieval` and `code_interpreter` that can\n * access and use files.\n */\n file_ids?: Array<string>;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata?: unknown | null;\n }\n}\n\nexport interface ThreadUpdateParams {\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata?: unknown | null;\n}\n\nexport interface ThreadCreateAndRunParams {\n /**\n * The ID of the\n * [assistant](https://platform.openai.com/docs/api-reference/assistants) to use to\n * execute this run.\n */\n assistant_id: string;\n\n /**\n * Override the default system message of the assistant. This is useful for\n * modifying the behavior on a per-run basis.\n */\n instructions?: string | null;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata?: unknown | null;\n\n /**\n * The ID of the [Model](https://platform.openai.com/docs/api-reference/models) to\n * be used to execute this run. If a value is provided here, it will override the\n * model associated with the assistant. If not, the model associated with the\n * assistant will be used.\n */\n model?: string | null;\n\n /**\n * If no thread is provided, an empty thread will be created.\n */\n thread?: ThreadCreateAndRunParams.Thread;\n\n /**\n * Override the tools the assistant can use for this run. This is useful for\n * modifying the behavior on a per-run basis.\n */\n tools?: Array<\n | ThreadCreateAndRunParams.AssistantToolsCode\n | ThreadCreateAndRunParams.AssistantToolsRetrieval\n | ThreadCreateAndRunParams.AssistantToolsFunction\n > | null;\n}\n\nexport namespace ThreadCreateAndRunParams {\n /**\n * If no thread is provided, an empty thread will be created.\n */\n export interface Thread {\n /**\n * A list of [messages](https://platform.openai.com/docs/api-reference/messages) to\n * start the thread with.\n */\n messages?: Array<Thread.Message>;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata?: unknown | null;\n }\n\n export namespace Thread {\n export interface Message {\n /**\n * The content of the message.\n */\n content: string;\n\n /**\n * The role of the entity that is creating the message. Currently only `user` is\n * supported.\n */\n role: 'user';\n\n /**\n * A list of [File](https://platform.openai.com/docs/api-reference/files) IDs that\n * the message should use. There can be a maximum of 10 files attached to a\n * message. Useful for tools like `retrieval` and `code_interpreter` that can\n * access and use files.\n */\n file_ids?: Array<string>;\n\n /**\n * Set of 16 key-value pairs that can be attached to an object. This can be useful\n * for storing additional information about the object in a structured format. Keys\n * can be a maximum of 64 characters long and values can be a maxium of 512\n * characters long.\n */\n metadata?: unknown | null;\n }\n }\n\n export interface AssistantToolsCode {\n /**\n * The type of tool being defined: `code_interpreter`\n */\n type: 'code_interpreter';\n }\n\n export interface AssistantToolsRetrieval {\n /**\n * The type of tool being defined: `retrieval`\n */\n type: 'retrieval';\n }\n\n export interface AssistantToolsFunction {\n function: Shared.FunctionDefinition;\n\n /**\n * The type of tool being defined: `function`\n */\n type: 'function';\n }\n}\n\nexport namespace Threads {\n export import Thread = ThreadsAPI.Thread;\n export import ThreadDeleted = ThreadsAPI.ThreadDeleted;\n export import ThreadCreateParams = ThreadsAPI.ThreadCreateParams;\n export import ThreadUpdateParams = ThreadsAPI.ThreadUpdateParams;\n export import ThreadCreateAndRunParams = ThreadsAPI.ThreadCreateAndRunParams;\n export import Runs = RunsAPI.Runs;\n export import RequiredActionFunctionToolCall = RunsAPI.RequiredActionFunctionToolCall;\n export import Run = RunsAPI.Run;\n export import RunStatus = RunsAPI.RunStatus;\n export import RunsPage = RunsAPI.RunsPage;\n export import RunCreateParams = RunsAPI.RunCreateParams;\n export import RunUpdateParams = RunsAPI.RunUpdateParams;\n export import RunListParams = RunsAPI.RunListParams;\n export import RunSubmitToolOutputsParams = RunsAPI.RunSubmitToolOutputsParams;\n export import Messages = MessagesAPI.Messages;\n export import MessageContentImageFile = MessagesAPI.MessageContentImageFile;\n export import MessageContentText = MessagesAPI.MessageContentText;\n export import ThreadMessage = MessagesAPI.ThreadMessage;\n export import ThreadMessageDeleted = MessagesAPI.ThreadMessageDeleted;\n export import ThreadMessagesPage = MessagesAPI.ThreadMessagesPage;\n export import MessageCreateParams = MessagesAPI.MessageCreateParams;\n export import MessageUpdateParams = MessagesAPI.MessageUpdateParams;\n export import MessageListParams = MessagesAPI.MessageListParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport { APIResource } from \"../../resource\";\nimport * as AssistantsAPI from \"./assistants/assistants\";\nimport * as ChatAPI from \"./chat/chat\";\nimport * as ThreadsAPI from \"./threads/threads\";\n\nexport class Beta extends APIResource {\n chat: ChatAPI.Chat = new ChatAPI.Chat(this._client);\n assistants: AssistantsAPI.Assistants = new AssistantsAPI.Assistants(this._client);\n threads: ThreadsAPI.Threads = new ThreadsAPI.Threads(this._client);\n}\n\nexport namespace Beta {\n export import Chat = ChatAPI.Chat;\n export import Assistants = AssistantsAPI.Assistants;\n export import Assistant = AssistantsAPI.Assistant;\n export import AssistantDeleted = AssistantsAPI.AssistantDeleted;\n export import AssistantsPage = AssistantsAPI.AssistantsPage;\n export import AssistantCreateParams = AssistantsAPI.AssistantCreateParams;\n export import AssistantUpdateParams = AssistantsAPI.AssistantUpdateParams;\n export import AssistantListParams = AssistantsAPI.AssistantListParams;\n export import Threads = ThreadsAPI.Threads;\n export import Thread = ThreadsAPI.Thread;\n export import ThreadDeleted = ThreadsAPI.ThreadDeleted;\n export import ThreadCreateParams = ThreadsAPI.ThreadCreateParams;\n export import ThreadUpdateParams = ThreadsAPI.ThreadUpdateParams;\n export import ThreadCreateAndRunParams = ThreadsAPI.ThreadCreateAndRunParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../core\";\nimport { APIPromise } from \"../core\";\nimport { APIResource } from \"../resource\";\nimport * as CompletionsAPI from \"./completions\";\nimport { Stream } from \"../streaming\";\n\nexport class Completions extends APIResource {\n /**\n * Creates a completion for the provided prompt and parameters.\n */\n create(body: CompletionCreateParamsNonStreaming, options?: Core.RequestOptions): APIPromise<Completion>;\n create(\n body: CompletionCreateParamsStreaming,\n options?: Core.RequestOptions,\n ): APIPromise<Stream<Completion>>;\n create(\n body: CompletionCreateParamsBase,\n options?: Core.RequestOptions,\n ): APIPromise<Stream<Completion> | Completion>;\n create(\n body: CompletionCreateParams,\n options?: Core.RequestOptions,\n ): APIPromise<Completion> | APIPromise<Stream<Completion>> {\n return this._client.post('/completions', { body, ...options, stream: body.stream ?? false }) as\n | APIPromise<Completion>\n | APIPromise<Stream<Completion>>;\n }\n}\n\n/**\n * Represents a completion response from the API. Note: both the streamed and\n * non-streamed response objects share the same shape (unlike the chat endpoint).\n */\nexport interface Completion {\n /**\n * A unique identifier for the completion.\n */\n id: string;\n\n /**\n * The list of completion choices the model generated for the input prompt.\n */\n choices: Array<CompletionChoice>;\n\n /**\n * The Unix timestamp (in seconds) of when the completion was created.\n */\n created: number;\n\n /**\n * The model used for completion.\n */\n model: string;\n\n /**\n * The object type, which is always \"text_completion\"\n */\n object: 'text_completion';\n\n /**\n * This fingerprint represents the backend configuration that the model runs with.\n *\n * Can be used in conjunction with the `seed` request parameter to understand when\n * backend changes have been made that might impact determinism.\n */\n system_fingerprint?: string;\n\n /**\n * Usage statistics for the completion request.\n */\n usage?: CompletionUsage;\n}\n\nexport interface CompletionChoice {\n /**\n * The reason the model stopped generating tokens. This will be `stop` if the model\n * hit a natural stop point or a provided stop sequence, `length` if the maximum\n * number of tokens specified in the request was reached, or `content_filter` if\n * content was omitted due to a flag from our content filters.\n */\n finish_reason: 'stop' | 'length' | 'content_filter';\n\n index: number;\n\n logprobs: CompletionChoice.Logprobs | null;\n\n text: string;\n}\n\nexport namespace CompletionChoice {\n export interface Logprobs {\n text_offset?: Array<number>;\n\n token_logprobs?: Array<number>;\n\n tokens?: Array<string>;\n\n top_logprobs?: Array<Record<string, number>>;\n }\n}\n\n/**\n * Usage statistics for the completion request.\n */\nexport interface CompletionUsage {\n /**\n * Number of tokens in the generated completion.\n */\n completion_tokens: number;\n\n /**\n * Number of tokens in the prompt.\n */\n prompt_tokens: number;\n\n /**\n * Total number of tokens used in the request (prompt + completion).\n */\n total_tokens: number;\n}\n\nexport type CompletionCreateParams = CompletionCreateParamsNonStreaming | CompletionCreateParamsStreaming;\n\nexport interface CompletionCreateParamsBase {\n /**\n * ID of the model to use. You can use the\n * [List models](https://platform.openai.com/docs/api-reference/models/list) API to\n * see all of your available models, or see our\n * [Model overview](https://platform.openai.com/docs/models/overview) for\n * descriptions of them.\n */\n model: (string & {}) | 'gpt-3.5-turbo-instruct' | 'davinci-002' | 'babbage-002';\n\n /**\n * The prompt(s) to generate completions for, encoded as a string, array of\n * strings, array of tokens, or array of token arrays.\n *\n * Note that <|endoftext|> is the document separator that the model sees during\n * training, so if a prompt is not specified the model will generate as if from the\n * beginning of a new document.\n */\n prompt: string | Array<string> | Array<number> | Array<Array<number>> | null;\n\n /**\n * Generates `best_of` completions server-side and returns the \"best\" (the one with\n * the highest log probability per token). Results cannot be streamed.\n *\n * When used with `n`, `best_of` controls the number of candidate completions and\n * `n` specifies how many to return – `best_of` must be greater than `n`.\n *\n * **Note:** Because this parameter generates many completions, it can quickly\n * consume your token quota. Use carefully and ensure that you have reasonable\n * settings for `max_tokens` and `stop`.\n */\n best_of?: number | null;\n\n /**\n * Echo back the prompt in addition to the completion\n */\n echo?: boolean | null;\n\n /**\n * Number between -2.0 and 2.0. Positive values penalize new tokens based on their\n * existing frequency in the text so far, decreasing the model's likelihood to\n * repeat the same line verbatim.\n *\n * [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/text-generation/parameter-details)\n */\n frequency_penalty?: number | null;\n\n /**\n * Modify the likelihood of specified tokens appearing in the completion.\n *\n * Accepts a JSON object that maps tokens (specified by their token ID in the GPT\n * tokenizer) to an associated bias value from -100 to 100. You can use this\n * [tokenizer tool](/tokenizer?view=bpe) to convert text to token IDs.\n * Mathematically, the bias is added to the logits generated by the model prior to\n * sampling. The exact effect will vary per model, but values between -1 and 1\n * should decrease or increase likelihood of selection; values like -100 or 100\n * should result in a ban or exclusive selection of the relevant token.\n *\n * As an example, you can pass `{\"50256\": -100}` to prevent the <|endoftext|> token\n * from being generated.\n */\n logit_bias?: Record<string, number> | null;\n\n /**\n * Include the log probabilities on the `logprobs` most likely output tokens, as\n * well the chosen tokens. For example, if `logprobs` is 5, the API will return a\n * list of the 5 most likely tokens. The API will always return the `logprob` of\n * the sampled token, so there may be up to `logprobs+1` elements in the response.\n *\n * The maximum value for `logprobs` is 5.\n */\n logprobs?: number | null;\n\n /**\n * The maximum number of [tokens](/tokenizer) that can be generated in the\n * completion.\n *\n * The token count of your prompt plus `max_tokens` cannot exceed the model's\n * context length.\n * [Example Python code](https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken)\n * for counting tokens.\n */\n max_tokens?: number | null;\n\n /**\n * How many completions to generate for each prompt.\n *\n * **Note:** Because this parameter generates many completions, it can quickly\n * consume your token quota. Use carefully and ensure that you have reasonable\n * settings for `max_tokens` and `stop`.\n */\n n?: number | null;\n\n /**\n * Number between -2.0 and 2.0. Positive values penalize new tokens based on\n * whether they appear in the text so far, increasing the model's likelihood to\n * talk about new topics.\n *\n * [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/text-generation/parameter-details)\n */\n presence_penalty?: number | null;\n\n /**\n * If specified, our system will make a best effort to sample deterministically,\n * such that repeated requests with the same `seed` and parameters should return\n * the same result.\n *\n * Determinism is not guaranteed, and you should refer to the `system_fingerprint`\n * response parameter to monitor changes in the backend.\n */\n seed?: number | null;\n\n /**\n * Up to 4 sequences where the API will stop generating further tokens. The\n * returned text will not contain the stop sequence.\n */\n stop?: string | null | Array<string>;\n\n /**\n * Whether to stream back partial progress. If set, tokens will be sent as\n * data-only\n * [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format)\n * as they become available, with the stream terminated by a `data: [DONE]`\n * message.\n * [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions).\n */\n stream?: boolean | null;\n\n /**\n * The suffix that comes after a completion of inserted text.\n */\n suffix?: string | null;\n\n /**\n * What sampling temperature to use, between 0 and 2. Higher values like 0.8 will\n * make the output more random, while lower values like 0.2 will make it more\n * focused and deterministic.\n *\n * We generally recommend altering this or `top_p` but not both.\n */\n temperature?: number | null;\n\n /**\n * An alternative to sampling with temperature, called nucleus sampling, where the\n * model considers the results of the tokens with top_p probability mass. So 0.1\n * means only the tokens comprising the top 10% probability mass are considered.\n *\n * We generally recommend altering this or `temperature` but not both.\n */\n top_p?: number | null;\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to monitor\n * and detect abuse.\n * [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids).\n */\n user?: string;\n}\n\nexport namespace CompletionCreateParams {\n export type CompletionCreateParamsNonStreaming = CompletionsAPI.CompletionCreateParamsNonStreaming;\n export type CompletionCreateParamsStreaming = CompletionsAPI.CompletionCreateParamsStreaming;\n}\n\nexport interface CompletionCreateParamsNonStreaming extends CompletionCreateParamsBase {\n /**\n * Whether to stream back partial progress. If set, tokens will be sent as\n * data-only\n * [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format)\n * as they become available, with the stream terminated by a `data: [DONE]`\n * message.\n * [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions).\n */\n stream?: false | null;\n}\n\nexport interface CompletionCreateParamsStreaming extends CompletionCreateParamsBase {\n /**\n * Whether to stream back partial progress. If set, tokens will be sent as\n * data-only\n * [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format)\n * as they become available, with the stream terminated by a `data: [DONE]`\n * message.\n * [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions).\n */\n stream: true;\n}\n\nexport namespace Completions {\n export import Completion = CompletionsAPI.Completion;\n export import CompletionChoice = CompletionsAPI.CompletionChoice;\n export import CompletionUsage = CompletionsAPI.CompletionUsage;\n export import CompletionCreateParams = CompletionsAPI.CompletionCreateParams;\n export import CompletionCreateParamsNonStreaming = CompletionsAPI.CompletionCreateParamsNonStreaming;\n export import CompletionCreateParamsStreaming = CompletionsAPI.CompletionCreateParamsStreaming;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../core\";\nimport { APIResource } from \"../resource\";\nimport * as EmbeddingsAPI from \"./embeddings\";\n\nexport class Embeddings extends APIResource {\n /**\n * Creates an embedding vector representing the input text.\n */\n create(\n body: EmbeddingCreateParams,\n options?: Core.RequestOptions,\n ): Core.APIPromise<CreateEmbeddingResponse> {\n return this._client.post('/embeddings', { body, ...options });\n }\n}\n\nexport interface CreateEmbeddingResponse {\n /**\n * The list of embeddings generated by the model.\n */\n data: Array<Embedding>;\n\n /**\n * The name of the model used to generate the embedding.\n */\n model: string;\n\n /**\n * The object type, which is always \"list\".\n */\n object: 'list';\n\n /**\n * The usage information for the request.\n */\n usage: CreateEmbeddingResponse.Usage;\n}\n\nexport namespace CreateEmbeddingResponse {\n /**\n * The usage information for the request.\n */\n export interface Usage {\n /**\n * The number of tokens used by the prompt.\n */\n prompt_tokens: number;\n\n /**\n * The total number of tokens used by the request.\n */\n total_tokens: number;\n }\n}\n\n/**\n * Represents an embedding vector returned by embedding endpoint.\n */\nexport interface Embedding {\n /**\n * The embedding vector, which is a list of floats. The length of vector depends on\n * the model as listed in the\n * [embedding guide](https://platform.openai.com/docs/guides/embeddings).\n */\n embedding: Array<number>;\n\n /**\n * The index of the embedding in the list of embeddings.\n */\n index: number;\n\n /**\n * The object type, which is always \"embedding\".\n */\n object: 'embedding';\n}\n\nexport interface EmbeddingCreateParams {\n /**\n * Input text to embed, encoded as a string or array of tokens. To embed multiple\n * inputs in a single request, pass an array of strings or array of token arrays.\n * The input must not exceed the max input tokens for the model (8192 tokens for\n * `text-embedding-ada-002`), cannot be an empty string, and any array must be 2048\n * dimensions or less.\n * [Example Python code](https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken)\n * for counting tokens.\n */\n input: string | Array<string> | Array<number> | Array<Array<number>>;\n\n /**\n * ID of the model to use. You can use the\n * [List models](https://platform.openai.com/docs/api-reference/models/list) API to\n * see all of your available models, or see our\n * [Model overview](https://platform.openai.com/docs/models/overview) for\n * descriptions of them.\n */\n model: (string & {}) | 'text-embedding-ada-002' | 'text-embedding-3-small' | 'text-embedding-3-large';\n\n /**\n * The number of dimensions the resulting output embeddings should have. Only\n * supported in `text-embedding-3` and later models.\n */\n dimensions?: number;\n\n /**\n * The format to return the embeddings in. Can be either `float` or\n * [`base64`](https://pypi.org/project/pybase64/).\n */\n encoding_format?: 'float' | 'base64';\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to monitor\n * and detect abuse.\n * [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids).\n */\n user?: string;\n}\n\nexport namespace Embeddings {\n export import CreateEmbeddingResponse = EmbeddingsAPI.CreateEmbeddingResponse;\n export import Embedding = EmbeddingsAPI.Embedding;\n export import EmbeddingCreateParams = EmbeddingsAPI.EmbeddingCreateParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../core\";\nimport { APIResource } from \"../resource\";\nimport { isRequestOptions } from \"../core\";\nimport { type Response } from \"../_shims/index\";\nimport { sleep } from \"../core\";\nimport { APIConnectionTimeoutError } from \"../error\";\nimport * as FilesAPI from \"./files\";\nimport { type Uploadable, multipartFormRequestOptions } from \"../core\";\nimport { Page } from \"../pagination\";\n\nexport class Files extends APIResource {\n /**\n * Upload a file that can be used across various endpoints. The size of all the\n * files uploaded by one organization can be up to 100 GB.\n *\n * The size of individual files can be a maximum of 512 MB or 2 million tokens for\n * Assistants. See the\n * [Assistants Tools guide](https://platform.openai.com/docs/assistants/tools) to\n * learn more about the types of files supported. The Fine-tuning API only supports\n * `.jsonl` files.\n *\n * Please [contact us](https://help.openai.com/) if you need to increase these\n * storage limits.\n */\n create(body: FileCreateParams, options?: Core.RequestOptions): Core.APIPromise<FileObject> {\n return this._client.post('/files', multipartFormRequestOptions({ body, ...options }));\n }\n\n /**\n * Returns information about a specific file.\n */\n retrieve(fileId: string, options?: Core.RequestOptions): Core.APIPromise<FileObject> {\n return this._client.get(`/files/${fileId}`, options);\n }\n\n /**\n * Returns a list of files that belong to the user's organization.\n */\n list(query?: FileListParams, options?: Core.RequestOptions): Core.PagePromise<FileObjectsPage, FileObject>;\n list(options?: Core.RequestOptions): Core.PagePromise<FileObjectsPage, FileObject>;\n list(\n query: FileListParams | Core.RequestOptions = {},\n options?: Core.RequestOptions,\n ): Core.PagePromise<FileObjectsPage, FileObject> {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/files', FileObjectsPage, { query, ...options });\n }\n\n /**\n * Delete a file.\n */\n del(fileId: string, options?: Core.RequestOptions): Core.APIPromise<FileDeleted> {\n return this._client.delete(`/files/${fileId}`, options);\n }\n\n /**\n * Returns the contents of the specified file.\n */\n content(fileId: string, options?: Core.RequestOptions): Core.APIPromise<Response> {\n return this._client.get(`/files/${fileId}/content`, { ...options, __binaryResponse: true });\n }\n\n /**\n * Returns the contents of the specified file.\n *\n * @deprecated The `.content()` method should be used instead\n */\n retrieveContent(fileId: string, options?: Core.RequestOptions): Core.APIPromise<string> {\n return this._client.get(`/files/${fileId}/content`, {\n ...options,\n headers: { Accept: 'application/json', ...options?.headers },\n });\n }\n\n /**\n * Waits for the given file to be processed, default timeout is 30 mins.\n */\n async waitForProcessing(\n id: string,\n { pollInterval = 5000, maxWait = 30 * 60 * 1000 }: { pollInterval?: number; maxWait?: number } = {},\n ): Promise<FileObject> {\n const TERMINAL_STATES = new Set(['processed', 'error', 'deleted']);\n\n const start = Date.now();\n let file = await this.retrieve(id);\n\n while (!file.status || !TERMINAL_STATES.has(file.status)) {\n await sleep(pollInterval);\n\n file = await this.retrieve(id);\n if (Date.now() - start > maxWait) {\n throw new APIConnectionTimeoutError({\n message: `Giving up on waiting for file ${id} to finish processing after ${maxWait} milliseconds.`,\n });\n }\n }\n\n return file;\n }\n}\n\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class FileObjectsPage extends Page<FileObject> {}\n\nexport type FileContent = string;\n\nexport interface FileDeleted {\n id: string;\n\n deleted: boolean;\n\n object: 'file';\n}\n\n/**\n * The `File` object represents a document that has been uploaded to OpenAI.\n */\nexport interface FileObject {\n /**\n * The file identifier, which can be referenced in the API endpoints.\n */\n id: string;\n\n /**\n * The size of the file, in bytes.\n */\n bytes: number;\n\n /**\n * The Unix timestamp (in seconds) for when the file was created.\n */\n created_at: number;\n\n /**\n * The name of the file.\n */\n filename: string;\n\n /**\n * The object type, which is always `file`.\n */\n object: 'file';\n\n /**\n * The intended purpose of the file. Supported values are `fine-tune`,\n * `fine-tune-results`, `assistants`, and `assistants_output`.\n */\n purpose: 'fine-tune' | 'fine-tune-results' | 'assistants' | 'assistants_output';\n\n /**\n * Deprecated. The current status of the file, which can be either `uploaded`,\n * `processed`, or `error`.\n */\n status: 'uploaded' | 'processed' | 'error';\n\n /**\n * Deprecated. For details on why a fine-tuning training file failed validation,\n * see the `error` field on `fine_tuning.job`.\n */\n status_details?: string;\n}\n\nexport interface FileCreateParams {\n /**\n * The File object (not file name) to be uploaded.\n */\n file: Uploadable;\n\n /**\n * The intended purpose of the uploaded file.\n *\n * Use \"fine-tune\" for\n * [Fine-tuning](https://platform.openai.com/docs/api-reference/fine-tuning) and\n * \"assistants\" for\n * [Assistants](https://platform.openai.com/docs/api-reference/assistants) and\n * [Messages](https://platform.openai.com/docs/api-reference/messages). This allows\n * us to validate the format of the uploaded file is correct for fine-tuning.\n */\n purpose: 'fine-tune' | 'assistants';\n}\n\nexport interface FileListParams {\n /**\n * Only return files with the given purpose.\n */\n purpose?: string;\n}\n\nexport namespace Files {\n export import FileContent = FilesAPI.FileContent;\n export import FileDeleted = FilesAPI.FileDeleted;\n export import FileObject = FilesAPI.FileObject;\n export import FileObjectsPage = FilesAPI.FileObjectsPage;\n export import FileCreateParams = FilesAPI.FileCreateParams;\n export import FileListParams = FilesAPI.FileListParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../../core\";\nimport { APIResource } from \"../../resource\";\nimport { isRequestOptions } from \"../../core\";\nimport * as JobsAPI from \"./jobs\";\nimport { CursorPage, type CursorPageParams } from \"../../pagination\";\n\nexport class Jobs extends APIResource {\n /**\n * Creates a fine-tuning job which begins the process of creating a new model from\n * a given dataset.\n *\n * Response includes details of the enqueued job including job status and the name\n * of the fine-tuned models once complete.\n *\n * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)\n */\n create(body: JobCreateParams, options?: Core.RequestOptions): Core.APIPromise<FineTuningJob> {\n return this._client.post('/fine_tuning/jobs', { body, ...options });\n }\n\n /**\n * Get info about a fine-tuning job.\n *\n * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)\n */\n retrieve(fineTuningJobId: string, options?: Core.RequestOptions): Core.APIPromise<FineTuningJob> {\n return this._client.get(`/fine_tuning/jobs/${fineTuningJobId}`, options);\n }\n\n /**\n * List your organization's fine-tuning jobs\n */\n list(\n query?: JobListParams,\n options?: Core.RequestOptions,\n ): Core.PagePromise<FineTuningJobsPage, FineTuningJob>;\n list(options?: Core.RequestOptions): Core.PagePromise<FineTuningJobsPage, FineTuningJob>;\n list(\n query: JobListParams | Core.RequestOptions = {},\n options?: Core.RequestOptions,\n ): Core.PagePromise<FineTuningJobsPage, FineTuningJob> {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/fine_tuning/jobs', FineTuningJobsPage, { query, ...options });\n }\n\n /**\n * Immediately cancel a fine-tune job.\n */\n cancel(fineTuningJobId: string, options?: Core.RequestOptions): Core.APIPromise<FineTuningJob> {\n return this._client.post(`/fine_tuning/jobs/${fineTuningJobId}/cancel`, options);\n }\n\n /**\n * Get status updates for a fine-tuning job.\n */\n listEvents(\n fineTuningJobId: string,\n query?: JobListEventsParams,\n options?: Core.RequestOptions,\n ): Core.PagePromise<FineTuningJobEventsPage, FineTuningJobEvent>;\n listEvents(\n fineTuningJobId: string,\n options?: Core.RequestOptions,\n ): Core.PagePromise<FineTuningJobEventsPage, FineTuningJobEvent>;\n listEvents(\n fineTuningJobId: string,\n query: JobListEventsParams | Core.RequestOptions = {},\n options?: Core.RequestOptions,\n ): Core.PagePromise<FineTuningJobEventsPage, FineTuningJobEvent> {\n if (isRequestOptions(query)) {\n return this.listEvents(fineTuningJobId, {}, query);\n }\n return this._client.getAPIList(`/fine_tuning/jobs/${fineTuningJobId}/events`, FineTuningJobEventsPage, {\n query,\n ...options,\n });\n }\n}\n\nexport class FineTuningJobsPage extends CursorPage<FineTuningJob> {}\n\nexport class FineTuningJobEventsPage extends CursorPage<FineTuningJobEvent> {}\n\n/**\n * The `fine_tuning.job` object represents a fine-tuning job that has been created\n * through the API.\n */\nexport interface FineTuningJob {\n /**\n * The object identifier, which can be referenced in the API endpoints.\n */\n id: string;\n\n /**\n * The Unix timestamp (in seconds) for when the fine-tuning job was created.\n */\n created_at: number;\n\n /**\n * For fine-tuning jobs that have `failed`, this will contain more information on\n * the cause of the failure.\n */\n error: FineTuningJob.Error | null;\n\n /**\n * The name of the fine-tuned model that is being created. The value will be null\n * if the fine-tuning job is still running.\n */\n fine_tuned_model: string | null;\n\n /**\n * The Unix timestamp (in seconds) for when the fine-tuning job was finished. The\n * value will be null if the fine-tuning job is still running.\n */\n finished_at: number | null;\n\n /**\n * The hyperparameters used for the fine-tuning job. See the\n * [fine-tuning guide](https://platform.openai.com/docs/guides/fine-tuning) for\n * more details.\n */\n hyperparameters: FineTuningJob.Hyperparameters;\n\n /**\n * The base model that is being fine-tuned.\n */\n model: string;\n\n /**\n * The object type, which is always \"fine_tuning.job\".\n */\n object: 'fine_tuning.job';\n\n /**\n * The organization that owns the fine-tuning job.\n */\n organization_id: string;\n\n /**\n * The compiled results file ID(s) for the fine-tuning job. You can retrieve the\n * results with the\n * [Files API](https://platform.openai.com/docs/api-reference/files/retrieve-contents).\n */\n result_files: Array<string>;\n\n /**\n * The current status of the fine-tuning job, which can be either\n * `validating_files`, `queued`, `running`, `succeeded`, `failed`, or `cancelled`.\n */\n status: 'validating_files' | 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled';\n\n /**\n * The total number of billable tokens processed by this fine-tuning job. The value\n * will be null if the fine-tuning job is still running.\n */\n trained_tokens: number | null;\n\n /**\n * The file ID used for training. You can retrieve the training data with the\n * [Files API](https://platform.openai.com/docs/api-reference/files/retrieve-contents).\n */\n training_file: string;\n\n /**\n * The file ID used for validation. You can retrieve the validation results with\n * the\n * [Files API](https://platform.openai.com/docs/api-reference/files/retrieve-contents).\n */\n validation_file: string | null;\n}\n\nexport namespace FineTuningJob {\n /**\n * For fine-tuning jobs that have `failed`, this will contain more information on\n * the cause of the failure.\n */\n export interface Error {\n /**\n * A machine-readable error code.\n */\n code: string;\n\n /**\n * A human-readable error message.\n */\n message: string;\n\n /**\n * The parameter that was invalid, usually `training_file` or `validation_file`.\n * This field will be null if the failure was not parameter-specific.\n */\n param: string | null;\n }\n\n /**\n * The hyperparameters used for the fine-tuning job. See the\n * [fine-tuning guide](https://platform.openai.com/docs/guides/fine-tuning) for\n * more details.\n */\n export interface Hyperparameters {\n /**\n * The number of epochs to train the model for. An epoch refers to one full cycle\n * through the training dataset. \"auto\" decides the optimal number of epochs based\n * on the size of the dataset. If setting the number manually, we support any\n * number between 1 and 50 epochs.\n */\n n_epochs: 'auto' | number;\n }\n}\n\n/**\n * Fine-tuning job event object\n */\nexport interface FineTuningJobEvent {\n id: string;\n\n created_at: number;\n\n level: 'info' | 'warn' | 'error';\n\n message: string;\n\n object: 'fine_tuning.job.event';\n}\n\nexport interface JobCreateParams {\n /**\n * The name of the model to fine-tune. You can select one of the\n * [supported models](https://platform.openai.com/docs/guides/fine-tuning/what-models-can-be-fine-tuned).\n */\n model: (string & {}) | 'babbage-002' | 'davinci-002' | 'gpt-3.5-turbo';\n\n /**\n * The ID of an uploaded file that contains training data.\n *\n * See [upload file](https://platform.openai.com/docs/api-reference/files/upload)\n * for how to upload a file.\n *\n * Your dataset must be formatted as a JSONL file. Additionally, you must upload\n * your file with the purpose `fine-tune`.\n *\n * See the [fine-tuning guide](https://platform.openai.com/docs/guides/fine-tuning)\n * for more details.\n */\n training_file: string;\n\n /**\n * The hyperparameters used for the fine-tuning job.\n */\n hyperparameters?: JobCreateParams.Hyperparameters;\n\n /**\n * A string of up to 18 characters that will be added to your fine-tuned model\n * name.\n *\n * For example, a `suffix` of \"custom-model-name\" would produce a model name like\n * `ft:gpt-3.5-turbo:openai:custom-model-name:7p4lURel`.\n */\n suffix?: string | null;\n\n /**\n * The ID of an uploaded file that contains validation data.\n *\n * If you provide this file, the data is used to generate validation metrics\n * periodically during fine-tuning. These metrics can be viewed in the fine-tuning\n * results file. The same data should not be present in both train and validation\n * files.\n *\n * Your dataset must be formatted as a JSONL file. You must upload your file with\n * the purpose `fine-tune`.\n *\n * See the [fine-tuning guide](https://platform.openai.com/docs/guides/fine-tuning)\n * for more details.\n */\n validation_file?: string | null;\n}\n\nexport namespace JobCreateParams {\n /**\n * The hyperparameters used for the fine-tuning job.\n */\n export interface Hyperparameters {\n /**\n * Number of examples in each batch. A larger batch size means that model\n * parameters are updated less frequently, but with lower variance.\n */\n batch_size?: 'auto' | number;\n\n /**\n * Scaling factor for the learning rate. A smaller learning rate may be useful to\n * avoid overfitting.\n */\n learning_rate_multiplier?: 'auto' | number;\n\n /**\n * The number of epochs to train the model for. An epoch refers to one full cycle\n * through the training dataset.\n */\n n_epochs?: 'auto' | number;\n }\n}\n\nexport interface JobListParams extends CursorPageParams {}\n\nexport interface JobListEventsParams extends CursorPageParams {}\n\nexport namespace Jobs {\n export import FineTuningJob = JobsAPI.FineTuningJob;\n export import FineTuningJobEvent = JobsAPI.FineTuningJobEvent;\n export import FineTuningJobsPage = JobsAPI.FineTuningJobsPage;\n export import FineTuningJobEventsPage = JobsAPI.FineTuningJobEventsPage;\n export import JobCreateParams = JobsAPI.JobCreateParams;\n export import JobListParams = JobsAPI.JobListParams;\n export import JobListEventsParams = JobsAPI.JobListEventsParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport { APIResource } from \"../../resource\";\nimport * as JobsAPI from \"./jobs\";\n\nexport class FineTuning extends APIResource {\n jobs: JobsAPI.Jobs = new JobsAPI.Jobs(this._client);\n}\n\nexport namespace FineTuning {\n export import Jobs = JobsAPI.Jobs;\n export import FineTuningJob = JobsAPI.FineTuningJob;\n export import FineTuningJobEvent = JobsAPI.FineTuningJobEvent;\n export import FineTuningJobsPage = JobsAPI.FineTuningJobsPage;\n export import FineTuningJobEventsPage = JobsAPI.FineTuningJobEventsPage;\n export import JobCreateParams = JobsAPI.JobCreateParams;\n export import JobListParams = JobsAPI.JobListParams;\n export import JobListEventsParams = JobsAPI.JobListEventsParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../core\";\nimport { APIResource } from \"../resource\";\nimport * as ImagesAPI from \"./images\";\nimport { type Uploadable, multipartFormRequestOptions } from \"../core\";\n\nexport class Images extends APIResource {\n /**\n * Creates a variation of a given image.\n */\n createVariation(\n body: ImageCreateVariationParams,\n options?: Core.RequestOptions,\n ): Core.APIPromise<ImagesResponse> {\n return this._client.post('/images/variations', multipartFormRequestOptions({ body, ...options }));\n }\n\n /**\n * Creates an edited or extended image given an original image and a prompt.\n */\n edit(body: ImageEditParams, options?: Core.RequestOptions): Core.APIPromise<ImagesResponse> {\n return this._client.post('/images/edits', multipartFormRequestOptions({ body, ...options }));\n }\n\n /**\n * Creates an image given a prompt.\n */\n generate(body: ImageGenerateParams, options?: Core.RequestOptions): Core.APIPromise<ImagesResponse> {\n return this._client.post('/images/generations', { body, ...options });\n }\n}\n\n/**\n * Represents the url or the content of an image generated by the OpenAI API.\n */\nexport interface Image {\n /**\n * The base64-encoded JSON of the generated image, if `response_format` is\n * `b64_json`.\n */\n b64_json?: string;\n\n /**\n * The prompt that was used to generate the image, if there was any revision to the\n * prompt.\n */\n revised_prompt?: string;\n\n /**\n * The URL of the generated image, if `response_format` is `url` (default).\n */\n url?: string;\n}\n\nexport interface ImagesResponse {\n created: number;\n\n data: Array<Image>;\n}\n\nexport interface ImageCreateVariationParams {\n /**\n * The image to use as the basis for the variation(s). Must be a valid PNG file,\n * less than 4MB, and square.\n */\n image: Uploadable;\n\n /**\n * The model to use for image generation. Only `dall-e-2` is supported at this\n * time.\n */\n model?: (string & {}) | 'dall-e-2' | null;\n\n /**\n * The number of images to generate. Must be between 1 and 10. For `dall-e-3`, only\n * `n=1` is supported.\n */\n n?: number | null;\n\n /**\n * The format in which the generated images are returned. Must be one of `url` or\n * `b64_json`.\n */\n response_format?: 'url' | 'b64_json' | null;\n\n /**\n * The size of the generated images. Must be one of `256x256`, `512x512`, or\n * `1024x1024`.\n */\n size?: '256x256' | '512x512' | '1024x1024' | null;\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to monitor\n * and detect abuse.\n * [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids).\n */\n user?: string;\n}\n\nexport interface ImageEditParams {\n /**\n * The image to edit. Must be a valid PNG file, less than 4MB, and square. If mask\n * is not provided, image must have transparency, which will be used as the mask.\n */\n image: Uploadable;\n\n /**\n * A text description of the desired image(s). The maximum length is 1000\n * characters.\n */\n prompt: string;\n\n /**\n * An additional image whose fully transparent areas (e.g. where alpha is zero)\n * indicate where `image` should be edited. Must be a valid PNG file, less than\n * 4MB, and have the same dimensions as `image`.\n */\n mask?: Uploadable;\n\n /**\n * The model to use for image generation. Only `dall-e-2` is supported at this\n * time.\n */\n model?: (string & {}) | 'dall-e-2' | null;\n\n /**\n * The number of images to generate. Must be between 1 and 10.\n */\n n?: number | null;\n\n /**\n * The format in which the generated images are returned. Must be one of `url` or\n * `b64_json`.\n */\n response_format?: 'url' | 'b64_json' | null;\n\n /**\n * The size of the generated images. Must be one of `256x256`, `512x512`, or\n * `1024x1024`.\n */\n size?: '256x256' | '512x512' | '1024x1024' | null;\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to monitor\n * and detect abuse.\n * [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids).\n */\n user?: string;\n}\n\nexport interface ImageGenerateParams {\n /**\n * A text description of the desired image(s). The maximum length is 1000\n * characters for `dall-e-2` and 4000 characters for `dall-e-3`.\n */\n prompt: string;\n\n /**\n * The model to use for image generation.\n */\n model?: (string & {}) | 'dall-e-2' | 'dall-e-3' | null;\n\n /**\n * The number of images to generate. Must be between 1 and 10. For `dall-e-3`, only\n * `n=1` is supported.\n */\n n?: number | null;\n\n /**\n * The quality of the image that will be generated. `hd` creates images with finer\n * details and greater consistency across the image. This param is only supported\n * for `dall-e-3`.\n */\n quality?: 'standard' | 'hd';\n\n /**\n * The format in which the generated images are returned. Must be one of `url` or\n * `b64_json`.\n */\n response_format?: 'url' | 'b64_json' | null;\n\n /**\n * The size of the generated images. Must be one of `256x256`, `512x512`, or\n * `1024x1024` for `dall-e-2`. Must be one of `1024x1024`, `1792x1024`, or\n * `1024x1792` for `dall-e-3` models.\n */\n size?: '256x256' | '512x512' | '1024x1024' | '1792x1024' | '1024x1792' | null;\n\n /**\n * The style of the generated images. Must be one of `vivid` or `natural`. Vivid\n * causes the model to lean towards generating hyper-real and dramatic images.\n * Natural causes the model to produce more natural, less hyper-real looking\n * images. This param is only supported for `dall-e-3`.\n */\n style?: 'vivid' | 'natural' | null;\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to monitor\n * and detect abuse.\n * [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids).\n */\n user?: string;\n}\n\nexport namespace Images {\n export import Image = ImagesAPI.Image;\n export import ImagesResponse = ImagesAPI.ImagesResponse;\n export import ImageCreateVariationParams = ImagesAPI.ImageCreateVariationParams;\n export import ImageEditParams = ImagesAPI.ImageEditParams;\n export import ImageGenerateParams = ImagesAPI.ImageGenerateParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../core\";\nimport { APIResource } from \"../resource\";\nimport * as ModelsAPI from \"./models\";\nimport { Page } from \"../pagination\";\n\nexport class Models extends APIResource {\n /**\n * Retrieves a model instance, providing basic information about the model such as\n * the owner and permissioning.\n */\n retrieve(model: string, options?: Core.RequestOptions): Core.APIPromise<Model> {\n return this._client.get(`/models/${model}`, options);\n }\n\n /**\n * Lists the currently available models, and provides basic information about each\n * one such as the owner and availability.\n */\n list(options?: Core.RequestOptions): Core.PagePromise<ModelsPage, Model> {\n return this._client.getAPIList('/models', ModelsPage, options);\n }\n\n /**\n * Delete a fine-tuned model. You must have the Owner role in your organization to\n * delete a model.\n */\n del(model: string, options?: Core.RequestOptions): Core.APIPromise<ModelDeleted> {\n return this._client.delete(`/models/${model}`, options);\n }\n}\n\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class ModelsPage extends Page<Model> {}\n\n/**\n * Describes an OpenAI model offering that can be used with the API.\n */\nexport interface Model {\n /**\n * The model identifier, which can be referenced in the API endpoints.\n */\n id: string;\n\n /**\n * The Unix timestamp (in seconds) when the model was created.\n */\n created: number;\n\n /**\n * The object type, which is always \"model\".\n */\n object: 'model';\n\n /**\n * The organization that owns the model.\n */\n owned_by: string;\n}\n\nexport interface ModelDeleted {\n id: string;\n\n deleted: boolean;\n\n object: string;\n}\n\nexport namespace Models {\n export import Model = ModelsAPI.Model;\n export import ModelDeleted = ModelsAPI.ModelDeleted;\n export import ModelsPage = ModelsAPI.ModelsPage;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from \"../core\";\nimport { APIResource } from \"../resource\";\nimport * as ModerationsAPI from \"./moderations\";\n\nexport class Moderations extends APIResource {\n /**\n * Classifies if text violates OpenAI's Content Policy\n */\n create(\n body: ModerationCreateParams,\n options?: Core.RequestOptions,\n ): Core.APIPromise<ModerationCreateResponse> {\n return this._client.post('/moderations', { body, ...options });\n }\n}\n\nexport interface Moderation {\n /**\n * A list of the categories, and whether they are flagged or not.\n */\n categories: Moderation.Categories;\n\n /**\n * A list of the categories along with their scores as predicted by model.\n */\n category_scores: Moderation.CategoryScores;\n\n /**\n * Whether the content violates\n * [OpenAI's usage policies](/policies/usage-policies).\n */\n flagged: boolean;\n}\n\nexport namespace Moderation {\n /**\n * A list of the categories, and whether they are flagged or not.\n */\n export interface Categories {\n /**\n * Content that expresses, incites, or promotes harassing language towards any\n * target.\n */\n harassment: boolean;\n\n /**\n * Harassment content that also includes violence or serious harm towards any\n * target.\n */\n 'harassment/threatening': boolean;\n\n /**\n * Content that expresses, incites, or promotes hate based on race, gender,\n * ethnicity, religion, nationality, sexual orientation, disability status, or\n * caste. Hateful content aimed at non-protected groups (e.g., chess players) is\n * harassment.\n */\n hate: boolean;\n\n /**\n * Hateful content that also includes violence or serious harm towards the targeted\n * group based on race, gender, ethnicity, religion, nationality, sexual\n * orientation, disability status, or caste.\n */\n 'hate/threatening': boolean;\n\n /**\n * Content that promotes, encourages, or depicts acts of self-harm, such as\n * suicide, cutting, and eating disorders.\n */\n 'self-harm': boolean;\n\n /**\n * Content that encourages performing acts of self-harm, such as suicide, cutting,\n * and eating disorders, or that gives instructions or advice on how to commit such\n * acts.\n */\n 'self-harm/instructions': boolean;\n\n /**\n * Content where the speaker expresses that they are engaging or intend to engage\n * in acts of self-harm, such as suicide, cutting, and eating disorders.\n */\n 'self-harm/intent': boolean;\n\n /**\n * Content meant to arouse sexual excitement, such as the description of sexual\n * activity, or that promotes sexual services (excluding sex education and\n * wellness).\n */\n sexual: boolean;\n\n /**\n * Sexual content that includes an individual who is under 18 years old.\n */\n 'sexual/minors': boolean;\n\n /**\n * Content that depicts death, violence, or physical injury.\n */\n violence: boolean;\n\n /**\n * Content that depicts death, violence, or physical injury in graphic detail.\n */\n 'violence/graphic': boolean;\n }\n\n /**\n * A list of the categories along with their scores as predicted by model.\n */\n export interface CategoryScores {\n /**\n * The score for the category 'harassment'.\n */\n harassment: number;\n\n /**\n * The score for the category 'harassment/threatening'.\n */\n 'harassment/threatening': number;\n\n /**\n * The score for the category 'hate'.\n */\n hate: number;\n\n /**\n * The score for the category 'hate/threatening'.\n */\n 'hate/threatening': number;\n\n /**\n * The score for the category 'self-harm'.\n */\n 'self-harm': number;\n\n /**\n * The score for the category 'self-harm/instructions'.\n */\n 'self-harm/instructions': number;\n\n /**\n * The score for the category 'self-harm/intent'.\n */\n 'self-harm/intent': number;\n\n /**\n * The score for the category 'sexual'.\n */\n sexual: number;\n\n /**\n * The score for the category 'sexual/minors'.\n */\n 'sexual/minors': number;\n\n /**\n * The score for the category 'violence'.\n */\n violence: number;\n\n /**\n * The score for the category 'violence/graphic'.\n */\n 'violence/graphic': number;\n }\n}\n\n/**\n * Represents policy compliance report by OpenAI's content moderation model against\n * a given input.\n */\nexport interface ModerationCreateResponse {\n /**\n * The unique identifier for the moderation request.\n */\n id: string;\n\n /**\n * The model used to generate the moderation results.\n */\n model: string;\n\n /**\n * A list of moderation objects.\n */\n results: Array<Moderation>;\n}\n\nexport interface ModerationCreateParams {\n /**\n * The input text to classify\n */\n input: string | Array<string>;\n\n /**\n * Two content moderations models are available: `text-moderation-stable` and\n * `text-moderation-latest`.\n *\n * The default is `text-moderation-latest` which will be automatically upgraded\n * over time. This ensures you are always using our most accurate model. If you use\n * `text-moderation-stable`, we will provide advanced notice before updating the\n * model. Accuracy of `text-moderation-stable` may be slightly lower than for\n * `text-moderation-latest`.\n */\n model?: (string & {}) | 'text-moderation-latest' | 'text-moderation-stable';\n}\n\nexport namespace Moderations {\n export import Moderation = ModerationsAPI.Moderation;\n export import ModerationCreateResponse = ModerationsAPI.ModerationCreateResponse;\n export import ModerationCreateParams = ModerationsAPI.ModerationCreateParams;\n}\n","// File generated from our OpenAPI spec by Stainless.\n\nexport * from './chat/index';\nexport * from './shared';\nexport { Audio } from './audio/audio';\nexport { Beta } from './beta/beta';\nexport {\n Completion,\n CompletionChoice,\n CompletionUsage,\n CompletionCreateParams,\n CompletionCreateParamsNonStreaming,\n CompletionCreateParamsStreaming,\n Completions,\n} from './completions';\nexport { CreateEmbeddingResponse, Embedding, EmbeddingCreateParams, Embeddings } from './embeddings';\nexport {\n FileContent,\n FileDeleted,\n FileObject,\n FileCreateParams,\n FileListParams,\n FileObjectsPage,\n Files,\n} from './files';\nexport { FineTuning } from './fine-tuning/fine-tuning';\nexport {\n Image,\n ImagesResponse,\n ImageCreateVariationParams,\n ImageEditParams,\n ImageGenerateParams,\n Images,\n} from './images';\nexport { Model, ModelDeleted, ModelsPage, Models } from './models';\nexport { Moderation, ModerationCreateResponse, ModerationCreateParams, Moderations } from './moderations';\n","// File generated from our OpenAPI spec by Stainless.\n\nimport * as Core from './core';\nimport * as Errors from './error';\nimport { type Agent } from './_shims/index';\nimport * as Uploads from './uploads';\nimport * as Pagination from \"./pagination\";\nimport * as API from \"./resources/index\";\n\nexport interface ClientOptions {\n /**\n * Defaults to process.env['OPENAI_API_KEY'].\n */\n apiKey?: string | undefined;\n\n /**\n * Defaults to process.env['OPENAI_ORG_ID'].\n */\n organization?: string | null | undefined;\n\n /**\n * Override the default base URL for the API, e.g., \"https://api.example.com/v2/\"\n *\n * Defaults to process.env['OPENAI_BASE_URL'].\n */\n baseURL?: string | null | undefined;\n\n /**\n * The maximum amount of time (in milliseconds) that the client should wait for a response\n * from the server before timing out a single request.\n *\n * Note that request timeouts are retried by default, so in a worst-case scenario you may wait\n * much longer than this timeout before the promise succeeds or fails.\n */\n timeout?: number;\n\n /**\n * An HTTP agent used to manage HTTP(S) connections.\n *\n * If not provided, an agent will be constructed by default in the Node.js environment,\n * otherwise no agent is used.\n */\n httpAgent?: Agent;\n\n /**\n * Specify a custom `fetch` function implementation.\n *\n * If not provided, we use `node-fetch` on Node.js and otherwise expect that `fetch` is\n * defined globally.\n */\n fetch?: Core.Fetch | undefined;\n\n /**\n * The maximum number of times that the client will retry a request in case of a\n * temporary failure, like a network error or a 5XX error from the server.\n *\n * @default 2\n */\n maxRetries?: number;\n\n /**\n * Default headers to include with every request to the API.\n *\n * These can be removed in individual requests by explicitly setting the\n * header to `undefined` or `null` in request options.\n */\n defaultHeaders?: Core.Headers;\n\n /**\n * Default query parameters to include with every request to the API.\n *\n * These can be removed in individual requests by explicitly setting the\n * param to `undefined` in request options.\n */\n defaultQuery?: Core.DefaultQuery;\n\n /**\n * By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n * Only set this option to `true` if you understand the risks and have appropriate mitigations in place.\n */\n dangerouslyAllowBrowser?: boolean;\n}\n\n/** API Client for interfacing with the OpenAI API. */\nexport class OpenAI extends Core.APIClient {\n apiKey: string;\n organization: string | null;\n\n private _options: ClientOptions;\n\n /**\n * API Client for interfacing with the OpenAI API.\n *\n * @param {string | undefined} [opts.apiKey=process.env['OPENAI_API_KEY'] ?? undefined]\n * @param {string | null | undefined} [opts.organization=process.env['OPENAI_ORG_ID'] ?? null]\n * @param {string} [opts.baseURL=process.env['OPENAI_BASE_URL'] ?? https://api.openai.com/v1] - Override the default base URL for the API.\n * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n * @param {number} [opts.httpAgent] - An HTTP agent used to manage HTTP(s) connections.\n * @param {Core.Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n * @param {Core.Headers} opts.defaultHeaders - Default headers to include with every request to the API.\n * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.\n * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n */\n constructor({\n baseURL = Core.readEnv('OPENAI_BASE_URL'),\n apiKey = Core.readEnv('OPENAI_API_KEY'),\n organization = Core.readEnv('OPENAI_ORG_ID') ?? null,\n ...opts\n }: ClientOptions = {}) {\n if (apiKey === undefined) {\n throw new Errors.OpenAIError(\n \"The OPENAI_API_KEY environment variable is missing or empty; either provide it, or instantiate the OpenAI client with an apiKey option, like new OpenAI({ apiKey: 'My API Key' }).\",\n );\n }\n\n const options: ClientOptions = {\n apiKey,\n organization,\n ...opts,\n baseURL: baseURL || `https://api.openai.com/v1`,\n };\n\n if (!options.dangerouslyAllowBrowser && Core.isRunningInBrowser()) {\n throw new Errors.OpenAIError(\n \"It looks like you're running in a browser-like environment.\\n\\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\\nIf you understand the risks and have appropriate mitigations in place,\\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\\n\\nnew OpenAI({ apiKey, dangerouslyAllowBrowser: true });\\n\\nhttps://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety\\n\",\n );\n }\n\n super({\n baseURL: options.baseURL!,\n timeout: options.timeout ?? 600000 /* 10 minutes */,\n httpAgent: options.httpAgent,\n maxRetries: options.maxRetries,\n fetch: options.fetch,\n });\n this._options = options;\n\n this.apiKey = apiKey;\n this.organization = organization;\n }\n\n completions: API.Completions = new API.Completions(this);\n chat: API.Chat = new API.Chat(this);\n embeddings: API.Embeddings = new API.Embeddings(this);\n files: API.Files = new API.Files(this);\n images: API.Images = new API.Images(this);\n audio: API.Audio = new API.Audio(this);\n moderations: API.Moderations = new API.Moderations(this);\n models: API.Models = new API.Models(this);\n fineTuning: API.FineTuning = new API.FineTuning(this);\n beta: API.Beta = new API.Beta(this);\n\n protected override defaultQuery(): Core.DefaultQuery | undefined {\n return this._options.defaultQuery;\n }\n\n protected override defaultHeaders(opts: Core.FinalRequestOptions): Core.Headers {\n return {\n ...super.defaultHeaders(opts),\n 'OpenAI-Organization': this.organization,\n ...this._options.defaultHeaders,\n };\n }\n\n protected override authHeaders(opts: Core.FinalRequestOptions): Core.Headers {\n return { Authorization: `Bearer ${this.apiKey}` };\n }\n\n static OpenAI = this;\n\n static OpenAIError = Errors.OpenAIError;\n static APIError = Errors.APIError;\n static APIConnectionError = Errors.APIConnectionError;\n static APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;\n static APIUserAbortError = Errors.APIUserAbortError;\n static NotFoundError = Errors.NotFoundError;\n static ConflictError = Errors.ConflictError;\n static RateLimitError = Errors.RateLimitError;\n static BadRequestError = Errors.BadRequestError;\n static AuthenticationError = Errors.AuthenticationError;\n static InternalServerError = Errors.InternalServerError;\n static PermissionDeniedError = Errors.PermissionDeniedError;\n static UnprocessableEntityError = Errors.UnprocessableEntityError;\n}\n\nexport const {\n OpenAIError,\n APIError,\n APIConnectionError,\n APIConnectionTimeoutError,\n APIUserAbortError,\n NotFoundError,\n ConflictError,\n RateLimitError,\n BadRequestError,\n AuthenticationError,\n InternalServerError,\n PermissionDeniedError,\n UnprocessableEntityError,\n} = Errors;\n\nexport import toFile = Uploads.toFile;\nexport import fileFromPath = Uploads.fileFromPath;\n\nexport namespace OpenAI {\n // Helper functions\n export import toFile = Uploads.toFile;\n export import fileFromPath = Uploads.fileFromPath;\n\n export import RequestOptions = Core.RequestOptions;\n\n export import Page = Pagination.Page;\n export import PageResponse = Pagination.PageResponse;\n\n export import CursorPage = Pagination.CursorPage;\n export import CursorPageParams = Pagination.CursorPageParams;\n export import CursorPageResponse = Pagination.CursorPageResponse;\n\n export import Completions = API.Completions;\n export import Completion = API.Completion;\n export import CompletionChoice = API.CompletionChoice;\n export import CompletionUsage = API.CompletionUsage;\n export import CompletionCreateParams = API.CompletionCreateParams;\n export import CompletionCreateParamsNonStreaming = API.CompletionCreateParamsNonStreaming;\n export import CompletionCreateParamsStreaming = API.CompletionCreateParamsStreaming;\n\n export import Chat = API.Chat;\n export import ChatCompletion = API.ChatCompletion;\n export import ChatCompletionAssistantMessageParam = API.ChatCompletionAssistantMessageParam;\n export import ChatCompletionChunk = API.ChatCompletionChunk;\n export import ChatCompletionContentPart = API.ChatCompletionContentPart;\n export import ChatCompletionContentPartImage = API.ChatCompletionContentPartImage;\n export import ChatCompletionContentPartText = API.ChatCompletionContentPartText;\n export import ChatCompletionFunctionCallOption = API.ChatCompletionFunctionCallOption;\n export import ChatCompletionFunctionMessageParam = API.ChatCompletionFunctionMessageParam;\n export import ChatCompletionMessage = API.ChatCompletionMessage;\n export import ChatCompletionMessageParam = API.ChatCompletionMessageParam;\n export import ChatCompletionMessageToolCall = API.ChatCompletionMessageToolCall;\n export import ChatCompletionNamedToolChoice = API.ChatCompletionNamedToolChoice;\n export import ChatCompletionRole = API.ChatCompletionRole;\n export import ChatCompletionSystemMessageParam = API.ChatCompletionSystemMessageParam;\n export import ChatCompletionTokenLogprob = API.ChatCompletionTokenLogprob;\n export import ChatCompletionTool = API.ChatCompletionTool;\n export import ChatCompletionToolChoiceOption = API.ChatCompletionToolChoiceOption;\n export import ChatCompletionToolMessageParam = API.ChatCompletionToolMessageParam;\n export import ChatCompletionUserMessageParam = API.ChatCompletionUserMessageParam;\n export import ChatCompletionCreateParams = API.ChatCompletionCreateParams;\n export import ChatCompletionCreateParamsNonStreaming = API.ChatCompletionCreateParamsNonStreaming;\n export import ChatCompletionCreateParamsStreaming = API.ChatCompletionCreateParamsStreaming;\n\n export import Embeddings = API.Embeddings;\n export import CreateEmbeddingResponse = API.CreateEmbeddingResponse;\n export import Embedding = API.Embedding;\n export import EmbeddingCreateParams = API.EmbeddingCreateParams;\n\n export import Files = API.Files;\n export import FileContent = API.FileContent;\n export import FileDeleted = API.FileDeleted;\n export import FileObject = API.FileObject;\n export import FileObjectsPage = API.FileObjectsPage;\n export import FileCreateParams = API.FileCreateParams;\n export import FileListParams = API.FileListParams;\n\n export import Images = API.Images;\n export import Image = API.Image;\n export import ImagesResponse = API.ImagesResponse;\n export import ImageCreateVariationParams = API.ImageCreateVariationParams;\n export import ImageEditParams = API.ImageEditParams;\n export import ImageGenerateParams = API.ImageGenerateParams;\n\n export import Audio = API.Audio;\n\n export import Moderations = API.Moderations;\n export import Moderation = API.Moderation;\n export import ModerationCreateResponse = API.ModerationCreateResponse;\n export import ModerationCreateParams = API.ModerationCreateParams;\n\n export import Models = API.Models;\n export import Model = API.Model;\n export import ModelDeleted = API.ModelDeleted;\n export import ModelsPage = API.ModelsPage;\n\n export import FineTuning = API.FineTuning;\n\n export import Beta = API.Beta;\n\n export import FunctionDefinition = API.FunctionDefinition;\n export import FunctionParameters = API.FunctionParameters;\n}\n\nexport default OpenAI;\n","import OpenAI from 'openai';\nimport { loadApiKey } from '../../core/language-model/util/load-api-key';\nimport { createOpenAIClient } from '../openai/create-openai-client';\nimport { OpenAIChatLanguageModel } from '../openai/openai-chat-language-model';\nimport { FireworksChatSettings } from './fireworks-chat-settings';\n\nexport function chat(\n settings: Omit<FireworksChatSettings, 'client'> & {\n client?: OpenAI;\n apiKey?: string;\n },\n) {\n const { client, apiKey, ...remainingSettings } = settings;\n return new OpenAIChatLanguageModel(\n { ...remainingSettings },\n {\n client: async () => {\n if (client) {\n return client;\n }\n\n return createOpenAIClient({\n apiKey: loadApiKey({\n apiKey,\n environmentVariableName: 'FIREWORKS_API_KEY',\n description: 'FireWorks',\n }),\n baseURL: 'https://api.fireworks.ai/inference/v1',\n });\n },\n\n mapSettings: settings => ({\n model: settings.id,\n prompt_truncate_len: settings.promptTruncateLength,\n top_k: settings.topK,\n context_length_exceeded_behavior:\n settings.contextLengthExceededBehavior,\n }),\n },\n );\n}\n","export class LoadAPIKeyError extends Error {\n constructor({ message }: { message: string }) {\n super(message);\n\n this.name = 'LoadAPIKeyError';\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n };\n }\n}\n","import { LoadAPIKeyError } from '../errors/load-api-key-error';\n\nexport function loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = 'apiKey',\n description,\n}: {\n apiKey: string | undefined;\n environmentVariableName: string;\n apiKeyParameterName?: string;\n description: string;\n}): string {\n if (apiKey != null) {\n return apiKey;\n }\n\n if (typeof process === 'undefined') {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`,\n });\n }\n\n apiKey = process.env[environmentVariableName];\n\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`,\n });\n }\n\n return apiKey;\n}\n","import OpenAI from 'openai';\n\n/**\n * Creates an OpenAI client (optional peer dependency) on demand.\n *\n * This avoids error when the peer dependency is not installed and the provider is not used.\n * Support ESM and CommonJS module loading.\n * Hardcoded module name to allow for webpack bundling.\n */\nexport async function createOpenAIClient({\n apiKey,\n baseURL,\n}: {\n apiKey: string;\n baseURL?: string;\n}): Promise<OpenAI> {\n let OpenAI: any;\n\n try {\n // CommonJS Module loading:\n OpenAI = require('openai');\n } catch (error) {\n try {\n // attempt ES Module loading:\n OpenAI = (await import('openai')).default;\n } catch (error) {\n throw new Error(`Failed to load '${module}' module dynamically.`);\n }\n }\n\n return new OpenAI({ apiKey, baseURL });\n}\n","import { nanoid } from 'nanoid';\nimport OpenAI from 'openai';\nimport {\n ChatCompletionCreateParamsNonStreaming,\n ChatCompletionCreateParamsStreaming,\n} from 'openai/resources';\nimport { LanguageModel, LanguageModelStreamPart } from '../../core';\nimport { tryParseJSON } from '../../core/util/try-json-parse';\nimport { readableFromAsyncIterable } from '../../streams';\nimport { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages';\n\nexport class OpenAIChatLanguageModel<SETTINGS> implements LanguageModel {\n readonly settings: SETTINGS;\n\n readonly defaultObjectGenerationMode = 'tool';\n\n private readonly getClient: () => Promise<OpenAI>;\n private readonly mapSettings: (settings: SETTINGS) => Record<\n string,\n unknown\n > & {\n model: string;\n };\n\n constructor(\n settings: SETTINGS,\n config: {\n client: () => Promise<OpenAI>;\n mapSettings: (settings: SETTINGS) => Record<string, unknown> & {\n model: string;\n };\n },\n ) {\n this.settings = settings;\n this.getClient = config.client;\n this.mapSettings = config.mapSettings;\n }\n\n private get basePrompt() {\n return this.mapSettings(this.settings);\n }\n\n private getArgs(\n options: Parameters<LanguageModel['doGenerate']>[0],\n stream: true,\n ): ChatCompletionCreateParamsStreaming;\n private getArgs(\n options: Parameters<LanguageModel['doGenerate']>[0],\n stream: false,\n ): ChatCompletionCreateParamsNonStreaming;\n private getArgs(\n {\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n seed,\n }: Parameters<LanguageModel['doGenerate']>[0],\n stream: boolean,\n ):\n | ChatCompletionCreateParamsNonStreaming\n | ChatCompletionCreateParamsStreaming {\n const type = mode.type;\n const messages = convertToOpenAIChatMessages(prompt);\n\n // TODO standardize temperature, presencePenalty, frequencyPenalty scales\n const standardizedSettings = {\n max_tokens: maxTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n seed,\n };\n\n switch (type) {\n case 'regular': {\n // when the tools array is empty, change it to undefined to prevent OpenAI errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n return {\n stream,\n ...this.basePrompt,\n ...standardizedSettings,\n messages,\n tools: tools?.map(tool => ({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n })),\n };\n }\n\n case 'object-json': {\n return {\n stream,\n ...this.basePrompt,\n ...standardizedSettings,\n response_format: { type: 'json_object' },\n messages,\n };\n }\n\n case 'object-tool': {\n return {\n stream,\n ...this.basePrompt,\n ...standardizedSettings,\n tool_choice: { type: 'function', function: { name: mode.tool.name } },\n tools: [{ type: 'function', function: mode.tool }],\n messages,\n };\n }\n\n case 'object-grammar': {\n throw new Error('Grammar mode is not supported by OpenAI Chat.');\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModel['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModel['doGenerate']>>> {\n const client = await this.getClient();\n\n const completion = await client.chat.completions.create(\n this.getArgs(options, false),\n );\n\n const message = completion.choices[0].message;\n\n return {\n text: message.content ?? undefined,\n toolCalls: message.tool_calls?.map(toolCall => ({\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n args: toolCall.function.arguments!,\n })),\n warnings: [],\n };\n }\n\n async doStream(\n options: Parameters<LanguageModel['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModel['doStream']>>> {\n const client = await this.getClient();\n\n const response = await client.chat.completions.create(\n this.getArgs(options, true),\n );\n\n const toolCalls: Array<{\n id?: string;\n type?: 'function';\n function?: {\n name?: string;\n arguments?: string;\n };\n }> = [];\n\n return {\n warnings: [],\n stream: readableFromAsyncIterable(response).pipeThrough(\n new TransformStream<\n OpenAI.Chat.Completions.ChatCompletionChunk,\n LanguageModelStreamPart\n >({\n transform(chunk, controller) {\n if (chunk.choices?.[0].delta == null) {\n return;\n }\n\n const delta = chunk.choices[0].delta;\n\n if (delta.content != null) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: delta.content,\n });\n }\n\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n\n // new tool call, add to list\n if (toolCalls[index] == null) {\n toolCalls[index] = toolCallDelta;\n continue;\n }\n\n // existing tool call, merge\n const toolCall = toolCalls[index];\n\n if (toolCallDelta.function?.arguments != null) {\n toolCall.function!.arguments +=\n toolCallDelta.function?.arguments ?? '';\n }\n\n // send delta\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallId: toolCall.id ?? '', // TODO empty?\n toolName: toolCall.function?.name ?? '', // TODO empty?\n argsTextDelta: toolCallDelta.function?.arguments ?? '', // TODO empty?\n });\n\n // check if tool call is complete\n if (\n toolCall.function?.name == null ||\n toolCall.function?.arguments == null ||\n tryParseJSON(toolCall.function.arguments) == null\n ) {\n continue;\n }\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? nanoid(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments,\n });\n }\n }\n },\n }),\n ),\n };\n }\n}\n","export function tryParseJSON(input: string): unknown | null {\n try {\n // TODO use SecureJSON.parse\n return JSON.parse(input);\n } catch {\n // ignore parse error (incomplete JSON)\n return null;\n }\n}\n","import {\n createParser,\n type EventSourceParser,\n type ParsedEvent,\n type ReconnectInterval,\n} from 'eventsource-parser';\nimport { OpenAIStreamCallbacks } from './openai-stream';\n\nexport interface FunctionCallPayload {\n name: string;\n arguments: Record<string, unknown>;\n}\nexport interface ToolCallPayload {\n tools: {\n id: string;\n type: 'function';\n func: {\n name: string;\n arguments: Record<string, unknown>;\n };\n }[];\n}\n\n/**\n * Configuration options and helper callback methods for AIStream stream lifecycle events.\n * @interface\n */\nexport interface AIStreamCallbacksAndOptions {\n /** `onStart`: Called once when the stream is initialized. */\n onStart?: () => Promise<void> | void;\n /** `onCompletion`: Called for each tokenized message. */\n onCompletion?: (completion: string) => Promise<void> | void;\n /** `onFinal`: Called once when the stream is closed with the final completion message. */\n onFinal?: (completion: string) => Promise<void> | void;\n /** `onToken`: Called for each tokenized message. */\n onToken?: (token: string) => Promise<void> | void;\n /** `onText`: Called for each text chunk. */\n onText?: (text: string) => Promise<void> | void;\n /**\n * A flag for enabling the experimental_StreamData class and the new protocol.\n * @see https://github.com/vercel-labs/ai/pull/425\n *\n * When StreamData is rolled out, this will be removed and the new protocol will be used by default.\n */\n experimental_streamData?: boolean;\n}\n\n/**\n * Options for the AIStreamParser.\n * @interface\n * @property {string} event - The event (type) from the server side event stream.\n */\nexport interface AIStreamParserOptions {\n event?: string;\n}\n\n/**\n * Custom parser for AIStream data.\n * @interface\n * @param {string} data - The data to be parsed.\n * @param {AIStreamParserOptions} options - The options for the parser.\n * @returns {string | void} The parsed data or void.\n */\nexport interface AIStreamParser {\n (data: string, options: AIStreamParserOptions):\n | string\n | void\n | { isText: false; content: string };\n}\n\n/**\n * Creates a TransformStream that parses events from an EventSource stream using a custom parser.\n * @param {AIStreamParser} customParser - Function to handle event data.\n * @returns {TransformStream<Uint8Array, string>} TransformStream parsing events.\n */\nexport function createEventStreamTransformer(\n customParser?: AIStreamParser,\n): TransformStream<Uint8Array, string | { isText: false; content: string }> {\n const textDecoder = new TextDecoder();\n let eventSourceParser: EventSourceParser;\n\n return new TransformStream({\n async start(controller): Promise<void> {\n eventSourceParser = createParser(\n (event: ParsedEvent | ReconnectInterval) => {\n if (\n ('data' in event &&\n event.type === 'event' &&\n event.data === '[DONE]') ||\n // Replicate doesn't send [DONE] but does send a 'done' event\n // @see https://replicate.com/docs/streaming\n (event as any).event === 'done'\n ) {\n controller.terminate();\n return;\n }\n\n if ('data' in event) {\n const parsedMessage = customParser\n ? customParser(event.data, {\n event: event.event,\n })\n : event.data;\n if (parsedMessage) controller.enqueue(parsedMessage);\n }\n },\n );\n },\n\n transform(chunk) {\n eventSourceParser.feed(textDecoder.decode(chunk));\n },\n });\n}\n\n/**\n * Creates a transform stream that encodes input messages and invokes optional callback functions.\n * The transform stream uses the provided callbacks to execute custom logic at different stages of the stream's lifecycle.\n * - `onStart`: Called once when the stream is initialized.\n * - `onToken`: Called for each tokenized message.\n * - `onCompletion`: Called every time an AIStream completion message is received. This can occur multiple times when using e.g. OpenAI functions\n * - `onFinal`: Called once when the stream is closed with the final completion message.\n *\n * This function is useful when you want to process a stream of messages and perform specific actions during the stream's lifecycle.\n *\n * @param {AIStreamCallbacksAndOptions} [callbacks] - An object containing the callback functions.\n * @return {TransformStream<string, Uint8Array>} A transform stream that encodes input messages as Uint8Array and allows the execution of custom logic through callbacks.\n *\n * @example\n * const callbacks = {\n * onStart: async () => console.log('Stream started'),\n * onToken: async (token) => console.log(`Token: ${token}`),\n * onCompletion: async (completion) => console.log(`Completion: ${completion}`)\n * onFinal: async () => data.close()\n * };\n * const transformer = createCallbacksTransformer(callbacks);\n */\nexport function createCallbacksTransformer(\n cb: AIStreamCallbacksAndOptions | OpenAIStreamCallbacks | undefined,\n): TransformStream<string | { isText: false; content: string }, Uint8Array> {\n const textEncoder = new TextEncoder();\n let aggregatedResponse = '';\n const callbacks = cb || {};\n\n return new TransformStream({\n async start(): Promise<void> {\n if (callbacks.onStart) await callbacks.onStart();\n },\n\n async transform(message, controller): Promise<void> {\n const content = typeof message === 'string' ? message : message.content;\n\n controller.enqueue(textEncoder.encode(content));\n\n aggregatedResponse += content;\n\n if (callbacks.onToken) await callbacks.onToken(content);\n if (callbacks.onText && typeof message === 'string') {\n await callbacks.onText(message);\n }\n },\n\n async flush(): Promise<void> {\n const isOpenAICallbacks = isOfTypeOpenAIStreamCallbacks(callbacks);\n // If it's OpenAICallbacks, it has an experimental_onFunctionCall which means that the createFunctionCallTransformer\n // will handle calling onComplete.\n if (callbacks.onCompletion) {\n await callbacks.onCompletion(aggregatedResponse);\n }\n\n if (callbacks.onFinal && !isOpenAICallbacks) {\n await callbacks.onFinal(aggregatedResponse);\n }\n },\n });\n}\n\nfunction isOfTypeOpenAIStreamCallbacks(\n callbacks: AIStreamCallbacksAndOptions | OpenAIStreamCallbacks,\n): callbacks is OpenAIStreamCallbacks {\n return 'experimental_onFunctionCall' in callbacks;\n}\n/**\n * Returns a stateful function that, when invoked, trims leading whitespace\n * from the input text. The trimming only occurs on the first invocation, ensuring that\n * subsequent calls do not alter the input text. This is particularly useful in scenarios\n * where a text stream is being processed and only the initial whitespace should be removed.\n *\n * @return {function(string): string} A function that takes a string as input and returns a string\n * with leading whitespace removed if it is the first invocation; otherwise, it returns the input unchanged.\n *\n * @example\n * const trimStart = trimStartOfStreamHelper();\n * const output1 = trimStart(\" text\"); // \"text\"\n * const output2 = trimStart(\" text\"); // \" text\"\n *\n */\nexport function trimStartOfStreamHelper(): (text: string) => string {\n let isStreamStart = true;\n\n return (text: string): string => {\n if (isStreamStart) {\n text = text.trimStart();\n if (text) isStreamStart = false;\n }\n return text;\n };\n}\n\n/**\n * Returns a ReadableStream created from the response, parsed and handled with custom logic.\n * The stream goes through two transformation stages, first parsing the events and then\n * invoking the provided callbacks.\n *\n * For 2xx HTTP responses:\n * - The function continues with standard stream processing.\n *\n * For non-2xx HTTP responses:\n * - If the response body is defined, it asynchronously extracts and decodes the response body.\n * - It then creates a custom ReadableStream to propagate a detailed error message.\n *\n * @param {Response} response - The response.\n * @param {AIStreamParser} customParser - The custom parser function.\n * @param {AIStreamCallbacksAndOptions} callbacks - The callbacks.\n * @return {ReadableStream} The AIStream.\n * @throws Will throw an error if the response is not OK.\n */\nexport function AIStream(\n response: Response,\n customParser?: AIStreamParser,\n callbacks?: AIStreamCallbacksAndOptions,\n): ReadableStream<Uint8Array> {\n if (!response.ok) {\n if (response.body) {\n const reader = response.body.getReader();\n return new ReadableStream({\n async start(controller) {\n const { done, value } = await reader.read();\n if (!done) {\n const errorText = new TextDecoder().decode(value);\n controller.error(new Error(`Response error: ${errorText}`));\n }\n },\n });\n } else {\n return new ReadableStream({\n start(controller) {\n controller.error(new Error('Response error: No response body'));\n },\n });\n }\n }\n\n const responseBodyStream = response.body || createEmptyReadableStream();\n\n return responseBodyStream\n .pipeThrough(createEventStreamTransformer(customParser))\n .pipeThrough(createCallbacksTransformer(callbacks));\n}\n\n// outputs lines like\n// 0: chunk\n// 0: more chunk\n// 1: a fct call\n// z: added data from Data\n\n/**\n * Creates an empty ReadableStream that immediately closes upon creation.\n * This function is used as a fallback for creating a ReadableStream when the response body is null or undefined,\n * ensuring that the subsequent pipeline processing doesn't fail due to a lack of a stream.\n *\n * @returns {ReadableStream} An empty and closed ReadableStream instance.\n */\nfunction createEmptyReadableStream(): ReadableStream {\n return new ReadableStream({\n start(controller) {\n controller.close();\n },\n });\n}\n\n/**\n * Implements ReadableStream.from(asyncIterable), which isn't documented in MDN and isn't implemented in node.\n * https://github.com/whatwg/streams/commit/8d7a0bf26eb2cc23e884ddbaac7c1da4b91cf2bc\n */\nexport function readableFromAsyncIterable<T>(iterable: AsyncIterable<T>) {\n let it = iterable[Symbol.asyncIterator]();\n return new ReadableStream<T>({\n async pull(controller) {\n const { done, value } = await it.next();\n if (done) controller.close();\n else controller.enqueue(value);\n },\n\n async cancel(reason) {\n await it.return?.(reason);\n },\n });\n}\n","export function convertBase64ToUint8Array(base64String: string) {\n const base64Url = base64String.replace(/-/g, '+').replace(/_/g, '/');\n const latin1string = globalThis.atob(base64Url);\n return Uint8Array.from(latin1string, byte => byte.codePointAt(0)!);\n}\n\nexport function convertUint8ArrayToBase64(array: Uint8Array): string {\n let latin1string = '';\n for (const value of array) {\n latin1string += String.fromCodePoint(value);\n }\n return globalThis.btoa(latin1string);\n}\n","import { ChatCompletionMessageParam } from 'openai/resources';\nimport { LanguageModelV1Prompt } from '../../core';\nimport { convertUint8ArrayToBase64 } from '../../core/util/uint8-utils';\n\nexport function convertToOpenAIChatMessages(\n prompt: LanguageModelV1Prompt,\n): Array<ChatCompletionMessageParam> {\n const messages: Array<ChatCompletionMessageParam> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'image': {\n return {\n type: 'image_url',\n image_url: {\n url: `data:${\n part.mimeType ?? 'image/jpeg'\n };base64,${convertUint8ArrayToBase64(part.image)}`,\n },\n };\n }\n }\n }),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.args),\n },\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: JSON.stringify(toolResponse.result),\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return messages;\n}\n","import MistralClient from '@mistralai/mistralai';\nimport { MistralChatLanguageModel } from './mistral-chat-language-model';\nimport { MistralChatSettings } from './mistral-chat-settings';\nimport { createMistralClient } from './create-mistral-client';\nimport { loadApiKey } from '../../core/language-model/util/load-api-key';\n\nexport function chat(\n settings: Omit<MistralChatSettings, 'client'> & {\n client?: MistralClient;\n apiKey?: string;\n },\n) {\n const { client, apiKey, ...remainingSettings } = settings;\n return new MistralChatLanguageModel(\n { ...remainingSettings },\n {\n client: async () => {\n if (client) {\n return client;\n }\n\n return createMistralClient({\n apiKey: loadApiKey({\n apiKey,\n environmentVariableName: 'MISTRAL_API_KEY',\n description: 'Mistral',\n }),\n });\n },\n },\n );\n}\n","export class UnsupportedFunctionalityError extends Error {\n readonly functionality: string;\n readonly provider: string;\n\n constructor({\n provider,\n functionality,\n }: {\n provider: string;\n functionality: string;\n }) {\n super(\n `Functionality not supported by the provider. ` +\n `Provider: ${provider}.\\n` +\n `Functionality: ${functionality}`,\n );\n\n this.name = 'UnsupportedFunctionalityError';\n\n this.provider = provider;\n this.functionality = functionality;\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n provider: this.provider,\n functionality: this.functionality,\n };\n }\n}\n","import MistralClient, { ToolType } from '@mistralai/mistralai';\nimport { LastArrayElement } from 'type-fest';\nimport {\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '../../core';\n\ntype MistralChatMessage = LastArrayElement<\n Parameters<MistralClient['chat']>[0]['messages']\n>;\n\nexport function convertToMistralChatPrompt(\n prompt: LanguageModelV1Prompt,\n): Array<MistralChatMessage> {\n const messages: Array<MistralChatMessage> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'image': {\n throw new UnsupportedFunctionalityError({\n provider: 'mistral.chat',\n functionality: 'image-part',\n });\n }\n }\n })\n .join(''),\n });\n\n break;\n }\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.args),\n },\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls:\n toolCalls.length > 0\n ? toolCalls.map(({ function: { name, arguments: args } }) => ({\n id: 'null',\n type: 'function' as ToolType,\n function: { name, arguments: args },\n }))\n : undefined,\n });\n\n break;\n }\n case 'tool': {\n for (const toolResponse of content) {\n messages.push({\n role: 'tool',\n name: toolResponse.toolName,\n content: JSON.stringify(toolResponse.result),\n });\n }\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return messages;\n}\n","import MistralClient, {\n ChatCompletionResponseChunk,\n ResponseFormat,\n ToolChoice,\n} from '@mistralai/mistralai';\nimport { LanguageModel, LanguageModelStreamPart } from '../../core';\nimport { readableFromAsyncIterable } from '../../streams/ai-stream';\nimport { convertToMistralChatPrompt } from './convert-to-mistral-chat-prompt';\nimport { MistralChatSettings } from './mistral-chat-settings';\nimport { LanguageModelV1CallWarning } from '../../core/language-model/v1/language-model-v1-call-warning';\n\nexport class MistralChatLanguageModel implements LanguageModel {\n readonly settings: MistralChatSettings;\n\n readonly defaultObjectGenerationMode = 'json';\n\n private readonly getClient: () => Promise<MistralClient>;\n\n constructor(\n settings: MistralChatSettings,\n config: {\n client: () => Promise<MistralClient>;\n },\n ) {\n this.settings = settings;\n this.getClient = config.client;\n }\n\n private get basePrompt() {\n return {\n model: this.settings.id,\n safePrompt: this.settings.safePrompt,\n };\n }\n\n private getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n seed,\n }: Parameters<LanguageModel['doGenerate']>[0]): {\n args: Parameters<MistralClient['chat']>[0];\n warnings: LanguageModelV1CallWarning[];\n } {\n const type = mode.type;\n const messages = convertToMistralChatPrompt(prompt);\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n // TODO standardize temperature scale\n const standardizedSettings = {\n maxTokens,\n temperature,\n topP,\n randomSeed: seed,\n };\n\n switch (type) {\n case 'regular': {\n return {\n args: {\n ...this.basePrompt,\n ...standardizedSettings,\n messages,\n // TODO tools\n },\n warnings,\n };\n }\n\n case 'object-json': {\n return {\n args: {\n ...this.basePrompt,\n ...standardizedSettings,\n responseFormat: { type: 'json_object' } as ResponseFormat,\n messages,\n },\n warnings,\n };\n }\n\n case 'object-tool': {\n return {\n args: {\n ...this.basePrompt,\n ...standardizedSettings,\n toolChoice: 'any' as ToolChoice,\n tools: [\n {\n type: 'function',\n function: {\n name: mode.tool.name,\n description: mode.tool.description ?? '',\n parameters: mode.tool.parameters,\n },\n },\n ],\n messages,\n },\n warnings,\n };\n }\n\n case 'object-grammar': {\n throw new Error('Grammar mode not supported by Mistral');\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModel['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModel['doGenerate']>>> {\n const client = await this.getClient();\n const { args, warnings } = this.getArgs(options);\n const clientResponse = await client.chat(args);\n\n // Note: correct types not supported by MistralClient as of 2024-Feb-28\n const message = clientResponse.choices[0].message as any;\n\n return {\n text: message.content,\n toolCalls: message.tool_calls?.map((toolCall: any) => ({\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n args: toolCall.function.arguments,\n })),\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModel['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModel['doStream']>>> {\n const client = await this.getClient();\n const { args, warnings } = this.getArgs(options);\n const response = client.chatStream(args);\n\n return {\n warnings,\n stream: readableFromAsyncIterable(response).pipeThrough(\n new TransformStream<\n ChatCompletionResponseChunk,\n LanguageModelStreamPart\n >({\n transform(chunk, controller) {\n if (chunk.choices?.[0].delta == null) {\n return;\n }\n\n const delta = chunk.choices[0].delta;\n\n if (delta.content != null) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: delta.content,\n });\n }\n\n // Note: Mistral does not support tool streaming as of 2024-Feb-29\n // The result come in a single chunk as content.\n if (options.mode.type === 'object-tool' && delta.content != null) {\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallId: delta.tool_calls?.[0]?.id ?? '', // TODO empty?\n toolName: delta.tool_calls?.[0]?.function.name ?? '', // TODO empty?\n argsTextDelta: delta.content,\n });\n }\n },\n }),\n ),\n };\n }\n}\n","import MistralClient from '@mistralai/mistralai';\n\n/**\n * Creates an Mistral client (optional peer dependency) on demand.\n *\n * This avoids error when the peer dependency is not installed and the provider is not used.\n * Support ESM and CommonJS module loading.\n * Hardcoded module name to allow for webpack bundling.\n */\nexport async function createMistralClient({\n apiKey,\n}: {\n apiKey: string;\n}): Promise<MistralClient> {\n let MistralClient: any;\n\n try {\n // CommonJS Module loading:\n MistralClient = require('@mistralai/mistralai').default;\n } catch (error) {\n try {\n // attempt ES Module loading:\n MistralClient = (await import('@mistralai/mistralai')).default;\n } catch (error) {\n throw new Error(`Failed to load '${module}' module dynamically.`);\n }\n }\n\n return new MistralClient(apiKey);\n}\n","import OpenAI from 'openai';\nimport { loadApiKey } from '../../core/language-model/util/load-api-key';\nimport { createOpenAIClient } from './create-openai-client';\nimport { OpenAIChatLanguageModel } from './openai-chat-language-model';\nimport { OpenAIChatSettings } from './openai-chat-settings';\n\nexport function chat(\n settings: OpenAIChatSettings & {\n client?: OpenAI;\n apiKey?: string;\n },\n) {\n const { client, apiKey, ...remainingSettings } = settings;\n return new OpenAIChatLanguageModel<OpenAIChatSettings>(\n { ...remainingSettings },\n {\n client: async () => {\n if (client) {\n return client;\n }\n\n return createOpenAIClient({\n apiKey: loadApiKey({\n apiKey,\n environmentVariableName: 'OPENAI_API_KEY',\n description: 'OpenAI',\n }),\n });\n },\n\n mapSettings: settings => ({\n model: settings.id,\n logit_bias: settings.logitBias,\n }),\n },\n );\n}\n","import OpenAI from 'openai';\nimport { loadApiKey } from '../../core/language-model/util/load-api-key';\nimport { createOpenAIClient } from '../openai/create-openai-client';\nimport { OpenAIChatLanguageModel } from '../openai/openai-chat-language-model';\nimport { PerplexityChatSettings } from './perplexity-chat-settings';\n\nexport function chat(\n settings: PerplexityChatSettings & {\n client?: OpenAI;\n apiKey?: string;\n },\n) {\n const { client, apiKey, ...remainingSettings } = settings;\n return new OpenAIChatLanguageModel(\n { ...remainingSettings },\n {\n client: async () => {\n if (client) {\n return client;\n }\n\n return createOpenAIClient({\n apiKey: loadApiKey({\n apiKey,\n environmentVariableName: 'PERPLEXITY_API_KEY',\n description: 'Perplexity',\n }),\n baseURL: 'https://api.perplexity.ai/',\n });\n },\n\n mapSettings: settings => ({\n model: settings.id,\n top_k: settings.topK,\n }),\n },\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAa,YAAA,UAAU;;;;;;;;;;AC0BZ,YAAA,OAAO;AACP,YAAA,OAAkC;AAClC,YAAA,QAAoC;AACpC,YAAA,UAAwC;AACxC,YAAA,WAA0C;AAC1C,YAAA,UAAwC;AACxC,YAAA,WAA0C;AAC1C,YAAA,OAAkC;AAClC,YAAA,OAAkC;AAClC,YAAA,iBAAsD;AACtD,YAAA,6BAA8E;AAC9E,YAAA,kBAAwD;AACxD,YAAA,eAAkD;AAClD,YAAA,iBAAsD;AAEjE,aAAgB,SAAS,OAAc,UAA6B,EAAE,MAAM,MAAK,GAAE;AACjF,UAAI,QAAA,MAAM;AACR,cAAM,IAAI,MACR,mCAAmC,MAAM,IAAI,gDAAgD;;AAGjG,UAAI,QAAA,MAAM;AACR,cAAM,IAAI,MAAM,gCAAgC,MAAM,IAAI,oCAAoC,QAAA,IAAI,KAAK;;AAEzG,cAAA,OAAO,QAAQ;AACf,cAAA,OAAO,MAAM;AACb,cAAA,QAAQ,MAAM;AACd,cAAA,UAAU,MAAM;AAChB,cAAA,WAAW,MAAM;AACjB,cAAA,UAAU,MAAM;AAChB,cAAA,WAAW,MAAM;AACjB,cAAA,OAAO,MAAM;AACb,cAAA,OAAO,MAAM;AACb,cAAA,iBAAiB,MAAM;AACvB,cAAA,6BAA6B,MAAM;AACnC,cAAA,kBAAkB,MAAM;AACxB,cAAA,eAAe,MAAM;AACrB,cAAA,iBAAiB,MAAM;IACzB;AAvBA,YAAA,WAAA;;;;;ACzCA;AAAA,2HAAAA,SAAA;AAAA;AAOA,KAAC,SAAS,GAAE,GAAE;AAAC,kBAAU,OAAO,WAAS,eAAa,OAAOA,UAAO,EAAE,OAAO,IAAE,cAAY,OAAO,UAAQ,OAAO,MAAI,OAAO,CAAC,SAAS,GAAE,CAAC,IAAE,GAAG,IAAE,eAAa,OAAO,aAAW,aAAW,KAAG,MAAM,qBAAmB,CAAC,CAAC;AAAA,IAAC,EAAE,SAAM,SAAS,GAAE;AAAC;AAAa,YAAM,IAAE,cAAY,OAAO,UAAQ,YAAU,OAAO,OAAO,WAAS,SAAO,CAAAC,OAAG,UAAUA,EAAC;AAAI,eAAS,IAAG;AAAA,MAAC;AAAC,eAAS,EAAEA,IAAE;AAAC,eAAM,YAAU,OAAOA,MAAG,SAAOA,MAAG,cAAY,OAAOA;AAAA,MAAC;AAAC,YAAM,IAAE;AAAE,eAAS,EAAEA,IAAEC,IAAE;AAAC,YAAG;AAAC,iBAAO,eAAeD,IAAE,QAAO,EAAC,OAAMC,IAAE,cAAa,KAAE,CAAC;AAAA,QAAC,SAAOD,IAAE;AAAA,QAAC;AAAA,MAAC;AAAC,YAAM,IAAE,SAAQ,IAAE,QAAQ,UAAU,MAAK,IAAE,QAAQ,QAAQ,KAAK,CAAC,GAAE,IAAE,QAAQ,OAAO,KAAK,CAAC;AAAE,eAAS,EAAEA,IAAE;AAAC,eAAO,IAAI,EAAEA,EAAC;AAAA,MAAC;AAAC,eAAS,EAAEA,IAAE;AAAC,eAAO,EAAEA,EAAC;AAAA,MAAC;AAAC,eAAS,EAAEA,IAAE;AAAC,eAAO,EAAEA,EAAC;AAAA,MAAC;AAAC,eAAS,EAAEA,IAAEC,IAAEC,IAAE;AAAC,eAAO,EAAE,KAAKF,IAAEC,IAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,EAAEF,IAAEC,IAAEC,IAAE;AAAC,UAAE,EAAEF,IAAEC,IAAEC,EAAC,GAAE,QAAO,CAAC;AAAA,MAAC;AAAC,eAAS,EAAEF,IAAEC,IAAE;AAAC,UAAED,IAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,EAAED,IAAEC,IAAE;AAAC,UAAED,IAAE,QAAOC,EAAC;AAAA,MAAC;AAAC,eAAS,EAAED,IAAEC,IAAEC,IAAE;AAAC,eAAO,EAAEF,IAAEC,IAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,EAAEF,IAAE;AAAC,UAAEA,IAAE,QAAO,CAAC;AAAA,MAAC;AAAC,UAAI,IAAE,CAAAA,OAAG;AAAC,YAAG,cAAY,OAAO;AAAe,cAAE;AAAA,aAAmB;AAAC,gBAAMA,KAAE,EAAE,MAAM;AAAE,cAAE,CAAAC,OAAG,EAAED,IAAEC,EAAC;AAAA,QAAC;AAAC,eAAO,EAAED,EAAC;AAAA,MAAC;AAAE,eAAS,EAAEA,IAAEC,IAAEC,IAAE;AAAC,YAAG,cAAY,OAAOF;AAAE,gBAAM,IAAI,UAAU,4BAA4B;AAAE,eAAO,SAAS,UAAU,MAAM,KAAKA,IAAEC,IAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,EAAEF,IAAEC,IAAEC,IAAE;AAAC,YAAG;AAAC,iBAAO,EAAE,EAAEF,IAAEC,IAAEC,EAAC,CAAC;AAAA,QAAC,SAAOF,IAAE;AAAC,iBAAO,EAAEA,EAAC;AAAA,QAAC;AAAA,MAAC;AAAA,MAAC,MAAM,EAAC;AAAA,QAAC,cAAa;AAAC,eAAK,UAAQ,GAAE,KAAK,QAAM,GAAE,KAAK,SAAO,EAAC,WAAU,CAAC,GAAE,OAAM,OAAM,GAAE,KAAK,QAAM,KAAK,QAAO,KAAK,UAAQ,GAAE,KAAK,QAAM;AAAA,QAAC;AAAA,QAAC,IAAI,SAAQ;AAAC,iBAAO,KAAK;AAAA,QAAK;AAAA,QAAC,KAAKA,IAAE;AAAC,gBAAMC,KAAE,KAAK;AAAM,cAAIC,KAAED;AAAE,oBAAQA,GAAE,UAAU,WAASC,KAAE,EAAC,WAAU,CAAC,GAAE,OAAM,OAAM,IAAGD,GAAE,UAAU,KAAKD,EAAC,GAAEE,OAAID,OAAI,KAAK,QAAMC,IAAED,GAAE,QAAMC,KAAG,EAAE,KAAK;AAAA,QAAK;AAAA,QAAC,QAAO;AAAC,gBAAMF,KAAE,KAAK;AAAO,cAAIC,KAAED;AAAE,gBAAME,KAAE,KAAK;AAAQ,cAAIC,KAAED,KAAE;AAAE,gBAAME,KAAEJ,GAAE,WAAUK,KAAED,GAAEF,EAAC;AAAE,iBAAO,UAAQC,OAAIF,KAAED,GAAE,OAAMG,KAAE,IAAG,EAAE,KAAK,OAAM,KAAK,UAAQA,IAAEH,OAAIC,OAAI,KAAK,SAAOA,KAAGG,GAAEF,EAAC,IAAE,QAAOG;AAAA,QAAC;AAAA,QAAC,QAAQL,IAAE;AAAC,cAAIC,KAAE,KAAK,SAAQC,KAAE,KAAK,QAAOC,KAAED,GAAE;AAAU,iBAAK,EAAED,OAAIE,GAAE,UAAQ,WAASD,GAAE,SAAOD,OAAIE,GAAE,WAASD,KAAEA,GAAE,OAAMC,KAAED,GAAE,WAAUD,KAAE,GAAE,MAAIE,GAAE;AAAU,YAAAH,GAAEG,GAAEF,EAAC,CAAC,GAAE,EAAEA;AAAA,QAAC;AAAA,QAAC,OAAM;AAAC,gBAAMD,KAAE,KAAK,QAAOC,KAAE,KAAK;AAAQ,iBAAOD,GAAE,UAAUC,EAAC;AAAA,QAAC;AAAA,MAAC;AAAC,YAAM,IAAE,EAAE,gBAAgB,GAAE,IAAE,EAAE,gBAAgB,GAAE,IAAE,EAAE,iBAAiB,GAAE,IAAE,EAAE,eAAe,GAAE,IAAE,EAAE,kBAAkB;AAAE,eAAS,EAAED,IAAEC,IAAE;AAAC,QAAAD,GAAE,uBAAqBC,IAAEA,GAAE,UAAQD,IAAE,eAAaC,GAAE,SAAO,EAAED,EAAC,IAAE,aAAWC,GAAE,SAAO,SAASD,IAAE;AAAC,YAAEA,EAAC,GAAE,EAAEA,EAAC;AAAA,QAAC,EAAEA,EAAC,IAAE,EAAEA,IAAEC,GAAE,YAAY;AAAA,MAAC;AAAC,eAAS,EAAED,IAAEC,IAAE;AAAC,eAAO,GAAGD,GAAE,sBAAqBC,EAAC;AAAA,MAAC;AAAC,eAAS,EAAED,IAAE;AAAC,cAAMC,KAAED,GAAE;AAAqB,uBAAaC,GAAE,SAAO,EAAED,IAAE,IAAI,UAAU,kFAAkF,CAAC,IAAE,SAASA,IAAEC,IAAE;AAAC,YAAED,IAAEC,EAAC;AAAA,QAAC,EAAED,IAAE,IAAI,UAAU,kFAAkF,CAAC,GAAEC,GAAE,0BAA0B,CAAC,EAAE,GAAEA,GAAE,UAAQ,QAAOD,GAAE,uBAAqB;AAAA,MAAM;AAAC,eAAS,EAAEA,IAAE;AAAC,eAAO,IAAI,UAAU,YAAUA,KAAE,mCAAmC;AAAA,MAAC;AAAC,eAAS,EAAEA,IAAE;AAAC,QAAAA,GAAE,iBAAe,EAAG,CAACC,IAAEC,OAAI;AAAC,UAAAF,GAAE,yBAAuBC,IAAED,GAAE,wBAAsBE;AAAA,QAAC,CAAE;AAAA,MAAC;AAAC,eAAS,EAAEF,IAAEC,IAAE;AAAC,UAAED,EAAC,GAAE,EAAEA,IAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,EAAED,IAAEC,IAAE;AAAC,mBAASD,GAAE,0BAAwB,EAAEA,GAAE,cAAc,GAAEA,GAAE,sBAAsBC,EAAC,GAAED,GAAE,yBAAuB,QAAOA,GAAE,wBAAsB;AAAA,MAAO;AAAC,eAAS,EAAEA,IAAE;AAAC,mBAASA,GAAE,2BAAyBA,GAAE,uBAAuB,MAAM,GAAEA,GAAE,yBAAuB,QAAOA,GAAE,wBAAsB;AAAA,MAAO;AAAC,YAAM,IAAE,OAAO,YAAU,SAASA,IAAE;AAAC,eAAM,YAAU,OAAOA,MAAG,SAASA,EAAC;AAAA,MAAC,GAAE,IAAE,KAAK,SAAO,SAASA,IAAE;AAAC,eAAOA,KAAE,IAAE,KAAK,KAAKA,EAAC,IAAE,KAAK,MAAMA,EAAC;AAAA,MAAC;AAAE,eAAS,EAAEA,IAAEC,IAAE;AAAC,YAAG,WAASD,OAAI,YAAU,QAAOE,KAAEF,OAAI,cAAY,OAAOE;AAAG,gBAAM,IAAI,UAAU,GAAGD,EAAC,oBAAoB;AAAE,YAAIC;AAAA,MAAC;AAAC,eAAS,EAAEF,IAAEC,IAAE;AAAC,YAAG,cAAY,OAAOD;AAAE,gBAAM,IAAI,UAAU,GAAGC,EAAC,qBAAqB;AAAA,MAAC;AAAC,eAAS,EAAED,IAAEC,IAAE;AAAC,YAAG,CAAC,SAASD,IAAE;AAAC,iBAAM,YAAU,OAAOA,MAAG,SAAOA,MAAG,cAAY,OAAOA;AAAA,QAAC,EAAEA,EAAC;AAAE,gBAAM,IAAI,UAAU,GAAGC,EAAC,oBAAoB;AAAA,MAAC;AAAC,eAAS,EAAED,IAAEC,IAAEC,IAAE;AAAC,YAAG,WAASF;AAAE,gBAAM,IAAI,UAAU,aAAaC,EAAC,oBAAoBC,EAAC,IAAI;AAAA,MAAC;AAAC,eAAS,EAAEF,IAAEC,IAAEC,IAAE;AAAC,YAAG,WAASF;AAAE,gBAAM,IAAI,UAAU,GAAGC,EAAC,oBAAoBC,EAAC,IAAI;AAAA,MAAC;AAAC,eAAS,EAAEF,IAAE;AAAC,eAAO,OAAOA,EAAC;AAAA,MAAC;AAAC,eAAS,EAAEA,IAAE;AAAC,eAAO,MAAIA,KAAE,IAAEA;AAAA,MAAC;AAAC,eAAS,EAAEA,IAAEC,IAAE;AAAC,cAAMC,KAAE,OAAO;AAAiB,YAAIC,KAAE,OAAOH,EAAC;AAAE,YAAGG,KAAE,EAAEA,EAAC,GAAE,CAAC,EAAEA,EAAC;AAAE,gBAAM,IAAI,UAAU,GAAGF,EAAC,yBAAyB;AAAE,YAAGE,KAAE,SAASH,IAAE;AAAC,iBAAO,EAAE,EAAEA,EAAC,CAAC;AAAA,QAAC,EAAEG,EAAC,GAAEA,KAAE,KAAGA,KAAED;AAAE,gBAAM,IAAI,UAAU,GAAGD,EAAC,0CAA0CC,EAAC,aAAa;AAAE,eAAO,EAAEC,EAAC,KAAG,MAAIA,KAAEA,KAAE;AAAA,MAAC;AAAC,eAAS,EAAEH,IAAE;AAAC,YAAG,CAAC,EAAEA,EAAC;AAAE,iBAAM;AAAG,YAAG,cAAY,OAAOA,GAAE;AAAU,iBAAM;AAAG,YAAG;AAAC,iBAAM,aAAW,OAAOA,GAAE;AAAA,QAAM,SAAOA,IAAE;AAAC,iBAAM;AAAA,QAAE;AAAA,MAAC;AAAC,eAAS,EAAEA,IAAE;AAAC,YAAG,CAAC,EAAEA,EAAC;AAAE,iBAAM;AAAG,YAAG,cAAY,OAAOA,GAAE;AAAU,iBAAM;AAAG,YAAG;AAAC,iBAAM,aAAW,OAAOA,GAAE;AAAA,QAAM,SAAOA,IAAE;AAAC,iBAAM;AAAA,QAAE;AAAA,MAAC;AAAC,eAAS,EAAEA,IAAEC,IAAE;AAAC,YAAG,CAAC,GAAGD,EAAC;AAAE,gBAAM,IAAI,UAAU,GAAGC,EAAC,2BAA2B;AAAA,MAAC;AAAC,eAAS,EAAED,IAAEC,IAAE;AAAC,QAAAD,GAAE,QAAQ,cAAc,KAAKC,EAAC;AAAA,MAAC;AAAC,eAAS,EAAED,IAAEC,IAAEC,IAAE;AAAC,cAAMC,KAAEH,GAAE,QAAQ,cAAc,MAAM;AAAE,QAAAE,KAAEC,GAAE,YAAY,IAAEA,GAAE,YAAYF,EAAC;AAAA,MAAC;AAAC,eAAS,EAAED,IAAE;AAAC,eAAOA,GAAE,QAAQ,cAAc;AAAA,MAAM;AAAC,eAAS,EAAEA,IAAE;AAAC,cAAMC,KAAED,GAAE;AAAQ,eAAO,WAASC,MAAG,CAAC,CAAC,EAAEA,EAAC;AAAA,MAAC;AAAA,MAAC,MAAM,4BAA2B;AAAA,QAAC,YAAYD,IAAE;AAAC,cAAG,EAAEA,IAAE,GAAE,6BAA6B,GAAE,EAAEA,IAAE,iBAAiB,GAAE,GAAGA,EAAC;AAAE,kBAAM,IAAI,UAAU,6EAA6E;AAAE,YAAE,MAAKA,EAAC,GAAE,KAAK,gBAAc,IAAI;AAAA,QAAC;AAAA,QAAC,IAAI,SAAQ;AAAC,iBAAO,EAAE,IAAI,IAAE,KAAK,iBAAe,EAAE,GAAG,QAAQ,CAAC;AAAA,QAAC;AAAA,QAAC,OAAOA,IAAE;AAAC,iBAAO,EAAE,IAAI,IAAE,WAAS,KAAK,uBAAqB,EAAE,EAAE,QAAQ,CAAC,IAAE,EAAE,MAAKA,EAAC,IAAE,EAAE,GAAG,QAAQ,CAAC;AAAA,QAAC;AAAA,QAAC,OAAM;AAAC,cAAG,CAAC,EAAE,IAAI;AAAE,mBAAO,EAAE,GAAG,MAAM,CAAC;AAAE,cAAG,WAAS,KAAK;AAAqB,mBAAO,EAAE,EAAE,WAAW,CAAC;AAAE,cAAIA,IAAEC;AAAE,gBAAMC,KAAE,EAAG,CAACA,IAAEC,OAAI;AAAC,YAAAH,KAAEE,IAAED,KAAEE;AAAA,UAAC,CAAE;AAAE,iBAAO,SAASH,IAAEC,IAAE;AAAC,kBAAMC,KAAEF,GAAE;AAAqB,YAAAE,GAAE,aAAW,MAAG,aAAWA,GAAE,SAAOD,GAAE,YAAY,IAAE,cAAYC,GAAE,SAAOD,GAAE,YAAYC,GAAE,YAAY,IAAEA,GAAE,0BAA0B,CAAC,EAAED,EAAC;AAAA,UAAC,EAAE,MAAK,EAAC,aAAY,CAAAA,OAAGD,GAAE,EAAC,OAAMC,IAAE,MAAK,MAAE,CAAC,GAAE,aAAY,MAAID,GAAE,EAAC,OAAM,QAAO,MAAK,KAAE,CAAC,GAAE,aAAY,CAAAA,OAAGC,GAAED,EAAC,EAAC,CAAC,GAAEE;AAAA,QAAC;AAAA,QAAC,cAAa;AAAC,cAAG,CAAC,EAAE,IAAI;AAAE,kBAAM,GAAG,aAAa;AAAE,qBAAS,KAAK,wBAAsB,SAASF,IAAE;AAAC,cAAEA,EAAC;AAAE,kBAAMC,KAAE,IAAI,UAAU,qBAAqB;AAAE,eAAGD,IAAEC,EAAC;AAAA,UAAC,EAAE,IAAI;AAAA,QAAC;AAAA,MAAC;AAAC,eAAS,EAAED,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,eAAe,KAAGA,cAAa;AAAA,MAA4B;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,cAAMC,KAAEF,GAAE;AAAc,QAAAA,GAAE,gBAAc,IAAI,KAAEE,GAAE,QAAS,CAAAF,OAAG;AAAC,UAAAA,GAAE,YAAYC,EAAC;AAAA,QAAC,CAAE;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,eAAO,IAAI,UAAU,yCAAyCA,EAAC,oDAAoD;AAAA,MAAC;AAAC,aAAO,iBAAiB,4BAA4B,WAAU,EAAC,QAAO,EAAC,YAAW,KAAE,GAAE,MAAK,EAAC,YAAW,KAAE,GAAE,aAAY,EAAC,YAAW,KAAE,GAAE,QAAO,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,EAAE,4BAA4B,UAAU,QAAO,QAAQ,GAAE,EAAE,4BAA4B,UAAU,MAAK,MAAM,GAAE,EAAE,4BAA4B,UAAU,aAAY,aAAa,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAe,4BAA4B,WAAU,EAAE,aAAY,EAAC,OAAM,+BAA8B,cAAa,KAAE,CAAC;AAAA,MAAE,MAAM,GAAE;AAAA,QAAC,YAAYA,IAAEC,IAAE;AAAC,eAAK,kBAAgB,QAAO,KAAK,cAAY,OAAG,KAAK,UAAQD,IAAE,KAAK,iBAAeC;AAAA,QAAC;AAAA,QAAC,OAAM;AAAC,gBAAMD,KAAE,MAAI,KAAK,WAAW;AAAE,iBAAO,KAAK,kBAAgB,KAAK,kBAAgB,EAAE,KAAK,iBAAgBA,IAAEA,EAAC,IAAEA,GAAE,GAAE,KAAK;AAAA,QAAe;AAAA,QAAC,OAAOA,IAAE;AAAC,gBAAMC,KAAE,MAAI,KAAK,aAAaD,EAAC;AAAE,iBAAO,KAAK,kBAAgB,EAAE,KAAK,iBAAgBC,IAAEA,EAAC,IAAEA,GAAE;AAAA,QAAC;AAAA,QAAC,aAAY;AAAC,cAAG,KAAK;AAAY,mBAAO,QAAQ,QAAQ,EAAC,OAAM,QAAO,MAAK,KAAE,CAAC;AAAE,gBAAMD,KAAE,KAAK;AAAQ,iBAAO,WAASA,KAAE,EAAE,EAAE,SAAS,CAAC,IAAE,EAAEA,GAAE,KAAK,GAAG,CAAAA,OAAG;AAAC,gBAAIC;AAAE,mBAAO,KAAK,kBAAgB,QAAOD,GAAE,SAAO,KAAK,cAAY,MAAG,UAAQC,KAAE,KAAK,YAAU,WAASA,MAAGA,GAAE,YAAY,GAAE,KAAK,UAAQ,SAAQD;AAAA,UAAC,GAAI,CAAAA,OAAG;AAAC,gBAAIC;AAAE,kBAAM,KAAK,kBAAgB,QAAO,KAAK,cAAY,MAAG,UAAQA,KAAE,KAAK,YAAU,WAASA,MAAGA,GAAE,YAAY,GAAE,KAAK,UAAQ,QAAOD;AAAA,UAAC,CAAE;AAAA,QAAC;AAAA,QAAC,aAAaA,IAAE;AAAC,cAAG,KAAK;AAAY,mBAAO,QAAQ,QAAQ,EAAC,OAAMA,IAAE,MAAK,KAAE,CAAC;AAAE,eAAK,cAAY;AAAG,gBAAMC,KAAE,KAAK;AAAQ,cAAG,WAASA;AAAE,mBAAO,EAAE,EAAE,kBAAkB,CAAC;AAAE,cAAG,KAAK,UAAQ,QAAO,CAAC,KAAK,gBAAe;AAAC,kBAAMC,KAAED,GAAE,OAAOD,EAAC;AAAE,mBAAOC,GAAE,YAAY,GAAE,EAAEC,IAAG,OAAK,EAAC,OAAMF,IAAE,MAAK,KAAE,EAAG;AAAA,UAAC;AAAC,iBAAOC,GAAE,YAAY,GAAE,EAAE,EAAC,OAAMD,IAAE,MAAK,KAAE,CAAC;AAAA,QAAC;AAAA,MAAC;AAAC,YAAM,KAAG,EAAC,OAAM;AAAC,eAAO,GAAG,IAAI,IAAE,KAAK,mBAAmB,KAAK,IAAE,EAAE,GAAG,MAAM,CAAC;AAAA,MAAC,GAAE,OAAOA,IAAE;AAAC,eAAO,GAAG,IAAI,IAAE,KAAK,mBAAmB,OAAOA,EAAC,IAAE,EAAE,GAAG,QAAQ,CAAC;AAAA,MAAC,EAAC;AAAE,eAAS,GAAGA,IAAE;AAAC,YAAG,CAAC,EAAEA,EAAC;AAAE,iBAAM;AAAG,YAAG,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,oBAAoB;AAAE,iBAAM;AAAG,YAAG;AAAC,iBAAOA,GAAE,8BAA8B;AAAA,QAAE,SAAOA,IAAE;AAAC,iBAAM;AAAA,QAAE;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAO,IAAI,UAAU,+BAA+BA,EAAC,mDAAmD;AAAA,MAAC;AAAC,kBAAU,OAAO,EAAE,iBAAe,OAAO,eAAe,IAAG,EAAE,eAAc,EAAC,QAAO;AAAC,eAAO;AAAA,MAAI,GAAE,UAAS,MAAG,cAAa,KAAE,CAAC;AAAE,YAAM,KAAG,OAAO,SAAO,SAASA,IAAE;AAAC,eAAOA,MAAGA;AAAA,MAAC;AAAE,eAAS,GAAGA,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,YAAI,WAAWJ,EAAC,EAAE,IAAI,IAAI,WAAWE,IAAEC,IAAEC,EAAC,GAAEH,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,cAAMC,KAAE,SAASD,IAAEC,IAAEC,IAAE;AAAC,cAAGF,GAAE;AAAM,mBAAOA,GAAE,MAAMC,IAAEC,EAAC;AAAE,gBAAMC,KAAED,KAAED,IAAEG,KAAE,IAAI,YAAYD,EAAC;AAAE,iBAAO,GAAGC,IAAE,GAAEJ,IAAEC,IAAEE,EAAC,GAAEC;AAAA,QAAC,EAAEJ,GAAE,QAAOA,GAAE,YAAWA,GAAE,aAAWA,GAAE,UAAU;AAAE,eAAO,IAAI,WAAWC,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,cAAMC,KAAED,GAAE,OAAO,MAAM;AAAE,eAAOA,GAAE,mBAAiBC,GAAE,MAAKD,GAAE,kBAAgB,MAAIA,GAAE,kBAAgB,IAAGC,GAAE;AAAA,MAAK;AAAC,eAAS,GAAGD,IAAEC,IAAEC,IAAE;AAAC,YAAG,YAAU,QAAOC,KAAED,OAAI,GAAGC,EAAC,KAAGA,KAAE,KAAGD,OAAI,IAAE;AAAE,gBAAM,IAAI,WAAW,sDAAsD;AAAE,YAAIC;AAAE,QAAAH,GAAE,OAAO,KAAK,EAAC,OAAMC,IAAE,MAAKC,GAAC,CAAC,GAAEF,GAAE,mBAAiBE;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAE;AAAC,QAAAA,GAAE,SAAO,IAAI,KAAEA,GAAE,kBAAgB;AAAA,MAAC;AAAA,MAAC,MAAM,0BAAyB;AAAA,QAAC,cAAa;AAAC,gBAAM,IAAI,UAAU,qBAAqB;AAAA,QAAC;AAAA,QAAC,IAAI,OAAM;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,MAAM;AAAE,iBAAO,KAAK;AAAA,QAAK;AAAA,QAAC,QAAQA,IAAE;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,SAAS;AAAE,cAAG,EAAEA,IAAE,GAAE,SAAS,GAAEA,KAAE,EAAEA,IAAE,iBAAiB,GAAE,WAAS,KAAK;AAAwC,kBAAM,IAAI,UAAU,wCAAwC;AAAE,eAAK,MAAM,QAAO,SAASA,IAAEC,IAAE;AAAC,kBAAMC,KAAEF,GAAE,kBAAkB,KAAK;AAAE,gBAAG,aAAWA,GAAE,8BAA8B,QAAO;AAAC,kBAAG,MAAIC;AAAE,sBAAM,IAAI,UAAU,kEAAkE;AAAA,YAAC,OAAK;AAAC,kBAAG,MAAIA;AAAE,sBAAM,IAAI,UAAU,iFAAiF;AAAE,kBAAGC,GAAE,cAAYD,KAAEC,GAAE;AAAW,sBAAM,IAAI,WAAW,2BAA2B;AAAA,YAAC;AAAC,YAAAA,GAAE,SAAOA,GAAE,QAAO,GAAGF,IAAEC,EAAC;AAAA,UAAC,EAAE,KAAK,yCAAwCD,EAAC;AAAA,QAAC;AAAA,QAAC,mBAAmBA,IAAE;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,oBAAoB;AAAE,cAAG,EAAEA,IAAE,GAAE,oBAAoB,GAAE,CAAC,YAAY,OAAOA,EAAC;AAAE,kBAAM,IAAI,UAAU,8CAA8C;AAAE,cAAG,WAAS,KAAK;AAAwC,kBAAM,IAAI,UAAU,wCAAwC;AAAE,UAAAA,GAAE,QAAO,SAASA,IAAEC,IAAE;AAAC,kBAAMC,KAAEF,GAAE,kBAAkB,KAAK;AAAE,gBAAG,aAAWA,GAAE,8BAA8B,QAAO;AAAC,kBAAG,MAAIC,GAAE;AAAW,sBAAM,IAAI,UAAU,kFAAkF;AAAA,YAAC,WAAS,MAAIA,GAAE;AAAW,oBAAM,IAAI,UAAU,iGAAiG;AAAE,gBAAGC,GAAE,aAAWA,GAAE,gBAAcD,GAAE;AAAW,oBAAM,IAAI,WAAW,yDAAyD;AAAE,gBAAGC,GAAE,qBAAmBD,GAAE,OAAO;AAAW,oBAAM,IAAI,WAAW,4DAA4D;AAAE,gBAAGC,GAAE,cAAYD,GAAE,aAAWC,GAAE;AAAW,oBAAM,IAAI,WAAW,yDAAyD;AAAE,kBAAMC,KAAEF,GAAE;AAAW,YAAAC,GAAE,SAAOD,GAAE,QAAO,GAAGD,IAAEG,EAAC;AAAA,UAAC,EAAE,KAAK,yCAAwCH,EAAC;AAAA,QAAC;AAAA,MAAC;AAAC,aAAO,iBAAiB,0BAA0B,WAAU,EAAC,SAAQ,EAAC,YAAW,KAAE,GAAE,oBAAmB,EAAC,YAAW,KAAE,GAAE,MAAK,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,EAAE,0BAA0B,UAAU,SAAQ,SAAS,GAAE,EAAE,0BAA0B,UAAU,oBAAmB,oBAAoB,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAe,0BAA0B,WAAU,EAAE,aAAY,EAAC,OAAM,6BAA4B,cAAa,KAAE,CAAC;AAAA,MAAE,MAAM,6BAA4B;AAAA,QAAC,cAAa;AAAC,gBAAM,IAAI,UAAU,qBAAqB;AAAA,QAAC;AAAA,QAAC,IAAI,cAAa;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,aAAa;AAAE,iBAAO,SAASA,IAAE;AAAC,gBAAG,SAAOA,GAAE,gBAAcA,GAAE,kBAAkB,SAAO,GAAE;AAAC,oBAAMC,KAAED,GAAE,kBAAkB,KAAK,GAAEE,KAAE,IAAI,WAAWD,GAAE,QAAOA,GAAE,aAAWA,GAAE,aAAYA,GAAE,aAAWA,GAAE,WAAW,GAAEE,KAAE,OAAO,OAAO,0BAA0B,SAAS;AAAE,eAAC,SAASH,IAAEC,IAAEC,IAAE;AAAC,gBAAAF,GAAE,0CAAwCC,IAAED,GAAE,QAAME;AAAA,cAAC,EAAEC,IAAEH,IAAEE,EAAC,GAAEF,GAAE,eAAaG;AAAA,YAAC;AAAC,mBAAOH,GAAE;AAAA,UAAY,EAAE,IAAI;AAAA,QAAC;AAAA,QAAC,IAAI,cAAa;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,aAAa;AAAE,iBAAO,GAAG,IAAI;AAAA,QAAC;AAAA,QAAC,QAAO;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,OAAO;AAAE,cAAG,KAAK;AAAgB,kBAAM,IAAI,UAAU,4DAA4D;AAAE,gBAAMA,KAAE,KAAK,8BAA8B;AAAO,cAAG,eAAaA;AAAE,kBAAM,IAAI,UAAU,kBAAkBA,EAAC,2DAA2D;AAAE,WAAC,SAASA,IAAE;AAAC,kBAAMC,KAAED,GAAE;AAA8B,gBAAGA,GAAE,mBAAiB,eAAaC,GAAE;AAAO;AAAO,gBAAGD,GAAE,kBAAgB;AAAE,qBAAO,MAAKA,GAAE,kBAAgB;AAAI,gBAAGA,GAAE,kBAAkB,SAAO,GAAE;AAAC,kBAAGA,GAAE,kBAAkB,KAAK,EAAE,cAAY,GAAE;AAAC,sBAAMC,KAAE,IAAI,UAAU,yDAAyD;AAAE,sBAAM,GAAGD,IAAEC,EAAC,GAAEA;AAAA,cAAC;AAAA,YAAC;AAAC,eAAGD,EAAC,GAAE,GAAGC,EAAC;AAAA,UAAC,EAAE,IAAI;AAAA,QAAC;AAAA,QAAC,QAAQD,IAAE;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,SAAS;AAAE,cAAG,EAAEA,IAAE,GAAE,SAAS,GAAE,CAAC,YAAY,OAAOA,EAAC;AAAE,kBAAM,IAAI,UAAU,oCAAoC;AAAE,cAAG,MAAIA,GAAE;AAAW,kBAAM,IAAI,UAAU,qCAAqC;AAAE,cAAG,MAAIA,GAAE,OAAO;AAAW,kBAAM,IAAI,UAAU,8CAA8C;AAAE,cAAG,KAAK;AAAgB,kBAAM,IAAI,UAAU,8BAA8B;AAAE,gBAAMC,KAAE,KAAK,8BAA8B;AAAO,cAAG,eAAaA;AAAE,kBAAM,IAAI,UAAU,kBAAkBA,EAAC,gEAAgE;AAAE,WAAC,SAASD,IAAEC,IAAE;AAAC,kBAAMC,KAAEF,GAAE;AAA8B,gBAAGA,GAAE,mBAAiB,eAAaE,GAAE;AAAO;AAAO,kBAAMC,KAAEF,GAAE,QAAOG,KAAEH,GAAE,YAAWI,KAAEJ,GAAE,YAAWK,KAAEH;AAAE,gBAAGH,GAAE,kBAAkB,SAAO,GAAE;AAAC,oBAAMC,KAAED,GAAE,kBAAkB,KAAK;AAAE,cAAAC,GAAE,QAAO,GAAE,GAAGD,EAAC,GAAEC,GAAE,SAAOA,GAAE,QAAO,WAASA,GAAE,cAAY,GAAGD,IAAEC,EAAC;AAAA,YAAC;AAAC,gBAAG,EAAEC,EAAC;AAAE,kBAAG,SAASF,IAAE;AAAC,sBAAMC,KAAED,GAAE,8BAA8B;AAAQ,uBAAKC,GAAE,cAAc,SAAO,KAAG;AAAC,sBAAG,MAAID,GAAE;AAAgB;AAAO,qBAAGA,IAAEC,GAAE,cAAc,MAAM,CAAC;AAAA,gBAAC;AAAA,cAAC,EAAED,EAAC,GAAE,MAAI,EAAEE,EAAC;AAAE,mBAAGF,IAAEM,IAAEF,IAAEC,EAAC;AAAA,mBAAM;AAAC,gBAAAL,GAAE,kBAAkB,SAAO,KAAG,GAAGA,EAAC;AAAE,kBAAEE,IAAE,IAAI,WAAWI,IAAEF,IAAEC,EAAC,GAAE,KAAE;AAAA,cAAC;AAAA;AAAM,iBAAGH,EAAC,KAAG,GAAGF,IAAEM,IAAEF,IAAEC,EAAC,GAAE,GAAGL,EAAC,KAAG,GAAGA,IAAEM,IAAEF,IAAEC,EAAC;AAAE,eAAGL,EAAC;AAAA,UAAC,EAAE,MAAKA,EAAC;AAAA,QAAC;AAAA,QAAC,MAAMA,IAAE;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,OAAO;AAAE,aAAG,MAAKA,EAAC;AAAA,QAAC;AAAA,QAAC,CAAC,CAAC,EAAEA,IAAE;AAAC,aAAG,IAAI,GAAE,GAAG,IAAI;AAAE,gBAAMC,KAAE,KAAK,iBAAiBD,EAAC;AAAE,iBAAO,GAAG,IAAI,GAAEC;AAAA,QAAC;AAAA,QAAC,CAAC,CAAC,EAAED,IAAE;AAAC,gBAAMC,KAAE,KAAK;AAA8B,cAAG,KAAK,kBAAgB;AAAE,mBAAO,KAAK,GAAG,MAAKD,EAAC;AAAE,gBAAME,KAAE,KAAK;AAAuB,cAAG,WAASA,IAAE;AAAC,gBAAID;AAAE,gBAAG;AAAC,cAAAA,KAAE,IAAI,YAAYC,EAAC;AAAA,YAAC,SAAOD,IAAE;AAAC,qBAAO,KAAKD,GAAE,YAAYC,EAAC;AAAA,YAAC;AAAC,kBAAME,KAAE,EAAC,QAAOF,IAAE,kBAAiBC,IAAE,YAAW,GAAE,YAAWA,IAAE,aAAY,GAAE,aAAY,GAAE,iBAAgB,YAAW,YAAW,UAAS;AAAE,iBAAK,kBAAkB,KAAKC,EAAC;AAAA,UAAC;AAAC,YAAEF,IAAED,EAAC,GAAE,GAAG,IAAI;AAAA,QAAC;AAAA,QAAC,CAAC,CAAC,IAAG;AAAC,cAAG,KAAK,kBAAkB,SAAO,GAAE;AAAC,kBAAMA,KAAE,KAAK,kBAAkB,KAAK;AAAE,YAAAA,GAAE,aAAW,QAAO,KAAK,oBAAkB,IAAI,KAAE,KAAK,kBAAkB,KAAKA,EAAC;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,+BAA+B,KAAGA,cAAa;AAAA,MAA6B;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,yCAAyC,KAAGA,cAAa;AAAA,MAA0B;AAAC,eAAS,GAAGA,IAAE;AAAC,cAAMC,KAAE,SAASD,IAAE;AAAC,gBAAMC,KAAED,GAAE;AAA8B,cAAG,eAAaC,GAAE;AAAO,mBAAM;AAAG,cAAGD,GAAE;AAAgB,mBAAM;AAAG,cAAG,CAACA,GAAE;AAAS,mBAAM;AAAG,cAAG,EAAEC,EAAC,KAAG,EAAEA,EAAC,IAAE;AAAE,mBAAM;AAAG,cAAG,GAAGA,EAAC,KAAG,GAAGA,EAAC,IAAE;AAAE,mBAAM;AAAG,cAAG,GAAGD,EAAC,IAAE;AAAE,mBAAM;AAAG,iBAAM;AAAA,QAAE,EAAEA,EAAC;AAAE,YAAG,CAACC;AAAE;AAAO,YAAGD,GAAE;AAAS,iBAAO,MAAKA,GAAE,aAAW;AAAI,QAAAA,GAAE,WAAS;AAAG,UAAEA,GAAE,eAAe,GAAG,OAAKA,GAAE,WAAS,OAAGA,GAAE,eAAaA,GAAE,aAAW,OAAG,GAAGA,EAAC,IAAG,OAAQ,CAAAC,QAAI,GAAGD,IAAEC,EAAC,GAAE,KAAM;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,WAAGA,EAAC,GAAEA,GAAE,oBAAkB,IAAI;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,YAAIC,KAAE;AAAG,qBAAWF,GAAE,WAASE,KAAE;AAAI,cAAMC,KAAE,GAAGF,EAAC;AAAE,sBAAYA,GAAE,aAAW,EAAED,IAAEG,IAAED,EAAC,IAAE,SAASF,IAAEC,IAAEC,IAAE;AAAC,gBAAMC,KAAEH,GAAE,QAAQ,kBAAkB,MAAM;AAAE,UAAAE,KAAEC,GAAE,YAAYF,EAAC,IAAEE,GAAE,YAAYF,EAAC;AAAA,QAAC,EAAED,IAAEG,IAAED,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAE;AAAC,cAAMC,KAAED,GAAE,aAAYE,KAAEF,GAAE;AAAY,eAAO,IAAIA,GAAE,gBAAgBA,GAAE,QAAOA,GAAE,YAAWC,KAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAEC,IAAEC,IAAEC,IAAE;AAAC,QAAAH,GAAE,OAAO,KAAK,EAAC,QAAOC,IAAE,YAAWC,IAAE,YAAWC,GAAC,CAAC,GAAEH,GAAE,mBAAiBG;AAAA,MAAC;AAAC,eAAS,GAAGH,IAAEC,IAAEC,IAAEC,IAAE;AAAC,YAAIC;AAAE,YAAG;AAAC,UAAAA,KAAEH,GAAE,MAAMC,IAAEA,KAAEC,EAAC;AAAA,QAAC,SAAOF,IAAE;AAAC,gBAAM,GAAGD,IAAEC,EAAC,GAAEA;AAAA,QAAC;AAAC,WAAGD,IAAEI,IAAE,GAAED,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGH,IAAEC,IAAE;AAAC,QAAAA,GAAE,cAAY,KAAG,GAAGD,IAAEC,GAAE,QAAOA,GAAE,YAAWA,GAAE,WAAW,GAAE,GAAGD,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,cAAMC,KAAED,GAAE,aAAYE,KAAEF,GAAE,cAAYA,GAAE,cAAYC,IAAEE,KAAE,KAAK,IAAIJ,GAAE,iBAAgBC,GAAE,aAAWA,GAAE,WAAW,GAAEI,KAAEJ,GAAE,cAAYG,IAAEE,KAAED,KAAEA,KAAEH;AAAE,YAAIK,KAAEH,IAAEI,KAAE;AAAG,QAAAF,KAAEH,OAAII,KAAED,KAAEL,GAAE,aAAYO,KAAE;AAAI,cAAMC,KAAET,GAAE;AAAO,eAAKO,KAAE,KAAG;AAAC,gBAAML,KAAEO,GAAE,KAAK,GAAEN,KAAE,KAAK,IAAII,IAAEL,GAAE,UAAU,GAAEE,KAAEH,GAAE,aAAWA,GAAE;AAAY,aAAGA,GAAE,QAAOG,IAAEF,GAAE,QAAOA,GAAE,YAAWC,EAAC,GAAED,GAAE,eAAaC,KAAEM,GAAE,MAAM,KAAGP,GAAE,cAAYC,IAAED,GAAE,cAAYC,KAAGH,GAAE,mBAAiBG,IAAE,GAAGH,IAAEG,IAAEF,EAAC,GAAEM,MAAGJ;AAAA,QAAC;AAAC,eAAOK;AAAA,MAAC;AAAC,eAAS,GAAGR,IAAEC,IAAEC,IAAE;AAAC,QAAAA,GAAE,eAAaD;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,cAAIA,GAAE,mBAAiBA,GAAE,mBAAiB,GAAGA,EAAC,GAAE,GAAGA,GAAE,6BAA6B,KAAG,GAAGA,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,iBAAOA,GAAE,iBAAeA,GAAE,aAAa,0CAAwC,QAAOA,GAAE,aAAa,QAAM,MAAKA,GAAE,eAAa;AAAA,MAAK;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAKA,GAAE,kBAAkB,SAAO,KAAG;AAAC,cAAG,MAAIA,GAAE;AAAgB;AAAO,gBAAMC,KAAED,GAAE,kBAAkB,KAAK;AAAE,aAAGA,IAAEC,EAAC,MAAI,GAAGD,EAAC,GAAE,GAAGA,GAAE,+BAA8BC,EAAC;AAAA,QAAE;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAEC,IAAE;AAAC,cAAMC,KAAEF,GAAE,kBAAkB,KAAK;AAAE,WAAGA,EAAC;AAAE,qBAAWA,GAAE,8BAA8B,SAAO,SAASA,IAAEC,IAAE;AAAC,qBAASA,GAAE,cAAY,GAAGD,EAAC;AAAE,gBAAME,KAAEF,GAAE;AAA8B,cAAG,GAAGE,EAAC;AAAE,mBAAK,GAAGA,EAAC,IAAE;AAAG,iBAAGA,IAAE,GAAGF,EAAC,CAAC;AAAA,QAAC,EAAEA,IAAEE,EAAC,IAAE,SAASF,IAAEC,IAAEC,IAAE;AAAC,cAAG,GAAG,GAAED,IAAEC,EAAC,GAAE,WAASA,GAAE;AAAW,mBAAO,GAAGF,IAAEE,EAAC,GAAE,KAAK,GAAGF,EAAC;AAAE,cAAGE,GAAE,cAAYA,GAAE;AAAY;AAAO,aAAGF,EAAC;AAAE,gBAAMG,KAAED,GAAE,cAAYA,GAAE;AAAY,cAAGC,KAAE,GAAE;AAAC,kBAAMF,KAAEC,GAAE,aAAWA,GAAE;AAAY,eAAGF,IAAEE,GAAE,QAAOD,KAAEE,IAAEA,EAAC;AAAA,UAAC;AAAC,UAAAD,GAAE,eAAaC,IAAE,GAAGH,GAAE,+BAA8BE,EAAC,GAAE,GAAGF,EAAC;AAAA,QAAC,EAAEA,IAAEC,IAAEC,EAAC,GAAE,GAAGF,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAOA,GAAE,kBAAkB,MAAM;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,QAAAA,GAAE,iBAAe,QAAOA,GAAE,mBAAiB;AAAA,MAAM;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,cAAMC,KAAEF,GAAE;AAA8B,uBAAaE,GAAE,WAAS,GAAGF,EAAC,GAAE,GAAGA,EAAC,GAAE,GAAGA,EAAC,GAAE,GAAGE,IAAED,EAAC;AAAA,MAAE;AAAC,eAAS,GAAGD,IAAEC,IAAE;AAAC,cAAMC,KAAEF,GAAE,OAAO,MAAM;AAAE,QAAAA,GAAE,mBAAiBE,GAAE,YAAW,GAAGF,EAAC;AAAE,cAAMG,KAAE,IAAI,WAAWD,GAAE,QAAOA,GAAE,YAAWA,GAAE,UAAU;AAAE,QAAAD,GAAE,YAAYE,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGH,IAAE;AAAC,cAAMC,KAAED,GAAE,8BAA8B;AAAO,eAAM,cAAYC,KAAE,OAAK,aAAWA,KAAE,IAAED,GAAE,eAAaA,GAAE;AAAA,MAAe;AAAC,eAAS,GAAGA,IAAEC,IAAEC,IAAE;AAAC,cAAMC,KAAE,OAAO,OAAO,6BAA6B,SAAS;AAAE,YAAIC,IAAEC,IAAEC;AAAE,QAAAF,KAAE,WAASH,GAAE,QAAM,MAAIA,GAAE,MAAME,EAAC,IAAE,MAAI;AAAA,QAAC,GAAEE,KAAE,WAASJ,GAAE,OAAK,MAAIA,GAAE,KAAKE,EAAC,IAAE,MAAI,EAAE,MAAM,GAAEG,KAAE,WAASL,GAAE,SAAO,CAAAD,OAAGC,GAAE,OAAOD,EAAC,IAAE,MAAI,EAAE,MAAM;AAAE,cAAMO,KAAEN,GAAE;AAAsB,YAAG,MAAIM;AAAE,gBAAM,IAAI,UAAU,8CAA8C;AAAE,SAAC,SAASP,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,UAAAL,GAAE,gCAA8BD,IAAEC,GAAE,aAAW,OAAGA,GAAE,WAAS,OAAGA,GAAE,eAAa,MAAKA,GAAE,SAAOA,GAAE,kBAAgB,QAAO,GAAGA,EAAC,GAAEA,GAAE,kBAAgB,OAAGA,GAAE,WAAS,OAAGA,GAAE,eAAaI,IAAEJ,GAAE,iBAAeE,IAAEF,GAAE,mBAAiBG,IAAEH,GAAE,yBAAuBK,IAAEL,GAAE,oBAAkB,IAAI,KAAED,GAAE,4BAA0BC,IAAE,EAAE,EAAEC,GAAE,CAAC,GAAG,OAAKD,GAAE,WAAS,MAAG,GAAGA,EAAC,GAAE,OAAQ,CAAAD,QAAI,GAAGC,IAAED,EAAC,GAAE,KAAM;AAAA,QAAC,EAAEA,IAAEG,IAAEC,IAAEC,IAAEC,IAAEJ,IAAEK,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGP,IAAE;AAAC,eAAO,IAAI,UAAU,uCAAuCA,EAAC,kDAAkD;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAO,IAAI,UAAU,0CAA0CA,EAAC,qDAAqD;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,QAAAD,GAAE,QAAQ,kBAAkB,KAAKC,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,eAAOA,GAAE,QAAQ,kBAAkB;AAAA,MAAM;AAAC,eAAS,GAAGA,IAAE;AAAC,cAAMC,KAAED,GAAE;AAAQ,eAAO,WAASC,MAAG,CAAC,CAAC,GAAGA,EAAC;AAAA,MAAC;AAAC,aAAO,iBAAiB,6BAA6B,WAAU,EAAC,OAAM,EAAC,YAAW,KAAE,GAAE,SAAQ,EAAC,YAAW,KAAE,GAAE,OAAM,EAAC,YAAW,KAAE,GAAE,aAAY,EAAC,YAAW,KAAE,GAAE,aAAY,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,EAAE,6BAA6B,UAAU,OAAM,OAAO,GAAE,EAAE,6BAA6B,UAAU,SAAQ,SAAS,GAAE,EAAE,6BAA6B,UAAU,OAAM,OAAO,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAe,6BAA6B,WAAU,EAAE,aAAY,EAAC,OAAM,gCAA+B,cAAa,KAAE,CAAC;AAAA,MAAE,MAAM,yBAAwB;AAAA,QAAC,YAAYD,IAAE;AAAC,cAAG,EAAEA,IAAE,GAAE,0BAA0B,GAAE,EAAEA,IAAE,iBAAiB,GAAE,GAAGA,EAAC;AAAE,kBAAM,IAAI,UAAU,6EAA6E;AAAE,cAAG,CAAC,GAAGA,GAAE,yBAAyB;AAAE,kBAAM,IAAI,UAAU,6FAA6F;AAAE,YAAE,MAAKA,EAAC,GAAE,KAAK,oBAAkB,IAAI;AAAA,QAAC;AAAA,QAAC,IAAI,SAAQ;AAAC,iBAAO,GAAG,IAAI,IAAE,KAAK,iBAAe,EAAE,GAAG,QAAQ,CAAC;AAAA,QAAC;AAAA,QAAC,OAAOA,IAAE;AAAC,iBAAO,GAAG,IAAI,IAAE,WAAS,KAAK,uBAAqB,EAAE,EAAE,QAAQ,CAAC,IAAE,EAAE,MAAKA,EAAC,IAAE,EAAE,GAAG,QAAQ,CAAC;AAAA,QAAC;AAAA,QAAC,KAAKA,IAAE;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,mBAAO,EAAE,GAAG,MAAM,CAAC;AAAE,cAAG,CAAC,YAAY,OAAOA,EAAC;AAAE,mBAAO,EAAE,IAAI,UAAU,mCAAmC,CAAC;AAAE,cAAG,MAAIA,GAAE;AAAW,mBAAO,EAAE,IAAI,UAAU,oCAAoC,CAAC;AAAE,cAAG,MAAIA,GAAE,OAAO;AAAW,mBAAO,EAAE,IAAI,UAAU,6CAA6C,CAAC;AAAE,cAAGA,GAAE,QAAO,WAAS,KAAK;AAAqB,mBAAO,EAAE,EAAE,WAAW,CAAC;AAAE,cAAIC,IAAEC;AAAE,gBAAMC,KAAE,EAAG,CAACH,IAAEG,OAAI;AAAC,YAAAF,KAAED,IAAEE,KAAEC;AAAA,UAAC,CAAE;AAAE,iBAAO,SAASH,IAAEC,IAAEC,IAAE;AAAC,kBAAMC,KAAEH,GAAE;AAAqB,YAAAG,GAAE,aAAW,MAAG,cAAYA,GAAE,SAAOD,GAAE,YAAYC,GAAE,YAAY,IAAE,SAASH,IAAEC,IAAEC,IAAE;AAAC,oBAAMC,KAAEH,GAAE;AAA8B,kBAAII,KAAE;AAAE,cAAAH,GAAE,gBAAc,aAAWG,KAAEH,GAAE,YAAY;AAAmB,oBAAMI,KAAEJ,GAAE,aAAYK,KAAEL,GAAE,QAAOM,KAAE,EAAC,QAAOD,IAAE,kBAAiBA,GAAE,YAAW,YAAWL,GAAE,YAAW,YAAWA,GAAE,YAAW,aAAY,GAAE,aAAYG,IAAE,iBAAgBC,IAAE,YAAW,OAAM;AAAE,kBAAGL,GAAE,kBAAkB,SAAO;AAAE,uBAAOA,GAAE,kBAAkB,KAAKO,EAAC,GAAE,KAAK,GAAGJ,IAAED,EAAC;AAAE,kBAAG,aAAWC,GAAE,QAAO;AAAC,oBAAGH,GAAE,kBAAgB,GAAE;AAAC,sBAAG,GAAGA,IAAEO,EAAC,GAAE;AAAC,0BAAMN,KAAE,GAAGM,EAAC;AAAE,2BAAO,GAAGP,EAAC,GAAE,KAAKE,GAAE,YAAYD,EAAC;AAAA,kBAAC;AAAC,sBAAGD,GAAE,iBAAgB;AAAC,0BAAMC,KAAE,IAAI,UAAU,yDAAyD;AAAE,2BAAO,GAAGD,IAAEC,EAAC,GAAE,KAAKC,GAAE,YAAYD,EAAC;AAAA,kBAAC;AAAA,gBAAC;AAAC,gBAAAD,GAAE,kBAAkB,KAAKO,EAAC,GAAE,GAAGJ,IAAED,EAAC,GAAE,GAAGF,EAAC;AAAA,cAAC,OAAK;AAAC,sBAAMA,KAAE,IAAIK,GAAEE,GAAE,QAAOA,GAAE,YAAW,CAAC;AAAE,gBAAAL,GAAE,YAAYF,EAAC;AAAA,cAAC;AAAA,YAAC,EAAEG,GAAE,2BAA0BF,IAAEC,EAAC;AAAA,UAAC,EAAE,MAAKF,IAAE,EAAC,aAAY,CAAAA,OAAGC,GAAE,EAAC,OAAMD,IAAE,MAAK,MAAE,CAAC,GAAE,aAAY,CAAAA,OAAGC,GAAE,EAAC,OAAMD,IAAE,MAAK,KAAE,CAAC,GAAE,aAAY,CAAAA,OAAGE,GAAEF,EAAC,EAAC,CAAC,GAAEG;AAAA,QAAC;AAAA,QAAC,cAAa;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,aAAa;AAAE,qBAAS,KAAK,wBAAsB,SAASH,IAAE;AAAC,cAAEA,EAAC;AAAE,kBAAMC,KAAE,IAAI,UAAU,qBAAqB;AAAE,eAAGD,IAAEC,EAAC;AAAA,UAAC,EAAE,IAAI;AAAA,QAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,mBAAmB,KAAGA,cAAa;AAAA,MAAyB;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,cAAMC,KAAEF,GAAE;AAAkB,QAAAA,GAAE,oBAAkB,IAAI,KAAEE,GAAE,QAAS,CAAAF,OAAG;AAAC,UAAAA,GAAE,YAAYC,EAAC;AAAA,QAAC,CAAE;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,eAAO,IAAI,UAAU,sCAAsCA,EAAC,iDAAiD;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,cAAK,EAAC,eAAcC,GAAC,IAAEF;AAAE,YAAG,WAASE;AAAE,iBAAOD;AAAE,YAAG,GAAGC,EAAC,KAAGA,KAAE;AAAE,gBAAM,IAAI,WAAW,uBAAuB;AAAE,eAAOA;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAE;AAAC,cAAK,EAAC,MAAKC,GAAC,IAAED;AAAE,eAAOC,OAAI,MAAI;AAAA,MAAE;AAAC,eAAS,GAAGD,IAAEC,IAAE;AAAC,UAAED,IAAEC,EAAC;AAAE,cAAMC,KAAE,QAAMF,KAAE,SAAOA,GAAE,eAAcG,KAAE,QAAMH,KAAE,SAAOA,GAAE;AAAK,eAAM,EAAC,eAAc,WAASE,KAAE,SAAO,EAAEA,EAAC,GAAE,MAAK,WAASC,KAAE,SAAO,GAAGA,IAAE,GAAGF,EAAC,yBAAyB,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAEC,IAAE;AAAC,eAAO,EAAED,IAAEC,EAAC,GAAE,CAAAA,OAAG,EAAED,GAAEC,EAAC,CAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAEC,IAAEC,IAAE;AAAC,eAAO,EAAEF,IAAEE,EAAC,GAAE,CAAAA,OAAG,EAAEF,IAAEC,IAAE,CAACC,EAAC,CAAC;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAEC,IAAEC,IAAE;AAAC,eAAO,EAAEF,IAAEE,EAAC,GAAE,MAAI,EAAEF,IAAEC,IAAE,CAAC,CAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAEC,IAAEC,IAAE;AAAC,eAAO,EAAEF,IAAEE,EAAC,GAAE,CAAAA,OAAG,EAAEF,IAAEC,IAAE,CAACC,EAAC,CAAC;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAEC,IAAEC,IAAE;AAAC,eAAO,EAAEF,IAAEE,EAAC,GAAE,CAACA,IAAEC,OAAI,EAAEH,IAAEC,IAAE,CAACC,IAAEC,EAAC,CAAC;AAAA,MAAC;AAAC,aAAO,iBAAiB,yBAAyB,WAAU,EAAC,QAAO,EAAC,YAAW,KAAE,GAAE,MAAK,EAAC,YAAW,KAAE,GAAE,aAAY,EAAC,YAAW,KAAE,GAAE,QAAO,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,EAAE,yBAAyB,UAAU,QAAO,QAAQ,GAAE,EAAE,yBAAyB,UAAU,MAAK,MAAM,GAAE,EAAE,yBAAyB,UAAU,aAAY,aAAa,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAe,yBAAyB,WAAU,EAAE,aAAY,EAAC,OAAM,4BAA2B,cAAa,KAAE,CAAC;AAAE,YAAM,KAAG,cAAY,OAAO;AAAA,MAAgB,MAAM,eAAc;AAAA,QAAC,YAAYH,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAE;AAAC,qBAASD,KAAEA,KAAE,OAAK,EAAEA,IAAE,iBAAiB;AAAE,gBAAME,KAAE,GAAGD,IAAE,kBAAkB,GAAEE,KAAE,SAASH,IAAEC,IAAE;AAAC,cAAED,IAAEC,EAAC;AAAE,kBAAMC,KAAE,QAAMF,KAAE,SAAOA,GAAE,OAAMG,KAAE,QAAMH,KAAE,SAAOA,GAAE,OAAMI,KAAE,QAAMJ,KAAE,SAAOA,GAAE,OAAMK,KAAE,QAAML,KAAE,SAAOA,GAAE,MAAKM,KAAE,QAAMN,KAAE,SAAOA,GAAE;AAAM,mBAAM,EAAC,OAAM,WAASE,KAAE,SAAO,GAAGA,IAAEF,IAAE,GAAGC,EAAC,0BAA0B,GAAE,OAAM,WAASE,KAAE,SAAO,GAAGA,IAAEH,IAAE,GAAGC,EAAC,0BAA0B,GAAE,OAAM,WAASG,KAAE,SAAO,GAAGA,IAAEJ,IAAE,GAAGC,EAAC,0BAA0B,GAAE,OAAM,WAASK,KAAE,SAAO,GAAGA,IAAEN,IAAE,GAAGC,EAAC,0BAA0B,GAAE,MAAKI,GAAC;AAAA,UAAC,EAAEL,IAAE,iBAAiB;AAAE,cAAII;AAAE,WAACA,KAAE,MAAM,SAAO,YAAWA,GAAE,eAAa,QAAOA,GAAE,UAAQ,QAAOA,GAAE,4BAA0B,QAAOA,GAAE,iBAAe,IAAI,KAAEA,GAAE,wBAAsB,QAAOA,GAAE,gBAAc,QAAOA,GAAE,wBAAsB,QAAOA,GAAE,uBAAqB,QAAOA,GAAE,gBAAc;AAAG,cAAG,WAASD,GAAE;AAAK,kBAAM,IAAI,WAAW,2BAA2B;AAAE,gBAAME,KAAE,GAAGH,EAAC;AAAE,WAAC,SAASF,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAMC,KAAE,OAAO,OAAO,gCAAgC,SAAS;AAAE,gBAAIC,IAAEC,IAAEC,IAAEC;AAAE,YAAAH,KAAE,WAASJ,GAAE,QAAM,MAAIA,GAAE,MAAMG,EAAC,IAAE,MAAI;AAAA,YAAC;AAAE,YAAAE,KAAE,WAASL,GAAE,QAAM,CAAAD,OAAGC,GAAE,MAAMD,IAAEI,EAAC,IAAE,MAAI,EAAE,MAAM;AAAE,YAAAG,KAAE,WAASN,GAAE,QAAM,MAAIA,GAAE,MAAM,IAAE,MAAI,EAAE,MAAM;AAAE,YAAAO,KAAE,WAASP,GAAE,QAAM,CAAAD,OAAGC,GAAE,MAAMD,EAAC,IAAE,MAAI,EAAE,MAAM;AAAE,aAAC,SAASA,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAAN,GAAE,4BAA0BD,IAAEA,GAAE,4BAA0BC,IAAEA,GAAE,SAAO,QAAOA,GAAE,kBAAgB,QAAO,GAAGA,EAAC,GAAEA,GAAE,eAAa,QAAOA,GAAE,mBAAiB,WAAU;AAAC,oBAAG;AAAG,yBAAO,IAAI;AAAA,cAAe,EAAE,GAAEA,GAAE,WAAS,OAAGA,GAAE,yBAAuBM,IAAEN,GAAE,eAAaK,IAAEL,GAAE,kBAAgBE,IAAEF,GAAE,kBAAgBG,IAAEH,GAAE,kBAAgBI;AAAE,oBAAMG,KAAE,GAAGP,EAAC;AAAE,iBAAGD,IAAEQ,EAAC;AAAE,oBAAMC,KAAEP,GAAE;AAAE,gBAAE,EAAEO,EAAC,GAAG,OAAKR,GAAE,WAAS,MAAG,GAAGA,EAAC,GAAE,OAAQ,CAAAC,QAAID,GAAE,WAAS,MAAG,GAAGD,IAAEE,EAAC,GAAE,KAAM;AAAA,YAAC,EAAEF,IAAEI,IAAEC,IAAEC,IAAEC,IAAEC,IAAEN,IAAEC,EAAC;AAAA,UAAC,EAAE,MAAKA,IAAE,GAAGD,IAAE,CAAC,GAAEG,EAAC;AAAA,QAAC;AAAA,QAAC,IAAI,SAAQ;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,QAAQ;AAAE,iBAAO,GAAG,IAAI;AAAA,QAAC;AAAA,QAAC,MAAML,IAAE;AAAC,iBAAO,GAAG,IAAI,IAAE,GAAG,IAAI,IAAE,EAAE,IAAI,UAAU,iDAAiD,CAAC,IAAE,GAAG,MAAKA,EAAC,IAAE,EAAE,GAAG,OAAO,CAAC;AAAA,QAAC;AAAA,QAAC,QAAO;AAAC,iBAAO,GAAG,IAAI,IAAE,GAAG,IAAI,IAAE,EAAE,IAAI,UAAU,iDAAiD,CAAC,IAAE,GAAG,IAAI,IAAE,EAAE,IAAI,UAAU,wCAAwC,CAAC,IAAE,GAAG,IAAI,IAAE,EAAE,GAAG,OAAO,CAAC;AAAA,QAAC;AAAA,QAAC,YAAW;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,WAAW;AAAE,iBAAO,IAAI,4BAA4B,IAAI;AAAA,QAAC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,2BAA2B,KAAGA,cAAa;AAAA,MAAe;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAO,WAASA,GAAE;AAAA,MAAO;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,YAAIC;AAAE,YAAG,aAAWF,GAAE,UAAQ,cAAYA,GAAE;AAAO,iBAAO,EAAE,MAAM;AAAE,QAAAA,GAAE,0BAA0B,eAAaC,IAAE,UAAQC,KAAEF,GAAE,0BAA0B,qBAAmB,WAASE,MAAGA,GAAE,MAAMD,EAAC;AAAE,cAAME,KAAEH,GAAE;AAAO,YAAG,aAAWG,MAAG,cAAYA;AAAE,iBAAO,EAAE,MAAM;AAAE,YAAG,WAASH,GAAE;AAAqB,iBAAOA,GAAE,qBAAqB;AAAS,YAAII,KAAE;AAAG,uBAAaD,OAAIC,KAAE,MAAGH,KAAE;AAAQ,cAAMI,KAAE,EAAG,CAACH,IAAEC,OAAI;AAAC,UAAAH,GAAE,uBAAqB,EAAC,UAAS,QAAO,UAASE,IAAE,SAAQC,IAAE,SAAQF,IAAE,qBAAoBG,GAAC;AAAA,QAAC,CAAE;AAAE,eAAOJ,GAAE,qBAAqB,WAASK,IAAED,MAAG,GAAGJ,IAAEC,EAAC,GAAEI;AAAA,MAAC;AAAC,eAAS,GAAGL,IAAE;AAAC,cAAMC,KAAED,GAAE;AAAO,YAAG,aAAWC,MAAG,cAAYA;AAAE,iBAAO,EAAE,IAAI,UAAU,kBAAkBA,EAAC,2DAA2D,CAAC;AAAE,cAAMC,KAAE,EAAG,CAACD,IAAEC,OAAI;AAAC,gBAAMC,KAAE,EAAC,UAASF,IAAE,SAAQC,GAAC;AAAE,UAAAF,GAAE,gBAAcG;AAAA,QAAC,CAAE,GAAEA,KAAEH,GAAE;AAAQ,YAAII;AAAE,eAAO,WAASD,MAAGH,GAAE,iBAAe,eAAaC,MAAG,GAAGE,EAAC,GAAE,GAAGC,KAAEJ,GAAE,2BAA0B,IAAG,CAAC,GAAE,GAAGI,EAAC,GAAEF;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAEC,IAAE;AAAC,uBAAaD,GAAE,SAAO,GAAGA,EAAC,IAAE,GAAGA,IAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAEC,IAAE;AAAC,cAAMC,KAAEF,GAAE;AAA0B,QAAAA,GAAE,SAAO,YAAWA,GAAE,eAAaC;AAAE,cAAME,KAAEH,GAAE;AAAQ,mBAASG,MAAG,GAAGA,IAAEF,EAAC,GAAE,CAAC,SAASD,IAAE;AAAC,cAAG,WAASA,GAAE,yBAAuB,WAASA,GAAE;AAAsB,mBAAM;AAAG,iBAAM;AAAA,QAAE,EAAEA,EAAC,KAAGE,GAAE,YAAU,GAAGF,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,QAAAA,GAAE,SAAO,WAAUA,GAAE,0BAA0B,CAAC,EAAE;AAAE,cAAMC,KAAED,GAAE;AAAa,YAAGA,GAAE,eAAe,QAAS,CAAAA,OAAG;AAAC,UAAAA,GAAE,QAAQC,EAAC;AAAA,QAAC,CAAE,GAAED,GAAE,iBAAe,IAAI,KAAE,WAASA,GAAE;AAAqB,iBAAO,KAAK,GAAGA,EAAC;AAAE,cAAME,KAAEF,GAAE;AAAqB,YAAGA,GAAE,uBAAqB,QAAOE,GAAE;AAAoB,iBAAOA,GAAE,QAAQD,EAAC,GAAE,KAAK,GAAGD,EAAC;AAAE,UAAEA,GAAE,0BAA0B,CAAC,EAAEE,GAAE,OAAO,GAAG,OAAKA,GAAE,SAAS,GAAE,GAAGF,EAAC,GAAE,OAAQ,CAAAC,QAAIC,GAAE,QAAQD,EAAC,GAAE,GAAGD,EAAC,GAAE,KAAM;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAO,WAASA,GAAE,iBAAe,WAASA,GAAE;AAAA,MAAqB;AAAC,eAAS,GAAGA,IAAE;AAAC,mBAASA,GAAE,kBAAgBA,GAAE,cAAc,QAAQA,GAAE,YAAY,GAAEA,GAAE,gBAAc;AAAQ,cAAMC,KAAED,GAAE;AAAQ,mBAASC,MAAG,GAAGA,IAAED,GAAE,YAAY;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,cAAMC,KAAEF,GAAE;AAAQ,mBAASE,MAAGD,OAAID,GAAE,kBAAgBC,KAAE,SAASD,IAAE;AAAC,aAAGA,EAAC;AAAA,QAAC,EAAEE,EAAC,IAAE,GAAGA,EAAC,IAAGF,GAAE,gBAAcC;AAAA,MAAC;AAAC,aAAO,iBAAiB,eAAe,WAAU,EAAC,OAAM,EAAC,YAAW,KAAE,GAAE,OAAM,EAAC,YAAW,KAAE,GAAE,WAAU,EAAC,YAAW,KAAE,GAAE,QAAO,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,EAAE,eAAe,UAAU,OAAM,OAAO,GAAE,EAAE,eAAe,UAAU,OAAM,OAAO,GAAE,EAAE,eAAe,UAAU,WAAU,WAAW,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAe,eAAe,WAAU,EAAE,aAAY,EAAC,OAAM,kBAAiB,cAAa,KAAE,CAAC;AAAA,MAAE,MAAM,4BAA2B;AAAA,QAAC,YAAYD,IAAE;AAAC,cAAG,EAAEA,IAAE,GAAE,6BAA6B,GAAE,SAASA,IAAEC,IAAE;AAAC,gBAAG,CAAC,GAAGD,EAAC;AAAE,oBAAM,IAAI,UAAU,GAAGC,EAAC,2BAA2B;AAAA,UAAC,EAAED,IAAE,iBAAiB,GAAE,GAAGA,EAAC;AAAE,kBAAM,IAAI,UAAU,6EAA6E;AAAE,eAAK,uBAAqBA,IAAEA,GAAE,UAAQ;AAAK,gBAAMC,KAAED,GAAE;AAAO,cAAG,eAAaC;AAAE,aAAC,GAAGD,EAAC,KAAGA,GAAE,gBAAc,GAAG,IAAI,IAAE,GAAG,IAAI,GAAE,GAAG,IAAI;AAAA,mBAAU,eAAaC;AAAE,eAAG,MAAKD,GAAE,YAAY,GAAE,GAAG,IAAI;AAAA,mBAAU,aAAWC;AAAE,eAAG,IAAI,GAAE,GAAGC,KAAE,IAAI,GAAE,GAAGA,EAAC;AAAA,eAAM;AAAC,kBAAMD,KAAED,GAAE;AAAa,eAAG,MAAKC,EAAC,GAAE,GAAG,MAAKA,EAAC;AAAA,UAAC;AAAC,cAAIC;AAAA,QAAC;AAAA,QAAC,IAAI,SAAQ;AAAC,iBAAO,GAAG,IAAI,IAAE,KAAK,iBAAe,EAAE,GAAG,QAAQ,CAAC;AAAA,QAAC;AAAA,QAAC,IAAI,cAAa;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,aAAa;AAAE,cAAG,WAAS,KAAK;AAAqB,kBAAM,GAAG,aAAa;AAAE,iBAAO,SAASF,IAAE;AAAC,kBAAMC,KAAED,GAAE,sBAAqBE,KAAED,GAAE;AAAO,gBAAG,cAAYC,MAAG,eAAaA;AAAE,qBAAO;AAAK,gBAAG,aAAWA;AAAE,qBAAO;AAAE,mBAAO,GAAGD,GAAE,yBAAyB;AAAA,UAAC,EAAE,IAAI;AAAA,QAAC;AAAA,QAAC,IAAI,QAAO;AAAC,iBAAO,GAAG,IAAI,IAAE,KAAK,gBAAc,EAAE,GAAG,OAAO,CAAC;AAAA,QAAC;AAAA,QAAC,MAAMD,IAAE;AAAC,iBAAO,GAAG,IAAI,IAAE,WAAS,KAAK,uBAAqB,EAAE,GAAG,OAAO,CAAC,IAAE,SAASA,IAAEC,IAAE;AAAC,mBAAO,GAAGD,GAAE,sBAAqBC,EAAC;AAAA,UAAC,EAAE,MAAKD,EAAC,IAAE,EAAE,GAAG,OAAO,CAAC;AAAA,QAAC;AAAA,QAAC,QAAO;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,mBAAO,EAAE,GAAG,OAAO,CAAC;AAAE,gBAAMA,KAAE,KAAK;AAAqB,iBAAO,WAASA,KAAE,EAAE,GAAG,OAAO,CAAC,IAAE,GAAGA,EAAC,IAAE,EAAE,IAAI,UAAU,wCAAwC,CAAC,IAAE,GAAG,KAAK,oBAAoB;AAAA,QAAC;AAAA,QAAC,cAAa;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,aAAa;AAAE,qBAAS,KAAK,wBAAsB,SAASA,IAAE;AAAC,kBAAMC,KAAED,GAAE,sBAAqBE,KAAE,IAAI,UAAU,kFAAkF;AAAE,eAAGF,IAAEE,EAAC,GAAE,SAASF,IAAEC,IAAE;AAAC,4BAAYD,GAAE,sBAAoB,GAAGA,IAAEC,EAAC,IAAE,SAASD,IAAEC,IAAE;AAAC,mBAAGD,IAAEC,EAAC;AAAA,cAAC,EAAED,IAAEC,EAAC;AAAA,YAAC,EAAED,IAAEE,EAAC,GAAED,GAAE,UAAQ,QAAOD,GAAE,uBAAqB;AAAA,UAAM,EAAE,IAAI;AAAA,QAAC;AAAA,QAAC,MAAMA,IAAE;AAAC,iBAAO,GAAG,IAAI,IAAE,WAAS,KAAK,uBAAqB,EAAE,GAAG,UAAU,CAAC,IAAE,SAASA,IAAEC,IAAE;AAAC,kBAAMC,KAAEF,GAAE,sBAAqBG,KAAED,GAAE,2BAA0BE,KAAE,SAASJ,IAAEC,IAAE;AAAC,kBAAG;AAAC,uBAAOD,GAAE,uBAAuBC,EAAC;AAAA,cAAC,SAAOA,IAAE;AAAC,uBAAO,GAAGD,IAAEC,EAAC,GAAE;AAAA,cAAC;AAAA,YAAC,EAAEE,IAAEF,EAAC;AAAE,gBAAGC,OAAIF,GAAE;AAAqB,qBAAO,EAAE,GAAG,UAAU,CAAC;AAAE,kBAAMK,KAAEH,GAAE;AAAO,gBAAG,cAAYG;AAAE,qBAAO,EAAEH,GAAE,YAAY;AAAE,gBAAG,GAAGA,EAAC,KAAG,aAAWG;AAAE,qBAAO,EAAE,IAAI,UAAU,0DAA0D,CAAC;AAAE,gBAAG,eAAaA;AAAE,qBAAO,EAAEH,GAAE,YAAY;AAAE,kBAAMI,KAAE,SAASN,IAAE;AAAC,qBAAO,EAAG,CAACC,IAAEC,OAAI;AAAC,sBAAMC,KAAE,EAAC,UAASF,IAAE,SAAQC,GAAC;AAAE,gBAAAF,GAAE,eAAe,KAAKG,EAAC;AAAA,cAAC,CAAE;AAAA,YAAC,EAAED,EAAC;AAAE,mBAAO,SAASF,IAAEC,IAAEC,IAAE;AAAC,kBAAG;AAAC,mBAAGF,IAAEC,IAAEC,EAAC;AAAA,cAAC,SAAOD,IAAE;AAAC,uBAAO,KAAK,GAAGD,IAAEC,EAAC;AAAA,cAAC;AAAC,oBAAME,KAAEH,GAAE;AAA0B,kBAAG,CAAC,GAAGG,EAAC,KAAG,eAAaA,GAAE,QAAO;AAAC,mBAAGA,IAAE,GAAGH,EAAC,CAAC;AAAA,cAAC;AAAC,iBAAGA,EAAC;AAAA,YAAC,EAAEG,IAAEF,IAAEG,EAAC,GAAEE;AAAA,UAAC,EAAE,MAAKN,EAAC,IAAE,EAAE,GAAG,OAAO,CAAC;AAAA,QAAC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,sBAAsB,KAAGA,cAAa;AAAA,MAA4B;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,sBAAYD,GAAE,qBAAmB,GAAGA,IAAEC,EAAC,IAAE,SAASD,IAAEC,IAAE;AAAC,aAAGD,IAAEC,EAAC;AAAA,QAAC,EAAED,IAAEC,EAAC;AAAA,MAAC;AAAC,aAAO,iBAAiB,4BAA4B,WAAU,EAAC,OAAM,EAAC,YAAW,KAAE,GAAE,OAAM,EAAC,YAAW,KAAE,GAAE,aAAY,EAAC,YAAW,KAAE,GAAE,OAAM,EAAC,YAAW,KAAE,GAAE,QAAO,EAAC,YAAW,KAAE,GAAE,aAAY,EAAC,YAAW,KAAE,GAAE,OAAM,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,EAAE,4BAA4B,UAAU,OAAM,OAAO,GAAE,EAAE,4BAA4B,UAAU,OAAM,OAAO,GAAE,EAAE,4BAA4B,UAAU,aAAY,aAAa,GAAE,EAAE,4BAA4B,UAAU,OAAM,OAAO,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAe,4BAA4B,WAAU,EAAE,aAAY,EAAC,OAAM,+BAA8B,cAAa,KAAE,CAAC;AAAE,YAAM,KAAG,CAAC;AAAA,MAAE,MAAM,gCAA+B;AAAA,QAAC,cAAa;AAAC,gBAAM,IAAI,UAAU,qBAAqB;AAAA,QAAC;AAAA,QAAC,IAAI,cAAa;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,aAAa;AAAE,iBAAO,KAAK;AAAA,QAAY;AAAA,QAAC,IAAI,SAAQ;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,QAAQ;AAAE,cAAG,WAAS,KAAK;AAAiB,kBAAM,IAAI,UAAU,mEAAmE;AAAE,iBAAO,KAAK,iBAAiB;AAAA,QAAM;AAAA,QAAC,MAAMD,IAAE;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,OAAO;AAAE,yBAAa,KAAK,0BAA0B,UAAQ,GAAG,MAAKA,EAAC;AAAA,QAAC;AAAA,QAAC,CAAC,CAAC,EAAEA,IAAE;AAAC,gBAAMC,KAAE,KAAK,gBAAgBD,EAAC;AAAE,iBAAO,GAAG,IAAI,GAAEC;AAAA,QAAC;AAAA,QAAC,CAAC,CAAC,IAAG;AAAC,aAAG,IAAI;AAAA,QAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,2BAA2B,KAAGA,cAAa;AAAA,MAAgC;AAAC,eAAS,GAAGA,IAAE;AAAC,QAAAA,GAAE,kBAAgB,QAAOA,GAAE,kBAAgB,QAAOA,GAAE,kBAAgB,QAAOA,GAAE,yBAAuB;AAAA,MAAM;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAOA,GAAE,eAAaA,GAAE;AAAA,MAAe;AAAC,eAAS,GAAGA,IAAE;AAAC,cAAMC,KAAED,GAAE;AAA0B,YAAG,CAACA,GAAE;AAAS;AAAO,YAAG,WAASC,GAAE;AAAsB;AAAO,YAAG,eAAaA,GAAE;AAAO,iBAAO,KAAK,GAAGA,EAAC;AAAE,YAAG,MAAID,GAAE,OAAO;AAAO;AAAO,cAAME,KAAEF,GAAE,OAAO,KAAK,EAAE;AAAM,QAAAE,OAAI,KAAG,SAASF,IAAE;AAAC,gBAAMC,KAAED,GAAE;AAA0B,WAAC,SAASA,IAAE;AAAC,YAAAA,GAAE,wBAAsBA,GAAE,eAAcA,GAAE,gBAAc;AAAA,UAAM,GAAGC,EAAC,GAAE,GAAGD,EAAC;AAAE,gBAAME,KAAEF,GAAE,gBAAgB;AAAE,aAAGA,EAAC,GAAE,EAAEE,IAAG,OAAK,SAASF,IAAE;AAAC,YAAAA,GAAE,sBAAsB,SAAS,MAAM,GAAEA,GAAE,wBAAsB,QAAO,eAAaA,GAAE,WAASA,GAAE,eAAa,QAAO,WAASA,GAAE,yBAAuBA,GAAE,qBAAqB,SAAS,GAAEA,GAAE,uBAAqB,UAASA,GAAE,SAAO;AAAS,kBAAMC,KAAED,GAAE;AAAQ,uBAASC,MAAG,GAAGA,EAAC;AAAA,UAAC,EAAEA,EAAC,GAAE,OAAQ,CAAAD,QAAI,SAASA,IAAEC,IAAE;AAAC,YAAAD,GAAE,sBAAsB,QAAQC,EAAC,GAAED,GAAE,wBAAsB,QAAO,WAASA,GAAE,yBAAuBA,GAAE,qBAAqB,QAAQC,EAAC,GAAED,GAAE,uBAAqB,SAAQ,GAAGA,IAAEC,EAAC;AAAA,UAAC,EAAEA,IAAED,EAAC,GAAE,KAAM;AAAA,QAAC,EAAEA,EAAC,IAAE,SAASA,IAAEC,IAAE;AAAC,gBAAMC,KAAEF,GAAE;AAA0B,WAAC,SAASA,IAAE;AAAC,YAAAA,GAAE,wBAAsBA,GAAE,eAAe,MAAM;AAAA,UAAC,EAAEE,EAAC;AAAE,YAAEF,GAAE,gBAAgBC,EAAC,GAAG,MAAI;AAAC,aAAC,SAASD,IAAE;AAAC,cAAAA,GAAE,sBAAsB,SAAS,MAAM,GAAEA,GAAE,wBAAsB;AAAA,YAAM,EAAEE,EAAC;AAAE,kBAAMD,KAAEC,GAAE;AAAO,gBAAG,GAAGF,EAAC,GAAE,CAAC,GAAGE,EAAC,KAAG,eAAaD,IAAE;AAAC,oBAAMA,KAAE,GAAGD,EAAC;AAAE,iBAAGE,IAAED,EAAC;AAAA,YAAC;AAAC,mBAAO,GAAGD,EAAC,GAAE;AAAA,UAAI,GAAI,CAAAC,QAAI,eAAaC,GAAE,UAAQ,GAAGF,EAAC,GAAE,SAASA,IAAEC,IAAE;AAAC,YAAAD,GAAE,sBAAsB,QAAQC,EAAC,GAAED,GAAE,wBAAsB,QAAO,GAAGA,IAAEC,EAAC;AAAA,UAAC,EAAEC,IAAED,EAAC,GAAE,KAAM;AAAA,QAAC,EAAED,IAAEE,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAEC,IAAE;AAAC,uBAAaD,GAAE,0BAA0B,UAAQ,GAAGA,IAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,eAAO,GAAGA,EAAC,KAAG;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,cAAMC,KAAEF,GAAE;AAA0B,WAAGA,EAAC,GAAE,GAAGE,IAAED,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,eAAO,IAAI,UAAU,4BAA4BA,EAAC,uCAAuC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAO,IAAI,UAAU,6CAA6CA,EAAC,wDAAwD;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAO,IAAI,UAAU,yCAAyCA,EAAC,oDAAoD;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAO,IAAI,UAAU,YAAUA,KAAE,mCAAmC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,QAAAA,GAAE,iBAAe,EAAG,CAACC,IAAEC,OAAI;AAAC,UAAAF,GAAE,yBAAuBC,IAAED,GAAE,wBAAsBE,IAAEF,GAAE,sBAAoB;AAAA,QAAS,CAAE;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,WAAGD,EAAC,GAAE,GAAGA,IAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAEC,IAAE;AAAC,mBAASD,GAAE,0BAAwB,EAAEA,GAAE,cAAc,GAAEA,GAAE,sBAAsBC,EAAC,GAAED,GAAE,yBAAuB,QAAOA,GAAE,wBAAsB,QAAOA,GAAE,sBAAoB;AAAA,MAAW;AAAC,eAAS,GAAGA,IAAE;AAAC,mBAASA,GAAE,2BAAyBA,GAAE,uBAAuB,MAAM,GAAEA,GAAE,yBAAuB,QAAOA,GAAE,wBAAsB,QAAOA,GAAE,sBAAoB;AAAA,MAAW;AAAC,eAAS,GAAGA,IAAE;AAAC,QAAAA,GAAE,gBAAc,EAAG,CAACC,IAAEC,OAAI;AAAC,UAAAF,GAAE,wBAAsBC,IAAED,GAAE,uBAAqBE;AAAA,QAAC,CAAE,GAAEF,GAAE,qBAAmB;AAAA,MAAS;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,WAAGD,EAAC,GAAE,GAAGA,IAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,WAAGA,EAAC,GAAE,GAAGA,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,mBAASD,GAAE,yBAAuB,EAAEA,GAAE,aAAa,GAAEA,GAAE,qBAAqBC,EAAC,GAAED,GAAE,wBAAsB,QAAOA,GAAE,uBAAqB,QAAOA,GAAE,qBAAmB;AAAA,MAAW;AAAC,eAAS,GAAGA,IAAE;AAAC,mBAASA,GAAE,0BAAwBA,GAAE,sBAAsB,MAAM,GAAEA,GAAE,wBAAsB,QAAOA,GAAE,uBAAqB,QAAOA,GAAE,qBAAmB;AAAA,MAAY;AAAC,aAAO,iBAAiB,gCAAgC,WAAU,EAAC,aAAY,EAAC,YAAW,KAAE,GAAE,QAAO,EAAC,YAAW,KAAE,GAAE,OAAM,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAe,gCAAgC,WAAU,EAAE,aAAY,EAAC,OAAM,mCAAkC,cAAa,KAAE,CAAC;AAAE,YAAM,KAAG,eAAa,OAAO,eAAa,eAAa;AAAO,YAAM,KAAG,SAASA,IAAE;AAAC,YAAG,cAAY,OAAOA,MAAG,YAAU,OAAOA;AAAE,iBAAM;AAAG,YAAG;AAAC,iBAAO,IAAIA,MAAE;AAAA,QAAE,SAAOA,IAAE;AAAC,iBAAM;AAAA,QAAE;AAAA,MAAC,EAAE,EAAE,IAAE,KAAG,WAAU;AAAC,cAAMA,KAAE,SAASA,IAAEC,IAAE;AAAC,eAAK,UAAQD,MAAG,IAAG,KAAK,OAAKC,MAAG,SAAQ,MAAM,qBAAmB,MAAM,kBAAkB,MAAK,KAAK,WAAW;AAAA,QAAC;AAAE,eAAOD,GAAE,YAAU,OAAO,OAAO,MAAM,SAAS,GAAE,OAAO,eAAeA,GAAE,WAAU,eAAc,EAAC,OAAMA,IAAE,UAAS,MAAG,cAAa,KAAE,CAAC,GAAEA;AAAA,MAAC,EAAE;AAAE,eAAS,GAAGA,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAMC,KAAEN,GAAE,UAAU,GAAEO,KAAEN,GAAE,UAAU;AAAE,WAAGD,EAAC,MAAIA,GAAE,aAAW;AAAI,YAAIQ,IAAEC,IAAEC,IAAEC,KAAE,OAAGC,KAAE,OAAGC,KAAE,YAAWC,KAAE,YAAWC,KAAE,OAAGC,KAAE;AAAG,cAAMC,KAAE,EAAG,CAAAjB,OAAG;AAAC,UAAAU,KAAEV;AAAA,QAAC,CAAE;AAAE,YAAIkB,KAAE,QAAQ,QAAQ,MAAM;AAAE,eAAO,EAAG,CAACC,IAAEC,OAAI;AAAC,cAAIC;AAAE,mBAASC,KAAG;AAAC,gBAAGX;AAAE;AAAO,kBAAMX,KAAE,EAAG,CAACA,IAAEC,OAAI;AAAC,eAAC,SAASC,GAAEC,IAAE;AAAC,gBAAAA,KAAEH,GAAE,IAAE,EAAE,WAAU;AAAC,sBAAGW;AAAE,2BAAO,EAAE,IAAE;AAAE,yBAAO,EAAEJ,GAAE,OAAO,MAAI,EAAED,GAAE,KAAK,GAAG,CAAAN,OAAG,CAAC,CAACA,GAAE,SAAOkB,KAAEX,GAAE,MAAMP,GAAE,KAAK,GAAE,EAAEkB,EAAC,GAAE,MAAI,CAAE;AAAA,gBAAC,EAAE,GAAEhB,IAAED,EAAC;AAAA,cAAC,EAAE,KAAE;AAAA,YAAC,CAAE;AAAE,cAAED,EAAC;AAAA,UAAC;AAAC,mBAASuB,KAAG;AAAC,mBAAOV,KAAE,UAASX,KAAEsB,GAAE,IAAEC,GAAG,OAAK,GAAGxB,EAAC,MAAIc,KAAE,GAAGd,EAAC,GAAEa,KAAEb,GAAE,SAAQc,MAAG,aAAWD,KAAE,EAAE,MAAM,IAAE,eAAaA,MAAG,cAAYA,KAAE,EAAEL,EAAC,KAAGM,KAAE,MAAGR,GAAE,MAAM,KAAK,OAAG,MAAM,GAAE;AAAA,UAAI;AAAC,mBAASmB,GAAE1B,IAAE;AAAC,mBAAOW,OAAIE,KAAE,WAAUL,KAAER,IAAEG,KAAEqB,GAAE,MAAGxB,EAAC,IAAEyB,GAAG,MAAIlB,GAAE,MAAMP,EAAC,GAAG,MAAGA,EAAC,IAAG;AAAA,UAAI;AAAC,mBAAS2B,GAAE3B,IAAE;AAAC,mBAAOY,OAAIE,KAAE,WAAUL,KAAET,IAAEI,KAAEoB,GAAE,MAAGxB,EAAC,IAAEyB,GAAG,MAAInB,GAAE,OAAON,EAAC,GAAG,MAAGA,EAAC,IAAG;AAAA,UAAI;AAAC,cAAG,WAASK,OAAIgB,KAAE,MAAI;AAAC,kBAAMrB,KAAE,WAASK,GAAE,SAAOA,GAAE,SAAO,IAAI,GAAG,WAAU,YAAY,GAAEJ,KAAE,CAAC;AAAE,YAAAE,MAAGF,GAAE,KAAM,MAAI,eAAaa,KAAEP,GAAE,MAAMP,EAAC,IAAE,EAAE,MAAM,CAAE,GAAEI,MAAGH,GAAE,KAAM,MAAI,eAAaY,KAAEP,GAAE,OAAON,EAAC,IAAE,EAAE,MAAM,CAAE,GAAEyB,GAAG,MAAI,QAAQ,IAAIxB,GAAE,IAAK,CAAAD,OAAGA,GAAE,CAAE,CAAC,GAAG,MAAGA,EAAC;AAAA,UAAC,GAAEK,GAAE,UAAQgB,GAAE,IAAEhB,GAAE,iBAAiB,SAAQgB,EAAC,IAAG,GAAGrB,EAAC,MAAIa,KAAEb,GAAE,QAAOQ,KAAER,GAAE,eAAc,GAAGC,EAAC,MAAIa,KAAEb,GAAE,QAAOQ,KAAER,GAAE,cAAac,KAAE,GAAGd,EAAC,IAAG,GAAGD,EAAC,KAAG,GAAGC,EAAC,MAAIe,KAAE,MAAGN,GAAE,IAAG,cAAYG;AAAE,YAAAa,GAAElB,EAAC;AAAA,mBAAU,eAAaM,MAAG,cAAYA;AAAE,YAAAa,GAAElB,EAAC;AAAA,mBAAU,aAAWI;AAAE,YAAAU,GAAE;AAAA,mBAAUR,MAAG,aAAWD,IAAE;AAAC,kBAAMd,KAAE,IAAI,UAAU,6EAA6E;AAAE,YAAAI,KAAEoB,GAAE,MAAGxB,EAAC,IAAEyB,GAAG,MAAInB,GAAE,OAAON,EAAC,GAAG,MAAGA,EAAC;AAAA,UAAC;AAAC,mBAASyB,GAAEzB,IAAEC,IAAEC,IAAE;AAAC,qBAASC,KAAG;AAAC,qBAAM,eAAaW,MAAGC,KAAEX,GAAE,IAAE,EAAE,WAAU;AAAC,oBAAIJ;AAAE,uBAAO,EAAE,SAASC,KAAG;AAAC,sBAAGD,OAAIkB;AAAE,2BAAOlB,KAAEkB,IAAE,EAAEA,IAAEjB,IAAEA,EAAC;AAAA,gBAAC,EAAE,CAAC;AAAA,cAAC,EAAE,GAAEG,EAAC,GAAE;AAAA,YAAI;AAAC,qBAASA,KAAG;AAAC,qBAAOJ,KAAE,EAAEA,GAAE,GAAG,MAAI4B,GAAE3B,IAAEC,EAAC,GAAI,CAAAF,OAAG4B,GAAE,MAAG5B,EAAC,CAAE,IAAE4B,GAAE3B,IAAEC,EAAC,GAAE;AAAA,YAAI;AAAC,YAAAS,OAAIA,KAAE,MAAGK,KAAEb,GAAE,IAAE,EAAEc,IAAEd,EAAC;AAAA,UAAE;AAAC,mBAASqB,GAAExB,IAAEC,IAAE;AAAC,YAAAwB,GAAE,QAAOzB,IAAEC,EAAC;AAAA,UAAC;AAAC,mBAAS2B,GAAE5B,IAAEC,IAAE;AAAC,mBAAOW,KAAE,MAAGL,GAAE,YAAY,GAAED,GAAE,YAAY,GAAE,WAASD,MAAGA,GAAE,oBAAoB,SAAQgB,EAAC,GAAErB,KAAEoB,GAAEnB,EAAC,IAAEkB,GAAE,MAAM,GAAE;AAAA,UAAI;AAAC,UAAAR,OAAI,EAAEL,GAAE,QAAOiB,IAAEG,EAAC,GAAE,EAAEnB,GAAE,QAAQ,WAAU;AAAC,mBAAOK,OAAIE,KAAE,WAAU;AAAA,UAAI,GAAGa,EAAC,IAAGX,KAAEM,GAAE,IAAE,EAAG,MAAI;AAAC,YAAAN,KAAE,MAAGN,GAAE,GAAEY,GAAE;AAAA,UAAC,CAAE;AAAA,QAAC,CAAE;AAAA,MAAC;AAAC,eAAS,GAAGtB,IAAEC,IAAE;AAAC,eAAO,SAASD,IAAE;AAAC,cAAG;AAAC,mBAAOA,GAAE,UAAU,EAAC,MAAK,OAAM,CAAC,EAAE,YAAY,GAAE;AAAA,UAAE,SAAOA,IAAE;AAAC,mBAAM;AAAA,UAAE;AAAA,QAAC,EAAEA,EAAC,IAAE,SAASA,IAAE;AAAC,cAAIC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,KAAEN,GAAE,UAAU,GAAEO,KAAE,OAAGC,KAAE,OAAGC,KAAE,OAAGoB,KAAE,OAAGC,KAAE,OAAGC,KAAE;AAAG,gBAAMC,KAAE,EAAG,CAAAhC,OAAG;AAAC,YAAAK,KAAEL;AAAA,UAAC,CAAE;AAAE,mBAASiC,GAAEjC,IAAE;AAAC,cAAEA,GAAE,QAAQ,CAAAC,QAAID,OAAIM,OAAIH,GAAE,MAAMF,EAAC,GAAEG,GAAE,MAAMH,EAAC,GAAE6B,MAAGC,MAAG1B,GAAE,MAAM,IAAG,KAAM;AAAA,UAAC;AAAC,mBAAS6B,KAAG;AAAC,YAAA3B,OAAID,GAAE,YAAY,GAAEA,KAAEN,GAAE,UAAU,GAAEiC,GAAE3B,EAAC,GAAEC,KAAE,QAAI,EAAED,GAAE,KAAK,GAAG,CAAAN,OAAG;AAAC,kBAAIC,IAAEC;AAAE,kBAAGO,KAAE,OAAGoB,KAAE,OAAG7B,GAAE;AAAK,uBAAO8B,MAAG3B,GAAE,MAAM,GAAE4B,MAAG3B,GAAE,MAAM,GAAE,UAAQH,KAAEE,GAAE,gBAAc,WAASF,MAAGA,GAAE,QAAQ,CAAC,GAAE,UAAQC,KAAEE,GAAE,gBAAc,WAASF,MAAGA,GAAE,QAAQ,CAAC,GAAE4B,MAAGC,MAAG1B,GAAE,MAAM,GAAE;AAAK,oBAAME,KAAEP,GAAE,OAAMmC,KAAE5B;AAAE,kBAAI6B,KAAE7B;AAAE,kBAAG,CAACuB,MAAG,CAACC;AAAE,oBAAG;AAAC,kBAAAK,KAAE,GAAG7B,EAAC;AAAA,gBAAC,SAAOP,IAAE;AAAC,yBAAOG,GAAE,MAAMH,EAAC,GAAEI,GAAE,MAAMJ,EAAC,GAAEK,GAAEC,GAAE,OAAON,EAAC,CAAC,GAAE;AAAA,gBAAI;AAAC,qBAAO8B,MAAG3B,GAAE,QAAQgC,EAAC,GAAEJ,MAAG3B,GAAE,QAAQgC,EAAC,GAAE5B,KAAE,OAAGC,KAAEG,GAAE,IAAEiB,MAAGhB,GAAE,GAAE;AAAA,YAAI,GAAI,OAAKL,KAAE,OAAG,KAAM;AAAA,UAAC;AAAC,mBAASG,GAAEV,IAAEC,IAAE;AAAC,YAAAK,OAAID,GAAE,YAAY,GAAEA,KAAEN,GAAE,UAAU,EAAC,MAAK,OAAM,CAAC,GAAEiC,GAAE3B,EAAC,GAAEC,KAAE;AAAI,kBAAM4B,KAAEjC,KAAEE,KAAED,IAAEiC,KAAElC,KAAEC,KAAEC;AAAE,cAAEE,GAAE,KAAKL,EAAC,GAAG,CAAAD,OAAG;AAAC,kBAAIC;AAAE,cAAAQ,KAAE,OAAGoB,KAAE;AAAG,oBAAM1B,KAAED,KAAE6B,KAAED,IAAE1B,KAAEF,KAAE4B,KAAEC;AAAE,kBAAG/B,GAAE,MAAK;AAAC,gBAAAG,MAAGgC,GAAE,MAAM,GAAE/B,MAAGgC,GAAE,MAAM;AAAE,sBAAMlC,KAAEF,GAAE;AAAM,uBAAO,WAASE,OAAIC,MAAGgC,GAAE,YAAY,mBAAmBjC,EAAC,GAAEE,MAAG,UAAQH,KAAEmC,GAAE,gBAAc,WAASnC,MAAGA,GAAE,QAAQ,CAAC,IAAGE,MAAGC,MAAGC,GAAE,MAAM,GAAE;AAAA,cAAI;AAAC,oBAAME,KAAEP,GAAE;AAAM,kBAAGI;AAAE,gBAAAD,MAAGgC,GAAE,YAAY,mBAAmB5B,EAAC;AAAA,mBAAM;AAAC,oBAAIP;AAAE,oBAAG;AAAC,kBAAAA,KAAE,GAAGO,EAAC;AAAA,gBAAC,SAAOP,IAAE;AAAC,yBAAOmC,GAAE,MAAMnC,EAAC,GAAEoC,GAAE,MAAMpC,EAAC,GAAEK,GAAEC,GAAE,OAAON,EAAC,CAAC,GAAE;AAAA,gBAAI;AAAC,gBAAAG,MAAGgC,GAAE,YAAY,mBAAmB5B,EAAC,GAAE6B,GAAE,QAAQpC,EAAC;AAAA,cAAC;AAAC,qBAAOQ,KAAE,OAAGC,KAAEG,GAAE,IAAEiB,MAAGhB,GAAE,GAAE;AAAA,YAAI,GAAI,OAAKL,KAAE,OAAG,KAAM;AAAA,UAAC;AAAC,mBAASI,KAAG;AAAC,gBAAGJ;AAAE,qBAAOC,KAAE,MAAG,EAAE,MAAM;AAAE,YAAAD,KAAE;AAAG,kBAAMR,KAAEG,GAAE;AAAY,mBAAO,SAAOH,KAAEkC,GAAE,IAAEvB,GAAEX,GAAE,MAAK,KAAE,GAAE,EAAE,MAAM;AAAA,UAAC;AAAC,mBAASa,KAAG;AAAC,gBAAGL;AAAE,qBAAOqB,KAAE,MAAG,EAAE,MAAM;AAAE,YAAArB,KAAE;AAAG,kBAAMR,KAAEI,GAAE;AAAY,mBAAO,SAAOJ,KAAEkC,GAAE,IAAEvB,GAAEX,GAAE,MAAK,IAAE,GAAE,EAAE,MAAM;AAAA,UAAC;AAAC,mBAASc,GAAEd,IAAE;AAAC,gBAAG8B,KAAE,MAAG7B,KAAED,IAAE+B,IAAE;AAAC,oBAAM/B,KAAE,CAACC,IAAEC,EAAC,GAAEC,KAAEG,GAAE,OAAON,EAAC;AAAE,cAAAK,GAAEF,EAAC;AAAA,YAAC;AAAC,mBAAO6B;AAAA,UAAC;AAAC,mBAASjB,GAAEf,IAAE;AAAC,gBAAG+B,KAAE,MAAG7B,KAAEF,IAAE8B,IAAE;AAAC,oBAAM9B,KAAE,CAACC,IAAEC,EAAC,GAAEC,KAAEG,GAAE,OAAON,EAAC;AAAE,cAAAK,GAAEF,EAAC;AAAA,YAAC;AAAC,mBAAO6B;AAAA,UAAC;AAAC,gBAAMhB,KAAE,IAAIqB,gBAAe,EAAC,MAAK,SAAQ,MAAMrC,IAAE;AAAC,YAAAG,KAAEH;AAAA,UAAC,GAAE,MAAKY,IAAE,QAAOE,GAAC,CAAC,GAAEG,KAAE,IAAIoB,gBAAe,EAAC,MAAK,SAAQ,MAAMrC,IAAE;AAAC,YAAAI,KAAEJ;AAAA,UAAC,GAAE,MAAKa,IAAE,QAAOE,GAAC,CAAC;AAAE,iBAAOkB,GAAE3B,EAAC,GAAE,CAACU,IAAEC,EAAC;AAAA,QAAC,EAAEjB,EAAC,IAAE,SAASA,IAAEC,IAAE;AAAC,gBAAMC,KAAEF,GAAE,UAAU;AAAE,cAAIG,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,KAAE,OAAGC,KAAE,OAAGoB,KAAE,OAAGC,KAAE;AAAG,gBAAMC,KAAE,EAAG,CAAA/B,OAAG;AAAC,YAAAO,KAAEP;AAAA,UAAC,CAAE;AAAE,mBAASgC,KAAG;AAAC,mBAAOxB,MAAGC,KAAE,MAAG,EAAE,MAAM,MAAID,KAAE,MAAG,EAAEN,GAAE,KAAK,GAAG,CAAAF,OAAG;AAAC,kBAAGS,KAAE,OAAGT,GAAE;AAAK,uBAAO6B,MAAGxB,GAAE,MAAM,GAAEyB,MAAGxB,GAAE,MAAM,GAAEuB,MAAGC,MAAGvB,GAAE,MAAM,GAAE;AAAK,oBAAMN,KAAED,GAAE,OAAME,KAAED,IAAEE,KAAEF;AAAE,qBAAO4B,MAAGxB,GAAE,QAAQH,EAAC,GAAE4B,MAAGxB,GAAE,QAAQH,EAAC,GAAEK,KAAE,OAAGC,MAAGuB,GAAE,GAAE;AAAA,YAAI,GAAI,OAAKxB,KAAE,OAAG,KAAM,GAAE,EAAE,MAAM;AAAA,UAAE;AAAC,mBAASyB,GAAEjC,IAAE;AAAC,gBAAG6B,KAAE,MAAG1B,KAAEH,IAAE8B,IAAE;AAAC,oBAAM9B,KAAE,CAACG,IAAEC,EAAC,GAAEH,KAAEC,GAAE,OAAOF,EAAC;AAAE,cAAAO,GAAEN,EAAC;AAAA,YAAC;AAAC,mBAAO8B;AAAA,UAAC;AAAC,mBAASG,GAAElC,IAAE;AAAC,gBAAG8B,KAAE,MAAG1B,KAAEJ,IAAE6B,IAAE;AAAC,oBAAM7B,KAAE,CAACG,IAAEC,EAAC,GAAEH,KAAEC,GAAE,OAAOF,EAAC;AAAE,cAAAO,GAAEN,EAAC;AAAA,YAAC;AAAC,mBAAO8B;AAAA,UAAC;AAAC,gBAAMpB,KAAE,IAAI0B,gBAAe,EAAC,MAAMrC,IAAE;AAAC,YAAAK,KAAEL;AAAA,UAAC,GAAE,MAAKgC,IAAE,QAAOC,GAAC,CAAC,GAAErB,KAAE,IAAIyB,gBAAe,EAAC,MAAMrC,IAAE;AAAC,YAAAM,KAAEN;AAAA,UAAC,GAAE,MAAKgC,IAAE,QAAOE,GAAC,CAAC;AAAE,iBAAO,EAAEhC,GAAE,QAAQ,CAAAF,QAAIK,GAAE,MAAML,EAAC,GAAEM,GAAE,MAAMN,EAAC,GAAE6B,MAAGC,MAAGvB,GAAE,MAAM,GAAE,KAAM,GAAE,CAACI,IAAEC,EAAC;AAAA,QAAC,EAAEZ,EAAC;AAAA,MAAC;AAAA,MAAC,MAAM,gCAA+B;AAAA,QAAC,cAAa;AAAC,gBAAM,IAAI,UAAU,qBAAqB;AAAA,QAAC;AAAA,QAAC,IAAI,cAAa;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,aAAa;AAAE,iBAAO,GAAG,IAAI;AAAA,QAAC;AAAA,QAAC,QAAO;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,OAAO;AAAE,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,IAAI,UAAU,iDAAiD;AAAE,WAAC,SAASA,IAAE;AAAC,gBAAG,CAAC,GAAGA,EAAC;AAAE;AAAO,kBAAMC,KAAED,GAAE;AAA0B,YAAAA,GAAE,kBAAgB,MAAG,MAAIA,GAAE,OAAO,WAAS,GAAGA,EAAC,GAAE,GAAGC,EAAC;AAAA,UAAE,EAAE,IAAI;AAAA,QAAC;AAAA,QAAC,QAAQD,IAAE;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,SAAS;AAAE,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,IAAI,UAAU,mDAAmD;AAAE,iBAAO,SAASA,IAAEC,IAAE;AAAC,gBAAG,CAAC,GAAGD,EAAC;AAAE;AAAO,kBAAME,KAAEF,GAAE;AAA0B,gBAAG,GAAGE,EAAC,KAAG,EAAEA,EAAC,IAAE;AAAE,gBAAEA,IAAED,IAAE,KAAE;AAAA,iBAAM;AAAC,kBAAIC;AAAE,kBAAG;AAAC,gBAAAA,KAAEF,GAAE,uBAAuBC,EAAC;AAAA,cAAC,SAAOA,IAAE;AAAC,sBAAM,GAAGD,IAAEC,EAAC,GAAEA;AAAA,cAAC;AAAC,kBAAG;AAAC,mBAAGD,IAAEC,IAAEC,EAAC;AAAA,cAAC,SAAOD,IAAE;AAAC,sBAAM,GAAGD,IAAEC,EAAC,GAAEA;AAAA,cAAC;AAAA,YAAC;AAAC,eAAGD,EAAC;AAAA,UAAC,EAAE,MAAKA,EAAC;AAAA,QAAC;AAAA,QAAC,MAAMA,IAAE;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,OAAO;AAAE,aAAG,MAAKA,EAAC;AAAA,QAAC;AAAA,QAAC,CAAC,CAAC,EAAEA,IAAE;AAAC,aAAG,IAAI;AAAE,gBAAMC,KAAE,KAAK,iBAAiBD,EAAC;AAAE,iBAAO,GAAG,IAAI,GAAEC;AAAA,QAAC;AAAA,QAAC,CAAC,CAAC,EAAED,IAAE;AAAC,gBAAMC,KAAE,KAAK;AAA0B,cAAG,KAAK,OAAO,SAAO,GAAE;AAAC,kBAAMC,KAAE,GAAG,IAAI;AAAE,iBAAK,mBAAiB,MAAI,KAAK,OAAO,UAAQ,GAAG,IAAI,GAAE,GAAGD,EAAC,KAAG,GAAG,IAAI,GAAED,GAAE,YAAYE,EAAC;AAAA,UAAC;AAAM,cAAED,IAAED,EAAC,GAAE,GAAG,IAAI;AAAA,QAAC;AAAA,QAAC,CAAC,CAAC,IAAG;AAAA,QAAC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,2BAA2B,KAAGA,cAAa;AAAA,MAAgC;AAAC,eAAS,GAAGA,IAAE;AAAC,cAAMC,KAAE,SAASD,IAAE;AAAC,gBAAMC,KAAED,GAAE;AAA0B,cAAG,CAAC,GAAGA,EAAC;AAAE,mBAAM;AAAG,cAAG,CAACA,GAAE;AAAS,mBAAM;AAAG,cAAG,GAAGC,EAAC,KAAG,EAAEA,EAAC,IAAE;AAAE,mBAAM;AAAG,cAAG,GAAGD,EAAC,IAAE;AAAE,mBAAM;AAAG,iBAAM;AAAA,QAAE,EAAEA,EAAC;AAAE,YAAG,CAACC;AAAE;AAAO,YAAGD,GAAE;AAAS,iBAAO,MAAKA,GAAE,aAAW;AAAI,QAAAA,GAAE,WAAS;AAAG,UAAEA,GAAE,eAAe,GAAG,OAAKA,GAAE,WAAS,OAAGA,GAAE,eAAaA,GAAE,aAAW,OAAG,GAAGA,EAAC,IAAG,OAAQ,CAAAC,QAAI,GAAGD,IAAEC,EAAC,GAAE,KAAM;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,QAAAA,GAAE,iBAAe,QAAOA,GAAE,mBAAiB,QAAOA,GAAE,yBAAuB;AAAA,MAAM;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,cAAMC,KAAEF,GAAE;AAA0B,uBAAaE,GAAE,WAAS,GAAGF,EAAC,GAAE,GAAGA,EAAC,GAAE,GAAGE,IAAED,EAAC;AAAA,MAAE;AAAC,eAAS,GAAGD,IAAE;AAAC,cAAMC,KAAED,GAAE,0BAA0B;AAAO,eAAM,cAAYC,KAAE,OAAK,aAAWA,KAAE,IAAED,GAAE,eAAaA,GAAE;AAAA,MAAe;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAM,CAACA,GAAE,mBAAiB,eAAaA,GAAE,0BAA0B;AAAA,MAAM;AAAC,eAAS,GAAGA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAMC,KAAE,OAAO,OAAO,gCAAgC,SAAS;AAAE,YAAIC,IAAEC,IAAEC;AAAE,QAAAF,KAAE,WAASJ,GAAE,QAAM,MAAIA,GAAE,MAAMG,EAAC,IAAE,MAAI;AAAA,QAAC,GAAEE,KAAE,WAASL,GAAE,OAAK,MAAIA,GAAE,KAAKG,EAAC,IAAE,MAAI,EAAE,MAAM,GAAEG,KAAE,WAASN,GAAE,SAAO,CAAAD,OAAGC,GAAE,OAAOD,EAAC,IAAE,MAAI,EAAE,MAAM,GAAE,SAASA,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,UAAAL,GAAE,4BAA0BD,IAAEC,GAAE,SAAO,QAAOA,GAAE,kBAAgB,QAAO,GAAGA,EAAC,GAAEA,GAAE,WAAS,OAAGA,GAAE,kBAAgB,OAAGA,GAAE,aAAW,OAAGA,GAAE,WAAS,OAAGA,GAAE,yBAAuBK,IAAEL,GAAE,eAAaI,IAAEJ,GAAE,iBAAeE,IAAEF,GAAE,mBAAiBG,IAAEJ,GAAE,4BAA0BC,IAAE,EAAE,EAAEC,GAAE,CAAC,GAAG,OAAKD,GAAE,WAAS,MAAG,GAAGA,EAAC,GAAE,OAAQ,CAAAD,QAAI,GAAGC,IAAED,EAAC,GAAE,KAAM;AAAA,QAAC,EAAEA,IAAEI,IAAEC,IAAEC,IAAEC,IAAEL,IAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGH,IAAE;AAAC,eAAO,IAAI,UAAU,6CAA6CA,EAAC,wDAAwD;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAEC,IAAE;AAAC,eAAO,EAAEF,IAAEE,EAAC,GAAE,CAAAA,OAAG,EAAEF,IAAEC,IAAE,CAACC,EAAC,CAAC;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAEC,IAAEC,IAAE;AAAC,eAAO,EAAEF,IAAEE,EAAC,GAAE,CAAAA,OAAG,EAAEF,IAAEC,IAAE,CAACC,EAAC,CAAC;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAEC,IAAEC,IAAE;AAAC,eAAO,EAAEF,IAAEE,EAAC,GAAE,CAAAA,OAAG,EAAEF,IAAEC,IAAE,CAACC,EAAC,CAAC;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAEC,IAAE;AAAC,YAAG,aAAWD,KAAE,GAAGA,EAAC;AAAI,gBAAM,IAAI,UAAU,GAAGC,EAAC,KAAKD,EAAC,2DAA2D;AAAE,eAAOA;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,YAAG,YAAUD,KAAE,GAAGA,EAAC;AAAI,gBAAM,IAAI,UAAU,GAAGC,EAAC,KAAKD,EAAC,iEAAiE;AAAE,eAAOA;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,UAAED,IAAEC,EAAC;AAAE,cAAMC,KAAE,QAAMF,KAAE,SAAOA,GAAE,cAAaG,KAAE,QAAMH,KAAE,SAAOA,GAAE,eAAcI,KAAE,QAAMJ,KAAE,SAAOA,GAAE,cAAaK,KAAE,QAAML,KAAE,SAAOA,GAAE;AAAO,eAAO,WAASK,MAAG,SAASL,IAAEC,IAAE;AAAC,cAAG,CAAC,SAASD,IAAE;AAAC,gBAAG,YAAU,OAAOA,MAAG,SAAOA;AAAE,qBAAM;AAAG,gBAAG;AAAC,qBAAM,aAAW,OAAOA,GAAE;AAAA,YAAO,SAAOA,IAAE;AAAC,qBAAM;AAAA,YAAE;AAAA,UAAC,EAAEA,EAAC;AAAE,kBAAM,IAAI,UAAU,GAAGC,EAAC,yBAAyB;AAAA,QAAC,EAAEI,IAAE,GAAGJ,EAAC,2BAA2B,GAAE,EAAC,cAAa,QAAQC,EAAC,GAAE,eAAc,QAAQC,EAAC,GAAE,cAAa,QAAQC,EAAC,GAAE,QAAOC,GAAC;AAAA,MAAC;AAAC,eAAS,GAAGL,IAAEC,IAAE;AAAC,UAAED,IAAEC,EAAC;AAAE,cAAMC,KAAE,QAAMF,KAAE,SAAOA,GAAE;AAAS,UAAEE,IAAE,YAAW,sBAAsB,GAAE,SAASF,IAAEC,IAAE;AAAC,cAAG,CAAC,EAAED,EAAC;AAAE,kBAAM,IAAI,UAAU,GAAGC,EAAC,2BAA2B;AAAA,QAAC,EAAEC,IAAE,GAAGD,EAAC,6BAA6B;AAAE,cAAME,KAAE,QAAMH,KAAE,SAAOA,GAAE;AAAS,eAAO,EAAEG,IAAE,YAAW,sBAAsB,GAAE,SAASH,IAAEC,IAAE;AAAC,cAAG,CAAC,EAAED,EAAC;AAAE,kBAAM,IAAI,UAAU,GAAGC,EAAC,2BAA2B;AAAA,QAAC,EAAEE,IAAE,GAAGF,EAAC,6BAA6B,GAAE,EAAC,UAASC,IAAE,UAASC,GAAC;AAAA,MAAC;AAAC,aAAO,iBAAiB,gCAAgC,WAAU,EAAC,OAAM,EAAC,YAAW,KAAE,GAAE,SAAQ,EAAC,YAAW,KAAE,GAAE,OAAM,EAAC,YAAW,KAAE,GAAE,aAAY,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,EAAE,gCAAgC,UAAU,OAAM,OAAO,GAAE,EAAE,gCAAgC,UAAU,SAAQ,SAAS,GAAE,EAAE,gCAAgC,UAAU,OAAM,OAAO,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAe,gCAAgC,WAAU,EAAE,aAAY,EAAC,OAAM,mCAAkC,cAAa,KAAE,CAAC;AAAA,MAAE,MAAMkC,gBAAc;AAAA,QAAC,YAAYrC,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAE;AAAC,qBAASD,KAAEA,KAAE,OAAK,EAAEA,IAAE,iBAAiB;AAAE,gBAAME,KAAE,GAAGD,IAAE,kBAAkB,GAAEE,KAAE,SAASH,IAAEC,IAAE;AAAC,cAAED,IAAEC,EAAC;AAAE,kBAAMC,KAAEF,IAAEG,KAAE,QAAMD,KAAE,SAAOA,GAAE,uBAAsBE,KAAE,QAAMF,KAAE,SAAOA,GAAE,QAAOG,KAAE,QAAMH,KAAE,SAAOA,GAAE,MAAKI,KAAE,QAAMJ,KAAE,SAAOA,GAAE,OAAMK,KAAE,QAAML,KAAE,SAAOA,GAAE;AAAK,mBAAM,EAAC,uBAAsB,WAASC,KAAE,SAAO,EAAEA,IAAE,GAAGF,EAAC,0CAA0C,GAAE,QAAO,WAASG,KAAE,SAAO,GAAGA,IAAEF,IAAE,GAAGD,EAAC,2BAA2B,GAAE,MAAK,WAASI,KAAE,SAAO,GAAGA,IAAEH,IAAE,GAAGD,EAAC,yBAAyB,GAAE,OAAM,WAASK,KAAE,SAAO,GAAGA,IAAEJ,IAAE,GAAGD,EAAC,0BAA0B,GAAE,MAAK,WAASM,KAAE,SAAO,GAAGA,IAAE,GAAGN,EAAC,yBAAyB,EAAC;AAAA,UAAC,EAAED,IAAE,iBAAiB;AAAE,cAAII;AAAE,eAAIA,KAAE,MAAM,SAAO,YAAWA,GAAE,UAAQ,QAAOA,GAAE,eAAa,QAAOA,GAAE,aAAW,OAAG,YAAUD,GAAE,MAAK;AAAC,gBAAG,WAASD,GAAE;AAAK,oBAAM,IAAI,WAAW,4DAA4D;AAAE,eAAG,MAAKC,IAAE,GAAGD,IAAE,CAAC,CAAC;AAAA,UAAC,OAAK;AAAC,kBAAMF,KAAE,GAAGE,EAAC;AAAE,eAAG,MAAKC,IAAE,GAAGD,IAAE,CAAC,GAAEF,EAAC;AAAA,UAAC;AAAA,QAAC;AAAA,QAAC,IAAI,SAAQ;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,QAAQ;AAAE,iBAAO,GAAG,IAAI;AAAA,QAAC;AAAA,QAAC,OAAOA,IAAE;AAAC,iBAAO,GAAG,IAAI,IAAE,GAAG,IAAI,IAAE,EAAE,IAAI,UAAU,kDAAkD,CAAC,IAAE,GAAG,MAAKA,EAAC,IAAE,EAAE,GAAG,QAAQ,CAAC;AAAA,QAAC;AAAA,QAAC,UAAUA,IAAE;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,WAAW;AAAE,iBAAO,WAAS,SAASA,IAAEC,IAAE;AAAC,cAAED,IAAEC,EAAC;AAAE,kBAAMC,KAAE,QAAMF,KAAE,SAAOA,GAAE;AAAK,mBAAM,EAAC,MAAK,WAASE,KAAE,SAAO,GAAGA,IAAE,GAAGD,EAAC,yBAAyB,EAAC;AAAA,UAAC,EAAED,IAAE,iBAAiB,EAAE,OAAK,IAAI,4BAA4B,IAAI,IAAE,SAASA,IAAE;AAAC,mBAAO,IAAI,yBAAyBA,EAAC;AAAA,UAAC,EAAE,IAAI;AAAA,QAAC;AAAA,QAAC,YAAYA,IAAEC,KAAE,CAAC,GAAE;AAAC,cAAG,CAAC,EAAE,IAAI;AAAE,kBAAM,GAAG,aAAa;AAAE,YAAED,IAAE,GAAE,aAAa;AAAE,gBAAME,KAAE,GAAGF,IAAE,iBAAiB,GAAEG,KAAE,GAAGF,IAAE,kBAAkB;AAAE,cAAG,KAAK;AAAO,kBAAM,IAAI,UAAU,gFAAgF;AAAE,cAAGC,GAAE,SAAS;AAAO,kBAAM,IAAI,UAAU,gFAAgF;AAAE,iBAAO,EAAE,GAAG,MAAKA,GAAE,UAASC,GAAE,cAAaA,GAAE,cAAaA,GAAE,eAAcA,GAAE,MAAM,CAAC,GAAED,GAAE;AAAA,QAAQ;AAAA,QAAC,OAAOF,IAAEC,KAAE,CAAC,GAAE;AAAC,cAAG,CAAC,EAAE,IAAI;AAAE,mBAAO,EAAE,GAAG,QAAQ,CAAC;AAAE,cAAG,WAASD;AAAE,mBAAO,EAAE,sCAAsC;AAAE,cAAG,CAAC,EAAEA,EAAC;AAAE,mBAAO,EAAE,IAAI,UAAU,2EAA2E,CAAC;AAAE,cAAIE;AAAE,cAAG;AAAC,YAAAA,KAAE,GAAGD,IAAE,kBAAkB;AAAA,UAAC,SAAOD,IAAE;AAAC,mBAAO,EAAEA,EAAC;AAAA,UAAC;AAAC,iBAAO,KAAK,SAAO,EAAE,IAAI,UAAU,2EAA2E,CAAC,IAAEA,GAAE,SAAO,EAAE,IAAI,UAAU,2EAA2E,CAAC,IAAE,GAAG,MAAKA,IAAEE,GAAE,cAAaA,GAAE,cAAaA,GAAE,eAAcA,GAAE,MAAM;AAAA,QAAC;AAAA,QAAC,MAAK;AAAC,cAAG,CAAC,EAAE,IAAI;AAAE,kBAAM,GAAG,KAAK;AAAE,cAAG,KAAK;AAAO,kBAAM,IAAI,UAAU,+CAA+C;AAAE,iBAAO,GAAG,IAAI;AAAA,QAAC;AAAA,QAAC,OAAOF,IAAE;AAAC,cAAG,CAAC,EAAE,IAAI;AAAE,kBAAM,GAAG,QAAQ;AAAE,iBAAO,SAASA,IAAEC,IAAE;AAAC,kBAAMC,KAAEF,GAAE,UAAU,GAAEG,KAAE,IAAI,GAAGD,IAAED,EAAC,GAAEG,KAAE,OAAO,OAAO,EAAE;AAAE,mBAAOA,GAAE,qBAAmBD,IAAEC;AAAA,UAAC,EAAE,MAAK,SAASJ,IAAEC,IAAE;AAAC,cAAED,IAAEC,EAAC;AAAE,kBAAMC,KAAE,QAAMF,KAAE,SAAOA,GAAE;AAAc,mBAAM,EAAC,eAAc,QAAQE,EAAC,EAAC;AAAA,UAAC,EAAEF,IAAE,iBAAiB,EAAE,aAAa;AAAA,QAAC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,2BAA2B,KAAGA,cAAaqC;AAAA,MAAe;AAAC,eAAS,GAAGrC,IAAE;AAAC,eAAO,WAASA,GAAE;AAAA,MAAO;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,YAAGD,GAAE,aAAW,MAAG,aAAWA,GAAE;AAAO,iBAAO,EAAE,MAAM;AAAE,YAAG,cAAYA,GAAE;AAAO,iBAAO,EAAEA,GAAE,YAAY;AAAE,WAAGA,EAAC;AAAE,cAAMG,KAAEH,GAAE;AAAQ,YAAG,WAASG,MAAG,GAAGA,EAAC,GAAE;AAAC,gBAAMH,KAAEG,GAAE;AAAkB,UAAAA,GAAE,oBAAkB,IAAI,KAAEH,GAAE,QAAS,CAAAA,OAAG;AAAC,YAAAA,GAAE,YAAY,MAAM;AAAA,UAAC,CAAE;AAAA,QAAC;AAAC,eAAO,EAAEA,GAAE,0BAA0B,CAAC,EAAEC,EAAC,GAAE,CAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,QAAAA,GAAE,SAAO;AAAS,cAAMC,KAAED,GAAE;AAAQ,YAAG,WAASC,OAAI,EAAEA,EAAC,GAAE,EAAEA,EAAC,IAAG;AAAC,gBAAMD,KAAEC,GAAE;AAAc,UAAAA,GAAE,gBAAc,IAAI,KAAED,GAAE,QAAS,CAAAA,OAAG;AAAC,YAAAA,GAAE,YAAY;AAAA,UAAC,CAAE;AAAA,QAAC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,QAAAD,GAAE,SAAO,WAAUA,GAAE,eAAaC;AAAE,cAAMC,KAAEF,GAAE;AAAQ,mBAASE,OAAI,EAAEA,IAAED,EAAC,GAAE,EAAEC,EAAC,IAAE,GAAGA,IAAED,EAAC,IAAE,GAAGC,IAAED,EAAC;AAAA,MAAE;AAAC,eAAS,GAAGD,IAAE;AAAC,eAAO,IAAI,UAAU,4BAA4BA,EAAC,uCAAuC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,UAAED,IAAEC,EAAC;AAAE,cAAMC,KAAE,QAAMF,KAAE,SAAOA,GAAE;AAAc,eAAO,EAAEE,IAAE,iBAAgB,qBAAqB,GAAE,EAAC,eAAc,EAAEA,EAAC,EAAC;AAAA,MAAC;AAAC,aAAO,iBAAiBmC,gBAAe,WAAU,EAAC,QAAO,EAAC,YAAW,KAAE,GAAE,WAAU,EAAC,YAAW,KAAE,GAAE,aAAY,EAAC,YAAW,KAAE,GAAE,QAAO,EAAC,YAAW,KAAE,GAAE,KAAI,EAAC,YAAW,KAAE,GAAE,QAAO,EAAC,YAAW,KAAE,GAAE,QAAO,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,EAAEA,gBAAe,UAAU,QAAO,QAAQ,GAAE,EAAEA,gBAAe,UAAU,WAAU,WAAW,GAAE,EAAEA,gBAAe,UAAU,aAAY,aAAa,GAAE,EAAEA,gBAAe,UAAU,QAAO,QAAQ,GAAE,EAAEA,gBAAe,UAAU,KAAI,KAAK,GAAE,EAAEA,gBAAe,UAAU,QAAO,QAAQ,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAeA,gBAAe,WAAU,EAAE,aAAY,EAAC,OAAM,kBAAiB,cAAa,KAAE,CAAC,GAAE,YAAU,OAAO,EAAE,iBAAe,OAAO,eAAeA,gBAAe,WAAU,EAAE,eAAc,EAAC,OAAMA,gBAAe,UAAU,QAAO,UAAS,MAAG,cAAa,KAAE,CAAC;AAAE,YAAM,KAAG,CAAArC,OAAGA,GAAE;AAAW,QAAE,IAAG,MAAM;AAAA,MAAE,MAAM,0BAAyB;AAAA,QAAC,YAAYA,IAAE;AAAC,YAAEA,IAAE,GAAE,2BAA2B,GAAEA,KAAE,GAAGA,IAAE,iBAAiB,GAAE,KAAK,0CAAwCA,GAAE;AAAA,QAAa;AAAA,QAAC,IAAI,gBAAe;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,eAAe;AAAE,iBAAO,KAAK;AAAA,QAAuC;AAAA,QAAC,IAAI,OAAM;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,MAAM;AAAE,iBAAO;AAAA,QAAE;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAO,IAAI,UAAU,uCAAuCA,EAAC,kDAAkD;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,yCAAyC,KAAGA,cAAa;AAAA,MAA0B;AAAC,aAAO,iBAAiB,0BAA0B,WAAU,EAAC,eAAc,EAAC,YAAW,KAAE,GAAE,MAAK,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAe,0BAA0B,WAAU,EAAE,aAAY,EAAC,OAAM,6BAA4B,cAAa,KAAE,CAAC;AAAE,YAAM,KAAG,MAAI;AAAE,QAAE,IAAG,MAAM;AAAA,MAAE,MAAM,qBAAoB;AAAA,QAAC,YAAYA,IAAE;AAAC,YAAEA,IAAE,GAAE,sBAAsB,GAAEA,KAAE,GAAGA,IAAE,iBAAiB,GAAE,KAAK,qCAAmCA,GAAE;AAAA,QAAa;AAAA,QAAC,IAAI,gBAAe;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,eAAe;AAAE,iBAAO,KAAK;AAAA,QAAkC;AAAA,QAAC,IAAI,OAAM;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,MAAM;AAAE,iBAAO;AAAA,QAAE;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAO,IAAI,UAAU,kCAAkCA,EAAC,6CAA6C;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,oCAAoC,KAAGA,cAAa;AAAA,MAAqB;AAAC,eAAS,GAAGA,IAAEC,IAAEC,IAAE;AAAC,eAAO,EAAEF,IAAEE,EAAC,GAAE,CAAAA,OAAG,EAAEF,IAAEC,IAAE,CAACC,EAAC,CAAC;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAEC,IAAEC,IAAE;AAAC,eAAO,EAAEF,IAAEE,EAAC,GAAE,CAAAA,OAAG,EAAEF,IAAEC,IAAE,CAACC,EAAC,CAAC;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAEC,IAAEC,IAAE;AAAC,eAAO,EAAEF,IAAEE,EAAC,GAAE,CAACA,IAAEC,OAAI,EAAEH,IAAEC,IAAE,CAACC,IAAEC,EAAC,CAAC;AAAA,MAAC;AAAC,aAAO,iBAAiB,qBAAqB,WAAU,EAAC,eAAc,EAAC,YAAW,KAAE,GAAE,MAAK,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAe,qBAAqB,WAAU,EAAE,aAAY,EAAC,OAAM,wBAAuB,cAAa,KAAE,CAAC;AAAA,MAAE,MAAMmC,iBAAe;AAAA,QAAC,YAAYtC,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAE;AAAC,qBAASF,OAAIA,KAAE;AAAM,gBAAMG,KAAE,GAAGF,IAAE,kBAAkB,GAAEG,KAAE,GAAGF,IAAE,iBAAiB,GAAEG,KAAE,SAASL,IAAEC,IAAE;AAAC,cAAED,IAAEC,EAAC;AAAE,kBAAMC,KAAE,QAAMF,KAAE,SAAOA,GAAE,OAAMG,KAAE,QAAMH,KAAE,SAAOA,GAAE,cAAaI,KAAE,QAAMJ,KAAE,SAAOA,GAAE,OAAMK,KAAE,QAAML,KAAE,SAAOA,GAAE,WAAUM,KAAE,QAAMN,KAAE,SAAOA,GAAE;AAAa,mBAAM,EAAC,OAAM,WAASE,KAAE,SAAO,GAAGA,IAAEF,IAAE,GAAGC,EAAC,0BAA0B,GAAE,cAAaE,IAAE,OAAM,WAASC,KAAE,SAAO,GAAGA,IAAEJ,IAAE,GAAGC,EAAC,0BAA0B,GAAE,WAAU,WAASI,KAAE,SAAO,GAAGA,IAAEL,IAAE,GAAGC,EAAC,8BAA8B,GAAE,cAAaK,GAAC;AAAA,UAAC,EAAEN,IAAE,iBAAiB;AAAE,cAAG,WAASK,GAAE;AAAa,kBAAM,IAAI,WAAW,gCAAgC;AAAE,cAAG,WAASA,GAAE;AAAa,kBAAM,IAAI,WAAW,gCAAgC;AAAE,gBAAMC,KAAE,GAAGF,IAAE,CAAC,GAAEG,KAAE,GAAGH,EAAC,GAAEI,KAAE,GAAGL,IAAE,CAAC,GAAEM,KAAE,GAAGN,EAAC;AAAE,cAAI2B;AAAE,WAAC,SAAS9B,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,qBAASC,KAAG;AAAC,qBAAOL;AAAA,YAAC;AAAC,qBAASM,GAAEN,IAAE;AAAC,qBAAO,SAASD,IAAEC,IAAE;AAAC,sBAAMC,KAAEF,GAAE;AAA2B,oBAAGA,GAAE,eAAc;AAAC,yBAAO,EAAEA,GAAE,4BAA4B,MAAI;AAAC,wBAAG,gBAAc,GAAGA,GAAE,SAAS,IAAEA,GAAE,UAAU,SAAOA,GAAE;AAAgB,4BAAM,GAAGA,GAAE,SAAS,IAAEA,GAAE,UAAU,eAAaA,GAAE;AAAqB,2BAAO,GAAGE,IAAED,EAAC;AAAA,kBAAC,CAAE;AAAA,gBAAC;AAAC,uBAAO,GAAGC,IAAED,EAAC;AAAA,cAAC,EAAED,IAAEC,EAAC;AAAA,YAAC;AAAC,qBAASO,GAAEP,IAAE;AAAC,qBAAO,SAASD,IAAEC,IAAE;AAAC,uBAAO,GAAGD,IAAEC,EAAC,GAAE,EAAE,MAAM;AAAA,cAAC,EAAED,IAAEC,EAAC;AAAA,YAAC;AAAC,qBAASQ,KAAG;AAAC,qBAAO,SAAST,IAAE;AAAC,sBAAMC,KAAED,GAAE,4BAA2BE,KAAED,GAAE,gBAAgB;AAAE,uBAAO,GAAGA,EAAC,GAAE,EAAEC,IAAG,MAAI;AAAC,sBAAG,cAAYF,GAAE;AAAe,0BAAMA,GAAE;AAAqB,qBAAGA,EAAC,KAAG,GAAGA,EAAC;AAAA,gBAAC,GAAI,CAAAC,OAAG;AAAC,wBAAM,GAAGD,IAAEC,EAAC,GAAED,GAAE;AAAA,gBAAoB,CAAE;AAAA,cAAC,EAAEA,EAAC;AAAA,YAAC;AAAC,qBAASmC,KAAG;AAAC,qBAAO,SAASnC,IAAE;AAAC,uBAAO,GAAGA,IAAE,KAAE,GAAEA,GAAE;AAAA,cAA0B,EAAEA,EAAC;AAAA,YAAC;AAAC,qBAAS6B,GAAE5B,IAAE;AAAC,qBAAO,GAAGD,IAAEC,EAAC,GAAE,EAAE,MAAM;AAAA,YAAC;AAAC,YAAAD,GAAE,iBAAe,YAAWA,GAAE,uBAAqB,QAAOA,GAAE,gCAA8B,OAAGA,GAAE,mBAAiB,OAAGA,GAAE,YAAU,SAASA,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,qBAAO,IAAI,eAAe,EAAC,MAAMJ,IAAE;AAAC,gBAAAF,GAAE,sBAAoBE;AAAE,oBAAG;AAAC,wBAAMD,KAAEC,GAAE;AAAO,6BAASD,MAAGA,GAAE,iBAAiB,SAAS,MAAI;AAAC,mCAAaD,GAAE,mBAAiBA,GAAE,iBAAe,YAAWC,GAAE,WAASD,GAAE,uBAAqBC,GAAE;AAAA,kBAAQ,CAAE;AAAA,gBAAC,SAAOD,IAAE;AAAA,gBAAC;AAAC,uBAAO,EAAEC,GAAE,GAAG,OAAKD,GAAE,mBAAiB,MAAG,GAAGA,EAAC,GAAE,OAAQ,CAAAC,OAAG;AAAC,wBAAMD,GAAE,mBAAiB,MAAG,GAAGA,IAAEC,EAAC,GAAEA;AAAA,gBAAC,CAAE;AAAA,cAAC,GAAE,OAAM,CAAAA,QAAI,SAASD,IAAE;AAAC,gBAAAA,GAAE,gCAA8B;AAAA,cAAE,EAAEA,EAAC,GAAE,EAAEE,GAAED,EAAC,GAAG,OAAK,SAASD,IAAE;AAAC,gBAAAA,GAAE,gCAA8B;AAAA,cAAE,EAAEA,EAAC,GAAE,GAAGA,EAAC,GAAE,OAAQ,CAAAC,OAAG;AAAC,sBAAM,SAASD,IAAEC,IAAE;AAAC,kBAAAD,GAAE,gCAA8B,OAAG,GAAGA,IAAEC,EAAC;AAAA,gBAAC,EAAED,IAAEC,EAAC,GAAEA;AAAA,cAAC,CAAE,IAAG,OAAM,OAAK,SAASD,IAAE;AAAC,gBAAAA,GAAE,gCAA8B;AAAA,cAAE,EAAEA,EAAC,GAAE,EAAEG,GAAE,GAAG,OAAK,SAASH,IAAE;AAAC,gBAAAA,GAAE,gCAA8B;AAAG,+BAAaA,GAAE,mBAAiBA,GAAE,uBAAqB;AAAQ,gBAAAA,GAAE,iBAAe;AAAA,cAAQ,EAAEA,EAAC,GAAE,OAAQ,CAAAC,OAAG;AAAC,sBAAM,SAASD,IAAEC,IAAE;AAAC,kBAAAD,GAAE,gCAA8B,OAAGA,GAAE,gBAAe,GAAGA,IAAEC,EAAC;AAAA,gBAAC,EAAED,IAAEC,EAAC,GAAEA;AAAA,cAAC,CAAE,IAAG,OAAM,CAAAA,QAAID,GAAE,iBAAe,WAAUA,GAAE,uBAAqBC,IAAEG,GAAEH,EAAC,GAAE,GAAE,EAAC,eAAcI,IAAE,MAAKC,GAAC,CAAC;AAAA,YAAC,EAAEN,IAAEM,IAAEC,IAAEE,IAAED,IAAEN,IAAEC,EAAC,GAAEH,GAAE,iBAAe,YAAWA,GAAE,uBAAqB,QAAOA,GAAE,0BAAwB,OAAGA,GAAE,mBAAiB,OAAGA,GAAE,YAAU,SAASA,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,qBAAO,IAAIgC,gBAAe,EAAC,OAAM,CAAAnC,QAAIF,GAAE,sBAAoBE,IAAED,GAAE,EAAE,MAAO,CAAAA,OAAG;AAAC,mBAAGD,IAAEC,EAAC;AAAA,cAAC,CAAE,IAAG,MAAK,OAAKD,GAAE,mBAAiB,MAAGE,GAAE,EAAE,MAAO,CAAAD,OAAG;AAAC,mBAAGD,IAAEC,EAAC;AAAA,cAAC,CAAE,IAAG,QAAO,CAAAA,QAAID,GAAE,iBAAe,UAASG,GAAEF,EAAC,GAAE,GAAE,EAAC,eAAcG,IAAE,MAAKC,GAAC,CAAC;AAAA,YAAC,EAAEL,IAAEM,IAAE6B,IAAEN,IAAEzB,IAAEC,EAAC,GAAEL,GAAE,gBAAc,QAAOA,GAAE,6BAA2B,QAAOA,GAAE,qCAAmC,QAAO,GAAGA,IAAE,IAAE,GAAEA,GAAE,6BAA2B;AAAA,UAAM,EAAE,MAAK,EAAG,CAAAA,OAAG;AAAC,YAAA8B,KAAE9B;AAAA,UAAC,CAAE,GAAEQ,IAAEC,IAAEH,IAAEC,EAAC,GAAE,SAASP,IAAEC,IAAE;AAAC,kBAAMC,KAAE,OAAO,OAAO,iCAAiC,SAAS;AAAE,gBAAIC,IAAEC;AAAE,YAAAD,KAAE,WAASF,GAAE,YAAU,CAAAD,OAAGC,GAAE,UAAUD,IAAEE,EAAC,IAAE,CAAAF,OAAG;AAAC,kBAAG;AAAC,uBAAO,GAAGE,IAAEF,EAAC,GAAE,EAAE,MAAM;AAAA,cAAC,SAAOA,IAAE;AAAC,uBAAO,EAAEA,EAAC;AAAA,cAAC;AAAA,YAAC;AAAE,YAAAI,KAAE,WAASH,GAAE,QAAM,MAAIA,GAAE,MAAMC,EAAC,IAAE,MAAI,EAAE,MAAM;AAAE,aAAC,SAASF,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAAF,GAAE,6BAA2BD,IAAEA,GAAE,6BAA2BC,IAAEA,GAAE,sBAAoBC,IAAED,GAAE,kBAAgBE;AAAA,YAAC,EAAEH,IAAEE,IAAEC,IAAEC,EAAC;AAAA,UAAC,EAAE,MAAKC,EAAC,GAAE,WAASA,GAAE,QAAMyB,GAAEzB,GAAE,MAAM,KAAK,0BAA0B,CAAC,IAAEyB,GAAE,MAAM;AAAA,QAAC;AAAA,QAAC,IAAI,WAAU;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,UAAU;AAAE,iBAAO,KAAK;AAAA,QAAS;AAAA,QAAC,IAAI,WAAU;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,UAAU;AAAE,iBAAO,KAAK;AAAA,QAAS;AAAA,MAAC;AAAC,eAAS,GAAG9B,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,4BAA4B,KAAGA,cAAasC;AAAA,MAAgB;AAAC,eAAS,GAAGtC,IAAEC,IAAE;AAAC,WAAGD,IAAEC,EAAC,GAAE,GAAGD,IAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAEC,IAAE;AAAC,WAAGD,GAAE,0BAA0B,GAAE,SAASA,IAAEC,IAAE;AAAC,UAAAD,GAAE,oBAAoB,MAAMC,EAAC;AAAE,yBAAaD,GAAE,kBAAgB,GAAGA,IAAEC,EAAC;AAAA,QAAC,EAAED,IAAEC,EAAC,GAAED,GAAE,iBAAe,GAAGA,IAAE,KAAE;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,mBAASD,GAAE,8BAA4BA,GAAE,mCAAmC,GAAEA,GAAE,6BAA2B,EAAG,CAAAC,OAAG;AAAC,UAAAD,GAAE,qCAAmCC;AAAA,QAAC,CAAE,GAAED,GAAE,gBAAcC;AAAA,MAAC;AAAC,aAAO,iBAAiBqC,iBAAgB,WAAU,EAAC,UAAS,EAAC,YAAW,KAAE,GAAE,UAAS,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAeA,iBAAgB,WAAU,EAAE,aAAY,EAAC,OAAM,mBAAkB,cAAa,KAAE,CAAC;AAAA,MAAE,MAAM,iCAAgC;AAAA,QAAC,cAAa;AAAC,gBAAM,IAAI,UAAU,qBAAqB;AAAA,QAAC;AAAA,QAAC,IAAI,cAAa;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,aAAa;AAAE,iBAAO,GAAG,KAAK,0BAA0B;AAAA,QAAC;AAAA,QAAC,QAAQtC,IAAE;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,SAAS;AAAE,aAAG,MAAKA,EAAC;AAAA,QAAC;AAAA,QAAC,MAAMA,IAAE;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,OAAO;AAAE,cAAIC;AAAE,UAAAA,KAAED,IAAE,GAAG,KAAK,4BAA2BC,EAAC;AAAA,QAAC;AAAA,QAAC,YAAW;AAAC,cAAG,CAAC,GAAG,IAAI;AAAE,kBAAM,GAAG,WAAW;AAAE,WAAC,SAASD,IAAE;AAAC,kBAAMC,KAAED,GAAE;AAA2B,eAAGC,EAAC,KAAG,GAAGA,EAAC;AAAE,kBAAMC,KAAE,IAAI,UAAU,4BAA4B;AAAE,eAAGD,IAAEC,EAAC;AAAA,UAAC,EAAE,IAAI;AAAA,QAAC;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAE;AAAC,eAAM,CAAC,CAAC,EAAEA,EAAC,MAAI,CAAC,CAAC,OAAO,UAAU,eAAe,KAAKA,IAAE,4BAA4B,KAAGA,cAAa;AAAA,MAAiC;AAAC,eAAS,GAAGA,IAAE;AAAC,QAAAA,GAAE,sBAAoB,QAAOA,GAAE,kBAAgB;AAAA,MAAM;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,cAAMC,KAAEF,GAAE;AAA2B,YAAG,CAAC,GAAGE,EAAC;AAAE,gBAAM,IAAI,UAAU,sDAAsD;AAAE,YAAG;AAAC,WAAC,SAASF,IAAEC,IAAE;AAAC,YAAAD,GAAE,mBAAiB;AAAG,gBAAG;AAAC,cAAAA,GAAE,oBAAoB,QAAQC,EAAC;AAAA,YAAC,SAAOA,IAAE;AAAC,oBAAM,GAAGD,IAAEC,EAAC,GAAEA;AAAA,YAAC;AAAA,UAAC,EAAEC,IAAED,EAAC;AAAA,QAAC,SAAOD,IAAE;AAAC,gBAAM,GAAGE,IAAEF,EAAC,GAAEE,GAAE;AAAA,QAAoB;AAAC,cAAMC,KAAE,SAASH,IAAE;AAAC,iBAAM,CAAC,SAASA,IAAE;AAAC,gBAAG,CAAC,GAAGA,EAAC;AAAE,qBAAM;AAAG,gBAAGA,GAAE;AAAiB,qBAAM;AAAG,gBAAG,GAAGA,EAAC,IAAE;AAAE,qBAAM;AAAG,mBAAM;AAAA,UAAE,EAAEA,EAAC;AAAA,QAAC,EAAEE,EAAC;AAAE,QAAAC,OAAID,GAAE,iBAAe,GAAGA,IAAE,IAAE;AAAA,MAAC;AAAC,eAAS,GAAGF,IAAEC,IAAE;AAAC,eAAO,EAAED,GAAE,oBAAoBC,EAAC,GAAE,QAAQ,CAAAA,OAAG;AAAC,gBAAM,GAAGD,GAAE,4BAA2BC,EAAC,GAAEA;AAAA,QAAC,CAAE;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,eAAO,IAAI,UAAU,8CAA8CA,EAAC,yDAAyD;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAO,IAAI,UAAU,6BAA6BA,EAAC,wCAAwC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,eAAM,CAACA,GAAE,2BAAyB,eAAaA,GAAE;AAAA,MAAc;AAAC,eAAS,GAAGA,IAAE;AAAC,QAAAA,GAAE,iBAAe,UAASA,GAAE,0BAAwB,MAAGA,GAAE,oBAAoB,MAAM;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,uBAAaD,GAAE,mBAAiBA,GAAE,iBAAe,WAAUA,GAAE,uBAAqBC,KAAGD,GAAE,oBAAoB,MAAMC,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAE;AAAC,eAAOA,GAAE,oBAAoB;AAAA,MAAW;AAAC,eAAS,GAAGA,IAAEC,IAAE;AAAC,uBAAaD,GAAE,iBAAe,GAAGA,EAAC,IAAE,GAAGA,IAAEC,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGD,IAAEC,IAAE;AAAC,QAAAD,GAAE,iBAAe,YAAWA,GAAE,uBAAqBC,IAAE,CAAC,SAASD,IAAE;AAAC,iBAAOA,GAAE;AAAA,QAA6B,EAAEA,EAAC,KAAGA,GAAE,oBAAkB,GAAGA,EAAC;AAAA,MAAC;AAAC,eAAS,GAAGA,IAAE;AAAC,QAAAA,GAAE,iBAAe;AAAA,MAAS;AAAC,eAAS,GAAGA,IAAE;AAAC,uBAAaA,GAAE,kBAAgB,GAAGA,EAAC;AAAA,MAAC;AAAC,aAAO,iBAAiB,iCAAiC,WAAU,EAAC,SAAQ,EAAC,YAAW,KAAE,GAAE,OAAM,EAAC,YAAW,KAAE,GAAE,WAAU,EAAC,YAAW,KAAE,GAAE,aAAY,EAAC,YAAW,KAAE,EAAC,CAAC,GAAE,EAAE,iCAAiC,UAAU,SAAQ,SAAS,GAAE,EAAE,iCAAiC,UAAU,OAAM,OAAO,GAAE,EAAE,iCAAiC,UAAU,WAAU,WAAW,GAAE,YAAU,OAAO,EAAE,eAAa,OAAO,eAAe,iCAAiC,WAAU,EAAE,aAAY,EAAC,OAAM,oCAAmC,cAAa,KAAE,CAAC,GAAE,EAAE,4BAA0B,2BAA0B,EAAE,uBAAqB,sBAAqB,EAAE,+BAA6B,8BAA6B,EAAE,iBAAeqC,iBAAe,EAAE,2BAAyB,0BAAyB,EAAE,4BAA0B,2BAA0B,EAAE,kCAAgC,iCAAgC,EAAE,8BAA4B,6BAA4B,EAAE,kBAAgBC,kBAAgB,EAAE,mCAAiC,kCAAiC,EAAE,iBAAe,gBAAe,EAAE,kCAAgC,iCAAgC,EAAE,8BAA4B,6BAA4B,OAAO,eAAe,GAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAA,IAAC,CAAE;AAAA;AAAA;;;ACPr+0D;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,aAAa;AACrB,QAAM,aAAa,CAAC,UAAW,OAAO,UAAU;AAChD,YAAQ,aAAa;AAAA;AAAA;;;ACJrB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,YAAY,QAAQ,mBAAmB;AAC/C,QAAM,eAAe;AACrB,QAAM,aAAa;AACnB,oBAAgB,UAAU,MAAM;AAC5B,YAAM,MAAM,KAAK,aAAa,KAAK;AACnC,UAAI,WAAW,KAAK;AACpB,aAAO,aAAa,KAAK;AACrB,cAAM,OAAO,KAAK,IAAI,MAAM,UAAU,UAAU;AAChD,cAAM,QAAQ,KAAK,OAAO,MAAM,UAAU,WAAW,IAAI;AACzD,oBAAY,MAAM;AAClB,cAAM,IAAI,WAAW,KAAK;AAAA,MAC9B;AAAA,IACJ;AACA,oBAAgB,gBAAgB,MAAM;AAClC,UAAI,WAAW;AACf,aAAO,aAAa,KAAK,MAAM;AAC3B,cAAM,QAAQ,KAAK,MAAM,UAAU,KAAK,IAAI,KAAK,MAAM,WAAW,UAAU,CAAC;AAC7E,cAAM,SAAS,MAAM,MAAM,YAAY;AACvC,oBAAY,OAAO;AACnB,cAAM,IAAI,WAAW,MAAM;AAAA,MAC/B;AAAA,IACJ;AACA,oBAAgB,iBAAiB,OAAO,QAAQ,OAAO;AACnD,iBAAW,QAAQ,OAAO;AACtB,YAAI,YAAY,OAAO,IAAI,GAAG;AAC1B,cAAI,OAAO;AACP,mBAAO,UAAU,IAAI;AAAA,UACzB,OACK;AACD,kBAAM;AAAA,UACV;AAAA,QACJ,YACU,GAAG,aAAa,YAAY,KAAK,MAAM,GAAG;AAChD,iBAAO,KAAK,OAAO;AAAA,QACvB,OACK;AACD,iBAAO,gBAAgB,IAAI;AAAA,QAC/B;AAAA,MACJ;AAAA,IACJ;AACA,YAAQ,mBAAmB;AAC3B,cAAU,UAAU,WAAW,UAAU,QAAQ,GAAG,KAAK;AACrD,cAAQ,QAAQ,QAAQ,SAAS,MAAO,MAAM;AAC9C,UAAI,gBAAgB,QAAQ,IACtB,KAAK,IAAI,WAAW,OAAO,CAAC,IAC5B,KAAK,IAAI,OAAO,QAAQ;AAC9B,UAAI,cAAc,MAAM,IAClB,KAAK,IAAI,WAAW,KAAK,CAAC,IAC1B,KAAK,IAAI,KAAK,QAAQ;AAC5B,YAAM,OAAO,KAAK,IAAI,cAAc,eAAe,CAAC;AACpD,UAAI,QAAQ;AACZ,iBAAW,QAAQ,WAAW;AAC1B,YAAI,SAAS,MAAM;AACf;AAAA,QACJ;AACA,cAAM,WAAW,YAAY,OAAO,IAAI,IAAI,KAAK,aAAa,KAAK;AACnE,YAAI,iBAAiB,YAAY,eAAe;AAC5C,2BAAiB;AACjB,yBAAe;AAAA,QACnB,OACK;AACD,cAAI;AACJ,cAAI,YAAY,OAAO,IAAI,GAAG;AAC1B,oBAAQ,KAAK,SAAS,eAAe,KAAK,IAAI,UAAU,WAAW,CAAC;AACpE,qBAAS,MAAM;AAAA,UACnB,OACK;AACD,oBAAQ,KAAK,MAAM,eAAe,KAAK,IAAI,UAAU,WAAW,CAAC;AACjE,qBAAS,MAAM;AAAA,UACnB;AACA,yBAAe;AACf,0BAAgB;AAChB,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,IACJ;AACA,YAAQ,YAAY;AAAA;AAAA;;;AC/EpB;AAAA;AAAA;AAEA,QAAI,yBAA0B,WAAQ,QAAK,0BAA2B,SAAU,UAAU,OAAO,MAAM,GAAG;AACtG,UAAI,SAAS,OAAO,CAAC;AAAG,cAAM,IAAI,UAAU,+CAA+C;AAC3F,UAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAG,cAAM,IAAI,UAAU,0EAA0E;AACjL,aAAO,SAAS,MAAM,IAAI,SAAS,MAAM,EAAE,KAAK,QAAQ,IAAI,IAAI,EAAE,QAAQ,MAAM,IAAI,QAAQ;AAAA,IAChG;AACA,QAAI,yBAA0B,WAAQ,QAAK,0BAA2B,SAAU,UAAU,OAAO,OAAO,MAAM,GAAG;AAC7G,UAAI,SAAS;AAAK,cAAM,IAAI,UAAU,gCAAgC;AACtE,UAAI,SAAS,OAAO,CAAC;AAAG,cAAM,IAAI,UAAU,+CAA+C;AAC3F,UAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAG,cAAM,IAAI,UAAU,yEAAyE;AAChL,aAAQ,SAAS,MAAM,EAAE,KAAK,UAAU,KAAK,IAAI,IAAI,EAAE,QAAQ,QAAQ,MAAM,IAAI,UAAU,KAAK,GAAI;AAAA,IACxG;AACA,QAAI;AAAJ,QAAiB;AAAjB,QAA6B;AAC7B,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,OAAO;AACf,QAAM,yBAAyB;AAC/B,QAAM,eAAe;AACrB,QAAM,gBAAgB;AACtB,QAAM,OAAN,MAAM,MAAK;AAAA,MACP,YAAY,YAAY,CAAC,GAAG,UAAU,CAAC,GAAG;AACtC,oBAAY,IAAI,MAAM,CAAC,CAAC;AACxB,mBAAW,IAAI,MAAM,EAAE;AACvB,mBAAW,IAAI,MAAM,CAAC;AACtB,oBAAY,QAAQ,YAAY,SAAS,UAAW,UAAU,CAAC;AAC/D,YAAI,OAAO,cAAc,YAAY,cAAc,MAAM;AACrD,gBAAM,IAAI,UAAU,mFACyC;AAAA,QACjE;AACA,YAAI,EAAE,GAAG,aAAa,YAAY,UAAU,OAAO,QAAQ,CAAC,GAAG;AAC3D,gBAAM,IAAI,UAAU,kFACwC;AAAA,QAChE;AACA,YAAI,OAAO,YAAY,YAAY,EAAE,GAAG,aAAa,YAAY,OAAO,GAAG;AACvE,gBAAM,IAAI,UAAU,uEAAuE;AAAA,QAC/F;AACA,cAAM,UAAU,IAAI,YAAY;AAChC,mBAAW,OAAO,WAAW;AACzB,cAAI;AACJ,cAAI,YAAY,OAAO,GAAG,GAAG;AACzB,mBAAO,IAAI,WAAW,IAAI,OAAO,MAAM,IAAI,YAAY,IAAI,aAAa,IAAI,UAAU,CAAC;AAAA,UAC3F,WACS,eAAe,aAAa;AACjC,mBAAO,IAAI,WAAW,IAAI,MAAM,CAAC,CAAC;AAAA,UACtC,WACS,eAAe,OAAM;AAC1B,mBAAO;AAAA,UACX,OACK;AACD,mBAAO,QAAQ,OAAO,OAAO,GAAG,CAAC;AAAA,UACrC;AACA,iCAAuB,MAAM,YAAY,uBAAuB,MAAM,YAAY,GAAG,KAAK,YAAY,OAAO,IAAI,IAAI,KAAK,aAAa,KAAK,OAAO,GAAG;AACtJ,iCAAuB,MAAM,aAAa,GAAG,EAAE,KAAK,IAAI;AAAA,QAC5D;AACA,cAAM,OAAO,QAAQ,SAAS,SAAY,KAAK,OAAO,QAAQ,IAAI;AAClE,+BAAuB,MAAM,YAAY,iBAAiB,KAAK,IAAI,IAAI,OAAO,IAAI,GAAG;AAAA,MACzF;AAAA,MACA,SAAS,cAAc,oBAAI,QAAQ,GAAG,aAAa,oBAAI,QAAQ,GAAG,aAAa,oBAAI,QAAQ,GAAG,OAAO,YAAY,EAAE,OAAO;AACtH,eAAO,QAAQ,SACR,OAAO,UAAU,aAChB,GAAG,aAAa,YAAY,MAAM,WAAW,OAC5C,GAAG,aAAa,YAAY,MAAM,MAAM,MACrC,GAAG,aAAa,YAAY,MAAM,WAAW,MAClD,gBAAgB,KAAK,MAAM,OAAO,WAAW,CAAC,CAAC;AAAA,MAC1D;AAAA,MACA,IAAI,OAAO;AACP,eAAO,uBAAuB,MAAM,YAAY,GAAG;AAAA,MACvD;AAAA,MACA,IAAI,OAAO;AACP,eAAO,uBAAuB,MAAM,YAAY,GAAG;AAAA,MACvD;AAAA,MACA,MAAM,OAAO,KAAK,aAAa;AAC3B,eAAO,IAAI,OAAM,GAAG,cAAc,WAAW,uBAAuB,MAAM,aAAa,GAAG,GAAG,KAAK,MAAM,OAAO,GAAG,GAAG;AAAA,UACjH,MAAM;AAAA,QACV,CAAC;AAAA,MACL;AAAA,MACA,MAAM,OAAO;AACT,cAAM,UAAU,IAAI,YAAY;AAChC,YAAI,SAAS;AACb,yBAAiB,UAAU,GAAG,cAAc,kBAAkB,uBAAuB,MAAM,aAAa,GAAG,CAAC,GAAG;AAC3G,oBAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAAA,QACpD;AACA,kBAAU,QAAQ,OAAO;AACzB,eAAO;AAAA,MACX;AAAA,MACA,MAAM,cAAc;AAChB,cAAM,OAAO,IAAI,WAAW,KAAK,IAAI;AACrC,YAAI,SAAS;AACb,yBAAiB,UAAU,GAAG,cAAc,kBAAkB,uBAAuB,MAAM,aAAa,GAAG,CAAC,GAAG;AAC3G,eAAK,IAAI,OAAO,MAAM;AACtB,oBAAU,MAAM;AAAA,QACpB;AACA,eAAO,KAAK;AAAA,MAChB;AAAA,MACA,SAAS;AACL,cAAM,YAAY,GAAG,cAAc,kBAAkB,uBAAuB,MAAM,aAAa,GAAG,GAAG,IAAI;AACzG,eAAO,IAAI,uBAAuB,eAAe;AAAA,UAC7C,MAAM,KAAK,YAAY;AACnB,kBAAM,EAAE,OAAO,KAAK,IAAI,MAAM,SAAS,KAAK;AAC5C,gBAAI,MAAM;AACN,qBAAO,eAAe,MAAM,WAAW,MAAM,CAAC;AAAA,YAClD;AACA,uBAAW,QAAQ,KAAK;AAAA,UAC5B;AAAA,UACA,MAAM,SAAS;AACX,kBAAM,SAAS,OAAO;AAAA,UAC1B;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MACA,KAAK,OAAO,WAAW,IAAI;AACvB,eAAO;AAAA,MACX;AAAA,IACJ;AACA,YAAQ,OAAO;AACf,WAAO,iBAAiB,KAAK,WAAW;AAAA,MACpC,MAAM,EAAE,YAAY,KAAK;AAAA,MACzB,MAAM,EAAE,YAAY,KAAK;AAAA,MACzB,OAAO,EAAE,YAAY,KAAK;AAAA,MAC1B,QAAQ,EAAE,YAAY,KAAK;AAAA,MAC3B,MAAM,EAAE,YAAY,KAAK;AAAA,MACzB,aAAa,EAAE,YAAY,KAAK;AAAA,IACpC,CAAC;AAAA;AAAA;;;ACzHD;AAAA;AAAA;AACA,QAAI,yBAA0B,WAAQ,QAAK,0BAA2B,SAAU,UAAU,OAAO,OAAO,MAAM,GAAG;AAC7G,UAAI,SAAS;AAAK,cAAM,IAAI,UAAU,gCAAgC;AACtE,UAAI,SAAS,OAAO,CAAC;AAAG,cAAM,IAAI,UAAU,+CAA+C;AAC3F,UAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAG,cAAM,IAAI,UAAU,yEAAyE;AAChL,aAAQ,SAAS,MAAM,EAAE,KAAK,UAAU,KAAK,IAAI,IAAI,EAAE,QAAQ,QAAQ,MAAM,IAAI,UAAU,KAAK,GAAI;AAAA,IACxG;AACA,QAAI,yBAA0B,WAAQ,QAAK,0BAA2B,SAAU,UAAU,OAAO,MAAM,GAAG;AACtG,UAAI,SAAS,OAAO,CAAC;AAAG,cAAM,IAAI,UAAU,+CAA+C;AAC3F,UAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAG,cAAM,IAAI,UAAU,0EAA0E;AACjL,aAAO,SAAS,MAAM,IAAI,SAAS,MAAM,EAAE,KAAK,QAAQ,IAAI,IAAI,EAAE,QAAQ,MAAM,IAAI,QAAQ;AAAA,IAChG;AACA,QAAI;AAAJ,QAAgB;AAChB,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,OAAO;AACf,QAAM,SAAS;AACf,QAAM,OAAN,cAAmB,OAAO,KAAK;AAAA,MAC3B,YAAY,UAAU,MAAM,UAAU,CAAC,GAAG;AACtC,cAAM,UAAU,OAAO;AACvB,mBAAW,IAAI,MAAM,MAAM;AAC3B,2BAAmB,IAAI,MAAM,CAAC;AAC9B,YAAI,UAAU,SAAS,GAAG;AACtB,gBAAM,IAAI,UAAU,8DACF,UAAU,MAAM,WAAW;AAAA,QACjD;AACA,+BAAuB,MAAM,YAAY,OAAO,IAAI,GAAG,GAAG;AAC1D,cAAM,eAAe,QAAQ,iBAAiB,SACxC,KAAK,IAAI,IACT,OAAO,QAAQ,YAAY;AACjC,YAAI,CAAC,OAAO,MAAM,YAAY,GAAG;AAC7B,iCAAuB,MAAM,oBAAoB,cAAc,GAAG;AAAA,QACtE;AAAA,MACJ;AAAA,MACA,SAAS,aAAa,oBAAI,QAAQ,GAAG,qBAAqB,oBAAI,QAAQ,GAAG,OAAO,YAAY,EAAE,OAAO;AACjG,eAAO,iBAAiB,OAAO,QACxB,MAAM,OAAO,WAAW,MAAM,UAC9B,OAAO,MAAM,SAAS;AAAA,MACjC;AAAA,MACA,IAAI,OAAO;AACP,eAAO,uBAAuB,MAAM,YAAY,GAAG;AAAA,MACvD;AAAA,MACA,IAAI,eAAe;AACf,eAAO,uBAAuB,MAAM,oBAAoB,GAAG;AAAA,MAC/D;AAAA,MACA,IAAI,qBAAqB;AACrB,eAAO;AAAA,MACX;AAAA,MACA,KAAK,OAAO,WAAW,IAAI;AACvB,eAAO;AAAA,MACX;AAAA,IACJ;AACA,YAAQ,OAAO;AAAA;AAAA;;;ACnDf;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,SAAS;AACjB,QAAM,SAAS;AACf,QAAM,SAAS,CAAC,UAAU,iBAAiB,OAAO;AAClD,YAAQ,SAAS;AAAA;AAAA;;;ACLjB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,SAAS;AACjB,QAAM,SAAS;AACf,QAAM,SAAS,CAAC,UAAU,iBAAiB,OAAO;AAClD,YAAQ,SAAS;AAAA;AAAA;;;ACLjB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,8BAA8B;AACtC,QAAM,SAAS,UAAQ,MAAM;AAC7B,YAAQ,+BAA+B,GAAG,OAAO,WAAW,MAAM;AAAA,IAAE,GAAG,iGACrB;AAAA;AAAA;;;ACLlD;AAAA;AAAA;AACA,QAAI,yBAA0B,WAAQ,QAAK,0BAA2B,SAAU,UAAU,OAAO,MAAM,GAAG;AACtG,UAAI,SAAS,OAAO,CAAC;AAAG,cAAM,IAAI,UAAU,+CAA+C;AAC3F,UAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAG,cAAM,IAAI,UAAU,0EAA0E;AACjL,aAAO,SAAS,MAAM,IAAI,SAAS,MAAM,EAAE,KAAK,QAAQ,IAAI,IAAI,EAAE,QAAQ,MAAM,IAAI,QAAQ;AAAA,IAChG;AACA,QAAI;AAAJ,QAAyB;AAAzB,QAA4C;AAC5C,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,WAAW;AACnB,QAAM,SAAS,UAAQ,MAAM;AAC7B,QAAM,SAAS;AACf,QAAM,WAAW;AACjB,QAAM,WAAW;AACjB,QAAM,eAAe;AACrB,QAAM,gCAAgC;AACtC,QAAM,WAAN,MAAe;AAAA,MACX,YAAY,SAAS;AACjB,4BAAoB,IAAI,IAAI;AAC5B,0BAAkB,IAAI,MAAM,oBAAI,IAAI,CAAC;AACrC,YAAI,SAAS;AACT,WAAC,GAAG,8BAA8B,6BAA6B;AAC/D,kBAAQ,QAAQ,CAAC,EAAE,MAAM,OAAO,SAAS,MAAM,KAAK,OAAO,MAAM,OAAO,QAAQ,CAAC;AAAA,QACrF;AAAA,MACJ;AAAA,MACA,SAAS,oBAAoB,oBAAI,QAAQ,GAAG,sBAAsB,oBAAI,QAAQ,GAAG,OAAO,YAAY,EAAE,OAAO;AACzG,eAAO,QAAQ,UACP,GAAG,aAAa,YAAY,MAAM,WAAW,KAC9C,MAAM,OAAO,WAAW,MAAM,eAC7B,GAAG,aAAa,YAAY,MAAM,MAAM,MACxC,GAAG,aAAa,YAAY,MAAM,GAAG,MACrC,GAAG,aAAa,YAAY,MAAM,GAAG,MACrC,GAAG,aAAa,YAAY,MAAM,MAAM,MACxC,GAAG,aAAa,YAAY,MAAM,GAAG,MACrC,GAAG,aAAa,YAAY,MAAM,MAAM,MACxC,GAAG,aAAa,YAAY,MAAM,OAAO,MACzC,GAAG,aAAa,YAAY,MAAM,MAAM,MACxC,GAAG,aAAa,YAAY,MAAM,IAAI,MACtC,GAAG,aAAa,YAAY,MAAM,OAAO,QAAQ,CAAC,MAClD,GAAG,aAAa,YAAY,MAAM,OAAO,CAAC;AAAA,MACtD;AAAA,MACA,OAAO,MAAM,OAAO,UAAU;AAC1B,+BAAuB,MAAM,qBAAqB,KAAK,kBAAkB,EAAE,KAAK,MAAM;AAAA,UAClF;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,YAAY,UAAU;AAAA,QAC1B,CAAC;AAAA,MACL;AAAA,MACA,IAAI,MAAM,OAAO,UAAU;AACvB,+BAAuB,MAAM,qBAAqB,KAAK,kBAAkB,EAAE,KAAK,MAAM;AAAA,UAClF;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,YAAY,UAAU;AAAA,QAC1B,CAAC;AAAA,MACL;AAAA,MACA,IAAI,MAAM;AACN,cAAM,QAAQ,uBAAuB,MAAM,mBAAmB,GAAG,EAAE,IAAI,OAAO,IAAI,CAAC;AACnF,YAAI,CAAC,OAAO;AACR,iBAAO;AAAA,QACX;AACA,eAAO,MAAM,CAAC;AAAA,MAClB;AAAA,MACA,OAAO,MAAM;AACT,cAAM,QAAQ,uBAAuB,MAAM,mBAAmB,GAAG,EAAE,IAAI,OAAO,IAAI,CAAC;AACnF,YAAI,CAAC,OAAO;AACR,iBAAO,CAAC;AAAA,QACZ;AACA,eAAO,MAAM,MAAM;AAAA,MACvB;AAAA,MACA,IAAI,MAAM;AACN,eAAO,uBAAuB,MAAM,mBAAmB,GAAG,EAAE,IAAI,OAAO,IAAI,CAAC;AAAA,MAChF;AAAA,MACA,OAAO,MAAM;AACT,+BAAuB,MAAM,mBAAmB,GAAG,EAAE,OAAO,OAAO,IAAI,CAAC;AAAA,MAC5E;AAAA,MACA,CAAC,OAAO;AACJ,mBAAW,OAAO,uBAAuB,MAAM,mBAAmB,GAAG,EAAE,KAAK,GAAG;AAC3E,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,MACA,CAAC,UAAU;AACP,mBAAW,QAAQ,KAAK,KAAK,GAAG;AAC5B,gBAAM,SAAS,KAAK,OAAO,IAAI;AAC/B,qBAAW,SAAS,QAAQ;AACxB,kBAAM,CAAC,MAAM,KAAK;AAAA,UACtB;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,SAAS;AACN,mBAAW,CAAC,EAAE,KAAK,KAAK,MAAM;AAC1B,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,MACA,EAAE,qBAAqB,SAASC,oBAAmB,EAAE,MAAM,UAAU,QAAQ,UAAU,WAAW,GAAG;AACjG,cAAM,aAAa,SAAS,WAAW;AACvC,YAAI,aAAa,GAAG;AAChB,gBAAM,IAAI,UAAU,sBAAsB,UAAU,mDACZ,UAAU,WAAW;AAAA,QACjE;AACA,eAAO,OAAO,IAAI;AAClB,YAAI;AACJ,aAAK,GAAG,SAAS,QAAQ,QAAQ,GAAG;AAChC,kBAAQ,aAAa,SACf,WACA,IAAI,OAAO,KAAK,CAAC,QAAQ,GAAG,UAAU;AAAA,YACpC,MAAM,SAAS;AAAA,YACf,cAAc,SAAS;AAAA,UAC3B,CAAC;AAAA,QACT,YACU,GAAG,SAAS,QAAQ,QAAQ,GAAG;AACrC,kBAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,GAAG,aAAa,SAAY,SAAS,UAAU;AAAA,YAC5E,MAAM,SAAS;AAAA,UACnB,CAAC;AAAA,QACL,WACS,UAAU;AACf,gBAAM,IAAI,UAAU,sBAAsB,UAAU,qDACV;AAAA,QAC9C,OACK;AACD,kBAAQ,OAAO,QAAQ;AAAA,QAC3B;AACA,cAAM,SAAS,uBAAuB,MAAM,mBAAmB,GAAG,EAAE,IAAI,IAAI;AAC5E,YAAI,CAAC,QAAQ;AACT,iBAAO,KAAK,uBAAuB,MAAM,mBAAmB,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AAAA,QACtF;AACA,YAAI,CAAC,QAAQ;AACT,iBAAO,KAAK,uBAAuB,MAAM,mBAAmB,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AAAA,QACtF;AACA,eAAO,KAAK,KAAK;AAAA,MACrB,GAAG,OAAO,SAAS,IAAI;AACnB,eAAO,KAAK,QAAQ;AAAA,MACxB;AAAA,MACA,QAAQ,UAAU,SAAS;AACvB,mBAAW,CAAC,MAAM,KAAK,KAAK,MAAM;AAC9B,mBAAS,KAAK,SAAS,OAAO,MAAM,IAAI;AAAA,QAC5C;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,WAAW,IAAI;AACvB,eAAO;AAAA,MACX;AAAA,MACA,CAAC,OAAO,QAAQ,MAAM,IAAI;AACtB,eAAO,KAAK,OAAO,WAAW;AAAA,MAClC;AAAA,IACJ;AACA,YAAQ,WAAW;AAAA;AAAA;;;ACnJnB;AAAA;AAAA;AACA,QAAI,kBAAmB,WAAQ,QAAK,oBAAqB,OAAO,SAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO;AAAW,aAAK;AAC3B,aAAO,eAAe,GAAG,IAAI,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,eAAO,EAAE,CAAC;AAAA,MAAG,EAAE,CAAC;AAAA,IACvF,IAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO;AAAW,aAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,eAAgB,WAAQ,QAAK,gBAAiB,SAAS,GAAGC,UAAS;AACnE,eAAS,KAAK;AAAG,YAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAKA,UAAS,CAAC;AAAG,0BAAgBA,UAAS,GAAG,CAAC;AAAA,IAC5H;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,iBAAa,oBAAuB,OAAO;AAC3C,iBAAa,gBAAmB,OAAO;AACvC,iBAAa,gBAAmB,OAAO;AAAA;AAAA;;;ACdvC;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,WAAW;AACjB,aAAS,iBAAiB;AACtB,UAAI,OAAO;AACX,UAAI,MAAM;AACV,aAAO,QAAQ;AACX,eAAO,SAAU,KAAK,OAAO,IAAI,SAAS,UAAW,CAAC;AAAA,MAC1D;AACA,aAAO;AAAA,IACX;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,UAAU,CAAC,UAAW,OAAO,UAAU,SAAS,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,YAAY;AAC3F,aAAS,cAAc,OAAO;AAC1B,UAAI,QAAQ,KAAK,MAAM,UAAU;AAC7B,eAAO;AAAA,MACX;AACA,YAAM,KAAK,OAAO,eAAe,KAAK;AACtC,UAAI,OAAO,QAAQ,OAAO,QAAW;AACjC,eAAO;AAAA,MACX;AACA,YAAM,OAAO,GAAG,eAAe,GAAG,YAAY,SAAS;AACvD,aAAO,SAAS,OAAO,SAAS;AAAA,IACpC;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACdlB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,iBAAiB,CAAC,UAAU,OAAO,KAAK,EACzC,QAAQ,UAAU,CAAC,OAAO,GAAG,QAAQ;AACtC,UAAK,UAAU,QAAQ,IAAI,IAAI,CAAC,MAAM,QAC9B,UAAU,QAAQ,IAAI,IAAI,CAAC,MAAM,MAAO;AAC5C,eAAO;AAAA,MACX;AACA,aAAO;AAAA,IACX,CAAC;AACD,YAAQ,UAAU;AAAA;AAAA;;;ACVlB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,aAAa,CAAC,SAAS,OAAO,IAAI,EACnC,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,MAAM,KAAK;AACxB,YAAQ,UAAU;AAAA;AAAA;;;ACNlB,IAAAC,sBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,aAAa,CAAC,UAAW,OAAO,UAAU;AAChD,YAAQ,UAAU;AAAA;AAAA;;;ACHlB;AAAA;AAAA;AACA,QAAI,kBAAmB,WAAQ,QAAK,mBAAoB,SAAU,KAAK;AACnE,aAAQ,OAAO,IAAI,aAAc,MAAM,EAAE,WAAW,IAAI;AAAA,IAC5D;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,aAAa;AACrB,QAAM,eAAe,gBAAgB,qBAAuB;AAC5D,QAAM,aAAa,CAAC,UAAU,QAAQ,SAC/B,OAAO,UAAU,aAChB,GAAG,aAAa,SAAS,MAAM,WAAW,KAC3C,MAAM,OAAO,WAAW,MAAM,WAC7B,GAAG,aAAa,SAAS,MAAM,MAAM,KACtC,MAAM,QAAQ,QACd,MAAM,QAAQ,QACd,MAAM,gBAAgB,IAAI;AACjC,YAAQ,aAAa;AAAA;AAAA;;;ACfrB;AAAA;AAAA;AACA,QAAI,kBAAmB,WAAQ,QAAK,mBAAoB,SAAU,KAAK;AACnE,aAAQ,OAAO,IAAI,aAAc,MAAM,EAAE,WAAW,IAAI;AAAA,IAC5D;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,iBAAiB,QAAQ,aAAa;AAC9C,QAAM,eAAe,gBAAgB,qBAAuB;AAC5D,QAAM,aAAa,CAAC,UAAU,QAAQ,UAC9B,GAAG,aAAa,SAAS,MAAM,WAAW,KAC3C,MAAM,OAAO,WAAW,MAAM,eAC7B,GAAG,aAAa,SAAS,MAAM,MAAM,MACrC,GAAG,aAAa,SAAS,MAAM,MAAM,MACrC,GAAG,aAAa,SAAS,MAAM,OAAO,MACtC,GAAG,aAAa,SAAS,MAAM,OAAO,QAAQ,CAAC,CAAC;AACxD,YAAQ,aAAa;AACrB,YAAQ,iBAAiB,QAAQ;AAAA;AAAA;;;ACfjC;AAAA;AAAA;AACA,QAAI,yBAA0B,WAAQ,QAAK,0BAA2B,SAAU,UAAU,OAAO,OAAO,MAAM,GAAG;AAC7G,UAAI,SAAS;AAAK,cAAM,IAAI,UAAU,gCAAgC;AACtE,UAAI,SAAS,OAAO,CAAC;AAAG,cAAM,IAAI,UAAU,+CAA+C;AAC3F,UAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAG,cAAM,IAAI,UAAU,yEAAyE;AAChL,aAAQ,SAAS,MAAM,EAAE,KAAK,UAAU,KAAK,IAAI,IAAI,EAAE,QAAQ,QAAQ,MAAM,IAAI,UAAU,KAAK,GAAI;AAAA,IACxG;AACA,QAAI,yBAA0B,WAAQ,QAAK,0BAA2B,SAAU,UAAU,OAAO,MAAM,GAAG;AACtG,UAAI,SAAS,OAAO,CAAC;AAAG,cAAM,IAAI,UAAU,+CAA+C;AAC3F,UAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAG,cAAM,IAAI,UAAU,0EAA0E;AACjL,aAAO,SAAS,MAAM,IAAI,SAAS,MAAM,EAAE,KAAK,QAAQ,IAAI,IAAI,EAAE,QAAQ,MAAM,IAAI,QAAQ;AAAA,IAChG;AACA,QAAI,kBAAmB,WAAQ,QAAK,mBAAoB,SAAU,KAAK;AACnE,aAAQ,OAAO,IAAI,aAAc,MAAM,EAAE,WAAW,IAAI;AAAA,IAC5D;AACA,QAAI;AAAJ,QAAgC;AAAhC,QAAuD;AAAvD,QAAoF;AAApF,QAAwH;AAAxH,QAAiJ;AAAjJ,QAA2K;AAA3K,QAAoM;AAApM,QAA2N;AAA3N,QAAqP;AACrP,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,UAAU,QAAQ,kBAAkB;AAC5C,QAAM,mBAAmB,gBAAgB,wBAAgC;AACzE,QAAM,kBAAkB,gBAAgB,uBAA+B;AACvE,QAAM,mBAAmB,gBAAgB,wBAAgC;AACzE,QAAM,eAAe,gBAAgB,oBAA4B;AACjE,QAAM,eAAe;AACrB,QAAM,eAAe;AACrB,QAAM,iBAAiB;AAAA,MACnB,yBAAyB;AAAA,IAC7B;AACA,QAAM,kBAAN,MAAsB;AAAA,MAClB,YAAY,MAAM,mBAAmB,SAAS;AAC1C,mCAA2B,IAAI,IAAI;AACnC,8BAAsB,IAAI,MAAM,MAAM;AACtC,oCAA4B,IAAI,MAAM,MAAM;AAC5C,2CAAmC,IAAI,MAAM,MAAM;AACnD,gCAAwB,IAAI,MAAM,IAAI,OAAO,CAAC,CAAC;AAC/C,iCAAyB,IAAI,MAAM,IAAI,YAAY,CAAC;AACpD,gCAAwB,IAAI,MAAM,MAAM;AACxC,8BAAsB,IAAI,MAAM,MAAM;AACtC,iCAAyB,IAAI,MAAM,MAAM;AACzC,YAAI,EAAE,GAAG,aAAa,YAAY,IAAI,GAAG;AACrC,gBAAM,IAAI,UAAU,oDAAoD;AAAA,QAC5E;AACA,YAAI;AACJ,aAAK,GAAG,gBAAgB,SAAS,iBAAiB,GAAG;AACjD,oBAAU;AAAA,QACd,OACK;AACD,qBAAW;AAAA,QACf;AACA,YAAI,CAAC,UAAU;AACX,sBAAY,GAAG,iBAAiB,SAAS;AAAA,QAC7C;AACA,YAAI,OAAO,aAAa,UAAU;AAC9B,gBAAM,IAAI,UAAU,4CAA4C;AAAA,QACpE;AACA,YAAI,WAAW,EAAE,GAAG,gBAAgB,SAAS,OAAO,GAAG;AACnD,gBAAM,IAAI,UAAU,4CAA4C;AAAA,QACpE;AACA,+BAAuB,MAAM,uBAAuB,MAAM,GAAG;AAC7D,+BAAuB,MAAM,0BAA0B,EAAE,GAAG,gBAAgB,GAAG,QAAQ,GAAG,GAAG;AAC7F,+BAAuB,MAAM,6BAA6B,uBAAuB,MAAM,0BAA0B,GAAG,EAAE,OAAO,uBAAuB,MAAM,uBAAuB,GAAG,CAAC,GAAG,GAAG;AAC3L,+BAAuB,MAAM,oCAAoC,uBAAuB,MAAM,6BAA6B,GAAG,EAAE,YAAY,GAAG;AAC/I,aAAK,WAAW,sBAAsB,QAAQ;AAC9C,aAAK,cAAc,iCAAiC,KAAK,QAAQ;AACjE,+BAAuB,MAAM,yBAAyB,uBAAuB,MAAM,0BAA0B,GAAG,EAAE,OAAO,GAAG,uBAAuB,MAAM,yBAAyB,GAAG,CAAC,GAAG,KAAK,QAAQ,GAAG,uBAAuB,MAAM,yBAAyB,GAAG,CAAC,GAAG,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,GAAG;AAChV,aAAK,gBAAgB,OAAO,KAAK,iBAAiB,CAAC;AACnD,aAAK,UAAU,OAAO,OAAO;AAAA,UACzB,gBAAgB,KAAK;AAAA,UACrB,kBAAkB,KAAK;AAAA,QAC3B,CAAC;AACD,eAAO,iBAAiB,MAAM;AAAA,UAC1B,UAAU,EAAE,UAAU,OAAO,cAAc,MAAM;AAAA,UACjD,aAAa,EAAE,UAAU,OAAO,cAAc,MAAM;AAAA,UACpD,eAAe,EAAE,UAAU,OAAO,cAAc,MAAM;AAAA,UACtD,SAAS,EAAE,UAAU,OAAO,cAAc,MAAM;AAAA,QACpD,CAAC;AAAA,MACL;AAAA,MACA,mBAAmB;AACf,YAAI,SAAS;AACb,mBAAW,CAAC,MAAM,GAAG,KAAK,uBAAuB,MAAM,uBAAuB,GAAG,GAAG;AAChF,gBAAM,SAAS,GAAG,aAAa,YAAY,GAAG,IAAI,MAAM,uBAAuB,MAAM,0BAA0B,GAAG,EAAE,QAAQ,GAAG,iBAAiB,SAAS,GAAG,CAAC;AAC7J,oBAAU,uBAAuB,MAAM,4BAA4B,KAAK,+BAA+B,EAAE,KAAK,MAAM,MAAM,KAAK,EAAE;AACjI,qBAAW,GAAG,aAAa,YAAY,KAAK,IAAI,MAAM,OAAO,MAAM;AACnE,oBAAU,uBAAuB,MAAM,oCAAoC,GAAG;AAAA,QAClF;AACA,eAAO,SAAS,uBAAuB,MAAM,yBAAyB,GAAG,EAAE;AAAA,MAC/E;AAAA,MACA,CAAC,SAAS;AACN,mBAAW,CAAC,MAAM,GAAG,KAAK,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,QAAQ,GAAG;AAC1F,gBAAM,SAAS,GAAG,aAAa,YAAY,GAAG,IAAI,MAAM,uBAAuB,MAAM,0BAA0B,GAAG,EAAE,QAAQ,GAAG,iBAAiB,SAAS,GAAG,CAAC;AAC7J,gBAAM,uBAAuB,MAAM,4BAA4B,KAAK,+BAA+B,EAAE,KAAK,MAAM,MAAM,KAAK;AAC3H,gBAAM;AACN,gBAAM,uBAAuB,MAAM,6BAA6B,GAAG;AAAA,QACvE;AACA,cAAM,uBAAuB,MAAM,yBAAyB,GAAG;AAAA,MACnE;AAAA,MACA,OAAO,SAAS;AACZ,mBAAW,QAAQ,KAAK,OAAO,GAAG;AAC9B,eAAK,GAAG,aAAa,YAAY,IAAI,GAAG;AACpC,mBAAO,KAAK,OAAO;AAAA,UACvB,OACK;AACD,kBAAM;AAAA,UACV;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,EAAE,wBAAwB,oBAAI,QAAQ,GAAG,8BAA8B,oBAAI,QAAQ,GAAG,qCAAqC,oBAAI,QAAQ,GAAG,0BAA0B,oBAAI,QAAQ,GAAG,2BAA2B,oBAAI,QAAQ,GAAG,0BAA0B,oBAAI,QAAQ,GAAG,wBAAwB,oBAAI,QAAQ,GAAG,2BAA2B,oBAAI,QAAQ,GAAG,6BAA6B,oBAAI,QAAQ,GAAG,kCAAkC,SAASC,iCAAgC,MAAM,OAAO;AACvd,YAAI,SAAS;AACb,kBAAU,GAAG,uBAAuB,MAAM,yBAAyB,GAAG,CAAC,GAAG,KAAK,QAAQ,GAAG,uBAAuB,MAAM,uBAAuB,GAAG,CAAC;AAClJ,kBAAU,0CAA0C,GAAG,aAAa,SAAS,IAAI,CAAC;AAClF,aAAK,GAAG,aAAa,YAAY,KAAK,GAAG;AACrC,oBAAU,gBAAgB,GAAG,aAAa,SAAS,MAAM,IAAI,CAAC,IAAI,uBAAuB,MAAM,uBAAuB,GAAG,CAAC;AAC1H,oBAAU,iBAAiB,MAAM,QAAQ,0BAA0B;AAAA,QACvE;AACA,YAAI,uBAAuB,MAAM,0BAA0B,GAAG,EAAE,4BAA4B,MAAM;AAC9F,oBAAU,GAAG,uBAAuB,MAAM,uBAAuB,GAAG,CAAC,oBAAoB,GAAG,aAAa,YAAY,KAAK,IAAI,MAAM,OAAO,MAAM,UAAU;AAAA,QAC/J;AACA,eAAO,uBAAuB,MAAM,0BAA0B,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE;AAAA,MAC9J,GAAG,OAAO,SAAS,IAAI;AACnB,eAAO,KAAK,OAAO;AAAA,MACvB;AAAA,MACA,CAAC,OAAO,aAAa,IAAI;AACrB,eAAO,KAAK,OAAO;AAAA,MACvB;AAAA,IACJ;AACA,YAAQ,kBAAkB;AAC1B,YAAQ,UAAU;AAAA;AAAA;;;AC7HlB;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;ACD5D;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA;;;ACD5D,IAAAC,eAAA;AAAA;AAAA;AACA,QAAI,kBAAmB,WAAQ,QAAK,oBAAqB,OAAO,SAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO;AAAW,aAAK;AAC3B,aAAO,eAAe,GAAG,IAAI,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,eAAO,EAAE,CAAC;AAAA,MAAG,EAAE,CAAC;AAAA,IACvF,IAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO;AAAW,aAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,eAAgB,WAAQ,QAAK,gBAAiB,SAAS,GAAGC,UAAS;AACnE,eAAS,KAAK;AAAG,YAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAKA,UAAS,CAAC;AAAG,0BAAgBA,UAAS,GAAG,CAAC;AAAA,IAC5H;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,iBAAa,2BAA8B,OAAO;AAClD,iBAAa,oBAAuB,OAAO;AAC3C,iBAAa,wBAA2B,OAAO;AAC/C,iBAAa,sBAA8B,OAAO;AAClD,iBAAa,sBAA8B,OAAO;AAAA;AAAA;;;;;;;;ACblD,QAAa,gBAAb,MAA0B;MACxB,YAAmB,MAAS;AAAT,aAAA,OAAA;MAAY;MAC/B,KAAK,OAAO,WAAW,IAAC;AACtB,eAAO;MACT;;AAJF,YAAA,gBAAA;;;;;ACHA,IAAAC,yBAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,QAAM,UAAU,CAAC,UAAW,OAAO,UAAU,SAAS,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,YAAY;AAC3F,aAAS,cAAc,OAAO;AAC1B,UAAI,QAAQ,KAAK,MAAM,UAAU;AAC7B,eAAO;AAAA,MACX;AACA,YAAM,KAAK,OAAO,eAAe,KAAK;AACtC,UAAI,OAAO,QAAQ,OAAO,QAAW;AACjC,eAAO;AAAA,MACX;AACA,YAAM,OAAO,GAAG,eAAe,GAAG,YAAY,SAAS;AACvD,aAAO,SAAS,OAAO,SAAS;AAAA,IACpC;AACA,YAAQ,UAAU;AAAA;AAAA;;;ACdlB;AAAA;AAAA;AACA,QAAI,kBAAmB,WAAQ,QAAK,oBAAqB,OAAO,SAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO;AAAW,aAAK;AAC3B,aAAO,eAAe,GAAG,IAAI,EAAE,YAAY,MAAM,KAAK,WAAW;AAAE,eAAO,EAAE,CAAC;AAAA,MAAG,EAAE,CAAC;AAAA,IACvF,IAAM,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,UAAI,OAAO;AAAW,aAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACf;AACA,QAAI,eAAgB,WAAQ,QAAK,gBAAiB,SAAS,GAAGC,UAAS;AACnE,eAAS,KAAK;AAAG,YAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAKA,UAAS,CAAC;AAAG,0BAAgBA,UAAS,GAAG,CAAC;AAAA,IAC5H;AACA,QAAI,yBAA0B,WAAQ,QAAK,0BAA2B,SAAU,UAAU,OAAO,OAAO,MAAM,GAAG;AAC7G,UAAI,SAAS;AAAK,cAAM,IAAI,UAAU,gCAAgC;AACtE,UAAI,SAAS,OAAO,CAAC;AAAG,cAAM,IAAI,UAAU,+CAA+C;AAC3F,UAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAG,cAAM,IAAI,UAAU,yEAAyE;AAChL,aAAQ,SAAS,MAAM,EAAE,KAAK,UAAU,KAAK,IAAI,IAAI,EAAE,QAAQ,QAAQ,MAAM,IAAI,UAAU,KAAK,GAAI;AAAA,IACxG;AACA,QAAI,yBAA0B,WAAQ,QAAK,0BAA2B,SAAU,UAAU,OAAO,MAAM,GAAG;AACtG,UAAI,SAAS,OAAO,CAAC;AAAG,cAAM,IAAI,UAAU,+CAA+C;AAC3F,UAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAG,cAAM,IAAI,UAAU,0EAA0E;AACjL,aAAO,SAAS,MAAM,IAAI,SAAS,MAAM,EAAE,KAAK,QAAQ,IAAI,IAAI,EAAE,QAAQ,MAAM,IAAI,QAAQ;AAAA,IAChG;AACA,QAAI,kBAAmB,WAAQ,QAAK,mBAAoB,SAAU,KAAK;AACnE,aAAQ,OAAO,IAAI,aAAc,MAAM,EAAE,WAAW,IAAI;AAAA,IAC5D;AACA,QAAI;AAAJ,QAAwB;AACxB,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,eAAe,QAAQ,mBAAmB;AAClD,QAAM,OAAO,UAAQ,IAAI;AACzB,QAAM,SAAS,UAAQ,MAAM;AAC7B,QAAM,sBAAsB,gBAAgB,2BAA4B;AACxE,QAAM,SAAS;AACf,QAAM,kBAAkB,gBAAgB,wBAA0B;AAClE,iBAAa,kBAAqB,OAAO;AACzC,QAAM,UAAU;AAGhB,QAAM,eAAN,MAAM,cAAa;AAAA,MACf,YAAY,OAAO;AACf,2BAAmB,IAAI,MAAM,MAAM;AACnC,4BAAoB,IAAI,MAAM,MAAM;AACpC,+BAAuB,MAAM,oBAAoB,MAAM,MAAM,GAAG;AAChE,+BAAuB,MAAM,qBAAqB,MAAM,SAAS,GAAG,GAAG;AACvE,aAAK,QAAQ,GAAG,OAAO,UAAU,uBAAuB,MAAM,oBAAoB,GAAG,CAAC;AACtF,aAAK,OAAO,MAAM;AAClB,aAAK,eAAe,MAAM;AAAA,MAC9B;AAAA,MACA,MAAM,OAAO,KAAK;AACd,eAAO,IAAI,cAAa;AAAA,UACpB,MAAM,uBAAuB,MAAM,oBAAoB,GAAG;AAAA,UAC1D,cAAc,KAAK;AAAA,UACnB,MAAM,MAAM;AAAA,UACZ;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MACA,OAAO,SAAS;AACZ,cAAM,EAAE,QAAQ,IAAI,MAAM,KAAK,SAAS,KAAK,uBAAuB,MAAM,oBAAoB,GAAG,CAAC;AAClG,YAAI,UAAU,KAAK,cAAc;AAC7B,gBAAM,IAAI,oBAAoB,QAAQ,SAAS,kBAAkB;AAAA,QACrE;AACA,YAAI,KAAK,MAAM;AACX,kBAAQ,GAAG,KAAK,kBAAkB,uBAAuB,MAAM,oBAAoB,GAAG,GAAG;AAAA,YACrF,OAAO,uBAAuB,MAAM,qBAAqB,GAAG;AAAA,YAC5D,KAAK,uBAAuB,MAAM,qBAAqB,GAAG,IAAI,KAAK,OAAO;AAAA,UAC9E,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,MACA,MAAM,qBAAqB,oBAAI,QAAQ,GAAG,sBAAsB,oBAAI,QAAQ,GAAG,OAAO,YAAY,IAAI;AAClG,eAAO;AAAA,MACX;AAAA,IACJ;AACA,aAAS,mBAAmB,MAAM,EAAE,SAAS,KAAK,GAAG,mBAAmB,UAAU,CAAC,GAAG;AAClF,UAAI;AACJ,WAAK,GAAG,gBAAgB,SAAS,iBAAiB,GAAG;AACjD,SAAC,SAAS,QAAQ,IAAI,CAAC,mBAAmB,MAAS;AAAA,MACvD,OACK;AACD,mBAAW;AAAA,MACf;AACA,YAAM,OAAO,IAAI,aAAa,EAAE,MAAM,MAAM,cAAc,QAAQ,CAAC;AACnE,UAAI,CAAC,UAAU;AACX,mBAAW,KAAK;AAAA,MACpB;AACA,aAAO,IAAI,OAAO,KAAK,CAAC,IAAI,GAAG,UAAU;AAAA,QACrC,GAAG;AAAA,QAAS,cAAc,KAAK;AAAA,MACnC,CAAC;AAAA,IACL;AACA,aAAS,iBAAiB,MAAM,mBAAmB,UAAU,CAAC,GAAG;AAC7D,YAAM,SAAS,GAAG,KAAK,UAAU,IAAI;AACrC,aAAO,mBAAmB,MAAM,OAAO,mBAAmB,OAAO;AAAA,IACrE;AACA,YAAQ,mBAAmB;AAC3B,mBAAe,aAAa,MAAM,mBAAmB,SAAS;AAC1D,YAAM,QAAQ,MAAM,KAAK,SAAS,KAAK,IAAI;AAC3C,aAAO,mBAAmB,MAAM,OAAO,mBAAmB,OAAO;AAAA,IACrE;AACA,YAAQ,eAAe;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7FvB,QAAA,KAAA,aAAA,uCAAA;AACA,QAAA,KAAA,aAAA,aAAA;AAEA,QAAA,mBAAA,gBAAA,wBAAA;AACA,QAAA,qBAAA;AACA,QAAA,YAAA,UAAA,IAAA;AAEA,QAAA,sBAAA;AACA,QAAA,gBAAA,UAAA,QAAA;AAEA,QAAA,kBAAA;AAIA,QAAA,uBAAA;AAIA,QAAI,qBAAqB;AASzB,mBAAe,aAAa,SAAiB,MAAW;AAEtD,YAAM,EAAE,cAAc,cAAa,IAAK,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,aAAA,sBAA2C,CAAA;AAEnF,UAAI,CAAC,oBAAoB;AACvB,gBAAQ,KAAK,uDAAuD,KAAK,UAAU,IAAI,CAAC,WAAW;AACnG,6BAAqB;;AAGvB,aAAO,MAAM,cAAc,MAAM,GAAG,IAAI;IAC1C;AAEA,QAAM,mBAA0B,IAAI,iBAAA,QAAe,EAAE,WAAW,MAAM,SAAS,IAAI,KAAK,IAAI,CAAE;AAC9F,QAAM,oBAA2B,IAAI,iBAAA,QAAe,WAAW,EAAE,WAAW,MAAM,SAAS,IAAI,KAAK,IAAI,CAAE;AAE1G,mBAAe,2BACb,MACA,MAAuB;AAEvB,YAAM,UAAU,IAAI,oBAAA,gBAAgB,IAAI;AACxC,YAAM,WAAW,cAAA,SAAS,KAAK,OAAO;AACtC,YAAM,OAAO,IAAI,gBAAA,cAAc,QAAQ;AACvC,YAAM,UAAU;QACd,GAAG,KAAK;QACR,GAAG,QAAQ;QACX,kBAAkB,QAAQ;;AAG5B,aAAO,EAAE,GAAG,MAAM,MAAmB,QAAO;IAC9C;AAEA,aAAgB,aAAU;AAExB,UAAI,OAAO,oBAAoB,aAAa;AAE1C,mBAAW,kBAAkB,mBAAA;;AAE/B,aAAO;QACL,MAAM;QACN,OAAO,GAAG;QACV,SAAS,GAAG;QACZ,UAAU,GAAG;QACb,SAAS,GAAG;QACZ,UAAU,GAAG;QACb,MAAM,GAAG;QACT,MAAM,GAAG;QACT,gBAAA,qBAAA;QACA;QACA,iBAAiB,CAAC,QAAwB,IAAI,WAAW,OAAO,IAAI,oBAAoB;QACxF;QACA,gBAAgB,CAAC,UAAsC,iBAAiB,UAAA;;IAE5E;AArBA,YAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1DA,iBAAA,wBAAA,OAAA;;;;;ACHA;AAAA;AAAA;AAGA,QAAM,QAAQ;AACd,QAAM,OAAO;AACb,QAAI,CAAC,MAAM;AAAM,YAAM,SAAS,KAAK,WAAW,GAAG,EAAE,MAAM,KAAK,CAAC;AACjE,eAAW,YAAY,OAAO,KAAK,KAAK,GAAG;AACzC,aAAO,eAAe,SAAS,UAAU;AAAA,QACvC,MAAM;AACJ,iBAAO,MAAM,QAAQ;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;;;;;;;;ACVA,QAAA,SAAA;AAEA,QAAa,cAAb,cAAiC,MAAK;;AAAtC,YAAA,cAAA;AAEA,QAAa,WAAb,MAAa,kBAAiB,YAAW;MASvC,YACE,QACA,OACA,SACA,SAA4B;AAE5B,cAAM,GAAG,UAAS,YAAY,QAAQ,OAAO,OAAO,CAAC,EAAE;AACvD,aAAK,SAAS;AACd,aAAK,UAAU;AAEf,cAAM,OAAO;AACb,aAAK,QAAQ;AACb,aAAK,OAAO,6BAAO;AACnB,aAAK,QAAQ,6BAAO;AACpB,aAAK,OAAO,6BAAO;MACrB;MAEQ,OAAO,YAAY,QAA4B,OAAY,SAA2B;AAC5F,cAAM,OACJ,+BAAO,WACL,OAAO,MAAM,YAAY,WACvB,MAAM,UACN,KAAK,UAAU,MAAM,OAAO,IAC9B,QAAQ,KAAK,UAAU,KAAK,IAC5B;AAEJ,YAAI,UAAU,KAAK;AACjB,iBAAO,GAAG,MAAM,IAAI,GAAG;;AAEzB,YAAI,QAAQ;AACV,iBAAO,GAAG,MAAM;;AAElB,YAAI,KAAK;AACP,iBAAO;;AAET,eAAO;MACT;MAEA,OAAO,SACL,QACA,eACA,SACA,SAA4B;AAE5B,YAAI,CAAC,QAAQ;AACX,iBAAO,IAAI,mBAAmB,EAAE,QAAO,GAAA,OAAA,aAAY,aAAa,EAAC,CAAE;;AAGrE,cAAM,QAAS,+CAAwC;AAEvD,YAAI,WAAW,KAAK;AAClB,iBAAO,IAAI,gBAAgB,QAAQ,OAAO,SAAS,OAAO;;AAG5D,YAAI,WAAW,KAAK;AAClB,iBAAO,IAAI,oBAAoB,QAAQ,OAAO,SAAS,OAAO;;AAGhE,YAAI,WAAW,KAAK;AAClB,iBAAO,IAAI,sBAAsB,QAAQ,OAAO,SAAS,OAAO;;AAGlE,YAAI,WAAW,KAAK;AAClB,iBAAO,IAAI,cAAc,QAAQ,OAAO,SAAS,OAAO;;AAG1D,YAAI,WAAW,KAAK;AAClB,iBAAO,IAAI,cAAc,QAAQ,OAAO,SAAS,OAAO;;AAG1D,YAAI,WAAW,KAAK;AAClB,iBAAO,IAAI,yBAAyB,QAAQ,OAAO,SAAS,OAAO;;AAGrE,YAAI,WAAW,KAAK;AAClB,iBAAO,IAAI,eAAe,QAAQ,OAAO,SAAS,OAAO;;AAG3D,YAAI,UAAU,KAAK;AACjB,iBAAO,IAAI,oBAAoB,QAAQ,OAAO,SAAS,OAAO;;AAGhE,eAAO,IAAI,UAAS,QAAQ,OAAO,SAAS,OAAO;MACrD;;AA5FF,YAAA,WAAA;AA+FA,QAAa,oBAAb,cAAuC,SAAQ;MAG7C,YAAY,EAAE,QAAO,IAA2B,CAAA,GAAE;AAChD,cAAM,QAAW,QAAW,WAAW,wBAAwB,MAAS;AAHxD,aAAA,SAAoB;MAItC;;AALF,YAAA,oBAAA;AAQA,QAAa,qBAAb,cAAwC,SAAQ;MAG9C,YAAY,EAAE,SAAS,MAAK,GAAmD;AAC7E,cAAM,QAAW,QAAW,WAAW,qBAAqB,MAAS;AAHrD,aAAA,SAAoB;AAMpC,YAAI;AAAO,eAAK,QAAQ;MAC1B;;AARF,YAAA,qBAAA;AAWA,QAAa,4BAAb,cAA+C,mBAAkB;MAC/D,YAAY,EAAE,QAAO,IAA2B,CAAA,GAAE;AAChD,cAAM,EAAE,SAAS,4BAAW,qBAAoB,CAAE;MACpD;;AAHF,YAAA,4BAAA;AAMA,QAAa,kBAAb,cAAqC,SAAQ;MAA7C,cAAA;;AACoB,aAAA,SAAc;MAClC;;AAFA,YAAA,kBAAA;AAIA,QAAa,sBAAb,cAAyC,SAAQ;MAAjD,cAAA;;AACoB,aAAA,SAAc;MAClC;;AAFA,YAAA,sBAAA;AAIA,QAAa,wBAAb,cAA2C,SAAQ;MAAnD,cAAA;;AACoB,aAAA,SAAc;MAClC;;AAFA,YAAA,wBAAA;AAIA,QAAa,gBAAb,cAAmC,SAAQ;MAA3C,cAAA;;AACoB,aAAA,SAAc;MAClC;;AAFA,YAAA,gBAAA;AAIA,QAAa,gBAAb,cAAmC,SAAQ;MAA3C,cAAA;;AACoB,aAAA,SAAc;MAClC;;AAFA,YAAA,gBAAA;AAIA,QAAa,2BAAb,cAA8C,SAAQ;MAAtD,cAAA;;AACoB,aAAA,SAAc;MAClC;;AAFA,YAAA,2BAAA;AAIA,QAAa,iBAAb,cAAoC,SAAQ;MAA5C,cAAA;;AACoB,aAAA,SAAc;MAClC;;AAFA,YAAA,iBAAA;AAIA,QAAa,sBAAb,cAAyC,SAAQ;;AAAjD,YAAA,sBAAA;;;;;;;;;;AC1JA,QAAA,UAAA;AACA,QAAA,UAAA;AAEA,QAAA,UAAA;AAUA,QAAa,SAAb,MAAa,QAAM;MAGjB,YACU,UACR,YAA2B;AADnB,aAAA,WAAA;AAGR,aAAK,aAAa;MACpB;MAEA,OAAO,gBAAsB,UAAoB,YAA2B;AAC1E,YAAI,WAAW;AACf,cAAM,UAAU,IAAI,WAAU;AAE9B,wBAAgB,eAAY;AAC1B,cAAI,CAAC,SAAS,MAAM;AAClB,uBAAW,MAAK;AAChB,kBAAM,IAAI,QAAA,YAAY,mDAAmD;;AAG3E,gBAAM,cAAc,IAAI,YAAW;AAEnC,gBAAM,OAAO,4BAAmC,SAAS,IAAI;AAC7D,2BAAiB,SAAS,MAAM;AAC9B,uBAAW,QAAQ,YAAY,OAAO,KAAK,GAAG;AAC5C,oBAAM,MAAM,QAAQ,OAAO,IAAI;AAC/B,kBAAI;AAAK,sBAAM;;;AAInB,qBAAW,QAAQ,YAAY,MAAK,GAAI;AACtC,kBAAM,MAAM,QAAQ,OAAO,IAAI;AAC/B,gBAAI;AAAK,oBAAM;;QAEnB;AAEA,wBAAgB,WAAQ;AACtB,cAAI,UAAU;AACZ,kBAAM,IAAI,MAAM,0EAA0E;;AAE5F,qBAAW;AACX,cAAI,OAAO;AACX,cAAI;AACF,6BAAiB,OAAO,aAAY,GAAI;AACtC,kBAAI;AAAM;AAEV,kBAAI,IAAI,KAAK,WAAW,QAAQ,GAAG;AACjC,uBAAO;AACP;;AAGF,kBAAI,IAAI,UAAU,MAAM;AACtB,oBAAI;AAEJ,oBAAI;AACF,yBAAO,KAAK,MAAM,IAAI,IAAI;yBACnB,GAAG;AACV,0BAAQ,MAAM,sCAAsC,IAAI,IAAI;AAC5D,0BAAQ,MAAM,eAAe,IAAI,GAAG;AACpC,wBAAM;;AAGR,oBAAI,QAAQ,KAAK,OAAO;AACtB,wBAAM,IAAI,QAAA,SAAS,QAAW,KAAK,OAAO,QAAW,MAAS;;AAGhE,sBAAM;;;AAGV,mBAAO;mBACA,GAAG;AAEV,gBAAI,aAAa,SAAS,EAAE,SAAS;AAAc;AACnD,kBAAM;;AAGN,gBAAI,CAAC;AAAM,yBAAW,MAAK;;QAE/B;AAEA,eAAO,IAAI,QAAO,UAAU,UAAU;MACxC;;;;;MAMA,OAAO,mBAAyB,gBAAgC,YAA2B;AACzF,YAAI,WAAW;AAEf,wBAAgB,YAAS;AACvB,gBAAM,cAAc,IAAI,YAAW;AAEnC,gBAAM,OAAO,4BAAmC,cAAc;AAC9D,2BAAiB,SAAS,MAAM;AAC9B,uBAAW,QAAQ,YAAY,OAAO,KAAK,GAAG;AAC5C,oBAAM;;;AAIV,qBAAW,QAAQ,YAAY,MAAK,GAAI;AACtC,kBAAM;;QAEV;AAEA,wBAAgB,WAAQ;AACtB,cAAI,UAAU;AACZ,kBAAM,IAAI,MAAM,0EAA0E;;AAE5F,qBAAW;AACX,cAAI,OAAO;AACX,cAAI;AACF,6BAAiB,QAAQ,UAAS,GAAI;AACpC,kBAAI;AAAM;AACV,kBAAI;AAAM,sBAAM,KAAK,MAAM,IAAI;;AAEjC,mBAAO;mBACA,GAAG;AAEV,gBAAI,aAAa,SAAS,EAAE,SAAS;AAAc;AACnD,kBAAM;;AAGN,gBAAI,CAAC;AAAM,yBAAW,MAAK;;QAE/B;AAEA,eAAO,IAAI,QAAO,UAAU,UAAU;MACxC;MAEA,CAAC,OAAO,aAAa,IAAC;AACpB,eAAO,KAAK,SAAQ;MACtB;;;;;MAMA,MAAG;AACD,cAAM,OAA6C,CAAA;AACnD,cAAM,QAA8C,CAAA;AACpD,cAAM,WAAW,KAAK,SAAQ;AAE9B,cAAM,cAAc,CAAC,UAAoE;AACvF,iBAAO;YACL,MAAM,MAAK;AACT,kBAAI,MAAM,WAAW,GAAG;AACtB,sBAAM,SAAS,SAAS,KAAI;AAC5B,qBAAK,KAAK,MAAM;AAChB,sBAAM,KAAK,MAAM;;AAEnB,qBAAO,MAAM,MAAK;YACpB;;QAEJ;AAEA,eAAO;UACL,IAAI,QAAO,MAAM,YAAY,IAAI,GAAG,KAAK,UAAU;UACnD,IAAI,QAAO,MAAM,YAAY,KAAK,GAAG,KAAK,UAAU;;MAExD;;;;;;MAOA,mBAAgB;AACd,cAAMC,QAAO;AACb,YAAI;AACJ,cAAM,UAAU,IAAI,YAAW;AAE/B,eAAO,IAAI,QAAA,eAAe;UACxB,MAAM,QAAK;AACT,mBAAOA,MAAK,OAAO,aAAa,EAAC;UACnC;UACA,MAAM,KAAK,MAAI;AACb,gBAAI;AACF,oBAAM,EAAE,OAAO,KAAI,IAAK,MAAM,KAAK,KAAI;AACvC,kBAAI;AAAM,uBAAO,KAAK,MAAK;AAE3B,oBAAM,QAAQ,QAAQ,OAAO,KAAK,UAAU,KAAK,IAAI,IAAI;AAEzD,mBAAK,QAAQ,KAAK;qBACX,KAAK;AACZ,mBAAK,MAAM,GAAG;;UAElB;UACA,MAAM,SAAM;;AACV,oBAAM,UAAK,WAAL;UACR;SACD;MACH;;AAhMF,YAAA,SAAA;AAmMA,QAAM,aAAN,MAAgB;MAKd,cAAA;AACE,aAAK,QAAQ;AACb,aAAK,OAAO,CAAA;AACZ,aAAK,SAAS,CAAA;MAChB;MAEA,OAAO,MAAY;AACjB,YAAI,KAAK,SAAS,IAAI,GAAG;AACvB,iBAAO,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC;;AAG1C,YAAI,CAAC,MAAM;AAET,cAAI,CAAC,KAAK,SAAS,CAAC,KAAK,KAAK;AAAQ,mBAAO;AAE7C,gBAAM,MAAuB;YAC3B,OAAO,KAAK;YACZ,MAAM,KAAK,KAAK,KAAK,IAAI;YACzB,KAAK,KAAK;;AAGZ,eAAK,QAAQ;AACb,eAAK,OAAO,CAAA;AACZ,eAAK,SAAS,CAAA;AAEd,iBAAO;;AAGT,aAAK,OAAO,KAAK,IAAI;AAErB,YAAI,KAAK,WAAW,GAAG,GAAG;AACxB,iBAAO;;AAGT,YAAI,CAAC,WAAW,GAAG,KAAK,IAAI,UAAU,MAAM,GAAG;AAE/C,YAAI,MAAM,WAAW,GAAG,GAAG;AACzB,kBAAQ,MAAM,UAAU,CAAC;;AAG3B,YAAI,cAAc,SAAS;AACzB,eAAK,QAAQ;mBACJ,cAAc,QAAQ;AAC/B,eAAK,KAAK,KAAK,KAAK;;AAGtB,eAAO;MACT;;AASF,QAAM,cAAN,MAAM,aAAW;MASf,cAAA;AACE,aAAK,SAAS,CAAA;AACd,aAAK,aAAa;MACpB;MAEA,OAAO,OAAY;AACjB,YAAI,OAAO,KAAK,WAAW,KAAK;AAEhC,YAAI,KAAK,YAAY;AACnB,iBAAO,OAAO;AACd,eAAK,aAAa;;AAEpB,YAAI,KAAK,SAAS,IAAI,GAAG;AACvB,eAAK,aAAa;AAClB,iBAAO,KAAK,MAAM,GAAG,EAAE;;AAGzB,YAAI,CAAC,MAAM;AACT,iBAAO,CAAA;;AAGT,cAAM,kBAAkB,aAAY,cAAc,IAAI,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE;AACjF,YAAI,QAAQ,KAAK,MAAM,aAAY,cAAc;AAEjD,YAAI,MAAM,WAAW,KAAK,CAAC,iBAAiB;AAC1C,eAAK,OAAO,KAAK,MAAM,CAAC,CAAE;AAC1B,iBAAO,CAAA;;AAGT,YAAI,KAAK,OAAO,SAAS,GAAG;AAC1B,kBAAQ,CAAC,KAAK,OAAO,KAAK,EAAE,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,MAAM,CAAC,CAAC;AAC3D,eAAK,SAAS,CAAA;;AAGhB,YAAI,CAAC,iBAAiB;AACpB,eAAK,SAAS,CAAC,MAAM,IAAG,KAAM,EAAE;;AAGlC,eAAO;MACT;MAEA,WAAW,OAAY;;AACrB,YAAI,SAAS;AAAM,iBAAO;AAC1B,YAAI,OAAO,UAAU;AAAU,iBAAO;AAGtC,YAAI,OAAO,WAAW,aAAa;AACjC,cAAI,iBAAiB,QAAQ;AAC3B,mBAAO,MAAM,SAAQ;;AAEvB,cAAI,iBAAiB,YAAY;AAC/B,mBAAO,OAAO,KAAK,KAAK,EAAE,SAAQ;;AAGpC,gBAAM,IAAI,QAAA,YACR,wCAAwC,MAAM,YAAY,IAAI,mIAAmI;;AAKrM,YAAI,OAAO,gBAAgB,aAAa;AACtC,cAAI,iBAAiB,cAAc,iBAAiB,aAAa;AAC/D,uBAAK,gBAAL,YAAA,KAAK,cAAgB,IAAI,YAAY,MAAM;AAC3C,mBAAO,KAAK,YAAY,OAAO,KAAK;;AAGtC,gBAAM,IAAI,QAAA,YACR,oDACG,MAAc,YAAY,IAC7B,gDAAgD;;AAIpD,cAAM,IAAI,QAAA,YACR,gGAAgG;MAEpG;MAEA,QAAK;AACH,YAAI,CAAC,KAAK,OAAO,UAAU,CAAC,KAAK,YAAY;AAC3C,iBAAO,CAAA;;AAGT,cAAM,QAAQ,CAAC,KAAK,OAAO,KAAK,EAAE,CAAC;AACnC,aAAK,SAAS,CAAA;AACd,aAAK,aAAa;AAClB,eAAO;MACT;;AA9FO,gBAAA,gBAAgB,oBAAI,IAAI,CAAC,MAAM,MAAM,MAAQ,MAAQ,KAAQ,KAAQ,KAAQ,QAAQ,UAAU,QAAQ,CAAC;AACxG,gBAAA,iBAAiB;AAgG1B,aAAS,UAAU,KAAa,WAAiB;AAC/C,YAAM,QAAQ,IAAI,QAAQ,SAAS;AACnC,UAAI,UAAU,IAAI;AAChB,eAAO,CAAC,IAAI,UAAU,GAAG,KAAK,GAAG,WAAW,IAAI,UAAU,QAAQ,UAAU,MAAM,CAAC;;AAGrF,aAAO,CAAC,KAAK,IAAI,EAAE;IACrB;AAQA,aAAgB,4BAA+B,QAAW;AACxD,UAAI,OAAO,OAAO,aAAa;AAAG,eAAO;AAEzC,YAAM,SAAS,OAAO,UAAS;AAC/B,aAAO;QACL,MAAM,OAAI;AACR,cAAI;AACF,kBAAM,SAAS,MAAM,OAAO,KAAI;AAChC,gBAAI,iCAAQ;AAAM,qBAAO,YAAW;AACpC,mBAAO;mBACA,GAAG;AACV,mBAAO,YAAW;AAClB,kBAAM;;QAEV;QACA,MAAM,SAAM;AACV,gBAAM,gBAAgB,OAAO,OAAM;AACnC,iBAAO,YAAW;AAClB,gBAAM;AACN,iBAAO,EAAE,MAAM,MAAM,OAAO,OAAS;QACvC;QACA,CAAC,OAAO,aAAa,IAAC;AACpB,iBAAO;QACT;;IAEJ;AAzBA,YAAA,8BAAA;;;;;;;;;;AC9XA,QAAA,UAAA;AAUA,QAAA,UAAA;AAAS,WAAA,eAAA,SAAA,gBAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,QAAA;IAAY,EAAA,CAAA;AAiDd,QAAM,iBAAiB,CAAC,UAC7B,SAAS,QACT,OAAO,UAAU,YACjB,OAAO,MAAM,QAAQ,YACrB,OAAO,MAAM,SAAS;AAJX,YAAA,iBAAc;AAMpB,QAAM,aAAa,CAAC,UACzB,SAAS,QACT,OAAO,UAAU,YACjB,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,iBAAiB,aAC9B,GAAA,QAAA,YAAW,KAAK;AALL,YAAA,aAAU;AAWhB,QAAM,aAAa,CAAC,UACzB,SAAS,QACT,OAAO,UAAU,YACjB,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,SAAS,cACtB,OAAO,MAAM,UAAU,cACvB,OAAO,MAAM,gBAAgB;AAPlB,YAAA,aAAU;AAShB,QAAM,eAAe,CAAC,UAAmC;AAC9D,cAAO,GAAA,QAAA,YAAW,KAAK,MAAK,GAAA,QAAA,gBAAe,KAAK,MAAK,GAAA,QAAA,gBAAe,KAAK;IAC3E;AAFa,YAAA,eAAY;AAelB,mBAAe,OACpB,OACA,MACA,UAAuC,CAAA,GAAE;;AAGzC,cAAQ,MAAM;AAEd,WAAI,GAAA,QAAA,gBAAe,KAAK,GAAG;AACzB,cAAM,OAAO,MAAM,MAAM,KAAI;AAC7B,iBAAA,QAAS,SAAI,IAAI,MAAM,GAAG,EAAE,SAAS,MAAM,OAAO,EAAE,IAAG,MAA9C,YAAoD;AAE7D,eAAO,IAAI,QAAA,KAAK,CAAC,IAAW,GAAG,MAAM,OAAO;;AAG9C,YAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,eAAA,QAAS,aAAQ,KAAK,MAAb,YAAkB;AAE3B,UAAI,CAAC,QAAQ,MAAM;AACjB,cAAM,QAAQ,UAAK,CAAC,MAAN,mBAAiB;AAC/B,YAAI,OAAO,SAAS,UAAU;AAC5B,oBAAU,EAAE,GAAG,SAAS,KAAI;;;AAIhC,aAAO,IAAI,QAAA,KAAK,MAAM,MAAM,OAAO;IACrC;AA3BA,YAAA,SAAA;AA6BA,mBAAe,SAAS,OAAkB;;AACxC,UAAI,QAAyB,CAAA;AAC7B,UACE,OAAO,UAAU,YACjB,YAAY,OAAO,KAAK;MACxB,iBAAiB,aACjB;AACA,cAAM,KAAK,KAAK;kBACP,GAAA,QAAA,YAAW,KAAK,GAAG;AAC5B,cAAM,KAAK,MAAM,MAAM,YAAW,CAAE;iBAEpC,wBAAwB,KAAK,GAC7B;AACA,yBAAiB,SAAS,OAAO;AAC/B,gBAAM,KAAK,KAAiB;;aAEzB;AACL,cAAM,IAAI,MACR,yBAAyB,OAAO,KAAK,mBAAkB,oCAAO,gBAAP,mBACnD,IAAI,YAAY,cAAc,KAAK,CAAC,EAAE;;AAI9C,aAAO;IACT;AAEA,aAAS,cAAc,OAAU;AAC/B,YAAM,QAAQ,OAAO,oBAAoB,KAAK;AAC9C,aAAO,IAAI,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC;IAClD;AAEA,aAAS,QAAQ,OAAU;;AACzB,aACE,yBAAyB,MAAM,IAAI,KACnC,yBAAyB,MAAM,QAAQ;QAEvC,8BAAyB,MAAM,IAAI,MAAnC,mBAAsC,MAAM,SAAS;IAEzD;AAEA,QAAM,2BAA2B,CAAC,MAAoD;AACpF,UAAI,OAAO,MAAM;AAAU,eAAO;AAClC,UAAI,OAAO,WAAW,eAAe,aAAa;AAAQ,eAAO,OAAO,CAAC;AACzE,aAAO;IACT;AAEA,QAAM,0BAA0B,CAAC,UAC/B,SAAS,QAAQ,OAAO,UAAU,YAAY,OAAO,MAAM,OAAO,aAAa,MAAM;AAEhF,QAAM,kBAAkB,CAAC,SAC9B,QAAQ,OAAO,SAAS,YAAY,KAAK,QAAQ,KAAK,OAAO,WAAW,MAAM;AADnE,YAAA,kBAAe;AAOrB,QAAM,mCAAmC,OAC9C,SAC8C;AAC9C,UAAI,CAAC,mBAAmB,KAAK,IAAI;AAAG,eAAO;AAE3C,YAAM,OAAO,OAAM,GAAA,QAAA,YAAW,KAAK,IAAI;AACvC,cAAO,GAAA,QAAA,4BAA2B,MAAM,IAAI;IAC9C;AAPa,YAAA,mCAAgC;AAStC,QAAM,8BAA8B,OACzC,SAC8C;AAC9C,YAAM,OAAO,OAAM,GAAA,QAAA,YAAW,KAAK,IAAI;AACvC,cAAO,GAAA,QAAA,4BAA2B,MAAM,IAAI;IAC9C;AALa,YAAA,8BAA2B;AAOjC,QAAM,aAAa,OAAoC,SAA0C;AACtG,YAAM,OAAO,IAAI,QAAA,SAAQ;AACzB,YAAM,QAAQ,IAAI,OAAO,QAAQ,QAAQ,CAAA,CAAE,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,aAAa,MAAM,KAAK,KAAK,CAAC,CAAC;AAClG,aAAO;IACT;AAJa,YAAA,aAAU;AAMvB,QAAM,qBAAqB,CAAC,UAA2B;AACrD,WAAI,GAAA,QAAA,cAAa,KAAK;AAAG,eAAO;AAChC,UAAI,MAAM,QAAQ,KAAK;AAAG,eAAO,MAAM,KAAK,kBAAkB;AAC9D,UAAI,SAAS,OAAO,UAAU,UAAU;AACtC,mBAAW,KAAK,OAAO;AACrB,cAAI,mBAAoB,MAAc,CAAC,CAAC;AAAG,mBAAO;;;AAGtD,aAAO;IACT;AAEA,QAAM,eAAe,OAAO,MAAgB,KAAa,UAAiC;AACxF,UAAI,UAAU;AAAW;AACzB,UAAI,SAAS,MAAM;AACjB,cAAM,IAAI,UACR,sBAAsB,GAAG,6DAA6D;;AAK1F,UAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AACxF,aAAK,OAAO,KAAK,OAAO,KAAK,CAAC;kBACrB,GAAA,QAAA,cAAa,KAAK,GAAG;AAC9B,cAAM,OAAO,MAAM,OAAO,KAAK;AAC/B,aAAK,OAAO,KAAK,IAAY;iBACpB,MAAM,QAAQ,KAAK,GAAG;AAC/B,cAAM,QAAQ,IAAI,MAAM,IAAI,CAAC,UAAU,aAAa,MAAM,MAAM,MAAM,KAAK,CAAC,CAAC;iBACpE,OAAO,UAAU,UAAU;AACpC,cAAM,QAAQ,IACZ,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,aAAa,MAAM,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC;aAErF;AACL,cAAM,IAAI,UACR,wGAAwG,KAAK,UAAU;;IAG7H;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpPA,QAAA,YAAA;AACA,QAAA,cAAA;AACA,QAAA,UAAA;AAOA,QAAA,UAAA;AAYA,QAAA,YAAA;AACA,QAAA,YAAA;AACE,WAAA,eAAA,SAAA,oCAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAgC,EAAA,CAAA;AAChC,WAAA,eAAA,SAAA,+BAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAA2B,EAAA,CAAA;AAC3B,WAAA,eAAA,SAAA,cAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAU,EAAA,CAAA;AAcZ,mBAAe,qBAAwB,OAAuB;AAC5D,YAAM,EAAE,SAAQ,IAAK;AACrB,UAAI,MAAM,QAAQ,QAAQ;AACxB,cAAM,YAAY,SAAS,QAAQ,SAAS,KAAK,SAAS,SAAS,SAAS,IAAI;AAKhF,YAAI,MAAM,QAAQ,eAAe;AAC/B,iBAAO,MAAM,QAAQ,cAAc,gBAAgB,UAAU,MAAM,UAAU;;AAG/E,eAAO,YAAA,OAAO,gBAAgB,UAAU,MAAM,UAAU;;AAI1D,UAAI,SAAS,WAAW,KAAK;AAC3B,eAAO;;AAGT,UAAI,MAAM,QAAQ,kBAAkB;AAClC,eAAO;;AAGT,YAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,YAAM,UACJ,2CAAa,SAAS,yBAAuB,2CAAa,SAAS;AACrE,UAAI,QAAQ;AACV,cAAM,OAAO,MAAM,SAAS,KAAI;AAEhC,cAAM,YAAY,SAAS,QAAQ,SAAS,KAAK,SAAS,SAAS,IAAI;AAEvE,eAAO;;AAGT,YAAM,OAAO,MAAM,SAAS,KAAI;AAChC,YAAM,YAAY,SAAS,QAAQ,SAAS,KAAK,SAAS,SAAS,IAAI;AAGvE,aAAO;IACT;AAMA,QAAa,aAAb,MAAa,oBAAsB,QAAU;MAG3C,YACU,iBACA,gBAAgE,sBAAoB;AAE5F,cAAM,CAAC,YAAW;AAIhB,kBAAQ,IAAW;QACrB,CAAC;AARO,aAAA,kBAAA;AACA,aAAA,gBAAA;MAQV;MAEA,YAAe,WAAyB;AACtC,eAAO,IAAI,YAAW,KAAK,iBAAiB,OAAO,UAAU,UAAU,MAAM,KAAK,cAAc,KAAK,CAAC,CAAC;MACzG;;;;;;;;;;;;;;MAeA,aAAU;AACR,eAAO,KAAK,gBAAgB,KAAK,CAAC,MAAM,EAAE,QAAQ;MACpD;;;;;;;;;;;;;;MAcA,MAAM,eAAY;AAChB,cAAM,CAAC,MAAM,QAAQ,IAAI,MAAM,QAAQ,IAAI,CAAC,KAAK,MAAK,GAAI,KAAK,WAAU,CAAE,CAAC;AAC5E,eAAO,EAAE,MAAM,SAAQ;MACzB;MAEQ,QAAK;AACX,YAAI,CAAC,KAAK,eAAe;AACvB,eAAK,gBAAgB,KAAK,gBAAgB,KAAK,KAAK,aAAa;;AAEnE,eAAO,KAAK;MACd;MAES,KACP,aACA,YAAmF;AAEnF,eAAO,KAAK,MAAK,EAAG,KAAK,aAAa,UAAU;MAClD;MAES,MACP,YAAiF;AAEjF,eAAO,KAAK,MAAK,EAAG,MAAM,UAAU;MACtC;MAES,QAAQ,WAA2C;AAC1D,eAAO,KAAK,MAAK,EAAG,QAAQ,SAAS;MACvC;;AA3EF,YAAA,aAAA;AA8EA,QAAsB,YAAtB,MAA+B;MAS7B,YAAY;QACV;QACA,aAAa;QACb,UAAU;;QACV;QACA,OAAO;MAAc,GAOtB;AACC,aAAK,UAAU;AACf,aAAK,aAAa,wBAAwB,cAAc,UAAU;AAClE,aAAK,UAAU,wBAAwB,WAAW,OAAO;AACzD,aAAK,YAAY;AAEjB,aAAK,QAAQ,0CAAkB,QAAA;MACjC;MAEU,YAAY,MAAyB;AAC7C,eAAO,CAAA;MACT;;;;;;;;;MAUU,eAAe,MAAyB;AAChD,eAAO;UACL,QAAQ;UACR,gBAAgB;UAChB,cAAc,KAAK,aAAY;UAC/B,GAAG,mBAAkB;UACrB,GAAG,KAAK,YAAY,IAAI;;MAE5B;;;;MAOU,gBAAgB,SAAkB,eAAsB;MAAG;MAE3D,wBAAqB;AAC7B,eAAO,wBAAwB,MAAK,CAAE;MACxC;MAEA,IAAc,MAAc,MAA0C;AACpE,eAAO,KAAK,cAAc,OAAO,MAAM,IAAI;MAC7C;MAEA,KAAe,MAAc,MAA0C;AACrE,eAAO,KAAK,cAAc,QAAQ,MAAM,IAAI;MAC9C;MAEA,MAAgB,MAAc,MAA0C;AACtE,eAAO,KAAK,cAAc,SAAS,MAAM,IAAI;MAC/C;MAEA,IAAc,MAAc,MAA0C;AACpE,eAAO,KAAK,cAAc,OAAO,MAAM,IAAI;MAC7C;MAEA,OAAiB,MAAc,MAA0C;AACvE,eAAO,KAAK,cAAc,UAAU,MAAM,IAAI;MAChD;MAEQ,cACN,QACA,MACA,MAA0C;AAE1C,eAAO,KAAK,QAAQ,QAAQ,QAAQ,IAAI,EAAE,KAAK,CAACC,WAAU,EAAE,QAAQ,MAAM,GAAGA,MAAI,EAAG,CAAC;MACvF;MAEA,WACE,MACA,MACA,MAA0B;AAE1B,eAAO,KAAK,eAAe,MAAM,EAAE,QAAQ,OAAO,MAAM,GAAG,KAAI,CAAE;MACnE;MAEQ,uBAAuB,MAAa;AAC1C,YAAI,OAAO,SAAS,UAAU;AAC5B,cAAI,OAAO,WAAW,aAAa;AACjC,mBAAO,OAAO,WAAW,MAAM,MAAM,EAAE,SAAQ;;AAGjD,cAAI,OAAO,gBAAgB,aAAa;AACtC,kBAAM,UAAU,IAAI,YAAW;AAC/B,kBAAM,UAAU,QAAQ,OAAO,IAAI;AACnC,mBAAO,QAAQ,OAAO,SAAQ;;;AAIlC,eAAO;MACT;MAEA,aAAkB,SAAiC;;AACjD,cAAM,EAAE,QAAQ,MAAM,OAAO,UAAmB,CAAA,EAAE,IAAK;AAEvD,cAAM,QACJ,GAAA,UAAA,iBAAgB,QAAQ,IAAI,IAAI,QAAQ,KAAK,OAC3C,QAAQ,OAAO,KAAK,UAAU,QAAQ,MAAM,MAAM,CAAC,IACnD;AACJ,cAAM,gBAAgB,KAAK,uBAAuB,IAAI;AAEtD,cAAM,MAAM,KAAK,SAAS,MAAO,KAAK;AACtC,YAAI,aAAa;AAAS,kCAAwB,WAAW,QAAQ,OAAO;AAC5E,cAAM,WAAU,aAAQ,YAAR,YAAmB,KAAK;AACxC,cAAM,aAAY,mBAAQ,cAAR,YAAqB,KAAK,cAA1B,aAAuC,GAAA,QAAA,iBAAgB,GAAG;AAC5E,cAAM,kBAAkB,UAAU;AAClC,YACE,SAAQ,4CAAmB,YAAnB,mBAA4B,aAAY,YAChD,oBAAoB,eAAkB,QAAQ,YAA1B,YAAqC,IACzD;AAKC,oBAAkB,QAAQ,UAAU;;AAGvC,YAAI,KAAK,qBAAqB,WAAW,OAAO;AAC9C,cAAI,CAAC,QAAQ;AAAgB,oBAAQ,iBAAiB,KAAK,sBAAqB;AAChF,kBAAQ,KAAK,iBAAiB,IAAI,QAAQ;;AAG5C,cAAM,aAAa,KAAK,aAAa,EAAE,SAAS,SAAS,cAAa,CAAE;AAExE,cAAM,MAAmB;UACvB;UACA,GAAI,QAAQ,EAAE,KAAiB;UAC/B,SAAS;UACT,GAAI,aAAa,EAAE,OAAO,UAAS;;;UAGnC,SAAQ,aAAQ,WAAR,YAAkB;;AAG5B,eAAO,EAAE,KAAK,KAAK,QAAO;MAC5B;MAEQ,aAAa,EACnB,SACA,SACA,cAAa,GAKd;AACC,cAAM,aAAqC,CAAA;AAC3C,YAAI,eAAe;AACjB,qBAAW,gBAAgB,IAAI;;AAGjC,cAAM,iBAAiB,KAAK,eAAe,OAAO;AAClD,wBAAgB,YAAY,cAAc;AAC1C,wBAAgB,YAAY,OAAO;AAGnC,aAAI,GAAA,UAAA,iBAAgB,QAAQ,IAAI,KAAK,QAAA,SAAc,QAAQ;AACzD,iBAAO,WAAW,cAAc;;AAGlC,aAAK,gBAAgB,YAAY,OAAO;AAExC,eAAO;MACT;;;;MAKU,MAAM,eAAe,SAA4B;MAAkB;;;;;;;MAQnE,MAAM,eACd,SACA,EAAE,KAAK,QAAO,GAAiD;MAC/C;MAER,aAAa,SAAuC;AAC5D,eACE,CAAC,UAAU,CAAA,IACT,OAAO,YAAY,UACnB,OAAO,YAAY,MAAM,KAAK,OAA6B,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,CAAC,IACzF,EAAE,GAAG,QAAO;MAElB;MAEU,gBACR,QACA,OACA,SACA,SAA4B;AAE5B,eAAO,QAAA,SAAS,SAAS,QAAQ,OAAO,SAAS,OAAO;MAC1D;MAEA,QACE,SACA,mBAAkC,MAAI;AAEtC,eAAO,IAAI,WAAW,KAAK,YAAY,SAAS,gBAAgB,CAAC;MACnE;MAEQ,MAAM,YACZ,cACA,kBAA+B;;AAE/B,cAAM,UAAU,MAAM;AACtB,YAAI,oBAAoB,MAAM;AAC5B,8BAAmB,aAAQ,eAAR,YAAsB,KAAK;;AAGhD,cAAM,KAAK,eAAe,OAAO;AAEjC,cAAM,EAAE,KAAK,KAAK,QAAO,IAAK,KAAK,aAAa,OAAO;AAEvD,cAAM,KAAK,eAAe,KAAK,EAAE,KAAK,QAAO,CAAE;AAE/C,cAAM,WAAW,KAAK,SAAS,IAAI,OAAO;AAE1C,aAAI,aAAQ,WAAR,mBAAgB,SAAS;AAC3B,gBAAM,IAAI,QAAA,kBAAiB;;AAG7B,cAAM,aAAa,IAAI,gBAAe;AACtC,cAAM,WAAW,MAAM,KAAK,iBAAiB,KAAK,KAAK,SAAS,UAAU,EAAE,MAAM,QAAA,WAAW;AAE7F,YAAI,oBAAoB,OAAO;AAC7B,eAAI,aAAQ,WAAR,mBAAgB,SAAS;AAC3B,kBAAM,IAAI,QAAA,kBAAiB;;AAE7B,cAAI,kBAAkB;AACpB,mBAAO,KAAK,aAAa,SAAS,gBAAgB;;AAEpD,cAAI,SAAS,SAAS,cAAc;AAClC,kBAAM,IAAI,QAAA,0BAAyB;;AAErC,gBAAM,IAAI,QAAA,mBAAmB,EAAE,OAAO,SAAQ,CAAE;;AAGlD,cAAM,mBAAkB,GAAA,QAAA,uBAAsB,SAAS,OAAO;AAE9D,YAAI,CAAC,SAAS,IAAI;AAChB,cAAI,oBAAoB,KAAK,YAAY,QAAQ,GAAG;AAClD,kBAAMC,gBAAe,aAAa,gBAAgB;AAClD,kBAAM,oBAAoBA,aAAY,KAAK,SAAS,QAAQ,KAAK,eAAe;AAChF,mBAAO,KAAK,aAAa,SAAS,kBAAkB,eAAe;;AAGrE,gBAAM,UAAU,MAAM,SAAS,KAAI,EAAG,MAAM,CAAC,OAAM,GAAA,QAAA,aAAY,CAAC,EAAE,OAAO;AACzE,gBAAM,WAAU,GAAA,QAAA,UAAS,OAAO;AAChC,gBAAM,aAAa,UAAU,SAAY;AACzC,gBAAM,eAAe,mBAAmB,kCAAkC;AAE1E,gBAAM,oBAAoB,YAAY,KAAK,SAAS,QAAQ,KAAK,iBAAiB,UAAU;AAE5F,gBAAM,MAAM,KAAK,gBAAgB,SAAS,QAAQ,SAAS,YAAY,eAAe;AACtF,gBAAM;;AAGR,eAAO,EAAE,UAAU,SAAS,WAAU;MACxC;MAEA,eACE,MACA,SAA4B;AAE5B,cAAM,UAAU,KAAK,YAAY,SAAS,IAAI;AAC9C,eAAO,IAAI,YAA6B,MAAM,SAAS,IAAI;MAC7D;MAEA,SAAc,MAAc,OAA6B;AACvD,cAAM,MACJ,cAAc,IAAI,IAChB,IAAI,IAAI,IAAI,IACZ,IAAI,IAAI,KAAK,WAAW,KAAK,QAAQ,SAAS,GAAG,KAAK,KAAK,WAAW,GAAG,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK;AAEtG,cAAM,eAAe,KAAK,aAAY;AACtC,YAAI,CAAC,WAAW,YAAY,GAAG;AAC7B,kBAAQ,EAAE,GAAG,cAAc,GAAG,MAAK;;AAGrC,YAAI,OAAO,UAAU,YAAY,SAAS,CAAC,MAAM,QAAQ,KAAK,GAAG;AAC/D,cAAI,SAAS,KAAK,eAAe,KAAgC;;AAGnE,eAAO,IAAI,SAAQ;MACrB;MAEU,eAAe,OAA8B;AACrD,eAAO,OAAO,QAAQ,KAAK,EACxB,OAAO,CAAC,CAAC,GAAG,KAAK,MAAM,OAAO,UAAU,WAAW,EACnD,IAAI,CAAC,CAAC,KAAK,KAAK,MAAK;AACpB,cAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AACxF,mBAAO,GAAG,mBAAmB,GAAG,CAAC,IAAI,mBAAmB,KAAK,CAAC;;AAEhE,cAAI,UAAU,MAAM;AAClB,mBAAO,GAAG,mBAAmB,GAAG,CAAC;;AAEnC,gBAAM,IAAI,QAAA,YACR,yBAAyB,OAAO,KAAK,mQAAmQ;QAE5S,CAAC,EACA,KAAK,GAAG;MACb;MAEA,MAAM,iBACJ,KACA,MACA,IACA,YAA2B;AAE3B,cAAM,EAAE,QAAQ,GAAG,QAAO,IAAK,QAAQ,CAAA;AACvC,YAAI;AAAQ,iBAAO,iBAAiB,SAAS,MAAM,WAAW,MAAK,CAAE;AAErE,cAAM,UAAU,WAAW,MAAM,WAAW,MAAK,GAAI,EAAE;AAEvD,eACE,KAAK,iBAAgB,EAElB,MAAM,KAAK,QAAW,KAAK,EAAE,QAAQ,WAAW,QAAe,GAAG,QAAO,CAAE,EAC3E,QAAQ,MAAK;AACZ,uBAAa,OAAO;QACtB,CAAC;MAEP;MAEU,mBAAgB;AACxB,eAAO,EAAE,OAAO,KAAK,MAAK;MAC5B;MAEQ,YAAY,UAAkB;AAEpC,cAAM,oBAAoB,SAAS,QAAQ,IAAI,gBAAgB;AAG/D,YAAI,sBAAsB;AAAQ,iBAAO;AACzC,YAAI,sBAAsB;AAAS,iBAAO;AAG1C,YAAI,SAAS,WAAW;AAAK,iBAAO;AAGpC,YAAI,SAAS,WAAW;AAAK,iBAAO;AAGpC,YAAI,SAAS,WAAW;AAAK,iBAAO;AAGpC,YAAI,SAAS,UAAU;AAAK,iBAAO;AAEnC,eAAO;MACT;MAEQ,MAAM,aACZ,SACA,kBACA,iBAAqC;;AAErC,YAAI;AAGJ,cAAM,yBAAyB,mDAAkB;AACjD,YAAI,wBAAwB;AAC1B,gBAAM,YAAY,WAAW,sBAAsB;AACnD,cAAI,CAAC,OAAO,MAAM,SAAS,GAAG;AAC5B,4BAAgB;;;AAKpB,cAAM,mBAAmB,mDAAkB;AAC3C,YAAI,oBAAoB,CAAC,eAAe;AACtC,gBAAM,iBAAiB,WAAW,gBAAgB;AAClD,cAAI,CAAC,OAAO,MAAM,cAAc,GAAG;AACjC,4BAAgB,iBAAiB;iBAC5B;AACL,4BAAgB,KAAK,MAAM,gBAAgB,IAAI,KAAK,IAAG;;;AAM3D,YAAI,EAAE,iBAAiB,KAAK,iBAAiB,gBAAgB,KAAK,MAAO;AACvE,gBAAM,cAAa,aAAQ,eAAR,YAAsB,KAAK;AAC9C,0BAAgB,KAAK,mCAAmC,kBAAkB,UAAU;;AAEtF,eAAM,GAAA,QAAA,OAAM,aAAa;AAEzB,eAAO,KAAK,YAAY,SAAS,mBAAmB,CAAC;MACvD;MAEQ,mCAAmC,kBAA0B,YAAkB;AACrF,cAAM,oBAAoB;AAC1B,cAAM,gBAAgB;AAEtB,cAAM,aAAa,aAAa;AAGhC,cAAM,eAAe,KAAK,IAAI,oBAAoB,KAAK,IAAI,GAAG,UAAU,GAAG,aAAa;AAGxF,cAAM,SAAS,IAAI,KAAK,OAAM,IAAK;AAEnC,eAAO,eAAe,SAAS;MACjC;MAEQ,eAAY;AAClB,eAAO,GAAG,KAAK,YAAY,IAAI,OAAO,UAAA,OAAO;MAC/C;;AAnbF,YAAA,YAAA;AAwbA,QAAsB,eAAtB,MAAkC;MAOhC,YAAY,QAAmB,UAAoB,MAAe,SAA4B;AAN9F,6BAAA,IAAA,MAAA,MAAA;AAOE,+BAAA,MAAI,sBAAW,QAAM,GAAA;AACrB,aAAK,UAAU;AACf,aAAK,WAAW;AAChB,aAAK,OAAO;MACd;MAUA,cAAW;AACT,cAAM,QAAQ,KAAK,kBAAiB;AACpC,YAAI,CAAC,MAAM;AAAQ,iBAAO;AAC1B,eAAO,KAAK,aAAY,KAAM;MAChC;MAEA,MAAM,cAAW;AACf,cAAM,WAAW,KAAK,aAAY;AAClC,YAAI,CAAC,UAAU;AACb,gBAAM,IAAI,QAAA,YACR,uFAAuF;;AAG3F,cAAM,cAAc,EAAE,GAAG,KAAK,QAAO;AACrC,YAAI,YAAY,YAAY,OAAO,YAAY,UAAU,UAAU;AACjE,sBAAY,QAAQ,EAAE,GAAG,YAAY,OAAO,GAAG,SAAS,OAAM;mBACrD,SAAS,UAAU;AAC5B,gBAAM,SAAS,CAAC,GAAG,OAAO,QAAQ,YAAY,SAAS,CAAA,CAAE,GAAG,GAAG,SAAS,IAAI,aAAa,QAAO,CAAE;AAClG,qBAAW,CAAC,KAAK,KAAK,KAAK,QAAQ;AACjC,qBAAS,IAAI,aAAa,IAAI,KAAK,KAAY;;AAEjD,sBAAY,QAAQ;AACpB,sBAAY,OAAO,SAAS,IAAI,SAAQ;;AAE1C,eAAO,MAAM,uBAAA,MAAI,sBAAA,GAAA,EAAS,eAAe,KAAK,aAAoB,WAAW;MAC/E;MAEA,OAAO,YAAS;AAEd,YAAI,OAA2B;AAC/B,cAAM;AACN,eAAO,KAAK,YAAW,GAAI;AACzB,iBAAO,MAAM,KAAK,YAAW;AAC7B,gBAAM;;MAEV;MAEA,SAAO,uBAAA,oBAAA,QAAA,GAAC,OAAO,cAAa,IAAC;AAC3B,yBAAiB,QAAQ,KAAK,UAAS,GAAI;AACzC,qBAAW,QAAQ,KAAK,kBAAiB,GAAI;AAC3C,kBAAM;;;MAGZ;;AAjEF,YAAA,eAAA;AA6EA,QAAa,cAAb,cAIU,WAAqB;MAG7B,YACE,QACA,SACA,MAA4E;AAE5E,cACE,SACA,OAAO,UAAU,IAAI,KAAK,QAAQ,MAAM,UAAU,MAAM,qBAAqB,KAAK,GAAG,MAAM,OAAO,CAAC;MAEvG;;;;;;;;MASA,QAAQ,OAAO,aAAa,IAAC;AAC3B,cAAM,OAAO,MAAM;AACnB,yBAAiB,QAAQ,MAAM;AAC7B,gBAAM;;MAEV;;AA9BF,YAAA,cAAA;AAiCO,QAAM,wBAAwB,CACnC,YAC0B;AAC1B,aAAO,IAAI,MACT,OAAO;;QAEL,QAAQ,QAAO;MAAE,GAEnB;QACE,IAAI,QAAQ,MAAI;AACd,gBAAM,MAAM,KAAK,SAAQ;AACzB,iBAAO,OAAO,IAAI,YAAW,CAAE,KAAK,OAAO,GAAG;QAChD;OACD;IAEL;AAfa,YAAA,wBAAqB;AA6ClC,QAAM,qBAA+C;MACnD,QAAQ;MACR,MAAM;MACN,OAAO;MACP,MAAM;MACN,SAAS;MAET,YAAY;MACZ,QAAQ;MACR,SAAS;MACT,WAAW;MACX,QAAQ;MACR,gBAAgB;MAEhB,kBAAkB;MAClB,eAAe;;AAGV,QAAM,mBAAmB,CAAC,QAAuC;AACtE,aACE,OAAO,QAAQ,YACf,QAAQ,QACR,CAAC,WAAW,GAAG,KACf,OAAO,KAAK,GAAG,EAAE,MAAM,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;IAE/D;AAPa,YAAA,mBAAgB;AAoC7B,QAAM,wBAAwB,MAAyB;AACrD,UAAI,OAAO,SAAS,eAAe,KAAK,SAAS,MAAM;AACrD,eAAO;UACL,oBAAoB;UACpB,+BAA+B,UAAA;UAC/B,kBAAkB,kBAAkB,KAAK,MAAM,EAAE;UACjD,oBAAoB,cAAc,KAAK,MAAM,IAAI;UACjD,uBAAuB;UACvB,+BAA+B,KAAK;;;AAGxC,UAAI,OAAO,gBAAgB,aAAa;AACtC,eAAO;UACL,oBAAoB;UACpB,+BAA+B,UAAA;UAC/B,kBAAkB;UAClB,oBAAoB,SAAS,WAAW;UACxC,uBAAuB;UACvB,+BAA+B,QAAQ;;;AAI3C,UAAI,OAAO,UAAU,SAAS,KAAK,OAAO,YAAY,cAAc,UAAU,CAAC,MAAM,oBAAoB;AACvG,eAAO;UACL,oBAAoB;UACpB,+BAA+B,UAAA;UAC/B,kBAAkB,kBAAkB,QAAQ,QAAQ;UACpD,oBAAoB,cAAc,QAAQ,IAAI;UAC9C,uBAAuB;UACvB,+BAA+B,QAAQ;;;AAI3C,YAAM,cAAc,eAAc;AAClC,UAAI,aAAa;AACf,eAAO;UACL,oBAAoB;UACpB,+BAA+B,UAAA;UAC/B,kBAAkB;UAClB,oBAAoB;UACpB,uBAAuB,WAAW,YAAY,OAAO;UACrD,+BAA+B,YAAY;;;AAK/C,aAAO;QACL,oBAAoB;QACpB,+BAA+B,UAAA;QAC/B,kBAAkB;QAClB,oBAAoB;QACpB,uBAAuB;QACvB,+BAA+B;;IAEnC;AAUA,aAAS,iBAAc;AACrB,UAAI,OAAO,cAAc,eAAe,CAAC,WAAW;AAClD,eAAO;;AAIT,YAAM,kBAAkB;QACtB,EAAE,KAAK,QAAiB,SAAS,uCAAsC;QACvE,EAAE,KAAK,MAAe,SAAS,uCAAsC;QACrE,EAAE,KAAK,MAAe,SAAS,6CAA4C;QAC3E,EAAE,KAAK,UAAmB,SAAS,yCAAwC;QAC3E,EAAE,KAAK,WAAoB,SAAS,0CAAyC;QAC7E,EAAE,KAAK,UAAmB,SAAS,oEAAmE;;AAIxG,iBAAW,EAAE,KAAK,QAAO,KAAM,iBAAiB;AAC9C,cAAM,QAAQ,QAAQ,KAAK,UAAU,SAAS;AAC9C,YAAI,OAAO;AACT,gBAAM,QAAQ,MAAM,CAAC,KAAK;AAC1B,gBAAM,QAAQ,MAAM,CAAC,KAAK;AAC1B,gBAAM,QAAQ,MAAM,CAAC,KAAK;AAE1B,iBAAO,EAAE,SAAS,KAAK,SAAS,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,GAAE;;;AAIhE,aAAO;IACT;AAEA,QAAM,gBAAgB,CAAC,SAAsB;AAK3C,UAAI,SAAS;AAAO,eAAO;AAC3B,UAAI,SAAS,YAAY,SAAS;AAAO,eAAO;AAChD,UAAI,SAAS;AAAO,eAAO;AAC3B,UAAI,SAAS,aAAa,SAAS;AAAS,eAAO;AACnD,UAAI;AAAM,eAAO,SAAS,IAAI;AAC9B,aAAO;IACT;AAEA,QAAM,oBAAoB,CAAC,aAAkC;AAO3D,iBAAW,SAAS,YAAW;AAM/B,UAAI,SAAS,SAAS,KAAK;AAAG,eAAO;AACrC,UAAI,aAAa;AAAW,eAAO;AACnC,UAAI,aAAa;AAAU,eAAO;AAClC,UAAI,aAAa;AAAS,eAAO;AACjC,UAAI,aAAa;AAAW,eAAO;AACnC,UAAI,aAAa;AAAW,eAAO;AACnC,UAAI,aAAa;AAAS,eAAO;AACjC,UAAI;AAAU,eAAO,SAAS,QAAQ;AACtC,aAAO;IACT;AAEA,QAAI;AACJ,QAAM,qBAAqB,MAAK;AAC9B,aAAQ,8CAAA,mBAAqB,sBAAqB;IACpD;AAEO,QAAM,WAAW,CAAC,SAAgB;AACvC,UAAI;AACF,eAAO,KAAK,MAAM,IAAI;eACf,KAAK;AACZ,eAAO;;IAEX;AANa,YAAA,WAAQ;AASrB,QAAM,yBAAyB,IAAI,OAAO,mBAAmB,GAAG;AAChE,QAAM,gBAAgB,CAAC,QAAwB;AAC7C,aAAO,uBAAuB,KAAK,GAAG;IACxC;AAEO,QAAM,QAAQ,CAAC,OAAe,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAxE,YAAA,QAAK;AAElB,QAAM,0BAA0B,CAAC,MAAc,MAAsB;AACnE,UAAI,OAAO,MAAM,YAAY,CAAC,OAAO,UAAU,CAAC,GAAG;AACjD,cAAM,IAAI,QAAA,YAAY,GAAG,IAAI,qBAAqB;;AAEpD,UAAI,IAAI,GAAG;AACT,cAAM,IAAI,QAAA,YAAY,GAAG,IAAI,6BAA6B;;AAE5D,aAAO;IACT;AAEO,QAAM,cAAc,CAAC,QAAmB;AAC7C,UAAI,eAAe;AAAO,eAAO;AACjC,aAAO,IAAI,MAAM,GAAG;IACtB;AAHa,YAAA,cAAW;AAKjB,QAAM,gBAAgB,CAAI,UAAkC;AACjE,UAAI,SAAS;AAAM,cAAM,IAAI,QAAA,YAAY,6CAA6C,KAAK,WAAW;AACtG,aAAO;IACT;AAHa,YAAA,gBAAa;AAYnB,QAAM,UAAU,CAAC,QAAmC;;AACzD,UAAI,OAAO,YAAY,aAAa;AAClC,gBAAO,yBAAQ,QAAR,mBAAc,SAAd,mBAAoB,WAApB,YAA8B;;AAEvC,UAAI,OAAO,SAAS,aAAa;AAC/B,gBAAO,sBAAK,QAAL,mBAAU,QAAV,4BAAgB,SAAhB,mBAAsB;;AAE/B,aAAO;IACT;AARa,YAAA,UAAO;AAUb,QAAM,gBAAgB,CAAC,UAA0B;AACtD,UAAI,OAAO,UAAU;AAAU,eAAO,KAAK,MAAM,KAAK;AACtD,UAAI,OAAO,UAAU;AAAU,eAAO,SAAS,OAAO,EAAE;AAExD,YAAM,IAAI,QAAA,YAAY,oBAAoB,KAAK,WAAW,OAAO,KAAK,iBAAiB;IACzF;AALa,YAAA,gBAAa;AAOnB,QAAM,cAAc,CAAC,UAA0B;AACpD,UAAI,OAAO,UAAU;AAAU,eAAO;AACtC,UAAI,OAAO,UAAU;AAAU,eAAO,WAAW,KAAK;AAEtD,YAAM,IAAI,QAAA,YAAY,oBAAoB,KAAK,WAAW,OAAO,KAAK,iBAAiB;IACzF;AALa,YAAA,cAAW;AAOjB,QAAM,gBAAgB,CAAC,UAA2B;AACvD,UAAI,OAAO,UAAU;AAAW,eAAO;AACvC,UAAI,OAAO,UAAU;AAAU,eAAO,UAAU;AAChD,aAAO,QAAQ,KAAK;IACtB;AAJa,YAAA,gBAAa;AAMnB,QAAM,qBAAqB,CAAC,UAAsC;AACvE,UAAI,UAAU,QAAW;AACvB,eAAO;;AAET,cAAO,GAAA,QAAA,eAAc,KAAK;IAC5B;AALa,YAAA,qBAAkB;AAOxB,QAAM,mBAAmB,CAAC,UAAsC;AACrE,UAAI,UAAU,QAAW;AACvB,eAAO;;AAET,cAAO,GAAA,QAAA,aAAY,KAAK;IAC1B;AALa,YAAA,mBAAgB;AAOtB,QAAM,qBAAqB,CAAC,UAAuC;AACxE,UAAI,UAAU,QAAW;AACvB,eAAO;;AAET,cAAO,GAAA,QAAA,eAAc,KAAK;IAC5B;AALa,YAAA,qBAAkB;AAQ/B,aAAgB,WAAW,KAA8B;AACvD,UAAI,CAAC;AAAK,eAAO;AACjB,iBAAW,MAAM;AAAK,eAAO;AAC7B,aAAO;IACT;AAJA,YAAA,aAAA;AAOA,aAAgB,OAAO,KAAa,KAAW;AAC7C,aAAO,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG;IACtD;AAFA,YAAA,SAAA;AAUA,aAAS,gBAAgB,eAAwB,YAAmB;AAClE,iBAAW,KAAK,YAAY;AAC1B,YAAI,CAAC,OAAO,YAAY,CAAC;AAAG;AAC5B,cAAM,WAAW,EAAE,YAAW;AAC9B,YAAI,CAAC;AAAU;AAEf,cAAM,MAAM,WAAW,CAAC;AAExB,YAAI,QAAQ,MAAM;AAChB,iBAAO,cAAc,QAAQ;mBACpB,QAAQ,QAAW;AAC5B,wBAAc,QAAQ,IAAI;;;IAGhC;AAEA,aAAgB,MAAM,WAAmB,MAAW;AAClD,UAAI,OAAO,YAAY,eAAe,QAAQ,IAAI,OAAO,MAAM,QAAQ;AACrE,gBAAQ,IAAI,gBAAgB,MAAM,IAAI,GAAG,IAAI;;IAEjD;AAJA,YAAA,QAAA;AASA,QAAM,QAAQ,MAAK;AACjB,aAAO,uCAAuC,QAAQ,SAAS,CAAC,MAAK;AACnE,cAAM,IAAK,KAAK,OAAM,IAAK,KAAM;AACjC,cAAM,IAAI,MAAM,MAAM,IAAK,IAAI,IAAO;AACtC,eAAO,EAAE,SAAS,EAAE;MACtB,CAAC;IACH;AAEO,QAAM,qBAAqB,MAAK;AACrC;;QAEE,OAAO,WAAW;QAElB,OAAO,OAAO,aAAa;QAE3B,OAAO,cAAc;;IAEzB;AATa,YAAA,qBAAkB;AAgBxB,QAAM,oBAAoB,CAAC,YAA4C;AAC5E,aAAO,QAAO,mCAAS,SAAQ;IACjC;AAFa,YAAA,oBAAiB;AAIvB,QAAM,oBAAoB,CAAC,SAAsB,WAA0B;;AAChF,YAAM,mBAAmB,OAAO,YAAW;AAC3C,WAAI,GAAA,QAAA,mBAAkB,OAAO,GAAG;AAE9B,cAAM,oBACJ,YAAO,CAAC,MAAR,mBAAW,iBACX,OAAO,UAAU,CAAC,EAAE,QAAQ,gBAAgB,CAAC,IAAI,IAAI,OAAO,KAAK,GAAG,YAAW,CAAE;AACnF,mBAAW,OAAO,CAAC,QAAQ,kBAAkB,OAAO,YAAW,GAAI,eAAe,GAAG;AACnF,gBAAM,QAAQ,QAAQ,IAAI,GAAG;AAC7B,cAAI,OAAO;AACT,mBAAO;;;;AAKb,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAClD,YAAI,IAAI,YAAW,MAAO,kBAAkB;AAC1C,cAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAI,MAAM,UAAU;AAAG,qBAAO,MAAM,CAAC;AACrC,oBAAQ,KAAK,YAAY,MAAM,MAAM,oBAAoB,MAAM,iCAAiC;AAChG,mBAAO,MAAM,CAAC;;AAEhB,iBAAO;;;AAIX,YAAM,IAAI,MAAM,kBAAkB,MAAM,SAAS;IACnD;AA3Ba,YAAA,oBAAiB;AAgCvB,QAAM,WAAW,CAAC,QAA0C;AACjE,UAAI,CAAC;AAAK,eAAO;AACjB,UAAI,OAAO,WAAW,aAAa;AACjC,eAAO,OAAO,KAAK,GAAG,EAAE,SAAS,QAAQ;;AAG3C,UAAI,OAAO,SAAS,aAAa;AAC/B,eAAO,KAAK,GAAG;;AAGjB,YAAM,IAAI,QAAA,YAAY,uEAAuE;IAC/F;AAXa,YAAA,WAAQ;AAarB,aAAgB,MAAM,KAAY;AAChC,aAAO,OAAO,QAAQ,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;IACrE;AAFA,YAAA,QAAA;;;;;;;;;;ACpoCA,QAAA,SAAA;AAWA,QAAa,OAAb,cAAgC,OAAA,aAAkB;MAKhD,YAAY,QAAmB,UAAoB,MAA0B,SAA4B;AACvG,cAAM,QAAQ,UAAU,MAAM,OAAO;AAErC,aAAK,OAAO,KAAK,QAAQ,CAAA;AACzB,aAAK,SAAS,KAAK;MACrB;MAEA,oBAAiB;;AACf,gBAAO,UAAK,SAAL,YAAa,CAAA;MACtB;;;;;;MAOA,iBAAc;AACZ,eAAO;MACT;MAEA,eAAY;AACV,eAAO;MACT;;AA3BF,YAAA,OAAA;AAwCA,QAAa,aAAb,cACU,OAAA,aAAkB;MAK1B,YACE,QACA,UACA,MACA,SAA4B;AAE5B,cAAM,QAAQ,UAAU,MAAM,OAAO;AAErC,aAAK,OAAO,KAAK,QAAQ,CAAA;MAC3B;MAEA,oBAAiB;;AACf,gBAAO,UAAK,SAAL,YAAa,CAAA;MACtB;;MAGA,iBAAc;AACZ,cAAM,OAAO,KAAK,aAAY;AAC9B,YAAI,CAAC;AAAM,iBAAO;AAClB,YAAI,YAAY;AAAM,iBAAO,KAAK;AAClC,cAAM,SAAS,OAAO,YAAY,KAAK,IAAI,YAAY;AACvD,YAAI,CAAC,OAAO,KAAK,MAAM,EAAE;AAAQ,iBAAO;AACxC,eAAO;MACT;MAEA,eAAY;;AACV,cAAM,OAAO,KAAK,kBAAiB;AACnC,YAAI,CAAC,KAAK,QAAQ;AAChB,iBAAO;;AAGT,cAAM,MAAK,UAAK,KAAK,SAAS,CAAC,MAApB,mBAAuB;AAClC,YAAI,CAAC,IAAI;AACP,iBAAO;;AAGT,eAAO,EAAE,QAAQ,EAAE,OAAO,GAAE,EAAE;MAChC;;AA3CF,YAAA,aAAA;;;;;;;;;;ACjDA,QAAa,cAAb,MAAwB;MAGtB,YAAY,QAAc;AACxB,aAAK,UAAU;MACjB;;AALF,YAAA,cAAA;;;;;;;;;;ACAA,QAAA,aAAA;AAMA,QAAa,cAAb,cAAiC,WAAA,YAAW;MAgB1C,OACE,MACA,SAA6B;;AAE7B,eAAO,KAAK,QAAQ,KAAK,qBAAqB,EAAE,MAAM,GAAG,SAAS,SAAQ,UAAK,WAAL,YAAe,MAAK,CAAE;MAGlG;;AAvBF,YAAA,cAAA;AAu6BA,IAAA,0BAAiBC,cAAW;IA8B5B,GA9BiB,cAAA,QAAA,gBAAA,QAAA,cAAW,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/6B5B,QAAA,aAAA;AACA,QAAA,iBAAA,aAAA,qBAAA;AAEA,QAAa,OAAb,cAA0B,WAAA,YAAW;MAArC,cAAA;;AACE,aAAA,cAA0C,IAAI,eAAe,YAAY,KAAK,OAAO;MACvF;;AAFA,YAAA,OAAA;AAIA,KAAA,SAAiBC,OAAI;AACL,MAAAA,MAAA,cAAc,eAAe;IA8B7C,GA/BiB,OAAA,QAAA,SAAA,QAAA,OAAI,CAAA,EAAA;;;;;;;;;;ACPrB,QAAA,SAAA;AAAS,WAAA,eAAA,SAAA,QAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,OAAA;IAAI,EAAA,CAAA;AACb,QAAA,gBAAA;AA2BE,WAAA,eAAA,SAAA,eAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,cAAA;IAAW,EAAA,CAAA;;;;;;;;;;;;;;;;;;AC3Bb,QAAA,aAAA;AAIA,QAAa,SAAb,cAA4B,WAAA,YAAW;;;;MAIrC,OAAO,MAA0B,SAA6B;AAC5D,eAAO,KAAK,QAAQ,KAAK,iBAAiB,EAAE,MAAM,GAAG,SAAS,kBAAkB,KAAI,CAAE;MACxF;;AANF,YAAA,SAAA;AA6CA,IAAA,0BAAiBC,SAAM;IAEvB,GAFiB,SAAA,QAAA,WAAA,QAAA,SAAM,CAAA,EAAA;;;;;;;;;;ACjDvB,QAAA,aAAA;AAEA,QAAA,SAAA;AAEA,QAAa,iBAAb,cAAoC,WAAA,YAAW;;;;MAI7C,OAAO,MAAiC,SAA6B;AACnE,eAAO,KAAK,QAAQ,KAAK,0BAAyB,GAAA,OAAA,6BAA4B,EAAE,MAAM,GAAG,QAAO,CAAE,CAAC;MACrG;;AANF,YAAA,iBAAA;AA+DA,IAAA,0BAAiBC,iBAAc;IAG/B,GAHiB,iBAAA,QAAA,mBAAA,QAAA,iBAAc,CAAA,EAAA;;;;;;;;;;ACnE/B,QAAA,aAAA;AAEA,QAAA,SAAA;AAEA,QAAa,eAAb,cAAkC,WAAA,YAAW;;;;MAI3C,OAAO,MAA+B,SAA6B;AACjE,eAAO,KAAK,QAAQ,KAAK,wBAAuB,GAAA,OAAA,6BAA4B,EAAE,MAAM,GAAG,QAAO,CAAE,CAAC;MACnG;;AANF,YAAA,eAAA;AAiDA,IAAA,0BAAiBC,eAAY;IAG7B,GAHiB,eAAA,QAAA,iBAAA,QAAA,eAAY,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtD7B,QAAA,aAAA;AACA,QAAA,YAAA,aAAA,gBAAA;AACA,QAAA,oBAAA,aAAA,wBAAA;AACA,QAAA,kBAAA,aAAA,sBAAA;AAEA,QAAa,QAAb,cAA2B,WAAA,YAAW;MAAtC,cAAA;;AACE,aAAA,iBAAmD,IAAI,kBAAkB,eAAe,KAAK,OAAO;AACpG,aAAA,eAA6C,IAAI,gBAAgB,aAAa,KAAK,OAAO;AAC1F,aAAA,SAA2B,IAAI,UAAU,OAAO,KAAK,OAAO;MAC9D;;AAJA,YAAA,QAAA;AAMA,KAAA,SAAiBC,QAAK;AACN,MAAAA,OAAA,iBAAiB,kBAAkB;AAGnC,MAAAA,OAAA,eAAe,gBAAgB;AAG/B,MAAAA,OAAA,SAAS,UAAU;IAEnC,GATiB,QAAA,QAAA,UAAA,QAAA,QAAK,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVtB,QAAA,aAAA;AACA,QAAA,SAAA;AACA,QAAA,WAAA,aAAA,eAAA;AACA,QAAA,eAAA;AAEA,QAAa,QAAb,cAA2B,WAAA,YAAW;;;;;;MAMpC,OACE,aACA,MACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,KAAK,eAAe,WAAW,UAAU;UAC3D;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,SACE,aACA,QACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,IAAI,eAAe,WAAW,UAAU,MAAM,IAAI;UACpE,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;MAcA,KACE,aACA,QAA8C,CAAA,GAC9C,SAA6B;AAE7B,aAAI,GAAA,OAAA,kBAAiB,KAAK,GAAG;AAC3B,iBAAO,KAAK,KAAK,aAAa,CAAA,GAAI,KAAK;;AAEzC,eAAO,KAAK,QAAQ,WAAW,eAAe,WAAW,UAAU,oBAAoB;UACrF;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,IACE,aACA,QACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,OAAO,eAAe,WAAW,UAAU,MAAM,IAAI;UACvE,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;AAvEF,YAAA,QAAA;AA0EA,QAAa,qBAAb,cAAwC,aAAA,WAAyB;;AAAjE,YAAA,qBAAA;AAiEA,KAAA,SAAiBC,QAAK;AAGN,MAAAA,OAAA,qBAAqB,SAAS;IAG9C,GANiB,QAAA,QAAA,UAAA,QAAA,QAAK,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChJtB,QAAA,aAAA;AACA,QAAA,SAAA;AACA,QAAA,gBAAA,aAAA,oBAAA;AAEA,QAAA,WAAA,aAAA,eAAA;AACA,QAAA,eAAA;AAEA,QAAa,aAAb,cAAgC,WAAA,YAAW;MAA3C,cAAA;;AACE,aAAA,QAAwB,IAAI,SAAS,MAAM,KAAK,OAAO;MAqEzD;;;;MAhEE,OAAO,MAA6B,SAA6B;AAC/D,eAAO,KAAK,QAAQ,KAAK,eAAe;UACtC;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,SAAS,aAAqB,SAA6B;AACzD,eAAO,KAAK,QAAQ,IAAI,eAAe,WAAW,IAAI;UACpD,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,OACE,aACA,MACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,KAAK,eAAe,WAAW,IAAI;UACrD;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;MAUA,KACE,QAAmD,CAAA,GACnD,SAA6B;AAE7B,aAAI,GAAA,OAAA,kBAAiB,KAAK,GAAG;AAC3B,iBAAO,KAAK,KAAK,CAAA,GAAI,KAAK;;AAE5B,eAAO,KAAK,QAAQ,WAAW,eAAe,gBAAgB;UAC5D;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,IAAI,aAAqB,SAA6B;AACpD,eAAO,KAAK,QAAQ,OAAO,eAAe,WAAW,IAAI;UACvD,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;AArEF,YAAA,aAAA;AAwEA,QAAa,iBAAb,cAAoC,aAAA,WAAqB;;AAAzD,YAAA,iBAAA;AAiRA,KAAA,SAAiBC,aAAU;AAGX,MAAAA,YAAA,iBAAiB,cAAc;AAI/B,MAAAA,YAAA,QAAQ,SAAS;AAGjB,MAAAA,YAAA,qBAAqB,SAAS;IAG9C,GAbiB,aAAA,QAAA,eAAA,QAAA,aAAU,CAAA,EAAA;;;;;;;;;;ACtR3B,aAAgB,4BACd,IAAO;AAEP,aAAO,OAAQ,GAAW,UAAU;IACtC;AAJA,YAAA,8BAAA;AA4BA,QAAa,kBAAb,MAA4B;MAO1B,YAAY,OAAsC;AAChD,aAAK,WAAW,MAAM;AACtB,aAAK,QAAQ,MAAM;AACnB,aAAK,aAAa,MAAM;AACxB,aAAK,cAAc,MAAM;AACzB,aAAK,OAAO,MAAM;MACpB;;AAbF,YAAA,kBAAA;AAoBA,QAAa,sBAAb,MAAgC;MAI9B,YAAY,OAAsC;AAChD,aAAK,OAAO;AACZ,aAAK,WAAW;MAClB;;AAPF,YAAA,sBAAA;;;;;;;;;;ACtHO,QAAM,qBAAqB,CAChC,YACkD;AAClD,cAAO,mCAAS,UAAS;IAC3B;AAJa,YAAA,qBAAkB;AAMxB,QAAM,oBAAoB,CAC/B,YACiD;AACjD,cAAO,mCAAS,UAAS;IAC3B;AAJa,YAAA,oBAAiB;AAMvB,QAAM,gBAAgB,CAC3B,YAC6C;AAC7C,cAAO,mCAAS,UAAS;IAC3B;AAJa,YAAA,gBAAa;AAM1B,aAAgB,UAAa,KAAyB;AACpD,aAAO,OAAO;IAChB;AAFA,YAAA,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfA,QAAA,UAAA;AACA,QAAA,qBAAA;AAUA,QAAA,wBAAA;AAEA,QAAM,+BAA+B;AAMrC,QAAsB,+BAAtB,MAAkD;MAuBhD,cAAA;;AApBA,aAAA,aAA8B,IAAI,gBAAe;AAEjD,uDAAA,IAAA,MAAA,MAAA;AACA,8DAAA,IAAA,MAAuC,MAAK;QAAE,CAAC;AAC/C,6DAAA,IAAA,MAAwD,MAAK;QAAE,CAAC;AAEhE,iDAAA,IAAA,MAAA,MAAA;AACA,wDAAA,IAAA,MAAiC,MAAK;QAAE,CAAC;AACzC,uDAAA,IAAA,MAAkD,MAAK;QAAE,CAAC;AAE1D,gDAAA,IAAA,MAA6E,CAAA,CAAE;AAErE,aAAA,mBAAqC,CAAA;AAC/C,aAAA,WAAyC,CAAA;AAEzC,4CAAA,IAAA,MAAS,KAAK;AACd,8CAAA,IAAA,MAAW,KAAK;AAChB,8CAAA,IAAA,MAAW,KAAK;AAChB,6DAAA,IAAA,MAA0B,KAAK;AAkR/B,kDAAA,IAAA,MAAe,CAAC,UAAkB;AAChC,iCAAA,MAAI,uCAAY,MAAI,GAAA;AACpB,cAAI,iBAAiB,SAAS,MAAM,SAAS,cAAc;AACzD,oBAAQ,IAAI,QAAA,kBAAiB;;AAE/B,cAAI,iBAAiB,QAAA,mBAAmB;AACtC,mCAAA,MAAI,uCAAY,MAAI,GAAA;AACpB,mBAAO,KAAK,MAAM,SAAS,KAAK;;AAElC,cAAI,iBAAiB,QAAA,aAAa;AAChC,mBAAO,KAAK,MAAM,SAAS,KAAK;;AAElC,cAAI,iBAAiB,OAAO;AAC1B,kBAAM,cAA2B,IAAI,QAAA,YAAY,MAAM,OAAO;AAE9D,wBAAY,QAAQ;AACpB,mBAAO,KAAK,MAAM,SAAS,WAAW;;AAExC,iBAAO,KAAK,MAAM,SAAS,IAAI,QAAA,YAAY,OAAO,KAAK,CAAC,CAAC;QAC3D,CAAC;AAlSC,+BAAA,MAAI,gDAAqB,IAAI,QAAc,CAAC,SAAS,WAAU;AAC7D,iCAAA,MAAI,uDAA4B,SAAO,GAAA;AACvC,iCAAA,MAAI,sDAA2B,QAAM,GAAA;QACvC,CAAC,GAAC,GAAA;AAEF,+BAAA,MAAI,0CAAe,IAAI,QAAc,CAAC,SAAS,WAAU;AACvD,iCAAA,MAAI,iDAAsB,SAAO,GAAA;AACjC,iCAAA,MAAI,gDAAqB,QAAM,GAAA;QACjC,CAAC,GAAC,GAAA;AAMF,+BAAA,MAAI,gDAAA,GAAA,EAAmB,MAAM,MAAK;QAAE,CAAC;AACrC,+BAAA,MAAI,0CAAA,GAAA,EAAa,MAAM,MAAK;QAAE,CAAC;MACjC;MAEU,KAAK,UAA4B;AAGzC,mBAAW,MAAK;AACd,mBAAQ,EAAG,KAAK,MAAK;AACnB,iBAAK,WAAU;AACf,iBAAK,MAAM,KAAK;UAClB,GAAG,uBAAA,MAAI,2CAAA,GAAA,CAAa;QACtB,GAAG,CAAC;MACN;MAEU,mBAAmB,gBAA8B;;AACzD,aAAK,iBAAiB,KAAK,cAAc;AACzC,aAAK,MAAM,kBAAkB,cAAc;AAC3C,cAAM,WAAU,oBAAe,QAAQ,CAAC,MAAxB,mBAA2B;AAC3C,YAAI;AAAS,eAAK,YAAY,OAAqC;AACnE,eAAO;MACT;MAEU,YAAY,SAAqC,OAAO,MAAI;AACpE,YAAI,EAAE,aAAa;AAAU,kBAAQ,UAAU;AAE/C,aAAK,SAAS,KAAK,OAAO;AAE1B,YAAI,MAAM;AACR,eAAK,MAAM,WAAW,OAAO;AAC7B,gBAAK,GAAA,sBAAA,mBAAkB,OAAO,MAAK,GAAA,sBAAA,eAAc,OAAO,MAAM,QAAQ,SAAS;AAE7E,iBAAK,MAAM,sBAAsB,QAAQ,OAAiB;sBACjD,GAAA,sBAAA,oBAAmB,OAAO,KAAK,QAAQ,eAAe;AAC/D,iBAAK,MAAM,gBAAgB,QAAQ,aAAa;sBACvC,GAAA,sBAAA,oBAAmB,OAAO,KAAK,QAAQ,YAAY;AAC5D,uBAAW,aAAa,QAAQ,YAAY;AAC1C,kBAAI,UAAU,SAAS,YAAY;AACjC,qBAAK,MAAM,gBAAgB,UAAU,QAAQ;;;;;MAKvD;MAEU,aAAU;AAClB,YAAI,KAAK;AAAO;AAChB,+BAAA,MAAI,uDAAA,GAAA,EAAyB,KAA7B,IAAI;AACJ,aAAK,MAAM,SAAS;MACtB;MAEA,IAAI,QAAK;AACP,eAAO,uBAAA,MAAI,qCAAA,GAAA;MACb;MAEA,IAAI,UAAO;AACT,eAAO,uBAAA,MAAI,uCAAA,GAAA;MACb;MAEA,IAAI,UAAO;AACT,eAAO,uBAAA,MAAI,uCAAA,GAAA;MACb;MAEA,QAAK;AACH,aAAK,WAAW,MAAK;MACvB;;;;;;;;MASA,GAA+B,OAAc,UAAyC;AACpF,cAAM,YACJ,uBAAA,MAAI,yCAAA,GAAA,EAAY,KAAK,MAAM,uBAAA,MAAI,yCAAA,GAAA,EAAY,KAAK,IAAI,CAAA;AACtD,kBAAU,KAAK,EAAE,SAAQ,CAAE;AAC3B,eAAO;MACT;;;;;;;;MASA,IAAgC,OAAc,UAAyC;AACrF,cAAM,YAAY,uBAAA,MAAI,yCAAA,GAAA,EAAY,KAAK;AACvC,YAAI,CAAC;AAAW,iBAAO;AACvB,cAAM,QAAQ,UAAU,UAAU,CAAC,MAAM,EAAE,aAAa,QAAQ;AAChE,YAAI,SAAS;AAAG,oBAAU,OAAO,OAAO,CAAC;AACzC,eAAO;MACT;;;;;;MAOA,KAAiC,OAAc,UAAyC;AACtF,cAAM,YACJ,uBAAA,MAAI,yCAAA,GAAA,EAAY,KAAK,MAAM,uBAAA,MAAI,yCAAA,GAAA,EAAY,KAAK,IAAI,CAAA;AACtD,kBAAU,KAAK,EAAE,UAAU,MAAM,KAAI,CAAE;AACvC,eAAO;MACT;;;;;;;;;;;;MAaA,QACE,OAAY;AAMZ,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAU;AACrC,iCAAA,MAAI,sDAA2B,MAAI,GAAA;AACnC,cAAI,UAAU;AAAS,iBAAK,KAAK,SAAS,MAAM;AAChD,eAAK,KAAK,OAAO,OAAc;QACjC,CAAC;MACH;MAEA,MAAM,OAAI;AACR,+BAAA,MAAI,sDAA2B,MAAI,GAAA;AACnC,cAAM,uBAAA,MAAI,0CAAA,GAAA;MACZ;;;;;MAMA,MAAM,sBAAmB;AACvB,cAAM,KAAK,KAAI;AACf,cAAM,aAAa,KAAK,iBAAiB,KAAK,iBAAiB,SAAS,CAAC;AACzE,YAAI,CAAC;AAAY,gBAAM,IAAI,QAAA,YAAY,iDAAiD;AACxF,eAAO;MACT;;;;;MAUA,MAAM,eAAY;AAChB,cAAM,KAAK,KAAI;AACf,eAAO,uBAAA,MAAI,yCAAA,KAAA,6CAAA,EAAiB,KAArB,IAAI;MACb;;;;;MAiBA,MAAM,eAAY;AAChB,cAAM,KAAK,KAAI;AACf,eAAO,uBAAA,MAAI,yCAAA,KAAA,6CAAA,EAAiB,KAArB,IAAI;MACb;;;;;MAoBA,MAAM,oBAAiB;AACrB,cAAM,KAAK,KAAI;AACf,eAAO,uBAAA,MAAI,yCAAA,KAAA,kDAAA,EAAsB,KAA1B,IAAI;MACb;MAwBA,MAAM,0BAAuB;AAC3B,cAAM,KAAK,KAAI;AACf,eAAO,uBAAA,MAAI,yCAAA,KAAA,wDAAA,EAA4B,KAAhC,IAAI;MACb;MAkBA,MAAM,aAAU;AACd,cAAM,KAAK,KAAI;AACf,eAAO,uBAAA,MAAI,yCAAA,KAAA,iDAAA,EAAqB,KAAzB,IAAI;MACb;MAEA,qBAAkB;AAChB,eAAO,CAAC,GAAG,KAAK,gBAAgB;MAClC;MAuBU,MAAkC,UAAiB,MAAoC;AAE/F,YAAI,uBAAA,MAAI,qCAAA,GAAA,GAAS;AACf;;AAGF,YAAI,UAAU,OAAO;AACnB,iCAAA,MAAI,qCAAU,MAAI,GAAA;AAClB,iCAAA,MAAI,iDAAA,GAAA,EAAmB,KAAvB,IAAI;;AAGN,cAAM,YAA0D,uBAAA,MAAI,yCAAA,GAAA,EAAY,KAAK;AACrF,YAAI,WAAW;AACb,iCAAA,MAAI,yCAAA,GAAA,EAAY,KAAK,IAAI,UAAU,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI;AACxD,oBAAU,QAAQ,CAAC,EAAE,SAAQ,MAAY,SAAS,GAAG,IAAI,CAAC;;AAG5D,YAAI,UAAU,SAAS;AACrB,gBAAM,QAAQ,KAAK,CAAC;AACpB,cAAI,CAAC,uBAAA,MAAI,sDAAA,GAAA,KAA4B,EAAC,uCAAW,SAAQ;AACvD,oBAAQ,OAAO,KAAK;;AAEtB,iCAAA,MAAI,sDAAA,GAAA,EAAwB,KAA5B,MAA6B,KAAK;AAClC,iCAAA,MAAI,gDAAA,GAAA,EAAkB,KAAtB,MAAuB,KAAK;AAC5B,eAAK,MAAM,KAAK;AAChB;;AAGF,YAAI,UAAU,SAAS;AAGrB,gBAAM,QAAQ,KAAK,CAAC;AACpB,cAAI,CAAC,uBAAA,MAAI,sDAAA,GAAA,KAA4B,EAAC,uCAAW,SAAQ;AAOvD,oBAAQ,OAAO,KAAK;;AAEtB,iCAAA,MAAI,sDAAA,GAAA,EAAwB,KAA5B,MAA6B,KAAK;AAClC,iCAAA,MAAI,gDAAA,GAAA,EAAkB,KAAtB,MAAuB,KAAK;AAC5B,eAAK,MAAM,KAAK;;MAEpB;MAEU,aAAU;AAClB,cAAM,aAAa,KAAK,iBAAiB,KAAK,iBAAiB,SAAS,CAAC;AACzE,YAAI;AAAY,eAAK,MAAM,uBAAuB,UAAU;AAC5D,cAAM,eAAe,uBAAA,MAAI,yCAAA,KAAA,6CAAA,EAAiB,KAArB,IAAI;AACzB,YAAI;AAAc,eAAK,MAAM,gBAAgB,YAAY;AACzD,cAAM,eAAe,uBAAA,MAAI,yCAAA,KAAA,6CAAA,EAAiB,KAArB,IAAI;AACzB,YAAI;AAAc,eAAK,MAAM,gBAAgB,YAAY;AAEzD,cAAM,oBAAoB,uBAAA,MAAI,yCAAA,KAAA,kDAAA,EAAsB,KAA1B,IAAI;AAC9B,YAAI;AAAmB,eAAK,MAAM,qBAAqB,iBAAiB;AAExE,cAAM,0BAA0B,uBAAA,MAAI,yCAAA,KAAA,wDAAA,EAA4B,KAAhC,IAAI;AACpC,YAAI,2BAA2B;AAAM,eAAK,MAAM,2BAA2B,uBAAuB;AAElG,YAAI,KAAK,iBAAiB,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG;AAC9C,eAAK,MAAM,cAAc,uBAAA,MAAI,yCAAA,KAAA,iDAAA,EAAqB,KAAzB,IAAI,CAAuB;;MAExD;MAUU,MAAM,sBACd,aACA,QACA,SAA6B;AAE7B,cAAM,SAAS,mCAAS;AACxB,YAAI,QAAQ;AACV,cAAI,OAAO;AAAS,iBAAK,WAAW,MAAK;AACzC,iBAAO,iBAAiB,SAAS,MAAM,KAAK,WAAW,MAAK,CAAE;;AAEhE,+BAAA,MAAI,yCAAA,KAAA,4CAAA,EAAgB,KAApB,MAAqB,MAAM;AAE3B,cAAM,iBAAiB,MAAM,YAAY,OACvC,EAAE,GAAG,QAAQ,QAAQ,MAAK,GAC1B,EAAE,GAAG,SAAS,QAAQ,KAAK,WAAW,OAAM,CAAE;AAEhD,aAAK,WAAU;AACf,eAAO,KAAK,mBAAmB,cAAc;MAC/C;MAEU,MAAM,mBACd,aACA,QACA,SAA6B;AAE7B,mBAAW,WAAW,OAAO,UAAU;AACrC,eAAK,YAAY,SAAS,KAAK;;AAEjC,eAAO,MAAM,KAAK,sBAAsB,aAAa,QAAQ,OAAO;MACtE;MAEU,MAAM,cACd,aACA,QAGA,SAAuB;;AAEvB,cAAM,OAAO;AACb,cAAM,EAAE,gBAAgB,QAAQ,QAAQ,GAAG,WAAU,IAAK;AAC1D,cAAM,uBAAuB,OAAO,kBAAkB,aAAY,+CAAe;AACjF,cAAM,EAAE,qBAAqB,6BAA4B,IAAK,WAAW,CAAA;AAEzE,cAAM,kBAAyD,CAAA;AAC/D,mBAAW,KAAK,OAAO,WAAW;AAChC,0BAAgB,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI;;AAG/C,cAAM,YAAmD,OAAO,UAAU,IACxE,CAAC,OAA4C;UAC3C,MAAM,EAAE,QAAQ,EAAE,SAAS;UAC3B,YAAY,EAAE;UACd,aAAa,EAAE;UACf;AAGJ,mBAAW,WAAW,OAAO,UAAU;AACrC,eAAK,YAAY,SAAS,KAAK;;AAGjC,iBAAS,IAAI,GAAG,IAAI,oBAAoB,EAAE,GAAG;AAC3C,gBAAM,iBAAiC,MAAM,KAAK,sBAChD,aACA;YACE,GAAG;YACH;YACA;YACA,UAAU,CAAC,GAAG,KAAK,QAAQ;aAE7B,OAAO;AAET,gBAAM,WAAU,oBAAe,QAAQ,CAAC,MAAxB,mBAA2B;AAC3C,cAAI,CAAC,SAAS;AACZ,kBAAM,IAAI,QAAA,YAAY,4CAA4C;;AAEpE,cAAI,CAAC,QAAQ;AAAe;AAC5B,gBAAM,EAAE,MAAM,WAAW,KAAI,IAAK,QAAQ;AAC1C,gBAAM,KAAK,gBAAgB,IAAI;AAC/B,cAAI,CAAC,IAAI;AACP,kBAAMC,WAAU,0BAA0B,KAAK,UAAU,IAAI,CAAC,4BAA4B,UACvF,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,IAAI,CAAC,EACjC,KAAK,IAAI,CAAC;AAEb,iBAAK,YAAY,EAAE,MAAM,MAAM,SAAAA,SAAO,CAAE;AACxC;qBACS,wBAAwB,yBAAyB,MAAM;AAChE,kBAAMA,WAAU,0BAA0B,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,UACtE,oBAAoB,CACrB;AAED,iBAAK,YAAY,EAAE,MAAM,MAAM,SAAAA,SAAO,CAAE;AACxC;;AAGF,cAAI;AACJ,cAAI;AACF,sBAAS,GAAA,mBAAA,6BAA4B,EAAE,IAAI,MAAM,GAAG,MAAM,IAAI,IAAI;mBAC3D,OAAO;AACd,iBAAK,YAAY;cACf;cACA;cACA,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;aAC/D;AACD;;AAIF,gBAAM,aAAa,MAAM,GAAG,SAAS,QAAQ,IAAI;AACjD,gBAAM,UAAU,uBAAA,MAAI,yCAAA,KAAA,yDAAA,EAA6B,KAAjC,MAAkC,UAAU;AAE5D,eAAK,YAAY,EAAE,MAAM,MAAM,QAAO,CAAE;AAExC,cAAI;AAAsB;;MAE9B;MAEU,MAAM,UACd,aACA,QAGA,SAAuB;;AAEvB,cAAM,OAAO;AACb,cAAM,EAAE,cAAc,QAAQ,QAAQ,GAAG,WAAU,IAAK;AACxD,cAAM,uBAAuB,OAAO,gBAAgB,cAAY,gDAAa,aAAb,mBAAuB;AACvF,cAAM,EAAE,qBAAqB,6BAA4B,IAAK,WAAW,CAAA;AAEzE,cAAM,kBAAyD,CAAA;AAC/D,mBAAW,KAAK,OAAO,OAAO;AAC5B,cAAI,EAAE,SAAS,YAAY;AACzB,4BAAgB,EAAE,SAAS,QAAQ,EAAE,SAAS,SAAS,IAAI,IAAI,EAAE;;;AAIrE,cAAM,QACJ,WAAW,SACT,OAAO,MAAM,IAAI,CAAC,MAChB,EAAE,SAAS,aACT;UACE,MAAM;UACN,UAAU;YACR,MAAM,EAAE,SAAS,QAAQ,EAAE,SAAS,SAAS;YAC7C,YAAY,EAAE,SAAS;YACvB,aAAa,EAAE,SAAS;;YAG3B,CAAmC,IAEvC;AAEL,mBAAW,WAAW,OAAO,UAAU;AACrC,eAAK,YAAY,SAAS,KAAK;;AAGjC,iBAAS,IAAI,GAAG,IAAI,oBAAoB,EAAE,GAAG;AAC3C,gBAAM,iBAAiC,MAAM,KAAK,sBAChD,aACA;YACE,GAAG;YACH;YACA;YACA,UAAU,CAAC,GAAG,KAAK,QAAQ;aAE7B,OAAO;AAET,gBAAM,WAAU,oBAAe,QAAQ,CAAC,MAAxB,mBAA2B;AAC3C,cAAI,CAAC,SAAS;AACZ,kBAAM,IAAI,QAAA,YAAY,4CAA4C;;AAEpE,cAAI,CAAC,QAAQ,YAAY;AACvB;;AAGF,qBAAW,aAAa,QAAQ,YAAY;AAC1C,gBAAI,UAAU,SAAS;AAAY;AACnC,kBAAM,eAAe,UAAU;AAC/B,kBAAM,EAAE,MAAM,WAAW,KAAI,IAAK,UAAU;AAC5C,kBAAM,KAAK,gBAAgB,IAAI;AAE/B,gBAAI,CAAC,IAAI;AACP,oBAAMA,WAAU,sBAAsB,KAAK,UAAU,IAAI,CAAC,4BAA4B,MACnF,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,SAAS,IAAI,CAAC,EAC1C,KAAK,IAAI,CAAC;AAEb,mBAAK,YAAY,EAAE,MAAM,cAAc,SAAAA,SAAO,CAAE;AAChD;uBACS,wBAAwB,yBAAyB,MAAM;AAChE,oBAAMA,WAAU,sBAAsB,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,UAClE,oBAAoB,CACrB;AAED,mBAAK,YAAY,EAAE,MAAM,cAAc,SAAAA,SAAO,CAAE;AAChD;;AAGF,gBAAI;AACJ,gBAAI;AACF,wBAAS,GAAA,mBAAA,6BAA4B,EAAE,IAAI,MAAM,GAAG,MAAM,IAAI,IAAI;qBAC3D,OAAO;AACd,oBAAMA,WAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,mBAAK,YAAY,EAAE,MAAM,cAAc,SAAAA,SAAO,CAAE;AAChD;;AAIF,kBAAM,aAAa,MAAM,GAAG,SAAS,QAAQ,IAAI;AACjD,kBAAM,UAAU,uBAAA,MAAI,yCAAA,KAAA,yDAAA,EAA6B,KAAjC,MAAkC,UAAU;AAC5D,iBAAK,YAAY,EAAE,MAAM,cAAc,QAAO,CAAE;AAEhD,gBAAI,sBAAsB;AACxB;;;;AAKN;MACF;;AA/lBF,YAAA,+BAAA;;;AA4LI,cAAO,4BAAA,MAAI,yCAAA,KAAA,6CAAA,EAAiB,KAArB,IAAI,EAAoB,YAAxB,YAAmC;IAC5C,GAAC,gDAAA,SAAAC,iDAAA;;AAYC,UAAI,IAAI,KAAK,SAAS;AACtB,aAAO,MAAM,GAAG;AACd,cAAM,UAAU,KAAK,SAAS,CAAC;AAC/B,aAAI,GAAA,sBAAA,oBAAmB,OAAO,GAAG;AAC/B,iBAAO,EAAE,GAAG,SAAS,UAAS,aAAQ,YAAR,YAAmB,KAAI;;;AAGzD,YAAM,IAAI,QAAA,YAAY,4EAA4E;IACpG,GAAC,qDAAA,SAAAC,sDAAA;;AAYC,eAAS,IAAI,KAAK,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;AAClD,cAAM,UAAU,KAAK,SAAS,CAAC;AAC/B,aAAI,GAAA,sBAAA,oBAAmB,OAAO,MAAK,mCAAS,gBAAe;AACzD,iBAAO,QAAQ;;AAEjB,aAAI,GAAA,sBAAA,oBAAmB,OAAO,OAAK,wCAAS,eAAT,mBAAqB,SAAQ;AAC9D,kBAAO,aAAQ,WAAW,GAAG,EAAE,MAAxB,mBAA2B;;;AAItC;IACF,GAAC,2DAAA,SAAAC,4DAAA;AAYC,eAAS,IAAI,KAAK,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;AAClD,cAAM,UAAU,KAAK,SAAS,CAAC;AAC/B,aAAI,GAAA,sBAAA,mBAAkB,OAAO,KAAK,QAAQ,WAAW,MAAM;AACzD,iBAAO,QAAQ;;AAEjB,aACE,GAAA,sBAAA,eAAc,OAAO,KACrB,QAAQ,WAAW,QACnB,KAAK,SAAS,KACZ,CAAC,MAAG;;AACF,mBAAE,SAAS,iBACX,OAAE,eAAF,mBAAc,KAAK,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,OAAO,QAAQ;SAAa,GAErF;AACA,iBAAO,QAAQ;;;AAInB;IACF,GAAC,oDAAA,SAAAC,qDAAA;AAQC,YAAM,QAAyB;QAC7B,mBAAmB;QACnB,eAAe;QACf,cAAc;;AAEhB,iBAAW,EAAE,MAAK,KAAM,KAAK,kBAAkB;AAC7C,YAAI,OAAO;AACT,gBAAM,qBAAqB,MAAM;AACjC,gBAAM,iBAAiB,MAAM;AAC7B,gBAAM,gBAAgB,MAAM;;;AAGhC,aAAO;IACT,GAAC,+CAAA,SAAAC,8CAkGe,QAAkC;AAChD,UAAI,OAAO,KAAK,QAAQ,OAAO,IAAI,GAAG;AACpC,cAAM,IAAI,QAAA,YACR,8HAA8H;;IAGpI,GAAC,4DAAA,SAAAC,2DA6N4B,YAAmB;AAC9C,aACE,OAAO,eAAe,WAAW,aAC/B,eAAe,SAAY,cAC3B,KAAK,UAAU,UAAU;IAE/B;;;;;;;;;;AC9nBF,QAAA,iCAAA;AAKA,QAAA,wBAAA;AAoBA,QAAa,uBAAb,MAAa,8BAA6B,+BAAA,6BAAwD;;MAEhG,OAAO,aACL,aACA,QACA,SAAuB;AAEvB,cAAM,SAAS,IAAI,sBAAoB;AACvC,cAAM,OAAO;UACX,GAAG;UACH,SAAS,EAAE,GAAG,mCAAS,SAAS,6BAA6B,eAAc;;AAE7E,eAAO,KAAK,MAAM,OAAO,cAAc,aAAa,QAAQ,IAAI,CAAC;AACjE,eAAO;MACT;MAEA,OAAO,SACL,aACA,QACA,SAAuB;AAEvB,cAAM,SAAS,IAAI,sBAAoB;AACvC,cAAM,OAAO;UACX,GAAG;UACH,SAAS,EAAE,GAAG,mCAAS,SAAS,6BAA6B,WAAU;;AAEzE,eAAO,KAAK,MAAM,OAAO,UAAU,aAAa,QAAQ,IAAI,CAAC;AAC7D,eAAO;MACT;MAES,YAAY,SAAmC;AACtD,cAAM,YAAY,OAAO;AACzB,aAAI,GAAA,sBAAA,oBAAmB,OAAO,KAAK,QAAQ,SAAS;AAClD,eAAK,MAAM,WAAW,QAAQ,OAAiB;;MAEnD;;AAnCF,YAAA,uBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BA,QAAA,UAAA;AAQA,QAAA,iCAAA;AAKA,QAAA,cAAA;AAWA,QAAa,uBAAb,MAAa,8BACH,+BAAA,6BAAwD;MADlE,cAAA;;;AAIE,4DAAA,IAAA,MAAA,MAAA;MA+NF;MA7NE,IAAI,gCAA6B;AAC/B,eAAO,uBAAA,MAAI,qDAAA,GAAA;MACb;;;;;;;;MASA,OAAO,mBAAmB,QAAsB;AAC9C,cAAM,SAAS,IAAI,sBAAoB;AACvC,eAAO,KAAK,MAAM,OAAO,oBAAoB,MAAM,CAAC;AACpD,eAAO;MACT;MAEA,OAAO,qBACL,aACA,QACA,SAA6B;AAE7B,cAAM,SAAS,IAAI,sBAAoB;AACvC,eAAO,KAAK,MACV,OAAO,mBACL,aACA,EAAE,GAAG,QAAQ,QAAQ,KAAI,GACzB,EAAE,GAAG,SAAS,SAAS,EAAE,GAAG,mCAAS,SAAS,6BAA6B,SAAQ,EAAE,CAAE,CACxF;AAEH,eAAO;MACT;MA4BmB,MAAM,sBACvB,aACA,QACA,SAA6B;;AAE7B,cAAM,SAAS,mCAAS;AACxB,YAAI,QAAQ;AACV,cAAI,OAAO;AAAS,iBAAK,WAAW,MAAK;AACzC,iBAAO,iBAAiB,SAAS,MAAM,KAAK,WAAW,MAAK,CAAE;;AAEhE,+BAAA,MAAI,iCAAA,KAAA,kCAAA,EAAc,KAAlB,IAAI;AACJ,cAAM,SAAS,MAAM,YAAY,OAC/B,EAAE,GAAG,QAAQ,QAAQ,KAAI,GACzB,EAAE,GAAG,SAAS,QAAQ,KAAK,WAAW,OAAM,CAAE;AAEhD,aAAK,WAAU;AACf,yBAAiB,SAAS,QAAQ;AAChC,iCAAA,MAAI,iCAAA,KAAA,8BAAA,EAAU,KAAd,MAAe,KAAK;;AAEtB,aAAI,YAAO,WAAW,WAAlB,mBAA0B,SAAS;AACrC,gBAAM,IAAI,QAAA,kBAAiB;;AAE7B,eAAO,KAAK,mBAAmB,uBAAA,MAAI,iCAAA,KAAA,gCAAA,EAAY,KAAhB,IAAI,CAAc;MACnD;MAEU,MAAM,oBACd,gBACA,SAA6B;;AAE7B,cAAM,SAAS,mCAAS;AACxB,YAAI,QAAQ;AACV,cAAI,OAAO;AAAS,iBAAK,WAAW,MAAK;AACzC,iBAAO,iBAAiB,SAAS,MAAM,KAAK,WAAW,MAAK,CAAE;;AAEhE,+BAAA,MAAI,iCAAA,KAAA,kCAAA,EAAc,KAAlB,IAAI;AACJ,aAAK,WAAU;AACf,cAAM,SAAS,YAAA,OAAO,mBAAwC,gBAAgB,KAAK,UAAU;AAC7F,YAAI;AACJ,yBAAiB,SAAS,QAAQ;AAChC,cAAI,UAAU,WAAW,MAAM,IAAI;AAEjC,iBAAK,mBAAmB,uBAAA,MAAI,iCAAA,KAAA,gCAAA,EAAY,KAAhB,IAAI,CAAc;;AAG5C,iCAAA,MAAI,iCAAA,KAAA,8BAAA,EAAU,KAAd,MAAe,KAAK;AACpB,mBAAS,MAAM;;AAEjB,aAAI,YAAO,WAAW,WAAlB,mBAA0B,SAAS;AACrC,gBAAM,IAAI,QAAA,kBAAiB;;AAE7B,eAAO,KAAK,mBAAmB,uBAAA,MAAI,iCAAA,KAAA,gCAAA,EAAY,KAAhB,IAAI,CAAc;MACnD;MAqEA,EAAA,sDAAA,oBAAA,QAAA,GAAA,kCAAA,oBAAA,QAAA,GAAA,qCAAA,SAAAC,sCAAA;AAjJE,YAAI,KAAK;AAAO;AAChB,+BAAA,MAAI,qDAAkC,QAAS,GAAA;MACjD,GAAC,iCAAA,SAAAC,gCACS,OAA0B;;AAClC,YAAI,KAAK;AAAO;AAChB,cAAM,aAAa,uBAAA,MAAI,iCAAA,KAAA,8CAAA,EAA0B,KAA9B,MAA+B,KAAK;AACvD,aAAK,MAAM,SAAS,OAAO,UAAU;AACrC,cAAM,SAAQ,iBAAM,QAAQ,CAAC,MAAf,mBAAkB,UAAlB,mBAAyB;AACvC,cAAM,YAAW,gBAAW,QAAQ,CAAC,MAApB,mBAAuB;AACxC,YAAI,SAAS,SAAQ,qCAAU,UAAS,gBAAe,qCAAU,UAAS;AACxE,eAAK,MAAM,WAAW,OAAO,SAAS,OAAO;;MAEjD,GAAC,mCAAA,SAAAC,oCAAA;AAEC,YAAI,KAAK,OAAO;AACd,gBAAM,IAAI,QAAA,YAAY,yCAAyC;;AAEjE,cAAM,WAAW,uBAAA,MAAI,qDAAA,GAAA;AACrB,YAAI,CAAC,UAAU;AACb,gBAAM,IAAI,QAAA,YAAY,0CAA0C;;AAElE,+BAAA,MAAI,qDAAkC,QAAS,GAAA;AAC/C,eAAO,uBAAuB,QAAQ;MACxC,GAAC,iDAAA,SAAAC,gDAuDyB,OAA0B;;;AAClD,YAAI,WAAW,uBAAA,MAAI,qDAAA,GAAA;AACnB,cAAM,EAAE,SAAS,GAAG,KAAI,IAAK;AAC7B,YAAI,CAAC,UAAU;AACb,qBAAW,uBAAA,MAAI,qDAAkC;YAC/C,GAAG;YACH,SAAS,CAAA;aACV,GAAA;eACI;AACL,iBAAO,OAAO,UAAU,IAAI;;AAG9B,mBAAW,EAAE,OAAO,eAAe,OAAO,WAAW,MAAM,GAAG,MAAK,KAAM,MAAM,SAAS;AACtF,cAAI,SAAS,SAAS,QAAQ,KAAK;AACnC,cAAI,CAAC,QAAQ;AACX,qBAAS,SAAS,QAAQ,KAAK,IAAI,EAAE,eAAe,OAAO,SAAS,CAAA,GAAI,UAAU,GAAG,MAAK;;AAG5F,cAAI,UAAU;AACZ,gBAAI,CAAC,OAAO,UAAU;AACpB,qBAAO,WAAW,OAAO,OAAO,CAAA,GAAI,QAAQ;mBACvC;AACL,oBAAM,EAAE,SAAAC,UAAS,GAAGC,MAAI,IAAK;AAC7B,qBAAO,OAAO,OAAO,UAAUA,KAAI;AACnC,kBAAID,UAAS;AACX,iBAAAE,OAAA,KAAA,OAAO,UAAS,YAAhB,OAAAA,MAAuB,GAAP,UAAY,CAAA;AAC5B,uBAAO,SAAS,QAAQ,KAAK,GAAGF,QAAO;;;;AAK7C,cAAI;AAAe,mBAAO,gBAAgB;AAC1C,iBAAO,OAAO,QAAQ,KAAK;AAE3B,cAAI,CAAC;AAAO;AACZ,gBAAM,EAAE,SAAS,eAAe,MAAM,YAAY,GAAGC,MAAI,IAAK;AAC9D,iBAAO,OAAO,OAAO,SAASA,KAAI;AAElC,cAAI;AAAS,mBAAO,QAAQ,WAAW,OAAO,QAAQ,WAAW,MAAM;AACvE,cAAI;AAAM,mBAAO,QAAQ,OAAO;AAChC,cAAI,eAAe;AACjB,gBAAI,CAAC,OAAO,QAAQ,eAAe;AACjC,qBAAO,QAAQ,gBAAgB;mBAC1B;AACL,kBAAI,cAAc;AAAM,uBAAO,QAAQ,cAAc,OAAO,cAAc;AAC1E,kBAAI,cAAc,WAAW;AAC3B,iBAAAE,OAAA,KAAA,OAAO,QAAQ,eAAc,cAA7B,OAAAA,MAAsC,GAAT,YAAc;AAC3C,uBAAO,QAAQ,cAAc,aAAa,cAAc;;;;AAI9D,cAAI,YAAY;AACd,gBAAI,CAAC,OAAO,QAAQ;AAAY,qBAAO,QAAQ,aAAa,CAAA;AAC5D,uBAAW,EAAE,OAAAC,QAAO,IAAI,MAAM,UAAU,IAAI,GAAGH,MAAI,KAAM,YAAY;AACnE,oBAAM,aAAYI,OAAA,KAAC,OAAO,QAAQ,YAAWD,MAAK,MAAhC,OAAAC,MAAgC,GAALD,MAAK,IAAM,CAAA;AACxD,qBAAO,OAAO,WAAWH,KAAI;AAC7B,kBAAI;AAAI,0BAAU,KAAK;AACvB,kBAAI;AAAM,0BAAU,OAAO;AAC3B,kBAAI;AAAI,gCAAU,aAAV,YAAA,UAAU,WAAa,EAAE,WAAW,GAAE;AAC9C,kBAAI,yBAAI;AAAM,0BAAU,SAAU,OAAO,GAAG;AAC5C,kBAAI,yBAAI;AAAW,0BAAU,SAAU,aAAa,GAAG;;;;AAI7D,eAAO;MACT,GAEC,OAAO,cAAa,IAAC;AACpB,cAAM,YAAmC,CAAA;AACzC,cAAM,YAAkE,CAAA;AACxE,YAAI,OAAO;AAEX,aAAK,GAAG,SAAS,CAAC,UAAS;AACzB,gBAAM,SAAS,UAAU,MAAK;AAC9B,cAAI,QAAQ;AACV,mBAAO,KAAK;iBACP;AACL,sBAAU,KAAK,KAAK;;QAExB,CAAC;AAED,aAAK,GAAG,OAAO,MAAK;AAClB,iBAAO;AACP,qBAAW,UAAU,WAAW;AAC9B,mBAAO,MAAS;;AAElB,oBAAU,SAAS;QACrB,CAAC;AAED,eAAO;UACL,MAAM,YAAyD;AAC7D,gBAAI,CAAC,UAAU,QAAQ;AACrB,kBAAI,MAAM;AACR,uBAAO,EAAE,OAAO,QAAW,MAAM,KAAI;;AAEvC,qBAAO,IAAI,QAAyC,CAAC,YAAY,UAAU,KAAK,OAAO,CAAC,EAAE,KACxF,CAACK,WAAWA,SAAQ,EAAE,OAAOA,QAAO,MAAM,MAAK,IAAK,EAAE,OAAO,QAAW,MAAM,KAAI,CAAG;;AAGzF,kBAAM,QAAQ,UAAU,MAAK;AAC7B,mBAAO,EAAE,OAAO,OAAO,MAAM,MAAK;UACpC;;MAEJ;MAEA,mBAAgB;AACd,cAAM,SAAS,IAAI,YAAA,OAAO,KAAK,OAAO,aAAa,EAAE,KAAK,IAAI,GAAG,KAAK,UAAU;AAChF,eAAO,OAAO,iBAAgB;MAChC;;AAlOF,YAAA,uBAAA;AAqOA,aAAS,uBAAuB,UAAgC;AAC9D,YAAM,EAAE,IAAI,SAAS,SAAS,OAAO,oBAAoB,GAAG,KAAI,IAAK;AACrE,aAAO;QACL,GAAG;QACH;QACA,SAAS,QAAQ,IACf,CAAC,EAAE,SAAS,eAAe,OAAO,UAAU,GAAG,WAAU,MAA6B;AACpF,cAAI,CAAC;AAAe,kBAAM,IAAI,QAAA,YAAY,oCAAoC,KAAK,EAAE;AACrF,gBAAM,EAAE,UAAU,MAAM,eAAe,YAAY,GAAG,YAAW,IAAK;AACtE,gBAAM,OAAO,QAAQ;AACrB,cAAI,CAAC;AAAM,kBAAM,IAAI,QAAA,YAAY,2BAA2B,KAAK,EAAE;AACnE,cAAI,eAAe;AACjB,kBAAM,EAAE,WAAW,MAAM,KAAI,IAAK;AAClC,gBAAI,QAAQ;AAAM,oBAAM,IAAI,QAAA,YAAY,8CAA8C,KAAK,EAAE;AAC7F,gBAAI,CAAC;AAAM,oBAAM,IAAI,QAAA,YAAY,yCAAyC,KAAK,EAAE;AACjF,mBAAO;cACL,GAAG;cACH,SAAS,EAAE,SAAS,eAAe,EAAE,WAAW,MAAM,KAAI,GAAI,KAAI;cAClE;cACA;cACA;;;AAGJ,cAAI,YAAY;AACd,mBAAO;cACL,GAAG;cACH;cACA;cACA;cACA,SAAS;gBACP,GAAG;gBACH;gBACA;gBACA,YAAY,WAAW,IAAI,CAAC,WAAW,MAAK;AAC1C,wBAAM,EAAE,UAAU,IAAI,MAAM,IAAAC,KAAI,GAAG,SAAQ,IAAK;AAChD,wBAAM,EAAE,WAAW,MAAM,MAAM,GAAG,OAAM,IAAK,MAAM,CAAA;AACnD,sBAAIA,OAAM;AACR,0BAAM,IAAI,QAAA,YAAY,mBAAmB,KAAK,gBAAgB,CAAC;EAAS,IAAI,QAAQ,CAAC,EAAE;AACzF,sBAAI,QAAQ;AACV,0BAAM,IAAI,QAAA,YAAY,mBAAmB,KAAK,gBAAgB,CAAC;EAAW,IAAI,QAAQ,CAAC,EAAE;AAC3F,sBAAI,QAAQ;AACV,0BAAM,IAAI,QAAA,YACR,mBAAmB,KAAK,gBAAgB,CAAC;EAAoB,IAAI,QAAQ,CAAC,EAAE;AAEhF,sBAAI,QAAQ;AACV,0BAAM,IAAI,QAAA,YACR,mBAAmB,KAAK,gBAAgB,CAAC;EAAyB,IAAI,QAAQ,CAAC,EAAE;AAGrF,yBAAO,EAAE,GAAG,UAAU,IAAAA,KAAI,MAAM,UAAU,EAAE,GAAG,QAAQ,MAAM,WAAW,KAAI,EAAE;gBAChF,CAAC;;;;AAIP,iBAAO;YACL,GAAG;YACH,SAAS,EAAE,GAAG,aAAa,SAAS,KAAI;YACxC;YACA;YACA;;QAEJ,CAAC;QAEH;QACA;QACA,QAAQ;QACR,GAAI,qBAAqB,EAAE,mBAAkB,IAAK,CAAA;;IAEtD;AAEA,aAAS,IAAI,GAAU;AACrB,aAAO,KAAK,UAAU,CAAC;IACzB;;;;;;;;;;AC9TA,QAAA,yBAAA;AAqBA,QAAa,gCAAb,MAAa,uCACH,uBAAA,qBAAoB;MAG5B,OAAgB,mBAAmB,QAAsB;AACvD,cAAM,SAAS,IAAI,+BAA6B;AAChD,eAAO,KAAK,MAAM,OAAO,oBAAoB,MAAM,CAAC;AACpD,eAAO;MACT;;MAGA,OAAO,aACL,aACA,QACA,SAAuB;AAEvB,cAAM,SAAS,IAAI,+BAA6B;AAChD,cAAM,OAAO;UACX,GAAG;UACH,SAAS,EAAE,GAAG,mCAAS,SAAS,6BAA6B,eAAc;;AAE7E,eAAO,KAAK,MAAM,OAAO,cAAc,aAAa,QAAQ,IAAI,CAAC;AACjE,eAAO;MACT;MAEA,OAAO,SACL,aACA,QACA,SAAuB;AAEvB,cAAM,SAAS,IAAI,+BAA6B;AAChD,cAAM,OAAO;UACX,GAAG;UACH,SAAS,EAAE,GAAG,mCAAS,SAAS,6BAA6B,WAAU;;AAEzE,eAAO,KAAK,MAAM,OAAO,UAAU,aAAa,QAAQ,IAAI,CAAC;AAC7D,eAAO;MACT;;AArCF,YAAA,gCAAA;;;;;;;;;;AC1BA,QAAA,aAAA;AACA,QAAA,yBAAA;AACA,QAAA,yBAAA;AAAS,WAAA,eAAA,SAAA,wBAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,uBAAA;IAAoB,EAAA,CAAA;AAC7B,QAAA,kCAAA;AAIA,QAAA,kCAAA;AACE,WAAA,eAAA,SAAA,iCAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,gCAAA;IAA6B,EAAA,CAAA;AAI/B,QAAA,qBAAA;AAKE,WAAA,eAAA,SAAA,mBAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,mBAAA;IAAe,EAAA,CAAA;AACf,WAAA,eAAA,SAAA,uBAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,mBAAA;IAAmB,EAAA,CAAA;AAMrB,QAAA,yBAAA;AACA,QAAA,yBAAA;AAAS,WAAA,eAAA,SAAA,wBAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,uBAAA;IAAoB,EAAA,CAAA;AAE7B,QAAa,cAAb,cAAiC,WAAA,YAAW;MAY1C,aACE,MAGA,SAA6B;AAE7B,YAAI,KAAK,QAAQ;AACf,iBAAO,gCAAA,8BAA8B,aACnC,KAAK,QAAQ,KAAK,aAClB,MACA,OAAO;;AAGX,eAAO,uBAAA,qBAAqB,aAC1B,KAAK,QAAQ,KAAK,aAClB,MACA,OAAO;MAEX;MAmBA,SACE,MAGA,SAA6B;AAE7B,YAAI,KAAK,QAAQ;AACf,iBAAO,gCAAA,8BAA8B,SACnC,KAAK,QAAQ,KAAK,aAClB,MACA,OAAO;;AAGX,eAAO,uBAAA,qBAAqB,SAC1B,KAAK,QAAQ,KAAK,aAClB,MACA,OAAO;MAEX;;;;MAKA,OAAO,MAAkC,SAA6B;AACpE,eAAO,uBAAA,qBAAqB,qBAAqB,KAAK,QAAQ,KAAK,aAAa,MAAM,OAAO;MAC/F;;AA1EF,YAAA,cAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BA,QAAA,aAAA;AACA,QAAA,iBAAA,aAAA,sBAAA;AAEA,QAAa,OAAb,cAA0B,WAAA,YAAW;MAArC,cAAA;;AACE,aAAA,cAA0C,IAAI,eAAe,YAAY,KAAK,OAAO;MACvF;;AAFA,YAAA,OAAA;AAIA,KAAA,SAAiBC,OAAI;AACL,MAAAA,MAAA,cAAc,eAAe;IAC7C,GAFiB,OAAA,QAAA,SAAA,QAAA,OAAI,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNrB,QAAA,aAAA;AACA,QAAA,SAAA;AACA,QAAA,WAAA,aAAA,gBAAA;AACA,QAAA,eAAA;AAEA,QAAa,QAAb,cAA2B,WAAA,YAAW;;;;MAIpC,SACE,UACA,WACA,QACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,IAAI,YAAY,QAAQ,aAAa,SAAS,UAAU,MAAM,IAAI;UACpF,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;MAgBA,KACE,UACA,WACA,QAA8C,CAAA,GAC9C,SAA6B;AAE7B,aAAI,GAAA,OAAA,kBAAiB,KAAK,GAAG;AAC3B,iBAAO,KAAK,KAAK,UAAU,WAAW,CAAA,GAAI,KAAK;;AAEjD,eAAO,KAAK,QAAQ,WAAW,YAAY,QAAQ,aAAa,SAAS,UAAU,kBAAkB;UACnG;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;AA5CF,YAAA,QAAA;AA+CA,QAAa,mBAAb,cAAsC,aAAA,WAAuB;;AAA7D,YAAA,mBAAA;AA6CA,KAAA,SAAiBC,QAAK;AAEN,MAAAA,OAAA,mBAAmB,SAAS;IAE5C,GAJiB,QAAA,QAAA,UAAA,QAAA,QAAK,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjGtB,QAAA,aAAA;AACA,QAAA,SAAA;AACA,QAAA,cAAA,aAAA,kBAAA;AACA,QAAA,WAAA,aAAA,gBAAA;AACA,QAAA,eAAA;AAEA,QAAa,WAAb,cAA8B,WAAA,YAAW;MAAzC,cAAA;;AACE,aAAA,QAAwB,IAAI,SAAS,MAAM,KAAK,OAAO;MAsEzD;;;;MAjEE,OACE,UACA,MACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,KAAK,YAAY,QAAQ,aAAa;UACxD;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,SACE,UACA,WACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,IAAI,YAAY,QAAQ,aAAa,SAAS,IAAI;UACpE,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,OACE,UACA,WACA,MACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,KAAK,YAAY,QAAQ,aAAa,SAAS,IAAI;UACrE;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;MAWA,KACE,UACA,QAAiD,CAAA,GACjD,SAA6B;AAE7B,aAAI,GAAA,OAAA,kBAAiB,KAAK,GAAG;AAC3B,iBAAO,KAAK,KAAK,UAAU,CAAA,GAAI,KAAK;;AAEtC,eAAO,KAAK,QAAQ,WAAW,YAAY,QAAQ,aAAa,oBAAoB;UAClF;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;AAtEF,YAAA,WAAA;AAyEA,QAAa,qBAAb,cAAwC,aAAA,WAAyB;;AAAjE,YAAA,qBAAA;AAuPA,KAAA,SAAiBC,WAAQ;AAKT,MAAAA,UAAA,qBAAqB,YAAY;AAIjC,MAAAA,UAAA,QAAQ,SAAS;AAEjB,MAAAA,UAAA,mBAAmB,SAAS;IAE5C,GAbiB,WAAA,QAAA,aAAA,QAAA,WAAQ,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtUzB,QAAA,aAAA;AACA,QAAA,SAAA;AACA,QAAA,WAAA,aAAA,eAAA;AACA,QAAA,eAAA;AAEA,QAAa,QAAb,cAA2B,WAAA,YAAW;;;;MAIpC,SACE,UACA,OACA,QACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,IAAI,YAAY,QAAQ,SAAS,KAAK,UAAU,MAAM,IAAI;UAC5E,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;MAgBA,KACE,UACA,OACA,QAA8C,CAAA,GAC9C,SAA6B;AAE7B,aAAI,GAAA,OAAA,kBAAiB,KAAK,GAAG;AAC3B,iBAAO,KAAK,KAAK,UAAU,OAAO,CAAA,GAAI,KAAK;;AAE7C,eAAO,KAAK,QAAQ,WAAW,YAAY,QAAQ,SAAS,KAAK,UAAU,cAAc;UACvF;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;AA5CF,YAAA,QAAA;AA+CA,QAAa,eAAb,cAAkC,aAAA,WAAmB;;AAArD,YAAA,eAAA;AAuUA,KAAA,SAAiBC,QAAK;AAON,MAAAA,OAAA,eAAe,SAAS;IAExC,GATiB,QAAA,QAAA,UAAA,QAAA,QAAK,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3XtB,QAAA,aAAA;AACA,QAAA,SAAA;AACA,QAAA,UAAA,aAAA,cAAA;AAEA,QAAA,WAAA,aAAA,eAAA;AACA,QAAA,eAAA;AAEA,QAAa,OAAb,cAA0B,WAAA,YAAW;MAArC,cAAA;;AACE,aAAA,QAAwB,IAAI,SAAS,MAAM,KAAK,OAAO;MA2FzD;;;;MAtFE,OAAO,UAAkB,MAAuB,SAA6B;AAC3E,eAAO,KAAK,QAAQ,KAAK,YAAY,QAAQ,SAAS;UACpD;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,SAAS,UAAkB,OAAe,SAA6B;AACrE,eAAO,KAAK,QAAQ,IAAI,YAAY,QAAQ,SAAS,KAAK,IAAI;UAC5D,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,OACE,UACA,OACA,MACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,KAAK,YAAY,QAAQ,SAAS,KAAK,IAAI;UAC7D;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;MAWA,KACE,UACA,QAA6C,CAAA,GAC7C,SAA6B;AAE7B,aAAI,GAAA,OAAA,kBAAiB,KAAK,GAAG;AAC3B,iBAAO,KAAK,KAAK,UAAU,CAAA,GAAI,KAAK;;AAEtC,eAAO,KAAK,QAAQ,WAAW,YAAY,QAAQ,SAAS,UAAU;UACpE;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,OAAO,UAAkB,OAAe,SAA6B;AACnE,eAAO,KAAK,QAAQ,KAAK,YAAY,QAAQ,SAAS,KAAK,WAAW;UACpE,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;;;;MAQA,kBACE,UACA,OACA,MACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,KAAK,YAAY,QAAQ,SAAS,KAAK,wBAAwB;UACjF;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;AA3FF,YAAA,OAAA;AA8FA,QAAa,WAAb,cAA8B,aAAA,WAAe;;AAA7C,YAAA,WAAA;AAoYA,KAAA,SAAiBC,OAAI;AAIL,MAAAA,MAAA,WAAW,QAAQ;AAKnB,MAAAA,MAAA,QAAQ,SAAS;AAOjB,MAAAA,MAAA,eAAe,SAAS;IAExC,GAlBiB,OAAA,QAAA,SAAA,QAAA,OAAI,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzerB,QAAA,aAAA;AACA,QAAA,SAAA;AAGA,QAAA,cAAA,aAAA,kBAAA;AACA,QAAA,UAAA,aAAA,cAAA;AAEA,QAAa,UAAb,cAA6B,WAAA,YAAW;MAAxC,cAAA;;AACE,aAAA,OAAqB,IAAI,QAAQ,KAAK,KAAK,OAAO;AAClD,aAAA,WAAiC,IAAI,YAAY,SAAS,KAAK,OAAO;MA8DxE;MAvDE,OACE,OAAiD,CAAA,GACjD,SAA6B;AAE7B,aAAI,GAAA,OAAA,kBAAiB,IAAI,GAAG;AAC1B,iBAAO,KAAK,OAAO,CAAA,GAAI,IAAI;;AAE7B,eAAO,KAAK,QAAQ,KAAK,YAAY;UACnC;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,SAAS,UAAkB,SAA6B;AACtD,eAAO,KAAK,QAAQ,IAAI,YAAY,QAAQ,IAAI;UAC9C,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,OAAO,UAAkB,MAA0B,SAA6B;AAC9E,eAAO,KAAK,QAAQ,KAAK,YAAY,QAAQ,IAAI;UAC/C;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,IAAI,UAAkB,SAA6B;AACjD,eAAO,KAAK,QAAQ,OAAO,YAAY,QAAQ,IAAI;UACjD,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;;;MAKA,aAAa,MAAgC,SAA6B;AACxE,eAAO,KAAK,QAAQ,KAAK,iBAAiB;UACxC;UACA,GAAG;UACH,SAAS,EAAE,eAAe,iBAAiB,GAAG,mCAAS,QAAO;SAC/D;MACH;;AA/DF,YAAA,UAAA;AAyRA,KAAA,SAAiBC,UAAO;AAMR,MAAAA,SAAA,OAAO,QAAQ;AAIf,MAAAA,SAAA,WAAW,QAAQ;AAKnB,MAAAA,SAAA,WAAW,YAAY;AAKvB,MAAAA,SAAA,qBAAqB,YAAY;IAIjD,GAxBiB,UAAA,QAAA,YAAA,QAAA,UAAO,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjSxB,QAAA,aAAA;AACA,QAAA,gBAAA,aAAA,oBAAA;AACA,QAAA,UAAA,aAAA,eAAA;AACA,QAAA,aAAA,aAAA,iBAAA;AAEA,QAAa,OAAb,cAA0B,WAAA,YAAW;MAArC,cAAA;;AACE,aAAA,OAAqB,IAAI,QAAQ,KAAK,KAAK,OAAO;AAClD,aAAA,aAAuC,IAAI,cAAc,WAAW,KAAK,OAAO;AAChF,aAAA,UAA8B,IAAI,WAAW,QAAQ,KAAK,OAAO;MACnE;;AAJA,YAAA,OAAA;AAMA,KAAA,SAAiBC,OAAI;AACL,MAAAA,MAAA,OAAO,QAAQ;AACf,MAAAA,MAAA,aAAa,cAAc;AAG3B,MAAAA,MAAA,iBAAiB,cAAc;AAI/B,MAAAA,MAAA,UAAU,WAAW;IAMrC,GAfiB,OAAA,QAAA,SAAA,QAAA,OAAI,CAAA,EAAA;;;;;;;;;;ACTrB,QAAA,aAAA;AAIA,QAAa,cAAb,cAAiC,WAAA,YAAW;MAa1C,OACE,MACA,SAA6B;;AAE7B,eAAO,KAAK,QAAQ,KAAK,gBAAgB,EAAE,MAAM,GAAG,SAAS,SAAQ,UAAK,WAAL,YAAe,MAAK,CAAE;MAG7F;;AApBF,YAAA,cAAA;AAiTA,IAAA,0BAAiBC,cAAW;IAO5B,GAPiB,cAAA,QAAA,gBAAA,QAAA,cAAW,CAAA,EAAA;;;;;;;;;;ACtT5B,QAAA,aAAA;AAGA,QAAa,aAAb,cAAgC,WAAA,YAAW;;;;MAIzC,OACE,MACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,KAAK,eAAe,EAAE,MAAM,GAAG,QAAO,CAAE;MAC9D;;AATF,YAAA,aAAA;AAkHA,IAAA,0BAAiBC,aAAU;IAI3B,GAJiB,aAAA,QAAA,eAAA,QAAA,aAAU,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrH3B,QAAA,aAAA;AACA,QAAA,SAAA;AAEA,QAAA,SAAA;AACA,QAAA,UAAA;AACA,QAAA,WAAA,aAAA,gBAAA;AACA,QAAA,SAAA;AACA,QAAA,eAAA;AAEA,QAAa,QAAb,cAA2B,WAAA,YAAW;;;;;;;;;;;;;;MAcpC,OAAO,MAAwB,SAA6B;AAC1D,eAAO,KAAK,QAAQ,KAAK,WAAU,GAAA,OAAA,6BAA4B,EAAE,MAAM,GAAG,QAAO,CAAE,CAAC;MACtF;;;;MAKA,SAAS,QAAgB,SAA6B;AACpD,eAAO,KAAK,QAAQ,IAAI,UAAU,MAAM,IAAI,OAAO;MACrD;MAOA,KACE,QAA8C,CAAA,GAC9C,SAA6B;AAE7B,aAAI,GAAA,OAAA,kBAAiB,KAAK,GAAG;AAC3B,iBAAO,KAAK,KAAK,CAAA,GAAI,KAAK;;AAE5B,eAAO,KAAK,QAAQ,WAAW,UAAU,iBAAiB,EAAE,OAAO,GAAG,QAAO,CAAE;MACjF;;;;MAKA,IAAI,QAAgB,SAA6B;AAC/C,eAAO,KAAK,QAAQ,OAAO,UAAU,MAAM,IAAI,OAAO;MACxD;;;;MAKA,QAAQ,QAAgB,SAA6B;AACnD,eAAO,KAAK,QAAQ,IAAI,UAAU,MAAM,YAAY,EAAE,GAAG,SAAS,kBAAkB,KAAI,CAAE;MAC5F;;;;;;MAOA,gBAAgB,QAAgB,SAA6B;AAC3D,eAAO,KAAK,QAAQ,IAAI,UAAU,MAAM,YAAY;UAClD,GAAG;UACH,SAAS,EAAE,QAAQ,oBAAoB,GAAG,mCAAS,QAAO;SAC3D;MACH;;;;MAKA,MAAM,kBACJ,IACA,EAAE,eAAe,KAAM,UAAU,KAAK,KAAK,IAAI,IAAkD,CAAA,GAAE;AAEnG,cAAM,kBAAkB,oBAAI,IAAI,CAAC,aAAa,SAAS,SAAS,CAAC;AAEjE,cAAM,QAAQ,KAAK,IAAG;AACtB,YAAI,OAAO,MAAM,KAAK,SAAS,EAAE;AAEjC,eAAO,CAAC,KAAK,UAAU,CAAC,gBAAgB,IAAI,KAAK,MAAM,GAAG;AACxD,iBAAM,GAAA,OAAA,OAAM,YAAY;AAExB,iBAAO,MAAM,KAAK,SAAS,EAAE;AAC7B,cAAI,KAAK,IAAG,IAAK,QAAQ,SAAS;AAChC,kBAAM,IAAI,QAAA,0BAA0B;cAClC,SAAS,iCAAiC,EAAE,+BAA+B,OAAO;aACnF;;;AAIL,eAAO;MACT;;AA1FF,YAAA,QAAA;AAgGA,QAAa,kBAAb,cAAqC,aAAA,KAAgB;;AAArD,YAAA,kBAAA;AAsFA,KAAA,SAAiBC,QAAK;AAIN,MAAAA,OAAA,kBAAkB,SAAS;IAG3C,GAPiB,QAAA,QAAA,UAAA,QAAA,QAAK,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/LtB,QAAA,aAAA;AACA,QAAA,SAAA;AACA,QAAA,UAAA,aAAA,cAAA;AACA,QAAA,eAAA;AAEA,QAAa,OAAb,cAA0B,WAAA,YAAW;;;;;;;;;;MAUnC,OAAO,MAAuB,SAA6B;AACzD,eAAO,KAAK,QAAQ,KAAK,qBAAqB,EAAE,MAAM,GAAG,QAAO,CAAE;MACpE;;;;;;MAOA,SAAS,iBAAyB,SAA6B;AAC7D,eAAO,KAAK,QAAQ,IAAI,qBAAqB,eAAe,IAAI,OAAO;MACzE;MAUA,KACE,QAA6C,CAAA,GAC7C,SAA6B;AAE7B,aAAI,GAAA,OAAA,kBAAiB,KAAK,GAAG;AAC3B,iBAAO,KAAK,KAAK,CAAA,GAAI,KAAK;;AAE5B,eAAO,KAAK,QAAQ,WAAW,qBAAqB,oBAAoB,EAAE,OAAO,GAAG,QAAO,CAAE;MAC/F;;;;MAKA,OAAO,iBAAyB,SAA6B;AAC3D,eAAO,KAAK,QAAQ,KAAK,qBAAqB,eAAe,WAAW,OAAO;MACjF;MAcA,WACE,iBACA,QAAmD,CAAA,GACnD,SAA6B;AAE7B,aAAI,GAAA,OAAA,kBAAiB,KAAK,GAAG;AAC3B,iBAAO,KAAK,WAAW,iBAAiB,CAAA,GAAI,KAAK;;AAEnD,eAAO,KAAK,QAAQ,WAAW,qBAAqB,eAAe,WAAW,yBAAyB;UACrG;UACA,GAAG;SACJ;MACH;;AAxEF,YAAA,OAAA;AA2EA,QAAa,qBAAb,cAAwC,aAAA,WAAyB;;AAAjE,YAAA,qBAAA;AAEA,QAAa,0BAAb,cAA6C,aAAA,WAA8B;;AAA3E,YAAA,0BAAA;AAiOA,KAAA,SAAiBC,OAAI;AAGL,MAAAA,MAAA,qBAAqB,QAAQ;AAC7B,MAAAA,MAAA,0BAA0B,QAAQ;IAIlD,GARiB,OAAA,QAAA,SAAA,QAAA,OAAI,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpTrB,QAAA,aAAA;AACA,QAAA,UAAA,aAAA,cAAA;AAEA,QAAa,aAAb,cAAgC,WAAA,YAAW;MAA3C,cAAA;;AACE,aAAA,OAAqB,IAAI,QAAQ,KAAK,KAAK,OAAO;MACpD;;AAFA,YAAA,aAAA;AAIA,KAAA,SAAiBC,aAAU;AACX,MAAAA,YAAA,OAAO,QAAQ;AAGf,MAAAA,YAAA,qBAAqB,QAAQ;AAC7B,MAAAA,YAAA,0BAA0B,QAAQ;IAIlD,GATiB,aAAA,QAAA,eAAA,QAAA,aAAU,CAAA,EAAA;;;;;;;;;;ACN3B,QAAA,aAAA;AAEA,QAAA,SAAA;AAEA,QAAa,SAAb,cAA4B,WAAA,YAAW;;;;MAIrC,gBACE,MACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,KAAK,uBAAsB,GAAA,OAAA,6BAA4B,EAAE,MAAM,GAAG,QAAO,CAAE,CAAC;MAClG;;;;MAKA,KAAK,MAAuB,SAA6B;AACvD,eAAO,KAAK,QAAQ,KAAK,kBAAiB,GAAA,OAAA,6BAA4B,EAAE,MAAM,GAAG,QAAO,CAAE,CAAC;MAC7F;;;;MAKA,SAAS,MAA2B,SAA6B;AAC/D,eAAO,KAAK,QAAQ,KAAK,uBAAuB,EAAE,MAAM,GAAG,QAAO,CAAE;MACtE;;AAvBF,YAAA,SAAA;AAsMA,IAAA,0BAAiBC,SAAM;IAMvB,GANiB,SAAA,QAAA,WAAA,QAAA,SAAM,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1MvB,QAAA,aAAA;AACA,QAAA,YAAA,aAAA,gBAAA;AACA,QAAA,eAAA;AAEA,QAAa,SAAb,cAA4B,WAAA,YAAW;;;;;MAKrC,SAAS,OAAe,SAA6B;AACnD,eAAO,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,OAAO;MACrD;;;;;MAMA,KAAK,SAA6B;AAChC,eAAO,KAAK,QAAQ,WAAW,WAAW,YAAY,OAAO;MAC/D;;;;;MAMA,IAAI,OAAe,SAA6B;AAC9C,eAAO,KAAK,QAAQ,OAAO,WAAW,KAAK,IAAI,OAAO;MACxD;;AAvBF,YAAA,SAAA;AA6BA,QAAa,aAAb,cAAgC,aAAA,KAAW;;AAA3C,YAAA,aAAA;AAmCA,KAAA,SAAiBC,SAAM;AAGP,MAAAA,QAAA,aAAa,UAAU;IACvC,GAJiB,SAAA,QAAA,WAAA,QAAA,SAAM,CAAA,EAAA;;;;;;;;;;ACpEvB,QAAA,aAAA;AAGA,QAAa,cAAb,cAAiC,WAAA,YAAW;;;;MAI1C,OACE,MACA,SAA6B;AAE7B,eAAO,KAAK,QAAQ,KAAK,gBAAgB,EAAE,MAAM,GAAG,QAAO,CAAE;MAC/D;;AATF,YAAA,cAAA;AA6MA,IAAA,0BAAiBC,cAAW;IAI5B,GAJiB,cAAA,QAAA,gBAAA,QAAA,cAAW,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjN5B,iBAAA,iBAAA,OAAA;AACA,iBAAA,kBAAA,OAAA;AACA,QAAA,UAAA;AAAS,WAAA,eAAA,SAAA,SAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,QAAA;IAAK,EAAA,CAAA;AACd,QAAA,SAAA;AAAS,WAAA,eAAA,SAAA,QAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,OAAA;IAAI,EAAA,CAAA;AACb,QAAA,gBAAA;AAOE,WAAA,eAAA,SAAA,eAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,cAAA;IAAW,EAAA,CAAA;AAEb,QAAA,eAAA;AAAoE,WAAA,eAAA,SAAA,cAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,aAAA;IAAU,EAAA,CAAA;AAC9E,QAAA,UAAA;AAME,WAAA,eAAA,SAAA,mBAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,QAAA;IAAe,EAAA,CAAA;AACf,WAAA,eAAA,SAAA,SAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,QAAA;IAAK,EAAA,CAAA;AAEP,QAAA,gBAAA;AAAS,WAAA,eAAA,SAAA,cAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,cAAA;IAAU,EAAA,CAAA;AACnB,QAAA,WAAA;AAME,WAAA,eAAA,SAAA,UAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,SAAA;IAAM,EAAA,CAAA;AAER,QAAA,WAAA;AAA8B,WAAA,eAAA,SAAA,cAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,SAAA;IAAU,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,UAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,SAAA;IAAM,EAAA,CAAA;AAChD,QAAA,gBAAA;AAAuE,WAAA,eAAA,SAAA,eAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,cAAA;IAAW,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjClF,QAAA,OAAA,aAAA,cAAA;AACA,QAAA,SAAA,aAAA,eAAA;AAEA,QAAA,UAAA,aAAA,iBAAA;AACA,QAAA,aAAA,aAAA,oBAAA;AACA,QAAA,MAAA,aAAA,mBAAA;AA6EA,QAAa,SAAb,cAA4B,KAAK,UAAS;;;;;;;;;;;;;;;MAoBxC,YAAY,EACV,UAAU,KAAK,QAAQ,iBAAiB,GACxC,SAAS,KAAK,QAAQ,gBAAgB,GACtC,gBAAe,CAAAC,eAAA,KAAK,QAAQ,eAAe,MAA5B,OAAAA,MAAiC,SAChD,GAAG,KAAI,IACU,CAAA,GAAE;;AACnB,YAAI,WAAW,QAAW;AACxB,gBAAM,IAAI,OAAO,YACf,oLAAoL;;AAIxL,cAAM,UAAyB;UAC7B;UACA;UACA,GAAG;UACH,SAAS,WAAW;;AAGtB,YAAI,CAAC,QAAQ,2BAA2B,KAAK,mBAAkB,GAAI;AACjE,gBAAM,IAAI,OAAO,YACf,obAAob;;AAIxb,cAAM;UACJ,SAAS,QAAQ;UACjB,UAASA,MAAA,QAAQ,YAAR,OAAAA,MAAmB;UAC5B,WAAW,QAAQ;UACnB,YAAY,QAAQ;UACpB,OAAO,QAAQ;SAChB;AAOH,aAAA,cAA+B,IAAI,IAAI,YAAY,IAAI;AACvD,aAAA,OAAiB,IAAI,IAAI,KAAK,IAAI;AAClC,aAAA,aAA6B,IAAI,IAAI,WAAW,IAAI;AACpD,aAAA,QAAmB,IAAI,IAAI,MAAM,IAAI;AACrC,aAAA,SAAqB,IAAI,IAAI,OAAO,IAAI;AACxC,aAAA,QAAmB,IAAI,IAAI,MAAM,IAAI;AACrC,aAAA,cAA+B,IAAI,IAAI,YAAY,IAAI;AACvD,aAAA,SAAqB,IAAI,IAAI,OAAO,IAAI;AACxC,aAAA,aAA6B,IAAI,IAAI,WAAW,IAAI;AACpD,aAAA,OAAiB,IAAI,IAAI,KAAK,IAAI;AAfhC,aAAK,WAAW;AAEhB,aAAK,SAAS;AACd,aAAK,eAAe;MACtB;MAamB,eAAY;AAC7B,eAAO,KAAK,SAAS;MACvB;MAEmB,eAAe,MAA8B;AAC9D,eAAO;UACL,GAAG,MAAM,eAAe,IAAI;UAC5B,uBAAuB,KAAK;UAC5B,GAAG,KAAK,SAAS;;MAErB;MAEmB,YAAY,MAA8B;AAC3D,eAAO,EAAE,eAAe,UAAU,KAAK,MAAM,GAAE;MACjD;;AAnFF,YAAA,SAAA;;AAqFS,WAAA,SAAS;AAET,WAAA,cAAc,OAAO;AACrB,WAAA,WAAW,OAAO;AAClB,WAAA,qBAAqB,OAAO;AAC5B,WAAA,4BAA4B,OAAO;AACnC,WAAA,oBAAoB,OAAO;AAC3B,WAAA,gBAAgB,OAAO;AACvB,WAAA,gBAAgB,OAAO;AACvB,WAAA,iBAAiB,OAAO;AACxB,WAAA,kBAAkB,OAAO;AACzB,WAAA,sBAAsB,OAAO;AAC7B,WAAA,sBAAsB,OAAO;AAC7B,WAAA,wBAAwB,OAAO;AAC/B,WAAA,2BAA2B,OAAO;AAIzC,YAAA,cAaE,OAAM,aAZR,QAAA,WAYE,OAAM,UAXR,QAAA,qBAWE,OAAM,oBAVR,QAAA,4BAUE,OAAM,2BATR,QAAA,oBASE,OAAM,mBARR,QAAA,gBAQE,OAAM,eAPR,QAAA,gBAOE,OAAM,eANR,QAAA,iBAME,OAAM,gBALR,QAAA,kBAKE,OAAM,iBAJR,QAAA,sBAIE,OAAM,qBAHR,QAAA,sBAGE,OAAM,qBAFR,QAAA,wBAEE,OAAM,uBADR,QAAA,2BACE,OAAM;AAEI,YAAA,SAAS,QAAQ;AACjB,YAAA,eAAe,QAAQ;AAErC,KAAA,SAAiBC,SAAM;AAEP,MAAAA,QAAA,SAAS,QAAQ;AACjB,MAAAA,QAAA,eAAe,QAAQ;AAIvB,MAAAA,QAAA,OAAO,WAAW;AAGlB,MAAAA,QAAA,aAAa,WAAW;AAIxB,MAAAA,QAAA,cAAc,IAAI;AAQlB,MAAAA,QAAA,OAAO,IAAI;AAwBX,MAAAA,QAAA,aAAa,IAAI;AAKjB,MAAAA,QAAA,QAAQ,IAAI;AAIZ,MAAAA,QAAA,kBAAkB,IAAI;AAItB,MAAAA,QAAA,SAAS,IAAI;AAOb,MAAAA,QAAA,QAAQ,IAAI;AAEZ,MAAAA,QAAA,cAAc,IAAI;AAKlB,MAAAA,QAAA,SAAS,IAAI;AAGb,MAAAA,QAAA,aAAa,IAAI;AAEjB,MAAAA,QAAA,aAAa,IAAI;AAEjB,MAAAA,QAAA,OAAO,IAAI;IAI3B,GApFiB,SAAA,QAAA,WAAA,QAAA,SAAM,CAAA,EAAA;AAsFvB,cAAAC,QAAA,UAAsB;;;;;;ACnStB;AAAA;AAAA;AAAA;;;ACAO,IAAM,kBAAN,cAA8B,MAAM;AAAA,EACzC,YAAY,EAAE,QAAQ,GAAwB;AAC5C,UAAM,OAAO;AAEb,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,IAChB;AAAA,EACF;AACF;;;ACXO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB;AACF,GAKW;AACT,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,YAAY,aAAa;AAClC,UAAM,IAAI,gBAAgB;AAAA,MACxB,SAAS,GAAG,WAAW,2CAA2C,mBAAmB;AAAA,IACvF,CAAC;AAAA,EACH;AAEA,WAAS,QAAQ,IAAI,uBAAuB;AAE5C,MAAI,UAAU,MAAM;AAClB,UAAM,IAAI,gBAAgB;AAAA,MACxB,SAAS,GAAG,WAAW,2CAA2C,mBAAmB,sBAAsB,uBAAuB;AAAA,IACpI,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;ACvBA,eAAsB,mBAAmB;AAAA,EACvC;AAAA,EACA;AACF,GAGoB;AAClB,MAAI;AAEJ,MAAI;AAEF,aAAS;AAAA,EACX,SAAS,OAAO;AACd,QAAI;AAEF,gBAAU,MAAM,OAAO,uBAAQ,GAAG;AAAA,IACpC,SAASC,QAAO;AACd,YAAM,IAAI,MAAM,mBAAmB,MAAM,uBAAuB;AAAA,IAClE;AAAA,EACF;AAEA,SAAO,IAAI,OAAO,EAAE,QAAQ,QAAQ,CAAC;AACvC;;;AC/BA,SAAS,cAAc;;;ACAhB,SAAS,aAAa,OAA+B;AAC1D,MAAI;AAEF,WAAO,KAAK,MAAM,KAAK;AAAA,EACzB,SAAQ;AAEN,WAAO;AAAA,EACT;AACF;;;ACRA;AAAA,EACE;AAAA,OAIK;AAwRA,SAAS,0BAA6B,UAA4B;AACvE,MAAI,KAAK,SAAS,OAAO,aAAa,EAAE;AACxC,SAAO,IAAI,eAAkB;AAAA,IAC3B,MAAM,KAAK,YAAY;AACrB,YAAM,EAAE,MAAM,MAAM,IAAI,MAAM,GAAG,KAAK;AACtC,UAAI;AAAM,mBAAW,MAAM;AAAA;AACtB,mBAAW,QAAQ,KAAK;AAAA,IAC/B;AAAA,IAEA,MAAM,OAAO,QAAQ;AAtSzB;AAuSM,cAAM,QAAG,WAAH,4BAAY;AAAA,IACpB;AAAA,EACF,CAAC;AACH;;;ACpSO,SAAS,0BAA0B,OAA2B;AACnE,MAAI,eAAe;AACnB,aAAW,SAAS,OAAO;AACzB,oBAAgB,OAAO,cAAc,KAAK;AAAA,EAC5C;AACA,SAAO,WAAW,KAAK,YAAY;AACrC;;;ACRO,SAAS,4BACd,QACmC;AACnC,QAAM,WAA8C,CAAC;AAErD,aAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AACtC,YAAQ,MAAM;AAAA,MACZ,KAAK,UAAU;AACb,iBAAS,KAAK,EAAE,MAAM,UAAU,QAAQ,CAAC;AACzC;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS,QAAQ,IAAI,UAAQ;AAnBvC;AAoBY,oBAAQ,KAAK,MAAM;AAAA,cACjB,KAAK,QAAQ;AACX,uBAAO,EAAE,MAAM,QAAQ,MAAM,KAAK,KAAK;AAAA,cACzC;AAAA,cACA,KAAK,SAAS;AACZ,uBAAO;AAAA,kBACL,MAAM;AAAA,kBACN,WAAW;AAAA,oBACT,KAAK,SACH,UAAK,aAAL,YAAiB,YACnB,WAAW,0BAA0B,KAAK,KAAK,CAAC;AAAA,kBAClD;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AACD;AAAA,MACF;AAAA,MAEA,KAAK,aAAa;AAChB,YAAI,OAAO;AACX,cAAM,YAID,CAAC;AAEN,mBAAW,QAAQ,SAAS;AAC1B,kBAAQ,KAAK,MAAM;AAAA,YACjB,KAAK,QAAQ;AACX,sBAAQ,KAAK;AACb;AAAA,YACF;AAAA,YACA,KAAK,aAAa;AAChB,wBAAU,KAAK;AAAA,gBACb,IAAI,KAAK;AAAA,gBACT,MAAM;AAAA,gBACN,UAAU;AAAA,kBACR,MAAM,KAAK;AAAA,kBACX,WAAW,KAAK,UAAU,KAAK,IAAI;AAAA,gBACrC;AAAA,cACF,CAAC;AACD;AAAA,YACF;AAAA,YACA,SAAS;AACP,oBAAM,mBAA0B;AAChC,oBAAM,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AAAA,YACzD;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,YAAY,UAAU,SAAS,IAAI,YAAY;AAAA,QACjD,CAAC;AAED;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,mBAAW,gBAAgB,SAAS;AAClC,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,cAAc,aAAa;AAAA,YAC3B,SAAS,KAAK,UAAU,aAAa,MAAM;AAAA,UAC7C,CAAC;AAAA,QACH;AACA;AAAA,MACF;AAAA,MAEA,SAAS;AACP,cAAM,mBAA0B;AAChC,cAAM,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;AJzFO,IAAM,0BAAN,MAAiE;AAAA,EAatE,YACE,UACA,QAMA;AAlBF,SAAS,8BAA8B;AAmBrC,SAAK,WAAW;AAChB,SAAK,YAAY,OAAO;AACxB,SAAK,cAAc,OAAO;AAAA,EAC5B;AAAA,EAEA,IAAY,aAAa;AACvB,WAAO,KAAK,YAAY,KAAK,QAAQ;AAAA,EACvC;AAAA,EAUQ,QACN;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GACA,QAGsC;AAhE1C;AAiEI,UAAM,OAAO,KAAK;AAClB,UAAM,WAAW,4BAA4B,MAAM;AAGnD,UAAM,uBAAuB;AAAA,MAC3B,YAAY;AAAA,MACZ;AAAA,MACA,OAAO;AAAA,MACP,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB;AAAA,IACF;AAEA,YAAQ,MAAM;AAAA,MACZ,KAAK,WAAW;AAEd,cAAM,UAAQ,UAAK,UAAL,mBAAY,UAAS,KAAK,QAAQ;AAEhD,eAAO;AAAA,UACL;AAAA,UACA,GAAG,KAAK;AAAA,UACR,GAAG;AAAA,UACH;AAAA,UACA,OAAO,+BAAO,IAAI,WAAS;AAAA,YACzB,MAAM;AAAA,YACN,UAAU;AAAA,cACR,MAAM,KAAK;AAAA,cACX,aAAa,KAAK;AAAA,cAClB,YAAY,KAAK;AAAA,YACnB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,KAAK,eAAe;AAClB,eAAO;AAAA,UACL;AAAA,UACA,GAAG,KAAK;AAAA,UACR,GAAG;AAAA,UACH,iBAAiB,EAAE,MAAM,cAAc;AAAA,UACvC;AAAA,QACF;AAAA,MACF;AAAA,MAEA,KAAK,eAAe;AAClB,eAAO;AAAA,UACL;AAAA,UACA,GAAG,KAAK;AAAA,UACR,GAAG;AAAA,UACH,aAAa,EAAE,MAAM,YAAY,UAAU,EAAE,MAAM,KAAK,KAAK,KAAK,EAAE;AAAA,UACpE,OAAO,CAAC,EAAE,MAAM,YAAY,UAAU,KAAK,KAAK,CAAC;AAAA,UACjD;AAAA,QACF;AAAA,MACF;AAAA,MAEA,KAAK,kBAAkB;AACrB,cAAM,IAAI,MAAM,+CAA+C;AAAA,MACjE;AAAA,MAEA,SAAS;AACP,cAAM,mBAA0B;AAChC,cAAM,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,WACJ,SAC2D;AArI/D;AAsII,UAAM,SAAS,MAAM,KAAK,UAAU;AAEpC,UAAM,aAAa,MAAM,OAAO,KAAK,YAAY;AAAA,MAC/C,KAAK,QAAQ,SAAS,KAAK;AAAA,IAC7B;AAEA,UAAM,UAAU,WAAW,QAAQ,CAAC,EAAE;AAEtC,WAAO;AAAA,MACL,OAAM,aAAQ,YAAR,YAAmB;AAAA,MACzB,YAAW,aAAQ,eAAR,mBAAoB,IAAI,eAAa;AAAA,QAC9C,YAAY,SAAS;AAAA,QACrB,UAAU,SAAS,SAAS;AAAA,QAC5B,MAAM,SAAS,SAAS;AAAA,MAC1B;AAAA,MACA,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,SACyD;AACzD,UAAM,SAAS,MAAM,KAAK,UAAU;AAEpC,UAAM,WAAW,MAAM,OAAO,KAAK,YAAY;AAAA,MAC7C,KAAK,QAAQ,SAAS,IAAI;AAAA,IAC5B;AAEA,UAAM,YAOD,CAAC;AAEN,WAAO;AAAA,MACL,UAAU,CAAC;AAAA,MACX,QAAQ,0BAA0B,QAAQ,EAAE;AAAA,QAC1C,IAAI,gBAGF;AAAA,UACA,UAAU,OAAO,YAAY;AAlLvC;AAmLY,kBAAI,WAAM,YAAN,mBAAgB,GAAG,UAAS,MAAM;AACpC;AAAA,YACF;AAEA,kBAAM,QAAQ,MAAM,QAAQ,CAAC,EAAE;AAE/B,gBAAI,MAAM,WAAW,MAAM;AACzB,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,WAAW,MAAM;AAAA,cACnB,CAAC;AAAA,YACH;AAEA,gBAAI,MAAM,cAAc,MAAM;AAC5B,yBAAW,iBAAiB,MAAM,YAAY;AAC5C,sBAAM,QAAQ,cAAc;AAG5B,oBAAI,UAAU,KAAK,KAAK,MAAM;AAC5B,4BAAU,KAAK,IAAI;AACnB;AAAA,gBACF;AAGA,sBAAM,WAAW,UAAU,KAAK;AAEhC,sBAAI,mBAAc,aAAd,mBAAwB,cAAa,MAAM;AAC7C,2BAAS,SAAU,cACjB,yBAAc,aAAd,mBAAwB,cAAxB,YAAqC;AAAA,gBACzC;AAGA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,aAAY,cAAS,OAAT,YAAe;AAAA;AAAA,kBAC3B,WAAU,oBAAS,aAAT,mBAAmB,SAAnB,YAA2B;AAAA;AAAA,kBACrC,gBAAe,yBAAc,aAAd,mBAAwB,cAAxB,YAAqC;AAAA;AAAA,gBACtD,CAAC;AAGD,sBACE,cAAS,aAAT,mBAAmB,SAAQ,UAC3B,cAAS,aAAT,mBAAmB,cAAa,QAChC,aAAa,SAAS,SAAS,SAAS,KAAK,MAC7C;AACA;AAAA,gBACF;AAEA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,aAAY,cAAS,OAAT,YAAe,OAAO;AAAA,kBAClC,UAAU,SAAS,SAAS;AAAA,kBAC5B,MAAM,SAAS,SAAS;AAAA,gBAC1B,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;;;AJ1OO,SAAS,KACd,UAIA;AACA,QAAM,EAAE,QAAQ,QAAQ,GAAG,kBAAkB,IAAI;AACjD,SAAO,IAAI;AAAA,IACT,EAAE,GAAG,kBAAkB;AAAA,IACvB;AAAA,MACE,QAAQ,YAAY;AAClB,YAAI,QAAQ;AACV,iBAAO;AAAA,QACT;AAEA,eAAO,mBAAmB;AAAA,UACxB,QAAQ,WAAW;AAAA,YACjB;AAAA,YACA,yBAAyB;AAAA,YACzB,aAAa;AAAA,UACf,CAAC;AAAA,UACD,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,MAEA,aAAa,CAAAC,eAAa;AAAA,QACxB,OAAOA,UAAS;AAAA,QAChB,qBAAqBA,UAAS;AAAA,QAC9B,OAAOA,UAAS;AAAA,QAChB,kCACEA,UAAS;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;;;ASxCA;AAAA;AAAA,cAAAC;AAAA;;;ACAO,IAAM,gCAAN,cAA4C,MAAM;AAAA,EAIvD,YAAY;AAAA,IACV;AAAA,IACA;AAAA,EACF,GAGG;AACD;AAAA,MACE,0DACe,QAAQ;AAAA,iBACH,aAAa;AAAA,IACnC;AAEA,SAAK,OAAO;AAEZ,SAAK,WAAW;AAChB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MAEZ,UAAU,KAAK;AAAA,MACf,eAAe,KAAK;AAAA,IACtB;AAAA,EACF;AACF;;;ACtBO,SAAS,2BACd,QAC2B;AAC3B,QAAM,WAAsC,CAAC;AAE7C,aAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AACtC,YAAQ,MAAM;AAAA,MACZ,KAAK,UAAU;AACb,iBAAS,KAAK,EAAE,MAAM,UAAU,QAAQ,CAAC;AACzC;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS,QACN,IAAI,UAAQ;AACX,oBAAQ,KAAK,MAAM;AAAA,cACjB,KAAK,QAAQ;AACX,uBAAO,KAAK;AAAA,cACd;AAAA,cACA,KAAK,SAAS;AACZ,sBAAM,IAAI,8BAA8B;AAAA,kBACtC,UAAU;AAAA,kBACV,eAAe;AAAA,gBACjB,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF,CAAC,EACA,KAAK,EAAE;AAAA,QACZ,CAAC;AAED;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAChB,YAAI,OAAO;AACX,cAAM,YAID,CAAC;AAEN,mBAAW,QAAQ,SAAS;AAC1B,kBAAQ,KAAK,MAAM;AAAA,YACjB,KAAK,QAAQ;AACX,sBAAQ,KAAK;AACb;AAAA,YACF;AAAA,YACA,KAAK,aAAa;AAChB,wBAAU,KAAK;AAAA,gBACb,IAAI,KAAK;AAAA,gBACT,MAAM;AAAA,gBACN,UAAU;AAAA,kBACR,MAAM,KAAK;AAAA,kBACX,WAAW,KAAK,UAAU,KAAK,IAAI;AAAA,gBACrC;AAAA,cACF,CAAC;AACD;AAAA,YACF;AAAA,YACA,SAAS;AACP,oBAAM,mBAA0B;AAChC,oBAAM,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AAAA,YACzD;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,YACE,UAAU,SAAS,IACf,UAAU,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,WAAW,KAAK,EAAE,OAAO;AAAA,YAC1D,IAAI;AAAA,YACJ,MAAM;AAAA,YACN,UAAU,EAAE,MAAM,WAAW,KAAK;AAAA,UACpC,EAAE,IACF;AAAA,QACR,CAAC;AAED;AAAA,MACF;AAAA,MACA,KAAK,QAAQ;AACX,mBAAW,gBAAgB,SAAS;AAClC,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,MAAM,aAAa;AAAA,YACnB,SAAS,KAAK,UAAU,aAAa,MAAM;AAAA,UAC7C,CAAC;AAAA,QACH;AACA;AAAA,MACF;AAAA,MACA,SAAS;AACP,cAAM,mBAA0B;AAChC,cAAM,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;ACnGO,IAAM,2BAAN,MAAwD;AAAA,EAO7D,YACE,UACA,QAGA;AATF,SAAS,8BAA8B;AAUrC,SAAK,WAAW;AAChB,SAAK,YAAY,OAAO;AAAA,EAC1B;AAAA,EAEA,IAAY,aAAa;AACvB,WAAO;AAAA,MACL,OAAO,KAAK,SAAS;AAAA,MACrB,YAAY,KAAK,SAAS;AAAA,IAC5B;AAAA,EACF;AAAA,EAEQ,QAAQ;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAGE;AA/CJ;AAgDI,UAAM,OAAO,KAAK;AAClB,UAAM,WAAW,2BAA2B,MAAM;AAElD,UAAM,WAAyC,CAAC;AAEhD,QAAI,oBAAoB,MAAM;AAC5B,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QAAI,mBAAmB,MAAM;AAC3B,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAGA,UAAM,uBAAuB;AAAA,MAC3B;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IACd;AAEA,YAAQ,MAAM;AAAA,MACZ,KAAK,WAAW;AACd,eAAO;AAAA,UACL,MAAM;AAAA,YACJ,GAAG,KAAK;AAAA,YACR,GAAG;AAAA,YACH;AAAA;AAAA,UAEF;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MAEA,KAAK,eAAe;AAClB,eAAO;AAAA,UACL,MAAM;AAAA,YACJ,GAAG,KAAK;AAAA,YACR,GAAG;AAAA,YACH,gBAAgB,EAAE,MAAM,cAAc;AAAA,YACtC;AAAA,UACF;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MAEA,KAAK,eAAe;AAClB,eAAO;AAAA,UACL,MAAM;AAAA,YACJ,GAAG,KAAK;AAAA,YACR,GAAG;AAAA,YACH,YAAY;AAAA,YACZ,OAAO;AAAA,cACL;AAAA,gBACE,MAAM;AAAA,gBACN,UAAU;AAAA,kBACR,MAAM,KAAK,KAAK;AAAA,kBAChB,cAAa,UAAK,KAAK,gBAAV,YAAyB;AAAA,kBACtC,YAAY,KAAK,KAAK;AAAA,gBACxB;AAAA,cACF;AAAA,YACF;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MAEA,KAAK,kBAAkB;AACrB,cAAM,IAAI,MAAM,uCAAuC;AAAA,MACzD;AAAA,MAEA,SAAS;AACP,cAAM,mBAA0B;AAChC,cAAM,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,WACJ,SAC2D;AAvI/D;AAwII,UAAM,SAAS,MAAM,KAAK,UAAU;AACpC,UAAM,EAAE,MAAM,SAAS,IAAI,KAAK,QAAQ,OAAO;AAC/C,UAAM,iBAAiB,MAAM,OAAO,KAAK,IAAI;AAG7C,UAAM,UAAU,eAAe,QAAQ,CAAC,EAAE;AAE1C,WAAO;AAAA,MACL,MAAM,QAAQ;AAAA,MACd,YAAW,aAAQ,eAAR,mBAAoB,IAAI,CAAC,cAAmB;AAAA,QACrD,YAAY,SAAS;AAAA,QACrB,UAAU,SAAS,SAAS;AAAA,QAC5B,MAAM,SAAS,SAAS;AAAA,MAC1B;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,SACyD;AACzD,UAAM,SAAS,MAAM,KAAK,UAAU;AACpC,UAAM,EAAE,MAAM,SAAS,IAAI,KAAK,QAAQ,OAAO;AAC/C,UAAM,WAAW,OAAO,WAAW,IAAI;AAEvC,WAAO;AAAA,MACL;AAAA,MACA,QAAQ,0BAA0B,QAAQ,EAAE;AAAA,QAC1C,IAAI,gBAGF;AAAA,UACA,UAAU,OAAO,YAAY;AAxKvC;AAyKY,kBAAI,WAAM,YAAN,mBAAgB,GAAG,UAAS,MAAM;AACpC;AAAA,YACF;AAEA,kBAAM,QAAQ,MAAM,QAAQ,CAAC,EAAE;AAE/B,gBAAI,MAAM,WAAW,MAAM;AACzB,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,WAAW,MAAM;AAAA,cACnB,CAAC;AAAA,YACH;AAIA,gBAAI,QAAQ,KAAK,SAAS,iBAAiB,MAAM,WAAW,MAAM;AAChE,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,aAAY,uBAAM,eAAN,mBAAmB,OAAnB,mBAAuB,OAAvB,YAA6B;AAAA;AAAA,gBACzC,WAAU,uBAAM,eAAN,mBAAmB,OAAnB,mBAAuB,SAAS,SAAhC,YAAwC;AAAA;AAAA,gBAClD,eAAe,MAAM;AAAA,cACvB,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;;;AC5LA,eAAsB,oBAAoB;AAAA,EACxC;AACF,GAE2B;AACzB,MAAI;AAEJ,MAAI;AAEF,oBAAgB,8CAAgC;AAAA,EAClD,SAAS,OAAO;AACd,QAAI;AAEF,uBAAiB,MAAM,OAAO,uBAAsB,GAAG;AAAA,IACzD,SAASC,QAAO;AACd,YAAM,IAAI,MAAM,mBAAmB,MAAM,uBAAuB;AAAA,IAClE;AAAA,EACF;AAEA,SAAO,IAAI,cAAc,MAAM;AACjC;;;AJvBO,SAASC,MACd,UAIA;AACA,QAAM,EAAE,QAAQ,QAAQ,GAAG,kBAAkB,IAAI;AACjD,SAAO,IAAI;AAAA,IACT,EAAE,GAAG,kBAAkB;AAAA,IACvB;AAAA,MACE,QAAQ,YAAY;AAClB,YAAI,QAAQ;AACV,iBAAO;AAAA,QACT;AAEA,eAAO,oBAAoB;AAAA,UACzB,QAAQ,WAAW;AAAA,YACjB;AAAA,YACA,yBAAyB;AAAA,YACzB,aAAa;AAAA,UACf,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;;;AK/BA;AAAA;AAAA,cAAAC;AAAA;AAMO,SAASC,MACd,UAIA;AACA,QAAM,EAAE,QAAQ,QAAQ,GAAG,kBAAkB,IAAI;AACjD,SAAO,IAAI;AAAA,IACT,EAAE,GAAG,kBAAkB;AAAA,IACvB;AAAA,MACE,QAAQ,YAAY;AAClB,YAAI,QAAQ;AACV,iBAAO;AAAA,QACT;AAEA,eAAO,mBAAmB;AAAA,UACxB,QAAQ,WAAW;AAAA,YACjB;AAAA,YACA,yBAAyB;AAAA,YACzB,aAAa;AAAA,UACf,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,MAEA,aAAa,CAAAC,eAAa;AAAA,QACxB,OAAOA,UAAS;AAAA,QAChB,YAAYA,UAAS;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACF;;;ACpCA;AAAA;AAAA,cAAAC;AAAA;AAMO,SAASC,MACd,UAIA;AACA,QAAM,EAAE,QAAQ,QAAQ,GAAG,kBAAkB,IAAI;AACjD,SAAO,IAAI;AAAA,IACT,EAAE,GAAG,kBAAkB;AAAA,IACvB;AAAA,MACE,QAAQ,YAAY;AAClB,YAAI,QAAQ;AACV,iBAAO;AAAA,QACT;AAEA,eAAO,mBAAmB;AAAA,UACxB,QAAQ,WAAW;AAAA,YACjB;AAAA,YACA,yBAAyB;AAAA,YACzB,aAAa;AAAA,UACf,CAAC;AAAA,UACD,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,MAEA,aAAa,CAAAC,eAAa;AAAA,QACxB,OAAOA,UAAS;AAAA,QAChB,OAAOA,UAAS;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACF;","names":["module","e","t","r","o","n","a","i","l","s","u","p","S","w","v","R","T","q","C","P","E","W","O","k","B","L","z","A","j","F","f","b","_","m","y","g","c","d","ReadableStream","TransformStream","_FormData_setEntry","exports","require_isFunction","_FormDataEncoder_getFieldHeader","require_cjs","exports","require_isPlainObject","exports","self","opts","retryMessage","Completions","Chat","Speech","Transcriptions","Translations","Audio","Files","Assistants","content","_AbstractChatCompletionRunner_getFinalMessage","_AbstractChatCompletionRunner_getFinalFunctionCall","_AbstractChatCompletionRunner_getFinalFunctionCallResult","_AbstractChatCompletionRunner_calculateTotalUsage","_AbstractChatCompletionRunner_validateParams","_AbstractChatCompletionRunner_stringifyFunctionCallResult","_ChatCompletionStream_beginRequest","_ChatCompletionStream_addChunk","_ChatCompletionStream_endRequest","_ChatCompletionStream_accumulateChatCompletion","content","rest","_a","_b","index","_c","chunk","id","Chat","Files","Messages","Steps","Runs","Threads","Beta","Completions","Embeddings","Files","Jobs","FineTuning","Images","Models","Moderations","_a","OpenAI","module","error","settings","chat","error","chat","chat","chat","settings","chat","chat","settings"]}
|