From 5c5126c019b84895b4b4f8e29438168ca7f2ebc1 Mon Sep 17 00:00:00 2001 From: Aliaksei Chapyzhenka Date: Sat, 11 Mar 2023 19:28:58 -0800 Subject: [PATCH] new way of handling scope/vars --- bin/build.js | 118 +++++++++++++++++++---------------------- lib/command-handler.js | 72 +++++++++++++++++++++++++ lib/web-vcd-parser.js | 24 ++++++--- out/vcd.js | 6 +-- out/vcd.wasm | Bin 131483 -> 127007 bytes vcd_spans.c | 56 ++++++++++++------- wasm_main.cpp | 4 ++ wasm_main.hpp | 1 + 8 files changed, 188 insertions(+), 93 deletions(-) create mode 100644 lib/command-handler.js diff --git a/bin/build.js b/bin/build.js index 6b99768..ae5f8d5 100755 --- a/bin/build.js +++ b/bin/build.js @@ -58,13 +58,12 @@ const generate = (cb) => { Object.keys(properties).map(key => p.property(properties[key], key)); const { - scopeIdentifierSpan, + // scopeIdentifierSpan, varSizeSpan, varIdSpan, varNameSpan, idSpan, commandSpan, timeSpan } = ` - scopeIdentifierSpan varSizeSpan varIdSpan varNameSpan idSpan commandSpan @@ -73,10 +72,12 @@ const generate = (cb) => { .trim().split(/\s+/) .reduce((res, n) => Object.assign(res, {[n]: p.span(p.code.span(n))}), {}); + // scopeIdentifierSpan + const { declaration, - scopeType, scopeTypeEnd, - scopeIdentifier, scopeIdentifierEnd, + // scopeType, scopeTypeEnd, + // scopeIdentifier, scopeIdentifierEnd, varType, varTypeEnd, varSize, varSizeEnd, varId, varIdEnd, @@ -89,8 +90,6 @@ const generate = (cb) => { simulationId } = ` declaration - scopeType scopeTypeEnd - scopeIdentifier scopeIdentifierEnd varType varTypeEnd varSize varSizeEnd varId varIdEnd @@ -105,6 +104,9 @@ const generate = (cb) => { .trim().split(/\s+/) .reduce((res, n) => Object.assign(res, {[n]: p.node(n)}), {}); + // scopeType scopeTypeEnd + // scopeIdentifier scopeIdentifierEnd + const enddefinitions = p.node('inDeclarationEnd'); const cmd = objection({ @@ -134,56 +136,50 @@ const generate = (cb) => { declaration .match(spaces, declaration) - .select(cmd('$scope'), - p.invoke(p.code.store('command'), commandSpan.start(scopeType))) - .select(cmd('$var'), - p.invoke(p.code.store('command'), commandSpan.start(varType))) - .select(cmd('$comment $date $timescale $upscope $version'), + // .select(cmd('$scope'), + // p.invoke(p.code.store('command'), commandSpan.start(scopeType))) + // .select(cmd('$var'), + // p.invoke(p.code.store('command'), commandSpan.start(varType))) + .select(cmd('$scope $var $upscope $comment $date $timescale $version'), p.invoke(p.code.store('command'), commandSpan.start(inDeclaration))) .select(cmd('$enddefinitions'), p.invoke(p.code.store('command'), commandSpan.start(enddefinitions))) .otherwise(p.error(1, 'Expected declaration command')); - // $scope + // $scope module clkdiv2n_tb $end + // ^^^^^^ - scopeType - .match(spaces, scopeType) - .otherwise(scopeTypeEnd); + // scopeType.match(spaces, scopeType).otherwise(scopeTypeEnd); + // scopeTypeEnd + // .select( + // { + // module: 0, + // task: 1, + // function: 2, + // begin: 3, + // fork: 4, + // // extra scopes from Verilator + // generate: 5, + // struct: 6, + // union: 7, + // class: 8, + // interface: 9, + // package: 10, + // program: 11 + // }, + // p.invoke(p.code.store('type'), scopeIdentifier)) + // .otherwise(p.error(2, 'Expected scope type')); - scopeTypeEnd - .select( - { - module: 0, - task: 1, - function: 2, - begin: 3, - fork: 4, - // extra scopes from Verilator - generate: 5, - struct: 6, - union: 7, - class: 8, - interface: 9, - package: 10, - program: 11 - }, - p.invoke(p.code.store('type'), scopeIdentifier)) - .otherwise(p.error(2, 'Expected scope type')); + // $scope module clkdiv2n_tb $end + // ^^^^^^^^^^^ - scopeIdentifier - .match(spaces, scopeIdentifier) - .otherwise(scopeIdentifierSpan.start(scopeIdentifierEnd)); + // scopeIdentifier.match(spaces, scopeIdentifier).otherwise(scopeIdentifierSpan.start(scopeIdentifierEnd)); + // scopeIdentifierEnd.match(spaces, scopeIdentifierSpan.end(inDeclaration)).skipTo(scopeIdentifierEnd); - scopeIdentifierEnd - .match(spaces, scopeIdentifierSpan.end(inDeclaration)) - .skipTo(scopeIdentifierEnd); - - // $var - - varType - .match(spaces, varType) - .otherwise(varTypeEnd); + // $var reg 3 ( r_reg [2:0] $end + // ^^^ + varType.match(spaces, varType).otherwise(varTypeEnd); varTypeEnd .select({ event: 1, @@ -207,29 +203,23 @@ const generate = (cb) => { }, p.invoke(p.code.store('type'), varSize)) .otherwise(p.error(3, 'Expected var type')); - varSize - .match(spaces, varSize) - .otherwise(varSizeSpan.start(varSizeEnd)); + // $var reg 3 ( r_reg [2:0] $end + // ^ - varSizeEnd - .match(spaces, varSizeSpan.end(varId)) - .skipTo(varSizeEnd); + varSize.match(spaces, varSize).otherwise(varSizeSpan.start(varSizeEnd)); + varSizeEnd.match(spaces, varSizeSpan.end(varId)).skipTo(varSizeEnd); - varId - .match(spaces, varId) - .otherwise(varIdSpan.start(varIdEnd)); + // $var reg 3 ( r_reg [2:0] $end + // ^ - varIdEnd - .match(spaces, varIdSpan.end(varName)) - .skipTo(varIdEnd); + varId.match(spaces, varId).otherwise(varIdSpan.start(varIdEnd)); + varIdEnd.match(spaces, varIdSpan.end(varName)).skipTo(varIdEnd); - varName - .match(spaces, varName) - .otherwise(varNameSpan.start(varNameEnd)); + // $var reg 3 ( r_reg [2:0] $end + // ^^^^^ - varNameEnd - .match(spaces, varNameSpan.end(inDeclaration)) - .skipTo(varNameEnd); + varName.match(spaces, varName).otherwise(varNameSpan.start(varNameEnd)); + varNameEnd.match('$end', commandSpan.end(varNameSpan.end(declaration))).skipTo(varNameEnd); // $end diff --git a/lib/command-handler.js b/lib/command-handler.js new file mode 100644 index 0000000..7abc327 --- /dev/null +++ b/lib/command-handler.js @@ -0,0 +1,72 @@ +'use strict'; + +const handleScope = (info, str) => { + const [type, name] = str.split(/\s+/); + const ero = {kind: 'scope', type, name, body: []}; + const current = info.stack[info.stack.length - 1]; + current.body.push(ero); + info.stack.push(ero); + // console.log(ero); +}; + +const handleUpScope = (info /* , str */) => { + info.stack.pop(); + // console.log(['upscope', str]); +}; + +const handleVar = (info, str) => { + // reg 3 ( r_reg [2:0] + // 0 1 2 3+ + const eroj = str.split(/\s+/); + const ero = { + kind: 'var', + type: eroj[0], + size: parseInt(eroj[1]), + link: eroj[2], + name: eroj.slice(3).join('') + }; + { + const m = ero.name.match('^(?\\w+)\\[' + (ero.size - 1) + ':0]$'); + if (m) { + ero.name = m.groups.name; + } + } + const current = info.stack[info.stack.length - 1]; + current.body.push(ero); + // console.log(ero); +}; + +const commandHandler = (info, cmd, str) => { + str = str.trim(); + switch(cmd) { + case 1: + info.comment = str; + // console.log(['comment', str]); + break; + case 2: + info.date = str; + // console.log(['date', str]); + break; + case 3: + handleScope(info, str); + break; + case 4: + info.timescale = str; + // console.log(['timescale', str]); + break; + case 5: + handleUpScope(info, str); + break; + case 6: + handleVar(info, str); + break; + case 7: + info.version = str; + // console.log(['version', str]); + break; + default: + console.log([cmd, str]); + } +}; + +module.exports = commandHandler; diff --git a/lib/web-vcd-parser.js b/lib/web-vcd-parser.js index 4750f28..f2a275d 100644 --- a/lib/web-vcd-parser.js +++ b/lib/web-vcd-parser.js @@ -5,6 +5,8 @@ const EventEmitter = require('events').EventEmitter; const dotProp = require('dot-prop'); +const commandHandler = require('./command-handler.js'); + // function _waitForStart(mod) { // return new Promise((resolve)=>{ // mod.addOnPostRun(resolve); @@ -50,6 +52,7 @@ const bindCWrap = (c, wasm) => { }; const getWrapper = wasm => { + // console.log(wasm); const c = {}; @@ -115,6 +118,7 @@ const getWrapper = wasm => { // console.log({name, time, command, valueWords}); + // const view0 = wasm.HEAPU8.subarray(value, value+(valueWords*8)); // const view1 = wasm.HEAPU8.subarray(mask, mask+(valueWords*8)); @@ -159,8 +163,13 @@ const getWrapper = wasm => { break; // path to path (any type) case 3: - tmp = dotProp.get(boundInfo, getString(v0, v1)); - // console.log(`for ${getString(v0, v1)} got ${tmp}, set to ${prop}`); + tmp = getString(v0, v1) + .split(',') + .map(e => dotProp.get(boundInfo, e)); + if (tmp.length === 1) { + dotProp.set(boundInfo, prop, tmp[0]); + break; + } dotProp.set(boundInfo, prop, tmp); break; // create empty object at path @@ -168,7 +177,9 @@ const getWrapper = wasm => { // console.log(`${prop} is new {}`); dotProp.set(boundInfo, prop, {}); break; - + case 5: + commandHandler(boundInfo, v0, prop); + break; default: throw new Error(); } @@ -221,9 +232,8 @@ module.exports = async wasm => { // console.log('getWrapper', lib); await lib.start(); // console.log('vcd wasm srarted'); - - const wires = {}; - const info = {stack: [wires], wires: wires}; + const wires = {kind: 'scope', type: '.', name: '.', body: []}; + const info = {stack: [wires], wires}; const s = new stream.Writable(); @@ -245,7 +255,7 @@ module.exports = async wasm => { const cxt = lib.init(lifemit, triemit, info); s._write = function (chunk, encoding, callback) { - // console.log(cxt, info); + // console.log('chunk:', chunk.length); const err = lib.execute(cxt, lifemit, triemit2, info, chunk); if (err) { console.log(err); diff --git a/out/vcd.js b/out/vcd.js index 711fd42..bbdafd4 100644 --- a/out/vcd.js +++ b/out/vcd.js @@ -3,14 +3,14 @@ var createVCD = (() => { var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; return ( -function(createVCD) { - createVCD = createVCD || {}; +function(createVCD = {}) { -var Module=typeof createVCD!="undefined"?createVCD:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=(url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];function uleb128Encode(n){if(n<128){return[n]}return[n%128|128,n>>7]}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function=="function"){var typeNames={"i":"i32","j":"i64","f":"f32","d":"f64","p":"i32"};var type={parameters:[],results:sig[0]=="v"?[]:[typeNames[sig[0]]]};for(var i=1;i=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf);Module["HEAP64"]=HEAP64=new BigInt64Array(buf);Module["HEAPU64"]=HEAPU64=new BigUint64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||1073741824;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="vcd.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["k"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["r"];addOnInit(Module["asm"]["l"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function getValue(ptr,type="i8",noSafe){if(type.endsWith("*"))type="u32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return Number(HEAP64[ptr>>3]);case"float":return HEAPF32[ptr>>2];case"double":return Number(HEAPF64[ptr>>3]);default:abort("invalid type for getValue: "+type)}return null}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function setValue(ptr,value,type="i8",noSafe){if(type.endsWith("*"))type="u32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":HEAP64[ptr>>3]=BigInt(value);break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}function setWasmTableEntry(idx,func){wasmTable.set(idx,func)}function _abort(){abort("")}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP64[buf+40>>3]=BigInt(stat.size);HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;HEAP64[buf+80>>3]=BigInt(stat.ino);return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}var MAX_INT53=9007199254740992;var MIN_INT53=-9007199254740992;function bigintToI53Checked(num){return numMAX_INT53?NaN:Number(num)}function _fd_seek(fd,offset,whence,newOffset){try{offset=bigintToI53Checked(offset);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%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"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"a":_abort,"j":_emscripten_memcpy_big,"i":_emscripten_resize_heap,"d":_environ_get,"e":_environ_sizes_get,"f":_fd_close,"g":_fd_read,"h":_fd_seek,"b":_fd_write,"c":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["l"]).apply(null,arguments)};var _init=Module["_init"]=function(){return(_init=Module["_init"]=Module["asm"]["m"]).apply(null,arguments)};var _execute=Module["_execute"]=function(){return(_execute=Module["_execute"]=Module["asm"]["n"]).apply(null,arguments)};var _setTrigger=Module["_setTrigger"]=function(){return(_setTrigger=Module["_setTrigger"]=Module["asm"]["o"]).apply(null,arguments)};var _getTime=Module["_getTime"]=function(){return(_getTime=Module["_getTime"]=Module["asm"]["p"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["q"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["s"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["t"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["u"]).apply(null,arguments)};Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["addOnPostRun"]=addOnPostRun;Module["addFunction"]=addFunction;Module["setValue"]=setValue;Module["getValue"]=getValue;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv>>2;args.forEach(arg=>{HEAP32[argv_ptr++]=allocateUTF8OnStack(arg)});HEAP32[argv_ptr]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +var Module=typeof createVCD!="undefined"?createVCD:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;if(e&&typeof e=="object"&&e.stack){toLog=[e,e.stack]}err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",function(reason){throw reason})}quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process.exitCode=status;throw toThrow}logExceptionOnExit(toThrow);process.exit(status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="vcd.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(binaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(binaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(binaryFile)})}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(function(binary){return WebAssembly.instantiate(binary,imports)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["k"];updateMemoryViews();wasmTable=Module["asm"]["r"];addOnInit(Module["asm"]["l"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP64[ptr>>3];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort("invalid type for getValue: "+type)}}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort("invalid type for setValue: "+type)}}function _abort(){abort("")}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return()=>{crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return()=>crypto_module["randomBytes"](1)[0]}catch(e){}}return()=>abort("randomDevice")}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload=(()=>{}),onerror=(()=>{}))=>{var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload=(()=>{}),onerror=(()=>{}))=>{var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var MAX_INT53=9007199254740992;var MIN_INT53=-9007199254740992;function bigintToI53Checked(num){return numMAX_INT53?NaN:Number(num)}function _fd_seek(fd,offset,whence,newOffset){try{offset=bigintToI53Checked(offset);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%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"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function getCFunc(ident){var func=Module["_"+ident];return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;itype==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return function(){return ccall(ident,returnType,argTypes,arguments,opts)}}function uleb128Encode(n,target){if(n<128){target.push(n)}else{target.push(n%128|128,n>>7)}}function sigToWasmTypes(sig){var typeNames={"i":"i32","j":"i32","f":"f32","d":"f64","p":"i32"};var type={parameters:[],results:sig[0]=="v"?[]:[typeNames[sig[0]]]};for(var i=1;i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); return createVCD.ready } + ); })(); if (typeof exports === 'object' && typeof module === 'object') diff --git a/out/vcd.wasm b/out/vcd.wasm index ec0364917f2bf5a0728f5f4838adf74be9fcb91a..394486004e9b88c23a865e31f9b6911c97c0d440 100755 GIT binary patch literal 127007 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

eYIl|- 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 DrMttQ literal 131483 zcmdqK3%p%dUGF=`m~%b$nrmmzq-jW#Lgrd+F{OzOT3Uo+_lP!a`hbYogWlt%T)h|E z8-%23EFaSBU7FU2AXNbo3RI}JKnq14Rw)voK*e$>FRg+SjtCqNN>mP3M0&r!{}^-a zwIAt29^P~N*lW)5{Ez?mkN<1@$C%kOFMF=bvdq0E|Dj9WoSVDU&&_4}!=vLVpR>m{ zKk=#6JSZo-v{;m!-m^=)R*F9~lj>%dc2Xi~t+@mIlUE&FFN$GAT4QUWn&xypinEax9zD5yk`R-Qcz-186@<0Ay|Y zIbip5`+-^GAjbou@&)(--VV6^!smVshB}nquQx+y`nghXYKOvC8p;n`n#b0tc|bU% zCjVsqNj>*W_sndHzyDX(t9kwfOPR?!`KO9c z6d9#*QZnbVJqzb;!xds$Yrv%H&kd?({Yy*fY9 zji87MPjOXI`AI)Xoh}XftW)Ov0=NUxNB28DPuFgOmI{|EwRpsY{_CyIR{em6MlsT- z7*;Re46q&Fn^@mj-^pF>1p)1JvaFqzWxFi1cG(6!wC_&MiVYk6hK&)h6IC?pxD%bw z(Vyt+zpSXLqG%OGuXxO9tGlhDySiKWPG@!21t%b**s}Epd#hF*x9W7~1)Jw@o^^x( zTBD_s0Rf`VfCdN)s_-{wFl)DE`SE?anV9JHdPPA2s-B=fEB&j}cDqH+KmC5|k*!Bg#(&C|{)vCvkJ_}Ry{6r6KPrn4mdBrN^U!J)y|(`Ig<(!V z!eG7@GRS?=a?j6>`W6#4KhJ-@JptKXu5<^I(DZvK1u&H3p!<)0}&;67d4?>|+1l9h80Pyem> zrvF%Rck!?OPm7Nhe^T7V(?>}AaPgty&SLNZcYprx`DgM^<)6quo_{R=)BI2JkK`Z9 zKbXHie_wt_{zv)m`uXD9`5XK{=123d<^PcXef~lJ)%<_vf0w`6e1f z$p07Zd_Di?{GakoH~1U;b?ylN{*U~K+w@w0J+G&q{u+PNl9yNe-?p6JQqK6xm76|T ze4u!Lapk7N#rujsE;hZlxTAPa@khmH{b&6j7Pl9FP`tZ%SF!1x#qSqyFK#P7=|Ab; zR=l;iwYa5tOR?$A#hZ$oi<^qyD}J|lWATP!)9(~F6t6E{SG=~kzIaXXYTCWq|90`J z;DFvW4qh`X7L-vuNT)9FDrhn_;h|xes_L2e@}i_ zerJBK`%VASLVsUUY`WFm>UQkd@qT~$?Cj!~Tih+mIczzLUVgRsm15JO;+Km}*A~|l zn+_IN7n|PVUj&`-a}_^V-kzU)<)#m~54d;dx8}Fy@5(p5HGg~l&V19`^54(jk@xO< zUFQ?U+N{p1Clu3lw%Hd`Wu0w>mz*$4RI*<7REHgz<%C|U+RcDrOd8~O{2 z>65Zh%?^u`Gt&I*(5unv_(5(3NSYb6YG3EIo277_@zkpGSqi)A&uCl?Rl|Iy_93gT z^%Q7TSJXwwo{&wc>^|48 zpRd->^v~u;IC4}yE59Pl(RXXR+YjPmas6}$exc{djILW(4vSdpr+IgEansDe3pu`N z(f}eWwyVybB0K~)Tjx*6va-(0zj3Z*^I3h_GiS`&u&Dmp4YP|WiKrO106HILY0~`; zx)P*@OSP7rJL$kNY0QE!>q7w?^umu&?q-MCB&gJ&&z;PyY)oY~hV2<3Z_lKs9ceDz)Jtw_b`@RfJ98QfIKaB5b^$(f(_(?UY%Y7h*?&jp&<8}8?y&Ti<%?J?pZ zkD3NYc*|t?=gB(XSbf!(!(3?2!`u#$6?6<}?eoAK3+R7(s)n0~0HzLjs&04ZPWo_o zlytaB$_80D{7!*M9Uu}g;ktJ+BN?61Q?pJ+?Nd592q)ak1100Em3nMCwNVN@ws(+}4caw} zP03z~Y7*qu9n$jw6au{_%;zyF-8 z2Ymo5uGv1{{4;m;pjZ1*{%~@8eQ2$7X2y;J~Xy?Uy#ULQ@GE z>sg)AY6D1mEgR%N9Uxobo=l8s(*B>^HEeHu0VLAid+Yw2hV3vlTWt+h-JXRcTBqhu zZ>EdqT}HJ{TbIBsTVWb@Tlek%{;pw{rn;%At~FIdaI^5S*xLCJ2MtXRKuErQ>ROw+ zZ{I(4HI(Qei(zqKSbpbe>khD@sR#; zp_PaDeCnAS%|~elX}18*8TL> zKd|2tSJ%gry}DjYa>@je2ZrLxD$W!}NWDQy9UkbJwe>V>$k$c9=8{|MRrNX=T2)tS zNJA6s49&;>JY!xF}IG2M6ky z7iTY?0`A&@=+^OYP!!SD@_aI_tVH6j^am)BT?F@mxy%kbVP2BDSr)CZZKgK96YkI8 zQq@+7s)oTa;P_I-{7wa@vt)ZZHQy#mdi=rd*;8-TQ>{PM!GplY!)EhRc*lydXpPIT z^vI*QDqOu#LtN9Hm1q3)&dR%t???vYFK-fqkD}8_M~gau3!j74cA<198A3J3@(~f9 z>a(-Fv?8%$>Y@ND@=m7-I$kZ{}A)H@G{J`x|wH?-YEQcWi`jOwr40&tLt6q^ab zl}oF6A#$tfiNv9+o?3hK6;=2Q3ZnAE9_?i z*wnD!R*!=M{6+i}OmcN@RtiVeQwNgeMeIUiuoWlKhI*Z}#k$K>Y^XC@&o`q6WYw>E zwZ;+?9{H(DDN4hxy3K2Tq!Ru)Dla{fp;9gDdVC&Qc{c43fDLf1n^=!z13i)f zjL2vNAOMGq>Q|wpNFc?`P|z?kBNK*CzM4;CcGZp24fkze>Qr_Z>)AY*hB9PfOA&~5 zvI`h3Y6pY;i49uYMfE|*S=bPP+6yyj!_*6^ITNb7l&YRuy%gSOR4B-8hzpQg*={Ii z8LYue$q{n(Y^~Zae?%nJ8&PQ?3(>O{C?z!4Mo5O?G?P-3v+BhRlqP6n^ivu#!zgfIJRMeFnT1WVZ!lC$au%55m!%hnCB+M+>A z1$n-Dp=Q7=x(vS<;10^a+v>_xv5X41pI-VeU3}d^?&03wl3qK6o=7TZ!WFyqyK^IQ zKi@aZ_6=RgcgMwuW*HpWu%3|bC1d_oZM1Qw@emJc1q^nFxztLUg+>q5{+D(~GGa=h zpT2O-Jb_3pN<*01qQN~PbMOZPFe<_>Af?}zG&vH1>|8uao`4Aus%pWsX7^Al+q)Zt zF#OrwuqR+*q3#P6i5fs_U+C_JUuG)m8CCH6La}@3_5hC4yW1E1l6N@XSDC#L;Z z4Fed(b7Dwj<@@#y3z^-9YRqG>MRoP7Stwxvj8*F&`4GV{zKax%&=~&Jt{4njI}hp^ zgon>Xboa1aSS84)?+I3Ae;s;tBplD;7U`j50`9=&(|%gxsD>t>cv{PoRDDpMN`g9# zvDi6u8;#+yPB$XgrQw>RW3yjBn2_w{N2wQH-s-z&o$YHk+ZH+Lb$w7}^8 zirs^DgX1nf0x+y`rzJY4*D&vQPG%dzCLYmvJJbf+(1lj{ng8}VGodn~W)-j`!u*j< zmLj5NT>$R<{FJ3Y*5G++pJ;1O?f0-a5NP7W;rN+-tmi%WdrEY$vDt7UtIYgG`T>S4 zoB++aeY5=Cv}5C5X%caUn#n+9K7}DVG{x4i(4a(tw1HkvvL>*F1b`;PBenS87uC@1 z*hpq;BYk+FV)7i=Glndu0Bzv?s5@GFjGL9tGPdc6@865HK8A;ZR3s5yK0Qu$te~9( z#v$s9gom8i$haX*hJ<^>nI~&)X`UeX0CS8&5t$fMEj&Rg>!tVTp+EFVnk^yDv~G?UbPZn|6{M?3x>^O$vWU|(lB^FC9&uI^1&POGnpklqDx#Jf zX8;mh60itkUB;nIFEggi^dgDGencw9;#hzxZmU2IBq1o4H>x7S)nYb252lSFv1DlD zi;)3&q_UpDHQ-1`4M%B<|80eei(0pk&4_`Hcx=;LqTtg}QgA)p_8Qft+1u?waNhBn zHr`3vekTv}H%Qqp^h!|_vHnbW{_b$^n?LjB)@1_V&ex<-y}Wstugf8h6R?V-a0rEh zyo)C%!gbceFsHLa@v#G%x!AX7i4wbr0aLo2JJHHrkP1(k$@3&^u!F$><|OB z)dYl0FZNyQVq4&G7AQ=mSwZG!;a3SDfW}T!AHLcf?HQ~#IoM+|#apx0-VJ@J;u`&V zlP%bdxCWK@@qNZ<>E19cYy(s%BrBzY#DPnxNa!;>V*l)rX5cU0LzZBIb+yCh8Ptzb zcuBYsW~38`msqoPCUWK3^uIE)^JYSeu?dZ+flP!P_5yZHS_+Gwsl->4)7@+#yYLbv*)y_1 z5~?=;s#abrY?j2h0wjdaZcPyDil>c3QI>jOHHx+no4oOqkCvjJ37b*j!qmkRwfCFyZxZ zzvPMXyHGhL_6>80&uDJP2JlG^LND0~$ppbz$fL0Ug+Ndvoz`vg5rHYKFxYXWwNX(QlvcLJ zq{fUXt&j^!D|E1@&QV$s@O$aejVZ12nY3lioLINF;|Hr4dYYMm^V5xntzi{3Z)0L& zz@l`JG>o+2B>h${AGXt?ev59$C8BR3_eK&t0YRF0au_5~dL)6j=|g!5Fj9QFErb!Gv*0z=S|Ari+$vA#^eI z!d|3F;j55h8JV=La%v>1gaIb1%oeDUiKl?5(vPT8RG}G+lV{eh(;!8abRcpBs`$es zbWsqXO6v$)N>qsyduXQAic|^hM5=_B?q$H^rj!<;b$%j_Wur>G4bjjYr%I%xJQ%GJ zRU-QmRRX^a%$wCk7f@vusgjOGl{vW2M^woswdMe-L{k)1inQ^{L6yc*a?J*O!KjiM z5LM#(i|FA;i&pKTe?(eM>)Z5P5%Adh#?b|RAjMFuQWa~+u#T%i>{6{;6+=VUC|EaGZel)nOdS7krkdYH3$c$NApYYu8g%!1~3uEAwq*+$V`E+GP@uI z{ToC`>L)RbOM~s(l&y_iDZ^=fNQu!zY5hjVEjAPx_mU+dAv^96VnSA0B7m(W!jJq? zwnR***cP;w2py#*g3|TSmIxAgoN>1nybZ0!+aUT}@HS|PSm!6!euX6h^5AxhS4XSv zrq!XDl#>fmgJ-X_I@+v`_Gop$gy>7F1GAx79j%4c(T=NwX5ra}i}m~@1o30qM~MKUAe6zqRRhQXwZFwqZ5H1*WRZ5{|M0~vF| zFWYU%vy*|j{Ak~G6zqbZhS$(VxbRcVis7Iz<1WHpBp)%dn-X$ngG9}+m5?k--as?; z6eZQD#paZ8jcgKsl;lL0mEX3}WldScySPl3O`0F97169wfjChU{D!XAr_Es=`$H$w zf+t+b4IZc=!UOOH1rD%msL^i5lTUkVqzj7?nI!NfB-ct zx*TatQI|EkG$5$IRF^HHF3X78Mx2<^i8z@<$`f}ZsgItMh!ZD9Byw$(Q>GzK{9!I; ztW6nO&{AZD+TDb&F*ZyPQ3LulBZ=CBW;QAgAR?L}gpOgj$)T32JEk|Y`Ht#B^c5}G zMJ(YJ?V^RYeVYICCi9W!YUInBT5dF1iz^sS3oVXAE1F~nWe{N;vy)b&Ee7=fv<12s z(^kY{q^)Ep8Ew%FwABzg8%E2?Y{6s_?JSr~-w~Ntbj#^A=t%uJ?+ z%ot`OGa84umy;RkYlr4`H747TnTTZ>39+W49gII~M0E;Dd?32Rf`1@WDi4kVOHHX{ zc8J&|P;9?gl18SKiIzpe1X6o&OA5n=r8MsTw=E@77To{N1TyT0-LGR?QV0cEQhuo= z)$!B%x3Q))GIcuATS2g~bz;x7TJhGi&^1KZ({iKAHbosAi$Ku@qe>bN0-BbiQ3ZXP zfJQNk+lrFW)&UGh+*F*TL75P!{%B7ctRd3O@i7@~44Ap6Xlb4@yk+oz+bRr%Gh!9t zMD1l#%(Cj`d0C~$*X3dT-mw1ivXxa?3=GCs_=?;@gn4>>UY^V@t<}@klNJ^*h@Z0+ z`|C`zA}Y#~HDyizX3jRw=KO|kSU0UY^1LcJ4AjeYplipFv6!rvSnn!nF z*rFI~Ss_TOv7aW0tZ51pZK6blm$0ByHMM!|K|)B%^+2>W%R;T0R88RhOShr4uwdQ= zE=zYch}i{z9#u9R&Y~kZ57RTZUORwROaR3V4nV(kSX|509Y(2{y_Gm2hENyRDjcL$=Y%#=btEs7k@Kl4fTv|}D1wdl%843U7 zXqXlg9>cqBE`cb8w;S_`Tqgz)0U3VpA7ua*g|3k(1f3s?RESaG5Pfi$r4VuGUN4Fu zXH*&i40pB5$|#dOWxhCo>6{i!WRb$#U&iYUE9;V8&Qh13E7mE=BI17 ziw%+{GSo7LY|7X_iiW(hd7hu2ds^MzWx<>|0bfw~SgB#Rd86DV_4wOQY}79D1TLe6 z^0YMewk$#v(aeql0*NTm@opfEWz~w5LSSj3DhR5vG8W94-W3ZfDys8q_$jVQ$v`zn zvEc+;i`#`=9%AQa%xh{%o4#=TbJPs(NB}z@8>x&^n-X7WyRqDK@I8RQQ|yU+fx|G+L%c%O)zd zoCO{leL72zpIwS0Ew<+h_k7Z!gAGy(F{8GUTS}&E&dWdno84=O4Z~WiO9lJ$GdnC< zoa_$3-u!kKSzJ$Hty&rLjuM0<_Oy#dLR}JtNXOgs2TYurpKk$(3N+;9@dIgTV_wEe2QAG%?Qv+McEo_vpJGiL0J~T30tuYPxEi3(5w_f+g9m|QLgAnj zB)UWLyEZFI)Os}|wdiaGe7e+<7At6GU^zX8Y+x2~usE=ZfgO+N!Cnk_DrYl7sonyO z%|?_GctZT9{;W?ZZRv&RHlg%Mf-Wbb7hZW2&Q2o4iwg;4g~}NhByea%QFUo?owYl- zUttzNTkHT<5rMlJ1u9o9utBcSgW+y0x6Y%?DkMXDuq{aw<7h88j;6=0Ss6O}k~)Bg zr{Rf_2X2x0jQn$J26N3)!6zW7wzB#~=9Faa`Ljc3aB6L(1gFO)z4}9UZfXQZD>gr; zV*r`liEvj%XF+(54zR#rGKZ*;S6Y&l$VrAVP(l*Q z2MCFBI(E>+zM=w2Mc8g$BBqt1n=T*v%aEr-e=982KMS}%VHB4`O%1_j*M!&2v!G{1 zE9g?F(DU{e*F@e6{6%Q1S0L3h#%A&L%=S5q6xf8x|A&evIjLlVZT&!kAy3(P@S}pAQ9=2ki&6T7r3V_BWu}J&U@}n6pv~-a;#RClf!VO% z@}-<6}w=OpQ_Fps9-3F^j5-~v@*GNh6{kJ}5ZH`UgTp4N|^PHdVI z^t;3QJwx;U*J{_@y8S9JTpfVBz~mv(e45#6ot3YTKiUD~P5w%Lr~tzoFhQY~*Je}F z_Qq9?zElpIi{81-LX67EiBe7$sVnQ1A~nC6X{?y;XdP$eah9d!VA@T8brETj{QJ5}<}53mYtVC@OiiZ0kiUF}Ha~6&I>yUrn;wSVJW7_$1A2QKdo$FF8D^ zoLxqXL#BE5mfHQ7Jt9u5huYmVQ*t!Y76f8NpvW+dR7ezd`5?xEMI&o&jV`EWyM+8U z#zOSfdf86X5TY3icer?h0dCwfLrYu+@$W)gI*(WXEtq+A3O>F9eJ~I6?59-2VW)bs zcqW=)bIq8$(0K6(F_;8 zs1jBs&8I8PCv@eDtMGuqDnpO+MGGz#SDirH9ul&HBIxPFTS6!b$`}6)nT!VsWh<0& z%71k}KhT_)hBBokycf4gG<2e&=|@`dl}-BB?$2~U&Tl{aS}4nJFAgf8=GZ+ezgc#oInrf2bkFr2TRroj8hN*lIQN@(|s zRg{<9r@hm7Ov(HeD5shm=Bj~2DmgA5ohq^=c_z6aiM5}DXPW_IEn;k1%~3mK?O6N* zIA>d?+)&=&2xW~#(g9yo6@f!LeKQIv&bq!JF_dogGFNNX6!!qrWOsKq(0JWGUr`6C z9Py9D2EH~Qw(LCn%N#AWs!|a_oam)4#H3JbKa>lF2BqAmlw!?hskH z+CRsXdi;MEh3tF-2%5*4WgBsfxOs!Jh)K|N3bc))wA%e*d1pR4bk(I@M4)6IYKO#J z*9eW~IA~a%g$3j)&Z$~dkhq$k2B!pI?ZCBayDD8`BNXdn49?4}l%o-T6i!jkZHW=A zPBtZ}-Xofy7GnXV_=mC`z$TSq+Ya*$wFeAOw9}UUODzz@$uw)UOQR(uAom_&MS!aP z82Csn=HIjBw%MP&y2NBaqoRR$oNpq`ABKk1DF$0U?b$z%aOpg7&ADH7I9^KD5W`#; z+7HXnh$WO*4aI+fM9-Ty#0a;E_&Th%G&tDOAb?qKiqcaNU03GLitKunw9w-zKn4fX z8n@67EKqHtF>;m=la`eqe#o=m~VIQ+$JDghBhvH4_XK9i3hRpB;PjsZL7Q4hH<0hWEmxkOpkh*F|tJ|@)Lv?T{~Z&Nd@VR zSl0ZRz|FjKPkH)^_AuhDM|jc9a=ZA=jtZbpN|H=`j0v74ZVBwz!4gB>?y<1jaGDvZ zL3`hF1k4xm@@L_sv1FFN43A-VTw6UbAa?3Htw!*-cVZ1hsPk=C)(woawJfYzzkcA5-mhN6KQ`)^a zG~jG+v@SK%}|gX3zaQsPMYUZqfcIa zS3NO`u+*UGWh}#p! z-P-tvlVTx72JbnurW%V?r*S9uC5v3%R)abR5liiZ@>WZ!tHJWs9IobV4#kT6rzzMNEiJMWl0`?Lbx^(3Tx#v=C62pdE~Z4gy2#2s5#a?WzIr+|Wm_i@3?A#a zdlDT)EDRkDZgjDNCfPA;6j5!`I41O^`2fitc?$2`e9~+%zQl8cliBl6ky(fKAX-xb z^K0olHnswb?`rhh=y}R)x~ivXFy`*n+BI^Z;cRFmWMMms5}9UMzoCzI-XNxnySvw!a3A=`tEG zjNf<+jL#>G&m9Zl&lJL=apSctcr_z*MVx=cxppD}nMG+^7Apsxn8jv%+cprzFXTGN z@#rvbVXkDrj8NMXQqp8Z>IWBo_$<~6C-qR3Nr7utzvG5o>MG|vp`P==9CR+iUjnBH zTxS^2)zEfksz)J#ZU^1fBQ^Vi0TpuA&UHtB6Cmv0ZST>5nkr?`M3+>E5O4Np$R)KT z?PR5ul!#ur43Ff9*m?{ewGgy<(9Z;*F*Dx^wmEGeCP%c{rNADx^2YPe*SKU6?4nGU zfD^k0H7o(PK(VOLvr|0Tz*JDN!_I7Yy}JN4Lb{rgp}oQ?Gg8bB!z<|%=#O7vd#9&~ z`+|J_*gc=iE@0_%R{iq08wiZZ3we-zMyD7LgzY7e@p1 z8FKU7v3eHj#idj}W~47gKaYjCh@hj##%MCp;%GxY(sX&&h#esRU^BQ;kYQN2tk~+1 zL)$%5YlFtB$C0v%A~w>;jp_-PUiEUA+-f-ASz09F@7}LE&*FVm!VUuA0egF~^=2|? zX>Y$kZ=mn!2?on%zd3FWNOuruCe7gcxP9TCCo4us4>dk@9#?m?G+}7E$ZnNoR0As* zf40S+v-Pt?7HbGESuTr5NW|t`&Adss0|V8obd5(ze92sy!=R4J_ldm%m`A=Ywmy2O zUgwB{3HSZ4lo}sM#ciOBTV5%9T#m4OT995uyF^sz&xui*G)0y4_;ju~?Gobkcrq6Q zOv5clmCyqLk$;sWp%5E{)z6u-u4JMu^+RN!by1^P&E66$ZS(527%?z8-o!RfL~+Q@ z!u6*gZ5LorNZ?Bw)o|seBP`!IJjnQ!J`z_GWg##TEX%q(4x+xCunu1sG+fjq!iu-*IPzX4AO{-8Cj8}z}TX}LkOy|DBjj+%sO~r8nbv? z(>73^(KDd2=52w-a#T%C5MkX-CQuXB%@k_3rFY{F6-J;C)?}QGWiyG*c@P-KY}G2K`6}Y7{^nPr$I% z-W*-bgCj%nwlOdjh9GvP-JR$^1zp73NXZDz5S$xipVCCubOQ$AenT^f{4!dDkJ2|cJ+s6kEHDLC*?hj?0ql&C)`XzGD#%vL&qX)G&(mp3D}ve58ooMJ%y&!I^j3WrQHi;GudsxO3q zJ--|50PLmm5w$f>Ae!GrN(*-BeOZ_54%!Z ztOLJrw873&_c1$xHi`4jNSs62wtE!CId6K-I`td^%@wx z(pcJ$vNlO=X6 zy8$!fO9RZK0&79DA>2wzAY_?^{Xw@E$0Jx$E;d4yS8x~=T~B=Q!i`)3hv_h=TjfsE z^F>c=aAEYbo}HY}hRRm;N!wCJfk8D^Rfrl=Lf?V-HnN_SBb9t2EB`ue|J;Ddg;9i> ztFTB}3h2O&`2Lp@eO(phthwEH*9;zpoXIuo_J%z8>+b)V{cr$Po zY_Z4d^!PNW8)nNsqw%mOrA5(}15os&oB!?s2#1-(`Z&|y&8Wi-Xel{;ZMFz@d6Vu& z=G^7{G~j`laF?L6Ygln5`PlwkidV6X%_lP;jThO^&-p>uX986oo}n8C;GupR$jI8p zTmbhyaN}+K^0T156FmY!0~kXR9ZC`80>(gO)B&LFR?1r0sV+g zfTh$OG^&20&Ag9i`$0 zVLUjy7#nh%S-fqtS(`L#t-j`gI>rt#gSvLz!TlYg0SRR-U%>|^=86=PXq#9zH$I$f zbGDUzl-4BGEkN6-h&U>c72~`~_R~2WKAt?Oo?i>(=J0aRfwA)}DcOrJ-RSz`-P zmO;0NwZhgN8>Kp0X(J7mAXj!PIMb@gE0zVPfLvJO&bKEP-; zidt|1YsY5TyJgUa(tQrag z6vHrTX|Q9<2FAqX$3;J3=X>HLq;-2IWGi97yekH{ze@@So)nQ0_h>$y zyKZt?_o&?__COcOw&kN~SC0cTy-L37xL|V}FN&f>y~Y2zmrYtSCYHScU~!dkURWx z{+gR6y!F%B6En?=b{w@R=h;}*Vti;jwBRU5dsbU{zLY!prPA%)Ao*eY+DaBV>ENOxO{=rqZn2`AhmVQg@qa)6y zEitr!UOg!{Donu$0~RsBtIRE!Fba^=k6{m4X?({j5~)T-RONTrcHwFoY{RZrOBG#R zZ7J(jvKJj-TI;wjX^wbf$WEm*3rE$Azr!Y!qKqE9Sg6jc+so0rZ4dpO!v@HJX>(I+P zzu)9@#xnAG^vdLO(m46N%RLPGA)5F5L_d;Q1Ch@v=}zNB^ez}PN&i2kBjyk~k}ziO zc-Cnp$G1!z%M{%PI@euW;%CXKqqgDKw5F=iCpzXu+AMvb+EH#ECD0Uz+4TkmpLF~fKjaMqeJS7>zl zpqGmzfENy`tZmss?+{0Lp2!G{!Np`ArCsiFr%ZZ?rTW#}zAm8_&=k!fD{nMaC0e*V zGtXSfHy&-wSfN5TnQD|O{G_vzEOC9t42i5|p7v@t@CGJB02qW`2=m`i%km)6eOA53 zaesb~r*!SZqj^-{>(A9+bfZ0co1;s$ z&W8{nak*)s8@0lpxXBA~S!cFiE9VD;8u#5~RE@EjAgYf36A^}5*rGq%aI%>zUU*;< z!^XXweJnr0hc4sU2Tso69P`sl;{Ea_?qUAyD=~X@5Mh4)@ckdmu2dA6+g@DDf;gLy zNSIf1GD6o;WOjm2g}d?W!&Q3bpTpUH^bdRpO=I)((^qP$QrlE`Dm;S;#>Q4r2r1h& zDy>Mvr!9JmXYv;yX`mp8F!nhAEuA-3Lrnq)GU%}hQ+ywz!Dp~Nrtz66?koQFf3eeX z3b6u-O$g*UO_PVSgZM04;i`Yhbl|(7j1N~4%gUw0m(_(F6Cj4)3`7V!xUzI!nLqKo z@*-p%T#7BPPu|6mHy{fubOKIlPo7*b7TwMo8x_&vj`x)pjvS}l$9Fl~C1`H49koq} z)r{j5ixi3gw6u`8w-x6O<>Wezu0)7$HQt6=1VLE{M*1sHC))R6G+qd>N;8z( z!3vs&Y)NOtBwW=J6eOAZRJ>YSLAF%#K)cL6^r?33YgEiVDvZ+Bv!fB8W2Ic9zy zW6W33v`IByowY>EYxaesD^?%1zR(_Du8dK`QKTvE)0V$d3*UeNvssKJNBT-5eTBa`YX0BG+&2I!vw?}~tu9-*|$RC4L3$OT3Lc&l{3 zN`mr_C4v`1l!-_lvU@#i^uiY#k$uQ_C!3xxnwVxxEC&0V8Z=MzB8^2?*zkwp+vkah zS{AiaX;!u+KEs!2PUOLd2@u)!beMDe{tv0}1}>3S!mKhhPt05y^$?8R_+3(oIP^c= zw-eDq#rF#_ep*A+W>_xIA5j9fQ(;LE13YZlvQMoVfhj@aGu}q9+3$)wDX65j_6J3d z+rSn@P@3SQKXlb%1}!V}WJ`b`5}THW>{e)NlO+6Yz>;gbK>fxG^hwfwmhG^i5il40 zRatcDB1QNaA2#KHFJYCRoM2d*)Nt_KZF*(7%)eV($bcBW^{zG<_cfo>{JMQkQyKSu zpj~Z1*}m(8QgtFe6^h3`Idi3*7Ofrf`b-~Gz^A4lxOoS7FZ1D17*rOAuJ?W6QG9YL zepeGvO;xauFUb!hFi}l`FEVoA|?g{GJcj9R|Aa zxsMArK;kvr#aA#-s5XXIS=P6jEMCJsDeDGhL1+LfsBIauWojej{pOQEN?h8M47zkf z4c=xA9!?({)2rPuq^#R5>(h57FnA5ur&@cS-gfjQ`S*sG4{9Kn?2DfO8RgD zOlx8a6CzL|D3nzLJM?}lz5T6Hu3CIDlnP&IDsb4)Do`jW>{u0UR)uiAb^$dZyoP%d z)^D?{>pq#XcnwEV*6o({#ZRRyUc*;X)?v%K`!gwv*Kjmt-DO!f{#DB2HN5Iw5sZ5* z>-N7+S-gfDQr5keb<5{d7O&yvly$_iZa9*%cn!Cutgl$s%fFDacn!CwtfR57|DLjV z4Tn?KeU|mPze!oVhPzVMyw+8i|J#(sYq%$69kL|{qW^(RVf^KPZlzqfQx6h36bbhw zG`uPme~G?_r{dTDMJj%`9#otnVLr8fb1KeS{S~dXL!Y(M%oT+Wr9!taDRiU01gHrm zBV3mX-K9d|#xJETUcmJLx{>v$g*Kj0d9pwYF_kKVdMPfJR_zSR`K)TZSDY2i# zqhcOBO590#{1Cc;ZfUTHr!^6>+Jb|h#P0>Wfs;M}+eX~OWD!~UrZHX;3quDdCdg8ol5kG)-KuWaY8Jz0zWCr(PwZgaTWJZgV8O@1^ zbelsfypT|Lc8^Wyha);NB0a)JL7FwmNbM}f=QA$#14uM=d>-uY%SKH|sN2$F!IFGC zp6~@;HMQ+PtsxUYJ&hIN9F_KFyd$(40vV#Z#*-8g$X>%M=fp>|NS!ROA2m{l_~>koFx9Yp*}7}AehOH zq!{sS(y5@)QJhG4w#4|r;O?-F^Fa_k`pn~~h{8s&eO;(o*qVML01zERwZ z9qjLXaTcREJwW-K>KLQA*E_gZ`1nNQP!?7r^V*ti27{}*g=_n)owwvp5GQ;#saz_< z{r}1XyA9{djqT=PBmuLC1l{^4X*k} zbH)%gU=A9LD238VU1iNvZ?iuHi{s~PJ9ekRwRNrsUMfYppg*lhxkEIf?Q_*zUHP$` z&)U`~?tZ$~-Dc_LHE|}s&jQIkX@^dpNxoRFocR=$M1k3BD`WA+Yqajdd%yYh|B+ud z%vZRW%^c&@E(Ss>B1dWhSGIL$`JKBA?*uPbC=Bxfn;{eeF^AtnU$kt%%yK5$Kvm<~ zk%-qN(?=ejBwL&+CRz#h({58VsWS0j1cIz3T*U|9Y3Ek(`hqhXCQoWv9_fLHowoy= zXs8b~Y*2qfl{!+HxF4Y}>&Sb>XQ0o8TDsaR0a)7@5nKZ-F}(p-v)dxy7N13AV@&LA z)-H=w?}~X<56pvn2_y+~I&sO?2-le-;UrpUj3AGR^2bM#y9HsjG|vD~jCtCwsU9D% zVR1DDaQH`)s^@bs%hz6xmuT|gw)hL5c#j(^ z^`cnnTjt@$+T$)TO2<-RBnF+uU3#H_T>_?26UkR70fWO?SmkmAlD0LQ8o;j8RY5)i zCOhpJaSgui`-r0SnQFf>LB zTA%=ARJf$(`s&pzGeNv41LpE4R$Z~M$J}t5N^A)LUmQXJTa9XIa|Wrbot7BScHS`Fg)3D zpc)qQbqn<>M3iUnYIyR(6AVRoqM$Lzgr|i=lHs0P+FFG4eoH%i)#!)4UM<6LHz|gv z+&TtNFL?)^!Enbr+SS#0_&OLOq522xQPRO{Ourt4kYMSzfw{Mh;eZ#z4Rz>m3}?51 z8yXaDmQ@gLmL)c&p)0cw%Mmq+fUzBnPAYu~7AYaqt*;$oSWcbnMlpWbd`f^Uqbz9( zvePOQq{OU3XrO@eYU$0YldC`6^GY*H*;5UVp-%LKqe@9$~nS0^EHrt638K>biRR(q8zKjUGGV1gkkh=}s?2D1~u zFTUI8-6h%MJd93!-2xf)FjbPY$WbOZ2CS+SPhuMZW^5+w-{3#GEDNx`h zQ1r7J+rZGfmt&6MkI>~e_-6qF&G(b+frANNhBOcRN+$}~8e>~b>Fj>3?s1*ef}29x zfe&_Z#dpIoKfly5PniFhU;ddRzr4nS=@oO(G}Mr8qoxG+_PB2?3-fXt6emA9=Bm$wG>m&<0ks=2A1MZ z%ovu&c4CAkHe7@z+lJ}X?X)wq6i1e=OuJpE{JZA(n+aZ4113-8b ztV;WjSLjFL=?XJtq+@Zw-%B_4Mh$T69~;#-jZ;u3u;N~d;%tat*LrA#+RL=fJ`niH z6;!GlV{@kT!Rr*pvVB}L1}zkz6(nABDNYu#Y`$SjrWI>(q#BzBd9O6cJ8*F@xaI!> z#l-BYHCcC}*PU=aFM1O_o?7h=gKUh?k>?A*nK2~J@~j_n+C*A0>xYk>wJkelt;a6T zg5Ed>2J5m9Oo|>(%d;P`9wD_bfdVP#>TlV;aD;G zDK+i8XbUr@;#6x%biN64H@Fop>4YxbYAH_*5M1=m{J$oV&_Q*p$$`iQP$3Gi7BoRn zSC0aaBEIN`6rGVGgdNO&T}_Q|ND<4hAx6COt%eY30YbDEye`!g)pU(k zJ;W#>;2}co2y{opXy0>>uL{<5BAN+`S5=va! z=6GzDK{?(g9gdoP&_4NK==qQ_3v>*s@z||p&C~Y-Hvf>j7n`E>K2)L5)4u2;B-iYN z(F41a#W6%#`(oNnqHHUSB+WK=h{!VtSK}+s`tliEMfQ^mA8-<6IxISpLL3HMD#@4# zqMxrVH1b^&WiEW(UATt@!X*%X=Te~tyZZXnG#(zwkP5cmClx*YK;uP2W1ADlw%1S zj^`q5On|^dwe4YCK}#J<@gpM98m#>j9n6f8Y1w-t84^b%b1aFovb4F7K1NL%@z7L5 zINxj06U9yvHuNjrZDZ%Mqy_;a;PNzH=x-AChpf$$9O8FO4x#;v291f@Lhy?fEA*^J zv3km+eJWO(mx5H!o9qasL{wCd5W%%cYL-#cl*Bt< zO_Gor)3d-h@@F4DAqwJuupTMd-OJY_!`Zu0s1EbBCW(VRnrw6x7Ix(KwBJFW+Y{z* zS0-ydvMuhj=tm}|!;{NJ8$w6?EcgeNZ{KWrX+be0 zQK;0=kxY)uiTLiFu$e^|#~At^V06Zbp0u|r|QG>|@jDbjUXDb*i2BuX*l;2q6SH~MR@6nbpz6|s+ohoXDvt|Zs`FZ@zphB&5T3q^D%`WR3Gi?_Qdri5zCpj}wP+XPZZrZuF6Ti-m+av2vkx{{$T7;#>cd3J5m)(GisDyYm zlf+~5wFjE}Q{wSDt_9%Ug%KP>0xwXdkzd3L;T}2-HapqI?pwvefSCfDS#UI==K%%| z2g0zwxck6|leIsndkyrF8r4`6utpgYG{yFh@Bs$;sv~o4b>Ik2mycJ`9jzM?vPTYd zdxxFyE1xLjt!7Xf3d_TW(y9A<223@bH1%uU?9HIYE6O=fH><;A*sia+-Iy2dF~If| zu!dq#l^|AQuy-QAktlqONE2&m`Cej|!+fqCSB_LO9w3SGZ4Fq-7$50|t|g8d*$jip zIGMms=)dNHQ`t{e^jkeSOSOKOKb$cbjk^`@=G6DA{E#B&Phu|!xkv%U49sy`mwfpE zoP{3*#VDYf=CPpxtzSH}JWhr(Ru~#v65~VbFf24L;9yt`M|Vr4K#k}t({M1UOPnHt z48lqy>fksJoA%idXhf_!2Mr%B1F=KMs;dW1kc7a*XN%NUgq{*L?4c z`Mjp3RT6m!V)f}tzT;WFob3)Fd9||C!emeAb}ELmu+Nepn2$SH;yiIFk0!hy{1r?`DEJq`TJ~fq(4LzWl{+pasvXFg;$!YRxb(lC(pO;a&1P2(inZyVRcoi(t5&UA z+t#~p%9v~TQ+!TfqJJEOb80?4SO-)JLIV5|I1z{` zv5QsROs>!ktu|L0G3aSss+ILm7=Kycyzn8dtpAAS4XviXu6dE9KfZZU3u~Jfs{}Nh zztaB~>i!sF0QZ2i`v9s0VR9MQyE*MIh==QT;ah?ta6`cY>UB2>J4e@Ort2vafa|tT zU4rhoZhLWPu&(ZDLDyXpXmMn40)@hl}m5Gv+yQ6G>WEKYrN_?Ap+ zymJWe3xG~TtwrKwuu$oLMIG#Fo$=~s8oXFO(?80hw)Qa%Kb)$6Vtt~)E2&LFzb zA|Rq!x0zVVmy{B|%>57WT(;i$s%#1EtgEZ)Dmp9c<5<+(aB%*{Nku)1-k{9mbl+cu zUtbom%XSzOVX45t1w5U4-7bR;ema5;+-P1Qs}D`;KCd2HZYMGI^t+Q=zN)u+Dotns zP>29KNd+L#QCvlbIl3@3+oN5jFge)=(vFxY9Y{hmpV(Qom>K&sKWKQ7yC3msaQ~>e zJ0wcQ^c3?7dnpGKs%TQrVp4Uz8;g;{Hr?t)e#r37hYorSkB>Op=YDiyj=*D(T-t^) z5kr=`lapn5l9-4%C97JXPzF%!1h~2p-tA_3KsK?sQkPKb%#hY&taJk9G-Rc9%dE3) z0y0MJi(6ktC+f`AlhB0gb0x*XBz6rfSkGw?_9TFV#n4@Sf>;3TrPC+SDx&D@>?|mx zQ?G^Oz`KHc$7P(jI|D?d#jgith~zbFG*idXH10g{IeDcr=0$4&K3Ais!PF=t%gA;` zIl$xS6s5}2dQX|`EUL~7ERJff3!09u3z{8H@i27(pFmEe)JIS8Hp)pZ4e1Mg z9bp1eLT|_oS0K*jBCA(%_s40Z5hSBDsl&pb61wpAOwY{tlohI*LWX1}P%~J{JYlZm zeaaKC9EBZ=*mXG^I#!wPI!ni7{B%@?O(Vg>(U-8-ei7Rn+mbWT_QmMfwgs4&#oJ+A zp;miyAeKLrsj*}2x;<4>uw)Oee4g#Tr&CD`6t<)Z8z{h3#-rwa;9Uyj@UhK=uM`!G` zwaL6mV)DbLrPOi7=g85>2xTecy3A3*gZy;u(3neK4x>3GqB~Q?u!e1Ddxq7oqCwC^ zbkpg&fwG+Qx`V#X^rg8o4&8(wR0j9`Q|A@?>v){LZX*1$?3w9<5bz7FE_PBbo`Y~b4!x6Xy$W_1ZNqVm7 zQPrE^gvjmOJ`xP3q`Ej>YrdOdB?O=qIWD4cT#U0?*3O_wu;=7*U$84+Qz5vtR!1)^ zvDz*aOUm06*ca@qViiR+PIAdBP_gvloje2rTkpdqMIo+!wX;6{T=~@a2zvEn{69Vv z=F=(;9sxI6M<~w#&cf>B6Wv73XsvUVr-;qIVyR2ikSro^6fJ$OO3Edwz^Xw7Dyws8 zr1KPG`V=MhRk>^ESYQp&3pIu{`l%4*g9`O+n|@!fw32w1Qyv0v9+lNL#qXf-Q2dio)S9gu;kJ?u8U~Z@G84mtu%uG)@I|P zA?BGD=~xp!g{~>QMU<;S4QX}VJ-?!$fdMC?{ zVK`oTtZxfR0mpoq%ie!Mqf*A3A!$1#(&Su#%Epy%Kh6JqSPYB0vO^ybdpz`^N{>TK z_NpJ^f87j6!i5NnQJt)Mw&ARL$A2me#%$8HbrzKiYvYa>AD1a?g}5}d54OUgIs{L1 z*^5kTm7@gHYQ-dUO|c*}OFICuxLD;*tpL>rw=hOR7j}ENoCEe3QG4?e^_rHUtn!(m$EkTwBwiXw6zO7ZEfUfe<+^zJR_oq!PC|nPtz&n zg?}N8;~z3p+XAmh%SP+NI6*xnb7T=y(^ZGZESY%PxeBO zM?7scOD=xf)|QmkGdvCUDFy=ur^L!uM^+~LZ@5|@>6_7FO2ah?_%(F}@USPinQ^ju z3OOK-v&F3JH8izkys--u|20c$a+@3}A|!fl7}v28wldq2V@hmGM!K4@uXj$>CZ`e~ zS^^LD5#3T{jj^rc7}@Z+$hInB62*8i+geB!+p0>lk0X9Yle<3Q2ezeA3SHnQF7}$+7PE4!K2QN5-)PiE%7Fh(R5LW2HJHj`g1ZR2arNRt$d6&gBa< zO-LJBFcc;^S@hI6*2(*#~^NiFQpdt9~;V zv$JO@g|xw9Ek8XKuTQ)UuBDFyAui7JHx~S&7u{TVSQaw$W&#sWfqh{k0avi=`5>?; zYWb4bnf_90ltG7;N-nC_-y<2OA)gSN((vEXHJe;;d=u!-8fu}xC)3ZFR z;$fRoCV8m!P>lk%Ypw{k^HB&hBp)Yi=_d{-yP`%Ns(wKxAVSSas43wBOr22z0$x&X zFO~RS{F(mwR^)NWd54s9rrMKpA&#X{9UrBfdVI(Ctw$*2M5f$A?AQ}CQpgD3LD7X# zP3#+B*$#64clmVf8d=9&5w4^t?qNw0t=V~B2FjK_`9eOH1+P2ma%=WNbcx-2h+Y?aMJdhM|3yu`sD4Avld<;gC>it8C5(U%$)b$* z#O0-bT7zmXu;6F0ckpJA%4P?!4UT6;;of&FcUN$qeRHEN>*T5nntgN>izwsxcYvMwRA6}=PNrAwXc;5K zCiQ2P{`B={wS?4E^+;*gj8=>nl`D_KFT-txTyI&qi9g7&x47yD`1y7DWk8L-C~8z% zp79{s1|k}F$r4rLr=?2J@bbF>~&AO9IuuU1F)kZS;eF z8#NbQ#gdd5UA^**@=iCpS+vlo(l{RC_fV18-{0?{=BBeTB1vkA?)WiOJHo07sIJdr z5YkdL4B1kC;~}eIk6uD9qA=6yO$~cCjAOAH#>Yz^iW+wBNDaHoo}`C8zR|-rKY$)~ z$Fa4dF`X*vVJX4%uqR}{1gz*`Psnhd@^B12EY%s)!`}0K>k&QdWGMPO*2DOMy*Ry`YEDUev>uH@H*}J4xGg9`cGAbkvU!h)&D`eK1 z+6r*M+3F9YLiW7xR3QVurjR8(n?lA1giIkzpslQsMRim5lXSObIvKuS58WYi0DN4N zHB4mGl0_)8hA!iLOOlOGw;?XUFjCEyx3+?eUZS0;mj&(YB$%1j#Id!r_r|-48tp9l zq|nY}5Uik`p}fO?MC{)!4eiwLm4;w1k~QL(-DVc8 zk))-;A0Doj_FipwRVNL`w6sMiH!baC+-dOA@1mBrXz0?^#A}W<{5W_`{zFjI)-P4m zFmg;$)2$B2P}ES$CZ(CJ(x1NmJVZsUpW(i7VQcjP))!Nvw;~oQvhy;LkAOIY4mHvk@Un=$4b9@Zt#Tn(Q;P3(=luu@~`*$3KcJ*|J=}r zbFA1v)--T4X4K*aZgOJ{bYcUG#_)f9&&KfX?{o}J11pVzy-;7i$GKM83+_-{GF?&w%`!!C?*gPl?>NU5XQH?YJe9l>>dA63-H8tEPS13keO|t8VYg!f znDx=99!8#hG-^^eKiM7nUchI=4pc^n*=by#mAMSq6$@lXKG;%(#?81VC^7EY5zQbC z901wZ#ImIcVupqswQyLs@w+MdsFn8LEt$Rub*uvH zJ+lSLr=QfDeOuGM%(SlhJ8Vr-1WntxUsHmp7&+V7>E1w?4WW-DER+K33Hxl8qHgF^ zi&J0D(gW`u*n$E8Oz~Gt#|vOTXW~2U4DjAipesjEPF*n&O@|tIn`^0EoGbclhshE= zoz1(jkZ`FZJVIi>UZo#7BPNYXsV>-lWU%asx zVw;Px(Q8&a#7qJxgB(rh=%ZW2_#`%h+vI$D@JDkz5#(HSN`@=g8h+1urGGQheNPi7AU9# zg48|JCr17sA=t6jglQ5Qfi5Dv1&rJG zxFXp##AfSlG=9+=_r5JAHc83ll*YO8h1D?jajzA7Gls&2Ff=4_`d_QR@gdUM&uvSm+K`WwDWThRpg7gS7G%3Cu9lt4@Yo9zEaU|`ZTDi0pV^xQ@w)45e}0# zg;C?Gq&vtZzhWZ#{Ej@jT(*f!rzKj@Mub45tiCAaXXO0kX`qG2FE@D5 z=tAQp$L4AD4p_dmg(p%AISY3HTcbnVtpoup2>65c(y4x#ZFQdMKe_z%QrI|X<~YP;Q`HrxstQe@CwkJyr}+C`(?2itEzH+4j(+0w}p|O!ocE%ox$tN z7r?$5B%`$1{*u8e#sadve09G3nUU_Mh_5ttb|)b0X^cDMQ4 zy)O=!rlA7?Cue?I|JHyB=hk;?kSv7Q>bsK6d{RUZ>d3XIl=K?yBLy?DUN$l{&KyK=C0R2@&MS?L(WGW9Yh#SL-~|_R)Zgmd z;J)%Zg*#ge_t*UQ9_|klT_4Z>;E}T0k&PhcF9$Gaby`P3#s#`y8xm8B+@jYvokgb;;G62T+aBF`d9 zt^>LRLIVZ_7!ZU6k?RC8gowleF-G_M9Q*zLt7`AFPj_oFB$xYrSnji@8dj}ZwbrUt zt5*5jwJ0K-L@TKxA>7foVQE$YnK;Uq)UA#dhe`8O@^8Q=lX3*0C^PH>zGK7n`r(HB z{zXNmk@~N^#ht70IGz@rmG@hyaT;~t9y9_w7*{(wydk;h%f2wb9bt3Be@si7tbHzQ zN!o3RGk2dp^YI*gkxU4_g-)$;DD z5;63OqJf$96)7XOONW=Sx%6v_;w@vF!H8{{~6y1T%&~C#G{FCK2!`2 z$XmUTFJy4+0T6@ps;#lV^~Ag>VTCKe-&zLSt6sp3ZK-^rq7tS*PzlKspg56YFk}0u{O{fw7s&mz7x)d!*0Mw+H zn#?w>izn1H74$i@!?KhYnZo6@EuDRZY%eW#LodsIJFbEn$S4!Dy!Gb^;W#ZgpSQ|1 zyj6x~VwJ&aBYXe?kF#c#XP)At&rIlR#LPRjbU{#lL zHx&f9k0p0G&Bz_fH_ZYjA~#YVw+KMZgAz@EcqvdeP7!2OT_ZCEn!b>J2^)Fa zkTVKlh;vEmh(r49ICDY~#ehik%k|^gpY&t4(vk&ao7A`H)$W6%3~AU*E2%64Bf5gt zyi-r6deTyUcNei4A*Jbjf+I=_|61dDwmo3POw#>9`rqg0C&IpaA z6V=z~Y1ZY;+7#vs1fxz_Y^p}?I6hPHiXePb5!gM|q^72-Z-7Xh8;R01L&2OI+4Sc| zrYv8mz7CshMc%m&_1IMU5GO&|0fn)Q12~b5%CyCClPao)ws?@4A3&48aiZeVjRun6 zp7}&Xbd$)|r+DFmbGO)l?jv(Yv;ktG2&HI9Ef$)z;XEWRlhPqz%HoO9(0Il@p$I#n zezk#IfFKs6LpPf`bdy3owiPPTg|j!AF92+mDQ20+AO2CcRROy2$g~PD5&=6^psZ_* zSi4f!BydWcOsSWRP!==^dh}qbFKIaDKJWI(olSu39ft}H(eL?&Hjlo^!b682IdB^S zt1#XM4^~CYRe&TdC-SVXm!{Mg9R&erf7c11!S|W(Dxw43O@pBy%tBC*ryts>v0_+c zUsu!3#v(ACJ<52uus1T2>NT0yY1f>Q5ZmZTTu;VU@SbGhJJT7^YJ?P8q&A4~ZLolL zv3aNC+ysQk)V8$x{tK@PhEXrRGy6xpDAiAJlT!H< zTgzX7>mD#-3jQ+1wXVH0JBQc)<*v@v8@ZqJm+cR=>~WW_*}){7`UOr|-v2Md`9H;- z7$9Q35OKJnJKVv}hI#MZ+vlfrdxvr5F=D21xCe5Q?^R&+>E_ktRxl0|v5&;9(6&Jn zut<4jOCgN#&*~-31-Kmve=0|JbYtQ^%-j!izh-pBhPhAtbZ`>BIK)KWkT`Ngg(^* zaejxjpVMzWJENoH{0>oKI?b65Bqiz|<#HM)mzR1ut)3I(QNVxIkmgIXkV%{t*1bA? z`E>NtAkO$C4JA38M`f&;c~IY9Rg7)gWLts!rgj@$J8Al2{!@e3>tvu zTV$!akkJ3@lI98(N$W~*>NoCNoF(TeR9H;{Ncck7OcrPo(8hp+>NpoHTHi_Vns%FE zw%lks-;?06GC}Idq6FwSl1mJKLJ*1nBdm*rUM2ziq1DdBJzY@~I?eI+D8!b)LBV}< zyp!RH1`pz0=DrCkbp5LMj}WXsqEA|EPqrEtWBE730lZIj1TolZBM7t-?Axf#Mq%#= zg5ZkAgPo=M?La5mTWqL?v7kNd@@%gaUZZ7~w<{je?K*3-g^y?r3?u{kFCIu5aU2gc z?J2eQje&s{Tq9FIgU8nOLi=6r+tEfGhFP)F8BIVsiVd9eVZ;EYVO8Csa?kUJn+iC9 zq4ZAoU2Q%j3x|Ghaj#B@5zPZyd%@@Lf_ABJJUV~5K$nZ-^Ayffd5kcD;qM^fYG>9UV>+DCKIIMy094)b-fG2jM1RwD!DN8k7w+ zao3WXtf=IwVYVDuc^0B!tp*u1tV37&^jb=+jk-Z{%5rPRCv_}LU!QH%MnWk;2NNmn z19(kt@S!%ERge;vSj4Vam9dX)U!LF4@A@eNsvoqXp!x)(oNXP|Xzt^0&@&t2Km!1{ zxSF3;H_8dZRGQOKVQ6lb;~IMlvOo+*99Nt&P+8V#m^3itHoB|a^raZi+V$gYv&}a; zM=QwmZR5cWbO`?sm{4labI?~BZt`mFSSW?l(aPxpL{t=Fpg>hdN_w=Kj9O>)AB2 zd{bxX^jiQ)V4eCi+R3d#J1VrZe0s}$FQQr_K~IUQIfQ9O;ez6If_90kPG6CfQ~Bl{ z+8x<+AN%UJFFl#odaPSX)?(Vm=4JdQs8!9^-ovHEvdtZK+3%iyGQPKS3Q*pT`nS9| zWs~-Gp9E^l%5EfkUMz#NEk%1eugF=;xP^v`4$*Y)aLv0F73K|vb}F$|tZFcV$TzsJ zSaMg4AJaR1h))>_J? zlZ)l*Sz)$p4AqHHPZWLK@!=;>cCxCN(lndTk1nf(;w`tz`|-~4z^5$d^k%HsQ0T#sX_D;Mk70P zCHG(<#SmAS7Bv5`2vL|4FG+VLAf_SgwqeyLF;pcO)<$g^lMq^$N8<>R)8#NX&e9u~ zT^RA-tI6nQv>fUffLyn%SG*hG5Fe7q4eO#31qQk-vaA$y(xI$5(yUlv2jciHI)vd0 zD%y$psVK4_Us6(6yuPEv=1Wacm?}n1va4ZClJ|?C&dXWsS6Y_(V!)Y%o&g*LRH+r`F;3(l+x4bhF3S zafaLAOM7uwMFpovNL|6u!X*qwsdpnS#$(b*jR2A>Bb}-c70I*XaKqsCZy1kR_E1_b zrg}>}CC0Udh}~FTXzppxZuiS%paJG?zs&l#?z;6djQIfZt>YhLx%p_eA@n7 z$3Y`_eKon5klDO|O|Rhzz^usr`?eB&OM*$Hx>4!CI)zphvM3UYRP{Xhf~|fnHYhah z?CcYLcX}m{`^Qlo$*=W^C!hQP0N-vSTkj^fJ%I3j!xIszBlwh)N!99g_m*vpwqo1` z@+YF1e68#d4DVMz$)K9aU!h)ypsn>rhLi(y)Xz#aWjA?mDI(PlN+J~rO8nJB4!MSA zGG6Vw#{pdh1~3_+rUIMRA;3yJT@b>DQf6PZ@y@@@wl}QTtk+G4XPmOqp{b7+Jgx@i zR!)zVBEm`mhwD0BCa9u>(J1rM!YXeX#yB=38{?KYb(bp)#w)Qp%Q?lAxfd{+phfCt z_@M`j*C(WF)0gcO4yTE=yW1lgb&1%m2zuy0NvFW6)H$ZiB?!j@AG?=X2c$CDu?W|I zA}e*^Mz7aB2zN-JOGo&vNLB2nzXvyOnx4D|5fiW!*IKH9D*avaUn4qUsVr1x*XH!Q zUVq;gKK7x1{(s|O5wIqt;*Ey$l--H9XhSFq)g$ea}eqEq$BgO-yA#2lNhDUBm=sHl!K6&*3HQ65ceS}Nt}h52DkanQC(p?@%Z_e&Y1 zfZ|SsKSg8SmQH@cB}wW^L+&pPsaV`K0(hetY%bVT@8Hx80p_nyG*x!sE z|FutD67QZq_5QLC=hkf!<)yWE;&5A`VzNEn2PK~diO90csYc4n!!J|lXW7=bwn*eO zHKt2{C~+>j&%G8-70>LRp1gl+MkKAFVodti5ZZkj_{i?*;{L7jaSFEcA*prjCRcIG z8OQ1&b%(J{TM={HvZ}8@w)K@Zy`Owv5!%^i1-^!nMij@1%;mr$Pi}^mbw6gQiYnF1 z8mL-g6S_o|)vOl$?@1B=bifH_mBN{9F$$c7TC6QZdxa5*f_=s4f^>XO#c5`r$`lv{ zUCeC0Hx)Vb4ghUDdsy*UlM%aV4W!-`)A2p+6(Ky7qEYgGKDc zoo(wf)u1@PVmaJja5c)0t%BUVQ9ky5%1_Cj4b){xWU$RYO#FU3C_8aV{W3iQi8&~~!fih?t($ETC~v4Kn%_jJY_`{ieLICZ21*NwA`vAh`B{Q^ZK z{&qMrX_l%DF{{&UDbcW~a5in9NOk(J?x%*z3D?1B7yR=~kP8;3+2-Lycs zpQN4yaWqu1`>m1#jL=GO8o+z}=Q;blZ~o`i>7G!AM_a*~OwnSXr?!-oq8hi5X4^l?GD1T>NYKpahR)I%v$#lLNkp2! zVqI7Q3->aXFLimT1Qxt3aJE>IQUa@%!V4_z(5y2+IOQS=4tft-{QSOYiSX(op$l_zs(pA@g< z#=tEebb1v_h)iq65+UW5dwlc;QVbW%A5aXN8wH2N}CcEvJ z&cG9*D4NACSjf@xXhqzQ4;i(*NT8PdcF%ce_x2Xc<{%jBN3Ymwn2K0%G4mA-dOn>p z@WMNb5qIVdAT};W?jE-Yqu9t{H}L(2l!aKVMLvMaJE@;b^;76)f}zKS(W1*r&)7G= zY3l)bQ0#d=+@hZsE%+)O!K%8(SLJ0$uh@c`Ufsp;6O??Iwa?q;f2QAjWhOE+kjf@~5pNH@YI^1s?ZG?X3Pzrp8<4IH zO68HM1wQNsK2#PwuhVxO0cHno(g9FQu9MEx2Qgc@;&C2wu`}yVkNus#A#(=lKKtEc zzk6ff1v_I8>n;mPL4f%HC~Q2Sg1cIQhXZCX-hdhVg_m=`O%j9t!qN+1GfYFn%+u&$ zzt48q>ONw>2krMzoPXEy?+<_+FhJM}>F!|^+tR<0nWs?(_}$~QoQf(4B_tEyT**6N zIcOy!CAnv#6u$>Nbdqyyox98JvPrRlCRs*`IZLTb6B7B%ixoQ1MCl4Da#hDfP8S=r%4-Kv7kOkZZ1dtrkxF`H8 zEVNbRcg);@--Og+ra$bZf!MJ63$J3SG9nN?9vb9UrYmfe0&YNiaw`nTNn?X15WMMg zs}ysKi|xw+Huu?Y{LjYCQaBZe8aG$k(ND_$-JudD%tWd7+&krb)#)?t-^4`y)xyPX zK1B5xYM9|>R!XlvY?e~C{DBPMVS*2I@c#ow`^OeIodAKCs;yPW%)m!CUaiw<7)El2 zS%h%-x zp%vbOO`uq@LycNZKhcDN4kaao@#VOhGBn&CkMr$@s2xod^yQiyfT6w3_Nlt=X)>Xq zH_7>J01uOmhTBO_QY*=<<=)oJze7%Un5CugVP~^r*xuD-&Vk-eAM1>Fg&c+@p6tFjqw#3PsKFG8DDn8gd{s zWM9J_q-zZG}0nI*?&wxH*9HhUQh4cy5uzHYWE4%*}y0 zQ5aJk>wRz|)ViHKQ{)~ia&M~6H%idl+4uNPX3EKw+gvO~>;$tYQ)P6^<@M#JOVS;b zp$XM?u5Q-XQ$g>|Kh&hJ=o)FMDDQ>4FqPNbk@wrgt8D^L<)`S)tfufB+!L`#E$I{8 zw4ozUwhcF_H#`b72S%+nnXr-M8&N8{dZ(Iw7_~q|pJ}Q|sfU9Wa3sktNhf4ny(BG2 z$K)+c0ViNY%mfRjfJ|KGTapkR7>?u}!E`9tEp57T3`4w|fVdo!MskJLAH;A%J>>*b zQcXroUph=8J>kOP@3vS0hHztZr(KKtpZk&`QF4_L@wA&QG>q7?H*NNUkhsKO^ z^6XQsq_HKHd-1F+^s6Ee%RhKJd#ucUV8-P}pt*JTwiS23p%p=hQb)b%0!MJ{lVFw0 zB@W6d2DaWZu9Ypj%e0F#u|-6k)KX@W4DPcDm*zLI$GAa1#SKEh0SmgxKLUib?;pt4@N7aw0o5>@`wJ7+WO!+3&~S4knn6$D#Y?oHXA^Tf6h?I} zlI=yEfhrsO5txIukyQg#O9Iu*MO!g^3@-M15QVMJqP)u#TMXPIOx(Wvo({b)vSK(E z={=ps)>}kRHn#+SRYNCyLkk+J@V(RV{UC4Mwyi?+VD+Tvs|}uLlJvojs+6KZ)EALz zy;@qyG_)A>mT-2h``Wc?&177YT=id7|E0eENss8N;h4`Mc|n2}U@9o8j|U(IJ+XSU z!VP{(h;vTEoJ}@DaVRe8Xgg7j8F_^?J}CHe-mR_HeyNHcf|Y_>f(F_!&M5!FTac1BCA@N`>Ie+sMV;d`;Q zJ!}J&Nq#p6K9)Qn{ z;?>}CHpKaXy^r(UL@slQIntH|;WR-(nj>@8i2V)T(&?k1zEDt~6(nNXz#b=G)?S4| zq^v!-0APS}noj#I#;g(HRe3v@q51hzF+%(R3r>(nALe?+MaBf zrfyV-bEF*n;2jcetiXM9exM`$eS`!?ma0x?7A#gRDVJRC2`X(ov> z=b^aFIp=d?DE4*kUzl@`j2UIleO1n#yap`QySL1}$8xilpvL>Ak}3r!^)@i1g&U6n z6COKbP6(r*9V`eniqYG4Z=%Nd_T8IGFd4JcXvM;oFS&)GzkddEkt~*&pgK7XKw0O0 zTih85t(i4=Ho;l{@v-P0X4SyW_ZY8J}+;_l!8{lVoA(zE-zZj z=KYdl*=<_3E|yT%)=gFhw-^a5hl=#-BtCsGoqTkYbrWP*ar~ zWps0A1$F5Q+k31|%?op$1wNm08rmpU&;a05X04(t^@w!{HE<-=W)L_?VVe-2G#(CGa|IEo-oJE%g>-+fOT zaagb_g}8K2a5lE&o0sPZnfoDwSYu3dLa$XNO^G>L{5PjNEM3M z)nY1fRkWTJel zOq`Cwvs$vM=4*LTi2p2A%cp1#muosh8agr{^D`lW<63|gs<(zs(qN;}_%`7QM8@|> zc~Sfm6*kSxM@87Z4BzKbqs&HP@$tPVY>iEw^ftPjnL8cLi>0@7zx38|9umC~i3qu3 zVBRZ@C_929S3<5UI}P16ZXMrP&$CF5DCFqxq`FIej@T%q7)F9fM8{r44|@^4UoL^! z2NJ(EQs*GEUWAZM(HLU&mp8eK7X%1r=}>Pak$%Jkra%pmlZrNu+YM@-h0HMRbK4 z3BCDU^R{fTAY-fl#A=teMQM|gTy(SQ^R3w+oroF{AE?_xo893_ z%+()im^~}%VzyK|DqUN;7sZv+1FtVp4uQ-$UN2$ul^Jf~)6a+4!uU0frQXN4_t40# znpcWN*ONDEM07hoXI+v~a)Dhmw@N?I-c2>}Uekjqhx-@khjg)8QY7X`C?8LQsz_cK zK3hY>X9?ys8?aZGN2{|Z5;VP7njU_j;n2pl(M5C%K5mnsndKsi*RG?BxUf@mQazox zScgm`7R}nN*^vL6f{x-`Dg0t+3#MQO#nry3B7c7jN5Qw6p`%6AWCBom$H>V(}p{%IA%Sf$BfvtW0Ko*3nc8`Drv6gT0w zs6gQ+8!;_c0Y%>>iJ-(uEY*uHWI*d-f+Lk%-z!iAo>s-A$D@(c3{AAf3aH<_qpYmI zjNKNDc&LJrMlM+4P>x9u#*H;olq39^gQxF_{JSxGowvqu83i;(;Z~?}#Z{m_3SI^G zGvE~tx&!g^9g~odPQgoBm~bgrBQ!P}02X>u8ALx{;B*xOy=L4aNz7srzQ%Nvefe|PX zPUIe4AwzX!Z&WfSw>hm}G-_$~ae$1{{8ZJ|DP0@oZ%#Y(u=Z#ZEYHj{soxqN{hxDgUU?9h@g_uD5}?yH+| zKSs6u*UcHq*-){gvLi=X<63!2reJu`Zj%PFOF>(W``d9Mds!dY>BrPY0fpEPVL&$W zBS%tlyX0=hl~~F~H$}*TBG!A(jkhhNe9!fF{Wyh`cOf~fqe$6hVatZuOquNVaK;p5 zdgm!8-gu|QN7Q!$xMH3*Bc!N_=^;yQl!0T1Pvnc}O+=yjPT4}OJXU6?8`&2FGi*=P z!qzGZhb2|zsIpYVK>~&NNUb`xkSwr8n6te>&r#VRr+-71b+k4MmsgLYFcamdEdnr} z6(ODXJ#5&L$88ZW8C5&UDv|0y!gxFK{21J`x1&leJcY!01ly0ZJ~cC%338TL+}ZhP zYieHP!%F0DBI-f@Q$n#`US(AP6^l>tg0z2djI`85)2`2!QKP4L;%2BchP#kP;ns=Q z_B>saoxwL?1bdR4n#NmN0{<^Ta`kd|nv%b6A$K=zM%B}h@oam%AWYJ0QWSz;#qF7% zZR8(_)mU!kg-H5MEte6r`gQSfVkA9V;|^{uD%fBOr{+8;CZjZ>=|(r?&klX*Vs6}pyF0fL>CKkjHR6hxo;uFYD1xiw( zL*h)}O9k=OikVmvw%zy`1z2EsojvUsIac``mX2tzQNE3e`FRD0Ze^=g>n;=sT{)!T zQEFs69MIVX4x=ZO+icVz7*Z@!qwSwLk+vgLyaG{gy_{pM^|sYIzhy!De>0{z9`Ef?P#YP&R%G;APeu>+ zG$Yk;M0-^Tb+D@Oz~%H#3*jTctq{H9e-VascHlFWI1D|lmf>Q-A{M4YmBpQm$Ar^l ztHp+VGlNt`7jR$7VO+n6lKs0tUKWvx&kSU(gH;V}WETj1zIwHb>Jf@t#M1P3r~@mu zK8k#6#Q=Goy}#Q?ro*9;O&Xa@`FvJ=-f3yd+hFd?1`WY48Ksu!6csECTA1TAEn$YB zABNp#Yfx;()ElIFX#u5pdFX)_F(Hr)Ymz?ubXtkSheOjhwO8CKtfEoA$)2Vu*ZC*3 zy$Z&y>DfebW!}ub7+S^TOv;xrC3c$uDG9K2uyzT=V|r46aG1GH<|2eFgV+@omyPCI zY0wu()`;X#9$NVy!mf)3RuJKoa;`(56(}2xaWGA%Aw5mZH&~>@g2XJNLoj@bvbyBx zAQ7x@1jH8l1dvgX776uLx`I>^ZQK9_OnPhwr=R&Wvja)or&ABArcuD@3YY_1(_~2o z8uUlC#^#!uo#{AcHCII|0WBgFN>WC&@Lhc+R2rHYtC@^e8<*)6C0KJ?nuWGlDGuMX zL<rs|cJUc`fI9wG2<2b2Gr-^74pS%}H? z6$1qD^2inxFh(PCCWodwk#NmXk5Mc9Hb}8@j#-1p<7RAl2V3eFpu%&Fg-2}*lD0KN zs2l3CIc1!!3#{(ScItUnKXU)jU5#eWi5Wt-W$AEcw{g_jBR{~*9n=x0}bZ;8PS&>^_#{rc{*hE>A{|= z(@d5qa&Hu29IagP#uy2pb&?O^`W1_VK1(kzVzJDgWT?OqPU{~A4#0id`j?EI!8^%I zLeh7#JG~)676c;F)7|R$e!qi|6c^jPSzep8ku4@>F<2Y*y975Bt@ijcOZ5h?dfQOp zqATKyFu(UyO;J=_v{bdPm?b!%9iS(uxIat*AW8a%A#DwkyF_@pD0^dEVYAW2bpDxG z$9;QTNwr!hHOKTC6cbrqfSVm+Msp}nT)~j0ZbG9*mxdC4a|IWYPT0tupadRPDShNy zF25w@yga&?j0!ouCdhpKfHkoeLCNwE0p*ZAXa=};lGMlXp&8rA5<=s`_& zWL{(V#bl-434nH6+HGRhKx_9(Clm<|8n}=;J#DUBGQbf2J?uyoaUQcPPPW+siAI~f zOyp~0Vn`He`^MpdQfE!D5tauU1zy9AJXgS)&>}iFx{ZWHs80HrC=L;d1oE8;86(X# zf+|ub0A2M$lnnAD$i1rv?2g!-MD=rN<|DMl8~x^?KtLyf)*)4^)-eJDuXuaR8#Cc) zty=@IMdN_q_c>!NOhkj>Ph$XC4*6R>QS;}*=JKfb(=!yq1|d*FZHVpis8#G zRHPFC_%0=c1}e&WLpnd*3F7Sz*(ym@_{)U9Oxh*7#6K~wkW6C-gxh+U8)-6dBa|rj zke=b@QjMtE_9C|QHlPyjb#Zd3bT#lmGR7*9X}0dAhTxTOFX%D9o4QI{OQ|uOOo4S$ zt{F+9m>%Vp<8pO@{jDGOx9a$CJJ~JKm#-1Z-6R}?i>Jzv-7{Kbh1YbZW^5x*Q&9+! z)zT(HTNGK+=g4_JuTHKYQf~E4d8K zyvf>pX6u6q>32$R6w%$*0Y>dw6`u5iqA#m8lYXpJ4c`lETjzB6pMAQuCU%tQg^u4pnB;r&*klkQV&`K(E@v0fDH7OmuxS9o__3 zePoVSDZIu{N9f-^2>8f*%JjT*pB>CM=~YP0tLz;s)1_PDO^Mb+_R#PQWM(4SHPB4_{tmnIv?(RV z9r#;>!YSgnbmI57PZhsmBAc^$$-aGuZ@hEg?{|k4pb%HFe4OO@RqU{&q*Kdvxg+?v z)b4Kup{RJEH+LAf(4?5B{O67N1t5al`T2a^mbo_!Gw2HW6uZ5ddw?f7yT?B_?ovyl z0+g4T^()A$*#a-vYhb&1GjQ8p!YI%rKBjrB-n=vEP{7Vk{Jbdq_j7=P1C_c<{z~He z)OlxT#C=)e|0G_kXYo{}WRHTTAgT5>2qjwZJ!7UbXks~(yvMzr@m(d$SRKyrqGCks zWVKv5+0xMNOW8jFH!a~g?0&wwkD_1FCb9Vc6NV#VHi%GkWSG>yBHjBotLYa%^(puE zdV3HHw3iy>Of`rs#M!GDZresCE_y|!sXIe|VP6KN$~jE>8N2k`Y{qY&N}?7WsQKe4 zOWbT$C{Du<;Z$|1b|uV0Bw>335m&%~F9Non6{q5VBZ=Ivm;O95ZJ{8xub-A$;yy+o z;+ENh$A2OFrcl_TfvF~Hnn`e@*~^eSb%PuD74$Y1??>F%qxJ2j>68Op8AaJ#=mym9 zv^*RnCa-Y<&wx7bhc3v}F#1)!K|8cpscgUiq^t&Lt4iNh<~C0}sBuad)dRWE$Y)&g%3_q2L$P>v zu+d0C6CkH-ax0A+00K8ijcN*WHSKp#)pOtguS9?wyrU!i2rLo%lV%uR#%H+xW3*oH zuHLA*8QmWWWKRspB#Qhy0u8bufO2LzKA8#zUe+-<-Tt#?AaPYa0OSLA%1>t}XU~gmkSb{wvK?F(ZVs0>N7m86vGt`NI*&q4e0PU;+>Tv4-d;)V z%fak26>W#6tb7aG0pho4J$(?UnZgdJKjUKM&LaL=X zCk)-$SvroXhwMuk2iRu_mP>mCL1(##0W65S^%WyC*D0g`Fz~05DXc9q4u94wJFQn> z^4QJcsIO*Wf5z#6&XhhtSOE5<#QhQyxWtAs?{Or>jZN>B#;tYdtJrJCeM;M<)2$Z0 z49rOc<{p?=2xu=Gd1nj$Jz{YZ5r=&U7nlYzPdXm0DjOt`2T=WY!XR31;7-sdUc|;Z zw3q?E6-|tMkhWO&a`KdDrG;$L;!`}YVg9{{R~Ts(7PAsDc6o$`tKOxJARDKq^EC=E zDHOxl&az@Dg+}hf!`QCRH|}%;gwTH@L!27=OAzR6)yo(fnE=UR|daBV$v+nusOA{^$`^3t+l1dN?<7K8C=LiGkswPhbsOFH7sJHIvfFf8vO; zo(EL=UjswbD523sh|o4f*Px*WdRN1Eqy<6d3~;Ei+F;=p$U4cx(hUw`HgXt+=x}g7 zUyilRHKiF(s>>NAN}*?IM@A`LI|}M-sT~ow)17vgI}15OIIn@<75`o-G~CYvV*JNqDe^md zRYv&D!%H^+ebIlX6=@@%T_DJ$_jtuBiYBM(iq+3<1OV82pV1I}z(Lk6 zu1$cuQjv?Ip94W+O`b791WVwA9i|Pf8FW-52lWuHtHQnLBb401>_!r89%AdAc|2BM z09?GHVKjihA!MVD4{ETnghHA;zCr!r8udFQ@5#2kcIAvLd*`h8XD`>NEua|e9sybS4i zsq_z4rSGlM^Ugh?(s>n9^Gd1TT9v-5O3gd>kT0E=Aw4gZ{&iL9JF4`&bC32@IEOvX6_tDKx(K>GdPm@eEBE~6y)QR z)F@p;4J2{PdN?Rh6$uV5f@7{Muf)jC_j`d*X8*F~wmqi2uj6iy-R~1@E+pI(1%H0mT+r`~3yL*Vcy>Jeon5qwzvB z7omB3iLJ7`55L!=`A&#p_xyHX08Fv6y@I7Pd7i#&1-eD?JrvH zZ5cOj;^udCvy+oDV^DsC22DsVJ&3_%_=232bM>mJK`F-7dkDEQZ znSEc&y-o$bj+-y3oE_YJT%X>-&9CWZ4>wlV`?&eC-t6OMyK;S=n+J4rkeg5G(_`Fx zLA4*@<}JF}O2ht#N(L<+ouI|hNEjm;9!Y@M@tltJWv$rdQre9Ljl)-0+P57i#FcM%_nrTi<@1#d5D`mx|!qV4|Veh zH=otb0dC%_o3C;6ck0~3+-y~MKhDi3b+e5+_NjB<#LXY5yLWQ)`}*`CH~&L#0Nytm z;2of-(Oj}j+Spr74#4@j|9qBj@^81*-hNbXknZG$a+{9uEvl+_4(^S4^%roGHe)W-qR?Q|8v1;zDd}$`KUAkhuO&e@J z8EJisX(YCw<)pHOMG2HxR`>i55_u-Ih@X^9Ngr5`#Zn44S(&dZb-RhN4`09*vK?!- z%+YpcLrd%AFJ!_`1?NUhs=J-){sK?7=J=vJmVmXi^0J4fHeSee_?-7fJyk|6<$`9$kVRFNkttR?RmRNvDq zIbDJO6h`HgPH3w%eaBL(#eP9=7T$!+EGwsKJ5JqAI)!bsa?dh9hcx?SD;^3kEdi#) zdt*|Y`CO*n9@npNgr4V7hLerO%aqK_RV!PcbJ2`dohiqPL4@Ga+X z2loD8#u!40X6YdJs9nbF4^KxOV53tYw&M+H#$MklJA9_;6-Iw1iuLixRiY4^x6gva z@y-xud`Q_DcKC%d7rU0bdt*Y_t;swvMXmILf#SoVgQ3tQsO2uf=)qKH=*Xf`kk)#zdA7T7}BZ0z73O%an3jgHdGPt2*2$6Nm zYzh#_klYvsFr<)SROUVbIS4}al6cmFr^)Ps%~BLWd8%Q1zZ7WTDwaXRJ~q7&Yseii z)Cl6Tv(2|b$ImcUF}hePP1n?O#S(R<5%3=-P@x82e?%#FWXoanL97B( z+vn?P`s|BGw2$5)a$@o<>J}w;36sNIsGSiKm-WiFh{Y$F7l)`=BW;6tjw~8#Huh8j(YANj~M9lb-0sbli5z3NO5i##DtzO;E1&cBLyq9QA0r=yf09+DzLNV7O zIj;>B$U4Tid6bDPwC0$;B%gA^GcECz$QDo7L?KAK) zE;79^l%$8q;}`yR&3JZRy#(@u9U&rB1|IAA)`g_9bdlX^!UBctoqHB=*&8ux?vcfr zis{LJuAb}Z&9SG%kBbJs9@FgCUl91<=TDX2e~? z<=Frna2dew!p;hTX>e2K*+K>U-_eh8pAOvOm2`?88f_y97N}^BYG#uPzZwopShbgX zx{@iSp3mY5MRXgp5B_-1aO)VoM7S6cB8Knz9|aoy-8e7_^k8t-%rDoV$7KfX)z}0( zZqfU^%EC*W6cUiDq;h>o!r{zq07Z9xj@WJDPj6P3e`@0GtOjhS$vMrj`D!=w8|?iR zXb}?3e9eEBobt(ry%`&_84}h2Zx8_>9~AE2k!r6t4@ftAL|5zM(|}f@pc4QcG>wWvX|72n zKG)wS8?w%T`v*HdgC!CMU0&o*^9!-baD=L@=16FOJo%kaT^{~WJgH;Q8f(p*NFIgH zOe6>(9>s-qSe|Pd`JrbWjs$(?&A|1Vbx{vxggT zrjFQyKJR5p(>u?$E+Oo=P&0?67{~ATAqU;pFtrN#cA&VXgNDbQa?{%3g{&j+7QuGT z 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 #ifndef VCDWASM napi_env env = state->napi_env; -#endif - if (state->command == 5) { // $upscope - state->stackPointer -= 1; - return 0; - } + // if (command == 5) { // $upscope + // state->stackPointer -= 1; + // return 0; + // } if ( - (state->command == 1) || // $comment - (state->command == 2) || // $date - (state->command == 4) || // $timescale - (state->command == 7) // $version + (command == 1) || // $comment + (command == 2) || // $date + (command == 3) || // $scope + (command == 4) || // $timescale + (command == 5) || // $upscope + (command == 6) || // $var + (command == 7) // $version ) { char* key; - switch(state->command) { + switch(command) { case 1: key = "comment"; break; case 2: key = "date"; break; case 4: key = "timescale"; break; + // case 6: key = "var"; break; case 7: key = "version"; break; } -#ifndef VCDWASM + napi_value val; ASSERT(val, napi_create_string_latin1(env, (char*)p, (endp - p - 4), &val)) ASSERT(state->info, napi_set_named_property(env, state->info, key, val)) -#else - strcopy(p, endp - 3, state->tmpStr); - set_property_string(key, state->tmpStr); -#endif return 0; } +#else + if ((command > 0) && (command < 8)) { + const int len = endp - p; + int tailLen = 3; + if (len < 4) { + tailLen = len; + } + strcopy(p, endp - tailLen, state->tmpStr); + // set_property_string(key, state->tmpStr); + on_command(state->tmpStr, command); + return 0; + } +#endif - if (state->command == 8) { // $enddefinitions + if (command == 8) { // $enddefinitions *(char *)state->idStr = 0; *(char *)state->timeStampStr = 0; #ifndef VCDWASM @@ -167,7 +179,13 @@ int scopeIdentifierSpan(vcd_parser_t* state, const unsigned char* p, const unsig } int varSizeSpan(vcd_parser_t* state, const unsigned char* p, const unsigned char* endp) { - state->size = strtol((const char *)p, (char **)&endp, 10); + const int32_t size = strtol((const char *)p, (char **)&endp, 10); + state->size = size; +#ifndef VCDWASM +#else + set_property_int("varType", state->type); + set_property_int("varSize", size); +#endif return 0; } @@ -199,7 +217,7 @@ int varNameSpan(vcd_parser_t* state, const unsigned char* p, const unsigned char // set // info.stack[sp].`tmpStr` = info.varId snprintf(state->tmpStr2, 4096, "stack.%d.%s", state->stackPointer, state->tmpStr); - set_path_to_path(state->tmpStr2, "varId"); + set_path_to_path(state->tmpStr2, "varType,varSize,varId"); #endif return 0; } diff --git a/wasm_main.cpp b/wasm_main.cpp index 857d903..72538fd 100644 --- a/wasm_main.cpp +++ b/wasm_main.cpp @@ -58,6 +58,10 @@ void new_object_path(const char* name) { bound_set_property(name, strlen(name), 4, 0, 0); } +void on_command(const char* body, const int command) { + bound_set_property(body, strlen(body), 5, command, 0); +} + int get_property_int(const char* name) { return bound_get_property(name, strlen(name)); } diff --git a/wasm_main.hpp b/wasm_main.hpp index d47b068..0a1daa1 100644 --- a/wasm_main.hpp +++ b/wasm_main.hpp @@ -6,6 +6,7 @@ void set_property_string(const char* name, const char* value); void set_path_string(const char* name, const char* value); void set_path_to_path(const char* name, const char* value); void new_object_path(const char* name); +void on_command(const char* body, const int command); int get_property_int(const char* name); void emit_lifee(const char* name); void emit_triee(