var WORKER_ENABLED=!!(window.URL&&window.Blob&&window.Worker);function __GET_FUNC_BODY__(A){return A.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}function __GLUE_EXEC__(C){var supportSharedBuffer = false;
try {
  supportSharedBuffer = !!new SharedArrayBuffer(0);
} catch (e) {
  // nothing to do...
}

var isWorker = typeof importScripts == "function";
var bridgeName = "__CODE_BRIDGE__" + +new Date();
(isWorker ? self : window)[bridgeName] = {
  onHeader: function(header) {
    C.postMessage({ type: "header", data: header });
  },
  onMediaInfo: function(mediaInfo) {
    C.postMessage({ type: "mediaInfo", data: mediaInfo });
  },
  onAudioDataSize: function(data) {
    C.audioBufferSize = data.size;
    C.audioBuffer = C._malloc(C.audioBufferSize);
    C._codecSetAudioBuffer(C.audioBuffer);
  },
  onAudioData: function(data) {
    var timestamp = data.timestamp;
    C.audioTimestamps.push(timestamp);

    var u8s = C.HEAPU8.subarray(
      C.audioBuffer,
      C.audioBuffer + C.audioBufferSize
    );

    var output = null;
    if (supportSharedBuffer) {
      output = new Uint8Array(new SharedArrayBuffer(u8s.byteLength));
      output.set(u8s);
    } else {
      output = new Uint8Array(u8s);
    }

    C._free(C.audioBuffer);
    C.audioBuffer = null;
    C.postMessage(
      {
        type: "audio",
        data: {
          buffer: output.buffer,
          timestamp: timestamp
        }
      },
      supportSharedBuffer ? undefined : [output.buffer]
    );
  },
  onVideoDataSize: function(data) {
    if (C.videoBuffer == null) {
      C.videoBufferSize = data.size;
      C.videoBuffer = C._malloc(C.videoBufferSize);
      if (supportSharedBuffer) {
        C.videoSharedBuffer = new SharedArrayBuffer(data.size);
      }
    }
    C._codecSetVideoBuffer(C.videoBuffer);
  },
  onVideoData: function(data) {
    var timestamp = data.timestamp;
    C.videoTimestamps.push(timestamp);

    var u8s = C.HEAPU8.subarray(
      C.videoBuffer,
      C.videoBuffer + C.videoBufferSize
    );

    var output = null;
    if (supportSharedBuffer) {
      output = new Uint8Array(C.videoSharedBuffer);
      output.set(u8s);
    } else {
      output = new Uint8Array(u8s);
    }
    
    C.postMessage(
      {
        type: "video",
        data: {
          buffer: output.buffer,
          timestamp: timestamp,
          width: data.width,
          height: data.height,
          stride0: data.stride0,
          stride1: data.stride1
        }
      },
      supportSharedBuffer ? undefined : [output.buffer]
    );
  },
  onComplete: function() {
    C.postMessage({ type: "complete" });
  }
};

var T = {
  audioTimestamps: [],
  videoTimestamps: [],
  audioBufferSize: 0,
  videoBufferSize: 0,
  audioBuffer: null,
  videoBuffer: null,
  postMessage: isWorker ? postMessage.bind(self) : function() {},
  onRuntimeInitialized: function() {
    C._codecInit();
    var callbackStr = bridgeName.split("");
    callbackStr = callbackStr
      .map(function(v) {
        return v.charCodeAt(0);
      })
      .concat(0);

    var callbackStrData = C._malloc(callbackStr.length - 1);
    C.HEAPU8.set(callbackStr, callbackStrData);
    C._codecSetBridgeName(callbackStrData);

    C.postMessage({ type: "ready" });
  }
};

C = C || {};

for (var key in T) {
  if (T.hasOwnProperty(key)) {
    C[key] = T[key];
  }
}

// Enhanced FLV -> Kingsoft format converter (in-place)
var _flvConv = { offset: 0, nextTag: 13, partialHdr: null, partialLen: 0 };

function _enhFlvDoConvert(buf, p) {
  var fb = buf[p];
  if (!(fb & 0x80)) return;
  var ft = (fb >> 4) & 7, pt = fb & 0xF;
  if (pt === 0) {
    buf[p] = (ft << 4) | 0xC; buf[p+1] = 0; buf[p+2] = 0; buf[p+3] = 0; buf[p+4] = 0;
  } else if (pt === 3) {
    buf[p] = (ft << 4) | 0xC; buf[p+1] = 1; buf[p+2] = 0; buf[p+3] = 0; buf[p+4] = 0;
  } else if (pt === 2) {
    buf[p] = (ft << 4) | 0xC; buf[p+1] = 2; buf[p+2] = 0; buf[p+3] = 0; buf[p+4] = 0;
  } else if (pt === 1) {
    var c0 = buf[p+5], c1 = buf[p+6], c2 = buf[p+7];
    buf[p] = (ft << 4) | 0xC; buf[p+1] = 1; buf[p+2] = c0; buf[p+3] = c1; buf[p+4] = c2;
  }
}

function _enhFlvConvert(buf, len) {
  var c = _flvConv, bs = c.offset, be = bs + len;
  if (c.partialLen > 0) {
    var need = 11 - c.partialLen;
    if (need <= len) {
      for (var j = 0; j < need; j++) c.partialHdr[c.partialLen + j] = buf[j];
      var tt = c.partialHdr[0];
      var ds = (c.partialHdr[1] << 16) | (c.partialHdr[2] << 8) | c.partialHdr[3];
      if (tt === 9 && need + 5 <= len && ds >= 5) _enhFlvDoConvert(buf, need);
      c.nextTag = c.nextTag + 11 + ds + 4;
      c.partialLen = 0;
    } else {
      for (var j = 0; j < len; j++) c.partialHdr[c.partialLen + j] = buf[j];
      c.partialLen += len; c.offset = be; return;
    }
  }
  while (c.nextTag < be) {
    var ti = c.nextTag - bs;
    if (ti + 11 > len) {
      c.partialHdr = new Uint8Array(11);
      c.partialLen = len - ti;
      for (var j = 0; j < c.partialLen; j++) c.partialHdr[j] = buf[ti + j];
      break;
    }
    var tt = buf[ti], ds = (buf[ti+1] << 16) | (buf[ti+2] << 8) | buf[ti+3];
    var di = ti + 11;
    if (tt === 9 && di + 5 <= len && ds >= 5) _enhFlvDoConvert(buf, di);
    c.nextTag = c.nextTag + 11 + ds + 4;
  }
  c.offset = be;
}

C.onmessage = function(msg) {
  var data = msg.data;
  switch (data.type) {
    case "decode": {
      var buffer = new Uint8Array(data.buffer);
      _enhFlvConvert(buffer, buffer.length);
      var data = C._malloc(buffer.length);
      C.HEAPU8.set(buffer, data);

      var now = +new Date();
      C.audioTimestamps = [];
      C.videoTimestamps = [];
      C._codecDecode(data, buffer.length);

      var ats = C.audioTimestamps;
      var vts = C.videoTimestamps;
      C.postMessage({
        type: "decode",
        data: {
          consume: +new Date() - now,
          duration: Math.max(
            ats.length > 0 ? ats[ats.length - 1] - ats[0] : 0,
            vts.length > 0 ? vts[vts.length - 1] - vts[0] : 0
          )
        }
      });

      C._free(data);
      break;
    }
    case "destroy": {
      if (C.audioBuffer) {
        C._free(C.audioBuffer);
      }
      if (C.videoBuffer) {
        C._free(C.videoBuffer);
      }
      C._codecFree();
      C.postMessage({ type: "destroy" });
      break;
    }
  }
};

if (isWorker) {
  self.onmessage = C.onmessage;
}}function __CODEC_EXEC__(A){var w,B,E=E||(void 0!==A?A:{}),I={};for(B in E)E.hasOwnProperty(B)&&(I[B]=E[B]);var o="./this.program",i=!1,D=!1,i="object"==typeof window,D="function"==typeof importScripts;if(E.ENVIRONMENT)throw Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var g,Q="";if(!i&&!D)throw Error("environment detection error");if(D?Q=self.location.href:document.currentScript&&(Q=document.currentScript.src),Q=0!==Q.indexOf("blob:")?Q.substr(0,Q.lastIndexOf("/")+1):"","object"!=typeof window&&"function"!=typeof importScripts)throw Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");D&&(g=function(B){try{var A=new XMLHttpRequest;return A.open("GET",B,!1),A.responseType="arraybuffer",A.send(null),new Uint8Array(A.response)}catch(A){if(B=dA(B))return B;throw A}});var C=E.print||console.log.bind(console),F=E.printErr||console.warn.bind(console);for(B in I)I.hasOwnProperty(B)&&(E[B]=I[B]);function G(A){k(X);var B=M[X>>2];return(A=B+A+15&-16)>yA()&&oB("failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly"),M[X>>2]=A,B}function R(A){(a=a||{})[A]||(a[A]=1,F(A))}I=null,Object.getOwnPropertyDescriptor(E,"arguments")||Object.defineProperty(E,"arguments",{get:function(){oB("Module.arguments has been replaced with plain arguments_")}}),E.thisProgram&&(o=E.thisProgram),Object.getOwnPropertyDescriptor(E,"thisProgram")||Object.defineProperty(E,"thisProgram",{get:function(){oB("Module.thisProgram has been replaced with plain thisProgram")}}),Object.getOwnPropertyDescriptor(E,"quit")||Object.defineProperty(E,"quit",{get:function(){oB("Module.quit has been replaced with plain quit_")}}),k(void 0===E.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),k(void 0===E.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),k(void 0===E.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),k(void 0===E.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),k(void 0===E.read,"Module.read option was removed (modify read_ in JS)"),k(void 0===E.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),k(void 0===E.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),k(void 0===E.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),Object.getOwnPropertyDescriptor(E,"read")||Object.defineProperty(E,"read",{get:function(){oB("Module.read has been replaced with plain read_")}}),Object.getOwnPropertyDescriptor(E,"readAsync")||Object.defineProperty(E,"readAsync",{get:function(){oB("Module.readAsync has been replaced with plain readAsync")}}),Object.getOwnPropertyDescriptor(E,"readBinary")||Object.defineProperty(E,"readBinary",{get:function(){oB("Module.readBinary has been replaced with plain readBinary")}});var a,s,S=VA=function(){oB("cannot use the stack before compiled code is ready to run, and has provided stack access")},U={"f64-rem":function(A,B){return A%B},debugger:function(){}},H=0;E.wasmBinary&&(s=E.wasmBinary),Object.getOwnPropertyDescriptor(E,"wasmBinary")||Object.defineProperty(E,"wasmBinary",{get:function(){oB("Module.wasmBinary has been replaced with plain wasmBinary")}}),Object.getOwnPropertyDescriptor(E,"noExitRuntime")||Object.defineProperty(E,"noExitRuntime",{get:function(){oB("Module.noExitRuntime has been replaced with plain noExitRuntime")}}),"object"!=typeof WebAssembly&&oB("No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.");var y,h=!1;function k(A,B){A||oB("Assertion failed: "+B)}var L,N,J,c,M,Y,K="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function d(A,B,I){var g=B+I;for(I=B;A[I]&&!(g<=I);)++I;if(16<I-B&&A.subarray&&K)return K.decode(A.subarray(B,I));for(g="";B<I;){var Q,C,E=A[B++];128&E?(Q=63&A[B++],192==(224&E)?g+=String.fromCharCode((31&E)<<6|Q):(C=63&A[B++],(E=224==(240&E)?(15&E)<<12|Q<<6|C:(240!=(248&E)&&R("Invalid UTF-8 leading byte 0x"+E.toString(16)+" encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!"),(7&E)<<18|Q<<12|C<<6|63&A[B++]))<65536?g+=String.fromCharCode(E):(E-=65536,g+=String.fromCharCode(55296|E>>10,56320|1023&E)))):g+=String.fromCharCode(E)}return g}function q(A){return A?d(J,A,void 0):""}function b(A,B,I,g){if(0<g){g=I+g-1;for(var Q=0;Q<A.length;++Q){var C=A.charCodeAt(Q);if((C=55296<=C&&C<=57343?65536+((1023&C)<<10)|1023&A.charCodeAt(++Q):C)<=127){if(g<=I)break;B[I++]=C}else{if(C<=2047){if(g<=I+1)break;B[I++]=192|C>>6}else{if(C<=65535){if(g<=I+2)break;B[I++]=224|C>>12}else{if(g<=I+3)break;2097152<=C&&R("Invalid Unicode code point 0x"+C.toString(16)+" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)."),B[I++]=240|C>>18,B[I++]=128|C>>12&63}B[I++]=128|C>>6&63}B[I++]=128|63&C}}B[I]=0}}function t(A){for(var B=0,I=0;I<A.length;++I){var g=A.charCodeAt(I);(g=55296<=g&&g<=57343?65536+((1023&g)<<10)|1023&A.charCodeAt(++I):g)<=127?++B:B=g<=2047?B+2:g<=65535?B+3:B+4}return B}function x(A){return 0<A%65536&&(A+=65536-A%65536),A}function f(A){L=A,E.HEAP8=N=new Int8Array(A),E.HEAP16=c=new Int16Array(A),E.HEAP32=M=new Int32Array(A),E.HEAPU8=J=new Uint8Array(A),E.HEAPU16=new Uint16Array(A),E.HEAPU32=Y=new Uint32Array(A),E.HEAPF32=new Float32Array(A),E.HEAPF64=new Float64Array(A)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var X=155744;k(!0,"stack must start aligned"),k(!0,"heap must start aligned"),E.TOTAL_STACK&&k(5242880===E.TOTAL_STACK,"the stack size can no longer be determined at runtime");var Z=E.TOTAL_MEMORY||16777216;function p(){var A=Y[1349663],B=Y[1349662];34821223==A&&2310721022==B||oB("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x"+B.toString(16)+" "+A.toString(16)),1668509029!==M[0]&&oB("Runtime error: The application has corrupted its heap memory area (address zero)!")}if(Object.getOwnPropertyDescriptor(E,"TOTAL_MEMORY")||Object.defineProperty(E,"TOTAL_MEMORY",{get:function(){oB("Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY")}}),k(5242880<=Z,"TOTAL_MEMORY should be larger than TOTAL_STACK, was "+Z+"! (TOTAL_STACK=5242880)"),k("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),y=E.wasmMemory||new WebAssembly.Memory({initial:Z/65536}),k(0==(Z=(L=y?y.buffer:L).byteLength)%65536),f(L),M[X>>2]=5398656,M[0]=1668509029,c[1]=25459,115!==J[2]||99!==J[3])throw"Runtime error: expected the system to be little-endian!";function V(A,B){oB("Invalid function pointer "+A+" called with signature '"+B+"'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). Build with ASSERTIONS=2 for more info.")}function W(A){for(;0<A.length;){var B,I=A.shift();"function"==typeof I?I():"number"==typeof(B=I.B)?void 0===I.i?E.dynCall_v(B):E.dynCall_vi(B,I.i):B(void 0===I.i?null:I.i)}}var m=[],n=[],l=[],e=[],r=[],O=!1;k(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),k(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),k(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),k(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var T=Math.abs,A=Math.trunc,u=0,j=null,z=null,v={};E.preloadedImages={},E.preloadedAudios={},w={error:function(){oB("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with  -s FORCE_FILESYSTEM=1")},S:function(){w.error()},D:function(){w.error()},F:function(){w.error()},O:function(){w.error()},open:function(){w.error()},W:function(){w.error()},Z:function(){w.error()},N:function(){w.error()},U:function(){w.error()},c:function(){w.error()}},E.FS_createDataFile=w.D,E.FS_createPreloadedFile=w.F;var P="data:application/octet-stream;base64,";function _(A){return String.prototype.startsWith?A.startsWith(P):0===A.indexOf(P)}var $="data:application/octet-stream;base64,[encoded data, 1231512 characters]";function AA(){try{if(s)return new Uint8Array(s);var A=dA($);if(A)return A;if(g)return g($);throw"both async and sync fetching of the wasm failed"}catch(A){oB(A)}}function BA(A){function B(A){E.asm=A.exports,u--,E.monitorRunDependencies&&E.monitorRunDependencies(u),k(v["wasm-instantiate"]),delete v["wasm-instantiate"],0==u&&(null!==j&&(clearInterval(j),j=null),z&&(A=z,z=null,A()))}function I(A){k(E===C,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),C=null,B(A.instance)}function g(A){return(s||!i&&!D||"function"!=typeof fetch?new Promise(function(A){A(AA())}):fetch($,{credentials:"same-origin"}).then(function(A){if(!A.ok)throw"failed to load wasm binary file at '"+$+"'";return A.arrayBuffer()}).catch(AA)).then(function(A){return WebAssembly.instantiate(A,Q)}).then(A,function(A){F("failed to asynchronously prepare wasm: "+A),oB(A)})}var Q={env:A,wasi_unstable:A,global:{NaN:NaN,Infinity:1/0},"global.Math":Math,asm2wasm:U};u++,E.monitorRunDependencies&&E.monitorRunDependencies(u),k(!v["wasm-instantiate"]),v["wasm-instantiate"]=1,null===j&&"undefined"!=typeof setInterval&&(j=setInterval(function(){if(h)clearInterval(j),j=null;else{var A,B=!1;for(A in v)B||(B=!0,F("still waiting on run dependencies:")),F("dependency: "+A);B&&F("(end of list)")}},1e4));var C=E;if(E.instantiateWasm)try{return E.instantiateWasm(Q,B)}catch(A){return F("Module.instantiateWasm callback failed with error: "+A),!1}return s||"function"!=typeof WebAssembly.instantiateStreaming||_($)||"function"!=typeof fetch?g(I):fetch($,{credentials:"same-origin"}).then(function(A){return WebAssembly.instantiateStreaming(A,Q).then(I,function(A){F("wasm streaming compile failed: "+A),F("falling back to ArrayBuffer instantiation"),g(I)})}),{}}_($)||(Z=$,$=E.locateFile?E.locateFile(Z,Q):Q+Z),E.asm=function(A,B){return B.memory=y,B.table=new WebAssembly.Table({initial:1292,maximum:1292,element:"anyfunc"}),B.__memory_base=1024,B.__table_base=0,k(A=BA(B),"binaryen setup failed (no wasm support?)"),A};var IA=[function(A,B,I){(A=("function"==typeof importScripts?self:window)[q(A)])&&"function"==typeof A.onHeader&&A.onHeader({hasAudio:B,hasVideo:I})},function(A,B){(A=("function"==typeof importScripts?self:window)[q(A)])&&"function"==typeof A.onVideoDataSize&&A.onVideoDataSize({size:B})},function(A,B,I,g,Q,C){(A=("function"==typeof importScripts?self:window)[q(A)])&&"function"==typeof A.onVideoData&&A.onVideoData({timestamp:B,width:I,height:g,stride0:Q,stride1:C})},function(A){(A=("function"==typeof importScripts?self:window)[q(A)])&&"function"==typeof A.onComplete&&A.onComplete()},function(A,B){(A=("function"==typeof importScripts?self:window)[q(A)])&&"function"==typeof A.onMediaInfo&&A.onMediaInfo(q(B))},function(A,B){(A=("function"==typeof importScripts?self:window)[q(A)])&&"function"==typeof A.onAudioDataSize&&A.onAudioDataSize({size:B})},function(A,B){(A=("function"==typeof importScripts?self:window)[q(A)])&&"function"==typeof A.onAudioData&&A.onAudioData({timestamp:B})}];function gA(){A:{var B=Error();if(!B.stack){try{throw Error(0)}catch(A){B=A}if(!B.stack){B="(no stack trace available)";break A}}B=B.stack.toString()}return E.extraStackTrace&&(B+="\n"+E.extraStackTrace()),B.replace(/\b__Z[\w\d_]+/g,function(A){return R("warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling"),A==A?A:A+" ["+A+"]"})}n.push({B:function(){xA()}}),k(!0);var QA={};function CA(A){var B,I;CA.b?(B=M[A>>2],I=M[B>>2]):(CA.b=!0,QA.USER=QA.LOGNAME="web_user",QA.PATH="/",QA.PWD="/",QA.HOME="/home/web_user",QA.LANG=("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",QA._=o,I=(O?XA:G)(1024),B=(O?XA:G)(256),M[B>>2]=I,M[A>>2]=B),A=[];var g,Q,C=0;for(g in QA)"string"==typeof QA[g]&&(Q=g+"="+QA[g],A.push(Q),C+=Q.length);if(1024<C)throw Error("Environment size exceeded TOTAL_ENV_SIZE!");for(g=0;g<A.length;g++){for(var C=Q=A[g],E=I,i=0;i<C.length;++i)k(C.charCodeAt(i)===C.charCodeAt(i)&255),N[E++>>0]=C.charCodeAt(i);N[E>>0]=0,M[B+4*g>>2]=I,I+=Q.length+1}M[B+4*A.length>>2]=0}var EA={},iA=[];function oA(A){if(!A||EA[A])return A;for(var B in EA)for(var I=+B,g=EA[I].v,Q=g.length,C=0;C<Q;C++)if(g[C]===A)return I;return A}var wA=0;function DA(A){try{return fA(A)}catch(A){F("exception during cxa_free_exception: "+A)}}function FA(){if(!(g=wA))return H=0;var A=EA[g],B=A.type;if(!B)return(H=0)|g;var I=Array.prototype.slice.call(arguments);tA(B),M[38932]=g;for(var g=155728,Q=0;Q<I.length;Q++)if(I[Q]&&bA(I[Q],B,g))return g=M[g>>2],A.v.push(g),H=I[Q],0|g;return g=M[g>>2],H=B,0|g}function GA(A){return E.___errno_location?M[E.___errno_location()>>2]=A:F("failed to set errno from JS"),A}E.___cxa_find_matching_catch=FA;var RA=[null,[],[]];function aA(A,B){var I=RA[A];k(I),0===B||10===B?((1===A?C:F)(d(I,0)),I.length=0):I.push(B)}var sA=0;function UA(){return M[(sA+=4)-4>>2]}var SA={};function HA(){return void 0===HA.start&&(HA.start=Date.now()),1e3*(Date.now()-HA.start)|0}function yA(){return N.length}function hA(A){if(0===A)return 0;if(A=q(A),!QA.hasOwnProperty(A))return 0;hA.b&&fA(hA.b);var B=t(A=QA[A])+1,I=XA(B);return I&&b(A,N,I,B),hA.b=I}function kA(){return kA.b||(kA.b=[]),kA.b.push(S()),kA.b.length-1}function LA(A){return 0==A%4&&(0!=A%100||0==A%400)}function NA(A,B){for(var I=0,g=0;g<=B;I+=A[g++]);return I}var JA=[31,29,31,30,31,30,31,31,30,31,30,31],cA=[31,28,31,30,31,30,31,31,30,31,30,31];function MA(A,B){for(A=new Date(A.getTime());0<B;){var I=A.getMonth(),g=(LA(A.getFullYear())?JA:cA)[I];if(!(B>g-A.getDate())){A.setDate(A.getDate()+B);break}B-=g-A.getDate()+1,A.setDate(1),I<11?A.setMonth(I+1):(A.setMonth(0),A.setFullYear(A.getFullYear()+1))}return A}function YA(A,B,I,g){function Q(A,B,I){for(A="number"==typeof A?A.toString():A||"";A.length<B;)A=I[0]+A;return A}function C(A,B){return Q(A,B,"0")}function E(A,B){function I(A){return A<0?-1:0<A?1:0}var g;return g=0===(g=I(A.getFullYear()-B.getFullYear()))&&0===(g=I(A.getMonth()-B.getMonth()))?I(A.getDate()-B.getDate()):g}function i(A){switch(A.getDay()){case 0:return new Date(A.getFullYear()-1,11,29);case 1:return A;case 2:return new Date(A.getFullYear(),0,3);case 3:return new Date(A.getFullYear(),0,2);case 4:return new Date(A.getFullYear(),0,1);case 5:return new Date(A.getFullYear()-1,11,31);case 6:return new Date(A.getFullYear()-1,11,30)}}function o(A){A=MA(new Date(A.a+1900,0,1),A.s);var B=i(new Date(A.getFullYear()+1,0,4));return E(i(new Date(A.getFullYear(),0,4)),A)<=0?E(B,A)<=0?A.getFullYear()+1:A.getFullYear():A.getFullYear()-1}var w,D=M[g+40>>2];for(w in g={K:M[g>>2],J:M[g+4>>2],m:M[g+8>>2],h:M[g+12>>2],f:M[g+16>>2],a:M[g+20>>2],o:M[g+24>>2],s:M[g+28>>2],$:M[g+32>>2],I:M[g+36>>2],L:D?q(D):""},I=q(I),D={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"})I=I.replace(new RegExp(w,"g"),D[w]);var F,G,R="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),a="January February March April May June July August September October November December".split(" ");for(w in D={"%a":function(A){return R[A.o].substring(0,3)},"%A":function(A){return R[A.o]},"%b":function(A){return a[A.f].substring(0,3)},"%B":function(A){return a[A.f]},"%C":function(A){return C((A.a+1900)/100|0,2)},"%d":function(A){return C(A.h,2)},"%e":function(A){return Q(A.h,2," ")},"%g":function(A){return o(A).toString().substring(2)},"%G":o,"%H":function(A){return C(A.m,2)},"%I":function(A){return 0==(A=A.m)?A=12:12<A&&(A-=12),C(A,2)},"%j":function(A){return C(A.h+NA(LA(A.a+1900)?JA:cA,A.f-1),3)},"%m":function(A){return C(A.f+1,2)},"%M":function(A){return C(A.J,2)},"%n":function(){return"\n"},"%p":function(A){return 0<=A.m&&A.m<12?"AM":"PM"},"%S":function(A){return C(A.K,2)},"%t":function(){return"\t"},"%u":function(A){return A.o||7},"%U":function(A){var B=new Date(A.a+1900,0,1),I=0===B.getDay()?B:MA(B,7-B.getDay());return E(I,A=new Date(A.a+1900,A.f,A.h))<0?C(Math.ceil((31-I.getDate()+(NA(LA(A.getFullYear())?JA:cA,A.getMonth()-1)-31)+A.getDate())/7),2):0===E(I,B)?"01":"00"},"%V":function(A){var B=i(new Date(A.a+1900,0,4)),I=i(new Date(A.a+1901,0,4)),g=MA(new Date(A.a+1900,0,1),A.s);return E(g,B)<0?"53":E(I,g)<=0?"01":C(Math.ceil((B.getFullYear()<A.a+1900?A.s+32-B.getDate():A.s+1-B.getDate())/7),2)},"%w":function(A){return A.o},"%W":function(A){var B=new Date(A.a,0,1),I=1===B.getDay()?B:MA(B,0===B.getDay()?1:7-B.getDay()+1);return E(I,A=new Date(A.a+1900,A.f,A.h))<0?C(Math.ceil((31-I.getDate()+(NA(LA(A.getFullYear())?JA:cA,A.getMonth()-1)-31)+A.getDate())/7),2):0===E(I,B)?"01":"00"},"%y":function(A){return(A.a+1900).toString().substring(2)},"%Y":function(A){return A.a+1900},"%z":function(A){var B=0<=(A=A.I);return A=Math.abs(A)/60,(B?"+":"-")+String("0000"+(A/60*100+A%60)).slice(-4)},"%Z":function(A){return A.L},"%%":function(){return"%"}})0<=I.indexOf(w)&&(I=I.replace(new RegExp(w,"g"),D[w](g)));return F=I,G=Array(t(F)+1),b(F,G,0,G.length),(w=G).length>B?0:(B=A,k(0<=(A=w).length,"writeArrayToMemory array must have a length (should be an array or typed array)"),N.set(A,B),w.length-1)}e.push(function(){var A=E._fflush;A&&A(0),RA[1].length&&aA(1,10),RA[2].length&&aA(2,10)});var KA="function"==typeof atob?atob:function(A){var B="",I=0;A=A.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(A.charAt(I++)),Q="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(A.charAt(I++)),C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(A.charAt(I++)),E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(A.charAt(I++)),g=g<<2|Q>>4,Q=(15&Q)<<4|C>>2,i=(3&C)<<6|E}while(B+=String.fromCharCode(g),64!==C&&(B+=String.fromCharCode(Q)),64!==E&&(B+=String.fromCharCode(i)),I<A.length);return B};function dA(A){if(_(A)){try{var B=KA(A.slice(P.length)),I=new Uint8Array(B.length);for(A=0;A<B.length;++A)I[A]=B.charCodeAt(A)}catch(A){throw Error("Converting base64 string to bytes failed.")}return I}}A=E.asm({},{getTempRet0:function(){return H},abortStackOverflow:function(A){oB("Stack overflow! Attempted to allocate "+A+" bytes on the stack, but stack has only "+(5398656-S()+A)+" bytes available!")},nullFunc_dd:function(A){V(A,"dd")},nullFunc_did:function(A){V(A,"did")},nullFunc_didd:function(A){V(A,"didd")},nullFunc_dii:function(A){V(A,"dii")},nullFunc_i:function(A){V(A,"i")},nullFunc_ii:function(A){V(A,"ii")},nullFunc_iid:function(A){V(A,"iid")},nullFunc_iii:function(A){V(A,"iii")},nullFunc_iiii:function(A){V(A,"iiii")},nullFunc_iiiii:function(A){V(A,"iiiii")},nullFunc_iiiiid:function(A){V(A,"iiiiid")},nullFunc_iiiiii:function(A){V(A,"iiiiii")},nullFunc_iiiiiid:function(A){V(A,"iiiiiid")},nullFunc_iiiiiii:function(A){V(A,"iiiiiii")},nullFunc_iiiiiiii:function(A){V(A,"iiiiiiii")},nullFunc_iiiiiiiii:function(A){V(A,"iiiiiiiii")},nullFunc_iiiiiiiiiiii:function(A){V(A,"iiiiiiiiiiii")},nullFunc_iiiiij:function(A){V(A,"iiiiij")},nullFunc_jiji:function(A){V(A,"jiji")},nullFunc_v:function(A){V(A,"v")},nullFunc_vi:function(A){V(A,"vi")},nullFunc_vii:function(A){V(A,"vii")},nullFunc_viii:function(A){V(A,"viii")},nullFunc_viiii:function(A){V(A,"viiii")},nullFunc_viiiii:function(A){V(A,"viiiii")},nullFunc_viiiiii:function(A){V(A,"viiiiii")},nullFunc_viiiiiii:function(A){V(A,"viiiiiii")},nullFunc_viiiiiiii:function(A){V(A,"viiiiiiii")},nullFunc_viiiiiiiii:function(A){V(A,"viiiiiiiii")},nullFunc_viiiiiiiiii:function(A){V(A,"viiiiiiiiii")},nullFunc_viiiiiiiiiii:function(A){V(A,"viiiiiiiiiii")},nullFunc_viiiiiiiiiiii:function(A){V(A,"viiiiiiiiiiii")},nullFunc_viiiiiiiiiiiiii:function(A){V(A,"viiiiiiiiiiiiii")},nullFunc_viiiiiiiiiiiiiii:function(A){V(A,"viiiiiiiiiiiiiii")},nullFunc_viijii:function(A){V(A,"viijii")},invoke_dii:function(A,B,I){var g=S();try{return WA(A,B,I)}catch(A){if(VA(g),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_i:function(A){var B=S();try{return mA(A)}catch(A){if(VA(B),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_ii:function(A,B){var I=S();try{return nA(A,B)}catch(A){if(VA(I),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_iid:function(A,B,I){var g=S();try{return lA(A,B,I)}catch(A){if(VA(g),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_iii:function(A,B,I){var g=S();try{return eA(A,B,I)}catch(A){if(VA(g),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_iiii:function(A,B,I,g){var Q=S();try{return rA(A,B,I,g)}catch(A){if(VA(Q),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_iiiii:function(A,B,I,g,Q){var C=S();try{return OA(A,B,I,g,Q)}catch(A){if(VA(C),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_iiiiid:function(A,B,I,g,Q,C){var E=S();try{return TA(A,B,I,g,Q,C)}catch(A){if(VA(E),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_iiiiii:function(A,B,I,g,Q,C){var E=S();try{return uA(A,B,I,g,Q,C)}catch(A){if(VA(E),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_iiiiiii:function(A,B,I,g,Q,C,E){var i=S();try{return jA(A,B,I,g,Q,C,E)}catch(A){if(VA(i),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_iiiiiiii:function(A,B,I,g,Q,C,E,i){var o=S();try{return zA(A,B,I,g,Q,C,E,i)}catch(A){if(VA(o),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_iiiiiiiii:function(A,B,I,g,Q,C,E,i,o){var w=S();try{return vA(A,B,I,g,Q,C,E,i,o)}catch(A){if(VA(w),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_iiiiiiiiiiii:function(A,B,I,g,Q,C,E,i,o,w,D,F){var G=S();try{return PA(A,B,I,g,Q,C,E,i,o,w,D,F)}catch(A){if(VA(G),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_v:function(A){var B=S();try{_A(A)}catch(A){if(VA(B),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_vi:function(A,B){var I=S();try{$A(A,B)}catch(A){if(VA(I),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_vii:function(A,B,I){var g=S();try{AB(A,B,I)}catch(A){if(VA(g),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_viii:function(A,B,I,g){var Q=S();try{BB(A,B,I,g)}catch(A){if(VA(Q),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_viiii:function(A,B,I,g,Q){var C=S();try{IB(A,B,I,g,Q)}catch(A){if(VA(C),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_viiiiiii:function(A,B,I,g,Q,C,E,i){var o=S();try{gB(A,B,I,g,Q,C,E,i)}catch(A){if(VA(o),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_viiiiiiiiii:function(A,B,I,g,Q,C,E,i,o,w,D){var F=S();try{QB(A,B,I,g,Q,C,E,i,o,w,D)}catch(A){if(VA(F),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},invoke_viiiiiiiiiiiiiii:function(A,B,I,g,Q,C,E,i,o,w,D,F,G,R,a,s){var U=S();try{CB(A,B,I,g,Q,C,E,i,o,w,D,F,G,R,a,s)}catch(A){if(VA(U),A!==A+0&&"longjmp"!==A)throw A;ZA(1,0)}},___assert_fail:function(A,B,I,g){oB("Assertion failed: "+q(A)+", at: "+[B?q(B):"unknown filename",I,g?q(g):"unknown function"])},___buildEnvironment:CA,___cxa_allocate_exception:function(A){return XA(A)},___cxa_atexit:function(){return function(A,B){e.unshift({B:A,i:B})}.apply(null,arguments)},___cxa_begin_catch:function(A){var B=EA[A];return B&&!B.w&&(B.w=!0,qA.u--),B&&(B.l=!1),iA.push(A),(B=oA(A))&&EA[B].j++,A},___cxa_end_catch:function(){ZA(0);var A,B=iA.pop();B&&((B=oA(B))&&(k(0<(A=EA[B]).j),A.j--,0!==A.j||A.l||(A.A&&E.dynCall_vi(A.A,B),delete EA[B],DA(B))),wA=0)},___cxa_find_matching_catch_2:function(A,B){return FA(A,B)},___cxa_find_matching_catch_3:function(A,B,I){return FA(A,B,I)},___cxa_free_exception:DA,___cxa_rethrow:function(){var A=oA(A=iA.pop());throw EA[A].l||(iA.push(A),EA[A].l=!0),wA=A},___cxa_throw:function(A,B,I){throw EA[A]={Y:A,v:[A],type:B,A:I,j:0,w:!1,l:!1},wA=A,"uncaught_exception"in qA?qA.u++:qA.u=1,A},___cxa_uncaught_exceptions:function(){return qA.u},___lock:function(){},___map_file:function(){return GA(1),-1},___resumeException:function(A){throw wA=wA||A,A},___setErrNo:GA,___syscall140:function(A,B){sA=B;try{return SA.C(),UA(),UA(),UA(),UA(),oB("it should not be possible to operate on streams when !SYSCALLS_REQUIRE_FILESYSTEM"),0}catch(A){return void 0!==w&&A instanceof w.c||oB(A),-A.g}},___syscall221:function(A,B){return sA=B,0},___syscall3:function(A,B){sA=B;try{var I=SA.C(),g=UA(),Q=UA();return w.read(I,N,g,Q)}catch(A){return void 0!==w&&A instanceof w.c||oB(A),-A.g}},___syscall5:function(A,B){sA=B;try{var I=q(UA()),g=UA(),Q=UA();return w.open(I,g,Q).G}catch(A){return void 0!==w&&A instanceof w.c||oB(A),-A.g}},___syscall54:function(A,B){return sA=B,0},___syscall6:function(A,B){sA=B;try{return SA.C(),oB("it should not be possible to operate on streams when !SYSCALLS_REQUIRE_FILESYSTEM"),0}catch(A){return void 0!==w&&A instanceof w.c||oB(A),-A.g}},___syscall91:function(A,B){sA=B;try{var I,g,Q=UA(),C=UA(),E=-1===Q||0===C?-22:((I=SA.H[Q])&&C===I.T&&(g=w.R(I.G),SA.P(Q,g,C,I.flags),w.X(g),SA.H[Q]=null,I.M&&fA(I.V)),0);return E}catch(A){return void 0!==w&&A instanceof w.c||oB(A),-A.g}},___unlock:function(){},___wasi_fd_write:function(){return function(A,B,I,g){try{for(var Q=0,C=0;C<I;C++){for(var E=M[B+8*C>>2],i=M[B+(8*C+4)>>2],o=0;o<i;o++)aA(A,J[E+o]);Q+=i}return M[g>>2]=Q,0}catch(A){return void 0!==w&&A instanceof w.c||oB(A),-A.g}}.apply(null,arguments)},_abort:function(){E.abort()},_clock:HA,_emscripten_asm_const_ii:function(A,B){return IA[A](B)},_emscripten_asm_const_iii:function(A,B,I){return IA[A](B,I)},_emscripten_asm_const_iiii:function(A,B,I,g){return IA[A](B,I,g)},_emscripten_asm_const_iiiiiii:function(A,B,I,g,Q,C,E){return IA[A](B,I,g,Q,C,E)},_emscripten_get_heap_size:yA,_emscripten_memcpy_big:function(A,B,I){J.set(J.subarray(B,B+I),A)},_emscripten_resize_heap:function(B){var A=yA();if(k(A<B),2147418112<B)return F("Cannot enlarge memory, asked to go up to "+B+" bytes, but the limit is 2147418112 bytes!"),!1;for(var I=Math.max(A,16777216);I<B;)(I=I<=536870912?x(2*I):Math.min(x((3*I+2147483648)/4),2147418112))===A&&R("Cannot ask for more memory since we reached the practical limit in browsers (which is just below 2GB), so the request would have failed. Requesting only "+N.length);A:{B=I;try{y.grow(B-L.byteLength+65535>>16),f(y.buffer);var g=1;break A}catch(A){console.error("emscripten_realloc_buffer: Attempted to grow heap from "+L.byteLength+" bytes to "+B+" bytes, but got error: "+A)}g=void 0}return!!g||(F("Failed to grow the heap from "+A+" bytes to "+I+" bytes, not enough memory!"),!1)},_fabs:T,_getenv:hA,_gettimeofday:function(A){var B=Date.now();return M[A>>2]=B/1e3|0,M[A+4>>2]=B%1e3*1e3|0,0},_llvm_exp2_f64:function(A){return Math.pow(2,A)},_llvm_stackrestore:function(A){var B=kA.b[A];kA.b.splice(A,1),VA(B)},_llvm_stacksave:kA,_llvm_trunc_f64:A,_pthread_cond_destroy:function(){return 0},_pthread_cond_init:function(){return 0},_pthread_cond_signal:function(){return 0},_pthread_cond_wait:function(){return 0},_pthread_create:function(){return 11},_pthread_join:function(){},_strftime_l:YA,_sysconf:function(A){switch(A){case 30:return 16384;case 85:return 131068;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return GA(22),-1},abortOnCannotGrowMemory:function(A){oB("Cannot enlarge memory arrays to size "+A+" bytes (OOM). Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value "+N.length+", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 ")},DYNAMICTOP_PTR:X,___dso_handle:155568},L);E.asm=A;var qA=E.__ZSt18uncaught_exceptionv=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.__ZSt18uncaught_exceptionv.apply(null,arguments)},bA=E.___cxa_can_catch=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.___cxa_can_catch.apply(null,arguments)},tA=E.___cxa_is_pointer_type=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.___cxa_is_pointer_type.apply(null,arguments)},xA=E.___emscripten_environ_constructor=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.___emscripten_environ_constructor.apply(null,arguments)};E._codecDecode=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._codecDecode.apply(null,arguments)},E._codecFree=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._codecFree.apply(null,arguments)},E._codecInit=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._codecInit.apply(null,arguments)},E._codecSetAudioBuffer=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._codecSetAudioBuffer.apply(null,arguments)},E._codecSetBridgeName=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._codecSetBridgeName.apply(null,arguments)},E._codecSetVideoBuffer=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._codecSetVideoBuffer.apply(null,arguments)},E._codecTry2Seek=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._codecTry2Seek.apply(null,arguments)};var fA=E._free=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._free.apply(null,arguments)},XA=E._malloc=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._malloc.apply(null,arguments)},ZA=E._setThrew=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._setThrew.apply(null,arguments)};E.establishStackSpace=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.establishStackSpace.apply(null,arguments)},E.stackAlloc=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.stackAlloc.apply(null,arguments)};var pA,VA=E.stackRestore=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.stackRestore.apply(null,arguments)},S=E.stackSave=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.stackSave.apply(null,arguments)},WA=E.dynCall_dii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_dii.apply(null,arguments)},mA=E.dynCall_i=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_i.apply(null,arguments)},nA=E.dynCall_ii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_ii.apply(null,arguments)},lA=E.dynCall_iid=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iid.apply(null,arguments)},eA=E.dynCall_iii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iii.apply(null,arguments)},rA=E.dynCall_iiii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiii.apply(null,arguments)},OA=E.dynCall_iiiii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiiii.apply(null,arguments)},TA=E.dynCall_iiiiid=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiiiid.apply(null,arguments)},uA=E.dynCall_iiiiii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiiiii.apply(null,arguments)},jA=E.dynCall_iiiiiii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiiiiii.apply(null,arguments)},zA=E.dynCall_iiiiiiii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiiiiiii.apply(null,arguments)},vA=E.dynCall_iiiiiiiii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiiiiiiii.apply(null,arguments)},PA=E.dynCall_iiiiiiiiiiii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiiiiiiiiiii.apply(null,arguments)},_A=E.dynCall_v=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_v.apply(null,arguments)},$A=E.dynCall_vi=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_vi.apply(null,arguments)},AB=E.dynCall_vii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_vii.apply(null,arguments)},BB=E.dynCall_viii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viii.apply(null,arguments)},IB=E.dynCall_viiii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiii.apply(null,arguments)},gB=E.dynCall_viiiiiii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiiiii.apply(null,arguments)},QB=E.dynCall_viiiiiiiiii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiiiiiiii.apply(null,arguments)},CB=E.dynCall_viiiiiiiiiiiiiii=function(){return k(O,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),k(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiiiiiiiiiiiii.apply(null,arguments)};function EB(){function A(){if(!pA&&(pA=!0,!h)){if(p(),k(!O),O=!0,W(n),p(),W(l),E.onRuntimeInitialized&&E.onRuntimeInitialized(),k(!E._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),p(),E.postRun)for("function"==typeof E.postRun&&(E.postRun=[E.postRun]);E.postRun.length;){var A=E.postRun.shift();r.unshift(A)}W(r)}}if(!(0<u)){if(k(!0),Y[1349663]=34821223,Y[1349662]=2310721022,E.preRun)for("function"==typeof E.preRun&&(E.preRun=[E.preRun]);E.preRun.length;)B=void 0,B=E.preRun.shift(),m.unshift(B);W(m),0<u||(E.setStatus?(E.setStatus("Running..."),setTimeout(function(){setTimeout(function(){E.setStatus("")},1),A()},1)):A(),p())}var B}E.asm=A,Object.getOwnPropertyDescriptor(E,"intArrayFromString")||(E.intArrayFromString=function(){oB("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"intArrayToString")||(E.intArrayToString=function(){oB("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"ccall")||(E.ccall=function(){oB("'ccall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"cwrap")||(E.cwrap=function(){oB("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"setValue")||(E.setValue=function(){oB("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getValue")||(E.getValue=function(){oB("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"allocate")||(E.allocate=function(){oB("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getMemory")||(E.getMemory=function(){oB("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"AsciiToString")||(E.AsciiToString=function(){oB("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stringToAscii")||(E.stringToAscii=function(){oB("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"UTF8ArrayToString")||(E.UTF8ArrayToString=function(){oB("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"UTF8ToString")||(E.UTF8ToString=function(){oB("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stringToUTF8Array")||(E.stringToUTF8Array=function(){oB("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stringToUTF8")||(E.stringToUTF8=function(){oB("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"lengthBytesUTF8")||(E.lengthBytesUTF8=function(){oB("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"UTF16ToString")||(E.UTF16ToString=function(){oB("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stringToUTF16")||(E.stringToUTF16=function(){oB("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"lengthBytesUTF16")||(E.lengthBytesUTF16=function(){oB("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"UTF32ToString")||(E.UTF32ToString=function(){oB("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stringToUTF32")||(E.stringToUTF32=function(){oB("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"lengthBytesUTF32")||(E.lengthBytesUTF32=function(){oB("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"allocateUTF8")||(E.allocateUTF8=function(){oB("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stackTrace")||(E.stackTrace=function(){oB("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addOnPreRun")||(E.addOnPreRun=function(){oB("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addOnInit")||(E.addOnInit=function(){oB("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addOnPreMain")||(E.addOnPreMain=function(){oB("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addOnExit")||(E.addOnExit=function(){oB("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addOnPostRun")||(E.addOnPostRun=function(){oB("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"writeStringToMemory")||(E.writeStringToMemory=function(){oB("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"writeArrayToMemory")||(E.writeArrayToMemory=function(){oB("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"writeAsciiToMemory")||(E.writeAsciiToMemory=function(){oB("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addRunDependency")||(E.addRunDependency=function(){oB("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"removeRunDependency")||(E.removeRunDependency=function(){oB("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"ENV")||(E.ENV=function(){oB("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"FS")||(E.FS=function(){oB("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"FS_createFolder")||(E.FS_createFolder=function(){oB("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_createPath")||(E.FS_createPath=function(){oB("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_createDataFile")||(E.FS_createDataFile=function(){oB("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_createPreloadedFile")||(E.FS_createPreloadedFile=function(){oB("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_createLazyFile")||(E.FS_createLazyFile=function(){oB("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_createLink")||(E.FS_createLink=function(){oB("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_createDevice")||(E.FS_createDevice=function(){oB("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_unlink")||(E.FS_unlink=function(){oB("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"GL")||(E.GL=function(){oB("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"dynamicAlloc")||(E.dynamicAlloc=function(){oB("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"loadDynamicLibrary")||(E.loadDynamicLibrary=function(){oB("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"loadWebAssemblyModule")||(E.loadWebAssemblyModule=function(){oB("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getLEB")||(E.getLEB=function(){oB("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getFunctionTables")||(E.getFunctionTables=function(){oB("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"alignFunctionTables")||(E.alignFunctionTables=function(){oB("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"registerFunctions")||(E.registerFunctions=function(){oB("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addFunction")||(E.addFunction=function(){oB("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"removeFunction")||(E.removeFunction=function(){oB("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getFuncWrapper")||(E.getFuncWrapper=function(){oB("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"prettyPrint")||(E.prettyPrint=function(){oB("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"makeBigInt")||(E.makeBigInt=function(){oB("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"dynCall")||(E.dynCall=function(){oB("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getCompilerSetting")||(E.getCompilerSetting=function(){oB("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stackSave")||(E.stackSave=function(){oB("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stackRestore")||(E.stackRestore=function(){oB("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stackAlloc")||(E.stackAlloc=function(){oB("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"establishStackSpace")||(E.establishStackSpace=function(){oB("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"print")||(E.print=function(){oB("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"printErr")||(E.printErr=function(){oB("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getTempRet0")||(E.getTempRet0=function(){oB("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"setTempRet0")||(E.setTempRet0=function(){oB("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"callMain")||(E.callMain=function(){oB("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"Pointer_stringify")||(E.Pointer_stringify=function(){oB("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"warnOnce")||(E.warnOnce=function(){oB("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"intArrayFromBase64")||(E.intArrayFromBase64=function(){oB("'intArrayFromBase64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"tryParseAsDataURI")||(E.tryParseAsDataURI=function(){oB("'tryParseAsDataURI' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"ALLOC_NORMAL")||Object.defineProperty(E,"ALLOC_NORMAL",{get:function(){oB("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(E,"ALLOC_STACK")||Object.defineProperty(E,"ALLOC_STACK",{get:function(){oB("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(E,"ALLOC_DYNAMIC")||Object.defineProperty(E,"ALLOC_DYNAMIC",{get:function(){oB("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(E,"ALLOC_NONE")||Object.defineProperty(E,"ALLOC_NONE",{get:function(){oB("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(E,"calledRun")||Object.defineProperty(E,"calledRun",{get:function(){oB("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}}),z=function A(){pA||EB(),pA||(z=A)},E.run=EB;var iB=[];function oB(B){E.onAbort&&E.onAbort(B),C(B),F(B),h=!0;var I="abort("+B+") at "+gA();throw iB&&iB.forEach(function(A){I=A(I,B)}),I}if(E.abort=oB,E.preInit)for("function"==typeof E.preInit&&(E.preInit=[E.preInit]);0<E.preInit.length;)E.preInit.pop()();EB()}var __codecs__,__codec_id__,H264Codec=null;function __onmessage__(A){for(var B=0;B<__codecs__.length;B++){var I=__codecs__[B];if(I.id==A.id){A.id=null,delete A.id,I.destroyed||"function"!=typeof I.onmessage||I.onmessage(A);break}}}WORKER_ENABLED?((H264Codec=function(){var B=this;this.destroied=!1;var A=__GLUE_EXEC__.toString(),I=__CODEC_EXEC__.toString(),I=new Blob([["var Module = {};",A,I,";__GLUE_EXEC__(Module);__CODEC_EXEC__(Module);"].join(";")],{type:"text/javascript"});this.url=URL.createObjectURL(I),this.worker=new Worker(this.url),this.worker.onmessage=function(A){A=A.data;"function"==typeof B.onmessage&&(B.onmessage(A),"destroy"==A.type&&"function"==typeof B.onterminate&&(B.onterminate(),B.worker.terminate(),B.worker=null))},this.worker.onterminate=function(){},this.onmessage=function(){},this.onterminate=function(){}}).prototype.decode=function(A){this.worker&&this.worker.postMessage({type:"decode",buffer:A})},H264Codec.prototype.destroy=function(){this.destroied=!0,this.worker&&(window.URL.revokeObjectURL(this.url),this.worker.postMessage({type:"destroy"}))}):(__codecs__=[],__codec_id__=0,(H264Codec=function(){var I=this;this.id=__codec_id__++,this.destroied=!1,this.Module={},__GLUE_EXEC__(this.Module),this.Module.postMessage=function(A){if(A.id=I.id,__onmessage__(A),"destroy"==A.type&&"function"==typeof I.onterminate){I.onterminate(),I.onterminate=null,I.onmessage=null;for(var B=__codecs__.length-1;0<=B;B--)if(__codecs__[B].id==I.id){__codecs__.splice(B,1);break}}},this.onmessage=function(){},this.onterminate=function(){},setTimeout(function(){__CODEC_EXEC__(I.Module)},0),__codecs__.push(this)}).prototype.decode=function(A){this.Module&&this.Module.onmessage({data:{type:"decode",buffer:A}})},H264Codec.prototype.destroy=function(){this.destroied=!0,this.Module&&this.Module.onmessage({data:{type:"destroy"}})}),window.H264Codec=H264Codec;