{"version":3,"file":"wasm-engine.cjs","sources":["../src/qsplib/public/qsp-engine.js","../src/lib/qsp-engine.ts"],"sourcesContent":["async function createQspModule(moduleArg = {}) {\n  var moduleRtn;\n  var Module = moduleArg;\n  var ENVIRONMENT_IS_WEB = !!globalThis.window;\n  var ENVIRONMENT_IS_WORKER = !!globalThis.WorkerGlobalScope;\n  var ENVIRONMENT_IS_NODE =\n    globalThis.process?.versions?.node && globalThis.process?.type != 'renderer';\n  if (ENVIRONMENT_IS_NODE) {\n    const { createRequire } = await import('node:module');\n    var require = createRequire(import.meta.url);\n  }\n  var arguments_ = [];\n  var thisProgram = './this.program';\n  var quit_ = (status, toThrow) => {\n    throw toThrow;\n  };\n  var _scriptName = import.meta.url;\n  var scriptDirectory = '';\n  function locateFile(path) {\n    if (Module['locateFile']) {\n      return Module['locateFile'](path, scriptDirectory);\n    }\n    return scriptDirectory + path;\n  }\n  var readAsync, readBinary;\n  if (ENVIRONMENT_IS_NODE) {\n    var fs = require('node:fs');\n    if (_scriptName.startsWith('file:')) {\n      scriptDirectory =\n        require('node:path').dirname(require('node:url').fileURLToPath(_scriptName)) + '/';\n    }\n    readBinary = (filename) => {\n      filename = isFileURI(filename) ? new URL(filename) : filename;\n      var ret = fs.readFileSync(filename);\n      return ret;\n    };\n    readAsync = async (filename, binary = true) => {\n      filename = isFileURI(filename) ? new URL(filename) : filename;\n      var ret = fs.readFileSync(filename, binary ? undefined : 'utf8');\n      return ret;\n    };\n    if (process.argv.length > 1) {\n      thisProgram = process.argv[1].replace(/\\\\/g, '/');\n    }\n    arguments_ = process.argv.slice(2);\n    quit_ = (status, toThrow) => {\n      process.exitCode = status;\n      throw toThrow;\n    };\n  } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n    try {\n      scriptDirectory = new URL('.', _scriptName).href;\n    } catch {}\n    {\n      if (ENVIRONMENT_IS_WORKER) {\n        readBinary = (url) => {\n          var xhr = new XMLHttpRequest();\n          xhr.open('GET', url, false);\n          xhr.responseType = 'arraybuffer';\n          xhr.send(null);\n          return new Uint8Array(xhr.response);\n        };\n      }\n      readAsync = async (url) => {\n        if (isFileURI(url)) {\n          return new Promise((resolve, reject) => {\n            var xhr = new XMLHttpRequest();\n            xhr.open('GET', url, true);\n            xhr.responseType = 'arraybuffer';\n            xhr.onload = () => {\n              if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) {\n                resolve(xhr.response);\n                return;\n              }\n              reject(xhr.status);\n            };\n            xhr.onerror = reject;\n            xhr.send(null);\n          });\n        }\n        var response = await fetch(url, { credentials: 'same-origin' });\n        if (response.ok) {\n          return response.arrayBuffer();\n        }\n        throw new Error(response.status + ' : ' + response.url);\n      };\n    }\n  } else {\n  }\n  var out = console.log.bind(console);\n  var err = console.error.bind(console);\n  var wasmBinary;\n  var ABORT = false;\n  var EXITSTATUS;\n  var isFileURI = (filename) => filename.startsWith('file://');\n  function writeStackCookie() {\n    var max = _emscripten_stack_get_end();\n    if (max == 0) {\n      max += 4;\n    }\n    HEAPU32[max >> 2] = 34821223;\n    HEAPU32[(max + 4) >> 2] = 2310721022;\n    HEAPU32[0 >> 2] = 1668509029;\n  }\n  function checkStackCookie() {\n    if (ABORT) return;\n    var max = _emscripten_stack_get_end();\n    if (max == 0) {\n      max += 4;\n    }\n    var cookie1 = HEAPU32[max >> 2];\n    var cookie2 = HEAPU32[(max + 4) >> 2];\n    if (cookie1 != 34821223 || cookie2 != 2310721022) {\n      abort(\n        `Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`,\n      );\n    }\n    if (HEAPU32[0 >> 2] != 1668509029) {\n      abort('Runtime error: The application has corrupted its heap memory area (address zero)!');\n    }\n  }\n  var readyPromiseResolve, readyPromiseReject;\n  var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n  var HEAP64, HEAPU64;\n  var runtimeInitialized = false;\n  function updateMemoryViews() {\n    var b = wasmMemory.buffer;\n    Module['HEAP8'] = HEAP8 = new Int8Array(b);\n    Module['HEAP16'] = HEAP16 = new Int16Array(b);\n    Module['HEAPU8'] = HEAPU8 = new Uint8Array(b);\n    Module['HEAPU16'] = HEAPU16 = new Uint16Array(b);\n    Module['HEAP32'] = HEAP32 = new Int32Array(b);\n    Module['HEAPU32'] = HEAPU32 = new Uint32Array(b);\n    Module['HEAPF32'] = HEAPF32 = new Float32Array(b);\n    Module['HEAPF64'] = HEAPF64 = new Float64Array(b);\n    HEAP64 = new BigInt64Array(b);\n    HEAPU64 = new BigUint64Array(b);\n  }\n  function preRun() {\n    if (Module['preRun']) {\n      if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];\n      while (Module['preRun'].length) {\n        addOnPreRun(Module['preRun'].shift());\n      }\n    }\n    callRuntimeCallbacks(onPreRuns);\n  }\n  function initRuntime() {\n    runtimeInitialized = true;\n    setStackLimits();\n    checkStackCookie();\n    wasmExports['g']();\n  }\n  function postRun() {\n    checkStackCookie();\n    if (Module['postRun']) {\n      if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];\n      while (Module['postRun'].length) {\n        addOnPostRun(Module['postRun'].shift());\n      }\n    }\n    callRuntimeCallbacks(onPostRuns);\n  }\n  function abort(what) {\n    Module['onAbort']?.(what);\n    what = 'Aborted(' + what + ')';\n    err(what);\n    ABORT = true;\n    what += '. Build with -sASSERTIONS for more info.';\n    var e = new WebAssembly.RuntimeError(what);\n    readyPromiseReject?.(e);\n    throw e;\n  }\n  var wasmBinaryFile;\n  function findWasmBinary() {\n    if (Module['locateFile']) {\n      return locateFile('qsp-engine.wasm');\n    }\n    return new URL('qsp-engine.wasm', import.meta.url).href;\n  }\n  function getBinarySync(file) {\n    if (file == wasmBinaryFile && wasmBinary) {\n      return new Uint8Array(wasmBinary);\n    }\n    if (readBinary) {\n      return readBinary(file);\n    }\n    throw 'both async and sync fetching of the wasm failed';\n  }\n  async function getWasmBinary(binaryFile) {\n    if (!wasmBinary) {\n      try {\n        var response = await readAsync(binaryFile);\n        return new Uint8Array(response);\n      } catch {}\n    }\n    return getBinarySync(binaryFile);\n  }\n  async function instantiateArrayBuffer(binaryFile, imports) {\n    try {\n      var binary = await getWasmBinary(binaryFile);\n      var instance = await WebAssembly.instantiate(binary, imports);\n      return instance;\n    } catch (reason) {\n      err(`failed to asynchronously prepare wasm: ${reason}`);\n      abort(reason);\n    }\n  }\n  async function instantiateAsync(binary, binaryFile, imports) {\n    if (!binary && !isFileURI(binaryFile) && !ENVIRONMENT_IS_NODE) {\n      try {\n        var response = fetch(binaryFile, { credentials: 'same-origin' });\n        var instantiationResult = await WebAssembly.instantiateStreaming(response, imports);\n        return instantiationResult;\n      } catch (reason) {\n        err(`wasm streaming compile failed: ${reason}`);\n        err('falling back to ArrayBuffer instantiation');\n      }\n    }\n    return instantiateArrayBuffer(binaryFile, imports);\n  }\n  function getWasmImports() {\n    var imports = { a: wasmImports };\n    return imports;\n  }\n  async function createWasm() {\n    function receiveInstance(instance, module) {\n      wasmExports = instance.exports;\n      wasmExports = Asyncify.instrumentWasmExports(wasmExports);\n      assignWasmExports(wasmExports);\n      updateMemoryViews();\n      return wasmExports;\n    }\n    function receiveInstantiationResult(result) {\n      return receiveInstance(result['instance']);\n    }\n    var info = getWasmImports();\n    if (Module['instantiateWasm']) {\n      return new Promise((resolve, reject) => {\n        Module['instantiateWasm'](info, (inst, mod) => {\n          resolve(receiveInstance(inst, mod));\n        });\n      });\n    }\n    wasmBinaryFile ??= findWasmBinary();\n    var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info);\n    var exports = receiveInstantiationResult(result);\n    return exports;\n  }\n  class ExitStatus {\n    name = 'ExitStatus';\n    constructor(status) {\n      this.message = `Program terminated with exit(${status})`;\n      this.status = status;\n    }\n  }\n  var callRuntimeCallbacks = (callbacks) => {\n    while (callbacks.length > 0) {\n      callbacks.shift()(Module);\n    }\n  };\n  var onPostRuns = [];\n  var addOnPostRun = (cb) => onPostRuns.push(cb);\n  var onPreRuns = [];\n  var addOnPreRun = (cb) => onPreRuns.push(cb);\n  var dynCalls = {};\n  var noExitRuntime = true;\n  var ptrToString = (ptr) => {\n    ptr >>>= 0;\n    return '0x' + ptr.toString(16).padStart(8, '0');\n  };\n  var setStackLimits = () => {\n    var stackLow = _emscripten_stack_get_base();\n    var stackHigh = _emscripten_stack_get_end();\n    ___set_stack_limits(stackLow, stackHigh);\n  };\n  var ___handle_stack_overflow = (requested) => {\n    var base = _emscripten_stack_get_base();\n    var end = _emscripten_stack_get_end();\n    abort(\n      `stack overflow (Attempt to set SP to ${ptrToString(requested)}` +\n        `, with stack limits [${ptrToString(end)} - ${ptrToString(base)}` +\n        ']). If you require more stack space build with -sSTACK_SIZE=<bytes>',\n    );\n  };\n  var _emscripten_date_now = () => Date.now();\n  var getHeapMax = () => 2147483648;\n  var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;\n  var growMemory = (size) => {\n    var oldHeapSize = wasmMemory.buffer.byteLength;\n    var pages = ((size - oldHeapSize + 65535) / 65536) | 0;\n    try {\n      wasmMemory.grow(pages);\n      updateMemoryViews();\n      return 1;\n    } catch (e) {}\n  };\n  var _emscripten_resize_heap = (requestedSize) => {\n    var oldSize = HEAPU8.length;\n    requestedSize >>>= 0;\n    var maxHeapSize = getHeapMax();\n    if (requestedSize > maxHeapSize) {\n      return false;\n    }\n    for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n      var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);\n      overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n      var newSize = Math.min(\n        maxHeapSize,\n        alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536),\n      );\n      var replacement = growMemory(newSize);\n      if (replacement) {\n        return true;\n      }\n    }\n    return false;\n  };\n  var ENV = {};\n  var getExecutableName = () => thisProgram || './this.program';\n  var getEnvStrings = () => {\n    if (!getEnvStrings.strings) {\n      var lang = (globalThis.navigator?.language ?? 'C').replace('-', '_') + '.UTF-8';\n      var env = {\n        USER: 'web_user',\n        LOGNAME: 'web_user',\n        PATH: '/',\n        PWD: '/',\n        HOME: '/home/web_user',\n        LANG: lang,\n        _: getExecutableName(),\n      };\n      for (var x in ENV) {\n        if (ENV[x] === undefined) delete env[x];\n        else env[x] = ENV[x];\n      }\n      var strings = [];\n      for (var x in env) {\n        strings.push(`${x}=${env[x]}`);\n      }\n      getEnvStrings.strings = strings;\n    }\n    return getEnvStrings.strings;\n  };\n  var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n    if (!(maxBytesToWrite > 0)) return 0;\n    var startIdx = outIdx;\n    var endIdx = outIdx + maxBytesToWrite - 1;\n    for (var i = 0; i < str.length; ++i) {\n      var u = str.codePointAt(i);\n      if (u <= 127) {\n        if (outIdx >= endIdx) break;\n        heap[outIdx++] = u;\n      } else if (u <= 2047) {\n        if (outIdx + 1 >= endIdx) break;\n        heap[outIdx++] = 192 | (u >> 6);\n        heap[outIdx++] = 128 | (u & 63);\n      } else if (u <= 65535) {\n        if (outIdx + 2 >= endIdx) break;\n        heap[outIdx++] = 224 | (u >> 12);\n        heap[outIdx++] = 128 | ((u >> 6) & 63);\n        heap[outIdx++] = 128 | (u & 63);\n      } else {\n        if (outIdx + 3 >= endIdx) break;\n        heap[outIdx++] = 240 | (u >> 18);\n        heap[outIdx++] = 128 | ((u >> 12) & 63);\n        heap[outIdx++] = 128 | ((u >> 6) & 63);\n        heap[outIdx++] = 128 | (u & 63);\n        i++;\n      }\n    }\n    heap[outIdx] = 0;\n    return outIdx - startIdx;\n  };\n  var stringToUTF8 = (str, outPtr, maxBytesToWrite) =>\n    stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n  var _environ_get = (__environ, environ_buf) => {\n    var bufSize = 0;\n    var envp = 0;\n    for (var string of getEnvStrings()) {\n      var ptr = environ_buf + bufSize;\n      HEAPU32[(__environ + envp) >> 2] = ptr;\n      bufSize += stringToUTF8(string, ptr, Infinity) + 1;\n      envp += 4;\n    }\n    return 0;\n  };\n  var lengthBytesUTF8 = (str) => {\n    var len = 0;\n    for (var i = 0; i < str.length; ++i) {\n      var c = str.charCodeAt(i);\n      if (c <= 127) {\n        len++;\n      } else if (c <= 2047) {\n        len += 2;\n      } else if (c >= 55296 && c <= 57343) {\n        len += 4;\n        ++i;\n      } else {\n        len += 3;\n      }\n    }\n    return len;\n  };\n  var _environ_sizes_get = (penviron_count, penviron_buf_size) => {\n    var strings = getEnvStrings();\n    HEAPU32[penviron_count >> 2] = strings.length;\n    var bufSize = 0;\n    for (var string of strings) {\n      bufSize += lengthBytesUTF8(string) + 1;\n    }\n    HEAPU32[penviron_buf_size >> 2] = bufSize;\n    return 0;\n  };\n  var runAndAbortIfError = (func) => {\n    try {\n      return func();\n    } catch (e) {\n      abort(e);\n    }\n  };\n  var handleException = (e) => {\n    if (e instanceof ExitStatus || e == 'unwind') {\n      return EXITSTATUS;\n    }\n    checkStackCookie();\n    if (e instanceof WebAssembly.RuntimeError) {\n      if (_emscripten_stack_get_current() <= 0) {\n        err(\n          'Stack overflow detected.  You can try increasing -sSTACK_SIZE (currently set to 5242880)',\n        );\n      }\n    }\n    quit_(1, e);\n  };\n  var runtimeKeepaliveCounter = 0;\n  var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;\n  var _proc_exit = (code) => {\n    EXITSTATUS = code;\n    if (!keepRuntimeAlive()) {\n      Module['onExit']?.(code);\n      ABORT = true;\n    }\n    quit_(code, new ExitStatus(code));\n  };\n  var exitJS = (status, implicit) => {\n    EXITSTATUS = status;\n    _proc_exit(status);\n  };\n  var _exit = exitJS;\n  var maybeExit = () => {\n    if (!keepRuntimeAlive()) {\n      try {\n        _exit(EXITSTATUS);\n      } catch (e) {\n        handleException(e);\n      }\n    }\n  };\n  var callUserCallback = (func) => {\n    if (ABORT) {\n      return;\n    }\n    try {\n      return func();\n    } catch (e) {\n      handleException(e);\n    } finally {\n      maybeExit();\n    }\n  };\n  var Asyncify = {\n    instrumentWasmImports(imports) {\n      var importPattern = /^(invoke_.*|__asyncjs__.*)$/;\n      for (let [x, original] of Object.entries(imports)) {\n        if (typeof original == 'function') {\n          let isAsyncifyImport = original.isAsync || importPattern.test(x);\n        }\n      }\n    },\n    instrumentFunction(original) {\n      var wrapper = (...args) => {\n        Asyncify.exportCallStack.push(original);\n        try {\n          return original(...args);\n        } finally {\n          if (!ABORT) {\n            var top = Asyncify.exportCallStack.pop();\n            Asyncify.maybeStopUnwind();\n          }\n        }\n      };\n      Asyncify.funcWrappers.set(original, wrapper);\n      return wrapper;\n    },\n    instrumentWasmExports(exports) {\n      var ret = {};\n      for (let [x, original] of Object.entries(exports)) {\n        if (typeof original == 'function') {\n          var wrapper = Asyncify.instrumentFunction(original);\n          ret[x] = wrapper;\n        } else {\n          ret[x] = original;\n        }\n      }\n      return ret;\n    },\n    State: { Normal: 0, Unwinding: 1, Rewinding: 2, Disabled: 3 },\n    state: 0,\n    StackSize: 16384,\n    currData: null,\n    handleSleepReturnValue: 0,\n    exportCallStack: [],\n    callstackFuncToId: new Map(),\n    callStackIdToFunc: new Map(),\n    funcWrappers: new Map(),\n    callStackId: 0,\n    asyncPromiseHandlers: null,\n    sleepCallbacks: [],\n    getCallStackId(func) {\n      if (!Asyncify.callstackFuncToId.has(func)) {\n        var id = Asyncify.callStackId++;\n        Asyncify.callstackFuncToId.set(func, id);\n        Asyncify.callStackIdToFunc.set(id, func);\n      }\n      return Asyncify.callstackFuncToId.get(func);\n    },\n    maybeStopUnwind() {\n      if (\n        Asyncify.currData &&\n        Asyncify.state === Asyncify.State.Unwinding &&\n        Asyncify.exportCallStack.length === 0\n      ) {\n        Asyncify.state = Asyncify.State.Normal;\n        runAndAbortIfError(_asyncify_stop_unwind);\n        if (typeof Fibers != 'undefined') {\n          Fibers.trampoline();\n        }\n      }\n    },\n    whenDone() {\n      return new Promise((resolve, reject) => {\n        Asyncify.asyncPromiseHandlers = { resolve, reject };\n      });\n    },\n    allocateData() {\n      var ptr = _malloc(12 + Asyncify.StackSize);\n      Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n      Asyncify.setDataRewindFunc(ptr);\n      return ptr;\n    },\n    setDataHeader(ptr, stack, stackSize) {\n      HEAPU32[ptr >> 2] = stack;\n      HEAPU32[(ptr + 4) >> 2] = stack + stackSize;\n    },\n    setDataRewindFunc(ptr) {\n      var bottomOfCallStack = Asyncify.exportCallStack[0];\n      var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n      HEAP32[(ptr + 8) >> 2] = rewindId;\n    },\n    getDataRewindFunc(ptr) {\n      var id = HEAP32[(ptr + 8) >> 2];\n      var func = Asyncify.callStackIdToFunc.get(id);\n      return func;\n    },\n    doRewind(ptr) {\n      var original = Asyncify.getDataRewindFunc(ptr);\n      var func = Asyncify.funcWrappers.get(original);\n      return callUserCallback(func);\n    },\n    handleSleep(startAsync) {\n      if (ABORT) return;\n      if (Asyncify.state === Asyncify.State.Normal) {\n        var reachedCallback = false;\n        var reachedAfterCallback = false;\n        startAsync((handleSleepReturnValue = 0) => {\n          if (ABORT) return;\n          Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n          reachedCallback = true;\n          if (!reachedAfterCallback) {\n            return;\n          }\n          Asyncify.state = Asyncify.State.Rewinding;\n          runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));\n          if (typeof MainLoop != 'undefined' && MainLoop.func) {\n            MainLoop.resume();\n          }\n          var asyncWasmReturnValue,\n            isError = false;\n          try {\n            asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n          } catch (err) {\n            asyncWasmReturnValue = err;\n            isError = true;\n          }\n          var handled = false;\n          if (!Asyncify.currData) {\n            var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n            if (asyncPromiseHandlers) {\n              Asyncify.asyncPromiseHandlers = null;\n              (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(\n                asyncWasmReturnValue,\n              );\n              handled = true;\n            }\n          }\n          if (isError && !handled) {\n            throw asyncWasmReturnValue;\n          }\n        });\n        reachedAfterCallback = true;\n        if (!reachedCallback) {\n          Asyncify.state = Asyncify.State.Unwinding;\n          Asyncify.currData = Asyncify.allocateData();\n          if (typeof MainLoop != 'undefined' && MainLoop.func) {\n            MainLoop.pause();\n          }\n          runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));\n        }\n      } else if (Asyncify.state === Asyncify.State.Rewinding) {\n        Asyncify.state = Asyncify.State.Normal;\n        runAndAbortIfError(_asyncify_stop_rewind);\n        _free(Asyncify.currData);\n        Asyncify.currData = null;\n        Asyncify.sleepCallbacks.forEach(callUserCallback);\n      } else {\n        abort(`invalid state: ${Asyncify.state}`);\n      }\n      return Asyncify.handleSleepReturnValue;\n    },\n    handleAsync: (startAsync) =>\n      Asyncify.handleSleep(async (wakeUp) => {\n        wakeUp(await startAsync());\n      }),\n  };\n  var wasmTableMirror = [];\n  var getWasmTableEntry = (funcPtr) => {\n    var func = wasmTableMirror[funcPtr];\n    if (!func) {\n      wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr);\n    }\n    return func;\n  };\n  var updateTableMap = (offset, count) => {\n    if (functionsInTableMap) {\n      for (var i = offset; i < offset + count; i++) {\n        var item = getWasmTableEntry(i);\n        if (item) {\n          functionsInTableMap.set(item, i);\n        }\n      }\n    }\n  };\n  var functionsInTableMap;\n  var getFunctionAddress = (func) => {\n    if (!functionsInTableMap) {\n      functionsInTableMap = new WeakMap();\n      updateTableMap(0, wasmTable.length);\n    }\n    return functionsInTableMap.get(func) || 0;\n  };\n  var freeTableIndexes = [];\n  var getEmptyTableSlot = () => {\n    if (freeTableIndexes.length) {\n      return freeTableIndexes.pop();\n    }\n    return wasmTable['grow'](1);\n  };\n  var setWasmTableEntry = (idx, func) => {\n    wasmTable.set(idx, func);\n    wasmTableMirror[idx] = wasmTable.get(idx);\n  };\n  var uleb128EncodeWithLen = (arr) => {\n    const n = arr.length;\n    return [(n % 128) | 128, n >> 7, ...arr];\n  };\n  var wasmTypeCodes = { i: 127, p: 127, j: 126, f: 125, d: 124, e: 111 };\n  var generateTypePack = (types) =>\n    uleb128EncodeWithLen(\n      Array.from(types, (type) => {\n        var code = wasmTypeCodes[type];\n        return code;\n      }),\n    );\n  var convertJsFunctionToWasm = (func, sig) => {\n    var bytes = Uint8Array.of(\n      0,\n      97,\n      115,\n      109,\n      1,\n      0,\n      0,\n      0,\n      1,\n      ...uleb128EncodeWithLen([\n        1,\n        96,\n        ...generateTypePack(sig.slice(1)),\n        ...generateTypePack(sig[0] === 'v' ? '' : sig[0]),\n      ]),\n      2,\n      7,\n      1,\n      1,\n      101,\n      1,\n      102,\n      0,\n      0,\n      7,\n      5,\n      1,\n      1,\n      102,\n      0,\n      0,\n    );\n    var module = new WebAssembly.Module(bytes);\n    var instance = new WebAssembly.Instance(module, { e: { f: func } });\n    var wrappedFunc = instance.exports['f'];\n    return wrappedFunc;\n  };\n  var addFunction = (func, sig) => {\n    var rtn = getFunctionAddress(func);\n    if (rtn) {\n      return rtn;\n    }\n    var ret = getEmptyTableSlot();\n    try {\n      setWasmTableEntry(ret, func);\n    } catch (err) {\n      if (!(err instanceof TypeError)) {\n        throw err;\n      }\n      var wrapped = convertJsFunctionToWasm(func, sig);\n      setWasmTableEntry(ret, wrapped);\n    }\n    functionsInTableMap.set(func, ret);\n    return ret;\n  };\n  {\n    if (Module['noExitRuntime']) noExitRuntime = Module['noExitRuntime'];\n    if (Module['print']) out = Module['print'];\n    if (Module['printErr']) err = Module['printErr'];\n    if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];\n    if (Module['arguments']) arguments_ = Module['arguments'];\n    if (Module['thisProgram']) thisProgram = Module['thisProgram'];\n    if (Module['preInit']) {\n      if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];\n      while (Module['preInit'].length > 0) {\n        Module['preInit'].shift()();\n      }\n    }\n  }\n  Module['addFunction'] = addFunction;\n  Module['Asyncify'] = Asyncify;\n  var ___asan_default_options,\n    _init,\n    _dispose,\n    _getVersion,\n    _setErrorCallback,\n    _getMainDesc,\n    _getWindowsChangedState,\n    _getVarsDesc,\n    _getActions,\n    _malloc,\n    _selectAction,\n    _executeSelAction,\n    _getObjects,\n    _selectObject,\n    _loadGameData,\n    _restartGame,\n    _saveGameData,\n    _free,\n    _loadSavedGameData,\n    _execString,\n    _execCounter,\n    _execLoc,\n    _execUserInput,\n    _getLastError,\n    _getVarValue,\n    _getVarValueByIndex,\n    _getVarValueByKey,\n    _getVarSize,\n    _setCallback,\n    _freeItemsList,\n    _freeObjectsList,\n    _freeSaveBuffer,\n    _freeStringsBuffer,\n    _enableDebugMode,\n    _disableDebugMode,\n    _getCurStateData,\n    _getLocationsList,\n    _getLocationActions,\n    _getLocationCode,\n    _getActionCode,\n    _calculateStrExpression,\n    _calculateNumExpression,\n    _showWindow,\n    _getSelActionIndex,\n    _getSelObjectIndex,\n    _getCompiledDateTime,\n    _getErrorDesc,\n    _getLocationDesc,\n    __run_checks,\n    _emscripten_stack_get_end,\n    _emscripten_stack_get_base,\n    _emscripten_stack_init,\n    _emscripten_stack_get_current,\n    ___set_stack_limits,\n    dynCall_iii,\n    dynCall_viii,\n    dynCall_vi,\n    dynCall_iiii,\n    dynCall_iiiii,\n    dynCall_ii,\n    dynCall_i,\n    dynCall_iidiiii,\n    dynCall_vii,\n    _asyncify_start_unwind,\n    _asyncify_stop_unwind,\n    _asyncify_start_rewind,\n    _asyncify_stop_rewind,\n    memory,\n    __indirect_function_table,\n    wasmMemory,\n    wasmTable;\n  function assignWasmExports(wasmExports) {\n    ___asan_default_options = Module['___asan_default_options'] = wasmExports['h'];\n    _init = Module['_init'] = wasmExports['i'];\n    _dispose = Module['_dispose'] = wasmExports['j'];\n    _getVersion = Module['_getVersion'] = wasmExports['k'];\n    _setErrorCallback = Module['_setErrorCallback'] = wasmExports['l'];\n    _getMainDesc = Module['_getMainDesc'] = wasmExports['n'];\n    _getWindowsChangedState = Module['_getWindowsChangedState'] = wasmExports['o'];\n    _getVarsDesc = Module['_getVarsDesc'] = wasmExports['p'];\n    _getActions = Module['_getActions'] = wasmExports['q'];\n    _malloc = Module['_malloc'] = wasmExports['r'];\n    _selectAction = Module['_selectAction'] = wasmExports['s'];\n    _executeSelAction = Module['_executeSelAction'] = wasmExports['t'];\n    _getObjects = Module['_getObjects'] = wasmExports['u'];\n    _selectObject = Module['_selectObject'] = wasmExports['v'];\n    _loadGameData = Module['_loadGameData'] = wasmExports['w'];\n    _restartGame = Module['_restartGame'] = wasmExports['x'];\n    _saveGameData = Module['_saveGameData'] = wasmExports['y'];\n    _free = Module['_free'] = wasmExports['z'];\n    _loadSavedGameData = Module['_loadSavedGameData'] = wasmExports['A'];\n    _execString = Module['_execString'] = wasmExports['B'];\n    _execCounter = Module['_execCounter'] = wasmExports['C'];\n    _execLoc = Module['_execLoc'] = wasmExports['D'];\n    _execUserInput = Module['_execUserInput'] = wasmExports['E'];\n    _getLastError = Module['_getLastError'] = wasmExports['F'];\n    _getVarValue = Module['_getVarValue'] = wasmExports['G'];\n    _getVarValueByIndex = Module['_getVarValueByIndex'] = wasmExports['H'];\n    _getVarValueByKey = Module['_getVarValueByKey'] = wasmExports['I'];\n    _getVarSize = Module['_getVarSize'] = wasmExports['J'];\n    _setCallback = Module['_setCallback'] = wasmExports['K'];\n    _freeItemsList = Module['_freeItemsList'] = wasmExports['L'];\n    _freeObjectsList = Module['_freeObjectsList'] = wasmExports['M'];\n    _freeSaveBuffer = Module['_freeSaveBuffer'] = wasmExports['N'];\n    _freeStringsBuffer = Module['_freeStringsBuffer'] = wasmExports['O'];\n    _enableDebugMode = Module['_enableDebugMode'] = wasmExports['P'];\n    _disableDebugMode = Module['_disableDebugMode'] = wasmExports['Q'];\n    _getCurStateData = Module['_getCurStateData'] = wasmExports['R'];\n    _getLocationsList = Module['_getLocationsList'] = wasmExports['S'];\n    _getLocationActions = Module['_getLocationActions'] = wasmExports['T'];\n    _getLocationCode = Module['_getLocationCode'] = wasmExports['U'];\n    _getActionCode = Module['_getActionCode'] = wasmExports['V'];\n    _calculateStrExpression = Module['_calculateStrExpression'] = wasmExports['W'];\n    _calculateNumExpression = Module['_calculateNumExpression'] = wasmExports['X'];\n    _showWindow = Module['_showWindow'] = wasmExports['Y'];\n    _getSelActionIndex = Module['_getSelActionIndex'] = wasmExports['Z'];\n    _getSelObjectIndex = Module['_getSelObjectIndex'] = wasmExports['_'];\n    _getCompiledDateTime = Module['_getCompiledDateTime'] = wasmExports['$'];\n    _getErrorDesc = Module['_getErrorDesc'] = wasmExports['aa'];\n    _getLocationDesc = Module['_getLocationDesc'] = wasmExports['ba'];\n    __run_checks = Module['__run_checks'] = wasmExports['ca'];\n    _emscripten_stack_get_end = wasmExports['da'];\n    _emscripten_stack_get_base = wasmExports['ea'];\n    _emscripten_stack_init = wasmExports['fa'];\n    _emscripten_stack_get_current = wasmExports['ga'];\n    ___set_stack_limits = Module['___set_stack_limits'] = wasmExports['ha'];\n    dynCall_iii = dynCalls['iii'] = wasmExports['ia'];\n    dynCall_viii = dynCalls['viii'] = wasmExports['ja'];\n    dynCall_vi = dynCalls['vi'] = wasmExports['ka'];\n    dynCall_iiii = dynCalls['iiii'] = wasmExports['la'];\n    dynCall_iiiii = dynCalls['iiiii'] = wasmExports['ma'];\n    dynCall_ii = dynCalls['ii'] = wasmExports['na'];\n    dynCall_i = dynCalls['i'] = wasmExports['oa'];\n    dynCall_iidiiii = dynCalls['iidiiii'] = wasmExports['pa'];\n    dynCall_vii = dynCalls['vii'] = wasmExports['qa'];\n    _asyncify_start_unwind = wasmExports['ra'];\n    _asyncify_stop_unwind = wasmExports['sa'];\n    _asyncify_start_rewind = wasmExports['ta'];\n    _asyncify_stop_rewind = wasmExports['ua'];\n    memory = wasmMemory = wasmExports['f'];\n    __indirect_function_table = wasmTable = wasmExports['m'];\n  }\n  var wasmImports = {\n    a: ___handle_stack_overflow,\n    e: _emscripten_date_now,\n    b: _emscripten_resize_heap,\n    c: _environ_get,\n    d: _environ_sizes_get,\n  };\n  function stackCheckInit() {\n    _emscripten_stack_init();\n    writeStackCookie();\n  }\n  function run() {\n    stackCheckInit();\n    preRun();\n    function doRun() {\n      Module['calledRun'] = true;\n      if (ABORT) return;\n      initRuntime();\n      readyPromiseResolve?.(Module);\n      Module['onRuntimeInitialized']?.();\n      postRun();\n    }\n    if (Module['setStatus']) {\n      Module['setStatus']('Running...');\n      setTimeout(() => {\n        setTimeout(() => Module['setStatus'](''), 1);\n        doRun();\n      }, 1);\n    } else {\n      doRun();\n    }\n    checkStackCookie();\n  }\n  var wasmExports;\n  wasmExports = await createWasm();\n  run();\n  if (runtimeInitialized) {\n    moduleRtn = Module;\n  } else {\n    moduleRtn = new Promise((resolve, reject) => {\n      readyPromiseResolve = resolve;\n      readyPromiseReject = reject;\n    });\n  }\n  return moduleRtn;\n}\nexport default createQspModule;\n","import { QspAPI } from '../contracts/api';\nimport createQspModule from '../qsplib/public/qsp-engine';\n\nimport { QspAPIImpl } from './qsp-api';\n\nexport function initQspEngine(wasmBinary: ArrayBufferView | ArrayBuffer): Promise<QspAPI> {\n  return new Promise((resolve) => {\n    createQspModule({\n      wasmBinary,\n    }).then((moduleWasm) => {\n      resolve(new QspAPIImpl(moduleWasm));\n    });\n  });\n}\n"],"names":["async","createQspModule","moduleArg","Module","ENVIRONMENT_IS_WEB","globalThis","window","ENVIRONMENT_IS_WORKER","WorkerGlobalScope","ENVIRONMENT_IS_NODE","process","versions","node","type","createRequire","import","require","readAsync","readBinary","thisProgram","quit_","status","toThrow","_scriptName","document","pathToFileURL","__filename","href","_documentCurrentScript","tagName","toUpperCase","src","URL","baseURI","scriptDirectory","fs","startsWith","dirname","fileURLToPath","filename","isFileURI","readFileSync","binary","undefined","argv","length","replace","slice","exitCode","url","xhr","XMLHttpRequest","open","responseType","send","Uint8Array","response","Promise","resolve","reject","onload","onerror","fetch","credentials","ok","arrayBuffer","Error","console","log","bind","wasmBinary","EXITSTATUS","readyPromiseResolve","readyPromiseReject","HEAPU8","HEAP32","HEAPU32","err","error","ABORT","checkStackCookie","max","_emscripten_stack_get_end","cookie1","cookie2","abort","ptrToString","wasmBinaryFile","runtimeInitialized","updateMemoryViews","b","wasmMemory","buffer","Int8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array","what","e","WebAssembly","RuntimeError","findWasmBinary","path","getWasmBinary","binaryFile","file","getBinarySync","instantiateAsync","imports","instantiateStreaming","reason","instantiate","instantiateArrayBuffer","ExitStatus","name","constructor","this","message","functionsInTableMap","_malloc","_free","_emscripten_stack_get_base","_emscripten_stack_init","_emscripten_stack_get_current","___set_stack_limits","_asyncify_start_unwind","_asyncify_stop_unwind","_asyncify_start_rewind","_asyncify_stop_rewind","wasmTable","callRuntimeCallbacks","callbacks","shift","onPostRuns","addOnPostRun","cb","push","onPreRuns","addOnPreRun","noExitRuntime","ptr","toString","padStart","setStackLimits","stackLow","stackHigh","alignMemory","size","alignment","Math","ceil","growMemory","pages","byteLength","grow","ENV","getEnvStrings","strings","env","USER","LOGNAME","PATH","PWD","HOME","LANG","navigator","language","_","x","stringToUTF8","str","outPtr","maxBytesToWrite","heap","outIdx","startIdx","endIdx","i","u","codePointAt","stringToUTF8Array","lengthBytesUTF8","len","c","charCodeAt","runAndAbortIfError","func","handleException","keepRuntimeAlive","runtimeKeepaliveCounter","_exit","implicit","code","callUserCallback","maybeExit","Asyncify","instrumentWasmImports","importPattern","original","Object","entries","isAsync","test","instrumentFunction","wrapper","args","exportCallStack","pop","maybeStopUnwind","funcWrappers","set","instrumentWasmExports","exports","ret","State","Normal","Unwinding","Rewinding","Disabled","state","StackSize","currData","handleSleepReturnValue","callstackFuncToId","Map","callStackIdToFunc","callStackId","asyncPromiseHandlers","sleepCallbacks","getCallStackId","has","id","get","Fibers","trampoline","whenDone","allocateData","setDataHeader","setDataRewindFunc","stack","stackSize","bottomOfCallStack","rewindId","getDataRewindFunc","doRewind","handleSleep","startAsync","reachedCallback","reachedAfterCallback","MainLoop","resume","asyncWasmReturnValue","isError","handled","pause","forEach","handleAsync","wakeUp","wasmTableMirror","getWasmTableEntry","funcPtr","getFunctionAddress","WeakMap","offset","count","item","updateTableMap","freeTableIndexes","setWasmTableEntry","idx","uleb128EncodeWithLen","arr","n","wasmTypeCodes","p","j","f","d","generateTypePack","types","Array","from","sig","rtn","TypeError","wrapped","bytes","of","module","Instance","convertJsFunctionToWasm","wasmExports","wasmImports","a","requested","base","end","Date","now","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","min","newSize","__environ","environ_buf","bufSize","envp","string","Infinity","penviron_count","penviron_buf_size","stackCheckInit","receiveInstance","instance","assignWasmExports","info","inst","mod","result","receiveInstantiationResult","createWasm","doRun","postRun","preRun","setTimeout","run","then","moduleWasm","QspAPIImpl"],"mappings":"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"}