12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630 |
- var Module = ( () => {
- var _scriptDir = import.meta.url;
- return (function(moduleArg={}) {
- var Module = moduleArg;
- var readyPromiseResolve, readyPromiseReject;
- Module["ready"] = new Promise( (resolve, reject) => {
- readyPromiseResolve = resolve;
- readyPromiseReject = reject
- }
- );
- ["_main", "_memory", "___indirect_function_table", "_fflush", "onRuntimeInitialized"].forEach(prop => {
- if (!Object.getOwnPropertyDescriptor(Module["ready"], prop)) {
- Object.defineProperty(Module["ready"], prop, {
- get: () => abort("You are getting " + prop + " on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"),
- set: () => abort("You are setting " + prop + " on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")
- })
- }
- }
- );
- 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 ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
- if (Module["ENVIRONMENT"]) {
- throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)")
- }
- var scriptDirectory = "";
- function locateFile(path) {
- if (Module["locateFile"]) {
- return Module["locateFile"](path, scriptDirectory)
- }
- return scriptDirectory + path
- }
- var read_, readAsync, readBinary;
- if (ENVIRONMENT_IS_SHELL) {
- if (typeof process == "object" && typeof require === "function" || typeof window == "object" || typeof importScripts == "function")
- throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");
- if (typeof read != "undefined") {
- read_ = read
- }
- readBinary = f => {
- if (typeof readbuffer == "function") {
- return new Uint8Array(readbuffer(f))
- }
- let data = read(f, "binary");
- assert(typeof data == "object");
- return data
- }
- ;
- readAsync = (f, onload, onerror) => {
- setTimeout( () => onload(readBinary(f)))
- }
- ;
- if (typeof clearTimeout == "undefined") {
- globalThis.clearTimeout = id => {}
- }
- if (typeof setTimeout == "undefined") {
- globalThis.setTimeout = f => typeof f == "function" ? f() : abort()
- }
- if (typeof scriptArgs != "undefined") {
- arguments_ = scriptArgs
- } else if (typeof arguments != "undefined") {
- arguments_ = arguments
- }
- if (typeof quit == "function") {
- quit_ = (status, toThrow) => {
- setTimeout( () => {
- if (!(toThrow instanceof ExitStatus)) {
- let toLog = toThrow;
- if (toThrow && typeof toThrow == "object" && toThrow.stack) {
- toLog = [toThrow, toThrow.stack]
- }
- err(`exiting due to exception: ${toLog}`)
- }
- quit(status)
- }
- );
- throw toThrow
- }
- }
- if (typeof print != "undefined") {
- if (typeof console == "undefined")
- console = {};
- console.log = print;
- console.warn = console.error = typeof printErr != "undefined" ? printErr : print
- }
- } 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 = ""
- }
- if (!(typeof window == "object" || typeof importScripts == "function"))
- throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");
- {
- 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)
- }
- }
- } else {
- throw new Error("environment detection error")
- }
- var out = Module["print"] || console.log.bind(console);
- var err = Module["printErr"] || console.error.bind(console);
- Object.assign(Module, moduleOverrides);
- moduleOverrides = null;
- checkIncomingModuleAPI();
- if (Module["arguments"])
- arguments_ = Module["arguments"];
- legacyModuleProp("arguments", "arguments_");
- if (Module["thisProgram"])
- thisProgram = Module["thisProgram"];
- legacyModuleProp("thisProgram", "thisProgram");
- if (Module["quit"])
- quit_ = Module["quit"];
- legacyModuleProp("quit", "quit_");
- assert(typeof Module["memoryInitializerPrefixURL"] == "undefined", "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead");
- assert(typeof Module["pthreadMainPrefixURL"] == "undefined", "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead");
- assert(typeof Module["cdInitializerPrefixURL"] == "undefined", "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead");
- assert(typeof Module["filePackagePrefixURL"] == "undefined", "Module.filePackagePrefixURL option was removed, use Module.locateFile instead");
- assert(typeof Module["read"] == "undefined", "Module.read option was removed (modify read_ in JS)");
- assert(typeof Module["readAsync"] == "undefined", "Module.readAsync option was removed (modify readAsync in JS)");
- assert(typeof Module["readBinary"] == "undefined", "Module.readBinary option was removed (modify readBinary in JS)");
- assert(typeof Module["setWindowTitle"] == "undefined", "Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)");
- assert(typeof Module["TOTAL_MEMORY"] == "undefined", "Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY");
- legacyModuleProp("asm", "wasmExports");
- legacyModuleProp("read", "read_");
- legacyModuleProp("readAsync", "readAsync");
- legacyModuleProp("readBinary", "readBinary");
- legacyModuleProp("setWindowTitle", "setWindowTitle");
- assert(!ENVIRONMENT_IS_NODE, "node environment detected but not enabled at build time. Add 'node' to `-sENVIRONMENT` to enable.");
- assert(!ENVIRONMENT_IS_SHELL, "shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable.");
- var wasmBinary;
- if (Module["wasmBinary"])
- wasmBinary = Module["wasmBinary"];
- legacyModuleProp("wasmBinary", "wasmBinary");
- if (typeof WebAssembly != "object") {
- abort("no native wasm support detected")
- }
- var wasmMemory;
- var ABORT = false;
- var EXITSTATUS;
- function assert(condition, text) {
- if (!condition) {
- abort("Assertion failed" + (text ? ": " + text : ""))
- }
- }
- var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
- function updateMemoryViews() {
- var b = wasmMemory.buffer;
- Module["HEAP8"] = HEAP8 = new Int8Array(b);
- Module["HEAP16"] = HEAP16 = new Int16Array(b);
- Module["HEAPU8"] = HEAPU8 = new Uint8Array(b);
- Module["HEAPU16"] = HEAPU16 = new Uint16Array(b);
- Module["HEAP32"] = HEAP32 = new Int32Array(b);
- Module["HEAPU32"] = HEAPU32 = new Uint32Array(b);
- Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
- Module["HEAPF64"] = HEAPF64 = new Float64Array(b)
- }
- assert(!Module["STACK_SIZE"], "STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time");
- assert(typeof Int32Array != "undefined" && typeof Float64Array !== "undefined" && Int32Array.prototype.subarray != undefined && Int32Array.prototype.set != undefined, "JS engine does not provide full typed array support");
- assert(!Module["wasmMemory"], "Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally");
- assert(!Module["INITIAL_MEMORY"], "Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically");
- function writeStackCookie() {
- var max = _emscripten_stack_get_end();
- assert((max & 3) == 0);
- if (max == 0) {
- max += 4
- }
- HEAPU32[max >> 2] = 34821223;
- HEAPU32[max + 4 >> 2] = 2310721022;
- HEAPU32[0 >> 2] = 1668509029
- }
- function checkStackCookie() {
- if (ABORT)
- return;
- var max = _emscripten_stack_get_end();
- if (max == 0) {
- max += 4
- }
- var cookie1 = HEAPU32[max >> 2];
- var cookie2 = HEAPU32[max + 4 >> 2];
- if (cookie1 != 34821223 || cookie2 != 2310721022) {
- abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`)
- }
- if (HEAPU32[0 >> 2] != 1668509029) {
- abort("Runtime error: The application has corrupted its heap memory area (address zero)!")
- }
- }
- (function() {
- var h16 = new Int16Array(1);
- var h8 = new Int8Array(h16.buffer);
- h16[0] = 25459;
- if (h8[0] !== 115 || h8[1] !== 99)
- throw "Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"
- }
- )();
- var __ATPRERUN__ = [];
- var __ATINIT__ = [];
- var __ATPOSTRUN__ = [];
- var runtimeInitialized = false;
- 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() {
- assert(!runtimeInitialized);
- runtimeInitialized = true;
- checkStackCookie();
- if (!Module["noFSInit"] && !FS.init.initialized)
- FS.init();
- FS.ignorePermissions = false;
- TTY.init();
- callRuntimeCallbacks(__ATINIT__)
- }
- function postRun() {
- checkStackCookie();
- 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)
- }
- assert(Math.imul, "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
- assert(Math.fround, "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
- assert(Math.clz32, "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
- assert(Math.trunc, "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
- var runDependencies = 0;
- var runDependencyWatcher = null;
- var dependenciesFulfilled = null;
- var runDependencyTracking = {};
- function getUniqueRunDependency(id) {
- var orig = id;
- while (1) {
- if (!runDependencyTracking[id])
- return id;
- id = orig + Math.random()
- }
- }
- function addRunDependency(id) {
- runDependencies++;
- Module["monitorRunDependencies"]?.(runDependencies);
- if (id) {
- assert(!runDependencyTracking[id]);
- runDependencyTracking[id] = 1;
- if (runDependencyWatcher === null && typeof setInterval != "undefined") {
- runDependencyWatcher = setInterval( () => {
- if (ABORT) {
- clearInterval(runDependencyWatcher);
- runDependencyWatcher = null;
- return
- }
- var shown = false;
- for (var dep in runDependencyTracking) {
- if (!shown) {
- shown = true;
- err("still waiting on run dependencies:")
- }
- err(`dependency: ${dep}`)
- }
- if (shown) {
- err("(end of list)")
- }
- }
- , 1e4)
- }
- } else {
- err("warning: run dependency added without ID")
- }
- }
- function removeRunDependency(id) {
- runDependencies--;
- Module["monitorRunDependencies"]?.(runDependencies);
- if (id) {
- assert(runDependencyTracking[id]);
- delete runDependencyTracking[id]
- } else {
- err("warning: run dependency removed without ID")
- }
- if (runDependencies == 0) {
- if (runDependencyWatcher !== null) {
- clearInterval(runDependencyWatcher);
- runDependencyWatcher = null
- }
- if (dependenciesFulfilled) {
- var callback = dependenciesFulfilled;
- dependenciesFulfilled = null;
- callback()
- }
- }
- }
- function abort(what) {
- Module["onAbort"]?.(what);
- what = "Aborted(" + what + ")";
- err(what);
- ABORT = true;
- EXITSTATUS = 1;
- var e = new WebAssembly.RuntimeError(what);
- readyPromiseReject(e);
- throw e
- }
- var dataURIPrefix = "data:application/octet-stream;base64,";
- var isDataURI = filename => filename.startsWith(dataURIPrefix);
- var isFileURI = filename => filename.startsWith("file://");
- function createExportWrapper(name) {
- return function() {
- assert(runtimeInitialized, `native function \`${name}\` called before runtime initialization`);
- var f = wasmExports[name];
- assert(f, `exported native function \`${name}\` not found`);
- return f.apply(null, arguments)
- }
- }
- var wasmBinaryFile;
- if (Module["locateFile"]) {
- wasmBinaryFile = "tinyusdz.wasm";
- if (!isDataURI(wasmBinaryFile)) {
- wasmBinaryFile = locateFile(wasmBinaryFile)
- }
- } else {
- wasmBinaryFile = new URL("tinyusdz.wasm",import.meta.url).href
- }
- function getBinarySync(file) {
- if (file == wasmBinaryFile && wasmBinary) {
- return new Uint8Array(wasmBinary)
- }
- if (readBinary) {
- return readBinary(file)
- }
- throw "both async and sync fetching of the wasm failed"
- }
- function getBinaryPromise(binaryFile) {
- if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {
- if (typeof fetch == "function") {
- return fetch(binaryFile, {
- credentials: "same-origin"
- }).then(response => {
- if (!response["ok"]) {
- throw "failed to load wasm binary file at '" + binaryFile + "'"
- }
- return response["arrayBuffer"]()
- }
- ).catch( () => getBinarySync(binaryFile))
- }
- }
- return Promise.resolve().then( () => getBinarySync(binaryFile))
- }
- function instantiateArrayBuffer(binaryFile, imports, receiver) {
- return getBinaryPromise(binaryFile).then(binary => WebAssembly.instantiate(binary, imports)).then(instance => instance).then(receiver, reason => {
- err(`failed to asynchronously prepare wasm: ${reason}`);
- if (isFileURI(wasmBinaryFile)) {
- err(`warning: Loading from a file URI (${wasmBinaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`)
- }
- abort(reason)
- }
- )
- }
- function instantiateAsync(binary, binaryFile, imports, callback) {
- if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") {
- return fetch(binaryFile, {
- credentials: "same-origin"
- }).then(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)
- })
- }
- )
- }
- return instantiateArrayBuffer(binaryFile, imports, callback)
- }
- function createWasm() {
- var info = {
- "env": wasmImports,
- "wasi_snapshot_preview1": wasmImports
- };
- function receiveInstance(instance, module) {
- wasmExports = instance.exports;
- wasmMemory = wasmExports["memory"];
- assert(wasmMemory, "memory not found in wasm exports");
- updateMemoryViews();
- wasmTable = wasmExports["__indirect_function_table"];
- assert(wasmTable, "table not found in wasm exports");
- addOnInit(wasmExports["__wasm_call_ctors"]);
- removeRunDependency("wasm-instantiate");
- return wasmExports
- }
- addRunDependency("wasm-instantiate");
- var trueModule = Module;
- function receiveInstantiationResult(result) {
- assert(Module === trueModule, "the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?");
- trueModule = null;
- 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 legacyModuleProp(prop, newName, incomming=true) {
- if (!Object.getOwnPropertyDescriptor(Module, prop)) {
- Object.defineProperty(Module, prop, {
- configurable: true,
- get() {
- let extra = incomming ? " (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" : "";
- abort(`\`Module.${prop}\` has been replaced by \`${newName}\`` + extra)
- }
- })
- }
- }
- function ignoredModuleProp(prop) {
- if (Object.getOwnPropertyDescriptor(Module, prop)) {
- abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`)
- }
- }
- function isExportedByForceFilesystem(name) {
- return name === "FS_createPath" || name === "FS_createDataFile" || name === "FS_createPreloadedFile" || name === "FS_unlink" || name === "addRunDependency" || name === "FS_createLazyFile" || name === "FS_createDevice" || name === "removeRunDependency"
- }
- function missingGlobal(sym, msg) {
- if (typeof globalThis !== "undefined") {
- Object.defineProperty(globalThis, sym, {
- configurable: true,
- get() {
- warnOnce(`\`${sym}\` is not longer defined by emscripten. ${msg}`);
- return undefined
- }
- })
- }
- }
- missingGlobal("buffer", "Please use HEAP8.buffer or wasmMemory.buffer");
- missingGlobal("asm", "Please use wasmExports instead");
- function missingLibrarySymbol(sym) {
- if (typeof globalThis !== "undefined" && !Object.getOwnPropertyDescriptor(globalThis, sym)) {
- Object.defineProperty(globalThis, sym, {
- configurable: true,
- get() {
- var msg = `\`${sym}\` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line`;
- var librarySymbol = sym;
- if (!librarySymbol.startsWith("_")) {
- librarySymbol = "$" + sym
- }
- msg += ` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`;
- if (isExportedByForceFilesystem(sym)) {
- msg += ". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"
- }
- warnOnce(msg);
- return undefined
- }
- })
- }
- unexportedRuntimeSymbol(sym)
- }
- function unexportedRuntimeSymbol(sym) {
- if (!Object.getOwnPropertyDescriptor(Module, sym)) {
- Object.defineProperty(Module, sym, {
- configurable: true,
- get() {
- var msg = `'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;
- if (isExportedByForceFilesystem(sym)) {
- msg += ". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"
- }
- abort(msg)
- }
- })
- }
- }
- function ExitStatus(status) {
- this.name = "ExitStatus";
- this.message = `Program terminated with exit(${status})`;
- this.status = status
- }
- var callRuntimeCallbacks = callbacks => {
- while (callbacks.length > 0) {
- callbacks.shift()(Module)
- }
- }
- ;
- var noExitRuntime = Module["noExitRuntime"] || true;
- var ptrToString = ptr => {
- assert(typeof ptr === "number");
- ptr >>>= 0;
- return "0x" + ptr.toString(16).padStart(8, "0")
- }
- ;
- var warnOnce = text => {
- warnOnce.shown ||= {};
- if (!warnOnce.shown[text]) {
- warnOnce.shown[text] = 1;
- err(text)
- }
- }
- ;
- function ExceptionInfo(excPtr) {
- this.excPtr = excPtr;
- this.ptr = excPtr - 24;
- this.set_type = function(type) {
- HEAPU32[this.ptr + 4 >> 2] = type
- }
- ;
- this.get_type = function() {
- return HEAPU32[this.ptr + 4 >> 2]
- }
- ;
- this.set_destructor = function(destructor) {
- HEAPU32[this.ptr + 8 >> 2] = destructor
- }
- ;
- this.get_destructor = function() {
- return HEAPU32[this.ptr + 8 >> 2]
- }
- ;
- this.set_caught = function(caught) {
- caught = caught ? 1 : 0;
- HEAP8[this.ptr + 12 >> 0] = caught
- }
- ;
- this.get_caught = function() {
- return HEAP8[this.ptr + 12 >> 0] != 0
- }
- ;
- this.set_rethrown = function(rethrown) {
- rethrown = rethrown ? 1 : 0;
- HEAP8[this.ptr + 13 >> 0] = rethrown
- }
- ;
- this.get_rethrown = function() {
- return HEAP8[this.ptr + 13 >> 0] != 0
- }
- ;
- this.init = function(type, destructor) {
- this.set_adjusted_ptr(0);
- this.set_type(type);
- this.set_destructor(destructor)
- }
- ;
- this.set_adjusted_ptr = function(adjustedPtr) {
- HEAPU32[this.ptr + 16 >> 2] = adjustedPtr
- }
- ;
- this.get_adjusted_ptr = function() {
- return HEAPU32[this.ptr + 16 >> 2]
- }
- ;
- this.get_exception_ptr = function() {
- var isPointer = ___cxa_is_pointer_type(this.get_type());
- if (isPointer) {
- return HEAPU32[this.excPtr >> 2]
- }
- var adjusted = this.get_adjusted_ptr();
- if (adjusted !== 0)
- return adjusted;
- return this.excPtr
- }
- }
- var exceptionLast = 0;
- var uncaughtExceptionCount = 0;
- var ___cxa_throw = (ptr, type, destructor) => {
- var info = new ExceptionInfo(ptr);
- info.init(type, destructor);
- exceptionLast = ptr;
- uncaughtExceptionCount++;
- assert(false, "Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.")
- }
- ;
- var setErrNo = value => {
- HEAP32[___errno_location() >> 2] = value;
- return value
- }
- ;
- 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) => PATH.normalize(l + "/" + r)
- };
- var initRandomFill = () => {
- if (typeof crypto == "object" && typeof crypto["getRandomValues"] == "function") {
- return view => crypto.getRandomValues(view)
- } else
- abort("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: (array) => { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")
- }
- ;
- var randomFill = view => (randomFill = initRandomFill())(view);
- 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 < arr.length; start++) {
- if (arr[start] !== "")
- break
- }
- var end = arr.length - 1;
- for (; end >= 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; i < length; i++) {
- if (fromParts[i] !== toParts[i]) {
- samePartsLength = i;
- break
- }
- }
- var outputParts = [];
- for (var i = samePartsLength; i < fromParts.length; i++) {
- outputParts.push("..")
- }
- outputParts = outputParts.concat(toParts.slice(samePartsLength));
- return outputParts.join("/")
- }
- };
- var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined;
- var 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 < endPtr) {
- var u0 = heapOrArray[idx++];
- if (!(u0 & 128)) {
- str += String.fromCharCode(u0);
- continue
- }
- var u1 = heapOrArray[idx++] & 63;
- if ((u0 & 224) == 192) {
- str += String.fromCharCode((u0 & 31) << 6 | u1);
- continue
- }
- var u2 = heapOrArray[idx++] & 63;
- if ((u0 & 240) == 224) {
- u0 = (u0 & 15) << 12 | u1 << 6 | u2
- } else {
- if ((u0 & 248) != 240)
- warnOnce("Invalid UTF-8 leading byte " + ptrToString(u0) + " encountered when deserializing a UTF-8 string in wasm memory to a JS string!");
- u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63
- }
- if (u0 < 65536) {
- str += String.fromCharCode(u0)
- } else {
- var ch = u0 - 65536;
- str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)
- }
- }
- return str
- }
- ;
- var FS_stdin_getChar_buffer = [];
- var lengthBytesUTF8 = str => {
- var len = 0;
- for (var i = 0; i < str.length; ++i) {
- var c = str.charCodeAt(i);
- if (c <= 127) {
- len++
- } else if (c <= 2047) {
- len += 2
- } else if (c >= 55296 && c <= 57343) {
- len += 4;
- ++i
- } else {
- len += 3
- }
- }
- return len
- }
- ;
- var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {
- assert(typeof str === "string", `stringToUTF8Array expects a string (got ${typeof str})`);
- if (!(maxBytesToWrite > 0))
- return 0;
- var startIdx = outIdx;
- var endIdx = outIdx + maxBytesToWrite - 1;
- for (var i = 0; i < str.length; ++i) {
- var u = str.charCodeAt(i);
- if (u >= 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;
- if (u > 1114111)
- warnOnce("Invalid Unicode code point " + ptrToString(u) + " encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).");
- 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 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 FS_stdin_getChar = () => {
- if (!FS_stdin_getChar_buffer.length) {
- var result = null;
- 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
- }
- FS_stdin_getChar_buffer = intArrayFromString(result, true)
- }
- return FS_stdin_getChar_buffer.shift()
- }
- ;
- var TTY = {
- ttys: [],
- init() {},
- shutdown() {},
- register(dev, ops) {
- TTY.ttys[dev] = {
- input: [],
- output: [],
- ops: ops
- };
- FS.registerDevice(dev, TTY.stream_ops)
- },
- stream_ops: {
- open(stream) {
- var tty = TTY.ttys[stream.node.rdev];
- if (!tty) {
- throw new FS.ErrnoError(43)
- }
- stream.tty = tty;
- stream.seekable = false
- },
- close(stream) {
- stream.tty.ops.fsync(stream.tty)
- },
- fsync(stream) {
- stream.tty.ops.fsync(stream.tty)
- },
- read(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; i < length; i++) {
- var result;
- try {
- result = stream.tty.ops.get_char(stream.tty)
- } catch (e) {
- throw new FS.ErrnoError(29)
- }
- if (result === undefined && bytesRead === 0) {
- throw new FS.ErrnoError(6)
- }
- if (result === null || result === undefined)
- break;
- bytesRead++;
- buffer[offset + i] = result
- }
- if (bytesRead) {
- stream.node.timestamp = Date.now()
- }
- return bytesRead
- },
- write(stream, buffer, offset, length, pos) {
- if (!stream.tty || !stream.tty.ops.put_char) {
- throw new FS.ErrnoError(60)
- }
- try {
- for (var i = 0; i < length; i++) {
- stream.tty.ops.put_char(stream.tty, buffer[offset + i])
- }
- } catch (e) {
- throw new FS.ErrnoError(29)
- }
- if (length) {
- stream.node.timestamp = Date.now()
- }
- return i
- }
- },
- default_tty_ops: {
- get_char(tty) {
- return FS_stdin_getChar()
- },
- put_char(tty, val) {
- if (val === null || val === 10) {
- out(UTF8ArrayToString(tty.output, 0));
- tty.output = []
- } else {
- if (val != 0)
- tty.output.push(val)
- }
- },
- fsync(tty) {
- if (tty.output && tty.output.length > 0) {
- out(UTF8ArrayToString(tty.output, 0));
- tty.output = []
- }
- },
- ioctl_tcgets(tty) {
- return {
- c_iflag: 25856,
- c_oflag: 5,
- c_cflag: 191,
- c_lflag: 35387,
- c_cc: [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- }
- },
- ioctl_tcsets(tty, optional_actions, data) {
- return 0
- },
- ioctl_tiocgwinsz(tty) {
- return [24, 80]
- }
- },
- default_tty1_ops: {
- put_char(tty, val) {
- if (val === null || val === 10) {
- err(UTF8ArrayToString(tty.output, 0));
- tty.output = []
- } else {
- if (val != 0)
- tty.output.push(val)
- }
- },
- fsync(tty) {
- if (tty.output && tty.output.length > 0) {
- err(UTF8ArrayToString(tty.output, 0));
- tty.output = []
- }
- }
- }
- };
- var zeroMemory = (address, size) => {
- HEAPU8.fill(0, address, address + size);
- return address
- }
- ;
- var alignMemory = (size, alignment) => {
- assert(alignment, "alignment argument is required");
- return Math.ceil(size / alignment) * alignment
- }
- ;
- var mmapAlloc = size => {
- size = alignMemory(size, 65536);
- var ptr = _emscripten_builtin_memalign(65536, size);
- if (!ptr)
- return 0;
- return zeroMemory(ptr, size)
- }
- ;
- var MEMFS = {
- ops_table: null,
- mount(mount) {
- return MEMFS.createNode(null, "/", 16384 | 511, 0)
- },
- createNode(parent, name, mode, dev) {
- if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
- throw new FS.ErrnoError(63)
- }
- 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(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(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 < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 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(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(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(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(parent, name) {
- throw FS.genericErrors[44]
- },
- mknod(parent, name, mode, dev) {
- return MEMFS.createNode(parent, name, mode, dev)
- },
- rename(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(parent, name) {
- delete parent.contents[name];
- parent.timestamp = Date.now()
- },
- rmdir(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(node) {
- var entries = [".", ".."];
- for (var key of Object.keys(node.contents)) {
- entries.push(key)
- }
- return entries
- },
- symlink(parent, newname, oldpath) {
- var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);
- node.link = oldpath;
- return node
- },
- readlink(node) {
- if (!FS.isLink(node.mode)) {
- throw new FS.ErrnoError(28)
- }
- return node.link
- }
- },
- stream_ops: {
- read(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);
- assert(size >= 0);
- if (size > 8 && contents.subarray) {
- buffer.set(contents.subarray(position, position + size), offset)
- } else {
- for (var i = 0; i < size; i++)
- buffer[offset + i] = contents[position + i]
- }
- return size
- },
- write(stream, buffer, offset, length, position, canOwn) {
- assert(!(buffer instanceof ArrayBuffer));
- if (buffer.buffer === HEAP8.buffer) {
- canOwn = false
- }
- if (!length)
- return 0;
- var node = stream.node;
- node.timestamp = Date.now();
- if (buffer.subarray && (!node.contents || node.contents.subarray)) {
- if (canOwn) {
- assert(position === 0, "canOwn must imply no weird position inside the file");
- node.contents = buffer.subarray(offset, offset + length);
- node.usedBytes = length;
- return length
- } else if (node.usedBytes === 0 && position === 0) {
- node.contents = buffer.slice(offset, offset + length);
- node.usedBytes = length;
- return length
- } else if (position + length <= node.usedBytes) {
- node.contents.set(buffer.subarray(offset, offset + length), position);
- return length
- }
- }
- MEMFS.expandFileStorage(node, position + length);
- if (node.contents.subarray && buffer.subarray) {
- node.contents.set(buffer.subarray(offset, offset + length), position)
- } else {
- for (var i = 0; i < length; i++) {
- node.contents[position + i] = buffer[offset + i]
- }
- }
- node.usedBytes = Math.max(node.usedBytes, position + length);
- return length
- },
- llseek(stream, offset, whence) {
- var position = offset;
- if (whence === 1) {
- position += stream.position
- } else if (whence === 2) {
- if (FS.isFile(stream.node.mode)) {
- position += stream.node.usedBytes
- }
- }
- if (position < 0) {
- throw new FS.ErrnoError(28)
- }
- return position
- },
- allocate(stream, offset, length) {
- MEMFS.expandFileStorage(stream.node, offset + length);
- stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length)
- },
- mmap(stream, length, position, prot, flags) {
- if (!FS.isFile(stream.node.mode)) {
- throw new FS.ErrnoError(43)
- }
- var ptr;
- var allocated;
- var contents = stream.node.contents;
- if (!(flags & 2) && contents.buffer === HEAP8.buffer) {
- allocated = false;
- ptr = contents.byteOffset
- } else {
- if (position > 0 || position + length < contents.length) {
- if (contents.subarray) {
- contents = contents.subarray(position, position + length)
- } else {
- contents = Array.prototype.slice.call(contents, position, position + length)
- }
- }
- allocated = true;
- ptr = mmapAlloc(length);
- if (!ptr) {
- throw new FS.ErrnoError(48)
- }
- HEAP8.set(contents, ptr)
- }
- return {
- ptr: ptr,
- allocated: allocated
- }
- },
- msync(stream, buffer, offset, length, mmapFlags) {
- MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
- return 0
- }
- }
- };
- var asyncLoad = (url, onload, onerror, noRunDep) => {
- var dep = !noRunDep ? getUniqueRunDependency(`al ${url}`) : "";
- readAsync(url, arrayBuffer => {
- 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_createDataFile = (parent, name, fileData, canRead, canWrite, canOwn) => {
- FS.createDataFile(parent, name, fileData, canRead, canWrite, canOwn)
- }
- ;
- var preloadPlugins = Module["preloadPlugins"] || [];
- var FS_handledByPreloadPlugin = (byteArray, fullname, finish, onerror) => {
- if (typeof Browser != "undefined")
- Browser.init();
- var handled = false;
- preloadPlugins.forEach(plugin => {
- if (handled)
- return;
- if (plugin["canHandle"](fullname)) {
- plugin["handle"](byteArray, fullname, finish, onerror);
- handled = true
- }
- }
- );
- return handled
- }
- ;
- var FS_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) {
- preFinish?.();
- if (!dontCreateFile) {
- FS_createDataFile(parent, name, byteArray, canRead, canWrite, canOwn)
- }
- onload?.();
- removeRunDependency(dep)
- }
- if (FS_handledByPreloadPlugin(byteArray, fullname, finish, () => {
- onerror?.();
- removeRunDependency(dep)
- }
- )) {
- return
- }
- finish(byteArray)
- }
- addRunDependency(dep);
- if (typeof url == "string") {
- asyncLoad(url, byteArray => processData(byteArray), onerror)
- } else {
- processData(url)
- }
- }
- ;
- var FS_modeStringToFlags = str => {
- var flagModes = {
- "r": 0,
- "r+": 2,
- "w": 512 | 64 | 1,
- "w+": 512 | 64 | 2,
- "a": 1024 | 64 | 1,
- "a+": 1024 | 64 | 2
- };
- var flags = flagModes[str];
- if (typeof flags == "undefined") {
- throw new Error(`Unknown file open mode: ${str}`)
- }
- return flags
- }
- ;
- var FS_getMode = (canRead, canWrite) => {
- var mode = 0;
- if (canRead)
- mode |= 292 | 73;
- if (canWrite)
- mode |= 146;
- return mode
- }
- ;
- var ERRNO_MESSAGES = {
- 0: "Success",
- 1: "Arg list too long",
- 2: "Permission denied",
- 3: "Address already in use",
- 4: "Address not available",
- 5: "Address family not supported by protocol family",
- 6: "No more processes",
- 7: "Socket already connected",
- 8: "Bad file number",
- 9: "Trying to read unreadable message",
- 10: "Mount device busy",
- 11: "Operation canceled",
- 12: "No children",
- 13: "Connection aborted",
- 14: "Connection refused",
- 15: "Connection reset by peer",
- 16: "File locking deadlock error",
- 17: "Destination address required",
- 18: "Math arg out of domain of func",
- 19: "Quota exceeded",
- 20: "File exists",
- 21: "Bad address",
- 22: "File too large",
- 23: "Host is unreachable",
- 24: "Identifier removed",
- 25: "Illegal byte sequence",
- 26: "Connection already in progress",
- 27: "Interrupted system call",
- 28: "Invalid argument",
- 29: "I/O error",
- 30: "Socket is already connected",
- 31: "Is a directory",
- 32: "Too many symbolic links",
- 33: "Too many open files",
- 34: "Too many links",
- 35: "Message too long",
- 36: "Multihop attempted",
- 37: "File or path name too long",
- 38: "Network interface is not configured",
- 39: "Connection reset by network",
- 40: "Network is unreachable",
- 41: "Too many open files in system",
- 42: "No buffer space available",
- 43: "No such device",
- 44: "No such file or directory",
- 45: "Exec format error",
- 46: "No record locks available",
- 47: "The link has been severed",
- 48: "Not enough core",
- 49: "No message of desired type",
- 50: "Protocol not available",
- 51: "No space left on device",
- 52: "Function not implemented",
- 53: "Socket is not connected",
- 54: "Not a directory",
- 55: "Directory not empty",
- 56: "State not recoverable",
- 57: "Socket operation on non-socket",
- 59: "Not a typewriter",
- 60: "No such device or address",
- 61: "Value too large for defined data type",
- 62: "Previous owner died",
- 63: "Not super-user",
- 64: "Broken pipe",
- 65: "Protocol error",
- 66: "Unknown protocol",
- 67: "Protocol wrong type for socket",
- 68: "Math result not representable",
- 69: "Read only file system",
- 70: "Illegal seek",
- 71: "No such process",
- 72: "Stale file handle",
- 73: "Connection timed out",
- 74: "Text file busy",
- 75: "Cross-device link",
- 100: "Device not a stream",
- 101: "Bad font file fmt",
- 102: "Invalid slot",
- 103: "Invalid request code",
- 104: "No anode",
- 105: "Block device required",
- 106: "Channel number out of range",
- 107: "Level 3 halted",
- 108: "Level 3 reset",
- 109: "Link number out of range",
- 110: "Protocol driver not attached",
- 111: "No CSI structure available",
- 112: "Level 2 halted",
- 113: "Invalid exchange",
- 114: "Invalid request descriptor",
- 115: "Exchange full",
- 116: "No data (for no delay io)",
- 117: "Timer expired",
- 118: "Out of streams resources",
- 119: "Machine is not on the network",
- 120: "Package not installed",
- 121: "The object is remote",
- 122: "Advertise error",
- 123: "Srmount error",
- 124: "Communication error on send",
- 125: "Cross mount point (not really error)",
- 126: "Given log. name not unique",
- 127: "f.d. invalid for this operation",
- 128: "Remote address changed",
- 129: "Can access a needed shared lib",
- 130: "Accessing a corrupted shared lib",
- 131: ".lib section in a.out corrupted",
- 132: "Attempting to link in too many libs",
- 133: "Attempting to exec a shared library",
- 135: "Streams pipe error",
- 136: "Too many users",
- 137: "Socket type not supported",
- 138: "Not supported",
- 139: "Protocol family not supported",
- 140: "Can't send after socket shutdown",
- 141: "Too many references",
- 142: "Host is down",
- 148: "No medium (in tape drive)",
- 156: "Level 2 not synchronized"
- };
- var ERRNO_CODES = {
- "EPERM": 63,
- "ENOENT": 44,
- "ESRCH": 71,
- "EINTR": 27,
- "EIO": 29,
- "ENXIO": 60,
- "E2BIG": 1,
- "ENOEXEC": 45,
- "EBADF": 8,
- "ECHILD": 12,
- "EAGAIN": 6,
- "EWOULDBLOCK": 6,
- "ENOMEM": 48,
- "EACCES": 2,
- "EFAULT": 21,
- "ENOTBLK": 105,
- "EBUSY": 10,
- "EEXIST": 20,
- "EXDEV": 75,
- "ENODEV": 43,
- "ENOTDIR": 54,
- "EISDIR": 31,
- "EINVAL": 28,
- "ENFILE": 41,
- "EMFILE": 33,
- "ENOTTY": 59,
- "ETXTBSY": 74,
- "EFBIG": 22,
- "ENOSPC": 51,
- "ESPIPE": 70,
- "EROFS": 69,
- "EMLINK": 34,
- "EPIPE": 64,
- "EDOM": 18,
- "ERANGE": 68,
- "ENOMSG": 49,
- "EIDRM": 24,
- "ECHRNG": 106,
- "EL2NSYNC": 156,
- "EL3HLT": 107,
- "EL3RST": 108,
- "ELNRNG": 109,
- "EUNATCH": 110,
- "ENOCSI": 111,
- "EL2HLT": 112,
- "EDEADLK": 16,
- "ENOLCK": 46,
- "EBADE": 113,
- "EBADR": 114,
- "EXFULL": 115,
- "ENOANO": 104,
- "EBADRQC": 103,
- "EBADSLT": 102,
- "EDEADLOCK": 16,
- "EBFONT": 101,
- "ENOSTR": 100,
- "ENODATA": 116,
- "ETIME": 117,
- "ENOSR": 118,
- "ENONET": 119,
- "ENOPKG": 120,
- "EREMOTE": 121,
- "ENOLINK": 47,
- "EADV": 122,
- "ESRMNT": 123,
- "ECOMM": 124,
- "EPROTO": 65,
- "EMULTIHOP": 36,
- "EDOTDOT": 125,
- "EBADMSG": 9,
- "ENOTUNIQ": 126,
- "EBADFD": 127,
- "EREMCHG": 128,
- "ELIBACC": 129,
- "ELIBBAD": 130,
- "ELIBSCN": 131,
- "ELIBMAX": 132,
- "ELIBEXEC": 133,
- "ENOSYS": 52,
- "ENOTEMPTY": 55,
- "ENAMETOOLONG": 37,
- "ELOOP": 32,
- "EOPNOTSUPP": 138,
- "EPFNOSUPPORT": 139,
- "ECONNRESET": 15,
- "ENOBUFS": 42,
- "EAFNOSUPPORT": 5,
- "EPROTOTYPE": 67,
- "ENOTSOCK": 57,
- "ENOPROTOOPT": 50,
- "ESHUTDOWN": 140,
- "ECONNREFUSED": 14,
- "EADDRINUSE": 3,
- "ECONNABORTED": 13,
- "ENETUNREACH": 40,
- "ENETDOWN": 38,
- "ETIMEDOUT": 73,
- "EHOSTDOWN": 142,
- "EHOSTUNREACH": 23,
- "EINPROGRESS": 26,
- "EALREADY": 7,
- "EDESTADDRREQ": 17,
- "EMSGSIZE": 35,
- "EPROTONOSUPPORT": 66,
- "ESOCKTNOSUPPORT": 137,
- "EADDRNOTAVAIL": 4,
- "ENETRESET": 39,
- "EISCONN": 30,
- "ENOTCONN": 53,
- "ETOOMANYREFS": 141,
- "EUSERS": 136,
- "EDQUOT": 19,
- "ESTALE": 72,
- "ENOTSUP": 138,
- "ENOMEDIUM": 148,
- "EILSEQ": 25,
- "EOVERFLOW": 61,
- "ECANCELED": 11,
- "ENOTRECOVERABLE": 56,
- "EOWNERDEAD": 62,
- "ESTRPIPE": 135
- };
- var demangle = func => {
- warnOnce("warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling");
- return func
- }
- ;
- var demangleAll = text => {
- var regex = /\b_Z[\w\d_]+/g;
- return text.replace(regex, function(x) {
- var y = demangle(x);
- return x === y ? x : y + " [" + x + "]"
- })
- }
- ;
- 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; i < parts.length; i++) {
- var islast = i === parts.length - 1;
- if (islast && opts.parent) {
- break
- }
- current = FS.lookupNode(current, parts[i]);
- current_path = PATH.join2(current_path, parts[i]);
- if (FS.isMountpoint(current)) {
- if (!islast || islast && opts.follow_mount) {
- current = current.mounted.root
- }
- }
- if (!islast || opts.follow) {
- var count = 0;
- while (FS.isLink(current.mode)) {
- var link = FS.readlink(current_path);
- current_path = PATH_FS.resolve(PATH.dirname(current_path), link);
- var lookup = FS.lookupPath(current_path, {
- recurse_count: opts.recurse_count + 1
- });
- current = lookup.node;
- if (count++ > 40) {
- 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 < name.length; i++) {
- hash = (hash << 5) - hash + name.charCodeAt(i) | 0
- }
- return (parentid + hash >>> 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) {
- assert(typeof parent == "object");
- 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
- },
- 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() {
- for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) {
- if (!FS.streams[fd]) {
- return fd
- }
- }
- throw new FS.ErrnoError(33)
- },
- getStreamChecked(fd) {
- var stream = FS.getStream(fd);
- if (!stream) {
- throw new FS.ErrnoError(8)
- }
- return stream
- },
- getStream: fd => FS.streams[fd],
- createStream(stream, fd=-1) {
- if (!FS.FSStream) {
- FS.FSStream = function() {
- this.shared = {}
- }
- ;
- FS.FSStream.prototype = {};
- Object.defineProperties(FS.FSStream.prototype, {
- object: {
- get() {
- return this.node
- },
- set(val) {
- this.node = val
- }
- },
- isRead: {
- get() {
- return (this.flags & 2097155) !== 1
- }
- },
- isWrite: {
- get() {
- return (this.flags & 2097155) !== 0
- }
- },
- isAppend: {
- get() {
- return this.flags & 1024
- }
- },
- flags: {
- get() {
- return this.shared.flags
- },
- set(val) {
- this.shared.flags = val
- }
- },
- position: {
- get() {
- return this.shared.position
- },
- set(val) {
- this.shared.position = val
- }
- }
- })
- }
- stream = Object.assign(new FS.FSStream, stream);
- if (fd == -1) {
- fd = FS.nextfd()
- }
- 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;
- 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) {
- assert(FS.syncFSRequests > 0);
- 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) {
- if (typeof type == "string") {
- throw type
- }
- 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);
- assert(idx !== -1);
- 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 < dirs.length; ++i) {
- if (!dirs[i])
- continue;
- d += "/" + dirs[i];
- try {
- FS.mkdir(d, mode)
- } catch (e) {
- if (e.errno != 20)
- throw e
- }
- }
- },
- mkdev(path, mode, dev) {
- 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.getStreamChecked(fd);
- 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.getStreamChecked(fd);
- 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.getStreamChecked(fd);
- 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) {
- assert(offset >= 0);
- 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) {
- assert(offset >= 0);
- 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) {
- assert(offset >= 0);
- 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 randomBuffer = new Uint8Array(1024)
- , randomLeft = 0;
- var randomByte = () => {
- if (randomLeft === 0) {
- randomLeft = randomFill(randomBuffer).byteLength
- }
- return randomBuffer[--randomLeft]
- }
- ;
- FS.createDevice("/dev", "random", randomByte);
- FS.createDevice("/dev", "urandom", randomByte);
- 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.getStreamChecked(fd);
- 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);
- assert(stdin.fd === 0, `invalid handle for stdin (${stdin.fd})`);
- assert(stdout.fd === 1, `invalid handle for stdout (${stdout.fd})`);
- assert(stderr.fd === 2, `invalid handle for stderr (${stderr.fd})`)
- },
- ensureErrnoError() {
- if (FS.ErrnoError)
- return;
- FS.ErrnoError = function ErrnoError(errno, node) {
- this.name = "ErrnoError";
- this.node = node;
- this.setErrno = function(errno) {
- this.errno = errno;
- for (var key in ERRNO_CODES) {
- if (ERRNO_CODES[key] === errno) {
- this.code = key;
- break
- }
- }
- }
- ;
- this.setErrno(errno);
- this.message = ERRNO_MESSAGES[errno];
- if (this.stack) {
- Object.defineProperty(this, "stack", {
- value: (new Error).stack,
- writable: true
- });
- this.stack = demangleAll(this.stack)
- }
- }
- ;
- 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 = "<generic error, no 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) {
- assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");
- 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;
- _fflush(0);
- for (var i = 0; i < FS.streams.length; i++) {
- var stream = FS.streams[i];
- if (!stream) {
- continue
- }
- FS.close(stream)
- }
- },
- 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 < len; ++i)
- arr[i] = data.charCodeAt(i);
- data = arr
- }
- FS.chmod(node, mode | 146);
- var stream = FS.open(node, 577);
- FS.write(stream, data, 0, data.length, 0, canOwn);
- FS.close(stream);
- FS.chmod(node, mode)
- }
- },
- createDevice(parent, name, input, output) {
- 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?.buffer?.length) {
- output(10)
- }
- },
- read(stream, buffer, offset, length, pos) {
- var bytesRead = 0;
- for (var i = 0; i < length; i++) {
- var result;
- try {
- result = input()
- } catch (e) {
- throw new FS.ErrnoError(29)
- }
- if (result === undefined && bytesRead === 0) {
- throw new FS.ErrnoError(6)
- }
- if (result === null || result === undefined)
- break;
- bytesRead++;
- buffer[offset + i] = result
- }
- if (bytesRead) {
- stream.node.timestamp = Date.now()
- }
- return bytesRead
- },
- write(stream, buffer, offset, length, pos) {
- for (var i = 0; i < length; i++) {
- try {
- output(buffer[offset + i])
- } catch (e) {
- throw new FS.ErrnoError(29)
- }
- }
- if (length) {
- stream.node.timestamp = Date.now()
- }
- return i
- }
- });
- return FS.mkdev(path, mode, dev)
- },
- forceLoadFile(obj) {
- 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);
- assert(size >= 0);
- if (contents.slice) {
- for (var i = 0; i < size; i++) {
- buffer[offset + i] = contents[position + i]
- }
- } else {
- for (var i = 0; i < size; i++) {
- buffer[offset + i] = contents.get(position + i)
- }
- }
- return size
- }
- stream_ops.read = (stream, buffer, offset, length, position) => {
- 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
- },
- absolutePath() {
- abort("FS.absolutePath has been removed; use PATH_FS.resolve instead")
- },
- createFolder() {
- abort("FS.createFolder has been removed; use FS.mkdir instead")
- },
- createLink() {
- abort("FS.createLink has been removed; use FS.symlink instead")
- },
- joinPath() {
- abort("FS.joinPath has been removed; use PATH.join instead")
- },
- mmapAlloc() {
- abort("FS.mmapAlloc has been replaced by the top level function mmapAlloc")
- },
- standardizePath() {
- abort("FS.standardizePath has been removed; use PATH.normalize instead")
- }
- };
- var UTF8ToString = (ptr, maxBytesToRead) => {
- assert(typeof ptr == "number", `UTF8ToString expects a number (got ${typeof ptr})`);
- return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""
- }
- ;
- var SYSCALLS = {
- DEFAULT_POLLMASK: 5,
- calculateAt(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(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] = stat.mode;
- HEAPU32[buf + 8 >> 2] = stat.nlink;
- HEAP32[buf + 12 >> 2] = stat.uid;
- HEAP32[buf + 16 >> 2] = stat.gid;
- HEAP32[buf + 20 >> 2] = stat.rdev;
- tempI64 = [stat.size >>> 0, (tempDouble = stat.size,
- +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)],
- HEAP32[buf + 24 >> 2] = tempI64[0],
- HEAP32[buf + 28 >> 2] = tempI64[1];
- HEAP32[buf + 32 >> 2] = 4096;
- HEAP32[buf + 36 >> 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.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)],
- HEAP32[buf + 40 >> 2] = tempI64[0],
- HEAP32[buf + 44 >> 2] = tempI64[1];
- HEAPU32[buf + 48 >> 2] = atime % 1e3 * 1e3;
- tempI64 = [Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3),
- +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 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] = mtime % 1e3 * 1e3;
- tempI64 = [Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3),
- +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 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] = ctime % 1e3 * 1e3;
- tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino,
- +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)],
- HEAP32[buf + 88 >> 2] = tempI64[0],
- HEAP32[buf + 92 >> 2] = tempI64[1];
- return 0
- },
- doMsync(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() {
- assert(SYSCALLS.varargs != undefined);
- var ret = HEAP32[+SYSCALLS.varargs >> 2];
- SYSCALLS.varargs += 4;
- return ret
- },
- getp() {
- return SYSCALLS.get()
- },
- getStr(ptr) {
- var ret = UTF8ToString(ptr);
- return ret
- },
- getStreamFromFD(fd) {
- var stream = FS.getStreamChecked(fd);
- return stream
- }
- };
- function ___syscall_fcntl64(fd, cmd, varargs) {
- SYSCALLS.varargs = varargs;
- try {
- var stream = SYSCALLS.getStreamFromFD(fd);
- switch (cmd) {
- case 0:
- {
- var arg = SYSCALLS.get();
- if (arg < 0) {
- return -28
- }
- while (FS.streams[arg]) {
- arg++
- }
- var newStream;
- newStream = FS.createStream(stream, arg);
- return newStream.fd
- }
- case 1:
- case 2:
- return 0;
- case 3:
- return stream.flags;
- case 4:
- {
- var arg = SYSCALLS.get();
- stream.flags |= arg;
- return 0
- }
- case 5:
- {
- var arg = SYSCALLS.getp();
- var offset = 0;
- HEAP16[arg + offset >> 1] = 2;
- return 0
- }
- case 6:
- case 7:
- return 0;
- case 16:
- case 8:
- return -28;
- case 9:
- setErrNo(28);
- return -1;
- default:
- {
- return -28
- }
- }
- } catch (e) {
- if (typeof FS == "undefined" || !(e.name === "ErrnoError"))
- throw e;
- return -e.errno
- }
- }
- function ___syscall_ioctl(fd, op, varargs) {
- SYSCALLS.varargs = varargs;
- try {
- var stream = SYSCALLS.getStreamFromFD(fd);
- switch (op) {
- case 21509:
- {
- if (!stream.tty)
- return -59;
- return 0
- }
- case 21505:
- {
- if (!stream.tty)
- return -59;
- if (stream.tty.ops.ioctl_tcgets) {
- var termios = stream.tty.ops.ioctl_tcgets(stream);
- var argp = SYSCALLS.getp();
- HEAP32[argp >> 2] = termios.c_iflag || 0;
- HEAP32[argp + 4 >> 2] = termios.c_oflag || 0;
- HEAP32[argp + 8 >> 2] = termios.c_cflag || 0;
- HEAP32[argp + 12 >> 2] = termios.c_lflag || 0;
- for (var i = 0; i < 32; i++) {
- HEAP8[argp + i + 17 >> 0] = termios.c_cc[i] || 0
- }
- return 0
- }
- return 0
- }
- case 21510:
- case 21511:
- case 21512:
- {
- if (!stream.tty)
- return -59;
- return 0
- }
- case 21506:
- case 21507:
- case 21508:
- {
- if (!stream.tty)
- return -59;
- if (stream.tty.ops.ioctl_tcsets) {
- var argp = SYSCALLS.getp();
- var c_iflag = HEAP32[argp >> 2];
- var c_oflag = HEAP32[argp + 4 >> 2];
- var c_cflag = HEAP32[argp + 8 >> 2];
- var c_lflag = HEAP32[argp + 12 >> 2];
- var c_cc = [];
- for (var i = 0; i < 32; i++) {
- c_cc.push(HEAP8[argp + i + 17 >> 0])
- }
- return stream.tty.ops.ioctl_tcsets(stream.tty, op, {
- c_iflag: c_iflag,
- c_oflag: c_oflag,
- c_cflag: c_cflag,
- c_lflag: c_lflag,
- c_cc: c_cc
- })
- }
- return 0
- }
- case 21519:
- {
- if (!stream.tty)
- return -59;
- var argp = SYSCALLS.getp();
- HEAP32[argp >> 2] = 0;
- return 0
- }
- case 21520:
- {
- if (!stream.tty)
- return -59;
- return -28
- }
- case 21531:
- {
- var argp = SYSCALLS.getp();
- return FS.ioctl(stream, op, argp)
- }
- case 21523:
- {
- if (!stream.tty)
- return -59;
- if (stream.tty.ops.ioctl_tiocgwinsz) {
- var winsize = stream.tty.ops.ioctl_tiocgwinsz(stream.tty);
- var argp = SYSCALLS.getp();
- HEAP16[argp >> 1] = winsize[0];
- HEAP16[argp + 2 >> 1] = winsize[1]
- }
- return 0
- }
- case 21524:
- {
- if (!stream.tty)
- return -59;
- return 0
- }
- case 21515:
- {
- if (!stream.tty)
- return -59;
- return 0
- }
- default:
- return -28
- }
- } catch (e) {
- if (typeof FS == "undefined" || !(e.name === "ErrnoError"))
- throw e;
- return -e.errno
- }
- }
- function ___syscall_openat(dirfd, path, flags, varargs) {
- SYSCALLS.varargs = varargs;
- try {
- path = SYSCALLS.getStr(path);
- path = SYSCALLS.calculateAt(dirfd, path);
- var mode = varargs ? SYSCALLS.get() : 0;
- return FS.open(path, flags, mode).fd
- } catch (e) {
- if (typeof FS == "undefined" || !(e.name === "ErrnoError"))
- throw e;
- return -e.errno
- }
- }
- var __embind_register_bigint = (primitiveType, name, size, minRange, maxRange) => {}
- ;
- var embind_init_charCodes = () => {
- var codes = new Array(256);
- for (var i = 0; i < 256; ++i) {
- codes[i] = String.fromCharCode(i)
- }
- embind_charCodes = codes
- }
- ;
- var embind_charCodes;
- var readLatin1String = ptr => {
- var ret = "";
- var c = ptr;
- while (HEAPU8[c]) {
- ret += embind_charCodes[HEAPU8[c++]]
- }
- return ret
- }
- ;
- var awaitingDependencies = {};
- var registeredTypes = {};
- var typeDependencies = {};
- var BindingError;
- var throwBindingError = message => {
- throw new BindingError(message)
- }
- ;
- var InternalError;
- var throwInternalError = message => {
- throw new InternalError(message)
- }
- ;
- var whenDependentTypesAreResolved = (myTypes, dependentTypes, getTypeConverters) => {
- myTypes.forEach(function(type) {
- typeDependencies[type] = dependentTypes
- });
- function onComplete(typeConverters) {
- var myTypeConverters = getTypeConverters(typeConverters);
- if (myTypeConverters.length !== myTypes.length) {
- throwInternalError("Mismatched type converter count")
- }
- for (var i = 0; i < myTypes.length; ++i) {
- registerType(myTypes[i], myTypeConverters[i])
- }
- }
- var typeConverters = new Array(dependentTypes.length);
- var unregisteredTypes = [];
- var registered = 0;
- dependentTypes.forEach( (dt, i) => {
- if (registeredTypes.hasOwnProperty(dt)) {
- typeConverters[i] = registeredTypes[dt]
- } else {
- unregisteredTypes.push(dt);
- if (!awaitingDependencies.hasOwnProperty(dt)) {
- awaitingDependencies[dt] = []
- }
- awaitingDependencies[dt].push( () => {
- typeConverters[i] = registeredTypes[dt];
- ++registered;
- if (registered === unregisteredTypes.length) {
- onComplete(typeConverters)
- }
- }
- )
- }
- }
- );
- if (0 === unregisteredTypes.length) {
- onComplete(typeConverters)
- }
- }
- ;
- function sharedRegisterType(rawType, registeredInstance, options={}) {
- var name = registeredInstance.name;
- if (!rawType) {
- throwBindingError(`type "${name}" must have a positive integer typeid pointer`)
- }
- if (registeredTypes.hasOwnProperty(rawType)) {
- if (options.ignoreDuplicateRegistrations) {
- return
- } else {
- throwBindingError(`Cannot register type '${name}' twice`)
- }
- }
- registeredTypes[rawType] = registeredInstance;
- delete typeDependencies[rawType];
- if (awaitingDependencies.hasOwnProperty(rawType)) {
- var callbacks = awaitingDependencies[rawType];
- delete awaitingDependencies[rawType];
- callbacks.forEach(cb => cb())
- }
- }
- function registerType(rawType, registeredInstance, options={}) {
- if (!("argPackAdvance"in registeredInstance)) {
- throw new TypeError("registerType registeredInstance requires argPackAdvance")
- }
- return sharedRegisterType(rawType, registeredInstance, options)
- }
- var GenericWireTypeSize = 8;
- var __embind_register_bool = (rawType, name, trueValue, falseValue) => {
- name = readLatin1String(name);
- registerType(rawType, {
- name: name,
- "fromWireType": function(wt) {
- return !!wt
- },
- "toWireType": function(destructors, o) {
- return o ? trueValue : falseValue
- },
- "argPackAdvance": GenericWireTypeSize,
- "readValueFromPointer": function(pointer) {
- return this["fromWireType"](HEAPU8[pointer])
- },
- destructorFunction: null
- })
- }
- ;
- var shallowCopyInternalPointer = o => ({
- count: o.count,
- deleteScheduled: o.deleteScheduled,
- preservePointerOnDelete: o.preservePointerOnDelete,
- ptr: o.ptr,
- ptrType: o.ptrType,
- smartPtr: o.smartPtr,
- smartPtrType: o.smartPtrType
- });
- var throwInstanceAlreadyDeleted = obj => {
- function getInstanceTypeName(handle) {
- return handle.$$.ptrType.registeredClass.name
- }
- throwBindingError(getInstanceTypeName(obj) + " instance already deleted")
- }
- ;
- var finalizationRegistry = false;
- var detachFinalizer = handle => {}
- ;
- var runDestructor = $$ => {
- if ($$.smartPtr) {
- $$.smartPtrType.rawDestructor($$.smartPtr)
- } else {
- $$.ptrType.registeredClass.rawDestructor($$.ptr)
- }
- }
- ;
- var releaseClassHandle = $$ => {
- $$.count.value -= 1;
- var toDelete = 0 === $$.count.value;
- if (toDelete) {
- runDestructor($$)
- }
- }
- ;
- var downcastPointer = (ptr, ptrClass, desiredClass) => {
- if (ptrClass === desiredClass) {
- return ptr
- }
- if (undefined === desiredClass.baseClass) {
- return null
- }
- var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass);
- if (rv === null) {
- return null
- }
- return desiredClass.downcast(rv)
- }
- ;
- var registeredPointers = {};
- var getInheritedInstanceCount = () => Object.keys(registeredInstances).length;
- var getLiveInheritedInstances = () => {
- var rv = [];
- for (var k in registeredInstances) {
- if (registeredInstances.hasOwnProperty(k)) {
- rv.push(registeredInstances[k])
- }
- }
- return rv
- }
- ;
- var deletionQueue = [];
- var flushPendingDeletes = () => {
- while (deletionQueue.length) {
- var obj = deletionQueue.pop();
- obj.$$.deleteScheduled = false;
- obj["delete"]()
- }
- }
- ;
- var delayFunction;
- var setDelayFunction = fn => {
- delayFunction = fn;
- if (deletionQueue.length && delayFunction) {
- delayFunction(flushPendingDeletes)
- }
- }
- ;
- var init_embind = () => {
- Module["getInheritedInstanceCount"] = getInheritedInstanceCount;
- Module["getLiveInheritedInstances"] = getLiveInheritedInstances;
- Module["flushPendingDeletes"] = flushPendingDeletes;
- Module["setDelayFunction"] = setDelayFunction
- }
- ;
- var registeredInstances = {};
- var getBasestPointer = (class_, ptr) => {
- if (ptr === undefined) {
- throwBindingError("ptr should not be undefined")
- }
- while (class_.baseClass) {
- ptr = class_.upcast(ptr);
- class_ = class_.baseClass
- }
- return ptr
- }
- ;
- var getInheritedInstance = (class_, ptr) => {
- ptr = getBasestPointer(class_, ptr);
- return registeredInstances[ptr]
- }
- ;
- var makeClassHandle = (prototype, record) => {
- if (!record.ptrType || !record.ptr) {
- throwInternalError("makeClassHandle requires ptr and ptrType")
- }
- var hasSmartPtrType = !!record.smartPtrType;
- var hasSmartPtr = !!record.smartPtr;
- if (hasSmartPtrType !== hasSmartPtr) {
- throwInternalError("Both smartPtrType and smartPtr must be specified")
- }
- record.count = {
- value: 1
- };
- return attachFinalizer(Object.create(prototype, {
- $$: {
- value: record,
- writable: true
- }
- }))
- }
- ;
- function RegisteredPointer_fromWireType(ptr) {
- var rawPointer = this.getPointee(ptr);
- if (!rawPointer) {
- this.destructor(ptr);
- return null
- }
- var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer);
- if (undefined !== registeredInstance) {
- if (0 === registeredInstance.$$.count.value) {
- registeredInstance.$$.ptr = rawPointer;
- registeredInstance.$$.smartPtr = ptr;
- return registeredInstance["clone"]()
- } else {
- var rv = registeredInstance["clone"]();
- this.destructor(ptr);
- return rv
- }
- }
- function makeDefaultHandle() {
- if (this.isSmartPointer) {
- return makeClassHandle(this.registeredClass.instancePrototype, {
- ptrType: this.pointeeType,
- ptr: rawPointer,
- smartPtrType: this,
- smartPtr: ptr
- })
- } else {
- return makeClassHandle(this.registeredClass.instancePrototype, {
- ptrType: this,
- ptr: ptr
- })
- }
- }
- var actualType = this.registeredClass.getActualType(rawPointer);
- var registeredPointerRecord = registeredPointers[actualType];
- if (!registeredPointerRecord) {
- return makeDefaultHandle.call(this)
- }
- var toType;
- if (this.isConst) {
- toType = registeredPointerRecord.constPointerType
- } else {
- toType = registeredPointerRecord.pointerType
- }
- var dp = downcastPointer(rawPointer, this.registeredClass, toType.registeredClass);
- if (dp === null) {
- return makeDefaultHandle.call(this)
- }
- if (this.isSmartPointer) {
- return makeClassHandle(toType.registeredClass.instancePrototype, {
- ptrType: toType,
- ptr: dp,
- smartPtrType: this,
- smartPtr: ptr
- })
- } else {
- return makeClassHandle(toType.registeredClass.instancePrototype, {
- ptrType: toType,
- ptr: dp
- })
- }
- }
- var attachFinalizer = handle => {
- if ("undefined" === typeof FinalizationRegistry) {
- attachFinalizer = handle => handle;
- return handle
- }
- finalizationRegistry = new FinalizationRegistry(info => {
- console.warn(info.leakWarning.stack.replace(/^Error: /, ""));
- releaseClassHandle(info.$$)
- }
- );
- attachFinalizer = handle => {
- var $$ = handle.$$;
- var hasSmartPtr = !!$$.smartPtr;
- if (hasSmartPtr) {
- var info = {
- $$: $$
- };
- var cls = $$.ptrType.registeredClass;
- info.leakWarning = new Error(`Embind found a leaked C++ instance ${cls.name} <${ptrToString($$.ptr)}>.\n` + "We'll free it automatically in this case, but this functionality is not reliable across various environments.\n" + "Make sure to invoke .delete() manually once you're done with the instance instead.\n" + "Originally allocated");
- if ("captureStackTrace"in Error) {
- Error.captureStackTrace(info.leakWarning, RegisteredPointer_fromWireType)
- }
- finalizationRegistry.register(handle, info, handle)
- }
- return handle
- }
- ;
- detachFinalizer = handle => finalizationRegistry.unregister(handle);
- return attachFinalizer(handle)
- }
- ;
- var init_ClassHandle = () => {
- Object.assign(ClassHandle.prototype, {
- "isAliasOf"(other) {
- if (!(this instanceof ClassHandle)) {
- return false
- }
- if (!(other instanceof ClassHandle)) {
- return false
- }
- var leftClass = this.$$.ptrType.registeredClass;
- var left = this.$$.ptr;
- other.$$ = other.$$;
- var rightClass = other.$$.ptrType.registeredClass;
- var right = other.$$.ptr;
- while (leftClass.baseClass) {
- left = leftClass.upcast(left);
- leftClass = leftClass.baseClass
- }
- while (rightClass.baseClass) {
- right = rightClass.upcast(right);
- rightClass = rightClass.baseClass
- }
- return leftClass === rightClass && left === right
- },
- "clone"() {
- if (!this.$$.ptr) {
- throwInstanceAlreadyDeleted(this)
- }
- if (this.$$.preservePointerOnDelete) {
- this.$$.count.value += 1;
- return this
- } else {
- var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), {
- $$: {
- value: shallowCopyInternalPointer(this.$$)
- }
- }));
- clone.$$.count.value += 1;
- clone.$$.deleteScheduled = false;
- return clone
- }
- },
- "delete"() {
- if (!this.$$.ptr) {
- throwInstanceAlreadyDeleted(this)
- }
- if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {
- throwBindingError("Object already scheduled for deletion")
- }
- detachFinalizer(this);
- releaseClassHandle(this.$$);
- if (!this.$$.preservePointerOnDelete) {
- this.$$.smartPtr = undefined;
- this.$$.ptr = undefined
- }
- },
- "isDeleted"() {
- return !this.$$.ptr
- },
- "deleteLater"() {
- if (!this.$$.ptr) {
- throwInstanceAlreadyDeleted(this)
- }
- if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {
- throwBindingError("Object already scheduled for deletion")
- }
- deletionQueue.push(this);
- if (deletionQueue.length === 1 && delayFunction) {
- delayFunction(flushPendingDeletes)
- }
- this.$$.deleteScheduled = true;
- return this
- }
- })
- }
- ;
- function ClassHandle() {}
- var createNamedFunction = (name, body) => Object.defineProperty(body, "name", {
- value: name
- });
- var ensureOverloadTable = (proto, methodName, humanName) => {
- if (undefined === proto[methodName].overloadTable) {
- var prevFunc = proto[methodName];
- proto[methodName] = function() {
- if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) {
- throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`)
- }
- return proto[methodName].overloadTable[arguments.length].apply(this, arguments)
- }
- ;
- proto[methodName].overloadTable = [];
- proto[methodName].overloadTable[prevFunc.argCount] = prevFunc
- }
- }
- ;
- var exposePublicSymbol = (name, value, numArguments) => {
- if (Module.hasOwnProperty(name)) {
- if (undefined === numArguments || undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments]) {
- throwBindingError(`Cannot register public name '${name}' twice`)
- }
- ensureOverloadTable(Module, name, name);
- if (Module.hasOwnProperty(numArguments)) {
- throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)
- }
- Module[name].overloadTable[numArguments] = value
- } else {
- Module[name] = value;
- if (undefined !== numArguments) {
- Module[name].numArguments = numArguments
- }
- }
- }
- ;
- var char_0 = 48;
- var char_9 = 57;
- var makeLegalFunctionName = name => {
- if (undefined === name) {
- return "_unknown"
- }
- name = name.replace(/[^a-zA-Z0-9_]/g, "$");
- var f = name.charCodeAt(0);
- if (f >= char_0 && f <= char_9) {
- return `_${name}`
- }
- return name
- }
- ;
- function RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast) {
- this.name = name;
- this.constructor = constructor;
- this.instancePrototype = instancePrototype;
- this.rawDestructor = rawDestructor;
- this.baseClass = baseClass;
- this.getActualType = getActualType;
- this.upcast = upcast;
- this.downcast = downcast;
- this.pureVirtualFunctions = []
- }
- var upcastPointer = (ptr, ptrClass, desiredClass) => {
- while (ptrClass !== desiredClass) {
- if (!ptrClass.upcast) {
- throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)
- }
- ptr = ptrClass.upcast(ptr);
- ptrClass = ptrClass.baseClass
- }
- return ptr
- }
- ;
- function constNoSmartPtrRawPointerToWireType(destructors, handle) {
- if (handle === null) {
- if (this.isReference) {
- throwBindingError(`null is not a valid ${this.name}`)
- }
- return 0
- }
- if (!handle.$$) {
- throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)
- }
- if (!handle.$$.ptr) {
- throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)
- }
- var handleClass = handle.$$.ptrType.registeredClass;
- var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);
- return ptr
- }
- function genericPointerToWireType(destructors, handle) {
- var ptr;
- if (handle === null) {
- if (this.isReference) {
- throwBindingError(`null is not a valid ${this.name}`)
- }
- if (this.isSmartPointer) {
- ptr = this.rawConstructor();
- if (destructors !== null) {
- destructors.push(this.rawDestructor, ptr)
- }
- return ptr
- } else {
- return 0
- }
- }
- if (!handle || !handle.$$) {
- throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)
- }
- if (!handle.$$.ptr) {
- throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)
- }
- if (!this.isConst && handle.$$.ptrType.isConst) {
- throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name} to parameter type ${this.name}`)
- }
- var handleClass = handle.$$.ptrType.registeredClass;
- ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);
- if (this.isSmartPointer) {
- if (undefined === handle.$$.smartPtr) {
- throwBindingError("Passing raw pointer to smart pointer is illegal")
- }
- switch (this.sharingPolicy) {
- case 0:
- if (handle.$$.smartPtrType === this) {
- ptr = handle.$$.smartPtr
- } else {
- throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name} to parameter type ${this.name}`)
- }
- break;
- case 1:
- ptr = handle.$$.smartPtr;
- break;
- case 2:
- if (handle.$$.smartPtrType === this) {
- ptr = handle.$$.smartPtr
- } else {
- var clonedHandle = handle["clone"]();
- ptr = this.rawShare(ptr, Emval.toHandle( () => clonedHandle["delete"]()));
- if (destructors !== null) {
- destructors.push(this.rawDestructor, ptr)
- }
- }
- break;
- default:
- throwBindingError("Unsupporting sharing policy")
- }
- }
- return ptr
- }
- function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) {
- if (handle === null) {
- if (this.isReference) {
- throwBindingError(`null is not a valid ${this.name}`)
- }
- return 0
- }
- if (!handle.$$) {
- throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)
- }
- if (!handle.$$.ptr) {
- throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)
- }
- if (handle.$$.ptrType.isConst) {
- throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)
- }
- var handleClass = handle.$$.ptrType.registeredClass;
- var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);
- return ptr
- }
- function readPointer(pointer) {
- return this["fromWireType"](HEAPU32[pointer >> 2])
- }
- var init_RegisteredPointer = () => {
- Object.assign(RegisteredPointer.prototype, {
- getPointee(ptr) {
- if (this.rawGetPointee) {
- ptr = this.rawGetPointee(ptr)
- }
- return ptr
- },
- destructor(ptr) {
- this.rawDestructor?.(ptr)
- },
- "argPackAdvance": GenericWireTypeSize,
- "readValueFromPointer": readPointer,
- "deleteObject"(handle) {
- if (handle !== null) {
- handle["delete"]()
- }
- },
- "fromWireType": RegisteredPointer_fromWireType
- })
- }
- ;
- function RegisteredPointer(name, registeredClass, isReference, isConst, isSmartPointer, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor) {
- this.name = name;
- this.registeredClass = registeredClass;
- this.isReference = isReference;
- this.isConst = isConst;
- this.isSmartPointer = isSmartPointer;
- this.pointeeType = pointeeType;
- this.sharingPolicy = sharingPolicy;
- this.rawGetPointee = rawGetPointee;
- this.rawConstructor = rawConstructor;
- this.rawShare = rawShare;
- this.rawDestructor = rawDestructor;
- if (!isSmartPointer && registeredClass.baseClass === undefined) {
- if (isConst) {
- this["toWireType"] = constNoSmartPtrRawPointerToWireType;
- this.destructorFunction = null
- } else {
- this["toWireType"] = nonConstNoSmartPtrRawPointerToWireType;
- this.destructorFunction = null
- }
- } else {
- this["toWireType"] = genericPointerToWireType
- }
- }
- var replacePublicSymbol = (name, value, numArguments) => {
- if (!Module.hasOwnProperty(name)) {
- throwInternalError("Replacing nonexistant public symbol")
- }
- if (undefined !== Module[name].overloadTable && undefined !== numArguments) {
- Module[name].overloadTable[numArguments] = value
- } else {
- Module[name] = value;
- Module[name].argCount = numArguments
- }
- }
- ;
- var dynCallLegacy = (sig, ptr, args) => {
- assert("dynCall_" + sig in Module, `bad function pointer type - dynCall function not found for sig '${sig}'`);
- if (args?.length) {
- assert(args.length === sig.substring(1).replace(/j/g, "--").length)
- } else {
- assert(sig.length == 1)
- }
- var f = Module["dynCall_" + sig];
- return args && args.length ? f.apply(null, [ptr].concat(args)) : f.call(null, ptr)
- }
- ;
- var wasmTable;
- var getWasmTableEntry = funcPtr => wasmTable.get(funcPtr);
- var dynCall = (sig, ptr, args) => {
- if (sig.includes("j")) {
- return dynCallLegacy(sig, ptr, args)
- }
- assert(getWasmTableEntry(ptr), `missing table entry in dynCall: ${ptr}`);
- var rtn = getWasmTableEntry(ptr).apply(null, args);
- return rtn
- }
- ;
- var getDynCaller = (sig, ptr) => {
- assert(sig.includes("j") || sig.includes("p"), "getDynCaller should only be called with i64 sigs");
- var argCache = [];
- return function() {
- argCache.length = 0;
- Object.assign(argCache, arguments);
- return dynCall(sig, ptr, argCache)
- }
- }
- ;
- var embind__requireFunction = (signature, rawFunction) => {
- signature = readLatin1String(signature);
- function makeDynCaller() {
- if (signature.includes("j")) {
- return getDynCaller(signature, rawFunction)
- }
- return getWasmTableEntry(rawFunction)
- }
- var fp = makeDynCaller();
- if (typeof fp != "function") {
- throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)
- }
- return fp
- }
- ;
- var extendError = (baseErrorType, errorName) => {
- var errorClass = createNamedFunction(errorName, function(message) {
- this.name = errorName;
- this.message = message;
- var stack = new Error(message).stack;
- if (stack !== undefined) {
- this.stack = this.toString() + "\n" + stack.replace(/^Error(:[^\n]*)?\n/, "")
- }
- });
- errorClass.prototype = Object.create(baseErrorType.prototype);
- errorClass.prototype.constructor = errorClass;
- errorClass.prototype.toString = function() {
- if (this.message === undefined) {
- return this.name
- } else {
- return `${this.name}: ${this.message}`
- }
- }
- ;
- return errorClass
- }
- ;
- var UnboundTypeError;
- var getTypeName = type => {
- var ptr = ___getTypeName(type);
- var rv = readLatin1String(ptr);
- _free(ptr);
- return rv
- }
- ;
- var throwUnboundTypeError = (message, types) => {
- var unboundTypes = [];
- var seen = {};
- function visit(type) {
- if (seen[type]) {
- return
- }
- if (registeredTypes[type]) {
- return
- }
- if (typeDependencies[type]) {
- typeDependencies[type].forEach(visit);
- return
- }
- unboundTypes.push(type);
- seen[type] = true
- }
- types.forEach(visit);
- throw new UnboundTypeError(`${message}: ` + unboundTypes.map(getTypeName).join([", "]))
- }
- ;
- var __embind_register_class = (rawType, rawPointerType, rawConstPointerType, baseClassRawType, getActualTypeSignature, getActualType, upcastSignature, upcast, downcastSignature, downcast, name, destructorSignature, rawDestructor) => {
- name = readLatin1String(name);
- getActualType = embind__requireFunction(getActualTypeSignature, getActualType);
- upcast &&= embind__requireFunction(upcastSignature, upcast);
- downcast &&= embind__requireFunction(downcastSignature, downcast);
- rawDestructor = embind__requireFunction(destructorSignature, rawDestructor);
- var legalFunctionName = makeLegalFunctionName(name);
- exposePublicSymbol(legalFunctionName, function() {
- throwUnboundTypeError(`Cannot construct ${name} due to unbound types`, [baseClassRawType])
- });
- whenDependentTypesAreResolved([rawType, rawPointerType, rawConstPointerType], baseClassRawType ? [baseClassRawType] : [], function(base) {
- base = base[0];
- var baseClass;
- var basePrototype;
- if (baseClassRawType) {
- baseClass = base.registeredClass;
- basePrototype = baseClass.instancePrototype
- } else {
- basePrototype = ClassHandle.prototype
- }
- var constructor = createNamedFunction(name, function() {
- if (Object.getPrototypeOf(this) !== instancePrototype) {
- throw new BindingError("Use 'new' to construct " + name)
- }
- if (undefined === registeredClass.constructor_body) {
- throw new BindingError(name + " has no accessible constructor")
- }
- var body = registeredClass.constructor_body[arguments.length];
- if (undefined === body) {
- throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)
- }
- return body.apply(this, arguments)
- });
- var instancePrototype = Object.create(basePrototype, {
- constructor: {
- value: constructor
- }
- });
- constructor.prototype = instancePrototype;
- var registeredClass = new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);
- if (registeredClass.baseClass) {
- registeredClass.baseClass.__derivedClasses ??= [];
- registeredClass.baseClass.__derivedClasses.push(registeredClass)
- }
- var referenceConverter = new RegisteredPointer(name,registeredClass,true,false,false);
- var pointerConverter = new RegisteredPointer(name + "*",registeredClass,false,false,false);
- var constPointerConverter = new RegisteredPointer(name + " const*",registeredClass,false,true,false);
- registeredPointers[rawType] = {
- pointerType: pointerConverter,
- constPointerType: constPointerConverter
- };
- replacePublicSymbol(legalFunctionName, constructor);
- return [referenceConverter, pointerConverter, constPointerConverter]
- })
- }
- ;
- var heap32VectorToArray = (count, firstElement) => {
- var array = [];
- for (var i = 0; i < count; i++) {
- array.push(HEAPU32[firstElement + i * 4 >> 2])
- }
- return array
- }
- ;
- var runDestructors = destructors => {
- while (destructors.length) {
- var ptr = destructors.pop();
- var del = destructors.pop();
- del(ptr)
- }
- }
- ;
- function usesDestructorStack(argTypes) {
- for (var i = 1; i < argTypes.length; ++i) {
- if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) {
- return true
- }
- }
- return false
- }
- function newFunc(constructor, argumentList) {
- if (!(constructor instanceof Function)) {
- throw new TypeError(`new_ called with constructor type ${typeof constructor} which is not a function`)
- }
- var dummy = createNamedFunction(constructor.name || "unknownFunctionName", function() {});
- dummy.prototype = constructor.prototype;
- var obj = new dummy;
- var r = constructor.apply(obj, argumentList);
- return r instanceof Object ? r : obj
- }
- function createJsInvoker(humanName, argTypes, isClassMethodFunc, returns, isAsync) {
- var needsDestructorStack = usesDestructorStack(argTypes);
- var argCount = argTypes.length;
- var argsList = "";
- var argsListWired = "";
- for (var i = 0; i < argCount - 2; ++i) {
- argsList += (i !== 0 ? ", " : "") + "arg" + i;
- argsListWired += (i !== 0 ? ", " : "") + "arg" + i + "Wired"
- }
- var invokerFnBody = `\n return function (${argsList}) {\n if (arguments.length !== ${argCount - 2}) {\n throwBindingError('function ${humanName} called with ' + arguments.length + ' arguments, expected ${argCount - 2}');\n }`;
- if (needsDestructorStack) {
- invokerFnBody += "var destructors = [];\n"
- }
- var dtorStack = needsDestructorStack ? "destructors" : "null";
- var args1 = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"];
- if (isClassMethodFunc) {
- invokerFnBody += "var thisWired = classParam['toWireType'](" + dtorStack + ", this);\n"
- }
- for (var i = 0; i < argCount - 2; ++i) {
- invokerFnBody += "var arg" + i + "Wired = argType" + i + "['toWireType'](" + dtorStack + ", arg" + i + "); // " + argTypes[i + 2].name + "\n";
- args1.push("argType" + i)
- }
- if (isClassMethodFunc) {
- argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired
- }
- invokerFnBody += (returns || isAsync ? "var rv = " : "") + "invoker(fn" + (argsListWired.length > 0 ? ", " : "") + argsListWired + ");\n";
- if (needsDestructorStack) {
- invokerFnBody += "runDestructors(destructors);\n"
- } else {
- for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i) {
- var paramName = i === 1 ? "thisWired" : "arg" + (i - 2) + "Wired";
- if (argTypes[i].destructorFunction !== null) {
- invokerFnBody += paramName + "_dtor(" + paramName + "); // " + argTypes[i].name + "\n";
- args1.push(paramName + "_dtor")
- }
- }
- }
- if (returns) {
- invokerFnBody += "var ret = retType['fromWireType'](rv);\n" + "return ret;\n"
- } else {}
- invokerFnBody += "}\n";
- invokerFnBody = `if (arguments.length !== ${args1.length}){ throw new Error("${humanName} Expected ${args1.length} closure arguments " + arguments.length + " given."); }\n${invokerFnBody}`;
- return [args1, invokerFnBody]
- }
- function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc, isAsync) {
- var argCount = argTypes.length;
- if (argCount < 2) {
- throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")
- }
- assert(!isAsync, "Async bindings are only supported with JSPI.");
- var isClassMethodFunc = argTypes[1] !== null && classType !== null;
- var needsDestructorStack = usesDestructorStack(argTypes);
- var returns = argTypes[0].name !== "void";
- var closureArgs = [throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]];
- for (var i = 0; i < argCount - 2; ++i) {
- closureArgs.push(argTypes[i + 2])
- }
- if (!needsDestructorStack) {
- for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i) {
- if (argTypes[i].destructorFunction !== null) {
- closureArgs.push(argTypes[i].destructorFunction)
- }
- }
- }
- let[args,invokerFnBody] = createJsInvoker(humanName, argTypes, isClassMethodFunc, returns, isAsync);
- args.push(invokerFnBody);
- var invokerFn = newFunc(Function, args).apply(null, closureArgs);
- return createNamedFunction(humanName, invokerFn)
- }
- var __embind_register_class_constructor = (rawClassType, argCount, rawArgTypesAddr, invokerSignature, invoker, rawConstructor) => {
- assert(argCount > 0);
- var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
- invoker = embind__requireFunction(invokerSignature, invoker);
- whenDependentTypesAreResolved([], [rawClassType], function(classType) {
- classType = classType[0];
- var humanName = `constructor ${classType.name}`;
- if (undefined === classType.registeredClass.constructor_body) {
- classType.registeredClass.constructor_body = []
- }
- if (undefined !== classType.registeredClass.constructor_body[argCount - 1]) {
- throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount - 1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)
- }
- classType.registeredClass.constructor_body[argCount - 1] = () => {
- throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`, rawArgTypes)
- }
- ;
- whenDependentTypesAreResolved([], rawArgTypes, argTypes => {
- argTypes.splice(1, 0, null);
- classType.registeredClass.constructor_body[argCount - 1] = craftInvokerFunction(humanName, argTypes, null, invoker, rawConstructor);
- return []
- }
- );
- return []
- })
- }
- ;
- var getFunctionName = signature => {
- signature = signature.trim();
- const argsIndex = signature.indexOf("(");
- if (argsIndex !== -1) {
- assert(signature[signature.length - 1] == ")", "Parentheses for argument names should match.");
- return signature.substr(0, argsIndex)
- } else {
- return signature
- }
- }
- ;
- var __embind_register_class_function = (rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, context, isPureVirtual, isAsync) => {
- var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
- methodName = readLatin1String(methodName);
- methodName = getFunctionName(methodName);
- rawInvoker = embind__requireFunction(invokerSignature, rawInvoker);
- whenDependentTypesAreResolved([], [rawClassType], function(classType) {
- classType = classType[0];
- var humanName = `${classType.name}.${methodName}`;
- if (methodName.startsWith("@@")) {
- methodName = Symbol[methodName.substring(2)]
- }
- if (isPureVirtual) {
- classType.registeredClass.pureVirtualFunctions.push(methodName)
- }
- function unboundTypesHandler() {
- throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`, rawArgTypes)
- }
- var proto = classType.registeredClass.instancePrototype;
- var method = proto[methodName];
- if (undefined === method || undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2) {
- unboundTypesHandler.argCount = argCount - 2;
- unboundTypesHandler.className = classType.name;
- proto[methodName] = unboundTypesHandler
- } else {
- ensureOverloadTable(proto, methodName, humanName);
- proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler
- }
- whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) {
- var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context, isAsync);
- if (undefined === proto[methodName].overloadTable) {
- memberFunction.argCount = argCount - 2;
- proto[methodName] = memberFunction
- } else {
- proto[methodName].overloadTable[argCount - 2] = memberFunction
- }
- return []
- });
- return []
- })
- }
- ;
- function handleAllocatorInit() {
- Object.assign(HandleAllocator.prototype, {
- get(id) {
- assert(this.allocated[id] !== undefined, `invalid handle: ${id}`);
- return this.allocated[id]
- },
- has(id) {
- return this.allocated[id] !== undefined
- },
- allocate(handle) {
- var id = this.freelist.pop() || this.allocated.length;
- this.allocated[id] = handle;
- return id
- },
- free(id) {
- assert(this.allocated[id] !== undefined);
- this.allocated[id] = undefined;
- this.freelist.push(id)
- }
- })
- }
- function HandleAllocator() {
- this.allocated = [undefined];
- this.freelist = []
- }
- var emval_handles = new HandleAllocator;
- var __emval_decref = handle => {
- if (handle >= emval_handles.reserved && 0 === --emval_handles.get(handle).refcount) {
- emval_handles.free(handle)
- }
- }
- ;
- var count_emval_handles = () => {
- var count = 0;
- for (var i = emval_handles.reserved; i < emval_handles.allocated.length; ++i) {
- if (emval_handles.allocated[i] !== undefined) {
- ++count
- }
- }
- return count
- }
- ;
- var init_emval = () => {
- emval_handles.allocated.push({
- value: undefined
- }, {
- value: null
- }, {
- value: true
- }, {
- value: false
- });
- emval_handles.reserved = emval_handles.allocated.length;
- Module["count_emval_handles"] = count_emval_handles
- }
- ;
- var Emval = {
- toValue: handle => {
- if (!handle) {
- throwBindingError("Cannot use deleted val. handle = " + handle)
- }
- return emval_handles.get(handle).value
- }
- ,
- toHandle: value => {
- switch (value) {
- case undefined:
- return 1;
- case null:
- return 2;
- case true:
- return 3;
- case false:
- return 4;
- default:
- {
- return emval_handles.allocate({
- refcount: 1,
- value: value
- })
- }
- }
- }
- };
- function simpleReadValueFromPointer(pointer) {
- return this["fromWireType"](HEAP32[pointer >> 2])
- }
- var __embind_register_emval = (rawType, name) => {
- name = readLatin1String(name);
- registerType(rawType, {
- name: name,
- "fromWireType": handle => {
- var rv = Emval.toValue(handle);
- __emval_decref(handle);
- return rv
- }
- ,
- "toWireType": (destructors, value) => Emval.toHandle(value),
- "argPackAdvance": GenericWireTypeSize,
- "readValueFromPointer": simpleReadValueFromPointer,
- destructorFunction: null
- })
- }
- ;
- var embindRepr = v => {
- if (v === null) {
- return "null"
- }
- var t = typeof v;
- if (t === "object" || t === "array" || t === "function") {
- return v.toString()
- } else {
- return "" + v
- }
- }
- ;
- var floatReadValueFromPointer = (name, width) => {
- switch (width) {
- case 4:
- return function(pointer) {
- return this["fromWireType"](HEAPF32[pointer >> 2])
- }
- ;
- case 8:
- return function(pointer) {
- return this["fromWireType"](HEAPF64[pointer >> 3])
- }
- ;
- default:
- throw new TypeError(`invalid float width (${width}): ${name}`)
- }
- }
- ;
- var __embind_register_float = (rawType, name, size) => {
- name = readLatin1String(name);
- registerType(rawType, {
- name: name,
- "fromWireType": value => value,
- "toWireType": (destructors, value) => {
- if (typeof value != "number" && typeof value != "boolean") {
- throw new TypeError(`Cannot convert ${embindRepr(value)} to ${this.name}`)
- }
- return value
- }
- ,
- "argPackAdvance": GenericWireTypeSize,
- "readValueFromPointer": floatReadValueFromPointer(name, size),
- destructorFunction: null
- })
- }
- ;
- var integerReadValueFromPointer = (name, width, signed) => {
- switch (width) {
- case 1:
- return signed ? pointer => HEAP8[pointer >> 0] : pointer => HEAPU8[pointer >> 0];
- case 2:
- return signed ? pointer => HEAP16[pointer >> 1] : pointer => HEAPU16[pointer >> 1];
- case 4:
- return signed ? pointer => HEAP32[pointer >> 2] : pointer => HEAPU32[pointer >> 2];
- default:
- throw new TypeError(`invalid integer width (${width}): ${name}`)
- }
- }
- ;
- var __embind_register_integer = (primitiveType, name, size, minRange, maxRange) => {
- name = readLatin1String(name);
- if (maxRange === -1) {
- maxRange = 4294967295
- }
- var fromWireType = value => value;
- if (minRange === 0) {
- var bitshift = 32 - 8 * size;
- fromWireType = value => value << bitshift >>> bitshift
- }
- var isUnsignedType = name.includes("unsigned");
- var checkAssertions = (value, toTypeName) => {
- if (typeof value != "number" && typeof value != "boolean") {
- throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${toTypeName}`)
- }
- if (value < minRange || value > maxRange) {
- throw new TypeError(`Passing a number "${embindRepr(value)}" from JS side to C/C++ side to an argument of type "${name}", which is outside the valid range [${minRange}, ${maxRange}]!`)
- }
- }
- ;
- var toWireType;
- if (isUnsignedType) {
- toWireType = function(destructors, value) {
- checkAssertions(value, this.name);
- return value >>> 0
- }
- } else {
- toWireType = function(destructors, value) {
- checkAssertions(value, this.name);
- return value
- }
- }
- registerType(primitiveType, {
- name: name,
- "fromWireType": fromWireType,
- "toWireType": toWireType,
- "argPackAdvance": GenericWireTypeSize,
- "readValueFromPointer": integerReadValueFromPointer(name, size, minRange !== 0),
- destructorFunction: null
- })
- }
- ;
- var __embind_register_memory_view = (rawType, dataTypeIndex, name) => {
- var typeMapping = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array];
- var TA = typeMapping[dataTypeIndex];
- function decodeMemoryView(handle) {
- var size = HEAPU32[handle >> 2];
- var data = HEAPU32[handle + 4 >> 2];
- return new TA(HEAP8.buffer,data,size)
- }
- name = readLatin1String(name);
- registerType(rawType, {
- name: name,
- "fromWireType": decodeMemoryView,
- "argPackAdvance": GenericWireTypeSize,
- "readValueFromPointer": decodeMemoryView
- }, {
- ignoreDuplicateRegistrations: true
- })
- }
- ;
- var stringToUTF8 = (str, outPtr, maxBytesToWrite) => {
- assert(typeof maxBytesToWrite == "number", "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");
- return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite)
- }
- ;
- var __embind_register_std_string = (rawType, name) => {
- name = readLatin1String(name);
- var stdStringIsUTF8 = name === "std::string";
- registerType(rawType, {
- name: name,
- "fromWireType"(value) {
- var length = HEAPU32[value >> 2];
- var payload = value + 4;
- var str;
- if (stdStringIsUTF8) {
- var decodeStartPtr = payload;
- for (var i = 0; i <= length; ++i) {
- var currentBytePtr = payload + i;
- if (i == length || HEAPU8[currentBytePtr] == 0) {
- var maxRead = currentBytePtr - decodeStartPtr;
- var stringSegment = UTF8ToString(decodeStartPtr, maxRead);
- if (str === undefined) {
- str = stringSegment
- } else {
- str += String.fromCharCode(0);
- str += stringSegment
- }
- decodeStartPtr = currentBytePtr + 1
- }
- }
- } else {
- var a = new Array(length);
- for (var i = 0; i < length; ++i) {
- a[i] = String.fromCharCode(HEAPU8[payload + i])
- }
- str = a.join("")
- }
- _free(value);
- return str
- },
- "toWireType"(destructors, value) {
- if (value instanceof ArrayBuffer) {
- value = new Uint8Array(value)
- }
- var length;
- var valueIsOfTypeString = typeof value == "string";
- if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) {
- throwBindingError("Cannot pass non-string to std::string")
- }
- if (stdStringIsUTF8 && valueIsOfTypeString) {
- length = lengthBytesUTF8(value)
- } else {
- length = value.length
- }
- var base = _malloc(4 + length + 1);
- var ptr = base + 4;
- HEAPU32[base >> 2] = length;
- if (stdStringIsUTF8 && valueIsOfTypeString) {
- stringToUTF8(value, ptr, length + 1)
- } else {
- if (valueIsOfTypeString) {
- for (var i = 0; i < length; ++i) {
- var charCode = value.charCodeAt(i);
- if (charCode > 255) {
- _free(ptr);
- throwBindingError("String has UTF-16 code units that do not fit in 8 bits")
- }
- HEAPU8[ptr + i] = charCode
- }
- } else {
- for (var i = 0; i < length; ++i) {
- HEAPU8[ptr + i] = value[i]
- }
- }
- }
- if (destructors !== null) {
- destructors.push(_free, base)
- }
- return base
- },
- "argPackAdvance": GenericWireTypeSize,
- "readValueFromPointer": readPointer,
- destructorFunction(ptr) {
- _free(ptr)
- }
- })
- }
- ;
- var UTF16Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf-16le") : undefined;
- var UTF16ToString = (ptr, maxBytesToRead) => {
- assert(ptr % 2 == 0, "Pointer passed to UTF16ToString must be aligned to two bytes!");
- var endPtr = ptr;
- var idx = endPtr >> 1;
- var maxIdx = idx + maxBytesToRead / 2;
- while (!(idx >= maxIdx) && HEAPU16[idx])
- ++idx;
- endPtr = idx << 1;
- if (endPtr - ptr > 32 && UTF16Decoder)
- return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr));
- var str = "";
- for (var i = 0; !(i >= maxBytesToRead / 2); ++i) {
- var codeUnit = HEAP16[ptr + i * 2 >> 1];
- if (codeUnit == 0)
- break;
- str += String.fromCharCode(codeUnit)
- }
- return str
- }
- ;
- var stringToUTF16 = (str, outPtr, maxBytesToWrite) => {
- assert(outPtr % 2 == 0, "Pointer passed to stringToUTF16 must be aligned to two bytes!");
- assert(typeof maxBytesToWrite == "number", "stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");
- maxBytesToWrite ??= 2147483647;
- if (maxBytesToWrite < 2)
- return 0;
- maxBytesToWrite -= 2;
- var startPtr = outPtr;
- var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;
- for (var i = 0; i < numCharsToWrite; ++i) {
- var codeUnit = str.charCodeAt(i);
- HEAP16[outPtr >> 1] = codeUnit;
- outPtr += 2
- }
- HEAP16[outPtr >> 1] = 0;
- return outPtr - startPtr
- }
- ;
- var lengthBytesUTF16 = str => str.length * 2;
- var UTF32ToString = (ptr, maxBytesToRead) => {
- assert(ptr % 4 == 0, "Pointer passed to UTF32ToString must be aligned to four bytes!");
- var i = 0;
- var str = "";
- while (!(i >= maxBytesToRead / 4)) {
- var utf32 = HEAP32[ptr + i * 4 >> 2];
- if (utf32 == 0)
- break;
- ++i;
- if (utf32 >= 65536) {
- var ch = utf32 - 65536;
- str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)
- } else {
- str += String.fromCharCode(utf32)
- }
- }
- return str
- }
- ;
- var stringToUTF32 = (str, outPtr, maxBytesToWrite) => {
- assert(outPtr % 4 == 0, "Pointer passed to stringToUTF32 must be aligned to four bytes!");
- assert(typeof maxBytesToWrite == "number", "stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");
- maxBytesToWrite ??= 2147483647;
- if (maxBytesToWrite < 4)
- return 0;
- var startPtr = outPtr;
- var endPtr = startPtr + maxBytesToWrite - 4;
- for (var i = 0; i < str.length; ++i) {
- var codeUnit = str.charCodeAt(i);
- if (codeUnit >= 55296 && codeUnit <= 57343) {
- var trailSurrogate = str.charCodeAt(++i);
- codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023
- }
- HEAP32[outPtr >> 2] = codeUnit;
- outPtr += 4;
- if (outPtr + 4 > endPtr)
- break
- }
- HEAP32[outPtr >> 2] = 0;
- return outPtr - startPtr
- }
- ;
- var lengthBytesUTF32 = str => {
- var len = 0;
- for (var i = 0; i < str.length; ++i) {
- var codeUnit = str.charCodeAt(i);
- if (codeUnit >= 55296 && codeUnit <= 57343)
- ++i;
- len += 4
- }
- return len
- }
- ;
- var __embind_register_std_wstring = (rawType, charSize, name) => {
- name = readLatin1String(name);
- var decodeString, encodeString, getHeap, lengthBytesUTF, shift;
- if (charSize === 2) {
- decodeString = UTF16ToString;
- encodeString = stringToUTF16;
- lengthBytesUTF = lengthBytesUTF16;
- getHeap = () => HEAPU16;
- shift = 1
- } else if (charSize === 4) {
- decodeString = UTF32ToString;
- encodeString = stringToUTF32;
- lengthBytesUTF = lengthBytesUTF32;
- getHeap = () => HEAPU32;
- shift = 2
- }
- registerType(rawType, {
- name: name,
- "fromWireType": value => {
- var length = HEAPU32[value >> 2];
- var HEAP = getHeap();
- var str;
- var decodeStartPtr = value + 4;
- for (var i = 0; i <= length; ++i) {
- var currentBytePtr = value + 4 + i * charSize;
- if (i == length || HEAP[currentBytePtr >> shift] == 0) {
- var maxReadBytes = currentBytePtr - decodeStartPtr;
- var stringSegment = decodeString(decodeStartPtr, maxReadBytes);
- if (str === undefined) {
- str = stringSegment
- } else {
- str += String.fromCharCode(0);
- str += stringSegment
- }
- decodeStartPtr = currentBytePtr + charSize
- }
- }
- _free(value);
- return str
- }
- ,
- "toWireType": (destructors, value) => {
- if (!(typeof value == "string")) {
- throwBindingError(`Cannot pass non-string to C++ string type ${name}`)
- }
- var length = lengthBytesUTF(value);
- var ptr = _malloc(4 + length + charSize);
- HEAPU32[ptr >> 2] = length >> shift;
- encodeString(value, ptr + 4, length + charSize);
- if (destructors !== null) {
- destructors.push(_free, ptr)
- }
- return ptr
- }
- ,
- "argPackAdvance": GenericWireTypeSize,
- "readValueFromPointer": simpleReadValueFromPointer,
- destructorFunction(ptr) {
- _free(ptr)
- }
- })
- }
- ;
- var __embind_register_void = (rawType, name) => {
- name = readLatin1String(name);
- registerType(rawType, {
- isVoid: true,
- name: name,
- "argPackAdvance": 0,
- "fromWireType": () => undefined,
- "toWireType": (destructors, o) => undefined
- })
- }
- ;
- var __emval_incref = handle => {
- if (handle > 4) {
- emval_handles.get(handle).refcount += 1
- }
- }
- ;
- var emval_symbols = {};
- var getStringOrSymbol = address => {
- var symbol = emval_symbols[address];
- if (symbol === undefined) {
- return readLatin1String(address)
- }
- return symbol
- }
- ;
- var __emval_new_cstring = v => Emval.toHandle(getStringOrSymbol(v));
- var __emval_new_object = () => Emval.toHandle({});
- var __emval_set_property = (handle, key, value) => {
- handle = Emval.toValue(handle);
- key = Emval.toValue(key);
- value = Emval.toValue(value);
- handle[key] = value
- }
- ;
- var requireRegisteredType = (rawType, humanName) => {
- var impl = registeredTypes[rawType];
- if (undefined === impl) {
- throwBindingError(humanName + " has unknown type " + getTypeName(rawType))
- }
- return impl
- }
- ;
- var __emval_take_value = (type, arg) => {
- type = requireRegisteredType(type, "_emval_take_value");
- var v = type["readValueFromPointer"](arg);
- return Emval.toHandle(v)
- }
- ;
- var _abort = () => {
- abort("native code called abort()")
- }
- ;
- var getHeapMax = () => 2147483648;
- var _emscripten_get_heap_max = () => getHeapMax();
- var _emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num);
- var growMemory = size => {
- var b = wasmMemory.buffer;
- var pages = (size - b.byteLength + 65535) / 65536;
- try {
- wasmMemory.grow(pages);
- updateMemoryViews();
- return 1
- } catch (e) {
- err(`growMemory: Attempted to grow heap from ${b.byteLength} bytes to ${size} bytes, but got error: ${e}`)
- }
- }
- ;
- var _emscripten_resize_heap = requestedSize => {
- var oldSize = HEAPU8.length;
- requestedSize >>>= 0;
- assert(requestedSize > oldSize);
- var maxHeapSize = getHeapMax();
- if (requestedSize > maxHeapSize) {
- err(`Cannot enlarge memory, requested ${requestedSize} bytes, but the limit is ${maxHeapSize} bytes!`);
- return false
- }
- var 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 = growMemory(newSize);
- if (replacement) {
- return true
- }
- }
- err(`Failed to grow the heap from ${oldSize} bytes to ${newSize} bytes, not enough memory!`);
- return false
- }
- ;
- var ENV = {};
- var getExecutableName = () => thisProgram || "./this.program";
- var 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 stringToAscii = (str, buffer) => {
- for (var i = 0; i < str.length; ++i) {
- assert(str.charCodeAt(i) === (str.charCodeAt(i) & 255));
- HEAP8[buffer++ >> 0] = str.charCodeAt(i)
- }
- HEAP8[buffer >> 0] = 0
- }
- ;
- var _environ_get = (__environ, environ_buf) => {
- var bufSize = 0;
- getEnvStrings().forEach( (string, i) => {
- var ptr = environ_buf + bufSize;
- HEAPU32[__environ + i * 4 >> 2] = ptr;
- stringToAscii(string, ptr);
- bufSize += string.length + 1
- }
- );
- return 0
- }
- ;
- var _environ_sizes_get = (penviron_count, penviron_buf_size) => {
- var strings = getEnvStrings();
- HEAPU32[penviron_count >> 2] = strings.length;
- var bufSize = 0;
- strings.forEach(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
- }
- }
- var doReadv = (stream, iov, iovcnt, offset) => {
- var ret = 0;
- for (var i = 0; i < iovcnt; i++) {
- var ptr = HEAPU32[iov >> 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 < len)
- break;
- if (typeof offset !== "undefined") {
- offset += curr
- }
- }
- return ret
- }
- ;
- function _fd_read(fd, iov, iovcnt, pnum) {
- try {
- var stream = SYSCALLS.getStreamFromFD(fd);
- var num = doReadv(stream, iov, iovcnt);
- HEAPU32[pnum >> 2] = num;
- return 0
- } catch (e) {
- if (typeof FS == "undefined" || !(e.name === "ErrnoError"))
- throw e;
- return e.errno
- }
- }
- var convertI32PairToI53Checked = (lo, hi) => {
- assert(lo == lo >>> 0 || lo == (lo | 0));
- assert(hi === (hi | 0));
- return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN
- }
- ;
- function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
- var offset = convertI32PairToI53Checked(offset_low, offset_high);
- try {
- 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.floor(tempDouble / 4294967296) >>> 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
- }
- }
- var doWritev = (stream, iov, iovcnt, offset) => {
- var ret = 0;
- for (var i = 0; i < iovcnt; i++) {
- var ptr = HEAPU32[iov >> 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
- }
- }
- var isLeapYear = year => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
- var 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];
- var 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
- }
- ;
- var writeArrayToMemory = (array, buffer) => {
- assert(array.length >= 0, "writeArrayToMemory array must have a length (should be an array or typed array)");
- HEAP8.set(array, buffer)
- }
- ;
- var _strftime = (s, maxsize, format, tm) => {
- var tm_zone = HEAPU32[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.length < digits) {
- str = character[0] + str
- }
- return str
- }
- function leadingNulls(value, digits) {
- return leadingSomething(value, digits, "0")
- }
- function compareByDay(date1, date2) {
- function sgn(value) {
- return value < 0 ? -1 : value > 0 ? 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": date => WEEKDAYS[date.tm_wday].substring(0, 3),
- "%A": date => WEEKDAYS[date.tm_wday],
- "%b": date => MONTHS[date.tm_mon].substring(0, 3),
- "%B": date => MONTHS[date.tm_mon],
- "%C": date => {
- var year = date.tm_year + 1900;
- return leadingNulls(year / 100 | 0, 2)
- }
- ,
- "%d": date => leadingNulls(date.tm_mday, 2),
- "%e": date => leadingSomething(date.tm_mday, 2, " "),
- "%g": date => getWeekBasedYear(date).toString().substring(2),
- "%G": date => getWeekBasedYear(date),
- "%H": date => leadingNulls(date.tm_hour, 2),
- "%I": date => {
- var twelveHour = date.tm_hour;
- if (twelveHour == 0)
- twelveHour = 12;
- else if (twelveHour > 12)
- twelveHour -= 12;
- return leadingNulls(twelveHour, 2)
- }
- ,
- "%j": date => leadingNulls(date.tm_mday + arraySum(isLeapYear(date.tm_year + 1900) ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR, date.tm_mon - 1), 3),
- "%m": date => leadingNulls(date.tm_mon + 1, 2),
- "%M": date => leadingNulls(date.tm_min, 2),
- "%n": () => "\n",
- "%p": date => {
- if (date.tm_hour >= 0 && date.tm_hour < 12) {
- return "AM"
- }
- return "PM"
- }
- ,
- "%S": date => leadingNulls(date.tm_sec, 2),
- "%t": () => "\t",
- "%u": date => date.tm_wday || 7,
- "%U": date => {
- var days = date.tm_yday + 7 - date.tm_wday;
- return leadingNulls(Math.floor(days / 7), 2)
- }
- ,
- "%V": 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": date => date.tm_wday,
- "%W": date => {
- var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;
- return leadingNulls(Math.floor(days / 7), 2)
- }
- ,
- "%y": date => (date.tm_year + 1900).toString().substring(2),
- "%Y": date => date.tm_year + 1900,
- "%z": 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": date => date.tm_zone,
- "%%": () => "%"
- };
- 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
- }
- ;
- var _strftime_l = (s, maxsize, format, tm, loc) => _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.createPreloadedFile = FS_createPreloadedFile;
- FS.staticInit();
- embind_init_charCodes();
- BindingError = Module["BindingError"] = class BindingError extends Error {
- constructor(message) {
- super(message);
- this.name = "BindingError"
- }
- }
- ;
- InternalError = Module["InternalError"] = class InternalError extends Error {
- constructor(message) {
- super(message);
- this.name = "InternalError"
- }
- }
- ;
- init_ClassHandle();
- init_embind();
- init_RegisteredPointer();
- UnboundTypeError = Module["UnboundTypeError"] = extendError(Error, "UnboundTypeError");
- handleAllocatorInit();
- init_emval();
- function checkIncomingModuleAPI() {
- ignoredModuleProp("fetchSettings")
- }
- var wasmImports = {
- __cxa_throw: ___cxa_throw,
- __syscall_fcntl64: ___syscall_fcntl64,
- __syscall_ioctl: ___syscall_ioctl,
- __syscall_openat: ___syscall_openat,
- _embind_register_bigint: __embind_register_bigint,
- _embind_register_bool: __embind_register_bool,
- _embind_register_class: __embind_register_class,
- _embind_register_class_constructor: __embind_register_class_constructor,
- _embind_register_class_function: __embind_register_class_function,
- _embind_register_emval: __embind_register_emval,
- _embind_register_float: __embind_register_float,
- _embind_register_integer: __embind_register_integer,
- _embind_register_memory_view: __embind_register_memory_view,
- _embind_register_std_string: __embind_register_std_string,
- _embind_register_std_wstring: __embind_register_std_wstring,
- _embind_register_void: __embind_register_void,
- _emval_decref: __emval_decref,
- _emval_incref: __emval_incref,
- _emval_new_cstring: __emval_new_cstring,
- _emval_new_object: __emval_new_object,
- _emval_set_property: __emval_set_property,
- _emval_take_value: __emval_take_value,
- abort: _abort,
- emscripten_get_heap_max: _emscripten_get_heap_max,
- emscripten_memcpy_js: _emscripten_memcpy_js,
- emscripten_resize_heap: _emscripten_resize_heap,
- environ_get: _environ_get,
- environ_sizes_get: _environ_sizes_get,
- fd_close: _fd_close,
- fd_read: _fd_read,
- fd_seek: _fd_seek,
- fd_write: _fd_write,
- strftime_l: _strftime_l
- };
- var wasmExports = createWasm();
- var ___wasm_call_ctors = createExportWrapper("__wasm_call_ctors");
- var _malloc = createExportWrapper("malloc");
- var _free = createExportWrapper("free");
- var _fflush = Module["_fflush"] = createExportWrapper("fflush");
- var ___getTypeName = createExportWrapper("__getTypeName");
- var ___errno_location = createExportWrapper("__errno_location");
- var _emscripten_builtin_memalign = createExportWrapper("emscripten_builtin_memalign");
- var setTempRet0 = createExportWrapper("setTempRet0");
- var _emscripten_stack_init = () => (_emscripten_stack_init = wasmExports["emscripten_stack_init"])();
- var _emscripten_stack_get_free = () => (_emscripten_stack_get_free = wasmExports["emscripten_stack_get_free"])();
- var _emscripten_stack_get_base = () => (_emscripten_stack_get_base = wasmExports["emscripten_stack_get_base"])();
- var _emscripten_stack_get_end = () => (_emscripten_stack_get_end = wasmExports["emscripten_stack_get_end"])();
- var stackSave = createExportWrapper("stackSave");
- var stackRestore = createExportWrapper("stackRestore");
- var stackAlloc = createExportWrapper("stackAlloc");
- var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["emscripten_stack_get_current"])();
- var ___cxa_is_pointer_type = createExportWrapper("__cxa_is_pointer_type");
- var dynCall_iijiiii = Module["dynCall_iijiiii"] = createExportWrapper("dynCall_iijiiii");
- var dynCall_jii = Module["dynCall_jii"] = createExportWrapper("dynCall_jii");
- var dynCall_jiji = Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji");
- var dynCall_viijii = Module["dynCall_viijii"] = createExportWrapper("dynCall_viijii");
- var dynCall_iiiiij = Module["dynCall_iiiiij"] = createExportWrapper("dynCall_iiiiij");
- var dynCall_iiiiijj = Module["dynCall_iiiiijj"] = createExportWrapper("dynCall_iiiiijj");
- var dynCall_iiiiiijj = Module["dynCall_iiiiiijj"] = createExportWrapper("dynCall_iiiiiijj");
- var missingLibrarySymbols = ["writeI53ToI64", "writeI53ToI64Clamped", "writeI53ToI64Signaling", "writeI53ToU64Clamped", "writeI53ToU64Signaling", "readI53FromI64", "readI53FromU64", "convertI32PairToI53", "convertU32PairToI53", "exitJS", "ydayFromDate", "inetPton4", "inetNtop4", "inetPton6", "inetNtop6", "readSockaddr", "writeSockaddr", "getHostByName", "getCallstack", "emscriptenLog", "convertPCtoSourceLocation", "readEmAsmArgs", "jstoi_q", "jstoi_s", "listenOnce", "autoResumeAudioContext", "setWasmTableEntry", "handleException", "keepRuntimeAlive", "runtimeKeepalivePush", "runtimeKeepalivePop", "callUserCallback", "maybeExit", "asmjsMangle", "getNativeTypeSize", "STACK_SIZE", "STACK_ALIGN", "POINTER_SIZE", "ASSERTIONS", "getCFunc", "ccall", "cwrap", "uleb128Encode", "sigToWasmTypes", "generateFuncType", "convertJsFunctionToWasm", "getEmptyTableSlot", "updateTableMap", "getFunctionAddress", "addFunction", "removeFunction", "reallyNegative", "unSign", "strLen", "reSign", "formatString", "intArrayToString", "AsciiToString", "stringToNewUTF8", "stringToUTF8OnStack", "registerKeyEventCallback", "maybeCStringToJsString", "findEventTarget", "findCanvasEventTarget", "getBoundingClientRect", "fillMouseEventData", "registerMouseEventCallback", "registerWheelEventCallback", "registerUiEventCallback", "registerFocusEventCallback", "fillDeviceOrientationEventData", "registerDeviceOrientationEventCallback", "fillDeviceMotionEventData", "registerDeviceMotionEventCallback", "screenOrientation", "fillOrientationChangeEventData", "registerOrientationChangeEventCallback", "fillFullscreenChangeEventData", "registerFullscreenChangeEventCallback", "JSEvents_requestFullscreen", "JSEvents_resizeCanvasForFullscreen", "registerRestoreOldStyle", "hideEverythingExceptGivenElement", "restoreHiddenElements", "setLetterbox", "softFullscreenResizeWebGLRenderTarget", "doRequestFullscreen", "fillPointerlockChangeEventData", "registerPointerlockChangeEventCallback", "registerPointerlockErrorEventCallback", "requestPointerLock", "fillVisibilityChangeEventData", "registerVisibilityChangeEventCallback", "registerTouchEventCallback", "fillGamepadEventData", "registerGamepadEventCallback", "disableGamepadApiIfItThrows", "registerBeforeUnloadEventCallback", "fillBatteryEventData", "battery", "registerBatteryEventCallback", "setCanvasElementSize", "getCanvasElementSize", "jsStackTrace", "stackTrace", "checkWasiClock", "wasiRightsToMuslOFlags", "wasiOFlagsToMuslOFlags", "createDyncallWrapper", "safeSetTimeout", "setImmediateWrapped", "clearImmediateWrapped", "polyfillSetImmediate", "getPromise", "makePromise", "idsToPromises", "makePromiseCallback", "findMatchingCatch", "Browser_asyncPrepareDataCounter", "setMainLoop", "getSocketFromFD", "getSocketAddress", "FS_unlink", "FS_mkdirTree", "_setNetworkCallback", "heapObjectForWebGLType", "heapAccessShiftForWebGLHeap", "webgl_enable_ANGLE_instanced_arrays", "webgl_enable_OES_vertex_array_object", "webgl_enable_WEBGL_draw_buffers", "webgl_enable_WEBGL_multi_draw", "emscriptenWebGLGet", "computeUnpackAlignedImageSize", "colorChannelsInGlTextureFormat", "emscriptenWebGLGetTexPixelData", "__glGenObject", "emscriptenWebGLGetUniform", "webglGetUniformLocation", "webglPrepareUniformLocationsBeforeFirstUse", "webglGetLeftBracePos", "emscriptenWebGLGetVertexAttrib", "__glGetActiveAttribOrUniform", "writeGLArray", "registerWebGlEventCallback", "runAndAbortIfError", "SDL_unicode", "SDL_ttfContext", "SDL_audio", "ALLOC_NORMAL", "ALLOC_STACK", "allocate", "writeStringToMemory", "writeAsciiToMemory", "getFunctionArgsName", "registerInheritedInstance", "unregisterInheritedInstance", "enumReadValueFromPointer", "validateThis", "emval_get_global", "emval_returnValue", "emval_lookupTypes", "emval_addMethodCaller"];
- missingLibrarySymbols.forEach(missingLibrarySymbol);
- var unexportedSymbols = ["run", "addOnPreRun", "addOnInit", "addOnPreMain", "addOnExit", "addOnPostRun", "addRunDependency", "removeRunDependency", "FS_createFolder", "FS_createPath", "FS_createLazyFile", "FS_createLink", "FS_createDevice", "FS_readFile", "out", "err", "callMain", "abort", "wasmMemory", "wasmExports", "stackAlloc", "stackSave", "stackRestore", "getTempRet0", "setTempRet0", "writeStackCookie", "checkStackCookie", "convertI32PairToI53Checked", "ptrToString", "zeroMemory", "getHeapMax", "growMemory", "ENV", "MONTH_DAYS_REGULAR", "MONTH_DAYS_LEAP", "MONTH_DAYS_REGULAR_CUMULATIVE", "MONTH_DAYS_LEAP_CUMULATIVE", "isLeapYear", "arraySum", "addDays", "ERRNO_CODES", "ERRNO_MESSAGES", "setErrNo", "DNS", "Protocols", "Sockets", "initRandomFill", "randomFill", "timers", "warnOnce", "UNWIND_CACHE", "readEmAsmArgsArray", "getExecutableName", "dynCallLegacy", "getDynCaller", "dynCall", "getWasmTableEntry", "asyncLoad", "alignMemory", "mmapAlloc", "handleAllocatorInit", "HandleAllocator", "wasmTable", "noExitRuntime", "freeTableIndexes", "functionsInTableMap", "setValue", "getValue", "PATH", "PATH_FS", "UTF8Decoder", "UTF8ArrayToString", "UTF8ToString", "stringToUTF8Array", "stringToUTF8", "lengthBytesUTF8", "intArrayFromString", "stringToAscii", "UTF16Decoder", "UTF16ToString", "stringToUTF16", "lengthBytesUTF16", "UTF32ToString", "stringToUTF32", "lengthBytesUTF32", "writeArrayToMemory", "JSEvents", "specialHTMLTargets", "currentFullscreenStrategy", "restoreOldWindowedStyle", "demangle", "demangleAll", "ExitStatus", "getEnvStrings", "doReadv", "doWritev", "promiseMap", "uncaughtExceptionCount", "exceptionLast", "exceptionCaught", "ExceptionInfo", "Browser", "wget", "SYSCALLS", "preloadPlugins", "FS_createPreloadedFile", "FS_modeStringToFlags", "FS_getMode", "FS_stdin_getChar_buffer", "FS_stdin_getChar", "FS", "FS_createDataFile", "MEMFS", "TTY", "PIPEFS", "SOCKFS", "tempFixedLengthArray", "miniTempWebGLFloatBuffers", "miniTempWebGLIntBuffers", "GL", "emscripten_webgl_power_preferences", "AL", "GLUT", "EGL", "GLEW", "IDBStore", "SDL", "SDL_gfx", "allocateUTF8", "allocateUTF8OnStack", "InternalError", "BindingError", "throwInternalError", "throwBindingError", "registeredTypes", "awaitingDependencies", "typeDependencies", "tupleRegistrations", "structRegistrations", "sharedRegisterType", "whenDependentTypesAreResolved", "embind_charCodes", "embind_init_charCodes", "readLatin1String", "getTypeName", "getFunctionName", "heap32VectorToArray", "requireRegisteredType", "usesDestructorStack", "createJsInvoker", "UnboundTypeError", "PureVirtualError", "GenericWireTypeSize", "init_embind", "throwUnboundTypeError", "ensureOverloadTable", "exposePublicSymbol", "replacePublicSymbol", "extendError", "createNamedFunction", "embindRepr", "registeredInstances", "getBasestPointer", "getInheritedInstance", "getInheritedInstanceCount", "getLiveInheritedInstances", "registeredPointers", "registerType", "integerReadValueFromPointer", "floatReadValueFromPointer", "simpleReadValueFromPointer", "readPointer", "runDestructors", "newFunc", "craftInvokerFunction", "embind__requireFunction", "genericPointerToWireType", "constNoSmartPtrRawPointerToWireType", "nonConstNoSmartPtrRawPointerToWireType", "init_RegisteredPointer", "RegisteredPointer", "RegisteredPointer_fromWireType", "runDestructor", "releaseClassHandle", "finalizationRegistry", "detachFinalizer_deps", "detachFinalizer", "attachFinalizer", "makeClassHandle", "init_ClassHandle", "ClassHandle", "throwInstanceAlreadyDeleted", "deletionQueue", "flushPendingDeletes", "delayFunction", "setDelayFunction", "RegisteredClass", "shallowCopyInternalPointer", "downcastPointer", "upcastPointer", "char_0", "char_9", "makeLegalFunctionName", "emval_handles", "emval_symbols", "init_emval", "count_emval_handles", "getStringOrSymbol", "Emval", "emval_methodCallers", "reflectConstruct"];
- unexportedSymbols.forEach(unexportedRuntimeSymbol);
- var calledRun;
- dependenciesFulfilled = function runCaller() {
- if (!calledRun)
- run();
- if (!calledRun)
- dependenciesFulfilled = runCaller
- }
- ;
- function stackCheckInit() {
- _emscripten_stack_init();
- writeStackCookie()
- }
- function run() {
- if (runDependencies > 0) {
- return
- }
- stackCheckInit();
- preRun();
- if (runDependencies > 0) {
- return
- }
- function doRun() {
- if (calledRun)
- return;
- calledRun = true;
- Module["calledRun"] = true;
- if (ABORT)
- return;
- initRuntime();
- readyPromiseResolve(Module);
- if (Module["onRuntimeInitialized"])
- Module["onRuntimeInitialized"]();
- assert(!Module["_main"], 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]');
- postRun()
- }
- if (Module["setStatus"]) {
- Module["setStatus"]("Running...");
- setTimeout(function() {
- setTimeout(function() {
- Module["setStatus"]("")
- }, 1);
- doRun()
- }, 1)
- } else {
- doRun()
- }
- checkStackCookie()
- }
- if (Module["preInit"]) {
- if (typeof Module["preInit"] == "function")
- Module["preInit"] = [Module["preInit"]];
- while (Module["preInit"].length > 0) {
- Module["preInit"].pop()()
- }
- }
- run();
- return moduleArg.ready
- }
- );
- }
- )();
- ;export default Module;
|